react-install-command
Version:
A React component for rendering a 'npm install package-name' command block. Supports multiple package managers and themes. Drop it into your MDX code, a ShadCN UI component, a Tailwind codebase, use built-in styles or go unstyled. You choose.
3 lines • 181 kB
JavaScript
"use client";
"use strict";var Vt=Object.create;var W=Object.defineProperty;var Wt=Object.getOwnPropertyDescriptor;var _t=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,Qt=Object.prototype.hasOwnProperty;var Ut=(t,n)=>{for(var o in n)W(t,o,{get:n[o],enumerable:!0})},rt=(t,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of _t(n))!Qt.call(t,e)&&e!==o&&W(t,e,{get:()=>n[e],enumerable:!(i=Wt(n,e))||i.enumerable});return t};var qt=(t,n,o)=>(o=t!=null?Vt(Ht(t)):{},rt(n||!t||!t.__esModule?W(o,"default",{value:t,enumerable:!0}):o,t)),zt=t=>rt(W({},"__esModule",{value:!0}),t);var Ye={};Ut(Ye,{InstallCommand:()=>Mt,cn:()=>P,javascriptManagers:()=>ot,pythonManagers:()=>Ot});module.exports=zt(Ye);var T=require("react"),bt=Object.freeze({left:0,top:0,width:16,height:16}),Q=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),Z=Object.freeze({...bt,...Q}),J=Object.freeze({...Z,body:"",hidden:!1});function Jt(t,n){let o={};!t.hFlip!=!n.hFlip&&(o.hFlip=!0),!t.vFlip!=!n.vFlip&&(o.vFlip=!0);let i=((t.rotate||0)+(n.rotate||0))%4;return i&&(o.rotate=i),o}function st(t,n){let o=Jt(t,n);for(let i in J)i in Q?i in t&&!(i in o)&&(o[i]=Q[i]):i in n?o[i]=n[i]:i in t&&(o[i]=t[i]);return o}function Xt(t,n){let o=t.icons,i=t.aliases||Object.create(null),e=Object.create(null);function r(s){if(o[s])return e[s]=[];if(!(s in e)){e[s]=null;let c=i[s]&&i[s].parent,a=c&&r(c);a&&(e[s]=[c].concat(a))}return e[s]}return Object.keys(o).concat(Object.keys(i)).forEach(r),e}function Yt(t,n,o){let i=t.icons,e=t.aliases||Object.create(null),r={};function s(c){r=st(i[c]||e[c],r)}return s(n),o.forEach(s),st(t,r)}function yt(t,n){let o=[];if(typeof t!="object"||typeof t.icons!="object")return o;t.not_found instanceof Array&&t.not_found.forEach(e=>{n(e,null),o.push(e)});let i=Xt(t);for(let e in i){let r=i[e];r&&(n(e,Yt(t,e,r)),o.push(e))}return o}var Kt={provider:"",aliases:{},not_found:{},...bt};function q(t,n){for(let o in n)if(o in t&&typeof t[o]!=typeof n[o])return!1;return!0}function xt(t){if(typeof t!="object"||t===null)return null;let n=t;if(typeof n.prefix!="string"||!t.icons||typeof t.icons!="object"||!q(t,Kt))return null;let o=n.icons;for(let e in o){let r=o[e];if(!e||typeof r.body!="string"||!q(r,J))return null}let i=n.aliases||Object.create(null);for(let e in i){let r=i[e],s=r.parent;if(!e||typeof s!="string"||!o[s]&&!i[s]||!q(r,J))return null}return n}var vt=/^[a-z0-9]+(-[a-z0-9]+)*$/,U=(t,n,o,i="")=>{let e=t.split(":");if(t.slice(0,1)==="@"){if(e.length<2||e.length>3)return null;i=e.shift().slice(1)}if(e.length>3||!e.length)return null;if(e.length>1){let c=e.pop(),a=e.pop(),l={provider:e.length>0?e[0]:i,prefix:a,name:c};return n&&!_(l)?null:l}let r=e[0],s=r.split("-");if(s.length>1){let c={provider:i,prefix:s.shift(),name:s.join("-")};return n&&!_(c)?null:c}if(o&&i===""){let c={provider:i,prefix:"",name:r};return n&&!_(c,o)?null:c}return null},_=(t,n)=>t?!!((n&&t.prefix===""||t.prefix)&&t.name):!1,ct=Object.create(null);function Zt(t,n){return{provider:t,prefix:n,icons:Object.create(null),missing:new Set}}function L(t,n){let o=ct[t]||(ct[t]=Object.create(null));return o[n]||(o[n]=Zt(t,n))}function It(t,n){return xt(n)?yt(n,(o,i)=>{i?t.icons[o]=i:t.missing.add(o)}):[]}function te(t,n,o){try{if(typeof o.body=="string")return t.icons[n]={...o},!0}catch{}return!1}var V=!1;function St(t){return typeof t=="boolean"&&(V=t),V}function at(t){let n=typeof t=="string"?U(t,!0,V):t;if(n){let o=L(n.provider,n.prefix),i=n.name;return o.icons[i]||(o.missing.has(i)?null:void 0)}}function ee(t,n){let o=U(t,!0,V);if(!o)return!1;let i=L(o.provider,o.prefix);return n?te(i,o.name,n):(i.missing.add(o.name),!0)}function ne(t,n){if(typeof t!="object")return!1;if(typeof n!="string"&&(n=t.provider||""),V&&!n&&!t.prefix){let e=!1;return xt(t)&&(t.prefix="",yt(t,(r,s)=>{ee(r,s)&&(e=!0)})),e}let o=t.prefix;if(!_({provider:n,prefix:o,name:"a"}))return!1;let i=L(n,o);return!!It(i,t)}var kt=Object.freeze({width:null,height:null}),Pt=Object.freeze({...kt,...Q}),oe=/(-?[0-9.]*[0-9]+[0-9.]*)/g,ie=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function lt(t,n,o){if(n===1)return t;if(o=o||100,typeof t=="number")return Math.ceil(t*n*o)/o;if(typeof t!="string")return t;let i=t.split(oe);if(i===null||!i.length)return t;let e=[],r=i.shift(),s=ie.test(r);for(;;){if(s){let c=parseFloat(r);isNaN(c)?e.push(r):e.push(Math.ceil(c*n*o)/o)}else e.push(r);if(r=i.shift(),r===void 0)return e.join("");s=!s}}function re(t,n="defs"){let o="",i=t.indexOf("<"+n);for(;i>=0;){let e=t.indexOf(">",i),r=t.indexOf("</"+n);if(e===-1||r===-1)break;let s=t.indexOf(">",r);if(s===-1)break;o+=t.slice(e+1,r).trim(),t=t.slice(0,i).trim()+t.slice(s+1)}return{defs:o,content:t}}function se(t,n){return t?"<defs>"+t+"</defs>"+n:n}function ce(t,n,o){let i=re(t);return se(i.defs,n+i.content+o)}var ae=t=>t==="unset"||t==="undefined"||t==="none";function le(t,n){let o={...Z,...t},i={...Pt,...n},e={left:o.left,top:o.top,width:o.width,height:o.height},r=o.body;[o,i].forEach(I=>{let g=[],p=I.hFlip,$=I.vFlip,v=I.rotate;p?$?v+=2:(g.push("translate("+(e.width+e.left).toString()+" "+(0-e.top).toString()+")"),g.push("scale(-1 1)"),e.top=e.left=0):$&&(g.push("translate("+(0-e.left).toString()+" "+(e.height+e.top).toString()+")"),g.push("scale(1 -1)"),e.top=e.left=0);let S;switch(v<0&&(v-=Math.floor(v/4)*4),v=v%4,v){case 1:S=e.height/2+e.top,g.unshift("rotate(90 "+S.toString()+" "+S.toString()+")");break;case 2:g.unshift("rotate(180 "+(e.width/2+e.left).toString()+" "+(e.height/2+e.top).toString()+")");break;case 3:S=e.width/2+e.left,g.unshift("rotate(-90 "+S.toString()+" "+S.toString()+")");break}v%2===1&&(e.left!==e.top&&(S=e.left,e.left=e.top,e.top=S),e.width!==e.height&&(S=e.width,e.width=e.height,e.height=S)),g.length&&(r=ce(r,'<g transform="'+g.join(" ")+'">',"</g>"))});let s=i.width,c=i.height,a=e.width,l=e.height,f,d;s===null?(d=c===null?"1em":c==="auto"?l:c,f=lt(d,a/l)):(f=s==="auto"?a:s,d=c===null?lt(f,l/a):c==="auto"?l:c);let u={},m=(I,g)=>{ae(g)||(u[I]=g.toString())};m("width",f),m("height",d);let y=[e.left,e.top,a,l];return u.viewBox=y.join(" "),{attributes:u,viewBox:y,body:r}}var fe=/\sid="(\S+)"/g,ue="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),de=0;function pe(t,n=ue){let o=[],i;for(;i=fe.exec(t);)o.push(i[1]);if(!o.length)return t;let e="suffix"+(Math.random()*16777216|Date.now()).toString(16);return o.forEach(r=>{let s=typeof n=="function"?n(r):n+(de++).toString(),c=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+c+')([")]|\\.[a-z])',"g"),"$1"+s+e+"$3")}),t=t.replace(new RegExp(e,"g"),""),t}var X=Object.create(null);function ge(t,n){X[t]=n}function Y(t){return X[t]||X[""]}function tt(t){let n;if(typeof t.resources=="string")n=[t.resources];else if(n=t.resources,!(n instanceof Array)||!n.length)return null;return{resources:n,path:t.path||"/",maxURL:t.maxURL||500,rotate:t.rotate||750,timeout:t.timeout||5e3,random:t.random===!0,index:t.index||0,dataAfterTimeout:t.dataAfterTimeout!==!1}}var et=Object.create(null),F=["https://api.simplesvg.com","https://api.unisvg.com"],H=[];for(;F.length>0;)F.length===1||Math.random()>.5?H.push(F.shift()):H.push(F.pop());et[""]=tt({resources:["https://api.iconify.design"].concat(H)});function he(t,n){let o=tt(n);return o===null?!1:(et[t]=o,!0)}function nt(t){return et[t]}var me=()=>{let t;try{if(t=fetch,typeof t=="function")return t}catch{}},ft=me();function be(t,n){let o=nt(t);if(!o)return 0;let i;if(!o.maxURL)i=0;else{let e=0;o.resources.forEach(s=>{e=Math.max(e,s.length)});let r=n+".json?icons=";i=o.maxURL-e-o.path.length-r.length}return i}function ye(t){return t===404}var xe=(t,n,o)=>{let i=[],e=be(t,n),r="icons",s={type:r,provider:t,prefix:n,icons:[]},c=0;return o.forEach((a,l)=>{c+=a.length+1,c>=e&&l>0&&(i.push(s),s={type:r,provider:t,prefix:n,icons:[]},c=a.length),s.icons.push(a)}),i.push(s),i};function ve(t){if(typeof t=="string"){let n=nt(t);if(n)return n.path}return"/"}var Ie=(t,n,o)=>{if(!ft){o("abort",424);return}let i=ve(n.provider);switch(n.type){case"icons":{let r=n.prefix,c=n.icons.join(","),a=new URLSearchParams({icons:c});i+=r+".json?"+a.toString();break}case"custom":{let r=n.uri;i+=r.slice(0,1)==="/"?r.slice(1):r;break}default:o("abort",400);return}let e=503;ft(t+i).then(r=>{let s=r.status;if(s!==200){setTimeout(()=>{o(ye(s)?"abort":"next",s)});return}return e=501,r.json()}).then(r=>{if(typeof r!="object"||r===null){setTimeout(()=>{r===404?o("abort",r):o("next",e)});return}setTimeout(()=>{o("success",r)})}).catch(()=>{o("next",e)})},Se={prepare:xe,send:Ie};function ke(t){let n={loaded:[],missing:[],pending:[]},o=Object.create(null);t.sort((e,r)=>e.provider!==r.provider?e.provider.localeCompare(r.provider):e.prefix!==r.prefix?e.prefix.localeCompare(r.prefix):e.name.localeCompare(r.name));let i={provider:"",prefix:"",name:""};return t.forEach(e=>{if(i.name===e.name&&i.prefix===e.prefix&&i.provider===e.provider)return;i=e;let r=e.provider,s=e.prefix,c=e.name,a=o[r]||(o[r]=Object.create(null)),l=a[s]||(a[s]=L(r,s)),f;c in l.icons?f=n.loaded:s===""||l.missing.has(c)?f=n.missing:f=n.pending;let d={provider:r,prefix:s,name:c};f.push(d)}),n}function wt(t,n){t.forEach(o=>{let i=o.loaderCallbacks;i&&(o.loaderCallbacks=i.filter(e=>e.id!==n))})}function Pe(t){t.pendingCallbacksFlag||(t.pendingCallbacksFlag=!0,setTimeout(()=>{t.pendingCallbacksFlag=!1;let n=t.loaderCallbacks?t.loaderCallbacks.slice(0):[];if(!n.length)return;let o=!1,i=t.provider,e=t.prefix;n.forEach(r=>{let s=r.icons,c=s.pending.length;s.pending=s.pending.filter(a=>{if(a.prefix!==e)return!0;let l=a.name;if(t.icons[l])s.loaded.push({provider:i,prefix:e,name:l});else if(t.missing.has(l))s.missing.push({provider:i,prefix:e,name:l});else return o=!0,!0;return!1}),s.pending.length!==c&&(o||wt([t],r.id),r.callback(s.loaded.slice(0),s.missing.slice(0),s.pending.slice(0),r.abort))})}))}var we=0;function Ce(t,n,o){let i=we++,e=wt.bind(null,o,i);if(!n.pending.length)return e;let r={id:i,icons:n,callback:t,abort:e};return o.forEach(s=>{(s.loaderCallbacks||(s.loaderCallbacks=[])).push(r)}),e}function Te(t,n=!0,o=!1){let i=[];return t.forEach(e=>{let r=typeof e=="string"?U(e,n,o):e;r&&i.push(r)}),i}var $e={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function je(t,n,o,i){let e=t.resources.length,r=t.random?Math.floor(Math.random()*e):t.index,s;if(t.random){let h=t.resources.slice(0);for(s=[];h.length>1;){let C=Math.floor(Math.random()*h.length);s.push(h[C]),h=h.slice(0,C).concat(h.slice(C+1))}s=s.concat(h)}else s=t.resources.slice(r).concat(t.resources.slice(0,r));let c=Date.now(),a="pending",l=0,f,d=null,u=[],m=[];typeof i=="function"&&m.push(i);function y(){d&&(clearTimeout(d),d=null)}function I(){a==="pending"&&(a="aborted"),y(),u.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),u=[]}function g(h,C){C&&(m=[]),typeof h=="function"&&m.push(h)}function p(){return{startTime:c,payload:n,status:a,queriesSent:l,queriesPending:u.length,subscribe:g,abort:I}}function $(){a="failed",m.forEach(h=>{h(void 0,f)})}function v(){u.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),u=[]}function S(h,C,N){let R=C!=="success";switch(u=u.filter(E=>E!==h),a){case"pending":break;case"failed":if(R||!t.dataAfterTimeout)return;break;default:return}if(C==="abort"){f=N,$();return}if(R){f=N,u.length||(s.length?M():$());return}if(y(),v(),!t.random){let E=t.resources.indexOf(h.resource);E!==-1&&E!==t.index&&(t.index=E)}a="completed",m.forEach(E=>{E(N)})}function M(){if(a!=="pending")return;y();let h=s.shift();if(h===void 0){if(u.length){d=setTimeout(()=>{y(),a==="pending"&&(v(),$())},t.timeout);return}$();return}let C={status:"pending",resource:h,callback:(N,R)=>{S(C,N,R)}};u.push(C),l++,d=setTimeout(M,t.rotate),o(h,n,C.callback)}return setTimeout(M),p}function Ct(t){let n={...$e,...t},o=[];function i(){o=o.filter(c=>c().status==="pending")}function e(c,a,l){let f=je(n,c,a,(d,u)=>{i(),l&&l(d,u)});return o.push(f),f}function r(c){return o.find(a=>c(a))||null}return{query:e,find:r,setIndex:c=>{n.index=c},getIndex:()=>n.index,cleanup:i}}function ut(){}var z=Object.create(null);function Ee(t){if(!z[t]){let n=nt(t);if(!n)return;let o=Ct(n),i={config:n,redundancy:o};z[t]=i}return z[t]}function Oe(t,n,o){let i,e;if(typeof t=="string"){let r=Y(t);if(!r)return o(void 0,424),ut;e=r.send;let s=Ee(t);s&&(i=s.redundancy)}else{let r=tt(t);if(r){i=Ct(r);let s=t.resources?t.resources[0]:"",c=Y(s);c&&(e=c.send)}}return!i||!e?(o(void 0,424),ut):i.query(n,e,o)().abort}function dt(){}function Me(t){t.iconsLoaderFlag||(t.iconsLoaderFlag=!0,setTimeout(()=>{t.iconsLoaderFlag=!1,Pe(t)}))}function Ne(t){let n=[],o=[];return t.forEach(i=>{(i.match(vt)?n:o).push(i)}),{valid:n,invalid:o}}function B(t,n,o){function i(){let e=t.pendingIcons;n.forEach(r=>{e&&e.delete(r),t.icons[r]||t.missing.add(r)})}if(o&&typeof o=="object")try{if(!It(t,o).length){i();return}}catch(e){console.error(e)}i(),Me(t)}function pt(t,n){t instanceof Promise?t.then(o=>{n(o)}).catch(()=>{n(null)}):n(t)}function Re(t,n){t.iconsToLoad?t.iconsToLoad=t.iconsToLoad.concat(n).sort():t.iconsToLoad=n,t.iconsQueueFlag||(t.iconsQueueFlag=!0,setTimeout(()=>{t.iconsQueueFlag=!1;let{provider:o,prefix:i}=t,e=t.iconsToLoad;if(delete t.iconsToLoad,!e||!e.length)return;let r=t.loadIcon;if(t.loadIcons&&(e.length>1||!r)){pt(t.loadIcons(e,i,o),f=>{B(t,e,f)});return}if(r){e.forEach(f=>{let d=r(f,i,o);pt(d,u=>{let m=u?{prefix:i,icons:{[f]:u}}:null;B(t,[f],m)})});return}let{valid:s,invalid:c}=Ne(e);if(c.length&&B(t,c,null),!s.length)return;let a=i.match(vt)?Y(o):null;if(!a){B(t,s,null);return}a.prepare(o,i,s).forEach(f=>{Oe(o,f,d=>{B(t,f.icons,d)})})}))}var Le=(t,n)=>{let o=Te(t,!0,St()),i=ke(o);if(!i.pending.length){let a=!0;return n&&setTimeout(()=>{a&&n(i.loaded,i.missing,i.pending,dt)}),()=>{a=!1}}let e=Object.create(null),r=[],s,c;return i.pending.forEach(a=>{let{provider:l,prefix:f}=a;if(f===c&&l===s)return;s=l,c=f,r.push(L(l,f));let d=e[l]||(e[l]=Object.create(null));d[f]||(d[f]=[])}),i.pending.forEach(a=>{let{provider:l,prefix:f,name:d}=a,u=L(l,f),m=u.pendingIcons||(u.pendingIcons=new Set);m.has(d)||(m.add(d),e[l][f].push(d))}),r.forEach(a=>{let l=e[a.provider][a.prefix];l.length&&Re(a,l)}),n?Ce(n,i,r):dt};function Ae(t,n){let o={...t};for(let i in n){let e=n[i],r=typeof e;i in kt?(e===null||e&&(r==="string"||r==="number"))&&(o[i]=e):r===typeof o[i]&&(o[i]=i==="rotate"?e%4:e)}return o}var De=/[\s,]+/;function Fe(t,n){n.split(De).forEach(o=>{switch(o.trim()){case"horizontal":t.hFlip=!0;break;case"vertical":t.vFlip=!0;break}})}function Be(t,n=0){let o=t.replace(/^-?[0-9.]*/,"");function i(e){for(;e<0;)e+=4;return e%4}if(o===""){let e=parseInt(t);return isNaN(e)?0:i(e)}else if(o!==t){let e=0;switch(o){case"%":e=25;break;case"deg":e=90}if(e){let r=parseFloat(t.slice(0,t.length-o.length));return isNaN(r)?0:(r=r/e,r%1===0?i(r):0)}}return n}function Ge(t,n){let o=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let i in n)o+=" "+i+'="'+n[i]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+o+">"+t+"</svg>"}function Ve(t){return t.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function We(t){return"data:image/svg+xml,"+Ve(t)}function _e(t){return'url("'+We(t)+'")'}var G;function He(){try{G=window.trustedTypes.createPolicy("iconify",{createHTML:t=>t})}catch{G=null}}function Qe(t){return G===void 0&&He(),G?G.createHTML(t):t}var Tt={...Pt,inline:!1},Ue={xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},qe={display:"inline-block"},K={backgroundColor:"currentColor"},$t={backgroundColor:"transparent"},gt={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},ht={WebkitMask:K,mask:K,background:$t};for(let t in ht){let n=ht[t];for(let o in gt)n[t+o]=gt[o]}var ze={...Tt,inline:!0};function mt(t){return t+(t.match(/^[-0-9.]+$/)?"px":"")}var Je=(t,n,o)=>{let i=n.inline?ze:Tt,e=Ae(i,n),r=n.mode||"svg",s={},c=n.style||{},a={...r==="svg"?Ue:{}};if(o){let g=U(o,!1,!0);if(g){let p=["iconify"],$=["provider","prefix"];for(let v of $)g[v]&&p.push("iconify--"+g[v]);a.className=p.join(" ")}}for(let g in n){let p=n[g];if(p!==void 0)switch(g){case"icon":case"style":case"children":case"onLoad":case"mode":case"ssr":break;case"_ref":a.ref=p;break;case"className":a[g]=(a[g]?a[g]+" ":"")+p;break;case"inline":case"hFlip":case"vFlip":e[g]=p===!0||p==="true"||p===1;break;case"flip":typeof p=="string"&&Fe(e,p);break;case"color":s.color=p;break;case"rotate":typeof p=="string"?e[g]=Be(p):typeof p=="number"&&(e[g]=p);break;case"ariaHidden":case"aria-hidden":p!==!0&&p!=="true"&&delete a["aria-hidden"];break;default:i[g]===void 0&&(a[g]=p)}}let l=le(t,e),f=l.attributes;if(e.inline&&(s.verticalAlign="-0.125em"),r==="svg"){a.style={...s,...c},Object.assign(a,f);let g=0,p=n.id;return typeof p=="string"&&(p=p.replace(/-/g,"_")),a.dangerouslySetInnerHTML={__html:Qe(pe(l.body,p?()=>p+"ID"+g++:"iconifyReact"))},(0,T.createElement)("svg",a)}let{body:d,width:u,height:m}=t,y=r==="mask"||(r==="bg"?!1:d.indexOf("currentColor")!==-1),I=Ge(d,{...f,width:u+"",height:m+""});return a.style={...s,"--svg":_e(I),width:mt(f.width),height:mt(f.height),...qe,...y?K:$t,...c},(0,T.createElement)("span",a)};St(!0);ge("",Se);if(typeof document<"u"&&typeof window<"u"){let t=window;if(t.IconifyPreload!==void 0){let n=t.IconifyPreload,o="Invalid IconifyPreload syntax.";typeof n=="object"&&n!==null&&(n instanceof Array?n:[n]).forEach(i=>{try{(typeof i!="object"||i===null||i instanceof Array||typeof i.icons!="object"||typeof i.prefix!="string"||!ne(i))&&console.error(o)}catch{console.error(o)}})}if(t.IconifyProviders!==void 0){let n=t.IconifyProviders;if(typeof n=="object"&&n!==null)for(let o in n){let i="IconifyProviders["+o+"] is invalid.";try{let e=n[o];if(typeof e!="object"||!e||e.resources===void 0)continue;he(o,e)||console.error(i)}catch{console.error(i)}}}}function jt(t){let[n,o]=(0,T.useState)(!!t.ssr),[i,e]=(0,T.useState)({});function r(m){if(m){let y=t.icon;if(typeof y=="object")return{name:"",data:y};let I=at(y);if(I)return{name:y,data:I}}return{name:""}}let[s,c]=(0,T.useState)(r(!!t.ssr));function a(){let m=i.callback;m&&(m(),e({}))}function l(m){if(JSON.stringify(s)!==JSON.stringify(m))return a(),c(m),!0}function f(){var m;let y=t.icon;if(typeof y=="object"){l({name:"",data:y});return}let I=at(y);if(l({name:y,data:I}))if(I===void 0){let g=Le([y],f);e({callback:g})}else I&&((m=t.onLoad)===null||m===void 0||m.call(t,y))}(0,T.useEffect)(()=>(o(!0),a),[]),(0,T.useEffect)(()=>{n&&f()},[t.icon,n]);let{name:d,data:u}=s;return u?Je({...Z,...u},t,d):t.children?t.children:(0,T.createElement)("span",{})}var j=(0,T.forwardRef)((t,n)=>jt({...t,_ref:n})),tn=(0,T.forwardRef)((t,n)=>jt({inline:!0,...t,_ref:n}));var A=qt(require("react")),O=require("react"),b=require("react/jsx-runtime"),P=(...t)=>t.filter(Boolean).join(" "),Et=()=>(0,b.jsx)(j,{icon:"lucide:copy",width:24,height:24,"aria-label":"Copy to clipboard"}),ot=[{id:"npm",name:"npm",icon:()=>(0,b.jsx)(j,{icon:"logos:npm-icon",width:24,height:24,"aria-label":"npm package manager"}),getCommand:(t,n)=>{let{isDev:o,isPeer:i,isOptional:e,isGlobal:r,useShorthand:s,version:c,tag:a}=n,l=s?"i":"install",f=[o&&(s?"-D":"--save-dev"),i&&"--save-peer",e&&"--save-optional",r&&"-g"].filter(Boolean).join(" "),d=c?`${t}@${c}`:a?`${t}@${a}`:t;return`npm ${l}${f?` ${f}`:""} ${d}`}},{id:"yarn",name:"Yarn",icon:()=>(0,b.jsx)(j,{icon:"logos:yarn",width:24,height:24,"aria-label":"Yarn package manager"}),getCommand:(t,n)=>{let{isDev:o,isPeer:i,isOptional:e,isGlobal:r,version:s,tag:c}=n,a=[r&&"global","add",o&&"--dev",i&&"--peer",e&&"--optional"].filter(Boolean).join(" "),l=s?`${t}@${s}`:c?`${t}@${c}`:t;return`yarn ${a} ${l}`}},{id:"pnpm",name:"pnpm",icon:()=>(0,b.jsx)(j,{icon:"logos:pnpm",width:24,height:24,"aria-label":"pnpm package manager"}),getCommand:(t,n)=>{let{isDev:o,isPeer:i,isOptional:e,isGlobal:r,useShorthand:s,version:c,tag:a}=n,l=s?"i":"install",f=[o&&(s?"-D":"--save-dev"),i&&"--save-peer",e&&"--save-optional",r&&"-g"].filter(Boolean).join(" "),d=c?`${t}@${c}`:a?`${t}@${a}`:t;return`pnpm ${l}${f?` ${f}`:""} ${d}`}},{id:"bun",name:"Bun",icon:()=>(0,b.jsx)(j,{icon:"logos:bun",width:24,height:24,"aria-label":"Bun package manager"}),getCommand:(t,n)=>{let{isDev:o,isPeer:i,isOptional:e,isGlobal:r,useShorthand:s,version:c,tag:a}=n,l=s?"i":"install",f=[o&&(s?"-d":"--dev"),i&&"--peer",e&&"--optional",r&&"-g"].filter(Boolean).join(" "),d=c?`${t}@${c}`:a?`${t}@${a}`:t;return`bun ${l}${f?` ${f}`:""} ${d}`}},{id:"deno",name:"Deno",icon:()=>(0,b.jsx)(j,{icon:"logos:deno",width:24,height:24,"aria-label":"Deno package manager"}),getCommand:(t,n)=>{let{version:o,tag:i,registry:e}=n;return`deno add ${t.split(/\s+/).map(c=>c.startsWith("jsr:")||c.startsWith("npm:")?c:e?`${e}:${c}`:`npm:${c}`).map(c=>o?`${c}@${o}`:i?`${c}@${i}`:c).join(" ")}`}}],Ot=[{id:"uv",name:"uv",icon:()=>(0,b.jsx)(j,{icon:"catppuccin:uv",width:24,height:24,"aria-label":"uv package manager"}),getCommand:(t,n)=>{let{isDev:o,isGlobal:i,version:e,tag:r}=n,s=[o&&"--dev"].filter(Boolean).join(" "),c=e?`${t}==${e}`:r?`${t}@${r}`:t;return`uv add${s?` ${s}`:""} ${c}`}},{id:"pip",name:"pip",icon:()=>(0,b.jsx)(j,{icon:"logos:python",width:24,height:24,"aria-label":"pip package manager"}),getCommand:(t,n)=>{let{isDev:o,isGlobal:i,version:e,tag:r}=n,s=[].filter(Boolean).join(" "),c=e?`${t}==${e}`:r?`${t}@${r}`:t;return`pip install${s?` ${s}`:""} ${c}`}}],Xe={root:({children:t,className:n})=>(0,b.jsx)("div",{className:P("install-block",n),children:t}),navigation:({children:t,className:n})=>(0,b.jsx)("div",{className:P("install-block-nav",n),children:t}),tab:({children:t,isSelected:n,onClick:o,className:i,slotClassNames:e})=>(0,b.jsxs)("button",{type:"button",onClick:o,"data-state":n?"active":"default",className:P("install-block-tab",i),children:[(0,b.jsx)("div",{className:"install-block-tab-content",children:A.default.Children.map(t,r=>{if(A.default.isValidElement(r)){if(r.type===j)return A.default.cloneElement(r,{className:P(r.props.className,e==null?void 0:e.tabIcon)});if(r.type==="span")return A.default.cloneElement(r,{className:P(r.props.className,e==null?void 0:e.tabText)})}return r})}),(0,b.jsx)("div",{className:P("install-block-tab-indicator",e==null?void 0:e.tabIndicator),"data-state":n?"active":"default"})]}),tabIndicator:({isSelected:t,className:n})=>(0,b.jsx)("div",{className:P("install-block-tab-indicator",n),"data-state":t?"active":"default"}),commandContainer:({children:t,className:n})=>(0,b.jsx)("div",{className:P("install-block-content",n),children:t}),commandPrefix:({className:t})=>(0,b.jsx)("span",{className:P("install-block-prefix",t),children:"$"}),commandText:({children:t,className:n,slotClassNames:o})=>{let e=String(t).split(/\s+/),r=e[0],s=e.slice(1).join(" ");return(0,b.jsxs)("code",{className:P("install-block-text",n),children:[(0,b.jsx)("span",{className:P("install-block-text-command",(o==null?void 0:o.commandTextCommand)||""),children:r}),s?` ${s}`:""]})},copyButton:({onClick:t,className:n})=>(0,b.jsx)("button",{type:"button",onClick:t,className:P("install-block-copy",n),"aria-label":"Copy command",children:Et()})},Mt=({packageName:t="",isDev:n=!1,isPeer:o=!1,isOptional:i=!1,isGlobal:e=!1,useShorthand:r=!1,version:s,tag:c,registry:a,managers:l=ot,customCommands:f,slots:d={},slotClassNames:u={},onCopy:m,onTabChange:y,theme:I="system",copyIcon:g=Et,classNameFn:p=P,commandPrefix:$="$",storageType:v="none",storageKey:S="preferred-package-manager"})=>{let M=(0,O.useCallback)(()=>{var x;if(v!=="none"){let k=(v==="local"?localStorage:sessionStorage).getItem(S);if(k&&l.some(D=>D.id===k))return k}if(f)for(let[w]of Object.entries(f)){let k=l.find(D=>D.id===w);if(k)return k.id}if(t){if(t.includes("jsr:")||a==="jsr"){let k=l.find(D=>D.id==="deno");if(k)return k.id}let w=l.find(k=>k.id==="npm");if(w)return w.id}return(x=l[0])==null?void 0:x.id},[f,t,a,l,v,S]),[h,C]=(0,O.useState)(M());(0,O.useEffect)(()=>{v!=="none"&&(v==="local"?localStorage:sessionStorage).setItem(S,h)},[h,v,S]),(0,O.useEffect)(()=>{let x=document.documentElement;I==="system"?x.removeAttribute("data-theme"):x.setAttribute("data-theme",I)},[I]),(0,O.useEffect)(()=>{C(M())},[M]);let N={...Xe,...d},{root:R,navigation:E,tab:Nt,tabIndicator:Ke,commandContainer:Rt,commandPrefix:Lt,commandText:At,copyButton:Dt}=N,it=x=>{if(f!=null&&f[x])return f[x];let w=l.find(k=>k.id===x);return w!=null&&w.getCommand?w.getCommand(t,{isDev:n,isPeer:o,isOptional:i,isGlobal:e,useShorthand:r,version:s,tag:c,registry:a}):""},Ft=x=>{C(x);let w=l.find(k=>k.id===x);y&&w&&y(x,w)},Bt=()=>{let x=it(h);navigator.clipboard.writeText(x);let w=l.find(k=>k.id===h);m&&w&&m(x,w)};if(l.length===0)return null;let Gt=it(h);return(0,b.jsxs)(R,{className:p("install-block",u.root||""),children:[(0,b.jsx)(E,{className:p("install-block-nav",u.navigation||""),children:l.map(x=>(0,b.jsxs)(Nt,{isSelected:h===x.id,onClick:()=>Ft(x.id),className:p("install-block-tab",u.tab||""),slotClassNames:u,children:[x.icon(),(0,b.jsx)("span",{children:x.name})]},x.id))}),(0,b.jsxs)(Rt,{className:p("install-block-content",u.commandContainer||""),children:[(0,b.jsxs)("div",{className:P("install-block-group",u.commandGroup||""),children:[(0,b.jsx)(Lt,{className:p("install-block-prefix",u.commandPrefix||""),children:$}),(0,b.jsx)(At,{className:p("install-block-text",u.commandText||""),slotClassNames:u,children:Gt})]}),(0,b.jsx)(Dt,{className:p("install-block-copy",u.copyButton||""),onClick:Bt,children:A.default.cloneElement(g(),{className:P(g().props.className,u.copyButtonIcon||"")})})]})]})};0&&(module.exports={InstallCommand,cn,javascriptManagers,pythonManagers});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9AaWNvbmlmeStyZWFjdEA1LjIuMF9yZWFjdEAxOC4zLjEvbm9kZV9tb2R1bGVzL0BpY29uaWZ5L3JlYWN0L2Rpc3QvaWNvbmlmeS5qcyIsICIuLi9zcmMvSW5zdGFsbENvbW1hbmQudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBJbnN0YWxsQ29tbWFuZCB9IGZyb20gXCIuL0luc3RhbGxDb21tYW5kXCI7XG5leHBvcnQgdHlwZSB7XG5cdEluc3RhbGxDb21tYW5kUHJvcHMsXG5cdE1hbmFnZXIsXG5cdFRoZW1lLFxuXHRTbG90cyxcblx0U2xvdFByb3BzLFxuXHRUYWJTbG90UHJvcHMsXG5cdENvcHlCdXR0b25TbG90UHJvcHMsXG5cdFNsb3RDbGFzc05hbWVzLFxuXHRTdG9yYWdlVHlwZSxcbn0gZnJvbSBcIi4vSW5zdGFsbENvbW1hbmRcIjtcbmV4cG9ydCB7IGphdmFzY3JpcHRNYW5hZ2VycywgcHl0aG9uTWFuYWdlcnMsIGNuIH0gZnJvbSBcIi4vSW5zdGFsbENvbW1hbmRcIjtcbiIsICIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGRlZmF1bHRJY29uRGltZW5zaW9ucyA9IE9iamVjdC5mcmVlemUoXG4gIHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogMCxcbiAgICB3aWR0aDogMTYsXG4gICAgaGVpZ2h0OiAxNlxuICB9XG4pO1xuY29uc3QgZGVmYXVsdEljb25UcmFuc2Zvcm1hdGlvbnMgPSBPYmplY3QuZnJlZXplKHtcbiAgcm90YXRlOiAwLFxuICB2RmxpcDogZmFsc2UsXG4gIGhGbGlwOiBmYWxzZVxufSk7XG5jb25zdCBkZWZhdWx0SWNvblByb3BzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC4uLmRlZmF1bHRJY29uRGltZW5zaW9ucyxcbiAgLi4uZGVmYXVsdEljb25UcmFuc2Zvcm1hdGlvbnNcbn0pO1xuY29uc3QgZGVmYXVsdEV4dGVuZGVkSWNvblByb3BzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC4uLmRlZmF1bHRJY29uUHJvcHMsXG4gIGJvZHk6IFwiXCIsXG4gIGhpZGRlbjogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBtZXJnZUljb25UcmFuc2Zvcm1hdGlvbnMob2JqMSwgb2JqMikge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgaWYgKCFvYmoxLmhGbGlwICE9PSAhb2JqMi5oRmxpcCkge1xuICAgIHJlc3VsdC5oRmxpcCA9IHRydWU7XG4gIH1cbiAgaWYgKCFvYmoxLnZGbGlwICE9PSAhb2JqMi52RmxpcCkge1xuICAgIHJlc3VsdC52RmxpcCA9IHRydWU7XG4gIH1cbiAgY29uc3Qgcm90YXRlID0gKChvYmoxLnJvdGF0ZSB8fCAwKSArIChvYmoyLnJvdGF0ZSB8fCAwKSkgJSA0O1xuICBpZiAocm90YXRlKSB7XG4gICAgcmVzdWx0LnJvdGF0ZSA9IHJvdGF0ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtZXJnZUljb25EYXRhKHBhcmVudCwgY2hpbGQpIHtcbiAgY29uc3QgcmVzdWx0ID0gbWVyZ2VJY29uVHJhbnNmb3JtYXRpb25zKHBhcmVudCwgY2hpbGQpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0RXh0ZW5kZWRJY29uUHJvcHMpIHtcbiAgICBpZiAoa2V5IGluIGRlZmF1bHRJY29uVHJhbnNmb3JtYXRpb25zKSB7XG4gICAgICBpZiAoa2V5IGluIHBhcmVudCAmJiAhKGtleSBpbiByZXN1bHQpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZGVmYXVsdEljb25UcmFuc2Zvcm1hdGlvbnNba2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGtleSBpbiBjaGlsZCkge1xuICAgICAgcmVzdWx0W2tleV0gPSBjaGlsZFtrZXldO1xuICAgIH0gZWxzZSBpZiAoa2V5IGluIHBhcmVudCkge1xuICAgICAgcmVzdWx0W2tleV0gPSBwYXJlbnRba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0SWNvbnNUcmVlKGRhdGEsIG5hbWVzKSB7XG4gIGNvbnN0IGljb25zID0gZGF0YS5pY29ucztcbiAgY29uc3QgYWxpYXNlcyA9IGRhdGEuYWxpYXNlcyB8fCAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3QgcmVzb2x2ZWQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZnVuY3Rpb24gcmVzb2x2ZShuYW1lKSB7XG4gICAgaWYgKGljb25zW25hbWVdKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRbbmFtZV0gPSBbXTtcbiAgICB9XG4gICAgaWYgKCEobmFtZSBpbiByZXNvbHZlZCkpIHtcbiAgICAgIHJlc29sdmVkW25hbWVdID0gbnVsbDtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGFsaWFzZXNbbmFtZV0gJiYgYWxpYXNlc1tuYW1lXS5wYXJlbnQ7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudCAmJiByZXNvbHZlKHBhcmVudCk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZWRbbmFtZV0gPSBbcGFyZW50XS5jb25jYXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRbbmFtZV07XG4gIH1cbiAgKE9iamVjdC5rZXlzKGljb25zKS5jb25jYXQoT2JqZWN0LmtleXMoYWxpYXNlcykpKS5mb3JFYWNoKHJlc29sdmUpO1xuICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIGludGVybmFsR2V0SWNvbkRhdGEoZGF0YSwgbmFtZSwgdHJlZSkge1xuICBjb25zdCBpY29ucyA9IGRhdGEuaWNvbnM7XG4gIGNvbnN0IGFsaWFzZXMgPSBkYXRhLmFsaWFzZXMgfHwgLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGxldCBjdXJyZW50UHJvcHMgPSB7fTtcbiAgZnVuY3Rpb24gcGFyc2UobmFtZTIpIHtcbiAgICBjdXJyZW50UHJvcHMgPSBtZXJnZUljb25EYXRhKFxuICAgICAgaWNvbnNbbmFtZTJdIHx8IGFsaWFzZXNbbmFtZTJdLFxuICAgICAgY3VycmVudFByb3BzXG4gICAgKTtcbiAgfVxuICBwYXJzZShuYW1lKTtcbiAgdHJlZS5mb3JFYWNoKHBhcnNlKTtcbiAgcmV0dXJuIG1lcmdlSWNvbkRhdGEoZGF0YSwgY3VycmVudFByb3BzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VJY29uU2V0KGRhdGEsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IG5hbWVzID0gW107XG4gIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZGF0YS5pY29ucyAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBuYW1lcztcbiAgfVxuICBpZiAoZGF0YS5ub3RfZm91bmQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIGRhdGEubm90X2ZvdW5kLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIGNhbGxiYWNrKG5hbWUsIG51bGwpO1xuICAgICAgbmFtZXMucHVzaChuYW1lKTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCB0cmVlID0gZ2V0SWNvbnNUcmVlKGRhdGEpO1xuICBmb3IgKGNvbnN0IG5hbWUgaW4gdHJlZSkge1xuICAgIGNvbnN0IGl0ZW0gPSB0cmVlW25hbWVdO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBjYWxsYmFjayhuYW1lLCBpbnRlcm5hbEdldEljb25EYXRhKGRhdGEsIG5hbWUsIGl0ZW0pKTtcbiAgICAgIG5hbWVzLnB1c2gobmFtZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuYW1lcztcbn1cblxuY29uc3Qgb3B0aW9uYWxQcm9wZXJ0eURlZmF1bHRzID0ge1xuICBwcm92aWRlcjogXCJcIixcbiAgYWxpYXNlczoge30sXG4gIG5vdF9mb3VuZDoge30sXG4gIC4uLmRlZmF1bHRJY29uRGltZW5zaW9uc1xufTtcbmZ1bmN0aW9uIGNoZWNrT3B0aW9uYWxQcm9wcyhpdGVtLCBkZWZhdWx0cykge1xuICBmb3IgKGNvbnN0IHByb3AgaW4gZGVmYXVsdHMpIHtcbiAgICBpZiAocHJvcCBpbiBpdGVtICYmIHR5cGVvZiBpdGVtW3Byb3BdICE9PSB0eXBlb2YgZGVmYXVsdHNbcHJvcF0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBxdWlja2x5VmFsaWRhdGVJY29uU2V0KG9iaikge1xuICBpZiAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiB8fCBvYmogPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkYXRhID0gb2JqO1xuICBpZiAodHlwZW9mIGRhdGEucHJlZml4ICE9PSBcInN0cmluZ1wiIHx8ICFvYmouaWNvbnMgfHwgdHlwZW9mIG9iai5pY29ucyAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghY2hlY2tPcHRpb25hbFByb3BzKG9iaiwgb3B0aW9uYWxQcm9wZXJ0eURlZmF1bHRzKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGljb25zID0gZGF0YS5pY29ucztcbiAgZm9yIChjb25zdCBuYW1lIGluIGljb25zKSB7XG4gICAgY29uc3QgaWNvbiA9IGljb25zW25hbWVdO1xuICAgIGlmIChcbiAgICAgIC8vIE5hbWUgY2Fubm90IGJlIGVtcHR5XG4gICAgICAhbmFtZSB8fCAvLyBNdXN0IGhhdmUgYm9keVxuICAgICAgdHlwZW9mIGljb24uYm9keSAhPT0gXCJzdHJpbmdcIiB8fCAvLyBDaGVjayBvdGhlciBwcm9wc1xuICAgICAgIWNoZWNrT3B0aW9uYWxQcm9wcyhcbiAgICAgICAgaWNvbixcbiAgICAgICAgZGVmYXVsdEV4dGVuZGVkSWNvblByb3BzXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgY29uc3QgYWxpYXNlcyA9IGRhdGEuYWxpYXNlcyB8fCAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZm9yIChjb25zdCBuYW1lIGluIGFsaWFzZXMpIHtcbiAgICBjb25zdCBpY29uID0gYWxpYXNlc1tuYW1lXTtcbiAgICBjb25zdCBwYXJlbnQgPSBpY29uLnBhcmVudDtcbiAgICBpZiAoXG4gICAgICAvLyBOYW1lIGNhbm5vdCBiZSBlbXB0eVxuICAgICAgIW5hbWUgfHwgLy8gUGFyZW50IG11c3QgYmUgc2V0IGFuZCBwb2ludCB0byBleGlzdGluZyBpY29uXG4gICAgICB0eXBlb2YgcGFyZW50ICE9PSBcInN0cmluZ1wiIHx8ICFpY29uc1twYXJlbnRdICYmICFhbGlhc2VzW3BhcmVudF0gfHwgLy8gQ2hlY2sgb3RoZXIgcHJvcHNcbiAgICAgICFjaGVja09wdGlvbmFsUHJvcHMoXG4gICAgICAgIGljb24sXG4gICAgICAgIGRlZmF1bHRFeHRlbmRlZEljb25Qcm9wc1xuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5jb25zdCBtYXRjaEljb25OYW1lID0gL15bYS16MC05XSsoLVthLXowLTldKykqJC87XG5jb25zdCBzdHJpbmdUb0ljb24gPSAodmFsdWUsIHZhbGlkYXRlLCBhbGxvd1NpbXBsZU5hbWUsIHByb3ZpZGVyID0gXCJcIikgPT4ge1xuICBjb25zdCBjb2xvblNlcGFyYXRlZCA9IHZhbHVlLnNwbGl0KFwiOlwiKTtcbiAgaWYgKHZhbHVlLnNsaWNlKDAsIDEpID09PSBcIkBcIikge1xuICAgIGlmIChjb2xvblNlcGFyYXRlZC5sZW5ndGggPCAyIHx8IGNvbG9uU2VwYXJhdGVkLmxlbmd0aCA+IDMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwcm92aWRlciA9IGNvbG9uU2VwYXJhdGVkLnNoaWZ0KCkuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKGNvbG9uU2VwYXJhdGVkLmxlbmd0aCA+IDMgfHwgIWNvbG9uU2VwYXJhdGVkLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChjb2xvblNlcGFyYXRlZC5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgbmFtZTIgPSBjb2xvblNlcGFyYXRlZC5wb3AoKTtcbiAgICBjb25zdCBwcmVmaXggPSBjb2xvblNlcGFyYXRlZC5wb3AoKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAvLyBBbGxvdyBwcm92aWRlciB3aXRob3V0ICdAJzogXCJwcm92aWRlcjpwcmVmaXg6bmFtZVwiXG4gICAgICBwcm92aWRlcjogY29sb25TZXBhcmF0ZWQubGVuZ3RoID4gMCA/IGNvbG9uU2VwYXJhdGVkWzBdIDogcHJvdmlkZXIsXG4gICAgICBwcmVmaXgsXG4gICAgICBuYW1lOiBuYW1lMlxuICAgIH07XG4gICAgcmV0dXJuIHZhbGlkYXRlICYmICF2YWxpZGF0ZUljb25OYW1lKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0O1xuICB9XG4gIGNvbnN0IG5hbWUgPSBjb2xvblNlcGFyYXRlZFswXTtcbiAgY29uc3QgZGFzaFNlcGFyYXRlZCA9IG5hbWUuc3BsaXQoXCItXCIpO1xuICBpZiAoZGFzaFNlcGFyYXRlZC5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgcHJvdmlkZXIsXG4gICAgICBwcmVmaXg6IGRhc2hTZXBhcmF0ZWQuc2hpZnQoKSxcbiAgICAgIG5hbWU6IGRhc2hTZXBhcmF0ZWQuam9pbihcIi1cIilcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0ZSAmJiAhdmFsaWRhdGVJY29uTmFtZShyZXN1bHQpID8gbnVsbCA6IHJlc3VsdDtcbiAgfVxuICBpZiAoYWxsb3dTaW1wbGVOYW1lICYmIHByb3ZpZGVyID09PSBcIlwiKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgcHJvdmlkZXIsXG4gICAgICBwcmVmaXg6IFwiXCIsXG4gICAgICBuYW1lXG4gICAgfTtcbiAgICByZXR1cm4gdmFsaWRhdGUgJiYgIXZhbGlkYXRlSWNvbk5hbWUocmVzdWx0LCBhbGxvd1NpbXBsZU5hbWUpID8gbnVsbCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCB2YWxpZGF0ZUljb25OYW1lID0gKGljb24sIGFsbG93U2ltcGxlTmFtZSkgPT4ge1xuICBpZiAoIWljb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuICEhLy8gQ2hlY2sgcHJlZml4OiBjYW5ub3QgYmUgZW1wdHksIHVubGVzcyBhbGxvd1NpbXBsZU5hbWUgaXMgZW5hYmxlZFxuICAvLyBDaGVjayBuYW1lOiBjYW5ub3QgYmUgZW1wdHlcbiAgKChhbGxvd1NpbXBsZU5hbWUgJiYgaWNvbi5wcmVmaXggPT09IFwiXCIgfHwgISFpY29uLnByZWZpeCkgJiYgISFpY29uLm5hbWUpO1xufTtcblxuY29uc3QgZGF0YVN0b3JhZ2UgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIG5ld1N0b3JhZ2UocHJvdmlkZXIsIHByZWZpeCkge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGVyLFxuICAgIHByZWZpeCxcbiAgICBpY29uczogLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgbWlzc2luZzogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0U3RvcmFnZShwcm92aWRlciwgcHJlZml4KSB7XG4gIGNvbnN0IHByb3ZpZGVyU3RvcmFnZSA9IGRhdGFTdG9yYWdlW3Byb3ZpZGVyXSB8fCAoZGF0YVN0b3JhZ2VbcHJvdmlkZXJdID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICByZXR1cm4gcHJvdmlkZXJTdG9yYWdlW3ByZWZpeF0gfHwgKHByb3ZpZGVyU3RvcmFnZVtwcmVmaXhdID0gbmV3U3RvcmFnZShwcm92aWRlciwgcHJlZml4KSk7XG59XG5mdW5jdGlvbiBhZGRJY29uU2V0KHN0b3JhZ2UsIGRhdGEpIHtcbiAgaWYgKCFxdWlja2x5VmFsaWRhdGVJY29uU2V0KGRhdGEpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBwYXJzZUljb25TZXQoZGF0YSwgKG5hbWUsIGljb24pID0+IHtcbiAgICBpZiAoaWNvbikge1xuICAgICAgc3RvcmFnZS5pY29uc1tuYW1lXSA9IGljb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JhZ2UubWlzc2luZy5hZGQobmFtZSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGFkZEljb25Ub1N0b3JhZ2Uoc3RvcmFnZSwgbmFtZSwgaWNvbikge1xuICB0cnkge1xuICAgIGlmICh0eXBlb2YgaWNvbi5ib2R5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBzdG9yYWdlLmljb25zW25hbWVdID0geyAuLi5pY29uIH07XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGxpc3RJY29ucyhwcm92aWRlciwgcHJlZml4KSB7XG4gIGxldCBhbGxJY29ucyA9IFtdO1xuICBjb25zdCBwcm92aWRlcnMgPSB0eXBlb2YgcHJvdmlkZXIgPT09IFwic3RyaW5nXCIgPyBbcHJvdmlkZXJdIDogT2JqZWN0LmtleXMoZGF0YVN0b3JhZ2UpO1xuICBwcm92aWRlcnMuZm9yRWFjaCgocHJvdmlkZXIyKSA9PiB7XG4gICAgY29uc3QgcHJlZml4ZXMgPSB0eXBlb2YgcHJvdmlkZXIyID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBwcmVmaXggPT09IFwic3RyaW5nXCIgPyBbcHJlZml4XSA6IE9iamVjdC5rZXlzKGRhdGFTdG9yYWdlW3Byb3ZpZGVyMl0gfHwge30pO1xuICAgIHByZWZpeGVzLmZvckVhY2goKHByZWZpeDIpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHByb3ZpZGVyMiwgcHJlZml4Mik7XG4gICAgICBhbGxJY29ucyA9IGFsbEljb25zLmNvbmNhdChcbiAgICAgICAgT2JqZWN0LmtleXMoc3RvcmFnZS5pY29ucykubWFwKFxuICAgICAgICAgIChuYW1lKSA9PiAocHJvdmlkZXIyICE9PSBcIlwiID8gXCJAXCIgKyBwcm92aWRlcjIgKyBcIjpcIiA6IFwiXCIpICsgcHJlZml4MiArIFwiOlwiICsgbmFtZVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGFsbEljb25zO1xufVxuXG5sZXQgc2ltcGxlTmFtZXMgPSBmYWxzZTtcbmZ1bmN0aW9uIGFsbG93U2ltcGxlTmFtZXMoYWxsb3cpIHtcbiAgaWYgKHR5cGVvZiBhbGxvdyA9PT0gXCJib29sZWFuXCIpIHtcbiAgICBzaW1wbGVOYW1lcyA9IGFsbG93O1xuICB9XG4gIHJldHVybiBzaW1wbGVOYW1lcztcbn1cbmZ1bmN0aW9uIGdldEljb25EYXRhKG5hbWUpIHtcbiAgY29uc3QgaWNvbiA9IHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiID8gc3RyaW5nVG9JY29uKG5hbWUsIHRydWUsIHNpbXBsZU5hbWVzKSA6IG5hbWU7XG4gIGlmIChpY29uKSB7XG4gICAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2UoaWNvbi5wcm92aWRlciwgaWNvbi5wcmVmaXgpO1xuICAgIGNvbnN0IGljb25OYW1lID0gaWNvbi5uYW1lO1xuICAgIHJldHVybiBzdG9yYWdlLmljb25zW2ljb25OYW1lXSB8fCAoc3RvcmFnZS5taXNzaW5nLmhhcyhpY29uTmFtZSkgPyBudWxsIDogdm9pZCAwKTtcbiAgfVxufVxuZnVuY3Rpb24gYWRkSWNvbihuYW1lLCBkYXRhKSB7XG4gIGNvbnN0IGljb24gPSBzdHJpbmdUb0ljb24obmFtZSwgdHJ1ZSwgc2ltcGxlTmFtZXMpO1xuICBpZiAoIWljb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2UoaWNvbi5wcm92aWRlciwgaWNvbi5wcmVmaXgpO1xuICBpZiAoZGF0YSkge1xuICAgIHJldHVybiBhZGRJY29uVG9TdG9yYWdlKHN0b3JhZ2UsIGljb24ubmFtZSwgZGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgc3RvcmFnZS5taXNzaW5nLmFkZChpY29uLm5hbWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5mdW5jdGlvbiBhZGRDb2xsZWN0aW9uKGRhdGEsIHByb3ZpZGVyKSB7XG4gIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHByb3ZpZGVyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcHJvdmlkZXIgPSBkYXRhLnByb3ZpZGVyIHx8IFwiXCI7XG4gIH1cbiAgaWYgKHNpbXBsZU5hbWVzICYmICFwcm92aWRlciAmJiAhZGF0YS5wcmVmaXgpIHtcbiAgICBsZXQgYWRkZWQgPSBmYWxzZTtcbiAgICBpZiAocXVpY2tseVZhbGlkYXRlSWNvblNldChkYXRhKSkge1xuICAgICAgZGF0YS5wcmVmaXggPSBcIlwiO1xuICAgICAgcGFyc2VJY29uU2V0KGRhdGEsIChuYW1lLCBpY29uKSA9PiB7XG4gICAgICAgIGlmIChhZGRJY29uKG5hbWUsIGljb24pKSB7XG4gICAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZGVkO1xuICB9XG4gIGNvbnN0IHByZWZpeCA9IGRhdGEucHJlZml4O1xuICBpZiAoIXZhbGlkYXRlSWNvbk5hbWUoe1xuICAgIHByb3ZpZGVyLFxuICAgIHByZWZpeCxcbiAgICBuYW1lOiBcImFcIlxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzdG9yYWdlID0gZ2V0U3RvcmFnZShwcm92aWRlciwgcHJlZml4KTtcbiAgcmV0dXJuICEhYWRkSWNvblNldChzdG9yYWdlLCBkYXRhKTtcbn1cbmZ1bmN0aW9uIGljb25Mb2FkZWQobmFtZSkge1xuICByZXR1cm4gISFnZXRJY29uRGF0YShuYW1lKTtcbn1cbmZ1bmN0aW9uIGdldEljb24obmFtZSkge1xuICBjb25zdCByZXN1bHQgPSBnZXRJY29uRGF0YShuYW1lKTtcbiAgcmV0dXJuIHJlc3VsdCA/IHtcbiAgICAuLi5kZWZhdWx0SWNvblByb3BzLFxuICAgIC4uLnJlc3VsdFxuICB9IDogcmVzdWx0O1xufVxuXG5jb25zdCBkZWZhdWx0SWNvblNpemVDdXN0b21pc2F0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICB3aWR0aDogbnVsbCxcbiAgaGVpZ2h0OiBudWxsXG59KTtcbmNvbnN0IGRlZmF1bHRJY29uQ3VzdG9taXNhdGlvbnMgPSBPYmplY3QuZnJlZXplKHtcbiAgLy8gRGltZW5zaW9uc1xuICAuLi5kZWZhdWx0SWNvblNpemVDdXN0b21pc2F0aW9ucyxcbiAgLy8gVHJhbnNmb3JtYXRpb25zXG4gIC4uLmRlZmF1bHRJY29uVHJhbnNmb3JtYXRpb25zXG59KTtcblxuY29uc3QgdW5pdHNTcGxpdCA9IC8oLT9bMC05Ll0qWzAtOV0rWzAtOS5dKikvZztcbmNvbnN0IHVuaXRzVGVzdCA9IC9eLT9bMC05Ll0qWzAtOV0rWzAtOS5dKiQvZztcbmZ1bmN0aW9uIGNhbGN1bGF0ZVNpemUoc2l6ZSwgcmF0aW8sIHByZWNpc2lvbikge1xuICBpZiAocmF0aW8gPT09IDEpIHtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuICBwcmVjaXNpb24gPSBwcmVjaXNpb24gfHwgMTAwO1xuICBpZiAodHlwZW9mIHNpemUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHNpemUgKiByYXRpbyAqIHByZWNpc2lvbikgLyBwcmVjaXNpb247XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cbiAgY29uc3Qgb2xkUGFydHMgPSBzaXplLnNwbGl0KHVuaXRzU3BsaXQpO1xuICBpZiAob2xkUGFydHMgPT09IG51bGwgfHwgIW9sZFBhcnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBzaXplO1xuICB9XG4gIGNvbnN0IG5ld1BhcnRzID0gW107XG4gIGxldCBjb2RlID0gb2xkUGFydHMuc2hpZnQoKTtcbiAgbGV0IGlzTnVtYmVyID0gdW5pdHNUZXN0LnRlc3QoY29kZSk7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGlzTnVtYmVyKSB7XG4gICAgICBjb25zdCBudW0gPSBwYXJzZUZsb2F0KGNvZGUpO1xuICAgICAgaWYgKGlzTmFOKG51bSkpIHtcbiAgICAgICAgbmV3UGFydHMucHVzaChjb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1BhcnRzLnB1c2goTWF0aC5jZWlsKG51bSAqIHJhdGlvICogcHJlY2lzaW9uKSAvIHByZWNpc2lvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1BhcnRzLnB1c2goY29kZSk7XG4gICAgfVxuICAgIGNvZGUgPSBvbGRQYXJ0cy5zaGlmdCgpO1xuICAgIGlmIChjb2RlID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBuZXdQYXJ0cy5qb2luKFwiXCIpO1xuICAgIH1cbiAgICBpc051bWJlciA9ICFpc051bWJlcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBzcGxpdFNWR0RlZnMoY29udGVudCwgdGFnID0gXCJkZWZzXCIpIHtcbiAgbGV0IGRlZnMgPSBcIlwiO1xuICBjb25zdCBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihcIjxcIiArIHRhZyk7XG4gIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBjb250ZW50LmluZGV4T2YoXCI+XCIsIGluZGV4KTtcbiAgICBjb25zdCBlbmQgPSBjb250ZW50LmluZGV4T2YoXCI8L1wiICsgdGFnKTtcbiAgICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBlbmRFbmQgPSBjb250ZW50LmluZGV4T2YoXCI+XCIsIGVuZCk7XG4gICAgaWYgKGVuZEVuZCA9PT0gLTEpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZzICs9IGNvbnRlbnQuc2xpY2Uoc3RhcnQgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgwLCBpbmRleCkudHJpbSgpICsgY29udGVudC5zbGljZShlbmRFbmQgKyAxKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlZnMsXG4gICAgY29udGVudFxuICB9O1xufVxuZnVuY3Rpb24gbWVyZ2VEZWZzQW5kQ29udGVudChkZWZzLCBjb250ZW50KSB7XG4gIHJldHVybiBkZWZzID8gXCI8ZGVmcz5cIiArIGRlZnMgKyBcIjwvZGVmcz5cIiArIGNvbnRlbnQgOiBjb250ZW50O1xufVxuZnVuY3Rpb24gd3JhcFNWR0NvbnRlbnQoYm9keSwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBzcGxpdCA9IHNwbGl0U1ZHRGVmcyhib2R5KTtcbiAgcmV0dXJuIG1lcmdlRGVmc0FuZENvbnRlbnQoc3BsaXQuZGVmcywgc3RhcnQgKyBzcGxpdC5jb250ZW50ICsgZW5kKTtcbn1cblxuY29uc3QgaXNVbnNldEtleXdvcmQgPSAodmFsdWUpID0+IHZhbHVlID09PSBcInVuc2V0XCIgfHwgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsdWUgPT09IFwibm9uZVwiO1xuZnVuY3Rpb24gaWNvblRvU1ZHKGljb24sIGN1c3RvbWlzYXRpb25zKSB7XG4gIGNvbnN0IGZ1bGxJY29uID0ge1xuICAgIC4uLmRlZmF1bHRJY29uUHJvcHMsXG4gICAgLi4uaWNvblxuICB9O1xuICBjb25zdCBmdWxsQ3VzdG9taXNhdGlvbnMgPSB7XG4gICAgLi4uZGVmYXVsdEljb25DdXN0b21pc2F0aW9ucyxcbiAgICAuLi5jdXN0b21pc2F0aW9uc1xuICB9O1xuICBjb25zdCBib3ggPSB7XG4gICAgbGVmdDogZnVsbEljb24ubGVmdCxcbiAgICB0b3A6IGZ1bGxJY29uLnRvcCxcbiAgICB3aWR0aDogZnVsbEljb24ud2lkdGgsXG4gICAgaGVpZ2h0OiBmdWxsSWNvbi5oZWlnaHRcbiAgfTtcbiAgbGV0IGJvZHkgPSBmdWxsSWNvbi5ib2R5O1xuICBbZnVsbEljb24sIGZ1bGxDdXN0b21pc2F0aW9uc10uZm9yRWFjaCgocHJvcHMpID0+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvbnMgPSBbXTtcbiAgICBjb25zdCBoRmxpcCA9IHByb3BzLmhGbGlwO1xuICAgIGNvbnN0IHZGbGlwID0gcHJvcHMudkZsaXA7XG4gICAgbGV0IHJvdGF0aW9uID0gcHJvcHMucm90YXRlO1xuICAgIGlmIChoRmxpcCkge1xuICAgICAgaWYgKHZGbGlwKSB7XG4gICAgICAgIHJvdGF0aW9uICs9IDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm1hdGlvbnMucHVzaChcbiAgICAgICAgICBcInRyYW5zbGF0ZShcIiArIChib3gud2lkdGggKyBib3gubGVmdCkudG9TdHJpbmcoKSArIFwiIFwiICsgKDAgLSBib3gudG9wKS50b1N0cmluZygpICsgXCIpXCJcbiAgICAgICAgKTtcbiAgICAgICAgdHJhbnNmb3JtYXRpb25zLnB1c2goXCJzY2FsZSgtMSAxKVwiKTtcbiAgICAgICAgYm94LnRvcCA9IGJveC5sZWZ0ID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZGbGlwKSB7XG4gICAgICB0cmFuc2Zvcm1hdGlvbnMucHVzaChcbiAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAoMCAtIGJveC5sZWZ0KS50b1N0cmluZygpICsgXCIgXCIgKyAoYm94LmhlaWdodCArIGJveC50b3ApLnRvU3RyaW5nKCkgKyBcIilcIlxuICAgICAgKTtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5wdXNoKFwic2NhbGUoMSAtMSlcIik7XG4gICAgICBib3gudG9wID0gYm94LmxlZnQgPSAwO1xuICAgIH1cbiAgICBsZXQgdGVtcFZhbHVlO1xuICAgIGlmIChyb3RhdGlvbiA8IDApIHtcbiAgICAgIHJvdGF0aW9uIC09IE1hdGguZmxvb3Iocm90YXRpb24gLyA0KSAqIDQ7XG4gICAgfVxuICAgIHJvdGF0aW9uID0gcm90YXRpb24gJSA0O1xuICAgIHN3aXRjaCAocm90YXRpb24pIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdGVtcFZhbHVlID0gYm94LmhlaWdodCAvIDIgKyBib3gudG9wO1xuICAgICAgICB0cmFuc2Zvcm1hdGlvbnMudW5zaGlmdChcbiAgICAgICAgICBcInJvdGF0ZSg5MCBcIiArIHRlbXBWYWx1ZS50b1N0cmluZygpICsgXCIgXCIgKyB0ZW1wVmFsdWUudG9TdHJpbmcoKSArIFwiKVwiXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICB0cmFuc2Zvcm1hdGlvbnMudW5zaGlmdChcbiAgICAgICAgICBcInJvdGF0ZSgxODAgXCIgKyAoYm94LndpZHRoIC8gMiArIGJveC5sZWZ0KS50b1N0cmluZygpICsgXCIgXCIgKyAoYm94LmhlaWdodCAvIDIgKyBib3gudG9wKS50b1N0cmluZygpICsgXCIpXCJcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHRlbXBWYWx1ZSA9IGJveC53aWR0aCAvIDIgKyBib3gubGVmdDtcbiAgICAgICAgdHJhbnNmb3JtYXRpb25zLnVuc2hpZnQoXG4gICAgICAgICAgXCJyb3RhdGUoLTkwIFwiICsgdGVtcFZhbHVlLnRvU3RyaW5nKCkgKyBcIiBcIiArIHRlbXBWYWx1ZS50b1N0cmluZygpICsgXCIpXCJcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChyb3RhdGlvbiAlIDIgPT09IDEpIHtcbiAgICAgIGlmIChib3gubGVmdCAhPT0gYm94LnRvcCkge1xuICAgICAgICB0ZW1wVmFsdWUgPSBib3gubGVmdDtcbiAgICAgICAgYm94LmxlZnQgPSBib3gudG9wO1xuICAgICAgICBib3gudG9wID0gdGVtcFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGJveC53aWR0aCAhPT0gYm94LmhlaWdodCkge1xuICAgICAgICB0ZW1wVmFsdWUgPSBib3gud2lkdGg7XG4gICAgICAgIGJveC53aWR0aCA9IGJveC5oZWlnaHQ7XG4gICAgICAgIGJveC5oZWlnaHQgPSB0ZW1wVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0cmFuc2Zvcm1hdGlvbnMubGVuZ3RoKSB7XG4gICAgICBib2R5ID0gd3JhcFNWR0NvbnRlbnQoXG4gICAgICAgIGJvZHksXG4gICAgICAgICc8ZyB0cmFuc2Zvcm09XCInICsgdHJhbnNmb3JtYXRpb25zLmpvaW4oXCIgXCIpICsgJ1wiPicsXG4gICAgICAgIFwiPC9nPlwiXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGN1c3RvbWlzYXRpb25zV2lkdGggPSBmdWxsQ3VzdG9taXNhdGlvbnMud2lkdGg7XG4gIGNvbnN0IGN1c3RvbWlzYXRpb25zSGVpZ2h0ID0gZnVsbEN1c3RvbWlzYXRpb25zLmhlaWdodDtcbiAgY29uc3QgYm94V2lkdGggPSBib3gud2lkdGg7XG4gIGNvbnN0IGJveEhlaWdodCA9IGJveC5oZWlnaHQ7XG4gIGxldCB3aWR0aDtcbiAgbGV0IGhlaWdodDtcbiAgaWYgKGN1c3RvbWlzYXRpb25zV2lkdGggPT09IG51bGwpIHtcbiAgICBoZWlnaHQgPSBjdXN0b21pc2F0aW9uc0hlaWdodCA9PT0gbnVsbCA/IFwiMWVtXCIgOiBjdXN0b21pc2F0aW9uc0hlaWdodCA9PT0gXCJhdXRvXCIgPyBib3hIZWlnaHQgOiBjdXN0b21pc2F0aW9uc0hlaWdodDtcbiAgICB3aWR0aCA9IGNhbGN1bGF0ZVNpemUoaGVpZ2h0LCBib3hXaWR0aCAvIGJveEhlaWdodCk7XG4gIH0gZWxzZSB7XG4gICAgd2lkdGggPSBjdXN0b21pc2F0aW9uc1dpZHRoID09PSBcImF1dG9cIiA/IGJveFdpZHRoIDogY3VzdG9taXNhdGlvbnNXaWR0aDtcbiAgICBoZWlnaHQgPSBjdXN0b21pc2F0aW9uc0hlaWdodCA9PT0gbnVsbCA/IGNhbGN1bGF0ZVNpemUod2lkdGgsIGJveEhlaWdodCAvIGJveFdpZHRoKSA6IGN1c3RvbWlzYXRpb25zSGVpZ2h0ID09PSBcImF1dG9cIiA/IGJveEhlaWdodCA6IGN1c3RvbWlzYXRpb25zSGVpZ2h0O1xuICB9XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgY29uc3Qgc2V0QXR0ciA9IChwcm9wLCB2YWx1ZSkgPT4ge1xuICAgIGlmICghaXNVbnNldEtleXdvcmQodmFsdWUpKSB7XG4gICAgICBhdHRyaWJ1dGVzW3Byb3BdID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH07XG4gIHNldEF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XG4gIHNldEF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KTtcbiAgY29uc3Qgdmlld0JveCA9IFtib3gubGVmdCwgYm94LnRvcCwgYm94V2lkdGgsIGJveEhlaWdodF07XG4gIGF0dHJpYnV0ZXMudmlld0JveCA9IHZpZXdCb3guam9pbihcIiBcIik7XG4gIHJldHVybiB7XG4gICAgYXR0cmlidXRlcyxcbiAgICB2aWV3Qm94LFxuICAgIGJvZHlcbiAgfTtcbn1cblxuY29uc3QgcmVnZXggPSAvXFxzaWQ9XCIoXFxTKylcIi9nO1xuY29uc3QgcmFuZG9tUHJlZml4ID0gXCJJY29uaWZ5SWRcIiArIERhdGUubm93KCkudG9TdHJpbmcoMTYpICsgKE1hdGgucmFuZG9tKCkgKiAxNjc3NzIxNiB8IDApLnRvU3RyaW5nKDE2KTtcbmxldCBjb3VudGVyID0gMDtcbmZ1bmN0aW9uIHJlcGxhY2VJRHMoYm9keSwgcHJlZml4ID0gcmFuZG9tUHJlZml4KSB7XG4gIGNvbnN0IGlkcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlIChtYXRjaCA9IHJlZ2V4LmV4ZWMoYm9keSkpIHtcbiAgICBpZHMucHVzaChtYXRjaFsxXSk7XG4gIH1cbiAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgY29uc3Qgc3VmZml4ID0gXCJzdWZmaXhcIiArIChNYXRoLnJhbmRvbSgpICogMTY3NzcyMTYgfCBEYXRlLm5vdygpKS50b1N0cmluZygxNik7XG4gIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgIGNvbnN0IG5ld0lEID0gdHlwZW9mIHByZWZpeCA9PT0gXCJmdW5jdGlvblwiID8gcHJlZml4KGlkKSA6IHByZWZpeCArIChjb3VudGVyKyspLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZXNjYXBlZElEID0gaWQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xuICAgIGJvZHkgPSBib2R5LnJlcGxhY2UoXG4gICAgICAvLyBBbGxvd2VkIGNoYXJhY3RlcnMgYmVmb3JlIGlkOiBbIztcIl1cbiAgICAgIC8vIEFsbG93ZWQgY2hhcmFjdGVycyBhZnRlciBpZDogWylcIl0sIC5bYS16XVxuICAgICAgbmV3IFJlZ0V4cCgnKFsjO1wiXSkoJyArIGVzY2FwZWRJRCArICcpKFtcIildfFxcXFwuW2Etel0pJywgXCJnXCIpLFxuICAgICAgXCIkMVwiICsgbmV3SUQgKyBzdWZmaXggKyBcIiQzXCJcbiAgICApO1xuICB9KTtcbiAgYm9keSA9IGJvZHkucmVwbGFjZShuZXcgUmVnRXhwKHN1ZmZpeCwgXCJnXCIpLCBcIlwiKTtcbiAgcmV0dXJuIGJvZHk7XG59XG5cbmNvbnN0IHN0b3JhZ2UgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIHNldEFQSU1vZHVsZShwcm92aWRlciwgaXRlbSkge1xuICBzdG9yYWdlW3Byb3ZpZGVyXSA9IGl0ZW07XG59XG5mdW5jdGlvbiBnZXRBUElNb2R1bGUocHJvdmlkZXIpIHtcbiAgcmV0dXJuIHN0b3JhZ2VbcHJvdmlkZXJdIHx8IHN0b3JhZ2VbXCJcIl07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFQSUNvbmZpZyhzb3VyY2UpIHtcbiAgbGV0IHJlc291cmNlcztcbiAgaWYgKHR5cGVvZiBzb3VyY2UucmVzb3VyY2VzID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmVzb3VyY2VzID0gW3NvdXJjZS5yZXNvdXJjZXNdO1xuICB9IGVsc2Uge1xuICAgIHJlc291cmNlcyA9IHNvdXJjZS5yZXNvdXJjZXM7XG4gICAgaWYgKCEocmVzb3VyY2VzIGluc3RhbmNlb2YgQXJyYXkpIHx8ICFyZXNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC8vIEFQSSBob3N0c1xuICAgIHJlc291cmNlcyxcbiAgICAvLyBSb290IHBhdGhcbiAgICBwYXRoOiBzb3VyY2UucGF0aCB8fCBcIi9cIixcbiAgICAvLyBVUkwgbGVuZ3RoIGxpbWl0XG4gICAgbWF4VVJMOiBzb3VyY2UubWF4VVJMIHx8IDUwMCxcbiAgICAvLyBUaW1lb3V0IGJlZm9yZSBuZXh0IGhvc3QgaXMgdXNlZC5cbiAgICByb3RhdGU6IHNvdXJjZS5yb3RhdGUgfHwgNzUwLFxuICAgIC8vIFRpbWVvdXQgYmVmb3JlIGZhaWxpbmcgcXVlcnkuXG4gICAgdGltZW91dDogc291cmNlLnRpbWVvdXQgfHwgNWUzLFxuICAgIC8vIFJhbmRvbWlzZSBkZWZhdWx0IEFQSSBlbmQgcG9pbnQuXG4gICAgcmFuZG9tOiBzb3VyY2UucmFuZG9tID09PSB0cnVlLFxuICAgIC8vIFN0YXJ0IGluZGV4XG4gICAgaW5kZXg6IHNvdXJjZS5pbmRleCB8fCAwLFxuICAgIC8vIFJlY2VpdmUgZGF0YSBhZnRlciB0aW1lIG91dCAodXNlZCBpZiB0aW1lIG91dCBraWNrcyBpbiBmaXJzdCwgdGhlbiBBUEkgbW9kdWxlIHNlbmRzIGRhdGEgYW55d2F5KS5cbiAgICBkYXRhQWZ0ZXJUaW1lb3V0OiBzb3VyY2UuZGF0YUFmdGVyVGltZW91dCAhPT0gZmFsc2VcbiAgfTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmNvbnN0IGNvbmZpZ1N0b3JhZ2UgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmNvbnN0IGZhbGxCYWNrQVBJU291cmNlcyA9IFtcbiAgXCJodHRwczovL2FwaS5zaW1wbGVzdmcuY29tXCIsXG4gIFwiaHR0cHM6Ly9hcGkudW5pc3ZnLmNvbVwiXG5dO1xuY29uc3QgZmFsbEJhY2tBUEkgPSBbXTtcbndoaWxlIChmYWxsQmFja0FQSVNvdXJjZXMubGVuZ3RoID4gMCkge1xuICBpZiAoZmFsbEJhY2tBUElTb3VyY2VzLmxlbmd0aCA9PT0gMSkge1xuICAgIGZhbGxCYWNrQVBJLnB1c2goZmFsbEJhY2tBUElTb3VyY2VzL