@prisma/studio-core 0.0.0-dev.202505141740 → 0.0.0-dev.202505141747

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import"../chunk-IAKOOX7B.js";import{D as ca}from"../chunk-OGMDOPWW.js";import{B as zt,aa as Vt,c as pe,q as Et,r as Ht,t as Ut}from"../chunk-RFCV76TR.js";import{a as Js,b as Te}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Ci,motion as Vs}from"motion/react";var Q={};Js(Q,{keyMap:()=>Gt,urlKeys:()=>Ys,useQueryState:()=>$,useQueryStates:()=>Ia});Te(Q,Pi);import{useQueryState as $s,useQueryStates as js}from"nuqs";import*as Pi from"nuqs";function Gt(e){return e}function Ys(e){return e}var vi=Symbol("BRAND_SYMBOL");function $(e,a){return $s(e,a)}function Ia(e,a){return js(e,a)}import{clsx as Al}from"clsx";var Kt="-",el=e=>{let a=tl(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{let n=l.split(Kt);return n[0]===""&&n.length!==1&&n.shift(),Fo(n,a)||al(l)},getConflictingClassGroupIds:(l,n)=>{let u=t[l]||[];return n&&o[l]?[...u,...o[l]]:u}}},Fo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Fo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let s=e.join(Kt);return a.validators.find(({validator:l})=>l(s))?.classGroupId},Mo=/^\[(.+)\]$/,al=e=>{if(Mo.test(e)){let a=Mo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},tl=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return rl(Object.entries(e.classGroups),t).forEach(([s,l])=>{_t(l,o,s,a)}),o},_t=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let s=r===""?a:To(a,r);s.classGroupId=t;return}if(typeof r=="function"){if(ol(r)){_t(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([s,l])=>{_t(l,To(a,s),t,o)})})},To=(e,a)=>{let t=e;return a.split(Kt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ol=e=>e.isThemeGetter,rl=(e,a)=>a?e.map(([t,o])=>{let r=o.map(s=>typeof s=="string"?a+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([l,n])=>[a+l,n])):s);return[t,r]}):e,sl=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(s,l)=>{t.set(s,l),a++,a>e&&(a=0,o=t,t=new Map)};return{get(s){let l=t.get(s);if(l!==void 0)return l;if((l=o.get(s))!==void 0)return r(s,l),l},set(s,l){t.has(s)?t.set(s,l):r(s,l)}}},Bo="!",ll=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],s=a.length,l=n=>{let u=[],d=0,i=0,p;for(let I=0;I<n.length;I++){let L=n[I];if(d===0){if(L===r&&(o||n.slice(I,I+s)===a)){u.push(n.slice(i,I)),i=I+s;continue}if(L==="/"){p=I;continue}}L==="["?d++:L==="]"&&d--}let h=u.length===0?n:n.substring(i),x=h.startsWith(Bo),g=x?h.substring(1):h,m=p&&p>i?p-i:void 0;return{modifiers:u,hasImportantModifier:x,baseClassName:g,maybePostfixModifierPosition:m}};return t?n=>t({className:n,parseClassName:l}):l},nl=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},ul=e=>({cache:sl(e.cacheSize),parseClassName:ll(e),...el(e)}),dl=/\s+/,il=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,s=[],l=e.trim().split(dl),n="";for(let u=l.length-1;u>=0;u-=1){let d=l[u],{modifiers:i,hasImportantModifier:p,baseClassName:h,maybePostfixModifierPosition:x}=t(d),g=!!x,m=o(g?h.substring(0,x):h);if(!m){if(!g){n=d+(n.length>0?" "+n:n);continue}if(m=o(h),!m){n=d+(n.length>0?" "+n:n);continue}g=!1}let I=nl(i).join(":"),L=p?I+Bo:I,w=L+m;if(s.includes(w))continue;s.push(w);let A=r(m,g);for(let v=0;v<A.length;++v){let E=A[v];s.push(L+E)}n=d+(n.length>0?" "+n:n)}return n};function fl(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=No(a))&&(o&&(o+=" "),o+=t);return o}var No=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=No(e[o]))&&(t&&(t+=" "),t+=a);return t};function Do(e,...a){let t,o,r,s=l;function l(u){let d=a.reduce((i,p)=>p(i),e());return t=ul(d),o=t.cache.get,r=t.cache.set,s=n,n(u)}function n(u){let d=o(u);if(d)return d;let i=il(u,t);return r(u,i),i}return function(){return s(fl.apply(null,arguments))}}var z=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Oo=/^\[(?:([a-z-]+):)?(.+)\]$/i,cl=/^\d+\/\d+$/,pl=new Set(["px","full","screen"]),ml=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,gl=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,xl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,hl=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ll=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,De=e=>pa(e)||pl.has(e)||cl.test(e),_e=e=>ma(e,"length",Pl),pa=e=>!!e&&!Number.isNaN(Number(e)),Wt=e=>ma(e,"number",pa),Sa=e=>!!e&&Number.isInteger(Number(e)),Cl=e=>e.endsWith("%")&&pa(e.slice(0,-1)),k=e=>Oo.test(e),Ke=e=>ml.test(e),Il=new Set(["length","size","percentage"]),Sl=e=>ma(e,Il,qo),bl=e=>ma(e,"position",qo),yl=new Set(["image","url"]),vl=e=>ma(e,yl,Rl),wl=e=>ma(e,"",kl),ba=()=>!0,ma=(e,a,t)=>{let o=Oo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Pl=e=>gl.test(e)&&!xl.test(e),qo=()=>!1,kl=e=>hl.test(e),Rl=e=>Ll.test(e);var Ao=()=>{let e=z("colors"),a=z("spacing"),t=z("blur"),o=z("brightness"),r=z("borderColor"),s=z("borderRadius"),l=z("borderSpacing"),n=z("borderWidth"),u=z("contrast"),d=z("grayscale"),i=z("hueRotate"),p=z("invert"),h=z("gap"),x=z("gradientColorStops"),g=z("gradientColorStopPositions"),m=z("inset"),I=z("margin"),L=z("opacity"),w=z("padding"),A=z("saturate"),v=z("scale"),E=z("sepia"),R=z("skew"),B=z("space"),X=z("translate"),H=()=>["auto","contain","none"],U=()=>["auto","hidden","clip","visible","scroll"],se=()=>["auto",k,a],F=()=>[k,a],Ve=()=>["",De,_e],Ge=()=>["auto",pa,k],ia=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],We=()=>["solid","dashed","dotted","double","none"],fa=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],N=()=>["start","end","center","between","around","evenly","stretch"],J=()=>["","0",k],le=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ae=()=>[pa,k];return{cacheSize:500,separator:":",theme:{colors:[ba],spacing:[De,_e],blur:["none","",Ke,k],brightness:ae(),borderColor:[e],borderRadius:["none","","full",Ke,k],borderSpacing:F(),borderWidth:Ve(),contrast:ae(),grayscale:J(),hueRotate:ae(),invert:J(),gap:F(),gradientColorStops:[e],gradientColorStopPositions:[Cl,_e],inset:se(),margin:se(),opacity:ae(),padding:F(),saturate:ae(),scale:ae(),sepia:J(),skew:ae(),space:F(),translate:F()},classGroups:{aspect:[{aspect:["auto","square","video",k]}],container:["container"],columns:[{columns:[Ke]}],"break-after":[{"break-after":le()}],"break-before":[{"break-before":le()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ia(),k]}],overflow:[{overflow:U()}],"overflow-x":[{"overflow-x":U()}],"overflow-y":[{"overflow-y":U()}],overscroll:[{overscroll:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Sa,k]}],basis:[{basis:se()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",k]}],grow:[{grow:J()}],shrink:[{shrink:J()}],order:[{order:["first","last","none",Sa,k]}],"grid-cols":[{"grid-cols":[ba]}],"col-start-end":[{col:["auto",{span:["full",Sa,k]},k]}],"col-start":[{"col-start":Ge()}],"col-end":[{"col-end":Ge()}],"grid-rows":[{"grid-rows":[ba]}],"row-start-end":[{row:["auto",{span:[Sa,k]},k]}],"row-start":[{"row-start":Ge()}],"row-end":[{"row-end":Ge()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",k]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",k]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...N()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...N(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...N(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[I]}],mx:[{mx:[I]}],my:[{my:[I]}],ms:[{ms:[I]}],me:[{me:[I]}],mt:[{mt:[I]}],mr:[{mr:[I]}],mb:[{mb:[I]}],ml:[{ml:[I]}],"space-x":[{"space-x":[B]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[B]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",k,a]}],"min-w":[{"min-w":[k,a,"min","max","fit"]}],"max-w":[{"max-w":[k,a,"none","full","min","max","fit","prose",{screen:[Ke]},Ke]}],h:[{h:[k,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[k,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[k,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[k,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ke,_e]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Wt]}],"font-family":[{font:[ba]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",k]}],"line-clamp":[{"line-clamp":["none",pa,Wt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",De,k]}],"list-image":[{"list-image":["none",k]}],"list-style-type":[{list:["none","disc","decimal",k]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[L]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...We(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",De,_e]}],"underline-offset":[{"underline-offset":["auto",De,k]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",k]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",k]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[L]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ia(),bl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Sl]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},vl]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[n]}],"border-w-x":[{"border-x":[n]}],"border-w-y":[{"border-y":[n]}],"border-w-s":[{"border-s":[n]}],"border-w-e":[{"border-e":[n]}],"border-w-t":[{"border-t":[n]}],"border-w-r":[{"border-r":[n]}],"border-w-b":[{"border-b":[n]}],"border-w-l":[{"border-l":[n]}],"border-opacity":[{"border-opacity":[L]}],"border-style":[{border:[...We(),"hidden"]}],"divide-x":[{"divide-x":[n]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[n]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[L]}],"divide-style":[{divide:We()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...We()]}],"outline-offset":[{"outline-offset":[De,k]}],"outline-w":[{outline:[De,_e]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ve()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[L]}],"ring-offset-w":[{"ring-offset":[De,_e]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ke,wl]}],"shadow-color":[{shadow:[ba]}],opacity:[{opacity:[L]}],"mix-blend":[{"mix-blend":[...fa(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":fa()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[u]}],"drop-shadow":[{"drop-shadow":["","none",Ke,k]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[p]}],saturate:[{saturate:[A]}],sepia:[{sepia:[E]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[u]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[L]}],"backdrop-saturate":[{"backdrop-saturate":[A]}],"backdrop-sepia":[{"backdrop-sepia":[E]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",k]}],duration:[{duration:ae()}],ease:[{ease:["linear","in","out","in-out",k]}],delay:[{delay:ae()}],animate:[{animate:["none","spin","ping","pulse","bounce",k]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[v]}],"scale-x":[{"scale-x":[v]}],"scale-y":[{"scale-y":[v]}],rotate:[{rotate:[Sa,k]}],"translate-x":[{"translate-x":[X]}],"translate-y":[{"translate-y":[X]}],"skew-x":[{"skew-x":[R]}],"skew-y":[{"skew-y":[R]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",k]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",k]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":F()}],"scroll-mx":[{"scroll-mx":F()}],"scroll-my":[{"scroll-my":F()}],"scroll-ms":[{"scroll-ms":F()}],"scroll-me":[{"scroll-me":F()}],"scroll-mt":[{"scroll-mt":F()}],"scroll-mr":[{"scroll-mr":F()}],"scroll-mb":[{"scroll-mb":F()}],"scroll-ml":[{"scroll-ml":F()}],"scroll-p":[{"scroll-p":F()}],"scroll-px":[{"scroll-px":F()}],"scroll-py":[{"scroll-py":F()}],"scroll-ps":[{"scroll-ps":F()}],"scroll-pe":[{"scroll-pe":F()}],"scroll-pt":[{"scroll-pt":F()}],"scroll-pr":[{"scroll-pr":F()}],"scroll-pb":[{"scroll-pb":F()}],"scroll-pl":[{"scroll-pl":F()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",k]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[De,_e,Wt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ml=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:s={},override:l={}})=>{ya(e,"cacheSize",a),ya(e,"prefix",t),ya(e,"separator",o),ya(e,"experimentalParseClassName",r);for(let n in l)Tl(e[n],l[n]);for(let n in s)Dl(e[n],s[n]);return e},ya=(e,a,t)=>{t!==void 0&&(e[a]=t)},Tl=(e,a)=>{if(a)for(let t in a)ya(e,t,a[t])},Dl=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},Eo=(e,...a)=>typeof e=="function"?Do(Ao,e,...a):Do(()=>Ml(Ao(),e),...a);var Fl=Eo({prefix:"ps-"});function c(...e){return Fl(Al(e))}import{useIsMutating as Kd}from"@tanstack/react-query";import{forwardRef as Nl,createElement as Ol}from"react";var Ho=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),dt=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Bl,createElement as zo}from"react";var Uo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Vo=Bl(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:s,iconNode:l,...n},u)=>zo("svg",{ref:u,...Uo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:dt("lucide",r),...n},[...l.map(([d,i])=>zo(d,i)),...Array.isArray(s)?s:[s]]));var y=(e,a)=>{let t=Nl(({className:o,...r},s)=>Ol(Vo,{ref:s,iconNode:a,className:dt(`lucide-${Ho(e)}`,o),...r}));return t.displayName=`${e}`,t};var Xe=y("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var va=y("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var wa=y("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var he=y("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ve=y("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var Pa=y("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var Le=y("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ka=y("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var Ra=y("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var Ma=y("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Ae=y("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var Qe=y("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var sa=y("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var Ta=y("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Da=y("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var Aa=y("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Fa=y("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Ba=y("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var Na=y("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var Oa=y("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);var qa=y("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var Ea=y("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var Ha=y("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ua=y("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ze=y("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Je=y("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var za=y("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Va=y("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Ga=y("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var $e=y("SquareArrowRight",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]);var Wa=y("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var je=y("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as Xd}from"motion-plus/react";import{useEffect as Qd,useState as Zd}from"react";import{toast as Jd}from"sonner";import{cva as ql}from"class-variance-authority";import{jsx as El}from"react/jsx-runtime";var Xt=ql("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function it({className:e,variant:a,...t}){return El("div",{className:c(Xt({variant:a}),e),...t})}import{Slot as Hl}from"@radix-ui/react-slot";import{cva as Ul}from"class-variance-authority";import*as Go from"react";import{jsx as zl}from"react/jsx-runtime";var Qt=Ul("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),q=Go.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},s)=>zl(o?Hl:"button",{className:c(Qt({variant:a,size:t,className:e})),ref:s,...r}));q.displayName="Button";import*as we from"@radix-ui/react-popover";import*as _o from"react";import{jsx as Wo}from"react/jsx-runtime";var Ko=we.Root,Xo=we.Trigger;var Zt=_o.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Wo(we.Portal,{children:Wo(we.Content,{ref:r,align:a,sideOffset:t,className:c("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Zt.displayName=we.Content.displayName;import*as Be from"react";import{jsx as Fe}from"react/jsx-runtime";var Jt=Be.forwardRef(({className:e,...a},t)=>Fe("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Fe("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Jt.displayName="Table";var $t=Be.forwardRef(({className:e,...a},t)=>Fe("thead",{ref:t,className:c(e),...a}));$t.displayName="TableHeader";var jt=Be.forwardRef(({className:e,...a},t)=>Fe("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));jt.displayName="TableBody";var Vl=Be.forwardRef(({className:e,...a},t)=>Fe("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Vl.displayName="TableFooter";var la=Be.forwardRef(({className:e,...a},t)=>Fe("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));la.displayName="TableRow";var _a=Be.forwardRef(({className:e,...a},t)=>Fe("th",{ref:t,className:c("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));_a.displayName="TableHead";var Ka=Be.forwardRef(({className:e,...a},t)=>Fe("td",{ref:t,className:c("ps-align-middle",e),...a}));Ka.displayName="TableCell";var Gl=Be.forwardRef(({className:e,...a},t)=>Fe("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Gl.displayName="TableCaption";import{useMutation as gn,useQueryClient as xn}from"@tanstack/react-query";import{QueryClient as ln,QueryClientProvider as nn}from"@tanstack/react-query";import*as Ce from"react";import{onlineManager as Wl,useQueryClient as _l}from"@tanstack/react-query";var Qo=class{#a;#d;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#n;#u;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:n,errorTypes:u,styleNonce:d,shadowDOMTarget:i}=e;this.#a=pe(a),this.#i=t,this.#f=o,this.#d=r,this.#c=d,this.#t=i,this.#o=pe(s),this.#r=pe(l),this.#s=pe(n),this.#l=pe(u)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=zt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[n]=this.#a,u;return this.#n?u=this.#n:(u=Ut(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#n=u),Vt(this.#c,this.#t),Et(u,Ht({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#d},get shadowDOMTarget(){return t.#t}},{get client(){return n()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()}}))},e);this.#e=!0,this.#u=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#u?.(),this.#e=!1}},Zo=class{#a;#d;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#n;#u;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:n,errorTypes:u,styleNonce:d,shadowDOMTarget:i,onClose:p}=e;this.#a=pe(a),this.#i=t,this.#f=o,this.#d=r,this.#c=d,this.#t=i,this.#o=pe(s),this.#r=pe(l),this.#s=pe(n),this.#l=pe(u),this.#n=pe(p)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#n[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=zt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[n]=this.#a,[u]=this.#n,d;return this.#u?d=this.#u:(d=Ut(()=>import("../OKF6E45R-3IGVLQES.js")),this.#u=d),Vt(this.#c,this.#t),Et(d,Ht({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#d},get shadowDOMTarget(){return t.#t}},{get client(){return n()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()},get onClose(){return u()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as Kl}from"react/jsx-runtime";function Jo(e){let a=_l(e.client),t=Ce.useRef(null),{buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:n,shadowDOMTarget:u}=e,[d]=Ce.useState(new Qo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Wl,buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:n,shadowDOMTarget:u}));return Ce.useEffect(()=>{d.setClient(a)},[a,d]),Ce.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),Ce.useEffect(()=>{r&&d.setPosition(r)},[r,d]),Ce.useEffect(()=>{d.setInitialIsOpen(s||!1)},[s,d]),Ce.useEffect(()=>{d.setErrorTypes(l||[])},[l,d]),Ce.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),Kl("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Ne from"react";import{onlineManager as Ql,useQueryClient as Zl}from"@tanstack/react-query";import{jsx as Jl}from"react/jsx-runtime";function $o(e){let a=Zl(e.client),t=Ne.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:s}=e,[l]=Ne.useState(new Zo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Ql,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:s,onClose:e.onClose}));return Ne.useEffect(()=>{l.setClient(a)},[a,l]),Ne.useEffect(()=>{l.setOnClose(e.onClose??(()=>{}))},[e.onClose,l]),Ne.useEffect(()=>{l.setErrorTypes(o||[])},[o,l]),Ne.useEffect(()=>(t.current&&l.mount(t.current),()=>{l.unmount()}),[l]),Jl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var jo=process.env.NODE_ENV!=="development"?function(){return null}:Jo,Qp=process.env.NODE_ENV!=="development"?function(){return null}:$o;import{createContext as un,useContext as dn,useMemo as fn,useState as ct}from"react";import{toast as cn}from"sonner";import{Toaster as jl}from"sonner";import{jsx as Yl}from"react/jsx-runtime";var Yo=({...e})=>Yl(jl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as en}from"nuqs/adapters/custom";import{useEffect as an,useState as tn}from"react";function on(){let e=typeof window<"u"?window.location.hash.slice(1):"",[a,t]=tn(new URLSearchParams(e));function o(s,{history:l}){let{pathname:n,search:u}=window.location,d=s.toString(),i=`${n}${u}#${d}`;l==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(s)}function r(){if(typeof window>"u")return new URLSearchParams;let s=window.location.hash.slice(1);return new URLSearchParams(s)}return an(()=>{function s(){let l=window.location.hash.slice(1);t(new URLSearchParams(l))}return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var er=en(on);import{useEffect as sn}from"react";import{useQuery as rn}from"@tanstack/react-query";var ft=-1;function Pe(){let{adapter:e}=_();return rn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:ft,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===ft?0:1/0})}function ar(){let[e,a]=$("table"),[t,o]=$("schema"),[r,s]=$("view"),{data:l,isLoading:n}=Pe();return sn(()=>{if(n||!l?.schemas)return;let u=window.location.hash.slice(1),d=new URLSearchParams(u),i=d.has("table"),p=d.has("schema"),h=d.has("view");if(!i&&!p&&!h){let x=Object.keys(l.schemas)[0];if(x){let g=l.schemas[x]?.tables[0];g&&(a(g.name),o(x),s("table"))}}else i&&p&&!h&&s("table")},[n,l,a,o,s]),null}import{jsx as pt,jsxs as tr}from"react/jsx-runtime";var pn=new ln,or=un(void 0);function rr(e){let{children:a,...t}=e,[o,r]=ct(null),[s,l]=ct(e.adapter.defaultSchema||"public"),[n,u]=ct(!1),[d,i]=ct(!0),p=e.onError;p??=m=>cn.error(m.message);let h=fn(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),x=()=>u(m=>!m),g=()=>i(m=>!m);return tr(nn,{client:pn,children:[pt(jo,{}),pt(Yo,{}),pt(er,{children:tr(or.Provider,{value:{...t,activeTable:o,activeSchema:s,isFullscreen:n,setActiveTable:r,setActiveSchema:l,onError:p,emitTelemetryEvent:h,toggleFullscreen:x,isNavigationOpen:d,toggleNavigation:g},children:[pt(ar,{}),a]})})]})}function _(){let e=dn(or);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function mn(e,a){let t={filter:ca(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function sr(e,a){return{...e,__ps_rowid:mn(e,a)}}function mt(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:sr(t,a)}:o!==void 0?{...e,rows:o.map(r=>sr(r,a))}:e}function lr(){let{activeTable:e,adapter:a}=_(),t=xn(),{schema:o=null,name:r=null}=e??{};return gn({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(s){let[l,n]=await a.insert({rows:s,table:e},{});if(l)throw l;return mt(n,e)},onSuccess(s){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},l=>l==null?l:{...l,rows:[...s.rows,...l.rows]})},retry:!1})}import{useQuery as hn}from"@tanstack/react-query";function nr(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:s,adapter:l}=_();return hn({enabled:!!s,gcTime:0,placeholderData(n,u){let[,d,,i]=u?.queryKey||[];if(!(d!==s?.schema||i!==s?.name))return n},async queryFn({signal:n}){let[u,d]=await l.query({pageIndex:a,pageSize:t,sortOrder:o,table:s,filter:r},{abortSignal:n});if(u)throw u;return mt(d,s)},queryKey:["schema",s?.schema||null,"table",s?.name||null,"query","sortOrder",o.map(n=>`${n.column}:${n.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as Ln,useQueryClient as Cn}from"@tanstack/react-query";function ur(){let{activeTable:e,adapter:a,onError:t}=_(),o=Cn(),r=["schema",e?.schema??null,"table",e?.name??null];return Ln({mutationFn:async s=>{let[l,n]=await a.update(s.details,s.options);if(l)throw l;return n},mutationKey:[...r,"update"],onError(s,l){let{changes:n,row:u}=l.details;t(s),Yt({getFinderFn(){let d={...u,...n},i=ca(d,e.columns);return p=>i.every(([h,x])=>p[h]===x)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(n).reduce((p,h)=>({...p,[h]:u[h]}),{})}}})},onMutate(s){let{details:l}=s;Yt({getFinderFn(){let{row:n}=l,u=ca(n,e.columns);return d=>u.every(([i,p])=>d[i]===p)},queryClient:o,table:e,updaterFn:function(u){return{...u,...l.changes}}})},onSuccess(s,l){Yt({getFinderFn(){let{changes:n,row:u}=l.details,d={...u,...n},i=ca(d,e.columns);return p=>i.every(([h,x])=>p[h]===x)},queryClient:o,table:e,updaterFn:function(u){let{__ps_updated_at__:d}=u,{row:i}=s;return d!=null&&i.__ps_updated_at__<=d?u:{...u,...i}}})},retry:!1})}function Yt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,s;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},l=>{let{rows:n=[]}=l||{};if(n.length===0)return l;let u=n.findIndex(s??=a());if(u===-1)return l;let d=r(n[u]);return{...l,rows:[...n.slice(0,u),d,...n.slice(u+1)]}})}import{useEffect as In,useMemo as dr,useState as Sn}from"react";import bn from"short-uuid";var yn={kind:"FilterGroup",filters:[],after:"and",id:bn.generate()},ir=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=ir(t));return a};function gt(){let[e,a]=$("filter",{defaultValue:JSON.stringify(yn)}),t=dr(()=>JSON.parse(e),[e]),o=n=>void a(JSON.stringify(n)),[r,s]=Sn(t);In(()=>{s(t)},[t]);let l=dr(()=>ir(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:s,totalEditingFilters:l}}import{useIsMutating as vn}from"@tanstack/react-query";function xt(){return vn({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as wn}from"react";var Pn=25,kn={pageIndex:Q.parseAsIndex.withDefault(0),pageSize:Q.parseAsInteger.withDefault(Pn)};function ht(){let[{pageIndex:e,pageSize:a},t]=Ia(kn),o=wn(r=>{t(typeof r=="function"?s=>{let l=r(s);return{pageIndex:l.pageIndex,pageSize:l.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Tn,useState as Dn}from"react";import{useMutation as Rn,useQueryClient as Mn}from"@tanstack/react-query";function fr(){let{activeTable:e,adapter:a}=_(),t=Mn(),{schema:o=null,name:r=null}=e??{};return Rn({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(s){let[l,n]=await a.delete({rows:s,table:e},{});if(l)throw l;return n},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function cr(e){let{activeTable:a,onError:t}=_(),{paginationState:o}=ht(),[r,s]=Dn({}),l=Object.keys(r).length!==0,{mutate:n}=fr();Tn(()=>s({}),[a,o.pageIndex]);function u(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);n(d??[],{onSuccess(){s({})},onError:t})}return{deleteSelection:u,setRowSelectionState:s,rowSelectionState:r,isSelecting:l}}import{useEffect as An,useState as Fn}from"react";function pr(){let[e,a]=$("sort",{defaultValue:""}),t=l=>{if(!l)return[];try{return l.split(",").map(n=>{let[u,d]=n.split(":");return!u||!d||!["asc","desc"].includes(d)?null:{column:u,direction:d}}).filter(Boolean)}catch(n){return console.error("Failed to parse sorting parameter:",n),[]}},[o,r]=Fn(()=>t(e));return An(()=>{let l=t(e);r(l)},[e]),{sortingState:o,setSortingState:l=>{let n=typeof l=="function"?l(o):l;r(n);let u=n.length>0?n.map(d=>`${d.column}:${d.direction}`).join(","):null;a(u)}}}import{isValidElement as zn}from"react";import*as M from"@radix-ui/react-context-menu";import*as Oe from"react";import{jsx as ue,jsxs as to}from"react/jsx-runtime";var mr=M.Root,gr=M.Trigger;var Bn=Oe.forwardRef(({className:e,inset:a,children:t,...o},r)=>to(M.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,ue(Le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Bn.displayName=M.SubTrigger.displayName;var Nn=Oe.forwardRef(({className:e,...a},t)=>ue(M.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Nn.displayName=M.SubContent.displayName;var eo=Oe.forwardRef(({className:e,...a},t)=>ue(M.Portal,{children:ue(M.Content,{ref:t,className:c("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));eo.displayName=M.Content.displayName;var ao=Oe.forwardRef(({className:e,inset:a,...t},o)=>ue(M.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));ao.displayName=M.Item.displayName;var On=Oe.forwardRef(({className:e,children:a,checked:t,...o},r)=>to(M.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(he,{className:"ps-h-4 ps-w-4"})})}),a]}));On.displayName=M.CheckboxItem.displayName;var qn=Oe.forwardRef(({className:e,children:a,...t},o)=>to(M.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(sa,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));qn.displayName=M.RadioItem.displayName;var En=Oe.forwardRef(({className:e,inset:a,...t},o)=>ue(M.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));En.displayName=M.Label.displayName;var Hn=Oe.forwardRef(({className:e,...a},t)=>ue(M.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Hn.displayName=M.Separator.displayName;var Un=({className:e,...a})=>ue("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});Un.displayName="ContextMenuShortcut";import{jsx as oo,jsxs as xr}from"react/jsx-runtime";function hr(e){let{children:a}=e;return xr(mr,{children:[oo(gr,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),oo(eo,{children:xr(ao,{onClick:()=>{let t=ro(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[oo(Ta,{size:12}),"Copy"]})})]})}function ro(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(zn(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?ro(a.children):""}return Array.isArray(e)?e.map(ro).join(""):""}import{jsx as Lr}from"react/jsx-runtime";function Lt(e){let{children:a,className:t,ref:o,style:r,...s}=e;return Lr(Ka,{...s,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:Lr(hr,{children:a})})}import{isObjectType as ou}from"remeda";import{jsx as Vn}from"react/jsx-runtime";var so=e=>{let{value:a}=e;return Vn("div",{"data-cell-type":"boolean",children:String(!!a)})};so.displayName="BooleanCell";import{Fragment as Gn,jsx as Wn}from"react/jsx-runtime";function Cr(e){let{value:a}=e;return Wn(Gn,{children:String(a)})}import{Fragment as _n,jsx as Kn}from"react/jsx-runtime";function Ct(e){return Kn(_n,{})}import{Fragment as Xn,jsx as Qn}from"react/jsx-runtime";function Ir(e){let{value:a}=e;return Qn(Xn,{children:String(a)})}import{Fragment as Zn,jsx as Jn}from"react/jsx-runtime";function lo(e){let{value:a}=e;return Jn(Zn,{children:JSON.stringify(a,null,2)})}import{jsx as $n}from"react/jsx-runtime";function Sr(e){return $n("code",{className:"ps-text-muted-foreground/60",children:"NULL"})}import{jsx as jn}from"react/jsx-runtime";function br(e){let{value:a}=e;return jn("div",{"data-cell-type":"numeric",children:a===null?"NULL":String(a)})}import{Fragment as Yn,jsx as eu}from"react/jsx-runtime";function no(e){let{value:a}=e;return eu(Yn,{children:String(a)})}import{Fragment as au,jsx as tu}from"react/jsx-runtime";function yr(e){let{value:a}=e;return tu(au,{children:String(a)})}import{jsx as Ie}from"react/jsx-runtime";function It({cell:e,column:a}){let t=e.getValue();if(t===void 0)return Ie(Ct,{});if(t===null)return Ie(Sr,{});let{group:o,isArray:r}=a.datatype;if(o==="json"||r)return Ie(lo,{value:t});if(o==="string")return Ie(no,{value:t});if(o==="enum")return Ie(Ir,{value:t});if(o==="boolean")return Ie(so,{value:t});if(o==="datetime")return Ie(Cr,{value:t});if(o==="time")return Ie(yr,{value:t});if(o==="numeric")return Ie(br,{value:t});if(o==="raw")return ou(t)?Ie(lo,{value:t}):Ie(no,{value:t});throw new Error(`Datatype group "${o}" was not handled in '/cell/get-cell.tsx'`)}import*as Xa from"@radix-ui/react-checkbox";import*as vr from"react";import{jsx as uo}from"react/jsx-runtime";var Qa=vr.forwardRef(({className:e,...a},t)=>uo(Xa.Root,{ref:t,className:c("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:uo(Xa.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:uo(he,{className:"ps-h-4 ps-w-4"})})}));Qa.displayName=Xa.Root.displayName;import{jsx as ru}from"react/jsx-runtime";function wr(e){let{table:a,readonly:t}=e;return ru(Qa,{checked:a.getIsAllRowsSelected(),onCheckedChange:o=>a.toggleAllRowsSelected(!!o),disabled:t})}import{jsx as su}from"react/jsx-runtime";function Pr(e){let{row:a,readonly:t}=e;return su(Qa,{checked:a.getIsSelected(),disabled:!a.getCanSelect()||t,onCheckedChange:a.getToggleSelectedHandler()})}import*as qe from"@radix-ui/react-popover";import*as oe from"react";import{jsx as Za}from"react/jsx-runtime";var kr=oe.createContext(null),io=({children:e,...a})=>{let[t,o]=oe.useState(!1);return Za(kr.Provider,{value:{open:t,setOpen:o},children:Za(qe.Root,{open:t,onOpenChange:o,...a,children:e})})};io.displayName="PopoverCell";var fo=oe.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let s=oe.useRef(null);return Za(qe.Trigger,{ref:l=>{typeof r=="function"?r(l):r&&(r.current=l),s.current=l},className:c("w-full h-full cursor-pointer",t),...o,children:e})});fo.displayName="PopoverCellTrigger";var co=oe.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Za(qe.Portal,{children:Za(qe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:s=>s.preventDefault(),...o})}));co.displayName=qe.Content.displayName;function de(e){let a=oe.useContext(kr),t=oe.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=oe.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return oe.useEffect(()=>{let r=s=>{(s.key==="Enter"||s.key==="Return")&&!s.shiftKey?t():s.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as St,jsxs as Rr}from"react/jsx-runtime";function bt(e){let{cellComponent:a,inputComponent:t,linkComponent:o,containerProps:r}=e;return Rr(io,{children:[St(fo,{asChild:!0,children:St(Lt,{...r,children:Rr("div",{className:"ps-flex ps-flex-row ps-w-full ps-gap-2 ps-justify-between ps-items-center",children:[St("div",{children:a}),o]})})}),St(co,{align:"start",alignOffset:-1,className:c("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-max"),sideOffset:-40,children:t})]})}import{closestCenter as xu,DndContext as hu,DragOverlay as Lu,KeyboardSensor as Cu,PointerSensor as Iu,useSensor as Br,useSensors as Su}from"@dnd-kit/core";import{arrayMove as bu,SortableContext as yu,sortableKeyboardCoordinates as vu,useSortable as wu,verticalListSortingStrategy as Pu}from"@dnd-kit/sortable";import{CSS as ku}from"@dnd-kit/utilities";import{motion as mo}from"motion/react";import{AnimateNumber as Ru}from"motion-plus/react";import{useMemo as Mu,useState as go}from"react";import{Fragment as Tu}from"react/jsx-runtime";import{createPortal as Du}from"react-dom";import Nr from"short-uuid";function Mr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function Tr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as T from"@radix-ui/react-dropdown-menu";import*as Ee from"react";import{jsx as ie,jsxs as po}from"react/jsx-runtime";var yt=T.Root,vt=T.Trigger;var lu=Ee.forwardRef(({className:e,inset:a,children:t,...o},r)=>po(T.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,ie(Le,{className:"ps-ml-auto"})]}));lu.displayName=T.SubTrigger.displayName;var nu=Ee.forwardRef(({className:e,...a},t)=>ie(T.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));nu.displayName=T.SubContent.displayName;var Ja=Ee.forwardRef(({className:e,sideOffset:a=4,...t},o)=>ie(T.Portal,{children:ie(T.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ja.displayName=T.Content.displayName;var wt=Ee.forwardRef(({className:e,inset:a,...t},o)=>ie(T.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));wt.displayName=T.Item.displayName;var uu=Ee.forwardRef(({className:e,children:a,checked:t,...o},r)=>po(T.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[ie("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ie(T.ItemIndicator,{children:ie(he,{className:"ps-h-4 ps-w-4"})})}),a]}));uu.displayName=T.CheckboxItem.displayName;var du=Ee.forwardRef(({className:e,children:a,...t},o)=>po(T.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[ie("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ie(T.ItemIndicator,{children:ie(sa,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));du.displayName=T.RadioItem.displayName;var iu=Ee.forwardRef(({className:e,inset:a,...t},o)=>ie(T.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));iu.displayName=T.Label.displayName;var fu=Ee.forwardRef(({className:e,...a},t)=>ie(T.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));fu.displayName=T.Separator.displayName;var cu=({className:e,...a})=>ie("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});cu.displayName="DropdownMenuShortcut";import*as Dr from"react";import{jsx as pu}from"react/jsx-runtime";var ne=Dr.forwardRef(({className:e,type:a,...t},o)=>pu("input",{type:a,className:c("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as D from"@radix-ui/react-select";import*as Ye from"react";import{jsx as re,jsxs as $a}from"react/jsx-runtime";var ea=D.Root;var aa=D.Value,He=Ye.forwardRef(({className:e,children:a,label:t,...o},r)=>$a(D.Trigger,{ref:r,className:c("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...o,children:[$a("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&$a("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),re(D.Icon,{asChild:!0,children:re(ve,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));He.displayName=D.Trigger.displayName;var Ar=Ye.forwardRef(({className:e,...a},t)=>re(D.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:re(ka,{className:"ps-h-4 ps-w-4"})}));Ar.displayName=D.ScrollUpButton.displayName;var Fr=Ye.forwardRef(({className:e,...a},t)=>re(D.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:re(ve,{className:"ps-h-4 ps-w-4"})}));Fr.displayName=D.ScrollDownButton.displayName;var Ue=Ye.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>re(D.Portal,{children:$a(D.Content,{ref:r,className:c("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[re(Ar,{}),re(D.Viewport,{className:c("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),re(Fr,{})]})}));Ue.displayName=D.Content.displayName;var mu=Ye.forwardRef(({className:e,...a},t)=>re(D.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));mu.displayName=D.Label.displayName;var V=Ye.forwardRef(({className:e,children:a,...t},o)=>$a(D.Item,{ref:o,className:c("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[re("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:re(D.ItemIndicator,{children:re(he,{className:"ps-h-4 ps-w-4"})})}),re(D.ItemText,{children:a})]}));V.displayName=D.Item.displayName;var gu=Ye.forwardRef(({className:e,...a},t)=>re(D.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));gu.displayName=D.Separator.displayName;import{Fragment as Nu,jsx as S,jsxs as Z}from"react/jsx-runtime";var Or=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>Z(ea,{value:e,onValueChange:a,disabled:t,children:[S(He,{className:o,children:S(aa,{placeholder:"Logic"})}),Z(Ue,{children:[S(V,{value:"and",children:S("div",{className:"ps-font-semibold",children:"AND"})}),S(V,{value:"or",children:S("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Au=({activeId:e,items:a,table:t})=>{let o=a.find(n=>n.id===e);if(!o)return null;let r="and",s=!1,l=a.findIndex(n=>n.id===e);if(l>0){let n=a[l-1];n&&(r=n.after,s=!0)}return o.kind==="ColumnFilter"?S(qr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):S(xo,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Fu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:s,activeDragId:l,onDragStart:n,onDragEndSignal:u})=>{let d=Mu(()=>e.map(h=>h.id),[e]),i=Su(Br(Iu,{activationConstraint:{distance:8}}),Br(Cu,{coordinateGetter:vu}));return Z(hu,{sensors:i,collisionDetection:xu,onDragStart:n,onDragEnd:h=>{let{active:x,over:g}=h;if(g&&x.id!==g.id){let m=e.findIndex(L=>L.id===x.id),I=e.findIndex(L=>L.id===g.id);m!==-1&&I!==-1&&s(m,I)}u()},children:[S(yu,{items:d,strategy:Pu,children:e.map((h,x)=>{let g=!1,m,I,L=!1;if(x>0){g=!0;let w=e[x-1];m=w.after,I=A=>{let v={...w,after:A};o(x-1,v)},L=x-1===e.length-1}return S(Bu,{filter:h,onUpdate:w=>o(x,w),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:g,leadingOperatorValue:m,onLeadingOperatorChange:I,isLeadingOperatorTargetLast:L},h.id)})}),Du(S(Lu,{children:l?S("div",{className:"ps-opacity-80",children:S(Au,{activeId:l,items:e,table:t})}):null}),document.body)]})},Bu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})=>{let{attributes:d,listeners:i,setNodeRef:p,transform:h,transition:x,isDragging:g}=wu({id:e.id,data:{type:e.kind,parentId:o}}),m={transform:ku.Transform.toString(h),transition:x,opacity:g?.5:1};return S("div",{ref:p,style:m,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?S(qr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u}):S(xo,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})})},qr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})=>{let d=g=>{a({...e,column:g})},i=g=>{a({...e,operator:g})},p=g=>{let m=g.target.value,I=r.columns[e.column];if(I!==void 0){let L=Mr(I,e.operator,m);a({...e,value:L})}},[h,x]=go(Tr(r.columns[e.column],e.operator,e.value));return Z(mo.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[Z("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[S("div",{...o,className:"ps-cursor-grab",children:S(Fa,{className:"ps-text-gray-500",size:16})}),Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[s&&n?S(Or,{value:l,onValueChange:n,disabled:u}):null,Z(ea,{value:e.column,onValueChange:d,children:[S(He,{className:"ps-w-28 ps-text-xs ps-h-8",children:S(aa,{placeholder:"Select column"})}),S(Ue,{children:Object.keys(r.columns).map(g=>S(V,{value:g,children:g},g))})]}),Z(ea,{value:e.operator,onValueChange:g=>i(g),children:[S(He,{className:"ps-w-20 ps-text-xs ps-h-8",children:S(aa,{placeholder:"Operator"})}),Z(Ue,{children:[S(V,{value:"=",children:"="}),S(V,{value:"!=",children:"!="}),S(V,{value:">",children:">"}),S(V,{value:">=",children:">="}),S(V,{value:"<",children:"<"}),S(V,{value:"<=",children:"<="}),S(V,{value:"is",children:"is"}),S(V,{value:"is not",children:"is not"}),S(V,{value:"like",children:"like"}),S(V,{value:"not like",children:"not like"}),S(V,{value:"ilike",children:"ilike"}),S(V,{value:"not ilike",children:"not ilike"})]})]}),S(ne,{value:h,onChange:g=>{x(g.target.value),p(g)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),S("div",{className:"ps-flex ps-items-center ps-gap-2",children:S(q,{variant:"ghost",size:"xs",onClick:t,children:S(je,{size:14})})})]})},xo=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:s,showLeadingOperator:l,leadingOperatorValue:n,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let[i,p]=go(!0),[h,x]=go(null),g=()=>{let R={id:Nr.generate(),kind:"ColumnFilter",column:Object.keys(s.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,R]})},m=()=>{let R={id:Nr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,R]})},I=(R,B)=>{let X=[...e.filters];X[R]=B,a({...e,filters:X})},L=R=>{let B=[...e.filters];B.splice(R,1),a({...e,filters:B})},w=R=>{x(R.active.id)},A=()=>{x(null)},v=(R,B)=>{if(R===B)return;let X=bu(e.filters,R,B);a({...e,filters:X})},E=()=>i?!e.filters||e.filters.length===0?S("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):S(mo.div,{transition:{layout:{duration:.12}},children:S("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:S(Fu,{items:e.filters,parentGroupId:e.id,table:s,onUpdateItem:I,onDeleteItem:L,onReorderItems:v,activeDragId:h,onDragStart:w,onDragEndSignal:A})})}):null;return S(mo.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:Z("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[Z("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&S("div",{...o,className:"ps-cursor-grab",onClick:()=>p(!i),children:i?S(ve,{size:16}):S(Le,{size:16})}),l&&u&&!r&&S("div",{className:"ps-flex ps-items-center",children:S(Or,{value:n,onValueChange:u,disabled:d})}),Z(q,{variant:"outline",size:"sm",onClick:g,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&S(it,{className:"ps-transition-all",children:S(Ru,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),S(q,{variant:"outline",size:"sm",onClick:m,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&Z(yt,{children:[S(vt,{asChild:!0,children:S(q,{variant:"ghost",size:"sm",children:S(Qe,{className:"ps-size-4"})})}),S(Ja,{align:"center",className:"ps-w-full",children:e.filters.length===0?S("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):S("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:S(Er,{filter:e})})})]}),!r&&S(q,{variant:"ghost",size:"xs",onClick:t,children:S(je,{size:14})})]})]}),S("div",{className:c(r?"":"ps-ml-6"),children:E()})]})})},Er=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let s,l=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!l&&(a+=1),a&&(l||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:n,operator:u}=o;s=Z(Nu,{children:[Z("span",{children:[" ",n," "]}),Z("span",{children:[" ",u," "]}),S("span",{children:" ? "})]})}else s=S(Er,{filter:o});return Z(Tu,{children:[a===1?S("span",{className:"ps-font-semibold",children:"("}):"",s,a===-1?S("span",{className:"ps-font-semibold",children:")"}):"",!l&&Z("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return S("span",{children:t})};function Hr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return Z("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[S(xo,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),S(q,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as Zu,MouseSensor as Ju,useSensor as $u,useSensors as ju}from"@dnd-kit/core";import{arrayMove as Yu,horizontalListSortingStrategy as ed,SortableContext as ad}from"@dnd-kit/sortable";import{getCoreRowModel as td,useReactTable as od}from"@tanstack/react-table";import*as ze from"react";import b from"react";function ta(){return ta=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},ta.apply(null,arguments)}var Ou=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function qu(e,a){let[t,o]=b.useState();b.useEffect(()=>{let s=Ou(e);o(typeof s>"u"||s===null?typeof a=="function"?a():a:s)},[a,e]);let r=b.useCallback(s=>{o(l=>{let n=s;typeof s=="function"&&(n=s(l));try{localStorage.setItem(e,JSON.stringify(n))}catch{}return n})},[e]);return[t,r]}var ke={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Vr=b.createContext(ke);function Gr(e){let{theme:a,...t}=e;return b.createElement(Vr.Provider,ta({value:a},t))}function Eu(){return b.useContext(Vr)}function Hu(e){let[a,t]=b.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return b.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=s=>{let{matches:l}=s;return t(l)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var Uu=typeof window>"u";function Se(e,a,t){return t===void 0&&(t={}),b.forwardRef((o,r)=>{let{style:s,...l}=o,n=Eu(),u=Object.entries(t).reduce((d,i)=>{let[p,h]=i;return Hu(p)?{...d,...typeof h=="function"?h(l,n):h}:d},{});return b.createElement(e,{...l,style:{...typeof a=="function"?a(l,n):a,...s,...u},ref:r})})}function zu(){let e=b.useRef(!1),a=b.useCallback(()=>e.current,[]);return b[Uu?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Vu=Se("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});Se("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var Gu=Se("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));Se("code",{fontSize:".9em"});Se("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));Se("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var Ur=Se("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),Pt=Se("span",{cursor:"pointer",color:"white"}),Wu=Se("span",(e,a)=>({color:a.danger})),ho=Se("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),_u=Se("span",{color:"grey",fontSize:".7rem"}),zr=e=>{let{expanded:a,style:t={},...o}=e;return b.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Ku=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:s,type:l,expanded:n,toggle:u,pageSize:d,renderer:i}=e,[p,h]=b.useState(void 0),[x,g]=b.useState([]),m=()=>{h(o())};return b.createElement(Ur,{key:t},s!=null&&s.length?b.createElement(b.Fragment,null,b.createElement(Pt,{onClick:()=>u()},b.createElement(zr,{expanded:n})," ",t," ",b.createElement(_u,null,String(l).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),n?s.length===1?b.createElement(ho,null,r.map(I=>a(I))):b.createElement(ho,null,s.map((I,L)=>b.createElement("div",{key:L},b.createElement(Ur,null,b.createElement(Pt,{onClick:()=>g(w=>w.includes(L)?w.filter(A=>A!==L):[...w,L])},b.createElement(zr,{expanded:n})," [",L*d," ..."," ",L*d+d-1,"]"),x.includes(L)?b.createElement(ho,null,I.map(w=>a(w))):null)))):null):l==="function"?b.createElement(b.Fragment,null,b.createElement(Re,{renderer:i,label:b.createElement("button",{onClick:m},b.createElement(Pt,null,t)," \u{1F504}"," "),value:p,defaultExpanded:{}})):b.createElement(b.Fragment,null,b.createElement(Pt,null,t,":")," ",b.createElement(Wu,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function Re(e){let{value:a,defaultExpanded:t,renderer:o=Ku,pageSize:r=100,depth:s=0,...l}=e,[n,u]=b.useState(t),d=m=>{u(I=>typeof m<"u"?m:!I)},i=[],p=typeof a,h,x=[],g=m=>{let I=i.concat(m.label),L=t===!0?{[m.label]:!0}:t?.[m.label];return{...m,subPath:m,path:I,depth:s+1,defaultExpanded:L}};if(Array.isArray(a)?(p="array",h=a.map((m,I)=>g({label:I,value:m}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(p="Iterable",h=Array.from(a,(m,I)=>g({label:I,value:m}))):typeof a=="function"?p="function":typeof a=="object"&&a!==null&&(p="object",h=Object.entries(a).map(m=>{let[I,L]=m;return g({label:I,value:L})})),h){let m=0;for(;m<h.length;)x.push(h.slice(m,m+r)),m=m+r}return o({handleEntry:m=>b.createElement(Re,ta({key:m.label,renderer:o},l,m)),type:p,subEntries:h,subEntryPages:x,depth:s,value:a,path:i,expanded:n,toggle:d,pageSize:r,...l})}function Wr(e){return ze.createElement("svg",ta({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),ze.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},ze.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},ze.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},ze.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},ze.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),ze.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),ze.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function _r(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:s="footer"}=e,l=b.useRef(null),n=b.useRef(null),[u,d]=qu("reactTableDevtoolsOpen",a),i=zu(),{style:p={},...h}=o,{style:x={},onClick:g,...m}=r;return i()?b.createElement(s,{ref:l,className:"ReactTableDevtools"},b.createElement(Gr,{theme:ke},u?b.createElement(Xu,ta({ref:n},h,{table:t,isOpen:u,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...p}})):b.createElement("button",ta({type:"button"},m,{"aria-label":"Open React Table Devtools",onClick:I=>{d(!0),g&&g(I)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),b.createElement(Wr,{"aria-hidden":!0})))):null}var Xu=b.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:s,...l}=a;return b.createElement(Gr,{theme:ke},b.createElement(Vu,ta({ref:t,className:"ReactTableDevtoolsPanel"},l),b.createElement("style",{dangerouslySetInnerHTML:{__html:`
1
+ import"../chunk-IAKOOX7B.js";import{D as ca}from"../chunk-OGMDOPWW.js";import{B as zt,aa as Vt,c as pe,q as Et,r as Ht,t as Ut}from"../chunk-RFCV76TR.js";import{a as Js,b as Te}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Ci,motion as Vs}from"motion/react";var Q={};Js(Q,{keyMap:()=>Gt,urlKeys:()=>Ys,useQueryState:()=>$,useQueryStates:()=>Ia});Te(Q,Pi);import{useQueryState as $s,useQueryStates as js}from"nuqs";import*as Pi from"nuqs";function Gt(e){return e}function Ys(e){return e}var vi=Symbol("BRAND_SYMBOL");function $(e,a){return $s(e,a)}function Ia(e,a){return js(e,a)}import{clsx as Al}from"clsx";var Kt="-",el=e=>{let a=tl(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{let n=l.split(Kt);return n[0]===""&&n.length!==1&&n.shift(),Fo(n,a)||al(l)},getConflictingClassGroupIds:(l,n)=>{let u=t[l]||[];return n&&o[l]?[...u,...o[l]]:u}}},Fo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Fo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let s=e.join(Kt);return a.validators.find(({validator:l})=>l(s))?.classGroupId},Mo=/^\[(.+)\]$/,al=e=>{if(Mo.test(e)){let a=Mo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},tl=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return rl(Object.entries(e.classGroups),t).forEach(([s,l])=>{_t(l,o,s,a)}),o},_t=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let s=r===""?a:To(a,r);s.classGroupId=t;return}if(typeof r=="function"){if(ol(r)){_t(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([s,l])=>{_t(l,To(a,s),t,o)})})},To=(e,a)=>{let t=e;return a.split(Kt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ol=e=>e.isThemeGetter,rl=(e,a)=>a?e.map(([t,o])=>{let r=o.map(s=>typeof s=="string"?a+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([l,n])=>[a+l,n])):s);return[t,r]}):e,sl=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(s,l)=>{t.set(s,l),a++,a>e&&(a=0,o=t,t=new Map)};return{get(s){let l=t.get(s);if(l!==void 0)return l;if((l=o.get(s))!==void 0)return r(s,l),l},set(s,l){t.has(s)?t.set(s,l):r(s,l)}}},Bo="!",ll=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],s=a.length,l=n=>{let u=[],d=0,i=0,p;for(let I=0;I<n.length;I++){let L=n[I];if(d===0){if(L===r&&(o||n.slice(I,I+s)===a)){u.push(n.slice(i,I)),i=I+s;continue}if(L==="/"){p=I;continue}}L==="["?d++:L==="]"&&d--}let h=u.length===0?n:n.substring(i),x=h.startsWith(Bo),g=x?h.substring(1):h,m=p&&p>i?p-i:void 0;return{modifiers:u,hasImportantModifier:x,baseClassName:g,maybePostfixModifierPosition:m}};return t?n=>t({className:n,parseClassName:l}):l},nl=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},ul=e=>({cache:sl(e.cacheSize),parseClassName:ll(e),...el(e)}),dl=/\s+/,il=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,s=[],l=e.trim().split(dl),n="";for(let u=l.length-1;u>=0;u-=1){let d=l[u],{modifiers:i,hasImportantModifier:p,baseClassName:h,maybePostfixModifierPosition:x}=t(d),g=!!x,m=o(g?h.substring(0,x):h);if(!m){if(!g){n=d+(n.length>0?" "+n:n);continue}if(m=o(h),!m){n=d+(n.length>0?" "+n:n);continue}g=!1}let I=nl(i).join(":"),L=p?I+Bo:I,w=L+m;if(s.includes(w))continue;s.push(w);let A=r(m,g);for(let v=0;v<A.length;++v){let E=A[v];s.push(L+E)}n=d+(n.length>0?" "+n:n)}return n};function fl(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=No(a))&&(o&&(o+=" "),o+=t);return o}var No=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=No(e[o]))&&(t&&(t+=" "),t+=a);return t};function Do(e,...a){let t,o,r,s=l;function l(u){let d=a.reduce((i,p)=>p(i),e());return t=ul(d),o=t.cache.get,r=t.cache.set,s=n,n(u)}function n(u){let d=o(u);if(d)return d;let i=il(u,t);return r(u,i),i}return function(){return s(fl.apply(null,arguments))}}var z=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Oo=/^\[(?:([a-z-]+):)?(.+)\]$/i,cl=/^\d+\/\d+$/,pl=new Set(["px","full","screen"]),ml=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,gl=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,xl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,hl=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ll=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,De=e=>pa(e)||pl.has(e)||cl.test(e),_e=e=>ma(e,"length",Pl),pa=e=>!!e&&!Number.isNaN(Number(e)),Wt=e=>ma(e,"number",pa),Sa=e=>!!e&&Number.isInteger(Number(e)),Cl=e=>e.endsWith("%")&&pa(e.slice(0,-1)),k=e=>Oo.test(e),Ke=e=>ml.test(e),Il=new Set(["length","size","percentage"]),Sl=e=>ma(e,Il,qo),bl=e=>ma(e,"position",qo),yl=new Set(["image","url"]),vl=e=>ma(e,yl,Rl),wl=e=>ma(e,"",kl),ba=()=>!0,ma=(e,a,t)=>{let o=Oo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Pl=e=>gl.test(e)&&!xl.test(e),qo=()=>!1,kl=e=>hl.test(e),Rl=e=>Ll.test(e);var Ao=()=>{let e=z("colors"),a=z("spacing"),t=z("blur"),o=z("brightness"),r=z("borderColor"),s=z("borderRadius"),l=z("borderSpacing"),n=z("borderWidth"),u=z("contrast"),d=z("grayscale"),i=z("hueRotate"),p=z("invert"),h=z("gap"),x=z("gradientColorStops"),g=z("gradientColorStopPositions"),m=z("inset"),I=z("margin"),L=z("opacity"),w=z("padding"),A=z("saturate"),v=z("scale"),E=z("sepia"),R=z("skew"),B=z("space"),X=z("translate"),H=()=>["auto","contain","none"],U=()=>["auto","hidden","clip","visible","scroll"],se=()=>["auto",k,a],F=()=>[k,a],Ve=()=>["",De,_e],Ge=()=>["auto",pa,k],ia=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],We=()=>["solid","dashed","dotted","double","none"],fa=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],N=()=>["start","end","center","between","around","evenly","stretch"],J=()=>["","0",k],le=()=>["auto","avoid","all","avoid-page","page","left","right","column"],ae=()=>[pa,k];return{cacheSize:500,separator:":",theme:{colors:[ba],spacing:[De,_e],blur:["none","",Ke,k],brightness:ae(),borderColor:[e],borderRadius:["none","","full",Ke,k],borderSpacing:F(),borderWidth:Ve(),contrast:ae(),grayscale:J(),hueRotate:ae(),invert:J(),gap:F(),gradientColorStops:[e],gradientColorStopPositions:[Cl,_e],inset:se(),margin:se(),opacity:ae(),padding:F(),saturate:ae(),scale:ae(),sepia:J(),skew:ae(),space:F(),translate:F()},classGroups:{aspect:[{aspect:["auto","square","video",k]}],container:["container"],columns:[{columns:[Ke]}],"break-after":[{"break-after":le()}],"break-before":[{"break-before":le()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ia(),k]}],overflow:[{overflow:U()}],"overflow-x":[{"overflow-x":U()}],"overflow-y":[{"overflow-y":U()}],overscroll:[{overscroll:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Sa,k]}],basis:[{basis:se()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",k]}],grow:[{grow:J()}],shrink:[{shrink:J()}],order:[{order:["first","last","none",Sa,k]}],"grid-cols":[{"grid-cols":[ba]}],"col-start-end":[{col:["auto",{span:["full",Sa,k]},k]}],"col-start":[{"col-start":Ge()}],"col-end":[{"col-end":Ge()}],"grid-rows":[{"grid-rows":[ba]}],"row-start-end":[{row:["auto",{span:[Sa,k]},k]}],"row-start":[{"row-start":Ge()}],"row-end":[{"row-end":Ge()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",k]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",k]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...N()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...N(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...N(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[I]}],mx:[{mx:[I]}],my:[{my:[I]}],ms:[{ms:[I]}],me:[{me:[I]}],mt:[{mt:[I]}],mr:[{mr:[I]}],mb:[{mb:[I]}],ml:[{ml:[I]}],"space-x":[{"space-x":[B]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[B]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",k,a]}],"min-w":[{"min-w":[k,a,"min","max","fit"]}],"max-w":[{"max-w":[k,a,"none","full","min","max","fit","prose",{screen:[Ke]},Ke]}],h:[{h:[k,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[k,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[k,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[k,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ke,_e]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Wt]}],"font-family":[{font:[ba]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",k]}],"line-clamp":[{"line-clamp":["none",pa,Wt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",De,k]}],"list-image":[{"list-image":["none",k]}],"list-style-type":[{list:["none","disc","decimal",k]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[L]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...We(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",De,_e]}],"underline-offset":[{"underline-offset":["auto",De,k]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",k]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",k]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[L]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ia(),bl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Sl]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},vl]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[g]}],"gradient-via-pos":[{via:[g]}],"gradient-to-pos":[{to:[g]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[n]}],"border-w-x":[{"border-x":[n]}],"border-w-y":[{"border-y":[n]}],"border-w-s":[{"border-s":[n]}],"border-w-e":[{"border-e":[n]}],"border-w-t":[{"border-t":[n]}],"border-w-r":[{"border-r":[n]}],"border-w-b":[{"border-b":[n]}],"border-w-l":[{"border-l":[n]}],"border-opacity":[{"border-opacity":[L]}],"border-style":[{border:[...We(),"hidden"]}],"divide-x":[{"divide-x":[n]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[n]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[L]}],"divide-style":[{divide:We()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...We()]}],"outline-offset":[{"outline-offset":[De,k]}],"outline-w":[{outline:[De,_e]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ve()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[L]}],"ring-offset-w":[{"ring-offset":[De,_e]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ke,wl]}],"shadow-color":[{shadow:[ba]}],opacity:[{opacity:[L]}],"mix-blend":[{"mix-blend":[...fa(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":fa()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[u]}],"drop-shadow":[{"drop-shadow":["","none",Ke,k]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[p]}],saturate:[{saturate:[A]}],sepia:[{sepia:[E]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[u]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[L]}],"backdrop-saturate":[{"backdrop-saturate":[A]}],"backdrop-sepia":[{"backdrop-sepia":[E]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",k]}],duration:[{duration:ae()}],ease:[{ease:["linear","in","out","in-out",k]}],delay:[{delay:ae()}],animate:[{animate:["none","spin","ping","pulse","bounce",k]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[v]}],"scale-x":[{"scale-x":[v]}],"scale-y":[{"scale-y":[v]}],rotate:[{rotate:[Sa,k]}],"translate-x":[{"translate-x":[X]}],"translate-y":[{"translate-y":[X]}],"skew-x":[{"skew-x":[R]}],"skew-y":[{"skew-y":[R]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",k]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",k]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":F()}],"scroll-mx":[{"scroll-mx":F()}],"scroll-my":[{"scroll-my":F()}],"scroll-ms":[{"scroll-ms":F()}],"scroll-me":[{"scroll-me":F()}],"scroll-mt":[{"scroll-mt":F()}],"scroll-mr":[{"scroll-mr":F()}],"scroll-mb":[{"scroll-mb":F()}],"scroll-ml":[{"scroll-ml":F()}],"scroll-p":[{"scroll-p":F()}],"scroll-px":[{"scroll-px":F()}],"scroll-py":[{"scroll-py":F()}],"scroll-ps":[{"scroll-ps":F()}],"scroll-pe":[{"scroll-pe":F()}],"scroll-pt":[{"scroll-pt":F()}],"scroll-pr":[{"scroll-pr":F()}],"scroll-pb":[{"scroll-pb":F()}],"scroll-pl":[{"scroll-pl":F()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",k]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[De,_e,Wt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ml=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:s={},override:l={}})=>{ya(e,"cacheSize",a),ya(e,"prefix",t),ya(e,"separator",o),ya(e,"experimentalParseClassName",r);for(let n in l)Tl(e[n],l[n]);for(let n in s)Dl(e[n],s[n]);return e},ya=(e,a,t)=>{t!==void 0&&(e[a]=t)},Tl=(e,a)=>{if(a)for(let t in a)ya(e,t,a[t])},Dl=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},Eo=(e,...a)=>typeof e=="function"?Do(Ao,e,...a):Do(()=>Ml(Ao(),e),...a);var Fl=Eo({prefix:"ps-"});function c(...e){return Fl(Al(e))}import{useIsMutating as Kd}from"@tanstack/react-query";import{forwardRef as Nl,createElement as Ol}from"react";var Ho=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),dt=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Bl,createElement as zo}from"react";var Uo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Vo=Bl(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:s,iconNode:l,...n},u)=>zo("svg",{ref:u,...Uo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:dt("lucide",r),...n},[...l.map(([d,i])=>zo(d,i)),...Array.isArray(s)?s:[s]]));var y=(e,a)=>{let t=Nl(({className:o,...r},s)=>Ol(Vo,{ref:s,iconNode:a,className:dt(`lucide-${Ho(e)}`,o),...r}));return t.displayName=`${e}`,t};var Xe=y("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var va=y("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var wa=y("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var he=y("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ve=y("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var Pa=y("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var Le=y("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ka=y("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var Ra=y("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var Ma=y("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Ae=y("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var Qe=y("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var sa=y("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var Ta=y("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Da=y("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var Aa=y("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Fa=y("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Ba=y("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var Na=y("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var Oa=y("Key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);var qa=y("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var Ea=y("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var Ha=y("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ua=y("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ze=y("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Je=y("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var za=y("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Va=y("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Ga=y("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var $e=y("SquareArrowRight",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]);var Wa=y("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var je=y("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as Xd}from"motion-plus/react";import{useEffect as Qd,useState as Zd}from"react";import{toast as Jd}from"sonner";import{cva as ql}from"class-variance-authority";import{jsx as El}from"react/jsx-runtime";var Xt=ql("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function it({className:e,variant:a,...t}){return El("div",{className:c(Xt({variant:a}),e),...t})}import{Slot as Hl}from"@radix-ui/react-slot";import{cva as Ul}from"class-variance-authority";import*as Go from"react";import{jsx as zl}from"react/jsx-runtime";var Qt=Ul("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),q=Go.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},s)=>zl(o?Hl:"button",{className:c(Qt({variant:a,size:t,className:e})),ref:s,...r}));q.displayName="Button";import*as we from"@radix-ui/react-popover";import*as _o from"react";import{jsx as Wo}from"react/jsx-runtime";var Ko=we.Root,Xo=we.Trigger;var Zt=_o.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Wo(we.Portal,{children:Wo(we.Content,{ref:r,align:a,sideOffset:t,className:c("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Zt.displayName=we.Content.displayName;import*as Be from"react";import{jsx as Fe}from"react/jsx-runtime";var Jt=Be.forwardRef(({className:e,...a},t)=>Fe("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Fe("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Jt.displayName="Table";var $t=Be.forwardRef(({className:e,...a},t)=>Fe("thead",{ref:t,className:c(e),...a}));$t.displayName="TableHeader";var jt=Be.forwardRef(({className:e,...a},t)=>Fe("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));jt.displayName="TableBody";var Vl=Be.forwardRef(({className:e,...a},t)=>Fe("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Vl.displayName="TableFooter";var la=Be.forwardRef(({className:e,...a},t)=>Fe("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));la.displayName="TableRow";var _a=Be.forwardRef(({className:e,...a},t)=>Fe("th",{ref:t,className:c("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));_a.displayName="TableHead";var Ka=Be.forwardRef(({className:e,...a},t)=>Fe("td",{ref:t,className:c("ps-align-middle",e),...a}));Ka.displayName="TableCell";var Gl=Be.forwardRef(({className:e,...a},t)=>Fe("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Gl.displayName="TableCaption";import{useMutation as gn,useQueryClient as xn}from"@tanstack/react-query";import{QueryClient as ln,QueryClientProvider as nn}from"@tanstack/react-query";import*as Ce from"react";import{onlineManager as Wl,useQueryClient as _l}from"@tanstack/react-query";var Qo=class{#a;#d;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#n;#u;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:n,errorTypes:u,styleNonce:d,shadowDOMTarget:i}=e;this.#a=pe(a),this.#i=t,this.#f=o,this.#d=r,this.#c=d,this.#t=i,this.#o=pe(s),this.#r=pe(l),this.#s=pe(n),this.#l=pe(u)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=zt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[n]=this.#a,u;return this.#n?u=this.#n:(u=Ut(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#n=u),Vt(this.#c,this.#t),Et(u,Ht({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#d},get shadowDOMTarget(){return t.#t}},{get client(){return n()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()}}))},e);this.#e=!0,this.#u=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#u?.(),this.#e=!1}},Zo=class{#a;#d;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#n;#u;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:s,position:l,initialIsOpen:n,errorTypes:u,styleNonce:d,shadowDOMTarget:i,onClose:p}=e;this.#a=pe(a),this.#i=t,this.#f=o,this.#d=r,this.#c=d,this.#t=i,this.#o=pe(s),this.#r=pe(l),this.#s=pe(n),this.#l=pe(u),this.#n=pe(p)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#n[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=zt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[n]=this.#a,[u]=this.#n,d;return this.#u?d=this.#u:(d=Ut(()=>import("../OKF6E45R-3IGVLQES.js")),this.#u=d),Vt(this.#c,this.#t),Et(d,Ht({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#d},get shadowDOMTarget(){return t.#t}},{get client(){return n()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return s()},get errorTypes(){return l()},get onClose(){return u()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as Kl}from"react/jsx-runtime";function Jo(e){let a=_l(e.client),t=Ce.useRef(null),{buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:n,shadowDOMTarget:u}=e,[d]=Ce.useState(new Qo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Wl,buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:n,shadowDOMTarget:u}));return Ce.useEffect(()=>{d.setClient(a)},[a,d]),Ce.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),Ce.useEffect(()=>{r&&d.setPosition(r)},[r,d]),Ce.useEffect(()=>{d.setInitialIsOpen(s||!1)},[s,d]),Ce.useEffect(()=>{d.setErrorTypes(l||[])},[l,d]),Ce.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),Kl("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Ne from"react";import{onlineManager as Ql,useQueryClient as Zl}from"@tanstack/react-query";import{jsx as Jl}from"react/jsx-runtime";function $o(e){let a=Zl(e.client),t=Ne.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:s}=e,[l]=Ne.useState(new Zo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Ql,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:s,onClose:e.onClose}));return Ne.useEffect(()=>{l.setClient(a)},[a,l]),Ne.useEffect(()=>{l.setOnClose(e.onClose??(()=>{}))},[e.onClose,l]),Ne.useEffect(()=>{l.setErrorTypes(o||[])},[o,l]),Ne.useEffect(()=>(t.current&&l.mount(t.current),()=>{l.unmount()}),[l]),Jl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var jo=process.env.NODE_ENV!=="development"?function(){return null}:Jo,Qp=process.env.NODE_ENV!=="development"?function(){return null}:$o;import{createContext as un,useContext as dn,useMemo as fn,useState as ct}from"react";import{toast as cn}from"sonner";import{Toaster as jl}from"sonner";import{jsx as Yl}from"react/jsx-runtime";var Yo=({...e})=>Yl(jl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as en}from"nuqs/adapters/custom";import{useEffect as an,useState as tn}from"react";function on(){let e=typeof window<"u"?window.location.hash.slice(1):"",[a,t]=tn(new URLSearchParams(e));function o(s,{history:l}){let{pathname:n,search:u}=window.location,d=s.toString(),i=`${n}${u}#${d}`;l==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(s)}function r(){if(typeof window>"u")return new URLSearchParams;let s=window.location.hash.slice(1);return new URLSearchParams(s)}return an(()=>{function s(){let l=window.location.hash.slice(1);t(new URLSearchParams(l))}return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var er=en(on);import{useEffect as sn}from"react";import{useQuery as rn}from"@tanstack/react-query";var ft=-1;function Pe(){let{adapter:e}=V();return rn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:ft,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===ft?0:1/0})}function ar(){let[e,a]=$("table"),[t,o]=$("schema"),[r,s]=$("view"),{data:l,isLoading:n}=Pe();return sn(()=>{if(n||!l?.schemas)return;let u=window.location.hash.slice(1),d=new URLSearchParams(u),i=d.has("table"),p=d.has("schema"),h=d.has("view");if(!i&&!p&&!h){let x=Object.keys(l.schemas)[0];if(x){let g=l.schemas[x]?.tables[0];g&&(a(g.name),o(x),s("table"))}}else i&&p&&!h&&s("table")},[n,l,a,o,s]),null}import{jsx as pt,jsxs as tr}from"react/jsx-runtime";var pn=new ln,or=un(void 0);function rr(e){let{children:a,...t}=e,[o,r]=ct(null),[s,l]=ct(e.adapter.defaultSchema||"public"),[n,u]=ct(!1),[d,i]=ct(!0),p=e.onError;p??=m=>cn.error(m.message);let h=fn(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),x=()=>u(m=>!m),g=()=>i(m=>!m);return tr(nn,{client:pn,children:[pt(jo,{}),pt(Yo,{}),pt(er,{children:tr(or.Provider,{value:{...t,activeTable:o,activeSchema:s,isFullscreen:n,setActiveTable:r,setActiveSchema:l,onError:p,emitTelemetryEvent:h,toggleFullscreen:x,isNavigationOpen:d,toggleNavigation:g},children:[pt(ar,{}),a]})})]})}function V(){let e=dn(or);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function mn(e,a){let t={filter:ca(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function sr(e,a){return{...e,__ps_rowid:mn(e,a)}}function mt(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:sr(t,a)}:o!==void 0?{...e,rows:o.map(r=>sr(r,a))}:e}function lr(){let{activeTable:e,adapter:a}=V(),t=xn(),{schema:o=null,name:r=null}=e??{};return gn({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(s){let[l,n]=await a.insert({rows:s,table:e},{});if(l)throw l;return mt(n,e)},onSuccess(s){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},l=>l==null?l:{...l,rows:[...s.rows,...l.rows]})},retry:!1})}import{useQuery as hn}from"@tanstack/react-query";function nr(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:s,adapter:l}=V();return hn({enabled:!!s,gcTime:0,placeholderData(n,u){let[,d,,i]=u?.queryKey||[];if(!(d!==s?.schema||i!==s?.name))return n},async queryFn({signal:n}){let[u,d]=await l.query({pageIndex:a,pageSize:t,sortOrder:o,table:s,filter:r},{abortSignal:n});if(u)throw u;return mt(d,s)},queryKey:["schema",s?.schema||null,"table",s?.name||null,"query","sortOrder",o.map(n=>`${n.column}:${n.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as Ln,useQueryClient as Cn}from"@tanstack/react-query";function ur(){let{activeTable:e,adapter:a,onError:t}=V(),o=Cn(),r=["schema",e?.schema??null,"table",e?.name??null];return Ln({mutationFn:async s=>{let[l,n]=await a.update(s.details,s.options);if(l)throw l;return n},mutationKey:[...r,"update"],onError(s,l){let{changes:n,row:u}=l.details;t(s),Yt({getFinderFn(){let d={...u,...n},i=ca(d,e.columns);return p=>i.every(([h,x])=>p[h]===x)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(n).reduce((p,h)=>({...p,[h]:u[h]}),{})}}})},onMutate(s){let{details:l}=s;Yt({getFinderFn(){let{row:n}=l,u=ca(n,e.columns);return d=>u.every(([i,p])=>d[i]===p)},queryClient:o,table:e,updaterFn:function(u){return{...u,...l.changes}}})},onSuccess(s,l){Yt({getFinderFn(){let{changes:n,row:u}=l.details,d={...u,...n},i=ca(d,e.columns);return p=>i.every(([h,x])=>p[h]===x)},queryClient:o,table:e,updaterFn:function(u){let{__ps_updated_at__:d}=u,{row:i}=s;return d!=null&&i.__ps_updated_at__<=d?u:{...u,...i}}})},retry:!1})}function Yt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,s;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},l=>{let{rows:n=[]}=l||{};if(n.length===0)return l;let u=n.findIndex(s??=a());if(u===-1)return l;let d=r(n[u]);return{...l,rows:[...n.slice(0,u),d,...n.slice(u+1)]}})}import{useEffect as In,useMemo as dr,useState as Sn}from"react";import bn from"short-uuid";var yn={kind:"FilterGroup",filters:[],after:"and",id:bn.generate()},ir=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=ir(t));return a};function gt(){let[e,a]=$("filter",{defaultValue:JSON.stringify(yn)}),t=dr(()=>JSON.parse(e),[e]),o=n=>void a(JSON.stringify(n)),[r,s]=Sn(t);In(()=>{s(t)},[t]);let l=dr(()=>ir(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:s,totalEditingFilters:l}}import{useIsMutating as vn}from"@tanstack/react-query";function xt(){return vn({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as wn}from"react";var Pn=25,kn={pageIndex:Q.parseAsIndex.withDefault(0),pageSize:Q.parseAsInteger.withDefault(Pn)};function ht(){let[{pageIndex:e,pageSize:a},t]=Ia(kn),o=wn(r=>{t(typeof r=="function"?s=>{let l=r(s);return{pageIndex:l.pageIndex,pageSize:l.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Tn,useState as Dn}from"react";import{useMutation as Rn,useQueryClient as Mn}from"@tanstack/react-query";function fr(){let{activeTable:e,adapter:a}=V(),t=Mn(),{schema:o=null,name:r=null}=e??{};return Rn({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(s){let[l,n]=await a.delete({rows:s,table:e},{});if(l)throw l;return n},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function cr(e){let{activeTable:a,onError:t}=V(),{paginationState:o}=ht(),[r,s]=Dn({}),l=Object.keys(r).length!==0,{mutate:n}=fr();Tn(()=>s({}),[a,o.pageIndex]);function u(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);n(d??[],{onSuccess(){s({})},onError:t})}return{deleteSelection:u,setRowSelectionState:s,rowSelectionState:r,isSelecting:l}}import{useEffect as An,useState as Fn}from"react";function pr(){let[e,a]=$("sort",{defaultValue:""}),t=l=>{if(!l)return[];try{return l.split(",").map(n=>{let[u,d]=n.split(":");return!u||!d||!["asc","desc"].includes(d)?null:{column:u,direction:d}}).filter(Boolean)}catch(n){return console.error("Failed to parse sorting parameter:",n),[]}},[o,r]=Fn(()=>t(e));return An(()=>{let l=t(e);r(l)},[e]),{sortingState:o,setSortingState:l=>{let n=typeof l=="function"?l(o):l;r(n);let u=n.length>0?n.map(d=>`${d.column}:${d.direction}`).join(","):null;a(u)}}}import{isValidElement as zn}from"react";import*as M from"@radix-ui/react-context-menu";import*as Oe from"react";import{jsx as ue,jsxs as to}from"react/jsx-runtime";var mr=M.Root,gr=M.Trigger;var Bn=Oe.forwardRef(({className:e,inset:a,children:t,...o},r)=>to(M.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,ue(Le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Bn.displayName=M.SubTrigger.displayName;var Nn=Oe.forwardRef(({className:e,...a},t)=>ue(M.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Nn.displayName=M.SubContent.displayName;var eo=Oe.forwardRef(({className:e,...a},t)=>ue(M.Portal,{children:ue(M.Content,{ref:t,className:c("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));eo.displayName=M.Content.displayName;var ao=Oe.forwardRef(({className:e,inset:a,...t},o)=>ue(M.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));ao.displayName=M.Item.displayName;var On=Oe.forwardRef(({className:e,children:a,checked:t,...o},r)=>to(M.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(he,{className:"ps-h-4 ps-w-4"})})}),a]}));On.displayName=M.CheckboxItem.displayName;var qn=Oe.forwardRef(({className:e,children:a,...t},o)=>to(M.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(sa,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));qn.displayName=M.RadioItem.displayName;var En=Oe.forwardRef(({className:e,inset:a,...t},o)=>ue(M.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));En.displayName=M.Label.displayName;var Hn=Oe.forwardRef(({className:e,...a},t)=>ue(M.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Hn.displayName=M.Separator.displayName;var Un=({className:e,...a})=>ue("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});Un.displayName="ContextMenuShortcut";import{jsx as oo,jsxs as xr}from"react/jsx-runtime";function hr(e){let{children:a}=e;return xr(mr,{children:[oo(gr,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),oo(eo,{children:xr(ao,{onClick:()=>{let t=ro(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[oo(Ta,{size:12}),"Copy"]})})]})}function ro(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(zn(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?ro(a.children):""}return Array.isArray(e)?e.map(ro).join(""):""}import{jsx as Lr}from"react/jsx-runtime";function Lt(e){let{children:a,className:t,ref:o,style:r,...s}=e;return Lr(Ka,{...s,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:Lr(hr,{children:a})})}import{isObjectType as ou}from"remeda";import{jsx as Vn}from"react/jsx-runtime";var so=e=>{let{value:a}=e;return Vn("div",{"data-cell-type":"boolean",children:String(!!a)})};so.displayName="BooleanCell";import{Fragment as Gn,jsx as Wn}from"react/jsx-runtime";function Cr(e){let{value:a}=e;return Wn(Gn,{children:String(a)})}import{Fragment as _n,jsx as Kn}from"react/jsx-runtime";function Ct(e){return Kn(_n,{})}import{Fragment as Xn,jsx as Qn}from"react/jsx-runtime";function Ir(e){let{value:a}=e;return Qn(Xn,{children:String(a)})}import{Fragment as Zn,jsx as Jn}from"react/jsx-runtime";function lo(e){let{value:a}=e;return Jn(Zn,{children:JSON.stringify(a,null,2)})}import{jsx as $n}from"react/jsx-runtime";function Sr(e){return $n("code",{className:"ps-text-muted-foreground/60",children:"NULL"})}import{jsx as jn}from"react/jsx-runtime";function br(e){let{value:a}=e;return jn("div",{"data-cell-type":"numeric",children:a===null?"NULL":String(a)})}import{Fragment as Yn,jsx as eu}from"react/jsx-runtime";function no(e){let{value:a}=e;return eu(Yn,{children:String(a)})}import{Fragment as au,jsx as tu}from"react/jsx-runtime";function yr(e){let{value:a}=e;return tu(au,{children:String(a)})}import{jsx as Ie}from"react/jsx-runtime";function It({cell:e,column:a}){let t=e.getValue();if(t===void 0)return Ie(Ct,{});if(t===null)return Ie(Sr,{});let{group:o,isArray:r}=a.datatype;if(o==="json"||r)return Ie(lo,{value:t});if(o==="string")return Ie(no,{value:t});if(o==="enum")return Ie(Ir,{value:t});if(o==="boolean")return Ie(so,{value:t});if(o==="datetime")return Ie(Cr,{value:t});if(o==="time")return Ie(yr,{value:t});if(o==="numeric")return Ie(br,{value:t});if(o==="raw")return ou(t)?Ie(lo,{value:t}):Ie(no,{value:t});throw new Error(`Datatype group "${o}" was not handled in '/cell/get-cell.tsx'`)}import*as Xa from"@radix-ui/react-checkbox";import*as vr from"react";import{jsx as uo}from"react/jsx-runtime";var Qa=vr.forwardRef(({className:e,...a},t)=>uo(Xa.Root,{ref:t,className:c("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:uo(Xa.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:uo(he,{className:"ps-h-4 ps-w-4"})})}));Qa.displayName=Xa.Root.displayName;import{jsx as ru}from"react/jsx-runtime";function wr(e){let{table:a,readonly:t}=e;return ru(Qa,{checked:a.getIsAllRowsSelected(),onCheckedChange:o=>a.toggleAllRowsSelected(!!o),disabled:t})}import{jsx as su}from"react/jsx-runtime";function Pr(e){let{row:a,readonly:t}=e;return su(Qa,{checked:a.getIsSelected(),disabled:!a.getCanSelect()||t,onCheckedChange:a.getToggleSelectedHandler()})}import*as qe from"@radix-ui/react-popover";import*as oe from"react";import{jsx as Za}from"react/jsx-runtime";var kr=oe.createContext(null),io=({children:e,...a})=>{let[t,o]=oe.useState(!1);return Za(kr.Provider,{value:{open:t,setOpen:o},children:Za(qe.Root,{open:t,onOpenChange:o,...a,children:e})})};io.displayName="PopoverCell";var fo=oe.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let s=oe.useRef(null);return Za(qe.Trigger,{ref:l=>{typeof r=="function"?r(l):r&&(r.current=l),s.current=l},className:c("w-full h-full cursor-pointer",t),...o,children:e})});fo.displayName="PopoverCellTrigger";var co=oe.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Za(qe.Portal,{children:Za(qe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:s=>s.preventDefault(),...o})}));co.displayName=qe.Content.displayName;function de(e){let a=oe.useContext(kr),t=oe.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=oe.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return oe.useEffect(()=>{let r=s=>{(s.key==="Enter"||s.key==="Return")&&!s.shiftKey?t():s.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as St,jsxs as Rr}from"react/jsx-runtime";function bt(e){let{cellComponent:a,inputComponent:t,linkComponent:o,containerProps:r}=e;return Rr(io,{children:[St(fo,{asChild:!0,children:St(Lt,{...r,children:Rr("div",{className:"ps-flex ps-flex-row ps-w-full ps-gap-2 ps-justify-between ps-items-center",children:[St("div",{children:a}),o]})})}),St(co,{align:"start",alignOffset:-1,className:c("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-max"),sideOffset:-40,children:t})]})}import{closestCenter as xu,DndContext as hu,DragOverlay as Lu,KeyboardSensor as Cu,PointerSensor as Iu,useSensor as Br,useSensors as Su}from"@dnd-kit/core";import{arrayMove as bu,SortableContext as yu,sortableKeyboardCoordinates as vu,useSortable as wu,verticalListSortingStrategy as Pu}from"@dnd-kit/sortable";import{CSS as ku}from"@dnd-kit/utilities";import{motion as mo}from"motion/react";import{AnimateNumber as Ru}from"motion-plus/react";import{useMemo as Mu,useState as go}from"react";import{Fragment as Tu}from"react/jsx-runtime";import{createPortal as Du}from"react-dom";import Nr from"short-uuid";function Mr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function Tr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as T from"@radix-ui/react-dropdown-menu";import*as Ee from"react";import{jsx as ie,jsxs as po}from"react/jsx-runtime";var yt=T.Root,vt=T.Trigger;var lu=Ee.forwardRef(({className:e,inset:a,children:t,...o},r)=>po(T.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,ie(Le,{className:"ps-ml-auto"})]}));lu.displayName=T.SubTrigger.displayName;var nu=Ee.forwardRef(({className:e,...a},t)=>ie(T.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));nu.displayName=T.SubContent.displayName;var Ja=Ee.forwardRef(({className:e,sideOffset:a=4,...t},o)=>ie(T.Portal,{children:ie(T.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Ja.displayName=T.Content.displayName;var wt=Ee.forwardRef(({className:e,inset:a,...t},o)=>ie(T.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));wt.displayName=T.Item.displayName;var uu=Ee.forwardRef(({className:e,children:a,checked:t,...o},r)=>po(T.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[ie("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ie(T.ItemIndicator,{children:ie(he,{className:"ps-h-4 ps-w-4"})})}),a]}));uu.displayName=T.CheckboxItem.displayName;var du=Ee.forwardRef(({className:e,children:a,...t},o)=>po(T.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[ie("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ie(T.ItemIndicator,{children:ie(sa,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));du.displayName=T.RadioItem.displayName;var iu=Ee.forwardRef(({className:e,inset:a,...t},o)=>ie(T.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));iu.displayName=T.Label.displayName;var fu=Ee.forwardRef(({className:e,...a},t)=>ie(T.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));fu.displayName=T.Separator.displayName;var cu=({className:e,...a})=>ie("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});cu.displayName="DropdownMenuShortcut";import*as Dr from"react";import{jsx as pu}from"react/jsx-runtime";var ne=Dr.forwardRef(({className:e,type:a,...t},o)=>pu("input",{type:a,className:c("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as D from"@radix-ui/react-select";import*as Ye from"react";import{jsx as re,jsxs as $a}from"react/jsx-runtime";var ea=D.Root;var aa=D.Value,He=Ye.forwardRef(({className:e,children:a,label:t,...o},r)=>$a(D.Trigger,{ref:r,className:c("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...o,children:[$a("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&$a("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),re(D.Icon,{asChild:!0,children:re(ve,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));He.displayName=D.Trigger.displayName;var Ar=Ye.forwardRef(({className:e,...a},t)=>re(D.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:re(ka,{className:"ps-h-4 ps-w-4"})}));Ar.displayName=D.ScrollUpButton.displayName;var Fr=Ye.forwardRef(({className:e,...a},t)=>re(D.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:re(ve,{className:"ps-h-4 ps-w-4"})}));Fr.displayName=D.ScrollDownButton.displayName;var Ue=Ye.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>re(D.Portal,{children:$a(D.Content,{ref:r,className:c("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[re(Ar,{}),re(D.Viewport,{className:c("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),re(Fr,{})]})}));Ue.displayName=D.Content.displayName;var mu=Ye.forwardRef(({className:e,...a},t)=>re(D.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));mu.displayName=D.Label.displayName;var G=Ye.forwardRef(({className:e,children:a,...t},o)=>$a(D.Item,{ref:o,className:c("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[re("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:re(D.ItemIndicator,{children:re(he,{className:"ps-h-4 ps-w-4"})})}),re(D.ItemText,{children:a})]}));G.displayName=D.Item.displayName;var gu=Ye.forwardRef(({className:e,...a},t)=>re(D.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));gu.displayName=D.Separator.displayName;import{Fragment as Nu,jsx as S,jsxs as Z}from"react/jsx-runtime";var Or=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>Z(ea,{value:e,onValueChange:a,disabled:t,children:[S(He,{className:o,children:S(aa,{placeholder:"Logic"})}),Z(Ue,{children:[S(G,{value:"and",children:S("div",{className:"ps-font-semibold",children:"AND"})}),S(G,{value:"or",children:S("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Au=({activeId:e,items:a,table:t})=>{let o=a.find(n=>n.id===e);if(!o)return null;let r="and",s=!1,l=a.findIndex(n=>n.id===e);if(l>0){let n=a[l-1];n&&(r=n.after,s=!0)}return o.kind==="ColumnFilter"?S(qr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):S(xo,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Fu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:s,activeDragId:l,onDragStart:n,onDragEndSignal:u})=>{let d=Mu(()=>e.map(h=>h.id),[e]),i=Su(Br(Iu,{activationConstraint:{distance:8}}),Br(Cu,{coordinateGetter:vu}));return Z(hu,{sensors:i,collisionDetection:xu,onDragStart:n,onDragEnd:h=>{let{active:x,over:g}=h;if(g&&x.id!==g.id){let m=e.findIndex(L=>L.id===x.id),I=e.findIndex(L=>L.id===g.id);m!==-1&&I!==-1&&s(m,I)}u()},children:[S(yu,{items:d,strategy:Pu,children:e.map((h,x)=>{let g=!1,m,I,L=!1;if(x>0){g=!0;let w=e[x-1];m=w.after,I=A=>{let v={...w,after:A};o(x-1,v)},L=x-1===e.length-1}return S(Bu,{filter:h,onUpdate:w=>o(x,w),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:g,leadingOperatorValue:m,onLeadingOperatorChange:I,isLeadingOperatorTargetLast:L},h.id)})}),Du(S(Lu,{children:l?S("div",{className:"ps-opacity-80",children:S(Au,{activeId:l,items:e,table:t})}):null}),document.body)]})},Bu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})=>{let{attributes:d,listeners:i,setNodeRef:p,transform:h,transition:x,isDragging:g}=wu({id:e.id,data:{type:e.kind,parentId:o}}),m={transform:ku.Transform.toString(h),transition:x,opacity:g?.5:1};return S("div",{ref:p,style:m,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?S(qr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u}):S(xo,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})})},qr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:u})=>{let d=g=>{a({...e,column:g})},i=g=>{a({...e,operator:g})},p=g=>{let m=g.target.value,I=r.columns[e.column];if(I!==void 0){let L=Mr(I,e.operator,m);a({...e,value:L})}},[h,x]=go(Tr(r.columns[e.column],e.operator,e.value));return Z(mo.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[Z("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[S("div",{...o,className:"ps-cursor-grab",children:S(Fa,{className:"ps-text-gray-500",size:16})}),Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[s&&n?S(Or,{value:l,onValueChange:n,disabled:u}):null,Z(ea,{value:e.column,onValueChange:d,children:[S(He,{className:"ps-w-28 ps-text-xs ps-h-8",children:S(aa,{placeholder:"Select column"})}),S(Ue,{children:Object.keys(r.columns).map(g=>S(G,{value:g,children:g},g))})]}),Z(ea,{value:e.operator,onValueChange:g=>i(g),children:[S(He,{className:"ps-w-20 ps-text-xs ps-h-8",children:S(aa,{placeholder:"Operator"})}),Z(Ue,{children:[S(G,{value:"=",children:"="}),S(G,{value:"!=",children:"!="}),S(G,{value:">",children:">"}),S(G,{value:">=",children:">="}),S(G,{value:"<",children:"<"}),S(G,{value:"<=",children:"<="}),S(G,{value:"is",children:"is"}),S(G,{value:"is not",children:"is not"}),S(G,{value:"like",children:"like"}),S(G,{value:"not like",children:"not like"}),S(G,{value:"ilike",children:"ilike"}),S(G,{value:"not ilike",children:"not ilike"})]})]}),S(ne,{value:h,onChange:g=>{x(g.target.value),p(g)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),S("div",{className:"ps-flex ps-items-center ps-gap-2",children:S(q,{variant:"ghost",size:"xs",onClick:t,children:S(je,{size:14})})})]})},xo=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:s,showLeadingOperator:l,leadingOperatorValue:n,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let[i,p]=go(!0),[h,x]=go(null),g=()=>{let R={id:Nr.generate(),kind:"ColumnFilter",column:Object.keys(s.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,R]})},m=()=>{let R={id:Nr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,R]})},I=(R,B)=>{let X=[...e.filters];X[R]=B,a({...e,filters:X})},L=R=>{let B=[...e.filters];B.splice(R,1),a({...e,filters:B})},w=R=>{x(R.active.id)},A=()=>{x(null)},v=(R,B)=>{if(R===B)return;let X=bu(e.filters,R,B);a({...e,filters:X})},E=()=>i?!e.filters||e.filters.length===0?S("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):S(mo.div,{transition:{layout:{duration:.12}},children:S("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:S(Fu,{items:e.filters,parentGroupId:e.id,table:s,onUpdateItem:I,onDeleteItem:L,onReorderItems:v,activeDragId:h,onDragStart:w,onDragEndSignal:A})})}):null;return S(mo.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:Z("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[Z("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&S("div",{...o,className:"ps-cursor-grab",onClick:()=>p(!i),children:i?S(ve,{size:16}):S(Le,{size:16})}),l&&u&&!r&&S("div",{className:"ps-flex ps-items-center",children:S(Or,{value:n,onValueChange:u,disabled:d})}),Z(q,{variant:"outline",size:"sm",onClick:g,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&S(it,{className:"ps-transition-all",children:S(Ru,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),S(q,{variant:"outline",size:"sm",onClick:m,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),Z("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&Z(yt,{children:[S(vt,{asChild:!0,children:S(q,{variant:"ghost",size:"sm",children:S(Qe,{className:"ps-size-4"})})}),S(Ja,{align:"center",className:"ps-w-full",children:e.filters.length===0?S("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):S("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:S(Er,{filter:e})})})]}),!r&&S(q,{variant:"ghost",size:"xs",onClick:t,children:S(je,{size:14})})]})]}),S("div",{className:c(r?"":"ps-ml-6"),children:E()})]})})},Er=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let s,l=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!l&&(a+=1),a&&(l||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:n,operator:u}=o;s=Z(Nu,{children:[Z("span",{children:[" ",n," "]}),Z("span",{children:[" ",u," "]}),S("span",{children:" ? "})]})}else s=S(Er,{filter:o});return Z(Tu,{children:[a===1?S("span",{className:"ps-font-semibold",children:"("}):"",s,a===-1?S("span",{className:"ps-font-semibold",children:")"}):"",!l&&Z("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return S("span",{children:t})};function Hr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return Z("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[S(xo,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),S(q,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as Zu,MouseSensor as Ju,useSensor as $u,useSensors as ju}from"@dnd-kit/core";import{arrayMove as Yu,horizontalListSortingStrategy as ed,SortableContext as ad}from"@dnd-kit/sortable";import{getCoreRowModel as td,useReactTable as od}from"@tanstack/react-table";import*as ze from"react";import b from"react";function ta(){return ta=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},ta.apply(null,arguments)}var Ou=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function qu(e,a){let[t,o]=b.useState();b.useEffect(()=>{let s=Ou(e);o(typeof s>"u"||s===null?typeof a=="function"?a():a:s)},[a,e]);let r=b.useCallback(s=>{o(l=>{let n=s;typeof s=="function"&&(n=s(l));try{localStorage.setItem(e,JSON.stringify(n))}catch{}return n})},[e]);return[t,r]}var ke={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Vr=b.createContext(ke);function Gr(e){let{theme:a,...t}=e;return b.createElement(Vr.Provider,ta({value:a},t))}function Eu(){return b.useContext(Vr)}function Hu(e){let[a,t]=b.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return b.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=s=>{let{matches:l}=s;return t(l)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var Uu=typeof window>"u";function Se(e,a,t){return t===void 0&&(t={}),b.forwardRef((o,r)=>{let{style:s,...l}=o,n=Eu(),u=Object.entries(t).reduce((d,i)=>{let[p,h]=i;return Hu(p)?{...d,...typeof h=="function"?h(l,n):h}:d},{});return b.createElement(e,{...l,style:{...typeof a=="function"?a(l,n):a,...s,...u},ref:r})})}function zu(){let e=b.useRef(!1),a=b.useCallback(()=>e.current,[]);return b[Uu?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Vu=Se("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});Se("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var Gu=Se("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));Se("code",{fontSize:".9em"});Se("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));Se("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var Ur=Se("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),Pt=Se("span",{cursor:"pointer",color:"white"}),Wu=Se("span",(e,a)=>({color:a.danger})),ho=Se("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),_u=Se("span",{color:"grey",fontSize:".7rem"}),zr=e=>{let{expanded:a,style:t={},...o}=e;return b.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Ku=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:s,type:l,expanded:n,toggle:u,pageSize:d,renderer:i}=e,[p,h]=b.useState(void 0),[x,g]=b.useState([]),m=()=>{h(o())};return b.createElement(Ur,{key:t},s!=null&&s.length?b.createElement(b.Fragment,null,b.createElement(Pt,{onClick:()=>u()},b.createElement(zr,{expanded:n})," ",t," ",b.createElement(_u,null,String(l).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),n?s.length===1?b.createElement(ho,null,r.map(I=>a(I))):b.createElement(ho,null,s.map((I,L)=>b.createElement("div",{key:L},b.createElement(Ur,null,b.createElement(Pt,{onClick:()=>g(w=>w.includes(L)?w.filter(A=>A!==L):[...w,L])},b.createElement(zr,{expanded:n})," [",L*d," ..."," ",L*d+d-1,"]"),x.includes(L)?b.createElement(ho,null,I.map(w=>a(w))):null)))):null):l==="function"?b.createElement(b.Fragment,null,b.createElement(Re,{renderer:i,label:b.createElement("button",{onClick:m},b.createElement(Pt,null,t)," \u{1F504}"," "),value:p,defaultExpanded:{}})):b.createElement(b.Fragment,null,b.createElement(Pt,null,t,":")," ",b.createElement(Wu,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function Re(e){let{value:a,defaultExpanded:t,renderer:o=Ku,pageSize:r=100,depth:s=0,...l}=e,[n,u]=b.useState(t),d=m=>{u(I=>typeof m<"u"?m:!I)},i=[],p=typeof a,h,x=[],g=m=>{let I=i.concat(m.label),L=t===!0?{[m.label]:!0}:t?.[m.label];return{...m,subPath:m,path:I,depth:s+1,defaultExpanded:L}};if(Array.isArray(a)?(p="array",h=a.map((m,I)=>g({label:I,value:m}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(p="Iterable",h=Array.from(a,(m,I)=>g({label:I,value:m}))):typeof a=="function"?p="function":typeof a=="object"&&a!==null&&(p="object",h=Object.entries(a).map(m=>{let[I,L]=m;return g({label:I,value:L})})),h){let m=0;for(;m<h.length;)x.push(h.slice(m,m+r)),m=m+r}return o({handleEntry:m=>b.createElement(Re,ta({key:m.label,renderer:o},l,m)),type:p,subEntries:h,subEntryPages:x,depth:s,value:a,path:i,expanded:n,toggle:d,pageSize:r,...l})}function Wr(e){return ze.createElement("svg",ta({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),ze.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},ze.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},ze.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},ze.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},ze.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),ze.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),ze.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function _r(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:s="footer"}=e,l=b.useRef(null),n=b.useRef(null),[u,d]=qu("reactTableDevtoolsOpen",a),i=zu(),{style:p={},...h}=o,{style:x={},onClick:g,...m}=r;return i()?b.createElement(s,{ref:l,className:"ReactTableDevtools"},b.createElement(Gr,{theme:ke},u?b.createElement(Xu,ta({ref:n},h,{table:t,isOpen:u,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...p}})):b.createElement("button",ta({type:"button"},m,{"aria-label":"Open React Table Devtools",onClick:I=>{d(!0),g&&g(I)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),b.createElement(Wr,{"aria-hidden":!0})))):null}var Xu=b.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:s,...l}=a;return b.createElement(Gr,{theme:ke},b.createElement(Vu,ta({ref:t,className:"ReactTableDevtoolsPanel"},l),b.createElement("style",{dangerouslySetInnerHTML:{__html:`
2
2
  .ReactTableDevtoolsPanel * {
3
3
  scrollbar-color: ${ke.backgroundAlt} ${ke.gray};
4
4
  }
@@ -17,7 +17,7 @@ import"../chunk-IAKOOX7B.js";import{D as ca}from"../chunk-OGMDOPWW.js";import{B
17
17
  border-radius: .5em;
18
18
  border: 3px solid ${ke.backgroundAlt};
19
19
  }
20
- `}}),b.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${ke.grayAlt}`,display:"flex",flexDirection:"column"}},b.createElement("div",{style:{padding:".5em",background:ke.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},b.createElement(Wr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>s(!1)}),b.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",b.createElement("span",{style:{fontWeight:100}},"Devtools")),b.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?b.createElement(Gu,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{s(!1)}},"Close"):null)),b.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(Re,{label:"Instance",value:o,defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(Re,{label:"State",value:o.getState(),defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(Re,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(Re,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as rd,motion as sd}from"motion/react";import{useEffect as ld,useMemo as nd,useState as Lo}from"react";import{jsx as Qu}from"react/jsx-runtime";function ga({className:e,...a}){return Qu("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{jsx as Kr}from"react/jsx-runtime";function Xr({className:e}){return Kr("div",{"data-loading-bar":!0,className:c("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Kr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as fe,jsxs as kt}from"react/jsx-runtime";function Qr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return fe("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:fe("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?kt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[fe(q,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),fe(q,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):fe("div",{className:"ps-flex ps-items-center ps-space-x-2",children:kt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[fe(q,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:fe(Ra,{className:"ps-w-4 ps-h-4"})}),fe(q,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:fe(Pa,{className:"ps-w-4 ps-h-4"})}),kt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",fe(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:s=>{let l=s.target.value?Number(s.target.value)-1:0;a.setPageIndex(l)}}),kt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),fe(q,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:fe(Le,{className:"ps-w-4 ps-h-4"})}),fe(q,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:fe(Ma,{className:"ps-w-4 ps-h-4"})})]})})})})}function ja(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right";return{className:c(a==="cell"&&"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100",a==="header"&&"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head","ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",t&&"ps-sticky",(o||r)&&a==="header"&&"ps-z-20",(o||r)&&a==="cell"&&"ps-z-0"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0}}}import{Fragment as dd,jsx as j,jsxs as xa}from"react/jsx-runtime";function Jr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:n,pageCount:u,paginationState:d,rows:i,rowSelectionState:p,sortingState:h}=e,[x,g]=Lo([]),[m,I]=Lo({left:["__ps_select"],right:[]}),[L,w]=Lo({}),A=nd(()=>Zr(h),[h]),v=o||r;ld(()=>{g(a.map(({accessorKey:H})=>H)),I({left:["__ps_select"],right:[]}),w({})},[a]);function E({active:H,over:U}){U&&H.id!==U.id&&g(se=>{let F=se.indexOf(H.id),Ve=se.indexOf(U.id);return Yu(se,F,Ve)})}let R=$u(Ju,{activationConstraint:{distance:10}}),B=ju(R),X=od({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(n&&h),getCoreRowModel:td(),getRowId:({__ps_rowid:H})=>H,manualPagination:!0,manualSorting:!0,onColumnOrderChange:g,onColumnPinningChange:I,onColumnSizingChange:w,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:H=>n?.(U=>(typeof H=="function"&&(H=H(Zr(U))),ud(H))),pageCount:u,state:{columnOrder:x,columnPinning:m,columnSizing:L,pagination:d,rowSelection:p,sorting:A}});return xa(dd,{children:[process.env.NODE_ENV==="production"?null:j(_r,{table:X}),xa("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[j("div",{children:v&&j(Xr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),j(Zu,{sensors:B,onDragEnd:E,children:xa(Jt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[j($t,{children:X.getHeaderGroups().map(H=>j(la,{children:j(ad,{items:H.headers.map(U=>U.id),strategy:ed,children:H.headers.map((U,se)=>{if(typeof U.column.columnDef.header=="function"){let F=U.column.columnDef.header(U.getContext());return j(F,{...ja(U.column,"header")},se)}return null})})},H.id))}),xa(jt,{children:[t?.(X),X.getRowModel().rows?.length?X.getRowModel().rows.map(H=>j(la,{className:c("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:H.getVisibleCells().map((U,se)=>{if(typeof U.column.columnDef.cell=="function"){let F=U.column.columnDef.cell(U.getContext());return j(F,{...ja(U.column,"cell")},se)}return null})},H.id)):j(la,{children:j(Ka,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&xa("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[j(ga,{className:"ps-h-4 ps-w-full"}),j(ga,{className:"ps-h-4 ps-w-4/5"}),j(ga,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!u||u<2?null:j(Qr,{table:X,variant:"numeric"}),j(rd,{mode:"wait",children:X.getRowModel().rows?.length===0&&!o&&!r&&j(sd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:xa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[j("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),j("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Zr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function ud(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import{useSortable as id}from"@dnd-kit/sortable";import{CSS as fd}from"@dnd-kit/utilities";import{jsx as $r}from"react/jsx-runtime";var jr=e=>{let{children:a,className:t,header:o,style:r}=e,{attributes:s,listeners:l,transform:n,transition:u,setNodeRef:d,isDragging:i}=id({id:o.id}),p={...r,cursor:"grab",touchAction:"none",transform:fd.Transform.toString(n),transition:u},h=c(t,i&&"!ps-z-50 ps-border-2 ps-border-violet-500");return $r(_a,{ref:d,...s,...l,style:p,className:h,children:$r("div",{className:"ps-w-full",children:a})})};import{AnimatePresence as cd,motion as os}from"motion/react";import*as be from"@radix-ui/react-tooltip";import*as es from"react";import{jsx as Yr}from"react/jsx-runtime";var Rt=be.Provider,Mt=be.Root,Tt=be.Trigger,Ya=es.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Yr(be.Portal,{children:Yr(be.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));Ya.displayName=be.Content.displayName;import{jsx as na,jsxs as as}from"react/jsx-runtime";function ts({column:e}){return as("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&na(Rt,{delayDuration:120,children:as(Mt,{children:[na(Tt,{asChild:!0,children:na(Na,{size:12,className:"ps-text-primary"})}),na(Ya,{side:"bottom",className:"text-xs",children:na("span",{children:"Primary Key"})})]})}),na("span",{className:"ps-font-medium ps-truncate",children:e.name}),na("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{Fragment as Co,jsx as K,jsxs as Me}from"react/jsx-runtime";function rs(e){let{column:a,header:t,className:o}=e;return Me("div",{className:c("ps-flex ps-items-center ps-justify-between",o),children:[Me("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[K("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:t.isPlaceholder?null:K("span",{className:"ps-flex ps-min-w-0",children:K("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:K(ts,{column:a})})})}),Me("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[K("span",{className:"ps-flex ps-items-center ps-ml-1",children:K(cd,{mode:"wait",children:t.column.getIsSorted()==="desc"?K(os.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:K(Ha,{size:14,className:"ps-text-muted-foreground"})},"desc"):t.column.getIsSorted()==="asc"?K(os.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:K(Ua,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),t.column.getCanPin()&&t.column.id!=="select"&&Me(yt,{children:[K(vt,{asChild:!0,children:K(q,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:K(ve,{size:12})})}),Me(Ja,{children:[t.column.getCanSort()&&K(wt,{onClick:()=>t.column.toggleSorting(),children:K("span",{className:"ps-flex ps-items-center ps-gap-2",children:t.column.getNextSortingOrder()==="desc"?Me(Co,{children:[K(Xe,{size:16}),"Sort descending"]}):t.column.getNextSortingOrder()==="asc"?Me(Co,{children:[K(wa,{size:16}),"Sort ascending"]}):Me(Co,{children:[K(je,{size:16}),"Cancel sorting"]})})}),K(wt,{onClick:()=>t.column.pin(t.column.getIsPinned()?!1:"left"),children:t.column.getIsPinned()?Me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[K(za,{size:16}),"Unpin column"]}):Me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[K(Va,{size:16}),"Pin column"]})})]})]})]})]}),t.column.getCanResize()&&K("button",{type:"button",tabIndex:0,onMouseDown:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onTouchStart:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onClick:r=>r.stopPropagation(),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t.getResizeHandler()(r))},className:c("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{isObjectType as zd}from"remeda";import{motion as us}from"motion/react";import Ld,{useState as ds}from"react";import*as Io from"@radix-ui/react-label";import{cva as pd}from"class-variance-authority";import*as ss from"react";import{jsx as gd}from"react/jsx-runtime";var md=pd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),et=ss.forwardRef(({className:e,...a},t)=>gd(Io.Root,{ref:t,className:c(md(),e),...a}));et.displayName=Io.Root.displayName;import*as at from"@radix-ui/react-switch";import*as ns from"react";import{jsx as ls}from"react/jsx-runtime";var tt=ns.forwardRef(({className:e,...a},t)=>ls(at.Root,{className:c("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:ls(at.Thumb,{className:c("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));tt.displayName=at.Root.displayName;import xd from"dayjs";import{Fragment as hd,jsx as me,jsxs as oa}from"react/jsx-runtime";var ce=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:s,onSetNow:l,showSetNow:n})=>me("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-p-2",children:!s&&me(hd,{children:me("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-w-full",children:oa("div",{className:"ps-grid ps-grid-cols-2 ps-gap-1 ps-items-start ps-justify-between",children:[oa("div",{className:"ps-flex ps-flex-col ps-gap-1",children:[oa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{e&&e(),t&&t()},children:[me("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:me(Da,{size:12,strokeWidth:2})})," ","Save changes"]}),oa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{a&&a(),t&&t()},children:[me("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),oa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-items-end",children:[o&&oa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",htmlFor:"set-nullable",children:[me(tt,{id:"set-nullable",checked:r,onCheckedChange:p=>{o&&o(p)}}),me("span",{children:"Set to NULL"})]}),n&&me(Rt,{children:oa(Mt,{children:[me(Tt,{asChild:!0,children:me("button",{onClick:l,className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",disabled:r||s,children:"Set to NOW"})}),me(Ya,{children:oa("p",{children:["Set to ",xd().format("LLL")]})})]})})]})]})})})});import{Fragment as Cd,jsx as ot,jsxs as is}from"react/jsx-runtime";function fs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,n]=ds(a===null?!1:a),[u,d]=ds(a===null),i=a===null?!1:a,p=L=>{n(L)},h=L=>{d(L)},x=Ld.useCallback(()=>{let L=u?null:l;return L!==a?(t(L),!0):!1},[l,a,t,u]),g=()=>{n(i),d(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return is(Cd,{children:[is("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[ot(et,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),ot(us.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:ot(tt,{id:"boolean-input",checked:l,onCheckedChange:p,disabled:u||r})}),ot(us.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:u?"NULL":String(l)})]}),ot(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:u,readonly:r})]})}import Y from"dayjs";import yd from"dayjs/plugin/localizedFormat";import{useCallback as vd,useEffect as cs,useMemo as ua,useState as La}from"react";import{DayPicker as Id}from"react-day-picker";import{jsx as Sd}from"react/jsx-runtime";function So({className:e,classNames:a,showOutsideDays:t=!0,hideNavigation:o,...r}){let s=c("relative flex flex-col gap-4 sm:flex-row",r.monthsClassName),l=c("relative flex h-7 items-center justify-center",r.monthCaptionClassName),n=c("ps-flex ps-items-center ps-justify-center ps-gap-2 ps-w-full",o?"ps-w-full":"ps-hidden",r.dropdownsClassName),u=c("ps-pt-3 ps-text-xs",r.footerClassName),d=c("ps-flex",r.weekdaysClassName),i=c("ps-w-9 ps-text-xs ps-font-normal ps-text-muted-foreground",r.weekdayClassName),p=c("ps-truncate ps-text-xs ps-font-medium",r.captionLabelClassName),h=c("ps-mx-auto ps-mt-4",r.monthGridClassName),x=c("ps-mt-0 ps-flex ps-w-max ps-items-start",r.weekClassName),g=c("ps-flex ps-size-9 ps-flex-1 ps-items-center ps-justify-center ps-p-0 ps-text-xs",r.dayClassName),m=c(Qt({variant:"ghost"}),"ps-size-8 ps-rounded-md ps-p-0 ps-font-normal ps-text-xs ps-transition-none aria-selected:ps-opacity-100",r.dayButtonClassName),I="ps-bg-accent ps-[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground",L=c(I,"ps-rounded-s-md",r.rangeStartClassName),w=c(I,"ps-rounded-e-md",r.rangeEndClassName),A=c("ps-bg-accent !ps-text-foreground [&>button]:ps-bg-transparent [&>button]:!ps-text-foreground [&>button]:hover:ps-bg-transparent [&>button]:hover:!ps-text-foreground",r.rangeMiddleClassName),v=c("[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground","[&[aria-selected]>button]:ps-bg-primary [&[aria-selected]>button]:ps-text-primary-foreground",r.selectedClassName),E=c("[&>button]:ps-font-bold [&>button]:ps-text-accent-foreground",r.todayClassName),R=c("ps-text-muted-foreground ps-opacity-50 aria-selected:ps-text-muted-foreground aria-selected:ps-opacity-30",r.outsideClassName),B=c("ps-text-muted-foreground ps-opacity-50",r.disabledClassName),X=c("ps-invisible ps-flex-1",r.hiddenClassName);return Sd(Id,{mode:"single",captionLayout:"label",hideNavigation:!0,showOutsideDays:t,className:c("ps-p-0",e),classNames:{caption_label:p,day:g,day_button:m,dropdowns:n,footer:u,month:r.monthClassName,month_caption:l,month_grid:h,months:s,week:x,weekday:i,weekdays:d,range_end:w,range_middle:A,range_start:L,selected:v,disabled:B,hidden:X,outside:R,today:E,nav:"ps-hidden",...a},...r})}So.displayName="Calendar";import{useState as bd}from"react";function ha(e){let{initialValue:a}=e,[t,o]=bd(a??"");return{handleOnChange:s=>{o(s.target.value)},value:t,setValue:o}}import{Fragment as Pd,jsx as te,jsxs as Ca}from"react/jsx-runtime";Y.extend(yd);function ps(e){let{onSubmit:a,value:t,readonly:o,column:r}=e,s=String(t),l=ua(()=>{let C=Y(s);return C.isValid()?C.toDate():new Date},[s]),n=C=>{switch(C){case"date":return"YYYY-MM-DD";case"time":return"HH:mm:ss.SSSSS";case"timestamp":return"YYYY-MM-DD HH:mm:ss.SSSSSS";case"timestamptz":return"YYYY-MM-DD HH:mm:ss.SSSSSSZ";case"timetz":return"HH:mm:ss.SSSSSSZ";default:return}},[u,d]=La(l),[i,p]=La(l),[h,x]=La(()=>Y(l).format("HH")),[g,m]=La(()=>Y(l).format("mm")),[I,L]=La(()=>Y(l).format("ss")),{handleOnChange:w,value:A,setValue:v}=ha({initialValue:s}),E=ua(()=>r?.datatype?.name||r?.datatype,[r]),R=ua(()=>n(E),[E]),B=ua(()=>["time","timestamp","timestamptz","timetz"].includes(E),[E]),X=C=>{w(C);try{let P=C.target.value,O=Y(P);if(O.isValid()){let xe=O.toDate();d(xe),p(xe),B&&(x(O.format("HH")),m(O.format("mm")),L(O.format("ss")))}}catch{}},H=C=>{if(!C)return;let P=Y(C),O=P;if(B&&u)O=P.hour(Y(u).hour()).minute(Y(u).minute()).second(Y(u).second());else if(B){let xe=Y();O=P.hour(xe.hour()).minute(xe.minute()).second(xe.second()),x(xe.format("HH")),m(xe.format("mm")),L(xe.format("ss"))}d(O.toDate()),p(O.toDate()),v(R?O.format(R):O.toISOString())},U=ua(()=>{try{let C=Y(A);return C.isValid()?A.includes(":")?C.format("LL LTS"):C.format("LL"):A}catch{return A}},[A]);function se(C){C.preventDefault(),A!==s&&a(A)}let F=vd(()=>A!==s?(a(A),!0):!1,[A,s,a]),Ve=()=>{},{handleSave:Ge,handleCancel:ia}=de({onSave:F,onCancel:Ve,readonly:o}),We=C=>{C.preventDefault(),C.stopPropagation();let P=Y();d(P.toDate()),p(P.toDate()),v(R?P.format(R):P.toISOString()),le(P.year().toString()),B&&(x(P.format("HH")),m(P.format("mm")),L(P.format("ss")))},fa=ua(()=>[{value:"0",label:"January"},{value:"1",label:"February"},{value:"2",label:"March"},{value:"3",label:"April"},{value:"4",label:"May"},{value:"5",label:"June"},{value:"6",label:"July"},{value:"7",label:"August"},{value:"8",label:"September"},{value:"9",label:"October"},{value:"10",label:"November"},{value:"11",label:"December"}],[]),N=ua(()=>i.getMonth().toString(),[i]),[J,le]=La(()=>i.getFullYear().toString()),ae=C=>{let P=u?Y(u):Y();u&&(C.hour!==void 0||C.minute!==void 0||C.second!==void 0)&&C.year===void 0&&C.month===void 0&&C.day===void 0?P=Y(u):!u&&(C.hour!==void 0||C.minute!==void 0||C.second!==void 0)&&(P=Y(i));let O=P.set("year",C.year??P.year()).set("month",C.month??P.month()).set("date",C.day??P.date()).set("hour",C.hour??(B?P.hour():0)).set("minute",C.minute??(B?P.minute():0)).set("second",C.second??(B?P.second():0));d(O.toDate()),(C.year!==void 0||C.month!==void 0)&&p(O.toDate()),v(R?O.format(R):O.toISOString()),C.year!==void 0&&le(String(C.year)),B&&(C.hour!==void 0&&x(String(C.hour).padStart(2,"0")),C.minute!==void 0&&m(String(C.minute).padStart(2,"0")),C.second!==void 0&&L(String(C.second).padStart(2,"0")))},Gs=C=>{let P=parseInt(C);ae({month:P})},Ws=C=>{let P=C.target.value;if(le(P),/^\d{1,4}$/.test(P)){let O=parseInt(P);P.length===4&&ae({year:O})}},qt=(C,P)=>{let O=parseInt(P);if(isNaN(O))return;let xe=C==="hour"?O:parseInt(h),_s=C==="minute"?O:parseInt(g),Ks=C==="second"?O:parseInt(I);C==="hour"&&x(P.padStart(2,"0")),C==="minute"&&m(P.padStart(2,"0")),C==="second"&&L(P.padStart(2,"0"));let Xs=C==="hour"&&P.length>=1&&O>=0&&O<=23,Qs=C==="minute"&&P.length>=1&&O>=0&&O<=59,Zs=C==="second"&&P.length>=1&&O>=0&&O<=59;(C==="hour"&&Xs||C==="minute"&&Qs||C==="second"&&Zs)&&ae({hour:xe,minute:_s,second:Ks})};return cs(()=>{if(u){let C=Y(u);le(C.year().toString()),B&&(x(C.format("HH")),m(C.format("mm")),L(C.format("ss")))}},[u,B]),cs(()=>{i&&(u||le(i.getFullYear().toString()))},[i,u]),Ca(Pd,{children:[te("form",{onSubmit:se,children:Ca("div",{className:"ps-flex ps-items-center ps-pr-[var(--studio-cell-spacing)]",children:[te(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:X,type:"text",value:A}),te("input",{type:"submit",className:"ps-sr-only"})]})}),Ca("div",{className:"ps-flex ps-flex-col ps-gap-0 ps-p-2 ps-border-t ps-border-table-border",children:[Ca("div",{className:"ps-flex ps-items-center ps-justify-between ps-mb-1 ps-gap-2",children:[Ca(ea,{value:N,onValueChange:Gs,children:[te(He,{className:"ps-text-xs ps-border-transparent data-[state=open]:ps-border-primary ps-shadow-none ps-bg-neutral-200/40",children:te(aa,{placeholder:"Month"})}),te(Ue,{children:fa.map(C=>te(V,{value:C.value,children:C.label},C.value))})]}),te(ne,{className:"ps-text-xs ps-w-20 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"text",value:J,onChange:Ws,placeholder:"Year"})]}),te(wd,{selected:u,month:i,onSelect:H,onMonthChange:p,disabled:o}),B&&Ca("div",{className:"ps-flex ps-items-center ps-justify-start ps-gap-1 ps-mt-1",children:[te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:h,onChange:C=>qt("hour",C.target.value),placeholder:"HH",min:0,max:23,maxLength:2,disabled:o}),te("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:g,onChange:C=>qt("minute",C.target.value),placeholder:"mm",min:0,max:59,maxLength:2,disabled:o}),te("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:I,onChange:C=>qt("second",C.target.value),placeholder:"ss",min:0,max:59,maxLength:2,disabled:o})]}),te("code",{className:"ps-sr-only",children:U})]}),te(ce,{onSave:Ge,onCancel:ia,readonly:o,onSetNow:We,showSetNow:!0})]})}function wd({selected:e,month:a,onSelect:t,onMonthChange:o,disabled:r}){return te(So,{mode:"single",selected:e,onSelect:t,disabled:r,month:a,onMonthChange:o,className:"ps-w-full",captionLayout:"dropdown"})}import{useCallback as kd,useState as ms}from"react";import{Fragment as Rd,jsx as Dt,jsxs as Md}from"react/jsx-runtime";function gs(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:s}=e,l=t.nullable===!0,n=String(o),[u,d]=ms(n),[i,p]=ms(o===null),h=w=>{d(w)},x=w=>{p(w)},g=kd(()=>i?o!==null?(a(null),!0):!1:u!==n?(a(u),!0):!1,[u,n,a,i,o]),m=()=>{d(n),p(o===null)},{handleSave:I,handleCancel:L}=de({onSave:g,onCancel:m,readonly:s});return Md(Rd,{children:[Dt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:u}),Dt("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(w=>Dt("button",{onClick:()=>h(w),className:Xt({variant:w===u?"default":"outline"}),disabled:i||s,children:w},w))}),Dt(ce,{onSave:I,onCancel:L,onNullChange:l?x:void 0,isNull:i,readonly:s})]})}import Td,{useState as xs}from"react";import{Fragment as Dd,jsx as bo,jsxs as Ad}from"react/jsx-runtime";function hs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,l=a===null?"":JSON.stringify(a,null,2),[n,u]=xs(l),[d,i]=xs(a===null),p=L=>{u(L.target.value)},h=L=>{i(L)},x=Td.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let L=n===""?null:JSON.parse(n);return L!==a?(t(L),!0):!1},[n,a,t,d]),g=()=>{u(l),i(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return Ad(Dd,{children:[bo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:bo("textarea",{rows:5,value:n,onChange:p,disabled:d||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),bo(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:d,readonly:r})]})}import Fd,{useState as Ls}from"react";import{Fragment as Bd,jsx as yo,jsxs as Cs}from"react/jsx-runtime";function Is(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,n]=Ls(a===null?"":String(a)),[u,d]=Ls(a===null),i=a===null?"":String(a),p=L=>{n(L.target.value)},h=L=>{d(L)},x=Fd.useCallback(()=>{if(u)return a!==null?(t(null),!0):!1;let L=l===""?null:Number(l);return l!==a?(t(L),!0):!1},[l,a,t,u]),g=()=>{n(i),d(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return Cs(Bd,{children:[Cs("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[yo(et,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),yo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:l,onChange:p,disabled:u||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),yo(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:u,readonly:r})]})}import Nd from"react";import{Fragment as Od,jsx as vo,jsxs as Ss}from"react/jsx-runtime";function bs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=ha({initialValue:r});function n(h){h.preventDefault(),l!==r&&a(l)}let u=Nd.useCallback(()=>l!==r?(a(l),!0):!1,[l,r,a]),d=()=>{},{handleSave:i,handleCancel:p}=de({onSave:u,onCancel:d,readonly:o});return Ss(Od,{children:[Ss("form",{onSubmit:n,children:[vo(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l,disabled:o}),vo("input",{type:"submit",className:"ps-sr-only"})]}),vo(ce,{onSave:i,onCancel:p,readonly:o})]})}import ys from"dayjs";import qd from"dayjs/plugin/localizedFormat";import{useCallback as Ed,useMemo as Hd}from"react";import{Fragment as Ud,jsx as rt,jsxs as wo}from"react/jsx-runtime";ys.extend(qd);function vs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=ha({initialValue:r}),n=Hd(()=>{try{if(!l.includes(":"))return l;let x=/[+-]\d{2}(:\d{2})?$/.test(l),g=ys(`2000-01-01 ${l}`);if(g.isValid())return g.format("h:mm A")+(x?` (${g.format("Z")})`:"");let m=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,I=l.match(m);if(I){let L=parseInt(I[1]||"12",10),w=I[2]||"00",A=I[4]||"",v=L>=12?"PM":"AM";return`${L%12===0?12:L%12}:${w} ${v}${A?` (${A})`:""}`}return l}catch{return l}},[l]);function u(x){x.preventDefault(),l!==r&&a(l)}let d=Ed(()=>l!==r?(a(l),!0):!1,[l,r,a]),i=()=>{},{handleSave:p,handleCancel:h}=de({onSave:d,onCancel:i,readonly:o});return wo(Ud,{children:[wo("form",{onSubmit:u,children:[rt(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l}),rt("input",{type:"submit",className:"ps-sr-only"})]}),wo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[rt("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),rt("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:n})]}),rt(ce,{onSave:p,onCancel:h,readonly:o})]})}import{jsx as da}from"react/jsx-runtime";function At(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:s,isArray:l}=t.datatype,n=t.isComputed||e.readonly,u=a.getValue(),d=u===void 0?"":u;return r==="datetime"?da(ps,{onSubmit:o,value:d,column:t,readonly:n}):r==="time"?da(vs,{onSubmit:o,value:d,column:t,readonly:n}):r==="json"||l?da(hs,{onSubmit:o,value:d,column:t,readonly:n}):r==="boolean"?da(fs,{onSubmit:o,value:d,column:t,readonly:n}):r==="enum"?da(gs,{onSubmit:o,value:d,options:s,column:t,readonly:n}):r==="numeric"?da(Is,{onSubmit:o,value:d,column:t,readonly:n}):da(bs,{onSubmit:o,value:zd(d)?JSON.stringify(d):d,readonly:n})}import ks from"short-uuid";import{useCallback as ws,useEffect as Ft,useMemo as Ps}from"react";import{v4 as Vd}from"uuid";function st(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:s}=_(),{data:l,dataUpdatedAt:n}=Pe(),u=n===ft,[d]=$("view"),[i,p]=Ia({table:{defaultValue:null,parse:v=>v,serialize:v=>v??""},schema:{defaultValue:null,parse:v=>v||r.defaultSchema||"public",serialize:v=>v||r.defaultSchema||"public"}}),[,h]=$("pageIndex",{parse:v=>v,serialize:v=>v??""}),[,x]=$("sort",{parse:v=>v,serialize:v=>v??""}),[,g]=$("view",{parse:v=>v,serialize:v=>v??""}),m=Ps(()=>Object.values(l.schemas[t]?.tables||{}),[l.schemas,t]),I=Ps(()=>Object.values(l.schemas).reduce((v,E)=>v+Object.keys(E.tables).length,0),[l.schemas]),[L]=m;Ft(()=>{if(d==="schema"||u)return;let E=new URLSearchParams(window.location.hash.slice(1)).has("view");if(i?.table&&i.schema===t){let R=m.find(B=>B.name===i.table);if(R){e!==R&&a(R),E||g("table");return}}if(m.length>0){let R=e&&e.schema===t&&m.some(B=>B.name===e.name);!R&&L?(a(L),p({table:L.name,schema:t}),g("table")):R&&!E?g("table"):(!L&&i?.table&&p({table:null,schema:t}),E||g("table"))}else e&&a(null),i?.table&&p({table:null,schema:t}),E||g("table")},[u,i,m,L,e,t,a,p,g,d]);let w=ws(v=>{e!==v&&(a(v),p({table:v.name,schema:v.schema}),g("table"),h(null),x(null))},[e,a,p,h,x,g]),A=ws(v=>{v!==t&&(a(null),o(v),p({table:null,schema:v}),d!=="schema"&&g("table"),h(null),x(null))},[t,o,a,p,h,x,g,d]);return Ft(()=>{i?.schema!==t&&!u&&p(v=>({...v,schema:t}))},[t,i?.schema,p,u]),Ft(()=>{i?.schema&&i.schema!==t&&o(i.schema)},[i?.schema,t,o]),Ft(()=>{n!==-1&&s({event:"studio_launched",payload:{event_id:Vd(),timestamp:new Date().toISOString(),table_count:I}})},[m,s,n,I]),{tables:m,activeTable:e,activeSchema:t,isLoading:u,handleTableChange:w,handleSchemaChange:A}}import{jsx as Rs}from"react/jsx-runtime";function Ms(e){let{cell:a,column:t}=e,{fkSchema:o,fkTable:r,fkColumn:s}=t,{handleSchemaChange:l,handleTableChange:n}=st(),{setAppliedFilter:u}=gt(),{data:d}=Pe();if(o!==null&&r!==null&&s!==null){let i=d.schemas[o]?.tables[r];if(i!==void 0)return Rs(q,{size:"xs",variant:"outline",onClick:p=>{p.stopPropagation(),l(o),n(i),u({kind:"FilterGroup",id:ks.generate(),after:"and",filters:[{kind:"ColumnFilter",id:ks.generate(),column:s,operator:"=",value:a.getValue(),after:"and"}]})},children:Rs(va,{size:12})})}return null}import{useReactTable as Gd}from"@tanstack/react-table";import{omit as Wd}from"remeda";import{Fragment as _d,jsx as lt}from"react/jsx-runtime";function Ts(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!xt();function s(u,d){o(i=>{let p=[...i];return p[u]={...p[u],...d},p})}let l=Object.values(a.options.columns).map(u=>u.id==="__ps_select"?{...u,cell(){return()=>lt(Ct,{})}}:{...u,cell({cell:d}){return i=>lt(bt,{cellComponent:It({cell:d,column:u.meta}),linkComponent:null,inputComponent:At({cell:d,column:u.meta,onSubmit(p){s(i.rowIndex,{[u.id]:p})},readonly:r})})}}),n=Gd({...a.options,columns:l,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:Wd(a.options.state,["pagination","sorting"])});return lt(_d,{children:n.getRowModel().rows.map((u,d)=>lt(la,{children:u.getVisibleCells().map((i,p)=>{if(typeof i.column.columnDef.cell=="function"){let h=i.column.columnDef.cell(i.getContext());return lt(h,{...ja(i.column,"cell"),rowIndex:d},p)}return null})},d))})}import{jsx as ra,jsxs as Po}from"react/jsx-runtime";function Bt(e){let{isFullscreen:a,toggleFullscreen:t,toggleNavigation:o,isNavigationOpen:r}=_();return ra("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:ra("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:Po("div",{className:"ps-flex ps-flex-grow ps-items-center ps-justify-between",children:[Po("div",{className:"ps-flex ps-items-center ps-gap-2",children:[ra(q,{variant:"outline",size:"sm",onClick:o,children:r?ra(Ze,{}):ra(Je,{})}),e.children]}),Po("div",{className:"ps-flex ps-items-center ps-gap-2",children:[e.endContent,ra(q,{variant:"outline",size:"icon",onClick:t,children:a?ra(Ea,{}):ra(qa,{})})]})]})})})}import{Fragment as ko,jsx as G,jsxs as nt}from"react/jsx-runtime";function Ds(e){let a=!!Kd(),{activeTable:t,onError:o}=_(),{sortingState:r,setSortingState:s}=pr(),{paginationState:l,setPaginationState:n}=ht(),[u,d]=Zd([]),{appliedFilter:i,setAppliedFilter:p,editingFilter:h,setEditingFilter:x,totalEditingFilters:g}=gt(),{data:m,isFetching:I,refetch:L}=nr({...l,sortOrder:r,filter:i}),{deleteSelection:w,isSelecting:A,rowSelectionState:v,setRowSelectionState:E}=cr(m),R=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),B=xt(),X=lr(),H=ur();if(Qd(()=>d([]),[t]),!t)return null;function U(){X.mutate(u,{onError:o,onSuccess(){Jd.success("Rows inserted successfully"),d([])}})}function se(){d(N=>[...N,{}])}function F(){d([])}function Ve(N,J,le){H.mutate({details:{changes:{[J.name]:N},row:le,table:t},options:{}})}function Ge(N){N===!0?x(i):p(h)}let ia=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header({table:J,header:le}){return ae=>G(jr,{table:J,header:le,...ae,children:G(rs,{header:le,column:N})})},cell({cell:J}){return le=>G(bt,{containerProps:le,cellComponent:It({cell:J,column:N}),linkComponent:Ms({cell:J,column:N}),inputComponent:At({cell:J,column:N,readonly:R,onSubmit(ae){return Ve(ae,N,J.row.original)}})})}})),We=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,size:35,minSize:35,header({table:N}){return J=>G(_a,{...J,children:G(wr,{table:N,readonly:R})})},cell({row:N}){return J=>G(Lt,{...J,children:G(Pr,{row:N,readonly:R})})}}],fa=[...ia,...We].sort(jd);return nt(ko,{children:[nt(Bt,{endContent:G(q,{variant:"outline",size:"icon",onClick:()=>void L(),disabled:I,children:G(Ga,{className:c("ps-h-4 ps-w-4",I&&"ps-animate-spin")})}),children:[nt(Ko,{onOpenChange:Ge,children:[G(Xo,{asChild:!0,children:G(q,{variant:"outline",size:"sm",className:c(g>0&&"ps-border-primary"),children:nt("span",{className:"ps-flex ps-items-center ps-gap-2",children:[G(Aa,{}),g>0&&G(it,{children:G(Xd,{transition:{layout:{duration:.12}},children:g})})]})})}),G(Zt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:G(Hr,{filter:h,setFilter:x,setAppliedFilter:N=>{x(N),p(N)},table:t})})]}),G(q,{variant:"outline",size:"sm",onClick:se,disabled:B>0,children:"Insert row"}),u.length>0&&nt(ko,{children:[G(q,{variant:"secondary",size:"sm",onClick:U,children:"Save"}),G(q,{variant:"ghost",size:"sm",onClick:F,children:"Cancel"})]}),A&&G(ko,{children:G(q,{variant:"secondary",size:"sm",onClick:w,children:"Delete"})})]}),G(Jr,{columnDefs:fa,getBeforeRows:N=>G(Ts,{table:N,stagedRows:u,setStagedRows:d}),isLoading:I,isProcessing:a,onPaginationChange:n,onRowSelectionChange:E,onSortingChange:s,pageCount:$d(m?.filteredRowCount??1/0,l.pageSize),paginationState:l,rows:m?.rows??[],rowSelectionState:v,sortingState:r})]})}function $d(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function jd(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{jsx as Yd}from"react/jsx-runtime";function As(){return Yd("div",{children:"BasicView"})}import{Slot as ei}from"@radix-ui/react-slot";import{Fragment as ri,jsx as W,jsxs as Nt}from"react/jsx-runtime";function ge({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=st(),[s,l]=$("view"),[,n]=$("table",{parse:i=>i,serialize:i=>i??""}),[,u]=$("schema",{parse:i=>i,serialize:i=>i??""}),d=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return Nt("div",{className:d,children:[W(ge.SchemaSelector,{}),W(ge.Block,{label:"Studio",children:W(ge.Item,{asChild:!0,isActive:s==="schema",onClick:()=>{n(null),u(null),l("schema")},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:W("a",{href:"#view=schema",children:"Schema visualisation"})})}),W(ge.Block,{label:"Tables",children:a.length>0?a.map(i=>W(ge.Item,{asChild:!0,isActive:t===i&&s==="table",onClick:()=>{r(i)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:W("a",{href:`#table=${i.name}&schema=${i.schema}&view=table`,children:i.name})},`${i.schema}-${i.name}`)):o?Array(4).fill(null).map((i,p)=>W(ge.Item,{wrapChildrenInSpan:!1,children:W(ga,{className:"ps-h-3 ps-w-full"})},p)):W(ge.Item,{children:"No tables found"})})]})}var ai=({className:e,label:a,children:t,...o})=>Nt("div",{className:e,...o,children:[Nt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[W(Wa,{size:16,className:"ps-text-muted-foreground/60"}),W("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),W("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),ti=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:s=!0,...l})=>W(a?ei:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:c("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...l,children:s?W("span",{className:"ps-truncate",children:r}):W(ri,{children:"children"})}),oi=()=>{let{data:e,isLoading:a}=Pe(),{activeSchema:t,handleSchemaChange:o}=st(),r=Object.keys(e.schemas||{});return W("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:Nt(ea,{value:t,onValueChange:o,children:[W(He,{className:"ps-text-xs",label:"Schema",children:W(aa,{placeholder:"Select schema"})}),W(Ue,{children:a?W(V,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(s=>W(V,{value:s,className:"ps-text-xs",children:s},s)):W(V,{value:"no-schemas",children:"No schemas found"})})]})})};ge.Block=ai;ge.Item=ti;ge.SchemaSelector=oi;import{useMemo as si}from"react";var Fs={name:"No Tables Found",fields:[{name:"message",type:"info",isRequired:!0}]};function Bs(){let{data:e,isLoading:a}=Pe(),{activeSchema:t}=_();return si(()=>{if(a||!e||!t)return{tables:[Fs],relationships:[]};let o=e.schemas[t];if(!o||Object.keys(o.tables).length===0)return{tables:[Fs],relationships:[]};let r=[],s={};Object.values(o.tables).forEach(n=>{let u=[];Object.values(n.columns).forEach(i=>{u.push({name:i.name,type:i.datatype.name,isPrimary:i.isInPrimaryKey,isRequired:!i.nullable})});let d={name:n.name,fields:u};r.push(d),s[n.name]=d});let l=[];return r.forEach(n=>{let u=o.tables[n.name];u&&Object.values(u.columns).forEach(d=>{d.fkTable&&d.fkColumn&&l.push({from:d.fkTable,to:n.name,type:"1:n"})})}),{tables:r,relationships:l}},[e,a,t])}import"reactflow/dist/style.css";import{memo as li,useCallback as ni,useEffect as Ns,useMemo as Ot}from"react";import ui,{addEdge as di,Background as ii,ConnectionLineType as fi,Controls as ci,Handle as Os,MiniMap as pi,Position as qs,useEdgesState as mi,useNodesState as gi}from"reactflow";import{jsx as ee,jsxs as ut}from"react/jsx-runtime";var Hs=li(({data:e})=>{let a=e.label==="No Tables Found",t=(o,r,s)=>a&&r==="info"?ee(Ae,{size:16}):s?ee(Oa,{size:16}):ee(Ba,{size:16});return ut("div",{className:c("ps-min-w-[250px] ps-shadow-xl ps-rounded-md ps-border ps-border-border ps-bg-card",a&&"ps-border-orange-400"),children:[ee(Os,{type:"target",position:qs.Top,style:{opacity:0}}),ut("div",{className:c("ps-px-4 ps-py-3 ps-border-b",a&&"ps-bg-orange-100 dark:ps-bg-orange-950 ps-text-orange-700 dark:ps-text-orange-300"),children:[ee("div",{className:"ps-font-bold",children:e.label}),ee($e,{className:"ps-w-4 ps-h-4"})]}),ee("div",{className:"ps-px-4 ps-py-2",children:a?ut("div",{className:"ps-flex ps-items-center ps-gap-2 ps-py-8 ps-text-sm ps-text-muted-foreground",children:[ee("span",{className:"ps-text-orange-500",children:ee(Ae,{className:"ps-w-5 ps-h-5"})}),ee("span",{className:"ps-flex-1",children:"No database tables found. Connect to a database to see your schema."})]}):e.fields.map((o,r)=>ut("div",{className:c("ps-flex ps-items-center ps-gap-2 ps-py-2 ps-text-sm",o.isPrimary&&"ps-text-primary"),children:[ee("span",{className:"ps-text-muted-foreground",children:t(o.name,o.type,o.isPrimary)}),ee("span",{className:"ps-flex-1",children:o.name}),ee("span",{className:"ps-text-xs ps-text-muted-foreground",children:o.type})]},r))}),ee(Os,{type:"source",position:qs.Bottom,style:{opacity:0}})]})});Hs.displayName="TableNode";var xi={tableNode:Hs};function Es(e,a){if(e.length<=3)return e.map((s,l)=>({id:s.name,type:"tableNode",data:{label:s.name,fields:s.fields},position:{x:350*l,y:50}}));let t=350,o=300,r=Math.ceil(Math.sqrt(e.length));return e.map((s,l)=>{let n=l%r,u=Math.floor(l/r);return{id:s.name,type:"tableNode",data:{label:s.name,fields:s.fields},position:{x:n*t,y:u*o}}})}function Us({tables:e,relationships:a}){let t=Ot(()=>new Set(e.map(x=>x.name)),[e]),o=Ot(()=>a.filter(x=>t.has(x.from)&&t.has(x.to)),[a,t]),r=Ot(()=>Es(e,o),[e,o]),s=Ot(()=>o.map((x,g)=>({id:`e${g}`,source:x.from,target:x.to,animated:!0,label:x.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})),[o]),[l,n,u]=gi(r),[d,i,p]=mi(s);Ns(()=>{n(Es(e,o))},[e,o,n]),Ns(()=>{i(o.map((x,g)=>({id:`e${g}`,source:x.from,target:x.to,animated:!0,label:x.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})))},[o,i]);let h=ni(x=>i(g=>di(x,g)),[i]);return ee("div",{className:"ps-w-full ps-h-full ps-bg-card",children:ut(ui,{nodes:l,edges:d,onNodesChange:u,onEdgesChange:p,onConnect:h,connectionLineType:fi.SmoothStep,nodeTypes:xi,fitView:!0,fitViewOptions:{padding:.2},children:[ee(ii,{className:"ps-bg-muted",gap:16}),ee(ci,{showInteractive:!1,className:"!ps-bg-[hsl(var(--studio-background))] !ps-border-[hsl(var(--studio-border))] !ps-text-[hsl(var(--studio-foreground))]"}),ee(pi,{pannable:!0})]})})}import{Fragment as hi,jsx as Ro,jsxs as Li}from"react/jsx-runtime";function zs(){let{tables:e,relationships:a}=Bs();return console.log("Detected relationships:",a),Li(hi,{children:[Ro(Bt,{}),Ro("div",{className:"ps-w-full ps-h-full",children:Ro(Us,{tables:e,relationships:a})})]})}import{jsx as ye,jsxs as bi}from"react/jsx-runtime";function Ii(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?ye(rr,{adapter:a,onError:t,onTelemetryEvent:o,children:ye(Si,{})}):(console.error("No adapter provided to Studio component"),ye("div",{children:"Error: No adapter provided"}))}function Si(){let{isFullscreen:e,isNavigationOpen:a}=_(),[t]=$("view"),o=c("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return ye("div",{"data-fullscreen":e,className:o,children:bi("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[ye(Ci,{mode:"wait",children:a&&ye(Vs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:ye(ge,{})})}),ye(Vs.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:t==="schema"?ye(zs,{}):!t||t==="table"?ye(Ds,{}):ye(As,{})})]})})}export{Ii as Studio};
20
+ `}}),b.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${ke.grayAlt}`,display:"flex",flexDirection:"column"}},b.createElement("div",{style:{padding:".5em",background:ke.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},b.createElement(Wr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>s(!1)}),b.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",b.createElement("span",{style:{fontWeight:100}},"Devtools")),b.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?b.createElement(Gu,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{s(!1)}},"Close"):null)),b.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(Re,{label:"Instance",value:o,defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(Re,{label:"State",value:o.getState(),defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(Re,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(Re,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),b.createElement(Re,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as rd,motion as sd}from"motion/react";import{useEffect as ld,useMemo as nd,useState as Lo}from"react";import{jsx as Qu}from"react/jsx-runtime";function ga({className:e,...a}){return Qu("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{jsx as Kr}from"react/jsx-runtime";function Xr({className:e}){return Kr("div",{"data-loading-bar":!0,className:c("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Kr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as fe,jsxs as kt}from"react/jsx-runtime";function Qr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return fe("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:fe("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?kt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[fe(q,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),fe(q,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):fe("div",{className:"ps-flex ps-items-center ps-space-x-2",children:kt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[fe(q,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:fe(Ra,{className:"ps-w-4 ps-h-4"})}),fe(q,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:fe(Pa,{className:"ps-w-4 ps-h-4"})}),kt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",fe(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:s=>{let l=s.target.value?Number(s.target.value)-1:0;a.setPageIndex(l)}}),kt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),fe(q,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:fe(Le,{className:"ps-w-4 ps-h-4"})}),fe(q,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:fe(Ma,{className:"ps-w-4 ps-h-4"})})]})})})})}function ja(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right";return{className:c(a==="cell"&&"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100",a==="header"&&"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head","ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",t&&"ps-sticky",(o||r)&&a==="header"&&"ps-z-20",(o||r)&&a==="cell"&&"ps-z-0"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0}}}import{Fragment as dd,jsx as j,jsxs as xa}from"react/jsx-runtime";function Jr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:n,pageCount:u,paginationState:d,rows:i,rowSelectionState:p,sortingState:h}=e,[x,g]=Lo([]),[m,I]=Lo({left:["__ps_select"],right:[]}),[L,w]=Lo({}),A=nd(()=>Zr(h),[h]),v=o||r;ld(()=>{g(a.map(({accessorKey:H})=>H)),I({left:["__ps_select"],right:[]}),w({})},[a]);function E({active:H,over:U}){U&&H.id!==U.id&&g(se=>{let F=se.indexOf(H.id),Ve=se.indexOf(U.id);return Yu(se,F,Ve)})}let R=$u(Ju,{activationConstraint:{distance:10}}),B=ju(R),X=od({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(n&&h),getCoreRowModel:td(),getRowId:({__ps_rowid:H})=>H,manualPagination:!0,manualSorting:!0,onColumnOrderChange:g,onColumnPinningChange:I,onColumnSizingChange:w,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:H=>n?.(U=>(typeof H=="function"&&(H=H(Zr(U))),ud(H))),pageCount:u,state:{columnOrder:x,columnPinning:m,columnSizing:L,pagination:d,rowSelection:p,sorting:A}});return xa(dd,{children:[process.env.NODE_ENV==="production"?null:j(_r,{table:X}),xa("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[j("div",{children:v&&j(Xr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),j(Zu,{sensors:B,onDragEnd:E,children:xa(Jt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[j($t,{children:X.getHeaderGroups().map(H=>j(la,{children:j(ad,{items:H.headers.map(U=>U.id),strategy:ed,children:H.headers.map((U,se)=>{if(typeof U.column.columnDef.header=="function"){let F=U.column.columnDef.header(U.getContext());return j(F,{...ja(U.column,"header")},se)}return null})})},H.id))}),xa(jt,{children:[t?.(X),X.getRowModel().rows?.length?X.getRowModel().rows.map(H=>j(la,{className:c("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:H.getVisibleCells().map((U,se)=>{if(typeof U.column.columnDef.cell=="function"){let F=U.column.columnDef.cell(U.getContext());return j(F,{...ja(U.column,"cell")},se)}return null})},H.id)):j(la,{children:j(Ka,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&xa("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[j(ga,{className:"ps-h-4 ps-w-full"}),j(ga,{className:"ps-h-4 ps-w-4/5"}),j(ga,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!u||u<2?null:j(Qr,{table:X,variant:"numeric"}),j(rd,{mode:"wait",children:X.getRowModel().rows?.length===0&&!o&&!r&&j(sd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:xa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[j("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),j("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Zr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function ud(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import{useSortable as id}from"@dnd-kit/sortable";import{CSS as fd}from"@dnd-kit/utilities";import{jsx as $r}from"react/jsx-runtime";var jr=e=>{let{children:a,className:t,header:o,style:r}=e,{attributes:s,listeners:l,transform:n,transition:u,setNodeRef:d,isDragging:i}=id({id:o.id}),p={...r,cursor:"grab",touchAction:"none",transform:fd.Transform.toString(n),transition:u},h=c(t,i&&"!ps-z-50 ps-border-2 ps-border-violet-500");return $r(_a,{ref:d,...s,...l,style:p,className:h,children:$r("div",{className:"ps-w-full",children:a})})};import{AnimatePresence as cd,motion as os}from"motion/react";import*as be from"@radix-ui/react-tooltip";import*as es from"react";import{jsx as Yr}from"react/jsx-runtime";var Rt=be.Provider,Mt=be.Root,Tt=be.Trigger,Ya=es.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Yr(be.Portal,{children:Yr(be.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));Ya.displayName=be.Content.displayName;import{jsx as na,jsxs as as}from"react/jsx-runtime";function ts({column:e}){return as("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&na(Rt,{delayDuration:120,children:as(Mt,{children:[na(Tt,{asChild:!0,children:na(Na,{size:12,className:"ps-text-primary"})}),na(Ya,{side:"bottom",className:"text-xs",children:na("span",{children:"Primary Key"})})]})}),na("span",{className:"ps-font-medium ps-truncate",children:e.name}),na("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{Fragment as Co,jsx as K,jsxs as Me}from"react/jsx-runtime";function rs(e){let{column:a,header:t,className:o}=e;return Me("div",{className:c("ps-flex ps-items-center ps-justify-between",o),children:[Me("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[K("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:t.isPlaceholder?null:K("span",{className:"ps-flex ps-min-w-0",children:K("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:K(ts,{column:a})})})}),Me("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[K("span",{className:"ps-flex ps-items-center ps-ml-1",children:K(cd,{mode:"wait",children:t.column.getIsSorted()==="desc"?K(os.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:K(Ha,{size:14,className:"ps-text-muted-foreground"})},"desc"):t.column.getIsSorted()==="asc"?K(os.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:K(Ua,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),t.column.getCanPin()&&t.column.id!=="select"&&Me(yt,{children:[K(vt,{asChild:!0,children:K(q,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:K(ve,{size:12})})}),Me(Ja,{children:[t.column.getCanSort()&&K(wt,{onClick:()=>t.column.toggleSorting(),children:K("span",{className:"ps-flex ps-items-center ps-gap-2",children:t.column.getNextSortingOrder()==="desc"?Me(Co,{children:[K(Xe,{size:16}),"Sort descending"]}):t.column.getNextSortingOrder()==="asc"?Me(Co,{children:[K(wa,{size:16}),"Sort ascending"]}):Me(Co,{children:[K(je,{size:16}),"Cancel sorting"]})})}),K(wt,{onClick:()=>t.column.pin(t.column.getIsPinned()?!1:"left"),children:t.column.getIsPinned()?Me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[K(za,{size:16}),"Unpin column"]}):Me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[K(Va,{size:16}),"Pin column"]})})]})]})]})]}),t.column.getCanResize()&&K("button",{type:"button",tabIndex:0,onMouseDown:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onTouchStart:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onClick:r=>r.stopPropagation(),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t.getResizeHandler()(r))},className:c("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{isObjectType as zd}from"remeda";import{motion as us}from"motion/react";import Ld,{useState as ds}from"react";import*as Io from"@radix-ui/react-label";import{cva as pd}from"class-variance-authority";import*as ss from"react";import{jsx as gd}from"react/jsx-runtime";var md=pd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),et=ss.forwardRef(({className:e,...a},t)=>gd(Io.Root,{ref:t,className:c(md(),e),...a}));et.displayName=Io.Root.displayName;import*as at from"@radix-ui/react-switch";import*as ns from"react";import{jsx as ls}from"react/jsx-runtime";var tt=ns.forwardRef(({className:e,...a},t)=>ls(at.Root,{className:c("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:ls(at.Thumb,{className:c("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));tt.displayName=at.Root.displayName;import xd from"dayjs";import{Fragment as hd,jsx as me,jsxs as oa}from"react/jsx-runtime";var ce=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:s,onSetNow:l,showSetNow:n})=>me("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-p-2",children:!s&&me(hd,{children:me("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-w-full",children:oa("div",{className:"ps-grid ps-grid-cols-2 ps-gap-1 ps-items-start ps-justify-between",children:[oa("div",{className:"ps-flex ps-flex-col ps-gap-1",children:[oa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{e&&e(),t&&t()},children:[me("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:me(Da,{size:12,strokeWidth:2})})," ","Save changes"]}),oa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{a&&a(),t&&t()},children:[me("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),oa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-items-end",children:[o&&oa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",htmlFor:"set-nullable",children:[me(tt,{id:"set-nullable",checked:r,onCheckedChange:p=>{o&&o(p)}}),me("span",{children:"Set to NULL"})]}),n&&me(Rt,{children:oa(Mt,{children:[me(Tt,{asChild:!0,children:me("button",{onClick:l,className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",disabled:r||s,children:"Set to NOW"})}),me(Ya,{children:oa("p",{children:["Set to ",xd().format("LLL")]})})]})})]})]})})})});import{Fragment as Cd,jsx as ot,jsxs as is}from"react/jsx-runtime";function fs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,n]=ds(a===null?!1:a),[u,d]=ds(a===null),i=a===null?!1:a,p=L=>{n(L)},h=L=>{d(L)},x=Ld.useCallback(()=>{let L=u?null:l;return L!==a?(t(L),!0):!1},[l,a,t,u]),g=()=>{n(i),d(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return is(Cd,{children:[is("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[ot(et,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),ot(us.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:ot(tt,{id:"boolean-input",checked:l,onCheckedChange:p,disabled:u||r})}),ot(us.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:u?"NULL":String(l)})]}),ot(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:u,readonly:r})]})}import ee from"dayjs";import yd from"dayjs/plugin/localizedFormat";import{useCallback as vd,useEffect as cs,useMemo as ua,useState as La}from"react";import{DayPicker as Id}from"react-day-picker";import{jsx as Sd}from"react/jsx-runtime";function So({className:e,classNames:a,showOutsideDays:t=!0,hideNavigation:o,...r}){let s=c("relative flex flex-col gap-4 sm:flex-row",r.monthsClassName),l=c("relative flex h-7 items-center justify-center",r.monthCaptionClassName),n=c("ps-flex ps-items-center ps-justify-center ps-gap-2 ps-w-full",o?"ps-w-full":"ps-hidden",r.dropdownsClassName),u=c("ps-pt-3 ps-text-xs",r.footerClassName),d=c("ps-flex",r.weekdaysClassName),i=c("ps-w-9 ps-text-xs ps-font-normal ps-text-muted-foreground",r.weekdayClassName),p=c("ps-truncate ps-text-xs ps-font-medium",r.captionLabelClassName),h=c("ps-mx-auto ps-mt-4",r.monthGridClassName),x=c("ps-mt-0 ps-flex ps-w-max ps-items-start",r.weekClassName),g=c("ps-flex ps-size-9 ps-flex-1 ps-items-center ps-justify-center ps-p-0 ps-text-xs",r.dayClassName),m=c(Qt({variant:"ghost"}),"ps-size-8 ps-rounded-md ps-p-0 ps-font-normal ps-text-xs ps-transition-none aria-selected:ps-opacity-100",r.dayButtonClassName),I="ps-bg-accent ps-[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground",L=c(I,"ps-rounded-s-md",r.rangeStartClassName),w=c(I,"ps-rounded-e-md",r.rangeEndClassName),A=c("ps-bg-accent !ps-text-foreground [&>button]:ps-bg-transparent [&>button]:!ps-text-foreground [&>button]:hover:ps-bg-transparent [&>button]:hover:!ps-text-foreground",r.rangeMiddleClassName),v=c("[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground","[&[aria-selected]>button]:ps-bg-primary [&[aria-selected]>button]:ps-text-primary-foreground",r.selectedClassName),E=c("[&>button]:ps-font-bold [&>button]:ps-text-accent-foreground",r.todayClassName),R=c("ps-text-muted-foreground ps-opacity-50 aria-selected:ps-text-muted-foreground aria-selected:ps-opacity-30",r.outsideClassName),B=c("ps-text-muted-foreground ps-opacity-50",r.disabledClassName),X=c("ps-invisible ps-flex-1",r.hiddenClassName);return Sd(Id,{mode:"single",captionLayout:"label",hideNavigation:!0,showOutsideDays:t,className:c("ps-p-0",e),classNames:{caption_label:p,day:g,day_button:m,dropdowns:n,footer:u,month:r.monthClassName,month_caption:l,month_grid:h,months:s,week:x,weekday:i,weekdays:d,range_end:w,range_middle:A,range_start:L,selected:v,disabled:B,hidden:X,outside:R,today:E,nav:"ps-hidden",...a},...r})}So.displayName="Calendar";import{useState as bd}from"react";function ha(e){let{initialValue:a}=e,[t,o]=bd(a??"");return{handleOnChange:s=>{o(s.target.value)},value:t,setValue:o}}import{Fragment as Pd,jsx as te,jsxs as Ca}from"react/jsx-runtime";ee.extend(yd);function ps(e){let{onSubmit:a,value:t,readonly:o,column:r}=e,s=String(t),l=ua(()=>{let C=ee(s);return C.isValid()?C.toDate():new Date},[s]),n=C=>{switch(C){case"date":return"YYYY-MM-DD";case"time":return"HH:mm:ss.SSSSS";case"timestamp":return"YYYY-MM-DD HH:mm:ss.SSSSSS";case"timestamptz":return"YYYY-MM-DD HH:mm:ss.SSSSSSZ";case"timetz":return"HH:mm:ss.SSSSSSZ";default:return}},[u,d]=La(l),[i,p]=La(l),[h,x]=La(()=>ee(l).format("HH")),[g,m]=La(()=>ee(l).format("mm")),[I,L]=La(()=>ee(l).format("ss")),{handleOnChange:w,value:A,setValue:v}=ha({initialValue:s}),E=ua(()=>r?.datatype?.name||r?.datatype,[r]),R=ua(()=>n(E),[E]),B=ua(()=>["time","timestamp","timestamptz","timetz"].includes(E),[E]),X=C=>{w(C);try{let P=C.target.value,O=ee(P);if(O.isValid()){let xe=O.toDate();d(xe),p(xe),B&&(x(O.format("HH")),m(O.format("mm")),L(O.format("ss")))}}catch{}},H=C=>{if(!C)return;let P=ee(C),O=P;if(B&&u)O=P.hour(ee(u).hour()).minute(ee(u).minute()).second(ee(u).second());else if(B){let xe=ee();O=P.hour(xe.hour()).minute(xe.minute()).second(xe.second()),x(xe.format("HH")),m(xe.format("mm")),L(xe.format("ss"))}d(O.toDate()),p(O.toDate()),v(R?O.format(R):O.toISOString())},U=ua(()=>{try{let C=ee(A);return C.isValid()?A.includes(":")?C.format("LL LTS"):C.format("LL"):A}catch{return A}},[A]);function se(C){C.preventDefault(),A!==s&&a(A)}let F=vd(()=>A!==s?(a(A),!0):!1,[A,s,a]),Ve=()=>{},{handleSave:Ge,handleCancel:ia}=de({onSave:F,onCancel:Ve,readonly:o}),We=C=>{C.preventDefault(),C.stopPropagation();let P=ee();d(P.toDate()),p(P.toDate()),v(R?P.format(R):P.toISOString()),le(P.year().toString()),B&&(x(P.format("HH")),m(P.format("mm")),L(P.format("ss")))},fa=ua(()=>[{value:"0",label:"January"},{value:"1",label:"February"},{value:"2",label:"March"},{value:"3",label:"April"},{value:"4",label:"May"},{value:"5",label:"June"},{value:"6",label:"July"},{value:"7",label:"August"},{value:"8",label:"September"},{value:"9",label:"October"},{value:"10",label:"November"},{value:"11",label:"December"}],[]),N=ua(()=>i.getMonth().toString(),[i]),[J,le]=La(()=>i.getFullYear().toString()),ae=C=>{let P=u?ee(u):ee();u&&(C.hour!==void 0||C.minute!==void 0||C.second!==void 0)&&C.year===void 0&&C.month===void 0&&C.day===void 0?P=ee(u):!u&&(C.hour!==void 0||C.minute!==void 0||C.second!==void 0)&&(P=ee(i));let O=P.set("year",C.year??P.year()).set("month",C.month??P.month()).set("date",C.day??P.date()).set("hour",C.hour??(B?P.hour():0)).set("minute",C.minute??(B?P.minute():0)).set("second",C.second??(B?P.second():0));d(O.toDate()),(C.year!==void 0||C.month!==void 0)&&p(O.toDate()),v(R?O.format(R):O.toISOString()),C.year!==void 0&&le(String(C.year)),B&&(C.hour!==void 0&&x(String(C.hour).padStart(2,"0")),C.minute!==void 0&&m(String(C.minute).padStart(2,"0")),C.second!==void 0&&L(String(C.second).padStart(2,"0")))},Gs=C=>{let P=parseInt(C);ae({month:P})},Ws=C=>{let P=C.target.value;if(le(P),/^\d{1,4}$/.test(P)){let O=parseInt(P);P.length===4&&ae({year:O})}},qt=(C,P)=>{let O=parseInt(P);if(isNaN(O))return;let xe=C==="hour"?O:parseInt(h),_s=C==="minute"?O:parseInt(g),Ks=C==="second"?O:parseInt(I);C==="hour"&&x(P.padStart(2,"0")),C==="minute"&&m(P.padStart(2,"0")),C==="second"&&L(P.padStart(2,"0"));let Xs=C==="hour"&&P.length>=1&&O>=0&&O<=23,Qs=C==="minute"&&P.length>=1&&O>=0&&O<=59,Zs=C==="second"&&P.length>=1&&O>=0&&O<=59;(C==="hour"&&Xs||C==="minute"&&Qs||C==="second"&&Zs)&&ae({hour:xe,minute:_s,second:Ks})};return cs(()=>{if(u){let C=ee(u);le(C.year().toString()),B&&(x(C.format("HH")),m(C.format("mm")),L(C.format("ss")))}},[u,B]),cs(()=>{i&&(u||le(i.getFullYear().toString()))},[i,u]),Ca(Pd,{children:[te("form",{onSubmit:se,children:Ca("div",{className:"ps-flex ps-items-center ps-pr-[var(--studio-cell-spacing)]",children:[te(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:X,type:"text",value:A}),te("input",{type:"submit",className:"ps-sr-only"})]})}),Ca("div",{className:"ps-flex ps-flex-col ps-gap-0 ps-p-2 ps-border-t ps-border-table-border",children:[Ca("div",{className:"ps-flex ps-items-center ps-justify-between ps-mb-1 ps-gap-2",children:[Ca(ea,{value:N,onValueChange:Gs,children:[te(He,{className:"ps-text-xs ps-border-transparent data-[state=open]:ps-border-primary ps-shadow-none ps-bg-neutral-200/40",children:te(aa,{placeholder:"Month"})}),te(Ue,{children:fa.map(C=>te(G,{value:C.value,children:C.label},C.value))})]}),te(ne,{className:"ps-text-xs ps-w-20 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"text",value:J,onChange:Ws,placeholder:"Year"})]}),te(wd,{selected:u,month:i,onSelect:H,onMonthChange:p,disabled:o}),B&&Ca("div",{className:"ps-flex ps-items-center ps-justify-start ps-gap-1 ps-mt-1",children:[te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:h,onChange:C=>qt("hour",C.target.value),placeholder:"HH",min:0,max:23,maxLength:2,disabled:o}),te("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:g,onChange:C=>qt("minute",C.target.value),placeholder:"mm",min:0,max:59,maxLength:2,disabled:o}),te("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),te(ne,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:I,onChange:C=>qt("second",C.target.value),placeholder:"ss",min:0,max:59,maxLength:2,disabled:o})]}),te("code",{className:"ps-sr-only",children:U})]}),te(ce,{onSave:Ge,onCancel:ia,readonly:o,onSetNow:We,showSetNow:!0})]})}function wd({selected:e,month:a,onSelect:t,onMonthChange:o,disabled:r}){return te(So,{mode:"single",selected:e,onSelect:t,disabled:r,month:a,onMonthChange:o,className:"ps-w-full",captionLayout:"dropdown"})}import{useCallback as kd,useState as ms}from"react";import{Fragment as Rd,jsx as Dt,jsxs as Md}from"react/jsx-runtime";function gs(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:s}=e,l=t.nullable===!0,n=String(o),[u,d]=ms(n),[i,p]=ms(o===null),h=w=>{d(w)},x=w=>{p(w)},g=kd(()=>i?o!==null?(a(null),!0):!1:u!==n?(a(u),!0):!1,[u,n,a,i,o]),m=()=>{d(n),p(o===null)},{handleSave:I,handleCancel:L}=de({onSave:g,onCancel:m,readonly:s});return Md(Rd,{children:[Dt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:u}),Dt("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(w=>Dt("button",{onClick:()=>h(w),className:Xt({variant:w===u?"default":"outline"}),disabled:i||s,children:w},w))}),Dt(ce,{onSave:I,onCancel:L,onNullChange:l?x:void 0,isNull:i,readonly:s})]})}import Td,{useState as xs}from"react";import{Fragment as Dd,jsx as bo,jsxs as Ad}from"react/jsx-runtime";function hs(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,l=a===null?"":JSON.stringify(a,null,2),[n,u]=xs(l),[d,i]=xs(a===null),p=L=>{u(L.target.value)},h=L=>{i(L)},x=Td.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let L=n===""?null:JSON.parse(n);return L!==a?(t(L),!0):!1},[n,a,t,d]),g=()=>{u(l),i(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return Ad(Dd,{children:[bo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:bo("textarea",{rows:5,value:n,onChange:p,disabled:d||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),bo(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:d,readonly:r})]})}import Fd,{useState as Ls}from"react";import{Fragment as Bd,jsx as yo,jsxs as Cs}from"react/jsx-runtime";function Is(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,n]=Ls(a===null?"":String(a)),[u,d]=Ls(a===null),i=a===null?"":String(a),p=L=>{n(L.target.value)},h=L=>{d(L)},x=Fd.useCallback(()=>{if(u)return a!==null?(t(null),!0):!1;let L=l===""?null:Number(l);return l!==a?(t(L),!0):!1},[l,a,t,u]),g=()=>{n(i),d(a===null)},{handleSave:m,handleCancel:I}=de({onSave:x,onCancel:g,readonly:r});return Cs(Bd,{children:[Cs("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[yo(et,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),yo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:l,onChange:p,disabled:u||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),yo(ce,{onSave:m,onCancel:I,onNullChange:s?h:void 0,isNull:u,readonly:r})]})}import Nd from"react";import{Fragment as Od,jsx as vo,jsxs as Ss}from"react/jsx-runtime";function bs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=ha({initialValue:r});function n(h){h.preventDefault(),l!==r&&a(l)}let u=Nd.useCallback(()=>l!==r?(a(l),!0):!1,[l,r,a]),d=()=>{},{handleSave:i,handleCancel:p}=de({onSave:u,onCancel:d,readonly:o});return Ss(Od,{children:[Ss("form",{onSubmit:n,children:[vo(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l,disabled:o}),vo("input",{type:"submit",className:"ps-sr-only"})]}),vo(ce,{onSave:i,onCancel:p,readonly:o})]})}import ys from"dayjs";import qd from"dayjs/plugin/localizedFormat";import{useCallback as Ed,useMemo as Hd}from"react";import{Fragment as Ud,jsx as rt,jsxs as wo}from"react/jsx-runtime";ys.extend(qd);function vs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=ha({initialValue:r}),n=Hd(()=>{try{if(!l.includes(":"))return l;let x=/[+-]\d{2}(:\d{2})?$/.test(l),g=ys(`2000-01-01 ${l}`);if(g.isValid())return g.format("h:mm A")+(x?` (${g.format("Z")})`:"");let m=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,I=l.match(m);if(I){let L=parseInt(I[1]||"12",10),w=I[2]||"00",A=I[4]||"",v=L>=12?"PM":"AM";return`${L%12===0?12:L%12}:${w} ${v}${A?` (${A})`:""}`}return l}catch{return l}},[l]);function u(x){x.preventDefault(),l!==r&&a(l)}let d=Ed(()=>l!==r?(a(l),!0):!1,[l,r,a]),i=()=>{},{handleSave:p,handleCancel:h}=de({onSave:d,onCancel:i,readonly:o});return wo(Ud,{children:[wo("form",{onSubmit:u,children:[rt(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:s,type:"text",value:l}),rt("input",{type:"submit",className:"ps-sr-only"})]}),wo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[rt("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),rt("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:n})]}),rt(ce,{onSave:p,onCancel:h,readonly:o})]})}import{jsx as da}from"react/jsx-runtime";function At(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:s,isArray:l}=t.datatype,n=t.isComputed||e.readonly,u=a.getValue(),d=u===void 0?"":u;return r==="datetime"?da(ps,{onSubmit:o,value:d,column:t,readonly:n}):r==="time"?da(vs,{onSubmit:o,value:d,column:t,readonly:n}):r==="json"||l?da(hs,{onSubmit:o,value:d,column:t,readonly:n}):r==="boolean"?da(fs,{onSubmit:o,value:d,column:t,readonly:n}):r==="enum"?da(gs,{onSubmit:o,value:d,options:s,column:t,readonly:n}):r==="numeric"?da(Is,{onSubmit:o,value:d,column:t,readonly:n}):da(bs,{onSubmit:o,value:zd(d)?JSON.stringify(d):d,readonly:n})}import ks from"short-uuid";import{useCallback as ws,useEffect as Ft,useMemo as Ps}from"react";import{v4 as Vd}from"uuid";function st(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:s}=V(),{data:l,dataUpdatedAt:n}=Pe(),u=n===ft,[d]=$("view"),[i,p]=Ia({table:{defaultValue:null,parse:v=>v,serialize:v=>v??""},schema:{defaultValue:null,parse:v=>v||r.defaultSchema||"public",serialize:v=>v||r.defaultSchema||"public"}}),[,h]=$("pageIndex",{parse:v=>v,serialize:v=>v??""}),[,x]=$("sort",{parse:v=>v,serialize:v=>v??""}),[,g]=$("view",{parse:v=>v,serialize:v=>v??""}),m=Ps(()=>Object.values(l.schemas[t]?.tables||{}),[l.schemas,t]),I=Ps(()=>Object.values(l.schemas).reduce((v,E)=>v+Object.keys(E.tables).length,0),[l.schemas]),[L]=m;Ft(()=>{if(d==="schema"||u)return;let E=new URLSearchParams(window.location.hash.slice(1)).has("view");if(i?.table&&i.schema===t){let R=m.find(B=>B.name===i.table);if(R){e!==R&&a(R),E||g("table");return}}if(m.length>0){let R=e&&e.schema===t&&m.some(B=>B.name===e.name);!R&&L?(a(L),p({table:L.name,schema:t}),g("table")):R&&!E?g("table"):(!L&&i?.table&&p({table:null,schema:t}),E||g("table"))}else e&&a(null),i?.table&&p({table:null,schema:t}),E||g("table")},[u,i,m,L,e,t,a,p,g,d]);let w=ws(v=>{e!==v&&(a(v),p({table:v.name,schema:v.schema}),g("table"),h(null),x(null))},[e,a,p,h,x,g]),A=ws(v=>{v!==t&&(a(null),o(v),p({table:null,schema:v}),d!=="schema"&&g("table"),h(null),x(null))},[t,o,a,p,h,x,g,d]);return Ft(()=>{i?.schema!==t&&!u&&p(v=>({...v,schema:t}))},[t,i?.schema,p,u]),Ft(()=>{i?.schema&&i.schema!==t&&o(i.schema)},[i?.schema,t,o]),Ft(()=>{n!==-1&&s({event:"studio_launched",payload:{event_id:Vd(),timestamp:new Date().toISOString(),table_count:I}})},[m,s,n,I]),{tables:m,activeTable:e,activeSchema:t,isLoading:u,handleTableChange:w,handleSchemaChange:A}}import{jsx as Rs}from"react/jsx-runtime";function Ms(e){let{cell:a,column:t}=e,{fkSchema:o,fkTable:r,fkColumn:s}=t,{handleSchemaChange:l,handleTableChange:n}=st(),{setAppliedFilter:u}=gt(),{data:d}=Pe();if(o!==null&&r!==null&&s!==null){let i=d.schemas[o]?.tables[r];if(i!==void 0)return Rs(q,{size:"xs",variant:"outline",onClick:p=>{p.stopPropagation(),l(o),n(i),u({kind:"FilterGroup",id:ks.generate(),after:"and",filters:[{kind:"ColumnFilter",id:ks.generate(),column:s,operator:"=",value:a.getValue(),after:"and"}]})},children:Rs(va,{size:12})})}return null}import{useReactTable as Gd}from"@tanstack/react-table";import{omit as Wd}from"remeda";import{Fragment as _d,jsx as lt}from"react/jsx-runtime";function Ts(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!xt();function s(u,d){o(i=>{let p=[...i];return p[u]={...p[u],...d},p})}let l=Object.values(a.options.columns).map(u=>u.id==="__ps_select"?{...u,cell(){return()=>lt(Ct,{})}}:{...u,cell({cell:d}){return i=>lt(bt,{cellComponent:It({cell:d,column:u.meta}),linkComponent:null,inputComponent:At({cell:d,column:u.meta,onSubmit(p){s(i.rowIndex,{[u.id]:p})},readonly:r})})}}),n=Gd({...a.options,columns:l,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:Wd(a.options.state,["pagination","sorting"])});return lt(_d,{children:n.getRowModel().rows.map((u,d)=>lt(la,{children:u.getVisibleCells().map((i,p)=>{if(typeof i.column.columnDef.cell=="function"){let h=i.column.columnDef.cell(i.getContext());return lt(h,{...ja(i.column,"cell"),rowIndex:d},p)}return null})},d))})}import{jsx as ra,jsxs as Po}from"react/jsx-runtime";function Bt(e){let{isFullscreen:a,toggleFullscreen:t,toggleNavigation:o,isNavigationOpen:r}=V();return ra("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:ra("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:Po("div",{className:"ps-flex ps-flex-grow ps-items-center ps-justify-between",children:[Po("div",{className:"ps-flex ps-items-center ps-gap-2",children:[ra(q,{variant:"outline",size:"sm",onClick:o,children:r?ra(Ze,{}):ra(Je,{})}),e.children]}),Po("div",{className:"ps-flex ps-items-center ps-gap-2",children:[e.endContent,ra(q,{variant:"outline",size:"icon",onClick:t,children:a?ra(Ea,{}):ra(qa,{})})]})]})})})}import{Fragment as ko,jsx as W,jsxs as nt}from"react/jsx-runtime";function Ds(e){let a=!!Kd(),{activeTable:t,onError:o}=V(),{sortingState:r,setSortingState:s}=pr(),{paginationState:l,setPaginationState:n}=ht(),[u,d]=Zd([]),{appliedFilter:i,setAppliedFilter:p,editingFilter:h,setEditingFilter:x,totalEditingFilters:g}=gt(),{data:m,isFetching:I,refetch:L}=nr({...l,sortOrder:r,filter:i}),{deleteSelection:w,isSelecting:A,rowSelectionState:v,setRowSelectionState:E}=cr(m),R=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),B=xt(),X=lr(),H=ur();if(Qd(()=>d([]),[t]),!t)return null;function U(){X.mutate(u,{onError:o,onSuccess(){Jd.success("Rows inserted successfully"),d([])}})}function se(){d(N=>[...N,{}])}function F(){d([])}function Ve(N,J,le){H.mutate({details:{changes:{[J.name]:N},row:le,table:t},options:{}})}function Ge(N){N===!0?x(i):p(h)}let ia=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header({table:J,header:le}){return ae=>W(jr,{table:J,header:le,...ae,children:W(rs,{header:le,column:N})})},cell({cell:J}){return le=>W(bt,{containerProps:le,cellComponent:It({cell:J,column:N}),linkComponent:Ms({cell:J,column:N}),inputComponent:At({cell:J,column:N,readonly:R,onSubmit(ae){return Ve(ae,N,J.row.original)}})})}})),We=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,size:35,minSize:35,header({table:N}){return J=>W(_a,{...J,children:W(wr,{table:N,readonly:R})})},cell({row:N}){return J=>W(Lt,{...J,children:W(Pr,{row:N,readonly:R})})}}],fa=[...ia,...We].sort(jd);return nt(ko,{children:[nt(Bt,{endContent:W(q,{variant:"outline",size:"icon",onClick:()=>void L(),disabled:I,children:W(Ga,{className:c("ps-h-4 ps-w-4",I&&"ps-animate-spin")})}),children:[nt(Ko,{onOpenChange:Ge,children:[W(Xo,{asChild:!0,children:W(q,{variant:"outline",size:"sm",className:c(g>0&&"ps-border-primary"),children:nt("span",{className:"ps-flex ps-items-center ps-gap-2",children:[W(Aa,{}),g>0&&W(it,{children:W(Xd,{transition:{layout:{duration:.12}},children:g})})]})})}),W(Zt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:W(Hr,{filter:h,setFilter:x,setAppliedFilter:N=>{x(N),p(N)},table:t})})]}),W(q,{variant:"outline",size:"sm",onClick:se,disabled:B>0,children:"Insert row"}),u.length>0&&nt(ko,{children:[W(q,{variant:"secondary",size:"sm",onClick:U,children:"Save"}),W(q,{variant:"ghost",size:"sm",onClick:F,children:"Cancel"})]}),A&&W(ko,{children:W(q,{variant:"secondary",size:"sm",onClick:w,children:"Delete"})})]}),W(Jr,{columnDefs:fa,getBeforeRows:N=>W(Ts,{table:N,stagedRows:u,setStagedRows:d}),isLoading:I,isProcessing:a,onPaginationChange:n,onRowSelectionChange:E,onSortingChange:s,pageCount:$d(m?.filteredRowCount??1/0,l.pageSize),paginationState:l,rows:m?.rows??[],rowSelectionState:v,sortingState:r})]})}function $d(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function jd(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{jsx as Yd}from"react/jsx-runtime";function As(){return Yd("div",{children:"BasicView"})}import{Slot as ei}from"@radix-ui/react-slot";import{Fragment as ri,jsx as _,jsxs as Nt}from"react/jsx-runtime";function ge({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=st(),[s,l]=$("view"),[,n]=$("table",{parse:i=>i,serialize:i=>i??""}),[,u]=$("schema",{parse:i=>i,serialize:i=>i??""}),d=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return Nt("div",{className:d,children:[_(ge.SchemaSelector,{}),_(ge.Block,{label:"Studio",children:_(ge.Item,{asChild:!0,isActive:s==="schema",onClick:()=>{n(null),u(null),l("schema")},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:_("a",{href:"#view=schema",children:"Schema visualisation"})})}),_(ge.Block,{label:"Tables",children:a.length>0?a.map(i=>_(ge.Item,{asChild:!0,isActive:t===i&&s==="table",onClick:()=>{r(i)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:_("a",{href:`#table=${i.name}&schema=${i.schema}&view=table`,children:i.name})},`${i.schema}-${i.name}`)):o?Array(4).fill(null).map((i,p)=>_(ge.Item,{wrapChildrenInSpan:!1,children:_(ga,{className:"ps-h-3 ps-w-full"})},p)):_(ge.Item,{children:"No tables found"})})]})}var ai=({className:e,label:a,children:t,...o})=>Nt("div",{className:e,...o,children:[Nt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[_(Wa,{size:16,className:"ps-text-muted-foreground/60"}),_("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),_("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),ti=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:s=!0,...l})=>_(a?ei:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:c("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...l,children:s?_("span",{className:"ps-truncate",children:r}):_(ri,{children:"children"})}),oi=()=>{let{data:e,isLoading:a}=Pe(),{activeSchema:t,handleSchemaChange:o}=st(),r=Object.keys(e.schemas||{});return _("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:Nt(ea,{value:t,onValueChange:o,children:[_(He,{className:"ps-text-xs",label:"Schema",children:_(aa,{placeholder:"Select schema"})}),_(Ue,{children:a?_(G,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(s=>_(G,{value:s,className:"ps-text-xs",children:s},s)):_(G,{value:"no-schemas",children:"No schemas found"})})]})})};ge.Block=ai;ge.Item=ti;ge.SchemaSelector=oi;import{useMemo as si}from"react";var Fs={name:"No Tables Found",fields:[{name:"message",type:"info",isRequired:!0}]};function Bs(){let{data:e,isLoading:a}=Pe(),{activeSchema:t}=V();return si(()=>{if(a||!e||!t)return{tables:[Fs],relationships:[]};let o=e.schemas[t];if(!o||Object.keys(o.tables).length===0)return{tables:[Fs],relationships:[]};let r=[],s={};Object.values(o.tables).forEach(n=>{let u=[];Object.values(n.columns).forEach(i=>{u.push({name:i.name,type:i.datatype.name,isPrimary:i.isInPrimaryKey,isRequired:!i.nullable})});let d={name:n.name,fields:u};r.push(d),s[n.name]=d});let l=[];return r.forEach(n=>{let u=o.tables[n.name];u&&Object.values(u.columns).forEach(d=>{d.fkTable&&d.fkColumn&&l.push({from:d.fkTable,to:n.name,type:"1:n"})})}),{tables:r,relationships:l}},[e,a,t])}import"reactflow/dist/style.css";import{memo as li,useCallback as ni,useEffect as Ns,useMemo as Ot}from"react";import ui,{addEdge as di,Background as ii,ConnectionLineType as fi,Controls as ci,Handle as Os,MiniMap as pi,Position as qs,useEdgesState as mi,useNodesState as gi}from"reactflow";import{jsx as Y,jsxs as ut}from"react/jsx-runtime";var Hs=li(({data:e})=>{let{activeSchema:a}=V(),t=e.label==="No Tables Found",o=(r,s,l)=>t&&s==="info"?Y(Ae,{size:16}):l?Y(Oa,{size:16}):Y(Ba,{size:16});return ut("div",{className:c("ps-min-w-[250px] ps-shadow-xl ps-rounded-md ps-border ps-border-border ps-bg-card",t&&"ps-border-orange-400"),children:[Y(Os,{type:"target",position:qs.Top,style:{opacity:0}}),ut("div",{className:c("ps-px-4 ps-py-3 ps-border-b ps-flex ps-justify-between ps-items-center",t&&"ps-bg-orange-100 dark:ps-bg-orange-950 ps-text-orange-700 dark:ps-text-orange-300"),children:[Y("div",{className:"ps-font-bold",children:e.label}),!t&&Y("a",{href:`#/view=table&table=${encodeURIComponent(e.label)}&schema=${encodeURIComponent(a)}`,rel:"noopener noreferrer",className:"ps-text-muted-foreground hover:ps-text-primary",title:`Open table ${e.label}`,onClick:r=>r.stopPropagation(),children:Y($e,{className:"ps-w-4 ps-h-4"})})]}),Y("div",{className:"ps-px-4 ps-py-2",children:t?ut("div",{className:"ps-flex ps-items-center ps-gap-2 ps-py-8 ps-text-sm ps-text-muted-foreground",children:[Y("span",{className:"ps-text-orange-500",children:Y(Ae,{className:"ps-w-5 ps-h-5"})}),Y("span",{className:"ps-flex-1",children:"No database tables found. Connect to a database to see your schema."})]}):e.fields.map((r,s)=>ut("div",{className:c("ps-flex ps-items-center ps-gap-2 ps-py-2 ps-text-sm",r.isPrimary&&"ps-text-primary"),children:[Y("span",{className:"ps-text-muted-foreground",children:o(r.name,r.type,r.isPrimary)}),Y("span",{className:"ps-flex-1",children:r.name}),Y("span",{className:"ps-text-xs ps-text-muted-foreground",children:r.type})]},s))}),Y(Os,{type:"source",position:qs.Bottom,style:{opacity:0}})]})});Hs.displayName="TableNode";var xi={tableNode:Hs};function Es(e,a){if(e.length<=3)return e.map((s,l)=>({id:s.name,type:"tableNode",data:{label:s.name,fields:s.fields},position:{x:350*l,y:50}}));let t=350,o=300,r=Math.ceil(Math.sqrt(e.length));return e.map((s,l)=>{let n=l%r,u=Math.floor(l/r);return{id:s.name,type:"tableNode",data:{label:s.name,fields:s.fields},position:{x:n*t,y:u*o}}})}function Us({tables:e,relationships:a}){let t=Ot(()=>new Set(e.map(x=>x.name)),[e]),o=Ot(()=>a.filter(x=>t.has(x.from)&&t.has(x.to)),[a,t]),r=Ot(()=>Es(e,o),[e,o]),s=Ot(()=>o.map((x,g)=>({id:`e${g}`,source:x.from,target:x.to,animated:!0,label:x.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})),[o]),[l,n,u]=gi(r),[d,i,p]=mi(s);Ns(()=>{n(Es(e,o))},[e,o,n]),Ns(()=>{i(o.map((x,g)=>({id:`e${g}`,source:x.from,target:x.to,animated:!0,label:x.type,type:"smoothstep",style:{stroke:"hsl(var(--primary))",strokeWidth:1,strokeDasharray:"5 5"},labelStyle:{fill:"hsl(var(--primary))",fontSize:12}})))},[o,i]);let h=ni(x=>i(g=>di(x,g)),[i]);return Y("div",{className:"ps-w-full ps-h-full ps-bg-card",children:ut(ui,{nodes:l,edges:d,onNodesChange:u,onEdgesChange:p,onConnect:h,connectionLineType:fi.SmoothStep,nodeTypes:xi,fitView:!0,fitViewOptions:{padding:.2},children:[Y(ii,{className:"ps-bg-muted",gap:16}),Y(ci,{showInteractive:!1,className:"!ps-bg-[hsl(var(--studio-background))] !ps-border-[hsl(var(--studio-border))] !ps-text-[hsl(var(--studio-foreground))]"}),Y(pi,{pannable:!0})]})})}import{Fragment as hi,jsx as Ro,jsxs as Li}from"react/jsx-runtime";function zs(){let{tables:e,relationships:a}=Bs();return console.log("Detected relationships:",a),Li(hi,{children:[Ro(Bt,{}),Ro("div",{className:"ps-w-full ps-h-full",children:Ro(Us,{tables:e,relationships:a})})]})}import{jsx as ye,jsxs as bi}from"react/jsx-runtime";function Ii(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?ye(rr,{adapter:a,onError:t,onTelemetryEvent:o,children:ye(Si,{})}):(console.error("No adapter provided to Studio component"),ye("div",{children:"Error: No adapter provided"}))}function Si(){let{isFullscreen:e,isNavigationOpen:a}=V(),[t]=$("view"),o=c("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return ye("div",{"data-fullscreen":e,className:o,children:bi("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[ye(Ci,{mode:"wait",children:a&&ye(Vs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:ye(ge,{})})}),ye(Vs.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:t==="schema"?ye(zs,{}):!t||t==="table"?ye(Ds,{}):ye(As,{})})]})})}export{Ii as Studio};
21
21
  /*! Bundled license information:
22
22
 
23
23
  lucide-react/dist/esm/shared/src/utils.js:
@@ -328,4 +328,4 @@ lucide-react/dist/esm/lucide-react.js:
328
328
  * @license MIT
329
329
  *)
330
330
  */
331
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvbnVxcy50cyIsICIuLi8uLi91aS9saWIvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NsYXNzLWdyb3VwLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9scnUtY2FjaGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3BhcnNlLWNsYXNzLW5hbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NvbmZpZy11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY2xhc3NsaXN0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1qb2luLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2Zyb20tdGhlbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3ZhbGlkYXRvcnMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2RlZmF1bHQtY29uZmlnLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jb25maWdzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9leHRlbmQtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LW1lcmdlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9BY3RpdmVUYWJsZVZpZXcudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL3NoYXJlZC9zcmMvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9kZWZhdWx0QXR0cmlidXRlcy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL0ljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9jcmVhdGVMdWNpZGVJY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGVjay50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWFsZXJ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWhlbHAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3B5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29ybmVyLWRvd24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2ZpbHRlci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2dyaXAtdmVydGljYWwudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9oYXNoLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LXJvdW5kLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLW9mZi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3JlZnJlc2gtY3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9zcXVhcmUtYXJyb3ctcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3RhYmxlLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1VSTERlZmF1bHRzSGFuZGxlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHMudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NlbGVjdC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3VzZUxvY2FsU3RvcmFnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy90aGVtZS50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTWVkaWFRdWVyeS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9zdHlsZWRDb21wb25lbnRzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0V4cGxvcmVyLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9Mb2dvLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9pbmRleC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXIudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2FsZW5kYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vbGluay9nZXQtbGluay50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS50cyIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpb0hlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0Jhc2ljVmlldy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zY2hlbWEtdmlzdWFsaXphdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL3NjaGVtYS9WaXN1YWxpc2VyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vc2NoZW1hL1NjaGVtYVZpZXcudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi4vaG9va3MvbnVxc1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IEJhc2ljVmlldyB9IGZyb20gXCIuL0Jhc2ljVmlld1wiO1xuaW1wb3J0IHsgU3R1ZGlvQ29udGV4dFByb3ZpZGVyLCB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vTmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgU2NoZW1hVmlldyB9IGZyb20gXCIuL3NjaGVtYS9TY2hlbWFWaWV3XCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBbdmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcblxuICBjb25zdCBjb250YWluZXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbCBwcy1taW4taC0wIHBzLW1heC1oLWZ1bGxcIixcbiAgICBpc0Z1bGxzY3JlZW4gJiYgXCJwcy1maXhlZCBwcy1pbnNldC0wIHBzLXotWzk5OTldIHBzLWJnLWJhY2tncm91bmQgcHMtcC0yXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtZnVsbHNjcmVlbj17aXNGdWxsc2NyZWVufSBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWdhcC0wIHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTUwIHBzLXJlbGF0aXZlIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IFwiYXV0b1wiLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbiAvPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC0xMDAgcHMtZmxleC1jb2wgcHMtcC1weCBwcy1yb3VuZGVkLWxnIHBzLXNlbGYtc3RhcnQgcHMtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtbWF4LWgtZnVsbCBwcy1vdmVyZmxvdy1jbGlwXCJcbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmlldyA9PT0gXCJzY2hlbWFcIiA/IDxTY2hlbWFWaWV3IC8+IDogIXZpZXcgfHwgdmlldyA9PT0gXCJ0YWJsZVwiID8gPEFjdGl2ZVRhYmxlVmlldyAvPiA6IDxCYXNpY1ZpZXcgLz59XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgIi8vIHdlJ3JlIGVuc3VyaW5nIHRoYXQga2V5cyBhcmUgdHlwZS1zYWZlLiB0aGVyZSBpcyBubyBwcm9wZXIgd2F5IHRvIGFjaGlldmUgaXQgaW4gYG51cXNgLlxuLy8gdGhlIGBkZWNsYXJlIG1vZHVsZWAgdGVjaG5pcXVlIHJlc3VsdHMgaW4gYWRkaW5nIG92ZXJsb2Fkcywgbm90IG92ZXJyaWRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucy5cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IHtcbiAgdHlwZSBPcHRpb25zLFxuICB0eXBlIFBhcnNlcixcbiAgdXNlUXVlcnlTdGF0ZSBhcyB1c2VRdWVyeVN0YXRlT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZVJldHVybixcbiAgdXNlUXVlcnlTdGF0ZXMgYXMgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc09wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNSZXR1cm4sXG59IGZyb20gXCJudXFzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmV4cG9ydCAqIGZyb20gXCJudXFzXCI7XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5ID0gXCJwYWdlSW5kZXhcIiB8IFwicGFnZVNpemVcIiB8IFwidGFibGVcIiB8IFwic29ydFwiIHwgXCJzY2hlbWFcIiB8IFwidGVzdFwiIHwgXCJmaWx0ZXJcIiB8IFwidmlld1wiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgVGFibGVIZWFkIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVF1ZXJ5IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnlcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlVXBkYXRlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZVNvcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNvcnRpbmdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCB9IGZyb20gXCIuL2NlbGwvU2VsZWN0SGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0Um93Q2VsbCB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlclwiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiLi9saW5rL2dldC1saW5rXCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuaW1wb3J0IHsgU3R1ZGlvSGVhZGVyIH0gZnJvbSBcIi4vU3R1ZGlvSGVhZGVyXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlVGFibGVWaWV3UHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVRhYmxlVmlldyhfcHJvcHM6IEFjdGl2ZVRhYmxlVmlld1Byb3BzKSB7XG4gIGNvbnN0IGlzTXV0YXRpbmcgPSBCb29sZWFuKHVzZUlzTXV0YXRpbmcoKSk7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKHsgdGFibGUsIGhlYWRlciB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gaGVhZGVyPXtoZWFkZXJ9IHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICA8L0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNvbnRhaW5lclByb3BzPXtwcm9wc31cbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBsaW5rQ29tcG9uZW50PXtMaW5rKHsgY2VsbCwgY29sdW1uIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBzaXplOiAzNSxcbiAgICAgIG1pblNpemU6IDM1LFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlSGVhZCB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICA8U2VsZWN0SGVhZGVyQ2VsbCB0YWJsZT17dGFibGV9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q2VsbCB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9DZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF0gc2F0aXNmaWVzIChDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ICYgeyBkaXNhYmxlRHJhZ2dpbmc/OiBib29sZWFuIH0pW107XG5cbiAgY29uc3QgY29sdW1uRGVmcyA9IFsuLi5jb25jcmV0ZUNvbHVtbkRlZnMsIC4uLnZpcnR1YWxDb2x1bW5EZWZzXS5zb3J0KGRlZmF1bHRDb2x1bW5Tb3J0aW5nKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R1ZGlvSGVhZGVyXG4gICAgICAgIGVuZENvbnRlbnQ9e1xuICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pnt0b3RhbEVkaXRpbmdGaWx0ZXJzfTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9Qb3BvdmVyVHJpZ2dlcj5cbiAgICAgICAgICA8UG9wb3ZlckNvbnRlbnQgYWxpZ249XCJzdGFydFwiIHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJwcy13LW1pbiBwcy1tYXgtaC1bNTIwcHhdIHBzLW92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPEZpbHRlclRyZWVcbiAgICAgICAgICAgICAgZmlsdGVyPXtlZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICBzZXRGaWx0ZXI9e3NldEVkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgIHNldEFwcGxpZWRGaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRFZGl0aW5nRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgZWRpdGluZyBzdGF0ZVxuICAgICAgICAgICAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBhcHBsaWVkIHN0YXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHRhYmxlPXthY3RpdmVUYWJsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17bmV3U3RhZ2VkUm93fSBkaXNhYmxlZD17aXNJbnNlcnRpbmcgPiAwfT5cbiAgICAgICAgICBJbnNlcnQgcm93XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICB7c3RhZ2VkUm93cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17c2F2ZVN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICBTYXZlXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIHsvKiBOZWVkcyBzb21lIGltcHJvdmVtZW50ICovfVxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkcm9wU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1NlbGVjdGluZyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2RlbGV0ZVNlbGVjdGlvbn0+XG4gICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0dWRpb0hlYWRlcj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTlNBeE1tZ3hOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVElnTlNBM0lEY3ROeUEzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTUgMTJoMTQnLCBrZXk6ICcxYXlzMGgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTIgNSA3IDctNyA3Jywga2V5OiAneHF1ejRjJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlQWxlcnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGJHbHVaU0I0TVQwaU1USWlJSGd5UFNJeE1pSWdlVEU5SWpnaUlIa3lQU0l4TWlJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWk0d01TSWdlVEU5SWpFMklpQjVNajBpTVRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1hbGVydFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUFsZXJ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlQWxlcnQnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMicsIHgyOiAnMTInLCB5MTogJzgnLCB5MjogJzEyJywga2V5OiAnMXBrZXVoJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMi4wMScsIHkxOiAnMTYnLCB5MjogJzE2Jywga2V5OiAnNGRmcTkwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVBbGVydDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEhhc2hcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGJHbHVaU0I0TVQwaU5DSWdlREk5SWpJd0lpQjVNVDBpT1NJZ2VUSTlJamtpSUM4K0NpQWdQR3hwYm1VZ2VERTlJalFpSUhneVBTSXlNQ0lnZVRFOUlqRTFJaUI1TWowaU1UVWlJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRXdJaUI0TWowaU9DSWdlVEU5SWpNaUlIa3lQU0l5TVNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRZaUlIZ3lQU0l4TkNJZ2VURTlJak1pSUhreVBTSXlNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvaGFzaFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEhhc2ggPSBjcmVhdGVMdWNpZGVJY29uKCdIYXNoJywgW1xuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzknLCB5MjogJzknLCBrZXk6ICc0bGh0Y3QnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzE1JywgeTI6ICcxNScsIGtleTogJ3Z5dTBrZCcgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMCcsIHgyOiAnOCcsIHkxOiAnMycsIHkyOiAnMjEnLCBrZXk6ICcxZ2dwOG8nIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTYnLCB4MjogJzE0JywgeTE6ICczJywgeTI6ICcyMScsIGtleTogJ3dleWNncCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVdU5TQTNMalVnTWk0eklESXVNMkV4SURFZ01DQXdJREFnTVM0MElEQnNNaTR4TFRJdU1XRXhJREVnTUNBd0lEQWdNQzB4TGpSTU1Ua2dOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNakVnTWkwNUxqWWdPUzQySWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpjdU5TSWdZM2s5SWpFMUxqVWlJSEk5SWpVdU5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXkgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXknLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNS41IDcuNSAyLjMgMi4zYTEgMSAwIDAgMCAxLjQgMGwyLjEtMi4xYTEgMSAwIDAgMCAwLTEuNEwxOSA0Jywga2V5OiAnZzBmbGRrJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIxIDItOS42IDkuNicsIGtleTogJzFqMGhvOCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzcuNScsIGN5OiAnMTUuNScsIHI6ICc1LjUnLCBrZXk6ICd5cWIzaHInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBSZWZyZXNoQ3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk15QXhNbUU1SURrZ01DQXdJREVnT1MwNUlEa3VOelVnT1M0M05TQXdJREFnTVNBMkxqYzBJREl1TnpSTU1qRWdPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakVnTTNZMWFDMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0F4TW1FNUlEa2dNQ0F3SURFdE9TQTVJRGt1TnpVZ09TNDNOU0F3SURBZ01TMDJMamMwTFRJdU56Uk1NeUF4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE5rZ3pkalVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcmVmcmVzaC1jd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFJlZnJlc2hDdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ1JlZnJlc2hDdycsIFtcbiAgWydwYXRoJywgeyBkOiAnTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDgnLCBrZXk6ICd2OWg1dmMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgM3Y1aC01Jywga2V5OiAnMXE3dG8wJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2Jywga2V5OiAnM3VpZmwzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMTZIM3Y1Jywga2V5OiAnMWN2Njc4JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBSZWZyZXNoQ3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBTcXVhcmVBcnJvd1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDRJREV5YURnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFeUlERTJJRFF0TkMwMExUUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9zcXVhcmUtYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBTcXVhcmVBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignU3F1YXJlQXJyb3dSaWdodCcsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMTJoOCcsIGtleTogJzF3Y3lldicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMiAxNiA0LTQtNC00Jywga2V5OiAnMWk5emN2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBTcXVhcmVBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVGFibGUyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PU0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNblkwYlRZdE5tZ3hNR0V5SURJZ01DQXdJREVnTWlBeWRqUk5PU0F6ZGpFNGJUQWdNR2d4TUdFeUlESWdNQ0F3SURBZ01pMHlWamxOT1NBeU1VZzFZVElnTWlBd0lEQWdNUzB5TFRKV09XMHdJREJvTVRnaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RhYmxlLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUYWJsZTIgPSBjcmVhdGVMdWNpZGVJY29uKCdUYWJsZTInLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDNINWEyIDIgMCAwIDAtMiAydjRtNi02aDEwYTIgMiAwIDAgMSAyIDJ2NE05IDN2MThtMCAwaDEwYTIgMiAwIDAgMCAyLTJWOU05IDIxSDVhMiAyIDAgMCAxLTItMlY5bTAgMGgxOCcsXG4gICAgICBrZXk6ICdndWdqODMnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGUyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgWFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRnZ05pQTJJREU0SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTAySURZZ01USWdNVElpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMveFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKCdYJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTggNiA2IDE4Jywga2V5OiAnMWJsNWY4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTYgNiAxMiAxMicsIGtleTogJ2Q4Yms2dicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgWDtcbiIsICJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLXB4LTIuNSBwcy1weS0wLjUgcHMtdGV4dC14cyBwcy1mb250LXNlbWlib2xkIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTIgZm9jdXM6cHMtcmluZy1yaW5nIGZvY3VzOnBzLXJpbmctb2Zmc2V0LTJcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvODBcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFkZ2VQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKGJhZGdlVmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9O1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctYXV0byBwcy1mbGV4IHBzLWl0ZW1zLXN0YXJ0IHBzLWgtZnVsbFwiPlxuICAgICAgPHRhYmxlIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtdy1mdWxsIHBzLWNhcHRpb24tYm90dG9tIHBzLXRleHQtc21cIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiO1xuXG5jb25zdCBUYWJsZUhlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUhlYWRlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkZXJcIjtcblxuY29uc3QgVGFibGVCb2R5ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGJvZHkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cjpsYXN0LWNoaWxkXTpwcy1ib3JkZXItMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZUJvZHlcIjtcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Zm9vdFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtYm9yZGVyLXQgcHMtYmctbXV0ZWQvNTAgcHMtZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6cHMtYm9yZGVyLWItMFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVGb290ZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlRm9vdGVyXCI7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtYm9yZGVyLWIgcHMtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6cHMtYmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOnBzLWJnLW11dGVkXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIjtcblxuY29uc3QgVGFibGVIZWFkID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0aFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC0xMCBwcy1weC0yIHBzLXRleHQtbGVmdCBwcy1hbGlnbi1taWRkbGUgcHMtZm9udC1tZWRpdW0gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUhlYWQuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZFwiO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1hbGlnbi1taWRkbGVcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2VsbFwiO1xuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxjYXB0aW9uIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtbXQtNCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIjtcblxuZXhwb3J0IHsgVGFibGUsIFRhYmxlSGVhZGVyLCBUYWJsZUJvZHksIFRhYmxlRm9vdGVyLCBUYWJsZUhlYWQsIFRhYmxlUm93LCBUYWJsZUNlbGwsIFRhYmxlQ2FwdGlvbiB9O1xuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZUluc2VydCgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiaW5zZXJ0XCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5pbnNlcnQoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHQsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MobmV3RGF0YSkge1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGE8QWRhcHRlclF1ZXJ5UmVzdWx0PihcbiAgICAgICAge1xuICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAvLyBoZXJlIHdlIHBhcnRpYWxseSBtYXRjaCB0aGUgcXVlcnkga2V5IHRvIGdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICAgIH0sXG4gICAgICAgIChvbGREYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKG9sZERhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9sZERhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9sZERhdGEsXG4gICAgICAgICAgICByb3dzOiBbLi4ubmV3RGF0YS5yb3dzLCAuLi5vbGREYXRhLnJvd3NdLFxuICAgICAgICAgIH0gc2F0aXNmaWVzIEFkYXB0ZXJRdWVyeVJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgUmVhY3RRdWVyeURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc29ubmVyXCI7XG5pbXBvcnQgeyBOdXFzSGFzaEFkYXB0ZXIgfSBmcm9tIFwiLi9OdXFzSGFzaEFkYXB0ZXJcIjtcbmltcG9ydCB7IFN0dWRpb1RlbGVtZXRyeUV2ZW50IH0gZnJvbSBcIi4vU3R1ZGlvXCI7XG5pbXBvcnQgeyBVUkxEZWZhdWx0c0hhbmRsZXIgfSBmcm9tIFwiLi9VUkxEZWZhdWx0c0hhbmRsZXJcIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFjdGl2ZVNjaGVtYTogc3RyaW5nO1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVNjaGVtYTogKHNjaGVtYTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHByb3BzLmFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIHNldEFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuLFxuICAgICAgICAgICAgaXNOYXZpZ2F0aW9uT3BlbixcbiAgICAgICAgICAgIHRvZ2dsZU5hdmlnYXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxVUkxEZWZhdWx0c0hhbmRsZXIgLz5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R1ZGlvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvTnVxc0hhc2hBZGFwdGVyPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyBTdHVkaW8gY29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgU3R1ZGlvLlByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHVkaW8oKTogU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU3R1ZGlvQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYHVzZVN0dWRpb2AgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBTdHVkaW9Db250ZXh0LlByb3ZpZGVyYFwiKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHtcbiAgRGV2dG9vbHNCdXR0b25Qb3NpdGlvbixcbiAgRGV2dG9vbHNFcnJvclR5cGUsXG4gIERldnRvb2xzUG9zaXRpb24sXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGxvZ28gdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbS1yaWdodCcuXG4gICAqL1xuICBidXR0b25Qb3NpdGlvbj86IERldnRvb2xzQnV0dG9uUG9zaXRpb25cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20nLlxuICAgKi9cbiAgcG9zaXRpb24/OiBEZXZ0b29sc1Bvc2l0aW9uXG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzKFxuICBwcm9wczogRGV2dG9vbHNPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHtcbiAgICBidXR0b25Qb3NpdGlvbixcbiAgICBwb3NpdGlvbixcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGVycm9yVHlwZXMsXG4gICAgc3R5bGVOb25jZSxcbiAgICBzaGFkb3dET01UYXJnZXQsXG4gIH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29scyh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25Qb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0QnV0dG9uUG9zaXRpb24oYnV0dG9uUG9zaXRpb24pXG4gICAgfVxuICB9LCBbYnV0dG9uUG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgfVxuICB9LCBbcG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEluaXRpYWxJc09wZW4oaW5pdGlhbElzT3BlbiB8fCBmYWxzZSlcbiAgfSwgW2luaXRpYWxJc09wZW4sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gPGRpdiBkaXI9XCJsdHJcIiBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIiByZWY9e3JlZn0+PC9kaXY+XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCByZW5kZXIsIGxhenksIHNldHVwU3R5bGVTaGVldCwgY3JlYXRlQ29tcG9uZW50LCBtZXJnZVByb3BzIH0gZnJvbSAnLi9jaHVuay9IUjdZWFo1SC5qcyc7XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHMudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0XG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc0NvbXBvbmVudC9DUElPWlM1WC5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbC50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNvbkNsb3NlO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlXG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgICB0aGlzLiNvbkNsb3NlID0gY3JlYXRlU2lnbmFsKG9uQ2xvc2UpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIHNldE9uQ2xvc2Uob25DbG9zZSkge1xuICAgIHRoaXMuI29uQ2xvc2VbMV0oKCkgPT4gb25DbG9zZSk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgY29uc3QgW29uQ2xvc2VdID0gdGhpcy4jb25DbG9zZTtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzUGFuZWxDb21wb25lbnQvT0tGNkU0NVIuanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbG9zZSgpIHtcbiAgICAgICAgICByZXR1cm4gb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMsIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH07XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IERldnRvb2xzRXJyb3JUeXBlIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxuXG4gIC8qKlxuICAgKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAgICogQGRlZmF1bHQgeyBoZWlnaHQ6ICc1MDBweCcgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9XG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZGV2dG9vbHMgcGFuZWwgaXMgY2xvc2VkXG4gICAqL1xuICBvbkNsb3NlPzogKCkgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzUGFuZWwoXG4gIHByb3BzOiBEZXZ0b29sc1BhbmVsT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IGVycm9yVHlwZXMsIHN0eWxlTm9uY2UsIHNoYWRvd0RPTVRhcmdldCB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBpbml0aWFsSXNPcGVuOiB0cnVlLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlOiBwcm9wcy5vbkNsb3NlLFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0T25DbG9zZShwcm9wcy5vbkNsb3NlID8/ICgoKSA9PiB7fSkpXG4gIH0sIFtwcm9wcy5vbkNsb3NlLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPjwvZGl2PlxuICApXG59XG4iLCAiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIERldnRvb2xzIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzJ1xuaW1wb3J0ICogYXMgRGV2dG9vbHNQYW5lbCBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzOiAodHlwZW9mIERldnRvb2xzKVsnUmVhY3RRdWVyeURldnRvb2xzJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHMuUmVhY3RRdWVyeURldnRvb2xzXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbDogKHR5cGVvZiBEZXZ0b29sc1BhbmVsKVsnUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29sc1BhbmVsLlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsXG4iLCAiaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbi8vIGltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkAvdWkvc3R1ZGlvL3V0aWwvdGhlbWUtcHJvdmlkZXJcIjtcblxudHlwZSBUb2FzdGVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU29ubmVyPjtcblxuY29uc3QgVG9hc3RlciA9ICh7IC4uLnByb3BzIH06IFRvYXN0ZXJQcm9wcykgPT4ge1xuICAvLyBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxTb25uZXJcbiAgICAgIC8vIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXRvYXN0ZXIgcHMtZ3JvdXBcIlxuICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgIGNsYXNzTmFtZXM6IHtcbiAgICAgICAgICB0b2FzdDpcbiAgICAgICAgICAgIFwiZ3JvdXAgdG9hc3QgZ3JvdXAtWy50b2FzdGVyXTpiZy1iYWNrZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06dGV4dC1mb3JlZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06Ym9yZGVyLWJvcmRlciBncm91cC1bLnRvYXN0ZXJdOnNoYWRvdy1sZ1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGFjdGlvbkJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1wcmltYXJ5IGdyb3VwLVsudG9hc3RdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLW11dGVkIGdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCB7XG4gIHVuc3RhYmxlX0FkYXB0ZXJPcHRpb25zIGFzIEFkYXB0ZXJPcHRpb25zLFxuICB1bnN0YWJsZV9jcmVhdGVBZGFwdGVyUHJvdmlkZXIgYXMgY3JlYXRlQWRhcHRlclByb3ZpZGVyLFxufSBmcm9tIFwibnVxcy9hZGFwdGVycy9jdXN0b21cIjtcbmltcG9ydCB7IEZDLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRoYXQgTnVxcyB3aWxsIGNhbGwgdG8gcmVhZCAmIHdyaXRlIFVSTCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXNlSGFzaEFkYXB0ZXIoKSB7XG4gIGNvbnN0IHJhd0hhc2ggPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSkgOiBcIlwiO1xuICBjb25zdCBbaGFzaFBhcmFtcywgc2V0SGFzaFBhcmFtc10gPSB1c2VTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcblxuICAvLyB3cml0ZSBuZXcgc3RhdGUgYmFjayBpbnRvIHRoZSBoYXNoIGZyYWdtZW50XG4gIGZ1bmN0aW9uIHVwZGF0ZVVybCh1cGRhdGVkOiBVUkxTZWFyY2hQYXJhbXMsIHsgaGlzdG9yeSB9OiBBZGFwdGVyT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IGhhc2ggPSB1cGRhdGVkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdXJsID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9IyR7aGFzaH1gO1xuXG4gICAgaWYgKGhpc3RvcnkgPT09IFwicHVzaFwiKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfVxuXG4gICAgc2V0SGFzaFBhcmFtcyh1cGRhdGVkKTtcbiAgfVxuXG4gIC8vIGV4cG9zZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhcmFtc1xuICBmdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICB9XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBVUkxEZWZhdWx0c0hhbmRsZXIoKSB7XG4gIGNvbnN0IFtfdGFibGUsIHNldFRhYmxlXSA9IHVzZVF1ZXJ5U3RhdGUoXCJ0YWJsZVwiKTtcbiAgY29uc3QgW19zY2hlbWEsIHNldFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlKFwic2NoZW1hXCIpO1xuICBjb25zdCBbX3ZpZXcsIHNldFZpZXddID0gdXNlUXVlcnlTdGF0ZShcInZpZXdcIik7XG5cbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmc6IGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIHx8ICFpbnRyb3NwZWN0aW9uPy5zY2hlbWFzKSB7XG4gICAgICByZXR1cm47IC8vIFdhaXQgZm9yIGludHJvc3BlY3Rpb24gZGF0YSB0byBsb2FkXG4gICAgfVxuXG4gICAgLy8gSU1QT1JUQU5UOiBXZSByZWFkIGRpcmVjdGx5IGZyb20gd2luZG93LmxvY2F0aW9uLmhhc2ggdG8gYXZvaWQgc3RhbGUgY2xvc3VyZXNcbiAgICAvLyBmcm9tIHRoZSB1c2VRdWVyeVN0YXRlIGhvb2tzIGluIHRoaXMgaW5pdGlhbCBzZXR1cCBwaGFzZS5cbiAgICBjb25zdCBjdXJyZW50SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoY3VycmVudEhhc2gpO1xuXG4gICAgY29uc3QgaGFzVGFibGUgPSBwYXJhbXMuaGFzKFwidGFibGVcIik7XG4gICAgY29uc3QgaGFzU2NoZW1hID0gcGFyYW1zLmhhcyhcInNjaGVtYVwiKTtcbiAgICBjb25zdCBoYXNWaWV3ID0gcGFyYW1zLmhhcyhcInZpZXdcIik7XG5cbiAgICBpZiAoIWhhc1RhYmxlICYmICFoYXNTY2hlbWEgJiYgIWhhc1ZpZXcpIHtcbiAgICAgIGNvbnN0IGZpcnN0U2NoZW1hTmFtZSA9IE9iamVjdC5rZXlzKGludHJvc3BlY3Rpb24uc2NoZW1hcylbMF07XG4gICAgICBpZiAoZmlyc3RTY2hlbWFOYW1lKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VGFibGUgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbZmlyc3RTY2hlbWFOYW1lXT8udGFibGVzWzBdO1xuICAgICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICAgIC8vIHNldFRhYmxlLCBzZXRTY2hlbWEsIGFuZCBzZXRWaWV3IHdpbGwgdXBkYXRlIHRoZSBoYXNoXG4gICAgICAgICAgLy8gT3JkZXIgbWlnaHQgbWF0dGVyIGhlcmUgZGVwZW5kaW5nIG9uIG51cXMgYmF0Y2hpbmcgb3IgaW1tZWRpYXRlIHVwZGF0ZXNcbiAgICAgICAgICAvLyBTZXR0aW5nIHRoZW0gb25lIGJ5IG9uZSBpcyBnZW5lcmFsbHkgc2FmZXIuXG4gICAgICAgICAgdm9pZCBzZXRUYWJsZShmaXJzdFRhYmxlLm5hbWUpO1xuICAgICAgICAgIHZvaWQgc2V0U2NoZW1hKGZpcnN0U2NoZW1hTmFtZSk7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhhc1RhYmxlICYmIGhhc1NjaGVtYSAmJiAhaGFzVmlldykge1xuICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgfVxuICAgIC8vIFdlIG9ubHkgd2FudCB0byBydW4gdGhpcyBvbmNlIG9uIG1vdW50IGFmdGVyIGludHJvc3BlY3Rpb24gaXMgbG9hZGVkLlxuICAgIC8vIFRoZSBzZXR0ZXJzIChzZXRUYWJsZSwgZXRjLikgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlcnMgaWYgbmVlZGVkLFxuICAgIC8vIGJ1dCB0aGlzIGVmZmVjdCBpdHNlbGYgaGFzIGRvbmUgaXRzIGpvYi5cbiAgICAvLyBBZGRpbmcgdGFibGUsIHNjaGVtYSwgdmlldyB0byBkZXBlbmRlbmN5IGFycmF5IGNhbiBjYXVzZSBsb29wcyBpZiBub3QgY2FyZWZ1bC5cbiAgfSwgW2lzSW50cm9zcGVjdGlvbkxvYWRpbmcsIGludHJvc3BlY3Rpb24sIHNldFRhYmxlLCBzZXRTY2hlbWEsIHNldFZpZXddKTtcblxuICByZXR1cm4gbnVsbDsgLy8gVGhpcyBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyIGFueXRoaW5nXG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9EQVRBX1VQREFURURfQVQgPSAtMTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUludHJvc3BlY3Rpb24oKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBpbml0aWFsRGF0YToge1xuICAgICAgc2NoZW1hczoge1xuICAgICAgICBbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl06IHtcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpbWV6b25lOiBcIlVUQ1wiLFxuICAgICAgZmlsdGVyT3BlcmF0b3JzOiBbXSxcbiAgICB9IHNhdGlzZmllcyBJbnRyb3NwZWN0aW9uLFxuICAgIGluaXRpYWxEYXRhVXBkYXRlZEF0OiBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCxcbiAgICBxdWVyeUZuOiBhc3luYyAoeyBzaWduYWwgfSkgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCBpbnRyb3NwZWN0aW9uXSA9IGF3YWl0IGFkYXB0ZXIuaW50cm9zcGVjdCh7IGFib3J0U2lnbmFsOiBzaWduYWwgfSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludHJvc3BlY3Rpb247XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1wiaW50cm9zcGVjdGlvblwiXSxcbiAgICAvLyBpZiBpcyBpbml0aWFsIGRhdGEsIHJlZmV0Y2ggaW1tZWRpYXRlbHksIG90aGVyd2lzZSwgbmV2ZXIgcmVmZXRjaCBhdXRvbWF0aWNhbGx5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgIC8vIHdlIGNhbiBzdGlsbCByZWZldGNoIG1hbnVhbGx5IHVzaW5nIHRoZSBxdWVyeSBjbGllbnQgLSBwcm9iYWJseSB0cmlnZ2VyZWQgYnkgYSBidXR0b24uXG4gICAgc3RhbGVUaW1lOiAoY3R4KSA9PiAoY3R4LnN0YXRlLmRhdGFVcGRhdGVkQXQgPT09IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID8gMCA6IEluZmluaXR5KSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5mdW5jdGlvbiBnZXRSb3dJZChyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgZmlsdGVyOiBpbmZlclJvd0ZpbHRlcihyb3csIHRhYmxlLmNvbHVtbnMpLFxuICAgIHRhYmxlOiBgJHt0YWJsZS5zY2hlbWF9LiR7dGFibGUubmFtZX1gLFxuICB9O1xuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShpZCk7XG59XG5cbmZ1bmN0aW9uIGFkZFJvd0lkVG9Sb3cocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIHJldHVybiB7IC4uLnJvdywgX19wc19yb3dpZDogZ2V0Um93SWQocm93LCB0YWJsZSkgfTtcbn1cblxudHlwZSBBZGFwdGVyUmVzdWx0ID0ge1xuICByb3c/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcm93cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkUm93SWRUb1Jlc3VsdDxUIGV4dGVuZHMgQWRhcHRlclJlc3VsdD4ocmVzdWx0OiBULCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgeyByb3csIHJvd3MgfSA9IHJlc3VsdDtcblxuICBpZiAocm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvdzogYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSB9O1xuICB9XG4gIGlmIChyb3dzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvd3M6IHJvd3MubWFwKChyb3cpID0+IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgRmlsdGVyR3JvdXAsIFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcyB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBzb3J0T3JkZXI6IFNvcnRPcmRlckl0ZW1bXTtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlUXVlcnkocHJvcHM6IFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcykge1xuICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgZmlsdGVyIH0gPSBwcm9wcztcblxuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGVuYWJsZWQ6IEJvb2xlYW4oYWN0aXZlVGFibGUpLFxuICAgIGdjVGltZTogMCxcbiAgICBwbGFjZWhvbGRlckRhdGEocHJldmlvdXNEYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQsIHByZXZpb3VzUXVlcnkpIHtcbiAgICAgIGNvbnN0IFssIHNjaGVtYSwgLCB0YWJsZV0gPSBwcmV2aW91c1F1ZXJ5Py5xdWVyeUtleSB8fCBbXTtcblxuICAgICAgaWYgKHNjaGVtYSAhPT0gYWN0aXZlVGFibGU/LnNjaGVtYSB8fCB0YWJsZSAhPT0gYWN0aXZlVGFibGU/Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgcXVlcnlGbih7IHNpZ25hbCB9KSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgYWRhcHRlci5xdWVyeShcbiAgICAgICAgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIHRhYmxlOiBhY3RpdmVUYWJsZSEsIGZpbHRlciB9LFxuICAgICAgICB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0cywgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXG4gICAgICBcInNjaGVtYVwiLFxuICAgICAgYWN0aXZlVGFibGU/LnNjaGVtYSB8fCBudWxsLFxuICAgICAgXCJ0YWJsZVwiLFxuICAgICAgYWN0aXZlVGFibGU/Lm5hbWUgfHwgbnVsbCxcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwic29ydE9yZGVyXCIsXG4gICAgICBzb3J0T3JkZXIubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSB8fCBcIm5hdHVyYWxcIixcbiAgICAgIFwicGFnZUluZGV4XCIsXG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBcInBhZ2VTaXplXCIsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIFwiZmlsdGVyXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgIF0sXG4gICAgc3RhbGVUaW1lOiBJbmZpbml0eSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBRdWVyeUNsaWVudCwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgQWRhcHRlclVwZGF0ZURldGFpbHMsIEFkYXB0ZXJVcGRhdGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IGluZmVyUm93RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGEvcXVlcnlcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zIHtcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHM7XG4gIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVVcGRhdGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgcXVlcnlLZXlQcmVmaXggPSBbXCJzY2hlbWFcIiwgYWN0aXZlVGFibGU/LnNjaGVtYSA/PyBudWxsLCBcInRhYmxlXCIsIGFjdGl2ZVRhYmxlPy5uYW1lID8/IG51bGxdIGFzIGNvbnN0O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHBhcmFtczogVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIudXBkYXRlKHBhcmFtcy5kZXRhaWxzLCBwYXJhbXMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIG11dGF0aW9uS2V5OiBbLi4ucXVlcnlLZXlQcmVmaXgsIFwidXBkYXRlXCJdLFxuICAgIG9uRXJyb3IoZXJyb3IsIHBhcmFtcykge1xuICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gcmV2ZXJ0Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY2FjaGVkUm93LFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoY2hhbmdlcykucmVkdWNlKFxuICAgICAgICAgICAgICAob3JpZ2luYWxWYWx1ZXMsIGNvbHVtbk5hbWUpID0+ICh7IC4uLm9yaWdpbmFsVmFsdWVzLCBbY29sdW1uTmFtZV06IHJvd1tjb2x1bW5OYW1lXSB9KSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uTXV0YXRlKHBhcmFtcykge1xuICAgICAgY29uc3QgeyBkZXRhaWxzIH0gPSBwYXJhbXM7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgcm93OiB1bmNoYW5nZWRSb3cgfSA9IGRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcih1bmNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseUNoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5kZXRhaWxzLmNoYW5nZXMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKHJlc3VsdCwgcGFyYW1zKSB7XG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseVJlYWxEYXRhV2hlbkZyZXNoZXIoY2FjaGVkUm93KSB7XG4gICAgICAgICAgY29uc3QgeyBfX3BzX3VwZGF0ZWRfYXRfXyB9ID0gY2FjaGVkUm93O1xuICAgICAgICAgIGNvbnN0IHsgcm93IH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAvLyByZXN1bHQgcm93IGlzIHN0YWxlLlxuICAgICAgICAgIGlmIChfX3BzX3VwZGF0ZWRfYXRfXyAhPSBudWxsICYmIHJvdy5fX3BzX3VwZGF0ZWRfYXRfXyA8PSBfX3BzX3VwZGF0ZWRfYXRfXykge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJvdztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLnJvdyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVDYWNoZWRSb3cocGFyYW1zOiB7XG4gIGdldEZpbmRlckZuOiAoKSA9PiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICB1cGRhdGVyRm46IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcXVlcnlDbGllbnQ6IFF1ZXJ5Q2xpZW50O1xufSkge1xuICBjb25zdCB7IGdldEZpbmRlckZuLCBxdWVyeUNsaWVudCwgdGFibGUsIHVwZGF0ZXJGbiB9ID0gcGFyYW1zO1xuXG4gIGxldCBmaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIGdldEZpbmRlckZuPjtcblxuICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YShcbiAgICB7IGV4YWN0OiBmYWxzZSwgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCB0YWJsZS5zY2hlbWEsIFwidGFibGVcIiwgdGFibGUubmFtZSwgXCJxdWVyeVwiXSB9LFxuICAgIChjYWNoZWRSZXN1bHQ6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCk6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCB7IHJvd3M6IGNhY2hlZFJvd3MgPSBbXSB9ID0gY2FjaGVkUmVzdWx0IHx8IHt9O1xuXG4gICAgICBpZiAoY2FjaGVkUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVkUm93SW5kZXggPSBjYWNoZWRSb3dzLmZpbmRJbmRleCgoZmluZGVyID8/PSBnZXRGaW5kZXJGbigpKSk7XG5cbiAgICAgIGlmIChjYWNoZWRSb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Um93ID0gdXBkYXRlckZuKGNhY2hlZFJvd3NbY2FjaGVkUm93SW5kZXhdISk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlZFJlc3VsdCEsXG4gICAgICAgIHJvd3M6IFsuLi5jYWNoZWRSb3dzLnNsaWNlKDAsIGNhY2hlZFJvd0luZGV4KSwgbmV3Um93LCAuLi5jYWNoZWRSb3dzLnNsaWNlKGNhY2hlZFJvd0luZGV4ICsgMSldLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGaWx0ZXI6IEZpbHRlckdyb3VwID0ge1xuICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gIGZpbHRlcnM6IFtdLFxuICBhZnRlcjogXCJhbmRcIixcbiAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG59O1xuXG5jb25zdCBjb3VudEZpbHRlcnNSZWN1cnNpdmUgPSAoZmlsdGVyR3JvdXA6IEZpbHRlckdyb3VwKTogbnVtYmVyID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVyR3JvdXAuZmlsdGVycykge1xuICAgIGlmIChmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgLy8gT25seSBjb3VudCBmaWx0ZXJzIHRoYXQgaGF2ZSBhIG5vbi1lbXB0eSBjb2x1bW4gc2VsZWN0ZWRcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uLnRyaW0oKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyLmtpbmQgPT09IFwiRmlsdGVyR3JvdXBcIikge1xuICAgICAgY291bnQgKz0gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGZpbHRlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJpbmcoKSB7XG4gIGNvbnN0IFtmaWx0ZXJQYXJhbSwgc2V0RmlsdGVyUGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcImZpbHRlclwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVyKSxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbGllZEZpbHRlciA9IHVzZU1lbW8oKCkgPT4gSlNPTi5wYXJzZShmaWx0ZXJQYXJhbSkgYXMgRmlsdGVyR3JvdXAsIFtmaWx0ZXJQYXJhbV0pO1xuICBjb25zdCBzZXRBcHBsaWVkRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQgc2V0RmlsdGVyUGFyYW0oSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG5cbiAgY29uc3QgW2VkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXJdID0gdXNlU3RhdGU8RmlsdGVyR3JvdXA+KGFwcGxpZWRGaWx0ZXIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgfSwgW2FwcGxpZWRGaWx0ZXJdKTtcblxuICBjb25zdCB0b3RhbEVkaXRpbmdGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZWRpdGluZ0ZpbHRlciksIFtlZGl0aW5nRmlsdGVyXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWVkRmlsdGVyLFxuICAgIHNldEFwcGxpZWRGaWx0ZXIsXG4gICAgZWRpdGluZ0ZpbHRlcixcbiAgICBzZXRFZGl0aW5nRmlsdGVyLFxuICAgIHRvdGFsRWRpdGluZ0ZpbHRlcnMsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuLyoqXG4gKiBIb29rIHRvIGtub3cgd2hldGhlciBhbiBpbnNlcnQgaXMgY3VycmVudGx5IG9uZ29pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc0luc2VydGluZygpIHtcbiAgcmV0dXJuIHVzZUlzTXV0YXRpbmcoe1xuICAgIHByZWRpY2F0ZSh7IG9wdGlvbnM6IHsgbXV0YXRpb25LZXkgfSB9KSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25LZXk/Lls0XSA9PT0gXCJpbnNlcnRcIjtcbiAgICB9LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE9uQ2hhbmdlRm4sIFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGtleU1hcCwgcGFyc2VBc0luZGV4LCBwYXJzZUFzSW50ZWdlciwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8vIFRPRE86IGV2ZW50dWFsbHkgY29uZmlndXJhYmxlIC8gY29udHJvbGxlZCBieSB1c2VyLiBiYWJ5IHN0ZXBzLi5cbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gMjU7XG5cbmNvbnN0IHBhZ2luYXRpb25QYXJzZXJzID0ga2V5TWFwKHtcbiAgcGFnZUluZGV4OiBwYXJzZUFzSW5kZXgud2l0aERlZmF1bHQoMCksIC8vIHplcm8tYmFzZWRcbiAgcGFnZVNpemU6IHBhcnNlQXNJbnRlZ2VyLndpdGhEZWZhdWx0KERFRkFVTFRfUEFHRV9TSVpFKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbigpIHtcbiAgY29uc3QgW3sgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LCBzZXRQYWdpbmF0aW9uXSA9IHVzZVF1ZXJ5U3RhdGVzKHBhZ2luYXRpb25QYXJzZXJzKTtcblxuICAvLyBDb21wYXRpYmxlIHdpdGggVGFuU3RhY2sgVGFibGUncyBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT5cbiAgY29uc3Qgc2V0UGFnaW5hdGlvblN0YXRlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT4gPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlck9yVmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oKG9sZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlck9yVmFsdWUob2xkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICBwYWdlU2l6ZTogbmV3U3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogdXBkYXRlck9yVmFsdWUucGFnZUluZGV4LFxuICAgICAgICAgIHBhZ2VTaXplOiB1cGRhdGVyT3JWYWx1ZS5wYWdlU2l6ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0UGFnaW5hdGlvbl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0aW9uU3RhdGU6IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LFxuICAgIHNldFBhZ2luYXRpb25TdGF0ZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZURlbGV0ZSB9IGZyb20gXCIuL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4vdXNlLXBhZ2luYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbihkYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGVdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgaXNTZWxlY3RpbmcgPSBPYmplY3Qua2V5cyhyb3dTZWxlY3Rpb25TdGF0ZSkubGVuZ3RoICE9PSAwO1xuICBjb25zdCB7IG11dGF0ZSB9ID0gdXNlQWN0aXZlVGFibGVEZWxldGUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pLCBbYWN0aXZlVGFibGUsIHBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXhdKTtcblxuICBmdW5jdGlvbiBkZWxldGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgcm93cyA9IGRhdGE/LnJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIHJldHVybiByb3dTZWxlY3Rpb25TdGF0ZVtyb3cuX19wc19yb3dpZCBhcyBzdHJpbmddO1xuICAgIH0pO1xuXG4gICAgbXV0YXRlKHJvd3MgPz8gW10sIHtcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3IsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlbGV0ZVNlbGVjdGlvbixcbiAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBpc1NlbGVjdGluZyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJkZWxldGVcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmRlbGV0ZSh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBhc3luYyBvblN1Y2Nlc3MoKSB7XG4gICAgICBhd2FpdCBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU29ydGluZygpIHtcbiAgLy8gVXNlIG51cXMgdG8gbWFuYWdlIHNvcnRpbmcgc3RhdGUgaW4gVVJMXG4gIGNvbnN0IFtzb3J0UGFyYW0sIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwic29ydFwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICB9KTtcblxuICAvLyBQYXJzZSBzb3J0aW5nIGZyb20gVVJMIHBhcmFtZXRlclxuICBjb25zdCBwYXJzZVNvcnRpbmcgPSAoc29ydFBhcmFtOiBzdHJpbmcgfCBudWxsKTogU29ydE9yZGVySXRlbVtdID0+IHtcbiAgICBpZiAoIXNvcnRQYXJhbSkgcmV0dXJuIFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdDogY29sdW1uOmRpcmVjdGlvbixjb2x1bW46ZGlyZWN0aW9uXG4gICAgICByZXR1cm4gc29ydFBhcmFtXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICBpZiAoIWNvbHVtbiB8fCAhZGlyZWN0aW9uIHx8ICFbXCJhc2NcIiwgXCJkZXNjXCJdLmluY2x1ZGVzKGRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBjb2x1bW4sIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFNvcnRPcmRlckl0ZW1bXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHNvcnRpbmcgcGFyYW1ldGVyOlwiLCBlKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgc3RhYmxlIHNvcnRpbmcgc3RhdGUgdGhhdCdzIGRlcml2ZWQgZnJvbSBVUkwgcGFyYW1ldGVyc1xuICBjb25zdCBbc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSkpO1xuXG4gIC8vIEtlZXAgaW50ZXJuYWwgc3RhdGUgc3luY2hyb25pemVkIHdpdGggVVJMIHBhcmFtZXRlcnNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdTb3J0aW5nU3RhdGUgPSBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKTtcbiAgICBzZXRTb3J0aW5nU3RhdGUobmV3U29ydGluZ1N0YXRlKTtcbiAgfSwgW3NvcnRQYXJhbV0pO1xuXG4gIC8vIFVwZGF0ZSBVUkwgd2hlbiBzb3J0aW5nIGNoYW5nZXMgZnJvbSB0aGUgVUlcbiAgY29uc3QgaGFuZGxlU29ydGluZ0NoYW5nZSA9IChuZXdTdGF0ZTogU29ydE9yZGVySXRlbVtdIHwgKChvbGQ6IFNvcnRPcmRlckl0ZW1bXSkgPT4gU29ydE9yZGVySXRlbVtdKSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0eXBlb2YgbmV3U3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IG5ld1N0YXRlKHNvcnRpbmdTdGF0ZSkgOiBuZXdTdGF0ZTtcbiAgICBzZXRTb3J0aW5nU3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgc29ydGluZyBzdGF0ZSB0byBVUkwgcGFyYW1ldGVyXG4gICAgY29uc3Qgc29ydFN0cmluZyA9XG4gICAgICByZXNvbHZlZFN0YXRlLmxlbmd0aCA+IDAgPyByZXNvbHZlZFN0YXRlLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgOiBudWxsO1xuXG4gICAgdm9pZCBzZXRTb3J0UGFyYW0oc29ydFN0cmluZyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzb3J0aW5nU3RhdGUsXG4gICAgc2V0U29ydGluZ1N0YXRlOiBoYW5kbGVTb3J0aW5nQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENvcHkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29udGV4dE1lbnUsIENvbnRleHRNZW51Q29udGVudCwgQ29udGV4dE1lbnVJdGVtLCBDb250ZXh0TWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPG9iamVjdD47XG5cbi8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgaW52ZXJzaWZpZWQgLSB0byBtYWtlIGl0IGV4dGVuc2libGUsIGFuZCBhZGFwdGFibGUgdG8gZGlmZmVyZW50IHNpdHVhdGlvbnMuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUocHJvcHM6IERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dE1lbnU+XG4gICAgICA8Q29udGV4dE1lbnVUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWJsb2NrIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29udGV4dE1lbnVUcmlnZ2VyPlxuICAgICAgPENvbnRleHRNZW51Q29udGVudD5cbiAgICAgICAgPENvbnRleHRNZW51SXRlbVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBleHRyYWN0VGV4dENvbnRlbnQoY2hpbGRyZW4pO1xuICAgICAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IHRvIGNsaXBib2FyZDpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBzaXplPXsxMn0gLz5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvQ29udGV4dE1lbnVJdGVtPlxuICAgICAgPC9Db250ZXh0TWVudUNvbnRlbnQ+XG4gICAgPC9Db250ZXh0TWVudT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRDb250ZW50KG5vZGU6IFJlYWN0Tm9kZSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gU3RyaW5nKG5vZGUpO1xuICB9XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICBjb25zdCBwcm9wcyA9IG5vZGUucHJvcHMgYXMgeyB0ZXh0Pzogc3RyaW5nOyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9O1xuXG4gICAgLy8gSGFuZGxlIFJldmVhbFRleHQgY29tcG9uZW50IHNwZWNpZmljYWxseVxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIlJldmVhbFRleHRcIikge1xuICAgICAgcmV0dXJuIHByb3BzLnRleHQgfHwgXCJcIjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgTnVsbFZhbHVlIGNvbXBvbmVudFxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIk51bGxWYWx1ZVwiKSB7XG4gICAgICByZXR1cm4gXCJOVUxMXCI7XG4gICAgfVxuXG4gICAgLy8gUmVjdXJzaXZlbHkgZXh0cmFjdCB0ZXh0IGZyb20gY2hpbGRyZW5cbiAgICBpZiAocHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBleHRyYWN0VGV4dENvbnRlbnQocHJvcHMuY2hpbGRyZW4gYXMgUmVhY3ROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUubWFwKGV4dHJhY3RUZXh0Q29udGVudCkuam9pbihcIlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwgImltcG9ydCAqIGFzIENvbnRleHRNZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dC1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ29udGV4dE1lbnUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBDb250ZXh0TWVudVRyaWdnZXIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBDb250ZXh0TWVudUdyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51UG9ydGFsID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YiA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0dyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG8gcHMtaC00IHBzLXctNFwiIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuQ29udGV4dE1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Db250ZXh0TWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuQ29udGV4dE1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuQ29udGV4dE1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZCBwcy10ZXh0LWZvcmVncm91bmRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUxhYmVsLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLWJvcmRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApO1xufTtcbkNvbnRleHRNZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbnRleHRNZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51VHJpZ2dlcixcbiAgQ29udGV4dE1lbnVDb250ZW50LFxuICBDb250ZXh0TWVudUl0ZW0sXG4gIENvbnRleHRNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZXh0TWVudVJhZGlvSXRlbSxcbiAgQ29udGV4dE1lbnVMYWJlbCxcbiAgQ29udGV4dE1lbnVTZXBhcmF0b3IsXG4gIENvbnRleHRNZW51U2hvcnRjdXQsXG4gIENvbnRleHRNZW51R3JvdXAsXG4gIENvbnRleHRNZW51UG9ydGFsLFxuICBDb250ZXh0TWVudVN1YixcbiAgQ29udGV4dE1lbnVTdWJDb250ZW50LFxuICBDb250ZXh0TWVudVN1YlRyaWdnZXIsXG4gIENvbnRleHRNZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBEYXRhR3JpZENlbGxDb250ZXh0TWVudSB9IGZyb20gXCIuLi9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2VsbChwcm9wczogQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbFxuICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgICAgIC8vIFwiZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy0yIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5kaWdvLTQwMCBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluc2V0XCIsXG4gICAgICAgIFwicHMtY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIDxEYXRhR3JpZENlbGxDb250ZXh0TWVudT57Y2hpbGRyZW59PC9EYXRhR3JpZENlbGxDb250ZXh0TWVudT5cbiAgICA8L1RhYmxlQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB7IERhdGVDZWxsIH0gZnJvbSBcIi4vRGF0ZUNlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgRW51bUNlbGwgfSBmcm9tIFwiLi9FbnVtQ2VsbFwiO1xuaW1wb3J0IHsgSlNPTkNlbGwgfSBmcm9tIFwiLi9KU09OQ2VsbFwiO1xuaW1wb3J0IHsgTnVsbENlbGwgfSBmcm9tIFwiLi9OdWxsQ2VsbFwiO1xuaW1wb3J0IHsgTnVtZXJpY0NlbGwgfSBmcm9tIFwiLi9OdW1lcmljQ2VsbFwiO1xuaW1wb3J0IHsgUmF3Q2VsbCB9IGZyb20gXCIuL1Jhd0NlbGxcIjtcbmltcG9ydCB7IFRpbWVDZWxsIH0gZnJvbSBcIi4vVGltZUNlbGxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGwoeyBjZWxsLCBjb2x1bW4gfTogeyBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjsgY29sdW1uOiBDb2x1bW4gfSkge1xuICBjb25zdCB2YWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8RW1wdHlDZWxsIC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gPFJhd0NlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJyYXdcIikge1xuICAgIGlmIChpc09iamVjdFR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPEpTT05DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSAocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+O1xufTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNlbGxQcm9wcyB7XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZUNlbGwocHJvcHM6IERhdGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEVtcHR5Q2VsbChfcHJvcHM6IEVtcHR5Q2VsbFByb3BzKSB7XG4gIHJldHVybiA8PjwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudW1DZWxsKHByb3BzOiBFbnVtQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICB2YWx1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBKU09OQ2VsbChwcm9wczogSlNPTkNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfTwvPjtcbn1cbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIE51bGxDZWxsUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIE51bGxDZWxsKF9wcm9wczogTnVsbENlbGxQcm9wcykge1xuICByZXR1cm4gPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBOdW1lcmljQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOdW1lcmljQ2VsbChwcm9wczogTnVtZXJpY0NlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgUmF3Q2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXdDZWxsKHByb3BzOiBSYXdDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZUNlbGwocHJvcHM6IFRpbWVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3hcIjtcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWgtNCBwcy13LTQgcHMtc2hyaW5rLTAgcHMtcm91bmRlZC1zbSBwcy1ib3JkZXIgcHMtYm9yZGVyLXByaW1hcnkgcHMtc2hhZG93IGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3IgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXRleHQtY3VycmVudFwiKX0+XG4gICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gIDwvQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbikpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdEhlYWRlckNlbGwocHJvcHM6IFNlbGVjdEhlYWRlckNlbGxQcm9wcykge1xuICBjb25zdCB7IHRhYmxlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUm93c1NlbGVjdGVkKCEhdmFsdWUpfVxuICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgUm93IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0Um93Q2VsbChwcm9wczogU2VsZWN0Um93Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgcm93LCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICBkaXNhYmxlZD17IXJvdy5nZXRDYW5TZWxlY3QoKSB8fCByZWFkb25seX1cbiAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgKHRyaWdnZXJSZWYgYXMgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KS5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgbGlua0NvbXBvbmVudDogUmVhY3ROb2RlO1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50LCBsaW5rQ29tcG9uZW50LCBjb250YWluZXJQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgIDxDZWxsIHsuLi5jb250YWluZXJQcm9wc30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLXctZnVsbCBwcy1nYXAtMiBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2PntjZWxsQ29tcG9uZW50fTwvZGl2PlxuICAgICAgICAgICAge2xpbmtDb21wb25lbnR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2VsbD5cbiAgICAgIDwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctbWF4XCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4gJiB7IGxhYmVsPzogUmVhY3ROb2RlIH1cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgbGFiZWwsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgIHtsYWJlbCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj57bGFiZWx9Ojwvc3Bhbj59XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBPbkNoYW5nZUZuLFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgVGFibGUgYXMgUmVhY3RUYWJsZSxcbiAgdXNlUmVhY3RUYWJsZSxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgUmVhY3RUYWJsZURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCB0eXBlIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZGVyLCBUYWJsZVJvdyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4uL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRMb2FkaW5nQmFyIH0gZnJvbSBcIi4vRGF0YUdyaWRMb2FkaW5nQmFyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZFBhZ2luYXRpb24gfSBmcm9tIFwiLi9EYXRhR3JpZFBhZ2luYXRpb25cIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuXG4vLyBBZGQgdGhpcyBuZXcgY29tcG9uZW50IGZvciBkcmFnZ2FibGUgaGVhZGVyIGNlbGxzXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiBoZWFkZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBIZWFkZXIgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXIgPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIoaGVhZGVyLmdldENvbnRleHQoKSkgYXMgSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxIZWFkZXIga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge2dldEJlZm9yZVJvd3M/Lih0YWJsZSl9XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICBcInBzLWJnLXRhYmxlLXJvdyBwcy1vZGQ6YmctdGFibGUtcm93LW9kZCBwcy1ncm91cCBbJjpsYXN0LW9mLXR5cGVfdGRdOnBzLWJvcmRlci1iLTAgcHMtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2l9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IC8+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCIsXG4gICAgICBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICBpc1Bpbm5lZCAmJiBcInBzLXN0aWNreVwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtei0yMFwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImNlbGxcIiAmJiBcInBzLXotMFwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIG1pbldpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIGxlZnQ6IGlzTGVmdFBpbm5lZCA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzUmlnaHRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0QWZ0ZXIoXCJyaWdodFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBIZWFkZXIsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDU1NQcm9wZXJ0aWVzLCBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG50eXBlIERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjbGFzc05hbWUsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWQgcmVmPXtzZXROb2RlUmVmfSB7Li4uYXR0cmlidXRlc30gey4uLmxpc3RlbmVyc30gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2RyYWdDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBIZWFkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd0Rvd25XaWRlTmFycm93LCBBcnJvd1VwV2lkZU5hcnJvdywgQ2hldnJvbkRvd24sIE1vdmVEb3duLCBNb3ZlVXAsIFBpbiwgUGluT2ZmLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBjb2x1bW4sIGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlckNlbGwgY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIG9uU2V0Tm93PzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHNob3dTZXROb3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG4gIG9uU2V0Tm93LFxuICBzaG93U2V0Tm93LFxufTogSW5wdXRBY3Rpb25zUHJvcHMpID0+IHtcbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG9uTnVsbENoYW5nZSkgb25OdWxsQ2hhbmdlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKG9uU2F2ZSkgb25TYXZlKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgaWYgKG9uQ2FuY2VsKSBvbkNhbmNlbCgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy10ZXh0LXhzIHBzLXAtMlwiPlxuICAgICAgeyFyZWFkb25seSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1ncmlkIHBzLWdyaWQtY29scy0yIHBzLWdhcC0xIHBzLWl0ZW1zLXN0YXJ0IHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgIFNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgIHtvbk51bGxDaGFuZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wIHBzLWgtNlwiXG4gICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlNldCB0byBOVUxMPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge3Nob3dTZXROb3cgJiYgKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2V0Tm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNOdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gTk9XXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNldCB0byB7ZGF5anMoKS5mb3JtYXQoXCJMTExcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHsgdHlwZSBGb3JtRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jYWxlbmRhclwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5LCBjb2x1bW4gfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFyc2VkSW5pdGlhbERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhpbml0aWFsVmFsdWUpO1xuICAgIHJldHVybiBwYXJzZWQuaXNWYWxpZCgpID8gcGFyc2VkLnRvRGF0ZSgpIDogbmV3IERhdGUoKTtcbiAgfSwgW2luaXRpYWxWYWx1ZV0pO1xuXG4gIGNvbnN0IGdldEZvcm1hdEZvclR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREXCI7XG4gICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcFwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcHR6XCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgY2FzZSBcInRpbWV0elwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1NaXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvLyBJbml0aWFsaXplIHN0YXRlcyB3aXRoIHRoZSBwYXJzZWQgZGF0ZVxuICBjb25zdCBbc2VsZWN0ZWREYXRlLCBzZXRTZWxlY3RlZERhdGVdID0gdXNlU3RhdGU8RGF0ZSB8IHVuZGVmaW5lZD4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbY3VycmVudE1vbnRoLCBzZXRDdXJyZW50TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbaG91clZhbHVlLCBzZXRIb3VyVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gZGF5anMocGFyc2VkSW5pdGlhbERhdGUpLmZvcm1hdChcIkhIXCIpKTtcbiAgY29uc3QgW21pbnV0ZVZhbHVlLCBzZXRNaW51dGVWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBkYXlqcyhwYXJzZWRJbml0aWFsRGF0ZSkuZm9ybWF0KFwibW1cIikpO1xuICBjb25zdCBbc2Vjb25kVmFsdWUsIHNldFNlY29uZFZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGRheWpzKHBhcnNlZEluaXRpYWxEYXRlKS5mb3JtYXQoXCJzc1wiKSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZTogYmFzZUhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSwgc2V0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGNvbnN0IGNvbHVtblR5cGUgPSB1c2VNZW1vKCgpID0+IGNvbHVtbj8uZGF0YXR5cGU/Lm5hbWUgfHwgKGNvbHVtbj8uZGF0YXR5cGUgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBbY29sdW1uXSk7XG4gIGNvbnN0IGRiRm9ybWF0ID0gdXNlTWVtbygoKSA9PiBnZXRGb3JtYXRGb3JUeXBlKGNvbHVtblR5cGUpLCBbY29sdW1uVHlwZV0pO1xuXG4gIGNvbnN0IGhhc1RpbWVQcmVjaXNpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gW1widGltZVwiLCBcInRpbWVzdGFtcFwiLCBcInRpbWVzdGFtcHR6XCIsIFwidGltZXR6XCJdLmluY2x1ZGVzKGNvbHVtblR5cGUpO1xuICB9LCBbY29sdW1uVHlwZV0pO1xuXG4gIC8vIEN1c3RvbSBvbkNoYW5nZSBoYW5kbGVyXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGJhc2VIYW5kbGVPbkNoYW5nZShldmVudCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhuZXdWYWx1ZSk7XG4gICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gcGFyc2VkLnRvRGF0ZSgpO1xuICAgICAgICBzZXRTZWxlY3RlZERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEN1cnJlbnRNb250aChuZXdEYXRlKTtcbiAgICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgICBzZXRIb3VyVmFsdWUocGFyc2VkLmZvcm1hdChcIkhIXCIpKTtcbiAgICAgICAgICBzZXRNaW51dGVWYWx1ZShwYXJzZWQuZm9ybWF0KFwibW1cIikpO1xuICAgICAgICAgIHNldFNlY29uZFZhbHVlKHBhcnNlZC5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIC8vIEludmFsaWQgZGF0ZSBmb3JtYXRcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIGlucHV0VmFsdWUgd2hlbiBjYWxlbmRhciBzZWxlY3Rpb24gY2hhbmdlc1xuICBjb25zdCBoYW5kbGVDYWxlbmRhclNlbGVjdCA9IChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBkYXlqcyhkYXRlKTtcbiAgICBsZXQgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlO1xuXG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24gJiYgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyB0aW1lXG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGVcbiAgICAgICAgLmhvdXIoZGF5anMoc2VsZWN0ZWREYXRlKS5ob3VyKCkpXG4gICAgICAgIC5taW51dGUoZGF5anMoc2VsZWN0ZWREYXRlKS5taW51dGUoKSlcbiAgICAgICAgLnNlY29uZChkYXlqcyhzZWxlY3RlZERhdGUpLnNlY29uZCgpKTtcbiAgICB9IGVsc2UgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB0aW1lIGlmIG5vIHByZXZpb3VzIHRpbWVcbiAgICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGUuaG91cihub3cuaG91cigpKS5taW51dGUobm93Lm1pbnV0ZSgpKS5zZWNvbmQobm93LnNlY29uZCgpKTtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWREYXRlKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0Q3VycmVudE1vbnRoKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBmaW5hbERhdGUuZm9ybWF0KGRiRm9ybWF0KSA6IGZpbmFsRGF0ZS50b0lTT1N0cmluZygpKTtcbiAgfTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVTZXROb3cgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICBzZXRTZWxlY3RlZERhdGUobm93LnRvRGF0ZSgpKTtcbiAgICBzZXRDdXJyZW50TW9udGgobm93LnRvRGF0ZSgpKTsgLy8gRW5zdXJlIGNhbGVuZGFyIHZpZXcgdXBkYXRlc1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gbm93LmZvcm1hdChkYkZvcm1hdCkgOiBub3cudG9JU09TdHJpbmcoKSk7XG5cbiAgICAvLyBVcGRhdGUgaW5wdXQgZmllbGRzXG4gICAgc2V0WWVhclZhbHVlKG5vdy55ZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEdlbmVyYXRlIG1vbnRoIG9wdGlvbnMgZm9yIHRoZSBzZWxlY3RcbiAgY29uc3QgbW9udGhzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7IHZhbHVlOiBcIjBcIiwgbGFiZWw6IFwiSmFudWFyeVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjFcIiwgbGFiZWw6IFwiRmVicnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIyXCIsIGxhYmVsOiBcIk1hcmNoXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiM1wiLCBsYWJlbDogXCJBcHJpbFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjRcIiwgbGFiZWw6IFwiTWF5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNVwiLCBsYWJlbDogXCJKdW5lXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNlwiLCBsYWJlbDogXCJKdWx5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiN1wiLCBsYWJlbDogXCJBdWd1c3RcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI4XCIsIGxhYmVsOiBcIlNlcHRlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjlcIiwgbGFiZWw6IFwiT2N0b2JlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjEwXCIsIGxhYmVsOiBcIk5vdmVtYmVyXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMTFcIiwgbGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxuICAgIF0sXG4gICAgW10sXG4gICk7XG5cbiAgLy8gR2V0IHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIHZhbHVlc1xuICBjb25zdCBjdXJyZW50TW9udGhWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50TW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICB9LCBbY3VycmVudE1vbnRoXSk7XG5cbiAgY29uc3QgW3llYXJWYWx1ZSwgc2V0WWVhclZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgfSk7XG5cbiAgY29uc3QgdXBkYXRlRGF0ZUZyb21JbnB1dHMgPSAoXG4gICAgbmV3RGF0ZVBhcnRzOiBQYXJ0aWFsPHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlcjsgaG91cjogbnVtYmVyOyBtaW51dGU6IG51bWJlcjsgc2Vjb25kOiBudW1iZXIgfT4sXG4gICkgPT4ge1xuICAgIGxldCBiYXNlRGF0ZSA9IHNlbGVjdGVkRGF0ZSA/IGRheWpzKHNlbGVjdGVkRGF0ZSkgOiBkYXlqcygpOyAvLyBVc2UgY3VycmVudCBkYXRlL3RpbWUgYXMgYmFzZSBpZiBub3RoaW5nIGlzIHNlbGVjdGVkXG5cbiAgICAvLyBJZiBvbmx5IHRpbWUgaXMgY2hhbmdpbmcsIGVuc3VyZSB0aGUgZGF0ZSBwYXJ0IGlzIGZyb20gc2VsZWN0ZWREYXRlIG9yIGN1cnJlbnRNb250aCB2aWV3XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLnllYXIgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLm1vbnRoID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy5kYXkgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgYmFzZURhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgLy8gaWYgbm8gZGF0ZSBpcyBzZWxlY3RlZCwgYnV0IHRpbWUgaXMgY2hhbmdlZCwgdXNlIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGNhbGVuZGFyIGZvciBkYXRlIHBhcnRcbiAgICAgIGJhc2VEYXRlID0gZGF5anMoY3VycmVudE1vbnRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRlID0gYmFzZURhdGVcbiAgICAgIC5zZXQoXCJ5ZWFyXCIsIG5ld0RhdGVQYXJ0cy55ZWFyID8/IGJhc2VEYXRlLnllYXIoKSlcbiAgICAgIC5zZXQoXCJtb250aFwiLCBuZXdEYXRlUGFydHMubW9udGggPz8gYmFzZURhdGUubW9udGgoKSkgLy8gbW9udGggaXMgMC1pbmRleGVkIGZvciBkYXlqc1xuICAgICAgLnNldChcImRhdGVcIiwgbmV3RGF0ZVBhcnRzLmRheSA/PyBiYXNlRGF0ZS5kYXRlKCkpXG4gICAgICAuc2V0KFwiaG91clwiLCBuZXdEYXRlUGFydHMuaG91ciA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLmhvdXIoKSA6IDApKVxuICAgICAgLnNldChcIm1pbnV0ZVwiLCBuZXdEYXRlUGFydHMubWludXRlID8/IChoYXNUaW1lUHJlY2lzaW9uID8gYmFzZURhdGUubWludXRlKCkgOiAwKSlcbiAgICAgIC5zZXQoXCJzZWNvbmRcIiwgbmV3RGF0ZVBhcnRzLnNlY29uZCA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLnNlY29uZCgpIDogMCkpO1xuXG4gICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUudG9EYXRlKCkpO1xuICAgIC8vIHNldEN1cnJlbnRNb250aCBzaG91bGQgb25seSBiZSB1cGRhdGVkIGlmIHllYXIgb3IgbW9udGggY2hhbmdlcywgbm90IGp1c3QgdGltZVxuICAgIGlmIChuZXdEYXRlUGFydHMueWVhciAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5tb250aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZS50b0RhdGUoKSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBuZXdEYXRlLmZvcm1hdChkYkZvcm1hdCkgOiBuZXdEYXRlLnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgLy8gVXBkYXRlIGluZGl2aWR1YWwgaW5wdXQgZmllbGRzXG4gICAgaWYgKG5ld0RhdGVQYXJ0cy55ZWFyICE9PSB1bmRlZmluZWQpIHNldFllYXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLnllYXIpKTtcbiAgICBpZiAoaGFzVGltZVByZWNpc2lvbikge1xuICAgICAgaWYgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQpIHNldEhvdXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLmhvdXIpLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XG4gICAgICBpZiAobmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkKSBzZXRNaW51dGVWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLm1pbnV0ZSkucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICAgIGlmIChuZXdEYXRlUGFydHMuc2Vjb25kICE9PSB1bmRlZmluZWQpIHNldFNlY29uZFZhbHVlKFN0cmluZyhuZXdEYXRlUGFydHMuc2Vjb25kKS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIH1cbiAgfTtcblxuICAvLyBIYW5kbGUgbW9udGggc2VsZWN0aW9uIGNoYW5nZVxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbW9udGhJbmRleCA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IG1vbnRoOiBtb250aEluZGV4IH0pO1xuICB9O1xuXG4gIC8vIEhhbmRsZSB5ZWFyIGlucHV0IGNoYW5nZVxuICBjb25zdCBoYW5kbGVZZWFyQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgbmV3WWVhclN0ciA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFllYXJWYWx1ZShuZXdZZWFyU3RyKTtcbiAgICBpZiAoL15cXGR7MSw0fSQvLnRlc3QobmV3WWVhclN0cikpIHtcbiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChuZXdZZWFyU3RyKTtcbiAgICAgIGlmIChuZXdZZWFyU3RyLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IHllYXIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRpbWVDaGFuZ2UgPSAocGFydDogXCJob3VyXCIgfCBcIm1pbnV0ZVwiIHwgXCJzZWNvbmRcIiwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obnVtZXJpY1ZhbHVlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3SG91ciA9IHBhcnQgPT09IFwiaG91clwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQoaG91clZhbHVlKTtcbiAgICBjb25zdCBuZXdNaW51dGUgPSBwYXJ0ID09PSBcIm1pbnV0ZVwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQobWludXRlVmFsdWUpO1xuICAgIGNvbnN0IG5ld1NlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgPyBudW1lcmljVmFsdWUgOiBwYXJzZUludChzZWNvbmRWYWx1ZSk7XG5cbiAgICBpZiAocGFydCA9PT0gXCJob3VyXCIpIHNldEhvdXJWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcIm1pbnV0ZVwiKSBzZXRNaW51dGVWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcInNlY29uZFwiKSBzZXRTZWNvbmRWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuXG4gICAgLy8gVXBkYXRlIG9ubHkgaWYgdGhlIHZhbHVlIGlzIGEgY29tcGxldGUgbnVtYmVyIGZvciB0aGF0IHBhcnRcbiAgICBjb25zdCBpc0NvbXBsZXRlSG91ciA9IHBhcnQgPT09IFwiaG91clwiICYmIHZhbHVlLmxlbmd0aCA+PSAxICYmIG51bWVyaWNWYWx1ZSA+PSAwICYmIG51bWVyaWNWYWx1ZSA8PSAyMztcbiAgICBjb25zdCBpc0NvbXBsZXRlTWludXRlID0gcGFydCA9PT0gXCJtaW51dGVcIiAmJiB2YWx1ZS5sZW5ndGggPj0gMSAmJiBudW1lcmljVmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPD0gNTk7XG4gICAgY29uc3QgaXNDb21wbGV0ZVNlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgJiYgdmFsdWUubGVuZ3RoID49IDEgJiYgbnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDw9IDU5O1xuXG4gICAgaWYgKFxuICAgICAgKHBhcnQgPT09IFwiaG91clwiICYmIGlzQ29tcGxldGVIb3VyKSB8fFxuICAgICAgKHBhcnQgPT09IFwibWludXRlXCIgJiYgaXNDb21wbGV0ZU1pbnV0ZSkgfHxcbiAgICAgIChwYXJ0ID09PSBcInNlY29uZFwiICYmIGlzQ29tcGxldGVTZWNvbmQpXG4gICAgKSB7XG4gICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IGhvdXI6IG5ld0hvdXIsIG1pbnV0ZTogbmV3TWludXRlLCBzZWNvbmQ6IG5ld1NlY29uZCB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIHllYXIgdmFsdWUgd2hlbiBzZWxlY3RlZERhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZERhdGUpIHtcbiAgICAgIGNvbnN0IGRqc0RhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgICAgc2V0WWVhclZhbHVlKGRqc0RhdGUueWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgc2V0SG91clZhbHVlKGRqc0RhdGUuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgICBzZXRNaW51dGVWYWx1ZShkanNEYXRlLmZvcm1hdChcIm1tXCIpKTtcbiAgICAgICAgc2V0U2Vjb25kVmFsdWUoZGpzRGF0ZS5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VsZWN0ZWREYXRlLCBoYXNUaW1lUHJlY2lzaW9uXSk7XG5cbiAgLy8gVXBkYXRlIG1vbnRoIGFuZCB5ZWFyIHdoZW4gY2FsZW5kYXIgbW9udGggY2hhbmdlcyAoZS5nLiBieSBhcnJvdyBuYXZpZ2F0aW9uIGluIGNhbGVuZGFyKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50TW9udGgpIHtcbiAgICAgIC8vIERvIG5vdCB1cGRhdGUgeWVhclZhbHVlIGlmIHNlbGVjdGVkRGF0ZSBpcyBwcmVzZW50LCBhcyBpdCdzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHllYXJWYWx1ZVxuICAgICAgaWYgKCFzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgc2V0WWVhclZhbHVlKGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2N1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1wci1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMCBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1tYi0xIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17Y3VycmVudE1vbnRoVmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZU1vbnRoQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk1vbnRoXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7bW9udGhzLm1hcCgobW9udGgpID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e21vbnRoLnZhbHVlfSB2YWx1ZT17bW9udGgudmFsdWV9PlxuICAgICAgICAgICAgICAgICAge21vbnRoLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0yMCBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17eWVhclZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVllYXJDaGFuZ2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlllYXJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxEYXlQaWNrZXJXcmFwcGVyXG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0ZX1cbiAgICAgICAgICBtb250aD17Y3VycmVudE1vbnRofVxuICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVDYWxlbmRhclNlbGVjdH1cbiAgICAgICAgICBvbk1vbnRoQ2hhbmdlPXtzZXRDdXJyZW50TW9udGh9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICB7aGFzVGltZVByZWNpc2lvbiAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LXN0YXJ0IHBzLWdhcC0xIHBzLW10LTFcIj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2hvdXJWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwiaG91clwiLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIlxuICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgIG1heD17MjN9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17Mn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e21pbnV0ZVZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRpbWVDaGFuZ2UoXCJtaW51dGVcIiwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tXCJcbiAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICBtYXg9ezU5fVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtzZWNvbmRWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwic2Vjb25kXCIsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJzc1wiXG4gICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgbWF4PXs1OX1cbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+e2Zvcm1hdHRlZERhdGV9PC9jb2RlPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgICBvblNldE5vdz17aGFuZGxlU2V0Tm93fVxuICAgICAgICBzaG93U2V0Tm93PXt0cnVlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuLy8gQSB3cmFwcGVyIGNvbXBvbmVudCB0byBlbnN1cmUgcHJvcGVyIHByb3BzIGFyZSBwYXNzZWQgdG8gRGF5UGlja2VyXG5mdW5jdGlvbiBEYXlQaWNrZXJXcmFwcGVyKHtcbiAgc2VsZWN0ZWQsXG4gIG1vbnRoLFxuICBvblNlbGVjdCxcbiAgb25Nb250aENoYW5nZSxcbiAgZGlzYWJsZWQsXG59OiB7XG4gIHNlbGVjdGVkPzogRGF0ZTtcbiAgbW9udGg6IERhdGU7XG4gIG9uU2VsZWN0OiAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbiAgb25Nb250aENoYW5nZTogKGRhdGU6IERhdGUpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q2FsZW5kYXJcbiAgICAgIG1vZGU9XCJzaW5nbGVcIlxuICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgbW9udGg9e21vbnRofVxuICAgICAgb25Nb250aENoYW5nZT17b25Nb250aENoYW5nZX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwiZHJvcGRvd25cIlxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgRGF5UGlja2VyIH0gZnJvbSBcInJlYWN0LWRheS1waWNrZXJcIjtcblxuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEYXlQaWNrZXI+ICYge1xuICBjYXB0aW9uTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUNsYXNzTmFtZT86IHN0cmluZztcbiAgZGF5QnV0dG9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkcm9wZG93bnNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2FwdGlvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhHcmlkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aHNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZUVuZENsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VNaWRkbGVDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlU3RhcnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdGVkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZENsYXNzTmFtZT86IHN0cmluZztcbiAgaGlkZGVuQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBvdXRzaWRlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB0b2RheUNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0VHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIENhbGVuZGFyKHsgY2xhc3NOYW1lLCBjbGFzc05hbWVzLCBzaG93T3V0c2lkZURheXMgPSB0cnVlLCBoaWRlTmF2aWdhdGlvbiwgLi4ucHJvcHMgfTogQ2FsZW5kYXJQcm9wcykge1xuICBjb25zdCBfbW9udGhzQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93XCIsIHByb3BzLm1vbnRoc0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9tb250aENhcHRpb25DbGFzc05hbWUgPSBjbihcInJlbGF0aXZlIGZsZXggaC03IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLCBwcm9wcy5tb250aENhcHRpb25DbGFzc05hbWUpO1xuICBjb25zdCBfZHJvcGRvd25zQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIixcbiAgICBoaWRlTmF2aWdhdGlvbiA/IFwicHMtdy1mdWxsXCIgOiBcInBzLWhpZGRlblwiLFxuICAgIHByb3BzLmRyb3Bkb3duc0NsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2Zvb3RlckNsYXNzTmFtZSA9IGNuKFwicHMtcHQtMyBwcy10ZXh0LXhzXCIsIHByb3BzLmZvb3RlckNsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5c0NsYXNzTmFtZSA9IGNuKFwicHMtZmxleFwiLCBwcm9wcy53ZWVrZGF5c0NsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5Q2xhc3NOYW1lID0gY24oXCJwcy13LTkgcHMtdGV4dC14cyBwcy1mb250LW5vcm1hbCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgcHJvcHMud2Vla2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUgPSBjbihcInBzLXRydW5jYXRlIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIiwgcHJvcHMuY2FwdGlvbkxhYmVsQ2xhc3NOYW1lKTtcblxuICBjb25zdCBfbW9udGhHcmlkQ2xhc3NOYW1lID0gY24oXCJwcy1teC1hdXRvIHBzLW10LTRcIiwgcHJvcHMubW9udGhHcmlkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3dlZWtDbGFzc05hbWUgPSBjbihcInBzLW10LTAgcHMtZmxleCBwcy13LW1heCBwcy1pdGVtcy1zdGFydFwiLCBwcm9wcy53ZWVrQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2RheUNsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1zaXplLTkgcHMtZmxleC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtdGV4dC14c1wiLFxuICAgIHByb3BzLmRheUNsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2RheUJ1dHRvbkNsYXNzTmFtZSA9IGNuKFxuICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJnaG9zdFwiIH0pLFxuICAgIFwicHMtc2l6ZS04IHBzLXJvdW5kZWQtbWQgcHMtcC0wIHBzLWZvbnQtbm9ybWFsIHBzLXRleHQteHMgcHMtdHJhbnNpdGlvbi1ub25lIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0xMDBcIixcbiAgICBwcm9wcy5kYXlCdXR0b25DbGFzc05hbWUsXG4gICk7XG5cbiAgY29uc3QgYnV0dG9uUmFuZ2VDbGFzc05hbWUgPVxuICAgIFwicHMtYmctYWNjZW50IHBzLVsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCI7XG4gIGNvbnN0IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1zLW1kXCIsIHByb3BzLnJhbmdlU3RhcnRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VFbmRDbGFzc05hbWUgPSBjbihidXR0b25SYW5nZUNsYXNzTmFtZSwgXCJwcy1yb3VuZGVkLWUtbWRcIiwgcHJvcHMucmFuZ2VFbmRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VNaWRkbGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWJnLWFjY2VudCAhcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTohcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06aG92ZXI6cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTpob3ZlcjohcHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMucmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9zZWxlY3RlZENsYXNzTmFtZSA9IGNuKFxuICAgIFwiWyY+YnV0dG9uXTpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICBcIlsmW2FyaWEtc2VsZWN0ZWRdPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMuc2VsZWN0ZWRDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF90b2RheUNsYXNzTmFtZSA9IGNuKFwiWyY+YnV0dG9uXTpwcy1mb250LWJvbGQgWyY+YnV0dG9uXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsIHByb3BzLnRvZGF5Q2xhc3NOYW1lKTtcbiAgY29uc3QgX291dHNpZGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwIGFyaWEtc2VsZWN0ZWQ6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0zMFwiLFxuICAgIHByb3BzLm91dHNpZGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kaXNhYmxlZENsYXNzTmFtZSA9IGNuKFwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLW9wYWNpdHktNTBcIiwgcHJvcHMuZGlzYWJsZWRDbGFzc05hbWUpO1xuICBjb25zdCBfaGlkZGVuQ2xhc3NOYW1lID0gY24oXCJwcy1pbnZpc2libGUgcHMtZmxleC0xXCIsIHByb3BzLmhpZGRlbkNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGF5UGlja2VyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIGNhcHRpb25MYXlvdXQ9XCJsYWJlbFwiXG4gICAgICBoaWRlTmF2aWdhdGlvblxuICAgICAgc2hvd091dHNpZGVEYXlzPXtzaG93T3V0c2lkZURheXN9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtcC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgIGNhcHRpb25fbGFiZWw6IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUsXG4gICAgICAgIGRheTogX2RheUNsYXNzTmFtZSxcbiAgICAgICAgZGF5X2J1dHRvbjogX2RheUJ1dHRvbkNsYXNzTmFtZSxcbiAgICAgICAgZHJvcGRvd25zOiBfZHJvcGRvd25zQ2xhc3NOYW1lLFxuICAgICAgICBmb290ZXI6IF9mb290ZXJDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoOiBwcm9wcy5tb250aENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfY2FwdGlvbjogX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfZ3JpZDogX21vbnRoR3JpZENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhzOiBfbW9udGhzQ2xhc3NOYW1lLFxuICAgICAgICB3ZWVrOiBfd2Vla0NsYXNzTmFtZSxcbiAgICAgICAgd2Vla2RheTogX3dlZWtkYXlDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXlzOiBfd2Vla2RheXNDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX2VuZDogX3JhbmdlRW5kQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9taWRkbGU6IF9yYW5nZU1pZGRsZUNsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2Vfc3RhcnQ6IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lLFxuICAgICAgICBzZWxlY3RlZDogX3NlbGVjdGVkQ2xhc3NOYW1lLFxuICAgICAgICBkaXNhYmxlZDogX2Rpc2FibGVkQ2xhc3NOYW1lLFxuICAgICAgICBoaWRkZW46IF9oaWRkZW5DbGFzc05hbWUsXG4gICAgICAgIG91dHNpZGU6IF9vdXRzaWRlQ2xhc3NOYW1lLFxuICAgICAgICB0b2RheTogX3RvZGF5Q2xhc3NOYW1lLFxuICAgICAgICBuYXY6IFwicHMtaGlkZGVuXCIsXG4gICAgICAgIC4uLmNsYXNzTmFtZXMsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5DYWxlbmRhci5kaXNwbGF5TmFtZSA9IFwiQ2FsZW5kYXJcIjtcblxuZXhwb3J0IHsgQ2FsZW5kYXIgfTtcbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSwgc2V0VmFsdWUgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBiYWRnZVZhcmlhbnRzIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bUlucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudW1JbnB1dChwcm9wczogRW51bUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgY29sdW1uLCB2YWx1ZSwgb3B0aW9ucyA9IFtdLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IChvcHRpb246IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoY3VycmVudFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbCwgdmFsdWVdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTsgLy8gUmVzZXQgbnVsbCBzdGF0ZSBhcyB3ZWxsXG4gIH07XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtZm9udC1tb25vIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXB4LTIgcHMtcHktMCBwcy13LWZ1bGwgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAge2N1cnJlbnRWYWx1ZX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWZsZXgtd3JhcCBwcy1nYXAtMiBwcy1wLTIgcHMtbWluLXctW3ZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aCldIHBzLW1heC13LVs1MDBweF0gdy1mdWxsIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtb3ZlcmZsb3cteS1zY3JvbGwgcHMtbWF4LWgtMzJcIj5cbiAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrZXk9e29wdGlvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtiYWRnZVZhcmlhbnRzKHsgdmFyaWFudDogb3B0aW9uID09PSBjdXJyZW50VmFsdWUgPyBcImRlZmF1bHRcIiA6IFwib3V0bGluZVwiIH0pfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ufVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBKc29uSW5wdXQocHJvcHM6IEpzb25JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBcIlwiIDogSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGpzb25WYWx1ZSA9IGN1cnJlbnRWYWx1ZSA9PT0gXCJcIiA/IG51bGwgOiAoSlNPTi5wYXJzZShjdXJyZW50VmFsdWUpIGFzIG9iamVjdCk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoanNvblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQoanNvblZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIHJvd3M9ezV9XG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1iYXNlIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0lucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOdW1lcmljSW5wdXQocHJvcHM6IE51bWVyaWNJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4odmFsdWUgPT09IG51bGwgPyBcIlwiIDogU3RyaW5nKHZhbHVlKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0byBudW1iZXJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQobnVtZXJpY1ZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwibnVtZXJpYy1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBOdW1lcmljXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBpbnB1dE1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBwYXR0ZXJuPVwiXFxkKlwiXG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICBsYW5nPVwiZW5fRU5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3SW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXdJbnB1dChwcm9wczogUmF3SW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVJbnB1dChwcm9wczogVGltZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGltZSB2YWx1ZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBtYW5uZXJcbiAgY29uc3QgZm9ybWF0dGVkVGltZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWlucHV0VmFsdWUuaW5jbHVkZXMoXCI6XCIpKSByZXR1cm4gaW5wdXRWYWx1ZTtcblxuICAgICAgY29uc3QgaGFzVGltZXpvbmUgPSAvWystXVxcZHsyfSg6XFxkezJ9KT8kLy50ZXN0KGlucHV0VmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGAyMDAwLTAxLTAxICR7aW5wdXRWYWx1ZX1gKTtcbiAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoXCJoOm1tIEFcIikgKyAoaGFzVGltZXpvbmUgPyBgICgke2RhdGUuZm9ybWF0KFwiWlwiKX0pYCA6IFwiXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lUmVnZXggPSAvKFxcZHsxLDJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlxcZCspPyhbKy1dXFxkezJ9KD86OlxcZHsyfSk/KT8vO1xuICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dFZhbHVlLm1hdGNoKHRpbWVSZWdleCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSBwYXJzZUludChtYXRjaFsxXSB8fCBcIjEyXCIsIDEwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IG1hdGNoWzJdIHx8IFwiMDBcIjtcbiAgICAgICAgY29uc3QgdHpPZmZzZXQgPSBtYXRjaFs0XSB8fCBcIlwiO1xuICAgICAgICBjb25zdCBwZXJpb2QgPSBob3VycyA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjtcbiAgICAgICAgY29uc3QgaG91cjEyID0gaG91cnMgJSAxMiA9PT0gMCA/IDEyIDogaG91cnMgJSAxMjtcblxuICAgICAgICByZXR1cm4gYCR7aG91cjEyfToke21pbnV0ZXN9ICR7cGVyaW9kfSR7dHpPZmZzZXQgPyBgICgke3R6T2Zmc2V0fSlgIDogXCJcIn1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cbiAgfSwgW2lucHV0VmFsdWVdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Rm9ybWF0dGVkIHZhbHVlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtdGV4dC1mb3JlZ3JvdW5kXCI+e2Zvcm1hdHRlZFRpbWV9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93UmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdXVpZCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIExpbmsocHJvcHM6IHsgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4gfSA9IHByb3BzO1xuICBjb25zdCB7IGZrU2NoZW1hLCBma1RhYmxlLCBma0NvbHVtbiB9ID0gY29sdW1uO1xuICBjb25zdCB7IGhhbmRsZVNjaGVtYUNoYW5nZSwgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IHsgc2V0QXBwbGllZEZpbHRlciB9ID0gdXNlRmlsdGVyaW5nKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuXG4gIGlmIChma1NjaGVtYSAhPT0gbnVsbCAmJiBma1RhYmxlICE9PSBudWxsICYmIGZrQ29sdW1uICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFibGUgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbZmtTY2hlbWFdPy50YWJsZXNbZmtUYWJsZV07XG5cbiAgICBpZiAodGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHNpemU9e1wieHNcIn1cbiAgICAgICAgICB2YXJpYW50PXtcIm91dGxpbmVcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhhbmRsZVNjaGVtYUNoYW5nZShma1NjaGVtYSk7XG4gICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKHtcbiAgICAgICAgICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICAgICAgY29sdW1uOiBma0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBjZWxsLmdldFZhbHVlKCksXG4gICAgICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBcnJvd1JpZ2h0IHNpemU9ezEyfSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsga2V5TWFwLCB1c2VRdWVyeVN0YXRlLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcbmltcG9ydCB7IElOSVRJQUxfREFUQV9VUERBVEVEX0FULCB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBIb29rIHRvIGVuY2Fwc3VsYXRlIGFsbCBsb2dpYyBmb3IgbWFuYWdpbmcgdGhlIGFjdGl2ZSB0YWJsZSBzZWxlY3Rpb24uXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zLCBkZWZhdWx0IHNlbGVjdGlvbiwgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWEsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICBjb25zdCBbY3VycmVudFZpZXdWYWx1ZV0gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTsgLy8gUmVhZCB0aGUgY3VycmVudCB2aWV3XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRWaWV3XSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJ2aWV3XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcblxuICAvLyBHZXQgYWxsIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hIGZyb20gVVJMIG9yIGRlZmF1bHRcbiAgY29uc3QgdGFibGVzOiBUYWJsZVtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgLy8gQWx3YXlzIHVzZSB0aGUgYWN0aXZlU2NoZW1hIGZyb20gY29udGV4dFxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hc1thY3RpdmVTY2hlbWFdPy50YWJsZXMgfHwge30pO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzLCBhY3RpdmVTY2hlbWFdKTtcblxuICAvLyBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIHRhYmxlcyBhY3Jvc3MgYWxsIHNjaGVtYXNcbiAgY29uc3QgdG90YWxUYWJsZUNvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKS5yZWR1Y2UoKHN1bSwgc2NoZW1hKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgT2JqZWN0LmtleXMoc2NoZW1hLnRhYmxlcykubGVuZ3RoO1xuICAgIH0sIDApO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzXSk7XG5cbiAgY29uc3QgW2ZpcnN0VGFibGVdID0gdGFibGVzO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSA9PT0gXCJzY2hlbWFcIikge1xuICAgICAgcmV0dXJuOyAvLyBEbyBub3QgaW50ZXJmZXJlIGlmIG9uIHNjaGVtYSB2aWV3XG4gICAgfVxuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRVUkxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpKTtcbiAgICBjb25zdCB2aWV3UGFyYW1FeGlzdHMgPSBjdXJyZW50VVJMUGFyYW1zLmhhcyhcInZpZXdcIik7XG5cbiAgICAvLyBTY2VuYXJpbyAxOiBVUkwgaGFzIHRhYmxlIGFuZCBzY2hlbWEsIGFuZCBVUkwncyBzY2hlbWEgbWF0Y2hlcyBjb250ZXh0J3MgYWN0aXZlU2NoZW1hLlxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVBbmRTY2hlbWEuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IHRhYmxlRnJvbVBhcmFtID0gdGFibGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGFibGVBbmRTY2hlbWEudGFibGUpOyAvLyB0YWJsZXMgYXJlIGFscmVhZHkgZmlsdGVyZWQgYnkgYWN0aXZlU2NoZW1hXG5cbiAgICAgIGlmICh0YWJsZUZyb21QYXJhbSkge1xuICAgICAgICBpZiAoYWN0aXZlVGFibGUgIT09IHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pOyAvLyBTeW5jIGNvbnRleHQgYWN0aXZlVGFibGVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpOyAvLyBFbnN1cmUgdmlldz10YWJsZSBpZiBtaXNzaW5nXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuOyAvLyBUYWJsZSBzdWNjZXNzZnVsbHkgc3luY2VkIGZyb20gVVJMIGZvciB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICB9XG4gICAgICAvLyBJZiB0YWJsZSBzcGVjaWZpZWQgaW4gVVJMIG5vdCBmb3VuZCBpbiBjdXJyZW50IGFjdGl2ZVNjaGVtYSdzIHRhYmxlcywgZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQuXG4gICAgfVxuXG4gICAgLy8gU2NlbmFyaW8gMjogRGVmYXVsdGluZyBsb2dpYyBvciBjb250ZXh0L1VSTCBzY2hlbWEgbWlzbWF0Y2ggcmVxdWlyaW5nIHJlc2V0LlxuICAgIC8vIFRoaXMgY292ZXJzOlxuICAgIC8vIC0gTm8gdGFibGUgaW4gVVJMIGZvciB0aGUgYWN0aXZlU2NoZW1hLlxuICAgIC8vIC0gVVJMIHNjaGVtYSBkaWZmZXJzIGZyb20gY29udGV4dCBhY3RpdmVTY2hlbWEuXG4gICAgLy8gLSBDb250ZXh0IGFjdGl2ZVRhYmxlIGlzIG5vdCBzZXQgb3IgaXMgbm90IHZhbGlkIGZvciB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgaWYgKHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiBjdXJyZW50IGFjdGl2ZVNjaGVtYSBoYXMgYW55IHRhYmxlc1xuICAgICAgY29uc3QgaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEgPVxuICAgICAgICBhY3RpdmVUYWJsZSAmJiBhY3RpdmVUYWJsZS5zY2hlbWEgPT09IGFjdGl2ZVNjaGVtYSAmJiB0YWJsZXMuc29tZSgodCkgPT4gdC5uYW1lID09PSBhY3RpdmVUYWJsZS5uYW1lKTtcblxuICAgICAgaWYgKCFpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSAmJiBmaXJzdFRhYmxlKSB7XG4gICAgICAgIC8vIENvbnRleHQgYWN0aXZlVGFibGUgaXMgbm90IHNldCwgb3IgaXMgZm9yIGEgZGlmZmVyZW50IHNjaGVtYSwgb3Igbm90IGluIGN1cnJlbnQgc2NoZW1hJ3MgdGFibGVzLlxuICAgICAgICAvLyBTZXQgdG8gdGhlIGZpcnN0IHRhYmxlIG9mIHRoZSBjdXJyZW50IGFjdGl2ZVNjaGVtYS5cbiAgICAgICAgc2V0QWN0aXZlVGFibGUoZmlyc3RUYWJsZSk7IC8vIFVwZGF0ZSBjb250ZXh0XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogZmlyc3RUYWJsZS5uYW1lLCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KTsgLy8gVXBkYXRlIFVSTCBmb3IgdGFibGUgYW5kIHNjaGVtYVxuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTsgLy8gRXhwbGljaXRseSBzZXQgdmlldz10YWJsZSB3aGVuIGRlZmF1bHRpbmcgVVJMXG4gICAgICB9IGVsc2UgaWYgKGlzQ29udGV4dFRhYmxlVmFsaWRGb3JDdXJyZW50U2NoZW1hICYmICF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgLy8gQ29udGV4dCBhY3RpdmVUYWJsZSBpcyB2YWxpZCBmb3IgY3VycmVudCBzY2hlbWEsIGJ1dCBVUkwgaXMgbWlzc2luZyB2aWV3LiBBZGQgaXQuXG4gICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgfSBlbHNlIGlmICghZmlyc3RUYWJsZSAmJiB0YWJsZUFuZFNjaGVtYT8udGFibGUpIHtcbiAgICAgICAgLy8gVGhpcyBjYXNlIHNob3VsZCBiZSByYXJlIGlmIHRhYmxlcy5sZW5ndGggPiAwLCBtZWFucyBmaXJzdFRhYmxlIGlzIG51bGwgYnV0IFVSTCBoYXMgYSB0YWJsZS5cbiAgICAgICAgLy8gVGhpcyBpbXBsaWVzIGFuIGluY29uc2lzdGVuY3k7IHNhZmVyIHRvIGNsZWFyIFVSTCB0YWJsZSBmb3IgdGhpcyBzY2hlbWEuXG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbnVsbCwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7XG4gICAgICAgIGlmICghdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgICAgLy8gU3RpbGwgZW5zdXJlIHZpZXcgcGFyYW1cbiAgICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgIC8vIENhdGNoLWFsbCBpZiBmb3Igc29tZSByZWFzb24gdmlldyBpcyBzdGlsbCBtaXNzaW5nIGFuZCB3ZSBoYXZlIHRhYmxlc1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gdGFibGVzIGluIHRoZSBjdXJyZW50IGFjdGl2ZVNjaGVtYS5cbiAgICAgIGlmIChhY3RpdmVUYWJsZSkge1xuICAgICAgICAvLyBJZiBjb250ZXh0IHN0aWxsIGhvbGRzIGFuIGFjdGl2ZSB0YWJsZSAoZS5nLiBmcm9tIGEgcHJldmlvdXMgc2NoZW1hKVxuICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTsgLy8gQ2xlYXIgaXRcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUpIHtcbiAgICAgICAgLy8gSWYgVVJMIHN0aWxsIGhhcyBhIHRhYmxlIHBhcmFtIGZvciB0aGlzIChub3cgZW1wdHkpIHNjaGVtYVxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG51bGwsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pOyAvLyBDbGVhciBpdCBmcm9tIFVSTFxuICAgICAgfVxuICAgICAgLy8gRXZlbiBpZiBubyB0YWJsZXMsIGVuc3VyZSB2aWV3IHBhcmFtZXRlciBpcyBwcmVzZW50IChlLmcuLCB2aWV3PXRhYmxlIG9yIGEgc3BlY2lmaWMgXCJub190YWJsZXNfdmlld1wiKVxuICAgICAgLy8gRm9yIG5vdywgY29uc2lzdGVudGx5IHNldHRpbmcgdG8gXCJ0YWJsZVwiLiBTdHVkaW9Db250ZW50IHdpbGwgZGVjaWRlIGFjdHVhbCByZW5kZXJpbmcuXG4gICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmcsXG4gICAgdGFibGVBbmRTY2hlbWEsXG4gICAgdGFibGVzLFxuICAgIGZpcnN0VGFibGUsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgYWN0aXZlU2NoZW1hLFxuICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgIHNldFRhYmxlQW5kU2NoZW1hLFxuICAgIHNldFZpZXcsIC8vIEFkZGVkIHNldFZpZXcgdG8gZGVwZW5kZW5jeSBhcnJheVxuICAgIGN1cnJlbnRWaWV3VmFsdWUsIC8vIEFkZGVkIGN1cnJlbnRWaWV3VmFsdWUgdG8gZGVwZW5kZW5jeSBhcnJheVxuICBdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICAvLyBFbnN1cmUgYm90aCB0YWJsZSBhbmQgc2NoZW1hIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIFVSTFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHtcbiAgICAgICAgICB0YWJsZTogbmV3VGFibGUubmFtZSxcbiAgICAgICAgICBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtLCBzZXRWaWV3XSxcbiAgKTtcblxuICAvLyBIYW5kbGUgc2NoZW1hIGNoYW5nZVxuICBjb25zdCBoYW5kbGVTY2hlbWFDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3U2NoZW1hOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChuZXdTY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTsgLy8gQ2xlYXIgYWN0aXZlIHRhYmxlIHdoZW4gc2NoZW1hIGNoYW5nZXNcbiAgICAgICAgc2V0QWN0aXZlU2NoZW1hKG5ld1NjaGVtYSk7IC8vIFVwZGF0ZSBjb250ZXh0IGFjdGl2ZSBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBudWxsLCBzY2hlbWE6IG5ld1NjaGVtYSB9KTsgLy8gVXBkYXRlIFVSTCBmb3Igc2NoZW1hLCBjbGVhciB0YWJsZVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHZpZXcgdG8gXCJ0YWJsZVwiIGlmIG5vdCBjdXJyZW50bHkgb24gXCJzY2hlbWFcIiB2aWV3XG4gICAgICAgIGlmIChjdXJyZW50Vmlld1ZhbHVlICE9PSBcInNjaGVtYVwiKSB7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgY3VycmVudFZpZXdWYWx1ZSBpcyBcInNjaGVtYVwiLCBpdCByZW1haW5zIFwic2NoZW1hXCJcblxuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICAgICAgICB2b2lkIHNldFBhZ2VQYXJhbShudWxsKTtcbiAgICAgICAgdm9pZCBzZXRTb3J0UGFyYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICBzZXRBY3RpdmVTY2hlbWEsXG4gICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgIHNldFRhYmxlQW5kU2NoZW1hLFxuICAgICAgc2V0UGFnZVBhcmFtLFxuICAgICAgc2V0U29ydFBhcmFtLFxuICAgICAgc2V0VmlldyxcbiAgICAgIGN1cnJlbnRWaWV3VmFsdWUsIC8vIEFkZGVkIGN1cnJlbnRWaWV3VmFsdWUgdG8gZGVwZW5kZW5jeSBhcnJheVxuICAgIF0sXG4gICk7XG5cbiAgLy8gU3luYyBVUkwgc2NoZW1hIHBhcmFtZXRlciB3aXRoIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBPbmx5IHVwZGF0ZSBVUkwgaWYgdGhlIHNjaGVtYSBmcm9tIFVSTCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWN0aXZlU2NoZW1hXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSAmJiAhaXNMb2FkaW5nKSB7XG4gICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KSk7XG4gICAgfVxuICB9LCBbYWN0aXZlU2NoZW1hLCB0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYSwgaXNMb2FkaW5nXSk7XG5cbiAgLy8gU3luYyBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aXRoIFVSTCBzY2hlbWEgcGFyYW1ldGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aGVuIFVSTCBzY2hlbWEgcGFyYW0gY2hhbmdlc1xuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBzZXRBY3RpdmVTY2hlbWEodGFibGVBbmRTY2hlbWEuc2NoZW1hKTtcbiAgICB9XG4gIH0sIFt0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBhY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaGFuZGxlVGFibGVDaGFuZ2UsXG4gICAgaGFuZGxlU2NoZW1hQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uIH0pfVxuICAgICAgICAgICAgbGlua0NvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuXG5pbnRlcmZhY2UgU3R1ZGlvSGVhZGVyUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZW5kQ29udGVudD86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0hlYWRlcihwcm9wczogU3R1ZGlvSGVhZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGwgcHMtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3RvZ2dsZU5hdmlnYXRpb259PlxuICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7cHJvcHMuZW5kQ29udGVudH1cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIEJhc2ljVmlldygpIHtcbiAgcmV0dXJuIDxkaXY+QmFzaWNWaWV3PC9kaXY+O1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxudHlwZSBOYXZpZ2F0aW9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHsgY2xhc3NOYW1lIH06IE5hdmlnYXRpb25Qcm9wcykge1xuICAvLyBVc2UgdGhlIGN1c3RvbSBob29rIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVF1ZXJ5U3RhdGUoXCJ2aWV3XCIpO1xuICAvLyBQcm92aWRlIHBhcnNlL3NlcmlhbGl6ZSBmb3IgdGFibGUgYW5kIHNjaGVtYSB0byBoYW5kbGUgbnVsbCBjb3JyZWN0bHlcbiAgY29uc3QgWywgc2V0VXJsVGFibGVdID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInRhYmxlXCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLCAvLyBTZXJpYWxpemUgbnVsbCB0byBlbXB0eSBzdHJpbmcsIG51cXMgbWlnaHQgcmVtb3ZlIHBhcmFtXG4gIH0pO1xuICBjb25zdCBbLCBzZXRVcmxTY2hlbWFdID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNjaGVtYVwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIiwgLy8gU2VyaWFsaXplIG51bGwgdG8gZW1wdHkgc3RyaW5nXG4gIH0pO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgLz5cblxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJTdHVkaW9cIj5cbiAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICBpc0FjdGl2ZT17dmlldyA9PT0gXCJzY2hlbWFcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHNldFVybFRhYmxlKG51bGwpO1xuICAgICAgICAgICAgdm9pZCBzZXRVcmxTY2hlbWEobnVsbCk7XG4gICAgICAgICAgICB2b2lkIHNldFZpZXcoXCJzY2hlbWFcIik7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxhIGhyZWY9e2Ajdmlldz1zY2hlbWFgfT5TY2hlbWEgdmlzdWFsaXNhdGlvbjwvYT5cbiAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG5cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiVGFibGVzXCI+XG4gICAgICAgIHt0YWJsZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICB0YWJsZXMubWFwKCh0YWJsZSkgPT4gKFxuICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgICAgICBrZXk9e2Ake3RhYmxlLnNjaGVtYX0tJHt0YWJsZS5uYW1lfWB9XG4gICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVRhYmxlID09PSB0YWJsZSAmJiB2aWV3ID09PSBcInRhYmxlXCJ9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfSZ2aWV3PXRhYmxlYH0+e3RhYmxlLm5hbWV9PC9hPlxuICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IGlzTG9hZGluZyA/IChcbiAgICAgICAgICBBcnJheSg0KVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0ga2V5PXtpbmRleH0gd3JhcENoaWxkcmVuSW5TcGFuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtMyBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE5hdmlnYXRpb24uSXRlbT5ObyB0YWJsZXMgZm91bmQ8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgKX1cbiAgICAgIDwvTmF2aWdhdGlvbi5CbG9jaz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQmxvY2sgPSAoeyBjbGFzc05hbWUsIGxhYmVsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICA8VGFibGUyIHNpemU9ezE2fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIiAvPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bVwiPntsYWJlbH08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmF2IGFyaWEtbGFiZWw9e2xhYmVsfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC1weCBwcy1wYi0zIHBzLXAtMlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IEl0ZW0gPSAoe1xuICBjbGFzc05hbWUsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgaXNBY3RpdmUsXG4gIHNpemUsXG4gIGNoaWxkcmVuLFxuICB3cmFwQ2hpbGRyZW5JblNwYW4gPSB0cnVlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIjtcbiAgd3JhcENoaWxkcmVuSW5TcGFuPzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWJ1dHRvblwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBkYXRhLWFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXB5LTEuNSBwcy1weC0yIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtcm91bmRlZC1tZCBwcy1mbGV4IHBzLWdhcC0yIHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3dyYXBDaGlsZHJlbkluU3BhbiA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLXRydW5jYXRlXCI+e2NoaWxkcmVufTwvc3Bhbj4gOiA8PmNoaWxkcmVuPC8+fVxuICAgIDwvQ29tcD5cbiAgKTtcbn07XG5cbmNvbnN0IFNjaGVtYVNlbGVjdG9yID0gKCkgPT4ge1xuICAvLyBHZXQgc2NoZW1hcyBmcm9tIGludHJvc3BlY3Rpb24gYW5kIGFjdGl2ZSBzY2hlbWEgbWFuYWdlbWVudFxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCB7IGFjdGl2ZVNjaGVtYSwgaGFuZGxlU2NoZW1hQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIC8vIEV4dHJhY3Qgc2NoZW1hIG5hbWVzIGZyb20gaW50cm9zcGVjdGlvbiBkYXRhXG4gIGNvbnN0IHNjaGVtYU5hbWVzID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzIHx8IHt9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgIDxTZWxlY3QgdmFsdWU9e2FjdGl2ZVNjaGVtYX0gb25WYWx1ZUNoYW5nZT17aGFuZGxlU2NoZW1hQ2hhbmdlfT5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiIGxhYmVsPVwiU2NoZW1hXCI+XG4gICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHNjaGVtYVwiIC8+XG4gICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAge2lzSW50cm9zcGVjdGlvbkxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxvYWRpbmdcIj5Mb2FkaW5nIHNjaGVtYXMuLi48L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKSA6IHNjaGVtYU5hbWVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICBzY2hlbWFOYW1lcy5tYXAoKHNjaGVtYSkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e3NjaGVtYX0gdmFsdWU9e3NjaGVtYX0gY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgIHtzY2hlbWF9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm8tc2NoZW1hc1wiPk5vIHNjaGVtYXMgZm91bmQ8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgPC9TZWxlY3Q+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuTmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciA9IFNjaGVtYVNlbGVjdG9yO1xuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLy8gVHlwZXMgbWF0Y2hpbmcgdGhlIHNjaGVtYSB2aXN1YWxpemVyJ3MgZXhwZWN0ZWQgZm9ybWF0XG5leHBvcnQgdHlwZSBGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzUHJpbWFyeT86IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25zaGlwID0ge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhID0ge1xuICB0YWJsZXM6IFRhYmxlW107XG4gIHJlbGF0aW9uc2hpcHM6IFJlbGF0aW9uc2hpcFtdO1xufTtcblxuY29uc3QgTk9fVEFCTEVTX05PREU6IFRhYmxlID0ge1xuICBuYW1lOiBcIk5vIFRhYmxlcyBGb3VuZFwiLFxuICBmaWVsZHM6IFt7IG5hbWU6IFwibWVzc2FnZVwiLCB0eXBlOiBcImluZm9cIiwgaXNSZXF1aXJlZDogdHJ1ZSB9XSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk6IFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIHtcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nIHx8ICFpbnRyb3NwZWN0aW9uIHx8ICFhY3RpdmVTY2hlbWEpIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50U2NoZW1hRGF0YSA9IGludHJvc3BlY3Rpb24uc2NoZW1hc1thY3RpdmVTY2hlbWFdO1xuXG4gICAgaWYgKCFjdXJyZW50U2NoZW1hRGF0YSB8fCBPYmplY3Qua2V5cyhjdXJyZW50U2NoZW1hRGF0YS50YWJsZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgdGFibGVzOiBbTk9fVEFCTEVTX05PREVdLCByZWxhdGlvbnNoaXBzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IFtdO1xuICAgIGNvbnN0IHRhYmxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBUYWJsZT4gPSB7fTtcblxuICAgIE9iamVjdC52YWx1ZXMoY3VycmVudFNjaGVtYURhdGEudGFibGVzKS5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW107XG5cbiAgICAgIE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICB0eXBlOiBjb2x1bW4uZGF0YXR5cGUubmFtZSxcbiAgICAgICAgICBpc1ByaW1hcnk6IGNvbHVtbi5pc0luUHJpbWFyeUtleSxcbiAgICAgICAgICBpc1JlcXVpcmVkOiAhY29sdW1uLm51bGxhYmxlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0YWJsZU9iamVjdDogVGFibGUgPSB7XG4gICAgICAgIG5hbWU6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgIH07XG5cbiAgICAgIHRhYmxlcy5wdXNoKHRhYmxlT2JqZWN0KTtcbiAgICAgIHRhYmxlTWFwW3RhYmxlLm5hbWVdID0gdGFibGVPYmplY3Q7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXSA9IFtdO1xuXG4gICAgdGFibGVzLmZvckVhY2goKHNvdXJjZVRhYmxlKSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW5hbFRhYmxlRGF0YSA9IGN1cnJlbnRTY2hlbWFEYXRhLnRhYmxlc1tzb3VyY2VUYWJsZS5uYW1lXTtcbiAgICAgIGlmIChvcmlnaW5hbFRhYmxlRGF0YSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9yaWdpbmFsVGFibGVEYXRhLmNvbHVtbnMpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGlmIChjb2x1bW4uZmtUYWJsZSAmJiBjb2x1bW4uZmtDb2x1bW4pIHtcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMucHVzaCh7XG4gICAgICAgICAgICAgIGZyb206IGNvbHVtbi5ma1RhYmxlLCAvLyBUaGUgdGFibGUgYmVpbmcgcmVmZXJlbmNlZCAoMSBzaWRlKVxuICAgICAgICAgICAgICB0bzogc291cmNlVGFibGUubmFtZSwgLy8gVGhlIHRhYmxlIHdpdGggdGhlIGZvcmVpZ24ga2V5IChOIHNpZGUpXG4gICAgICAgICAgICAgIHR5cGU6IFwiMTpuXCIsIC8vIEFzc3VtaW5nIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH07XG4gIH0sIFtpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcsIGFjdGl2ZVNjaGVtYV0pO1xufVxuIiwgImltcG9ydCBcInJlYWN0Zmxvdy9kaXN0L3N0eWxlLmNzc1wiO1xuXG5pbXBvcnQgeyBBbGVydENpcmNsZSwgSGFzaCwgS2V5LCBTcXVhcmVBcnJvd1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgdHlwZSBGQywgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0Rmxvdywge1xuICBhZGRFZGdlLFxuICBCYWNrZ3JvdW5kLFxuICB0eXBlIENvbm5lY3Rpb24sXG4gIENvbm5lY3Rpb25MaW5lVHlwZSxcbiAgQ29udHJvbHMsXG4gIHR5cGUgRWRnZSxcbiAgSGFuZGxlLFxuICBNaW5pTWFwLFxuICB0eXBlIE5vZGUsXG4gIHR5cGUgTm9kZVByb3BzLFxuICB0eXBlIE5vZGVUeXBlcyxcbiAgUG9zaXRpb24sXG4gIHVzZUVkZ2VzU3RhdGUsXG4gIHVzZU5vZGVzU3RhdGUsXG59IGZyb20gXCJyZWFjdGZsb3dcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgVGFibGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufTtcblxudHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uUHJvcHMgPSB7XG4gIHRhYmxlczogVGFibGVbXTtcbiAgcmVsYXRpb25zaGlwczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9W107XG59O1xuXG5pbnRlcmZhY2UgVGFibGVOb2RlRGF0YSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn1cblxuY29uc3QgVGFibGVOb2RlOiBGQzxOb2RlUHJvcHM8VGFibGVOb2RlRGF0YT4+ID0gbWVtbygoeyBkYXRhIH0pID0+IHtcbiAgY29uc3QgaXNOb1RhYmxlc05vZGUgPSBkYXRhLmxhYmVsID09PSBcIk5vIFRhYmxlcyBGb3VuZFwiO1xuXG4gIGNvbnN0IGdldEljb24gPSAoX2ZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZywgaXNQcmltYXJ5PzogYm9vbGVhbikgPT4ge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIFwiTm8gVGFibGVzIEZvdW5kXCIgbm9kZVxuICAgIGlmIChpc05vVGFibGVzTm9kZSAmJiBmaWVsZFR5cGUgPT09IFwiaW5mb1wiKSB7XG4gICAgICByZXR1cm4gPEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPjtcbiAgICB9XG5cbiAgICAvLyBVc2UgS2V5IGljb24gZm9yIHByaW1hcnkga2V5c1xuICAgIGlmIChpc1ByaW1hcnkpIHtcbiAgICAgIHJldHVybiA8S2V5IHNpemU9ezE2fSAvPjtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGljb24gZm9yIG90aGVyIGZpZWxkc1xuICAgIHJldHVybiA8SGFzaCBzaXplPXsxNn0gLz47XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICBpc05vVGFibGVzTm9kZSAmJiBcInBzLWJvcmRlci1vcmFuZ2UtNDAwXCIsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxIYW5kbGUgdHlwZT1cInRhcmdldFwiIHBvc2l0aW9uPXtQb3NpdGlvbi5Ub3B9IHN0eWxlPXt7IG9wYWNpdHk6IDAgfX0gLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXB4LTQgcHMtcHktMyBwcy1ib3JkZXItYlwiLFxuICAgICAgICAgIGlzTm9UYWJsZXNOb2RlICYmIFwicHMtYmctb3JhbmdlLTEwMCBkYXJrOnBzLWJnLW9yYW5nZS05NTAgcHMtdGV4dC1vcmFuZ2UtNzAwIGRhcms6cHMtdGV4dC1vcmFuZ2UtMzAwXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1ib2xkXCI+e2RhdGEubGFiZWx9PC9kaXY+XG4gICAgICAgIDxTcXVhcmVBcnJvd1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXB4LTQgcHMtcHktMlwiPlxuICAgICAgICB7aXNOb1RhYmxlc05vZGUgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS04IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW9yYW5nZS01MDBcIj5cbiAgICAgICAgICAgICAgPEFsZXJ0Q2lyY2xlIGNsYXNzTmFtZT1cInBzLXctNSBwcy1oLTVcIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleC0xXCI+Tm8gZGF0YWJhc2UgdGFibGVzIGZvdW5kLiBDb25uZWN0IHRvIGEgZGF0YWJhc2UgdG8gc2VlIHlvdXIgc2NoZW1hLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkYXRhLmZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcHktMiBwcy10ZXh0LXNtXCIsXG4gICAgICAgICAgICAgICAgZmllbGQuaXNQcmltYXJ5ICYmIFwicHMtdGV4dC1wcmltYXJ5XCIsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPntnZXRJY29uKGZpZWxkLm5hbWUsIGZpZWxkLnR5cGUsIGZpZWxkLmlzUHJpbWFyeSl9PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj57ZmllbGQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2ZpZWxkLnR5cGV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblRhYmxlTm9kZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVOb2RlXCI7XG5cbmNvbnN0IG5vZGVUeXBlcyA9IHtcbiAgdGFibGVOb2RlOiBUYWJsZU5vZGUsXG59IGFzIE5vZGVUeXBlcztcblxuLyoqXG4gKiBDcmVhdGUgYSBsYXlvdXQgZm9yIHRoZSBub2RlcyB3aXRoIHRhYmxlcyBwbGFjZWQgaW4gYSBncmlkIGZvcm1hdGlvblxuICogd2l0aCByZWxhdGVkIHRhYmxlcyBwbGFjZWQgY2xvc2VyIHRvIGVhY2ggb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGdldExheW91dGVkTm9kZXModGFibGVzOiBUYWJsZVtdLCBfcmVsYXRpb25zaGlwczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9W10pOiBOb2RlW10ge1xuICAvLyBJZiB0aGVyZSBhcmUgb25seSBhIGZldyB0YWJsZXMsIHVzZSBhIHNpbXBsZSBob3Jpem9udGFsIGxheW91dFxuICBpZiAodGFibGVzLmxlbmd0aCA8PSAzKSB7XG4gICAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4gKHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7IHg6IDM1MCAqIGluZGV4LCB5OiA1MCB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIEZvciBtb3JlIHRhYmxlcywgdXNlIGEgZ3JpZCBsYXlvdXRcbiAgY29uc3QgR1JJRF9HQVBfWCA9IDM1MDtcbiAgY29uc3QgR1JJRF9HQVBfWSA9IDMwMDtcbiAgY29uc3QgQ09MVU1OUyA9IE1hdGguY2VpbChNYXRoLnNxcnQodGFibGVzLmxlbmd0aCkpO1xuXG4gIHJldHVybiB0YWJsZXMubWFwKCh0YWJsZSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBjb2x1bW4gPSBpbmRleCAlIENPTFVNTlM7XG4gICAgY29uc3Qgcm93ID0gTWF0aC5mbG9vcihpbmRleCAvIENPTFVNTlMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIHg6IGNvbHVtbiAqIEdSSURfR0FQX1gsXG4gICAgICAgIHk6IHJvdyAqIEdSSURfR0FQX1ksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NoZW1hVmlzdWFsaXphdGlvbih7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9OiBTY2hlbWFWaXN1YWxpemF0aW9uUHJvcHMpIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIG9mIG5vZGUgSURzIGZvciBxdWljayBsb29rdXBcbiAgY29uc3Qgbm9kZUlkU2V0ID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHRhYmxlcy5tYXAoKHRhYmxlKSA9PiB0YWJsZS5uYW1lKSksIFt0YWJsZXNdKTtcblxuICAvLyBGaWx0ZXIgb3V0IHJlbGF0aW9uc2hpcHMgd2hlcmUgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgZG9lc24ndCBleGlzdFxuICBjb25zdCB2YWxpZFJlbGF0aW9uc2hpcHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHJlbGF0aW9uc2hpcHMuZmlsdGVyKChyZWwpID0+IG5vZGVJZFNldC5oYXMocmVsLmZyb20pICYmIG5vZGVJZFNldC5oYXMocmVsLnRvKSksXG4gICAgW3JlbGF0aW9uc2hpcHMsIG5vZGVJZFNldF0sXG4gICk7XG5cbiAgLy8gQ3JlYXRlIGFuIG9yZ2FuaXplZCBsYXlvdXQgZm9yIG5vZGVzXG4gIGNvbnN0IGluaXRpYWxOb2RlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwcyksIFt0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwc10pO1xuXG4gIC8vIENyZWF0ZSBlZGdlcyB3aXRoIGFwcHJvcHJpYXRlIHN0eWxpbmdcbiAgY29uc3QgaW5pdGlhbEVkZ2VzOiBFZGdlW10gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICBbdmFsaWRSZWxhdGlvbnNoaXBzXSxcbiAgKTtcblxuICBjb25zdCBbbm9kZXMsIHNldE5vZGVzLCBvbk5vZGVzQ2hhbmdlXSA9IHVzZU5vZGVzU3RhdGUoaW5pdGlhbE5vZGVzKTtcbiAgY29uc3QgW2VkZ2VzLCBzZXRFZGdlcywgb25FZGdlc0NoYW5nZV0gPSB1c2VFZGdlc1N0YXRlKGluaXRpYWxFZGdlcyk7XG5cbiAgLy8gVXBkYXRlIG5vZGVzIHdoZW4gdGFibGVzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE5vZGVzKGdldExheW91dGVkTm9kZXModGFibGVzLCB2YWxpZFJlbGF0aW9uc2hpcHMpKTtcbiAgfSwgW3RhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXROb2Rlc10pO1xuXG4gIC8vIFVwZGF0ZSBlZGdlcyB3aGVuIHJlbGF0aW9uc2hpcHMgY2hhbmdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRnZXMoXG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9LCBbdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXRFZGdlc10pO1xuXG4gIGNvbnN0IG9uQ29ubmVjdCA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IEVkZ2UgfCBDb25uZWN0aW9uKSA9PiBzZXRFZGdlcygoZWRzKSA9PiBhZGRFZGdlKHBhcmFtcywgZWRzKSksIFtzZXRFZGdlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsIHBzLWJnLWNhcmRcIj5cbiAgICAgIDxSZWFjdEZsb3dcbiAgICAgICAgbm9kZXM9e25vZGVzfVxuICAgICAgICBlZGdlcz17ZWRnZXN9XG4gICAgICAgIG9uTm9kZXNDaGFuZ2U9e29uTm9kZXNDaGFuZ2V9XG4gICAgICAgIG9uRWRnZXNDaGFuZ2U9e29uRWRnZXNDaGFuZ2V9XG4gICAgICAgIG9uQ29ubmVjdD17b25Db25uZWN0fVxuICAgICAgICBjb25uZWN0aW9uTGluZVR5cGU9e0Nvbm5lY3Rpb25MaW5lVHlwZS5TbW9vdGhTdGVwfVxuICAgICAgICBub2RlVHlwZXM9e25vZGVUeXBlc31cbiAgICAgICAgZml0Vmlld1xuICAgICAgICBmaXRWaWV3T3B0aW9ucz17eyBwYWRkaW5nOiAwLjIgfX1cbiAgICAgID5cbiAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICA8Q29udHJvbHNcbiAgICAgICAgICBzaG93SW50ZXJhY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIiFwcy1iZy1baHNsKHZhcigtLXN0dWRpby1iYWNrZ3JvdW5kKSldICFwcy1ib3JkZXItW2hzbCh2YXIoLS1zdHVkaW8tYm9yZGVyKSldICFwcy10ZXh0LVtoc2wodmFyKC0tc3R1ZGlvLWZvcmVncm91bmQpKV1cIlxuICAgICAgICAvPlxuICAgICAgICA8TWluaU1hcCBwYW5uYWJsZSAvPlxuICAgICAgPC9SZWFjdEZsb3c+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlU2NoZW1hVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi9ob29rcy91c2Utc2NoZW1hLXZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IFN0dWRpb0hlYWRlciB9IGZyb20gXCIuLi9TdHVkaW9IZWFkZXJcIjtcbmltcG9ydCB7IFNjaGVtYVZpc3VhbGl6YXRpb24gfSBmcm9tIFwiLi9WaXN1YWxpc2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2hlbWFWaWV3KCkge1xuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IHNjaGVtYSBkYXRhIGZyb20gaW50cm9zcGVjdGlvblxuICBjb25zdCB7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9ID0gdXNlU2NoZW1hVmlzdWFsaXphdGlvbigpO1xuXG4gIC8vIERlYnVnOiBMb2cgZGV0ZWN0ZWQgcmVsYXRpb25zaGlwc1xuICBjb25zb2xlLmxvZyhcIkRldGVjdGVkIHJlbGF0aW9uc2hpcHM6XCIsIHJlbGF0aW9uc2hpcHMpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHVkaW9IZWFkZXIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsIHBzLWgtZnVsbFwiPlxuICAgICAgICA8U2NoZW1hVmlzdWFsaXphdGlvbiB0YWJsZXM9e3RhYmxlc30gcmVsYXRpb25zaGlwcz17cmVsYXRpb25zaGlwc30gLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNBeEMsSUFBQUMsRUFBQSxHQUFBQyxHQUFBRCxFQUFBLFlBQUFFLEdBQUEsWUFBQUMsR0FBQSxrQkFBQUMsRUFBQSxtQkFBQUMsS0FnQkFDLEdBQUFDLEVBQUFDLElBWkEsT0FHRSxpQkFBaUJDLEdBR2pCLGtCQUFrQkMsT0FHYixPQUdQLFVBQUFGLE9BQWMsT0FnQlAsU0FBU0csR0FFZEEsRUFDb0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUdPLFNBQVNDLEdBRWRBLEVBQ29CLENBQ3BCLE9BQU9BLENBQ1QsQ0FFQSxJQUFNQyxHQUFnQixPQUFPLGNBQWMsRUErQnBDLFNBQVNDLEVBQWNDLEVBQWVDLEVBQW9CLENBRS9ELE9BQU9QLEdBQXNCTSxFQUFLQyxDQUFPLENBQzNDLENBaUJPLFNBQVNDLEdB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QUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsV0FBWSxDQUFDLENBQUV5SCxPQUFRLENBQUN2SCxDQUFXLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0Es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QUFMLElBQVMsU0FBV1osR0FBQ21CLEdBQUEsRUFBVyxFQUFLLENBQUNQLEdBQVFBLElBQVMsUUFBVVosR0FBQ29CLEdBQUEsRUFBZ0IsRUFBS3BCLEdBQUNxQixHQUFBLEVBQVUsRUFDckcsR0FDRixFQUNGLENBRUoiLAogICJuYW1lcyI6IFsiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJudXFzX2V4cG9ydHMiLCAiX19leHBvcnQiLCAia2V5TWFwIiwgInVybEtleXMiLCAidXNlUXVlcnlTdGF0ZSIsICJ1c2VRdWVyeVN0YXRlcyIsICJfX3JlRXhwb3J0IiwgIm51cXNfZXhwb3J0cyIsICJudXFzX3N0YXIiLCAidXNlUXVlcnlTdGF0ZU9yaWdpbmFsIiwgInVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwiLCAia2V5TWFwIiwgInVybEtleXMiLCAiX0JSQU5EX1NZTUJPTCIsICJ1c2VRdWVyeVN0YXRlIiwgImtleSIsICJvcHRpb25zIiwgInVzZVF1ZXJ5U3RhdGVzIiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlQWxlcnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGVIZWxwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29weSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcm5lckRvd25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiRmlsdGVyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiR3JpcFZlcnRpY2FsIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiSGFzaCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiU3F1YXJlQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlRWZmZWN0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgIlVSTERlZmF1bHRzSGFuZGxlciIsICJfdGFibGUiLCAic2V0VGFibGUiLCAidXNlUXVlcnlTdGF0ZSIsICJfc2NoZW1hIiwgInNldFNjaGVtYSIsICJfdmlldyIsICJzZXRWaWV3IiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgInVzZUVmZmVjdCIsICJjdXJyZW50SGFzaCIsICJwYXJhbXMiLCAiaGFzVGFibGUiLCAiaGFzU2NoZW1hIiwgImhhc1ZpZXciLCAiZmlyc3RTY2hlbWFOYW1lIiwgImZpcnN0VGFibGUiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImFjdGl2ZVNjaGVtYSIsICJzZXRBY3RpdmVTY2hlbWEiLCAiaXNGdWxsc2NyZWVuIiwgInNldElzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInNldElzTmF2aWdhdGlvbk9wZW4iLCAib25FcnJvciIsICJlcnJvciIsICJ0b2FzdCIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlTWVtbyIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInByZXYiLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0UXVlcnlEZXZ0b29sczIiLCAiVG9hc3RlciIsICJOdXFzSGFzaEFkYXB0ZXIiLCAiVVJMRGVmYXVsdHNIYW5kbGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAic2hvcnQiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAiaXNPYmplY3RUeXBlIiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRGF0ZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJfcHJvcHMiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVudW1DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJKU09OQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiTnVsbENlbGwiLCAiX3Byb3BzIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiUmF3Q2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiVGltZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAicHJvcHMiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAicHJvcHMiLCAicm93IiwgInJlYWRvbmx5IiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgImxpbmtDb21wb25lbnQiLCAiY29udGFpbmVyUHJvcHMiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIkNlbGwiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJsYWJlbCIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZCIsICJwcm9wcyIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJoZWFkZXIiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaSIsICJIZWFkZXIiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJUYWJsZUJvZHkiLCAicm93IiwgImNuIiwgImNlbGwiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJqc3giLCAiRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnQ2xhc3MiLCAiY24iLCAiVGFibGVIZWFkIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiY29sdW1uIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJkYXlqcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJvblNldE5vdyIsICJzaG93U2V0Tm93IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkRheVBpY2tlciIsICJqc3giLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgImhpZGVOYXZpZ2F0aW9uIiwgInByb3BzIiwgIl9tb250aHNDbGFzc05hbWUiLCAiY24iLCAiX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSIsICJfZHJvcGRvd25zQ2xhc3NOYW1lIiwgIl9mb290ZXJDbGFzc05hbWUiLCAiX3dlZWtkYXlzQ2xhc3NOYW1lIiwgIl93ZWVrZGF5Q2xhc3NOYW1lIiwgIl9jYXB0aW9uTGFiZWxDbGFzc05hbWUiLCAiX21vbnRoR3JpZENsYXNzTmFtZSIsICJfd2Vla0NsYXNzTmFtZSIsICJfZGF5Q2xhc3NOYW1lIiwgIl9kYXlCdXR0b25DbGFzc05hbWUiLCAiYnV0dG9uVmFyaWFudHMiLCAiYnV0dG9uUmFuZ2VDbGFzc05hbWUiLCAiX3JhbmdlU3RhcnRDbGFzc05hbWUiLCAiX3JhbmdlRW5kQ2xhc3NOYW1lIiwgIl9yYW5nZU1pZGRsZUNsYXNzTmFtZSIsICJfc2VsZWN0ZWRDbGFzc05hbWUiLCAiX3RvZGF5Q2xhc3NOYW1lIiwgIl9vdXRzaWRlQ2xhc3NOYW1lIiwgIl9kaXNhYmxlZENsYXNzTmFtZSIsICJfaGlkZGVuQ2xhc3NOYW1lIiwgIkRheVBpY2tlciIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaW5pdGlhbFZhbHVlIiwgInBhcnNlZEluaXRpYWxEYXRlIiwgInVzZU1lbW8iLCAicGFyc2VkIiwgImdldEZvcm1hdEZvclR5cGUiLCAidHlwZSIsICJzZWxlY3RlZERhdGUiLCAic2V0U2VsZWN0ZWREYXRlIiwgInVzZVN0YXRlIiwgImN1cnJlbnRNb250aCIsICJzZXRDdXJyZW50TW9udGgiLCAiaG91clZhbHVlIiwgInNldEhvdXJWYWx1ZSIsICJtaW51dGVWYWx1ZSIsICJzZXRNaW51dGVWYWx1ZSIsICJzZWNvbmRWYWx1ZSIsICJzZXRTZWNvbmRWYWx1ZSIsICJiYXNlSGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJzZXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJjb2x1bW5UeXBlIiwgImRiRm9ybWF0IiwgImhhc1RpbWVQcmVjaXNpb24iLCAiaGFuZGxlT25DaGFuZ2UiLCAiZXZlbnQiLCAibmV3VmFsdWUiLCAibmV3RGF0ZSIsICJoYW5kbGVDYWxlbmRhclNlbGVjdCIsICJkYXRlIiwgIm5ld1NlbGVjdGVkRGF0ZSIsICJmaW5hbERhdGUiLCAibm93IiwgImZvcm1hdHRlZERhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImhhbmRsZVNldE5vdyIsICJlIiwgInNldFllYXJWYWx1ZSIsICJtb250aHMiLCAiY3VycmVudE1vbnRoVmFsdWUiLCAieWVhclZhbHVlIiwgInVwZGF0ZURhdGVGcm9tSW5wdXRzIiwgIm5ld0RhdGVQYXJ0cyIsICJiYXNlRGF0ZSIsICJoYW5kbGVNb250aENoYW5nZSIsICJtb250aEluZGV4IiwgImhhbmRsZVllYXJDaGFuZ2UiLCAibmV3WWVhclN0ciIsICJ5ZWFyIiwgImhhbmRsZVRpbWVDaGFuZ2UiLCAicGFydCIsICJudW1lcmljVmFsdWUiLCAibmV3SG91ciIsICJuZXdNaW51dGUiLCAibmV3U2Vjb25kIiwgImlzQ29tcGxldGVIb3VyIiwgImlzQ29tcGxldGVNaW51dGUiLCAiaXNDb21wbGV0ZVNlY29uZCIsICJ1c2VFZmZlY3QiLCAiZGpzRGF0ZSIsICJJbnB1dCIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIm1vbnRoIiwgIlNlbGVjdEl0ZW0iLCAiRGF5UGlja2VyV3JhcHBlciIsICJJbnB1dEFjdGlvbnMiLCAic2VsZWN0ZWQiLCAib25TZWxlY3QiLCAib25Nb250aENoYW5nZSIsICJkaXNhYmxlZCIsICJDYWxlbmRhciIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXVpZCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgImN1cnJlbnRWaWV3VmFsdWUiLCAidXNlUXVlcnlTdGF0ZSIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdlUGFyYW0iLCAic2V0U29ydFBhcmFtIiwgInNldFZpZXciLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ1c2VFZmZlY3QiLCAidmlld1BhcmFtRXhpc3RzIiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgIm5ld1NjaGVtYSIsICJwcmV2IiwgInV1aWR2NCIsICJqc3giLCAiTGluayIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJma1NjaGVtYSIsICJma1RhYmxlIiwgImZrQ29sdW1uIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJzZXRBcHBsaWVkRmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJpbnRyb3NwZWN0aW9uIiwgInVzZUludHJvc3BlY3Rpb24iLCAidGFibGUiLCAiQnV0dG9uIiwgImUiLCAidXVpZCIsICJBcnJvd1JpZ2h0IiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImpzeCIsICJqc3hzIiwgIlN0dWRpb0hlYWRlciIsICJwcm9wcyIsICJpc0Z1bGxzY3JlZW4iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU29ydGluZyIsICJwYWdpbmF0aW9uU3RhdGUiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInVzZVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VGaWx0ZXJpbmciLCAiZGF0YSIsICJpc0ZldGNoaW5nIiwgInJlZmV0Y2giLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiY29uY3JldGVDb2x1bW5EZWZzIiwgInRhYmxlIiwgImhlYWRlciIsICJwcm9wcyIsICJEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwiLCAiRGF0YUdyaWRIZWFkZXIiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiTGluayIsICJnZXRJbnB1dCIsICJ2aXJ0dWFsQ29sdW1uRGVmcyIsICJUYWJsZUhlYWQiLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJDZWxsIiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJTdHVkaW9IZWFkZXIiLCAiQnV0dG9uIiwgIlJlZnJlc2hDdyIsICJjbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkZpbHRlciIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIlBvcG92ZXJDb250ZW50IiwgIkZpbHRlclRyZWUiLCAiZmlsdGVyIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAianN4IiwgIkJhc2ljVmlldyIsICJTbG90IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJpc0xvYWRpbmciLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAidmlldyIsICJzZXRWaWV3IiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0VXJsVGFibGUiLCAidiIsICJzZXRVcmxTY2hlbWEiLCAic2lkZUJhckNsYXNzZXMiLCAiY24iLCAidGFibGUiLCAiXyIsICJpbmRleCIsICJTa2VsZXRvbiIsICJCbG9jayIsICJsYWJlbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJUYWJsZTIiLCAiSXRlbSIsICJhc0NoaWxkIiwgImlzQWN0aXZlIiwgInNpemUiLCAid3JhcENoaWxkcmVuSW5TcGFuIiwgIlNsb3QiLCAiU2NoZW1hU2VsZWN0b3IiLCAiaW50cm9zcGVjdGlvbiIsICJpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWN0aXZlU2NoZW1hIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJzY2hlbWFOYW1lcyIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAic2NoZW1hIiwgInVzZU1lbW8iLCAiTk9fVEFCTEVTX05PREUiLCAidXNlU2NoZW1hVmlzdWFsaXphdGlvbiIsICJpbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFjdGl2ZVNjaGVtYSIsICJ1c2VTdHVkaW8iLCAidXNlTWVtbyIsICJjdXJyZW50U2NoZW1hRGF0YSIsICJ0YWJsZXMiLCAidGFibGVNYXAiLCAidGFibGUiLCAiZmllbGRzIiwgImNvbHVtbiIsICJ0YWJsZU9iamVjdCIsICJyZWxhdGlvbnNoaXBzIiwgInNvdXJjZVRhYmxlIiwgIm9yaWdpbmFsVGFibGVEYXRhIiwgIm1lbW8iLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAiUmVhY3RGbG93IiwgImFkZEVkZ2UiLCAiQmFja2dyb3VuZCIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQ29udHJvbHMiLCAiSGFuZGxlIiwgIk1pbmlNYXAiLCAiUG9zaXRpb24iLCAidXNlRWRnZXNTdGF0ZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImpzeCIsICJqc3hzIiwgIlRhYmxlTm9kZSIsICJtZW1vIiwgImRhdGEiLCAiaXNOb1RhYmxlc05vZGUiLCAiZ2V0SWNvbiIsICJfZmllbGROYW1lIiwgImZpZWxkVHlwZSIsICJpc1ByaW1hcnkiLCAiQ2lyY2xlQWxlcnQiLCAiS2V5IiwgIkhhc2giLCAiY24iLCAiSGFuZGxlIiwgIlBvc2l0aW9uIiwgIlNxdWFyZUFycm93UmlnaHQiLCAiZmllbGQiLCAiaW5kZXgiLCAibm9kZVR5cGVzIiwgImdldExheW91dGVkTm9kZXMiLCAidGFibGVzIiwgIl9yZWxhdGlvbnNoaXBzIiwgInRhYmxlIiwgIkdSSURfR0FQX1giLCAiR1JJRF9HQVBfWSIsICJDT0xVTU5TIiwgImNvbHVtbiIsICJyb3ciLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJyZWxhdGlvbnNoaXBzIiwgIm5vZGVJZFNldCIsICJ1c2VNZW1vIiwgInZhbGlkUmVsYXRpb25zaGlwcyIsICJyZWwiLCAiaW5pdGlhbE5vZGVzIiwgImluaXRpYWxFZGdlcyIsICJub2RlcyIsICJzZXROb2RlcyIsICJvbk5vZGVzQ2hhbmdlIiwgInVzZU5vZGVzU3RhdGUiLCAiZWRnZXMiLCAic2V0RWRnZXMiLCAib25FZGdlc0NoYW5nZSIsICJ1c2VFZGdlc1N0YXRlIiwgInVzZUVmZmVjdCIsICJvbkNvbm5lY3QiLCAidXNlQ2FsbGJhY2siLCAicGFyYW1zIiwgImVkcyIsICJhZGRFZGdlIiwgIlJlYWN0RmxvdyIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQmFja2dyb3VuZCIsICJDb250cm9scyIsICJNaW5pTWFwIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlNjaGVtYVZpZXciLCAidGFibGVzIiwgInJlbGF0aW9uc2hpcHMiLCAidXNlU2NoZW1hVmlzdWFsaXphdGlvbiIsICJTdHVkaW9IZWFkZXIiLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInZpZXciLCAidXNlUXVlcnlTdGF0ZSIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJTY2hlbWFWaWV3IiwgIkFjdGl2ZVRhYmxlVmlldyIsICJCYXNpY1ZpZXciXQp9Cg==
331
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvbnVxcy50cyIsICIuLi8uLi91aS9saWIvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NsYXNzLWdyb3VwLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9scnUtY2FjaGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3BhcnNlLWNsYXNzLW5hbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NvbmZpZy11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY2xhc3NsaXN0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1qb2luLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2Zyb20tdGhlbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3ZhbGlkYXRvcnMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2RlZmF1bHQtY29uZmlnLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jb25maWdzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9leHRlbmQtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LW1lcmdlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9BY3RpdmVUYWJsZVZpZXcudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL3NoYXJlZC9zcmMvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9kZWZhdWx0QXR0cmlidXRlcy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL0ljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9jcmVhdGVMdWNpZGVJY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGVjay50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWFsZXJ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWhlbHAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3B5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29ybmVyLWRvd24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2ZpbHRlci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2dyaXAtdmVydGljYWwudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9oYXNoLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LXJvdW5kLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLW9mZi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3JlZnJlc2gtY3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9zcXVhcmUtYXJyb3ctcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3RhYmxlLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1VSTERlZmF1bHRzSGFuZGxlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHMudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NlbGVjdC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3VzZUxvY2FsU3RvcmFnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy90aGVtZS50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTWVkaWFRdWVyeS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9zdHlsZWRDb21wb25lbnRzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0V4cGxvcmVyLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9Mb2dvLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9pbmRleC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXIudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2FsZW5kYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vbGluay9nZXQtbGluay50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS50cyIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpb0hlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0Jhc2ljVmlldy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zY2hlbWEtdmlzdWFsaXphdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL3NjaGVtYS9WaXN1YWxpc2VyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vc2NoZW1hL1NjaGVtYVZpZXcudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi4vaG9va3MvbnVxc1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IEJhc2ljVmlldyB9IGZyb20gXCIuL0Jhc2ljVmlld1wiO1xuaW1wb3J0IHsgU3R1ZGlvQ29udGV4dFByb3ZpZGVyLCB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vTmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgU2NoZW1hVmlldyB9IGZyb20gXCIuL3NjaGVtYS9TY2hlbWFWaWV3XCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBbdmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcblxuICBjb25zdCBjb250YWluZXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbCBwcy1taW4taC0wIHBzLW1heC1oLWZ1bGxcIixcbiAgICBpc0Z1bGxzY3JlZW4gJiYgXCJwcy1maXhlZCBwcy1pbnNldC0wIHBzLXotWzk5OTldIHBzLWJnLWJhY2tncm91bmQgcHMtcC0yXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtZnVsbHNjcmVlbj17aXNGdWxsc2NyZWVufSBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWdhcC0wIHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTUwIHBzLXJlbGF0aXZlIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IFwiYXV0b1wiLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbiAvPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC0xMDAgcHMtZmxleC1jb2wgcHMtcC1weCBwcy1yb3VuZGVkLWxnIHBzLXNlbGYtc3RhcnQgcHMtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtbWF4LWgtZnVsbCBwcy1vdmVyZmxvdy1jbGlwXCJcbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmlldyA9PT0gXCJzY2hlbWFcIiA/IDxTY2hlbWFWaWV3IC8+IDogIXZpZXcgfHwgdmlldyA9PT0gXCJ0YWJsZVwiID8gPEFjdGl2ZVRhYmxlVmlldyAvPiA6IDxCYXNpY1ZpZXcgLz59XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgIi8vIHdlJ3JlIGVuc3VyaW5nIHRoYXQga2V5cyBhcmUgdHlwZS1zYWZlLiB0aGVyZSBpcyBubyBwcm9wZXIgd2F5IHRvIGFjaGlldmUgaXQgaW4gYG51cXNgLlxuLy8gdGhlIGBkZWNsYXJlIG1vZHVsZWAgdGVjaG5pcXVlIHJlc3VsdHMgaW4gYWRkaW5nIG92ZXJsb2Fkcywgbm90IG92ZXJyaWRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucy5cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IHtcbiAgdHlwZSBPcHRpb25zLFxuICB0eXBlIFBhcnNlcixcbiAgdXNlUXVlcnlTdGF0ZSBhcyB1c2VRdWVyeVN0YXRlT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZVJldHVybixcbiAgdXNlUXVlcnlTdGF0ZXMgYXMgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc09wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNSZXR1cm4sXG59IGZyb20gXCJudXFzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmV4cG9ydCAqIGZyb20gXCJudXFzXCI7XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5ID0gXCJwYWdlSW5kZXhcIiB8IFwicGFnZVNpemVcIiB8IFwidGFibGVcIiB8IFwic29ydFwiIHwgXCJzY2hlbWFcIiB8IFwidGVzdFwiIHwgXCJmaWx0ZXJcIiB8IFwidmlld1wiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgVGFibGVIZWFkIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVF1ZXJ5IH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnlcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlVXBkYXRlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZVNvcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNvcnRpbmdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCB9IGZyb20gXCIuL2NlbGwvU2VsZWN0SGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0Um93Q2VsbCB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlclwiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiLi9saW5rL2dldC1saW5rXCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuaW1wb3J0IHsgU3R1ZGlvSGVhZGVyIH0gZnJvbSBcIi4vU3R1ZGlvSGVhZGVyXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlVGFibGVWaWV3UHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVRhYmxlVmlldyhfcHJvcHM6IEFjdGl2ZVRhYmxlVmlld1Byb3BzKSB7XG4gIGNvbnN0IGlzTXV0YXRpbmcgPSBCb29sZWFuKHVzZUlzTXV0YXRpbmcoKSk7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKHsgdGFibGUsIGhlYWRlciB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gaGVhZGVyPXtoZWFkZXJ9IHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICA8L0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNvbnRhaW5lclByb3BzPXtwcm9wc31cbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBsaW5rQ29tcG9uZW50PXtMaW5rKHsgY2VsbCwgY29sdW1uIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBzaXplOiAzNSxcbiAgICAgIG1pblNpemU6IDM1LFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRhYmxlSGVhZCB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICA8U2VsZWN0SGVhZGVyQ2VsbCB0YWJsZT17dGFibGV9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Q2VsbCB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9DZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF0gc2F0aXNmaWVzIChDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ICYgeyBkaXNhYmxlRHJhZ2dpbmc/OiBib29sZWFuIH0pW107XG5cbiAgY29uc3QgY29sdW1uRGVmcyA9IFsuLi5jb25jcmV0ZUNvbHVtbkRlZnMsIC4uLnZpcnR1YWxDb2x1bW5EZWZzXS5zb3J0KGRlZmF1bHRDb2x1bW5Tb3J0aW5nKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R1ZGlvSGVhZGVyXG4gICAgICAgIGVuZENvbnRlbnQ9e1xuICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pnt0b3RhbEVkaXRpbmdGaWx0ZXJzfTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9Qb3BvdmVyVHJpZ2dlcj5cbiAgICAgICAgICA8UG9wb3ZlckNvbnRlbnQgYWxpZ249XCJzdGFydFwiIHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJwcy13LW1pbiBwcy1tYXgtaC1bNTIwcHhdIHBzLW92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICAgICAgPEZpbHRlclRyZWVcbiAgICAgICAgICAgICAgZmlsdGVyPXtlZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICBzZXRGaWx0ZXI9e3NldEVkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgIHNldEFwcGxpZWRGaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRFZGl0aW5nRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgZWRpdGluZyBzdGF0ZVxuICAgICAgICAgICAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBhcHBsaWVkIHN0YXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHRhYmxlPXthY3RpdmVUYWJsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17bmV3U3RhZ2VkUm93fSBkaXNhYmxlZD17aXNJbnNlcnRpbmcgPiAwfT5cbiAgICAgICAgICBJbnNlcnQgcm93XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICB7c3RhZ2VkUm93cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17c2F2ZVN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICBTYXZlXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIHsvKiBOZWVkcyBzb21lIGltcHJvdmVtZW50ICovfVxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkcm9wU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1NlbGVjdGluZyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2RlbGV0ZVNlbGVjdGlvbn0+XG4gICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0dWRpb0hlYWRlcj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTlNBeE1tZ3hOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVElnTlNBM0lEY3ROeUEzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTUgMTJoMTQnLCBrZXk6ICcxYXlzMGgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTIgNSA3IDctNyA3Jywga2V5OiAneHF1ejRjJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlQWxlcnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGJHbHVaU0I0TVQwaU1USWlJSGd5UFNJeE1pSWdlVEU5SWpnaUlIa3lQU0l4TWlJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWk0d01TSWdlVEU5SWpFMklpQjVNajBpTVRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1hbGVydFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUFsZXJ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlQWxlcnQnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMicsIHgyOiAnMTInLCB5MTogJzgnLCB5MjogJzEyJywga2V5OiAnMXBrZXVoJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMi4wMScsIHkxOiAnMTYnLCB5MjogJzE2Jywga2V5OiAnNGRmcTkwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVBbGVydDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEhhc2hcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGJHbHVaU0I0TVQwaU5DSWdlREk5SWpJd0lpQjVNVDBpT1NJZ2VUSTlJamtpSUM4K0NpQWdQR3hwYm1VZ2VERTlJalFpSUhneVBTSXlNQ0lnZVRFOUlqRTFJaUI1TWowaU1UVWlJQzgrQ2lBZ1BHeHBibVVnZURFOUlqRXdJaUI0TWowaU9DSWdlVEU5SWpNaUlIa3lQU0l5TVNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRZaUlIZ3lQU0l4TkNJZ2VURTlJak1pSUhreVBTSXlNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvaGFzaFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEhhc2ggPSBjcmVhdGVMdWNpZGVJY29uKCdIYXNoJywgW1xuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzknLCB5MjogJzknLCBrZXk6ICc0bGh0Y3QnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnNCcsIHgyOiAnMjAnLCB5MTogJzE1JywgeTI6ICcxNScsIGtleTogJ3Z5dTBrZCcgfV0sXG4gIFsnbGluZScsIHsgeDE6ICcxMCcsIHgyOiAnOCcsIHkxOiAnMycsIHkyOiAnMjEnLCBrZXk6ICcxZ2dwOG8nIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTYnLCB4MjogJzE0JywgeTE6ICczJywgeTI6ICcyMScsIGtleTogJ3dleWNncCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVdU5TQTNMalVnTWk0eklESXVNMkV4SURFZ01DQXdJREFnTVM0MElEQnNNaTR4TFRJdU1XRXhJREVnTUNBd0lEQWdNQzB4TGpSTU1Ua2dOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNakVnTWkwNUxqWWdPUzQySWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpjdU5TSWdZM2s5SWpFMUxqVWlJSEk5SWpVdU5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXkgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXknLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNS41IDcuNSAyLjMgMi4zYTEgMSAwIDAgMCAxLjQgMGwyLjEtMi4xYTEgMSAwIDAgMCAwLTEuNEwxOSA0Jywga2V5OiAnZzBmbGRrJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIxIDItOS42IDkuNicsIGtleTogJzFqMGhvOCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzcuNScsIGN5OiAnMTUuNScsIHI6ICc1LjUnLCBrZXk6ICd5cWIzaHInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBSZWZyZXNoQ3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk15QXhNbUU1SURrZ01DQXdJREVnT1MwNUlEa3VOelVnT1M0M05TQXdJREFnTVNBMkxqYzBJREl1TnpSTU1qRWdPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakVnTTNZMWFDMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0F4TW1FNUlEa2dNQ0F3SURFdE9TQTVJRGt1TnpVZ09TNDNOU0F3SURBZ01TMDJMamMwTFRJdU56Uk1NeUF4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE5rZ3pkalVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcmVmcmVzaC1jd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFJlZnJlc2hDdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ1JlZnJlc2hDdycsIFtcbiAgWydwYXRoJywgeyBkOiAnTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDgnLCBrZXk6ICd2OWg1dmMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgM3Y1aC01Jywga2V5OiAnMXE3dG8wJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2Jywga2V5OiAnM3VpZmwzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMTZIM3Y1Jywga2V5OiAnMWN2Njc4JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBSZWZyZXNoQ3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBTcXVhcmVBcnJvd1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDRJREV5YURnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFeUlERTJJRFF0TkMwMExUUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9zcXVhcmUtYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBTcXVhcmVBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignU3F1YXJlQXJyb3dSaWdodCcsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMTJoOCcsIGtleTogJzF3Y3lldicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMiAxNiA0LTQtNC00Jywga2V5OiAnMWk5emN2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBTcXVhcmVBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVGFibGUyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PU0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNblkwYlRZdE5tZ3hNR0V5SURJZ01DQXdJREVnTWlBeWRqUk5PU0F6ZGpFNGJUQWdNR2d4TUdFeUlESWdNQ0F3SURBZ01pMHlWamxOT1NBeU1VZzFZVElnTWlBd0lEQWdNUzB5TFRKV09XMHdJREJvTVRnaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RhYmxlLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUYWJsZTIgPSBjcmVhdGVMdWNpZGVJY29uKCdUYWJsZTInLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDNINWEyIDIgMCAwIDAtMiAydjRtNi02aDEwYTIgMiAwIDAgMSAyIDJ2NE05IDN2MThtMCAwaDEwYTIgMiAwIDAgMCAyLTJWOU05IDIxSDVhMiAyIDAgMCAxLTItMlY5bTAgMGgxOCcsXG4gICAgICBrZXk6ICdndWdqODMnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGUyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgWFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRnZ05pQTJJREU0SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTAySURZZ01USWdNVElpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMveFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKCdYJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTggNiA2IDE4Jywga2V5OiAnMWJsNWY4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTYgNiAxMiAxMicsIGtleTogJ2Q4Yms2dicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgWDtcbiIsICJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLXB4LTIuNSBwcy1weS0wLjUgcHMtdGV4dC14cyBwcy1mb250LXNlbWlib2xkIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTIgZm9jdXM6cHMtcmluZy1yaW5nIGZvY3VzOnBzLXJpbmctb2Zmc2V0LTJcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvODBcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFkZ2VQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKGJhZGdlVmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9O1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctYXV0byBwcy1mbGV4IHBzLWl0ZW1zLXN0YXJ0IHBzLWgtZnVsbFwiPlxuICAgICAgPHRhYmxlIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtdy1mdWxsIHBzLWNhcHRpb24tYm90dG9tIHBzLXRleHQtc21cIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiO1xuXG5jb25zdCBUYWJsZUhlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUhlYWRlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkZXJcIjtcblxuY29uc3QgVGFibGVCb2R5ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGJvZHkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cjpsYXN0LWNoaWxkXTpwcy1ib3JkZXItMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZUJvZHlcIjtcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Zm9vdFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtYm9yZGVyLXQgcHMtYmctbXV0ZWQvNTAgcHMtZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6cHMtYm9yZGVyLWItMFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVGb290ZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlRm9vdGVyXCI7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtYm9yZGVyLWIgcHMtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6cHMtYmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOnBzLWJnLW11dGVkXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIjtcblxuY29uc3QgVGFibGVIZWFkID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0aFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC0xMCBwcy1weC0yIHBzLXRleHQtbGVmdCBwcy1hbGlnbi1taWRkbGUgcHMtZm9udC1tZWRpdW0gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUhlYWQuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZFwiO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1hbGlnbi1taWRkbGVcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2VsbFwiO1xuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxjYXB0aW9uIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtbXQtNCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIjtcblxuZXhwb3J0IHsgVGFibGUsIFRhYmxlSGVhZGVyLCBUYWJsZUJvZHksIFRhYmxlRm9vdGVyLCBUYWJsZUhlYWQsIFRhYmxlUm93LCBUYWJsZUNlbGwsIFRhYmxlQ2FwdGlvbiB9O1xuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZUluc2VydCgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiaW5zZXJ0XCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5pbnNlcnQoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHQsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MobmV3RGF0YSkge1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGE8QWRhcHRlclF1ZXJ5UmVzdWx0PihcbiAgICAgICAge1xuICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAvLyBoZXJlIHdlIHBhcnRpYWxseSBtYXRjaCB0aGUgcXVlcnkga2V5IHRvIGdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICAgIH0sXG4gICAgICAgIChvbGREYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKG9sZERhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9sZERhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9sZERhdGEsXG4gICAgICAgICAgICByb3dzOiBbLi4ubmV3RGF0YS5yb3dzLCAuLi5vbGREYXRhLnJvd3NdLFxuICAgICAgICAgIH0gc2F0aXNmaWVzIEFkYXB0ZXJRdWVyeVJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgUmVhY3RRdWVyeURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc29ubmVyXCI7XG5pbXBvcnQgeyBOdXFzSGFzaEFkYXB0ZXIgfSBmcm9tIFwiLi9OdXFzSGFzaEFkYXB0ZXJcIjtcbmltcG9ydCB7IFN0dWRpb1RlbGVtZXRyeUV2ZW50IH0gZnJvbSBcIi4vU3R1ZGlvXCI7XG5pbXBvcnQgeyBVUkxEZWZhdWx0c0hhbmRsZXIgfSBmcm9tIFwiLi9VUkxEZWZhdWx0c0hhbmRsZXJcIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFjdGl2ZVNjaGVtYTogc3RyaW5nO1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVNjaGVtYTogKHNjaGVtYTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHByb3BzLmFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIHNldEFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuLFxuICAgICAgICAgICAgaXNOYXZpZ2F0aW9uT3BlbixcbiAgICAgICAgICAgIHRvZ2dsZU5hdmlnYXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxVUkxEZWZhdWx0c0hhbmRsZXIgLz5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R1ZGlvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvTnVxc0hhc2hBZGFwdGVyPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyBTdHVkaW8gY29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgU3R1ZGlvLlByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHVkaW8oKTogU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU3R1ZGlvQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYHVzZVN0dWRpb2AgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBTdHVkaW9Db250ZXh0LlByb3ZpZGVyYFwiKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHtcbiAgRGV2dG9vbHNCdXR0b25Qb3NpdGlvbixcbiAgRGV2dG9vbHNFcnJvclR5cGUsXG4gIERldnRvb2xzUG9zaXRpb24sXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGxvZ28gdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbS1yaWdodCcuXG4gICAqL1xuICBidXR0b25Qb3NpdGlvbj86IERldnRvb2xzQnV0dG9uUG9zaXRpb25cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20nLlxuICAgKi9cbiAgcG9zaXRpb24/OiBEZXZ0b29sc1Bvc2l0aW9uXG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzKFxuICBwcm9wczogRGV2dG9vbHNPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHtcbiAgICBidXR0b25Qb3NpdGlvbixcbiAgICBwb3NpdGlvbixcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGVycm9yVHlwZXMsXG4gICAgc3R5bGVOb25jZSxcbiAgICBzaGFkb3dET01UYXJnZXQsXG4gIH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29scyh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25Qb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0QnV0dG9uUG9zaXRpb24oYnV0dG9uUG9zaXRpb24pXG4gICAgfVxuICB9LCBbYnV0dG9uUG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgfVxuICB9LCBbcG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEluaXRpYWxJc09wZW4oaW5pdGlhbElzT3BlbiB8fCBmYWxzZSlcbiAgfSwgW2luaXRpYWxJc09wZW4sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gPGRpdiBkaXI9XCJsdHJcIiBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIiByZWY9e3JlZn0+PC9kaXY+XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCByZW5kZXIsIGxhenksIHNldHVwU3R5bGVTaGVldCwgY3JlYXRlQ29tcG9uZW50LCBtZXJnZVByb3BzIH0gZnJvbSAnLi9jaHVuay9IUjdZWFo1SC5qcyc7XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHMudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0XG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc0NvbXBvbmVudC9DUElPWlM1WC5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbC50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNvbkNsb3NlO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlXG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgICB0aGlzLiNvbkNsb3NlID0gY3JlYXRlU2lnbmFsKG9uQ2xvc2UpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIHNldE9uQ2xvc2Uob25DbG9zZSkge1xuICAgIHRoaXMuI29uQ2xvc2VbMV0oKCkgPT4gb25DbG9zZSk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgY29uc3QgW29uQ2xvc2VdID0gdGhpcy4jb25DbG9zZTtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzUGFuZWxDb21wb25lbnQvT0tGNkU0NVIuanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbG9zZSgpIHtcbiAgICAgICAgICByZXR1cm4gb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMsIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH07XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IERldnRvb2xzRXJyb3JUeXBlIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxuXG4gIC8qKlxuICAgKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAgICogQGRlZmF1bHQgeyBoZWlnaHQ6ICc1MDBweCcgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9XG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZGV2dG9vbHMgcGFuZWwgaXMgY2xvc2VkXG4gICAqL1xuICBvbkNsb3NlPzogKCkgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzUGFuZWwoXG4gIHByb3BzOiBEZXZ0b29sc1BhbmVsT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IGVycm9yVHlwZXMsIHN0eWxlTm9uY2UsIHNoYWRvd0RPTVRhcmdldCB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBpbml0aWFsSXNPcGVuOiB0cnVlLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlOiBwcm9wcy5vbkNsb3NlLFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0T25DbG9zZShwcm9wcy5vbkNsb3NlID8/ICgoKSA9PiB7fSkpXG4gIH0sIFtwcm9wcy5vbkNsb3NlLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPjwvZGl2PlxuICApXG59XG4iLCAiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIERldnRvb2xzIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzJ1xuaW1wb3J0ICogYXMgRGV2dG9vbHNQYW5lbCBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzOiAodHlwZW9mIERldnRvb2xzKVsnUmVhY3RRdWVyeURldnRvb2xzJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHMuUmVhY3RRdWVyeURldnRvb2xzXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbDogKHR5cGVvZiBEZXZ0b29sc1BhbmVsKVsnUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29sc1BhbmVsLlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsXG4iLCAiaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbi8vIGltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkAvdWkvc3R1ZGlvL3V0aWwvdGhlbWUtcHJvdmlkZXJcIjtcblxudHlwZSBUb2FzdGVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU29ubmVyPjtcblxuY29uc3QgVG9hc3RlciA9ICh7IC4uLnByb3BzIH06IFRvYXN0ZXJQcm9wcykgPT4ge1xuICAvLyBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxTb25uZXJcbiAgICAgIC8vIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXRvYXN0ZXIgcHMtZ3JvdXBcIlxuICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgIGNsYXNzTmFtZXM6IHtcbiAgICAgICAgICB0b2FzdDpcbiAgICAgICAgICAgIFwiZ3JvdXAgdG9hc3QgZ3JvdXAtWy50b2FzdGVyXTpiZy1iYWNrZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06dGV4dC1mb3JlZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06Ym9yZGVyLWJvcmRlciBncm91cC1bLnRvYXN0ZXJdOnNoYWRvdy1sZ1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGFjdGlvbkJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1wcmltYXJ5IGdyb3VwLVsudG9hc3RdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLW11dGVkIGdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCB7XG4gIHVuc3RhYmxlX0FkYXB0ZXJPcHRpb25zIGFzIEFkYXB0ZXJPcHRpb25zLFxuICB1bnN0YWJsZV9jcmVhdGVBZGFwdGVyUHJvdmlkZXIgYXMgY3JlYXRlQWRhcHRlclByb3ZpZGVyLFxufSBmcm9tIFwibnVxcy9hZGFwdGVycy9jdXN0b21cIjtcbmltcG9ydCB7IEZDLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRoYXQgTnVxcyB3aWxsIGNhbGwgdG8gcmVhZCAmIHdyaXRlIFVSTCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXNlSGFzaEFkYXB0ZXIoKSB7XG4gIGNvbnN0IHJhd0hhc2ggPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSkgOiBcIlwiO1xuICBjb25zdCBbaGFzaFBhcmFtcywgc2V0SGFzaFBhcmFtc10gPSB1c2VTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcblxuICAvLyB3cml0ZSBuZXcgc3RhdGUgYmFjayBpbnRvIHRoZSBoYXNoIGZyYWdtZW50XG4gIGZ1bmN0aW9uIHVwZGF0ZVVybCh1cGRhdGVkOiBVUkxTZWFyY2hQYXJhbXMsIHsgaGlzdG9yeSB9OiBBZGFwdGVyT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IGhhc2ggPSB1cGRhdGVkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdXJsID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9IyR7aGFzaH1gO1xuXG4gICAgaWYgKGhpc3RvcnkgPT09IFwicHVzaFwiKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfVxuXG4gICAgc2V0SGFzaFBhcmFtcyh1cGRhdGVkKTtcbiAgfVxuXG4gIC8vIGV4cG9zZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhcmFtc1xuICBmdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICB9XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBVUkxEZWZhdWx0c0hhbmRsZXIoKSB7XG4gIGNvbnN0IFtfdGFibGUsIHNldFRhYmxlXSA9IHVzZVF1ZXJ5U3RhdGUoXCJ0YWJsZVwiKTtcbiAgY29uc3QgW19zY2hlbWEsIHNldFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlKFwic2NoZW1hXCIpO1xuICBjb25zdCBbX3ZpZXcsIHNldFZpZXddID0gdXNlUXVlcnlTdGF0ZShcInZpZXdcIik7XG5cbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmc6IGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIHx8ICFpbnRyb3NwZWN0aW9uPy5zY2hlbWFzKSB7XG4gICAgICByZXR1cm47IC8vIFdhaXQgZm9yIGludHJvc3BlY3Rpb24gZGF0YSB0byBsb2FkXG4gICAgfVxuXG4gICAgLy8gSU1QT1JUQU5UOiBXZSByZWFkIGRpcmVjdGx5IGZyb20gd2luZG93LmxvY2F0aW9uLmhhc2ggdG8gYXZvaWQgc3RhbGUgY2xvc3VyZXNcbiAgICAvLyBmcm9tIHRoZSB1c2VRdWVyeVN0YXRlIGhvb2tzIGluIHRoaXMgaW5pdGlhbCBzZXR1cCBwaGFzZS5cbiAgICBjb25zdCBjdXJyZW50SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoY3VycmVudEhhc2gpO1xuXG4gICAgY29uc3QgaGFzVGFibGUgPSBwYXJhbXMuaGFzKFwidGFibGVcIik7XG4gICAgY29uc3QgaGFzU2NoZW1hID0gcGFyYW1zLmhhcyhcInNjaGVtYVwiKTtcbiAgICBjb25zdCBoYXNWaWV3ID0gcGFyYW1zLmhhcyhcInZpZXdcIik7XG5cbiAgICBpZiAoIWhhc1RhYmxlICYmICFoYXNTY2hlbWEgJiYgIWhhc1ZpZXcpIHtcbiAgICAgIGNvbnN0IGZpcnN0U2NoZW1hTmFtZSA9IE9iamVjdC5rZXlzKGludHJvc3BlY3Rpb24uc2NoZW1hcylbMF07XG4gICAgICBpZiAoZmlyc3RTY2hlbWFOYW1lKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VGFibGUgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbZmlyc3RTY2hlbWFOYW1lXT8udGFibGVzWzBdO1xuICAgICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICAgIC8vIHNldFRhYmxlLCBzZXRTY2hlbWEsIGFuZCBzZXRWaWV3IHdpbGwgdXBkYXRlIHRoZSBoYXNoXG4gICAgICAgICAgLy8gT3JkZXIgbWlnaHQgbWF0dGVyIGhlcmUgZGVwZW5kaW5nIG9uIG51cXMgYmF0Y2hpbmcgb3IgaW1tZWRpYXRlIHVwZGF0ZXNcbiAgICAgICAgICAvLyBTZXR0aW5nIHRoZW0gb25lIGJ5IG9uZSBpcyBnZW5lcmFsbHkgc2FmZXIuXG4gICAgICAgICAgdm9pZCBzZXRUYWJsZShmaXJzdFRhYmxlLm5hbWUpO1xuICAgICAgICAgIHZvaWQgc2V0U2NoZW1hKGZpcnN0U2NoZW1hTmFtZSk7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhhc1RhYmxlICYmIGhhc1NjaGVtYSAmJiAhaGFzVmlldykge1xuICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgfVxuICAgIC8vIFdlIG9ubHkgd2FudCB0byBydW4gdGhpcyBvbmNlIG9uIG1vdW50IGFmdGVyIGludHJvc3BlY3Rpb24gaXMgbG9hZGVkLlxuICAgIC8vIFRoZSBzZXR0ZXJzIChzZXRUYWJsZSwgZXRjLikgd2lsbCB0cmlnZ2VyIHJlLXJlbmRlcnMgaWYgbmVlZGVkLFxuICAgIC8vIGJ1dCB0aGlzIGVmZmVjdCBpdHNlbGYgaGFzIGRvbmUgaXRzIGpvYi5cbiAgICAvLyBBZGRpbmcgdGFibGUsIHNjaGVtYSwgdmlldyB0byBkZXBlbmRlbmN5IGFycmF5IGNhbiBjYXVzZSBsb29wcyBpZiBub3QgY2FyZWZ1bC5cbiAgfSwgW2lzSW50cm9zcGVjdGlvbkxvYWRpbmcsIGludHJvc3BlY3Rpb24sIHNldFRhYmxlLCBzZXRTY2hlbWEsIHNldFZpZXddKTtcblxuICByZXR1cm4gbnVsbDsgLy8gVGhpcyBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyIGFueXRoaW5nXG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9EQVRBX1VQREFURURfQVQgPSAtMTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUludHJvc3BlY3Rpb24oKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBpbml0aWFsRGF0YToge1xuICAgICAgc2NoZW1hczoge1xuICAgICAgICBbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl06IHtcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpbWV6b25lOiBcIlVUQ1wiLFxuICAgICAgZmlsdGVyT3BlcmF0b3JzOiBbXSxcbiAgICB9IHNhdGlzZmllcyBJbnRyb3NwZWN0aW9uLFxuICAgIGluaXRpYWxEYXRhVXBkYXRlZEF0OiBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCxcbiAgICBxdWVyeUZuOiBhc3luYyAoeyBzaWduYWwgfSkgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCBpbnRyb3NwZWN0aW9uXSA9IGF3YWl0IGFkYXB0ZXIuaW50cm9zcGVjdCh7IGFib3J0U2lnbmFsOiBzaWduYWwgfSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludHJvc3BlY3Rpb247XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1wiaW50cm9zcGVjdGlvblwiXSxcbiAgICAvLyBpZiBpcyBpbml0aWFsIGRhdGEsIHJlZmV0Y2ggaW1tZWRpYXRlbHksIG90aGVyd2lzZSwgbmV2ZXIgcmVmZXRjaCBhdXRvbWF0aWNhbGx5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgIC8vIHdlIGNhbiBzdGlsbCByZWZldGNoIG1hbnVhbGx5IHVzaW5nIHRoZSBxdWVyeSBjbGllbnQgLSBwcm9iYWJseSB0cmlnZ2VyZWQgYnkgYSBidXR0b24uXG4gICAgc3RhbGVUaW1lOiAoY3R4KSA9PiAoY3R4LnN0YXRlLmRhdGFVcGRhdGVkQXQgPT09IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID8gMCA6IEluZmluaXR5KSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5mdW5jdGlvbiBnZXRSb3dJZChyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgZmlsdGVyOiBpbmZlclJvd0ZpbHRlcihyb3csIHRhYmxlLmNvbHVtbnMpLFxuICAgIHRhYmxlOiBgJHt0YWJsZS5zY2hlbWF9LiR7dGFibGUubmFtZX1gLFxuICB9O1xuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShpZCk7XG59XG5cbmZ1bmN0aW9uIGFkZFJvd0lkVG9Sb3cocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIHJldHVybiB7IC4uLnJvdywgX19wc19yb3dpZDogZ2V0Um93SWQocm93LCB0YWJsZSkgfTtcbn1cblxudHlwZSBBZGFwdGVyUmVzdWx0ID0ge1xuICByb3c/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcm93cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkUm93SWRUb1Jlc3VsdDxUIGV4dGVuZHMgQWRhcHRlclJlc3VsdD4ocmVzdWx0OiBULCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgeyByb3csIHJvd3MgfSA9IHJlc3VsdDtcblxuICBpZiAocm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvdzogYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSB9O1xuICB9XG4gIGlmIChyb3dzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvd3M6IHJvd3MubWFwKChyb3cpID0+IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgRmlsdGVyR3JvdXAsIFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcyB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBzb3J0T3JkZXI6IFNvcnRPcmRlckl0ZW1bXTtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlUXVlcnkocHJvcHM6IFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcykge1xuICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgZmlsdGVyIH0gPSBwcm9wcztcblxuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGVuYWJsZWQ6IEJvb2xlYW4oYWN0aXZlVGFibGUpLFxuICAgIGdjVGltZTogMCxcbiAgICBwbGFjZWhvbGRlckRhdGEocHJldmlvdXNEYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQsIHByZXZpb3VzUXVlcnkpIHtcbiAgICAgIGNvbnN0IFssIHNjaGVtYSwgLCB0YWJsZV0gPSBwcmV2aW91c1F1ZXJ5Py5xdWVyeUtleSB8fCBbXTtcblxuICAgICAgaWYgKHNjaGVtYSAhPT0gYWN0aXZlVGFibGU/LnNjaGVtYSB8fCB0YWJsZSAhPT0gYWN0aXZlVGFibGU/Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgcXVlcnlGbih7IHNpZ25hbCB9KSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgYWRhcHRlci5xdWVyeShcbiAgICAgICAgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIHRhYmxlOiBhY3RpdmVUYWJsZSEsIGZpbHRlciB9LFxuICAgICAgICB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0cywgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXG4gICAgICBcInNjaGVtYVwiLFxuICAgICAgYWN0aXZlVGFibGU/LnNjaGVtYSB8fCBudWxsLFxuICAgICAgXCJ0YWJsZVwiLFxuICAgICAgYWN0aXZlVGFibGU/Lm5hbWUgfHwgbnVsbCxcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwic29ydE9yZGVyXCIsXG4gICAgICBzb3J0T3JkZXIubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSB8fCBcIm5hdHVyYWxcIixcbiAgICAgIFwicGFnZUluZGV4XCIsXG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBcInBhZ2VTaXplXCIsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIFwiZmlsdGVyXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgIF0sXG4gICAgc3RhbGVUaW1lOiBJbmZpbml0eSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBRdWVyeUNsaWVudCwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgQWRhcHRlclVwZGF0ZURldGFpbHMsIEFkYXB0ZXJVcGRhdGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IGluZmVyUm93RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGEvcXVlcnlcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zIHtcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHM7XG4gIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVVcGRhdGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgcXVlcnlLZXlQcmVmaXggPSBbXCJzY2hlbWFcIiwgYWN0aXZlVGFibGU/LnNjaGVtYSA/PyBudWxsLCBcInRhYmxlXCIsIGFjdGl2ZVRhYmxlPy5uYW1lID8/IG51bGxdIGFzIGNvbnN0O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHBhcmFtczogVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIudXBkYXRlKHBhcmFtcy5kZXRhaWxzLCBwYXJhbXMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIG11dGF0aW9uS2V5OiBbLi4ucXVlcnlLZXlQcmVmaXgsIFwidXBkYXRlXCJdLFxuICAgIG9uRXJyb3IoZXJyb3IsIHBhcmFtcykge1xuICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gcmV2ZXJ0Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY2FjaGVkUm93LFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoY2hhbmdlcykucmVkdWNlKFxuICAgICAgICAgICAgICAob3JpZ2luYWxWYWx1ZXMsIGNvbHVtbk5hbWUpID0+ICh7IC4uLm9yaWdpbmFsVmFsdWVzLCBbY29sdW1uTmFtZV06IHJvd1tjb2x1bW5OYW1lXSB9KSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uTXV0YXRlKHBhcmFtcykge1xuICAgICAgY29uc3QgeyBkZXRhaWxzIH0gPSBwYXJhbXM7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgcm93OiB1bmNoYW5nZWRSb3cgfSA9IGRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcih1bmNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseUNoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5kZXRhaWxzLmNoYW5nZXMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKHJlc3VsdCwgcGFyYW1zKSB7XG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseVJlYWxEYXRhV2hlbkZyZXNoZXIoY2FjaGVkUm93KSB7XG4gICAgICAgICAgY29uc3QgeyBfX3BzX3VwZGF0ZWRfYXRfXyB9ID0gY2FjaGVkUm93O1xuICAgICAgICAgIGNvbnN0IHsgcm93IH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAvLyByZXN1bHQgcm93IGlzIHN0YWxlLlxuICAgICAgICAgIGlmIChfX3BzX3VwZGF0ZWRfYXRfXyAhPSBudWxsICYmIHJvdy5fX3BzX3VwZGF0ZWRfYXRfXyA8PSBfX3BzX3VwZGF0ZWRfYXRfXykge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJvdztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLnJvdyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVDYWNoZWRSb3cocGFyYW1zOiB7XG4gIGdldEZpbmRlckZuOiAoKSA9PiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICB1cGRhdGVyRm46IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcXVlcnlDbGllbnQ6IFF1ZXJ5Q2xpZW50O1xufSkge1xuICBjb25zdCB7IGdldEZpbmRlckZuLCBxdWVyeUNsaWVudCwgdGFibGUsIHVwZGF0ZXJGbiB9ID0gcGFyYW1zO1xuXG4gIGxldCBmaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIGdldEZpbmRlckZuPjtcblxuICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YShcbiAgICB7IGV4YWN0OiBmYWxzZSwgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCB0YWJsZS5zY2hlbWEsIFwidGFibGVcIiwgdGFibGUubmFtZSwgXCJxdWVyeVwiXSB9LFxuICAgIChjYWNoZWRSZXN1bHQ6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCk6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCB7IHJvd3M6IGNhY2hlZFJvd3MgPSBbXSB9ID0gY2FjaGVkUmVzdWx0IHx8IHt9O1xuXG4gICAgICBpZiAoY2FjaGVkUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVkUm93SW5kZXggPSBjYWNoZWRSb3dzLmZpbmRJbmRleCgoZmluZGVyID8/PSBnZXRGaW5kZXJGbigpKSk7XG5cbiAgICAgIGlmIChjYWNoZWRSb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Um93ID0gdXBkYXRlckZuKGNhY2hlZFJvd3NbY2FjaGVkUm93SW5kZXhdISk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlZFJlc3VsdCEsXG4gICAgICAgIHJvd3M6IFsuLi5jYWNoZWRSb3dzLnNsaWNlKDAsIGNhY2hlZFJvd0luZGV4KSwgbmV3Um93LCAuLi5jYWNoZWRSb3dzLnNsaWNlKGNhY2hlZFJvd0luZGV4ICsgMSldLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGaWx0ZXI6IEZpbHRlckdyb3VwID0ge1xuICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gIGZpbHRlcnM6IFtdLFxuICBhZnRlcjogXCJhbmRcIixcbiAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG59O1xuXG5jb25zdCBjb3VudEZpbHRlcnNSZWN1cnNpdmUgPSAoZmlsdGVyR3JvdXA6IEZpbHRlckdyb3VwKTogbnVtYmVyID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVyR3JvdXAuZmlsdGVycykge1xuICAgIGlmIChmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgLy8gT25seSBjb3VudCBmaWx0ZXJzIHRoYXQgaGF2ZSBhIG5vbi1lbXB0eSBjb2x1bW4gc2VsZWN0ZWRcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uLnRyaW0oKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyLmtpbmQgPT09IFwiRmlsdGVyR3JvdXBcIikge1xuICAgICAgY291bnQgKz0gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGZpbHRlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJpbmcoKSB7XG4gIGNvbnN0IFtmaWx0ZXJQYXJhbSwgc2V0RmlsdGVyUGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcImZpbHRlclwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVyKSxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbGllZEZpbHRlciA9IHVzZU1lbW8oKCkgPT4gSlNPTi5wYXJzZShmaWx0ZXJQYXJhbSkgYXMgRmlsdGVyR3JvdXAsIFtmaWx0ZXJQYXJhbV0pO1xuICBjb25zdCBzZXRBcHBsaWVkRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQgc2V0RmlsdGVyUGFyYW0oSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG5cbiAgY29uc3QgW2VkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXJdID0gdXNlU3RhdGU8RmlsdGVyR3JvdXA+KGFwcGxpZWRGaWx0ZXIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgfSwgW2FwcGxpZWRGaWx0ZXJdKTtcblxuICBjb25zdCB0b3RhbEVkaXRpbmdGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZWRpdGluZ0ZpbHRlciksIFtlZGl0aW5nRmlsdGVyXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWVkRmlsdGVyLFxuICAgIHNldEFwcGxpZWRGaWx0ZXIsXG4gICAgZWRpdGluZ0ZpbHRlcixcbiAgICBzZXRFZGl0aW5nRmlsdGVyLFxuICAgIHRvdGFsRWRpdGluZ0ZpbHRlcnMsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuLyoqXG4gKiBIb29rIHRvIGtub3cgd2hldGhlciBhbiBpbnNlcnQgaXMgY3VycmVudGx5IG9uZ29pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc0luc2VydGluZygpIHtcbiAgcmV0dXJuIHVzZUlzTXV0YXRpbmcoe1xuICAgIHByZWRpY2F0ZSh7IG9wdGlvbnM6IHsgbXV0YXRpb25LZXkgfSB9KSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25LZXk/Lls0XSA9PT0gXCJpbnNlcnRcIjtcbiAgICB9LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE9uQ2hhbmdlRm4sIFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGtleU1hcCwgcGFyc2VBc0luZGV4LCBwYXJzZUFzSW50ZWdlciwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8vIFRPRE86IGV2ZW50dWFsbHkgY29uZmlndXJhYmxlIC8gY29udHJvbGxlZCBieSB1c2VyLiBiYWJ5IHN0ZXBzLi5cbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gMjU7XG5cbmNvbnN0IHBhZ2luYXRpb25QYXJzZXJzID0ga2V5TWFwKHtcbiAgcGFnZUluZGV4OiBwYXJzZUFzSW5kZXgud2l0aERlZmF1bHQoMCksIC8vIHplcm8tYmFzZWRcbiAgcGFnZVNpemU6IHBhcnNlQXNJbnRlZ2VyLndpdGhEZWZhdWx0KERFRkFVTFRfUEFHRV9TSVpFKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbigpIHtcbiAgY29uc3QgW3sgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LCBzZXRQYWdpbmF0aW9uXSA9IHVzZVF1ZXJ5U3RhdGVzKHBhZ2luYXRpb25QYXJzZXJzKTtcblxuICAvLyBDb21wYXRpYmxlIHdpdGggVGFuU3RhY2sgVGFibGUncyBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT5cbiAgY29uc3Qgc2V0UGFnaW5hdGlvblN0YXRlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT4gPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlck9yVmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oKG9sZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlck9yVmFsdWUob2xkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICBwYWdlU2l6ZTogbmV3U3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogdXBkYXRlck9yVmFsdWUucGFnZUluZGV4LFxuICAgICAgICAgIHBhZ2VTaXplOiB1cGRhdGVyT3JWYWx1ZS5wYWdlU2l6ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0UGFnaW5hdGlvbl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0aW9uU3RhdGU6IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LFxuICAgIHNldFBhZ2luYXRpb25TdGF0ZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZURlbGV0ZSB9IGZyb20gXCIuL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4vdXNlLXBhZ2luYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbihkYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGVdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgaXNTZWxlY3RpbmcgPSBPYmplY3Qua2V5cyhyb3dTZWxlY3Rpb25TdGF0ZSkubGVuZ3RoICE9PSAwO1xuICBjb25zdCB7IG11dGF0ZSB9ID0gdXNlQWN0aXZlVGFibGVEZWxldGUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pLCBbYWN0aXZlVGFibGUsIHBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXhdKTtcblxuICBmdW5jdGlvbiBkZWxldGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgcm93cyA9IGRhdGE/LnJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIHJldHVybiByb3dTZWxlY3Rpb25TdGF0ZVtyb3cuX19wc19yb3dpZCBhcyBzdHJpbmddO1xuICAgIH0pO1xuXG4gICAgbXV0YXRlKHJvd3MgPz8gW10sIHtcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3IsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlbGV0ZVNlbGVjdGlvbixcbiAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBpc1NlbGVjdGluZyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJkZWxldGVcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmRlbGV0ZSh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBhc3luYyBvblN1Y2Nlc3MoKSB7XG4gICAgICBhd2FpdCBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU29ydGluZygpIHtcbiAgLy8gVXNlIG51cXMgdG8gbWFuYWdlIHNvcnRpbmcgc3RhdGUgaW4gVVJMXG4gIGNvbnN0IFtzb3J0UGFyYW0sIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwic29ydFwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICB9KTtcblxuICAvLyBQYXJzZSBzb3J0aW5nIGZyb20gVVJMIHBhcmFtZXRlclxuICBjb25zdCBwYXJzZVNvcnRpbmcgPSAoc29ydFBhcmFtOiBzdHJpbmcgfCBudWxsKTogU29ydE9yZGVySXRlbVtdID0+IHtcbiAgICBpZiAoIXNvcnRQYXJhbSkgcmV0dXJuIFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdDogY29sdW1uOmRpcmVjdGlvbixjb2x1bW46ZGlyZWN0aW9uXG4gICAgICByZXR1cm4gc29ydFBhcmFtXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICBpZiAoIWNvbHVtbiB8fCAhZGlyZWN0aW9uIHx8ICFbXCJhc2NcIiwgXCJkZXNjXCJdLmluY2x1ZGVzKGRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBjb2x1bW4sIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFNvcnRPcmRlckl0ZW1bXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHNvcnRpbmcgcGFyYW1ldGVyOlwiLCBlKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgc3RhYmxlIHNvcnRpbmcgc3RhdGUgdGhhdCdzIGRlcml2ZWQgZnJvbSBVUkwgcGFyYW1ldGVyc1xuICBjb25zdCBbc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSkpO1xuXG4gIC8vIEtlZXAgaW50ZXJuYWwgc3RhdGUgc3luY2hyb25pemVkIHdpdGggVVJMIHBhcmFtZXRlcnNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdTb3J0aW5nU3RhdGUgPSBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKTtcbiAgICBzZXRTb3J0aW5nU3RhdGUobmV3U29ydGluZ1N0YXRlKTtcbiAgfSwgW3NvcnRQYXJhbV0pO1xuXG4gIC8vIFVwZGF0ZSBVUkwgd2hlbiBzb3J0aW5nIGNoYW5nZXMgZnJvbSB0aGUgVUlcbiAgY29uc3QgaGFuZGxlU29ydGluZ0NoYW5nZSA9IChuZXdTdGF0ZTogU29ydE9yZGVySXRlbVtdIHwgKChvbGQ6IFNvcnRPcmRlckl0ZW1bXSkgPT4gU29ydE9yZGVySXRlbVtdKSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0eXBlb2YgbmV3U3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IG5ld1N0YXRlKHNvcnRpbmdTdGF0ZSkgOiBuZXdTdGF0ZTtcbiAgICBzZXRTb3J0aW5nU3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgc29ydGluZyBzdGF0ZSB0byBVUkwgcGFyYW1ldGVyXG4gICAgY29uc3Qgc29ydFN0cmluZyA9XG4gICAgICByZXNvbHZlZFN0YXRlLmxlbmd0aCA+IDAgPyByZXNvbHZlZFN0YXRlLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgOiBudWxsO1xuXG4gICAgdm9pZCBzZXRTb3J0UGFyYW0oc29ydFN0cmluZyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzb3J0aW5nU3RhdGUsXG4gICAgc2V0U29ydGluZ1N0YXRlOiBoYW5kbGVTb3J0aW5nQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENvcHkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29udGV4dE1lbnUsIENvbnRleHRNZW51Q29udGVudCwgQ29udGV4dE1lbnVJdGVtLCBDb250ZXh0TWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPG9iamVjdD47XG5cbi8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgaW52ZXJzaWZpZWQgLSB0byBtYWtlIGl0IGV4dGVuc2libGUsIGFuZCBhZGFwdGFibGUgdG8gZGlmZmVyZW50IHNpdHVhdGlvbnMuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUocHJvcHM6IERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dE1lbnU+XG4gICAgICA8Q29udGV4dE1lbnVUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWJsb2NrIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29udGV4dE1lbnVUcmlnZ2VyPlxuICAgICAgPENvbnRleHRNZW51Q29udGVudD5cbiAgICAgICAgPENvbnRleHRNZW51SXRlbVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBleHRyYWN0VGV4dENvbnRlbnQoY2hpbGRyZW4pO1xuICAgICAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IHRvIGNsaXBib2FyZDpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBzaXplPXsxMn0gLz5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvQ29udGV4dE1lbnVJdGVtPlxuICAgICAgPC9Db250ZXh0TWVudUNvbnRlbnQ+XG4gICAgPC9Db250ZXh0TWVudT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRDb250ZW50KG5vZGU6IFJlYWN0Tm9kZSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gU3RyaW5nKG5vZGUpO1xuICB9XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICBjb25zdCBwcm9wcyA9IG5vZGUucHJvcHMgYXMgeyB0ZXh0Pzogc3RyaW5nOyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9O1xuXG4gICAgLy8gSGFuZGxlIFJldmVhbFRleHQgY29tcG9uZW50IHNwZWNpZmljYWxseVxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIlJldmVhbFRleHRcIikge1xuICAgICAgcmV0dXJuIHByb3BzLnRleHQgfHwgXCJcIjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgTnVsbFZhbHVlIGNvbXBvbmVudFxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIk51bGxWYWx1ZVwiKSB7XG4gICAgICByZXR1cm4gXCJOVUxMXCI7XG4gICAgfVxuXG4gICAgLy8gUmVjdXJzaXZlbHkgZXh0cmFjdCB0ZXh0IGZyb20gY2hpbGRyZW5cbiAgICBpZiAocHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBleHRyYWN0VGV4dENvbnRlbnQocHJvcHMuY2hpbGRyZW4gYXMgUmVhY3ROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUubWFwKGV4dHJhY3RUZXh0Q29udGVudCkuam9pbihcIlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwgImltcG9ydCAqIGFzIENvbnRleHRNZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dC1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ29udGV4dE1lbnUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBDb250ZXh0TWVudVRyaWdnZXIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBDb250ZXh0TWVudUdyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51UG9ydGFsID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YiA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0dyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG8gcHMtaC00IHBzLXctNFwiIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuQ29udGV4dE1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Db250ZXh0TWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuQ29udGV4dE1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuQ29udGV4dE1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZCBwcy10ZXh0LWZvcmVncm91bmRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUxhYmVsLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLWJvcmRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApO1xufTtcbkNvbnRleHRNZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbnRleHRNZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51VHJpZ2dlcixcbiAgQ29udGV4dE1lbnVDb250ZW50LFxuICBDb250ZXh0TWVudUl0ZW0sXG4gIENvbnRleHRNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZXh0TWVudVJhZGlvSXRlbSxcbiAgQ29udGV4dE1lbnVMYWJlbCxcbiAgQ29udGV4dE1lbnVTZXBhcmF0b3IsXG4gIENvbnRleHRNZW51U2hvcnRjdXQsXG4gIENvbnRleHRNZW51R3JvdXAsXG4gIENvbnRleHRNZW51UG9ydGFsLFxuICBDb250ZXh0TWVudVN1YixcbiAgQ29udGV4dE1lbnVTdWJDb250ZW50LFxuICBDb250ZXh0TWVudVN1YlRyaWdnZXIsXG4gIENvbnRleHRNZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBEYXRhR3JpZENlbGxDb250ZXh0TWVudSB9IGZyb20gXCIuLi9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2VsbChwcm9wczogQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbFxuICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgICAgIC8vIFwiZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy0yIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5kaWdvLTQwMCBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluc2V0XCIsXG4gICAgICAgIFwicHMtY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIDxEYXRhR3JpZENlbGxDb250ZXh0TWVudT57Y2hpbGRyZW59PC9EYXRhR3JpZENlbGxDb250ZXh0TWVudT5cbiAgICA8L1RhYmxlQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5DZWxsIH0gZnJvbSBcIi4vQm9vbGVhbkNlbGxcIjtcbmltcG9ydCB7IERhdGVDZWxsIH0gZnJvbSBcIi4vRGF0ZUNlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgRW51bUNlbGwgfSBmcm9tIFwiLi9FbnVtQ2VsbFwiO1xuaW1wb3J0IHsgSlNPTkNlbGwgfSBmcm9tIFwiLi9KU09OQ2VsbFwiO1xuaW1wb3J0IHsgTnVsbENlbGwgfSBmcm9tIFwiLi9OdWxsQ2VsbFwiO1xuaW1wb3J0IHsgTnVtZXJpY0NlbGwgfSBmcm9tIFwiLi9OdW1lcmljQ2VsbFwiO1xuaW1wb3J0IHsgUmF3Q2VsbCB9IGZyb20gXCIuL1Jhd0NlbGxcIjtcbmltcG9ydCB7IFRpbWVDZWxsIH0gZnJvbSBcIi4vVGltZUNlbGxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGwoeyBjZWxsLCBjb2x1bW4gfTogeyBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjsgY29sdW1uOiBDb2x1bW4gfSkge1xuICBjb25zdCB2YWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8RW1wdHlDZWxsIC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gPFJhd0NlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJyYXdcIikge1xuICAgIGlmIChpc09iamVjdFR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPEpTT05DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIDxSYXdDZWxsIHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuY29uc3QgQm9vbGVhbkNlbGwgPSAocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+O1xufTtcbkJvb2xlYW5DZWxsLmRpc3BsYXlOYW1lID0gXCJCb29sZWFuQ2VsbFwiO1xuXG5leHBvcnQgeyBCb29sZWFuQ2VsbCB9O1xuIiwgImV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNlbGxQcm9wcyB7XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZUNlbGwocHJvcHM6IERhdGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEVtcHR5Q2VsbChfcHJvcHM6IEVtcHR5Q2VsbFByb3BzKSB7XG4gIHJldHVybiA8PjwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudW1DZWxsKHByb3BzOiBFbnVtQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICB2YWx1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBKU09OQ2VsbChwcm9wczogSlNPTkNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfTwvPjtcbn1cbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIE51bGxDZWxsUHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIE51bGxDZWxsKF9wcm9wczogTnVsbENlbGxQcm9wcykge1xuICByZXR1cm4gPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCI+TlVMTDwvY29kZT47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBOdW1lcmljQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOdW1lcmljQ2VsbChwcm9wczogTnVtZXJpY0NlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPGRpdiBkYXRhLWNlbGwtdHlwZT1cIm51bWVyaWNcIj57dmFsdWUgPT09IG51bGwgPyBcIk5VTExcIiA6IFN0cmluZyh2YWx1ZSl9PC9kaXY+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgUmF3Q2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXdDZWxsKHByb3BzOiBSYXdDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZUNlbGwocHJvcHM6IFRpbWVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3hcIjtcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWgtNCBwcy13LTQgcHMtc2hyaW5rLTAgcHMtcm91bmRlZC1zbSBwcy1ib3JkZXIgcHMtYm9yZGVyLXByaW1hcnkgcHMtc2hhZG93IGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3IgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXRleHQtY3VycmVudFwiKX0+XG4gICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gIDwvQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbikpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RIZWFkZXJDZWxsUHJvcHMge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdEhlYWRlckNlbGwocHJvcHM6IFNlbGVjdEhlYWRlckNlbGxQcm9wcykge1xuICBjb25zdCB7IHRhYmxlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIGNoZWNrZWQ9e3RhYmxlLmdldElzQWxsUm93c1NlbGVjdGVkKCl9XG4gICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUm93c1NlbGVjdGVkKCEhdmFsdWUpfVxuICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgUm93IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RSb3dDZWxsUHJvcHMge1xuICByb3c6IFJvdzxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0Um93Q2VsbChwcm9wczogU2VsZWN0Um93Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgcm93LCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICBkaXNhYmxlZD17IXJvdy5nZXRDYW5TZWxlY3QoKSB8fCByZWFkb25seX1cbiAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgKHRyaWdnZXJSZWYgYXMgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KS5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgbGlua0NvbXBvbmVudDogUmVhY3ROb2RlO1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50LCBsaW5rQ29tcG9uZW50LCBjb250YWluZXJQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgIDxDZWxsIHsuLi5jb250YWluZXJQcm9wc30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLXctZnVsbCBwcy1nYXAtMiBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2PntjZWxsQ29tcG9uZW50fTwvZGl2PlxuICAgICAgICAgICAge2xpbmtDb21wb25lbnR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2VsbD5cbiAgICAgIDwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctbWF4XCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4gJiB7IGxhYmVsPzogUmVhY3ROb2RlIH1cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgbGFiZWwsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgIHtsYWJlbCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj57bGFiZWx9Ojwvc3Bhbj59XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBPbkNoYW5nZUZuLFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgVGFibGUgYXMgUmVhY3RUYWJsZSxcbiAgdXNlUmVhY3RUYWJsZSxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgUmVhY3RUYWJsZURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCB0eXBlIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZGVyLCBUYWJsZVJvdyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4uL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRMb2FkaW5nQmFyIH0gZnJvbSBcIi4vRGF0YUdyaWRMb2FkaW5nQmFyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZFBhZ2luYXRpb24gfSBmcm9tIFwiLi9EYXRhR3JpZFBhZ2luYXRpb25cIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuXG4vLyBBZGQgdGhpcyBuZXcgY29tcG9uZW50IGZvciBkcmFnZ2FibGUgaGVhZGVyIGNlbGxzXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiBoZWFkZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBIZWFkZXIgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXIgPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIoaGVhZGVyLmdldENvbnRleHQoKSkgYXMgSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxIZWFkZXIga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge2dldEJlZm9yZVJvd3M/Lih0YWJsZSl9XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICBcInBzLWJnLXRhYmxlLXJvdyBwcy1vZGQ6YmctdGFibGUtcm93LW9kZCBwcy1ncm91cCBbJjpsYXN0LW9mLXR5cGVfdGRdOnBzLWJvcmRlci1iLTAgcHMtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2l9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IC8+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCIsXG4gICAgICBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICBpc1Bpbm5lZCAmJiBcInBzLXN0aWNreVwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtei0yMFwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImNlbGxcIiAmJiBcInBzLXotMFwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIG1pbldpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIGxlZnQ6IGlzTGVmdFBpbm5lZCA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzUmlnaHRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0QWZ0ZXIoXCJyaWdodFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBIZWFkZXIsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDU1NQcm9wZXJ0aWVzLCBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG50eXBlIERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjbGFzc05hbWUsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWQgcmVmPXtzZXROb2RlUmVmfSB7Li4uYXR0cmlidXRlc30gey4uLmxpc3RlbmVyc30gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2RyYWdDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBIZWFkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd0Rvd25XaWRlTmFycm93LCBBcnJvd1VwV2lkZU5hcnJvdywgQ2hldnJvbkRvd24sIE1vdmVEb3duLCBNb3ZlVXAsIFBpbiwgUGluT2ZmLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBjb2x1bW4sIGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlckNlbGwgY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIG9uU2V0Tm93PzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHNob3dTZXROb3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG4gIG9uU2V0Tm93LFxuICBzaG93U2V0Tm93LFxufTogSW5wdXRBY3Rpb25zUHJvcHMpID0+IHtcbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG9uTnVsbENoYW5nZSkgb25OdWxsQ2hhbmdlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKG9uU2F2ZSkgb25TYXZlKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgaWYgKG9uQ2FuY2VsKSBvbkNhbmNlbCgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy10ZXh0LXhzIHBzLXAtMlwiPlxuICAgICAgeyFyZWFkb25seSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1ncmlkIHBzLWdyaWQtY29scy0yIHBzLWdhcC0xIHBzLWl0ZW1zLXN0YXJ0IHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgIFNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgIHtvbk51bGxDaGFuZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wIHBzLWgtNlwiXG4gICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlNldCB0byBOVUxMPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge3Nob3dTZXROb3cgJiYgKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2V0Tm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNOdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gTk9XXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNldCB0byB7ZGF5anMoKS5mb3JtYXQoXCJMTExcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHsgdHlwZSBGb3JtRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jYWxlbmRhclwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5LCBjb2x1bW4gfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFyc2VkSW5pdGlhbERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhpbml0aWFsVmFsdWUpO1xuICAgIHJldHVybiBwYXJzZWQuaXNWYWxpZCgpID8gcGFyc2VkLnRvRGF0ZSgpIDogbmV3IERhdGUoKTtcbiAgfSwgW2luaXRpYWxWYWx1ZV0pO1xuXG4gIGNvbnN0IGdldEZvcm1hdEZvclR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREXCI7XG4gICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcFwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcHR6XCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgY2FzZSBcInRpbWV0elwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1NaXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvLyBJbml0aWFsaXplIHN0YXRlcyB3aXRoIHRoZSBwYXJzZWQgZGF0ZVxuICBjb25zdCBbc2VsZWN0ZWREYXRlLCBzZXRTZWxlY3RlZERhdGVdID0gdXNlU3RhdGU8RGF0ZSB8IHVuZGVmaW5lZD4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbY3VycmVudE1vbnRoLCBzZXRDdXJyZW50TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbaG91clZhbHVlLCBzZXRIb3VyVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gZGF5anMocGFyc2VkSW5pdGlhbERhdGUpLmZvcm1hdChcIkhIXCIpKTtcbiAgY29uc3QgW21pbnV0ZVZhbHVlLCBzZXRNaW51dGVWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBkYXlqcyhwYXJzZWRJbml0aWFsRGF0ZSkuZm9ybWF0KFwibW1cIikpO1xuICBjb25zdCBbc2Vjb25kVmFsdWUsIHNldFNlY29uZFZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGRheWpzKHBhcnNlZEluaXRpYWxEYXRlKS5mb3JtYXQoXCJzc1wiKSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZTogYmFzZUhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSwgc2V0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGNvbnN0IGNvbHVtblR5cGUgPSB1c2VNZW1vKCgpID0+IGNvbHVtbj8uZGF0YXR5cGU/Lm5hbWUgfHwgKGNvbHVtbj8uZGF0YXR5cGUgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBbY29sdW1uXSk7XG4gIGNvbnN0IGRiRm9ybWF0ID0gdXNlTWVtbygoKSA9PiBnZXRGb3JtYXRGb3JUeXBlKGNvbHVtblR5cGUpLCBbY29sdW1uVHlwZV0pO1xuXG4gIGNvbnN0IGhhc1RpbWVQcmVjaXNpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gW1widGltZVwiLCBcInRpbWVzdGFtcFwiLCBcInRpbWVzdGFtcHR6XCIsIFwidGltZXR6XCJdLmluY2x1ZGVzKGNvbHVtblR5cGUpO1xuICB9LCBbY29sdW1uVHlwZV0pO1xuXG4gIC8vIEN1c3RvbSBvbkNoYW5nZSBoYW5kbGVyXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGJhc2VIYW5kbGVPbkNoYW5nZShldmVudCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhuZXdWYWx1ZSk7XG4gICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gcGFyc2VkLnRvRGF0ZSgpO1xuICAgICAgICBzZXRTZWxlY3RlZERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEN1cnJlbnRNb250aChuZXdEYXRlKTtcbiAgICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgICBzZXRIb3VyVmFsdWUocGFyc2VkLmZvcm1hdChcIkhIXCIpKTtcbiAgICAgICAgICBzZXRNaW51dGVWYWx1ZShwYXJzZWQuZm9ybWF0KFwibW1cIikpO1xuICAgICAgICAgIHNldFNlY29uZFZhbHVlKHBhcnNlZC5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIC8vIEludmFsaWQgZGF0ZSBmb3JtYXRcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIGlucHV0VmFsdWUgd2hlbiBjYWxlbmRhciBzZWxlY3Rpb24gY2hhbmdlc1xuICBjb25zdCBoYW5kbGVDYWxlbmRhclNlbGVjdCA9IChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBkYXlqcyhkYXRlKTtcbiAgICBsZXQgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlO1xuXG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24gJiYgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyB0aW1lXG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGVcbiAgICAgICAgLmhvdXIoZGF5anMoc2VsZWN0ZWREYXRlKS5ob3VyKCkpXG4gICAgICAgIC5taW51dGUoZGF5anMoc2VsZWN0ZWREYXRlKS5taW51dGUoKSlcbiAgICAgICAgLnNlY29uZChkYXlqcyhzZWxlY3RlZERhdGUpLnNlY29uZCgpKTtcbiAgICB9IGVsc2UgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB0aW1lIGlmIG5vIHByZXZpb3VzIHRpbWVcbiAgICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGUuaG91cihub3cuaG91cigpKS5taW51dGUobm93Lm1pbnV0ZSgpKS5zZWNvbmQobm93LnNlY29uZCgpKTtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWREYXRlKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0Q3VycmVudE1vbnRoKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBmaW5hbERhdGUuZm9ybWF0KGRiRm9ybWF0KSA6IGZpbmFsRGF0ZS50b0lTT1N0cmluZygpKTtcbiAgfTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVTZXROb3cgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICBzZXRTZWxlY3RlZERhdGUobm93LnRvRGF0ZSgpKTtcbiAgICBzZXRDdXJyZW50TW9udGgobm93LnRvRGF0ZSgpKTsgLy8gRW5zdXJlIGNhbGVuZGFyIHZpZXcgdXBkYXRlc1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gbm93LmZvcm1hdChkYkZvcm1hdCkgOiBub3cudG9JU09TdHJpbmcoKSk7XG5cbiAgICAvLyBVcGRhdGUgaW5wdXQgZmllbGRzXG4gICAgc2V0WWVhclZhbHVlKG5vdy55ZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEdlbmVyYXRlIG1vbnRoIG9wdGlvbnMgZm9yIHRoZSBzZWxlY3RcbiAgY29uc3QgbW9udGhzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7IHZhbHVlOiBcIjBcIiwgbGFiZWw6IFwiSmFudWFyeVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjFcIiwgbGFiZWw6IFwiRmVicnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIyXCIsIGxhYmVsOiBcIk1hcmNoXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiM1wiLCBsYWJlbDogXCJBcHJpbFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjRcIiwgbGFiZWw6IFwiTWF5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNVwiLCBsYWJlbDogXCJKdW5lXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNlwiLCBsYWJlbDogXCJKdWx5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiN1wiLCBsYWJlbDogXCJBdWd1c3RcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI4XCIsIGxhYmVsOiBcIlNlcHRlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjlcIiwgbGFiZWw6IFwiT2N0b2JlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjEwXCIsIGxhYmVsOiBcIk5vdmVtYmVyXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMTFcIiwgbGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxuICAgIF0sXG4gICAgW10sXG4gICk7XG5cbiAgLy8gR2V0IHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIHZhbHVlc1xuICBjb25zdCBjdXJyZW50TW9udGhWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50TW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICB9LCBbY3VycmVudE1vbnRoXSk7XG5cbiAgY29uc3QgW3llYXJWYWx1ZSwgc2V0WWVhclZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgfSk7XG5cbiAgY29uc3QgdXBkYXRlRGF0ZUZyb21JbnB1dHMgPSAoXG4gICAgbmV3RGF0ZVBhcnRzOiBQYXJ0aWFsPHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlcjsgaG91cjogbnVtYmVyOyBtaW51dGU6IG51bWJlcjsgc2Vjb25kOiBudW1iZXIgfT4sXG4gICkgPT4ge1xuICAgIGxldCBiYXNlRGF0ZSA9IHNlbGVjdGVkRGF0ZSA/IGRheWpzKHNlbGVjdGVkRGF0ZSkgOiBkYXlqcygpOyAvLyBVc2UgY3VycmVudCBkYXRlL3RpbWUgYXMgYmFzZSBpZiBub3RoaW5nIGlzIHNlbGVjdGVkXG5cbiAgICAvLyBJZiBvbmx5IHRpbWUgaXMgY2hhbmdpbmcsIGVuc3VyZSB0aGUgZGF0ZSBwYXJ0IGlzIGZyb20gc2VsZWN0ZWREYXRlIG9yIGN1cnJlbnRNb250aCB2aWV3XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLnllYXIgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLm1vbnRoID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy5kYXkgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgYmFzZURhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgLy8gaWYgbm8gZGF0ZSBpcyBzZWxlY3RlZCwgYnV0IHRpbWUgaXMgY2hhbmdlZCwgdXNlIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGNhbGVuZGFyIGZvciBkYXRlIHBhcnRcbiAgICAgIGJhc2VEYXRlID0gZGF5anMoY3VycmVudE1vbnRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRlID0gYmFzZURhdGVcbiAgICAgIC5zZXQoXCJ5ZWFyXCIsIG5ld0RhdGVQYXJ0cy55ZWFyID8/IGJhc2VEYXRlLnllYXIoKSlcbiAgICAgIC5zZXQoXCJtb250aFwiLCBuZXdEYXRlUGFydHMubW9udGggPz8gYmFzZURhdGUubW9udGgoKSkgLy8gbW9udGggaXMgMC1pbmRleGVkIGZvciBkYXlqc1xuICAgICAgLnNldChcImRhdGVcIiwgbmV3RGF0ZVBhcnRzLmRheSA/PyBiYXNlRGF0ZS5kYXRlKCkpXG4gICAgICAuc2V0KFwiaG91clwiLCBuZXdEYXRlUGFydHMuaG91ciA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLmhvdXIoKSA6IDApKVxuICAgICAgLnNldChcIm1pbnV0ZVwiLCBuZXdEYXRlUGFydHMubWludXRlID8/IChoYXNUaW1lUHJlY2lzaW9uID8gYmFzZURhdGUubWludXRlKCkgOiAwKSlcbiAgICAgIC5zZXQoXCJzZWNvbmRcIiwgbmV3RGF0ZVBhcnRzLnNlY29uZCA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLnNlY29uZCgpIDogMCkpO1xuXG4gICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUudG9EYXRlKCkpO1xuICAgIC8vIHNldEN1cnJlbnRNb250aCBzaG91bGQgb25seSBiZSB1cGRhdGVkIGlmIHllYXIgb3IgbW9udGggY2hhbmdlcywgbm90IGp1c3QgdGltZVxuICAgIGlmIChuZXdEYXRlUGFydHMueWVhciAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5tb250aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZS50b0RhdGUoKSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBuZXdEYXRlLmZvcm1hdChkYkZvcm1hdCkgOiBuZXdEYXRlLnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgLy8gVXBkYXRlIGluZGl2aWR1YWwgaW5wdXQgZmllbGRzXG4gICAgaWYgKG5ld0RhdGVQYXJ0cy55ZWFyICE9PSB1bmRlZmluZWQpIHNldFllYXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLnllYXIpKTtcbiAgICBpZiAoaGFzVGltZVByZWNpc2lvbikge1xuICAgICAgaWYgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQpIHNldEhvdXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLmhvdXIpLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XG4gICAgICBpZiAobmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkKSBzZXRNaW51dGVWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLm1pbnV0ZSkucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICAgIGlmIChuZXdEYXRlUGFydHMuc2Vjb25kICE9PSB1bmRlZmluZWQpIHNldFNlY29uZFZhbHVlKFN0cmluZyhuZXdEYXRlUGFydHMuc2Vjb25kKS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIH1cbiAgfTtcblxuICAvLyBIYW5kbGUgbW9udGggc2VsZWN0aW9uIGNoYW5nZVxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbW9udGhJbmRleCA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IG1vbnRoOiBtb250aEluZGV4IH0pO1xuICB9O1xuXG4gIC8vIEhhbmRsZSB5ZWFyIGlucHV0IGNoYW5nZVxuICBjb25zdCBoYW5kbGVZZWFyQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgbmV3WWVhclN0ciA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFllYXJWYWx1ZShuZXdZZWFyU3RyKTtcbiAgICBpZiAoL15cXGR7MSw0fSQvLnRlc3QobmV3WWVhclN0cikpIHtcbiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChuZXdZZWFyU3RyKTtcbiAgICAgIGlmIChuZXdZZWFyU3RyLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IHllYXIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRpbWVDaGFuZ2UgPSAocGFydDogXCJob3VyXCIgfCBcIm1pbnV0ZVwiIHwgXCJzZWNvbmRcIiwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obnVtZXJpY1ZhbHVlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3SG91ciA9IHBhcnQgPT09IFwiaG91clwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQoaG91clZhbHVlKTtcbiAgICBjb25zdCBuZXdNaW51dGUgPSBwYXJ0ID09PSBcIm1pbnV0ZVwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQobWludXRlVmFsdWUpO1xuICAgIGNvbnN0IG5ld1NlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgPyBudW1lcmljVmFsdWUgOiBwYXJzZUludChzZWNvbmRWYWx1ZSk7XG5cbiAgICBpZiAocGFydCA9PT0gXCJob3VyXCIpIHNldEhvdXJWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcIm1pbnV0ZVwiKSBzZXRNaW51dGVWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcInNlY29uZFwiKSBzZXRTZWNvbmRWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuXG4gICAgLy8gVXBkYXRlIG9ubHkgaWYgdGhlIHZhbHVlIGlzIGEgY29tcGxldGUgbnVtYmVyIGZvciB0aGF0IHBhcnRcbiAgICBjb25zdCBpc0NvbXBsZXRlSG91ciA9IHBhcnQgPT09IFwiaG91clwiICYmIHZhbHVlLmxlbmd0aCA+PSAxICYmIG51bWVyaWNWYWx1ZSA+PSAwICYmIG51bWVyaWNWYWx1ZSA8PSAyMztcbiAgICBjb25zdCBpc0NvbXBsZXRlTWludXRlID0gcGFydCA9PT0gXCJtaW51dGVcIiAmJiB2YWx1ZS5sZW5ndGggPj0gMSAmJiBudW1lcmljVmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPD0gNTk7XG4gICAgY29uc3QgaXNDb21wbGV0ZVNlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgJiYgdmFsdWUubGVuZ3RoID49IDEgJiYgbnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDw9IDU5O1xuXG4gICAgaWYgKFxuICAgICAgKHBhcnQgPT09IFwiaG91clwiICYmIGlzQ29tcGxldGVIb3VyKSB8fFxuICAgICAgKHBhcnQgPT09IFwibWludXRlXCIgJiYgaXNDb21wbGV0ZU1pbnV0ZSkgfHxcbiAgICAgIChwYXJ0ID09PSBcInNlY29uZFwiICYmIGlzQ29tcGxldGVTZWNvbmQpXG4gICAgKSB7XG4gICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IGhvdXI6IG5ld0hvdXIsIG1pbnV0ZTogbmV3TWludXRlLCBzZWNvbmQ6IG5ld1NlY29uZCB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIHllYXIgdmFsdWUgd2hlbiBzZWxlY3RlZERhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZERhdGUpIHtcbiAgICAgIGNvbnN0IGRqc0RhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgICAgc2V0WWVhclZhbHVlKGRqc0RhdGUueWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgc2V0SG91clZhbHVlKGRqc0RhdGUuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgICBzZXRNaW51dGVWYWx1ZShkanNEYXRlLmZvcm1hdChcIm1tXCIpKTtcbiAgICAgICAgc2V0U2Vjb25kVmFsdWUoZGpzRGF0ZS5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VsZWN0ZWREYXRlLCBoYXNUaW1lUHJlY2lzaW9uXSk7XG5cbiAgLy8gVXBkYXRlIG1vbnRoIGFuZCB5ZWFyIHdoZW4gY2FsZW5kYXIgbW9udGggY2hhbmdlcyAoZS5nLiBieSBhcnJvdyBuYXZpZ2F0aW9uIGluIGNhbGVuZGFyKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50TW9udGgpIHtcbiAgICAgIC8vIERvIG5vdCB1cGRhdGUgeWVhclZhbHVlIGlmIHNlbGVjdGVkRGF0ZSBpcyBwcmVzZW50LCBhcyBpdCdzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHllYXJWYWx1ZVxuICAgICAgaWYgKCFzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgc2V0WWVhclZhbHVlKGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2N1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1wci1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMCBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1tYi0xIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17Y3VycmVudE1vbnRoVmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZU1vbnRoQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk1vbnRoXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7bW9udGhzLm1hcCgobW9udGgpID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e21vbnRoLnZhbHVlfSB2YWx1ZT17bW9udGgudmFsdWV9PlxuICAgICAgICAgICAgICAgICAge21vbnRoLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0yMCBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17eWVhclZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVllYXJDaGFuZ2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlllYXJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxEYXlQaWNrZXJXcmFwcGVyXG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0ZX1cbiAgICAgICAgICBtb250aD17Y3VycmVudE1vbnRofVxuICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVDYWxlbmRhclNlbGVjdH1cbiAgICAgICAgICBvbk1vbnRoQ2hhbmdlPXtzZXRDdXJyZW50TW9udGh9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICB7aGFzVGltZVByZWNpc2lvbiAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LXN0YXJ0IHBzLWdhcC0xIHBzLW10LTFcIj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2hvdXJWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwiaG91clwiLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIlxuICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgIG1heD17MjN9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17Mn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e21pbnV0ZVZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRpbWVDaGFuZ2UoXCJtaW51dGVcIiwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tXCJcbiAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICBtYXg9ezU5fVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtzZWNvbmRWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwic2Vjb25kXCIsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJzc1wiXG4gICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgbWF4PXs1OX1cbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+e2Zvcm1hdHRlZERhdGV9PC9jb2RlPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgICBvblNldE5vdz17aGFuZGxlU2V0Tm93fVxuICAgICAgICBzaG93U2V0Tm93PXt0cnVlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuLy8gQSB3cmFwcGVyIGNvbXBvbmVudCB0byBlbnN1cmUgcHJvcGVyIHByb3BzIGFyZSBwYXNzZWQgdG8gRGF5UGlja2VyXG5mdW5jdGlvbiBEYXlQaWNrZXJXcmFwcGVyKHtcbiAgc2VsZWN0ZWQsXG4gIG1vbnRoLFxuICBvblNlbGVjdCxcbiAgb25Nb250aENoYW5nZSxcbiAgZGlzYWJsZWQsXG59OiB7XG4gIHNlbGVjdGVkPzogRGF0ZTtcbiAgbW9udGg6IERhdGU7XG4gIG9uU2VsZWN0OiAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbiAgb25Nb250aENoYW5nZTogKGRhdGU6IERhdGUpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q2FsZW5kYXJcbiAgICAgIG1vZGU9XCJzaW5nbGVcIlxuICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgbW9udGg9e21vbnRofVxuICAgICAgb25Nb250aENoYW5nZT17b25Nb250aENoYW5nZX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwiZHJvcGRvd25cIlxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgRGF5UGlja2VyIH0gZnJvbSBcInJlYWN0LWRheS1waWNrZXJcIjtcblxuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEYXlQaWNrZXI+ICYge1xuICBjYXB0aW9uTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUNsYXNzTmFtZT86IHN0cmluZztcbiAgZGF5QnV0dG9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkcm9wZG93bnNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2FwdGlvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhHcmlkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aHNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZUVuZENsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VNaWRkbGVDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlU3RhcnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdGVkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZENsYXNzTmFtZT86IHN0cmluZztcbiAgaGlkZGVuQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBvdXRzaWRlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB0b2RheUNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0VHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIENhbGVuZGFyKHsgY2xhc3NOYW1lLCBjbGFzc05hbWVzLCBzaG93T3V0c2lkZURheXMgPSB0cnVlLCBoaWRlTmF2aWdhdGlvbiwgLi4ucHJvcHMgfTogQ2FsZW5kYXJQcm9wcykge1xuICBjb25zdCBfbW9udGhzQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93XCIsIHByb3BzLm1vbnRoc0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9tb250aENhcHRpb25DbGFzc05hbWUgPSBjbihcInJlbGF0aXZlIGZsZXggaC03IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLCBwcm9wcy5tb250aENhcHRpb25DbGFzc05hbWUpO1xuICBjb25zdCBfZHJvcGRvd25zQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIixcbiAgICBoaWRlTmF2aWdhdGlvbiA/IFwicHMtdy1mdWxsXCIgOiBcInBzLWhpZGRlblwiLFxuICAgIHByb3BzLmRyb3Bkb3duc0NsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2Zvb3RlckNsYXNzTmFtZSA9IGNuKFwicHMtcHQtMyBwcy10ZXh0LXhzXCIsIHByb3BzLmZvb3RlckNsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5c0NsYXNzTmFtZSA9IGNuKFwicHMtZmxleFwiLCBwcm9wcy53ZWVrZGF5c0NsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5Q2xhc3NOYW1lID0gY24oXCJwcy13LTkgcHMtdGV4dC14cyBwcy1mb250LW5vcm1hbCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgcHJvcHMud2Vla2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUgPSBjbihcInBzLXRydW5jYXRlIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIiwgcHJvcHMuY2FwdGlvbkxhYmVsQ2xhc3NOYW1lKTtcblxuICBjb25zdCBfbW9udGhHcmlkQ2xhc3NOYW1lID0gY24oXCJwcy1teC1hdXRvIHBzLW10LTRcIiwgcHJvcHMubW9udGhHcmlkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3dlZWtDbGFzc05hbWUgPSBjbihcInBzLW10LTAgcHMtZmxleCBwcy13LW1heCBwcy1pdGVtcy1zdGFydFwiLCBwcm9wcy53ZWVrQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2RheUNsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1zaXplLTkgcHMtZmxleC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtdGV4dC14c1wiLFxuICAgIHByb3BzLmRheUNsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2RheUJ1dHRvbkNsYXNzTmFtZSA9IGNuKFxuICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJnaG9zdFwiIH0pLFxuICAgIFwicHMtc2l6ZS04IHBzLXJvdW5kZWQtbWQgcHMtcC0wIHBzLWZvbnQtbm9ybWFsIHBzLXRleHQteHMgcHMtdHJhbnNpdGlvbi1ub25lIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0xMDBcIixcbiAgICBwcm9wcy5kYXlCdXR0b25DbGFzc05hbWUsXG4gICk7XG5cbiAgY29uc3QgYnV0dG9uUmFuZ2VDbGFzc05hbWUgPVxuICAgIFwicHMtYmctYWNjZW50IHBzLVsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCI7XG4gIGNvbnN0IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1zLW1kXCIsIHByb3BzLnJhbmdlU3RhcnRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VFbmRDbGFzc05hbWUgPSBjbihidXR0b25SYW5nZUNsYXNzTmFtZSwgXCJwcy1yb3VuZGVkLWUtbWRcIiwgcHJvcHMucmFuZ2VFbmRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VNaWRkbGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWJnLWFjY2VudCAhcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTohcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06aG92ZXI6cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTpob3ZlcjohcHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMucmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9zZWxlY3RlZENsYXNzTmFtZSA9IGNuKFxuICAgIFwiWyY+YnV0dG9uXTpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICBcIlsmW2FyaWEtc2VsZWN0ZWRdPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMuc2VsZWN0ZWRDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF90b2RheUNsYXNzTmFtZSA9IGNuKFwiWyY+YnV0dG9uXTpwcy1mb250LWJvbGQgWyY+YnV0dG9uXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsIHByb3BzLnRvZGF5Q2xhc3NOYW1lKTtcbiAgY29uc3QgX291dHNpZGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwIGFyaWEtc2VsZWN0ZWQ6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0zMFwiLFxuICAgIHByb3BzLm91dHNpZGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kaXNhYmxlZENsYXNzTmFtZSA9IGNuKFwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLW9wYWNpdHktNTBcIiwgcHJvcHMuZGlzYWJsZWRDbGFzc05hbWUpO1xuICBjb25zdCBfaGlkZGVuQ2xhc3NOYW1lID0gY24oXCJwcy1pbnZpc2libGUgcHMtZmxleC0xXCIsIHByb3BzLmhpZGRlbkNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGF5UGlja2VyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIGNhcHRpb25MYXlvdXQ9XCJsYWJlbFwiXG4gICAgICBoaWRlTmF2aWdhdGlvblxuICAgICAgc2hvd091dHNpZGVEYXlzPXtzaG93T3V0c2lkZURheXN9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtcC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgIGNhcHRpb25fbGFiZWw6IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUsXG4gICAgICAgIGRheTogX2RheUNsYXNzTmFtZSxcbiAgICAgICAgZGF5X2J1dHRvbjogX2RheUJ1dHRvbkNsYXNzTmFtZSxcbiAgICAgICAgZHJvcGRvd25zOiBfZHJvcGRvd25zQ2xhc3NOYW1lLFxuICAgICAgICBmb290ZXI6IF9mb290ZXJDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoOiBwcm9wcy5tb250aENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfY2FwdGlvbjogX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfZ3JpZDogX21vbnRoR3JpZENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhzOiBfbW9udGhzQ2xhc3NOYW1lLFxuICAgICAgICB3ZWVrOiBfd2Vla0NsYXNzTmFtZSxcbiAgICAgICAgd2Vla2RheTogX3dlZWtkYXlDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXlzOiBfd2Vla2RheXNDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX2VuZDogX3JhbmdlRW5kQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9taWRkbGU6IF9yYW5nZU1pZGRsZUNsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2Vfc3RhcnQ6IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lLFxuICAgICAgICBzZWxlY3RlZDogX3NlbGVjdGVkQ2xhc3NOYW1lLFxuICAgICAgICBkaXNhYmxlZDogX2Rpc2FibGVkQ2xhc3NOYW1lLFxuICAgICAgICBoaWRkZW46IF9oaWRkZW5DbGFzc05hbWUsXG4gICAgICAgIG91dHNpZGU6IF9vdXRzaWRlQ2xhc3NOYW1lLFxuICAgICAgICB0b2RheTogX3RvZGF5Q2xhc3NOYW1lLFxuICAgICAgICBuYXY6IFwicHMtaGlkZGVuXCIsXG4gICAgICAgIC4uLmNsYXNzTmFtZXMsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5DYWxlbmRhci5kaXNwbGF5TmFtZSA9IFwiQ2FsZW5kYXJcIjtcblxuZXhwb3J0IHsgQ2FsZW5kYXIgfTtcbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSwgc2V0VmFsdWUgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBiYWRnZVZhcmlhbnRzIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bUlucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudW1JbnB1dChwcm9wczogRW51bUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgY29sdW1uLCB2YWx1ZSwgb3B0aW9ucyA9IFtdLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IChvcHRpb246IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoY3VycmVudFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbCwgdmFsdWVdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTsgLy8gUmVzZXQgbnVsbCBzdGF0ZSBhcyB3ZWxsXG4gIH07XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtZm9udC1tb25vIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXB4LTIgcHMtcHktMCBwcy13LWZ1bGwgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAge2N1cnJlbnRWYWx1ZX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWZsZXgtd3JhcCBwcy1nYXAtMiBwcy1wLTIgcHMtbWluLXctW3ZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aCldIHBzLW1heC13LVs1MDBweF0gdy1mdWxsIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtb3ZlcmZsb3cteS1zY3JvbGwgcHMtbWF4LWgtMzJcIj5cbiAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrZXk9e29wdGlvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtiYWRnZVZhcmlhbnRzKHsgdmFyaWFudDogb3B0aW9uID09PSBjdXJyZW50VmFsdWUgPyBcImRlZmF1bHRcIiA6IFwib3V0bGluZVwiIH0pfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ufVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBKc29uSW5wdXQocHJvcHM6IEpzb25JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBcIlwiIDogSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGpzb25WYWx1ZSA9IGN1cnJlbnRWYWx1ZSA9PT0gXCJcIiA/IG51bGwgOiAoSlNPTi5wYXJzZShjdXJyZW50VmFsdWUpIGFzIG9iamVjdCk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoanNvblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQoanNvblZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIHJvd3M9ezV9XG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1iYXNlIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0lucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOdW1lcmljSW5wdXQocHJvcHM6IE51bWVyaWNJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4odmFsdWUgPT09IG51bGwgPyBcIlwiIDogU3RyaW5nKHZhbHVlKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0byBudW1iZXJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQobnVtZXJpY1ZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwibnVtZXJpYy1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBOdW1lcmljXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBpbnB1dE1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBwYXR0ZXJuPVwiXFxkKlwiXG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICBsYW5nPVwiZW5fRU5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3SW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXdJbnB1dChwcm9wczogUmF3SW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVJbnB1dChwcm9wczogVGltZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGltZSB2YWx1ZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBtYW5uZXJcbiAgY29uc3QgZm9ybWF0dGVkVGltZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWlucHV0VmFsdWUuaW5jbHVkZXMoXCI6XCIpKSByZXR1cm4gaW5wdXRWYWx1ZTtcblxuICAgICAgY29uc3QgaGFzVGltZXpvbmUgPSAvWystXVxcZHsyfSg6XFxkezJ9KT8kLy50ZXN0KGlucHV0VmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGAyMDAwLTAxLTAxICR7aW5wdXRWYWx1ZX1gKTtcbiAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoXCJoOm1tIEFcIikgKyAoaGFzVGltZXpvbmUgPyBgICgke2RhdGUuZm9ybWF0KFwiWlwiKX0pYCA6IFwiXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lUmVnZXggPSAvKFxcZHsxLDJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlxcZCspPyhbKy1dXFxkezJ9KD86OlxcZHsyfSk/KT8vO1xuICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dFZhbHVlLm1hdGNoKHRpbWVSZWdleCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSBwYXJzZUludChtYXRjaFsxXSB8fCBcIjEyXCIsIDEwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IG1hdGNoWzJdIHx8IFwiMDBcIjtcbiAgICAgICAgY29uc3QgdHpPZmZzZXQgPSBtYXRjaFs0XSB8fCBcIlwiO1xuICAgICAgICBjb25zdCBwZXJpb2QgPSBob3VycyA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjtcbiAgICAgICAgY29uc3QgaG91cjEyID0gaG91cnMgJSAxMiA9PT0gMCA/IDEyIDogaG91cnMgJSAxMjtcblxuICAgICAgICByZXR1cm4gYCR7aG91cjEyfToke21pbnV0ZXN9ICR7cGVyaW9kfSR7dHpPZmZzZXQgPyBgICgke3R6T2Zmc2V0fSlgIDogXCJcIn1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cbiAgfSwgW2lucHV0VmFsdWVdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Rm9ybWF0dGVkIHZhbHVlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtdGV4dC1mb3JlZ3JvdW5kXCI+e2Zvcm1hdHRlZFRpbWV9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93UmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdXVpZCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIExpbmsocHJvcHM6IHsgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4gfSA9IHByb3BzO1xuICBjb25zdCB7IGZrU2NoZW1hLCBma1RhYmxlLCBma0NvbHVtbiB9ID0gY29sdW1uO1xuICBjb25zdCB7IGhhbmRsZVNjaGVtYUNoYW5nZSwgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IHsgc2V0QXBwbGllZEZpbHRlciB9ID0gdXNlRmlsdGVyaW5nKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuXG4gIGlmIChma1NjaGVtYSAhPT0gbnVsbCAmJiBma1RhYmxlICE9PSBudWxsICYmIGZrQ29sdW1uICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFibGUgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbZmtTY2hlbWFdPy50YWJsZXNbZmtUYWJsZV07XG5cbiAgICBpZiAodGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHNpemU9e1wieHNcIn1cbiAgICAgICAgICB2YXJpYW50PXtcIm91dGxpbmVcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhhbmRsZVNjaGVtYUNoYW5nZShma1NjaGVtYSk7XG4gICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKHtcbiAgICAgICAgICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICAgICAgY29sdW1uOiBma0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBjZWxsLmdldFZhbHVlKCksXG4gICAgICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBcnJvd1JpZ2h0IHNpemU9ezEyfSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsga2V5TWFwLCB1c2VRdWVyeVN0YXRlLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcbmltcG9ydCB7IElOSVRJQUxfREFUQV9VUERBVEVEX0FULCB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBIb29rIHRvIGVuY2Fwc3VsYXRlIGFsbCBsb2dpYyBmb3IgbWFuYWdpbmcgdGhlIGFjdGl2ZSB0YWJsZSBzZWxlY3Rpb24uXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zLCBkZWZhdWx0IHNlbGVjdGlvbiwgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWEsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICBjb25zdCBbY3VycmVudFZpZXdWYWx1ZV0gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTsgLy8gUmVhZCB0aGUgY3VycmVudCB2aWV3XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRWaWV3XSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJ2aWV3XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcblxuICAvLyBHZXQgYWxsIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hIGZyb20gVVJMIG9yIGRlZmF1bHRcbiAgY29uc3QgdGFibGVzOiBUYWJsZVtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgLy8gQWx3YXlzIHVzZSB0aGUgYWN0aXZlU2NoZW1hIGZyb20gY29udGV4dFxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hc1thY3RpdmVTY2hlbWFdPy50YWJsZXMgfHwge30pO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzLCBhY3RpdmVTY2hlbWFdKTtcblxuICAvLyBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIHRhYmxlcyBhY3Jvc3MgYWxsIHNjaGVtYXNcbiAgY29uc3QgdG90YWxUYWJsZUNvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKS5yZWR1Y2UoKHN1bSwgc2NoZW1hKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgT2JqZWN0LmtleXMoc2NoZW1hLnRhYmxlcykubGVuZ3RoO1xuICAgIH0sIDApO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzXSk7XG5cbiAgY29uc3QgW2ZpcnN0VGFibGVdID0gdGFibGVzO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSA9PT0gXCJzY2hlbWFcIikge1xuICAgICAgcmV0dXJuOyAvLyBEbyBub3QgaW50ZXJmZXJlIGlmIG9uIHNjaGVtYSB2aWV3XG4gICAgfVxuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRVUkxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpKTtcbiAgICBjb25zdCB2aWV3UGFyYW1FeGlzdHMgPSBjdXJyZW50VVJMUGFyYW1zLmhhcyhcInZpZXdcIik7XG5cbiAgICAvLyBTY2VuYXJpbyAxOiBVUkwgaGFzIHRhYmxlIGFuZCBzY2hlbWEsIGFuZCBVUkwncyBzY2hlbWEgbWF0Y2hlcyBjb250ZXh0J3MgYWN0aXZlU2NoZW1hLlxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVBbmRTY2hlbWEuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgIGNvbnN0IHRhYmxlRnJvbVBhcmFtID0gdGFibGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGFibGVBbmRTY2hlbWEudGFibGUpOyAvLyB0YWJsZXMgYXJlIGFscmVhZHkgZmlsdGVyZWQgYnkgYWN0aXZlU2NoZW1hXG5cbiAgICAgIGlmICh0YWJsZUZyb21QYXJhbSkge1xuICAgICAgICBpZiAoYWN0aXZlVGFibGUgIT09IHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pOyAvLyBTeW5jIGNvbnRleHQgYWN0aXZlVGFibGVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpOyAvLyBFbnN1cmUgdmlldz10YWJsZSBpZiBtaXNzaW5nXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuOyAvLyBUYWJsZSBzdWNjZXNzZnVsbHkgc3luY2VkIGZyb20gVVJMIGZvciB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICB9XG4gICAgICAvLyBJZiB0YWJsZSBzcGVjaWZpZWQgaW4gVVJMIG5vdCBmb3VuZCBpbiBjdXJyZW50IGFjdGl2ZVNjaGVtYSdzIHRhYmxlcywgZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQuXG4gICAgfVxuXG4gICAgLy8gU2NlbmFyaW8gMjogRGVmYXVsdGluZyBsb2dpYyBvciBjb250ZXh0L1VSTCBzY2hlbWEgbWlzbWF0Y2ggcmVxdWlyaW5nIHJlc2V0LlxuICAgIC8vIFRoaXMgY292ZXJzOlxuICAgIC8vIC0gTm8gdGFibGUgaW4gVVJMIGZvciB0aGUgYWN0aXZlU2NoZW1hLlxuICAgIC8vIC0gVVJMIHNjaGVtYSBkaWZmZXJzIGZyb20gY29udGV4dCBhY3RpdmVTY2hlbWEuXG4gICAgLy8gLSBDb250ZXh0IGFjdGl2ZVRhYmxlIGlzIG5vdCBzZXQgb3IgaXMgbm90IHZhbGlkIGZvciB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgaWYgKHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiBjdXJyZW50IGFjdGl2ZVNjaGVtYSBoYXMgYW55IHRhYmxlc1xuICAgICAgY29uc3QgaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEgPVxuICAgICAgICBhY3RpdmVUYWJsZSAmJiBhY3RpdmVUYWJsZS5zY2hlbWEgPT09IGFjdGl2ZVNjaGVtYSAmJiB0YWJsZXMuc29tZSgodCkgPT4gdC5uYW1lID09PSBhY3RpdmVUYWJsZS5uYW1lKTtcblxuICAgICAgaWYgKCFpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSAmJiBmaXJzdFRhYmxlKSB7XG4gICAgICAgIC8vIENvbnRleHQgYWN0aXZlVGFibGUgaXMgbm90IHNldCwgb3IgaXMgZm9yIGEgZGlmZmVyZW50IHNjaGVtYSwgb3Igbm90IGluIGN1cnJlbnQgc2NoZW1hJ3MgdGFibGVzLlxuICAgICAgICAvLyBTZXQgdG8gdGhlIGZpcnN0IHRhYmxlIG9mIHRoZSBjdXJyZW50IGFjdGl2ZVNjaGVtYS5cbiAgICAgICAgc2V0QWN0aXZlVGFibGUoZmlyc3RUYWJsZSk7IC8vIFVwZGF0ZSBjb250ZXh0XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogZmlyc3RUYWJsZS5uYW1lLCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KTsgLy8gVXBkYXRlIFVSTCBmb3IgdGFibGUgYW5kIHNjaGVtYVxuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTsgLy8gRXhwbGljaXRseSBzZXQgdmlldz10YWJsZSB3aGVuIGRlZmF1bHRpbmcgVVJMXG4gICAgICB9IGVsc2UgaWYgKGlzQ29udGV4dFRhYmxlVmFsaWRGb3JDdXJyZW50U2NoZW1hICYmICF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgLy8gQ29udGV4dCBhY3RpdmVUYWJsZSBpcyB2YWxpZCBmb3IgY3VycmVudCBzY2hlbWEsIGJ1dCBVUkwgaXMgbWlzc2luZyB2aWV3LiBBZGQgaXQuXG4gICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgfSBlbHNlIGlmICghZmlyc3RUYWJsZSAmJiB0YWJsZUFuZFNjaGVtYT8udGFibGUpIHtcbiAgICAgICAgLy8gVGhpcyBjYXNlIHNob3VsZCBiZSByYXJlIGlmIHRhYmxlcy5sZW5ndGggPiAwLCBtZWFucyBmaXJzdFRhYmxlIGlzIG51bGwgYnV0IFVSTCBoYXMgYSB0YWJsZS5cbiAgICAgICAgLy8gVGhpcyBpbXBsaWVzIGFuIGluY29uc2lzdGVuY3k7IHNhZmVyIHRvIGNsZWFyIFVSTCB0YWJsZSBmb3IgdGhpcyBzY2hlbWEuXG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbnVsbCwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7XG4gICAgICAgIGlmICghdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgICAgLy8gU3RpbGwgZW5zdXJlIHZpZXcgcGFyYW1cbiAgICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgIC8vIENhdGNoLWFsbCBpZiBmb3Igc29tZSByZWFzb24gdmlldyBpcyBzdGlsbCBtaXNzaW5nIGFuZCB3ZSBoYXZlIHRhYmxlc1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gdGFibGVzIGluIHRoZSBjdXJyZW50IGFjdGl2ZVNjaGVtYS5cbiAgICAgIGlmIChhY3RpdmVUYWJsZSkge1xuICAgICAgICAvLyBJZiBjb250ZXh0IHN0aWxsIGhvbGRzIGFuIGFjdGl2ZSB0YWJsZSAoZS5nLiBmcm9tIGEgcHJldmlvdXMgc2NoZW1hKVxuICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTsgLy8gQ2xlYXIgaXRcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUpIHtcbiAgICAgICAgLy8gSWYgVVJMIHN0aWxsIGhhcyBhIHRhYmxlIHBhcmFtIGZvciB0aGlzIChub3cgZW1wdHkpIHNjaGVtYVxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG51bGwsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pOyAvLyBDbGVhciBpdCBmcm9tIFVSTFxuICAgICAgfVxuICAgICAgLy8gRXZlbiBpZiBubyB0YWJsZXMsIGVuc3VyZSB2aWV3IHBhcmFtZXRlciBpcyBwcmVzZW50IChlLmcuLCB2aWV3PXRhYmxlIG9yIGEgc3BlY2lmaWMgXCJub190YWJsZXNfdmlld1wiKVxuICAgICAgLy8gRm9yIG5vdywgY29uc2lzdGVudGx5IHNldHRpbmcgdG8gXCJ0YWJsZVwiLiBTdHVkaW9Db250ZW50IHdpbGwgZGVjaWRlIGFjdHVhbCByZW5kZXJpbmcuXG4gICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmcsXG4gICAgdGFibGVBbmRTY2hlbWEsXG4gICAgdGFibGVzLFxuICAgIGZpcnN0VGFibGUsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgYWN0aXZlU2NoZW1hLFxuICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgIHNldFRhYmxlQW5kU2NoZW1hLFxuICAgIHNldFZpZXcsIC8vIEFkZGVkIHNldFZpZXcgdG8gZGVwZW5kZW5jeSBhcnJheVxuICAgIGN1cnJlbnRWaWV3VmFsdWUsIC8vIEFkZGVkIGN1cnJlbnRWaWV3VmFsdWUgdG8gZGVwZW5kZW5jeSBhcnJheVxuICBdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICAvLyBFbnN1cmUgYm90aCB0YWJsZSBhbmQgc2NoZW1hIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIFVSTFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHtcbiAgICAgICAgICB0YWJsZTogbmV3VGFibGUubmFtZSxcbiAgICAgICAgICBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtLCBzZXRWaWV3XSxcbiAgKTtcblxuICAvLyBIYW5kbGUgc2NoZW1hIGNoYW5nZVxuICBjb25zdCBoYW5kbGVTY2hlbWFDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3U2NoZW1hOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChuZXdTY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTsgLy8gQ2xlYXIgYWN0aXZlIHRhYmxlIHdoZW4gc2NoZW1hIGNoYW5nZXNcbiAgICAgICAgc2V0QWN0aXZlU2NoZW1hKG5ld1NjaGVtYSk7IC8vIFVwZGF0ZSBjb250ZXh0IGFjdGl2ZSBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBudWxsLCBzY2hlbWE6IG5ld1NjaGVtYSB9KTsgLy8gVXBkYXRlIFVSTCBmb3Igc2NoZW1hLCBjbGVhciB0YWJsZVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHZpZXcgdG8gXCJ0YWJsZVwiIGlmIG5vdCBjdXJyZW50bHkgb24gXCJzY2hlbWFcIiB2aWV3XG4gICAgICAgIGlmIChjdXJyZW50Vmlld1ZhbHVlICE9PSBcInNjaGVtYVwiKSB7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgY3VycmVudFZpZXdWYWx1ZSBpcyBcInNjaGVtYVwiLCBpdCByZW1haW5zIFwic2NoZW1hXCJcblxuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICAgICAgICB2b2lkIHNldFBhZ2VQYXJhbShudWxsKTtcbiAgICAgICAgdm9pZCBzZXRTb3J0UGFyYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICBzZXRBY3RpdmVTY2hlbWEsXG4gICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgIHNldFRhYmxlQW5kU2NoZW1hLFxuICAgICAgc2V0UGFnZVBhcmFtLFxuICAgICAgc2V0U29ydFBhcmFtLFxuICAgICAgc2V0VmlldyxcbiAgICAgIGN1cnJlbnRWaWV3VmFsdWUsIC8vIEFkZGVkIGN1cnJlbnRWaWV3VmFsdWUgdG8gZGVwZW5kZW5jeSBhcnJheVxuICAgIF0sXG4gICk7XG5cbiAgLy8gU3luYyBVUkwgc2NoZW1hIHBhcmFtZXRlciB3aXRoIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBPbmx5IHVwZGF0ZSBVUkwgaWYgdGhlIHNjaGVtYSBmcm9tIFVSTCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWN0aXZlU2NoZW1hXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSAmJiAhaXNMb2FkaW5nKSB7XG4gICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KSk7XG4gICAgfVxuICB9LCBbYWN0aXZlU2NoZW1hLCB0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYSwgaXNMb2FkaW5nXSk7XG5cbiAgLy8gU3luYyBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aXRoIFVSTCBzY2hlbWEgcGFyYW1ldGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aGVuIFVSTCBzY2hlbWEgcGFyYW0gY2hhbmdlc1xuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBzZXRBY3RpdmVTY2hlbWEodGFibGVBbmRTY2hlbWEuc2NoZW1hKTtcbiAgICB9XG4gIH0sIFt0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBhY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaGFuZGxlVGFibGVDaGFuZ2UsXG4gICAgaGFuZGxlU2NoZW1hQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uIH0pfVxuICAgICAgICAgICAgbGlua0NvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuXG5pbnRlcmZhY2UgU3R1ZGlvSGVhZGVyUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZW5kQ29udGVudD86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0hlYWRlcihwcm9wczogU3R1ZGlvSGVhZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGwgcHMtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3RvZ2dsZU5hdmlnYXRpb259PlxuICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7cHJvcHMuZW5kQ29udGVudH1cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIEJhc2ljVmlldygpIHtcbiAgcmV0dXJuIDxkaXY+QmFzaWNWaWV3PC9kaXY+O1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxudHlwZSBOYXZpZ2F0aW9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHsgY2xhc3NOYW1lIH06IE5hdmlnYXRpb25Qcm9wcykge1xuICAvLyBVc2UgdGhlIGN1c3RvbSBob29rIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVF1ZXJ5U3RhdGUoXCJ2aWV3XCIpO1xuICAvLyBQcm92aWRlIHBhcnNlL3NlcmlhbGl6ZSBmb3IgdGFibGUgYW5kIHNjaGVtYSB0byBoYW5kbGUgbnVsbCBjb3JyZWN0bHlcbiAgY29uc3QgWywgc2V0VXJsVGFibGVdID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInRhYmxlXCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLCAvLyBTZXJpYWxpemUgbnVsbCB0byBlbXB0eSBzdHJpbmcsIG51cXMgbWlnaHQgcmVtb3ZlIHBhcmFtXG4gIH0pO1xuICBjb25zdCBbLCBzZXRVcmxTY2hlbWFdID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNjaGVtYVwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIiwgLy8gU2VyaWFsaXplIG51bGwgdG8gZW1wdHkgc3RyaW5nXG4gIH0pO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgLz5cblxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJTdHVkaW9cIj5cbiAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICBpc0FjdGl2ZT17dmlldyA9PT0gXCJzY2hlbWFcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHNldFVybFRhYmxlKG51bGwpO1xuICAgICAgICAgICAgdm9pZCBzZXRVcmxTY2hlbWEobnVsbCk7XG4gICAgICAgICAgICB2b2lkIHNldFZpZXcoXCJzY2hlbWFcIik7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxhIGhyZWY9e2Ajdmlldz1zY2hlbWFgfT5TY2hlbWEgdmlzdWFsaXNhdGlvbjwvYT5cbiAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG5cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiVGFibGVzXCI+XG4gICAgICAgIHt0YWJsZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICB0YWJsZXMubWFwKCh0YWJsZSkgPT4gKFxuICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgICAgICBrZXk9e2Ake3RhYmxlLnNjaGVtYX0tJHt0YWJsZS5uYW1lfWB9XG4gICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVRhYmxlID09PSB0YWJsZSAmJiB2aWV3ID09PSBcInRhYmxlXCJ9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfSZ2aWV3PXRhYmxlYH0+e3RhYmxlLm5hbWV9PC9hPlxuICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IGlzTG9hZGluZyA/IChcbiAgICAgICAgICBBcnJheSg0KVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0ga2V5PXtpbmRleH0gd3JhcENoaWxkcmVuSW5TcGFuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtMyBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE5hdmlnYXRpb24uSXRlbT5ObyB0YWJsZXMgZm91bmQ8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgKX1cbiAgICAgIDwvTmF2aWdhdGlvbi5CbG9jaz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQmxvY2sgPSAoeyBjbGFzc05hbWUsIGxhYmVsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICA8VGFibGUyIHNpemU9ezE2fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIiAvPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bVwiPntsYWJlbH08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmF2IGFyaWEtbGFiZWw9e2xhYmVsfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC1weCBwcy1wYi0zIHBzLXAtMlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IEl0ZW0gPSAoe1xuICBjbGFzc05hbWUsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgaXNBY3RpdmUsXG4gIHNpemUsXG4gIGNoaWxkcmVuLFxuICB3cmFwQ2hpbGRyZW5JblNwYW4gPSB0cnVlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIjtcbiAgd3JhcENoaWxkcmVuSW5TcGFuPzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWJ1dHRvblwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBkYXRhLWFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXB5LTEuNSBwcy1weC0yIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtcm91bmRlZC1tZCBwcy1mbGV4IHBzLWdhcC0yIHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3dyYXBDaGlsZHJlbkluU3BhbiA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLXRydW5jYXRlXCI+e2NoaWxkcmVufTwvc3Bhbj4gOiA8PmNoaWxkcmVuPC8+fVxuICAgIDwvQ29tcD5cbiAgKTtcbn07XG5cbmNvbnN0IFNjaGVtYVNlbGVjdG9yID0gKCkgPT4ge1xuICAvLyBHZXQgc2NoZW1hcyBmcm9tIGludHJvc3BlY3Rpb24gYW5kIGFjdGl2ZSBzY2hlbWEgbWFuYWdlbWVudFxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCB7IGFjdGl2ZVNjaGVtYSwgaGFuZGxlU2NoZW1hQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIC8vIEV4dHJhY3Qgc2NoZW1hIG5hbWVzIGZyb20gaW50cm9zcGVjdGlvbiBkYXRhXG4gIGNvbnN0IHNjaGVtYU5hbWVzID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzIHx8IHt9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgIDxTZWxlY3QgdmFsdWU9e2FjdGl2ZVNjaGVtYX0gb25WYWx1ZUNoYW5nZT17aGFuZGxlU2NoZW1hQ2hhbmdlfT5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiIGxhYmVsPVwiU2NoZW1hXCI+XG4gICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHNjaGVtYVwiIC8+XG4gICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAge2lzSW50cm9zcGVjdGlvbkxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxvYWRpbmdcIj5Mb2FkaW5nIHNjaGVtYXMuLi48L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKSA6IHNjaGVtYU5hbWVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICBzY2hlbWFOYW1lcy5tYXAoKHNjaGVtYSkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e3NjaGVtYX0gdmFsdWU9e3NjaGVtYX0gY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgIHtzY2hlbWF9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm8tc2NoZW1hc1wiPk5vIHNjaGVtYXMgZm91bmQ8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgPC9TZWxlY3Q+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuTmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciA9IFNjaGVtYVNlbGVjdG9yO1xuIiwgImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLy8gVHlwZXMgbWF0Y2hpbmcgdGhlIHNjaGVtYSB2aXN1YWxpemVyJ3MgZXhwZWN0ZWQgZm9ybWF0XG5leHBvcnQgdHlwZSBGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGlzUHJpbWFyeT86IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25zaGlwID0ge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhID0ge1xuICB0YWJsZXM6IFRhYmxlW107XG4gIHJlbGF0aW9uc2hpcHM6IFJlbGF0aW9uc2hpcFtdO1xufTtcblxuY29uc3QgTk9fVEFCTEVTX05PREU6IFRhYmxlID0ge1xuICBuYW1lOiBcIk5vIFRhYmxlcyBGb3VuZFwiLFxuICBmaWVsZHM6IFt7IG5hbWU6IFwibWVzc2FnZVwiLCB0eXBlOiBcImluZm9cIiwgaXNSZXF1aXJlZDogdHJ1ZSB9XSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY2hlbWFWaXN1YWxpemF0aW9uKCk6IFNjaGVtYVZpc3VhbGl6YXRpb25EYXRhIHtcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nIHx8ICFpbnRyb3NwZWN0aW9uIHx8ICFhY3RpdmVTY2hlbWEpIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50U2NoZW1hRGF0YSA9IGludHJvc3BlY3Rpb24uc2NoZW1hc1thY3RpdmVTY2hlbWFdO1xuXG4gICAgaWYgKCFjdXJyZW50U2NoZW1hRGF0YSB8fCBPYmplY3Qua2V5cyhjdXJyZW50U2NoZW1hRGF0YS50YWJsZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgdGFibGVzOiBbTk9fVEFCTEVTX05PREVdLCByZWxhdGlvbnNoaXBzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IFtdO1xuICAgIGNvbnN0IHRhYmxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBUYWJsZT4gPSB7fTtcblxuICAgIE9iamVjdC52YWx1ZXMoY3VycmVudFNjaGVtYURhdGEudGFibGVzKS5mb3JFYWNoKCh0YWJsZSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW107XG5cbiAgICAgIE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICB0eXBlOiBjb2x1bW4uZGF0YXR5cGUubmFtZSxcbiAgICAgICAgICBpc1ByaW1hcnk6IGNvbHVtbi5pc0luUHJpbWFyeUtleSxcbiAgICAgICAgICBpc1JlcXVpcmVkOiAhY29sdW1uLm51bGxhYmxlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0YWJsZU9iamVjdDogVGFibGUgPSB7XG4gICAgICAgIG5hbWU6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgIH07XG5cbiAgICAgIHRhYmxlcy5wdXNoKHRhYmxlT2JqZWN0KTtcbiAgICAgIHRhYmxlTWFwW3RhYmxlLm5hbWVdID0gdGFibGVPYmplY3Q7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXSA9IFtdO1xuXG4gICAgdGFibGVzLmZvckVhY2goKHNvdXJjZVRhYmxlKSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW5hbFRhYmxlRGF0YSA9IGN1cnJlbnRTY2hlbWFEYXRhLnRhYmxlc1tzb3VyY2VUYWJsZS5uYW1lXTtcbiAgICAgIGlmIChvcmlnaW5hbFRhYmxlRGF0YSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9yaWdpbmFsVGFibGVEYXRhLmNvbHVtbnMpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGlmIChjb2x1bW4uZmtUYWJsZSAmJiBjb2x1bW4uZmtDb2x1bW4pIHtcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMucHVzaCh7XG4gICAgICAgICAgICAgIGZyb206IGNvbHVtbi5ma1RhYmxlLCAvLyBUaGUgdGFibGUgYmVpbmcgcmVmZXJlbmNlZCAoMSBzaWRlKVxuICAgICAgICAgICAgICB0bzogc291cmNlVGFibGUubmFtZSwgLy8gVGhlIHRhYmxlIHdpdGggdGhlIGZvcmVpZ24ga2V5IChOIHNpZGUpXG4gICAgICAgICAgICAgIHR5cGU6IFwiMTpuXCIsIC8vIEFzc3VtaW5nIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH07XG4gIH0sIFtpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmcsIGFjdGl2ZVNjaGVtYV0pO1xufVxuIiwgImltcG9ydCBcInJlYWN0Zmxvdy9kaXN0L3N0eWxlLmNzc1wiO1xuXG5pbXBvcnQgeyBBbGVydENpcmNsZSwgSGFzaCwgS2V5LCBTcXVhcmVBcnJvd1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgdHlwZSBGQywgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0Rmxvdywge1xuICBhZGRFZGdlLFxuICBCYWNrZ3JvdW5kLFxuICB0eXBlIENvbm5lY3Rpb24sXG4gIENvbm5lY3Rpb25MaW5lVHlwZSxcbiAgQ29udHJvbHMsXG4gIHR5cGUgRWRnZSxcbiAgSGFuZGxlLFxuICBNaW5pTWFwLFxuICB0eXBlIE5vZGUsXG4gIHR5cGUgTm9kZVByb3BzLFxuICB0eXBlIE5vZGVUeXBlcyxcbiAgUG9zaXRpb24sXG4gIHVzZUVkZ2VzU3RhdGUsXG4gIHVzZU5vZGVzU3RhdGUsXG59IGZyb20gXCJyZWFjdGZsb3dcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG50eXBlIEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgaXNQcmltYXJ5PzogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG59O1xuXG50eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbnR5cGUgU2NoZW1hVmlzdWFsaXphdGlvblByb3BzID0ge1xuICB0YWJsZXM6IFRhYmxlW107XG4gIHJlbGF0aW9uc2hpcHM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdO1xufTtcblxuaW50ZXJmYWNlIFRhYmxlTm9kZURhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG59XG5cbmNvbnN0IFRhYmxlTm9kZTogRkM8Tm9kZVByb3BzPFRhYmxlTm9kZURhdGE+PiA9IG1lbW8oKHsgZGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgYWN0aXZlU2NoZW1hIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgaXNOb1RhYmxlc05vZGUgPSBkYXRhLmxhYmVsID09PSBcIk5vIFRhYmxlcyBGb3VuZFwiO1xuXG4gIGNvbnN0IGdldEljb24gPSAoX2ZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZywgaXNQcmltYXJ5PzogYm9vbGVhbikgPT4ge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIFwiTm8gVGFibGVzIEZvdW5kXCIgbm9kZVxuICAgIGlmIChpc05vVGFibGVzTm9kZSAmJiBmaWVsZFR5cGUgPT09IFwiaW5mb1wiKSB7XG4gICAgICByZXR1cm4gPEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPjtcbiAgICB9XG5cbiAgICAvLyBVc2UgS2V5IGljb24gZm9yIHByaW1hcnkga2V5c1xuICAgIGlmIChpc1ByaW1hcnkpIHtcbiAgICAgIHJldHVybiA8S2V5IHNpemU9ezE2fSAvPjtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGljb24gZm9yIG90aGVyIGZpZWxkc1xuICAgIHJldHVybiA8SGFzaCBzaXplPXsxNn0gLz47XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICBpc05vVGFibGVzTm9kZSAmJiBcInBzLWJvcmRlci1vcmFuZ2UtNDAwXCIsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxIYW5kbGUgdHlwZT1cInRhcmdldFwiIHBvc2l0aW9uPXtQb3NpdGlvbi5Ub3B9IHN0eWxlPXt7IG9wYWNpdHk6IDAgfX0gLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXB4LTQgcHMtcHktMyBwcy1ib3JkZXItYiBwcy1mbGV4IHBzLWp1c3RpZnktYmV0d2VlbiBwcy1pdGVtcy1jZW50ZXJcIixcbiAgICAgICAgICBpc05vVGFibGVzTm9kZSAmJiBcInBzLWJnLW9yYW5nZS0xMDAgZGFyazpwcy1iZy1vcmFuZ2UtOTUwIHBzLXRleHQtb3JhbmdlLTcwMCBkYXJrOnBzLXRleHQtb3JhbmdlLTMwMFwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtYm9sZFwiPntkYXRhLmxhYmVsfTwvZGl2PlxuICAgICAgICB7IWlzTm9UYWJsZXNOb2RlICYmIChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YCMvdmlldz10YWJsZSZ0YWJsZT0ke2VuY29kZVVSSUNvbXBvbmVudChkYXRhLmxhYmVsKX0mc2NoZW1hPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGFjdGl2ZVNjaGVtYSl9YH1cbiAgICAgICAgICAgIC8vIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjpwcy10ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgdGl0bGU9e2BPcGVuIHRhYmxlICR7ZGF0YS5sYWJlbH1gfVxuICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNxdWFyZUFycm93UmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXB4LTQgcHMtcHktMlwiPlxuICAgICAgICB7aXNOb1RhYmxlc05vZGUgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS04IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW9yYW5nZS01MDBcIj5cbiAgICAgICAgICAgICAgPEFsZXJ0Q2lyY2xlIGNsYXNzTmFtZT1cInBzLXctNSBwcy1oLTVcIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleC0xXCI+Tm8gZGF0YWJhc2UgdGFibGVzIGZvdW5kLiBDb25uZWN0IHRvIGEgZGF0YWJhc2UgdG8gc2VlIHlvdXIgc2NoZW1hLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkYXRhLmZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcHktMiBwcy10ZXh0LXNtXCIsXG4gICAgICAgICAgICAgICAgZmllbGQuaXNQcmltYXJ5ICYmIFwicHMtdGV4dC1wcmltYXJ5XCIsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPntnZXRJY29uKGZpZWxkLm5hbWUsIGZpZWxkLnR5cGUsIGZpZWxkLmlzUHJpbWFyeSl9PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4LTFcIj57ZmllbGQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2ZpZWxkLnR5cGV9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblRhYmxlTm9kZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVOb2RlXCI7XG5cbmNvbnN0IG5vZGVUeXBlcyA9IHtcbiAgdGFibGVOb2RlOiBUYWJsZU5vZGUsXG59IGFzIE5vZGVUeXBlcztcblxuLyoqXG4gKiBDcmVhdGUgYSBsYXlvdXQgZm9yIHRoZSBub2RlcyB3aXRoIHRhYmxlcyBwbGFjZWQgaW4gYSBncmlkIGZvcm1hdGlvblxuICogd2l0aCByZWxhdGVkIHRhYmxlcyBwbGFjZWQgY2xvc2VyIHRvIGVhY2ggb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGdldExheW91dGVkTm9kZXModGFibGVzOiBUYWJsZVtdLCBfcmVsYXRpb25zaGlwczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9W10pOiBOb2RlW10ge1xuICAvLyBJZiB0aGVyZSBhcmUgb25seSBhIGZldyB0YWJsZXMsIHVzZSBhIHNpbXBsZSBob3Jpem9udGFsIGxheW91dFxuICBpZiAodGFibGVzLmxlbmd0aCA8PSAzKSB7XG4gICAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4gKHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7IHg6IDM1MCAqIGluZGV4LCB5OiA1MCB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIEZvciBtb3JlIHRhYmxlcywgdXNlIGEgZ3JpZCBsYXlvdXRcbiAgY29uc3QgR1JJRF9HQVBfWCA9IDM1MDtcbiAgY29uc3QgR1JJRF9HQVBfWSA9IDMwMDtcbiAgY29uc3QgQ09MVU1OUyA9IE1hdGguY2VpbChNYXRoLnNxcnQodGFibGVzLmxlbmd0aCkpO1xuXG4gIHJldHVybiB0YWJsZXMubWFwKCh0YWJsZSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBjb2x1bW4gPSBpbmRleCAlIENPTFVNTlM7XG4gICAgY29uc3Qgcm93ID0gTWF0aC5mbG9vcihpbmRleCAvIENPTFVNTlMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgICAgdHlwZTogXCJ0YWJsZU5vZGVcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICAgIGZpZWxkczogdGFibGUuZmllbGRzLFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIHg6IGNvbHVtbiAqIEdSSURfR0FQX1gsXG4gICAgICAgIHk6IHJvdyAqIEdSSURfR0FQX1ksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NoZW1hVmlzdWFsaXphdGlvbih7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9OiBTY2hlbWFWaXN1YWxpemF0aW9uUHJvcHMpIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIG9mIG5vZGUgSURzIGZvciBxdWljayBsb29rdXBcbiAgY29uc3Qgbm9kZUlkU2V0ID0gdXNlTWVtbygoKSA9PiBuZXcgU2V0KHRhYmxlcy5tYXAoKHRhYmxlKSA9PiB0YWJsZS5uYW1lKSksIFt0YWJsZXNdKTtcblxuICAvLyBGaWx0ZXIgb3V0IHJlbGF0aW9uc2hpcHMgd2hlcmUgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgZG9lc24ndCBleGlzdFxuICBjb25zdCB2YWxpZFJlbGF0aW9uc2hpcHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHJlbGF0aW9uc2hpcHMuZmlsdGVyKChyZWwpID0+IG5vZGVJZFNldC5oYXMocmVsLmZyb20pICYmIG5vZGVJZFNldC5oYXMocmVsLnRvKSksXG4gICAgW3JlbGF0aW9uc2hpcHMsIG5vZGVJZFNldF0sXG4gICk7XG5cbiAgLy8gQ3JlYXRlIGFuIG9yZ2FuaXplZCBsYXlvdXQgZm9yIG5vZGVzXG4gIGNvbnN0IGluaXRpYWxOb2RlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwcyksIFt0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwc10pO1xuXG4gIC8vIENyZWF0ZSBlZGdlcyB3aXRoIGFwcHJvcHJpYXRlIHN0eWxpbmdcbiAgY29uc3QgaW5pdGlhbEVkZ2VzOiBFZGdlW10gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICBbdmFsaWRSZWxhdGlvbnNoaXBzXSxcbiAgKTtcblxuICBjb25zdCBbbm9kZXMsIHNldE5vZGVzLCBvbk5vZGVzQ2hhbmdlXSA9IHVzZU5vZGVzU3RhdGUoaW5pdGlhbE5vZGVzKTtcbiAgY29uc3QgW2VkZ2VzLCBzZXRFZGdlcywgb25FZGdlc0NoYW5nZV0gPSB1c2VFZGdlc1N0YXRlKGluaXRpYWxFZGdlcyk7XG5cbiAgLy8gVXBkYXRlIG5vZGVzIHdoZW4gdGFibGVzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE5vZGVzKGdldExheW91dGVkTm9kZXModGFibGVzLCB2YWxpZFJlbGF0aW9uc2hpcHMpKTtcbiAgfSwgW3RhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXROb2Rlc10pO1xuXG4gIC8vIFVwZGF0ZSBlZGdlcyB3aGVuIHJlbGF0aW9uc2hpcHMgY2hhbmdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRnZXMoXG4gICAgICB2YWxpZFJlbGF0aW9uc2hpcHMubWFwKChyZWwsIGluZGV4KSA9PiAoe1xuICAgICAgICBpZDogYGUke2luZGV4fWAsXG4gICAgICAgIHNvdXJjZTogcmVsLmZyb20sXG4gICAgICAgIHRhcmdldDogcmVsLnRvLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IHJlbC50eXBlLFxuICAgICAgICB0eXBlOiBcInNtb290aHN0ZXBcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBzdHJva2U6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZToge1xuICAgICAgICAgIGZpbGw6IFwiaHNsKHZhcigtLXByaW1hcnkpKVwiLFxuICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9LCBbdmFsaWRSZWxhdGlvbnNoaXBzLCBzZXRFZGdlc10pO1xuXG4gIGNvbnN0IG9uQ29ubmVjdCA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IEVkZ2UgfCBDb25uZWN0aW9uKSA9PiBzZXRFZGdlcygoZWRzKSA9PiBhZGRFZGdlKHBhcmFtcywgZWRzKSksIFtzZXRFZGdlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsIHBzLWJnLWNhcmRcIj5cbiAgICAgIDxSZWFjdEZsb3dcbiAgICAgICAgbm9kZXM9e25vZGVzfVxuICAgICAgICBlZGdlcz17ZWRnZXN9XG4gICAgICAgIG9uTm9kZXNDaGFuZ2U9e29uTm9kZXNDaGFuZ2V9XG4gICAgICAgIG9uRWRnZXNDaGFuZ2U9e29uRWRnZXNDaGFuZ2V9XG4gICAgICAgIG9uQ29ubmVjdD17b25Db25uZWN0fVxuICAgICAgICBjb25uZWN0aW9uTGluZVR5cGU9e0Nvbm5lY3Rpb25MaW5lVHlwZS5TbW9vdGhTdGVwfVxuICAgICAgICBub2RlVHlwZXM9e25vZGVUeXBlc31cbiAgICAgICAgZml0Vmlld1xuICAgICAgICBmaXRWaWV3T3B0aW9ucz17eyBwYWRkaW5nOiAwLjIgfX1cbiAgICAgID5cbiAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICA8Q29udHJvbHNcbiAgICAgICAgICBzaG93SW50ZXJhY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIiFwcy1iZy1baHNsKHZhcigtLXN0dWRpby1iYWNrZ3JvdW5kKSldICFwcy1ib3JkZXItW2hzbCh2YXIoLS1zdHVkaW8tYm9yZGVyKSldICFwcy10ZXh0LVtoc2wodmFyKC0tc3R1ZGlvLWZvcmVncm91bmQpKV1cIlxuICAgICAgICAvPlxuICAgICAgICA8TWluaU1hcCBwYW5uYWJsZSAvPlxuICAgICAgPC9SZWFjdEZsb3c+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlU2NoZW1hVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi9ob29rcy91c2Utc2NoZW1hLXZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IFN0dWRpb0hlYWRlciB9IGZyb20gXCIuLi9TdHVkaW9IZWFkZXJcIjtcbmltcG9ydCB7IFNjaGVtYVZpc3VhbGl6YXRpb24gfSBmcm9tIFwiLi9WaXN1YWxpc2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2hlbWFWaWV3KCkge1xuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IHNjaGVtYSBkYXRhIGZyb20gaW50cm9zcGVjdGlvblxuICBjb25zdCB7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9ID0gdXNlU2NoZW1hVmlzdWFsaXphdGlvbigpO1xuXG4gIC8vIERlYnVnOiBMb2cgZGV0ZWN0ZWQgcmVsYXRpb25zaGlwc1xuICBjb25zb2xlLmxvZyhcIkRldGVjdGVkIHJlbGF0aW9uc2hpcHM6XCIsIHJlbGF0aW9uc2hpcHMpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHVkaW9IZWFkZXIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsIHBzLWgtZnVsbFwiPlxuICAgICAgICA8U2NoZW1hVmlzdWFsaXphdGlvbiB0YWJsZXM9e3RhYmxlc30gcmVsYXRpb25zaGlwcz17cmVsYXRpb25zaGlwc30gLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNBeEMsSUFBQUMsRUFBQSxHQUFBQyxHQUFBRCxFQUFBLFlBQUFFLEdBQUEsWUFBQUMsR0FBQSxrQkFBQUMsRUFBQSxtQkFBQUMsS0FnQkFDLEdBQUFDLEVBQUFDLElBWkEsT0FHRSxpQkFBaUJDLEdBR2pCLGtCQUFrQkMsT0FHYixPQUdQLFVBQUFGLE9BQWMsT0FnQlAsU0FBU0csR0FFZEEsRUFDb0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUdPLFNBQVNDLEdBRWRBLEVBQ29CLENBQ3BCLE9BQU9BLENBQ1QsQ0FFQSxJQUFNQyxHQUFnQixPQUFPLGNBQWMsRUErQnBDLFNBQVNDLEVBQWNDLEVBQWVDLEVBQW9CLENBRS9ELE9BQU9QLEdBQXNCTSxFQUFLQyxDQUFPLENBQzNDLENBaUJPLFNBQVNDLEdBQ2ROLEVBQ0FLLEVBQzhCLENBQzlCLE9BQU9OLEdBQXVCQyxFQUFpQkssQ0FBTyxDQUN4RCxDQ3RHQSxPQUEwQixRQUFBRSxPQUFZLE9DcUJ0QyxJQUFNQyxHQUF1QixJQUVoQkMsR0FBeUJDLEdBQXlCLENBQzNELElBQU1DLEVBQVdDLEdBQWVGLENBQU0sRUFDaEMsQ0FBRUcsdUJBQUFBLEVBQXdCQywrQkFBQUEsQ0FBZ0MsRUFBR0osRUEwQm5FLE1BQU8sQ0FDSEssZ0JBekJxQkMsR0FBcUIsQ0FDMUMsSUFBTUMsRUFBYUQsRUFBVUUsTUFBTVYsRUFBb0IsRUFHdkQsT0FBSVMsRUFBVyxDQUFDLElBQU0sSUFBTUEsRUFBV0UsU0FBVyxHQUM5Q0YsRUFBV0csTUFBSyxFQUdiQyxHQUFrQkosRUFBWU4sQ0FBUSxHQUFLVyxHQUErQk4sQ0FBUyxDQUM5RixFQWlCSU8sNEJBZmdDQSxDQUNoQ0MsRUFDQUMsSUFDQSxDQUNBLElBQU1DLEVBQVliLEVBQXVCVyxDQUFZLEdBQUssQ0FBQSxFQUUxRCxPQUFJQyxHQUFzQlgsRUFBK0JVLENBQVksRUFDMUQsQ0FBQyxHQUFHRSxFQUFXLEdBQUdaLEVBQStCVSxDQUFZLENBQUUsRUFHbkVFLENBQ1gsRUFNSixFQUVNTCxHQUFvQkEsQ0FDdEJKLEVBQ0FVLElBQ2tDLENBQ2xDLEdBQUlWLEVBQVdFLFNBQVcsRUFDdEIsT0FBT1EsRUFBZ0JILGFBRzNCLElBQU1JLEVBQW1CWCxFQUFXLENBQUMsRUFDL0JZLEVBQXNCRixFQUFnQkcsU0FBU0MsSUFBSUgsQ0FBZ0IsRUFDbkVJLEVBQThCSCxFQUM5QlIsR0FBa0JKLEVBQVdnQixNQUFNLENBQUMsRUFBR0osQ0FBbUIsRUFDMURLLE9BRU4sR0FBSUYsRUFDQSxPQUFPQSxFQUdYLEdBQUlMLEVBQWdCUSxXQUFXaEIsU0FBVyxFQUN0QyxPQUdKLElBQU1pQixFQUFZbkIsRUFBV29CLEtBQUs3QixFQUFvQixFQUV0RCxPQUFPbUIsRUFBZ0JRLFdBQVdHLEtBQUssQ0FBQyxDQUFFQyxVQUFBQSxDQUFXLElBQUtBLEVBQVVILENBQVMsQ0FBQyxHQUFHWixZQUNyRixFQUVNZ0IsR0FBeUIsYUFFekJsQixHQUFrQ04sR0FBcUIsQ0FDekQsR0FBSXdCLEdBQXVCQyxLQUFLekIsQ0FBUyxFQUFHLENBQ3hDLElBQU0wQixFQUE2QkYsR0FBdUJHLEtBQUszQixDQUFTLEVBQUcsQ0FBQyxFQUN0RTRCLEVBQVdGLEdBQTRCRyxVQUN6QyxFQUNBSCxFQUEyQkksUUFBUSxHQUFHLENBQUMsRUFHM0MsR0FBSUYsRUFFQSxNQUFPLGNBQWdCQSxDQUU5QixDQUNMLEVBS2FoQyxHQUFrQkYsR0FBOEQsQ0FDekYsR0FBTSxDQUFFcUMsTUFBQUEsRUFBT0MsT0FBQUEsQ0FBUSxFQUFHdEMsRUFDcEJDLEVBQTRCLENBQzlCbUIsU0FBVSxJQUFJbUIsSUFDZGQsV0FBWSxDQUFBLEdBUWhCZSxPQUxrQ0MsR0FDOUJDLE9BQU9DLFFBQVEzQyxFQUFPNEMsV0FBVyxFQUNqQ04sQ0FBTSxFQUdnQk8sUUFBUSxDQUFDLENBQUMvQixFQUFjZ0MsQ0FBVSxJQUFLLENBQzdEQyxHQUEwQkQsRUFBWTdDLEVBQVVhLEVBQWN1QixDQUFLLENBQ3ZFLENBQUMsRUFFTXBDLENBQ1gsRUFFTThDLEdBQTRCQSxDQUM5QkQsRUFDQTdCLEVBQ0FILEVBQ0F1QixJQUNBLENBQ0FTLEVBQVdELFFBQVNHLEdBQW1CLENBQ25DLEdBQUksT0FBT0EsR0FBb0IsU0FBVSxDQUNyQyxJQUFNQyxFQUNGRCxJQUFvQixHQUFLL0IsRUFBa0JpQyxHQUFRakMsRUFBaUIrQixDQUFlLEVBQ3ZGQyxFQUFzQm5DLGFBQWVBLEVBQ3JDLE1BQ0gsQ0FFRCxHQUFJLE9BQU9rQyxHQUFvQixXQUFZLENBQ3ZDLEdBQUlHLEdBQWNILENBQWUsRUFBRyxDQUNoQ0QsR0FDSUMsRUFBZ0JYLENBQUssRUFDckJwQixFQUNBSCxFQUNBdUIsQ0FBSyxFQUVULE1BQ0gsQ0FFRHBCLEVBQWdCUSxXQUFXMkIsS0FBSyxDQUM1QnZCLFVBQVdtQixFQUNYbEMsYUFBQUEsQ0FDSCxDQUFBLEVBRUQsTUFDSCxDQUVENEIsT0FBT0MsUUFBUUssQ0FBZSxFQUFFSCxRQUFRLENBQUMsQ0FBQ1EsRUFBS1AsQ0FBVSxJQUFLLENBQzFEQyxHQUNJRCxFQUNBSSxHQUFRakMsRUFBaUJvQyxDQUFHLEVBQzVCdkMsRUFDQXVCLENBQUssQ0FFYixDQUFDLENBQ0wsQ0FBQyxDQUNMLEVBRU1hLEdBQVVBLENBQUNqQyxFQUFrQ3FDLElBQWdCLENBQy9ELElBQUlDLEVBQXlCdEMsRUFFN0JxQyxPQUFBQSxFQUFLOUMsTUFBTVYsRUFBb0IsRUFBRStDLFFBQVNXLEdBQVksQ0FDN0NELEVBQXVCbkMsU0FBU3FDLElBQUlELENBQVEsR0FDN0NELEVBQXVCbkMsU0FBU3NDLElBQUlGLEVBQVUsQ0FDMUNwQyxTQUFVLElBQUltQixJQUNkZCxXQUFZLENBQUEsQ0FDZixDQUFBLEVBR0w4QixFQUF5QkEsRUFBdUJuQyxTQUFTQyxJQUFJbUMsQ0FBUSxDQUN6RSxDQUFDLEVBRU1ELENBQ1gsRUFFTUosR0FBaUJRLEdBQ2xCQSxFQUFxQlIsY0FFcEJWLEdBQStCQSxDQUNqQ21CLEVBQ0F0QixJQUVLQSxFQUlFc0IsRUFBa0JDLElBQUksQ0FBQyxDQUFDL0MsRUFBY2dDLENBQVUsSUFBSyxDQUN4RCxJQUFNZ0IsRUFBcUJoQixFQUFXZSxJQUFLYixHQUNuQyxPQUFPQSxHQUFvQixTQUNwQlYsRUFBU1UsRUFHaEIsT0FBT0EsR0FBb0IsU0FDcEJOLE9BQU9xQixZQUNWckIsT0FBT0MsUUFBUUssQ0FBZSxFQUFFYSxJQUFJLENBQUMsQ0FBQ1IsRUFBS1csQ0FBSyxJQUFNLENBQUMxQixFQUFTZSxFQUFLVyxDQUFLLENBQUMsQ0FBQyxFQUk3RWhCLENBQ1YsRUFFRCxNQUFPLENBQUNsQyxFQUFjZ0QsQ0FBa0IsQ0FDNUMsQ0FBQyxFQW5CVUYsRUN6TEZLLEdBQThCQyxHQUE4QyxDQUNyRixHQUFJQSxFQUFlLEVBQ2YsTUFBTyxDQUNIN0MsSUFBS0EsSUFBQSxHQUNMcUMsSUFBS0EsSUFBSyxDQUFHLEdBSXJCLElBQUlTLEVBQVksRUFDWkMsRUFBUSxJQUFJN0IsSUFDWjhCLEVBQWdCLElBQUk5QixJQUVsQitCLEVBQVNBLENBQUNqQixFQUFVVyxJQUFnQixDQUN0Q0ksRUFBTVYsSUFBSUwsRUFBS1csQ0FBSyxFQUNwQkcsSUFFSUEsRUFBWUQsSUFDWkMsRUFBWSxFQUNaRSxFQUFnQkQsRUFDaEJBLEVBQVEsSUFBSTdCLElBRXBCLEVBRUEsTUFBTyxDQUNIbEIsSUFBSWdDLEVBQUcsQ0FDSCxJQUFJVyxFQUFRSSxFQUFNL0MsSUFBSWdDLENBQUcsRUFFekIsR0FBSVcsSUFBVXhDLE9BQ1YsT0FBT3dDLEVBRVgsSUFBS0EsRUFBUUssRUFBY2hELElBQUlnQyxDQUFHLEtBQU83QixPQUNyQzhDLE9BQUFBLEVBQU9qQixFQUFLVyxDQUFLLEVBQ1ZBLENBRWQsRUFDRE4sSUFBSUwsRUFBS1csRUFBSyxDQUNOSSxFQUFNWCxJQUFJSixDQUFHLEVBQ2JlLEVBQU1WLElBQUlMLEVBQUtXLENBQUssRUFFcEJNLEVBQU9qQixFQUFLVyxDQUFLLENBRXhCLEVBRVQsRUNqRGFPLEdBQXFCLElBRXJCQyxHQUF3QnhFLEdBQXlCLENBQzFELEdBQU0sQ0FBRXlFLFVBQUFBLEVBQVdDLDJCQUFBQSxDQUE0QixFQUFHMUUsRUFDNUMyRSxFQUE2QkYsRUFBVWhFLFNBQVcsRUFDbERtRSxFQUEwQkgsRUFBVSxDQUFDLEVBQ3JDSSxFQUFrQkosRUFBVWhFLE9BRzVCcUUsRUFBa0J4RSxHQUFxQixDQUN6QyxJQUFNeUUsRUFBWSxDQUFBLEVBRWRDLEVBQWUsRUFDZkMsRUFBZ0IsRUFDaEJDLEVBRUosUUFBU0MsRUFBUSxFQUFHQSxFQUFRN0UsRUFBVUcsT0FBUTBFLElBQVMsQ0FDbkQsSUFBSUMsRUFBbUI5RSxFQUFVNkUsQ0FBSyxFQUV0QyxHQUFJSCxJQUFpQixFQUFHLENBQ3BCLEdBQ0lJLElBQXFCUixJQUNwQkQsR0FDR3JFLEVBQVVpQixNQUFNNEQsRUFBT0EsRUFBUU4sQ0FBZSxJQUFNSixHQUMxRCxDQUNFTSxFQUFVM0IsS0FBSzlDLEVBQVVpQixNQUFNMEQsRUFBZUUsQ0FBSyxDQUFDLEVBQ3BERixFQUFnQkUsRUFBUU4sRUFDeEIsUUFDSCxDQUVELEdBQUlPLElBQXFCLElBQUssQ0FDMUJGLEVBQTBCQyxFQUMxQixRQUNILENBQ0osQ0FFR0MsSUFBcUIsSUFDckJKLElBQ09JLElBQXFCLEtBQzVCSixHQUVQLENBRUQsSUFBTUssRUFDRk4sRUFBVXRFLFNBQVcsRUFBSUgsRUFBWUEsRUFBVTZCLFVBQVU4QyxDQUFhLEVBQ3BFSyxFQUNGRCxFQUFtQ0UsV0FBV2hCLEVBQWtCLEVBQzlEaUIsRUFBZ0JGLEVBQ2hCRCxFQUFtQ2xELFVBQVUsQ0FBQyxFQUM5Q2tELEVBRUFJLEVBQ0ZQLEdBQTJCQSxFQUEwQkQsRUFDL0NDLEVBQTBCRCxFQUMxQnpELE9BRVYsTUFBTyxDQUNIdUQsVUFBQUEsRUFDQU8scUJBQUFBLEVBQ0FFLGNBQUFBLEVBQ0FDLDZCQUFBQSxFQUVSLEVBRUEsT0FBSWYsRUFDUXBFLEdBQXNCb0UsRUFBMkIsQ0FBRXBFLFVBQUFBLEVBQVd3RSxlQUFBQSxDQUFnQixDQUFBLEVBR25GQSxDQUNYLEVBT2FZLEdBQWlCWCxHQUF1QixDQUNqRCxHQUFJQSxFQUFVdEUsUUFBVSxFQUNwQixPQUFPc0UsRUFHWCxJQUFNWSxFQUE0QixDQUFBLEVBQzlCQyxFQUE4QixDQUFBLEVBRWxDYixPQUFBQSxFQUFVbEMsUUFBU2dELEdBQVksQ0FDQUEsRUFBUyxDQUFDLElBQU0sS0FHdkNGLEVBQWdCdkMsS0FBSyxHQUFHd0MsRUFBa0JFLEtBQU0sRUFBRUQsQ0FBUSxFQUMxREQsRUFBb0IsQ0FBQSxHQUVwQkEsRUFBa0J4QyxLQUFLeUMsQ0FBUSxDQUV2QyxDQUFDLEVBRURGLEVBQWdCdkMsS0FBSyxHQUFHd0MsRUFBa0JFLEtBQU0sQ0FBQSxFQUV6Q0gsQ0FDWCxFQzdGYUksR0FBcUIvRixJQUEyQixDQUN6RG9FLE1BQU9ILEdBQStCakUsRUFBT21FLFNBQVMsRUFDdERXLGVBQWdCTixHQUFxQnhFLENBQU0sRUFDM0MsR0FBR0QsR0FBc0JDLENBQU0sQ0FDbEMsR0NSS2dHLEdBQXNCLE1BRWZDLEdBQWlCQSxDQUFDQyxFQUFtQkMsSUFBNEIsQ0FDMUUsR0FBTSxDQUFFckIsZUFBQUEsRUFBZ0J6RSxnQkFBQUEsRUFBaUJRLDRCQUFBQSxDQUEyQixFQUFLc0YsRUFTbkVDLEVBQWtDLENBQUEsRUFDbENDLEVBQWFILEVBQVVJLEtBQU0sRUFBQzlGLE1BQU13RixFQUFtQixFQUV6RE8sRUFBUyxHQUViLFFBQVNwQixFQUFRa0IsRUFBVzVGLE9BQVMsRUFBRzBFLEdBQVMsRUFBR0EsR0FBUyxFQUFHLENBQzVELElBQU1xQixFQUFvQkgsRUFBV2xCLENBQUssRUFFcEMsQ0FBRUosVUFBQUEsRUFBV08scUJBQUFBLEVBQXNCRSxjQUFBQSxFQUFlQyw2QkFBQUEsR0FDcERYLEVBQWUwQixDQUFpQixFQUVoQ3pGLEVBQXFCMEYsRUFBUWhCLEVBQzdCM0UsRUFBZVQsRUFDZlUsRUFDTXlFLEVBQWNyRCxVQUFVLEVBQUdzRCxDQUE0QixFQUN2REQsQ0FBYSxFQUd2QixHQUFJLENBQUMxRSxFQUFjLENBQ2YsR0FBSSxDQUFDQyxFQUFvQixDQUVyQndGLEVBQVNDLEdBQXFCRCxFQUFPOUYsT0FBUyxFQUFJLElBQU04RixFQUFTQSxHQUNqRSxRQUNILENBSUQsR0FGQXpGLEVBQWVULEVBQWdCbUYsQ0FBYSxFQUV4QyxDQUFDMUUsRUFBYyxDQUVmeUYsRUFBU0MsR0FBcUJELEVBQU85RixPQUFTLEVBQUksSUFBTThGLEVBQVNBLEdBQ2pFLFFBQ0gsQ0FFRHhGLEVBQXFCLEVBQ3hCLENBRUQsSUFBTTJGLEVBQWtCaEIsR0FBY1gsQ0FBUyxFQUFFcEQsS0FBSyxHQUFHLEVBRW5EZ0YsRUFBYXJCLEVBQ2JvQixFQUFrQm5DLEdBQ2xCbUMsRUFFQUUsRUFBVUQsRUFBYTdGLEVBRTdCLEdBQUlzRixFQUFzQlMsU0FBU0QsQ0FBTyxFQUV0QyxTQUdKUixFQUFzQmhELEtBQUt3RCxDQUFPLEVBRWxDLElBQU1FLEVBQWlCakcsRUFBNEJDLEVBQWNDLENBQWtCLEVBQ25GLFFBQVNnRyxFQUFJLEVBQUdBLEVBQUlELEVBQWVyRyxPQUFRLEVBQUVzRyxFQUFHLENBQzVDLElBQU1DLEVBQVFGLEVBQWVDLENBQUMsRUFDOUJYLEVBQXNCaEQsS0FBS3VELEVBQWFLLENBQUssQ0FDaEQsQ0FHRFQsRUFBU0MsR0FBcUJELEVBQU85RixPQUFTLEVBQUksSUFBTThGLEVBQVNBLEVBQ3BFLENBRUQsT0FBT0EsQ0FDWCxXQy9EZ0JVLElBQU0sQ0FDbEIsSUFBSTlCLEVBQVEsRUFDUitCLEVBQ0FDLEVBQ0FDLEVBQVMsR0FFYixLQUFPakMsRUFBUWtDLFVBQVU1RyxTQUNoQnlHLEVBQVdHLFVBQVVsQyxHQUFPLEtBQ3hCZ0MsRUFBZ0JHLEdBQVFKLENBQVEsS0FDakNFLElBQVdBLEdBQVUsS0FDckJBLEdBQVVELEdBSXRCLE9BQU9DLENBQ1gsQ0FFQSxJQUFNRSxHQUFXQyxHQUFnQyxDQUM3QyxHQUFJLE9BQU9BLEdBQVEsU0FDZixPQUFPQSxFQUdYLElBQUlKLEVBQ0FDLEVBQVMsR0FFYixRQUFTSSxFQUFJLEVBQUdBLEVBQUlELEVBQUk5RyxPQUFRK0csSUFDeEJELEVBQUlDLENBQUMsSUFDQUwsRUFBZ0JHLEdBQVFDLEVBQUlDLENBQUMsQ0FBNEIsS0FDMURKLElBQVdBLEdBQVUsS0FDckJBLEdBQVVELEdBS3RCLE9BQU9DLENBQ1gsV0N2Q2dCSyxHQUNaQyxLQUNHQyxFQUEwQyxDQUU3QyxJQUFJeEIsRUFDQXlCLEVBQ0FDLEVBQ0FDLEVBQWlCQyxFQUVyQixTQUFTQSxFQUFrQjdCLEVBQWlCLENBQ3hDLElBQU1sRyxFQUFTMkgsRUFBaUJLLE9BQzVCLENBQUNDLEVBQWdCQyxJQUF3QkEsRUFBb0JELENBQWMsRUFDM0VQLEVBQWlCLENBQW1CLEVBR3hDdkIsT0FBQUEsRUFBY0osR0FBa0IvRixDQUFNLEVBQ3RDNEgsRUFBV3pCLEVBQVkvQixNQUFNL0MsSUFDN0J3RyxFQUFXMUIsRUFBWS9CLE1BQU1WLElBQzdCb0UsRUFBaUJLLEVBRVZBLEVBQWNqQyxDQUFTLENBQ2pDLENBRUQsU0FBU2lDLEVBQWNqQyxFQUFpQixDQUNwQyxJQUFNa0MsRUFBZVIsRUFBUzFCLENBQVMsRUFFdkMsR0FBSWtDLEVBQ0EsT0FBT0EsRUFHWCxJQUFNN0IsRUFBU04sR0FBZUMsRUFBV0MsQ0FBVyxFQUNwRDBCLE9BQUFBLEVBQVMzQixFQUFXSyxDQUFNLEVBRW5CQSxDQUNWLENBRUQsT0FBTyxVQUEwQixDQUM3QixPQUFPdUIsRUFBZWIsR0FBT29CLE1BQU0sS0FBTWhCLFNBQWdCLENBQUMsQ0FDOUQsQ0FDSixDQy9DYSxJQUFBaUIsRUFHWGpGLEdBQWtGLENBQ2hGLElBQU1rRixFQUFlbEcsR0FDakJBLEVBQU1nQixDQUFHLEdBQUssQ0FBQSxFQUVsQmtGLE9BQUFBLEVBQVlwRixjQUFnQixHQUVyQm9GLENBQ1gsRUNaTUMsR0FBc0IsNkJBQ3RCQyxHQUFnQixhQUNoQkMsR0FBZ0IsSUFBSUMsSUFBSSxDQUFDLEtBQU0sT0FBUSxRQUFRLENBQUMsRUFDaERDLEdBQWtCLG1DQUNsQkMsR0FDRiw0SEFDRUMsR0FBcUIsMkNBRXJCQyxHQUFjLGtFQUNkQyxHQUNGLCtGQUVTQyxHQUFZakYsR0FDckJrRixHQUFTbEYsQ0FBSyxHQUFLMEUsR0FBY2pGLElBQUlPLENBQUssR0FBS3lFLEdBQWMxRyxLQUFLaUMsQ0FBSyxFQUU5RG1GLEdBQXFCbkYsR0FDOUJvRixHQUFvQnBGLEVBQU8sU0FBVXFGLEVBQVksRUFFeENILEdBQVlsRixHQUFrQnlDLEVBQVF6QyxHQUFVLENBQUNzRixPQUFPQyxNQUFNRCxPQUFPdEYsQ0FBSyxDQUFDLEVBRTNFd0YsR0FBcUJ4RixHQUFrQm9GLEdBQW9CcEYsRUFBTyxTQUFVa0YsRUFBUSxFQUVwRk8sR0FBYXpGLEdBQWtCeUMsRUFBUXpDLEdBQVVzRixPQUFPRyxVQUFVSCxPQUFPdEYsQ0FBSyxDQUFDLEVBRS9FMEYsR0FBYTFGLEdBQWtCQSxFQUFNMkYsU0FBUyxHQUFHLEdBQUtULEdBQVNsRixFQUFNekMsTUFBTSxFQUFHLEVBQUUsQ0FBQyxFQUVqRnFJLEVBQW9CNUYsR0FBa0J3RSxHQUFvQnpHLEtBQUtpQyxDQUFLLEVBRXBFNkYsR0FBZ0I3RixHQUFrQjRFLEdBQWdCN0csS0FBS2lDLENBQUssRUFFbkU4RixHQUFhLElBQUluQixJQUFJLENBQUMsU0FBVSxPQUFRLFlBQVksQ0FBQyxFQUU5Q29CLEdBQW1CL0YsR0FBa0JvRixHQUFvQnBGLEVBQU84RixHQUFZRSxFQUFPLEVBRW5GQyxHQUF1QmpHLEdBQ2hDb0YsR0FBb0JwRixFQUFPLFdBQVlnRyxFQUFPLEVBRTVDRSxHQUFjLElBQUl2QixJQUFJLENBQUMsUUFBUyxLQUFLLENBQUMsRUFFL0J3QixHQUFvQm5HLEdBQWtCb0YsR0FBb0JwRixFQUFPa0csR0FBYUUsRUFBTyxFQUVyRkMsR0FBcUJyRyxHQUFrQm9GLEdBQW9CcEYsRUFBTyxHQUFJc0csRUFBUSxFQUU5RUMsR0FBUUEsSUFBTSxHQUVyQm5CLEdBQXNCQSxDQUN4QnBGLEVBQ0F3RyxFQUNBQyxJQUNBLENBQ0EsSUFBTWxFLEVBQVNpQyxHQUFvQnZHLEtBQUsrQixDQUFLLEVBRTdDLE9BQUl1QyxFQUNJQSxFQUFPLENBQUMsRUFDRCxPQUFPaUUsR0FBVSxTQUFXakUsRUFBTyxDQUFDLElBQU1pRSxFQUFRQSxFQUFNL0csSUFBSThDLEVBQU8sQ0FBQyxDQUFDLEVBR3pFa0UsRUFBVWxFLEVBQU8sQ0FBQyxDQUFFLEVBR3hCLEVBQ1gsRUFFTThDLEdBQWdCckYsR0FJbEI2RSxHQUFnQjlHLEtBQUtpQyxDQUFLLEdBQUssQ0FBQzhFLEdBQW1CL0csS0FBS2lDLENBQUssRUFFM0RnRyxHQUFVQSxJQUFNLEdBRWhCTSxHQUFZdEcsR0FBa0IrRSxHQUFZaEgsS0FBS2lDLENBQUssRUFFcERvRyxHQUFXcEcsR0FBa0JnRixHQUFXakgsS0FBS2lDLENBQUssRUN2RGpELElBQU0wRyxHQUFtQkEsSUFBSyxDQUNqQyxJQUFNQyxFQUFTQyxFQUFVLFFBQVEsRUFDM0JDLEVBQVVELEVBQVUsU0FBUyxFQUM3QkUsRUFBT0YsRUFBVSxNQUFNLEVBQ3ZCRyxFQUFhSCxFQUFVLFlBQVksRUFDbkNJLEVBQWNKLEVBQVUsYUFBYSxFQUNyQ0ssRUFBZUwsRUFBVSxjQUFjLEVBQ3ZDTSxFQUFnQk4sRUFBVSxlQUFlLEVBQ3pDTyxFQUFjUCxFQUFVLGFBQWEsRUFDckNRLEVBQVdSLEVBQVUsVUFBVSxFQUMvQlMsRUFBWVQsRUFBVSxXQUFXLEVBQ2pDVSxFQUFZVixFQUFVLFdBQVcsRUFDakNXLEVBQVNYLEVBQVUsUUFBUSxFQUMzQlksRUFBTVosRUFBVSxLQUFLLEVBQ3JCYSxFQUFxQmIsRUFBVSxvQkFBb0IsRUFDbkRjLEVBQTZCZCxFQUFVLDRCQUE0QixFQUNuRWUsRUFBUWYsRUFBVSxPQUFPLEVBQ3pCZ0IsRUFBU2hCLEVBQVUsUUFBUSxFQUMzQmlCLEVBQVVqQixFQUFVLFNBQVMsRUFDN0JrQixFQUFVbEIsRUFBVSxTQUFTLEVBQzdCbUIsRUFBV25CLEVBQVUsVUFBVSxFQUMvQm9CLEVBQVFwQixFQUFVLE9BQU8sRUFDekJxQixFQUFRckIsRUFBVSxPQUFPLEVBQ3pCc0IsRUFBT3RCLEVBQVUsTUFBTSxFQUN2QnVCLEVBQVF2QixFQUFVLE9BQU8sRUFDekJ3QixFQUFZeEIsRUFBVSxXQUFXLEVBRWpDeUIsRUFBZ0JBLElBQU0sQ0FBQyxPQUFRLFVBQVcsTUFBTSxFQUNoREMsRUFBY0EsSUFBTSxDQUFDLE9BQVEsU0FBVSxPQUFRLFVBQVcsUUFBUSxFQUNsRUMsR0FBaUNBLElBQU0sQ0FBQyxPQUFRQyxFQUFrQjNCLENBQU8sRUFDekU0QixFQUEwQkEsSUFBTSxDQUFDRCxFQUFrQjNCLENBQU8sRUFDMUQ2QixHQUFpQ0EsSUFBTSxDQUFDLEdBQUlDLEdBQVVDLEVBQWlCLEVBQ3ZFQyxHQUFnQ0EsSUFBTSxDQUFDLE9BQVFDLEdBQVVOLENBQWdCLEVBQ3pFTyxHQUFlQSxJQUNqQixDQUNJLFNBQ0EsU0FDQSxPQUNBLGNBQ0EsV0FDQSxRQUNBLGVBQ0EsWUFDQSxLQUFLLEVBRVBDLEdBQWdCQSxJQUFNLENBQUMsUUFBUyxTQUFVLFNBQVUsU0FBVSxNQUFNLEVBQ3BFQyxHQUFnQkEsSUFDbEIsQ0FDSSxTQUNBLFdBQ0EsU0FDQSxVQUNBLFNBQ0EsVUFDQSxjQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsWUFDQSxNQUNBLGFBQ0EsUUFDQSxZQUFZLEVBRWRDLEVBQVdBLElBQ2IsQ0FBQyxRQUFTLE1BQU8sU0FBVSxVQUFXLFNBQVUsU0FBVSxTQUFTLEVBQ2pFQyxFQUFrQkEsSUFBTSxDQUFDLEdBQUksSUFBS1gsQ0FBZ0IsRUFDbERZLEdBQVlBLElBQ2QsQ0FBQyxPQUFRLFFBQVMsTUFBTyxhQUFjLE9BQVEsT0FBUSxRQUFTLFFBQVEsRUFDdEVDLEdBQXdCQSxJQUFNLENBQUNQLEdBQVVOLENBQWdCLEVBRS9ELE1BQU8sQ0FDSGMsVUFBVyxJQUNYQyxVQUFXLElBQ1hDLE1BQU8sQ0FDSDdDLE9BQVEsQ0FBQzhDLEVBQUssRUFDZDVDLFFBQVMsQ0FBQzhCLEdBQVVDLEVBQWlCLEVBQ3JDOUIsS0FBTSxDQUFDLE9BQVEsR0FBSTRDLEdBQWNsQixDQUFnQixFQUNqRHpCLFdBQVlzQyxHQUF1QixFQUNuQ3JDLFlBQWEsQ0FBQ0wsQ0FBTSxFQUNwQk0sYUFBYyxDQUFDLE9BQVEsR0FBSSxPQUFReUMsR0FBY2xCLENBQWdCLEVBQ2pFdEIsY0FBZXVCLEVBQXlCLEVBQ3hDdEIsWUFBYXVCLEdBQWdDLEVBQzdDdEIsU0FBVWlDLEdBQXVCLEVBQ2pDaEMsVUFBVzhCLEVBQWlCLEVBQzVCN0IsVUFBVytCLEdBQXVCLEVBQ2xDOUIsT0FBUTRCLEVBQWlCLEVBQ3pCM0IsSUFBS2lCLEVBQXlCLEVBQzlCaEIsbUJBQW9CLENBQUNkLENBQU0sRUFDM0JlLDJCQUE0QixDQUFDaUMsR0FBV2YsRUFBaUIsRUFDekRqQixNQUFPWSxHQUFnQyxFQUN2Q1gsT0FBUVcsR0FBZ0MsRUFDeENWLFFBQVN3QixHQUF1QixFQUNoQ3ZCLFFBQVNXLEVBQXlCLEVBQ2xDVixTQUFVc0IsR0FBdUIsRUFDakNyQixNQUFPcUIsR0FBdUIsRUFDOUJwQixNQUFPa0IsRUFBaUIsRUFDeEJqQixLQUFNbUIsR0FBdUIsRUFDN0JsQixNQUFPTSxFQUF5QixFQUNoQ0wsVUFBV0ssRUFBeUIsQ0FDdkMsRUFDRG1CLFlBQWEsQ0FNVEMsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxPQUFRLFNBQVUsUUFBU3JCLENBQWdCLEVBQUcsRUFLbEVzQixVQUFXLENBQUMsV0FBVyxFQUt2QkMsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQ0wsRUFBWSxDQUFDLENBQUUsRUFLckMsY0FBZSxDQUFDLENBQUUsY0FBZU4sR0FBVyxDQUFBLENBQUUsRUFLOUMsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCQSxHQUFXLENBQUEsQ0FBRSxFQUtoRCxlQUFnQixDQUFDLENBQUUsZUFBZ0IsQ0FBQyxPQUFRLFFBQVMsYUFBYyxjQUFjLEVBQUcsRUFLcEYsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQyxRQUFTLE9BQU8sQ0FBQyxDQUFFLEVBSzNEWSxJQUFLLENBQUMsQ0FBRUEsSUFBSyxDQUFDLFNBQVUsU0FBUyxDQUFDLENBQUUsRUFLcENDLFFBQVMsQ0FDTCxRQUNBLGVBQ0EsU0FDQSxPQUNBLGNBQ0EsUUFDQSxlQUNBLGdCQUNBLGFBQ0EsZUFDQSxxQkFDQSxxQkFDQSxxQkFDQSxrQkFDQSxZQUNBLFlBQ0EsT0FDQSxjQUNBLFdBQ0EsWUFDQSxRQUFRLEVBTVpDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUMsUUFBUyxPQUFRLE9BQVEsUUFBUyxLQUFLLEVBQUcsRUFLNURDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUMsT0FBUSxRQUFTLE9BQVEsT0FBUSxRQUFTLEtBQUssRUFBRyxFQUtwRUMsVUFBVyxDQUFDLFVBQVcsZ0JBQWdCLEVBS3ZDLGFBQWMsQ0FBQyxDQUFFQyxPQUFRLENBQUMsVUFBVyxRQUFTLE9BQVEsT0FBUSxZQUFZLEVBQUcsRUFLN0Usa0JBQW1CLENBQUMsQ0FBRUEsT0FBUSxDQUFDLEdBQUd0QixHQUFjLEVBQUVQLENBQWdCLEVBQUcsRUFLckU4QixTQUFVLENBQUMsQ0FBRUEsU0FBVWhDLEVBQWEsQ0FBQSxDQUFFLEVBS3RDLGFBQWMsQ0FBQyxDQUFFLGFBQWNBLEVBQWEsQ0FBQSxDQUFFLEVBSzlDLGFBQWMsQ0FBQyxDQUFFLGFBQWNBLEVBQWEsQ0FBQSxDQUFFLEVBSzlDaUMsV0FBWSxDQUFDLENBQUVBLFdBQVlsQyxFQUFlLENBQUEsQ0FBRSxFQUs1QyxlQUFnQixDQUFDLENBQUUsZUFBZ0JBLEVBQWUsQ0FBQSxDQUFFLEVBS3BELGVBQWdCLENBQUMsQ0FBRSxlQUFnQkEsRUFBZSxDQUFBLENBQUUsRUFLcERtQyxTQUFVLENBQUMsU0FBVSxRQUFTLFdBQVksV0FBWSxRQUFRLEVBSzlEN0MsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLMUIsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQyxVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBS2xDOEMsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQzlDLENBQUssQ0FBQyxDQUFFLEVBSzFCK0MsSUFBSyxDQUFDLENBQUVBLElBQUssQ0FBQy9DLENBQUssQ0FBQyxDQUFFLEVBS3RCZ0QsSUFBSyxDQUFDLENBQUVBLElBQUssQ0FBQ2hELENBQUssQ0FBQyxDQUFFLEVBS3RCaUQsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQ2pELENBQUssQ0FBQyxDQUFFLEVBSzFCa0QsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQ2xELENBQUssQ0FBQyxDQUFFLEVBSzVCbUQsS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQ25ELENBQUssQ0FBQyxDQUFFLEVBS3hCb0QsV0FBWSxDQUFDLFVBQVcsWUFBYSxVQUFVLEVBSy9DQyxFQUFHLENBQUMsQ0FBRUEsRUFBRyxDQUFDLE9BQVFDLEdBQVd6QyxDQUFnQixFQUFHLEVBTWhEMEMsTUFBTyxDQUFDLENBQUVBLE1BQU8zQyxHQUFnQyxDQUFBLENBQUUsRUFLbkQsaUJBQWtCLENBQUMsQ0FBRTRDLEtBQU0sQ0FBQyxNQUFPLGNBQWUsTUFBTyxhQUFhLEVBQUcsRUFLekUsWUFBYSxDQUFDLENBQUVBLEtBQU0sQ0FBQyxPQUFRLGVBQWdCLFFBQVEsRUFBRyxFQUsxREEsS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQyxJQUFLLE9BQVEsVUFBVyxPQUFRM0MsQ0FBZ0IsRUFBRyxFQUtuRTRDLEtBQU0sQ0FBQyxDQUFFQSxLQUFNakMsRUFBaUIsQ0FBQSxDQUFFLEVBS2xDa0MsT0FBUSxDQUFDLENBQUVBLE9BQVFsQyxFQUFpQixDQUFBLENBQUUsRUFLdENtQyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDLFFBQVMsT0FBUSxPQUFRTCxHQUFXekMsQ0FBZ0IsRUFBRyxFQUt6RSxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNpQixFQUFLLENBQUMsQ0FBRSxFQUt0QyxnQkFBaUIsQ0FDYixDQUNJOEIsSUFBSyxDQUNELE9BQ0EsQ0FBRUMsS0FBTSxDQUFDLE9BQVFQLEdBQVd6QyxDQUFnQixDQUFHLEVBQy9DQSxDQUFnQixDQUV2QixDQUFBLEVBTUwsWUFBYSxDQUFDLENBQUUsWUFBYUssR0FBK0IsQ0FBQSxDQUFFLEVBSzlELFVBQVcsQ0FBQyxDQUFFLFVBQVdBLEdBQStCLENBQUEsQ0FBRSxFQUsxRCxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNZLEVBQUssQ0FBQyxDQUFFLEVBS3RDLGdCQUFpQixDQUNiLENBQUVnQyxJQUFLLENBQUMsT0FBUSxDQUFFRCxLQUFNLENBQUNQLEdBQVd6QyxDQUFnQixHQUFLQSxDQUFnQixDQUFHLENBQUEsRUFNaEYsWUFBYSxDQUFDLENBQUUsWUFBYUssR0FBK0IsQ0FBQSxDQUFFLEVBSzlELFVBQVcsQ0FBQyxDQUFFLFVBQVdBLEdBQStCLENBQUEsQ0FBRSxFQUsxRCxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUMsTUFBTyxNQUFPLFFBQVMsWUFBYSxXQUFXLEVBQUcsRUFLaEYsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLE9BQVEsTUFBTyxNQUFPLEtBQU1MLENBQWdCLEVBQUcsRUFLN0UsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLE9BQVEsTUFBTyxNQUFPLEtBQU1BLENBQWdCLEVBQUcsRUFLN0VoQixJQUFLLENBQUMsQ0FBRUEsSUFBSyxDQUFDQSxDQUFHLENBQUMsQ0FBRSxFQUtwQixRQUFTLENBQUMsQ0FBRSxRQUFTLENBQUNBLENBQUcsQ0FBQyxDQUFFLEVBSzVCLFFBQVMsQ0FBQyxDQUFFLFFBQVMsQ0FBQ0EsQ0FBRyxDQUFDLENBQUUsRUFLNUIsa0JBQW1CLENBQUMsQ0FBRWtFLFFBQVMsQ0FBQyxTQUFVLEdBQUd4QyxFQUFVLENBQUEsRUFBRyxFQUsxRCxnQkFBaUIsQ0FBQyxDQUFFLGdCQUFpQixDQUFDLFFBQVMsTUFBTyxTQUFVLFNBQVMsRUFBRyxFQUs1RSxlQUFnQixDQUFDLENBQUUsZUFBZ0IsQ0FBQyxPQUFRLFFBQVMsTUFBTyxTQUFVLFNBQVMsRUFBRyxFQUtsRixnQkFBaUIsQ0FBQyxDQUFFeUMsUUFBUyxDQUFDLFNBQVUsR0FBR3pDLEVBQVUsRUFBRSxVQUFVLEVBQUcsRUFLcEUsY0FBZSxDQUFDLENBQUUwQyxNQUFPLENBQUMsUUFBUyxNQUFPLFNBQVUsV0FBWSxTQUFTLEVBQUcsRUFLNUUsYUFBYyxDQUFDLENBQUVDLEtBQU0sQ0FBQyxPQUFRLFFBQVMsTUFBTyxTQUFVLFVBQVcsVUFBVSxFQUFHLEVBS2xGLGdCQUFpQixDQUFDLENBQUUsZ0JBQWlCLENBQUMsR0FBRzNDLEVBQVUsRUFBRSxVQUFVLEVBQUcsRUFLbEUsY0FBZSxDQUFDLENBQUUsY0FBZSxDQUFDLFFBQVMsTUFBTyxTQUFVLFdBQVksU0FBUyxFQUFHLEVBS3BGLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQyxPQUFRLFFBQVMsTUFBTyxTQUFVLFNBQVMsRUFBRyxFQU05RTRDLEVBQUcsQ0FBQyxDQUFFQSxFQUFHLENBQUNoRSxDQUFPLENBQUMsQ0FBRSxFQUtwQmlFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNqRSxDQUFPLENBQUMsQ0FBRSxFQUt0QmtFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNsRSxDQUFPLENBQUMsQ0FBRSxFQUt0Qm1FLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNuRSxDQUFPLENBQUMsQ0FBRSxFQUt0Qm9FLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNwRSxDQUFPLENBQUMsQ0FBRSxFQUt0QnFFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNyRSxDQUFPLENBQUMsQ0FBRSxFQUt0QnNFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUN0RSxDQUFPLENBQUMsQ0FBRSxFQUt0QnVFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUN2RSxDQUFPLENBQUMsQ0FBRSxFQUt0QndFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUN4RSxDQUFPLENBQUMsQ0FBRSxFQUt0QnlFLEVBQUcsQ0FBQyxDQUFFQSxFQUFHLENBQUMzRSxDQUFNLENBQUMsQ0FBRSxFQUtuQjRFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUM1RSxDQUFNLENBQUMsQ0FBRSxFQUtyQjZFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUM3RSxDQUFNLENBQUMsQ0FBRSxFQUtyQjhFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUM5RSxDQUFNLENBQUMsQ0FBRSxFQUtyQitFLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUMvRSxDQUFNLENBQUMsQ0FBRSxFQUtyQmdGLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNoRixDQUFNLENBQUMsQ0FBRSxFQUtyQmlGLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNqRixDQUFNLENBQUMsQ0FBRSxFQUtyQmtGLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNsRixDQUFNLENBQUMsQ0FBRSxFQUtyQm1GLEdBQUksQ0FBQyxDQUFFQSxHQUFJLENBQUNuRixDQUFNLENBQUMsQ0FBRSxFQUtyQixVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNPLENBQUssQ0FBQyxDQUFFLEVBS2xDLGtCQUFtQixDQUFDLGlCQUFpQixFQUtyQyxVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBS2xDLGtCQUFtQixDQUFDLGlCQUFpQixFQU1yQzZFLEVBQUcsQ0FDQyxDQUNJQSxFQUFHLENBQ0MsT0FDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQXhFLEVBQ0EzQixDQUFPLENBRWQsQ0FBQSxFQU1MLFFBQVMsQ0FBQyxDQUFFLFFBQVMsQ0FBQzJCLEVBQWtCM0IsRUFBUyxNQUFPLE1BQU8sS0FBSyxFQUFHLEVBS3ZFLFFBQVMsQ0FDTCxDQUNJLFFBQVMsQ0FDTDJCLEVBQ0EzQixFQUNBLE9BQ0EsT0FDQSxNQUNBLE1BQ0EsTUFDQSxRQUNBLENBQUVvRyxPQUFRLENBQUN2RCxFQUFZLENBQUcsRUFDMUJBLEVBQVksQ0FFbkIsQ0FBQSxFQU1Md0QsRUFBRyxDQUNDLENBQ0lBLEVBQUcsQ0FDQzFFLEVBQ0EzQixFQUNBLE9BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLEtBQUssQ0FFWixDQUFBLEVBTUwsUUFBUyxDQUNMLENBQUUsUUFBUyxDQUFDMkIsRUFBa0IzQixFQUFTLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxLQUFLLENBQUcsQ0FBQSxFQU10RixRQUFTLENBQ0wsQ0FBRSxRQUFTLENBQUMyQixFQUFrQjNCLEVBQVMsTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLEtBQUssQ0FBRyxDQUFBLEVBTXRGc0csS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQzNFLEVBQWtCM0IsRUFBUyxPQUFRLE1BQU8sTUFBTyxLQUFLLEVBQUcsRUFNekUsWUFBYSxDQUFDLENBQUV1RyxLQUFNLENBQUMsT0FBUTFELEdBQWNkLEVBQWlCLEVBQUcsRUFLakUsaUJBQWtCLENBQUMsY0FBZSxzQkFBc0IsRUFLeEQsYUFBYyxDQUFDLFNBQVUsWUFBWSxFQUtyQyxjQUFlLENBQ1gsQ0FDSXlFLEtBQU0sQ0FDRixPQUNBLGFBQ0EsUUFDQSxTQUNBLFNBQ0EsV0FDQSxPQUNBLFlBQ0EsUUFDQUMsRUFBaUIsQ0FFeEIsQ0FBQSxFQU1MLGNBQWUsQ0FBQyxDQUFFRCxLQUFNLENBQUM1RCxFQUFLLENBQUMsQ0FBRSxFQUtqQyxhQUFjLENBQUMsYUFBYSxFQUs1QixjQUFlLENBQUMsU0FBUyxFQUt6QixtQkFBb0IsQ0FBQyxjQUFjLEVBS25DLGFBQWMsQ0FBQyxjQUFlLGVBQWUsRUFLN0MsY0FBZSxDQUFDLG9CQUFxQixjQUFjLEVBS25ELGVBQWdCLENBQUMscUJBQXNCLGtCQUFrQixFQUt6RDhELFNBQVUsQ0FDTixDQUNJQSxTQUFVLENBQ04sVUFDQSxRQUNBLFNBQ0EsT0FDQSxRQUNBLFNBQ0EvRSxDQUFnQixDQUV2QixDQUFBLEVBTUwsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDLE9BQVFNLEdBQVV3RSxFQUFpQixFQUFHLEVBS3RFRSxRQUFTLENBQ0wsQ0FDSUEsUUFBUyxDQUNMLE9BQ0EsUUFDQSxPQUNBLFNBQ0EsVUFDQSxRQUNBN0UsR0FDQUgsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1MLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQyxPQUFRQSxDQUFnQixDQUFDLENBQUUsRUFLM0Qsa0JBQW1CLENBQUMsQ0FBRWlGLEtBQU0sQ0FBQyxPQUFRLE9BQVEsVUFBV2pGLENBQWdCLEVBQUcsRUFLM0Usc0JBQXVCLENBQUMsQ0FBRWlGLEtBQU0sQ0FBQyxTQUFVLFNBQVMsQ0FBQyxDQUFFLEVBTXZELG9CQUFxQixDQUFDLENBQUVDLFlBQWEsQ0FBQy9HLENBQU0sQ0FBQyxDQUFFLEVBSy9DLHNCQUF1QixDQUFDLENBQUUsc0JBQXVCLENBQUNrQixDQUFPLENBQUMsQ0FBRSxFQUs1RCxpQkFBa0IsQ0FBQyxDQUFFdUYsS0FBTSxDQUFDLE9BQVEsU0FBVSxRQUFTLFVBQVcsUUFBUyxLQUFLLEVBQUcsRUFLbkYsYUFBYyxDQUFDLENBQUVBLEtBQU0sQ0FBQ3pHLENBQU0sQ0FBQyxDQUFFLEVBS2pDLGVBQWdCLENBQUMsQ0FBRSxlQUFnQixDQUFDa0IsQ0FBTyxDQUFDLENBQUUsRUFLOUMsa0JBQW1CLENBQUMsWUFBYSxXQUFZLGVBQWdCLGNBQWMsRUFLM0Usd0JBQXlCLENBQUMsQ0FBRThGLFdBQVksQ0FBQyxHQUFHM0UsR0FBZSxFQUFFLE1BQU0sRUFBRyxFQUt0RSw0QkFBNkIsQ0FDekIsQ0FBRTJFLFdBQVksQ0FBQyxPQUFRLFlBQWFoRixHQUFVQyxFQUFpQixDQUFHLENBQUEsRUFNdEUsbUJBQW9CLENBQUMsQ0FBRSxtQkFBb0IsQ0FBQyxPQUFRRCxHQUFVSCxDQUFnQixFQUFHLEVBS2pGLHdCQUF5QixDQUFDLENBQUVtRixXQUFZLENBQUNoSCxDQUFNLENBQUMsQ0FBRSxFQUtsRCxpQkFBa0IsQ0FBQyxZQUFhLFlBQWEsYUFBYyxhQUFhLEVBS3hFLGdCQUFpQixDQUFDLFdBQVksZ0JBQWlCLFdBQVcsRUFLMUQsWUFBYSxDQUFDLENBQUV5RyxLQUFNLENBQUMsT0FBUSxTQUFVLFVBQVcsUUFBUSxFQUFHLEVBSy9EUSxPQUFRLENBQUMsQ0FBRUEsT0FBUW5GLEVBQXlCLENBQUEsQ0FBRSxFQUs5QyxpQkFBa0IsQ0FDZCxDQUNJb0YsTUFBTyxDQUNILFdBQ0EsTUFDQSxTQUNBLFNBQ0EsV0FDQSxjQUNBLE1BQ0EsUUFDQXJGLENBQWdCLENBRXZCLENBQUEsRUFNTHNGLFdBQVksQ0FDUixDQUFFQSxXQUFZLENBQUMsU0FBVSxTQUFVLE1BQU8sV0FBWSxXQUFZLGNBQWMsQ0FBRyxDQUFBLEVBTXZGQyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDLFNBQVUsUUFBUyxNQUFPLE1BQU0sRUFBRyxFQUtyREMsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQyxPQUFRLFNBQVUsTUFBTSxFQUFHLEVBS2pEckMsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQyxPQUFRbkQsQ0FBZ0IsQ0FBQyxDQUFFLEVBTWpELGdCQUFpQixDQUFDLENBQUV5RixHQUFJLENBQUMsUUFBUyxRQUFTLFFBQVEsRUFBRyxFQUt0RCxVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUMsU0FBVSxVQUFXLFVBQVcsTUFBTSxFQUFHLEVBTW5FLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ3BHLENBQU8sQ0FBQyxDQUFFLEVBSzFDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQyxTQUFVLFVBQVcsU0FBUyxFQUFHLEVBSy9ELGNBQWUsQ0FBQyxDQUFFb0csR0FBSSxDQUFDLEdBQUdsRixHQUFjLEVBQUVtRixFQUFtQixFQUFHLEVBS2hFLFlBQWEsQ0FBQyxDQUFFRCxHQUFJLENBQUMsWUFBYSxDQUFFRSxPQUFRLENBQUMsR0FBSSxJQUFLLElBQUssUUFBUyxPQUFPLENBQUMsQ0FBRSxDQUFDLENBQUUsRUFLakYsVUFBVyxDQUFDLENBQUVGLEdBQUksQ0FBQyxPQUFRLFFBQVMsVUFBV0csRUFBZSxFQUFHLEVBS2pFLFdBQVksQ0FDUixDQUNJSCxHQUFJLENBQ0EsT0FDQSxDQUFFLGNBQWUsQ0FBQyxJQUFLLEtBQU0sSUFBSyxLQUFNLElBQUssS0FBTSxJQUFLLElBQUksQ0FBRyxFQUMvREksRUFBZ0IsQ0FFdkIsQ0FBQSxFQU1MLFdBQVksQ0FBQyxDQUFFSixHQUFJLENBQUN0SCxDQUFNLENBQUMsQ0FBRSxFQUs3QixvQkFBcUIsQ0FBQyxDQUFFMkgsS0FBTSxDQUFDNUcsQ0FBMEIsQ0FBQyxDQUFFLEVBSzVELG1CQUFvQixDQUFDLENBQUU2RyxJQUFLLENBQUM3RyxDQUEwQixDQUFDLENBQUUsRUFLMUQsa0JBQW1CLENBQUMsQ0FBRThHLEdBQUksQ0FBQzlHLENBQTBCLENBQUMsQ0FBRSxFQUt4RCxnQkFBaUIsQ0FBQyxDQUFFNEcsS0FBTSxDQUFDN0csQ0FBa0IsQ0FBQyxDQUFFLEVBS2hELGVBQWdCLENBQUMsQ0FBRThHLElBQUssQ0FBQzlHLENBQWtCLENBQUMsQ0FBRSxFQUs5QyxjQUFlLENBQUMsQ0FBRStHLEdBQUksQ0FBQy9HLENBQWtCLENBQUMsQ0FBRSxFQU01Q2dILFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUN4SCxDQUFZLENBQUMsQ0FBRSxFQUtyQyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsV0FBWSxDQUFDLENBQUV5SCxPQUFRLENBQUN2SCxDQUFXLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ1UsQ0FBTyxDQUFDLENBQUUsRUFLbEQsZUFBZ0IsQ0FBQyxDQUFFNkcsT0FBUSxDQUFDLEdBQUcxRixHQUFlLEVBQUUsUUFBUSxFQUFHLEVBSzNELFdBQVksQ0FBQyxDQUFFLFdBQVksQ0FBQzdCLENBQVcsQ0FBQyxDQUFFLEVBSzFDLG1CQUFvQixDQUFDLGtCQUFrQixFQUt2QyxXQUFZLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzFDLG1CQUFvQixDQUFDLGtCQUFrQixFQUt2QyxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDVSxDQUFPLENBQUMsQ0FBRSxFQUtsRCxlQUFnQixDQUFDLENBQUU4RyxPQUFRM0YsR0FBZSxDQUFBLENBQUUsRUFLNUMsZUFBZ0IsQ0FBQyxDQUFFMEYsT0FBUSxDQUFDMUgsQ0FBVyxDQUFDLENBQUUsRUFLMUMsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsZUFBZ0IsQ0FBQyxDQUFFMkgsT0FBUSxDQUFDM0gsQ0FBVyxDQUFDLENBQUUsRUFLMUMsZ0JBQWlCLENBQUMsQ0FBRTRILFFBQVMsQ0FBQyxHQUFJLEdBQUc1RixHQUFlLENBQUEsRUFBRyxFQUt2RCxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDTCxHQUFVSCxDQUFnQixDQUFDLENBQUUsRUFLckUsWUFBYSxDQUFDLENBQUVvRyxRQUFTLENBQUNqRyxHQUFVQyxFQUFpQixDQUFDLENBQUUsRUFLeEQsZ0JBQWlCLENBQUMsQ0FBRWdHLFFBQVMsQ0FBQ2pJLENBQU0sQ0FBQyxDQUFFLEVBS3ZDLFNBQVUsQ0FBQyxDQUFFa0ksS0FBTW5HLEdBQWdDLENBQUEsQ0FBRSxFQUtyRCxlQUFnQixDQUFDLFlBQVksRUFLN0IsYUFBYyxDQUFDLENBQUVtRyxLQUFNLENBQUNsSSxDQUFNLENBQUMsQ0FBRSxFQUtqQyxlQUFnQixDQUFDLENBQUUsZUFBZ0IsQ0FBQ2tCLENBQU8sQ0FBQyxDQUFFLEVBSzlDLGdCQUFpQixDQUFDLENBQUUsY0FBZSxDQUFDYyxHQUFVQyxFQUFpQixDQUFDLENBQUUsRUFLbEUsb0JBQXFCLENBQUMsQ0FBRSxjQUFlLENBQUNqQyxDQUFNLENBQUMsQ0FBRSxFQU1qRG1JLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsR0FBSSxRQUFTLE9BQVFwRixHQUFjcUYsRUFBaUIsRUFBRyxFQUszRSxlQUFnQixDQUFDLENBQUVELE9BQVEsQ0FBQ3JGLEVBQUssQ0FBQyxDQUFFLEVBS3BDNUIsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQ0EsQ0FBTyxDQUFDLENBQUUsRUFLaEMsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLEdBQUdvQixHQUFhLEVBQUksZUFBZ0IsYUFBYSxFQUFHLEVBS2xGLFdBQVksQ0FBQyxDQUFFLFdBQVlBLEdBQWUsQ0FBQSxDQUFFLEVBTzVDK0YsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxHQUFJLE1BQU0sQ0FBQyxDQUFFLEVBS2pDbEksS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQ0EsQ0FBSSxDQUFDLENBQUUsRUFLdkJDLFdBQVksQ0FBQyxDQUFFQSxXQUFZLENBQUNBLENBQVUsQ0FBQyxDQUFFLEVBS3pDSyxTQUFVLENBQUMsQ0FBRUEsU0FBVSxDQUFDQSxDQUFRLENBQUMsQ0FBRSxFQUtuQyxjQUFlLENBQUMsQ0FBRSxjQUFlLENBQUMsR0FBSSxPQUFRc0MsR0FBY2xCLENBQWdCLEVBQUcsRUFLL0VuQixVQUFXLENBQUMsQ0FBRUEsVUFBVyxDQUFDQSxDQUFTLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNDLENBQVMsQ0FBQyxDQUFFLEVBSzVDQyxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDQSxDQUFNLENBQUMsQ0FBRSxFQUs3QlEsU0FBVSxDQUFDLENBQUVBLFNBQVUsQ0FBQ0EsQ0FBUSxDQUFDLENBQUUsRUFLbkNFLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBTTFCLGtCQUFtQixDQUFDLENBQUUsa0JBQW1CLENBQUMsR0FBSSxNQUFNLENBQUMsQ0FBRSxFQUt2RCxnQkFBaUIsQ0FBQyxDQUFFLGdCQUFpQixDQUFDbkIsQ0FBSSxDQUFDLENBQUUsRUFLN0Msc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQ0MsQ0FBVSxDQUFDLENBQUUsRUFLL0Qsb0JBQXFCLENBQUMsQ0FBRSxvQkFBcUIsQ0FBQ0ssQ0FBUSxDQUFDLENBQUUsRUFLekQscUJBQXNCLENBQUMsQ0FBRSxxQkFBc0IsQ0FBQ0MsQ0FBUyxDQUFDLENBQUUsRUFLNUQsc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQ0MsQ0FBUyxDQUFDLENBQUUsRUFLOUQsa0JBQW1CLENBQUMsQ0FBRSxrQkFBbUIsQ0FBQ0MsQ0FBTSxDQUFDLENBQUUsRUFLbkQsbUJBQW9CLENBQUMsQ0FBRSxtQkFBb0IsQ0FBQ00sQ0FBTyxDQUFDLENBQUUsRUFLdEQsb0JBQXFCLENBQUMsQ0FBRSxvQkFBcUIsQ0FBQ0UsQ0FBUSxDQUFDLENBQUUsRUFLekQsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ0UsQ0FBSyxDQUFDLENBQUUsRUFNaEQsa0JBQW1CLENBQUMsQ0FBRXlHLE9BQVEsQ0FBQyxXQUFZLFVBQVUsQ0FBQyxDQUFFLEVBS3hELGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUN4SCxDQUFhLENBQUMsQ0FBRSxFQUt4RCxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDQSxDQUFhLENBQUMsQ0FBRSxFQUs1RCxtQkFBb0IsQ0FBQyxDQUFFLG1CQUFvQixDQUFDQSxDQUFhLENBQUMsQ0FBRSxFQUs1RCxlQUFnQixDQUFDLENBQUUrSCxNQUFPLENBQUMsT0FBUSxPQUFPLENBQUMsQ0FBRSxFQUs3Q0MsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQyxNQUFPLFFBQVEsQ0FBQyxDQUFFLEVBTXhDQyxXQUFZLENBQ1IsQ0FDSUEsV0FBWSxDQUNSLE9BQ0EsTUFDQSxHQUNBLFNBQ0EsVUFDQSxTQUNBLFlBQ0EzRyxDQUFnQixDQUV2QixDQUFBLEVBTUw0RyxTQUFVLENBQUMsQ0FBRUEsU0FBVS9GLEdBQXVCLENBQUEsQ0FBRSxFQUtoRGdHLEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUMsU0FBVSxLQUFNLE1BQU8sU0FBVTdHLENBQWdCLEVBQUcsRUFLcEU4RyxNQUFPLENBQUMsQ0FBRUEsTUFBT2pHLEdBQXVCLENBQUEsQ0FBRSxFQUsxQ2tHLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUMsT0FBUSxPQUFRLE9BQVEsUUFBUyxTQUFVL0csQ0FBZ0IsRUFBRyxFQU1wRmdILFVBQVcsQ0FBQyxDQUFFQSxVQUFXLENBQUMsR0FBSSxNQUFPLE1BQU0sRUFBRyxFQUs5Q3hILE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBSzFCLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEMsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQ3lILE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUN4RSxHQUFXekMsQ0FBZ0IsQ0FBQyxDQUFFLEVBS2xELGNBQWUsQ0FBQyxDQUFFLGNBQWUsQ0FBQ0osQ0FBUyxDQUFDLENBQUUsRUFLOUMsY0FBZSxDQUFDLENBQUUsY0FBZSxDQUFDQSxDQUFTLENBQUMsQ0FBRSxFQUs5QyxTQUFVLENBQUMsQ0FBRSxTQUFVLENBQUNGLENBQUksQ0FBQyxDQUFFLEVBSy9CLFNBQVUsQ0FBQyxDQUFFLFNBQVUsQ0FBQ0EsQ0FBSSxDQUFDLENBQUUsRUFLL0IsbUJBQW9CLENBQ2hCLENBQ0l3SCxPQUFRLENBQ0osU0FDQSxNQUNBLFlBQ0EsUUFDQSxlQUNBLFNBQ0EsY0FDQSxPQUNBLFdBQ0FsSCxDQUFnQixDQUV2QixDQUFBLEVBT0xtSCxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVFoSixDQUFNLENBQUMsQ0FBRSxFQUtyQ2lKLFdBQVksQ0FBQyxDQUFFQSxXQUFZLENBQUMsT0FBUSxNQUFNLENBQUMsQ0FBRSxFQUs3Q0MsT0FBUSxDQUNKLENBQ0lBLE9BQVEsQ0FDSixPQUNBLFVBQ0EsVUFDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLGNBQ0EsT0FDQSxlQUNBLFdBQ0EsT0FDQSxZQUNBLGdCQUNBLFFBQ0EsT0FDQSxVQUNBLE9BQ0EsV0FDQSxhQUNBLGFBQ0EsYUFDQSxXQUNBLFdBQ0EsV0FDQSxXQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLGNBQ0EsY0FDQSxVQUNBLFdBQ0FySCxDQUFnQixDQUV2QixDQUFBLEVBTUwsY0FBZSxDQUFDLENBQUVzSCxNQUFPLENBQUNuSixDQUFNLENBQUMsQ0FBRSxFQUtuQyxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDLE9BQVEsTUFBTSxDQUFDLENBQUUsRUFLekRvSixPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVEsSUFBSyxJQUFLLEVBQUUsRUFBRyxFQUszQyxrQkFBbUIsQ0FBQyxDQUFFQyxPQUFRLENBQUMsT0FBUSxRQUFRLENBQUMsQ0FBRSxFQUtsRCxXQUFZLENBQUMsQ0FBRSxXQUFZdkgsRUFBeUIsQ0FBQSxDQUFFLEVBS3RELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsV0FBWSxDQUFDLENBQUUsV0FBWUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3RELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsYUFBYyxDQUFDLENBQUV3SCxLQUFNLENBQUMsUUFBUyxNQUFPLFNBQVUsWUFBWSxFQUFHLEVBS2pFLFlBQWEsQ0FBQyxDQUFFQSxLQUFNLENBQUMsU0FBVSxRQUFRLENBQUMsQ0FBRSxFQUs1QyxZQUFhLENBQUMsQ0FBRUEsS0FBTSxDQUFDLE9BQVEsSUFBSyxJQUFLLE1BQU0sRUFBRyxFQUtsRCxrQkFBbUIsQ0FBQyxDQUFFQSxLQUFNLENBQUMsWUFBYSxXQUFXLENBQUMsQ0FBRSxFQUt4REMsTUFBTyxDQUNILENBQ0lBLE1BQU8sQ0FBQyxPQUFRLE9BQVEsY0FBYyxDQUN6QyxDQUFBLEVBTUwsVUFBVyxDQUNQLENBQ0ksWUFBYSxDQUFDLElBQUssT0FBUSxPQUFPLENBQ3JDLENBQUEsRUFNTCxVQUFXLENBQ1AsQ0FDSSxZQUFhLENBQUMsSUFBSyxLQUFNLE1BQU0sQ0FDbEMsQ0FBQSxFQU1MLFdBQVksQ0FBQyxrQkFBa0IsRUFLL0JDLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsT0FBUSxPQUFRLE1BQU8sTUFBTSxFQUFHLEVBS3BELGNBQWUsQ0FDWCxDQUFFLGNBQWUsQ0FBQyxPQUFRLFNBQVUsV0FBWSxZQUFhM0gsQ0FBZ0IsQ0FBRyxDQUFBLEVBT3BGNEgsS0FBTSxDQUFDLENBQUVBLEtBQU0sQ0FBQ3pKLEVBQVEsTUFBTSxDQUFDLENBQUUsRUFLakMsV0FBWSxDQUFDLENBQUUwSixPQUFRLENBQUMxSCxHQUFVQyxHQUFtQjBFLEVBQWlCLEVBQUcsRUFLekUrQyxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDMUosRUFBUSxNQUFNLENBQUMsQ0FBRSxFQU1yQzJKLEdBQUksQ0FBQyxVQUFXLGFBQWEsRUFLN0Isc0JBQXVCLENBQUMsQ0FBRSxzQkFBdUIsQ0FBQyxPQUFRLE1BQU0sQ0FBQyxDQUFFLENBQ3RFLEVBQ0RDLHVCQUF3QixDQUNwQmpHLFNBQVUsQ0FBQyxhQUFjLFlBQVksRUFDckNDLFdBQVksQ0FBQyxlQUFnQixjQUFjLEVBQzNDNUMsTUFBTyxDQUFDLFVBQVcsVUFBVyxRQUFTLE1BQU8sTUFBTyxRQUFTLFNBQVUsTUFBTSxFQUM5RSxVQUFXLENBQUMsUUFBUyxNQUFNLEVBQzNCLFVBQVcsQ0FBQyxNQUFPLFFBQVEsRUFDM0J3RCxLQUFNLENBQUMsUUFBUyxPQUFRLFFBQVEsRUFDaEMzRCxJQUFLLENBQUMsUUFBUyxPQUFPLEVBQ3RCc0UsRUFBRyxDQUFDLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sSUFBSSxFQUNsREMsR0FBSSxDQUFDLEtBQU0sSUFBSSxFQUNmQyxHQUFJLENBQUMsS0FBTSxJQUFJLEVBQ2ZPLEVBQUcsQ0FBQyxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLElBQUksRUFDbERDLEdBQUksQ0FBQyxLQUFNLElBQUksRUFDZkMsR0FBSSxDQUFDLEtBQU0sSUFBSSxFQUNmVSxLQUFNLENBQUMsSUFBSyxHQUFHLEVBQ2YsWUFBYSxDQUFDLFNBQVMsRUFDdkIsYUFBYyxDQUNWLGNBQ0EsbUJBQ0EsYUFDQSxjQUNBLGNBQWMsRUFFbEIsY0FBZSxDQUFDLFlBQVksRUFDNUIsbUJBQW9CLENBQUMsWUFBWSxFQUNqQyxhQUFjLENBQUMsWUFBWSxFQUMzQixjQUFlLENBQUMsWUFBWSxFQUM1QixlQUFnQixDQUFDLFlBQVksRUFDN0IsYUFBYyxDQUFDLFVBQVcsVUFBVSxFQUNwQ3NCLFFBQVMsQ0FDTCxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLFlBQVksRUFFaEIsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsaUJBQWtCLENBQUMsbUJBQW9CLGtCQUFrQixFQUN6RCxXQUFZLENBQ1IsYUFDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLFlBQVksRUFFaEIsYUFBYyxDQUFDLGFBQWMsWUFBWSxFQUN6QyxhQUFjLENBQUMsYUFBYyxZQUFZLEVBQ3pDLGVBQWdCLENBQ1osaUJBQ0EsaUJBQ0EsaUJBQ0EsZ0JBQWdCLEVBRXBCLGlCQUFrQixDQUFDLGlCQUFrQixnQkFBZ0IsRUFDckQsaUJBQWtCLENBQUMsaUJBQWtCLGdCQUFnQixFQUNyRCxXQUFZLENBQ1IsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxXQUFXLEVBRWYsWUFBYSxDQUFDLFlBQWEsV0FBVyxFQUN0QyxZQUFhLENBQUMsWUFBYSxXQUFXLEVBQ3RDLFdBQVksQ0FDUixZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFdBQVcsRUFFZixZQUFhLENBQUMsWUFBYSxXQUFXLEVBQ3RDLFlBQWEsQ0FBQyxZQUFhLFdBQVcsRUFDdEN5QixNQUFPLENBQUMsVUFBVyxVQUFXLFVBQVUsRUFDeEMsVUFBVyxDQUFDLE9BQU8sRUFDbkIsVUFBVyxDQUFDLE9BQU8sRUFDbkIsV0FBWSxDQUFDLE9BQU8sQ0FDdkIsRUFDRE0sK0JBQWdDLENBQzVCLFlBQWEsQ0FBQyxTQUFTLENBQzFCLEVBRVQsRUNqMERhQyxHQUFlQSxDQUN4QkMsRUFDQSxDQUNJcEgsVUFBQUEsRUFDQXFILE9BQUFBLEVBQ0FwSCxVQUFBQSxFQUNBcUgsMkJBQUFBLEVBQ0FDLE9BQUFBLEVBQVMsQ0FBQSxFQUNUQyxTQUFBQSxFQUFXLENBQUUsQ0FBQSxJQUVqQixDQUNBQyxHQUFpQkwsRUFBWSxZQUFhcEgsQ0FBUyxFQUNuRHlILEdBQWlCTCxFQUFZLFNBQVVDLENBQU0sRUFDN0NJLEdBQWlCTCxFQUFZLFlBQWFuSCxDQUFTLEVBQ25Ed0gsR0FBaUJMLEVBQVksNkJBQThCRSxDQUEwQixFQUVyRixRQUFXSSxLQUFhRixFQUNwQkcsR0FDSVAsRUFBV00sQ0FBa0MsRUFDN0NGLEVBQVNFLENBQWtDLENBQUMsRUFJcEQsUUFBV0UsS0FBT0wsRUFDZE0sR0FDSVQsRUFBV1EsQ0FBMEIsRUFDckNMLEVBQU9LLENBQTBCLENBQUMsRUFJMUMsT0FBT1IsQ0FDWCxFQUVNSyxHQUFtQkEsQ0FDckJLLEVBQ0FDLEVBQ0FDLElBQ0EsQ0FDSUEsSUFBa0JDLFNBQ2xCSCxFQUFXQyxDQUFXLEVBQUlDLEVBRWxDLEVBRU1MLEdBQTJCQSxDQUM3QkcsRUFDQUksSUFDQSxDQUNBLEdBQUlBLEVBQ0EsUUFBV04sS0FBT00sRUFDZFQsR0FBaUJLLEVBQVlGLEVBQUtNLEVBQWVOLENBQUcsQ0FBQyxDQUdqRSxFQUVNQyxHQUF3QkEsQ0FDMUJDLEVBQ0FLLElBQ0EsQ0FDQSxHQUFJQSxFQUNBLFFBQVdQLEtBQU9PLEVBQWEsQ0FDM0IsSUFBTUMsRUFBYUQsRUFBWVAsQ0FBRyxFQUU5QlEsSUFBZUgsU0FDZkgsRUFBV0YsQ0FBRyxHQUFLRSxFQUFXRixDQUFHLEdBQUssQ0FBQSxHQUFJUyxPQUFPRCxDQUFVLEVBRWxFLENBRVQsRUNsRWFFLEdBQXNCQSxDQUkvQkMsS0FNR0MsSUFFSCxPQUFPRCxHQUFvQixXQUNyQkUsR0FBb0JyTCxHQUFrQm1MLEVBQWlCLEdBQUdDLENBQVksRUFDdEVDLEdBQ0ksSUFBTXRCLEdBQWEvSixHQUFrQixFQUFFbUwsQ0FBZSxFQUN0RCxHQUFHQyxDQUFZLEVabkJ0QixJQUFNRSxHQUFVQyxHQUFvQixDQUN6QyxPQUFRLEtBQ1YsQ0FBQyxFQUVNLFNBQVNDLEtBQU1DLEVBQXNCLENBQzFDLE9BQU9ILEdBQVFJLEdBQUtELENBQU0sQ0FBQyxDQUM3QixDY1ZBLE9BQVMsaUJBQUFFLE9BQXFCLGdGQ1FqQixJQUFBQyxHQUFlQyxHQUMxQkEsRUFBTyxRQUFRLHFCQUFzQixPQUFPLEVBQUUsWUFBWSxFQStCL0NDLEdBQWUsSUFBMkNDLElBQ3JFQSxFQUNHLE9BQU8sQ0FBQ0MsRUFBV0MsRUFBT0MsSUFFdkIsRUFBUUYsR0FDUEEsRUFBcUIsS0FBQSxJQUFXLElBQ2pDRSxFQUFNLFFBQVFGLENBQVMsSUFBTUMsQ0FFaEMsRUFDQSxLQUFLLEdBQUcsRUFDUixLQUFLLDBEQ2xEVixJQUFlRSxHQUFBLENBQ2IsTUFBTyw2QkFDUCxNQUFPLEdBQ1AsT0FBUSxHQUNSLFFBQVMsWUFDVCxLQUFNLE9BQ04sT0FBUSxlQUNSLFlBQWEsRUFDYixjQUFlLFFBQ2YsZUFBZ0IsT0FDbEIsRUNjQSxJQUFNQyxHQUFPQyxHQUNYLENBQ0UsQ0FDRSxNQUFBQyxFQUFRLGVBQ1IsS0FBQUMsRUFBTyxHQUNQLFlBQUFDLEVBQWMsRUFDZCxvQkFBQUMsRUFDQSxVQUFBQyxFQUFZLEdBQ1osU0FBQUMsRUFDQSxTQUFBQyxFQUNBLEdBQUdDLENBQUEsRUFFTEMsSUFFT0MsR0FDTCxNQUNBLENBQ0UsSUFBQUQsRUFDQSxHQUFHRSxHQUNILE1BQU9ULEVBQ1AsT0FBUUEsRUFDUixPQUFRRCxFQUNSLFlBQWFHLEVBQXVCLE9BQU9ELENBQVcsRUFBSSxHQUFNLE9BQU9ELENBQUksRUFBSUMsRUFDL0UsVUFBV1MsR0FBYSxTQUFVUCxDQUFTLEVBQzNDLEdBQUdHLENBQ0wsRUFDQSxDQUNFLEdBQUdELEVBQVMsSUFBSSxDQUFDLENBQUNNLEVBQUtDLENBQUssSUFBTUosR0FBY0csRUFBS0MsQ0FBSyxDQUFDLEVBQzNELEdBQUksTUFBTSxRQUFRUixDQUFRLEVBQUlBLEVBQVcsQ0FBQ0EsQ0FBUSxDQUNwRCxDQUFBLENBR04sRUM3Q00sSUFBQVMsRUFBbUIsQ0FBQ0MsRUFBa0JDLElBQXVCLENBQ2pFLElBQU1DLEVBQVlDLEdBQXVDLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQVMsRUFBQUMsSUFDakZDLEdBQWNDLEdBQU0sQ0FDbEIsSUFBQUYsRUFDQSxTQUFBTCxFQUNBLFVBQVdRLEdBQWEsVUFBVUMsR0FBWVYsQ0FBUSxDQUFDLEdBQUlJLENBQVMsRUFDcEUsR0FBR0MsQ0FBQSxDQUNKLENBQUEsRUFHTyxPQUFBSCxFQUFBLFlBQWMsR0FBR0YsQ0FBUSxHQUU1QkUsQ0FDVCxFQ1hNLElBQUFTLEdBQXNCQyxFQUFpQixzQkFBdUIsQ0FDbEUsQ0FBQyxPQUFRLENBQUUsRUFBRyxnQkFBaUIsSUFBSyxRQUFBLENBQVUsRUFDOUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxVQUFXLElBQUssUUFBQSxDQUFVLEVBQ3hDLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxFQUN6QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLENBQzNDLENBQUMsRUNOSyxJQUFBQyxHQUFhQyxFQUFpQixhQUFjLENBQ2hELENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxFQUN6QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLFFBQUEsQ0FBVSxDQUNoRCxDQUFDLEVDSEssSUFBQUMsR0FBb0JDLEVBQWlCLG9CQUFxQixDQUM5RCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGVBQWdCLElBQUssUUFBQSxDQUFVLEVBQzdDLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFlBQWEsSUFBSyxRQUFBLENBQVUsRUFDMUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLEVBQ3pDLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDTkQsSUFBTUMsR0FBUUMsRUFBaUIsUUFBUyxDQUFDLENBQUMsT0FBUSxDQUFFLEVBQUcsa0JBQW1CLElBQUssUUFBUyxDQUFDLENBQUMsQ0FBQyxFQ0FyRixJQUFBQyxHQUFjQyxFQUFpQixjQUFlLENBQ2xELENBQUMsT0FBUSxDQUFFLEVBQUcsZUFBZ0IsSUFBSyxRQUFBLENBQVUsQ0FDL0MsQ0FBQyxFQ0ZLLElBQUFDLEdBQWNDLEVBQWlCLGNBQWUsQ0FDbEQsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFBLENBQVUsQ0FDakQsQ0FBQyxFQ0ZLLElBQUFDLEdBQWVDLEVBQWlCLGVBQWdCLENBQ3BELENBQUMsT0FBUSxDQUFFLEVBQUcsZ0JBQWlCLElBQUssUUFBQSxDQUFVLENBQ2hELENBQUMsRUNGRCxJQUFNQyxHQUFZQyxFQUFpQixZQUFhLENBQUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFTLENBQUMsQ0FBQyxDQUFDLEVDQTVGLElBQUFDLEdBQWVDLEVBQWlCLGVBQWdCLENBQ3BELENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLEVBQy9DLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLENBQ2pELENBQUMsRUNISyxJQUFBQyxHQUFnQkMsRUFBaUIsZ0JBQWlCLENBQ3RELENBQUMsT0FBUSxDQUFFLEVBQUcsZ0JBQWlCLElBQUssT0FBQSxDQUFTLEVBQzdDLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLENBQ2pELENBQUMsRUNISyxJQUFBQyxHQUFjQyxFQUFpQixjQUFlLENBQ2xELENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sRUFBRyxLQUFNLElBQUssUUFBQSxDQUFVLEVBQ3pELENBQUMsT0FBUSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sR0FBSSxJQUFLLEdBQUksS0FBTSxJQUFLLFFBQUEsQ0FBVSxFQUNqRSxDQUFDLE9BQVEsQ0FBRSxHQUFJLEtBQU0sR0FBSSxRQUFTLEdBQUksS0FBTSxHQUFJLEtBQU0sSUFBSyxRQUFBLENBQVUsQ0FDdkUsQ0FBQyxFQ0pLLElBQUFDLEdBQWFDLEVBQWlCLGFBQWMsQ0FDaEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLEtBQU0sSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRyx1Q0FBd0MsSUFBSyxRQUFBLENBQVUsRUFDckUsQ0FBQyxPQUFRLENBQUUsRUFBRyxhQUFjLElBQUssUUFBQSxDQUFVLENBQzdDLENBQUMsRUNKSyxJQUFBQyxHQUFTQyxFQUFpQixTQUFVLENBQ3hDLENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sRUFBRyxLQUFNLElBQUssUUFBQSxDQUFVLENBQzNELENBQUMsRUNGSyxJQUFBQyxHQUFPQyxFQUFpQixPQUFRLENBQ3BDLENBQUMsT0FBUSxDQUFFLE1BQU8sS0FBTSxPQUFRLEtBQU0sRUFBRyxJQUFLLEVBQUcsSUFBSyxHQUFJLElBQUssR0FBSSxJQUFLLElBQUssUUFBQSxDQUFVLEVBQ3ZGLENBQUMsT0FBUSxDQUFFLEVBQUcsMERBQTJELElBQUssUUFBQSxDQUFVLENBQzFGLENBQUMsRUNISyxJQUFBQyxHQUFpQkMsRUFBaUIsaUJBQWtCLENBQ3hELENBQUMsV0FBWSxDQUFFLE9BQVEsaUJBQWtCLElBQUssUUFBQSxDQUFVLEVBQ3hELENBQUMsT0FBUSxDQUFFLEVBQUcsMEJBQTJCLElBQUssUUFBQSxDQUFVLENBQzFELENBQUMsRUNISyxJQUFBQyxHQUFTQyxFQUFpQixTQUFVLENBQ3hDLENBQUMsVUFBVyxDQUFFLE9BQVEsOENBQStDLElBQUssUUFBQSxDQUFVLENBQ3RGLENBQUMsRUNGSyxJQUFBQyxHQUFlQyxFQUFpQixlQUFnQixDQUNwRCxDQUFDLFNBQVUsQ0FBRSxHQUFJLElBQUssR0FBSSxLQUFNLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN2RCxDQUFDLFNBQVUsQ0FBRSxHQUFJLElBQUssR0FBSSxJQUFLLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN0RCxDQUFDLFNBQVUsQ0FBRSxHQUFJLElBQUssR0FBSSxLQUFNLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN2RCxDQUFDLFNBQVUsQ0FBRSxHQUFJLEtBQU0sR0FBSSxLQUFNLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN4RCxDQUFDLFNBQVUsQ0FBRSxHQUFJLEtBQU0sR0FBSSxJQUFLLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN2RCxDQUFDLFNBQVUsQ0FBRSxHQUFJLEtBQU0sR0FBSSxLQUFNLEVBQUcsSUFBSyxJQUFLLFFBQUEsQ0FBVSxDQUMxRCxDQUFDLEVDUEssSUFBQUMsR0FBT0MsRUFBaUIsT0FBUSxDQUNwQyxDQUFDLE9BQVEsQ0FBRSxHQUFJLElBQUssR0FBSSxLQUFNLEdBQUksSUFBSyxHQUFJLElBQUssSUFBSyxRQUFBLENBQVUsRUFDL0QsQ0FBQyxPQUFRLENBQUUsR0FBSSxJQUFLLEdBQUksS0FBTSxHQUFJLEtBQU0sR0FBSSxLQUFNLElBQUssUUFBQSxDQUFVLEVBQ2pFLENBQUMsT0FBUSxDQUFFLEdBQUksS0FBTSxHQUFJLElBQUssR0FBSSxJQUFLLEdBQUksS0FBTSxJQUFLLFFBQUEsQ0FBVSxFQUNoRSxDQUFDLE9BQVEsQ0FBRSxHQUFJLEtBQU0sR0FBSSxLQUFNLEdBQUksSUFBSyxHQUFJLEtBQU0sSUFBSyxRQUFBLENBQVUsQ0FDbkUsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw2S0FDSCxJQUFLLFFBQ1AsQ0FDRixFQUNBLENBQUMsU0FBVSxDQUFFLEdBQUksT0FBUSxHQUFJLE1BQU8sRUFBRyxLQUFNLEtBQU0sZUFBZ0IsSUFBSyxRQUFBLENBQVUsQ0FDcEYsQ0FBQyxFQ1RLLElBQUFDLEdBQU1DLEVBQWlCLE1BQU8sQ0FDbEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxpRUFBa0UsSUFBSyxRQUFBLENBQVUsRUFDL0YsQ0FBQyxPQUFRLENBQUUsRUFBRyxnQkFBaUIsSUFBSyxRQUFBLENBQVUsRUFDOUMsQ0FBQyxTQUFVLENBQUUsR0FBSSxNQUFPLEdBQUksT0FBUSxFQUFHLE1BQU8sSUFBSyxRQUFBLENBQVUsQ0FDL0QsQ0FBQyxFQ0pLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxvQkFBcUIsSUFBSyxRQUFBLENBQVUsRUFDbEQsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLENBQzNDLENBQUMsRUNISyxJQUFBQyxHQUFTQyxFQUFpQixTQUFVLENBQ3hDLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLEVBQy9DLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDSEssSUFBQUMsR0FBaUJDLEVBQWlCLGlCQUFrQixDQUN4RCxDQUFDLE9BQVEsQ0FBRSxNQUFPLEtBQU0sT0FBUSxLQUFNLEVBQUcsSUFBSyxFQUFHLElBQUssR0FBSSxJQUFLLElBQUssUUFBQSxDQUFVLEVBQzlFLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxDQUNqRCxDQUFDLEVDSkssSUFBQUMsR0FBZ0JDLEVBQWlCLGdCQUFpQixDQUN0RCxDQUFDLE9BQVEsQ0FBRSxNQUFPLEtBQU0sT0FBUSxLQUFNLEVBQUcsSUFBSyxFQUFHLElBQUssR0FBSSxJQUFLLElBQUssUUFBQSxDQUFVLEVBQzlFLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLFFBQUEsQ0FBVSxDQUNoRCxDQUFDLEVDSkssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsRUFDekMsQ0FBQyxPQUFRLENBQUUsRUFBRyw4Q0FBK0MsSUFBSyxRQUFBLENBQVUsRUFDNUUsQ0FBQyxPQUFRLENBQUUsRUFBRyxhQUFjLElBQUssUUFBQSxDQUFVLEVBQzNDLENBQ0UsT0FDQSxDQUNFLEVBQUcsOEVBQ0gsSUFBSyxRQUNQLENBQ0YsQ0FDRixDQUFDLEVDWEssSUFBQUMsR0FBTUMsRUFBaUIsTUFBTyxDQUNsQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsRUFDekMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw2TUFDSCxJQUFLLFFBQ1AsQ0FDRixDQUNGLENBQUMsRUNUSyxJQUFBQyxHQUFZQyxFQUFpQixZQUFhLENBQzlDLENBQUMsT0FBUSxDQUFFLEVBQUcscURBQXNELElBQUssUUFBQSxDQUFVLEVBQ25GLENBQUMsT0FBUSxDQUFFLEVBQUcsYUFBYyxJQUFLLFFBQUEsQ0FBVSxFQUMzQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLHNEQUF1RCxJQUFLLFFBQUEsQ0FBVSxFQUNwRixDQUFDLE9BQVEsQ0FBRSxFQUFHLFlBQWEsSUFBSyxRQUFBLENBQVUsQ0FDNUMsQ0FBQyxFQ0xLLElBQUFDLEdBQW1CQyxFQUFpQixtQkFBb0IsQ0FDNUQsQ0FBQyxPQUFRLENBQUUsTUFBTyxLQUFNLE9BQVEsS0FBTSxFQUFHLElBQUssRUFBRyxJQUFLLEdBQUksSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUM5RSxDQUFDLE9BQVEsQ0FBRSxFQUFHLFVBQVcsSUFBSyxRQUFBLENBQVUsRUFDeEMsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFBLENBQVUsQ0FDakQsQ0FBQyxFQ0pLLElBQUFDLEdBQVNDLEVBQWlCLFNBQVUsQ0FDeEMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw0R0FDSCxJQUFLLFFBQ1AsQ0FDRixDQUNGLENBQUMsRUNSSyxJQUFBQyxHQUFJQyxFQUFpQixJQUFLLENBQzlCLENBQUMsT0FBUSxDQUFFLEVBQUcsYUFBYyxJQUFLLFFBQUEsQ0FBVSxFQUMzQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGFBQWMsSUFBSyxRQUFBLENBQVUsQ0FDN0MsQ0FBQyxFcENiRCxPQUFTLGlCQUFBQyxPQUFxQixvQkFDOUIsT0FBUyxhQUFBQyxHQUFXLFlBQUFDLE9BQWdCLFFBQ3BDLE9BQVMsU0FBQUMsT0FBYSxTcUNMdEIsT0FBUyxPQUFBQyxPQUE4QiwyQkEwQjlCLGNBQUFDLE9BQUEsb0JBckJULElBQU1DLEdBQWdCQyxHQUNwQiw4TUFDQSxDQUNFLFNBQVUsQ0FDUixRQUFTLENBQ1AsUUFBUyxrR0FDVCxVQUFXLDhGQUNYLFlBQ0UsOEdBQ0YsUUFBUyxvQkFDWCxDQUNGLEVBQ0EsZ0JBQWlCLENBQ2YsUUFBUyxTQUNYLENBQ0YsQ0FDRixFQUlBLFNBQVNDLEdBQU0sQ0FBRSxVQUFBQyxFQUFXLFFBQUFDLEVBQVMsR0FBR0MsQ0FBTSxFQUFlLENBQzNELE9BQU9OLEdBQUMsT0FBSSxVQUFXTyxFQUFHTixHQUFjLENBQUUsUUFBQUksQ0FBUSxDQUFDLEVBQUdELENBQVMsRUFBSSxHQUFHRSxFQUFPLENBQy9FLENDM0JBLE9BQVMsUUFBQUUsT0FBWSx1QkFDckIsT0FBUyxPQUFBQyxPQUE4QiwyQkFDdkMsVUFBWUMsT0FBVyxRQXlDWixjQUFBQyxPQUFBLG9CQXJDWCxJQUFNQyxHQUFpQkMsR0FDckIsMlZBQ0EsQ0FDRSxTQUFVLENBQ1IsUUFBUyxDQUNQLFFBQVMsNEVBQ1QsWUFBYSwyRkFDYixRQUNFLDZHQUNGLFVBQVcscUZBQ1gsTUFBTyxxREFDUCxLQUFNLDBEQUNSLEVBQ0EsS0FBTSxDQUNKLFFBQVMseUJBQ1QsR0FBSSwwQ0FDSixHQUFJLDBDQUNKLEdBQUksZ0NBQ0osS0FBTSxlQUNSLENBQ0YsRUFDQSxnQkFBaUIsQ0FDZixRQUFTLFVBQ1QsS0FBTSxTQUNSLENBQ0YsQ0FDRixFQVFNQyxFQUFlLGNBQ25CLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFFBQUFDLEVBQVMsS0FBQUMsRUFBTSxRQUFBQyxFQUFVLEdBQU8sR0FBR0MsQ0FBTSxFQUFHQyxJQUVqRFQsR0FETU8sRUFBVUcsR0FBTyxTQUN0QixDQUFLLFVBQVdDLEVBQUdWLEdBQWUsQ0FBRSxRQUFBSSxFQUFTLEtBQUFDLEVBQU0sVUFBQUYsQ0FBVSxDQUFDLENBQUMsRUFBRyxJQUFLSyxFQUFNLEdBQUdELEVBQU8sQ0FFbkcsRUFDQUwsRUFBTyxZQUFjLFNDOUNyQixVQUFZUyxPQUFzQiwwQkFDbEMsVUFBWUMsT0FBVyxRQWVuQixjQUFBQyxPQUFBLG9CQVhKLElBQU1DLEdBQTJCLFFBRTNCQyxHQUFrQyxXQUl4QyxJQUFNQyxHQUF1QixjQUczQixDQUFDLENBQUUsVUFBQUMsRUFBVyxNQUFBQyxFQUFRLFNBQVUsV0FBQUMsRUFBYSxFQUFHLEdBQUdDLENBQU0sRUFBR0MsSUFDNURDLEdBQWtCLFVBQWpCLENBQ0MsU0FBQUEsR0FBa0IsV0FBakIsQ0FDQyxJQUFLRCxFQUNMLE1BQU9ILEVBQ1AsV0FBWUMsRUFDWixVQUFXSSxFQUNULDJoQkFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUFDRixDQUNELEVBQ0RKLEdBQWUsWUFBK0IsV0FBUSxZQzVCdEQsVUFBWVEsT0FBVyxRQU9qQixjQUFBQyxPQUFBLG9CQUhOLElBQU1DLEdBQWMsY0FDbEIsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUN4QkosR0FBQyxPQUFJLFVBQVUsMEVBQ2IsU0FBQUEsR0FBQyxTQUFNLElBQUtJLEVBQUssVUFBV0MsRUFBRyx5Q0FBMENILENBQVMsRUFBSSxHQUFHQyxFQUFPLEVBQ2xHLENBRUosRUFDQUYsR0FBTSxZQUFjLFFBRXBCLElBQU1LLEdBQW9CLGNBQ3hCLENBQUMsQ0FBRSxVQUFBSixFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFBUUosR0FBQyxTQUFNLElBQUtJLEVBQUssVUFBV0MsRUFBR0gsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FDMUYsRUFDQUcsR0FBWSxZQUFjLGNBRTFCLElBQU1DLEdBQWtCLGNBQ3RCLENBQUMsQ0FBRSxVQUFBTCxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDeEJKLEdBQUMsU0FBTSxJQUFLSSxFQUFLLFVBQVdDLEVBQUcsZ0NBQWlDSCxDQUFTLEVBQUksR0FBR0MsRUFBTyxDQUUzRixFQUNBSSxHQUFVLFlBQWMsWUFFeEIsSUFBTUMsR0FBb0IsY0FDeEIsQ0FBQyxDQUFFLFVBQUFOLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUN4QkosR0FBQyxTQUNDLElBQUtJLEVBQ0wsVUFBV0MsRUFBRyxzRUFBdUVILENBQVMsRUFDN0YsR0FBR0MsRUFDTixDQUVKLEVBQ0FLLEdBQVksWUFBYyxjQUUxQixJQUFNQyxHQUFpQixjQUNyQixDQUFDLENBQUUsVUFBQVAsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLE1BQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUNULDBGQUNBSCxDQUNGLEVBQ0MsR0FBR0MsRUFDTixDQUVKLEVBQ0FNLEdBQVMsWUFBYyxXQUV2QixJQUFNQyxHQUFrQixjQUN0QixDQUFDLENBQUUsVUFBQVIsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLE1BQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUFHLHVGQUF3RkgsQ0FBUyxFQUM5RyxHQUFHQyxFQUNOLENBRUosRUFDQU8sR0FBVSxZQUFjLFlBRXhCLElBQU1DLEdBQWtCLGNBQ3RCLENBQUMsQ0FBRSxVQUFBVCxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFBUUosR0FBQyxNQUFHLElBQUtJLEVBQUssVUFBV0MsRUFBRyxrQkFBbUJILENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQzFHLEVBQ0FRLEdBQVUsWUFBYyxZQUV4QixJQUFNQyxHQUFxQixjQUN6QixDQUFDLENBQUUsVUFBQVYsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLFdBQVEsSUFBS0ksRUFBSyxVQUFXQyxFQUFHLDhDQUErQ0gsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FFM0csRUFDQVMsR0FBYSxZQUFjLGVDdkUzQixPQUFtQixlQUFBQyxHQUFhLGtCQUFBQyxPQUFzQix3QkNBdEQsT0FBUyxlQUFBQyxHQUFhLHVCQUFBQyxPQUEyQix3QkNDakQsVUFBWUMsT0FBVyxRQUN2QixPQUFTLGlCQUFBQyxHQUFlLGtCQUFBQyxPQUFzQix3QkNDOUMsSUFBSUMsR0FBd0IsS0FBTSxDQUNoQ0MsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FBYSxHQUNiQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBLFlBQVlDLEVBQVEsQ0FDbEIsR0FBTSxDQUNKLE9BQUFDLEVBQ0EsWUFBQUMsRUFDQSxRQUFBQyxFQUNBLGNBQUFDLEVBQ0EsZUFBQUMsRUFDQSxTQUFBQyxFQUNBLGNBQUFDLEVBQ0EsV0FBQUMsRUFDQSxXQUFBQyxFQUNBLGdCQUFBQyxDQUNGLEVBQUlWLEVBQ0osS0FBS2IsR0FBVXdCLEdBQWFWLENBQU0sRUFDbEMsS0FBS1osR0FBZWEsRUFDcEIsS0FBS1osR0FBV2EsRUFDaEIsS0FBS2YsR0FBaUJnQixFQUN0QixLQUFLWixHQUFjaUIsRUFDbkIsS0FBS2hCLEdBQW1CaUIsRUFDeEIsS0FBS2hCLEdBQWtCaUIsR0FBYU4sQ0FBYyxFQUNsRCxLQUFLVixHQUFZZ0IsR0FBYUwsQ0FBUSxFQUN0QyxLQUFLVixHQUFpQmUsR0FBYUosQ0FBYSxFQUNoRCxLQUFLVixHQUFjYyxHQUFhSCxDQUFVLENBQzVDLENBQ0Esa0JBQWtCRixFQUFVLENBQzFCLEtBQUtaLEdBQWdCLENBQUMsRUFBRVksQ0FBUSxDQUNsQyxDQUNBLFlBQVlBLEVBQVUsQ0FDcEIsS0FBS1gsR0FBVSxDQUFDLEVBQUVXLENBQVEsQ0FDNUIsQ0FDQSxpQkFBaUJNLEVBQVEsQ0FDdkIsS0FBS2hCLEdBQWUsQ0FBQyxFQUFFZ0IsQ0FBTSxDQUMvQixDQUNBLGNBQWNKLEVBQVksQ0FDeEIsS0FBS1gsR0FBWSxDQUFDLEVBQUVXLENBQVUsQ0FDaEMsQ0FDQSxVQUFVUCxFQUFRLENBQ2hCLEtBQUtkLEdBQVEsQ0FBQyxFQUFFYyxDQUFNLENBQ3hCLENBQ0EsTUFBTVksRUFBSSxDQUNSLEdBQUksS0FBS3RCLEdBQ1AsTUFBTSxJQUFJLE1BQU0sNkJBQTZCLEVBRS9DLElBQU11QixFQUFVQyxHQUFPLElBQU0sQ0FDM0IsSUFBTUMsRUFBUyxLQUNULENBQUNDLENBQVcsRUFBSSxLQUFLdkIsR0FDckIsQ0FBQ3dCLENBQUcsRUFBSSxLQUFLdkIsR0FDYixDQUFDaUIsQ0FBTSxFQUFJLEtBQUtoQixHQUNoQixDQUFDdUIsQ0FBTSxFQUFJLEtBQUt0QixHQUNoQixDQUFDdUIsQ0FBVyxFQUFJLEtBQUtqQyxHQUN2QmtDLEVBQ0osT0FBSSxLQUFLdkIsR0FDUHVCLEVBQVcsS0FBS3ZCLElBRWhCdUIsRUFBV0MsR0FBSyxJQUFNLE9BQU8seUJBQWlDLENBQUMsRUFDL0QsS0FBS3hCLEdBQWF1QixHQUVwQkUsR0FBZ0IsS0FBSy9CLEdBQWEsS0FBS0MsRUFBZ0IsRUFDaEQrQixHQUFnQkgsRUFBVUksR0FBVyxDQUMxQyxJQUFJLGFBQWMsQ0FDaEIsT0FBT1QsRUFBTzNCLEVBQ2hCLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBTzJCLEVBQU8xQixFQUNoQixFQUNBLElBQUksZUFBZ0IsQ0FDbEIsT0FBTzBCLEVBQU81QixFQUNoQixFQUNBLElBQUksaUJBQWtCLENBQ3BCLE9BQU80QixFQUFPdkIsRUFDaEIsQ0FDRixFQUFHLENBQ0QsSUFBSSxRQUFTLENBQ1gsT0FBTzJCLEVBQVksQ0FDckIsRUFDQSxJQUFJLGdCQUFpQixDQUNuQixPQUFPSCxFQUFZLENBQ3JCLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBT0MsRUFBSSxDQUNiLEVBQ0EsSUFBSSxlQUFnQixDQUNsQixPQUFPTixFQUFPLENBQ2hCLEVBQ0EsSUFBSSxZQUFhLENBQ2YsT0FBT08sRUFBTyxDQUNoQixDQUNGLENBQUMsQ0FBQyxDQUNKLEVBQUdOLENBQUUsRUFDTCxLQUFLdEIsR0FBYSxHQUNsQixLQUFLUSxHQUFXZSxDQUNsQixDQUNBLFNBQVUsQ0FDUixHQUFJLENBQUMsS0FBS3ZCLEdBQ1IsTUFBTSxJQUFJLE1BQU0seUJBQXlCLEVBRTNDLEtBQUtRLEtBQVcsRUFDaEIsS0FBS1IsR0FBYSxFQUNwQixDQUNGLEVBR0ltQyxHQUE2QixLQUFNLENBQ3JDdkMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FBYSxHQUNiQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBOEIsR0FDQTdCLEdBQ0FDLEdBQ0EsWUFBWUMsRUFBUSxDQUNsQixHQUFNLENBQ0osT0FBQUMsRUFDQSxZQUFBQyxFQUNBLFFBQUFDLEVBQ0EsY0FBQUMsRUFDQSxlQUFBQyxFQUNBLFNBQUFDLEVBQ0EsY0FBQUMsRUFDQSxXQUFBQyxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsUUFBQWtCLENBQ0YsRUFBSTVCLEVBQ0osS0FBS2IsR0FBVXdCLEdBQWFWLENBQU0sRUFDbEMsS0FBS1osR0FBZWEsRUFDcEIsS0FBS1osR0FBV2EsRUFDaEIsS0FBS2YsR0FBaUJnQixFQUN0QixLQUFLWixHQUFjaUIsRUFDbkIsS0FBS2hCLEdBQW1CaUIsRUFDeEIsS0FBS2hCLEdBQWtCaUIsR0FBYU4sQ0FBYyxFQUNsRCxLQUFLVixHQUFZZ0IsR0FBYUwsQ0FBUSxFQUN0QyxLQUFLVixHQUFpQmUsR0FBYUosQ0FBYSxFQUNoRCxLQUFLVixHQUFjYyxHQUFhSCxDQUFVLEVBQzFDLEtBQUttQixHQUFXaEIsR0FBYWlCLENBQU8sQ0FDdEMsQ0FDQSxrQkFBa0J0QixFQUFVLENBQzFCLEtBQUtaLEdBQWdCLENBQUMsRUFBRVksQ0FBUSxDQUNsQyxDQUNBLFlBQVlBLEVBQVUsQ0FDcEIsS0FBS1gsR0FBVSxDQUFDLEVBQUVXLENBQVEsQ0FDNUIsQ0FDQSxpQkFBaUJNLEVBQVEsQ0FDdkIsS0FBS2hCLEdBQWUsQ0FBQyxFQUFFZ0IsQ0FBTSxDQUMvQixDQUNBLGNBQWNKLEVBQVksQ0FDeEIsS0FBS1gsR0FBWSxDQUFDLEVBQUVXLENBQVUsQ0FDaEMsQ0FDQSxVQUFVUCxFQUFRLENBQ2hCLEtBQUtkLEdBQVEsQ0FBQyxFQUFFYyxDQUFNLENBQ3hCLENBQ0EsV0FBVzJCLEVBQVMsQ0FDbEIsS0FBS0QsR0FBUyxDQUFDLEVBQUUsSUFBTUMsQ0FBTyxDQUNoQyxDQUNBLE1BQU1mLEVBQUksQ0FDUixHQUFJLEtBQUt0QixHQUNQLE1BQU0sSUFBSSxNQUFNLDZCQUE2QixFQUUvQyxJQUFNdUIsRUFBVUMsR0FBTyxJQUFNLENBQzNCLElBQU1DLEVBQVMsS0FDVCxDQUFDQyxDQUFXLEVBQUksS0FBS3ZCLEdBQ3JCLENBQUN3QixDQUFHLEVBQUksS0FBS3ZCLEdBQ2IsQ0FBQ2lCLENBQU0sRUFBSSxLQUFLaEIsR0FDaEIsQ0FBQ3VCLENBQU0sRUFBSSxLQUFLdEIsR0FDaEIsQ0FBQ3VCLENBQVcsRUFBSSxLQUFLakMsR0FDckIsQ0FBQ3lDLENBQU8sRUFBSSxLQUFLRCxHQUNuQk4sRUFDSixPQUFJLEtBQUt2QixHQUNQdUIsRUFBVyxLQUFLdkIsSUFFaEJ1QixFQUFXQyxHQUFLLElBQU0sT0FBTyx5QkFBc0MsQ0FBQyxFQUNwRSxLQUFLeEIsR0FBYXVCLEdBRXBCRSxHQUFnQixLQUFLL0IsR0FBYSxLQUFLQyxFQUFnQixFQUNoRCtCLEdBQWdCSCxFQUFVSSxHQUFXLENBQzFDLElBQUksYUFBYyxDQUNoQixPQUFPVCxFQUFPM0IsRUFDaEIsRUFDQSxJQUFJLFNBQVUsQ0FDWixPQUFPMkIsRUFBTzFCLEVBQ2hCLEVBQ0EsSUFBSSxlQUFnQixDQUNsQixPQUFPMEIsRUFBTzVCLEVBQ2hCLEVBQ0EsSUFBSSxpQkFBa0IsQ0FDcEIsT0FBTzRCLEVBQU92QixFQUNoQixDQUNGLEVBQUcsQ0FDRCxJQUFJLFFBQVMsQ0FDWCxPQUFPMkIsRUFBWSxDQUNyQixFQUNBLElBQUksZ0JBQWlCLENBQ25CLE9BQU9ILEVBQVksQ0FDckIsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPQyxFQUFJLENBQ2IsRUFDQSxJQUFJLGVBQWdCLENBQ2xCLE9BQU9OLEVBQU8sQ0FDaEIsRUFDQSxJQUFJLFlBQWEsQ0FDZixPQUFPTyxFQUFPLENBQ2hCLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBT1MsRUFBUSxDQUNqQixDQUNGLENBQUMsQ0FBQyxDQUNKLEVBQUdmLENBQUUsRUFDTCxLQUFLdEIsR0FBYSxHQUNsQixLQUFLUSxHQUFXZSxDQUNsQixDQUNBLFNBQVUsQ0FDUixHQUFJLENBQUMsS0FBS3ZCLEdBQ1IsTUFBTSxJQUFJLE1BQU0seUJBQXlCLEVBRTNDLEtBQUtRLEtBQVcsRUFDaEIsS0FBS1IsR0FBYSxFQUNwQixDQUNGLEVEdElTLE9BQUEsT0FBQXNDLE9BQUEsb0JBOURGLFNBQVNDLEdBQ2RDLEVBQzJCLENBQzNCLElBQU1DLEVBQWNDLEdBQWVGLEVBQU0sTUFBTSxFQUN6Q0csRUFBWSxVQUF1QixJQUFJLEVBQ3ZDLENBQ0osZUFBQUMsRUFDQSxTQUFBQyxFQUNBLGNBQUFDLEVBQ0EsV0FBQUMsRUFDQSxXQUFBQyxFQUNBLGdCQUFBQyxDQUNGLEVBQUlULEVBQ0UsQ0FBQ1UsQ0FBUSxFQUFVLFlBQ3ZCLElBQUlDLEdBQXNCLENBQ3hCLE9BQVFWLEVBQ1IsWUFBYSxjQUNiLFFBQVMsSUFDVCxjQUFBVyxHQUNBLGVBQUFSLEVBQ0EsU0FBQUMsRUFDQSxjQUFBQyxFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsQ0FDRixDQUFDLENBQ0gsRUFFTSxPQUFBLGFBQVUsSUFBTSxDQUNwQkMsRUFBUyxVQUFVVCxDQUFXLENBQ2hDLEVBQUcsQ0FBQ0EsRUFBYVMsQ0FBUSxDQUFDLEVBRXBCLGFBQVUsSUFBTSxDQUNoQk4sR0FDRk0sRUFBUyxrQkFBa0JOLENBQWMsQ0FFN0MsRUFBRyxDQUFDQSxFQUFnQk0sQ0FBUSxDQUFDLEVBRXZCLGFBQVUsSUFBTSxDQUNoQkwsR0FDRkssRUFBUyxZQUFZTCxDQUFRLENBRWpDLEVBQUcsQ0FBQ0EsRUFBVUssQ0FBUSxDQUFDLEVBRWpCLGFBQVUsSUFBTSxDQUNwQkEsRUFBUyxpQkFBaUJKLEdBQWlCLEVBQUssQ0FDbEQsRUFBRyxDQUFDQSxFQUFlSSxDQUFRLENBQUMsRUFFdEIsYUFBVSxJQUFNLENBQ3BCQSxFQUFTLGNBQWNILEdBQWMsQ0FBQyxDQUFDLENBQ3pDLEVBQUcsQ0FBQ0EsRUFBWUcsQ0FBUSxDQUFDLEVBRW5CLGFBQVUsS0FDVlAsRUFBSSxTQUNOTyxFQUFTLE1BQU1QLEVBQUksT0FBTyxFQUdyQixJQUFNLENBQ1hPLEVBQVMsUUFBUSxDQUNuQixHQUNDLENBQUNBLENBQVEsQ0FBQyxFQUVOWixHQUFDLE1BQUEsQ0FBSSxJQUFJLE1BQU0sVUFBVSx3QkFBd0IsSUFBQUssQ0FBQSxDQUFVLENBQ3BFLENFNUdBLFVBQVlVLE9BQVcsUUFDdkIsT0FBUyxpQkFBQUMsR0FBZSxrQkFBQUMsT0FBc0Isd0JBa0YxQyxPQUFBLE9BQUFDLE9BQUEsb0JBN0NHLFNBQVNDLEdBQ2RDLEVBQzJCLENBQzNCLElBQU1DLEVBQWNDLEdBQWVGLEVBQU0sTUFBTSxFQUN6Q0csRUFBWSxVQUF1QixJQUFJLEVBQ3ZDLENBQUUsV0FBQUMsRUFBWSxXQUFBQyxFQUFZLGdCQUFBQyxDQUFnQixFQUFJTixFQUM5QyxDQUFDTyxDQUFRLEVBQVUsWUFDdkIsSUFBSUMsR0FBMkIsQ0FDN0IsT0FBUVAsRUFDUixZQUFhLGNBQ2IsUUFBUyxJQUNULGNBQUFRLEdBQ0EsZUFBZ0IsY0FDaEIsU0FBVSxTQUNWLGNBQWUsR0FDZixXQUFBTCxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsUUFBU04sRUFBTSxPQUNqQixDQUFDLENBQ0gsRUFFTSxPQUFBLGFBQVUsSUFBTSxDQUNwQk8sRUFBUyxVQUFVTixDQUFXLENBQ2hDLEVBQUcsQ0FBQ0EsRUFBYU0sQ0FBUSxDQUFDLEVBRXBCLGFBQVUsSUFBTSxDQUNwQkEsRUFBUyxXQUFXUCxFQUFNLFVBQVksSUFBTSxDQUFDLEVBQUUsQ0FDakQsRUFBRyxDQUFDQSxFQUFNLFFBQVNPLENBQVEsQ0FBQyxFQUV0QixhQUFVLElBQU0sQ0FDcEJBLEVBQVMsY0FBY0gsR0FBYyxDQUFDLENBQUMsQ0FDekMsRUFBRyxDQUFDQSxFQUFZRyxDQUFRLENBQUMsRUFFbkIsYUFBVSxLQUNWSixFQUFJLFNBQ05JLEVBQVMsTUFBTUosRUFBSSxPQUFPLEVBR3JCLElBQU0sQ0FDWEksRUFBUyxRQUFRLENBQ25CLEdBQ0MsQ0FBQ0EsQ0FBUSxDQUFDLEVBR1hULEdBQUMsTUFBQSxDQUNDLE1BQU8sQ0FBRSxPQUFRLFFBQVMsR0FBR0UsRUFBTSxLQUFNLEVBQ3pDLFVBQVUsd0JBQ1YsSUFBQUcsQ0FBQSxDQUNELENBRUwsQ0NyRk8sSUFBTU8sR0FDWCxRQUFRLElBQUksV0FBYSxjQUNyQixVQUFZLENBQ1YsT0FBTyxJQUNULEVBQ1NBLEdBRUZDLEdBQ1gsUUFBUSxJQUFJLFdBQWEsY0FDckIsVUFBWSxDQUNWLE9BQU8sSUFDVCxFQUNjQSxHSmZwQixPQUFTLGlCQUFBQyxHQUF1QyxjQUFBQyxHQUFZLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUFDckYsT0FBUyxTQUFBQyxPQUFhLFNLSHRCLE9BQVMsV0FBV0MsT0FBYyxTQVU5QixjQUFBQyxPQUFBLG9CQUpKLElBQU1DLEdBQVUsQ0FBQyxDQUFFLEdBQUdDLENBQU0sSUFJeEJGLEdBQUNELEdBQUEsQ0FFQyxVQUFVLHNCQUNWLGFBQWMsQ0FDWixXQUFZLENBQ1YsTUFDRSx3SUFDRixZQUFhLHVDQUNiLGFBQWMsbUVBQ2QsYUFBYyw4REFDaEIsQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUN2QkosT0FFRSxrQ0FBa0NDLE9BQzdCLHVCQUNQLE9BQXFDLGFBQUFDLEdBQVcsWUFBQUMsT0FBZ0IsUUFNaEUsU0FBU0MsSUFBaUIsQ0FDeEIsSUFBTUMsRUFBVSxPQUFPLE9BQVcsSUFBYyxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFBSSxHQUMxRSxDQUFDQyxFQUFZQyxDQUFhLEVBQUlKLEdBQVMsSUFBSSxnQkFBZ0JFLENBQU8sQ0FBQyxFQUd6RSxTQUFTRyxFQUFVQyxFQUEwQixDQUFFLFFBQUFDLENBQVEsRUFBbUIsQ0FDeEUsR0FBTSxDQUFFLFNBQUFDLEVBQVUsT0FBQUMsQ0FBTyxFQUFJLE9BQU8sU0FDOUJDLEVBQU9KLEVBQVEsU0FBUyxFQUN4QkssRUFBTSxHQUFHSCxDQUFRLEdBQUdDLENBQU0sSUFBSUMsQ0FBSSxHQUVwQ0gsSUFBWSxPQUNkLE9BQU8sUUFBUSxVQUFVLEtBQU0sR0FBSUksQ0FBRyxFQUV0QyxPQUFPLFFBQVEsYUFBYSxLQUFNLEdBQUlBLENBQUcsRUFHM0NQLEVBQWNFLENBQU8sQ0FDdkIsQ0FHQSxTQUFTTSxHQUEwQixDQUNqQyxHQUFJLE9BQU8sT0FBVyxJQUNwQixPQUFPLElBQUksZ0JBRWIsSUFBTUMsRUFBTSxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFFeEMsT0FBTyxJQUFJLGdCQUFnQkEsQ0FBRyxDQUNoQyxDQUdBLE9BQUFkLEdBQVUsSUFBTSxDQUNkLFNBQVNlLEdBQW1CLENBQzFCLElBQU1aLEVBQVUsT0FBTyxTQUFTLEtBQUssTUFBTSxDQUFDLEVBQzVDRSxFQUFjLElBQUksZ0JBQWdCRixDQUFPLENBQUMsQ0FDNUMsQ0FFQSxjQUFPLGlCQUFpQixhQUFjWSxDQUFnQixFQUUvQyxJQUFNLE9BQU8sb0JBQW9CLGFBQWNBLENBQWdCLENBQ3hFLEVBQUcsQ0FBQyxDQUFDLEVBRUUsQ0FBRSxhQUFjWCxFQUFZLFVBQUFFLEVBQVcsd0JBQUFPLENBQXdCLENBQ3hFLENBS08sSUFBTUcsR0FBa0JqQixHQUFzQkcsRUFBYyxFQ3pEbkUsT0FBUyxhQUFBZSxPQUFpQixRQ0ExQixPQUFTLFlBQUFDLE9BQWdCLHdCQUtsQixJQUFNQyxHQUEwQixHQUVoQyxTQUFTQyxJQUFtQixDQUNqQyxHQUFNLENBQUUsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBRTlCLE9BQU9DLEdBQVMsQ0FDZCxZQUFhLENBQ1gsUUFBUyxDQUNQLENBQUNGLEVBQVEsZUFBaUIsSUFBSSxFQUFHLENBQy9CLE9BQVEsQ0FBQyxDQUNYLENBQ0YsRUFDQSxTQUFVLE1BQ1YsZ0JBQWlCLENBQUMsQ0FDcEIsRUFDQSxxQkFBc0JGLEdBQ3RCLFFBQVMsTUFBTyxDQUFFLE9BQUFLLENBQU8sSUFBTSxDQUM3QixHQUFNLENBQUNDLEVBQU9DLENBQWEsRUFBSSxNQUFNTCxFQUFRLFdBQVcsQ0FBRSxZQUFhRyxDQUFPLENBQUMsRUFFL0UsR0FBSUMsRUFDRixNQUFNQSxFQUdSLE9BQU9DLENBQ1QsRUFDQSxTQUFVLENBQUMsZUFBZSxFQUcxQixVQUFZQyxHQUFTQSxFQUFJLE1BQU0sZ0JBQWtCUixHQUEwQixFQUFJLEdBQ2pGLENBQUMsQ0FDSCxDRDlCTyxTQUFTUyxJQUFxQixDQUNuQyxHQUFNLENBQUNDLEVBQVFDLENBQVEsRUFBSUMsRUFBYyxPQUFPLEVBQzFDLENBQUNDLEVBQVNDLENBQVMsRUFBSUYsRUFBYyxRQUFRLEVBQzdDLENBQUNHLEVBQU9DLENBQU8sRUFBSUosRUFBYyxNQUFNLEVBRXZDLENBQUUsS0FBTUssRUFBZSxVQUFXQyxDQUF1QixFQUFJQyxHQUFpQixFQUVwRixPQUFBQyxHQUFVLElBQU0sQ0FDZCxHQUFJRixHQUEwQixDQUFDRCxHQUFlLFFBQzVDLE9BS0YsSUFBTUksRUFBYyxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFDMUNDLEVBQVMsSUFBSSxnQkFBZ0JELENBQVcsRUFFeENFLEVBQVdELEVBQU8sSUFBSSxPQUFPLEVBQzdCRSxFQUFZRixFQUFPLElBQUksUUFBUSxFQUMvQkcsRUFBVUgsRUFBTyxJQUFJLE1BQU0sRUFFakMsR0FBSSxDQUFDQyxHQUFZLENBQUNDLEdBQWEsQ0FBQ0MsRUFBUyxDQUN2QyxJQUFNQyxFQUFrQixPQUFPLEtBQUtULEVBQWMsT0FBTyxFQUFFLENBQUMsRUFDNUQsR0FBSVMsRUFBaUIsQ0FDbkIsSUFBTUMsRUFBYVYsRUFBYyxRQUFRUyxDQUFlLEdBQUcsT0FBTyxDQUFDLEVBQy9EQyxJQUlHaEIsRUFBU2dCLEVBQVcsSUFBSSxFQUN4QmIsRUFBVVksQ0FBZSxFQUN6QlYsRUFBUSxPQUFPLEVBRXhCLENBQ0YsTUFBV08sR0FBWUMsR0FBYSxDQUFDQyxHQUM5QlQsRUFBUSxPQUFPLENBTXhCLEVBQUcsQ0FBQ0UsRUFBd0JELEVBQWVOLEVBQVVHLEVBQVdFLENBQU8sQ0FBQyxFQUVqRSxJQUNULENQWU0sY0FBQVksR0FHRSxRQUFBQyxPQUhGLG9CQS9CTixJQUFNQyxHQUFjLElBQUlDLEdBS2xCQyxHQUFnQkMsR0FBOEMsTUFBUyxFQVF0RSxTQUFTQyxHQUFzQkMsRUFBbUMsQ0FDdkUsR0FBTSxDQUFFLFNBQUFDLEVBQVUsR0FBR0MsQ0FBVyxFQUFJRixFQUM5QixDQUFDRyxFQUFhQyxDQUFjLEVBQUlDLEdBQXVCLElBQUksRUFDM0QsQ0FBQ0MsRUFBY0MsQ0FBZSxFQUFJRixHQUFpQkwsRUFBTSxRQUFRLGVBQWlCLFFBQVEsRUFDMUYsQ0FBQ1EsRUFBY0MsQ0FBZSxFQUFJSixHQUFTLEVBQUssRUFDaEQsQ0FBQ0ssRUFBa0JDLENBQW1CLEVBQUlOLEdBQVMsRUFBSSxFQUV6RE8sRUFBVVosRUFBTSxRQUNwQlksSUFBYUMsR0FBaUJDLEdBQU0sTUFBTUQsRUFBTSxPQUFPLEVBRXZELElBQU1FLEVBQXFCQyxHQUFRLElBQzFCaEIsRUFBTSxtQkFBcUIsSUFBTSxDQUFDLEdBQ3hDLENBQUNBLEVBQU0sZ0JBQWdCLENBQUMsRUFFckJpQixFQUFtQixJQUFNUixFQUFpQlMsR0FBUyxDQUFDQSxDQUFJLEVBQ3hEQyxFQUFtQixJQUFNUixFQUFxQk8sR0FBUyxDQUFDQSxDQUFJLEVBQ2xFLE9BQ0V4QixHQUFDMEIsR0FBQSxDQUFvQixPQUFRekIsR0FDM0IsVUFBQUYsR0FBQzRCLEdBQUEsRUFBbUIsRUFDcEI1QixHQUFDNkIsR0FBQSxFQUFRLEVBQ1Q3QixHQUFDOEIsR0FBQSxDQUNDLFNBQUE3QixHQUFDRyxHQUFjLFNBQWQsQ0FDQyxNQUFPLENBQ0wsR0FBR0ssRUFDSCxZQUFBQyxFQUNBLGFBQUFHLEVBQ0EsYUFBQUUsRUFDQSxlQUFBSixFQUNBLGdCQUFBRyxFQUNBLFFBQUFLLEVBQ0EsbUJBQUFHLEVBQ0EsaUJBQUFFLEVBQ0EsaUJBQUFQLEVBQ0EsaUJBQUFTLENBQ0YsRUFFQSxVQUFBMUIsR0FBQytCLEdBQUEsRUFBbUIsRUFDbkJ2QixHQUNILEVBQ0YsR0FDRixDQUVKLENBTU8sU0FBU3dCLEdBQWdDLENBQzlDLElBQU1DLEVBQVVDLEdBQVc5QixFQUFhLEVBRXhDLEdBQUksQ0FBQzZCLEVBQ0gsTUFBTSxJQUFJLE1BQU0sNERBQTRELEVBRzlFLE9BQU9BLENBQ1QsQ1NqR0EsU0FBU0UsR0FBU0MsRUFBOEJDLEVBQWMsQ0FDNUQsSUFBTUMsRUFBSyxDQUNULE9BQVFDLEdBQWVILEVBQUtDLEVBQU0sT0FBTyxFQUN6QyxNQUFPLEdBQUdBLEVBQU0sTUFBTSxJQUFJQSxFQUFNLElBQUksRUFDdEMsRUFFQSxPQUFPLEtBQUssVUFBVUMsQ0FBRSxDQUMxQixDQUVBLFNBQVNFLEdBQWNKLEVBQThCQyxFQUFjLENBQ2pFLE1BQU8sQ0FBRSxHQUFHRCxFQUFLLFdBQVlELEdBQVNDLEVBQUtDLENBQUssQ0FBRSxDQUNwRCxDQU9PLFNBQVNJLEdBQTBDQyxFQUFXTCxFQUFjLENBQ2pGLEdBQU0sQ0FBRSxJQUFBRCxFQUFLLEtBQUFPLENBQUssRUFBSUQsRUFFdEIsT0FBSU4sSUFBUSxPQUNILENBQUUsR0FBR00sRUFBUSxJQUFLRixHQUFjSixFQUFLQyxDQUFLLENBQUUsRUFFakRNLElBQVMsT0FDSixDQUFFLEdBQUdELEVBQVEsS0FBTUMsRUFBSyxJQUFLUCxHQUFRSSxHQUFjSixFQUFLQyxDQUFLLENBQUMsQ0FBRSxFQUdsRUssQ0FDVCxDVnpCTyxTQUFTRSxJQUF1QixDQUNyQyxHQUFNLENBQUUsWUFBQUMsRUFBYSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDckNDLEVBQWNDLEdBQWUsRUFDN0IsQ0FBRSxPQUFBQyxFQUFTLEtBQU0sS0FBTUMsRUFBUSxJQUFLLEVBQUlOLEdBQWUsQ0FBQyxFQUU5RCxPQUFPTyxHQUFZLENBQ2pCLFlBQWEsQ0FBQyxTQUFVRixFQUFRLFFBQVNDLEVBQU8sUUFBUSxFQUN4RCxNQUFNLFdBQVdFLEVBQWlDLENBQ2hELEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTSxFQUFJLE1BQU1ULEVBQVEsT0FBTyxDQUFFLEtBQUFPLEVBQU0sTUFBT1IsQ0FBYSxFQUFHLENBQUMsQ0FBQyxFQUU5RSxHQUFJUyxFQUNGLE1BQU1BLEVBR1IsT0FBT0UsR0FBaUJELEVBQVFWLENBQVksQ0FDOUMsRUFDQSxVQUFVWSxFQUFTLENBQ2pCVCxFQUFZLGVBQ1YsQ0FDRSxNQUFPLEdBRVAsU0FBVSxDQUFDLFNBQVVFLEVBQVEsUUFBU0MsRUFBTyxPQUFPLENBQ3RELEVBQ0NPLEdBQ0tBLEdBQVcsS0FDTkEsRUFHRixDQUNMLEdBQUdBLEVBQ0gsS0FBTSxDQUFDLEdBQUdELEVBQVEsS0FBTSxHQUFHQyxFQUFRLElBQUksQ0FDekMsQ0FFSixDQUNGLEVBQ0EsTUFBTyxFQUNULENBQUMsQ0FDSCxDVzNDQSxPQUFTLFlBQUFDLE9BQWdCLHdCQWFsQixTQUFTQyxHQUFvQkMsRUFBaUMsQ0FDbkUsR0FBTSxDQUFFLFVBQUFDLEVBQVcsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLE9BQUFDLENBQU8sRUFBSUosRUFFN0MsQ0FBRSxZQUFBSyxFQUFhLFFBQUFDLENBQVEsRUFBSUMsRUFBVSxFQUUzQyxPQUFPQyxHQUFTLENBQ2QsUUFBUyxFQUFRSCxFQUNqQixPQUFRLEVBQ1IsZ0JBQWdCSSxFQUE4Q0MsRUFBZSxDQUMzRSxHQUFNLENBQUMsQ0FBRUMsRUFBUSxDQUFFQyxDQUFLLEVBQUlGLEdBQWUsVUFBWSxDQUFDLEVBRXhELEdBQUksRUFBQUMsSUFBV04sR0FBYSxRQUFVTyxJQUFVUCxHQUFhLE1BSTdELE9BQU9JLENBQ1QsRUFDQSxNQUFNLFFBQVEsQ0FBRSxPQUFBSSxDQUFPLEVBQUcsQ0FDeEIsR0FBTSxDQUFDQyxFQUFPQyxDQUFPLEVBQUksTUFBTVQsRUFBUSxNQUNyQyxDQUFFLFVBQUFMLEVBQVcsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLE1BQU9FLEVBQWMsT0FBQUQsQ0FBTyxFQUM5RCxDQUFFLFlBQWFTLENBQU8sQ0FDeEIsRUFFQSxHQUFJQyxFQUNGLE1BQU1BLEVBR1IsT0FBT0UsR0FBaUJELEVBQVNWLENBQVksQ0FDL0MsRUFDQSxTQUFVLENBQ1IsU0FDQUEsR0FBYSxRQUFVLEtBQ3ZCLFFBQ0FBLEdBQWEsTUFBUSxLQUNyQixRQUNBLFlBQ0FGLEVBQVUsSUFBS2MsR0FBUyxHQUFHQSxFQUFLLE1BQU0sSUFBSUEsRUFBSyxTQUFTLEVBQUUsRUFBRSxLQUFLLEdBQUcsR0FBSyxVQUN6RSxZQUNBaEIsRUFDQSxXQUNBQyxFQUNBLFNBQ0EsS0FBSyxVQUFVRSxDQUFNLENBQ3ZCLEVBQ0EsVUFBVyxHQUNiLENBQUMsQ0FDSCxDQzNEQSxPQUEyQixlQUFBYyxHQUFhLGtCQUFBQyxPQUFzQix3QkFXdkQsU0FBU0MsSUFBdUIsQ0FDckMsR0FBTSxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsRUFBUyxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDOUNDLEVBQWNDLEdBQWUsRUFFN0JDLEVBQWlCLENBQUMsU0FBVU4sR0FBYSxRQUFVLEtBQU0sUUFBU0EsR0FBYSxNQUFRLElBQUksRUFFakcsT0FBT08sR0FBWSxDQUNqQixXQUFZLE1BQU9DLEdBQXVDLENBQ3hELEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTSxFQUFJLE1BQU1ULEVBQVEsT0FBT08sRUFBTyxRQUFTQSxFQUFPLE9BQU8sRUFFM0UsR0FBSUMsRUFDRixNQUFNQSxFQUdSLE9BQU9DLENBQ1QsRUFDQSxZQUFhLENBQUMsR0FBR0osRUFBZ0IsUUFBUSxFQUN6QyxRQUFRRyxFQUFPRCxFQUFRLENBQ3JCLEdBQU0sQ0FBRSxRQUFBRyxFQUFTLElBQUFDLENBQUksRUFBSUosRUFBTyxRQUVoQ04sRUFBUU8sQ0FBSyxFQUViSSxHQUFtQixDQUNqQixhQUFjLENBQ1osSUFBTUMsRUFBYSxDQUFFLEdBQUdGLEVBQUssR0FBR0QsQ0FBUSxFQUVsQ0ksRUFBWUMsR0FBZUYsRUFBWWQsRUFBYSxPQUFPLEVBRWpFLE9BQVFpQixHQUFjRixFQUFVLE1BQU0sQ0FBQyxDQUFDRyxFQUFZQyxDQUFLLElBQU1GLEVBQVVDLENBQVUsSUFBTUMsQ0FBSyxDQUNoRyxFQUNBLFlBQUFmLEVBQ0EsTUFBT0osRUFDUCxVQUFXLFNBQXVCaUIsRUFBVyxDQUMzQyxNQUFPLENBQ0wsR0FBR0EsRUFDSCxHQUFHLE9BQU8sS0FBS04sQ0FBTyxFQUFFLE9BQ3RCLENBQUNTLEVBQWdCRixLQUFnQixDQUFFLEdBQUdFLEVBQWdCLENBQUNGLENBQVUsRUFBR04sRUFBSU0sQ0FBVSxDQUFFLEdBQ3BGLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDLENBQ0gsRUFDQSxTQUFTVixFQUFRLENBQ2YsR0FBTSxDQUFFLFFBQUFhLENBQVEsRUFBSWIsRUFFcEJLLEdBQW1CLENBQ2pCLGFBQWMsQ0FDWixHQUFNLENBQUUsSUFBS1MsQ0FBYSxFQUFJRCxFQUV4Qk4sRUFBWUMsR0FBZU0sRUFBY3RCLEVBQWEsT0FBTyxFQUVuRSxPQUFRaUIsR0FBY0YsRUFBVSxNQUFNLENBQUMsQ0FBQ0csRUFBWUMsQ0FBSyxJQUFNRixFQUFVQyxDQUFVLElBQU1DLENBQUssQ0FDaEcsRUFDQSxZQUFBZixFQUNBLE1BQU9KLEVBQ1AsVUFBVyxTQUFzQmlCLEVBQVcsQ0FDMUMsTUFBTyxDQUFFLEdBQUdBLEVBQVcsR0FBR0ksRUFBUSxPQUFRLENBQzVDLENBQ0YsQ0FBQyxDQUNILEVBQ0EsVUFBVVgsRUFBUUYsRUFBUSxDQUN4QkssR0FBbUIsQ0FDakIsYUFBYyxDQUNaLEdBQU0sQ0FBRSxRQUFBRixFQUFTLElBQUFDLENBQUksRUFBSUosRUFBTyxRQUUxQk0sRUFBYSxDQUFFLEdBQUdGLEVBQUssR0FBR0QsQ0FBUSxFQUVsQ0ksRUFBWUMsR0FBZUYsRUFBWWQsRUFBYSxPQUFPLEVBRWpFLE9BQVFpQixHQUFjRixFQUFVLE1BQU0sQ0FBQyxDQUFDRyxFQUFZQyxDQUFLLElBQU1GLEVBQVVDLENBQVUsSUFBTUMsQ0FBSyxDQUNoRyxFQUNBLFlBQUFmLEVBQ0EsTUFBT0osRUFDUCxVQUFXLFNBQWtDaUIsRUFBVyxDQUN0RCxHQUFNLENBQUUsa0JBQUFNLENBQWtCLEVBQUlOLEVBQ3hCLENBQUUsSUFBQUwsQ0FBSSxFQUFJRixFQUdoQixPQUFJYSxHQUFxQixNQUFRWCxFQUFJLG1CQUFxQlcsRUFDakROLEVBR0YsQ0FBRSxHQUFHQSxFQUFXLEdBQUdMLENBQUksQ0FDaEMsQ0FDRixDQUFDLENBQ0gsRUFDQSxNQUFPLEVBQ1QsQ0FBQyxDQUNILENBRUEsU0FBU0MsR0FBbUJMLEVBS3pCLENBQ0QsR0FBTSxDQUFFLFlBQUFnQixFQUFhLFlBQUFwQixFQUFhLE1BQUFxQixFQUFPLFVBQUFDLENBQVUsRUFBSWxCLEVBRW5EbUIsRUFFSnZCLEVBQVksZUFDVixDQUFFLE1BQU8sR0FBTyxTQUFVLENBQUMsU0FBVXFCLEVBQU0sT0FBUSxRQUFTQSxFQUFNLEtBQU0sT0FBTyxDQUFFLEVBQ2hGRyxHQUFpRixDQUNoRixHQUFNLENBQUUsS0FBTUMsRUFBYSxDQUFDLENBQUUsRUFBSUQsR0FBZ0IsQ0FBQyxFQUVuRCxHQUFJQyxFQUFXLFNBQVcsRUFDeEIsT0FBT0QsRUFHVCxJQUFNRSxFQUFpQkQsRUFBVyxVQUFXRixJQUFXSCxFQUFZLENBQUUsRUFFdEUsR0FBSU0sSUFBbUIsR0FDckIsT0FBT0YsRUFHVCxJQUFNRyxFQUFTTCxFQUFVRyxFQUFXQyxDQUFjLENBQUUsRUFFcEQsTUFBTyxDQUNMLEdBQUdGLEVBQ0gsS0FBTSxDQUFDLEdBQUdDLEVBQVcsTUFBTSxFQUFHQyxDQUFjLEVBQUdDLEVBQVEsR0FBR0YsRUFBVyxNQUFNQyxFQUFpQixDQUFDLENBQUMsQ0FDaEcsQ0FDRixDQUNGLENBQ0YsQ0N2SUEsT0FBUyxhQUFBRSxHQUFXLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUFDN0MsT0FBT0MsT0FBVyxhQUtYLElBQU1DLEdBQTZCLENBQ3hDLEtBQU0sY0FDTixRQUFTLENBQUMsRUFDVixNQUFPLE1BQ1AsR0FBSUMsR0FBTSxTQUFTLENBQ3JCLEVBRU1DLEdBQXlCQyxHQUFxQyxDQUNsRSxJQUFJQyxFQUFRLEVBQ1osUUFBV0MsS0FBVUYsRUFBWSxRQUMzQkUsRUFBTyxPQUFTLGVBRWRBLEVBQU8sT0FBTyxLQUFLLEdBQ3JCRCxJQUVPQyxFQUFPLE9BQVMsZ0JBQ3pCRCxHQUFTRixHQUFzQkcsQ0FBTSxHQUd6QyxPQUFPRCxDQUNULEVBRU8sU0FBU0UsSUFBZSxDQUM3QixHQUFNLENBQUNDLEVBQWFDLENBQWMsRUFBSUMsRUFBYyxTQUFVLENBQzVELGFBQWMsS0FBSyxVQUFVVCxFQUFhLENBQzVDLENBQUMsRUFFS1UsRUFBZ0JDLEdBQVEsSUFBTSxLQUFLLE1BQU1KLENBQVcsRUFBa0IsQ0FBQ0EsQ0FBVyxDQUFDLEVBQ25GSyxFQUFvQlAsR0FBd0IsS0FBS0csRUFBZSxLQUFLLFVBQVVILENBQU0sQ0FBQyxFQUV0RixDQUFDUSxFQUFlQyxDQUFnQixFQUFJQyxHQUFzQkwsQ0FBYSxFQUU3RU0sR0FBVSxJQUFNLENBQ2RGLEVBQWlCSixDQUFhLENBQ2hDLEVBQUcsQ0FBQ0EsQ0FBYSxDQUFDLEVBRWxCLElBQU1PLEVBQXNCTixHQUFRLElBQU1ULEdBQXNCVyxDQUFhLEVBQUcsQ0FBQ0EsQ0FBYSxDQUFDLEVBRS9GLE1BQU8sQ0FDTCxjQUFBSCxFQUNBLGlCQUFBRSxFQUNBLGNBQUFDLEVBQ0EsaUJBQUFDLEVBQ0Esb0JBQUFHLENBQ0YsQ0FDRixDQ25EQSxPQUFTLGlCQUFBQyxPQUFxQix3QkFLdkIsU0FBU0MsSUFBaUIsQ0FDL0IsT0FBT0QsR0FBYyxDQUNuQixVQUFVLENBQUUsUUFBUyxDQUFFLFlBQUFFLENBQVksQ0FBRSxFQUFHLENBQ3RDLE9BQU9BLElBQWMsQ0FBQyxJQUFNLFFBQzlCLENBQ0YsQ0FBQyxDQUNILENDVkEsT0FBUyxlQUFBQyxPQUFtQixRQUs1QixJQUFNQyxHQUFvQixHQUVwQkMsR0FBMkIsQ0FDL0IsVUFBVyxlQUFhLFlBQVksQ0FBQyxFQUNyQyxTQUFVLGlCQUFlLFlBQVlELEVBQWlCLENBQ3hELEVBRU8sU0FBU0UsSUFBZ0IsQ0FDOUIsR0FBTSxDQUFDLENBQUUsVUFBQUMsRUFBVyxTQUFBQyxDQUFTLEVBQUdDLENBQWEsRUFBSUMsR0FBZUwsRUFBaUIsRUFHM0VNLEVBQWtEQyxHQUNyREMsR0FBbUIsQ0FFWEosRUFESCxPQUFPSSxHQUFtQixXQUNSQyxHQUFRLENBQzFCLElBQU1DLEVBQVdGLEVBQWVDLENBQUcsRUFDbkMsTUFBTyxDQUNMLFVBQVdDLEVBQVMsVUFDcEIsU0FBVUEsRUFBUyxRQUNyQixDQUNGLEVBRW1CLENBQ2pCLFVBQVdGLEVBQWUsVUFDMUIsU0FBVUEsRUFBZSxRQUMzQixDQUxDLENBT0wsRUFDQSxDQUFDSixDQUFhLENBQ2hCLEVBRUEsTUFBTyxDQUNMLGdCQUFpQixDQUFFLFVBQUFGLEVBQVcsU0FBQUMsQ0FBUyxFQUN2QyxtQkFBQUcsQ0FDRixDQUNGLENDekNBLE9BQVMsYUFBQUssR0FBVyxZQUFBQyxPQUFnQixRQ0FwQyxPQUFtQixlQUFBQyxHQUFhLGtCQUFBQyxPQUFzQix3QkFJL0MsU0FBU0MsSUFBdUIsQ0FDckMsR0FBTSxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBQ3JDQyxFQUFjQyxHQUFlLEVBQzdCLENBQUUsT0FBQUMsRUFBUyxLQUFNLEtBQU1DLEVBQVEsSUFBSyxFQUFJTixHQUFlLENBQUMsRUFFOUQsT0FBT08sR0FBWSxDQUNqQixZQUFhLENBQUMsU0FBVUYsRUFBUSxRQUFTQyxFQUFPLFFBQVEsRUFDeEQsTUFBTSxXQUFXRSxFQUFpQyxDQUNoRCxHQUFNLENBQUNDLEVBQU9DLENBQU0sRUFBSSxNQUFNVCxFQUFRLE9BQU8sQ0FBRSxLQUFBTyxFQUFNLE1BQU9SLENBQWEsRUFBRyxDQUFDLENBQUMsRUFFOUUsR0FBSVMsRUFDRixNQUFNQSxFQUdSLE9BQU9DLENBQ1QsRUFDQSxNQUFNLFdBQVksQ0FDaEIsTUFBTVAsRUFBWSxrQkFBa0IsQ0FDbEMsTUFBTyxHQUNQLFNBQVUsQ0FBQyxTQUFVRSxFQUFRLFFBQVNDLEVBQU8sT0FBTyxDQUN0RCxDQUFDLENBQ0gsRUFDQSxNQUFPLEVBQ1QsQ0FBQyxDQUNILENEcEJPLFNBQVNLLEdBQWFDLEVBQXNDLENBQ2pFLEdBQU0sQ0FBRSxZQUFBQyxFQUFhLFFBQUFDLENBQVEsRUFBSUMsRUFBVSxFQUNyQyxDQUFFLGdCQUFBQyxDQUFnQixFQUFJQyxHQUFjLEVBQ3BDLENBQUNDLEVBQW1CQyxDQUFvQixFQUFJQyxHQUFrQyxDQUFDLENBQUMsRUFDaEZDLEVBQWMsT0FBTyxLQUFLSCxDQUFpQixFQUFFLFNBQVcsRUFDeEQsQ0FBRSxPQUFBSSxDQUFPLEVBQUlDLEdBQXFCLEVBRXhDQyxHQUFVLElBQU1MLEVBQXFCLENBQUMsQ0FBQyxFQUFHLENBQUNOLEVBQWFHLEVBQWdCLFNBQVMsQ0FBQyxFQUVsRixTQUFTUyxHQUFrQixDQUN6QixJQUFNQyxFQUFPZCxHQUFNLEtBQUssT0FBUWUsR0FDdkJULEVBQWtCUyxFQUFJLFVBQW9CLENBQ2xELEVBRURMLEVBQU9JLEdBQVEsQ0FBQyxFQUFHLENBQ2pCLFdBQVksQ0FDVlAsRUFBcUIsQ0FBQyxDQUFDLENBQ3pCLEVBQ0EsUUFBQUwsQ0FDRixDQUFDLENBQ0gsQ0FFQSxNQUFPLENBQ0wsZ0JBQUFXLEVBQ0EscUJBQUFOLEVBQ0Esa0JBQUFELEVBQ0EsWUFBQUcsQ0FDRixDQUNGLENFcENBLE9BQVMsYUFBQU8sR0FBVyxZQUFBQyxPQUFnQixRQUs3QixTQUFTQyxJQUFhLENBRTNCLEdBQU0sQ0FBQ0MsRUFBV0MsQ0FBWSxFQUFJQyxFQUFjLE9BQVEsQ0FDdEQsYUFBYyxFQUNoQixDQUFDLEVBR0tDLEVBQWdCSCxHQUE4QyxDQUNsRSxHQUFJLENBQUNBLEVBQVcsTUFBTyxDQUFDLEVBRXhCLEdBQUksQ0FFRixPQUFPQSxFQUNKLE1BQU0sR0FBRyxFQUNULElBQUtJLEdBQVMsQ0FDYixHQUFNLENBQUNDLEVBQVFDLENBQVMsRUFBSUYsRUFBSyxNQUFNLEdBQUcsRUFDMUMsTUFBSSxDQUFDQyxHQUFVLENBQUNDLEdBQWEsQ0FBQyxDQUFDLE1BQU8sTUFBTSxFQUFFLFNBQVNBLENBQVMsRUFDdkQsS0FFRixDQUFFLE9BQUFELEVBQVEsVUFBV0MsQ0FBNEIsQ0FDMUQsQ0FBQyxFQUNBLE9BQU8sT0FBTyxDQUNuQixPQUFTQyxFQUFHLENBQ1YsZUFBUSxNQUFNLHFDQUFzQ0EsQ0FBQyxFQUM5QyxDQUFDLENBQ1YsQ0FDRixFQUdNLENBQUNDLEVBQWNDLENBQWUsRUFBSUMsR0FBUyxJQUFNUCxFQUFhSCxDQUFTLENBQUMsRUFHOUUsT0FBQVcsR0FBVSxJQUFNLENBQ2QsSUFBTUMsRUFBa0JULEVBQWFILENBQVMsRUFDOUNTLEVBQWdCRyxDQUFlLENBQ2pDLEVBQUcsQ0FBQ1osQ0FBUyxDQUFDLEVBY1AsQ0FDTCxhQUFBUSxFQUNBLGdCQWIyQkssR0FBNEUsQ0FDdkcsSUFBTUMsRUFBZ0IsT0FBT0QsR0FBYSxXQUFhQSxFQUFTTCxDQUFZLEVBQUlLLEVBQ2hGSixFQUFnQkssQ0FBYSxFQUc3QixJQUFNQyxFQUNKRCxFQUFjLE9BQVMsRUFBSUEsRUFBYyxJQUFLVixHQUFTLEdBQUdBLEVBQUssTUFBTSxJQUFJQSxFQUFLLFNBQVMsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFJLEtBRXBHSCxFQUFhYyxDQUFVLENBQzlCLENBS0EsQ0FDRixDQ3pEQSxPQUFTLGtCQUFBQyxPQUE4RCxRQ0R2RSxVQUFZQyxNQUEwQiwrQkFFdEMsVUFBWUMsT0FBVyxRQXNCckIsT0FVRSxPQUFBQyxHQVZGLFFBQUFDLE9BQUEsb0JBbEJGLElBQU1DLEdBQW1DLE9BRW5DQyxHQUEwQyxVQVVoRCxJQUFNQyxHQUE4QixjQUtsQyxDQUFDLENBQUUsVUFBQUMsRUFBVyxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUMzQ0MsR0FBc0IsYUFBckIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsb1BBQ0FMLEdBQVMsVUFDVEQsQ0FDRixFQUNDLEdBQUdHLEVBRUgsVUFBQUQsRUFDREssR0FBQ0MsR0FBQSxDQUFhLFVBQVUsMkJBQTJCLEdBQ3JELENBQ0QsRUFDRFQsR0FBc0IsWUFBbUMsYUFBVyxZQUVwRSxJQUFNVSxHQUE4QixjQUdsQyxDQUFDLENBQUUsVUFBQVQsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxHQUFzQixhQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCwyaUJBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUNOLENBQ0QsRUFDRE0sR0FBc0IsWUFBbUMsYUFBVyxZQUVwRSxJQUFNQyxHQUEyQixjQUcvQixDQUFDLENBQUUsVUFBQVYsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxHQUFzQixTQUFyQixDQUNDLFNBQUFBLEdBQXNCLFVBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUNULHluQkFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUFDRixDQUNELEVBQ0RPLEdBQW1CLFlBQW1DLFVBQVEsWUFFOUQsSUFBTUMsR0FBd0IsY0FLNUIsQ0FBQyxDQUFFLFVBQUFYLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxHQUFzQixPQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCwwUEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RRLEdBQWdCLFlBQW1DLE9BQUssWUFFeEQsSUFBTUMsR0FBZ0MsY0FHcEMsQ0FBQyxDQUFFLFVBQUFaLEVBQVcsU0FBQUUsRUFBVSxRQUFBVyxFQUFTLEdBQUdWLENBQU0sRUFBR0MsSUFDN0NDLEdBQXNCLGVBQXJCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULGtRQUNBTixDQUNGLEVBQ0EsUUFBU2EsRUFDUixHQUFHVixFQUVKLFVBQUFJLEdBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEdBQXNCLGdCQUFyQixDQUNDLFNBQUFBLEdBQUNPLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0NaLEdBQ0gsQ0FDRCxFQUNEVSxHQUF3QixZQUFtQyxlQUFhLFlBRXhFLElBQU1HLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBZixFQUFXLFNBQUFFLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBc0IsWUFBckIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsa1FBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUVKLFVBQUFJLEdBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEdBQXNCLGdCQUFyQixDQUNDLFNBQUFBLEdBQUNTLEdBQUEsQ0FBTyxVQUFVLGdDQUFnQyxFQUNwRCxFQUNGLEVBQ0NkLEdBQ0gsQ0FDRCxFQUNEYSxHQUFxQixZQUFtQyxZQUFVLFlBRWxFLElBQU1FLEdBQXlCLGNBSzdCLENBQUMsQ0FBRSxVQUFBakIsRUFBVyxNQUFBQyxFQUFPLEdBQUdFLENBQU0sRUFBR0MsSUFDakNHLEdBQXNCLFFBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLG1FQUFvRUwsR0FBUyxVQUFXRCxDQUFTLEVBQzlHLEdBQUdHLEVBQ04sQ0FDRCxFQUNEYyxHQUFpQixZQUFtQyxRQUFNLFlBRTFELElBQU1DLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBbEIsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxHQUFzQixZQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyx3Q0FBeUNOLENBQVMsRUFDL0QsR0FBR0csRUFDTixDQUNELEVBQ0RlLEdBQXFCLFlBQW1DLFlBQVUsWUFFbEUsSUFBTUMsR0FBc0IsQ0FBQyxDQUFFLFVBQUFuQixFQUFXLEdBQUdHLENBQU0sSUFFL0NJLEdBQUMsUUFBSyxVQUFXRCxFQUFHLG9FQUFxRU4sQ0FBUyxFQUFJLEdBQUdHLEVBQU8sRUFHcEhnQixHQUFvQixZQUFjLHNCRHhKNUIsY0FBQUMsR0FJRSxRQUFBQyxPQUpGLG9CQUxDLFNBQVNDLEdBQXdCQyxFQUFxQyxDQUMzRSxHQUFNLENBQUUsU0FBQUMsQ0FBUyxFQUFJRCxFQUVyQixPQUNFRixHQUFDSSxHQUFBLENBQ0MsVUFBQUwsR0FBQ00sR0FBQSxDQUFtQixVQUFVLGlOQUMzQixTQUFBRixFQUNILEVBQ0FKLEdBQUNPLEdBQUEsQ0FDQyxTQUFBTixHQUFDTyxHQUFBLENBQ0MsUUFBUyxJQUFNLENBQ2IsSUFBTUMsRUFBVUMsR0FBbUJOLENBQVEsRUFDdEMsVUFBVSxVQUFVLFVBQVVLLENBQU8sRUFBRSxNQUFPRSxHQUFVLENBQzNELFFBQVEsTUFBTSwrQkFBZ0NBLENBQUssQ0FDckQsQ0FBQyxDQUNILEVBQ0EsVUFBVSxtQ0FFVixVQUFBWCxHQUFDWSxHQUFBLENBQUssS0FBTSxHQUFJLEVBQUUsUUFFcEIsRUFDRixHQUNGLENBRUosQ0FFQSxTQUFTRixHQUFtQkcsRUFBeUIsQ0FDbkQsR0FBSSxPQUFPQSxHQUFTLFVBQVksT0FBT0EsR0FBUyxVQUFZLE9BQU9BLEdBQVMsVUFDMUUsT0FBTyxPQUFPQSxDQUFJLEVBR3BCLEdBQUlBLEdBQVMsS0FDWCxNQUFPLEdBR1QsR0FBSUMsR0FBZUQsQ0FBSSxFQUFHLENBQ3hCLElBQU1WLEVBQVFVLEVBQUssTUFHbkIsT0FBSUEsRUFBSyxNQUFRLE9BQU9BLEVBQUssTUFBUyxZQUFjQSxFQUFLLEtBQUssT0FBUyxhQUM5RFYsRUFBTSxNQUFRLEdBSW5CVSxFQUFLLE1BQVEsT0FBT0EsRUFBSyxNQUFTLFlBQWNBLEVBQUssS0FBSyxPQUFTLFlBQzlELE9BSUxWLEVBQU0sU0FDRE8sR0FBbUJQLEVBQU0sUUFBcUIsRUFHaEQsRUFDVCxDQUVBLE9BQUksTUFBTSxRQUFRVSxDQUFJLEVBQ2JBLEVBQUssSUFBSUgsRUFBa0IsRUFBRSxLQUFLLEVBQUUsRUFHdEMsRUFDVCxDRTFDTSxjQUFBSyxPQUFBLG9CQWhCQyxTQUFTQyxHQUFLQyxFQUFrQixDQUNyQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLElBQUFDLEVBQUssTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlMLEVBRS9ELE9BQ0VGLEdBQUNRLEdBQUEsQ0FDRSxHQUFHRCxFQUNKLFVBQVdFLEVBQ1Qsd0RBR0Esb0JBQ0FMLENBQ0YsRUFDQSxJQUFLQyxFQUNMLE1BQU9DLEVBRVAsU0FBQU4sR0FBQ1UsR0FBQSxDQUF5QixTQUFBUCxFQUFTLEVBQ3JDLENBRUosQ0M3QkEsT0FBUyxnQkFBQVEsT0FBb0IsU0NNcEIsY0FBQUMsT0FBQSxvQkFIVCxJQUFNQyxHQUFlQyxHQUE0QixDQUMvQyxHQUFNLENBQUUsTUFBQUMsQ0FBTSxFQUFJRCxFQUVsQixPQUFPRixHQUFDLE9BQUksaUJBQWUsVUFBVyxnQkFBTyxFQUFRRyxDQUFNLEVBQUUsQ0FDL0QsRUFDQUYsR0FBWSxZQUFjLGNDRmpCLG1CQUFBRyxHQUFBLE9BQUFDLE9BQUEsb0JBSEYsU0FBU0MsR0FBU0MsRUFBc0IsQ0FDN0MsR0FBTSxDQUFFLE1BQUFDLENBQU0sRUFBSUQsRUFFbEIsT0FBT0YsR0FBQUQsR0FBQSxDQUFHLGdCQUFPSSxDQUFLLEVBQUUsQ0FDMUIsQ0NKUyxtQkFBQUMsR0FBQSxPQUFBQyxPQUFBLG9CQURGLFNBQVNDLEdBQVVDLEVBQXdCLENBQ2hELE9BQU9GLEdBQUFELEdBQUEsRUFBRSxDQUNYLENDRVMsbUJBQUFJLEdBQUEsT0FBQUMsT0FBQSxvQkFIRixTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsTUFBQUMsQ0FBTSxFQUFJRCxFQUVsQixPQUFPRixHQUFBRCxHQUFBLENBQUcsZ0JBQU9JLENBQUssRUFBRSxDQUMxQixDQ0RTLG1CQUFBQyxHQUFBLE9BQUFDLE9BQUEsb0JBSEYsU0FBU0MsR0FBU0MsRUFBc0IsQ0FDN0MsR0FBTSxDQUFFLE1BQUFDLENBQU0sRUFBSUQsRUFFbEIsT0FBT0YsR0FBQUQsR0FBQSxDQUFHLGNBQUssVUFBVUksRUFBTyxLQUFNLENBQUMsRUFBRSxDQUMzQyxDQ0pTLGNBQUFDLE9BQUEsb0JBREYsU0FBU0MsR0FBU0MsRUFBdUIsQ0FDOUMsT0FBT0YsR0FBQyxRQUFLLFVBQVUsOEJBQThCLGdCQUFJLENBQzNELENDRVMsY0FBQUcsT0FBQSxvQkFIRixTQUFTQyxHQUFZQyxFQUF5QixDQUNuRCxHQUFNLENBQUUsTUFBQUMsQ0FBTSxFQUFJRCxFQUVsQixPQUFPRixHQUFDLE9BQUksaUJBQWUsVUFBVyxTQUFBRyxJQUFVLEtBQU8sT0FBUyxPQUFPQSxDQUFLLEVBQUUsQ0FDaEYsQ0NEUyxtQkFBQUMsR0FBQSxPQUFBQyxPQUFBLG9CQUhGLFNBQVNDLEdBQVFDLEVBQXFCLENBQzNDLEdBQU0sQ0FBRSxNQUFBQyxDQUFNLEVBQUlELEVBRWxCLE9BQU9GLEdBQUFELEdBQUEsQ0FBRyxnQkFBT0ksQ0FBSyxFQUFFLENBQzFCLENDRFMsbUJBQUFDLEdBQUEsT0FBQUMsT0FBQSxvQkFIRixTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsTUFBQUMsQ0FBTSxFQUFJRCxFQUVsQixPQUFPRixHQUFBRCxHQUFBLENBQUcsZ0JBQU9JLENBQUssRUFBRSxDQUMxQixDVFVXLGNBQUFDLE9BQUEsb0JBSkosU0FBU0MsR0FBUSxDQUFFLEtBQUFDLEVBQU0sT0FBQUMsQ0FBTyxFQUFxRSxDQUMxRyxJQUFNQyxFQUFRRixFQUFLLFNBQVMsRUFFNUIsR0FBSUUsSUFBVSxPQUNaLE9BQU9KLEdBQUNLLEdBQUEsRUFBVSxFQUdwQixHQUFJRCxJQUFVLEtBQ1osT0FBT0osR0FBQ00sR0FBQSxFQUFTLEVBR25CLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFFBQUFDLENBQVEsRUFBSUwsRUFBTyxTQUVsQyxHQUFJSSxJQUFVLFFBQVVDLEVBQ3RCLE9BQU9SLEdBQUNTLEdBQUEsQ0FBUyxNQUFPTCxFQUFnQixFQUcxQyxHQUFJRyxJQUFVLFNBQ1osT0FBT1AsR0FBQ1UsR0FBQSxDQUFRLE1BQU9OLEVBQWdCLEVBR3pDLEdBQUlHLElBQVUsT0FDWixPQUFPUCxHQUFDVyxHQUFBLENBQVMsTUFBT1AsRUFBZ0IsRUFHMUMsR0FBSUcsSUFBVSxVQUNaLE9BQU9QLEdBQUNZLEdBQUEsQ0FBWSxNQUFPUixFQUFnQixFQUc3QyxHQUFJRyxJQUFVLFdBQ1osT0FBT1AsR0FBQ2EsR0FBQSxDQUFTLE1BQU9ULEVBQWdCLEVBRzFDLEdBQUlHLElBQVUsT0FDWixPQUFPUCxHQUFDYyxHQUFBLENBQVMsTUFBT1YsRUFBZ0IsRUFHMUMsR0FBSUcsSUFBVSxVQUNaLE9BQU9QLEdBQUNlLEdBQUEsQ0FBWSxNQUFPWCxFQUFnQixFQUc3QyxHQUFJRyxJQUFVLE1BQ1osT0FBSVMsR0FBYVosQ0FBSyxFQUNiSixHQUFDUyxHQUFBLENBQVMsTUFBT0wsRUFBZ0IsRUFHbkNKLEdBQUNVLEdBQUEsQ0FBUSxNQUFPTixFQUFPLEVBSWhDLE1BQU0sSUFBSSxNQUFNLG1CQUFtQkcsQ0FBZSwyQ0FBMkMsQ0FDL0YsQ1VqRUEsVUFBWVUsT0FBdUIsMkJBRW5DLFVBQVlDLE9BQVcsUUFpQmpCLGNBQUFDLE9BQUEsb0JBYk4sSUFBTUMsR0FBaUIsY0FHckIsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUMxQkosR0FBbUIsUUFBbEIsQ0FDQyxJQUFLSSxFQUNMLFVBQVdDLEVBQ1Qsa1RBQ0FILENBQ0YsRUFDQyxHQUFHQyxFQUVKLFNBQUFILEdBQW1CLGFBQWxCLENBQTRCLFVBQVdLLEVBQUcsMkRBQTJELEVBQ3BHLFNBQUFMLEdBQUNNLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLENBQ0QsRUFDREwsR0FBUyxZQUFnQyxRQUFLLFlDVjFDLGNBQUFNLE9BQUEsb0JBSkcsU0FBU0MsR0FBaUJDLEVBQThCLENBQzdELEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFNBQUFDLENBQVMsRUFBSUYsRUFFNUIsT0FDRUYsR0FBQ0ssR0FBQSxDQUNDLFFBQVNGLEVBQU0scUJBQXFCLEVBQ3BDLGdCQUFrQkcsR0FBVUgsRUFBTSxzQkFBc0IsQ0FBQyxDQUFDRyxDQUFLLEVBQy9ELFNBQVVGLEVBQ1osQ0FFSixDQ05JLGNBQUFHLE9BQUEsb0JBSkcsU0FBU0MsR0FBY0MsRUFBMkIsQ0FDdkQsR0FBTSxDQUFFLElBQUFDLEVBQUssU0FBQUMsQ0FBUyxFQUFJRixFQUUxQixPQUNFRixHQUFDSyxHQUFBLENBQ0MsUUFBU0YsRUFBSSxjQUFjLEVBQzNCLFNBQVUsQ0FBQ0EsRUFBSSxhQUFhLEdBQUtDLEVBQ2pDLGdCQUFpQkQsRUFBSSx5QkFBeUIsRUFDaEQsQ0FFSixDQ25CQSxVQUFZRyxPQUFzQiwwQkFDbEMsVUFBWUMsT0FBVyxRQWdCakIsY0FBQUMsT0FBQSxvQkFQTixJQUFNQyxHQUEyQixpQkFBOEMsSUFBSSxFQUU3RUMsR0FBYyxDQUFDLENBQUUsU0FBQUMsRUFBVSxHQUFHQyxDQUFNLElBQXFDLENBQzdFLEdBQU0sQ0FBQ0MsRUFBTUMsQ0FBTyxFQUFVLFlBQVMsRUFBSyxFQUU1QyxPQUNFTixHQUFDQyxHQUFtQixTQUFuQixDQUE0QixNQUFPLENBQUUsS0FBQUksRUFBTSxRQUFBQyxDQUFRLEVBQ2xELFNBQUFOLEdBQWtCLFFBQWpCLENBQXNCLEtBQU1LLEVBQU0sYUFBY0MsRUFBVSxHQUFHRixFQUMzRCxTQUFBRCxFQUNILEVBQ0YsQ0FFSixFQUNBRCxHQUFZLFlBQWMsY0FNMUIsSUFBTUssR0FBMkIsY0FDL0IsQ0FBQyxDQUFFLFNBQUFKLEVBQVUsY0FBQUssRUFBZSxVQUFBQyxFQUFXLEdBQUdMLENBQU0sRUFBR00sSUFBUSxDQUd6RCxJQUFNQyxFQUFtQixVQUEwQixJQUFJLEVBMEJ2RCxPQUNFWCxHQUFrQixXQUFqQixDQUNDLElBQU1ZLEdBQVMsQ0FDVCxPQUFPRixHQUFRLFdBQVlBLEVBQUlFLENBQUksRUFDOUJGLElBQUtBLEVBQUksUUFBVUUsR0FDM0JELEVBQWdFLFFBQVVDLENBQzdFLEVBR0EsVUFBV0MsRUFBRywrQkFBZ0NKLENBQVMsRUFDdEQsR0FBR0wsRUFFSCxTQUFBRCxFQUNILENBRUosQ0FDRixFQUNBSSxHQUFtQixZQUFjLHFCQUVqQyxJQUFNTyxHQUEyQixjQUcvQixDQUFDLENBQUUsVUFBQUwsRUFBVyxNQUFBTSxFQUFRLFNBQVUsV0FBQUMsRUFBYSxFQUFHLEdBQUdaLENBQU0sRUFBR00sSUFDNURWLEdBQWtCLFVBQWpCLENBQ0MsU0FBQUEsR0FBa0IsV0FBakIsQ0FDQyxJQUFLVSxFQUNMLE1BQU9LLEVBQ1AsV0FBWUMsRUFDWixVQUFXSCxFQUNULHNkQUNBSixDQUNGLEVBRUEsZ0JBQWtCUSxHQUFVQSxFQUFNLGVBQWUsRUFDaEQsR0FBR2IsRUFDTixFQUNGLENBQ0QsRUFDRFUsR0FBbUIsWUFBK0IsV0FBUSxZQUVuRCxTQUFTSSxHQUFrQkMsRUFJL0IsQ0FDRCxJQUFNQyxFQUFnQixjQUFXbkIsRUFBa0IsRUFFN0NvQixFQUFtQixlQUFZLElBQU0sQ0FDckNGLEVBQVEsVUFDVkMsR0FBUyxRQUFRLEVBQUssRUFFcEJELEVBQVEsUUFDVkEsRUFBUSxPQUFPLEVBRWJDLEdBQ0ZBLEVBQVEsUUFBUSxFQUFLLENBRXpCLEVBQUcsQ0FBQ0QsRUFBUSxPQUFRQyxDQUFPLENBQUMsRUFFdEJFLEVBQXFCLGVBQVksSUFBTSxDQUN2Q0gsRUFBUSxVQUNWQyxHQUFTLFFBQVEsRUFBSyxFQUVwQkQsRUFBUSxVQUNWQSxFQUFRLFNBQVMsRUFFZkMsR0FDRkEsRUFBUSxRQUFRLEVBQUssQ0FFekIsRUFBRyxDQUFDRCxFQUFRLFNBQVVDLENBQU8sQ0FBQyxFQUU5QixPQUFNLGFBQVUsSUFBTSxDQUNwQixJQUFNRyxFQUFpQk4sR0FBeUIsRUFFekNBLEVBQU0sTUFBUSxTQUFXQSxFQUFNLE1BQVEsV0FBYSxDQUFDQSxFQUFNLFNBQzlESSxFQUFXLEVBQ0ZKLEVBQU0sTUFBUSxVQUN2QkssRUFBYSxDQUVqQixFQUVBLGNBQU8saUJBQWlCLFVBQVdDLENBQWEsRUFDekMsSUFBTSxPQUFPLG9CQUFvQixVQUFXQSxDQUFhLENBQ2xFLEVBQUcsQ0FBQ0YsRUFBWUMsQ0FBWSxDQUFDLEVBRXRCLENBQUUsV0FBQUQsRUFBWSxhQUFBQyxDQUFhLENBQ3BDLENDN0hVLE9BQ0UsT0FBQUUsR0FERixRQUFBQyxPQUFBLG9CQVBILFNBQVNDLEdBQWNDLEVBQTJCLENBQ3ZELEdBQU0sQ0FBRSxjQUFBQyxFQUFlLGVBQUFDLEVBQWdCLGNBQUFDLEVBQWUsZUFBQUMsQ0FBZSxFQUFJSixFQUV6RSxPQUNFRixHQUFDTyxHQUFBLENBQ0MsVUFBQVIsR0FBQ1MsR0FBQSxDQUFtQixRQUFPLEdBQ3pCLFNBQUFULEdBQUNVLEdBQUEsQ0FBTSxHQUFHSCxFQUNSLFNBQUFOLEdBQUMsT0FBSSxVQUFVLDRFQUNiLFVBQUFELEdBQUMsT0FBSyxTQUFBSSxFQUFjLEVBQ25CRSxHQUNILEVBQ0YsRUFDRixFQUNBTixHQUFDVyxHQUFBLENBQ0MsTUFBTSxRQUNOLFlBQWEsR0FDYixVQUFXQyxFQUNULDhCQUNBLDRDQUNBLGdGQUNGLEVBQ0EsV0FBWSxJQUVYLFNBQUFQLEVBQ0gsR0FDRixDQUVKLENDeENBLE9BQ0UsaUJBQUFRLEdBQ0EsY0FBQUMsR0FFQSxlQUFBQyxHQUVBLGtCQUFBQyxHQUNBLGlCQUFBQyxHQUVBLGFBQUFDLEdBQ0EsY0FBQUMsT0FDSyxnQkFDUCxPQUNFLGFBQUFDLEdBQ0EsbUJBQUFDLEdBQ0EsK0JBQUFDLEdBQ0EsZUFBQUMsR0FDQSwrQkFBQUMsT0FDSyxvQkFDUCxPQUFTLE9BQUFDLE9BQVcscUJBRXBCLE9BQVMsVUFBQUMsT0FBYyxlQUN2QixPQUFTLGlCQUFBQyxPQUFxQixvQkFFOUIsT0FBUyxXQUFBQyxHQUFTLFlBQUFDLE9BQWdCLFFBRWxDLE9BQVMsWUFBQUMsT0FBZ0Isb0JBQ3pCLE9BQVMsZ0JBQUFDLE9BQW9CLFlBQzdCLE9BQU9DLE9BQVcsYUMxQlgsU0FBU0MsR0FBY0MsRUFBNEJDLEVBQTBCQyxFQUF3QixDQUMxRyxJQUFNQyxFQUFnQkgsR0FBUSxTQUFTLE1BRXZDLEdBQUlHLElBQWtCLE9BQ3BCLE1BQU8sR0FHVCxHQUFJRixJQUFhLE1BQVFBLElBQWEsU0FDcEMsT0FBT0MsRUFBTSxZQUFZLElBQU0sT0FBUyxLQUFPQSxFQUdqRCxHQUFJQyxJQUFrQixVQUFXLE9BQU9ELElBQVUsT0FLbEQsR0FKSUMsSUFBa0IsWUFDbEJBLElBQWtCLFFBQ2xCQSxJQUFrQixPQUNsQkEsSUFBa0IsVUFDbEJBLElBQWtCLE9BQVEsT0FBT0QsRUFFckMsR0FBSUMsSUFBa0IsT0FDcEIsR0FBSSxDQUNGLE9BQU8sS0FBSyxNQUFNRCxDQUFLLENBQ3pCLE1BQVEsQ0FDTixPQUFPQSxDQUNULENBR0YsT0FBSUMsSUFBa0IsVUFDYkQsSUFBVSxHQUFLLEtBQU8sT0FBT0EsQ0FBSyxFQUdwQ0EsQ0FDVCxDQUVPLFNBQVNFLEdBQ2RKLEVBQ0FDLEVBQ0FDLEVBQ1EsQ0FDUixJQUFNQyxFQUFnQkgsR0FBUSxTQUFTLE1BRXZDLEdBQUlDLElBQWFBLElBQWEsTUFBUUEsSUFBYSxVQUNqRCxPQUFPQyxJQUFVLEtBQU8sT0FBUyxPQUFPQSxDQUFLLEVBRy9DLEdBQUlDLElBQWtCLFFBQWFELEdBQVMsS0FDMUMsTUFBTyxHQVNULEdBTklDLElBQWtCLFdBQ2xCQSxJQUFrQixZQUNsQkEsSUFBa0IsUUFDbEJBLElBQWtCLFdBQ2xCQSxJQUFrQixPQUNsQkEsSUFBa0IsVUFDbEJBLElBQWtCLE9BQVEsT0FBTyxPQUFPRCxDQUFLLEVBRWpELEdBQUlDLElBQWtCLE9BQVEsQ0FDNUIsR0FBSUQsSUFBVSxHQUFJLE1BQU8sR0FDekIsR0FBSSxDQUNGLE9BQU8sS0FBSyxVQUFVQSxDQUFLLENBQzdCLE1BQVEsQ0FDTixPQUFPLE9BQU9BLENBQUssQ0FDckIsQ0FDRixDQUVBLE9BQU8sT0FBT0EsQ0FBSyxDQUNyQixDQ3BFQSxVQUFZRyxNQUEyQixnQ0FFdkMsVUFBWUMsT0FBVyxRQXNCckIsT0FVRSxPQUFBQyxHQVZGLFFBQUFDLE9BQUEsb0JBbEJGLElBQU1DLEdBQXFDLE9BRXJDQyxHQUE0QyxVQVVsRCxJQUFNQyxHQUErQixjQUtuQyxDQUFDLENBQUUsVUFBQUMsRUFBVyxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUMzQ0MsR0FBdUIsYUFBdEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsc1BBQ0FMLEdBQVMsVUFDVEQsQ0FDRixFQUNDLEdBQUdHLEVBRUgsVUFBQUQsRUFDREssR0FBQ0MsR0FBQSxDQUFhLFVBQVUsYUFBYSxHQUN2QyxDQUNELEVBQ0RULEdBQXVCLFlBQW9DLGFBQVcsWUFFdEUsSUFBTVUsR0FBK0IsY0FHbkMsQ0FBQyxDQUFFLFVBQUFULEVBQVcsR0FBR0csQ0FBTSxFQUFHQyxJQUMxQkcsR0FBdUIsYUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQ1QsNGlCQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RNLEdBQXVCLFlBQW9DLGFBQVcsWUFFdEUsSUFBTUMsR0FBNEIsY0FHaEMsQ0FBQyxDQUFFLFVBQUFWLEVBQVcsV0FBQVcsRUFBYSxFQUFHLEdBQUdSLENBQU0sRUFBR0MsSUFDMUNHLEdBQXVCLFNBQXRCLENBQ0MsU0FBQUEsR0FBdUIsVUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFdBQVlPLEVBQ1osVUFBV0wsRUFDVCxzTkFDQSw0YUFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUFDRixDQUNELEVBQ0RPLEdBQW9CLFlBQW9DLFVBQVEsWUFFaEUsSUFBTUUsR0FBeUIsY0FLN0IsQ0FBQyxDQUFFLFVBQUFaLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxHQUF1QixPQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCw4VEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RTLEdBQWlCLFlBQW9DLE9BQUssWUFFMUQsSUFBTUMsR0FBaUMsY0FHckMsQ0FBQyxDQUFFLFVBQUFiLEVBQVcsU0FBQUUsRUFBVSxRQUFBWSxFQUFTLEdBQUdYLENBQU0sRUFBR0MsSUFDN0NDLEdBQXVCLGVBQXRCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULHVSQUNBTixDQUNGLEVBQ0EsUUFBU2MsRUFDUixHQUFHWCxFQUVKLFVBQUFJLEdBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEdBQXVCLGdCQUF0QixDQUNDLFNBQUFBLEdBQUNRLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0NiLEdBQ0gsQ0FDRCxFQUNEVyxHQUF5QixZQUFvQyxlQUFhLFlBRTFFLElBQU1HLEdBQThCLGNBR2xDLENBQUMsQ0FBRSxVQUFBaEIsRUFBVyxTQUFBRSxFQUFVLEdBQUdDLENBQU0sRUFBR0MsSUFDcENDLEdBQXVCLFlBQXRCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULHVSQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFFSixVQUFBSSxHQUFDLFFBQUssVUFBVSxvRkFDZCxTQUFBQSxHQUF1QixnQkFBdEIsQ0FDQyxTQUFBQSxHQUFDVSxHQUFBLENBQU8sVUFBVSxnQ0FBZ0MsRUFDcEQsRUFDRixFQUNDZixHQUNILENBQ0QsRUFDRGMsR0FBc0IsWUFBb0MsWUFBVSxZQUVwRSxJQUFNRSxHQUEwQixjQUs5QixDQUFDLENBQUUsVUFBQWxCLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxHQUF1QixRQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyxnREFBaURMLEdBQVMsVUFBV0QsQ0FBUyxFQUMzRixHQUFHRyxFQUNOLENBQ0QsRUFDRGUsR0FBa0IsWUFBb0MsUUFBTSxZQUU1RCxJQUFNQyxHQUE4QixjQUdsQyxDQUFDLENBQUUsVUFBQW5CLEVBQVcsR0FBR0csQ0FBTSxFQUFHQyxJQUMxQkcsR0FBdUIsWUFBdEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsdUNBQXdDTixDQUFTLEVBQzlELEdBQUdHLEVBQ04sQ0FDRCxFQUNEZ0IsR0FBc0IsWUFBb0MsWUFBVSxZQUVwRSxJQUFNQyxHQUF1QixDQUFDLENBQUUsVUFBQXBCLEVBQVcsR0FBR0csQ0FBTSxJQUMzQ0ksR0FBQyxRQUFLLFVBQVdELEVBQUcseURBQTBETixDQUFTLEVBQUksR0FBR0csRUFBTyxFQUU5R2lCLEdBQXFCLFlBQWMsdUJDcktuQyxVQUFZQyxPQUFXLFFBT2pCLGNBQUFDLE9BQUEsb0JBSE4sSUFBTUMsR0FBYyxjQUNsQixDQUFDLENBQUUsVUFBQUMsRUFBVyxLQUFBQyxFQUFNLEdBQUdDLENBQU0sRUFBR0MsSUFFNUJMLEdBQUMsU0FDQyxLQUFNRyxFQUNOLFVBQVdHLEVBQ1QsdVpBQ0FKLENBQ0YsRUFDQSxJQUFLRyxFQUNKLEdBQUdELEVBQ04sQ0FHTixFQUNBSCxHQUFNLFlBQWMsUUNuQnBCLFVBQVlNLE1BQXFCLHlCQUVqQyxVQUFZQyxPQUFXLFFBd0JQLE9BSVYsT0FBQUMsR0FKVSxRQUFBQyxPQUFBLG9CQW5CaEIsSUFBTUMsR0FBeUIsT0FJL0IsSUFBTUMsR0FBOEIsUUFFOUJDLEdBQXNCLGNBRzFCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsTUFBQUMsRUFBTyxHQUFHQyxDQUFNLEVBQUdDLElBQzNDQyxHQUFpQixVQUFoQixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCxtWUFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBRUosVUFBQUUsR0FBQyxPQUFJLFVBQVUsbUNBQ1osVUFBQUgsR0FBU0csR0FBQyxRQUFLLFVBQVUsMkJBQTRCLFVBQUFILEVBQU0sS0FBQyxFQUM1REQsR0FDSCxFQUNBTSxHQUFpQixPQUFoQixDQUFxQixRQUFPLEdBQzNCLFNBQUFBLEdBQUNDLEdBQUEsQ0FBWSxVQUFVLDhCQUE4QixFQUN2RCxHQUNGLENBQ0QsRUFDRFQsR0FBYyxZQUE4QixVQUFRLFlBRXBELElBQU1VLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBVCxFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQWlCLGlCQUFoQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyxzRUFBdUVOLENBQVMsRUFDN0YsR0FBR0csRUFFSixTQUFBSSxHQUFDRyxHQUFBLENBQVUsVUFBVSxnQkFBZ0IsRUFDdkMsQ0FDRCxFQUNERCxHQUFxQixZQUE4QixpQkFBZSxZQUVsRSxJQUFNRSxHQUErQixjQUduQyxDQUFDLENBQUUsVUFBQVgsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxHQUFpQixtQkFBaEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsc0VBQXVFTixDQUFTLEVBQzdGLEdBQUdHLEVBRUosU0FBQUksR0FBQ0MsR0FBQSxDQUFZLFVBQVUsZ0JBQWdCLEVBQ3pDLENBQ0QsRUFDREcsR0FBdUIsWUFBOEIsbUJBQWlCLFlBRXRFLElBQU1DLEdBQXNCLGNBRzFCLENBQUMsQ0FBRSxVQUFBWixFQUFXLFNBQUFDLEVBQVUsU0FBQVksRUFBVyxTQUFVLEdBQUdWLENBQU0sRUFBR0MsSUFDekRHLEdBQWlCLFNBQWhCLENBQ0MsU0FBQUYsR0FBaUIsVUFBaEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsa25CQUNBTyxJQUFhLFVBQ1gsOElBQ0ZiLENBQ0YsRUFDQSxTQUFVYSxFQUNULEdBQUdWLEVBRUosVUFBQUksR0FBQ0UsR0FBQSxFQUFxQixFQUN0QkYsR0FBaUIsV0FBaEIsQ0FDQyxVQUFXRCxFQUNULFNBQ0FPLElBQWEsVUFDWCxrR0FDSixFQUVDLFNBQUFaLEVBQ0gsRUFDQU0sR0FBQ0ksR0FBQSxFQUF1QixHQUMxQixFQUNGLENBQ0QsRUFDREMsR0FBYyxZQUE4QixVQUFRLFlBRXBELElBQU1FLEdBQW9CLGNBR3hCLENBQUMsQ0FBRSxVQUFBZCxFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQWlCLFFBQWhCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLGdEQUFpRE4sQ0FBUyxFQUN2RSxHQUFHRyxFQUNOLENBQ0QsRUFDRFcsR0FBWSxZQUE4QixRQUFNLFlBRWhELElBQU1DLEVBQW1CLGNBR3ZCLENBQUMsQ0FBRSxVQUFBZixFQUFXLFNBQUFDLEVBQVUsR0FBR0UsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBaUIsT0FBaEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1QsNFFBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUVKLFVBQUFJLEdBQUMsUUFBSyxVQUFVLHFGQUNkLFNBQUFBLEdBQWlCLGdCQUFoQixDQUNDLFNBQUFBLEdBQUNTLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0FULEdBQWlCLFdBQWhCLENBQTBCLFNBQUFOLEVBQVMsR0FDdEMsQ0FDRCxFQUNEYyxFQUFXLFlBQThCLE9BQUssWUFFOUMsSUFBTUUsR0FBd0IsY0FHNUIsQ0FBQyxDQUFFLFVBQUFqQixFQUFXLEdBQUdHLENBQU0sRUFBR0MsSUFDMUJHLEdBQWlCLFlBQWhCLENBQTBCLElBQUtILEVBQUssVUFBV0UsRUFBRyx1Q0FBd0NOLENBQVMsRUFBSSxHQUFHRyxFQUFPLENBQ25ILEVBQ0RjLEdBQWdCLFlBQThCLFlBQVUsWUpsRmhELE9BNmlCQSxZQUFBQyxHQTdpQkEsT0FBQUMsRUFFRixRQUFBQyxNQUZFLG9CQWRSLElBQU1DLEdBQXdCLENBQUMsQ0FDN0IsTUFBQUMsRUFDQSxjQUFBQyxFQUNBLFNBQUFDLEVBQ0EsaUJBQUFDLEVBQW1CLDJCQUNyQixJQU9JTCxFQUFDTSxHQUFBLENBQU8sTUFBT0osRUFBTyxjQUFlQyxFQUFlLFNBQVVDLEVBQzVELFVBQUFMLEVBQUNRLEdBQUEsQ0FBYyxVQUFXRixFQUN4QixTQUFBTixFQUFDUyxHQUFBLENBQVksWUFBWSxRQUFRLEVBQ25DLEVBQ0FSLEVBQUNTLEdBQUEsQ0FDQyxVQUFBVixFQUFDVyxFQUFBLENBQVcsTUFBTSxNQUNoQixTQUFBWCxFQUFDLE9BQUksVUFBVSxtQkFBbUIsZUFBRyxFQUN2QyxFQUNBQSxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUNoQixTQUFBWCxFQUFDLE9BQUksVUFBVSxtQkFBbUIsY0FBRSxFQUN0QyxHQUNGLEdBQ0YsRUFLRVksR0FBNkIsQ0FBQyxDQUNsQyxTQUFBQyxFQUNBLE1BQUFDLEVBQ0EsTUFBQUMsQ0FDRixJQUlNLENBQ0osSUFBTUMsRUFBYUYsRUFBTSxLQUFNRyxHQUFTQSxFQUFLLEtBQU9KLENBQVEsRUFDNUQsR0FBSSxDQUFDRyxFQUFZLE9BQU8sS0FFeEIsSUFBSUUsRUFBcUMsTUFDckNDLEVBQTBCLEdBQ3hCQyxFQUFrQk4sRUFBTSxVQUFXRyxHQUFTQSxFQUFLLEtBQU9KLENBQVEsRUFFdEUsR0FBSU8sRUFBa0IsRUFBRyxDQUN2QixJQUFNQyxFQUFlUCxFQUFNTSxFQUFrQixDQUFDLEVBQzFDQyxJQUVGSCxFQUF1QkcsRUFBYSxNQUNwQ0YsRUFBMEIsR0FFOUIsQ0FFQSxPQUFJSCxFQUFXLE9BQVMsZUFFcEJoQixFQUFDc0IsR0FBQSxDQUNDLE9BQVFOLEVBQ1IsU0FBVSxJQUFNLENBQUMsRUFDakIsU0FBVSxJQUFNLENBQUMsRUFDakIsTUFBT0QsRUFDUCxvQkFBcUJJLEVBQ3JCLHFCQUFzQkQsRUFDdEIsd0JBQXlCLElBQU0sQ0FBQyxFQUNsQyxFQUlBbEIsRUFBQ3VCLEdBQUEsQ0FDQyxNQUFPUCxFQUNQLFNBQVUsSUFBTSxDQUFDLEVBQ2pCLFNBQVUsSUFBTSxDQUFDLEVBQ2pCLE9BQVEsR0FDUixNQUFPRCxFQUNQLG9CQUFxQkksRUFDckIscUJBQXNCRCxFQUN0Qix3QkFBeUIsSUFBTSxDQUFDLEVBQ2hDLDRCQUE2QixHQUMvQixDQUdOLEVBR01NLEdBQWtCLENBQUMsQ0FDdkIsTUFBQVYsRUFDQSxjQUFBVyxFQUNBLE1BQUFWLEVBQ0EsYUFBQVcsRUFDQSxhQUFBQyxFQUNBLGVBQUFDLEVBQ0EsYUFBQUMsRUFDQSxZQUFBQyxFQUNBLGdCQUFBQyxDQUNGLElBVU0sQ0FDSixJQUFNQyxFQUFrQkMsR0FBUSxJQUFNbkIsRUFBTSxJQUFLRyxHQUFTQSxFQUFLLEVBQUUsRUFBRyxDQUFDSCxDQUFLLENBQUMsRUFDckVvQixFQUFVQyxHQUNkQyxHQUFVQyxHQUFlLENBQUUscUJBQXNCLENBQUUsU0FBVSxDQUFFLENBQUUsQ0FBQyxFQUNsRUQsR0FBVUUsR0FBZ0IsQ0FBRSxpQkFBa0JDLEVBQTRCLENBQUMsQ0FDN0UsRUFjQSxPQUNFdEMsRUFBQ3VDLEdBQUEsQ0FDQyxRQUFTTixFQUNULG1CQUFvQk8sR0FDcEIsWUFBYVgsRUFDYixVQWpCMkJZLEdBQXdCLENBQ3JELEdBQU0sQ0FBRSxPQUFBQyxFQUFRLEtBQUFDLENBQUssRUFBSUYsRUFDekIsR0FBSUUsR0FBUUQsRUFBTyxLQUFPQyxFQUFLLEdBQUksQ0FDakMsSUFBTUMsRUFBVy9CLEVBQU0sVUFBV0csR0FBU0EsRUFBSyxLQUFPMEIsRUFBTyxFQUFFLEVBQzFERyxFQUFXaEMsRUFBTSxVQUFXRyxHQUFTQSxFQUFLLEtBQU8yQixFQUFLLEVBQUUsRUFDMURDLElBQWEsSUFBTUMsSUFBYSxJQUNsQ2xCLEVBQWVpQixFQUFVQyxDQUFRLENBRXJDLENBQ0FmLEVBQWdCLENBQ2xCLEVBU0ksVUFBQS9CLEVBQUMrQyxHQUFBLENBQWdCLE1BQU9mLEVBQWlCLFNBQVVnQixHQUNoRCxTQUFBbEMsRUFBTSxJQUFJLENBQUNtQyxFQUFtQkMsSUFBVSxDQUN2QyxJQUFJQyxFQUFnQixHQUNoQkMsRUFDQUMsRUFDQUMsRUFBd0IsR0FFNUIsR0FBSUosRUFBUSxFQUFHLENBQ2JDLEVBQWdCLEdBQ2hCLElBQU1JLEVBQVd6QyxFQUFNb0MsRUFBUSxDQUFDLEVBQ2hDRSxFQUFlRyxFQUFTLE1BQ3hCRixFQUF1QkcsR0FBMkIsQ0FDaEQsSUFBTUMsRUFBa0IsQ0FBRSxHQUFHRixFQUFVLE1BQU9DLENBQVMsRUFDdkQ5QixFQUFhd0IsRUFBUSxFQUFHTyxDQUFlLENBQ3pDLEVBQ0FILEVBQXdCSixFQUFRLElBQU1wQyxFQUFNLE9BQVMsQ0FDdkQsQ0FFQSxPQUNFZCxFQUFDMEQsR0FBQSxDQUVDLE9BQVFULEVBQ1IsU0FBV1UsR0FBa0JqQyxFQUFhd0IsRUFBT1MsQ0FBYSxFQUM5RCxTQUFVLElBQU1oQyxFQUFhdUIsQ0FBSyxFQUNsQyxZQUFhekIsRUFDYixNQUFPVixFQUNQLG9CQUFxQm9DLEVBQ3JCLHFCQUFzQkMsRUFDdEIsd0JBQXlCQyxFQUN6Qiw0QkFBNkJDLEdBVHhCTCxFQUFrQixFQVV6QixDQUVKLENBQUMsRUFDSCxFQUNDVyxHQUNDNUQsRUFBQzZELEdBQUEsQ0FDRSxTQUFBaEMsRUFDQzdCLEVBQUMsT0FBSSxVQUFVLGdCQUNiLFNBQUFBLEVBQUNZLEdBQUEsQ0FBMkIsU0FBVWlCLEVBQWMsTUFBT2YsRUFBTyxNQUFPQyxFQUFPLEVBQ2xGLEVBQ0UsS0FDTixFQUNBLFNBQVMsSUFDWCxHQUNGLENBRUosRUFHTTJDLEdBQXFCLENBQUMsQ0FDMUIsT0FBQUksRUFDQSxTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsWUFBQUMsRUFDQSxNQUFBbEQsRUFDQSxvQkFBQW1ELEVBQ0EscUJBQUFoRCxFQUNBLHdCQUFBaUQsRUFDQSw0QkFBQUMsQ0FDRixJQVVNLENBQ0osR0FBTSxDQUFFLFdBQUFDLEVBQVksVUFBQUMsRUFBVyxXQUFBQyxFQUFZLFVBQUFDLEVBQVcsV0FBQUMsRUFBWSxXQUFBQyxDQUFXLEVBQUlDLEdBQVksQ0FDM0YsR0FBSWIsRUFBTyxHQUNYLEtBQU0sQ0FDSixLQUFNQSxFQUFPLEtBQ2IsU0FBVUcsQ0FDWixDQUNGLENBQUMsRUFFS1csRUFBUSxDQUNaLFVBQVdDLEdBQUksVUFBVSxTQUFTTCxDQUFTLEVBQzNDLFdBQUFDLEVBQ0EsUUFBU0MsRUFBYSxHQUFNLENBQzlCLEVBRUEsT0FDRTFFLEVBQUMsT0FBSSxJQUFLdUUsRUFBWSxNQUFPSyxFQUFPLFVBQVUsa0RBQzNDLFNBQUFkLEVBQU8sT0FBUyxlQUNmOUQsRUFBQ3NCLEdBQUEsQ0FDQyxPQUFRd0MsRUFDUixTQUFVQyxFQUNWLFNBQVVDLEVBQ1YsZ0JBQWlCLENBQUUsR0FBR0ssRUFBWSxHQUFHQyxDQUFVLEVBQy9DLE1BQU92RCxFQUNQLG9CQUFxQm1ELEVBQ3JCLHFCQUFzQmhELEVBQ3RCLHdCQUF5QmlELEVBQ3pCLDRCQUE2QkMsRUFDL0IsRUFFQXBFLEVBQUN1QixHQUFBLENBQ0MsTUFBT3VDLEVBQ1AsU0FBVUMsRUFDVixTQUFVQyxFQUNWLGdCQUFpQixDQUFFLEdBQUdLLEVBQVksR0FBR0MsQ0FBVSxFQUMvQyxNQUFPdkQsRUFDUCxvQkFBcUJtRCxFQUNyQixxQkFBc0JoRCxFQUN0Qix3QkFBeUJpRCxFQUN6Qiw0QkFBNkJDLEVBQy9CLEVBRUosQ0FFSixFQUdNOUMsR0FBa0IsQ0FBQyxDQUN2QixPQUFBd0MsRUFDQSxTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsZ0JBQUFjLEVBQ0EsTUFBQS9ELEVBQ0Esb0JBQUFtRCxFQUNBLHFCQUFBaEQsRUFDQSx3QkFBQWlELEVBQ0EsNEJBQUFDLENBQ0YsSUFVTSxDQUNKLElBQU1XLEVBQXNCNUUsR0FBa0IsQ0FDNUM0RCxFQUFTLENBQUUsR0FBR0QsRUFBUSxPQUFRM0QsQ0FBTSxDQUFDLENBQ3ZDLEVBRU02RSxFQUF3QjdFLEdBQTBCLENBQ3RENEQsRUFBUyxDQUFFLEdBQUdELEVBQVEsU0FBVTNELENBQU0sQ0FBQyxDQUN6QyxFQUVNOEUsRUFBcUJDLEdBQTJDLENBQ3BFLElBQU1DLEVBQVdELEVBQUUsT0FBTyxNQUNwQkUsRUFBYXJFLEVBQU0sUUFBUStDLEVBQU8sTUFBTSxFQUU5QyxHQUFJc0IsSUFBZSxPQUFXLENBQzVCLElBQU01QixFQUFXNkIsR0FBY0QsRUFBWXRCLEVBQU8sU0FBVXFCLENBQVEsRUFFcEVwQixFQUFTLENBQUUsR0FBR0QsRUFBUSxNQUFPTixDQUFTLENBQUMsQ0FDekMsQ0FDRixFQUVNLENBQUM4QixFQUFhQyxDQUFjLEVBQUlDLEdBQ3BDQyxHQUFlMUUsRUFBTSxRQUFRK0MsRUFBTyxNQUFNLEVBQUdBLEVBQU8sU0FBVUEsRUFBTyxLQUFLLENBQzVFLEVBRUEsT0FDRTdELEVBQUN5RixHQUFPLElBQVAsQ0FDQyxVQUFVLDZDQUNWLFFBQVMsQ0FBRSxRQUFTLENBQUUsRUFDdEIsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixLQUFNLENBQUUsUUFBUyxDQUFFLEVBQ25CLFdBQVksQ0FBRSxPQUFRLENBQUUsU0FBVSxHQUFLLENBQUUsRUFFekMsVUFBQXpGLEVBQUMsT0FBSSxVQUFVLDZDQUNiLFVBQUFELEVBQUMsT0FBSyxHQUFHOEUsRUFBaUIsVUFBVSxpQkFDbEMsU0FBQTlFLEVBQUMyRixHQUFBLENBQWEsVUFBVSxtQkFBbUIsS0FBTSxHQUFJLEVBQ3ZELEVBRUExRixFQUFDLE9BQUksVUFBVSxtQ0FDWixVQUFBaUUsR0FBdUJDLEVBQ3RCbkUsRUFBQ0UsR0FBQSxDQUNDLE1BQU9nQixFQUNQLGNBQWVpRCxFQUNmLFNBQVVDLEVBQ1osRUFDRSxLQUVKbkUsRUFBQ00sR0FBQSxDQUFPLE1BQU91RCxFQUFPLE9BQVEsY0FBZWlCLEVBQzNDLFVBQUEvRSxFQUFDUSxHQUFBLENBQWMsVUFBVSw0QkFDdkIsU0FBQVIsRUFBQ1MsR0FBQSxDQUFZLFlBQVksZ0JBQWdCLEVBQzNDLEVBQ0FULEVBQUNVLEdBQUEsQ0FDRSxnQkFBTyxLQUFLSyxFQUFNLE9BQU8sRUFBRSxJQUFLNkUsR0FDL0I1RixFQUFDVyxFQUFBLENBQXdCLE1BQU9pRixFQUM3QixTQUFBQSxHQURjQSxDQUVqQixDQUNELEVBQ0gsR0FDRixFQUVBM0YsRUFBQ00sR0FBQSxDQUFPLE1BQU91RCxFQUFPLFNBQVUsY0FBZ0IzRCxHQUFVNkUsRUFBcUI3RSxDQUF1QixFQUNwRyxVQUFBSCxFQUFDUSxHQUFBLENBQWMsVUFBVSw0QkFDdkIsU0FBQVIsRUFBQ1MsR0FBQSxDQUFZLFlBQVksV0FBVyxFQUN0QyxFQUNBUixFQUFDUyxHQUFBLENBQ0MsVUFBQVYsRUFBQ1csRUFBQSxDQUFXLE1BQU0sSUFBSSxhQUFDLEVBQ3ZCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUFLLGNBQUUsRUFDekJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLElBQUksYUFBSSxFQUMxQlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sS0FBSyxjQUFLLEVBQzVCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxJQUFJLGFBQUksRUFDMUJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLEtBQUssY0FBSyxFQUM1QlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sS0FBSyxjQUFFLEVBQ3pCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxTQUFTLGtCQUFNLEVBQ2pDWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxPQUFPLGdCQUFJLEVBQzdCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxXQUFXLG9CQUFRLEVBQ3JDWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxRQUFRLGlCQUFLLEVBQy9CWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxZQUFZLHFCQUFTLEdBQ3pDLEdBQ0YsRUFFQVgsRUFBQzZGLEdBQUEsQ0FDQyxNQUFPUCxFQUNQLFNBQVdKLEdBQU0sQ0FDZkssRUFBZUwsRUFBRSxPQUFPLEtBQUssRUFDN0JELEVBQWtCQyxDQUFDLENBQ3JCLEVBQ0EsWUFBWSxRQUNaLFVBQVUsNEJBQ1osR0FDRixHQUNGLEVBRUFsRixFQUFDLE9BQUksVUFBVSxtQ0FDYixTQUFBQSxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUzlCLEVBQ3pDLFNBQUFoRSxFQUFDK0YsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUNmLEVBQ0YsR0FDRixDQUVKLEVBR014RSxHQUF1QixDQUFDLENBQzVCLE1BQUF5RSxFQUNBLFNBQUFqQyxFQUNBLFNBQUFDLEVBQ0EsZ0JBQUFjLEVBQ0EsT0FBQW1CLEVBQVMsR0FDVCxNQUFBbEYsRUFDQSxvQkFBQW1ELEVBQ0EscUJBQUFoRCxFQUNBLHdCQUFBaUQsRUFDQSw0QkFBQUMsQ0FDRixJQVdNLENBQ0osR0FBTSxDQUFDOEIsRUFBWUMsQ0FBYSxFQUFJWCxHQUFTLEVBQUksRUFDM0MsQ0FBQzNELEVBQWN1RSxDQUFlLEVBQUlaLEdBQWtDLElBQUksRUFFeEVhLEVBQWtCLElBQU0sQ0FDNUIsSUFBTUMsRUFBMEIsQ0FDOUIsR0FBSUMsR0FBTSxTQUFTLEVBQ25CLEtBQU0sZUFDTixPQUFRLE9BQU8sS0FBS3hGLEVBQU0sT0FBTyxFQUFFLENBQUMsR0FBSyxHQUN6QyxTQUFVLElBQ1YsTUFBTyxPQUNQLE1BQU8sS0FDVCxFQUVBZ0QsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVMsQ0FBQyxHQUFHQSxFQUFNLFFBQVNNLENBQVMsQ0FBRSxDQUFDLENBQy9ELEVBRU1FLEVBQWlCLElBQU0sQ0FDM0IsSUFBTUMsRUFBd0IsQ0FDNUIsR0FBSUYsR0FBTSxTQUFTLEVBQ25CLEtBQU0sY0FDTixRQUFTLENBQUMsRUFDVixNQUFPLEtBQ1QsRUFFQXhDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTLENBQUMsR0FBR0EsRUFBTSxRQUFTUyxDQUFRLENBQUUsQ0FBQyxDQUM5RCxFQUVNQyxFQUFvQixDQUFDeEQsRUFBZXlELElBQXFELENBQzdGLElBQU1DLEVBQWEsQ0FBQyxHQUFHWixFQUFNLE9BQU8sRUFDcENZLEVBQVcxRCxDQUFLLEVBQUl5RCxFQUNwQjVDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTWSxDQUFXLENBQUMsQ0FDNUMsRUFFTUMsRUFBdUIzRCxHQUFrQixDQUM3QyxJQUFNMEQsRUFBYSxDQUFDLEdBQUdaLEVBQU0sT0FBTyxFQUNwQ1ksRUFBVyxPQUFPMUQsRUFBTyxDQUFDLEVBQzFCYSxFQUFTLENBQUUsR0FBR2lDLEVBQU8sUUFBU1ksQ0FBVyxDQUFDLENBQzVDLEVBRU1FLEVBQW1CcEUsR0FBMEIsQ0FDakQwRCxFQUFnQjFELEVBQU0sT0FBTyxFQUFFLENBQ2pDLEVBRU1xRSxFQUFzQixJQUFNLENBQ2hDWCxFQUFnQixJQUFJLENBQ3RCLEVBRU1ZLEVBQXFCLENBQUNuRSxFQUFrQkMsSUFBcUIsQ0FDakUsR0FBSUQsSUFBYUMsRUFBVSxPQUMzQixJQUFNbUUsRUFBbUJDLEdBQVVsQixFQUFNLFFBQVNuRCxFQUFVQyxDQUFRLEVBQ3BFaUIsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVNpQixDQUFpQixDQUFDLENBQ2xELEVBRU1FLEVBQXFCLElBQ3BCakIsRUFDRCxDQUFDRixFQUFNLFNBQVdBLEVBQU0sUUFBUSxTQUFXLEVBRTNDaEcsRUFBQyxPQUFJLFVBQVUsbURBQW1ELCtEQUVsRSxFQUtGQSxFQUFDMEYsR0FBTyxJQUFQLENBQVcsV0FBWSxDQUFFLE9BQVEsQ0FBRSxTQUFVLEdBQUssQ0FBRSxFQUNuRCxTQUFBMUYsRUFBQyxPQUFJLFVBQVdvSCxFQUFHLDJDQUE0Q25CLEVBQVMsR0FBSyxTQUFTLEVBQ3BGLFNBQUFqRyxFQUFDd0IsR0FBQSxDQUNDLE1BQU93RSxFQUFNLFFBQ2IsY0FBZUEsRUFBTSxHQUNyQixNQUFPakYsRUFDUCxhQUFjMkYsRUFDZCxhQUFjRyxFQUNkLGVBQWdCRyxFQUNoQixhQUFjbkYsRUFDZCxZQUFhaUYsRUFDYixnQkFBaUJDLEVBQ25CLEVBQ0YsRUFDRixFQXhCc0IsS0E0QjFCLE9BQ0UvRyxFQUFDMEYsR0FBTyxJQUFQLENBQVcsVUFBVSxZQUFZLFdBQVksQ0FBRSxPQUFRLENBQUUsU0FBVSxHQUFLLENBQUUsRUFDekUsU0FBQXpGLEVBQUMsT0FBSSxVQUFXbUgsRUFBRyxnQ0FBaUNsQixFQUFhLFdBQWEsRUFBRSxFQUM5RSxVQUFBakcsRUFBQyxPQUFJLFVBQVUsdURBQ2IsVUFBQUEsRUFBQyxPQUFJLFVBQVUsbUNBQ1osV0FBQ2dHLEdBRUFqRyxFQUFDLE9BQUssR0FBRzhFLEVBQWlCLFVBQVUsaUJBQWlCLFFBQVMsSUFBTXFCLEVBQWMsQ0FBQ0QsQ0FBVSxFQUMxRixTQUFBQSxFQUFhbEcsRUFBQ3FILEdBQUEsQ0FBWSxLQUFNLEdBQUksRUFBS3JILEVBQUNzSCxHQUFBLENBQWEsS0FBTSxHQUFJLEVBQ3BFLEVBR0RwRCxHQUF1QkMsR0FBMkIsQ0FBQzhCLEdBQ2xEakcsRUFBQyxPQUFJLFVBQVUsMEJBQ2IsU0FBQUEsRUFBQ0UsR0FBQSxDQUNDLE1BQU9nQixFQUNQLGNBQWVpRCxFQUNmLFNBQVVDLEVBQ1osRUFDRixFQUdGbkUsRUFBQzZGLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsS0FBSyxLQUNMLFFBQVNPLEVBQ1QsVUFBV2UsRUFBRyxvRUFBb0UsRUFDbkYsdUJBRUVwQixFQUFNLFFBQVEsT0FBUyxHQUN0QmhHLEVBQUN1SCxHQUFBLENBQU0sVUFBVSxvQkFDZixTQUFBdkgsRUFBQ3dILEdBQUEsQ0FBYyxXQUFZLENBQUUsT0FBUSxDQUFFLFNBQVUsR0FBSyxDQUFFLEVBQUksU0FBQXhCLEVBQU0sUUFBUSxPQUFPLEVBQ25GLEdBRUosRUFFQWhHLEVBQUM4RixFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxRQUFTVSxFQUFnQixVQUFVLG1DQUFtQyxxQkFFMUcsR0FDRixFQUNBdkcsRUFBQyxPQUFJLFVBQVUsbUNBQ1osVUFBQWdHLEdBQ0NoRyxFQUFDd0gsR0FBQSxDQUNDLFVBQUF6SCxFQUFDMEgsR0FBQSxDQUFvQixRQUFPLEdBQzFCLFNBQUExSCxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQzNCLFNBQUE5RixFQUFDMkgsR0FBQSxDQUFXLFVBQVUsWUFBWSxFQUNwQyxFQUNGLEVBQ0EzSCxFQUFDNEgsR0FBQSxDQUFvQixNQUFNLFNBQVMsVUFBVSxZQUMzQyxTQUFBNUIsRUFBTSxRQUFRLFNBQVcsRUFDeEJoRyxFQUFDLE9BQUksVUFBVSx1REFBdUQsc0VBRXRFLEVBRUFBLEVBQUMsT0FBSSxVQUFVLGdGQUNiLFNBQUFBLEVBQUM2SCxHQUFBLENBQWdCLE9BQVE3QixFQUFPLEVBQ2xDLEVBRUosR0FDRixFQUVELENBQUNDLEdBQ0FqRyxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUzlCLEVBQ3pDLFNBQUFoRSxFQUFDK0YsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUNmLEdBRUosR0FDRixFQUNBL0YsRUFBQyxPQUFJLFVBQVdvSCxFQUFHbkIsRUFBUyxHQUFLLFNBQVMsRUFBSSxTQUFBa0IsRUFBbUIsRUFBRSxHQUNyRSxFQUNGLENBRUosRUFHTVUsR0FBa0IsQ0FBQyxDQUFFLE9BQUEvRCxDQUFPLElBQTBDLENBQzFFLElBQUlnRSxFQUFpQixFQUVyQixHQUFJaEUsRUFBTyxRQUFRLFNBQVcsRUFBRyxNQUFPLE1BRXhDLElBQU1rQyxFQUFRbEMsRUFBTyxRQUFRLElBQUksQ0FBQ2lFLEVBQUdDLElBQU0sQ0FDekMsSUFBSUMsRUFDRUMsRUFBU3BFLEVBQU8sUUFBUSxPQUFTLElBQU1rRSxFQWE3QyxHQVhJRixJQUFtQixLQUNyQkEsRUFBaUIsR0FHZkMsRUFBRSxRQUFVLE9BQVMsQ0FBQ0csSUFDeEJKLEdBQWtCLEdBRWhCQSxJQUFtQkksR0FBVUgsRUFBRSxRQUFVLFFBQzNDRCxFQUFpQixJQUdmQyxFQUFFLE9BQVMsZUFBZ0IsQ0FDN0IsR0FBTSxDQUFFLE9BQUFuQyxFQUFRLFNBQUF1QyxDQUFTLEVBQUlKLEVBRTdCRSxFQUNFaEksRUFBQUYsR0FBQSxDQUNFLFVBQUFFLEVBQUMsUUFBSyxjQUFFMkYsRUFBTyxLQUFDLEVBQ2hCM0YsRUFBQyxRQUFLLGNBQUVrSSxFQUFTLEtBQUMsRUFDbEJuSSxFQUFDLFFBQUssZUFBRyxHQUNYLENBRUosTUFDRWlJLEVBQVNqSSxFQUFDNkgsR0FBQSxDQUFnQixPQUFRRSxFQUFHLEVBR3ZDLE9BQ0U5SCxFQUFDRixHQUFBLENBQ0UsVUFBQStILElBQW1CLEVBQUk5SCxFQUFDLFFBQUssVUFBVSxtQkFBbUIsYUFBQyxFQUFVLEdBQ3JFaUksRUFDQUgsSUFBbUIsR0FBSzlILEVBQUMsUUFBSyxVQUFVLG1CQUFtQixhQUFDLEVBQVUsR0FDdEUsQ0FBQ2tJLEdBQVVqSSxFQUFDLFFBQUssVUFBVSxpREFBaUQsY0FBRThILEVBQUUsTUFBTSxLQUFDLElBSjNFQSxFQUFFLEVBS2pCLENBRUosQ0FBQyxFQUVELE9BQU8vSCxFQUFDLFFBQU0sU0FBQWdHLEVBQU0sQ0FDdEIsRUFHTyxTQUFTb0MsR0FBVyxDQUN6QixPQUFBdEUsRUFDQSxVQUFBdUUsRUFDQSxpQkFBQUMsRUFDQSxNQUFBdkgsQ0FDRixFQUtHLENBS0QsT0FDRWQsRUFBQyxPQUFJLFVBQVUsK0JBQ2IsVUFBQUQsRUFBQ3VCLEdBQUEsQ0FBcUIsTUFBT3VDLEVBQVEsU0FBVXVFLEVBQVcsU0FBVSxJQUFNLENBQUMsRUFBRyxPQUFRLEdBQU0sTUFBT3RILEVBQU8sRUFDMUdmLEVBQUM4RixFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxVQUFVLGNBQWMsUUFQckMsSUFBTSxDQUMvQndDLEVBQWlCeEUsQ0FBTSxDQUN6QixFQUs2Rix5QkFFekYsR0FDRixDQUVKLENLbHBCQSxPQUFTLGNBQUF5RSxHQUErQixlQUFBQyxHQUFhLGFBQUFDLEdBQVcsY0FBQUMsT0FBa0IsZ0JBQ2xGLE9BQVMsYUFBQUMsR0FBVyxpQ0FBQUMsR0FBK0IsbUJBQUFDLE9BQXVCLG9CQUUxRSxPQUdFLG1CQUFBQyxHQUtBLGlCQUFBQyxPQUNLLGlTQ1ZQLElBQU1DLEdBQVdDLEdBQXlCLENBQ3hDLEdBQUksQ0FDRixJQUFNQyxFQUFZQyxhQUFhSCxRQUFRQyxDQUFHLEVBQzFDLE9BQUksT0FBT0MsR0FBYyxTQUNoQkUsS0FBS0MsTUFBTUgsQ0FBUyxFQUU3QixNQUNGLE1BQVEsQ0FDTixNQUNGLENBQ0YsRUFFZSxTQUFTSSxHQUN0QkwsRUFDQU0sRUFDNEQsQ0FDNUQsR0FBTSxDQUFDQyxFQUFPQyxDQUFRLEVBQUlDLEVBQU1DLFNBQVEsRUFFeENELEVBQU1FLFVBQVUsSUFBTSxDQUNwQixJQUFNQyxFQUFlYixHQUFRQyxDQUFHLEVBRzlCUSxFQURFLE9BQU9JLEVBQWlCLEtBQWVBLElBQWlCLEtBRXhELE9BQU9OLEdBQWlCLFdBQWFBLEVBQVksRUFBS0EsRUFHL0NNLENBRlQsQ0FJSixFQUFHLENBQUNOLEVBQWNOLENBQUcsQ0FBQyxFQUV0QixJQUFNYSxFQUFTSixFQUFNSyxZQUNsQkMsR0FBaUIsQ0FDaEJQLEVBQVNRLEdBQU8sQ0FDZCxJQUFJQyxFQUFTRixFQUVULE9BQU9BLEdBQVcsYUFDcEJFLEVBQVNGLEVBQVFDLENBQUcsR0FFdEIsR0FBSSxDQUNGZCxhQUFhZ0IsUUFBUWxCLEVBQUtHLEtBQUtnQixVQUFVRixDQUFNLENBQUMsT0FDMUMsQ0FBQSxDQUVSLE9BQU9BLENBQ1QsQ0FBQyxDQUNILEVBQ0EsQ0FBQ2pCLENBQUcsQ0FDTixFQUVBLE1BQU8sQ0FBQ08sRUFBT00sQ0FBTSxDQUN2QixDQ2pETyxJQUFNTyxHQUFlLENBQzFCQyxXQUFZLFVBQ1pDLGNBQWUsVUFDZkMsV0FBWSxRQUNaQyxLQUFNLFVBQ05DLFFBQVMsVUFDVEMscUJBQXNCLE9BQ3RCQyxlQUFnQixPQUNoQkMsUUFBUyxVQUNUQyxPQUFRLFVBQ1JDLE9BQVEsVUFDUkMsUUFBUyxTQUNYLEVBUU1DLEdBQWV2QixFQUFNd0IsY0FBY2IsRUFBWSxFQUU5QyxTQUFTYyxHQUFhQyxFQUFvQyxDQUFBLEdBQW5DLENBQUVDLE1BQUFBLEVBQU8sR0FBR0MsQ0FBb0IsRUFBQ0YsRUFDN0QsT0FBTzFCLEVBQUE2QixjQUFDTixHQUFhTyxTQUFRQyxHQUFBLENBQUNqQyxNQUFPNkIsR0FBV0MsQ0FBSSxDQUFHLENBQ3pELENBRU8sU0FBU0ksSUFBVyxDQUN6QixPQUFPaEMsRUFBTWlDLFdBQVdWLEVBQVksQ0FDdEMsQ0M1QmUsU0FBU1csR0FBY0MsRUFBb0MsQ0FFeEUsR0FBTSxDQUFDQyxFQUFTQyxDQUFVLEVBQUlyQyxFQUFNQyxTQUFTLElBQU0sQ0FDakQsR0FBSSxPQUFPcUMsT0FBVyxJQUNwQixPQUFPQSxPQUFPQyxZQUFjRCxPQUFPQyxXQUFXSixDQUFLLEVBQUVLLE9BRXpELENBQUMsRUFHRHhDLE9BQUFBLEVBQU1FLFVBQVUsSUFBTSxDQUNwQixHQUFJLE9BQU9vQyxPQUFXLElBQWEsQ0FDakMsR0FBSSxDQUFDQSxPQUFPQyxXQUNWLE9BSUYsSUFBTUUsRUFBVUgsT0FBT0MsV0FBV0osQ0FBSyxFQUdqQ08sRUFBV2hCLEdBQUEsQ0FBQSxHQUFDLENBQUVjLFFBQUFBLENBQThCLEVBQUNkLEVBQUEsT0FDakRXLEVBQVdHLENBQU8sQ0FBQyxFQUdyQkMsT0FBQUEsRUFBUUUsWUFBWUQsQ0FBUSxFQUVyQixJQUFNLENBRVhELEVBQVFHLGVBQWVGLENBQVEsRUFFbkMsR0FDQyxDQUFDTixFQUFTRCxFQUFPRSxDQUFVLENBQUMsRUFFeEJELENBQ1QsQ0M5QkEsSUFBTVMsR0FBVyxPQUFPUCxPQUFXLElBNkM1QixTQUFTUSxHQUNkQyxFQUNBQyxFQUNBQyxFQUNBLENBQUEsT0FEQUEsSUFBK0IsU0FBL0JBLEVBQWtDLENBQUEsR0FFM0JqRCxFQUFNa0QsV0FDWCxDQUFBeEIsRUFBcUJ5QixJQUFRLENBQUEsR0FBNUIsQ0FBRUMsTUFBQUEsRUFBTyxHQUFHeEIsQ0FBSyxFQUFDRixFQUNYQyxFQUFRSyxHQUFRLEVBRWhCcUIsRUFBY0MsT0FBT0MsUUFBUU4sQ0FBTyxFQUFFTyxPQUMxQyxDQUFDQyxFQUFPQyxJQUFtQixDQUFBLEdBQWpCLENBQUNuRSxFQUFLTyxDQUFLLEVBQUM0RCxFQUVwQixPQUFPeEIsR0FBYzNDLENBQUcsRUFDcEIsQ0FDRSxHQUFHa0UsRUFDSCxHQUFJLE9BQU8zRCxHQUFVLFdBQWFBLEVBQU04QixFQUFNRCxDQUFLLEVBQUk3QixDQUN6RCxFQUNBMkQsR0FFTixDQUFBLENBQ0YsRUFFQSxPQUFPekQsRUFBTTZCLGNBQWNrQixFQUFNLENBQy9CLEdBQUduQixFQUNId0IsTUFBTyxDQUNMLEdBQUksT0FBT0osR0FBYyxXQUNyQkEsRUFBVXBCLEVBQU1ELENBQUssRUFDckJxQixFQUNKLEdBQUdJLEVBQ0gsR0FBR0MsR0FFTEYsSUFBQUEsQ0FDRixDQUFDLENBQ0gsQ0FDRixDQUNGLENBRU8sU0FBU1EsSUFBZSxDQUM3QixJQUFNQyxFQUFhNUQsRUFBTTZELE9BQU8sRUFBSyxFQUMvQkMsRUFBWTlELEVBQU1LLFlBQVksSUFBTXVELEVBQVdILFFBQVMsQ0FBQSxDQUFFLEVBRWhFekQsT0FBQUEsRUFBTTZDLEdBQVcsWUFBYyxpQkFBaUIsRUFBRSxLQUNoRGUsRUFBV0gsUUFBVSxHQUNkLElBQU0sQ0FDWEcsRUFBV0gsUUFBVSxLQUV0QixDQUFBLENBQUUsRUFFRUssQ0FDVCxDQ2pHTyxJQUFNQyxHQUFRakIsR0FDbkIsTUFDQSxDQUFDa0IsRUFBUXJDLEtBQVcsQ0FDbEJzQyxTQUFVLDJCQUNWQyxXQUFZLGFBQ1pDLFFBQVMsT0FDVEMsZ0JBQWlCekMsRUFBTWYsV0FDdkJ5RCxNQUFPMUMsRUFBTWIsVUFDZixHQUNBLENBQ0UscUJBQXNCLENBQ3BCd0QsY0FBZSxVQUVqQixxQkFBc0IsQ0FDcEJMLFNBQVUsTUFFWixDQUNGLENBQ0YsRUFFb0JuQixHQUNsQixNQUNBLEtBQU8sQ0FDTHlCLEtBQU0sWUFDTkosUUFBUyxPQUNURyxjQUFlLFNBQ2ZFLFNBQVUsT0FDVkMsT0FBUSxNQUNWLEdBQ0EsQ0FDRSxxQkFBc0JDLENBQUNWLEVBQVFyQyxLQUFXLENBQ3hDZ0QsVUFBVyxhQUFhaEQsRUFBTVosSUFBSSxJQUV0QyxDQUNGLEVBRU8sSUFBTTZELEdBQVM5QixHQUFPLFNBQVUsQ0FBQytCLEVBQU9sRCxLQUFXLENBQ3hEbUQsV0FBWSxPQUNaYixTQUFVLE9BQ1ZjLFdBQVksT0FDWm5FLFdBQVllLEVBQU1aLEtBQ2xCaUUsT0FBUSxJQUNSQyxhQUFjLE9BQ2RaLE1BQU8sUUFDUGEsUUFBUyxPQUNUQyxRQUFTTixFQUFNTyxTQUFXLEtBQU9DLE9BQ2pDQyxPQUFRLFNBQ1YsRUFBRSxFQWdCV3hDLEdBQU8sT0FBUSxDQUMxQm1CLFNBQVUsTUFDWixDQUFDLEVBRWFuQixHQUFPLFFBQVMsQ0FBQ2tCLEVBQVFyQyxLQUFXLENBQ2hEeUMsZ0JBQWlCekMsRUFBTVYscUJBQ3ZCK0QsT0FBUSxFQUNSQyxhQUFjLE9BQ2RaLE1BQU8xQyxFQUFNVCxlQUNiK0MsU0FBVSxPQUNWc0IsV0FBWSxNQUNaTCxRQUFTLFdBQ1gsRUFBRSxFQUVhcEMsR0FDYixTQUNBLENBQUNrQixFQUFRckMsS0FBVyxDQUNsQndDLFFBQVMsZUFDVEYsU0FBVSxPQUNWQyxXQUFZLGFBQ1phLFdBQVksU0FDWlEsV0FBWSxNQUNaTCxRQUFTLHVCQUNUVCxPQUFRLE9BQ1JPLE9BQVEsRUFDUkMsYUFBYyxPQUNkSCxXQUFZLE9BQ1pVLGlCQUFrQixPQUNsQnBCLGdCQUFpQnpDLEVBQU1WLHFCQUN2QndFLGdCQUFpQiwrSkFDakJDLGlCQUFrQixZQUNsQkMsbUJBQW9CLHFCQUNwQkMsZUFBZ0IsbUJBQ2hCdkIsTUFBTzFDLEVBQU1ULGNBQ2YsR0FDQSxDQUNFLHFCQUFzQixDQUNwQmlELFFBQVMsTUFDWCxDQUNGLENBQ0YsRUNuR0EsSUFBTTBCLEdBQVEvQyxHQUFPLE1BQU8sQ0FDMUJvQixXQUFZLG1CQUNaRCxTQUFVLFNBQ1ZzQixXQUFZLE1BQ1pPLFFBQVMsT0FDVEMsVUFBVyxZQUNiLENBQUMsRUFFS0MsR0FBUWxELEdBQU8sT0FBUSxDQUMzQndDLE9BQVEsVUFDUmpCLE1BQU8sT0FDVCxDQUFDLEVBRUs0QixHQUFRbkQsR0FBTyxPQUFRLENBQUMrQixFQUFPbEQsS0FBVyxDQUM5QzBDLE1BQU8xQyxFQUFNUCxNQUNmLEVBQUUsRUFFSThFLEdBQWFwRCxHQUFPLE1BQU8sQ0FDL0JxRCxXQUFZLFFBQ1pDLFlBQWEsT0FDYkMsV0FBWSwyQkFDZCxDQUFDLEVBRUtDLEdBQU94RCxHQUFPLE9BQVEsQ0FDMUJ1QixNQUFPLE9BQ1BKLFNBQVUsT0FDWixDQUFDLEVBRUtzQyxHQUFXN0UsR0FBQSxDQUFBLEdBQUMsQ0FBRThFLFNBQUFBLEVBQVVwRCxNQUFBQSxFQUFRLENBQUEsRUFBSSxHQUFHeEIsQ0FBSyxFQUFDRixFQUFBLE9BQ2pEMUIsRUFBQTZCLGNBQUEsT0FBQSxDQUNFdUIsTUFBTyxDQUNMZSxRQUFTLGVBQ1RzQyxXQUFZLGVBQ1pDLFVBQVcsVUFBVUYsRUFBVyxHQUFLLENBQUMsUUFBUXBELEVBQU1zRCxXQUFhLEVBQUUsR0FDbkUsR0FBR3RELENBQ0wsQ0FBRSxFQUNILFFBRUssQ0FBQyxFQUdIdUQsR0FBa0JqRCxHQWFsQixDQUFBLEdBYm1CLENBQ3ZCa0QsWUFBQUEsRUFDQUMsTUFBQUEsRUFDQS9HLE1BQUFBLEVBRUFnSCxXQUFBQSxFQUNBQyxjQUFBQSxFQUNBaEUsS0FBQUEsRUFFQXlELFNBQUFBLEVBQ0FRLE9BQUFBLEVBQ0FDLFNBQUFBLEVBQ0FDLFNBQUFBLENBQ0YsRUFBQ3hELEVBQ08sQ0FBQ3lELEVBQWVDLENBQWdCLEVBQUlwSCxFQUFNQyxTQUFTb0YsTUFBUyxFQUM1RCxDQUFDZ0MsRUFBZUMsQ0FBZ0IsRUFBSXRILEVBQU1DLFNBQVMsQ0FBQSxDQUFFLEVBRXJEc0gsRUFBdUJBLElBQU0sQ0FDakNILEVBQWlCdEgsRUFBSyxDQUFFLEdBRzFCLE9BQ0VFLEVBQUE2QixjQUFDZ0UsR0FBSyxDQUFDdEcsSUFBS3NILENBQU0sRUFDZkUsR0FBQUEsTUFBQUEsRUFBZVMsT0FDZHhILEVBQUE2QixjQUFBN0IsRUFBQXlILFNBQUEsS0FDRXpILEVBQUE2QixjQUFDbUUsR0FBSyxDQUFDMEIsUUFBU0EsSUFBTVYsRUFBTSxDQUFHLEVBQzdCaEgsRUFBQTZCLGNBQUMwRSxHQUFRLENBQUNDLFNBQVVBLENBQVMsQ0FBRSxFQUFFLElBQUNLLEVBQU8sSUFDekM3RyxFQUFBNkIsY0FBQ3lFLEdBQUksS0FDRnFCLE9BQU81RSxDQUFJLEVBQUU2RSxZQUFXLElBQU8sV0FBYSxjQUFnQixHQUM1RGQsRUFBV1UsT0FBTyxJQUFFVixFQUFXVSxPQUFTLEVBQUksUUFBVSxNQUNuRCxDQUNELEVBQ05oQixFQUNDTyxFQUFjUyxTQUFXLEVBQ3ZCeEgsRUFBQTZCLGNBQUNxRSxHQUFVLEtBQ1JZLEVBQVdlLElBQUlDLEdBQVNsQixFQUFZa0IsQ0FBSyxDQUFDLENBQ2pDLEVBRVo5SCxFQUFBNkIsY0FBQ3FFLEdBQ0VhLEtBQUFBLEVBQWNjLElBQUksQ0FBQ3RFLEVBQVN3RSxJQUMzQi9ILEVBQUE2QixjQUFBLE1BQUEsQ0FBS3RDLElBQUt3SSxHQUNSL0gsRUFBQTZCLGNBQUNnRSxHQUFLLEtBQ0o3RixFQUFBNkIsY0FBQ21FLEdBQUssQ0FDSjBCLFFBQVNBLElBQ1BKLEVBQWlCL0csR0FDZkEsRUFBSXlILFNBQVNELENBQUssRUFDZHhILEVBQUkwSCxPQUFPQyxHQUFLQSxJQUFNSCxDQUFLLEVBQzNCLENBQUMsR0FBR3hILEVBQUt3SCxDQUFLLENBQ3BCLENBQ0QsRUFFRC9ILEVBQUE2QixjQUFDMEUsR0FBUSxDQUFDQyxTQUFVQSxDQUFTLENBQUUsRUFBQyxLQUFHdUIsRUFBUWQsRUFBUyxPQUFLLElBQ3hEYyxFQUFRZCxFQUFXQSxFQUFXLEVBQUUsR0FDNUIsRUFDTkksRUFBY1csU0FBU0QsQ0FBSyxFQUMzQi9ILEVBQUE2QixjQUFDcUUsR0FDRTNDLEtBQUFBLEVBQVFzRSxJQUFJQyxHQUFTbEIsRUFBWWtCLENBQUssQ0FBQyxDQUM5QixFQUNWLElBQ0MsQ0FDSixDQUNOLENBQ1MsRUFFWixJQUNKLEVBQ0EvRSxJQUFTLFdBQ1gvQyxFQUFBNkIsY0FBQTdCLEVBQUF5SCxTQUNFekgsS0FBQUEsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1BqQixTQUFVQSxFQUNWTCxNQUNFN0csRUFBQTZCLGNBQUEsU0FBQSxDQUFRNkYsUUFBU0gsR0FDZnZILEVBQUE2QixjQUFDbUUsR0FBT2EsS0FBQUEsQ0FBYSxFQUFDLGFBQUksR0FDcEIsRUFFVi9HLE1BQU9xSCxFQUNQaUIsZ0JBQWlCLENBQUEsRUFDbEIsQ0FDRCxFQUVGcEksRUFBQTZCLGNBQUE3QixFQUFBeUgsU0FBQSxLQUNFekgsRUFBQTZCLGNBQUNtRSxHQUFLLEtBQUVhLEVBQU0sR0FBUSxFQUFFLElBQ3hCN0csRUFBQTZCLGNBQUNvRSxHQUFLLEtBQ0h2RyxLQUFLZ0IsVUFBVVosRUFBT3dELE9BQU8rRSxvQkFBb0IvRSxPQUFPeEQsQ0FBSyxDQUFDLENBQUMsQ0FDM0QsQ0FDUCxDQUVDLENBRVgsRUFFZSxTQUFTcUksR0FBUUcsRUFPN0IsQ0FBQSxHQVA4QixDQUMvQnhJLE1BQUFBLEVBQ0FzSSxnQkFBQUEsRUFDQWxCLFNBQUFBLEVBQVdQLEdBQ1hNLFNBQUFBLEVBQVcsSUFDWHNCLE1BQUFBLEVBQVEsRUFDUixHQUFHM0csQ0FDTCxFQUFDMEcsRUFDTyxDQUFDOUIsRUFBVWdDLENBQVcsRUFBSXhJLEVBQU1DLFNBQVNtSSxDQUFlLEVBRXhEcEIsRUFBU3lCLEdBQU8sQ0FDcEJELEVBQVlqSSxHQUFRLE9BQU9rSSxFQUFRLElBQWNBLEVBQU0sQ0FBQ2xJLENBQUksR0FHeERtSSxFQUFPLENBQUEsRUFFVDNGLEVBQU8sT0FBT2pELEVBQ2RnSCxFQUNFQyxFQUFnQixDQUFBLEVBRWhCNEIsRUFBZUMsR0FBTyxDQUMxQixJQUFNQyxFQUFVSCxFQUFLSSxPQUFPRixFQUFJL0IsS0FBSyxFQUMvQmtDLEVBQ0pYLElBQW9CLEdBQ2hCLENBQUUsQ0FBQ1EsRUFBSS9CLEtBQUssRUFBRyxJQUNmdUIsSUFBa0JRLEVBQUkvQixLQUFLLEVBQ2pDLE1BQU8sQ0FDTCxHQUFHK0IsRUFDSEksUUFBU0osRUFDVEYsS0FBTUcsRUFDTk4sTUFBT0EsRUFBUSxFQUNmSCxnQkFBaUJXLElBcUNyQixHQWpDSUUsTUFBTUMsUUFBUXBKLENBQUssR0FDckJpRCxFQUFPLFFBQ1ArRCxFQUFhaEgsRUFBTStILElBQUksQ0FBQ0ssRUFBR2lCLElBQ3pCUixFQUFhLENBQ1g5QixNQUFPc0MsRUFDUHJKLE1BQU9vSSxDQUNULENBQUMsQ0FDSCxHQUVBcEksSUFBVSxNQUNWLE9BQU9BLEdBQVUsVUFDakIsT0FBT0EsRUFBTXNKLE9BQU9DLFFBQVEsR0FBTSxZQUVsQ3RHLEVBQU8sV0FDUCtELEVBQWFtQyxNQUFNSyxLQUFLeEosRUFBTyxDQUFDeUosRUFBS0osSUFDbkNSLEVBQWEsQ0FDWDlCLE1BQU9zQyxFQUNQckosTUFBT3lKLENBQ1QsQ0FBQyxDQUNILEdBQ1MsT0FBT3pKLEdBQVUsV0FDMUJpRCxFQUFPLFdBQ0UsT0FBT2pELEdBQVUsVUFBWUEsSUFBVSxPQUNoRGlELEVBQU8sU0FFUCtELEVBQWF4RCxPQUFPQyxRQUFRekQsQ0FBSyxFQUFFK0gsSUFBSTJCLEdBQUEsQ0FBQSxHQUFDLENBQUMzQyxFQUFPL0csQ0FBSyxFQUFDMEosRUFBQSxPQUNwRGIsRUFBYSxDQUNYOUIsTUFBQUEsRUFDQS9HLE1BQUFBLENBQ0YsQ0FBQyxDQUFDLENBQ0osR0FHRWdILEVBQVksQ0FDZCxJQUFJcUMsRUFBSSxFQUVSLEtBQU9BLEVBQUlyQyxFQUFXVSxRQUNwQlQsRUFBYzBDLEtBQUszQyxFQUFXNEMsTUFBTVAsRUFBR0EsRUFBSWxDLENBQVEsQ0FBQyxFQUNwRGtDLEVBQUlBLEVBQUlsQyxDQUVaLENBRUEsT0FBT0MsRUFBUyxDQUNkTixZQUFha0IsR0FDWDlILEVBQUE2QixjQUFDc0csR0FBUXBHLEdBQUEsQ0FBQ3hDLElBQUt1SSxFQUFNakIsTUFBT0ssU0FBVUEsQ0FBUyxFQUFLdEYsRUFBVWtHLENBQUssQ0FBRyxFQUV4RS9FLEtBQUFBLEVBQ0ErRCxXQUFBQSxFQUNBQyxjQUFBQSxFQUNBd0IsTUFBQUEsRUFDQXpJLE1BQUFBLEVBQ0E0SSxLQUFBQSxFQUNBbEMsU0FBQUEsRUFDQVEsT0FBQUEsRUFDQUMsU0FBQUEsRUFDQSxHQUFHckYsQ0FDTCxDQUFDLENBQ0gsQ0NwT2UsU0FBUytILEdBQUs5RSxFQUFZLENBQ3ZDLE9BQ0VoRCxpQkFBQSxNQUFBRSxHQUFBLENBQ0U2SCxNQUFNLE9BQ05uRixPQUFPLE9BQ1BvRixRQUFRLGNBQ1JDLFFBQVEsS0FBSyxFQUNUakYsQ0FBSyxFQUVUaEQsaUJBQUEsSUFBQSxDQUFHa0ksT0FBTyxPQUFPQyxZQUFZLElBQUlDLEtBQUssT0FBT0MsU0FBUyxXQUNwRHJJLGlCQUFBLElBQUEsQ0FBR3NJLEdBQUcsV0FBV3pELFVBQVUscUNBQ3pCN0UsaUJBQUEsSUFBQSxDQUFHc0ksR0FBRyxVQUFVekQsVUFBVSxtQ0FDeEI3RSxpQkFBQSxJQUFBLENBQUdzSSxHQUFHLFFBQVF6RCxVQUFVLGtDQUN0QjdFLGlCQUFBLE9BQUEsQ0FDRXFHLEVBQUUscTRFQUNGaUMsR0FBRyxPQUNIRixLQUFLLFVBQ0xDLFNBQVMsVUFDVHhELFVBQVUsaUZBQWlGLENBQ3RGLEVBQ1A3RSxpQkFBQSxPQUFBLENBQ0VxRyxFQUFFLGtnQ0FDRmlDLEdBQUcsWUFDSEYsS0FBSyxTQUFTLENBQ1QsRUFDUHBJLGlCQUFBLE9BQUEsQ0FDRXFHLEVBQUUsd3pHQUNGaUMsR0FBRyxpQkFDSEYsS0FBSyxTQUFTLENBQ1QsQ0FDTixDQUNGLENBQ0YsQ0FDRixDQUNBLENBRVQsQ0NtQ08sU0FBU0csR0FBa0IxSSxFQU1hLENBQUEsR0FOWixDQUNqQzJJLGNBQUFBLEVBQ0FDLE1BQUFBLEVBQ0FDLFdBQUFBLEVBQWEsQ0FBQSxFQUNiQyxrQkFBQUEsRUFBb0IsQ0FBQSxFQUNwQkMsaUJBQWtCQyxFQUFZLFFBQ2YsRUFBQ2hKLEVBQ1ZpSixFQUFVM0ssRUFBTTZELE9BQXVCLElBQUksRUFDM0MrRyxFQUFXNUssRUFBTTZELE9BQXVCLElBQUksRUFDNUMsQ0FBQ2dILEVBQVFDLENBQVMsRUFBSWxMLEdBQzFCLHlCQUNBeUssQ0FDRixFQUNNdkcsRUFBWUgsR0FBWSxFQUV4QixDQUFFUCxNQUFPMkgsRUFBYSxDQUFBLEVBQUksR0FBR0MsQ0FBZ0IsRUFBSVQsRUFFakQsQ0FDSm5ILE1BQU82SCxFQUFvQixDQUFBLEVBQzNCdkQsUUFBU3dELEVBQ1QsR0FBR0MsQ0FDTCxFQUFJWCxFQUdKLE9BQUsxRyxFQUFTLEVBR1o5RCxFQUFBNkIsY0FBQzZJLEVBQVMsQ0FBQ3ZILElBQUt3SCxFQUFTUyxVQUFVLG9CQUFvQixFQUNyRHBMLEVBQUE2QixjQUFDSixHQUFhLENBQUNFLE1BQU9BLEVBQU0sRUFDeEJrSixFQXdCQTdLLEVBQUE2QixjQUFDd0osR0FBdUJ0SixHQUFBLENBQ3RCb0IsSUFBS3lILENBQWdCLEVBQ2pCSSxFQUFlLENBQ25CVixNQUFPQSxFQUNQTyxPQUFRQSxFQUNSQyxVQUFXQSxFQUNYMUgsTUFBTyxDQUNMa0ksVUFBVyxPQUNYMUIsTUFBTyxPQUNQLEdBQUdtQixDQUNMLEVBQ0QsQ0FBQSxFQWxDRC9LLEVBQUE2QixjQUFBLFNBQUFFLEdBQUEsQ0FDRWdCLEtBQUssUUFBUSxFQUNUb0ksRUFBc0IsQ0FDMUIsYUFBVyw0QkFDWHpELFFBQVM2RCxHQUFLLENBQ1pULEVBQVUsRUFBSSxFQUNkSSxHQUFpQkEsRUFBY0ssQ0FBQyxHQUVsQ25JLE1BQU8sQ0FDTHhDLFdBQVksT0FDWm9FLE9BQVEsRUFDUkUsUUFBUyxFQUNUc0csT0FBUSxRQUNSckgsUUFBUyxjQUNURixTQUFVLFFBQ1ZxQixPQUFRLFVBQ1JzRSxNQUFPLGNBQ1AsR0FBR3FCLENBQ0wsQ0FBRSxDQUFBLEVBRUZqTCxFQUFBNkIsY0FBQzhILEdBQUksQ0FBQyxjQUFBLEdBQWEsQ0FDYixDQWVHLENBQ04sRUEzQ1ksSUE2QzNCLENBRWEwQixJQUFBQSxHQUEwQnJMLEVBQU1rRCxXQUczQyxTQUFpQzJCLEVBQU8xQixFQUF5QixDQUNqRSxHQUFNLENBQ0ptSCxNQUFBQSxFQUNBTyxPQUFBQSxFQUFTLEdBQ1RDLFVBQUFBLEVBQ0EsR0FBR1AsQ0FDTCxFQUFJMUYsRUFTSixPQUNFN0UsRUFBQTZCLGNBQUNKLEdBQWEsQ0FBQ0UsTUFBT0EsRUFBTSxFQUMxQjNCLEVBQUE2QixjQUFDa0MsR0FBS2hDLEdBQUEsQ0FBQ29CLElBQUtBLEVBQUtpSSxVQUFVLHlCQUF5QixFQUFLYixDQUFVLEVBQ2pFdkssRUFBQTZCLGNBQUEsUUFBQSxDQUNFNEosd0JBQXlCLENBQ3ZCQyxPQUFROztpQ0FFYS9KLEdBQU1kLGFBQWEsSUFBSWMsR0FBTVosSUFBSTs7Ozs7Ozs7OzRCQVN0Q1ksR0FBTWQsYUFBYTs7Ozs0QkFJbkJjLEdBQU1aLElBQUk7O2tDQUVKWSxHQUFNZCxhQUFhOztXQUczQyxDQUFFLENBQ0gsRUFDRGIsRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMbUIsS0FBTSxZQUNOb0gsVUFBVyxNQUNYTCxVQUFXLE9BQ1g5RyxTQUFVLE9BQ1ZvSCxZQUFhLGFBQWFqSyxHQUFNWCxPQUFPLEdBQ3ZDbUQsUUFBUyxPQUNURyxjQUFlLFFBQ2pCLEdBRUF0RSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0w4QixRQUFTLE9BQ1R0RSxXQUFZZSxHQUFNZCxjQUNsQnNELFFBQVMsT0FDVDBILGVBQWdCLGdCQUNoQkMsV0FBWSxRQUNkLENBQUUsRUFFRjlMLEVBQUE2QixjQUFDOEgsR0FBSSxDQUNILGNBQVcsR0FDWHZHLE1BQU8sQ0FDTDJJLFlBQWEsUUFFZnJFLFFBQVNBLElBQU1vRCxFQUFVLEVBQUssQ0FBRSxDQUNqQyxFQUNEOUssRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMMkksWUFBYSxPQUNiOUgsU0FBVSw0QkFDVmMsV0FBWSxNQUNkLENBQUUsRUFDSCxjQUNhLElBQ1ovRSxFQUFBNkIsY0FBQSxPQUFBLENBQ0V1QixNQUFPLENBQ0wyQixXQUFZLEdBQ2QsQ0FBRSxFQUNILFVBRUssQ0FDSCxFQUNML0UsRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMZSxRQUFTLE9BQ1RHLGNBQWUsUUFDakIsQ0FBRSxFQUVEdUcsRUFDQzdLLEVBQUE2QixjQUFDK0MsR0FBTSxDQUNMN0IsS0FBSyxTQUNMLGFBQVcsNkJBQ1gyRSxRQUFTQSxJQUFNLENBQ2JvRCxFQUFVLEVBQUssQ0FDakIsR0FDRCxPQUVPLEVBQ04sSUFDRCxDQUNGLEVBQ0w5SyxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xlLFFBQVMsT0FDVDZILFNBQVUsT0FDVkMsVUFBVyxPQUNYMUgsS0FBTSxHQUNSLEdBRUF2RSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xtQixLQUFNLFdBQ05XLFFBQVMsTUFDWCxDQUFFLEVBRUZsRixFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUHRCLE1BQU0sV0FDTi9HLE1BQU93SyxFQUNQbEMsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTHFCLE9BQVEsT0FDVixDQUFFLENBQ0gsRUFDRHpFLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxRQUNOL0csTUFBT3dLLEVBQU00QixTQUFRLEVBQ3JCOUQsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTHFCLE9BQVEsT0FDVixDQUFFLENBQ0gsRUFDRHpFLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxVQUNOL0csTUFBT3dLLEVBQU02QixjQUFhLEVBQzFCL0QsZ0JBQWlCLEVBQU0sQ0FDeEIsQ0FDRSxFQUNMcEksRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMbUIsS0FBTSxXQUNOVyxRQUFTLE1BQ1gsQ0FBRSxFQUVGbEYsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGFBQ04vRyxNQUFPd0ssRUFBTThCLGdCQUFlLEVBQzVCaEUsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxpQkFDTi9HLE1BQU93SyxFQUFNK0Isb0JBQW1CLEVBQ2hDakUsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxlQUNOL0csTUFBT3dLLEVBQU1nQyxrQkFBaUIsRUFDOUJsRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGdCQUNOL0csTUFBT3dLLEVBQU1pQyxtQkFBa0IsRUFDL0JuRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGlCQUNOL0csTUFBT3dLLEVBQU1rQyxvQkFBbUIsRUFDaENwRSxnQkFBaUIsRUFBTSxDQUN4QixDQUNFLENBYUYsQ0FDRixDQUNBLENBQ00sQ0FFbkIsQ0FBQyxFUnRVRCxPQUFTLG1CQUFBcUUsR0FBaUIsVUFBQUMsT0FBYyxlQUN4QyxPQUF3QyxhQUFBQyxHQUFXLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUVNabkUsY0FBQUMsT0FBQSxvQkFEVCxTQUFTQyxHQUFTLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQXlDLENBQy9FLE9BQU9ILEdBQUMsT0FBSSxVQUFXSSxFQUFHLHFEQUFzREYsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FDekcsQ0NRTSxjQUFBRSxPQUFBLG9CQU5DLFNBQVNDLEdBQW1CLENBQUUsVUFBQUMsQ0FBVSxFQUE0QixDQUN6RSxPQUNFRixHQUFDLE9BQ0MsbUJBQWdCLEdBQ2hCLFVBQVdHLEVBQUcscUVBQXNFRCxDQUFTLEVBRTdGLFNBQUFGLEdBQUMsT0FBSSxVQUFVLGtGQUFrRixFQUNuRyxDQUVKLENDT1UsT0FDRSxPQUFBSSxHQURGLFFBQUFDLE9BQUEsb0JBVkgsU0FBU0MsR0FBbUJDLEVBQWdDLENBQ2pFLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFFBQUFDLEVBQVUsT0FBUSxFQUFJRixFQUUvQixDQUFFLFVBQUFHLENBQVUsRUFBSUYsRUFBTSxTQUFTLEVBQUUsV0FDakNHLEVBQVlILEVBQU0sYUFBYSxFQUVyQyxPQUNFSixHQUFDLE9BQUksVUFBVSx1R0FDYixTQUFBQSxHQUFDLE9BQUksVUFBVSxxSkFDWixTQUFBSyxJQUFZLFFBQ1hKLEdBQUMsT0FBSSxVQUFVLHVDQUNiLFVBQUFELEdBQUNRLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsS0FBSyxLQUNMLFVBQVUsU0FDVixRQUFTLElBQU1KLEVBQU0sYUFBYSxFQUNsQyxTQUFVLENBQUNBLEVBQU0sbUJBQW1CLEVBQ3JDLG9CQUVELEVBQ0FKLEdBQUNRLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsS0FBSyxLQUNMLFVBQVUsU0FDVixRQUFTLElBQU1KLEVBQU0sU0FBUyxFQUM5QixTQUFVLENBQUNBLEVBQU0sZUFBZSxFQUNqQyxnQkFFRCxHQUNGLEVBRUFKLEdBQUMsT0FBSSxVQUFVLHVDQUNiLFNBQUFDLEdBQUMsT0FBSSxVQUFVLHVDQUNiLFVBQUFELEdBQUNRLEVBQUEsQ0FBTyxRQUFRLFVBQVUsUUFBUyxJQUFNSixFQUFNLGFBQWEsQ0FBQyxFQUFHLFNBQVUsQ0FBQ0EsRUFBTSxtQkFBbUIsRUFDbEcsU0FBQUosR0FBQ1MsR0FBQSxDQUFhLFVBQVUsZ0JBQWdCLEVBQzFDLEVBQ0FULEdBQUNRLEVBQUEsQ0FBTyxRQUFRLFVBQVUsUUFBUyxJQUFNSixFQUFNLGFBQWEsRUFBRyxTQUFVLENBQUNBLEVBQU0sbUJBQW1CLEVBQ2pHLFNBQUFKLEdBQUNVLEdBQUEsQ0FBWSxVQUFVLGdCQUFnQixFQUN6QyxFQUNBVCxHQUFDLE9BQUksVUFBVSw2REFBNkQsaUJBRTFFRCxHQUFDVyxHQUFBLENBQ0MsS0FBSyxTQUNMLElBQUssRUFDTCxJQUFLSixFQUNMLE1BQU9ELEVBQVksRUFDbkIsVUFBVSxVQUNWLFNBQVdNLEdBQU0sQ0FDZixJQUFNTixFQUFZTSxFQUFFLE9BQU8sTUFBUSxPQUFPQSxFQUFFLE9BQU8sS0FBSyxFQUFJLEVBQUksRUFDaEVSLEVBQU0sYUFBYUUsQ0FBUyxDQUM5QixFQUNGLEVBQ0FMLEdBQUMsUUFBSyxVQUFVLHVCQUF1QixnQkFBSU0sR0FBVSxHQUN2RCxFQUNBUCxHQUFDUSxFQUFBLENBQU8sUUFBUSxVQUFVLFFBQVMsSUFBTUosRUFBTSxTQUFTLEVBQUcsU0FBVSxDQUFDQSxFQUFNLGVBQWUsRUFDekYsU0FBQUosR0FBQ2EsR0FBQSxDQUFhLFVBQVUsZ0JBQWdCLEVBQzFDLEVBQ0FiLEdBQUNRLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsUUFBUyxJQUFNSixFQUFNLGFBQWFHLEVBQVksQ0FBQyxFQUMvQyxTQUFVLENBQUNILEVBQU0sZUFBZSxFQUVoQyxTQUFBSixHQUFDYyxHQUFBLENBQWMsVUFBVSxnQkFBZ0IsRUFDM0MsR0FDRixFQUNGLEVBRUosRUFDRixDQUVKLENDN0VPLFNBQVNDLEdBQXVCQyxFQUF5Q0MsRUFBeUIsQ0FDdkcsSUFBTUMsRUFBV0YsRUFBTyxZQUFZLEVBQzlCRyxFQUFlRCxJQUFhLE9BQzVCRSxFQUFnQkYsSUFBYSxRQUVuQyxNQUFPLENBQ0wsVUFBV0csRUFDVEosSUFBUyxRQUFVLGtGQUNuQkEsSUFBUyxVQUFZLG1FQUNyQiwwREFDQSwyREFDQUMsR0FBWSxhQUNYQyxHQUFnQkMsSUFBa0JILElBQVMsVUFBWSxXQUN2REUsR0FBZ0JDLElBQWtCSCxJQUFTLFFBQVUsUUFDeEQsRUFDQSxNQUFPLENBQ0wsU0FBVSxHQUFHRCxFQUFPLFFBQVEsQ0FBQyxLQUM3QixNQUFPLEdBQUdBLEVBQU8sUUFBUSxDQUFDLEtBQzFCLEtBQU1HLEVBQWUsR0FBR0gsRUFBTyxTQUFTLE1BQU0sQ0FBQyxLQUFPLE9BQ3RELE1BQU9JLEVBQWdCLEdBQUdKLEVBQU8sU0FBUyxPQUFPLENBQUMsS0FBTyxNQUMzRCxDQUNGLENBQ0YsQ1p1R0ksbUJBQUFNLEdBRWtELE9BQUFDLEVBcURoQyxRQUFBQyxPQXZEbEIsb0JBdkZHLFNBQVNDLEdBQVNDLEVBQXNCLENBQzdDLEdBQU0sQ0FDSixXQUFBQyxFQUNBLGNBQUFDLEVBQ0EsVUFBQUMsRUFDQSxhQUFBQyxFQUNBLG1CQUFBQyxFQUNBLHFCQUFBQyxFQUNBLGdCQUFBQyxFQUNBLFVBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsS0FBQUMsRUFDQSxrQkFBQUMsRUFDQSxhQUFBQyxDQUNGLEVBQUlaLEVBRUUsQ0FBQ2EsRUFBYUMsQ0FBYyxFQUFJQyxHQUFtQixDQUFDLENBQUMsRUFDckQsQ0FBQ0MsRUFBZUMsQ0FBZ0IsRUFBSUYsR0FBNkIsQ0FBRSxLQUFNLENBQUMsYUFBYSxFQUFHLE1BQU8sQ0FBQyxDQUFFLENBQUMsRUFDckcsQ0FBQ0csRUFBY0MsQ0FBZSxFQUFJSixHQUE0QixDQUFDLENBQUMsRUFDaEVLLEVBQVVDLEdBQVEsSUFBTUMsR0FBZVYsQ0FBWSxFQUFHLENBQUNBLENBQVksQ0FBQyxFQUNwRVcsRUFBZ0JwQixHQUFhQyxFQUduQ29CLEdBQVUsSUFBTSxDQUNkVixFQUFlYixFQUFXLElBQUksQ0FBQyxDQUFFLFlBQUF3QixDQUFZLElBQU1BLENBQVcsQ0FBQyxFQUMvRFIsRUFBaUIsQ0FBRSxLQUFNLENBQUMsYUFBYSxFQUFHLE1BQU8sQ0FBQyxDQUFFLENBQUMsRUFDckRFLEVBQWdCLENBQUMsQ0FBQyxDQUNwQixFQUFHLENBQUNsQixDQUFVLENBQUMsRUFHZixTQUFTeUIsRUFBYyxDQUFFLE9BQUFDLEVBQVEsS0FBQUMsQ0FBSyxFQUFpQixDQUNqREEsR0FBUUQsRUFBTyxLQUFPQyxFQUFLLElBQzdCZCxFQUFnQmUsSUFBVSxDQUN4QixJQUFNQyxFQUFjRCxHQUFNLFFBQVFGLEVBQU8sRUFBWSxFQUMvQ0ksR0FBWUYsR0FBTSxRQUFRRCxFQUFLLEVBQVksRUFDakQsT0FBT0ksR0FBVUgsR0FBT0MsRUFBYUMsRUFBUyxDQUNoRCxDQUFDLENBRUwsQ0FHQSxJQUFNRSxFQUFjQyxHQUFVQyxHQUFhLENBRXpDLHFCQUFzQixDQUNwQixTQUFVLEVBQ1osQ0FDRixDQUFDLEVBQ0tDLEVBQVVDLEdBQVdKLENBQVcsRUFFaENLLEVBQVFDLEdBQWMsQ0FDMUIsaUJBQWtCLFdBQ2xCLFFBQVN0QyxFQUNULEtBQU1TLEVBQ04sY0FBZSxDQUFFLEtBQU0sSUFBSyxRQUFTLEdBQUksUUFBUyxHQUFJLEVBQ3RELG9CQUFxQixHQUNyQixxQkFBc0IsR0FDdEIsbUJBQW9CLEdBQ3BCLGNBQWUsR0FBUUgsR0FBbUJLLEdBQzFDLGdCQUFpQjRCLEdBQWdCLEVBQ2pDLFNBQVUsQ0FBQyxDQUFFLFdBQUFDLENBQVcsSUFBTUEsRUFDOUIsaUJBQWtCLEdBQ2xCLGNBQWUsR0FDZixvQkFBcUIzQixFQUNyQixzQkFBdUJHLEVBQ3ZCLHFCQUFzQkUsRUFDdEIsbUJBQUFkLEVBQ0EscUJBQUFDLEVBQ0EsZ0JBQWtCb0MsR0FDaEJuQyxJQUFtQm9DLElBQ2IsT0FBT0QsR0FBbUIsYUFDNUJBLEVBQWlCQSxFQUFlcEIsR0FBZXFCLENBQUcsQ0FBQyxHQUc5Q0MsR0FBaUJGLENBQWMsRUFDdkMsRUFDSCxVQUFBbEMsRUFDQSxNQUFPLENBQ0wsWUFBQUssRUFDQSxjQUFBRyxFQUNBLGFBQUFFLEVBQ0EsV0FBWVQsRUFDWixhQUFjRSxFQUNkLFFBQUFTLENBQ0YsQ0FDRixDQUFDLEVBRUQsT0FDRXRCLEdBQUFGLEdBQUEsQ0FFRyxrQkFBUSxJQUFJLFdBQWEsYUFBZSxLQUFPQyxFQUFDZ0QsR0FBQSxDQUFtQixNQUFPUCxFQUFPLEVBQ2xGeEMsR0FBQyxPQUFJLGNBQVksVUFBVSxVQUFVLHdFQUNuQyxVQUFBRCxFQUFDLE9BQUssU0FBQTBCLEdBQWlCMUIsRUFBQ2lELEdBQUEsQ0FBbUIsVUFBVSxpREFBaUQsRUFBRyxFQUN6R2pELEVBQUNrRCxHQUFBLENBQVcsUUFBU1gsRUFBUyxVQUFXVixFQUN2QyxTQUFBNUIsR0FBQ2tELEdBQUEsQ0FBTSxVQUFVLGdGQUNmLFVBQUFuRCxFQUFDb0QsR0FBQSxDQUNFLFNBQUFYLEVBQU0sZ0JBQWdCLEVBQUUsSUFBS1ksR0FDNUJyRCxFQUFDc0QsR0FBQSxDQUNDLFNBQUF0RCxFQUFDdUQsR0FBQSxDQUNDLE1BQU9GLEVBQVksUUFBUSxJQUFLRyxHQUFXQSxFQUFPLEVBQUUsRUFDcEQsU0FBVUMsR0FFVCxTQUFBSixFQUFZLFFBQVEsSUFBSSxDQUFDRyxFQUFRRSxLQUFNLENBQ3RDLEdBQUksT0FBT0YsRUFBTyxPQUFPLFVBQVUsUUFBVyxXQUFZLENBRXhELElBQU1HLEVBQVNILEVBQU8sT0FBTyxVQUFVLE9BQU9BLEVBQU8sV0FBVyxDQUFDLEVBQ2pFLE9BQU94RCxFQUFDMkQsRUFBQSxDQUFnQixHQUFHQyxHQUF1QkosRUFBTyxPQUFRLFFBQVEsR0FBckRFLEVBQXdELENBQzlFLENBRUEsT0FBTyxJQUNULENBQUMsRUFDSCxHQWRhTCxFQUFZLEVBZTNCLENBQ0QsRUFDSCxFQUNBcEQsR0FBQzRELEdBQUEsQ0FDRSxVQUFBeEQsSUFBZ0JvQyxDQUFLLEVBQ3JCQSxFQUFNLFlBQVksRUFBRSxNQUFNLE9BQ3pCQSxFQUFNLFlBQVksRUFBRSxLQUFLLElBQUtxQixHQUM1QjlELEVBQUNzRCxHQUFBLENBRUMsVUFBV1MsRUFDVCw2RkFDRixFQUVDLFNBQUFELEVBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDRSxFQUFNTixLQUFNLENBQ3RDLEdBQUksT0FBT00sRUFBSyxPQUFPLFVBQVUsTUFBUyxXQUFZLENBRXBELElBQU1DLEVBQU9ELEVBQUssT0FBTyxVQUFVLEtBQUtBLEVBQUssV0FBVyxDQUFDLEVBQ3pELE9BQU9oRSxFQUFDaUUsRUFBQSxDQUFjLEdBQUdMLEdBQXVCSSxFQUFLLE9BQVEsTUFBTSxHQUFqRE4sRUFBb0QsQ0FDeEUsQ0FFQSxPQUFPLElBQ1QsQ0FBQyxHQWJJSSxFQUFJLEVBY1gsQ0FDRCxFQUVEOUQsRUFBQ3NELEdBQUEsQ0FDQyxTQUFBdEQsRUFBQ2tFLEdBQUEsQ0FDQyxRQUFTOUQsRUFBVyxPQUNwQixVQUFVLHlEQUVULFNBQUFFLEdBQ0NMLEdBQUMsT0FBSSxVQUFVLCtCQUNiLFVBQUFELEVBQUNtRSxHQUFBLENBQVMsVUFBVSxtQkFBbUIsRUFDdkNuRSxFQUFDbUUsR0FBQSxDQUFTLFVBQVUsa0JBQWtCLEVBQ3RDbkUsRUFBQ21FLEdBQUEsQ0FBUyxVQUFVLGtCQUFrQixHQUN4QyxFQUVKLEVBQ0YsR0FFSixHQUNGLEVBQ0YsRUFDQyxDQUFDeEQsR0FBYUEsRUFBWSxFQUFJLEtBQU9YLEVBQUNvRSxHQUFBLENBQW1CLE1BQU8zQixFQUFPLFFBQVEsVUFBVSxFQUUxRnpDLEVBQUNxRSxHQUFBLENBQWdCLEtBQUssT0FDbkIsU0FBQTVCLEVBQU0sWUFBWSxFQUFFLE1BQU0sU0FBVyxHQUFLLENBQUNuQyxHQUFhLENBQUNDLEdBQ3hEUCxFQUFDc0UsR0FBTyxJQUFQLENBQ0MsVUFBVSwyRkFDVixRQUFTLENBQUUsUUFBUyxDQUFFLEVBQ3RCLFFBQVMsQ0FBRSxRQUFTLENBQUUsRUFDdEIsS0FBTSxDQUFFLFFBQVMsQ0FBRSxFQUVuQixTQUFBckUsR0FBQyxPQUFJLFVBQVUsOENBQ2IsVUFBQUQsRUFBQyxPQUFJLFVBQVUsc0NBQXNDLDRCQUFnQixFQUNyRUEsRUFBQyxPQUFJLFVBQVUsc0NBQXNDLGlFQUVyRCxHQUNGLEVBQ0YsRUFFSixHQUNGLEdBQ0YsQ0FFSixDQUVBLFNBQVN5QixHQUFlOEMsRUFBaUQsQ0FDdkUsT0FBT0EsR0FBTSxJQUFLQyxJQUFVLENBQUUsR0FBSUEsRUFBSyxPQUFRLEtBQU1BLEVBQUssWUFBYyxNQUFPLEVBQUUsR0FBSyxDQUFDLENBQ3pGLENBRUEsU0FBU3pCLEdBQWlCd0IsRUFBcUMsQ0FDN0QsT0FBT0EsRUFBSyxJQUFLQyxJQUFVLENBQ3pCLE9BQVFBLEVBQUssR0FDYixVQUFXQSxFQUFLLEtBQU8sT0FBUyxLQUNsQyxFQUFFLENBQ0osQ2F0T0EsT0FBUyxlQUFBQyxPQUFtQixvQkFDNUIsT0FBUyxPQUFBQyxPQUFXLHFCQWlDZCxjQUFBQyxPQUFBLG9CQW5CQyxJQUFNQyxHQUErQkMsR0FBb0MsQ0FDOUUsR0FBTSxDQUFFLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxPQUFBQyxFQUFRLE1BQU9DLENBQVksRUFBSUosRUFFdEQsQ0FBRSxXQUFBSyxFQUFZLFVBQUFDLEVBQVcsVUFBQUMsRUFBVyxXQUFBQyxFQUFZLFdBQUFDLEVBQVksV0FBQUMsQ0FBVyxFQUFJQyxHQUFZLENBQzNGLEdBQUlSLEVBQU8sRUFDYixDQUFDLEVBRUtTLEVBQVEsQ0FDWixHQUFHUixFQUNILE9BQVEsT0FDUixZQUFhLE9BQ2IsVUFBV1MsR0FBSSxVQUFVLFNBQVNOLENBQVMsRUFDM0MsV0FBQUMsQ0FDRixFQUVNTSxFQUFZQyxFQUFHYixFQUFXUSxHQUFjLDJDQUEyQyxFQUV6RixPQUNFWixHQUFDa0IsR0FBQSxDQUFVLElBQUtQLEVBQWEsR0FBR0osRUFBYSxHQUFHQyxFQUFXLE1BQU9NLEVBQU8sVUFBV0UsRUFDbEYsU0FBQWhCLEdBQUMsT0FBSSxVQUFVLFlBQWEsU0FBQUcsRUFBUyxFQUN2QyxDQUVKLEVDbkNBLE9BQVMsbUJBQUFnQixHQUFpQixVQUFBQyxPQUFjLGVDRnhDLFVBQVlDLE9BQXNCLDBCQUNsQyxVQUFZQyxPQUFXLFFBZW5CLGNBQUFDLE9BQUEsb0JBWEosSUFBTUMsR0FBbUMsWUFFbkNDLEdBQTJCLFFBRTNCQyxHQUFrQyxXQUVsQ0MsR0FBdUIsY0FHM0IsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsV0FBQUMsRUFBYSxFQUFHLEdBQUdDLENBQU0sRUFBR0MsSUFDMUNSLEdBQWtCLFVBQWpCLENBQ0MsU0FBQUEsR0FBa0IsV0FBakIsQ0FDQyxJQUFLUSxFQUNMLFdBQVlGLEVBQ1osVUFBV0csRUFDVCwrZEFDQUosQ0FDRixFQUNDLEdBQUdFLEVBQ04sRUFDRixDQUNELEVBQ0RILEdBQWUsWUFBK0IsV0FBUSxZQ2pCNUMsT0FFSSxPQUFBTSxHQUZKLFFBQUFDLE9BQUEsb0JBTEgsU0FBU0MsR0FBbUIsQ0FBRSxPQUFBQyxDQUFPLEVBQXVCLENBQ2pFLE9BQ0VGLEdBQUMsT0FBSSxVQUFVLCtDQUNaLFVBQUFFLEVBQU8sZ0JBQ05ILEdBQUNJLEdBQUEsQ0FBZ0IsY0FBZSxJQUM5QixTQUFBSCxHQUFDSSxHQUFBLENBQ0MsVUFBQUwsR0FBQ00sR0FBQSxDQUFlLFFBQU8sR0FDckIsU0FBQU4sR0FBQ08sR0FBQSxDQUFTLEtBQU0sR0FBSSxVQUFVLGtCQUFrQixFQUNsRCxFQUNBUCxHQUFDUSxHQUFBLENBQWUsS0FBSyxTQUFTLFVBQVUsVUFDdEMsU0FBQVIsR0FBQyxRQUFLLHVCQUFXLEVBQ25CLEdBQ0YsRUFDRixFQUVGQSxHQUFDLFFBQUssVUFBVSw2QkFBOEIsU0FBQUcsRUFBTyxLQUFLLEVBQzFESCxHQUFDLFFBQUssVUFBVSwyRkFDYixTQUFBRyxFQUFPLFNBQVMsS0FDbkIsR0FDRixDQUVKLENGTWdCLE9BNENRLFlBQUFNLEdBNUNSLE9BQUFDLEVBNENRLFFBQUFDLE9BNUNSLG9CQVZULFNBQVNDLEdBQXNCQyxFQUEyQixDQUMvRCxHQUFNLENBQUUsT0FBQUMsRUFBUSxPQUFBQyxFQUFRLFVBQUFDLENBQVUsRUFBSUgsRUFFdEMsT0FDRUYsR0FBQyxPQUFJLFVBQVdNLEVBQUcsNkNBQThDRCxDQUFTLEVBQ3hFLFVBQUFMLEdBQUMsT0FBSSxVQUFVLHVEQUNiLFVBQUFELEVBQUMsT0FBSSxVQUFVLCtGQUNaLFNBQUFLLEVBQU8sY0FBZ0IsS0FDdEJMLEVBQUMsUUFBSyxVQUFVLHFCQUNkLFNBQUFBLEVBQUMsUUFBSyxVQUFVLHVFQUNkLFNBQUFBLEVBQUNRLEdBQUEsQ0FBbUIsT0FBUUosRUFBUSxFQUN0QyxFQUNGLEVBRUosRUFFQUgsR0FBQyxRQUFLLFVBQVUsMkNBQ2QsVUFBQUQsRUFBQyxRQUFLLFVBQVUsa0NBQ2QsU0FBQUEsRUFBQ1MsR0FBQSxDQUFnQixLQUFLLE9BQ25CLFNBQUFKLEVBQU8sT0FBTyxZQUFZLElBQU0sT0FDL0JMLEVBQUNVLEdBQU8sSUFBUCxDQUVDLFFBQVMsQ0FBRSxRQUFTLEVBQUcsRUFBRyxFQUFHLEVBQzdCLFFBQVMsQ0FBRSxRQUFTLEVBQUcsRUFBRyxDQUFFLEVBQzVCLEtBQU0sQ0FBRSxRQUFTLEVBQUcsRUFBRyxFQUFHLEVBQzFCLFdBQVksQ0FBRSxTQUFVLEVBQUksRUFFNUIsU0FBQVYsRUFBQ1csR0FBQSxDQUFTLEtBQU0sR0FBSSxVQUFVLDJCQUEyQixHQU5yRCxNQU9OLEVBQ0VOLEVBQU8sT0FBTyxZQUFZLElBQU0sTUFDbENMLEVBQUNVLEdBQU8sSUFBUCxDQUVDLFFBQVMsQ0FBRSxRQUFTLEVBQUcsRUFBRyxDQUFFLEVBQzVCLFFBQVMsQ0FBRSxRQUFTLEVBQUcsRUFBRyxDQUFFLEVBQzVCLEtBQU0sQ0FBRSxRQUFTLEVBQUcsRUFBRyxDQUFFLEVBQ3pCLFdBQVksQ0FBRSxTQUFVLEVBQUksRUFFNUIsU0FBQVYsRUFBQ1ksR0FBQSxDQUFPLEtBQU0sR0FBSSxVQUFVLDJCQUEyQixHQU5uRCxLQU9OLEVBQ0UsS0FDTixFQUNGLEVBQ0NQLEVBQU8sT0FBTyxVQUFVLEdBQUtBLEVBQU8sT0FBTyxLQUFPLFVBQ2pESixHQUFDWSxHQUFBLENBQ0MsVUFBQWIsRUFBQ2MsR0FBQSxDQUFvQixRQUFPLEdBQzFCLFNBQUFkLEVBQUNlLEVBQUEsQ0FBTyxRQUFRLFFBQVEsS0FBSyxLQUFLLFVBQVUsd0JBQzFDLFNBQUFmLEVBQUNnQixHQUFBLENBQVksS0FBTSxHQUFJLEVBQ3pCLEVBQ0YsRUFDQWYsR0FBQ2dCLEdBQUEsQ0FDRSxVQUFBWixFQUFPLE9BQU8sV0FBVyxHQUN4QkwsRUFBQ2tCLEdBQUEsQ0FBaUIsUUFBUyxJQUFNYixFQUFPLE9BQU8sY0FBYyxFQUMzRCxTQUFBTCxFQUFDLFFBQUssVUFBVSxtQ0FDYixTQUFBSyxFQUFPLE9BQU8sb0JBQW9CLElBQU0sT0FDdkNKLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDbUIsR0FBQSxDQUFvQixLQUFNLEdBQUksRUFBRSxtQkFFbkMsRUFDRWQsRUFBTyxPQUFPLG9CQUFvQixJQUFNLE1BQzFDSixHQUFBRixHQUFBLENBQ0UsVUFBQUMsRUFBQ29CLEdBQUEsQ0FBa0IsS0FBTSxHQUFJLEVBQUUsa0JBRWpDLEVBRUFuQixHQUFBRixHQUFBLENBQ0UsVUFBQUMsRUFBQ3FCLEdBQUEsQ0FBRSxLQUFNLEdBQUksRUFBRSxrQkFFakIsRUFFSixFQUNGLEVBRUZyQixFQUFDa0IsR0FBQSxDQUFpQixRQUFTLElBQU1iLEVBQU8sT0FBTyxJQUFJQSxFQUFPLE9BQU8sWUFBWSxFQUFJLEdBQVEsTUFBTSxFQUM1RixTQUFBQSxFQUFPLE9BQU8sWUFBWSxFQUN6QkosR0FBQyxRQUFLLFVBQVUsbUNBQ2QsVUFBQUQsRUFBQ3NCLEdBQUEsQ0FBTyxLQUFNLEdBQUksRUFBRSxnQkFFdEIsRUFFQXJCLEdBQUMsUUFBSyxVQUFVLG1DQUNkLFVBQUFELEVBQUN1QixHQUFBLENBQUksS0FBTSxHQUFJLEVBQUUsY0FFbkIsRUFFSixHQUNGLEdBQ0YsR0FFSixHQUNGLEVBQ0NsQixFQUFPLE9BQU8sYUFBYSxHQUMxQkwsRUFBQyxVQUNDLEtBQUssU0FDTCxTQUFVLEVBQ1YsWUFBY3dCLEdBQU0sQ0FDbEJBLEVBQUUsZ0JBQWdCLEVBQ2xCbkIsRUFBTyxpQkFBaUIsRUFBRW1CLENBQUMsQ0FDN0IsRUFDQSxhQUFlQSxHQUFNLENBQ25CQSxFQUFFLGdCQUFnQixFQUNsQm5CLEVBQU8saUJBQWlCLEVBQUVtQixDQUFDLENBQzdCLEVBQ0EsUUFBVUEsR0FBTUEsRUFBRSxnQkFBZ0IsRUFDbEMsVUFBWUEsR0FBTSxFQUNaQSxFQUFFLE1BQVEsU0FBV0EsRUFBRSxNQUFRLE9BQ2pDQSxFQUFFLGVBQWUsRUFDakJBLEVBQUUsZ0JBQWdCLEVBQ2xCbkIsRUFBTyxpQkFBaUIsRUFBRW1CLENBQUMsRUFFL0IsRUFDQSxVQUFXakIsRUFDVCxxSUFDRixFQUNBLGFBQVcsZ0JBQ2IsR0FFSixDQUVKLENHM0lBLE9BQVMsZ0JBQUFrQixPQUFvQixTQ0Q3QixPQUFTLFVBQUFDLE9BQWMsZUFDdkIsT0FBT0MsSUFBUyxZQUFBQyxPQUFnQixRQ0RoQyxVQUFZQyxPQUFvQix3QkFDaEMsT0FBUyxPQUFBQyxPQUE4QiwyQkFDdkMsVUFBWUMsT0FBVyxRQVlyQixjQUFBQyxPQUFBLG9CQVJGLElBQU1DLEdBQWdCQyxHQUNwQiwyR0FDRixFQUVNQyxHQUFjLGNBR2xCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDMUJOLEdBQWdCLFFBQWYsQ0FBb0IsSUFBS00sRUFBSyxVQUFXQyxFQUFHTixHQUFjLEVBQUdHLENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQ3RGLEVBQ0RGLEdBQU0sWUFBNkIsUUFBSyxZQ2hCeEMsVUFBWUssT0FBc0IseUJBQ2xDLFVBQVlDLE9BQVcsUUFnQm5CLGNBQUFDLE9BQUEsb0JBWkosSUFBTUMsR0FBZSxjQUduQixDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQzFCSixHQUFrQixRQUFqQixDQUNDLFVBQVdLLEVBQ1QsNmJBQ0FILENBQ0YsRUFDQyxHQUFHQyxFQUNKLElBQUtDLEVBRUwsU0FBQUosR0FBa0IsU0FBakIsQ0FDQyxVQUFXSyxFQUNULDZNQUNGLEVBQ0YsRUFDRixDQUNELEVBQ0RKLEdBQU8sWUFBK0IsUUFBSyxZQ3hCM0MsT0FBT0ssT0FBVyxRQTRDVixtQkFBQUMsR0FTWSxPQUFBQyxHQUxKLFFBQUFDLE9BSlIsb0JBM0JELElBQU1DLEdBQWUsQ0FBQyxDQUMzQixPQUFBQyxFQUNBLFNBQUFDLEVBQ0EsUUFBQUMsRUFDQSxhQUFBQyxFQUNBLE9BQUFDLEVBQVMsR0FDVCxTQUFBQyxFQUNBLFNBQUFDLEVBQ0EsV0FBQUMsQ0FDRixJQWdCSVYsR0FBQyxPQUFJLFVBQVUsb0ZBQ1osVUFBQ1EsR0FDQVIsR0FBQUQsR0FBQSxDQUNFLFNBQUFDLEdBQUMsT0FBSSxVQUFVLHlDQUNiLFNBQUFDLEdBQUMsT0FBSSxVQUFVLG9FQUNiLFVBQUFBLEdBQUMsT0FBSSxVQUFVLCtCQUNiLFVBQUFBLEdBQUMsVUFDQyxVQUFVLDZFQUNWLFFBbkJHLElBQU0sQ0FDbkJFLEdBQVFBLEVBQU8sRUFDZkUsR0FBU0EsRUFBUSxDQUN2QixFQWtCZ0IsVUFBQUwsR0FBQyxPQUFJLFVBQVUsb0hBQ2IsU0FBQUEsR0FBQ1csR0FBQSxDQUFlLEtBQU0sR0FBSSxZQUFhLEVBQUcsRUFDNUMsRUFBTyxJQUFJLGdCQUViLEVBQ0FWLEdBQUMsVUFDQyxVQUFVLDZFQUNWLFFBdkJLLElBQU0sQ0FDckJHLEdBQVVBLEVBQVMsRUFDbkJDLEdBQVNBLEVBQVEsQ0FDdkIsRUFzQmdCLFVBQUFMLEdBQUMsT0FBSSxVQUFVLG1LQUFtSyxlQUVsTCxFQUFPLElBQUksa0JBRWIsR0FDRixFQUNBQyxHQUFDLE9BQUksVUFBVSw0Q0FDWixVQUFBSyxHQUNDTCxHQUFDLFNBQ0MsVUFBVSxvRkFDVixRQUFRLGVBRVIsVUFBQUQsR0FBQ1ksR0FBQSxDQUFPLEdBQUcsZUFBZSxRQUFTTCxFQUFRLGdCQTlDbkNNLEdBQXFCLENBQ3pDUCxHQUFjQSxFQUFhTyxDQUFPLENBQ3hDLEVBNENnRyxFQUM5RWIsR0FBQyxRQUFLLHVCQUFXLEdBQ25CLEVBR0RVLEdBQ0NWLEdBQUNjLEdBQUEsQ0FDQyxTQUFBYixHQUFDYyxHQUFBLENBQ0MsVUFBQWYsR0FBQ2dCLEdBQUEsQ0FBZSxRQUFPLEdBQ3JCLFNBQUFoQixHQUFDLFVBQ0MsUUFBU1MsRUFDVCxVQUFVLG9GQUNWLFNBQVVGLEdBQVVDLEVBQ3JCLHNCQUVELEVBQ0YsRUFDQVIsR0FBQ2lCLEdBQUEsQ0FDQyxTQUFBaEIsR0FBQyxLQUFFLG9CQUFRaUIsR0FBTSxFQUFFLE9BQU8sS0FBSyxHQUFFLEVBQ25DLEdBQ0YsRUFDRixHQUVKLEdBQ0YsRUFDRixFQUNGLEVBRUosRUg5Q0EsbUJBQUFDLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQXZDRyxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDLENBQUNHLEVBQWNDLENBQWUsRUFBSUMsR0FBa0JQLElBQVUsS0FBTyxHQUFTQSxDQUFpQixFQUMvRixDQUFDUSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFDNURVLEVBQWVWLElBQVUsS0FBTyxHQUFTQSxFQUV6Q1csRUFBZ0JDLEdBQXFCLENBQ3pDTixFQUFnQk0sQ0FBTyxDQUN6QixFQUVNQyxFQUFvQkQsR0FBcUIsQ0FDN0NILEVBQWFHLENBQU8sQ0FDdEIsRUFHTUUsRUFBb0JDLEdBQU0sWUFBWSxJQUFNLENBQ2hELElBQU1DLEVBQWdCUixFQUFZLEtBQU9ILEVBQ3pDLE9BQUlXLElBQWtCaEIsR0FDcEJDLEVBQVNlLENBQWEsRUFDZixJQUVGLEVBQ1QsRUFBRyxDQUFDWCxFQUFjTCxFQUFPQyxFQUFVTyxDQUFTLENBQUMsRUFFdkNTLEVBQWUsSUFBTSxDQUV6QlgsRUFBZ0JJLENBQVksRUFDNUJELEVBQWFULElBQVUsSUFBSSxDQUM3QixFQUdNLENBQUUsV0FBQWtCLEVBQVksYUFBQUMsQ0FBYSxFQUFJQyxHQUFrQixDQUNyRCxPQUFRTixFQUNSLFNBQVVHLEVBQ1YsU0FBQWQsQ0FDRixDQUFDLEVBRUQsT0FDRU4sR0FBQUYsR0FBQSxDQUNFLFVBQUFFLEdBQUMsT0FBSSxVQUFVLGdHQUNiLFVBQUFELEdBQUN5QixHQUFBLENBQU0sUUFBUSxnQkFBZ0IsVUFBVSxhQUFhLG1CQUV0RCxFQUNBekIsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLFVBQVUsMEJBQ1YsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixRQUFTLENBQUUsUUFBUyxDQUFFLEVBQ3RCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQTFCLEdBQUMyQixHQUFBLENBQ0MsR0FBRyxnQkFDSCxRQUFTbEIsRUFDVCxnQkFBaUJNLEVBQ2pCLFNBQVVILEdBQWFMLEVBQ3pCLEVBQ0YsRUFDQVAsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLGFBQVUsR0FDVixVQUFVLGtGQUNWLFFBQVMsQ0FBRSxFQUFHLElBQUssUUFBUyxDQUFFLEVBQzlCLFFBQVMsQ0FBRSxFQUFHLEVBQUcsUUFBUyxDQUFFLEVBQzVCLFdBQVksQ0FBRSxTQUFVLElBQU0sTUFBTyxDQUFFLEVBRXRDLFNBQUFkLEVBQVksT0FBUyxPQUFPSCxDQUFZLEVBQzNDLEdBQ0YsRUFDQVQsR0FBQzRCLEdBQUEsQ0FDQyxPQUFRTixFQUNSLFNBQVVDLEVBQ1YsYUFBY2YsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUwsRUFDUixTQUFVTCxFQUNaLEdBQ0YsQ0FFSixDSTVGQSxPQUFPc0IsT0FBVyxRQUNsQixPQUFPQyxPQUFxQiwrQkFDNUIsT0FBeUIsZUFBQUMsR0FBYSxhQUFBQyxHQUFXLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUNGMUUsT0FBUyxhQUFBQyxPQUFpQixtQkE0RXRCLGNBQUFDLE9BQUEsb0JBL0NKLFNBQVNDLEdBQVMsQ0FBRSxVQUFBQyxFQUFXLFdBQUFDLEVBQVksZ0JBQUFDLEVBQWtCLEdBQU0sZUFBQUMsRUFBZ0IsR0FBR0MsQ0FBTSxFQUFrQixDQUM1RyxJQUFNQyxFQUFtQkMsRUFBRywyQ0FBNENGLEVBQU0sZUFBZSxFQUN2RkcsRUFBeUJELEVBQUcsZ0RBQWlERixFQUFNLHFCQUFxQixFQUN4R0ksRUFBc0JGLEVBQzFCLCtEQUNBSCxFQUFpQixZQUFjLFlBQy9CQyxFQUFNLGtCQUNSLEVBQ01LLEVBQW1CSCxFQUFHLHFCQUFzQkYsRUFBTSxlQUFlLEVBQ2pFTSxFQUFxQkosRUFBRyxVQUFXRixFQUFNLGlCQUFpQixFQUMxRE8sRUFBb0JMLEVBQUcsNERBQTZERixFQUFNLGdCQUFnQixFQUMxR1EsRUFBeUJOLEVBQUcsd0NBQXlDRixFQUFNLHFCQUFxQixFQUVoR1MsRUFBc0JQLEVBQUcscUJBQXNCRixFQUFNLGtCQUFrQixFQUN2RVUsRUFBaUJSLEVBQUcsMENBQTJDRixFQUFNLGFBQWEsRUFDbEZXLEVBQWdCVCxFQUNwQixrRkFDQUYsRUFBTSxZQUNSLEVBQ01ZLEVBQXNCVixFQUMxQlcsR0FBZSxDQUFFLFFBQVMsT0FBUSxDQUFDLEVBQ25DLDJHQUNBYixFQUFNLGtCQUNSLEVBRU1jLEVBQ0osa0tBQ0lDLEVBQXVCYixFQUFHWSxFQUFzQixrQkFBbUJkLEVBQU0sbUJBQW1CLEVBQzVGZ0IsRUFBcUJkLEVBQUdZLEVBQXNCLGtCQUFtQmQsRUFBTSxpQkFBaUIsRUFDeEZpQixFQUF3QmYsRUFDNUIsdUtBQ0FGLEVBQU0sb0JBQ1IsRUFDTWtCLEVBQXFCaEIsRUFDekIsa0pBQ0EsK0ZBQ0FGLEVBQU0saUJBQ1IsRUFDTW1CLEVBQWtCakIsRUFBRywrREFBZ0VGLEVBQU0sY0FBYyxFQUN6R29CLEVBQW9CbEIsRUFDeEIsNEdBQ0FGLEVBQU0sZ0JBQ1IsRUFDTXFCLEVBQXFCbkIsRUFBRyx5Q0FBMENGLEVBQU0saUJBQWlCLEVBQ3pGc0IsRUFBbUJwQixFQUFHLHlCQUEwQkYsRUFBTSxlQUFlLEVBRTNFLE9BQ0VOLEdBQUM2QixHQUFBLENBQ0MsS0FBSyxTQUNMLGNBQWMsUUFDZCxlQUFjLEdBQ2QsZ0JBQWlCekIsRUFDakIsVUFBV0ksRUFBRyxTQUFVTixDQUFTLEVBQ2pDLFdBQVksQ0FDVixjQUFlWSxFQUNmLElBQUtHLEVBQ0wsV0FBWUMsRUFDWixVQUFXUixFQUNYLE9BQVFDLEVBQ1IsTUFBT0wsRUFBTSxlQUNiLGNBQWVHLEVBQ2YsV0FBWU0sRUFDWixPQUFRUixFQUNSLEtBQU1TLEVBQ04sUUFBU0gsRUFDVCxTQUFVRCxFQUNWLFVBQVdVLEVBQ1gsYUFBY0MsRUFDZCxZQUFhRixFQUNiLFNBQVVHLEVBQ1YsU0FBVUcsRUFDVixPQUFRQyxFQUNSLFFBQVNGLEVBQ1QsTUFBT0QsRUFDUCxJQUFLLFlBQ0wsR0FBR3RCLENBQ0wsRUFDQyxHQUFHRyxFQUNOLENBRUosQ0FDQUwsR0FBUyxZQUFjLFdDOUd2QixPQUFTLFlBQUE2QixPQUFnQixRQU1sQixTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsYUFBQUMsQ0FBYSxFQUFJRCxFQUVuQixDQUFDRSxFQUFPQyxDQUFRLEVBQUlMLEdBQWlCRyxHQUFnQixFQUFFLEVBTTdELE1BQU8sQ0FBRSxlQUplRyxHQUErQyxDQUNyRUQsRUFBU0MsRUFBTSxPQUFPLEtBQUssQ0FDN0IsRUFFeUIsTUFBQUYsRUFBTyxTQUFBQyxDQUFTLENBQzNDLENGNlNJLG1CQUFBRSxHQUdNLE9BQUFDLEdBREYsUUFBQUMsT0FGSixvQkEvU0pDLEdBQU0sT0FBT0MsRUFBZSxFQVNyQixTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsT0FBQUMsQ0FBTyxFQUFJSixFQUV4Q0ssRUFBZSxPQUFPSCxDQUFLLEVBRTNCSSxFQUFvQkMsR0FBUSxJQUFNLENBQ3RDLElBQU1DLEVBQVNYLEdBQU1RLENBQVksRUFDakMsT0FBT0csRUFBTyxRQUFRLEVBQUlBLEVBQU8sT0FBTyxFQUFJLElBQUksSUFDbEQsRUFBRyxDQUFDSCxDQUFZLENBQUMsRUFFWEksRUFBb0JDLEdBQWlCLENBQ3pDLE9BQVFBLEVBQU0sQ0FDWixJQUFLLE9BQ0gsTUFBTyxhQUNULElBQUssT0FDSCxNQUFPLGlCQUNULElBQUssWUFDSCxNQUFPLDZCQUNULElBQUssY0FDSCxNQUFPLDhCQUNULElBQUssU0FDSCxNQUFPLG1CQUNULFFBQ0UsTUFDSixDQUNGLEVBR00sQ0FBQ0MsRUFBY0MsQ0FBZSxFQUFJQyxHQUEyQlAsQ0FBaUIsRUFDOUUsQ0FBQ1EsRUFBY0MsQ0FBZSxFQUFJRixHQUFlUCxDQUFpQixFQUNsRSxDQUFDVSxFQUFXQyxDQUFZLEVBQUlKLEdBQVMsSUFBTWhCLEdBQU1TLENBQWlCLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFDaEYsQ0FBQ1ksRUFBYUMsQ0FBYyxFQUFJTixHQUFTLElBQU1oQixHQUFNUyxDQUFpQixFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQ3BGLENBQUNjLEVBQWFDLENBQWMsRUFBSVIsR0FBUyxJQUFNaEIsR0FBTVMsQ0FBaUIsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUVwRixDQUFFLGVBQWdCZ0IsRUFBb0IsTUFBT0MsRUFBWSxTQUFBQyxDQUFTLEVBQUlDLEdBQVMsQ0FBRSxhQUFBcEIsQ0FBYSxDQUFDLEVBRS9GcUIsRUFBYW5CLEdBQVEsSUFBTUgsR0FBUSxVQUFVLE1BQVNBLEdBQVEsU0FBZ0MsQ0FBQ0EsQ0FBTSxDQUFDLEVBQ3RHdUIsRUFBV3BCLEdBQVEsSUFBTUUsRUFBaUJpQixDQUFVLEVBQUcsQ0FBQ0EsQ0FBVSxDQUFDLEVBRW5FRSxFQUFtQnJCLEdBQVEsSUFDeEIsQ0FBQyxPQUFRLFlBQWEsY0FBZSxRQUFRLEVBQUUsU0FBU21CLENBQVUsRUFDeEUsQ0FBQ0EsQ0FBVSxDQUFDLEVBR1RHLEVBQWtCQyxHQUErQyxDQUNyRVIsRUFBbUJRLENBQUssRUFFeEIsR0FBSSxDQUNGLElBQU1DLEVBQVdELEVBQU0sT0FBTyxNQUN4QnRCLEVBQVNYLEdBQU1rQyxDQUFRLEVBQzdCLEdBQUl2QixFQUFPLFFBQVEsRUFBRyxDQUNwQixJQUFNd0IsR0FBVXhCLEVBQU8sT0FBTyxFQUM5QkksRUFBZ0JvQixFQUFPLEVBQ3ZCakIsRUFBZ0JpQixFQUFPLEVBQ25CSixJQUNGWCxFQUFhVCxFQUFPLE9BQU8sSUFBSSxDQUFDLEVBQ2hDVyxFQUFlWCxFQUFPLE9BQU8sSUFBSSxDQUFDLEVBQ2xDYSxFQUFlYixFQUFPLE9BQU8sSUFBSSxDQUFDLEVBRXRDLENBQ0YsTUFBaUIsQ0FFakIsQ0FDRixFQUdNeUIsRUFBd0JDLEdBQTJCLENBQ3ZELEdBQUksQ0FBQ0EsRUFBTSxPQUVYLElBQU1DLEVBQWtCdEMsR0FBTXFDLENBQUksRUFDOUJFLEVBQVlELEVBRWhCLEdBQUlQLEdBQW9CakIsRUFFdEJ5QixFQUFZRCxFQUNULEtBQUt0QyxHQUFNYyxDQUFZLEVBQUUsS0FBSyxDQUFDLEVBQy9CLE9BQU9kLEdBQU1jLENBQVksRUFBRSxPQUFPLENBQUMsRUFDbkMsT0FBT2QsR0FBTWMsQ0FBWSxFQUFFLE9BQU8sQ0FBQyxVQUM3QmlCLEVBQWtCLENBRTNCLElBQU1TLEdBQU14QyxHQUFNLEVBQ2xCdUMsRUFBWUQsRUFBZ0IsS0FBS0UsR0FBSSxLQUFLLENBQUMsRUFBRSxPQUFPQSxHQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU9BLEdBQUksT0FBTyxDQUFDLEVBQ3JGcEIsRUFBYW9CLEdBQUksT0FBTyxJQUFJLENBQUMsRUFDN0JsQixFQUFla0IsR0FBSSxPQUFPLElBQUksQ0FBQyxFQUMvQmhCLEVBQWVnQixHQUFJLE9BQU8sSUFBSSxDQUFDLENBQ2pDLENBRUF6QixFQUFnQndCLEVBQVUsT0FBTyxDQUFDLEVBQ2xDckIsRUFBZ0JxQixFQUFVLE9BQU8sQ0FBQyxFQUNsQ1osRUFBU0csRUFBV1MsRUFBVSxPQUFPVCxDQUFRLEVBQUlTLEVBQVUsWUFBWSxDQUFDLENBQzFFLEVBR01FLEVBQWdCL0IsR0FBUSxJQUFNLENBQ2xDLEdBQUksQ0FDRixJQUFNMkIsRUFBT3JDLEdBQU0wQixDQUFVLEVBQzdCLE9BQUtXLEVBQUssUUFBUSxFQUNGWCxFQUFXLFNBQVMsR0FBRyxFQUk5QlcsRUFBSyxPQUFPLFFBQVEsRUFFcEJBLEVBQUssT0FBTyxJQUFJLEVBUEdYLENBUzlCLE1BQWlCLENBQ2YsT0FBT0EsQ0FDVCxDQUNGLEVBQUcsQ0FBQ0EsQ0FBVSxDQUFDLEVBRWYsU0FBU2dCLEdBQWVULEVBQWtCLENBQ3hDQSxFQUFNLGVBQWUsRUFDakJQLElBQWVsQixHQUNqQkosRUFBU3NCLENBQVUsQ0FFdkIsQ0FFQSxJQUFNaUIsRUFBb0JDLEdBQVksSUFDaENsQixJQUFlbEIsR0FDakJKLEVBQVNzQixDQUFVLEVBQ1osSUFFRixHQUNOLENBQUNBLEVBQVlsQixFQUFjSixDQUFRLENBQUMsRUFFakN5QyxHQUFlLElBQU0sQ0FBQyxFQUV0QixDQUFFLFdBQUFDLEdBQVksYUFBQUMsRUFBYSxFQUFJQyxHQUFrQixDQUNyRCxPQUFRTCxFQUNSLFNBQVVFLEdBQ1YsU0FBQXZDLENBQ0YsQ0FBQyxFQUVLMkMsR0FBZ0JDLEdBQXdCLENBQzVDQSxFQUFFLGVBQWUsRUFDakJBLEVBQUUsZ0JBQWdCLEVBRWxCLElBQU1WLEVBQU14QyxHQUFNLEVBQ2xCZSxFQUFnQnlCLEVBQUksT0FBTyxDQUFDLEVBQzVCdEIsRUFBZ0JzQixFQUFJLE9BQU8sQ0FBQyxFQUM1QmIsRUFBU0csRUFBV1UsRUFBSSxPQUFPVixDQUFRLEVBQUlVLEVBQUksWUFBWSxDQUFDLEVBRzVEVyxHQUFhWCxFQUFJLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDOUJULElBQ0ZYLEVBQWFvQixFQUFJLE9BQU8sSUFBSSxDQUFDLEVBQzdCbEIsRUFBZWtCLEVBQUksT0FBTyxJQUFJLENBQUMsRUFDL0JoQixFQUFlZ0IsRUFBSSxPQUFPLElBQUksQ0FBQyxFQUVuQyxFQUdNWSxHQUFTMUMsR0FDYixJQUFNLENBQ0osQ0FBRSxNQUFPLElBQUssTUFBTyxTQUFVLEVBQy9CLENBQUUsTUFBTyxJQUFLLE1BQU8sVUFBVyxFQUNoQyxDQUFFLE1BQU8sSUFBSyxNQUFPLE9BQVEsRUFDN0IsQ0FBRSxNQUFPLElBQUssTUFBTyxPQUFRLEVBQzdCLENBQUUsTUFBTyxJQUFLLE1BQU8sS0FBTSxFQUMzQixDQUFFLE1BQU8sSUFBSyxNQUFPLE1BQU8sRUFDNUIsQ0FBRSxNQUFPLElBQUssTUFBTyxNQUFPLEVBQzVCLENBQUUsTUFBTyxJQUFLLE1BQU8sUUFBUyxFQUM5QixDQUFFLE1BQU8sSUFBSyxNQUFPLFdBQVksRUFDakMsQ0FBRSxNQUFPLElBQUssTUFBTyxTQUFVLEVBQy9CLENBQUUsTUFBTyxLQUFNLE1BQU8sVUFBVyxFQUNqQyxDQUFFLE1BQU8sS0FBTSxNQUFPLFVBQVcsQ0FDbkMsRUFDQSxDQUFDLENBQ0gsRUFHTTJDLEVBQW9CM0MsR0FBUSxJQUN6Qk8sRUFBYSxTQUFTLEVBQUUsU0FBUyxFQUN2QyxDQUFDQSxDQUFZLENBQUMsRUFFWCxDQUFDcUMsRUFBV0gsRUFBWSxFQUFJbkMsR0FBUyxJQUNsQ0MsRUFBYSxZQUFZLEVBQUUsU0FBUyxDQUM1QyxFQUVLc0MsR0FDSkMsR0FDRyxDQUNILElBQUlDLEVBQVczQyxFQUFlZCxHQUFNYyxDQUFZLEVBQUlkLEdBQU0sRUFJeERjLElBQ0MwQyxFQUFhLE9BQVMsUUFBYUEsRUFBYSxTQUFXLFFBQWFBLEVBQWEsU0FBVyxTQUNqR0EsRUFBYSxPQUFTLFFBQ3RCQSxFQUFhLFFBQVUsUUFDdkJBLEVBQWEsTUFBUSxPQUVyQkMsRUFBV3pELEdBQU1jLENBQVksRUFFN0IsQ0FBQ0EsSUFDQTBDLEVBQWEsT0FBUyxRQUFhQSxFQUFhLFNBQVcsUUFBYUEsRUFBYSxTQUFXLFVBR2pHQyxFQUFXekQsR0FBTWlCLENBQVksR0FHL0IsSUFBTWtCLEVBQVVzQixFQUNiLElBQUksT0FBUUQsRUFBYSxNQUFRQyxFQUFTLEtBQUssQ0FBQyxFQUNoRCxJQUFJLFFBQVNELEVBQWEsT0FBU0MsRUFBUyxNQUFNLENBQUMsRUFDbkQsSUFBSSxPQUFRRCxFQUFhLEtBQU9DLEVBQVMsS0FBSyxDQUFDLEVBQy9DLElBQUksT0FBUUQsRUFBYSxPQUFTekIsRUFBbUIwQixFQUFTLEtBQUssRUFBSSxFQUFFLEVBQ3pFLElBQUksU0FBVUQsRUFBYSxTQUFXekIsRUFBbUIwQixFQUFTLE9BQU8sRUFBSSxFQUFFLEVBQy9FLElBQUksU0FBVUQsRUFBYSxTQUFXekIsRUFBbUIwQixFQUFTLE9BQU8sRUFBSSxFQUFFLEVBRWxGMUMsRUFBZ0JvQixFQUFRLE9BQU8sQ0FBQyxHQUU1QnFCLEVBQWEsT0FBUyxRQUFhQSxFQUFhLFFBQVUsU0FDNUR0QyxFQUFnQmlCLEVBQVEsT0FBTyxDQUFDLEVBR2xDUixFQUFTRyxFQUFXSyxFQUFRLE9BQU9MLENBQVEsRUFBSUssRUFBUSxZQUFZLENBQUMsRUFHaEVxQixFQUFhLE9BQVMsUUFBV0wsR0FBYSxPQUFPSyxFQUFhLElBQUksQ0FBQyxFQUN2RXpCLElBQ0V5QixFQUFhLE9BQVMsUUFBV3BDLEVBQWEsT0FBT29DLEVBQWEsSUFBSSxFQUFFLFNBQVMsRUFBRyxHQUFHLENBQUMsRUFDeEZBLEVBQWEsU0FBVyxRQUFXbEMsRUFBZSxPQUFPa0MsRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFHLEdBQUcsQ0FBQyxFQUM5RkEsRUFBYSxTQUFXLFFBQVdoQyxFQUFlLE9BQU9nQyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUcsR0FBRyxDQUFDLEVBRXRHLEVBR01FLEdBQXFCckQsR0FBa0IsQ0FDM0MsSUFBTXNELEVBQWEsU0FBU3RELENBQUssRUFDakNrRCxHQUFxQixDQUFFLE1BQU9JLENBQVcsQ0FBQyxDQUM1QyxFQUdNQyxHQUFvQlYsR0FBMkMsQ0FDbkUsSUFBTVcsRUFBYVgsRUFBRSxPQUFPLE1BRTVCLEdBREFDLEdBQWFVLENBQVUsRUFDbkIsWUFBWSxLQUFLQSxDQUFVLEVBQUcsQ0FDaEMsSUFBTUMsRUFBTyxTQUFTRCxDQUFVLEVBQzVCQSxFQUFXLFNBQVcsR0FDeEJOLEdBQXFCLENBQUUsS0FBQU8sQ0FBSyxDQUFDLENBRWpDLENBQ0YsRUFFTUMsR0FBbUIsQ0FBQ0MsRUFBb0MzRCxJQUFrQixDQUM5RSxJQUFNNEQsRUFBZSxTQUFTNUQsQ0FBSyxFQUNuQyxHQUFJLE1BQU00RCxDQUFZLEVBQUcsT0FFekIsSUFBTUMsR0FBVUYsSUFBUyxPQUFTQyxFQUFlLFNBQVM5QyxDQUFTLEVBQzdEZ0QsR0FBWUgsSUFBUyxTQUFXQyxFQUFlLFNBQVM1QyxDQUFXLEVBQ25FK0MsR0FBWUosSUFBUyxTQUFXQyxFQUFlLFNBQVMxQyxDQUFXLEVBRXJFeUMsSUFBUyxRQUFRNUMsRUFBYWYsRUFBTSxTQUFTLEVBQUcsR0FBRyxDQUFDLEVBQ3BEMkQsSUFBUyxVQUFVMUMsRUFBZWpCLEVBQU0sU0FBUyxFQUFHLEdBQUcsQ0FBQyxFQUN4RDJELElBQVMsVUFBVXhDLEVBQWVuQixFQUFNLFNBQVMsRUFBRyxHQUFHLENBQUMsRUFHNUQsSUFBTWdFLEdBQWlCTCxJQUFTLFFBQVUzRCxFQUFNLFFBQVUsR0FBSzRELEdBQWdCLEdBQUtBLEdBQWdCLEdBQzlGSyxHQUFtQk4sSUFBUyxVQUFZM0QsRUFBTSxRQUFVLEdBQUs0RCxHQUFnQixHQUFLQSxHQUFnQixHQUNsR00sR0FBbUJQLElBQVMsVUFBWTNELEVBQU0sUUFBVSxHQUFLNEQsR0FBZ0IsR0FBS0EsR0FBZ0IsSUFHckdELElBQVMsUUFBVUssSUFDbkJMLElBQVMsVUFBWU0sSUFDckJOLElBQVMsVUFBWU8sS0FFdEJoQixHQUFxQixDQUFFLEtBQU1XLEdBQVMsT0FBUUMsR0FBVyxPQUFRQyxFQUFVLENBQUMsQ0FFaEYsRUFHQSxPQUFBSSxHQUFVLElBQU0sQ0FDZCxHQUFJMUQsRUFBYyxDQUNoQixJQUFNMkQsRUFBVXpFLEdBQU1jLENBQVksRUFDbENxQyxHQUFhc0IsRUFBUSxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQ2xDMUMsSUFDRlgsRUFBYXFELEVBQVEsT0FBTyxJQUFJLENBQUMsRUFDakNuRCxFQUFlbUQsRUFBUSxPQUFPLElBQUksQ0FBQyxFQUNuQ2pELEVBQWVpRCxFQUFRLE9BQU8sSUFBSSxDQUFDLEVBRXZDLENBQ0YsRUFBRyxDQUFDM0QsRUFBY2lCLENBQWdCLENBQUMsRUFHbkN5QyxHQUFVLElBQU0sQ0FDVnZELElBRUdILEdBQ0hxQyxHQUFhbEMsRUFBYSxZQUFZLEVBQUUsU0FBUyxDQUFDLEVBR3hELEVBQUcsQ0FBQ0EsRUFBY0gsQ0FBWSxDQUFDLEVBRzdCZixHQUFBRixHQUFBLENBQ0UsVUFBQUMsR0FBQyxRQUFLLFNBQVU0QyxHQUNkLFNBQUEzQyxHQUFDLE9BQUksVUFBVSw2REFDYixVQUFBRCxHQUFDNEUsR0FBQSxDQUNDLFVBQVUsNklBQ1YsU0FBVTFDLEVBQ1YsS0FBSyxPQUNMLE1BQU9OLEVBQ1QsRUFDQTVCLEdBQUMsU0FBTSxLQUFLLFNBQVMsVUFBVSxhQUFhLEdBQzlDLEVBQ0YsRUFDQUMsR0FBQyxPQUFJLFVBQVUseUVBQ2IsVUFBQUEsR0FBQyxPQUFJLFVBQVUsOERBQ2IsVUFBQUEsR0FBQzRFLEdBQUEsQ0FBTyxNQUFPdEIsRUFBbUIsY0FBZUssR0FDL0MsVUFBQTVELEdBQUM4RSxHQUFBLENBQWMsVUFBVSwyR0FDdkIsU0FBQTlFLEdBQUMrRSxHQUFBLENBQVksWUFBWSxRQUFRLEVBQ25DLEVBQ0EvRSxHQUFDZ0YsR0FBQSxDQUNFLFNBQUExQixHQUFPLElBQUsyQixHQUNYakYsR0FBQ2tGLEVBQUEsQ0FBNkIsTUFBT0QsRUFBTSxNQUN4QyxTQUFBQSxFQUFNLE9BRFFBLEVBQU0sS0FFdkIsQ0FDRCxFQUNILEdBQ0YsRUFFQWpGLEdBQUM0RSxHQUFBLENBQ0MsVUFBVSw2RkFDVixLQUFLLE9BQ0wsTUFBT3BCLEVBQ1AsU0FBVU0sR0FDVixZQUFZLE9BQ2QsR0FDRixFQUVBOUQsR0FBQ21GLEdBQUEsQ0FDQyxTQUFVbkUsRUFDVixNQUFPRyxFQUNQLFNBQVVtQixFQUNWLGNBQWVsQixFQUNmLFNBQVVaLEVBQ1osRUFDQ3lCLEdBQ0NoQyxHQUFDLE9BQUksVUFBVSw0REFDYixVQUFBRCxHQUFDNEUsR0FBQSxDQUNDLFVBQVUsNkZBQ1YsS0FBSyxTQUNMLE1BQU92RCxFQUNQLFNBQVcrQixHQUFNYSxHQUFpQixPQUFRYixFQUFFLE9BQU8sS0FBSyxFQUN4RCxZQUFZLEtBQ1osSUFBSyxFQUNMLElBQUssR0FDTCxVQUFXLEVBQ1gsU0FBVTVDLEVBQ1osRUFDQVIsR0FBQyxRQUFLLFVBQVUsc0NBQXNDLGFBQUMsRUFDdkRBLEdBQUM0RSxHQUFBLENBQ0MsVUFBVSw2RkFDVixLQUFLLFNBQ0wsTUFBT3JELEVBQ1AsU0FBVzZCLEdBQU1hLEdBQWlCLFNBQVViLEVBQUUsT0FBTyxLQUFLLEVBQzFELFlBQVksS0FDWixJQUFLLEVBQ0wsSUFBSyxHQUNMLFVBQVcsRUFDWCxTQUFVNUMsRUFDWixFQUNBUixHQUFDLFFBQUssVUFBVSxzQ0FBc0MsYUFBQyxFQUN2REEsR0FBQzRFLEdBQUEsQ0FDQyxVQUFVLDZGQUNWLEtBQUssU0FDTCxNQUFPbkQsRUFDUCxTQUFXMkIsR0FBTWEsR0FBaUIsU0FBVWIsRUFBRSxPQUFPLEtBQUssRUFDMUQsWUFBWSxLQUNaLElBQUssRUFDTCxJQUFLLEdBQ0wsVUFBVyxFQUNYLFNBQVU1QyxFQUNaLEdBQ0YsRUFFRlIsR0FBQyxRQUFLLFVBQVUsYUFBYyxTQUFBMkMsRUFBYyxHQUM5QyxFQUNBM0MsR0FBQ29GLEdBQUEsQ0FDQyxPQUFRcEMsR0FDUixTQUFVQyxHQUNWLFNBQVV6QyxFQUNWLFNBQVUyQyxHQUNWLFdBQVksR0FDZCxHQUNGLENBRUosQ0FHQSxTQUFTZ0MsR0FBaUIsQ0FDeEIsU0FBQUUsRUFDQSxNQUFBSixFQUNBLFNBQUFLLEVBQ0EsY0FBQUMsRUFDQSxTQUFBQyxDQUNGLEVBTUcsQ0FDRCxPQUNFeEYsR0FBQ3lGLEdBQUEsQ0FDQyxLQUFLLFNBQ0wsU0FBVUosRUFDVixTQUFVQyxFQUNWLFNBQVVFLEVBQ1YsTUFBT1AsRUFDUCxjQUFlTSxFQUNmLFVBQVUsWUFDVixjQUFjLFdBQ2hCLENBRUosQ0d0YkEsT0FBUyxlQUFBRyxHQUFhLFlBQUFDLE9BQWdCLFFBMkRsQyxtQkFBQUMsR0FDRSxPQUFBQyxHQURGLFFBQUFDLE9BQUEsb0JBM0NHLFNBQVNDLEdBQVVDLEVBQXVCLENBQy9DLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsTUFBQUMsRUFBTyxRQUFBQyxFQUFVLENBQUMsRUFBRyxTQUFBQyxDQUFTLEVBQUlMLEVBQ3RETSxFQUFhSixFQUFPLFdBQWEsR0FDakNLLEVBQWUsT0FBT0osQ0FBSyxFQUMzQixDQUFDSyxFQUFjQyxDQUFlLEVBQUlDLEdBQVNILENBQVksRUFDdkQsQ0FBQ0ksRUFBV0MsQ0FBWSxFQUFJRixHQUFrQlAsSUFBVSxJQUFJLEVBRTVEVSxFQUFzQkMsR0FBbUIsQ0FDN0NMLEVBQWdCSyxDQUFNLENBQ3hCLEVBRU1DLEVBQW9CQyxHQUFxQixDQUM3Q0osRUFBYUksQ0FBTyxDQUN0QixFQUVNQyxFQUFvQkMsR0FBWSxJQUNoQ1AsRUFDRVIsSUFBVSxNQUNaRixFQUFTLElBQUksRUFDTixJQUVGLEdBR0xPLElBQWlCRCxHQUNuQk4sRUFBU08sQ0FBWSxFQUNkLElBRUYsR0FDTixDQUFDQSxFQUFjRCxFQUFjTixFQUFVVSxFQUFXUixDQUFLLENBQUMsRUFFckRnQixFQUFlLElBQU0sQ0FDekJWLEVBQWdCRixDQUFZLEVBQzVCSyxFQUFhVCxJQUFVLElBQUksQ0FDN0IsRUFFTSxDQUFFLFdBQUFpQixFQUFZLGFBQUFDLENBQWEsRUFBSUMsR0FBa0IsQ0FDckQsT0FBUUwsRUFDUixTQUFVRSxFQUNWLFNBQUFkLENBQ0YsQ0FBQyxFQUVELE9BQ0VQLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxHQUFDLE9BQUksVUFBVSwrSUFDWixTQUFBVyxFQUNILEVBQ0FYLEdBQUMsT0FBSSxVQUFVLDZMQUNaLFNBQUFPLEVBQVEsSUFBS1UsR0FDWmpCLEdBQUMsVUFFQyxRQUFTLElBQU1nQixFQUFtQkMsQ0FBTSxFQUN4QyxVQUFXUyxHQUFjLENBQUUsUUFBU1QsSUFBV04sRUFBZSxVQUFZLFNBQVUsQ0FBQyxFQUNyRixTQUFVRyxHQUFhTixFQUV0QixTQUFBUyxHQUxJQSxDQU1QLENBQ0QsRUFDSCxFQUNBakIsR0FBQzJCLEdBQUEsQ0FDQyxPQUFRSixFQUNSLFNBQVVDLEVBQ1YsYUFBY2YsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUosRUFDUixTQUFVTixFQUNaLEdBQ0YsQ0FFSixDQ3BGQSxPQUFPb0IsSUFBUyxZQUFBQyxPQUFnQixRQThENUIsbUJBQUFDLEdBRUksT0FBQUMsR0FGSixRQUFBQyxPQUFBLG9CQWpERyxTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDRyxFQUFlTCxJQUFVLEtBQU8sR0FBSyxLQUFLLFVBQVVBLEVBQU8sS0FBTSxDQUFDLEVBQ2xFLENBQUNNLEVBQWNDLENBQWUsRUFBSUMsR0FBaUJILENBQVksRUFDL0QsQ0FBQ0ksRUFBV0MsQ0FBWSxFQUFJRixHQUFrQlIsSUFBVSxJQUFJLEVBRTVEVyxFQUFnQkMsR0FBOEMsQ0FDbEVMLEVBQWdCSyxFQUFFLE9BQU8sS0FBSyxDQUNoQyxFQUVNQyxFQUFvQkMsR0FBcUIsQ0FDN0NKLEVBQWFJLENBQU8sQ0FDdEIsRUFHTUMsRUFBb0JDLEdBQU0sWUFBWSxJQUFNLENBQ2hELEdBQUlQLEVBQ0YsT0FBSVQsSUFBVSxNQUNaQyxFQUFTLElBQUksRUFDTixJQUVGLEdBR1QsSUFBTWdCLEVBQVlYLElBQWlCLEdBQUssS0FBUSxLQUFLLE1BQU1BLENBQVksRUFHdkUsT0FBSVcsSUFBY2pCLEdBQ2hCQyxFQUFTZ0IsQ0FBUyxFQUNYLElBRUYsRUFDVCxFQUFHLENBQUNYLEVBQWNOLEVBQU9DLEVBQVVRLENBQVMsQ0FBQyxFQUV2Q1MsRUFBZSxJQUFNLENBRXpCWCxFQUFnQkYsQ0FBWSxFQUM1QkssRUFBYVYsSUFBVSxJQUFJLENBQzdCLEVBR00sQ0FBRSxXQUFBbUIsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFOLEVBQ1IsU0FBVUcsRUFDVixTQUFBZixDQUNGLENBQUMsRUFFRCxPQUNFTixHQUFBRixHQUFBLENBQ0UsVUFBQUMsR0FBQyxPQUFJLFVBQVUsdURBQ2IsU0FBQUEsR0FBQyxZQUNDLEtBQU0sRUFDTixNQUFPVSxFQUNQLFNBQVVLLEVBQ1YsU0FBVUYsR0FBYU4sRUFDdkIsVUFBVSxvTUFDVixLQUFLLFFBQ1AsRUFDRixFQUNBUCxHQUFDMEIsR0FBQSxDQUNDLE9BQVFILEVBQ1IsU0FBVUMsRUFDVixhQUFjaEIsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUosRUFDUixTQUFVTixFQUNaLEdBQ0YsQ0FFSixDQ2xGQSxPQUFPb0IsSUFBUyxZQUFBQyxPQUFnQixRQWdFNUIsbUJBQUFDLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQWxERyxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDLENBQUNHLEVBQWNDLENBQWUsRUFBSUMsR0FBaUJQLElBQVUsS0FBTyxHQUFLLE9BQU9BLENBQUssQ0FBQyxFQUN0RixDQUFDUSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFDNURVLEVBQWVWLElBQVUsS0FBTyxHQUFLLE9BQU9BLENBQUssRUFFakRXLEVBQWdCQyxHQUEyQyxDQUMvRE4sRUFBZ0JNLEVBQUUsT0FBTyxLQUFLLENBQ2hDLEVBRU1DLEVBQW9CQyxHQUFxQixDQUM3Q0wsRUFBYUssQ0FBTyxDQUN0QixFQUdNQyxFQUFvQkMsR0FBTSxZQUFZLElBQU0sQ0FDaEQsR0FBSVIsRUFDRixPQUFJUixJQUFVLE1BQ1pDLEVBQVMsSUFBSSxFQUNOLElBRUYsR0FJVCxJQUFNZ0IsRUFBZVosSUFBaUIsR0FBSyxLQUFPLE9BQU9BLENBQVksRUFHckUsT0FBSUEsSUFBaUJMLEdBQ25CQyxFQUFTZ0IsQ0FBWSxFQUNkLElBRUYsRUFDVCxFQUFHLENBQUNaLEVBQWNMLEVBQU9DLEVBQVVPLENBQVMsQ0FBQyxFQUV2Q1UsRUFBZSxJQUFNLENBRXpCWixFQUFnQkksQ0FBWSxFQUM1QkQsRUFBYVQsSUFBVSxJQUFJLENBQzdCLEVBR00sQ0FBRSxXQUFBbUIsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFOLEVBQ1IsU0FBVUcsRUFDVixTQUFBZixDQUNGLENBQUMsRUFFRCxPQUNFTixHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxPQUFJLFVBQVUsd0ZBQ2IsVUFBQUQsR0FBQzBCLEdBQUEsQ0FBTSxRQUFRLGdCQUFnQixVQUFVLGFBQWEsbUJBRXRELEVBQ0ExQixHQUFDLFNBQ0MsS0FBSyxPQUNMLFVBQVUsVUFDVixRQUFRLE9BQ1IsTUFBT1MsRUFDUCxTQUFVTSxFQUNWLFNBQVVILEdBQWFMLEVBQ3ZCLFVBQVUsNE1BQ1YsS0FBSyxNQUNMLEtBQUssUUFDUCxHQUNGLEVBQ0FQLEdBQUMyQixHQUFBLENBQ0MsT0FBUUosRUFDUixTQUFVQyxFQUNWLGFBQWNoQixFQUFhUyxFQUFtQixPQUM5QyxPQUFRTCxFQUNSLFNBQVVMLEVBQ1osR0FDRixDQUVKLENDekZBLE9BQU9xQixPQUFXLFFBNENkLG1CQUFBQyxHQUVJLE9BQUFDLEdBREYsUUFBQUMsT0FERixvQkEvQkcsU0FBU0MsR0FBU0MsRUFBc0IsQ0FDN0MsR0FBTSxDQUFFLFNBQUFDLEVBQVUsTUFBQUMsRUFBTyxTQUFBQyxDQUFTLEVBQUlILEVBRWhDSSxFQUFlLE9BQU9GLENBQUssRUFFM0IsQ0FBRSxlQUFBRyxFQUFnQixNQUFPQyxDQUFXLEVBQUlDLEdBQVMsQ0FBRSxhQUFBSCxDQUFhLENBQUMsRUFFdkUsU0FBU0ksRUFBZUMsRUFBa0IsQ0FDeENBLEVBQU0sZUFBZSxFQUNqQkgsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsQ0FFdkIsQ0FFQSxJQUFNSSxFQUFvQkMsR0FBTSxZQUFZLElBQ3RDTCxJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxFQUNaLElBRUYsR0FDTixDQUFDQSxFQUFZRixFQUFjSCxDQUFRLENBQUMsRUFFakNXLEVBQWUsSUFBTSxDQUFDLEVBRXRCLENBQUUsV0FBQUMsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEdBQWtCLENBQ3JELE9BQVFMLEVBQ1IsU0FBVUUsRUFDVixTQUFBVCxDQUNGLENBQUMsRUFFRCxPQUNFTCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxRQUFLLFNBQVVVLEVBQ2QsVUFBQVgsR0FBQ21CLEdBQUEsQ0FDQyxVQUFVLDZJQUNWLFNBQVVYLEVBQ1YsS0FBSyxPQUNMLE1BQU9DLEVBQ1AsU0FBVUgsRUFDWixFQUNBTixHQUFDLFNBQU0sS0FBSyxTQUFTLFVBQVUsYUFBYSxHQUM5QyxFQUNBQSxHQUFDb0IsR0FBQSxDQUFhLE9BQVFKLEVBQVksU0FBVUMsRUFBYyxTQUFVWCxFQUFVLEdBQ2hGLENBRUosQ0MzREEsT0FBT2UsT0FBVyxRQUNsQixPQUFPQyxPQUFxQiwrQkFFNUIsT0FBUyxlQUFBQyxHQUFhLFdBQUFDLE9BQWUsUUErRWpDLG1CQUFBQyxHQUVJLE9BQUFDLEdBREYsUUFBQUMsT0FERixvQkFyRUpDLEdBQU0sT0FBT0MsRUFBZSxFQVNyQixTQUFTQyxHQUFVQyxFQUF1QixDQUMvQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxNQUFBQyxFQUFPLFNBQUFDLENBQVMsRUFBSUgsRUFFaENJLEVBQWUsT0FBT0YsQ0FBSyxFQUUzQixDQUFFLGVBQUFHLEVBQWdCLE1BQU9DLENBQVcsRUFBSUMsR0FBUyxDQUFFLGFBQUFILENBQWEsQ0FBQyxFQUdqRUksRUFBZ0JDLEdBQVEsSUFBTSxDQUNsQyxHQUFJLENBQ0YsR0FBSSxDQUFDSCxFQUFXLFNBQVMsR0FBRyxFQUFHLE9BQU9BLEVBRXRDLElBQU1JLEVBQWMsc0JBQXNCLEtBQUtKLENBQVUsRUFDbkRLLEVBQU9kLEdBQU0sY0FBY1MsQ0FBVSxFQUFFLEVBQzdDLEdBQUlLLEVBQUssUUFBUSxFQUNmLE9BQU9BLEVBQUssT0FBTyxRQUFRLEdBQUtELEVBQWMsS0FBS0MsRUFBSyxPQUFPLEdBQUcsQ0FBQyxJQUFNLElBRzNFLElBQU1DLEVBQVksNkRBQ1pDLEVBQVFQLEVBQVcsTUFBTU0sQ0FBUyxFQUN4QyxHQUFJQyxFQUFPLENBQ1QsSUFBTUMsRUFBUSxTQUFTRCxFQUFNLENBQUMsR0FBSyxLQUFNLEVBQUUsRUFDckNFLEVBQVVGLEVBQU0sQ0FBQyxHQUFLLEtBQ3RCRyxFQUFXSCxFQUFNLENBQUMsR0FBSyxHQUN2QkksRUFBU0gsR0FBUyxHQUFLLEtBQU8sS0FHcEMsTUFBTyxHQUZRQSxFQUFRLEtBQU8sRUFBSSxHQUFLQSxFQUFRLEVBRS9CLElBQUlDLENBQU8sSUFBSUUsQ0FBTSxHQUFHRCxFQUFXLEtBQUtBLENBQVEsSUFBTSxFQUFFLEVBQzFFLENBRUEsT0FBT1YsQ0FDVCxNQUFRLENBQ04sT0FBT0EsQ0FDVCxDQUNGLEVBQUcsQ0FBQ0EsQ0FBVSxDQUFDLEVBRWYsU0FBU1ksRUFBZUMsRUFBa0IsQ0FDeENBLEVBQU0sZUFBZSxFQUNqQmIsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsQ0FFdkIsQ0FFQSxJQUFNYyxFQUFvQkMsR0FBWSxJQUNoQ2YsSUFBZUYsR0FDakJILEVBQVNLLENBQVUsRUFDWixJQUVGLEdBQ04sQ0FBQ0EsRUFBWUYsRUFBY0gsQ0FBUSxDQUFDLEVBRWpDcUIsRUFBZSxJQUFNLENBQUMsRUFFdEIsQ0FBRSxXQUFBQyxFQUFZLGFBQUFDLENBQWEsRUFBSUMsR0FBa0IsQ0FDckQsT0FBUUwsRUFDUixTQUFVRSxFQUNWLFNBQUFuQixDQUNGLENBQUMsRUFFRCxPQUNFUCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxRQUFLLFNBQVVzQixFQUNkLFVBQUF2QixHQUFDK0IsR0FBQSxDQUNDLFVBQVUsNklBQ1YsU0FBVXJCLEVBQ1YsS0FBSyxPQUNMLE1BQU9DLEVBQ1QsRUFDQVgsR0FBQyxTQUFNLEtBQUssU0FBUyxVQUFVLGFBQWEsR0FDOUMsRUFDQUMsR0FBQyxPQUFJLFVBQVUseUVBQ2IsVUFBQUQsR0FBQyxPQUFJLFVBQVUsc0NBQXNDLDJCQUFlLEVBQ3BFQSxHQUFDLE9BQUksVUFBVSw2Q0FBOEMsU0FBQWEsRUFBYyxHQUM3RSxFQUNBYixHQUFDZ0MsR0FBQSxDQUFhLE9BQVFKLEVBQVksU0FBVUMsRUFBYyxTQUFVckIsRUFBVSxHQUNoRixDQUVKLENadkVXLGNBQUF5QixPQUFBLG9CQWhCSixTQUFTQyxHQUFTQyxFQUt0QixDQUNELEdBQU0sQ0FBRSxLQUFBQyxFQUFNLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSCxFQUM3QixDQUFFLE1BQUFJLEVBQU8sUUFBQUMsRUFBUyxRQUFBQyxDQUFRLEVBQUlKLEVBQU8sU0FDckNLLEVBQVdMLEVBQU8sWUFBY0YsRUFBTSxTQUV0Q1EsRUFBWVAsRUFBSyxTQUFTLEVBRzFCUSxFQUFRRCxJQUFjLE9BQVksR0FBS0EsRUFFN0MsT0FBSUosSUFBVSxXQUNMTixHQUFDWSxHQUFBLENBQVUsU0FBVVAsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxPQUNMTixHQUFDYSxHQUFBLENBQVUsU0FBVVIsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxRQUFVRSxFQUNmUixHQUFDYyxHQUFBLENBQVUsU0FBVVQsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd0RkgsSUFBVSxVQUNMTixHQUFDZSxHQUFBLENBQWEsU0FBVVYsRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUd6RkgsSUFBVSxPQUNMTixHQUFDZ0IsR0FBQSxDQUFVLFNBQVVYLEVBQVUsTUFBT00sRUFBTyxRQUFTSixFQUFTLE9BQVFILEVBQVEsU0FBVUssRUFBVSxFQUd4R0gsSUFBVSxVQUNMTixHQUFDaUIsR0FBQSxDQUFhLFNBQVVaLEVBQVUsTUFBT00sRUFBTyxPQUFRUCxFQUFRLFNBQVVLLEVBQVUsRUFJM0ZULEdBQUNrQixHQUFBLENBQVMsU0FBVWIsRUFBVSxNQUFPYyxHQUFhUixDQUFLLEVBQUksS0FBSyxVQUFVQSxDQUFLLEVBQUlBLEVBQU8sU0FBVUYsRUFBVSxDQUVsSCxDYXBEQSxPQUFPVyxPQUFVLGFDRmpCLE9BQVMsZUFBQUMsR0FBYSxhQUFBQyxHQUFXLFdBQUFDLE9BQWUsUUFDaEQsT0FBUyxNQUFNQyxPQUFjLE9BWXRCLFNBQVNDLElBQWlCLENBQy9CLEdBQU0sQ0FBRSxZQUFBQyxFQUFhLGVBQUFDLEVBQWdCLGFBQUFDLEVBQWMsZ0JBQUFDLEVBQWlCLFFBQUFDLEVBQVMsbUJBQUFDLENBQW1CLEVBQUlDLEVBQVUsRUFDeEcsQ0FBRSxLQUFNQyxFQUFlLGNBQUFDLENBQWMsRUFBSUMsR0FBaUIsRUFDMURDLEVBQVlGLElBQWtCRyxHQUU5QixDQUFDQyxDQUFnQixFQUFJQyxFQUFjLE1BQU0sRUFFekMsQ0FBQ0MsRUFBZ0JDLENBQWlCLEVBQUlDLEdBQ25DLENBQ0wsTUFBTyxDQUNMLGFBQWMsS0FDZCxNQUFRLEdBQXFCLEVBQzdCLFVBQVksR0FBcUIsR0FBSyxFQUN4QyxFQUNBLE9BQVEsQ0FDTixhQUFjLEtBQ2QsTUFBUSxHQUFxQixHQUFLWixFQUFRLGVBQWlCLFNBQzNELFVBQVksR0FBcUIsR0FBS0EsRUFBUSxlQUFpQixRQUNqRSxDQUNGLENBQ0YsRUFHTSxDQUFDLENBQUVhLENBQVksRUFBSUosRUFBNkIsWUFBYSxDQUNqRSxNQUFRLEdBQU0sRUFDZCxVQUFZLEdBQU0sR0FBSyxFQUN6QixDQUFDLEVBQ0ssQ0FBQyxDQUFFSyxDQUFZLEVBQUlMLEVBQTZCLE9BQVEsQ0FDNUQsTUFBUSxHQUFNLEVBQ2QsVUFBWSxHQUFNLEdBQUssRUFDekIsQ0FBQyxFQUNLLENBQUMsQ0FBRU0sQ0FBTyxFQUFJTixFQUE2QixPQUFRLENBQ3ZELE1BQVEsR0FBTSxFQUNkLFVBQVksR0FBTSxHQUFLLEVBQ3pCLENBQUMsRUFHS08sRUFBa0JDLEdBQVEsSUFFdkIsT0FBTyxPQUFPZCxFQUFjLFFBQVFMLENBQVksR0FBRyxRQUFVLENBQUMsQ0FBQyxFQUNyRSxDQUFDSyxFQUFjLFFBQVNMLENBQVksQ0FBQyxFQUdsQ29CLEVBQWtCRCxHQUFRLElBQ3ZCLE9BQU8sT0FBT2QsRUFBYyxPQUFPLEVBQUUsT0FBTyxDQUFDZ0IsRUFBS0MsSUFDaERELEVBQU0sT0FBTyxLQUFLQyxFQUFPLE1BQU0sRUFBRSxPQUN2QyxDQUFDLEVBQ0gsQ0FBQ2pCLEVBQWMsT0FBTyxDQUFDLEVBRXBCLENBQUNrQixDQUFVLEVBQUlMLEVBR3JCTSxHQUFVLElBQU0sQ0FJZCxHQUhJZCxJQUFxQixVQUdyQkYsRUFBVyxPQUdmLElBQU1pQixFQURtQixJQUFJLGdCQUFnQixPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUNqQyxJQUFJLE1BQU0sRUFHbkQsR0FBSWIsR0FBZ0IsT0FBU0EsRUFBZSxTQUFXWixFQUFjLENBQ25FLElBQU0wQixFQUFpQlIsRUFBTyxLQUFNUyxHQUFNQSxFQUFFLE9BQVNmLEVBQWUsS0FBSyxFQUV6RSxHQUFJYyxFQUFnQixDQUNkNUIsSUFBZ0I0QixHQUNsQjNCLEVBQWUyQixDQUFjLEVBRTFCRCxHQUNFUixFQUFRLE9BQU8sRUFFdEIsTUFDRixDQUVGLENBT0EsR0FBSUMsRUFBTyxPQUFTLEVBQUcsQ0FFckIsSUFBTVUsRUFDSjlCLEdBQWVBLEVBQVksU0FBV0UsR0FBZ0JrQixFQUFPLEtBQU1TLEdBQU1BLEVBQUUsT0FBUzdCLEVBQVksSUFBSSxFQUVsRyxDQUFDOEIsR0FBdUNMLEdBRzFDeEIsRUFBZXdCLENBQVUsRUFDcEJWLEVBQWtCLENBQUUsTUFBT1UsRUFBVyxLQUFNLE9BQVF2QixDQUFhLENBQUMsRUFDbEVpQixFQUFRLE9BQU8sR0FDWFcsR0FBdUMsQ0FBQ0gsRUFFNUNSLEVBQVEsT0FBTyxHQUNYLENBQUNNLEdBQWNYLEdBQWdCLE9BR25DQyxFQUFrQixDQUFFLE1BQU8sS0FBTSxPQUFRYixDQUFhLENBQUMsRUFDdkR5QixHQUVFUixFQUFRLE9BQU8sRUFNMUIsTUFFTW5CLEdBRUZDLEVBQWUsSUFBSSxFQUVqQmEsR0FBZ0IsT0FFYkMsRUFBa0IsQ0FBRSxNQUFPLEtBQU0sT0FBUWIsQ0FBYSxDQUFDLEVBSXpEeUIsR0FDRVIsRUFBUSxPQUFPLENBRzFCLEVBQUcsQ0FDRFQsRUFDQUksRUFDQU0sRUFDQUssRUFDQXpCLEVBQ0FFLEVBQ0FELEVBQ0FjLEVBQ0FJLEVBQ0FQLENBQ0YsQ0FBQyxFQU1ELElBQU1tQixFQUFvQkMsR0FDdkJDLEdBQW9CLENBQ2ZqQyxJQUFnQmlDLElBQ2xCaEMsRUFBZWdDLENBQVEsRUFFbEJsQixFQUFrQixDQUNyQixNQUFPa0IsRUFBUyxLQUNoQixPQUFRQSxFQUFTLE1BQ25CLENBQUMsRUFDSWQsRUFBUSxPQUFPLEVBRWZGLEVBQWEsSUFBSSxFQUNqQkMsRUFBYSxJQUFJLEVBRTFCLEVBQ0EsQ0FBQ2xCLEVBQWFDLEVBQWdCYyxFQUFtQkUsRUFBY0MsRUFBY0MsQ0FBTyxDQUN0RixFQUdNZSxFQUFxQkYsR0FDeEJHLEdBQXNCLENBQ2pCQSxJQUFjakMsSUFDaEJELEVBQWUsSUFBSSxFQUNuQkUsRUFBZ0JnQyxDQUFTLEVBQ3BCcEIsRUFBa0IsQ0FBRSxNQUFPLEtBQU0sT0FBUW9CLENBQVUsQ0FBQyxFQUdyRHZCLElBQXFCLFVBQ2xCTyxFQUFRLE9BQU8sRUFLakJGLEVBQWEsSUFBSSxFQUNqQkMsRUFBYSxJQUFJLEVBRTFCLEVBQ0EsQ0FDRWhCLEVBQ0FDLEVBQ0FGLEVBQ0FjLEVBQ0FFLEVBQ0FDLEVBQ0FDLEVBQ0FQLENBQ0YsQ0FDRixFQUdBLE9BQUFjLEdBQVUsSUFBTSxDQUVWWixHQUFnQixTQUFXWixHQUFnQixDQUFDUSxHQUN6Q0ssRUFBbUJxQixJQUFVLENBQUUsR0FBR0EsRUFBTSxPQUFRbEMsQ0FBYSxFQUFFLENBRXhFLEVBQUcsQ0FBQ0EsRUFBY1ksR0FBZ0IsT0FBUUMsRUFBbUJMLENBQVMsQ0FBQyxFQUd2RWdCLEdBQVUsSUFBTSxDQUVWWixHQUFnQixRQUFVQSxFQUFlLFNBQVdaLEdBQ3REQyxFQUFnQlcsRUFBZSxNQUFNLENBRXpDLEVBQUcsQ0FBQ0EsR0FBZ0IsT0FBUVosRUFBY0MsQ0FBZSxDQUFDLEVBRTFEdUIsR0FBVSxJQUFNLENBQ1ZsQixJQUFrQixJQUNwQkgsRUFBbUIsQ0FDakIsTUFBTyxrQkFDUCxRQUFTLENBQ1AsU0FBVWdDLEdBQU8sRUFDakIsVUFBVyxJQUFJLEtBQUssRUFBRSxZQUFZLEVBQ2xDLFlBQWFmLENBQ2YsQ0FDRixDQUFDLENBRUwsRUFBRyxDQUFDRixFQUFRZixFQUFvQkcsRUFBZWMsQ0FBZSxDQUFDLEVBRXhELENBQ0wsT0FBQUYsRUFDQSxZQUFBcEIsRUFDQSxhQUFBRSxFQUNBLFVBQUFRLEVBQ0Esa0JBQUFxQixFQUNBLG1CQUFBRyxDQUNGLENBQ0YsQ0RsTVUsY0FBQUksT0FBQSxvQkFwQ0gsU0FBU0MsR0FBS0MsRUFBeUUsQ0FDNUYsR0FBTSxDQUFFLEtBQUFDLEVBQU0sT0FBQUMsQ0FBTyxFQUFJRixFQUNuQixDQUFFLFNBQUFHLEVBQVUsUUFBQUMsRUFBUyxTQUFBQyxDQUFTLEVBQUlILEVBQ2xDLENBQUUsbUJBQUFJLEVBQW9CLGtCQUFBQyxDQUFrQixFQUFJQyxHQUFlLEVBQzNELENBQUUsaUJBQUFDLENBQWlCLEVBQUlDLEdBQWEsRUFDcEMsQ0FBRSxLQUFNQyxDQUFjLEVBQUlDLEdBQWlCLEVBRWpELEdBQUlULElBQWEsTUFBUUMsSUFBWSxNQUFRQyxJQUFhLEtBQU0sQ0FDOUQsSUFBTVEsRUFBUUYsRUFBYyxRQUFRUixDQUFRLEdBQUcsT0FBT0MsQ0FBTyxFQUU3RCxHQUFJUyxJQUFVLE9BQ1osT0FDRWYsR0FBQ2dCLEVBQUEsQ0FDQyxLQUFNLEtBQ04sUUFBUyxVQUNULFFBQVVDLEdBQU0sQ0FDZEEsRUFBRSxnQkFBZ0IsRUFDbEJULEVBQW1CSCxDQUFRLEVBQzNCSSxFQUFrQk0sQ0FBSyxFQUN2QkosRUFBaUIsQ0FDZixLQUFNLGNBQ04sR0FBSU8sR0FBSyxTQUFTLEVBQ2xCLE1BQU8sTUFDUCxRQUFTLENBQ1AsQ0FDRSxLQUFNLGVBQ04sR0FBSUEsR0FBSyxTQUFTLEVBQ2xCLE9BQVFYLEVBQ1IsU0FBVSxJQUNWLE1BQU9KLEVBQUssU0FBUyxFQUNyQixNQUFPLEtBQ1QsQ0FDRixDQUNGLENBQUMsQ0FDSCxFQUVBLFNBQUFILEdBQUNtQixHQUFBLENBQVcsS0FBTSxHQUFJLEVBQ3hCLENBR04sQ0FFQSxPQUFPLElBQ1QsQ0VyREEsT0FBMkIsaUJBQUFDLE9BQXFCLHdCQUVoRCxPQUFTLFFBQUFDLE9BQVksU0FxQ0UsT0FxQ25CLFlBQUFDLEdBckNtQixPQUFBQyxPQUFBLG9CQWxCaEIsU0FBU0MsR0FBV0MsRUFBYyxDQUN2QyxHQUFNLENBQUUsTUFBT0MsRUFBYSxXQUFBQyxFQUFZLGNBQUFDLENBQWMsRUFBSUgsRUFDcERJLEVBQVcsRUFBUUMsR0FBZSxFQUV4QyxTQUFTQyxFQUFnQkMsRUFBa0JDLEVBQXFDLENBQzlFTCxFQUFlTSxHQUFhLENBQzFCLElBQU1DLEVBQVUsQ0FBQyxHQUFHRCxDQUFRLEVBQzVCLE9BQUFDLEVBQVFILENBQVEsRUFBSSxDQUFFLEdBQUdHLEVBQVFILENBQVEsRUFBRyxHQUFHQyxDQUFXLEVBRW5ERSxDQUNULENBQUMsQ0FDSCxDQUVBLElBQU1DLEVBQWEsT0FBTyxPQUFPVixFQUFZLFFBQVEsT0FBTyxFQUFFLElBQUtXLEdBQzdEQSxFQUFPLEtBQU8sY0FDVCxDQUNMLEdBQUdBLEVBQ0gsTUFBTyxDQUNMLE1BQU8sSUFBTWQsR0FBQ2UsR0FBQSxFQUFVLENBQzFCLENBQ0YsRUFHSyxDQUNMLEdBQUdELEVBQ0gsS0FBSyxDQUFFLEtBQUFFLENBQUssRUFBRyxDQUNiLE9BQVFkLEdBQ05GLEdBQUNpQixHQUFBLENBQ0MsY0FBZUMsR0FBUSxDQUFFLEtBQUFGLEVBQU0sT0FBUUYsRUFBTyxJQUFlLENBQUMsRUFDOUQsY0FBZSxLQUNmLGVBQWdCSyxHQUFTLENBQ3ZCLEtBQUFILEVBQ0EsT0FBUUYsRUFBTyxLQUNmLFNBQVNNLEVBQU8sQ0FDZFosRUFBZ0JOLEVBQU0sU0FBVSxDQUFFLENBQUNZLEVBQU8sRUFBRyxFQUFHTSxDQUFNLENBQUMsQ0FDekQsRUFDQSxTQUFBZCxDQUNGLENBQUMsRUFDSCxDQUVKLENBQ0YsQ0FDRCxFQUVLZSxFQUFRQyxHQUFjLENBQzFCLEdBQUduQixFQUFZLFFBQ2YsUUFBU1UsRUFDVCxjQUFlLEdBQ2YsbUJBQW9CLE9BQ3BCLGdCQUFpQixPQUNqQixLQUFNVCxFQUNOLE1BQU9tQixHQUFLcEIsRUFBWSxRQUFRLE1BQU8sQ0FBQyxhQUFjLFNBQVMsQ0FBQyxDQUNsRSxDQUFDLEVBRUQsT0FDRUgsR0FBQUQsR0FBQSxDQUNHLFNBQUFzQixFQUFNLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQ0csRUFBS0MsSUFDbEN6QixHQUFDMEIsR0FBQSxDQUNFLFNBQUFGLEVBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDUixFQUFNVyxJQUFNLENBQ3RDLEdBQUksT0FBT1gsRUFBSyxPQUFPLFVBQVUsTUFBUyxXQUFZLENBRXBELElBQU1ZLEVBQU9aLEVBQUssT0FBTyxVQUFVLEtBQUtBLEVBQUssV0FBVyxDQUFDLEVBQ3pELE9BQU9oQixHQUFDNEIsRUFBQSxDQUFjLEdBQUdDLEdBQXVCYixFQUFLLE9BQVEsTUFBTSxFQUFHLFNBQVVTLEdBQTlERSxDQUFpRSxDQUNyRixDQUVBLE9BQU8sSUFDVCxDQUFDLEdBVFlGLENBVWYsQ0FDRCxFQUNILENBRUosQ0M1RVUsT0FFd0IsT0FBQUssR0FGeEIsUUFBQUMsT0FBQSxvQkFOSCxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsYUFBQUMsRUFBYyxpQkFBQUMsRUFBa0IsaUJBQUFDLEVBQWtCLGlCQUFBQyxDQUFpQixFQUFJQyxFQUFVLEVBQ3pGLE9BQ0VSLEdBQUMsT0FBSSxVQUFVLHlHQUNiLFNBQUFBLEdBQUMsT0FBSSxVQUFVLGdFQUNiLFNBQUFDLEdBQUMsT0FBSSxVQUFVLDBEQUNiLFVBQUFBLEdBQUMsT0FBSSxVQUFVLG1DQUNiLFVBQUFELEdBQUNTLEVBQUEsQ0FBTyxRQUFRLFVBQVUsS0FBSyxLQUFLLFFBQVNILEVBQzFDLFNBQUFDLEVBQW1CUCxHQUFDVSxHQUFBLEVBQWUsRUFBS1YsR0FBQ1csR0FBQSxFQUFjLEVBQzFELEVBQ0NSLEVBQU0sVUFDVCxFQUVBRixHQUFDLE9BQUksVUFBVSxtQ0FDWixVQUFBRSxFQUFNLFdBQ1BILEdBQUNTLEVBQUEsQ0FBTyxRQUFRLFVBQVUsS0FBSyxPQUFPLFFBQVNKLEVBQzVDLFNBQUFELEVBQWVKLEdBQUNZLEdBQUEsRUFBUyxFQUFLWixHQUFDYSxHQUFBLEVBQVMsRUFDM0MsR0FDRixHQUNGLEVBQ0YsRUFDRixDQUVKLENwSDhFYyxPQWdHSixZQUFBQyxHQWhHSSxPQUFBQyxFQXNFQSxRQUFBQyxPQXRFQSxvQkF2RVAsU0FBU0MsR0FBZ0JDLEVBQThCLENBQzVELElBQU1DLEVBQWEsRUFBUUMsR0FBYyxFQUNuQyxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBQ3JDLENBQUUsYUFBQUMsRUFBYyxnQkFBQUMsQ0FBZ0IsRUFBSUMsR0FBVyxFQUMvQyxDQUFFLGdCQUFBQyxFQUFpQixtQkFBQUMsQ0FBbUIsRUFBSUMsR0FBYyxFQUN4RCxDQUFDQyxFQUFZQyxDQUFhLEVBQUlDLEdBQW9DLENBQUMsQ0FBQyxFQUNwRSxDQUFFLGNBQUFDLEVBQWUsaUJBQUFDLEVBQWtCLGNBQUFDLEVBQWUsaUJBQUFDLEVBQWtCLG9CQUFBQyxDQUFvQixFQUFJQyxHQUFhLEVBRXpHLENBQUUsS0FBQUMsRUFBTSxXQUFBQyxFQUFZLFFBQUFDLENBQVEsRUFBSUMsR0FBb0IsQ0FDeEQsR0FBR2YsRUFDSCxVQUFXSCxFQUNYLE9BQVFTLENBQ1YsQ0FBQyxFQUNLLENBQUUsZ0JBQUFVLEVBQWlCLFlBQUFDLEVBQWEsa0JBQUFDLEVBQW1CLHFCQUFBQyxDQUFxQixFQUFJQyxHQUFhUixDQUFJLEVBRTdGUyxFQUFXLENBQUMsT0FBTyxPQUFPM0IsR0FBYSxTQUFXLENBQUMsQ0FBQyxFQUFFLEtBQU00QixHQUFXQSxFQUFPLGNBQWMsRUFDNUZDLEVBQWNDLEdBQWUsRUFDN0JDLEVBQVNDLEdBQXFCLEVBQzlCQyxFQUFTQyxHQUFxQixFQUtwQyxHQUZBQyxHQUFVLElBQU16QixFQUFjLENBQUMsQ0FBQyxFQUFHLENBQUNWLENBQVcsQ0FBQyxFQUU1QyxDQUFDQSxFQUNILE9BQU8sS0FHVCxTQUFTb0MsR0FBaUIsQ0FDeEJMLEVBQU8sT0FBT3RCLEVBQVksQ0FDeEIsUUFBQVIsRUFDQSxXQUFZLENBQ1ZvQyxHQUFNLFFBQVEsNEJBQTRCLEVBQzFDM0IsRUFBYyxDQUFDLENBQUMsQ0FDbEIsQ0FDRixDQUFDLENBQ0gsQ0FFQSxTQUFTNEIsSUFBZSxDQUV0QjVCLEVBQWU2QixHQUFRLENBQUMsR0FBR0EsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUNyQyxDQUVBLFNBQVNDLEdBQWlCLENBQ3hCOUIsRUFBYyxDQUFDLENBQUMsQ0FDbEIsQ0FFQSxTQUFTK0IsR0FBc0JDLEVBQWdCZCxFQUFnQmUsR0FBb0MsQ0FDakdWLEVBQU8sT0FBTyxDQUNaLFFBQVMsQ0FBRSxRQUFTLENBQUUsQ0FBQ0wsRUFBTyxJQUFJLEVBQUdjLENBQU0sRUFBRyxJQUFBQyxHQUFLLE1BQU8zQyxDQUFhLEVBQ3ZFLFFBQVMsQ0FBQyxDQUNaLENBQUMsQ0FDSCxDQUVBLFNBQVM0QyxHQUFtQkMsRUFBZSxDQUNyQ0EsSUFBUyxHQUNYOUIsRUFBaUJILENBQWEsRUFFOUJDLEVBQWlCQyxDQUFhLENBRWxDLENBR0EsSUFBTWdDLEdBQXFCLE9BQU8sT0FBTzlDLEdBQWEsU0FBVyxDQUFDLENBQUMsRUFBRSxJQUFLNEIsSUFDakUsQ0FDTCxHQUFJQSxFQUFPLEtBQ1gsWUFBYUEsRUFBTyxLQUNwQixLQUFNQSxFQUNOLE9BQU8sQ0FBRSxNQUFBbUIsRUFBTyxPQUFBQyxFQUFPLEVBQUcsQ0FDeEIsT0FBUUMsSUFFSnZELEVBQUN3RCxHQUFBLENBQTRCLE1BQU9ILEVBQU8sT0FBUUMsR0FBUyxHQUFHQyxHQUM3RCxTQUFBdkQsRUFBQ3lELEdBQUEsQ0FBZSxPQUFRSCxHQUFRLE9BQVFwQixFQUFRLEVBQ2xELENBR04sRUFDQSxLQUFLLENBQUUsS0FBQXdCLENBQUssRUFBRyxDQUNiLE9BQVFILElBQ052RCxFQUFDMkQsR0FBQSxDQUNDLGVBQWdCSixHQUNoQixjQUFlSyxHQUFRLENBQUUsS0FBQUYsRUFBTSxPQUFBeEIsQ0FBTyxDQUFDLEVBQ3ZDLGNBQWUyQixHQUFLLENBQUUsS0FBQUgsRUFBTSxPQUFBeEIsQ0FBTyxDQUFDLEVBQ3BDLGVBQWdCNEIsR0FBUyxDQUN2QixLQUFBSixFQUNBLE9BQUF4QixFQUNBLFNBQUFELEVBQ0EsU0FBU2UsR0FBTyxDQUNkLE9BQU9ELEdBQXNCQyxHQUFPZCxFQUFRd0IsRUFBSyxJQUFJLFFBQVEsQ0FDL0QsQ0FDRixDQUFDLEVBQ0gsQ0FFSixDQUNGLEVBQ0QsRUFHS0ssR0FBb0IsQ0FDeEIsQ0FDRSxHQUFJLGNBQ0osWUFBYSxjQUNiLGNBQWUsR0FDZixlQUFnQixHQUNoQixjQUFlLEdBQ2YsS0FBTSxHQUNOLFFBQVMsR0FDVCxPQUFPLENBQUUsTUFBQVYsQ0FBTSxFQUFHLENBQ2hCLE9BQVFFLEdBRUp2RCxFQUFDZ0UsR0FBQSxDQUFXLEdBQUdULEVBQ2IsU0FBQXZELEVBQUNpRSxHQUFBLENBQWlCLE1BQU9aLEVBQU8sU0FBVXBCLEVBQVUsRUFDdEQsQ0FHTixFQUNBLEtBQUssQ0FBRSxJQUFBZ0IsQ0FBSSxFQUFHLENBQ1osT0FBUU0sR0FFSnZELEVBQUNrRSxHQUFBLENBQU0sR0FBR1gsRUFDUixTQUFBdkQsRUFBQ21FLEdBQUEsQ0FBYyxJQUFLbEIsRUFBSyxTQUFVaEIsRUFBVSxFQUMvQyxDQUdOLENBQ0YsQ0FDRixFQUVNbUMsR0FBYSxDQUFDLEdBQUdoQixHQUFvQixHQUFHVyxFQUFpQixFQUFFLEtBQUtNLEVBQW9CLEVBRTFGLE9BQ0VwRSxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQ3FFLEdBQUEsQ0FDQyxXQUNFdEUsRUFBQ3VFLEVBQUEsQ0FBTyxRQUFRLFVBQVUsS0FBSyxPQUFPLFFBQVMsSUFBTSxLQUFLN0MsRUFBUSxFQUFHLFNBQVVELEVBQzdFLFNBQUF6QixFQUFDd0UsR0FBQSxDQUFVLFVBQVdDLEVBQUcsZ0JBQWlCaEQsR0FBYyxpQkFBaUIsRUFBRyxFQUM5RSxFQUdGLFVBQUF4QixHQUFDeUUsR0FBQSxDQUFRLGFBQWN4QixHQUNyQixVQUFBbEQsRUFBQzJFLEdBQUEsQ0FBZSxRQUFPLEdBQ3JCLFNBQUEzRSxFQUFDdUUsRUFBQSxDQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUssVUFBV0UsRUFBR25ELEVBQXNCLEdBQUssbUJBQW1CLEVBQzlGLFNBQUFyQixHQUFDLFFBQUssVUFBVSxtQ0FDZCxVQUFBRCxFQUFDNEUsR0FBQSxFQUFXLEVBQ1h0RCxFQUFzQixHQUNyQnRCLEVBQUM2RSxHQUFBLENBQ0MsU0FBQTdFLEVBQUM4RSxHQUFBLENBQWMsV0FBWSxDQUFFLE9BQVEsQ0FBRSxTQUFVLEdBQUssQ0FBRSxFQUFJLFNBQUF4RCxFQUFvQixFQUNsRixHQUVKLEVBQ0YsRUFDRixFQUNBdEIsRUFBQytFLEdBQUEsQ0FBZSxNQUFNLFFBQVEsS0FBSyxTQUFTLFVBQVUsK0NBQ3BELFNBQUEvRSxFQUFDZ0YsR0FBQSxDQUNDLE9BQVE1RCxFQUNSLFVBQVdDLEVBQ1gsaUJBQW1CNEQsR0FBVyxDQUM1QjVELEVBQWlCNEQsQ0FBTSxFQUN2QjlELEVBQWlCOEQsQ0FBTSxDQUN6QixFQUNBLE1BQU8zRSxFQUNULEVBQ0YsR0FDRixFQUNBTixFQUFDdUUsRUFBQSxDQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUssUUFBUzNCLEdBQWMsU0FBVVQsRUFBYyxFQUFHLHNCQUV0RixFQUNDcEIsRUFBVyxPQUFTLEdBQ25CZCxHQUFBRixHQUFBLENBQ0UsVUFBQUMsRUFBQ3VFLEVBQUEsQ0FBTyxRQUFRLFlBQVksS0FBSyxLQUFLLFFBQVM3QixFQUFnQixnQkFFL0QsRUFFQTFDLEVBQUN1RSxFQUFBLENBQU8sUUFBUSxRQUFRLEtBQUssS0FBSyxRQUFTekIsRUFBZ0Isa0JBRTNELEdBQ0YsRUFFRGpCLEdBQ0M3QixFQUFBRCxHQUFBLENBQ0UsU0FBQUMsRUFBQ3VFLEVBQUEsQ0FBTyxRQUFRLFlBQVksS0FBSyxLQUFLLFFBQVMzQyxFQUFpQixrQkFFaEUsRUFDRixHQUVKLEVBQ0E1QixFQUFDa0YsR0FBQSxDQUNDLFdBQVlkLEdBQ1osY0FBZ0JmLEdBQVVyRCxFQUFDbUYsR0FBQSxDQUFpQixNQUFBOUIsRUFBTyxXQUFBdEMsRUFBWSxjQUFBQyxFQUFpQixFQUNoRixVQUFXUyxFQUNYLGFBQWNyQixFQUNkLG1CQUFvQlMsRUFDcEIscUJBQXNCa0IsRUFDdEIsZ0JBQWlCckIsRUFDakIsVUFBVzBFLEdBQWE1RCxHQUFNLGtCQUFvQixJQUFVWixFQUFnQixRQUFRLEVBQ3BGLGdCQUFpQkEsRUFDakIsS0FBTVksR0FBTSxNQUFRLENBQUMsRUFDckIsa0JBQW1CTSxFQUNuQixhQUFjckIsRUFDaEIsR0FDRixDQUVKLENBRUEsU0FBUzJFLEdBQWFDLEVBQTBEQyxFQUFzQyxDQUNwSCxHQUFJRCxJQUFhLElBQ2YsT0FHRixJQUFNRSxFQUFZLFFBQVEsT0FBT0YsQ0FBUSxFQUFJLE9BQU9DLENBQVEsRUFBSSxPQUFPLENBQUMsR0FBSyxPQUFPQSxDQUFRLENBQUMsRUFFN0YsT0FBTyxPQUFPLGNBQWNDLENBQVMsRUFBSUEsRUFBWSxPQUFPLGdCQUM5RCxDQUVBLFNBQVNsQixHQUFxQm1CLEVBQXVDQyxFQUF1QyxDQUMxRyxJQUFNQyxFQUFRRixFQUFFLEtBQ1ZHLEVBQVFGLEVBQUUsS0FFaEIsT0FBSUQsRUFBRSxLQUFPLGVBQWlCQyxFQUFFLEtBQU8sY0FDOUIsRUFHTEMsSUFBVSxRQUFhQyxJQUFVLE9BQzVCLEVBR0xELEVBQU0sZ0JBQWtCLENBQUNDLEVBQU0sZUFDMUIsR0FFTCxDQUFDRCxFQUFNLGdCQUFrQkMsRUFBTSxlQUMxQixFQUdGRCxFQUFNLEtBQUssY0FBY0MsRUFBTSxJQUFJLENBQzVDLENxSGhSUyxjQUFBQyxPQUFBLG9CQURGLFNBQVNDLElBQVksQ0FDMUIsT0FBT0QsR0FBQyxPQUFJLHFCQUFTLENBQ3ZCLENDRkEsT0FBUyxRQUFBRSxPQUFZLHVCQWtDakIsT0EwRjBFLFlBQUFDLEdBekZ4RSxPQUFBQyxFQURGLFFBQUFDLE9BQUEsb0JBcEJHLFNBQVNDLEdBQVcsQ0FBRSxVQUFBQyxDQUFVLEVBQW9CLENBRXpELEdBQU0sQ0FBRSxPQUFBQyxFQUFRLFlBQUFDLEVBQWEsVUFBQUMsRUFBVyxrQkFBQUMsQ0FBa0IsRUFBSUMsR0FBZSxFQUN2RSxDQUFDQyxFQUFNQyxDQUFPLEVBQUlDLEVBQWMsTUFBTSxFQUV0QyxDQUFDLENBQUVDLENBQVcsRUFBSUQsRUFBNkIsUUFBUyxDQUM1RCxNQUFRRSxHQUFNQSxFQUNkLFVBQVlBLEdBQU1BLEdBQUssRUFDekIsQ0FBQyxFQUNLLENBQUMsQ0FBRUMsQ0FBWSxFQUFJSCxFQUE2QixTQUFVLENBQzlELE1BQVFFLEdBQU1BLEVBQ2QsVUFBWUEsR0FBTUEsR0FBSyxFQUN6QixDQUFDLEVBRUtFLEVBQWlCQyxFQUNyQiwrR0FDQWIsQ0FDRixFQUVBLE9BQ0VGLEdBQUMsT0FBSSxVQUFXYyxFQUNkLFVBQUFmLEVBQUNFLEdBQVcsZUFBWCxFQUEwQixFQUUzQkYsRUFBQ0UsR0FBVyxNQUFYLENBQWlCLE1BQU0sU0FDdEIsU0FBQUYsRUFBQ0UsR0FBVyxLQUFYLENBQ0MsUUFBTyxHQUNQLFNBQVVPLElBQVMsU0FDbkIsUUFBUyxJQUFNLENBQ1JHLEVBQVksSUFBSSxFQUNoQkUsRUFBYSxJQUFJLEVBQ2pCSixFQUFRLFFBQVEsQ0FDdkIsRUFDQSxVQUFXLCtOQUVYLFNBQUFWLEVBQUMsS0FBRSxLQUFNLGVBQWdCLGdDQUFvQixFQUMvQyxFQUNGLEVBRUFBLEVBQUNFLEdBQVcsTUFBWCxDQUFpQixNQUFNLFNBQ3JCLFNBQUFFLEVBQU8sT0FBUyxFQUNmQSxFQUFPLElBQUthLEdBQ1ZqQixFQUFDRSxHQUFXLEtBQVgsQ0FFQyxRQUFPLEdBQ1AsU0FBVUcsSUFBZ0JZLEdBQVNSLElBQVMsUUFDNUMsUUFBUyxJQUFNLENBQ2JGLEVBQWtCVSxDQUFLLENBQ3pCLEVBQ0EsVUFBVywrTkFFWCxTQUFBakIsRUFBQyxLQUFFLEtBQU0sVUFBVWlCLEVBQU0sSUFBSSxXQUFXQSxFQUFNLE1BQU0sY0FBZ0IsU0FBQUEsRUFBTSxLQUFLLEdBUjFFLEdBQUdBLEVBQU0sTUFBTSxJQUFJQSxFQUFNLElBQUksRUFTcEMsQ0FDRCxFQUNDWCxFQUNGLE1BQU0sQ0FBQyxFQUNKLEtBQUssSUFBSSxFQUNULElBQUksQ0FBQ1ksRUFBR0MsSUFDUG5CLEVBQUNFLEdBQVcsS0FBWCxDQUE0QixtQkFBb0IsR0FDL0MsU0FBQUYsRUFBQ29CLEdBQUEsQ0FBUyxVQUFVLG1CQUFtQixHQURuQkQsQ0FFdEIsQ0FDRCxFQUVIbkIsRUFBQ0UsR0FBVyxLQUFYLENBQWdCLDJCQUFlLEVBRXBDLEdBQ0YsQ0FFSixDQUVBLElBQU1tQixHQUFRLENBQUMsQ0FBRSxVQUFBbEIsRUFBVyxNQUFBbUIsRUFBTyxTQUFBQyxFQUFVLEdBQUdDLENBQU0sSUFFbER2QixHQUFDLE9BQUksVUFBV0UsRUFBWSxHQUFHcUIsRUFDN0IsVUFBQXZCLEdBQUMsT0FBSSxVQUFVLG9IQUNiLFVBQUFELEVBQUN5QixHQUFBLENBQU8sS0FBTSxHQUFJLFVBQVUsOEJBQThCLEVBQzFEekIsRUFBQyxNQUFHLFVBQVUsNEJBQTZCLFNBQUFzQixFQUFNLEdBQ25ELEVBQ0F0QixFQUFDLE9BQUksYUFBWXNCLEVBQU8sVUFBVSwrQ0FDL0IsU0FBQUMsRUFDSCxHQUNGLEVBSUVHLEdBQU8sQ0FBQyxDQUNaLFVBQUF2QixFQUNBLFFBQUF3QixFQUFVLEdBQ1YsU0FBQUMsRUFDQSxLQUFBQyxFQUNBLFNBQUFOLEVBQ0EsbUJBQUFPLEVBQXFCLEdBQ3JCLEdBQUdOLENBQ0wsSUFTSXhCLEVBSFcyQixFQUFVSSxHQUFPLFNBRzNCLENBQ0MsZUFBYSxjQUNiLFlBQVdGLEVBQ1gsY0FBYUQsRUFDYixVQUFXWixFQUNULCtJQUNBYixDQUNGLEVBQ0MsR0FBR3FCLEVBRUgsU0FBQU0sRUFBcUI5QixFQUFDLFFBQUssVUFBVSxjQUFlLFNBQUF1QixFQUFTLEVBQVV2QixFQUFBRCxHQUFBLENBQUUsb0JBQVEsRUFDcEYsRUFJRWlDLEdBQWlCLElBQU0sQ0FFM0IsR0FBTSxDQUFFLEtBQU1DLEVBQWUsVUFBV0MsQ0FBdUIsRUFBSUMsR0FBaUIsRUFDOUUsQ0FBRSxhQUFBQyxFQUFjLG1CQUFBQyxDQUFtQixFQUFJN0IsR0FBZSxFQUd0RDhCLEVBQWMsT0FBTyxLQUFLTCxFQUFjLFNBQVcsQ0FBQyxDQUFDLEVBRTNELE9BQ0VqQyxFQUFDLE9BQUksVUFBVSxvSEFDYixTQUFBQyxHQUFDc0MsR0FBQSxDQUFPLE1BQU9ILEVBQWMsY0FBZUMsRUFDMUMsVUFBQXJDLEVBQUN3QyxHQUFBLENBQWMsVUFBVSxhQUFhLE1BQU0sU0FDMUMsU0FBQXhDLEVBQUN5QyxHQUFBLENBQVksWUFBWSxnQkFBZ0IsRUFDM0MsRUFDQXpDLEVBQUMwQyxHQUFBLENBQ0UsU0FBQVIsRUFDQ2xDLEVBQUMyQyxFQUFBLENBQVcsTUFBTSxVQUFVLDhCQUFrQixFQUM1Q0wsRUFBWSxPQUFTLEVBQ3ZCQSxFQUFZLElBQUtNLEdBQ2Y1QyxFQUFDMkMsRUFBQSxDQUF3QixNQUFPQyxFQUFRLFVBQVUsYUFDL0MsU0FBQUEsR0FEY0EsQ0FFakIsQ0FDRCxFQUVENUMsRUFBQzJDLEVBQUEsQ0FBVyxNQUFNLGFBQWEsNEJBQWdCLEVBRW5ELEdBQ0YsRUFDRixDQUVKLEVBRUF6QyxHQUFXLE1BQVFtQixHQUNuQm5CLEdBQVcsS0FBT3dCLEdBQ2xCeEIsR0FBVyxlQUFpQjhCLEdDbks1QixPQUFTLFdBQUFhLE9BQWUsUUE2QnhCLElBQU1DLEdBQXdCLENBQzVCLEtBQU0sa0JBQ04sT0FBUSxDQUFDLENBQUUsS0FBTSxVQUFXLEtBQU0sT0FBUSxXQUFZLEVBQUssQ0FBQyxDQUM5RCxFQUVPLFNBQVNDLElBQWtELENBQ2hFLEdBQU0sQ0FBRSxLQUFNQyxFQUFlLFVBQUFDLENBQVUsRUFBSUMsR0FBaUIsRUFDdEQsQ0FBRSxhQUFBQyxDQUFhLEVBQUlDLEVBQVUsRUFFbkMsT0FBT0MsR0FBUSxJQUFNLENBQ25CLEdBQUlKLEdBQWEsQ0FBQ0QsR0FBaUIsQ0FBQ0csRUFDbEMsTUFBTyxDQUFFLE9BQVEsQ0FBQ0wsRUFBYyxFQUFHLGNBQWUsQ0FBQyxDQUFFLEVBR3ZELElBQU1RLEVBQW9CTixFQUFjLFFBQVFHLENBQVksRUFFNUQsR0FBSSxDQUFDRyxHQUFxQixPQUFPLEtBQUtBLEVBQWtCLE1BQU0sRUFBRSxTQUFXLEVBQ3pFLE1BQU8sQ0FBRSxPQUFRLENBQUNSLEVBQWMsRUFBRyxjQUFlLENBQUMsQ0FBRSxFQUd2RCxJQUFNUyxFQUFrQixDQUFDLEVBQ25CQyxFQUFrQyxDQUFDLEVBRXpDLE9BQU8sT0FBT0YsRUFBa0IsTUFBTSxFQUFFLFFBQVNHLEdBQVUsQ0FDekQsSUFBTUMsRUFBa0IsQ0FBQyxFQUV6QixPQUFPLE9BQU9ELEVBQU0sT0FBTyxFQUFFLFFBQVNFLEdBQVcsQ0FDL0NELEVBQU8sS0FBSyxDQUNWLEtBQU1DLEVBQU8sS0FDYixLQUFNQSxFQUFPLFNBQVMsS0FDdEIsVUFBV0EsRUFBTyxlQUNsQixXQUFZLENBQUNBLEVBQU8sUUFDdEIsQ0FBQyxDQUNILENBQUMsRUFFRCxJQUFNQyxFQUFxQixDQUN6QixLQUFNSCxFQUFNLEtBQ1osT0FBQUMsQ0FDRixFQUVBSCxFQUFPLEtBQUtLLENBQVcsRUFDdkJKLEVBQVNDLEVBQU0sSUFBSSxFQUFJRyxDQUN6QixDQUFDLEVBRUQsSUFBTUMsRUFBZ0MsQ0FBQyxFQUV2QyxPQUFBTixFQUFPLFFBQVNPLEdBQWdCLENBQzlCLElBQU1DLEVBQW9CVCxFQUFrQixPQUFPUSxFQUFZLElBQUksRUFDL0RDLEdBQ0YsT0FBTyxPQUFPQSxFQUFrQixPQUFPLEVBQUUsUUFBU0osR0FBVyxDQUN2REEsRUFBTyxTQUFXQSxFQUFPLFVBQzNCRSxFQUFjLEtBQUssQ0FDakIsS0FBTUYsRUFBTyxRQUNiLEdBQUlHLEVBQVksS0FDaEIsS0FBTSxLQUNSLENBQUMsQ0FFTCxDQUFDLENBRUwsQ0FBQyxFQUVNLENBQUUsT0FBQVAsRUFBUSxjQUFBTSxDQUFjLENBQ2pDLEVBQUcsQ0FBQ2IsRUFBZUMsRUFBV0UsQ0FBWSxDQUFDLENBQzdDLENDNUZBLE1BQU8sMkJBR1AsT0FBa0IsUUFBQWEsR0FBTSxlQUFBQyxHQUFhLGFBQUFDLEdBQVcsV0FBQUMsT0FBZSxRQUMvRCxPQUFPQyxJQUNMLFdBQUFDLEdBQ0EsY0FBQUMsR0FFQSxzQkFBQUMsR0FDQSxZQUFBQyxHQUVBLFVBQUFDLEdBQ0EsV0FBQUMsR0FJQSxZQUFBQyxHQUNBLGlCQUFBQyxHQUNBLGlCQUFBQyxPQUNLLFlBa0NNLGNBQUFDLEVBb0JQLFFBQUFDLE9BcEJPLG9CQVBiLElBQU1DLEdBQTBDQyxHQUFLLENBQUMsQ0FBRSxLQUFBQyxDQUFLLElBQU0sQ0FDakUsR0FBTSxDQUFFLGFBQUFDLENBQWEsRUFBSUMsRUFBVSxFQUM3QkMsRUFBaUJILEVBQUssUUFBVSxrQkFFaENJLEVBQVUsQ0FBQ0MsRUFBb0JDLEVBQW1CQyxJQUVsREosR0FBa0JHLElBQWMsT0FDM0JWLEVBQUNZLEdBQUEsQ0FBWSxLQUFNLEdBQUksRUFJNUJELEVBQ0tYLEVBQUNhLEdBQUEsQ0FBSSxLQUFNLEdBQUksRUFJakJiLEVBQUNjLEdBQUEsQ0FBSyxLQUFNLEdBQUksRUFHekIsT0FDRWIsR0FBQyxPQUNDLFVBQVdjLEVBQ1Qsb0ZBQ0FSLEdBQWtCLHNCQUNwQixFQUVBLFVBQUFQLEVBQUNnQixHQUFBLENBQU8sS0FBSyxTQUFTLFNBQVVDLEdBQVMsSUFBSyxNQUFPLENBQUUsUUFBUyxDQUFFLEVBQUcsRUFDckVoQixHQUFDLE9BQ0MsVUFBV2MsRUFDVCx5RUFDQVIsR0FBa0IsbUZBQ3BCLEVBRUEsVUFBQVAsRUFBQyxPQUFJLFVBQVUsZUFBZ0IsU0FBQUksRUFBSyxNQUFNLEVBQ3pDLENBQUNHLEdBQ0FQLEVBQUMsS0FDQyxLQUFNLHNCQUFzQixtQkFBbUJJLEVBQUssS0FBSyxDQUFDLFdBQVcsbUJBQW1CQyxDQUFZLENBQUMsR0FFckcsSUFBSSxzQkFDSixVQUFVLGlEQUNWLE1BQU8sY0FBY0QsRUFBSyxLQUFLLEdBQy9CLFFBQVVjLEdBQU1BLEVBQUUsZ0JBQWdCLEVBRWxDLFNBQUFsQixFQUFDbUIsR0FBQSxDQUFpQixVQUFVLGdCQUFnQixFQUM5QyxHQUVKLEVBQ0FuQixFQUFDLE9BQUksVUFBVSxrQkFDWixTQUFBTyxFQUNDTixHQUFDLE9BQUksVUFBVSwrRUFDYixVQUFBRCxFQUFDLFFBQUssVUFBVSxxQkFDZCxTQUFBQSxFQUFDWSxHQUFBLENBQVksVUFBVSxnQkFBZ0IsRUFDekMsRUFDQVosRUFBQyxRQUFLLFVBQVUsWUFBWSwrRUFBbUUsR0FDakcsRUFFQUksRUFBSyxPQUFPLElBQUksQ0FBQ2dCLEVBQU9DLElBQ3RCcEIsR0FBQyxPQUVDLFVBQVdjLEVBQ1Qsc0RBQ0FLLEVBQU0sV0FBYSxpQkFDckIsRUFFQSxVQUFBcEIsRUFBQyxRQUFLLFVBQVUsMkJBQTRCLFNBQUFRLEVBQVFZLEVBQU0sS0FBTUEsRUFBTSxLQUFNQSxFQUFNLFNBQVMsRUFBRSxFQUM3RnBCLEVBQUMsUUFBSyxVQUFVLFlBQWEsU0FBQW9CLEVBQU0sS0FBSyxFQUN4Q3BCLEVBQUMsUUFBSyxVQUFVLHNDQUF1QyxTQUFBb0IsRUFBTSxLQUFLLElBUjdEQyxDQVNQLENBQ0QsRUFFTCxFQUNBckIsRUFBQ2dCLEdBQUEsQ0FBTyxLQUFLLFNBQVMsU0FBVUMsR0FBUyxPQUFRLE1BQU8sQ0FBRSxRQUFTLENBQUUsRUFBRyxHQUMxRSxDQUVKLENBQUMsRUFFRGYsR0FBVSxZQUFjLFlBRXhCLElBQU1vQixHQUFZLENBQ2hCLFVBQVdwQixFQUNiLEVBTUEsU0FBU3FCLEdBQWlCQyxFQUFpQkMsRUFBc0UsQ0FFL0csR0FBSUQsRUFBTyxRQUFVLEVBQ25CLE9BQU9BLEVBQU8sSUFBSSxDQUFDRSxFQUFPTCxLQUFXLENBQ25DLEdBQUlLLEVBQU0sS0FDVixLQUFNLFlBQ04sS0FBTSxDQUNKLE1BQU9BLEVBQU0sS0FDYixPQUFRQSxFQUFNLE1BQ2hCLEVBQ0EsU0FBVSxDQUFFLEVBQUcsSUFBTUwsRUFBTyxFQUFHLEVBQUcsQ0FDcEMsRUFBRSxFQUlKLElBQU1NLEVBQWEsSUFDYkMsRUFBYSxJQUNiQyxFQUFVLEtBQUssS0FBSyxLQUFLLEtBQUtMLEVBQU8sTUFBTSxDQUFDLEVBRWxELE9BQU9BLEVBQU8sSUFBSSxDQUFDRSxFQUFPTCxJQUFVLENBQ2xDLElBQU1TLEVBQVNULEVBQVFRLEVBQ2pCRSxFQUFNLEtBQUssTUFBTVYsRUFBUVEsQ0FBTyxFQUV0QyxNQUFPLENBQ0wsR0FBSUgsRUFBTSxLQUNWLEtBQU0sWUFDTixLQUFNLENBQ0osTUFBT0EsRUFBTSxLQUNiLE9BQVFBLEVBQU0sTUFDaEIsRUFDQSxTQUFVLENBQ1IsRUFBR0ksRUFBU0gsRUFDWixFQUFHSSxFQUFNSCxDQUNYLENBQ0YsQ0FDRixDQUFDLENBQ0gsQ0FFTyxTQUFTSSxHQUFvQixDQUFFLE9BQUFSLEVBQVEsY0FBQVMsQ0FBYyxFQUE2QixDQUV2RixJQUFNQyxFQUFZQyxHQUFRLElBQU0sSUFBSSxJQUFJWCxFQUFPLElBQUtFLEdBQVVBLEVBQU0sSUFBSSxDQUFDLEVBQUcsQ0FBQ0YsQ0FBTSxDQUFDLEVBRzlFWSxFQUFxQkQsR0FDekIsSUFBTUYsRUFBYyxPQUFRSSxHQUFRSCxFQUFVLElBQUlHLEVBQUksSUFBSSxHQUFLSCxFQUFVLElBQUlHLEVBQUksRUFBRSxDQUFDLEVBQ3BGLENBQUNKLEVBQWVDLENBQVMsQ0FDM0IsRUFHTUksRUFBZUgsR0FBUSxJQUFNWixHQUFpQkMsRUFBUVksQ0FBa0IsRUFBRyxDQUFDWixFQUFRWSxDQUFrQixDQUFDLEVBR3ZHRyxFQUF1QkosR0FDM0IsSUFDRUMsRUFBbUIsSUFBSSxDQUFDQyxFQUFLaEIsS0FBVyxDQUN0QyxHQUFJLElBQUlBLENBQUssR0FDYixPQUFRZ0IsRUFBSSxLQUNaLE9BQVFBLEVBQUksR0FDWixTQUFVLEdBQ1YsTUFBT0EsRUFBSSxLQUNYLEtBQU0sYUFDTixNQUFPLENBQ0wsT0FBUSxzQkFDUixZQUFhLEVBQ2IsZ0JBQWlCLEtBQ25CLEVBQ0EsV0FBWSxDQUNWLEtBQU0sc0JBQ04sU0FBVSxFQUNaLENBQ0YsRUFBRSxFQUNKLENBQUNELENBQWtCLENBQ3JCLEVBRU0sQ0FBQ0ksRUFBT0MsRUFBVUMsQ0FBYSxFQUFJQyxHQUFjTCxDQUFZLEVBQzdELENBQUNNLEVBQU9DLEVBQVVDLENBQWEsRUFBSUMsR0FBY1IsQ0FBWSxFQUduRVMsR0FBVSxJQUFNLENBQ2RQLEVBQVNsQixHQUFpQkMsRUFBUVksQ0FBa0IsQ0FBQyxDQUN2RCxFQUFHLENBQUNaLEVBQVFZLEVBQW9CSyxDQUFRLENBQUMsRUFHekNPLEdBQVUsSUFBTSxDQUNkSCxFQUNFVCxFQUFtQixJQUFJLENBQUNDLEVBQUtoQixLQUFXLENBQ3RDLEdBQUksSUFBSUEsQ0FBSyxHQUNiLE9BQVFnQixFQUFJLEtBQ1osT0FBUUEsRUFBSSxHQUNaLFNBQVUsR0FDVixNQUFPQSxFQUFJLEtBQ1gsS0FBTSxhQUNOLE1BQU8sQ0FDTCxPQUFRLHNCQUNSLFlBQWEsRUFDYixnQkFBaUIsS0FDbkIsRUFDQSxXQUFZLENBQ1YsS0FBTSxzQkFDTixTQUFVLEVBQ1osQ0FDRixFQUFFLENBQ0osQ0FDRixFQUFHLENBQUNELEVBQW9CUyxDQUFRLENBQUMsRUFFakMsSUFBTUksRUFBWUMsR0FBYUMsR0FBOEJOLEVBQVVPLEdBQVFDLEdBQVFGLEVBQVFDLENBQUcsQ0FBQyxFQUFHLENBQUNQLENBQVEsQ0FBQyxFQUVoSCxPQUNFN0MsRUFBQyxPQUFJLFVBQVUsaUNBQ2IsU0FBQUMsR0FBQ3FELEdBQUEsQ0FDQyxNQUFPZCxFQUNQLE1BQU9JLEVBQ1AsY0FBZUYsRUFDZixjQUFlSSxFQUNmLFVBQVdHLEVBQ1gsbUJBQW9CTSxHQUFtQixXQUN2QyxVQUFXakMsR0FDWCxRQUFPLEdBQ1AsZUFBZ0IsQ0FBRSxRQUFTLEVBQUksRUFFL0IsVUFBQXRCLEVBQUN3RCxHQUFBLENBQVcsVUFBVSxjQUFjLElBQUssR0FBSSxFQUM3Q3hELEVBQUN5RCxHQUFBLENBQ0MsZ0JBQWlCLEdBQ2pCLFVBQVUseUhBQ1osRUFDQXpELEVBQUMwRCxHQUFBLENBQVEsU0FBUSxHQUFDLEdBQ3BCLEVBQ0YsQ0FFSixDQ3pQSSxtQkFBQUMsR0FDRSxPQUFBQyxHQURGLFFBQUFDLE9BQUEsb0JBUkcsU0FBU0MsSUFBYSxDQUUzQixHQUFNLENBQUUsT0FBQUMsRUFBUSxjQUFBQyxDQUFjLEVBQUlDLEdBQXVCLEVBR3pELGVBQVEsSUFBSSwwQkFBMkJELENBQWEsRUFHbERILEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxHQUFDTSxHQUFBLEVBQWEsRUFDZE4sR0FBQyxPQUFJLFVBQVUsc0JBQ2IsU0FBQUEsR0FBQ08sR0FBQSxDQUFvQixPQUFRSixFQUFRLGNBQWVDLEVBQWUsRUFDckUsR0FDRixDQUVKLEN6SW9CVyxjQUFBSSxHQXFCTCxRQUFBQyxPQXJCSyxvQkFMSixTQUFTQyxHQUFPQyxFQUFvQixDQUN6QyxHQUFNLENBQUUsUUFBQUMsRUFBUyxRQUFBQyxFQUFTLGlCQUFBQyxDQUFpQixFQUFJSCxFQUUvQyxPQUFLQyxFQU1ISixHQUFDTyxHQUFBLENBQXNCLFFBQVNILEVBQVMsUUFBU0MsRUFBUyxpQkFBa0JDLEVBQzNFLFNBQUFOLEdBQUNRLEdBQUEsRUFBYyxFQUNqQixHQVBBLFFBQVEsTUFBTSx5Q0FBeUMsRUFDaERSLEdBQUMsT0FBSSxzQ0FBMEIsRUFRMUMsQ0FFQSxTQUFTUSxJQUFnQixDQUN2QixHQUFNLENBQUUsYUFBQUMsRUFBYyxpQkFBQUMsQ0FBaUIsRUFBSUMsRUFBVSxFQUMvQyxDQUFDQyxDQUFJLEVBQUlDLEVBQWMsTUFBTSxFQUU3QkMsRUFBbUJDLEVBQ3ZCLHlEQUNBTixHQUFnQix5REFDbEIsRUFFQSxPQUNFVCxHQUFDLE9BQUksa0JBQWlCUyxFQUFjLFVBQVdLLEVBQzdDLFNBQUFiLEdBQUMsT0FBSSxVQUFVLG9HQUNiLFVBQUFELEdBQUNnQixHQUFBLENBQWdCLEtBQUssT0FDbkIsU0FBQU4sR0FDQ1YsR0FBQ2lCLEdBQU8sSUFBUCxDQUNDLFFBQVMsQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQ2hDLFFBQVMsQ0FBRSxNQUFPLE9BQVEsUUFBUyxDQUFFLEVBQ3JDLEtBQU0sQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQzdCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWpCLEdBQUNrQixHQUFBLEVBQVcsRUFDZCxFQUVKLEVBRUFsQixHQUFDaUIsR0FBTyxJQUFQLENBQ0MsVUFBVSw2SUFDVixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTVCLFNBQUFMLElBQVMsU0FBV1osR0FBQ21CLEdBQUEsRUFBVyxFQUFLLENBQUNQLEdBQVFBLElBQVMsUUFBVVosR0FBQ29CLEdBQUEsRUFBZ0IsRUFBS3BCLEdBQUNxQixHQUFBLEVBQVUsRUFDckcsR0FDRixFQUNGLENBRUoiLAogICJuYW1lcyI6IFsiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJudXFzX2V4cG9ydHMiLCAiX19leHBvcnQiLCAia2V5TWFwIiwgInVybEtleXMiLCAidXNlUXVlcnlTdGF0ZSIsICJ1c2VRdWVyeVN0YXRlcyIsICJfX3JlRXhwb3J0IiwgIm51cXNfZXhwb3J0cyIsICJudXFzX3N0YXIiLCAidXNlUXVlcnlTdGF0ZU9yaWdpbmFsIiwgInVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwiLCAia2V5TWFwIiwgInVybEtleXMiLCAiX0JSQU5EX1NZTUJPTCIsICJ1c2VRdWVyeVN0YXRlIiwgImtleSIsICJvcHRpb25zIiwgInVzZVF1ZXJ5U3RhdGVzIiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlQWxlcnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGVIZWxwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29weSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcm5lckRvd25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiRmlsdGVyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiR3JpcFZlcnRpY2FsIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiSGFzaCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiU3F1YXJlQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlRWZmZWN0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgIlVSTERlZmF1bHRzSGFuZGxlciIsICJfdGFibGUiLCAic2V0VGFibGUiLCAidXNlUXVlcnlTdGF0ZSIsICJfc2NoZW1hIiwgInNldFNjaGVtYSIsICJfdmlldyIsICJzZXRWaWV3IiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgInVzZUVmZmVjdCIsICJjdXJyZW50SGFzaCIsICJwYXJhbXMiLCAiaGFzVGFibGUiLCAiaGFzU2NoZW1hIiwgImhhc1ZpZXciLCAiZmlyc3RTY2hlbWFOYW1lIiwgImZpcnN0VGFibGUiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImFjdGl2ZVNjaGVtYSIsICJzZXRBY3RpdmVTY2hlbWEiLCAiaXNGdWxsc2NyZWVuIiwgInNldElzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInNldElzTmF2aWdhdGlvbk9wZW4iLCAib25FcnJvciIsICJlcnJvciIsICJ0b2FzdCIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlTWVtbyIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInByZXYiLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0UXVlcnlEZXZ0b29sczIiLCAiVG9hc3RlciIsICJOdXFzSGFzaEFkYXB0ZXIiLCAiVVJMRGVmYXVsdHNIYW5kbGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAic2hvcnQiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAiaXNPYmplY3RUeXBlIiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRGF0ZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJfcHJvcHMiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVudW1DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJKU09OQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiTnVsbENlbGwiLCAiX3Byb3BzIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiUmF3Q2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiVGltZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAicHJvcHMiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAicHJvcHMiLCAicm93IiwgInJlYWRvbmx5IiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgImxpbmtDb21wb25lbnQiLCAiY29udGFpbmVyUHJvcHMiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIkNlbGwiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJsYWJlbCIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZCIsICJwcm9wcyIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJoZWFkZXIiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaSIsICJIZWFkZXIiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJUYWJsZUJvZHkiLCAicm93IiwgImNuIiwgImNlbGwiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJqc3giLCAiRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnQ2xhc3MiLCAiY24iLCAiVGFibGVIZWFkIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiY29sdW1uIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJkYXlqcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJvblNldE5vdyIsICJzaG93U2V0Tm93IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkRheVBpY2tlciIsICJqc3giLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgImhpZGVOYXZpZ2F0aW9uIiwgInByb3BzIiwgIl9tb250aHNDbGFzc05hbWUiLCAiY24iLCAiX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSIsICJfZHJvcGRvd25zQ2xhc3NOYW1lIiwgIl9mb290ZXJDbGFzc05hbWUiLCAiX3dlZWtkYXlzQ2xhc3NOYW1lIiwgIl93ZWVrZGF5Q2xhc3NOYW1lIiwgIl9jYXB0aW9uTGFiZWxDbGFzc05hbWUiLCAiX21vbnRoR3JpZENsYXNzTmFtZSIsICJfd2Vla0NsYXNzTmFtZSIsICJfZGF5Q2xhc3NOYW1lIiwgIl9kYXlCdXR0b25DbGFzc05hbWUiLCAiYnV0dG9uVmFyaWFudHMiLCAiYnV0dG9uUmFuZ2VDbGFzc05hbWUiLCAiX3JhbmdlU3RhcnRDbGFzc05hbWUiLCAiX3JhbmdlRW5kQ2xhc3NOYW1lIiwgIl9yYW5nZU1pZGRsZUNsYXNzTmFtZSIsICJfc2VsZWN0ZWRDbGFzc05hbWUiLCAiX3RvZGF5Q2xhc3NOYW1lIiwgIl9vdXRzaWRlQ2xhc3NOYW1lIiwgIl9kaXNhYmxlZENsYXNzTmFtZSIsICJfaGlkZGVuQ2xhc3NOYW1lIiwgIkRheVBpY2tlciIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaW5pdGlhbFZhbHVlIiwgInBhcnNlZEluaXRpYWxEYXRlIiwgInVzZU1lbW8iLCAicGFyc2VkIiwgImdldEZvcm1hdEZvclR5cGUiLCAidHlwZSIsICJzZWxlY3RlZERhdGUiLCAic2V0U2VsZWN0ZWREYXRlIiwgInVzZVN0YXRlIiwgImN1cnJlbnRNb250aCIsICJzZXRDdXJyZW50TW9udGgiLCAiaG91clZhbHVlIiwgInNldEhvdXJWYWx1ZSIsICJtaW51dGVWYWx1ZSIsICJzZXRNaW51dGVWYWx1ZSIsICJzZWNvbmRWYWx1ZSIsICJzZXRTZWNvbmRWYWx1ZSIsICJiYXNlSGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJzZXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJjb2x1bW5UeXBlIiwgImRiRm9ybWF0IiwgImhhc1RpbWVQcmVjaXNpb24iLCAiaGFuZGxlT25DaGFuZ2UiLCAiZXZlbnQiLCAibmV3VmFsdWUiLCAibmV3RGF0ZSIsICJoYW5kbGVDYWxlbmRhclNlbGVjdCIsICJkYXRlIiwgIm5ld1NlbGVjdGVkRGF0ZSIsICJmaW5hbERhdGUiLCAibm93IiwgImZvcm1hdHRlZERhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImhhbmRsZVNldE5vdyIsICJlIiwgInNldFllYXJWYWx1ZSIsICJtb250aHMiLCAiY3VycmVudE1vbnRoVmFsdWUiLCAieWVhclZhbHVlIiwgInVwZGF0ZURhdGVGcm9tSW5wdXRzIiwgIm5ld0RhdGVQYXJ0cyIsICJiYXNlRGF0ZSIsICJoYW5kbGVNb250aENoYW5nZSIsICJtb250aEluZGV4IiwgImhhbmRsZVllYXJDaGFuZ2UiLCAibmV3WWVhclN0ciIsICJ5ZWFyIiwgImhhbmRsZVRpbWVDaGFuZ2UiLCAicGFydCIsICJudW1lcmljVmFsdWUiLCAibmV3SG91ciIsICJuZXdNaW51dGUiLCAibmV3U2Vjb25kIiwgImlzQ29tcGxldGVIb3VyIiwgImlzQ29tcGxldGVNaW51dGUiLCAiaXNDb21wbGV0ZVNlY29uZCIsICJ1c2VFZmZlY3QiLCAiZGpzRGF0ZSIsICJJbnB1dCIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIm1vbnRoIiwgIlNlbGVjdEl0ZW0iLCAiRGF5UGlja2VyV3JhcHBlciIsICJJbnB1dEFjdGlvbnMiLCAic2VsZWN0ZWQiLCAib25TZWxlY3QiLCAib25Nb250aENoYW5nZSIsICJkaXNhYmxlZCIsICJDYWxlbmRhciIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXVpZCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgImN1cnJlbnRWaWV3VmFsdWUiLCAidXNlUXVlcnlTdGF0ZSIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdlUGFyYW0iLCAic2V0U29ydFBhcmFtIiwgInNldFZpZXciLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ1c2VFZmZlY3QiLCAidmlld1BhcmFtRXhpc3RzIiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgIm5ld1NjaGVtYSIsICJwcmV2IiwgInV1aWR2NCIsICJqc3giLCAiTGluayIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJma1NjaGVtYSIsICJma1RhYmxlIiwgImZrQ29sdW1uIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJzZXRBcHBsaWVkRmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJpbnRyb3NwZWN0aW9uIiwgInVzZUludHJvc3BlY3Rpb24iLCAidGFibGUiLCAiQnV0dG9uIiwgImUiLCAidXVpZCIsICJBcnJvd1JpZ2h0IiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImpzeCIsICJqc3hzIiwgIlN0dWRpb0hlYWRlciIsICJwcm9wcyIsICJpc0Z1bGxzY3JlZW4iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU29ydGluZyIsICJwYWdpbmF0aW9uU3RhdGUiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInVzZVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VGaWx0ZXJpbmciLCAiZGF0YSIsICJpc0ZldGNoaW5nIiwgInJlZmV0Y2giLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiY29uY3JldGVDb2x1bW5EZWZzIiwgInRhYmxlIiwgImhlYWRlciIsICJwcm9wcyIsICJEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwiLCAiRGF0YUdyaWRIZWFkZXIiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiTGluayIsICJnZXRJbnB1dCIsICJ2aXJ0dWFsQ29sdW1uRGVmcyIsICJUYWJsZUhlYWQiLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJDZWxsIiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJTdHVkaW9IZWFkZXIiLCAiQnV0dG9uIiwgIlJlZnJlc2hDdyIsICJjbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkZpbHRlciIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIlBvcG92ZXJDb250ZW50IiwgIkZpbHRlclRyZWUiLCAiZmlsdGVyIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAianN4IiwgIkJhc2ljVmlldyIsICJTbG90IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJpc0xvYWRpbmciLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAidmlldyIsICJzZXRWaWV3IiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0VXJsVGFibGUiLCAidiIsICJzZXRVcmxTY2hlbWEiLCAic2lkZUJhckNsYXNzZXMiLCAiY24iLCAidGFibGUiLCAiXyIsICJpbmRleCIsICJTa2VsZXRvbiIsICJCbG9jayIsICJsYWJlbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJUYWJsZTIiLCAiSXRlbSIsICJhc0NoaWxkIiwgImlzQWN0aXZlIiwgInNpemUiLCAid3JhcENoaWxkcmVuSW5TcGFuIiwgIlNsb3QiLCAiU2NoZW1hU2VsZWN0b3IiLCAiaW50cm9zcGVjdGlvbiIsICJpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWN0aXZlU2NoZW1hIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJzY2hlbWFOYW1lcyIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAic2NoZW1hIiwgInVzZU1lbW8iLCAiTk9fVEFCTEVTX05PREUiLCAidXNlU2NoZW1hVmlzdWFsaXphdGlvbiIsICJpbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFjdGl2ZVNjaGVtYSIsICJ1c2VTdHVkaW8iLCAidXNlTWVtbyIsICJjdXJyZW50U2NoZW1hRGF0YSIsICJ0YWJsZXMiLCAidGFibGVNYXAiLCAidGFibGUiLCAiZmllbGRzIiwgImNvbHVtbiIsICJ0YWJsZU9iamVjdCIsICJyZWxhdGlvbnNoaXBzIiwgInNvdXJjZVRhYmxlIiwgIm9yaWdpbmFsVGFibGVEYXRhIiwgIm1lbW8iLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAiUmVhY3RGbG93IiwgImFkZEVkZ2UiLCAiQmFja2dyb3VuZCIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQ29udHJvbHMiLCAiSGFuZGxlIiwgIk1pbmlNYXAiLCAiUG9zaXRpb24iLCAidXNlRWRnZXNTdGF0ZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImpzeCIsICJqc3hzIiwgIlRhYmxlTm9kZSIsICJtZW1vIiwgImRhdGEiLCAiYWN0aXZlU2NoZW1hIiwgInVzZVN0dWRpbyIsICJpc05vVGFibGVzTm9kZSIsICJnZXRJY29uIiwgIl9maWVsZE5hbWUiLCAiZmllbGRUeXBlIiwgImlzUHJpbWFyeSIsICJDaXJjbGVBbGVydCIsICJLZXkiLCAiSGFzaCIsICJjbiIsICJIYW5kbGUiLCAiUG9zaXRpb24iLCAiZSIsICJTcXVhcmVBcnJvd1JpZ2h0IiwgImZpZWxkIiwgImluZGV4IiwgIm5vZGVUeXBlcyIsICJnZXRMYXlvdXRlZE5vZGVzIiwgInRhYmxlcyIsICJfcmVsYXRpb25zaGlwcyIsICJ0YWJsZSIsICJHUklEX0dBUF9YIiwgIkdSSURfR0FQX1kiLCAiQ09MVU1OUyIsICJjb2x1bW4iLCAicm93IiwgIlNjaGVtYVZpc3VhbGl6YXRpb24iLCAicmVsYXRpb25zaGlwcyIsICJub2RlSWRTZXQiLCAidXNlTWVtbyIsICJ2YWxpZFJlbGF0aW9uc2hpcHMiLCAicmVsIiwgImluaXRpYWxOb2RlcyIsICJpbml0aWFsRWRnZXMiLCAibm9kZXMiLCAic2V0Tm9kZXMiLCAib25Ob2Rlc0NoYW5nZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImVkZ2VzIiwgInNldEVkZ2VzIiwgIm9uRWRnZXNDaGFuZ2UiLCAidXNlRWRnZXNTdGF0ZSIsICJ1c2VFZmZlY3QiLCAib25Db25uZWN0IiwgInVzZUNhbGxiYWNrIiwgInBhcmFtcyIsICJlZHMiLCAiYWRkRWRnZSIsICJSZWFjdEZsb3ciLCAiQ29ubmVjdGlvbkxpbmVUeXBlIiwgIkJhY2tncm91bmQiLCAiQ29udHJvbHMiLCAiTWluaU1hcCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJTY2hlbWFWaWV3IiwgInRhYmxlcyIsICJyZWxhdGlvbnNoaXBzIiwgInVzZVNjaGVtYVZpc3VhbGl6YXRpb24iLCAiU3R1ZGlvSGVhZGVyIiwgIlNjaGVtYVZpc3VhbGl6YXRpb24iLCAianN4IiwgImpzeHMiLCAiU3R1ZGlvIiwgInByb3BzIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJvblRlbGVtZXRyeUV2ZW50IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJTdHVkaW9Db250ZW50IiwgImlzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJ2aWV3IiwgInVzZVF1ZXJ5U3RhdGUiLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiU2NoZW1hVmlldyIsICJBY3RpdmVUYWJsZVZpZXciLCAiQmFzaWNWaWV3Il0KfQo=