Files
new-school-iot-admin/lib/fast-crud/dist/fast-crud.umd.js
T
admin 792131228a Migrate old admin modules and local crud deps
Port pages for data forms, score admin, student maintenance,
vacation records, menu routing, and workbench. Add team switching,
dynamic menu loading, viewport scaling, and bundled local fast-crud
packages.
2026-11-02 12:21:25 +08:00

130 lines
4.2 MiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var CD=Object.defineProperty;var ED=(oe,ue,l)=>ue in oe?CD(oe,ue,{enumerable:!0,configurable:!0,writable:!0,value:l}):oe[ue]=l;var Te=(oe,ue,l)=>(ED(oe,typeof ue!="symbol"?ue+"":ue,l),l),of=(oe,ue,l)=>{if(!ue.has(oe))throw TypeError("Cannot "+l)};var V=(oe,ue,l)=>(of(oe,ue,"read from private field"),l?l.call(oe):ue.get(oe)),Ve=(oe,ue,l)=>{if(ue.has(oe))throw TypeError("Cannot add the same private member more than once");ue instanceof WeakSet?ue.add(oe):ue.set(oe,l)},Be=(oe,ue,l,X)=>(of(oe,ue,"write to private field"),X?X.call(oe,l):ue.set(oe,l),l);var Mo=(oe,ue,l,X)=>({set _(Lt){Be(oe,ue,Lt,l)},get _(){return V(oe,ue,X)}}),Ee=(oe,ue,l)=>(of(oe,ue,"access private method"),l);(function(oe,ue){typeof exports=="object"&&typeof module<"u"?ue(exports,require("@fast-crud/ui-interface"),require("vue"),require("lodash-es"),require("dayjs"),require("@iconify/vue"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","@fast-crud/ui-interface","vue","lodash-es","dayjs","@iconify/vue","vue-router"],ue):(oe=typeof globalThis<"u"?globalThis:oe||self,ue(oe.FastCrud={},oe.FsUiInterface,oe.Vue,oe._,oe.dayjs,oe.IconifyVue,oe.VueRouter))})(this,function(oe,ue,l,X,Lt,fp,df){var ap,fi,Zr,Ar,Qr,en,ui,di,Pt,tn,Rt,ut,Me,fr,Dr,ar,$t,rn,Wt,nn,an,Rr,sn,ia,ur,_s,lf,Oa,Mn,ys,Or,Po,cp,Ba,hi,ks,wn,sa,_n,oa,bs,cf,lD,mi,Vo,pi,Uo,st,dt,Cs,ff,Na,As,yn,la,Es,uf;"use strict";function up(){var t;return(t=new Error().stack)==null?void 0:t.split(`
`)[3]}const ln=(...e)=>{};function $o(...e){console.log.apply(this,arguments)}function dp(...e){console.warn.apply(this,arguments)}function hp(...e){console.error.apply(this,arguments)}const mp=(...e)=>{hp("%c [error]","font-weight: 600;",...e)},pp=(...e)=>{dp("%c [warn]","font-weight: 600;",...e)},hf=(...e)=>{$o("%c [info]","font-weight: 600;",...e)},gp=(...e)=>{if(!console.log)return;const t=up();{const r=["%c [debug]","font-weight: 600;",...e];$o(...r);const n=["%c "+t,"color:#999"];$o(...n)}},Re={debug:ln,info:ln,warn:ln,error:ln,log:ln};function mf(e={}){const t=(e==null?void 0:e.level)||"info";switch(Re.debug=ln,Re.info=ln,Re.warn=ln,Re.error=ln,Re.log=ln,t){case"debug":Re.debug=gp;case"info":Re.info=hf,Re.log=hf;case"warn":Re.warn=pp;case"error":Re.error=mp;break}}mf();function xp(e){return e==null||e===""}function vp(...e){for(const t of e)if(!(t==null||t===""))return!1;return!1}function wp(...e){for(const t of e)if(t==null||t==="")return!0;return!1}const Wo={isEmpty:xp,isAllEmpty:vp,hasEmpty:wp};function _p(e,t=!1){}function Ho(e){return l.defineAsyncComponent({loader:e,onError(t,r,n,a){console.error("load error",t),t.message.match(/fetch/)&&a<=3?r():n()}})}function yp(e,t,r,n){const a=Ho(r);e.component(t,a,n)}function kp(e,t,r,n,a){const i=xi(t,n,a);X.forEach(i,(s,o)=>{r&&r.indexOf(o)!=-1||yp(e,o,s,null)})}function bp(e,t,r,n,a){const i=xi(t,n,a);X.forEach(i,(s,o)=>{r&&r.indexOf(o)||e.component(o,s.default)})}function xi(e,t,r){const n={};return t==null&&(t=/.*\/(.+).(vue|jsx|tsx)/),X.forEach(e,(a,i)=>{const s=i.match(t);if((s==null?void 0:s.length)<=1){console.error(`"${i}" can't pick a component name,this component can't register`);return}let o=s[1];o=X.camelCase(o),o=X.upperFirst(o),r&&(a=r(a)),n[o]=a}),n}function Cp(e){const t=xi(e),r={};return X.forEach(t,(n,a)=>{r[a]=Ho(n)}),r}function Ep(e){const t=xi(e),r={};return X.forEach(t,(n,a)=>{r[a]=n.default}),r}const Sp={transformFromGlob:xi,installAsyncComponents:kp,installSyncComponents:bp,createAsyncComponent:Ho,loadAsyncComponentFromGlob:Cp,loadComponentFromGlob:Ep};class jo{constructor(t){Te(this,"remoteStorage");Te(this,"$router");Te(this,"tableName");Te(this,"keyType");Te(this,"id");this.remoteStorage=t.remoteStorage,this.$router=t.$router,this.tableName=t.tableName,this.keyType=t.keyType,this.id=t.id}getTableId(){const t=this.tableName;let r="fs-crud";return this.id&&(r=r+"."+this.id),t&&typeof t=="string"?r+"."+t:r}async getTable(){const t=this.getTableId(),r=localStorage.getItem(t);if(r!=null)return JSON.parse(r)}async saveTable(t){const r=this.getTableId();localStorage.setItem(r,JSON.stringify(t))}async clearTable(){const t=this.getTableId();localStorage.removeItem(t)}async updateTableValue(t,r){if(r==null&&(r=this.getItemKey()),this.remoteStorage){await this.remoteStorage.set(r,t);return}let n=await this.getTable();n==null&&(n={}),n[r]=t,await this.saveTable(n)}getItemKey(){const t=this.$router,r=this.keyType;let n=location.href;return t&&(n=t.path),this.id&&(n=n+"."+this.id),r==null||typeof r!="string"||!r?n:n+"."+r}async getTableValue(t){if(t==null&&(t=this.getItemKey()),this.remoteStorage)return await this.remoteStorage.get(t);const r=await this.getTable();return r==null?null:r[t]}async clearTableValue(t){if(t==null&&(t=this.getItemKey()),this.remoteStorage){await this.remoteStorage.remove(t);return}const r=await this.getTable();r!=null&&(delete r[t],await this.saveTable(r))}}const Tp=/\D/,Fp=/^[a-zA-Z_$]+([\w_$]*)$/,Ap=/"/g;function pf(...e){return e.reduce((t,r)=>t?!r||r.startsWith("[")?`${t}${r}`:`${t}.${r}`:r,"")}function gf(e){function t(r,...n){if(n=n.filter(a=>a!==void 0),e.isString(r))return pf(...n,r);if(Array.isArray(r))return n=pf(...n),r.reduce((a,i)=>{const s=typeof i;return s==="number"?i<0||i%1!==0?`${a}["${i}"]`:`${a}[${i}]`:s!=="string"?`${a}["${i}"]`:i?Tp.test(i)?Fp.test(i)?a?`${a}.${i}`:`${a}${i}`:`${a}["${i.replace(Ap,'\\"')}"]`:`${a}[${i}]`:`${a}[""]`},n)}return t}gf.notChainable=!0;const Dp=/^[a-zA-Z_$]+([\w_$]*)$/,Rp=/"/g,xf=Object.prototype.hasOwnProperty;function Op(e){const t=typeof e;return e!=null&&(t=="object"||t=="function")}function Bp(e){const t=gf(e);function r(i){const{options:s,obj:o,callback:c}=i;s.pathFormatArray=s.pathFormat=="array",i.depth=0;let f=!1;const u=()=>(f=!0,!1);for(;i&&!f;){if(!i.inited){if(i.inited=!0,i.info=wf(i.value,s.ownPropertiesOnly),s.checkCircular&&(i.circularParentIndex=-1,i.circularParent=null,i.isCircular=!1,i.info.isObject&&!i.info.isEmpty)){let d=i.parent;for(;d;){if(d.value===i.value){i.isCircular=!0,i.circularParent=d,i.circularParentIndex=i.depth-d.depth-1;break}d=d.parent}}if(i.children=[],s.childrenPath&&s.childrenPath.forEach((d,h)=>{const m=e.get(i.value,d),g=wf(m,s.ownPropertiesOnly);g.isEmpty||i.children.push([d,s.strChildrenPath[h],m,g])}),i.isLeaf=i.isCircular||s.childrenPath!==void 0&&!i.children.length||!i.info.isObject||i.info.isEmpty,i.needCallback=(i.depth||s.includeRoot)&&(!s.leavesOnly||i.isLeaf),i.needCallback){const d=new vf(o,s,u);d.setItem(i,!1);try{i.res=c(i.value,i.key,i.parent&&i.parent.value,d)}catch(h){throw h.message&&(h.message+=`
callback failed before deep iterate at:
`+t(i.path)),h}}if(f)break;i.res!==!1&&!f&&!i.isCircular&&i.info.isObject&&(s.childrenPath!==void 0&&(i.depth||!s.rootIsChildren)?(i.childrenItems=[],i.children.length&&i.children.forEach(([d,h,m,g])=>{i.childrenItems=[...i.childrenItems,...g.isArray?n(i,m,s,d,h):a(i,m,s,d,h)]})):i.childrenItems=i.info.isArray?n(i,i.value,s,[],""):a(i,i.value,s,[],"")),i.currentChildIndex=-1}if(i.childrenItems&&i.currentChildIndex<i.childrenItems.length-1){i.currentChildIndex++,i.childrenItems[i.currentChildIndex].parentItem=i,i=i.childrenItems[i.currentChildIndex];continue}if(i.needCallback&&s.callbackAfterIterate){const d=new vf(o,s,u);d.setItem(i,!0);try{c(i.value,i.key,i.parent&&i.parent.value,d)}catch(h){throw h.message&&(h.message+=`
callback failed after deep iterate at:
`+t(i.path)),h}}i=i.parentItem}}return r;function n(i,s,o,c,f){let u;o.pathFormatArray||(u=i.strPath||"",f&&u&&!f.startsWith("[")&&(u+="."),u+=f||"");const d=[];for(let h=0;h<s.length;h++){const m=s[h];if(m===void 0&&!(h in s))continue;let g;const p=!o.pathFormatArray;p&&(g=`${u}[${h}]`),d.push({value:m,key:h+"",path:[...i.path||[],...c,h+""],strPath:g,depth:i.depth+1,parent:{value:i.value,key:i.key,path:p?i.strPath:i.path,parent:i.parent,depth:i.depth,info:i.info},childrenPath:c.length&&c||void 0,strChildrenPath:f||void 0})}return d}function a(i,s,o,c,f){let u;o.pathFormatArray||(u=i.strPath||"",f&&u&&!f.startsWith("[")&&(u+="."),u+=f||"");const d=[],h=!o.pathFormatArray;for(const m in s){if(o.ownPropertiesOnly&&!xf.call(s,m))continue;let g;h&&(Dp.test(m)?u?g=`${u}.${m}`:g=`${m}`:g=`${u}["${m.replace(Rp,'\\"')}"]`),d.push({value:s[m],key:m,path:[...i.path||[],...c,m],strPath:g,depth:i.depth+1,parent:{value:i.value,key:i.key,path:h?i.strPath:i.path,parent:i.parent,depth:i.depth,info:i.info},childrenPath:c.length&&c||void 0,strChildrenPath:f||void 0})}return d}}class vf{constructor(t,r,n){Te(this,"_item");Te(this,"obj");Te(this,"_options");Te(this,"afterIterate");this.obj=t,this._options=r,this.break=n}setItem(t,r){this._item=t,this.afterIterate=r}get path(){return this._options.pathFormatArray?this._item.path:this._item.strPath}get parent(){return this._item.parent}get parents(){if(!this._item._parents){this._item._parents=[];let t=this._item.parent;for(;t;)this._item._parents[t.depth]=t,t=t.parent}return this._item._parents}get depth(){return this._item.depth}get isLeaf(){return this._item.isLeaf}get isCircular(){return this._item.isCircular}get circularParentIndex(){return this._item.circularParentIndex}get circularParent(){return this._item.circularParent}get childrenPath(){return this._options.childrenPath!==void 0&&(this._options.pathFormatArray?this._item.childrenPath:this._item.strChildrenPath)||void 0}get info(){return this._item.info}}function Np(e,t){for(const r in e)if(!t||xf.call(e,r))return!1;return!0}function wf(e,t){const r={isObject:Op(e)};return r.isArray=r.isObject&&Array.isArray(e),r.isEmpty=r.isArray?!e.length:r.isObject?Np(e,t):!0,r}function Ip(e){const t=Bp(e);function r(n,a,i){if(a===void 0&&(a=X.identity),i=X.merge({includeRoot:!Array.isArray(n),pathFormat:"string",checkCircular:!1,leavesOnly:!1,ownPropertiesOnly:!0},i||{}),i.childrenPath!==void 0){if(!i.includeRoot&&i.rootIsChildren===void 0&&(i.rootIsChildren=Array.isArray(n)),!X.isString(i.childrenPath)&&!Array.isArray(i.childrenPath))throw Error("childrenPath can be string or array");X.isString(i.childrenPath)&&(i.childrenPath=[i.childrenPath]),i.strChildrenPath=i.childrenPath,i.childrenPath=[];for(let s=i.strChildrenPath.length-1;s>=0;s--)i.childrenPath[s]=X.toPath(i.strChildrenPath[s])}return t({value:n,callback:a,options:i,obj:n}),n}return r}const _f={forEachDeep:Ip({isString:X.isString})},Pp={omit(e,...t){const r=Object.keys(e.value),n={};for(const a of r)a!=="loading"&&(t.indexOf(a)>=0||(n[a]=e.value[a]));return n}};function yf(e){const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.opacity="0",t.style.pointerEvents="none",t.style.zIndex="-1",document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,99999);const r=document.execCommand("copy");return document.body.removeChild(t),r?!0:(console.error("传统复制方法失败"),!1)}catch(r){return console.error("传统复制方法出错: ",r),document.body.removeChild(t),!1}}async function Lp(e){try{return!navigator.clipboard||!navigator.clipboard.writeText?(console.warn("Clipboard API not supported, falling back to traditional method"),yf(e)):(await navigator.clipboard.writeText(e),!0)}catch(t){return console.error("复制失败: ",t),yf(e)}}async function Mp(){return new Promise((e,t)=>{const r=document.createElement("textarea");r.style.position="fixed",r.style.top="0",r.style.left="0",r.style.opacity="0",document.body.appendChild(r);try{if(r.focus(),document.execCommand("paste")){const a=r.value;document.body.removeChild(r),e(a)}else document.body.removeChild(r),t(new Error("传统读取方法失败"))}finally{document.body.removeChild(r)}})}async function Vp(){try{if(!navigator.clipboard||!navigator.clipboard.readText)throw console.warn("Clipboard API not supported for reading"),new Error("浏览器不支持读取剪贴板");if(navigator.permissions&&(await navigator.permissions.query({name:"clipboard-read"})).state==="denied")throw new Error("剪贴板读取权限被拒绝");return await navigator.clipboard.readText()}catch(e){return console.error("读取剪贴板失败: ",e),await Mp()}}const zo=l.reactive({store:{}});function Up(e,t="__default__"){zo.store[t]=e}function $p(e="__default__"){return zo.store[e]}function Wp(e="__default__"){zo.store[e]=""}const Cn={logger:Re,strings:Wo,trace:_p,vite:Sp,store:jo,deepdash:_f,dash:Pp,clipboard:Object.freeze(Object.defineProperty({__proto__:null,clearMemoryClipboard:Wp,copyToClipboard:Lp,copyToMemory:Up,readToClipboard:Vp,readToMemory:$p},Symbol.toStringTag,{value:"Module"}))},vi={commonOptions(e){return{}},defaultOptions(e){const{t,crudOptionsRef:r}=e,n=i=>l.computed(()=>t(i)),a=ue.uiContext.get();return{settings:{plugins:{mobile:{enabled:!0,props:{isMobile:l.computed(()=>window.innerWidth<768)}}}},mode:{},status:{},search:{container:{is:"fs-search-layout-default",collapse:!0,col:{span:4}},formItem:{wrapperCol:{style:{}}},options:{...a.form.inlineLayout,showFeedback:!1},onValidateError({trigger:i}){i==="search"&&a.notification.error({message:t("fs.search.error.message")})},collapse:!0,show:!0,buttons:{search:{className:{"fs-search-btn-search":!0},icon:a.icons.search},reset:{className:{"fs-search-btn-reset":!0},icon:a.icons.refresh}}},form:{pasteKey:"__default__",labelPlacement:"left",labelPosition:"right",labelWidth:"120px",style:{"grid-template-columns":"50% 50%"},row:{gutter:10},col:{span:12},labelAlign:"right",labelCol:{span:4},wrapperCol:{span:18},wrapper:{is:a.dialog.name,...a.formWrapper.buildWidthBind(a.dialog.name,"960px"),...a.formWrapper.buildInitBind(a.dialog.name),dragenabled:!0,destroyOnClose:!0,...a.dialog.footer(),buttons:{copy:{text:n("fs.form.copy"),order:1,click:async({form:i})=>{var o,c;const s=(c=(o=r.value)==null?void 0:o.form)==null?void 0:c.pasteKey;Cn.clipboard.copyToMemory(JSON.stringify(i),s),a.message.success(t("fs.form.copySuccess"))}},paste:{text:n("fs.form.paste"),order:2,badge:l.computed(()=>{var o,c;const i=(c=(o=r.value)==null?void 0:o.form)==null?void 0:c.pasteKey,s=Cn.clipboard.readToMemory(i);return{[a.badge.value]:s?1:0,[a.badge.dot]:!!s}}),click:async({form:i})=>{var c,f;const s=(f=(c=r.value)==null?void 0:c.form)==null?void 0:f.pasteKey,o=Cn.clipboard.readToMemory(s);if(o)try{const u=JSON.parse(o);X.merge(i,u)}catch(u){console.error(u)}finally{Cn.clipboard.clearMemoryClipboard(s)}}},cancel:{text:n("fs.form.cancel"),order:4,click:({doClose:i})=>{i()}},reset:{text:n("fs.form.reset"),order:3,click:({reset:i})=>{i()}},ok:{text:n("fs.form.ok"),order:5,type:"primary",click:async({submit:i})=>{await i()}}}}},addForm:{mode:"add",wrapper:{title:n("fs.addForm.title")}},editForm:{mode:"edit",wrapper:{title:n("fs.editForm.title")}},viewForm:{mode:"view",wrapper:{title:n("fs.viewForm.title"),buttons:{reset:{show:!1},cancel:{show:!1}}}},rowHandle:{width:250,title:n("fs.rowHandle.title"),order:1e3,dropdown:{more:{text:null,type:"primary",size:"small",icon:a.icons.more}}},pagination:{background:!0,pageSize:20,[a.pagination.currentPage]:1,[a.pagination.total]:1,pageSizes:[5,10,20,50],layout:"total, sizes, prev, pager, next, jumper",showSizeChanger:!0,showQuickJumper:!0,showSizePicker:!0,showTotal:i=>t("fs.pagination.showTotal",[i])},table:{show:!0,height:"100%",rowKey:a.table.defaultRowKey,stripe:!0,border:!0,bordered:!0,singleLine:!1,scrollTopOnRefreshed:!0,editable:{enabled:!1,rowKey:"$editable_id"},pagination:!1},toolbar:{compact:!0,buttons:{search:{className:{"fs-toolbar-btn-search":!0}},compact:{className:{"fs-toolbar-btn-compact":!0}},refresh:{className:{"fs-toolbar-btn-refresh":!0}},export:{className:{"fs-toolbar-btn-export":!0}},columns:{className:{"fs-toolbar-btn-columns":!0}}}},actionbar:{buttons:{add:{className:{"fs-actionbar-btn-add":!0},type:"primary",plain:!0,icon:a.icons.add,text:n("fs.actionbar.add")}}}}}};function Go(e,t){return e.type!=="antdv"?{}:{labelCol:{span:t},wrapperCol:{span:23-t}}}function Hp(){const{ui:e}=ue.useUi();return{colspan:{form:{col:{span:24},...Go(e,2)}},colspan3:{form:{col:{span:24},...Go(e,3)}},colspan4:{form:{col:{span:24},...Go(e,4)}}}}const jp=Object.freeze(Object.defineProperty({__proto__:null,default:Hp},Symbol.toStringTag,{value:"Module"}));function zp(){const e=ue.uiContext.get();return{button:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text"}}},link:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text",...e.button.linkType}}}}}const Gp=Object.freeze(Object.defineProperty({__proto__:null,default:zp},Symbol.toStringTag,{value:"Module"}));function Xp(){const e=ue.uiContext.get();return{"dict-cascader":{search:{component:{clearable:!0}},form:{component:{name:"fs-dict-cascader",vModel:e.cascader.modelValue,[e.cascader.clearable]:!0}},column:{component:{name:"fs-dict-cascader-format"}}}}}const Kp=Object.freeze(Object.defineProperty({__proto__:null,default:Xp},Symbol.toStringTag,{value:"Module"})),kf={name:"zh-cn",fs:{component:{select:{placeholder:"请选择"}},addForm:{title:"添加"},editForm:{title:"编辑"},viewForm:{title:"查看"},rowHandle:{title:"操作",remove:{text:"删除",confirmTitle:"删除提示",confirmMessage:"您确定要删除该记录吗?",success:"删除成功!",confirmText:"确定",cancelText:"取消"},copy:{text:"复制"},edit:{text:"编辑"},view:{text:"查看"}},form:{cancel:"取消",ok:"确定",reset:"重置",saveRemind:{title:"提示",content:"表单数据有变更,是否保存",cancel:"不保存",ok:"保存"},copy:"复制",paste:"粘贴",copySuccess:"表单数据已复制,您可以在添加对话框中粘贴"},actionbar:{add:"添加"},toolbar:{columnFilter:{title:"列设置",fixed:"固定",order:"排序",reset:"还原",confirm:"确定",unnamed:"未命名"},search:{title:"查询显示"},refresh:{title:"刷新"},compact:{title:"紧凑模式"},export:{title:"下载"},columns:{title:"列设置"}},search:{container:{collapseButton:{text:{collapse:"收起",expand:"展开"}}},search:{text:"查询"},reset:{text:"重置"},error:{message:"查询表单校验失败"},tabs:{all:"全部"}},pagination:{showTotal:"共 {0} 条"},date:{formatter:{to:"至"}},extends:{tableSelect:{view:"查看",select:"选择",current:"当前选中",ok:"确定",cancel:"取消"},copyable:{copy:"复制",success:"复制成功",error:"复制失败"},cropper:{title:"图片裁剪",preview:"预览",reChoose:"重新选择",flipX:"左右翻转",flipY:"上下翻转",reset:"重置",cancel:"取消",confirm:"确定",chooseImage:"+ 选择图片",onlySupport:"仅支持",sizeLimit:"大小不能超过",sizeNoLimit:"大小不限制"},fileUploader:{text:"文件上传",limitTip:"文件数量不能超过 {0}",sizeLimitTip:"文件大小不能超过 {0},当前大小:{1}",loadError:"图片加载失败",pixelLimitTip:"图片像素尺寸不能超过 宽:{0},高:{1}",hasUploading:"还有文件正在上传,请等待上传完成,或删除它"}}}},Yp={name:"en",fs:{component:{select:{placeholder:"please select"}},addForm:{title:"add"},editForm:{title:"edit"},viewForm:{title:"view"},rowHandle:{title:"handle",remove:{text:"remove",confirmTitle:"remove tip",confirmMessage:"Are you sure you want to delete this record?",success:"delete success!",confirmText:"confirm",cancelText:"cancel"},copy:{text:"copy"},edit:{text:"edit"},view:{text:"view"}},form:{cancel:"cancel",ok:"ok",reset:"reset",saveRemind:{title:"save remind",content:"The form data has changed, whether to save",cancel:"don't save",ok:"save"},copy:"copy",paste:"paste"},actionbar:{add:"add"},toolbar:{columnFilter:{title:"columns set",fixed:"fixed",order:"sort",reset:"reset",confirm:"ok",unnamed:"unnamed"},search:{title:"show search bar"},refresh:{title:"refresh"},compact:{title:"compact mode"},export:{title:"download"},columns:{title:"columns set"}},search:{container:{collapseButton:{text:{collapse:"collapse",expand:"expand"}}},search:{text:"search"},reset:{text:"reset"},error:{message:"form valid error"},tabs:{all:"All"}},pagination:{showTotal:"Total {0} items"},date:{formatter:{to:"to"}},extends:{tableSelect:{view:"view",select:"select",current:"Current selection",ok:"OK",cancel:"Cancel"},copyable:{copy:"Copy",success:"Copied successfully",error:"Copy failed"},cropper:{title:"image crop",preview:"preview",reChoose:"reChoose",flipX:"flipX",flipY:"flipY",reset:"reset",cancel:"cancel",confirm:"confirm",chooseImage:"+ choose image",onlySupport:"only",sizeLimit:"size limit",sizeNoLimit:" no limit"},fileUploader:{text:"fileUpload",limitTip:"file count limit: {0}",sizeLimitTip:"file size limit: {0}, current size: {1}",loadError:"image load error",pixelLimitTip:"pixel limit : width:{0},height:{1}",hasUploading:"The file is being uploaded, please wait for the upload to complete or delete"}}}};function qp(e,t){let r=X.get(kf,e);return r==null?e:t instanceof Array?(X.forEach(t,(n,a)=>{r=r.replace("{"+a+"}",n)}),r):r.replace("{n}",t)}class Jp{constructor(){Te(this,"vueI18nInstance",null)}t(t,r){return qp(t,r)}setVueI18n(t){if(!t)return;t.global&&(t=t.global);const r=t.availableLocales;for(const n of r){if(n.startsWith("zh")){const a=t.getLocaleMessage(n),i=X.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:kf.fs}),t.mergeLocaleMessage(n,{fs:i})}else if(n.startsWith("en")){const a=t.getLocaleMessage(n),i=X.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:Yp.fs}),t.mergeLocaleMessage(n,{fs:i})}Re.debug("i18n",t.getLocaleMessage(n))}this.vueI18nInstance=t}}const Ds=new Jp;function jt(){return Ds.vueI18nInstance!=null?{t:Ds.vueI18nInstance.t}:{t:Ds.t}}var En=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var bf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(En,function(){return function(r,n){var a=n.prototype,i=a.format;a.format=function(s){var o=this,c=this.$locale();if(!this.isValid())return i.bind(this)(s);var f=this.$utils(),u=(s||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case"Q":return Math.ceil((o.$M+1)/3);case"Do":return c.ordinal(o.$D);case"gggg":return o.weekYear();case"GGGG":return o.isoWeekYear();case"wo":return c.ordinal(o.week(),"W");case"w":case"ww":return f.s(o.week(),d==="w"?1:2,"0");case"W":case"WW":return f.s(o.isoWeek(),d==="W"?1:2,"0");case"k":case"kk":return f.s(String(o.$H===0?24:o.$H),d==="k"?1:2,"0");case"X":return Math.floor(o.$d.getTime()/1e3);case"x":return o.$d.getTime();case"z":return"["+o.offsetName()+"]";case"zzz":return"["+o.offsetName("long")+"]";default:return d}});return i.bind(this)(u)}}})})(bf);var Zp=bf.exports;const Qp=wi(Zp);Lt.extend(Qp);function Xo(e,t){if(!Wo.isEmpty(e))return Lt(e).format(t)}function Cf(e,t="YYYY-MM-DD HH:mm:ss"){if(e!=null&&e instanceof Array&&e.length>1){if(Wo.hasEmpty(e))return;const{t:r}=jt();return`${Xo(e[0],t)} ${r("fs.date.formatter.to")} ${Xo(e[1],t)}`}return Xo(e,t)}function e1(e){const{value:t}=e;return Cf(t,"YYYY-MM-DD")}function t1(e){const{value:t}=e;return Cf(t,"YYYY-MM-DD HH:mm:ss")}var Ef={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(En,function(){var r="week",n="year";return function(a,i,s){var o=i.prototype;o.week=function(c){if(c===void 0&&(c=null),c!==null)return this.add(7*(c-this.week()),"day");var f=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=s(this).startOf(n).add(1,n).date(f),d=s(this).endOf(r);if(u.isBefore(d))return 1}var h=s(this).startOf(n).date(f).startOf(r).subtract(1,"millisecond"),m=this.diff(h,r,!0);return m<0?s(this).startOf("week").week():Math.ceil(m)},o.weeks=function(c){return c===void 0&&(c=null),this.week(c)}}})})(Ef);var r1=Ef.exports;const n1=wi(r1);var Sf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(En,function(){return function(r,n){n.prototype.weekday=function(a){var i=this.$locale().weekStart||0,s=this.$W,o=(s<i?s+7:s)-i;return this.$utils().u(a)?o:this.subtract(o,"day").add(a,"day")}}})})(Sf);var a1=Sf.exports;const i1=wi(a1);var Tf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(En,function(){return function(r,n,a){var i=n.prototype,s=function(d){return d&&(d.indexOf?d:d.s)},o=function(d,h,m,g,p){var x=d.name?d:d.$locale(),v=s(x[h]),y=s(x[m]),w=v||y.map(function(R){return R.slice(0,g)});if(!p)return w;var b=x.weekStart;return w.map(function(R,A){return w[(A+(b||0))%7]})},c=function(){return a.Ls[a.locale()]},f=function(d,h){return d.formats[h]||function(m){return m.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(g,p,x){return p||x.slice(1)})}(d.formats[h.toUpperCase()])},u=function(){var d=this;return{months:function(h){return h?h.format("MMMM"):o(d,"months")},monthsShort:function(h){return h?h.format("MMM"):o(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(h){return h?h.format("dddd"):o(d,"weekdays")},weekdaysMin:function(h){return h?h.format("dd"):o(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(h){return h?h.format("ddd"):o(d,"weekdaysShort","weekdays",3)},longDateFormat:function(h){return f(d.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return u.bind(this)()},a.localeData=function(){var d=c();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return a.weekdays()},weekdaysShort:function(){return a.weekdaysShort()},weekdaysMin:function(){return a.weekdaysMin()},months:function(){return a.months()},monthsShort:function(){return a.monthsShort()},longDateFormat:function(h){return f(d,h)},meridiem:d.meridiem,ordinal:d.ordinal}},a.months=function(){return o(c(),"months")},a.monthsShort=function(){return o(c(),"monthsShort","months",3)},a.weekdays=function(d){return o(c(),"weekdays",null,null,d)},a.weekdaysShort=function(d){return o(c(),"weekdaysShort","weekdays",3,d)},a.weekdaysMin=function(d){return o(c(),"weekdaysMin","weekdays",2,d)}}})})(Tf);var s1=Tf.exports;const o1=wi(s1);Lt.extend(i1),Lt.extend(o1),Lt.extend(n1);function l1(){const e=ue.uiContext.get();function t(n){const{row:a,key:i,value:s}=n;s!=null&&(e.type==="naive"?a[i]=Lt(s).valueOf():e.type==="antdv"&&e.version==="4"||e.type)}return{datetime:{form:{component:{...e.datePicker.buildDateType("datetime"),vModel:e.datePicker.modelValue}},column:{width:170,component:{name:"fs-date-format"}},valueBuilder(n){t(n)}},date:{form:{component:{...e.datePicker.buildDateType("date"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-MM-DD"}},valueBuilder(n){t(n)}},daterange:{form:{component:{...e.datePicker.buildDateType("daterange"),vModel:e.datePicker.modelValue}},column:{width:210,formatter:e1},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&i!=null&&(e.type==="naive"?n[a]=[Lt(i[0]).valueOf(),Lt(i[1]).valueOf()]:n[a]=[Lt(i[0]),Lt(i[1])])}},datetimerange:{form:{component:{...e.datePicker.buildDateType("datetimerange"),vModel:e.datePicker.modelValue}},column:{width:340,formatter:t1},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&(e.type==="naive"?n[a]=[Lt(i[0]).valueOf(),Lt(i[1]).valueOf()]:n[a]=[Lt(i[0]),Lt(i[1])])}},time:{form:{component:{name:e.timePicker.name,vModel:e.timePicker.modelValue}},column:{width:100,align:"center",component:{name:"fs-date-format",format:"HH:mm:ss"}},valueBuilder(n){t(n)}},month:{form:{component:{...e.datePicker.buildDateType("month"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-MM"}},valueBuilder(n){t(n)}},week:{form:{component:{...e.datePicker.buildDateType("week"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-ww[周]"}},valueBuilder(n){t(n)}},quarter:{form:{component:{...e.datePicker.buildDateType("quarter"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-[Q]Q"}},valueBuilder(n){t(n)}},year:{form:{component:{...e.datePicker.buildDateType("year"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY"}},valueBuilder(n){t(n)}}}}const c1=Object.freeze(Object.defineProperty({__proto__:null,default:l1},Symbol.toStringTag,{value:"Module"}));function f1(){const{ui:e}=ue.useUi();return{number:{form:{component:{name:e.number.name,props:{}}},align:"center"},switch:{form:{component:{name:e.switch.name,props:{}}},component:{name:e.switch.name,props:{}},align:"center"},slider:{form:{component:{name:"el-slider",props:{}}},align:"center"},rate:{form:{component:{name:"el-rate",props:{}}},align:"center"},"color-picker":{form:{component:{name:"el-color-picker",props:{}}},align:"center"},transfer:{form:{component:{name:"el-transfer",props:{}}},align:"center"},autocomplete:{form:{component:{name:"el-autocomplete",props:{}}}}}}const u1=Object.freeze(Object.defineProperty({__proto__:null,default:f1},Symbol.toStringTag,{value:"Module"}));function d1(){return{icon:{form:{component:{name:"fs-icon-selector",vModel:"modelValue",[ue.uiContext.get().input.clearable]:!0}},column:{component:{name:"fs-icon",vModel:"icon",style:"font-size:18px"}}}}}const h1=Object.freeze(Object.defineProperty({__proto__:null,default:d1},Symbol.toStringTag,{value:"Module"}));function m1(){const e=ue.uiContext.get();return{number:{form:{component:{name:e.number.name,vModel:e.modelValue}}}}}const p1=Object.freeze(Object.defineProperty({__proto__:null,default:m1},Symbol.toStringTag,{value:"Module"}));function g1(){return{"phone-number":{form:{component:{name:"el-phone-number-input"}},column:{formatter(e,t,r){let n="";return r!=null&&(r.callingCode!=null?n+="(+"+r.callingCode+")":r.countryCode!=null&&(n+="("+r.countryCode+")"),r.phoneNumber!=null&&(n+=r.phoneNumber)),n}}}}}const x1=Object.freeze(Object.defineProperty({__proto__:null,default:g1},Symbol.toStringTag,{value:"Module"}));function v1(){const e=ue.uiContext.get();return{select:{search:{autoSearchTrigger:"change"},form:{component:{name:e.select.name,[e.select.clearable]:!0}}},"dict-select":{search:{autoSearchTrigger:"change"},column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-dict-select",vModel:e.select.modelValue,[e.select.clearable]:!0}}},"table-select":{column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-table-select"}}},"editable-select":{column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-editable-select"}}},"dict-radio":{search:{component:{name:"fs-dict-select",vModel:e.select.modelValue,autoSearchTrigger:"change"}},form:{component:{name:"fs-dict-radio",vModel:e.radioGroup.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}},"dict-checkbox":{search:{component:{name:"fs-dict-select"},autoSearchTrigger:"change"},form:{component:{name:"fs-dict-checkbox",vModel:e.radioGroup.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}},"dict-switch":{search:{component:{name:"fs-dict-select",vModel:e.select.modelValue},autoSearchTrigger:"change"},form:{component:{name:"fs-dict-switch",vModel:e.switch.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}}}}const w1=Object.freeze(Object.defineProperty({__proto__:null,default:v1},Symbol.toStringTag,{value:"Module"}));function _1(){const e=ue.uiContext.get();return{text:{form:{component:{name:e.input.name,vModel:e.textArea.modelValue,[e.input.clearable]:!0}},search:{autoSearchTrigger:"enter"}},password:{form:{component:{name:e.inputPassword.name,vModel:e.inputPassword.modelValue,...e.inputPassword.passwordType}},search:{autoSearchTrigger:"enter"}},textarea:{search:{component:{name:e.input.name,type:"text",[e.input.clearable]:!0},autoSearchTrigger:"enter"},form:{component:{name:e.textArea.name,type:e.textArea.type,vModel:e.textArea.modelValue,[e.input.clearable]:!0}}}}}const y1=Object.freeze(Object.defineProperty({__proto__:null,default:_1},Symbol.toStringTag,{value:"Module"}));function k1(){const e=ue.uiContext.get();return{"dict-tree":{search:{autoSearchTrigger:"change"},column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-dict-tree",vModel:e.treeSelect.modelValue,[e.treeSelect.clearable]:!0}}}}}const b1=Object.assign({"./list/assist.ts":jp,"./list/button.ts":Gp,"./list/cascader.ts":Kp,"./list/date.ts":c1,"./list/el.ts":u1,"./list/icon.ts":h1,"./list/number.ts":p1,"./list/phone.ts":x1,"./list/select.ts":w1,"./list/text.ts":y1,"./list/tree.ts":Object.freeze(Object.defineProperty({__proto__:null,default:k1},Symbol.toStringTag,{value:"Module"}))}),Ff=[];X.forEach(b1,e=>{Ff.push(e.default)});const _i={};function C1(){return _i}function E1(e){return _i[e]}function S1(e){for(const t in e)_i[t]=e[t]}const Ma={getType:E1,addTypes:S1,getTypes:C1,install(){for(const e of Ff)X.forEach(e(),(t,r)=>{_i[r]=t});Re.debug("types installed:",_i)}},T1=l.defineComponent({name:"FsPage",setup(){const e=l.ref();return l.onMounted(()=>{window.getComputedStyle(e.value.parentNode).getPropertyValue("position")!=="relative"&&Cn.logger.warn("fs-page父节点的position建议为relative,因为fs-page为相对定位(position:absolute),如果样式没有异常,你可以忽略此警告")}),{pageRef:e}}}),AD="",nt=(e,t)=>{const r=e.__vccOpts||e;for(const[n,a]of t)r[n]=a;return r},F1={ref:"pageRef",class:"fs-page"},A1={key:0,class:"fs-page-header"},D1={class:"fs-page-content"},R1={key:1,class:"fs-page-footer"};function O1(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",F1,[e.$slots.header!=null?(l.openBlock(),l.createElementBlock("div",A1,[l.renderSlot(e.$slots,"header")])):l.createCommentVNode("",!0),l.createElementVNode("div",D1,[l.renderSlot(e.$slots,"default")]),e.$slots.footer!=null?(l.openBlock(),l.createElementBlock("div",R1,[l.renderSlot(e.$slots,"footer")])):l.createCommentVNode("",!0)],512)}const Af=nt(T1,[["render",O1]]);function Ko(e){return e!=null&&(e instanceof Rf||l.isRef(e)||l.isShallow(e))}function Df(e){return Ko(e)&&!e.cloneable}function B1(e,...t){function r(a,i){if(i!=null&&(X.isArray(a)||Ko(i)))return i}let n=null;for(const a of t)Ko(a)&&(n=a);return n||X.mergeWith(e,...t,r)}function N1(e){if(Df(e))return e;function t(r){if(Df(r))return r}return X.cloneDeepWith(e,t)}let Rf=class{constructor(){Te(this,"cloneable",!1)}setCloneable(t){this.cloneable=t}};function Je(){return{merge:B1,cloneDeep:N1,UnMergeable:Rf}}const{cloneDeep:I1}=Je();function P1(e){return e instanceof Rs}function L1(e){return e instanceof yi}function Of(e,t,r){const n={};if(e==null)return n;const a=r?P1:L1;return _f.forEachDeep(e,(i,s,o,c)=>{if(i==null)return!1;if(a(i)){const f=c.path;if(t){for(const u of t)if(typeof u=="string"){if(f.startsWith(u))return!1}else if(u instanceof RegExp&&u.test(f))return!0}return n[f]=i,!1}return!l.isShallow(i)},{checkCircular:!0}),n}function M1(e,t){if(e==null||Object.keys(e).length<=0)return null;const r={};return X.forEach(e,(n,a)=>{r[a]=n.buildAsyncRef(t)}),r}function V1(e,t){t==null||Object.keys(t).length<=0||X.forEach(t,(r,n)=>{X.set(e,n,r.value==null?null:r.value)})}function U1(e,t,r,n){const a=l.computed(()=>{const o=e();return Of(o,r,!1)}),i=l.computed(()=>{const o=e();return Of(o,r,!0)}),s=M1(i.value,t);return l.computed(()=>{let o=e();const c=Object.keys(i.value).length,f=Object.keys(a.value).length;if(c>0||f>0){if(o=I1(o),f>0){const u=t?t():{};X.forEach(a.value,(d,h)=>{X.set(o,h,d.computeFn(u))})}c>0&&V1(o,s)}return n?n(o):o})}class yi{constructor(t){Te(this,"computeFn");this.computeFn=t}}function Bf(e){return new yi(e)}class Rs{constructor(t){Te(this,"watch");Te(this,"asyncFn");Te(this,"defaultValue");const{asyncFn:r,defaultValue:n}=t;this.watch=t.watch,this.asyncFn=r,this.defaultValue=n}buildAsyncRef(t){t=t||function(){};const r=l.ref(this.defaultValue),n=l.computed(()=>this.watch?this.watch(t()):null);return l.watch(()=>n.value,async a=>{r.value=await this.asyncFn(a,t())},{immediate:!0}),r}}function Nf(e){return new Rs(e)}function Br(){return{ComputeValue:yi,compute:Bf,AsyncComputeValue:Rs,asyncCompute:Nf,doComputed:U1}}const Un={orderDefault:1},{merge:zr,cloneDeep:Sn}=Je(),ki=[];function Yo(e){X.remove(ki,t=>t.name===e.name),ki.push(e),ki.sort((t,r)=>t.order-r.order),Re.debug("mergeColumnPlugin register success: current:",e,"registered:",ki)}function $1(e){var t,r;if(e.dict){if((t=e.column)!=null&&t.component){const n=l.shallowReactive(Sn(e.dict));n.cloneable&&(n.cloneable=!1),e.column.component.dict=zr(n,e.column.component.dict)}if((r=e.form)!=null&&r.component){const n=l.shallowReactive(Sn(e.dict));n.cloneable&&(n.cloneable=!1),e.form.component.dict=zr(n,e.form.component.dict)}}return e}function W1(e){if(!e.type)return e;let t=[];typeof e.type=="string"?t=[e.type]:e.type instanceof Array&&(t=e.type);const r={};for(const n of t){const a=Ma.getType(n);a&&zr(r,a)}return e=zr(r,e),e}const Va=[];Va.push({name:"type",handle:W1,order:-2}),Va.push({name:"dict",handle:$1,order:-1}),Va.push({name:"viewFormUseCellComponent",order:10,handle:(e={},t={})=>{var a,i;if(!((a=t.settings)!=null&&a.viewFormUseCellComponent))return e;const n={component:((i=e.column)==null?void 0:i.component)||{}};return(e.type==="text"||e.type instanceof Array&&e.type.includes("text"))&&(n.render||(n.render=s=>{const{value:o}=s;return l.createVNode("span",null,[o])})),zr(e,{viewForm:n}),e}}),Va.push({name:"NaiveFormRuleFix",order:10,handle:(e={},t={})=>{var n,a,i,s,o;const{ui:r}=ue.useUi();return r.type!=="naive"||((n=e.addForm)!=null&&n.rules&&(e.addForm.rule=e.addForm.rules),(a=e.editForm)!=null&&a.rules&&(e.editForm.rule=e.editForm.rules),(i=e.viewForm)!=null&&i.rules&&(e.viewForm.rule=e.viewForm.rules),(s=e.form)!=null&&s.rules&&(e.form.rule=e.form.rules),(o=e.search)!=null&&o.rules&&(e.search.rule=e.search.rules)),e}}),Va.push({name:"DefaultOrder",order:0,handle:(e={},t={},r)=>(X.get(e,"column.order")==null&&X.set(e,"column.order",r),X.get(e,"form.order")==null&&X.set(e,"form.order",r),e)});for(const e of Va)Yo(e);function qo(e,t){const r={};let n=0;return X.forEach(e,(a,i)=>{if(a.key=i,a.children)a.children=qo(a.children,t);else for(const s of ki)a=s.handle(a,t,n);r[i]=a,n++}),r}function Jo(e={},t){return X.forEach(t,(r,n)=>{r.children?Jo(e,r.children):e[n]=r}),e}function Os(e={},t){return X.forEach(t,(r,n)=>{r.children?Os(e,r.children):e[n]=r}),e}function H1(e){const t=e,r=t.column||{};r.title==null&&(r.title=t.title),r.key=t.key;const n=t.key!=="id"&&t.key!=="_index";return n&&r.align==null&&(r.align="center"),n&&r.sortable==null&&(r.sortable=!0),t.children&&(r.children=Pf(t.children)),If(r),l.reactive(r)}function If(e){var t;e&&(t=e.component)!=null&&t.name&&typeof e.component.name!="string"&&(l.isRef(e.component.name)||(e.component.name=l.shallowRef(e.component.name)))}function Pf(e){let t={};return X.forEach(e,(r,n)=>{t[n]=H1(r)}),t=Zo(t),j1(t),t}function j1(e){const t=[];for(const r in e)t.push(e[r]);t.some(r=>r.fixed==="left")&&t.forEach(r=>{(r.type==="selection"||r.type==="index")&&r.fixed==null&&(r.fixed="left")})}function z1(e){return X.sortBy(e,t=>t.type==="selection"?0:t.type==="index"?1:2,t=>t.order??Un.orderDefault)}function Zo(e){const t=[];for(const a in e){const i=e[a];i.key=a,i.children&&X.size(i.children)>0&&(i.children=Zo(i.children)),t.push(i)}const r=z1(t),n={};for(const a of r)n[a.key]=a;return n}function Lf(e,t){const r={};return X.forEach(e,n=>{const a=Sn(n[t])||{};t==="form"&&a.title==null&&(a.title=n.title),a.key=n.key,r[n.key]=a,If(a)}),r}function bi(e,t,r,n){const a=Lf(r,t),i=zr(Sn(e.form),e[t],{columns:a});return n&&n(i),i}function G1(e,t="search",r){var o;const n=Lf(r,t),a={},i=((o=e.settings)==null?void 0:o.searchCopyFormProps)??["component","valueChange","title","key","label","render"];function s(c,f,u){if(X.includes(i,u)&&e.columns[f]){const h=e.columns[f][u];h&&(c[u]=h)}}return X.forEach(Sn(e.form.columns),(c,f)=>{const u={};s(u,f,"valueResolve"),s(u,f,"valueBuilder"),a[f]=zr(u,X.pick(c,i))}),zr({columns:a},{columns:n},e.search)}function X1(e,t,r="form"){const{t:n}=jt(),{merge:a}=Je();t=t||{};const i={value:null},s=a(vi.defaultOptions({t:n,crudOptionsRef:i}),vi.commonOptions({crudOptions:e,context:t,crudExpose:null}),e);i.value=s;const o=qo(Sn(s.columns),s),c=Jo({},o),f=r==="form"?"form":`${r}Form`;return bi(s,f,c)}function K1(e){X.forEach(e.columns,(n,a)=>{n.key=a});const t=qo(Sn(e.columns),e);e.columns=t;const r=Jo({},t);return e.table.columns=Pf(Sn(t)),e.table.columnsMap=Os({},e.table.columns),zr(e.toolbar,{columnsFilter:{originalColumns:Sn(e.table.columns)}}),e.form=bi(e,"form",r),e.addForm=bi(e,"addForm",r),e.editForm=bi(e,"editForm",r),e.viewForm=bi(e,"viewForm",r,n=>{X.forEach(n.columns,a=>{a.component||(a.component={}),a.component.disabled=!0})}),e.search=G1(e,"search",r),e.table.editable&&(e.table.editable.addForm=zr(e.addForm.columns,e.table.editable.addForm),e.table.editable.editForm=zr(e.editForm.columns,e.table.editable.editForm)),e}function Ci(e,t){X.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Ci(r.children,t):t(r,n)})}function Ei(e,t){X.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Ei(r.children,t):t(r,n)})}function Bs(){return{buildFormOptions:X1,buildColumns:K1,registerMergeColumnPlugin:Yo,forEachColumns:Ei,doColumnsSort:Zo,forEachTableColumns:Ci}}let Y1=0;const Qo={};async function q1(e){const t=e.id||`${Y1++}`,r=document.createElement("div");return new Promise((n,a)=>{let i=Qo[t];i!=null&&(i.vm.exposed.open(e),n(i));const s=l.createVNode($a,{id:t,onClosed(){e.id||delete Qo[t]}});s.appContext=$a._context,l.render(s,r),document.body.appendChild(r);const c=s.component;i={id:t,vNode:s,vm:c,props:s.component.props},Qo[t]=i,i.vm.exposed.open(e),n(i.vm.exposed)})}function Mf(e=null){if(e==null)try{e=l.inject("use:form:wrapper",()=>{})()}catch(n){Re.warn("cant inject use:form:wrapper,建议在App.vue中使用<fs-form-provider>组件包裹<router-view/>",n)}let t=null;e==null?t=async n=>await q1(n):t=async n=>await e.open(n);async function r(n){const{buildFormOptions:a}=Bs(),i=a(n.crudOptions,n.context);return await t(i)}return{openDialog:t,openCrudFormDialog:r}}const{merge:Vf}=Je(),J1=Vf;function Z1(e){const{crudExpose:t}=e,{crudBinding:r}=t;ue.useUi(),jt();const{merge:n}=Je();l.watch(()=>{var i,s,o;return(o=(s=(i=r.value)==null?void 0:i.table)==null?void 0:s.editable)==null?void 0:o.enabled},i=>{var o,c,f,u,d;const s=(f=(c=(o=r.value)==null?void 0:o.table)==null?void 0:c.editable)==null?void 0:f.customRowHandleActive;if(s){s({enabled:i,mode:(u=r.value.table.editable)==null?void 0:u.mode,rowHandle:r.value.rowHandle});return}i?((d=r.value.table.editable)==null?void 0:d.mode)==="row"?r.value.rowHandle.active="editRow":r.value.rowHandle.active="editable":r.value.rowHandle.active="default"});const a={async enable(i,s){const o=r.value.table.editable;n(o,{enabled:!0},i),s&&s({editable:o})},disable(){var i;(i=t.getTableRef())==null||i.editable.resume(),r.value.table.editable.enabled=!1,r.value.rowHandle.active="default"},active(i){t.getTableRef().editable.active(i)},inactive(){t.getTableRef().editable.inactive()},addRow(i){t.getTableRef().editable.addRow(i)},activeCols(i){t.getTableRef().editable.activeCols(i)},resume(){t.getTableRef().editable.resume()},cancel(){t.getTableRef().editable.cancelAll()},persist(){t.getTableRef().editable.persist()},removeRow(i){t.getTableRef().editable.removeRow(i)},getEditableRow(i){var s,o;return(o=(s=t.getTableRef())==null?void 0:s.editable)==null?void 0:o.getEditableRow(i)},getActiveRows(){var i,s;return(s=(i=t.getTableRef())==null?void 0:i.editable)==null?void 0:s.getActiveRows()},async doSaveRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);await o.save({async doSave(c){var m,g;const{isAdd:f,row:u,setData:d}=c,h=u;if(((g=(m=r.value)==null?void 0:m.mode)==null?void 0:g.name)!=="local")try{if(o.loading=!0,f){const p=await r.value.request.addRequest({form:h});d(p)}else await r.value.request.editRequest({form:h,row:h})}finally{o.loading=!1}}})},async doCancelRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);if(o.isAdd){a.removeRow(s);return}o.cancel()},async doRemoveRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);return await t.doRemove(i,{async handle(){return o.isAdd?(a.removeRow(s),!1):r.value.mode.name==="local"?(a.removeRow(s),{isLocal:!0}):await r.value.request.delRequest(i)}})},getInstance(){t.getTableRef().editable},eachCells(i){var s;(s=t.getTableRef().editable)==null||s.eachCells(i)},eachRows(i){var s;(s=t.getTableRef().editable)==null||s.eachRows(i)},async validate(){var i;return await((i=t.getTableRef().editable)==null?void 0:i.validate())},getTableData(i){var s;return(s=t.getTableRef().editable)==null?void 0:s.getCleanTableData(i)},getCleanTableData(i){var s;return(s=t.getTableRef().editable)==null?void 0:s.getCleanTableData(i)}};return a}function el(e){const{crudRef:t,crudBinding:r}=e,{ui:n}=ue.useUi(),{t:a}=jt(),i=Mf();function s(){t.value==null&&Re.warn("crudRef还未初始化,请在onMounted之后调用")}function o(){r.value==null&&Re.warn("crudBinding还未初始化,请在useFs或useCrud之后调用")}const c={crudRef:t,crudBinding:r,getFormWrapperRef(){return t.value.formWrapperRef},getFormRef:()=>{const f=c.getFormWrapperRef();if(f==null||(f==null?void 0:f.formRef)==null){Re.error("当前无法获取FormRef,请在编辑对话框已打开的状态下调用此方法,如果是在打开对话框时调用,可以尝试先nextTick");return}return f==null?void 0:f.formRef},getFormData:()=>{const f=c.getFormRef();return f==null?void 0:f.getFormData()},setFormData:(f,u)=>{var d;(d=c.getFormRef())==null||d.setFormData(f,u)},getFormComponentRef(f,u=!1){const d=c.getFormRef();return d==null?void 0:d.getComponentRef(f,u)},doValueBuilder(f,u){u==null&&(u=l.toRaw(r.value.columns)),Re.debug("doValueBuilder ,columns=",u);const d=[];Ei(u,h=>{h.valueBuilder!=null&&d.push(h)}),d.length!==0&&(X.forEach(f,(h,m)=>{X.forEach(d,g=>{const p=g.valueBuilder({value:X.get(h,g.key),row:h,form:h,index:m,key:g.key,column:g});p!=null&&!(p instanceof Promise)&&X.set(h,g.key,p)}),h.children&&X.isArray(h.children)&&c.doValueBuilder(h.children,u)}),Re.debug("valueBuilder success:",f))},doValueResolve({form:f},u){u==null&&(u=l.toRaw(r.value.columns));const d=[];Ei(u,h=>{h.valueResolve!=null&&d.push(h)}),d.length!==0&&(Re.debug("doValueResolve ,columns=",u),X.forEach(d,h=>{const m=h.key,g=h.valueResolve({value:X.get(f,m),row:f,form:f,key:m,column:h});g!=null&&!(g instanceof Promise)&&X.set(f,m,g)}),Re.debug("valueResolve success:",f))},doSearchValidate(){c.getSearchRef().doValidate()},getSearchFormData(){return r.value.search.validatedForm},getSearchValidatedFormData(){return r.value.search.validatedForm},setSearchFormData(f){if(t.value&&t.value.setSearchFormData({form:f.form,mergeForm:f.mergeForm}),f.mergeForm===!1)for(const d in r.value.search.validatedForm)delete r.value.search.validatedForm[d];const{merge:u}=Je();u(r.value.search.validatedForm,f.form),f.triggerSearch&&c.doRefresh()},getSearchRef(){var f;return s(),(f=t.value)==null?void 0:f.getSearchRef()},buildPageQuery(f){var p,x;const u=f.page;let d=f.form;d==null&&(d=X.cloneDeep(c.getSearchValidatedFormData())||{},(x=(p=r.value)==null?void 0:p.search)!=null&&x.columns&&c.doValueResolve({form:d},l.toRaw(r.value.search.columns)));let h=f.sort;h==null&&(h=r.value.table.sort||{});const m={page:u,form:d,sort:h};let g=m;return r.value.request.transformQuery&&(g=r.value.request.transformQuery(m)),g},async search(f,u={}){const d=c.buildPageQuery(f);let h;const m=l.unref(r.value.table.disableLoading);try{u.silence!==!0&&m!==!0&&(r.value.table.loading=!0),Re.debug("pageRequest",d),h=await r.value.request.pageRequest(d)}finally{r.value.table.loading=!1}if(h==null){Re.warn("pageRequest返回结果不能为空");return}let g=h;return r.value.request.transformRes&&(g=r.value.request.transformRes({res:h,query:d})),g.records&&c.doValueBuilder(g.records),g},getPage(){let f={currentPage:1,pageSize:10};return r.value.pagination&&(f={currentPage:r.value.pagination[n.pagination.currentPage],pageSize:r.value.pagination.pageSize}),f},async doRefresh(f){var x,v;if(r.value.request.pageRequest==null)return;Re.debug("do refresh:",f),r.value.pagination&&f!=null&&f.goFirstPage&&(r.value.pagination[n.pagination.currentPage]=1);const u=c.getPage(),d=await c.search({page:u},{silence:f==null?void 0:f.silence});if(d==null){Re.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",d);return}const{currentPage:h=u.currentPage||1,pageSize:m=u.pageSize,total:g}=d,{records:p}=d;if(p==null||!(p instanceof Array)||g==null||h==null||h<=0||isNaN(h)||m==null||m<=0||isNaN(m)){Re.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",d),Re.info("如果你的不需要分页,也需要按照上面的格式返回,可以让pageSize=99999,然后配置crudOptions.pagination.show=false来隐藏分页组件");return}if(r.value.data=p,r.value.pagination&&(r.value.pagination[n.pagination.currentPage]=h,r.value.pagination.pageSize=m,r.value.pagination[n.pagination.total]=g||p.length),(f==null?void 0:f.scrollTop)??r.value.table.scrollTopOnRefreshed){const y=c.getTableRef();y==null||y.scrollTo(0)}(v=(x=r.value)==null?void 0:x.table)!=null&&v.onRefreshed&&r.value.table.onRefreshed({data:p})},getToolbarRef:()=>t.value.toolbarRef,getColumnsFilterRef:()=>c.getToolbarRef().columnsFilterRef,getColumnsFilterOriginalColumnsRef:()=>c.getColumnsFilterRef().original,getColumnsFilterColumnsRef:()=>c.getColumnsFilterRef().columns,doPageTurn(f){r.value.pagination[n.pagination.currentPage]=f},async doSearch(f){Re.debug("do search:",f),f=Vf({goFirstPage:!0},f),f.goFirstPage&&c.doPageTurn(1),f.form&&t.value&&c.setSearchFormData({form:f.form,mergeForm:f.mergeForm,refWarning:!1,triggerSearch:!1}),await c.doRefresh()},getTableRef(){var f;return s(),(f=t.value)==null?void 0:f.tableRef},getBaseTableRef(){const f=this.getTableRef();if(f==null){Re.warn("fs-table还未挂载");return}return f.tableRef},getTableData(){return o(),r.value.data},setTableData(f){o(),r.value.data=f},insertTableRow(f,u){o(),r.value.data.splice(f,0,u)},updateTableRow(f,u,d=!0){d?r.value.data[f]=J1(r.value.data[f],u):r.value.data[f]=u},removeTableRow(f){o(),r.value.data.splice(f,1)},removeTableRowByRowKey:(f,u)=>{o(),u==null&&(u=r.value.data);for(let d=0;d<u.length;d++){const h=u[d];if(h[r.value.table.rowKey]===f)return u.splice(d,1),!0;if(h.children&&X.isArray(h.children)&&c.removeTableRowByRowKey(f,h.children))return!0}},getTableDataRow(f){const u=c.getTableData();if(u==null)throw new Error("table data is not init");if(u.length<=f)throw new Error("index over array length");return u[f]},doSelectCurrentRow({row:f}){c.getTableRef().value.setCurrentRow(f)},async doRemove(f,u){var p;const d=r.value.table.remove??u??{};if((u==null?void 0:u.noConfirm)!==!0)try{d.confirmFn?await d.confirmFn(f):await n.messageBox.confirm({title:d.confirmTitle||a("fs.rowHandle.remove.confirmTitle"),message:d.confirmMessage||a("fs.rowHandle.remove.confirmMessage"),cancelButtonText:d.cancelButtonText||a("fs.rowHandle.remove.cancelText"),confirmButtonText:d.confirmButtonText||a("fs.rowHandle.remove.confirmText"),type:"warn",...d.confirmProps})}catch{d.onCanceled&&await d.onCanceled(f);return}let h=null;const m=((p=r.value.mode)==null?void 0:p.name)==="local";if(u!=null&&u.handle?h=await u.handle(f):m?c.removeTableRow(f==null?void 0:f.index):h=await r.value.request.delRequest(f),h===!1)return;const g={...f,res:h};if(d.afterRemove&&await d.afterRemove(g)===!1)return!1;d.showSuccessNotification!==!1&&n.notification.success(a("fs.rowHandle.remove.success")),m||d.refreshTable!==!1&&await c.doRefresh({scrollTop:!1}),d.onRemoved&&await d.onRemoved({...f,res:h})},async openDialog(f){if(f.newInstance===!0&&i)return await i.openDialog(f);const u=this.getFormWrapperRef();return u.open(f),u},async _openDialog(f,u,d){var x,v;const{merge:h}=Je();let m=u.row||u[n.tableColumn.row];delete u.row,m==null&&u.index!=null&&(m=c.getTableDataRow(u.index)),(v=(x=r.value)==null?void 0:x.request)!=null&&v.infoRequest&&(m=await r.value.request.infoRequest({mode:f,row:m}));const g={mode:f},p=l.toRaw(r.value[f+"Form"]);return h(g,p,{initialForm:m},u,d),await this.openDialog(g)},async openAdd(f,u={}){return this._openDialog("add",f,u)},async openEdit(f,u={}){return this._openDialog("edit",f,u)},async openView(f,u={}){return this._openDialog("view",f,u)},async openCopy(f,u={}){return this._openDialog("add",f,u)},editable:void 0};return c.editable=Z1({crudExpose:c}),{expose:c,crudExpose:c}}async function Uf(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>np)});let t=null;return X.each(e,n=>{t=n}),(await t()).exportUtil}async function $f(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>np)});let t=null;return X.each(e,n=>{t=n}),(await t()).importUtil}function Q1({originalRow:e,row:t,key:r,col:n}){var s;const a=e[r],i=(s=n.component)==null?void 0:s.dict;if(i&&a!=null){const o=i.getNodesFromDataMap(a);if(o!=null&&o.length>0){const c=X.map(o,f=>i.getLabel(f)||i.getValue(f)).join("|");c!=null&&c!==""&&(t[r]=c)}}return t}async function Wf(e,t={}){if(t.server){const f=e.getPage(),u=e.buildPageQuery({page:f});await t.server(u);return}const r=e.crudBinding;let n=t.columns;n==null&&(n=[],X.each(r.value.table.columnsMap,f=>{if(!(t.columnFilter&&t.columnFilter(f)===!1)&&!(t.onlyShow&&l.unref(f.show)===!1)&&f.exportable!==!1&&f.key!=="_index"){const u={key:f.key,title:f.title};n.push(u)}}));for(const f of n){const u=r.value.table.columnsMap[f.key];f.columnProps=u||{},t.columnBuilder&&t.columnBuilder({col:f})}const{merge:a}=Je(),i=await Uf(),s=[];let o=r.value.data;if(t.dataFrom==="search"){const f=a({page:{currentPage:1,pageSize:99999999}},r.value.toolbar.export.searchParams);o=(await e.search(f,{silence:!0})).records}for(const f of o){const u=X.cloneDeep(f);X.each(n,d=>{const h=d.columnProps,m={row:u,originalRow:f,key:d.key,col:h,exportCol:d};t.autoUseDictLabel!==!1&&Q1(m),t.dataFormatter&&t.dataFormatter(m)}),s.push(u)}const c=a({columns:n,data:s,filename:"table",noHeader:!1,separator:",",quoted:!1},{...t});t.fileType==="excel"?await i.excel(c):await i.csv(c)}async function eg(e,t){const n=await(await $f()).csv(t.file),a=e.crudBinding;t.append===!1&&(a.value.data.length=0);const i=a.value.table.editable.enabled;for(const s of n.data)i?e.editable.addRow({row:s,active:!1}):a.value.data.push(s)}const tl={};function rl(e,t,r={}){tl[e]={handle:t,opts:r}}function Hf(e){return tl[e]}rl("rowSelection",(e,t,r)=>{const a=t.crudExpose.crudBinding;function i(){var c,f;return((f=(c=a.value)==null?void 0:c.table)==null?void 0:f.rowKey)||"id"}const{ui:s}=ue.useUi();if(!e){Re.warn("请配置settings.plugins.rowSelection.props参数");return}let o=s.table;return(r==null?void 0:r.table.tableVersion)=="v2"&&(o=s.tableV2),o.buildSelectionCrudOptions({crossPage:e.crossPage,getRowKey:i,getPageData(){return a.value.data},useCompute:()=>Br(),selectionFixed:e.selectionFixed,multiple:e.multiple,selectedRowKeys:e.selectedRowKeys,onSelectedKeysChanged:async c=>{const f=e.selectedRowKeys instanceof Function?e.selectedRowKeys():e.selectedRowKeys;f.value=[...c],await l.nextTick(),e.onSelectedChanged&&e.onSelectedChanged(f.value)}})},{before:!0,order:-2}),rl("mobile",(e,t,r)=>{const n=r.rowHandle,a=n.buttons;let i={};for(const o in a){const c=a[o];l.isRef(c.dropdown)?i=c:i[o]={...c,dropdown:l.computed(()=>e.isMobile.value?!0:c.dropdown)}}let s=n.width;return(s==null||!l.isRef(s))&&(s=l.computed(()=>{var o;return e.isMobile.value?((o=e==null?void 0:e.rowHandle)==null?void 0:o.width)||60:n.width||250})),{rowHandle:{width:s,buttons:i}}},{before:!1,order:-2});const{merge:$n}=Je();function jf(e){e.context==null&&(e.context={});const t=ue.uiContext.get(),{t:r}=jt(),n=T=>l.computed(()=>r(T));let a=e.crudOptions;const i=e.expose||e.crudExpose;if(!i)throw new Error("crudExpose不能为空,请给useCrud传入{crudExpose}参数");const s=i,{crudBinding:o}=s,{doRefresh:c,doValueResolve:f}=s;function u(){return{pagination:{...t.pagination.onChange({setCurrentPage(j){o.value.pagination[t.pagination.currentPage]=j,o.value.pagination._onCurrentChange&&o.value.pagination._onCurrentChange({current:j,pagination:o.value.pagination})},setPageSize(j){o.value.pagination.pageSize=j,o.value.pagination[t.pagination.currentPage]=1,o.value.pagination._onPageSizeChange&&o.value.pagination._onPageSizeChange({pageSize:j,current:1,pagination:o.value.pagination})},async doAfterChange(){return await c()}})}}}function d(){return{form:{async doSubmit(T){var j,G,B,z;if(T.mode==="edit")if(f(T),((j=a.mode)==null?void 0:j.name)==="local")s.updateTableRow(T.index,T.form,a.mode.isMergeWhenUpdate);else return(G=o.value.request)!=null&&G.editRequest||Re.warn("request.editRequest 未定义,无法保存"),await o.value.request.editRequest(T);else if(T.mode==="add")if(f(T),((B=a.mode)==null?void 0:B.name)==="local"){const te=a.mode.isAppendWhenAdd?s.getTableData().length:0;s.insertTableRow(te,T.form)}else return(z=o.value.request)!=null&&z.addRequest||Re.warn("request.addRequest 未定义,无法保存"),await o.value.request.addRequest(T)},async onSuccess({mode:T}){T==="edit"?await c({scrollTop:!1}):T==="add"?await c({scrollTop:!0,goFirstPage:!0}):await c()}}}}function h(){return{rowHandle:{buttons:{remove:{click:async T=>{T.row=T[t.tableColumn.row],await s.doRemove(T)}},copy:{show:!1,click:async T=>{T.row=T[t.tableColumn.row],await s.openCopy({row:T.row,index:T.index})}},edit:{click:async T=>{T.row=T[t.tableColumn.row],await s.openEdit({row:T.row,index:T.index})}},view:{click:async T=>{T.row=T[t.tableColumn.row],await s.openView({row:T.row,index:T.index})}}}}}}function m(){return{search:{buttons:{search:{loading:l.computed(()=>{var T,j;return(j=(T=o.value)==null?void 0:T.table)==null?void 0:j.loading})}},on_reset(){o.value.table.sort={},Ci(o.value.table.columns,j=>{j.sortOrder=!1});const T=i.getBaseTableRef();T!=null&&T.clearSort&&T.clearSort()},on_search(){i.doRefresh({goFirstPage:!0})},"onUpdate:form":T=>{o.value.search.form=T},"onUpdate:validatedForm":T=>{o.value.search.validatedForm=T},"onUpdate:collapse":T=>{o.value.search.collapse=T},container:{collapse:!0,"onUpdate:collapse":T=>{o.value.search.container.collapse=T}}}}}function g(){return{tabs:{},onTabChange(T){i.setSearchFormData({form:T,mergeForm:!0}),c()}}}function p(){const T=l.ref(!1);return{toolbar:{buttons:{refresh:{type:"default",icon:t.icons.refresh,title:n("fs.toolbar.refresh.title"),size:"small",plain:!0,order:1,circle:!0,click:async()=>{await i.doRefresh({scrollTop:!1})}},search:{type:"default",icon:t.icons.search,title:n("fs.toolbar.search.title"),size:"small",plain:!0,order:2,circle:!0,click:()=>{o.value.search.show=!o.value.search.show}},compact:{type:"default",icon:t.icons.compact,title:n("fs.toolbar.compact.title"),size:"small",plain:!0,order:3,circle:!0,click:()=>{o.value.toolbar.compact=!o.value.toolbar.compact}},export:{show:!0,type:"default",icon:t.icons.export,order:4,size:"small",plain:!0,loading:T,title:n("fs.toolbar.export.title"),circle:!0,click:async()=>{T.value=!0;try{const j=o.value.toolbar.export??{};await Wf(i,{...j,fileType:"excel",dataFrom:"local",onlyShow:!0,filename:j.filename??`table_${Date.now()}`})}finally{T.value=!1}}},columns:{type:"default",icon:t.icons.columnsFilter,title:n("fs.toolbar.columns.title"),size:"small",plain:!0,circle:!0,order:5}},"onUpdate:columns"(j){const G=o.value.table.columns;function B(te,W){const Y={};return X.forEach(W,ae=>{const he=te[ae.key];if(he){if(he.columnSetShow===!1){Y[ae.key]=he;return}delete he.order;const K=$n({...he},ae);Y[ae.key]=K,he.children&&(K.children=B(he.children,ae.children))}}),Y}const z=B(G,j);o.value.table.columns=z,o.value.table.columnsMap=Os({},z)}}}}function x(){return{table:{onSortChange(T){const{isServerSort:j,prop:G,asc:B,order:z}=T;Ci(o.value.table.columns,W=>{W.key===G?W.sortOrder=z:W.sortOrder=!1});const te=o.value.table.sort;o.value.table.sort=j?{prop:G,order:z,asc:B}:null,(j||te!=null)&&s.doRefresh()}}}}function v(){return{actionbar:{buttons:{add:{click(){s.openAdd({})}}}}}}function y(){const{compute:T}=Br();return{actionbar:{buttons:{addRow:{show:!1,text:n("fs.actionbar.add"),type:"primary",click:()=>{s.editable.addRow()}}}},rowHandle:{group:{editable:{remove:{text:"删除",...t.button.colors("danger"),click:async j=>{const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];await s.editable.doRemoveRow({editableId:z,row:B})}}},editRow:{edit:{text:"编辑",loading:T(j=>{const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey],te=s.editable.getEditableRow(z);return!!(te!=null&&te.loading)}),click:async j=>{var te;const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];if(o.value.table.editable.exclusive){const W=s.editable.getActiveRows();X.forEach(W,Y=>{o.value.table.editable.exclusiveEffect==="save"?s.editable.doSaveRow({row:Y.rowData}):s.editable.doCancelRow({row:Y.rowData})})}(te=s.editable.getEditableRow(z))==null||te.active()},show:T(j=>{var te,W;const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];return!((W=(te=s.editable)==null?void 0:te.getEditableRow(z))!=null&&W.isEditing)})},save:{text:"保存",loading:!1,click:async j=>{const{index:G,row:B}=j;await s.editable.doSaveRow({row:B})},show:T(j=>{var te,W;const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];return!!((W=(te=s.editable)==null?void 0:te.getEditableRow(z))!=null&&W.isEditing)})},cancel:{text:"取消",click:async j=>{var z;const{index:G,row:B}=j;await((z=s.editable)==null?void 0:z.doCancelRow({row:B}))},show:T(j=>{var te,W;const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];return!!((W=(te=s.editable)==null?void 0:te.getEditableRow(z))!=null&&W.isEditing)})},remove:{text:"删除",...t.button.colors("danger"),click:async j=>{var te;const{index:G,row:B}=j,z=B[o.value.table.editable.rowKey];await((te=s.editable)==null?void 0:te.doRemoveRow({row:B,editableId:z}))}}}}}}}const{cloneDeep:w}=Je();function b(T){T.search.validatedForm=w(T.search.initialForm)}function R(T){var he;const j={value:null};let G=w(T);const B=vi.commonOptions(e),z=vi.defaultOptions({t:r,crudOptionsRef:j});a=$n({},z,B,G),j.value=a;const te=l.unref(a.settings);if(te){const K=l.unref(te.plugins);X.forEach(K,(ce,N)=>{if(ce.enabled===!1)return;let _=ce.handle,E={};if(_==null){const H=Hf(N);H!=null&&(_=H.handle,E=H.opts)}if(_==null)return;const C=ce.before??E.before,F=_(ce.props,e,a);C!==!1?G=$n(F,G):G=$n(G,F)})}const W=$n(z,u(),d(),h(),m(),g(),p(),x(),v(),y(),B,G),{buildColumns:Y}=Bs(),ae=Y(W);return b(ae),(he=ae==null?void 0:ae.settings)!=null&&he.onUseCrud&&ae.settings.onUseCrud(ae),ae}function A(T){o.value=R(T),Re.info("fast-crud inited, crudBinding=",o.value)}function k(T){const j=$n({},a,T);return A(j),a=j,j}A(a);function U(T){$n(o.value,T)}return{appendCrudOptions:k,resetCrudOptions:A,appendCrudBinding:U,rebuildCrudBindings:R}}function zf(e){const{createCrudOptions:t,crudExposeRef:r}=e,n=e.crudRef||l.ref(),a=e.crudBinding||l.ref({});let i=e.crudExpose;i||(i=el({crudRef:n,crudBinding:a}).crudExpose),r&&!r.value&&(r.value=i),e.context==null&&(e.context={});const s=e.context;e.onExpose&&e.onExpose({crudRef:n,crudBinding:a,crudExpose:i,context:s});const o=t({...e,crudExpose:i,expose:i,context:s});function c(f){const u={crudExpose:i,...f,context:s};$n(f.crudOptions,e.crudOptionsOverride);const d=jf(u);return{...f,...d,crudRef:n,crudExpose:i,crudBinding:a,context:s}}return o instanceof Promise?o.then(f=>c(f)):c(o)}function tg(e){return zf(e)}function Gf(e){return zf(e)}function Xf(){const e=l.ref(),t=l.ref(),r={},{crudExpose:n}=el({crudBinding:t,crudRef:e});return{crudRef:e,crudBinding:t,context:r,crudExpose:n}}function Tn(e,t,r="modelValue"){const n=ue.uiContext.get();let a=e.dict;a&&a.prototype&&(a.clear(),a=l.shallowReactive(X.cloneDeep(e.dict)),a.cloneable=!1,a.clear());function i(){return l.computed(()=>{let A=[];if(e.options?A=e.options:a&&a.data!=null&&(a.data instanceof Array||Cn.logger.warn("dict.data类型错误,期望为数组,实际:",a.data),A=a.data,e.transformDictData&&(A=e.transformDictData(X.cloneDeep(a.data)))),n.type==="naive"||n.type==="element"){const k=[];for(const U of A)k.push({...U,value:y(U),label:b(U)});return k}return A})}function s(){return a}const o=l.inject("get:scope",function(){});function c(){const A=e[r]||t.attrs[r];return{...o(),componentRef:f,value:A}}const{proxy:f}=l.getCurrentInstance(),u=async(A=!1)=>{if(!a)return;if(a.getNodesByValues){const U=c();if(U.value==null)return;let T=U.value;Array.isArray(U.value)||(T=[U.value]),await a.appendByValues(T);return}if(a.loading)return;const k=c();if(A){await a.reloadDict(k);return}await a.loadDict(k)};u();const d=async()=>{await u(!0)},h=()=>{a&&a.clear()},m=()=>{a!=null&&(!a.prototype&&!a.cloneable||l.watch(()=>e[r],()=>{d()}))};(()=>{l.watch(()=>a==null?void 0:a.data,()=>{const A=c();t.attrs.onDictChange,t.emit("dict-change",{dict:a,...A})},{immediate:!0})})();const p=()=>{var A;return(A=s())==null?void 0:A.data},x=(A,k)=>{let U=k;return s()&&(U=s()[k]),A[U]},v=(A,k)=>{let U=k;s()&&(U=s()[k]),delete A[U]},y=A=>x(A,"value"),w=A=>x(A,"children"),b=A=>{if(e.labelFormatter)return e.labelFormatter(A);const k=x(A,"label");return k==null?"":String(k)};return{createComputedOptions:i,loadDict:u,reloadDict:d,clearDict:h,getDictData:p,getDict:s,watchValue:m,getValue:y,getLabel:b,getChildren:w,getColor:A=>x(A,"color"),removePropValue:v,curDict:a}}const Ua=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Kf=new Set,nl=typeof process=="object"&&process?process:{},Yf=(e,t,r,n)=>{typeof nl.emitWarning=="function"?nl.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let Ns=globalThis.AbortController,qf=globalThis.AbortSignal;if(typeof Ns>"u"){qf=class{constructor(){Te(this,"onabort");Te(this,"_onabort",[]);Te(this,"reason");Te(this,"aborted",!1)}addEventListener(n,a){this._onabort.push(a)}},Ns=class{constructor(){Te(this,"signal",new qf);t()}abort(n){var a,i;if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(const s of this.signal._onabort)s(n);(i=(a=this.signal).onabort)==null||i.call(a,n)}}};let e=((ap=nl.env)==null?void 0:ap.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const t=()=>{e&&(e=!1,Yf("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}const rg=e=>!Kf.has(e),Wn=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),Jf=e=>Wn(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Is:null:null;class Is extends Array{constructor(t){super(t),this.fill(0)}}const Ra=class Ra{constructor(t,r){Te(this,"heap");Te(this,"length");if(!V(Ra,fi))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(t),this.length=0}static create(t){const r=Jf(t);if(!r)return[];Be(Ra,fi,!0);const n=new Ra(t,r);return Be(Ra,fi,!1),n}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}};fi=new WeakMap,Ve(Ra,fi,!1);let al=Ra;const nf=class nf{constructor(t){Ve(this,_s);Ve(this,Po);Ve(this,wn);Ve(this,_n);Ve(this,bs);Ve(this,mi);Ve(this,pi);Ve(this,st);Ve(this,Cs);Ve(this,Na);Ve(this,yn);Ve(this,Es);Ve(this,Zr,void 0);Ve(this,Ar,void 0);Ve(this,Qr,void 0);Ve(this,en,void 0);Ve(this,ui,void 0);Ve(this,di,void 0);Te(this,"ttl");Te(this,"ttlResolution");Te(this,"ttlAutopurge");Te(this,"updateAgeOnGet");Te(this,"updateAgeOnHas");Te(this,"allowStale");Te(this,"noDisposeOnSet");Te(this,"noUpdateTTL");Te(this,"maxEntrySize");Te(this,"sizeCalculation");Te(this,"noDeleteOnFetchRejection");Te(this,"noDeleteOnStaleGet");Te(this,"allowStaleOnFetchAbort");Te(this,"allowStaleOnFetchRejection");Te(this,"ignoreFetchAbort");Ve(this,Pt,void 0);Ve(this,tn,void 0);Ve(this,Rt,void 0);Ve(this,ut,void 0);Ve(this,Me,void 0);Ve(this,fr,void 0);Ve(this,Dr,void 0);Ve(this,ar,void 0);Ve(this,$t,void 0);Ve(this,rn,void 0);Ve(this,Wt,void 0);Ve(this,nn,void 0);Ve(this,an,void 0);Ve(this,Rr,void 0);Ve(this,sn,void 0);Ve(this,ia,void 0);Ve(this,ur,void 0);Ve(this,Oa,()=>{});Ve(this,Mn,()=>{});Ve(this,ys,()=>{});Ve(this,Or,()=>!1);Ve(this,Ba,t=>{});Ve(this,hi,(t,r,n)=>{});Ve(this,ks,(t,r,n,a)=>{if(n||a)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});Te(this,lD,"LRUCache");const{max:r=0,ttl:n,ttlResolution:a=1,ttlAutopurge:i,updateAgeOnGet:s,updateAgeOnHas:o,allowStale:c,dispose:f,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:h,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:p,fetchMethod:x,memoMethod:v,noDeleteOnFetchRejection:y,noDeleteOnStaleGet:w,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:R,ignoreFetchAbort:A}=t;if(r!==0&&!Wn(r))throw new TypeError("max option must be a nonnegative integer");const k=r?Jf(r):Array;if(!k)throw new Error("invalid max value: "+r);if(Be(this,Zr,r),Be(this,Ar,m),this.maxEntrySize=g||V(this,Ar),this.sizeCalculation=p,this.sizeCalculation){if(!V(this,Ar)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(Be(this,di,v),x!==void 0&&typeof x!="function")throw new TypeError("fetchMethod must be a function if specified");if(Be(this,ui,x),Be(this,ia,!!x),Be(this,Rt,new Map),Be(this,ut,new Array(r).fill(void 0)),Be(this,Me,new Array(r).fill(void 0)),Be(this,fr,new k(r)),Be(this,Dr,new k(r)),Be(this,ar,0),Be(this,$t,0),Be(this,rn,al.create(r)),Be(this,Pt,0),Be(this,tn,0),typeof f=="function"&&Be(this,Qr,f),typeof u=="function"?(Be(this,en,u),Be(this,Wt,[])):(Be(this,en,void 0),Be(this,Wt,void 0)),Be(this,sn,!!V(this,Qr)),Be(this,ur,!!V(this,en)),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!h,this.noDeleteOnFetchRejection=!!y,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!R,this.ignoreFetchAbort=!!A,this.maxEntrySize!==0){if(V(this,Ar)!==0&&!Wn(V(this,Ar)))throw new TypeError("maxSize must be a positive integer if specified");if(!Wn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Ee(this,Po,cp).call(this)}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!w,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!o,this.ttlResolution=Wn(a)||a===0?a:1,this.ttlAutopurge=!!i,this.ttl=n||0,this.ttl){if(!Wn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Ee(this,_s,lf).call(this)}if(V(this,Zr)===0&&this.ttl===0&&V(this,Ar)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!V(this,Zr)&&!V(this,Ar)){const U="LRU_CACHE_UNBOUNDED";rg(U)&&(Kf.add(U),Yf("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",U,nf))}}static unsafeExposeInternals(t){return{starts:V(t,an),ttls:V(t,Rr),sizes:V(t,nn),keyMap:V(t,Rt),keyList:V(t,ut),valList:V(t,Me),next:V(t,fr),prev:V(t,Dr),get head(){return V(t,ar)},get tail(){return V(t,$t)},free:V(t,rn),isBackgroundFetch:r=>{var n;return Ee(n=t,st,dt).call(n,r)},backgroundFetch:(r,n,a,i)=>{var s;return Ee(s=t,pi,Uo).call(s,r,n,a,i)},moveToTail:r=>{var n;return Ee(n=t,Na,As).call(n,r)},indexes:r=>{var n;return Ee(n=t,wn,sa).call(n,r)},rindexes:r=>{var n;return Ee(n=t,_n,oa).call(n,r)},isStale:r=>{var n;return V(n=t,Or).call(n,r)}}}get max(){return V(this,Zr)}get maxSize(){return V(this,Ar)}get calculatedSize(){return V(this,tn)}get size(){return V(this,Pt)}get fetchMethod(){return V(this,ui)}get memoMethod(){return V(this,di)}get dispose(){return V(this,Qr)}get disposeAfter(){return V(this,en)}getRemainingTTL(t){return V(this,Rt).has(t)?1/0:0}*entries(){for(const t of Ee(this,wn,sa).call(this))V(this,Me)[t]!==void 0&&V(this,ut)[t]!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield[V(this,ut)[t],V(this,Me)[t]])}*rentries(){for(const t of Ee(this,_n,oa).call(this))V(this,Me)[t]!==void 0&&V(this,ut)[t]!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield[V(this,ut)[t],V(this,Me)[t]])}*keys(){for(const t of Ee(this,wn,sa).call(this)){const r=V(this,ut)[t];r!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield r)}}*rkeys(){for(const t of Ee(this,_n,oa).call(this)){const r=V(this,ut)[t];r!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield r)}}*values(){for(const t of Ee(this,wn,sa).call(this))V(this,Me)[t]!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield V(this,Me)[t])}*rvalues(){for(const t of Ee(this,_n,oa).call(this))V(this,Me)[t]!==void 0&&!Ee(this,st,dt).call(this,V(this,Me)[t])&&(yield V(this,Me)[t])}[Symbol.iterator](){return this.entries()}find(t,r={}){for(const n of Ee(this,wn,sa).call(this)){const a=V(this,Me)[n],i=Ee(this,st,dt).call(this,a)?a.__staleWhileFetching:a;if(i!==void 0&&t(i,V(this,ut)[n],this))return this.get(V(this,ut)[n],r)}}forEach(t,r=this){for(const n of Ee(this,wn,sa).call(this)){const a=V(this,Me)[n],i=Ee(this,st,dt).call(this,a)?a.__staleWhileFetching:a;i!==void 0&&t.call(r,i,V(this,ut)[n],this)}}rforEach(t,r=this){for(const n of Ee(this,_n,oa).call(this)){const a=V(this,Me)[n],i=Ee(this,st,dt).call(this,a)?a.__staleWhileFetching:a;i!==void 0&&t.call(r,i,V(this,ut)[n],this)}}purgeStale(){let t=!1;for(const r of Ee(this,_n,oa).call(this,{allowStale:!0}))V(this,Or).call(this,r)&&(Ee(this,yn,la).call(this,V(this,ut)[r],"expire"),t=!0);return t}info(t){const r=V(this,Rt).get(t);if(r===void 0)return;const n=V(this,Me)[r],a=Ee(this,st,dt).call(this,n)?n.__staleWhileFetching:n;if(a===void 0)return;const i={value:a};if(V(this,Rr)&&V(this,an)){const s=V(this,Rr)[r],o=V(this,an)[r];if(s&&o){const c=s-(Ua.now()-o);i.ttl=c,i.start=Date.now()}}return V(this,nn)&&(i.size=V(this,nn)[r]),i}dump(){const t=[];for(const r of Ee(this,wn,sa).call(this,{allowStale:!0})){const n=V(this,ut)[r],a=V(this,Me)[r],i=Ee(this,st,dt).call(this,a)?a.__staleWhileFetching:a;if(i===void 0||n===void 0)continue;const s={value:i};if(V(this,Rr)&&V(this,an)){s.ttl=V(this,Rr)[r];const o=Ua.now()-V(this,an)[r];s.start=Math.floor(Date.now()-o)}V(this,nn)&&(s.size=V(this,nn)[r]),t.unshift([n,s])}return t}load(t){this.clear();for(const[r,n]of t){if(n.start){const a=Date.now()-n.start;n.start=Ua.now()-a}this.set(r,n.value,n)}}set(t,r,n={}){var h,m,g,p,x;if(r===void 0)return this.delete(t),this;const{ttl:a=this.ttl,start:i,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:c}=n;let{noUpdateTTL:f=this.noUpdateTTL}=n;const u=V(this,ks).call(this,t,r,n.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),Ee(this,yn,la).call(this,t,"set"),this;let d=V(this,Pt)===0?void 0:V(this,Rt).get(t);if(d===void 0)d=V(this,Pt)===0?V(this,$t):V(this,rn).length!==0?V(this,rn).pop():V(this,Pt)===V(this,Zr)?Ee(this,mi,Vo).call(this,!1):V(this,Pt),V(this,ut)[d]=t,V(this,Me)[d]=r,V(this,Rt).set(t,d),V(this,fr)[V(this,$t)]=d,V(this,Dr)[d]=V(this,$t),Be(this,$t,d),Mo(this,Pt)._++,V(this,hi).call(this,d,u,c),c&&(c.set="add"),f=!1;else{Ee(this,Na,As).call(this,d);const v=V(this,Me)[d];if(r!==v){if(V(this,ia)&&Ee(this,st,dt).call(this,v)){v.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=v;y!==void 0&&!s&&(V(this,sn)&&((h=V(this,Qr))==null||h.call(this,y,t,"set")),V(this,ur)&&((m=V(this,Wt))==null||m.push([y,t,"set"])))}else s||(V(this,sn)&&((g=V(this,Qr))==null||g.call(this,v,t,"set")),V(this,ur)&&((p=V(this,Wt))==null||p.push([v,t,"set"])));if(V(this,Ba).call(this,d),V(this,hi).call(this,d,u,c),V(this,Me)[d]=r,c){c.set="replace";const y=v&&Ee(this,st,dt).call(this,v)?v.__staleWhileFetching:v;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(a!==0&&!V(this,Rr)&&Ee(this,_s,lf).call(this),V(this,Rr)&&(f||V(this,ys).call(this,d,a,i),c&&V(this,Mn).call(this,c,d)),!s&&V(this,ur)&&V(this,Wt)){const v=V(this,Wt);let y;for(;y=v==null?void 0:v.shift();)(x=V(this,en))==null||x.call(this,...y)}return this}pop(){var t;try{for(;V(this,Pt);){const r=V(this,Me)[V(this,ar)];if(Ee(this,mi,Vo).call(this,!0),Ee(this,st,dt).call(this,r)){if(r.__staleWhileFetching)return r.__staleWhileFetching}else if(r!==void 0)return r}}finally{if(V(this,ur)&&V(this,Wt)){const r=V(this,Wt);let n;for(;n=r==null?void 0:r.shift();)(t=V(this,en))==null||t.call(this,...n)}}}has(t,r={}){const{updateAgeOnHas:n=this.updateAgeOnHas,status:a}=r,i=V(this,Rt).get(t);if(i!==void 0){const s=V(this,Me)[i];if(Ee(this,st,dt).call(this,s)&&s.__staleWhileFetching===void 0)return!1;if(V(this,Or).call(this,i))a&&(a.has="stale",V(this,Mn).call(this,a,i));else return n&&V(this,Oa).call(this,i),a&&(a.has="hit",V(this,Mn).call(this,a,i)),!0}else a&&(a.has="miss");return!1}peek(t,r={}){const{allowStale:n=this.allowStale}=r,a=V(this,Rt).get(t);if(a===void 0||!n&&V(this,Or).call(this,a))return;const i=V(this,Me)[a];return Ee(this,st,dt).call(this,i)?i.__staleWhileFetching:i}async fetch(t,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:c=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:d=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:h=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:g=this.allowStaleOnFetchAbort,context:p,forceRefresh:x=!1,status:v,signal:y}=r;if(!V(this,ia))return v&&(v.fetch="get"),this.get(t,{allowStale:n,updateAgeOnGet:a,noDeleteOnStaleGet:i,status:v});const w={allowStale:n,updateAgeOnGet:a,noDeleteOnStaleGet:i,ttl:s,noDisposeOnSet:o,size:c,sizeCalculation:f,noUpdateTTL:u,noDeleteOnFetchRejection:d,allowStaleOnFetchRejection:h,allowStaleOnFetchAbort:g,ignoreFetchAbort:m,status:v,signal:y};let b=V(this,Rt).get(t);if(b===void 0){v&&(v.fetch="miss");const R=Ee(this,pi,Uo).call(this,t,b,w,p);return R.__returned=R}else{const R=V(this,Me)[b];if(Ee(this,st,dt).call(this,R)){const j=n&&R.__staleWhileFetching!==void 0;return v&&(v.fetch="inflight",j&&(v.returnedStale=!0)),j?R.__staleWhileFetching:R.__returned=R}const A=V(this,Or).call(this,b);if(!x&&!A)return v&&(v.fetch="hit"),Ee(this,Na,As).call(this,b),a&&V(this,Oa).call(this,b),v&&V(this,Mn).call(this,v,b),R;const k=Ee(this,pi,Uo).call(this,t,b,w,p),T=k.__staleWhileFetching!==void 0&&n;return v&&(v.fetch=A?"stale":"refresh",T&&A&&(v.returnedStale=!0)),T?k.__staleWhileFetching:k.__returned=k}}async forceFetch(t,r={}){const n=await this.fetch(t,r);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(t,r={}){const n=V(this,di);if(!n)throw new Error("no memoMethod provided to constructor");const{context:a,forceRefresh:i,...s}=r,o=this.get(t,s);if(!i&&o!==void 0)return o;const c=n(t,o,{options:s,context:a});return this.set(t,c,s),c}get(t,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,status:s}=r,o=V(this,Rt).get(t);if(o!==void 0){const c=V(this,Me)[o],f=Ee(this,st,dt).call(this,c);return s&&V(this,Mn).call(this,s,o),V(this,Or).call(this,o)?(s&&(s.get="stale"),f?(s&&n&&c.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?c.__staleWhileFetching:void 0):(i||Ee(this,yn,la).call(this,t,"expire"),s&&n&&(s.returnedStale=!0),n?c:void 0)):(s&&(s.get="hit"),f?c.__staleWhileFetching:(Ee(this,Na,As).call(this,o),a&&V(this,Oa).call(this,o),c))}else s&&(s.get="miss")}delete(t){return Ee(this,yn,la).call(this,t,"delete")}clear(){return Ee(this,Es,uf).call(this,"delete")}};lD=Symbol.toStringTag,Zr=new WeakMap,Ar=new WeakMap,Qr=new WeakMap,en=new WeakMap,ui=new WeakMap,di=new WeakMap,Pt=new WeakMap,tn=new WeakMap,Rt=new WeakMap,ut=new WeakMap,Me=new WeakMap,fr=new WeakMap,Dr=new WeakMap,ar=new WeakMap,$t=new WeakMap,rn=new WeakMap,Wt=new WeakMap,nn=new WeakMap,an=new WeakMap,Rr=new WeakMap,sn=new WeakMap,ia=new WeakMap,ur=new WeakMap,_s=new WeakSet,lf=function(){const t=new Is(V(this,Zr)),r=new Is(V(this,Zr));Be(this,Rr,t),Be(this,an,r),Be(this,ys,(i,s,o=Ua.now())=>{if(r[i]=s!==0?o:0,t[i]=s,s!==0&&this.ttlAutopurge){const c=setTimeout(()=>{V(this,Or).call(this,i)&&Ee(this,yn,la).call(this,V(this,ut)[i],"expire")},s+1);c.unref&&c.unref()}}),Be(this,Oa,i=>{r[i]=t[i]!==0?Ua.now():0}),Be(this,Mn,(i,s)=>{if(t[s]){const o=t[s],c=r[s];if(!o||!c)return;i.ttl=o,i.start=c,i.now=n||a();const f=i.now-c;i.remainingTTL=o-f}});let n=0;const a=()=>{const i=Ua.now();if(this.ttlResolution>0){n=i;const s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return i};this.getRemainingTTL=i=>{const s=V(this,Rt).get(i);if(s===void 0)return 0;const o=t[s],c=r[s];if(!o||!c)return 1/0;const f=(n||a())-c;return o-f},Be(this,Or,i=>{const s=r[i],o=t[i];return!!o&&!!s&&(n||a())-s>o})},Oa=new WeakMap,Mn=new WeakMap,ys=new WeakMap,Or=new WeakMap,Po=new WeakSet,cp=function(){const t=new Is(V(this,Zr));Be(this,tn,0),Be(this,nn,t),Be(this,Ba,r=>{Be(this,tn,V(this,tn)-t[r]),t[r]=0}),Be(this,ks,(r,n,a,i)=>{if(Ee(this,st,dt).call(this,n))return 0;if(!Wn(a))if(i){if(typeof i!="function")throw new TypeError("sizeCalculation must be a function");if(a=i(n,r),!Wn(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),Be(this,hi,(r,n,a)=>{if(t[r]=n,V(this,Ar)){const i=V(this,Ar)-t[r];for(;V(this,tn)>i;)Ee(this,mi,Vo).call(this,!0)}Be(this,tn,V(this,tn)+t[r]),a&&(a.entrySize=n,a.totalCalculatedSize=V(this,tn))})},Ba=new WeakMap,hi=new WeakMap,ks=new WeakMap,wn=new WeakSet,sa=function*({allowStale:t=this.allowStale}={}){if(V(this,Pt))for(let r=V(this,$t);!(!Ee(this,bs,cf).call(this,r)||((t||!V(this,Or).call(this,r))&&(yield r),r===V(this,ar)));)r=V(this,Dr)[r]},_n=new WeakSet,oa=function*({allowStale:t=this.allowStale}={}){if(V(this,Pt))for(let r=V(this,ar);!(!Ee(this,bs,cf).call(this,r)||((t||!V(this,Or).call(this,r))&&(yield r),r===V(this,$t)));)r=V(this,fr)[r]},bs=new WeakSet,cf=function(t){return t!==void 0&&V(this,Rt).get(V(this,ut)[t])===t},mi=new WeakSet,Vo=function(t){var i,s;const r=V(this,ar),n=V(this,ut)[r],a=V(this,Me)[r];return V(this,ia)&&Ee(this,st,dt).call(this,a)?a.__abortController.abort(new Error("evicted")):(V(this,sn)||V(this,ur))&&(V(this,sn)&&((i=V(this,Qr))==null||i.call(this,a,n,"evict")),V(this,ur)&&((s=V(this,Wt))==null||s.push([a,n,"evict"]))),V(this,Ba).call(this,r),t&&(V(this,ut)[r]=void 0,V(this,Me)[r]=void 0,V(this,rn).push(r)),V(this,Pt)===1?(Be(this,ar,Be(this,$t,0)),V(this,rn).length=0):Be(this,ar,V(this,fr)[r]),V(this,Rt).delete(n),Mo(this,Pt)._--,r},pi=new WeakSet,Uo=function(t,r,n,a){const i=r===void 0?void 0:V(this,Me)[r];if(Ee(this,st,dt).call(this,i))return i;const s=new Ns,{signal:o}=n;o==null||o.addEventListener("abort",()=>s.abort(o.reason),{signal:s.signal});const c={signal:s.signal,options:n,context:a},f=(p,x=!1)=>{const{aborted:v}=s.signal,y=n.ignoreFetchAbort&&p!==void 0;if(n.status&&(v&&!x?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,y&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),v&&!y&&!x)return d(s.signal.reason);const w=m;return V(this,Me)[r]===m&&(p===void 0?w.__staleWhileFetching?V(this,Me)[r]=w.__staleWhileFetching:Ee(this,yn,la).call(this,t,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(t,p,c.options))),p},u=p=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=p),d(p)),d=p=>{const{aborted:x}=s.signal,v=x&&n.allowStaleOnFetchAbort,y=v||n.allowStaleOnFetchRejection,w=y||n.noDeleteOnFetchRejection,b=m;if(V(this,Me)[r]===m&&(!w||b.__staleWhileFetching===void 0?Ee(this,yn,la).call(this,t,"fetch"):v||(V(this,Me)[r]=b.__staleWhileFetching)),y)return n.status&&b.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),b.__staleWhileFetching;if(b.__returned===b)throw p},h=(p,x)=>{var y;const v=(y=V(this,ui))==null?void 0:y.call(this,t,i,c);v&&v instanceof Promise&&v.then(w=>p(w===void 0?void 0:w),x),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(p(void 0),n.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};n.status&&(n.status.fetchDispatched=!0);const m=new Promise(h).then(f,u),g=Object.assign(m,{__abortController:s,__staleWhileFetching:i,__returned:void 0});return r===void 0?(this.set(t,g,{...c.options,status:void 0}),r=V(this,Rt).get(t)):V(this,Me)[r]=g,g},st=new WeakSet,dt=function(t){if(!V(this,ia))return!1;const r=t;return!!r&&r instanceof Promise&&r.hasOwnProperty("__staleWhileFetching")&&r.__abortController instanceof Ns},Cs=new WeakSet,ff=function(t,r){V(this,Dr)[r]=t,V(this,fr)[t]=r},Na=new WeakSet,As=function(t){t!==V(this,$t)&&(t===V(this,ar)?Be(this,ar,V(this,fr)[t]):Ee(this,Cs,ff).call(this,V(this,Dr)[t],V(this,fr)[t]),Ee(this,Cs,ff).call(this,V(this,$t),t),Be(this,$t,t))},yn=new WeakSet,la=function(t,r){var a,i,s,o;let n=!1;if(V(this,Pt)!==0){const c=V(this,Rt).get(t);if(c!==void 0)if(n=!0,V(this,Pt)===1)Ee(this,Es,uf).call(this,r);else{V(this,Ba).call(this,c);const f=V(this,Me)[c];if(Ee(this,st,dt).call(this,f)?f.__abortController.abort(new Error("deleted")):(V(this,sn)||V(this,ur))&&(V(this,sn)&&((a=V(this,Qr))==null||a.call(this,f,t,r)),V(this,ur)&&((i=V(this,Wt))==null||i.push([f,t,r]))),V(this,Rt).delete(t),V(this,ut)[c]=void 0,V(this,Me)[c]=void 0,c===V(this,$t))Be(this,$t,V(this,Dr)[c]);else if(c===V(this,ar))Be(this,ar,V(this,fr)[c]);else{const u=V(this,Dr)[c];V(this,fr)[u]=V(this,fr)[c];const d=V(this,fr)[c];V(this,Dr)[d]=V(this,Dr)[c]}Mo(this,Pt)._--,V(this,rn).push(c)}}if(V(this,ur)&&((s=V(this,Wt))!=null&&s.length)){const c=V(this,Wt);let f;for(;f=c==null?void 0:c.shift();)(o=V(this,en))==null||o.call(this,...f)}return n},Es=new WeakSet,uf=function(t){var r,n,a;for(const i of Ee(this,_n,oa).call(this,{allowStale:!0})){const s=V(this,Me)[i];if(Ee(this,st,dt).call(this,s))s.__abortController.abort(new Error("deleted"));else{const o=V(this,ut)[i];V(this,sn)&&((r=V(this,Qr))==null||r.call(this,s,o,t)),V(this,ur)&&((n=V(this,Wt))==null||n.push([s,o,t]))}}if(V(this,Rt).clear(),V(this,Me).fill(void 0),V(this,ut).fill(void 0),V(this,Rr)&&V(this,an)&&(V(this,Rr).fill(0),V(this,an).fill(0)),V(this,nn)&&V(this,nn).fill(0),Be(this,ar,0),Be(this,$t,0),V(this,rn).length=0,Be(this,tn,0),Be(this,Pt,0),V(this,ur)&&V(this,Wt)){const i=V(this,Wt);let s;for(;s=i==null?void 0:i.shift();)(a=V(this,en))==null||a.call(this,...s)}};let il=nf;const Ps=new il({max:500,maxSize:5e3,ttl:1e3*60*30,sizeCalculation:(e,t)=>1}),{UnMergeable:ng}=Je();function ag(e){Zf=e}let Zf=async e=>(Re.warn("请配置 app.use(FsCrud,{dictRequest:(context)=>{ 你的字典请求方法 }})"),[]);class sl extends ng{constructor(r){super();Te(this,"cache",!1);Te(this,"prototype",!1);Te(this,"immediate",!0);Te(this,"url");Te(this,"getData");Te(this,"value","value");Te(this,"label","label");Te(this,"labelBuilder");Te(this,"children","children");Te(this,"color","color");Te(this,"isTree",!1);Te(this,"_data",null);Te(this,"originalData");Te(this,"dataMap",{});Te(this,"loading",!1);Te(this,"custom",{});Te(this,"getNodesByValues");Te(this,"onReady");Te(this,"notifies",[]);Te(this,"_unfetchValues",{});Object.defineProperty(this,"loading",{value:!1,enumerable:!1}),Object.defineProperty(this,"notifies",{value:!1,enumerable:!1}),Object.defineProperty(this,"originalData",{value:null,enumerable:!1}),this.loading=!1,X.merge(this,r),r.data!=null&&(this.originalData=r.data,this.setData(r.data)),this.toMap()}get data(){return this._data}set data(r){this._data=r,this.toMap()}isDynamic(){return this.url instanceof Function||this.getData instanceof Function||this.prototype}setData(r){this.data=r}async _loadDict(r){if(this.data&&!r.reload)return this.data;if(this.loading)return this._registerNotify();let n=null;if(this.getNodesByValues){if(r.value){let a=null;this.cache&&this.url&&(a=this.url+r.value);let i=null;if(a&&(i=Ps.get(a)),i)n=i;else{const s=Array.isArray(r.value)?r.value:[r.value];if(n=await this.getNodesByValues(s,r),n!=null&&!(n instanceof Array)){Re.error("getNodesByValues需要返回数组,当前返回值:",n);return}a&&Ps.set(a,n)}}}else if(this.originalData)n=this.originalData;else{this.loading=!0;try{n=await this.getRemoteDictData(r)}finally{this.loading=!1}}this.data=n,this.onReady&&this.onReady({dict:this,...r}),this._triggerNotify()}_triggerNotify(){this.notifies&&this.notifies.length>0&&(X.forEach(this.notifies,r=>{r(this.data)}),this.notifies.length=0)}_registerNotify(){let r=null;const n=new Promise(a=>{r=i=>{a(i)}});return this.notifies||(this.notifies=[]),this.notifies.push(r),n}async loadDict(r){return await this._loadDict({...r})}async reloadDict(r){return await this.loadDict({...r,reload:!0})}async appendByValues(r){if(this.getNodesByValues==null){Re.warn("请配置getNodesByValues");return}for(const a of r)this.dataMap[a]||this._unfetchValues[a]||(this._unfetchValues[a]={loading:!1,value:a});await l.nextTick(),await l.nextTick(),await l.nextTick();const n=[];if(X.forEach(this._unfetchValues,a=>{a.loading||(a.loading=!0,n.push(a.value))}),n.length>0){const a=await this.getNodesByValues(n);this.setData([...this.data||[],...a]);for(const i of n)delete this._unfetchValues[i];return Object.keys(this._unfetchValues).length===0&&this._triggerNotify(),this.data}else return this._registerNotify()}clear(){this.originalData=null,this.setData(null)}async getRemoteDictData(r){let n,a,i;if(this.url&&(i=this.url,i instanceof Function&&(i=i({...r,dict:this})),a=i),this.getData!=null)n=async()=>{const s=await this.getData({url:i,dict:this,...r});return Array.isArray(s)?s:[]};else if(i)n=async()=>{const s=await Zf({url:i,dict:this});return Array.isArray(s)?s:[]};else return[];if(this.cache&&a){let s=Ps.get(a);if(s==null)s={loaded:!1,loading:!0,data:void 0,callback:[]},Ps.set(a,s);else{if(s.loaded)return s.data;if(s.loading)return new Promise(o=>{const c=f=>{o(f)};s.callback.push(c)})}try{s.loaded=!1,s.loading=!0;let o=await n();o=o||[],o instanceof Array||Re.warn("dict data 格式有误,期望格式为数组,实际格式为:",o),s.data=o,s.loaded=!0,s.loading=!1;for(const c of s.callback)c(o);return s.callback=[],o}catch(o){s.loading=!1,s.loaded=!1,Re.error("load dict error:",o)}}return await n()}toMap(){if(this._data==null){this.dataMap={};return}const r={};this.data&&this.buildMap(r,this.data||[]),this.dataMap=r}buildMap(r,n){X.forEach(n,a=>{r[this.getValue(a)]=a,this.isTree&&this.getChildren(a)&&this.buildMap(r,this.getChildren(a))})}getValue(r){return r[this.value]}getLabel(r){return this.labelBuilder?this.labelBuilder(r):r[this.label]}getChildren(r){return r[this.children]}getColor(r){return r[this.color]}getDictData(){return this.data}getDictMap(){return this.dataMap}getNodeByValue(r){return this.dataMap[r]}getNodesFromDataMap(r){if(r==null)return[];X.isArray(r)||(r=[r]);const n=[];return X.forEach(r,a=>{const i=this.dataMap[a];i?n.push(i):n.push({[this.value]:a})}),n}}function Qf(e){const t=l.shallowReactive(new sl(e));return!t.prototype&&t.immediate&&t.loadDict(),t}function e0(){return{dict:Qf,setDictRequest:ag,Dict:sl}}function ig(){return{addTypes:Ma.addTypes,getType:Ma.getType,getTypes:Ma.getTypes,install:Ma.install}}async function sg(e){await l.nextTick();const t=e.getModal();if(t==null)return;const r=t.querySelector(".ant-modal-header");if(r==null)return;const n=t,i=t.style;r.style.cursor="move",r.onmousedown=s=>{const o=s.clientX,c=s.clientY;n.style.transform="translate(0px, 0px)";let f,u;i.left.includes("%")?(f=+document.body.clientWidth*(+i.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+i.top.replace(/%/g,"")/100)):(f=+i.left.replace(/px/g,""),u=+i.top.replace(/px/g,""),u=u===0?100:u),document.onmousemove=function(d){const h=d.clientX-o,m=d.clientY-c;n.style.left=`${h+f}px`,n.style.top=`${m+u}px`},document.onmouseup=function(d){document.onmousemove=null,document.onmouseup=null}}}async function og(e){await l.nextTick();const t=e.getModal();if(t==null)return;const r=t.querySelector(".n-card-header");if(r==null)return;const n=t,i=t.style;r.style.cursor="move",r.onmousedown=s=>{const o=s.clientX,c=s.clientY;n.style.transform="translate(0px, 0px)";let f,u;i.left.includes("%")?(f=+document.body.clientWidth*(+i.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+i.top.replace(/%/g,"")/100)):(f=+i.left.replace(/px/g,""),u=+i.top.replace(/px/g,"")),document.onmousemove=async function(d){if(d.clientX==0&&d.clientY==0)return;const h=d.clientX-o,m=d.clientY-c;n.style.left=`${h+f}px`,n.style.top=`${m+u}px`},document.onmouseup=function(d){document.onmousemove=null,document.onmouseup=null}}}async function lg(e){const{ui:t}=ue.useUi();t.type==="antdv"?await sg(e):t.type==="element"||await og(e)}function t0(){return{dragModal:lg}}const r0={logger:{off:{tableColumns:!1}}},cg=l.defineComponent({name:"FsContainer",props:{fixedHeight:{type:Boolean,default:!0},bodyStyle:{type:Object,default:()=>({})},innerStyle:{type:Object,default:()=>({})}},setup(e,t){const{merge:r}=Je(),n=l.computed(()=>e.fixedHeight===!1?r({position:"relative"},e.innerStyle):e.innerStyle),a=l.computed(()=>e.fixedHeight===!1?r({flex:"unset"},e.bodyStyle):e.bodyStyle);return{computedInnerStyle:n,computedBodyStyle:a}}}),DD="",fg={class:"fs-container"},ug={class:"box"},dg={class:"header"},hg={class:"footer"};function mg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",fg,[l.createElementVNode("div",ug,[l.createElementVNode("div",{class:"inner",style:l.normalizeStyle(e.computedInnerStyle)},[l.createElementVNode("div",dg,[l.renderSlot(e.$slots,"header")]),l.createElementVNode("div",{class:"body",style:l.normalizeStyle(e.computedBodyStyle)},[l.renderSlot(e.$slots,"default")],4),l.createElementVNode("div",hg,[l.renderSlot(e.$slots,"footer")])],4)]),l.renderSlot(e.$slots,"box")])}const n0=nt(cg,[["render",mg]]),pg=l.defineComponent({name:"FsLayoutDefault"}),RD="",gg={class:"fs-crud-header"},xg={class:"fs-header-top"},vg={class:"fs-header-middle"},wg={class:"fs-header-bottom"},_g={class:"fs-crud-footer"};function yg(e,t,r,n,a,i){const s=l.resolveComponent("fs-container");return l.openBlock(),l.createBlock(s,{class:"fs-layout-default"},{header:l.withCtx(()=>[l.createElementVNode("div",gg,[l.createElementVNode("div",xg,[l.renderSlot(e.$slots,"header-top")]),l.renderSlot(e.$slots,"search"),l.createElementVNode("div",vg,[l.renderSlot(e.$slots,"header-middle")]),l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar"),l.createElementVNode("div",wg,[l.renderSlot(e.$slots,"header-bottom")]),l.renderSlot(e.$slots,"tabs")])]),footer:l.withCtx(()=>[l.createElementVNode("div",_g,[l.renderSlot(e.$slots,"footer-top"),l.renderSlot(e.$slots,"pagination"),l.renderSlot(e.$slots,"footer-bottom")])]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default"),l.renderSlot(e.$slots,"table"),l.renderSlot(e.$slots,"form")]),_:3})}const a0=nt(pg,[["render",yg]]),kg=l.defineComponent({name:"FsLayoutCard",setup(){const e=l.inject("get:crudBinding"),t=l.computed(()=>{var a,i;return e==null?!0:(i=(a=e())==null?void 0:a.search)==null?void 0:i.show}),{ui:r}=ue.useUi(),n=l.ref(r.card.name);return{searchShow:t,cardComponentName:n}}}),OD="",bg={class:"fs-header-top"},Cg={class:"fs-header-bottom"},Eg={class:"top-bar"},Sg={class:"top-bar"},Tg={class:"fs-crud-footer"};function Fg(e,t,r,n,a,i){const s=l.resolveComponent("fs-container");return l.openBlock(),l.createBlock(s,{class:"fs-layout-card"},{header:l.withCtx(()=>[l.createElementVNode("div",bg,[l.renderSlot(e.$slots,"header-top")]),e.searchShow?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.cardComponentName),{key:0},{default:l.withCtx(()=>[l.renderSlot(e.$slots,"search")]),_:3})):l.createCommentVNode("",!0),l.createElementVNode("div",Cg,[l.renderSlot(e.$slots,"header-bottom")])]),default:l.withCtx(()=>[l.createVNode(s,null,{header:l.withCtx(()=>[l.renderSlot(e.$slots,"tabs")]),default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.cardComponentName),{class:"fs-layout-card-body"},{title:l.withCtx(()=>[l.createElementVNode("div",Eg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),header:l.withCtx(()=>[l.createElementVNode("div",Sg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),default:l.withCtx(()=>[l.createVNode(s,null,{footer:l.withCtx(()=>[l.createElementVNode("div",Tg,[l.renderSlot(e.$slots,"footer-top"),l.renderSlot(e.$slots,"pagination"),l.renderSlot(e.$slots,"footer-bottom")])]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default"),l.renderSlot(e.$slots,"table"),l.renderSlot(e.$slots,"form")]),_:3})]),_:3}))]),_:3})]),_:3})}const i0=nt(kg,[["render",Fg]]),BD="";function s0(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const o0=l.defineComponent({name:"FsButton",inheritAttrs:!1,props:{text:{type:String,default:"",required:!1},icon:{type:[String,Object,Function],default:"",required:!1},iconRight:{type:[String,Object,Function],default:"",required:!1},circle:{type:Boolean,default:!1,required:!1},tooltip:{type:Object,default:void 0},badge:{type:Object,default:null,required:!1},buttonProps:{type:Object,default:void 0},className:{type:[String,Array,Object],default:void 0,required:!1},loading:{type:Boolean,default:void 0,required:!1}},emits:["click"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Je(),a=l.ref(!1),i=l.computed(()=>e.loading??a.value??!1),s=(m,g="fs-button-icon")=>{if(m!=null)return typeof m=="string"?l.createVNode(l.resolveComponent("fs-icon"),{icon:m,class:g},null):typeof m=="function"?m():l.createVNode(l.resolveComponent("fs-icon"),l.mergeProps(m,{class:g}),null)};let o=()=>{const m=e.icon,g=e.iconRight,p=r.type!=="element",x=!p;let v;const y={...t.slots};(m&&!p&&!x||t.slots.default||e.text||g)&&(y.default=()=>{const k=[];return m&&!p&&!x&&k.push(s(m)),t.slots.default&&k.push(t.slots.default()),e.text&&k.push(e.text),g&&k.push(s(g,"fs-button-icon-right")),k}),m&&(p&&!y.icon?y.icon=()=>s(m):x&&!y.icon&&(v=s(m)));const w=e.circle?r.button.circle:{},b=l.resolveDynamicComponent(r.button.name),R=k=>{k.loadingRef=a,t.emit("click",k)},A=n({...w,class:{"fs-button":!0,"is-thin":!e.text&&!t.slots.default},loading:i.value,onClick:R},{class:e.className,...X.omit(t.attrs,["click","order","show","render","dropdown"]),...e.buttonProps});return v&&(A.icon=v),l.h(b,A,y)};const c=o,f=l.resolveDynamicComponent(r.badge.name);if(e.badge&&(o=()=>{let m;return l.createVNode(f,e.badge,s0(m=c())?m:{default:()=>[m]})}),!e.tooltip)return o;const u=l.resolveDynamicComponent(r.tooltip.name),d=l.computed(()=>X.omit(e.tooltip,"slots")),h=r.tooltip.trigger;return()=>{var g;const m={...(g=e.tooltip)==null?void 0:g.slots,[h]:o};return l.createVNode(u,d.value,s0(m)?m:{default:()=>[m]})}}}),l0=l.defineComponent({name:"FsIcon",inheritAttrs:!1,props:{icon:{type:String,default:void 0,require:!0},baseUrl:{type:String,default:""},size:{type:String,default:""}},setup(e,t){const{ui:r}=ue.useUi(),n=l.computed(()=>{var i;if(e.icon&&((i=e.icon)==null?void 0:i.indexOf(":"))>=0){if(e.icon.startsWith("http:")||e.icon.startsWith("https:")){let u=null;return e.icon.startsWith("http://")||e.icon.startsWith("https://")?u=e.icon:u=e.baseUrl+e.icon.replace("http:","").replace("https:",""),()=>{const d={};return e.size&&(d.width=e.size,d.height=e.size),l.createVNode("span",{class:"fs-icon-image-container",style:d},[l.createVNode("img",l.mergeProps({class:"fs-icon-image",src:u},t.attrs),null)])}}if(e.icon.startsWith("svg:")){const u=l.resolveDynamicComponent("FsIconSvg");return()=>{const d=e.icon.replace("svg:","");return l.createVNode(u,l.mergeProps({class:"fs-icon",icon:d},t.attrs),null)}}const s=l.resolveDynamicComponent("FsIconify"),o=e.icon.split(":");let c={},f=e.icon;return o.length>=3&&(c={color:o[2]},f=o[0]+":"+o[1]),()=>l.createVNode(s,l.mergeProps({class:"fs-icon",icon:f,style:c},t.attrs),null)}const a=l.resolveDynamicComponent(e.icon);return typeof a=="string"?()=>l.createVNode("span",{title:"error icon name"},[a]):r.icon.isComponent?()=>l.createVNode(a,l.mergeProps({class:"fs-icon"},t.attrs),null):()=>l.createVNode(l.resolveComponent("el-icon"),l.mergeProps({class:"fs-icon"},t.attrs),{default:()=>[l.createVNode(a,null,null)]})});return()=>n.value()}}),Ag=l.defineComponent({name:"FsIconify",components:{Icon:fp.Icon},props:{icon:{type:String},spin:{type:Boolean,default:!1}},setup(e,t){return{iconifyRef:l.ref(null)}}}),ND="";function Dg(e,t,r,n,a,i){const s=l.resolveComponent("Icon");return l.openBlock(),l.createElementBlock("span",{class:l.normalizeClass(["fs-iconify",{"fs-iconify-spin":e.spin}])},[l.createVNode(s,{ref:"iconifyRef",icon:e.icon,inline:!0},null,8,["icon"])],2)}const c0=nt(Ag,[["render",Dg]]),Rg=l.defineComponent({name:"FsSvgIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:16},spin:{type:Boolean,default:!1}},setup(e){const t=l.computed(()=>`#${e.icon}`),r=l.computed(()=>{const{size:n}=e;let a=`${n}`;return a=`${a.replace("px","")}px`,{width:a,height:a}});return{symbolId:t,getStyle:r}}}),ID="",Og={class:"fs-icon-svg-content","aria-hidden":"true"},Bg=["xlink:href"];function Ng(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",{class:l.normalizeClass(["fs-icon-svg",e.spin&&"fs-icon-spin"])},[(l.openBlock(),l.createElementBlock("svg",Og,[l.createElementVNode("use",{"xlink:href":e.symbolId},null,8,Bg)]))],2)}const f0=nt(Rg,[["render",Ng]]),Ig=l.defineComponent({name:"FsLabel",props:{compact:{type:Boolean,default:!1},label:{type:String,default:""},labelAttrs:{type:Object,default:()=>({})},contentAttrs:{type:Object,default:()=>({})}}}),PD="";function Pg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["fs-label",{compact:e.compact}])},[l.createElementVNode("div",l.mergeProps({class:"label"},e.labelAttrs),[l.createTextVNode(l.toDisplayString(e.label)+" ",1),l.renderSlot(e.$slots,"label")],16),l.createElementVNode("div",l.mergeProps({class:"content"},e.contentAttrs),[l.renderSlot(e.$slots,"default")],16)],2)}const u0=nt(Ig,[["render",Pg]]),Lg={key:0,class:"fs-loading"},Mg={key:0},Vg=l.defineComponent({name:"FsLoading"}),d0=l.defineComponent({...Vg,props:{loading:{type:Boolean},icon:{},text:{}},setup(e){const{ui:t}=ue.useUi();return(r,n)=>{const a=l.resolveComponent("fs-icon");return e.loading?(l.openBlock(),l.createElementBlock("div",Lg,[l.createVNode(a,{class:"fs-icon-spin",icon:e.icon??l.unref(t).icons.refresh},null,8,["icon"]),e.text?(l.openBlock(),l.createElementBlock("span",Mg,l.toDisplayString(e.text),1)):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)}}}),LD="",Ug=l.defineComponent({name:"FsBox"}),$g={class:"fs-box"};function Wg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",$g,[l.renderSlot(e.$slots,"default")])}const h0=nt(Ug,[["render",Wg]]);function Hg(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}function m0(e,t){if(e[t]instanceof Array){const r=e[t];e[t]=n=>{for(const a of r)a(n)}}}const jg=["div","span","a","p","pre","li","ol","ul"],ol=l.defineComponent({name:"FsComponentRender",inheritAttrs:!1,props:{modelValue:{},name:{},slots:{type:Object},children:{type:Object},on:{type:Object},events:{type:Object},scope:{type:Object},vModel:{type:[String,Object]},props:{},render:{},undefineToNull:{type:Boolean,default:!0}},emits:["update:dict","update:modelValue","mounted"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Je();l.provide("get:scope",()=>e.scope),l.onMounted(()=>{t.emit("mounted",e.scope)});const a=l.ref(),i=l.computed(()=>{const m={name:"modelValue",trim:!1,number:!1,transform:void 0};e.vModel&&(typeof e.vModel=="string"?m.name=e.vModel:n(m,e.vModel));const g=e.modelValue??(r.type==="antdv"?void 0:null),p="onUpdate:"+m.name,x={ref:a,[m.name]:g,[p]:y=>{if(y&&(m.trim&&(y=y.trim()),m.number)){const w=Number(y);isNaN(w)||(y=w)}m.transform&&(y=m.transform(y)),y===void 0&&e.undefineToNull&&(y=null),t.emit("update:modelValue",y)},...e.props},v={...e.events,...e.on};return X.forEach(v,(y,w)=>{const b=y;w.startsWith("on")||(w=X.camelCase("on_"+w)),x[w]=R=>b({...e.scope,$event:R})}),x}),s=()=>{const m={},g=(p,x)=>{p instanceof Function?m[x]=v=>p({...e.scope,scope:v}):m[x]=()=>p};return X.forEach(e.children,g),X.forEach(e.slots,g),m},o=l.computed(()=>{e.name;let m=l.unref(e.name)||r.input.name;typeof m=="function"&&(m=m());const g={isAsyncComponent:!1,component:m};let p=g.component;return jg.includes(p)||(typeof p=="string"&&(p=l.resolveComponent(p)),(p==null?void 0:p.name)==="AsyncComponentWrapper"&&(g.isAsyncComponent=!0)),g.component=p,g}),c=s;function f(){return o.value.isAsyncComponent?d():u()}function u(){return a.value}async function d(){const m=u();return m??new Promise((g,p)=>{h(g,p,0)})}function h(m,g,p){setTimeout(()=>{const x=u();if(x!=null){m(x);return}if(p++,p>20){g(new Error("异步组件加载超时"));return}h(m,g,p)},200)}return t.expose({props:e,getTargetRefSync:u,getTargetRef:f,getTargetRefAsync:d}),()=>{let m;const g=l.mergeProps(i.value,t.attrs);return m0(g,"onChange"),m0(g,"onBlur"),e.render?e.render({...e.scope,attrs:g}):l.createVNode(o.value.component,g,Hg(m=c())?m:{default:()=>[m]})}}}),p0=l.defineComponent({name:"FsSlotRender",inheritAttrs:!1,props:{slots:{type:Function},scope:{type:Object}},setup(e){return()=>e.slots(e.scope)}}),ll=l.defineComponent({name:"FsRender",functional:!0,props:{renderFunc:{type:Function},scope:{type:Object}},setup(){},render(){return this.renderFunc(this.scope)}}),zg=l.defineComponent({name:"FsForm",props:{initialForm:{type:Object,default(){return{}}},columns:{type:Object,default:void 0},group:{type:Object,default:void 0},doReset:{type:Function,default:void 0},beforeValidate:{type:Function,default:void 0},beforeSubmit:{type:Function,default:void 0},doSubmit:{type:Function,default:void 0},afterSubmit:{type:Function,default:void 0},slots:{type:Object,default:()=>({})},display:{type:String,default:"flex"},index:{type:Number,default:void 0},mode:{type:String,default:void 0},row:{type:Object,default:void 0},col:{type:Object,default:void 0},formItem:{type:Object,default:void 0},helper:{type:Object},watch:{type:Function,default:null}},emits:["reset","submit","success","validationError","value-change","init"],setup(e,t){var N,_;const{merge:r}=Je(),{ui:n}=ue.useUi(),{AsyncComputeValue:a,doComputed:i}=Br(),s=l.ref(),o=l.reactive({}),{proxy:c}=l.getCurrentInstance();X.each(e.columns,E=>{E.value!=null&&(E.value instanceof a||E.value instanceof yi)&&Re.warn("form.value配置不支持Compute/AsyncCompute类型的动态计算")});function f(){const E={};return X.each(e.columns,(C,F)=>{const H=l.unref(C.value);H!==void 0&&X.set(E,F,H)}),r(E,X.cloneDeep(e.initialForm)),E}const u=f();x(u);const d=l.computed(()=>({row:u,form:o,index:e.index,mode:e.mode||"add",attrs:t.attrs,getComponentRef:A}));function h(){return d.value}const m=l.computed(()=>e.columns);function g(E){E!=null&&X.each(e.columns,(C,F)=>{let H=X.get(E,F);if(C.valueBuilder){const ee=C.valueBuilder({value:H,key:F,row:u,form:E,index:e.index,mode:e.mode});ee!=null&&!(ee instanceof Promise)&&X.set(E,F,ee)}})}function p(){return o}function x(E,C={}){if(g(E),C.mergeForm===!1)for(const H in o)delete o[H];r(o,E);const{valueChange:F}=C;F&&X.forEach(e.columns,(H,ee)=>{const Q=o[ee];w(ee,Q)})}function v(...E){return r({},e.col,...E)}function y(E){return{key:E.key,...d.value}}function w(E,C){const F={key:E,value:C,formRef:c,...d.value,immediate:!1};t.emit("value-change",F);let H=e.columns[E].valueChange;H&&(H instanceof Function?H(F):H.handle&&H.handle(F))}const b=l.ref({});function R(E){return b.value[E].getFormItemRef()}function A(E,C=!1){var F;return(F=R(E))==null?void 0:F.getComponentRef(C)}const k=l.ref([]);X.forEach((N=e.group)==null?void 0:N.groups,(E,C)=>{E.collapsed!==!0&&k.value.push(C)}),((_=e.group)==null?void 0:_.groupType)==="tabs"&&(k.value=k.value.length>0?k.value[0]:null);const U=i(()=>e.group,h,null,(E={})=>{const C={};X.forEach(E==null?void 0:E.groups,(ee,Q)=>{X.forEach(ee.columns,re=>{if(m.value[re]==null){Cn.logger.warn("无效的分组字段:"+re);return}C[re]=Q})});const F=E.groupType;let H={parent:n.collapse.name,child:n.collapseItem.name};return F==="tabs"&&(H.parent=n.tabs.name,H.child=n.tabPane.name),r({wrapper:H,groupedKeys:C},E)}),T=l.computed(()=>{const E=[];return X.forEach(m.value,(C,F)=>{var ee,Q;const H=X.cloneDeep(e.formItem||{});C=r(H,C),C.key=F,C.order==null&&(C.order=Un.orderDefault),(((ee=U.value)==null?void 0:ee.groupedKeys)==null||((Q=U.value)==null?void 0:Q.groupedKeys[F])==null)&&E.push(C),C.col=v(C.col)}),E.sort((C,F)=>C.order-F.order),E});function j(){return s.value}async function G(){const E=f(),C=X.entries(o);for(const F of C){const H=X.get(E,F[0]);H==null?X.unset(o,F[0]):X.set(o,F[0],H)}e.doReset&&await e.doReset(d.value),t.emit("reset")}const B=l.ref(),z=l.ref({});function te(E){var C,F;if((C=U.value)!=null&&C.groupedKeys)for(let H in E){const ee=(F=U.value)==null?void 0:F.groupedKeys[H];ee!=null&&(E["group."+ee]=!0)}}async function W(){const E={...d.value,form:o};if(E.mode!=="view"){if(e.beforeValidate&&await e.beforeValidate(E)===!1)return!1;try{z.value={},await n.form.validateWrap(s.value),B.value=!0}catch(C){B.value=!1;const F=n.form.transformValidateErrors(C);throw te(F),z.value=F,t.emit("validationError",d.value),C}}}async function Y(){await W();const E=X.cloneDeep(l.toRaw(o)),C={...d.value,form:E};if(Re.debug("form submit",JSON.stringify(o)),X.each(e.columns,(F,H)=>{let ee=X.get(E,H);if(F.valueResolve){const Q=F.valueResolve({value:ee,key:H,...C});Q!=null&&!(Q instanceof Promise)&&X.set(E,H,Q)}}),e.beforeSubmit&&await e.beforeSubmit(C)===!1)return!1;if(X.each(e.columns,(F,H)=>{F.submit===!1?X.unset(E,H):F.submit===!0&&X.set(E,H,E[H])}),e.doSubmit){const F=await e.doSubmit(C);if(C.res=F,F===!1)return!1}return t.emit("submit",C),e.afterSubmit&&await e.afterSubmit(C)===!1?!1:(t.emit("success",C),C)}l.onMounted(()=>{X.forEach(m.value,(E,C)=>{if(E.valueChange==null)return;let F=E.valueChange;if(F&&F.immediate===!0&&F.handle){const H={key:C,value:o[C],formRef:c,...d.value,immediate:!0};F.handle&&F.handle(H)}})});function ae(E){return!!(E&&l.unref(E.show)!==!1)}function he(E){if(!E.columns||l.unref(E.show)===!1)return!1;for(let C of E.columns){if(m.value[C]==null)continue;if(ae(m.value[C]))return!0}return!1}e.watch&&l.watch(()=>o,(E,C)=>{e.watch&&e.watch(d.value)},{deep:!0,immediate:!0});function K(){const E=JSON.stringify(u),C=JSON.stringify(o);return E!==C}const ce=l.computed(()=>r({},e.slots,t.slots));return t.emit("init",d.value),{get:(E,C)=>X.get(E,C),set:(E,C,F)=>{X.set(E,C,F),w(C,F)},ui:n,validRef:B,errorsRef:z,formRef:s,computedColumns:m,computedDefaultColumns:T,submit:Y,reset:G,getFormRef:j,scope:d,buildItemScope:y,groupActiveKey:k,form:o,formItemRefs:b,getFormData:p,setFormData:x,getComponentRef:A,mergeCol:v,validate:W,computedGroup:U,getContextFn:h,formItemShow:ae,groupItemShow:he,isDirty:K,mergedSlots:ce}}}),MD="";function Gg(e,t,r,n,a,i){const s=l.resolveComponent("fs-form-item-col"),o=l.resolveComponent("fs-render");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),{ref:"formRef",class:l.normalizeClass(["fs-form",{"fs-form-grid":e.display==="grid","fs-form-flex":e.display==="flex","fs-form-invalid":e.validRef===!1}]),onsubmit:"event.preventDefault();",model:e.form},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),l.mergeProps({class:"fs-row"},e.row),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedDefaultColumns,c=>(l.openBlock(),l.createBlock(s,{key:c==null?void 0:c.key,ref_for:!0,ref:f=>{f&&(e.formItemRefs[c.key]=f)},col:e.mergeCol(c.col),item:c,helper:e.helper,"model-value":e.get(e.form,c.key),slots:e.mergedSlots["form_"+c.key],"get-context-fn":e.getContextFn,"onUpdate:modelValue":f=>e.set(e.form,c.key,f)},null,8,["col","item","helper","model-value","slots","get-context-fn","onUpdate:modelValue"]))),128))]),_:1},16)),e.computedGroup.wrapper?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedGroup.wrapper.parent),l.mergeProps({key:0,[e.ui.collapse.modelValue]:e.groupActiveKey,["onUpdate:"+e.ui.collapse.modelValue]:t[0]||(t[0]=c=>e.groupActiveKey=c),style:{width:"100%"}},e.computedGroup),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedGroup.groups,(c,f)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:f},[e.groupItemShow(c)?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedGroup.wrapper.child),l.mergeProps({key:0,[e.ui.collapse.keyName||""]:f},{ref_for:!0},c,{class:{"fs-form-group-error":e.errorsRef["group."+f]}}),l.createSlots({default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),l.mergeProps({class:"fs-row"},{ref_for:!0},e.row),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(c.columns,u=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[e.computedColumns[u]?(l.openBlock(),l.createBlock(s,{key:0,ref_for:!0,ref:d=>{d&&(e.formItemRefs[u]=d)},col:e.mergeCol(e.computedColumns[u].col),item:e.computedColumns[u],"model-value":e.get(e.form,u),slots:e.mergedSlots["form_"+u],"get-context-fn":e.getContextFn,helper:e.helper,"onUpdate:modelValue":d=>e.set(e.form,u,d)},null,8,["col","item","model-value","slots","get-context-fn","helper","onUpdate:modelValue"])):l.createCommentVNode("",!0)],64))),128))]),_:2},1040))]),_:2},[l.renderList(c.slots,(u,d)=>({name:d,fn:l.withCtx(h=>[l.createVNode(o,{"render-func":u,scope:{...h,hasError:e.errorsRef["group."+f]}},null,8,["render-func","scope"])])}))]),1040,["class"])):l.createCommentVNode("",!0)],64))),128))]),_:1},16)):l.createCommentVNode("",!0)]),_:1},8,["class","model"])}const g0=nt(zg,[["render",Gg]]),Xg=l.defineComponent({name:"FsFormItem",components:{FsRender:ll},props:{modelValue:{},item:{type:Object,default:void 0},formSlot:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},helper:{type:[String,Object]}},emits:["update:modelValue"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Je(),a=l.ref(),i=()=>{const p=e.getContextFn?e.getContextFn():{};return{value:e.modelValue,key:e.item.key,...p}};function s(p){t.emit("update:modelValue",p)}function o(p=!1){var x,v;return p?(x=a.value)==null?void 0:x.getTargetRefAsync():(v=a.value)==null?void 0:v.getTargetRef()}const c=l.computed(()=>{const p={...e.item};return delete p.title,delete p.label,p}),f=l.computed(()=>{var p,x,v;return((x=(p=e.item)==null?void 0:p.helper)==null?void 0:x.position)||((v=e.helper)==null?void 0:v.position)}),u=l.computed(()=>{var p,x;return n({},(p=e.item.helper)==null?void 0:p.tooltip,(x=e.helper)==null?void 0:x.tooltip)}),d=l.computed(()=>{if(e.item!=null)return e.item.key.indexOf(".")>=0?e.item.key.split("."):e.item.key}),h=l.computed(()=>e.item.label||e.item.title),m=l.computed(()=>h.value instanceof Function);return{ui:r,updateModelValue:s,scopeFunc:i,getComponentRef:o,componentRenderRef:a,computedHelperPosition:f,computedHelperTooltip:u,computedKey:d,computedLabelIsRender:m,computedLabel:h,computedLabelRender:()=>h.value(i()),computedItem:c}}}),VD="",Kg={key:0,class:"fs-form-item-label-text"},Yg=["title"],qg={class:"fs-form-helper-tooltip"},Jg={class:"fs-form-item-label-icon"},Zg={class:"fs-form-item-content"},Qg={class:"fs-form-item-render"},ex={class:"fs-form-item-component"};function tx(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-form-helper"),c=l.resolveComponent("fs-icon"),f=l.resolveComponent("fs-slot-render"),u=l.resolveComponent("fs-component-render");return e.computedItem?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.mergeProps({key:0,class:"fs-form-item",[e.ui.formItem.prop||""]:e.computedKey},e.computedItem,{path:e.computedItem.key,"rule-path":e.computedItem.key}),{label:l.withCtx(()=>[e.computedLabelIsRender?(l.openBlock(),l.createElementBlock("span",Kg,[l.createVNode(s,{"render-func":e.computedLabelRender},null,8,["render-func"])])):(l.openBlock(),l.createElementBlock("span",{key:1,class:"fs-form-item-label-text",title:e.computedLabel},l.toDisplayString(e.computedLabel),9,Yg)),e.computedItem.helper&&e.computedHelperPosition==="label"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.tooltip.name),l.normalizeProps(l.mergeProps({key:2},e.computedHelperTooltip)),{[e.ui.tooltip.content]:l.withCtx(()=>[l.createElementVNode("span",qg,[l.createVNode(o,{helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])])]),[e.ui.tooltip.trigger]:l.withCtx(()=>[l.createElementVNode("span",Jg,[l.createVNode(c,{class:"fs-form-item-label-icon-inner",icon:e.ui.icons.question},null,8,["icon"])])]),_:2},1040)):l.createCommentVNode("",!0)]),default:l.withCtx(()=>{var d;return[l.createElementVNode("div",Zg,[e.computedItem.topRender?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.topRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),l.createElementVNode("div",Qg,[e.computedItem.prefixRender?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.prefixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),l.createElementVNode("div",ex,[e.formSlot?(l.openBlock(),l.createBlock(f,{key:0,slots:e.formSlot,scope:e.scopeFunc()},null,8,["slots","scope"])):((d=e.computedItem.component)==null?void 0:d.show)!==!1?(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[e.computedItem.conditionalRender&&e.computedItem.conditionalRender.match&&e.computedItem.conditionalRender.match(e.scopeFunc())?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.conditionalRender.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):e.computedItem.render?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):(l.openBlock(),l.createBlock(u,l.mergeProps({key:2,ref:"componentRenderRef"},e.computedItem.component,{"model-value":e.modelValue,scope:e.scopeFunc(),"onUpdate:modelValue":e.updateModelValue}),null,16,["model-value","scope","onUpdate:modelValue"]))],64)):l.createCommentVNode("",!0)]),e.computedItem.suffixRender?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.suffixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0)]),e.computedItem.bottomRender?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.bottomRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),e.computedItem.helper&&e.computedHelperPosition!=="label"?(l.openBlock(),l.createBlock(o,{key:2,helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])):l.createCommentVNode("",!0)])]}),_:1},16,["path","rule-path"])):l.createCommentVNode("",!0)}const x0=nt(Xg,[["render",tx]]),v0=l.defineComponent({__name:"fs-form-item-col",props:{item:{type:Object,default:void 0},slots:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},col:{type:Object,default:()=>({})},helper:{type:[String,Object],default:void 0}},setup(e,{expose:t}){const{ui:r}=ue.useUi(),n=e,{doComputed:a}=Br(),i=a(()=>n.item,()=>n.getContextFn()),{merge:s}=Je(),o=l.useAttrs(),c=l.ref();function f(){return c.value}return t({getFormItemRef:f}),(u,d)=>{var m;const h=l.resolveComponent("fs-form-item");return l.unref(i)&&l.unref(i).show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(r).col.name),l.mergeProps({key:0,class:"fs-col"},l.unref(s)(e.col,(m=l.unref(i))==null?void 0:m.col)),{default:l.withCtx(()=>{var g;return[l.unref(i)&&((g=l.unref(i))==null?void 0:g.blank)!==!0?(l.openBlock(),l.createBlock(h,l.mergeProps({key:0,ref_key:"formItemRef",ref:c,item:l.unref(i),"form-slot":e.slots,"get-context-fn":e.getContextFn,helper:e.helper},l.unref(o)),null,16,["item","form-slot","get-context-fn","helper"])):l.createCommentVNode("",!0)]}),_:1},16)):l.createCommentVNode("",!0)}}}),UD="",rx=l.defineComponent({name:"FsFormHelper",props:{helper:{type:[Object,String]},scope:{}},setup(e){}}),$D="",nx={class:"fs-form-helper"},ax={key:0},ix={key:2};function sx(e,t,r,n,a,i){const s=l.resolveComponent("fs-render");return l.openBlock(),l.createElementBlock("div",nx,[typeof e.helper=="string"?(l.openBlock(),l.createElementBlock("pre",ax,l.toDisplayString(e.helper),1)):e.helper.render?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.helper.render,scope:e.scope},null,8,["render-func","scope"])):e.helper.text?(l.openBlock(),l.createElementBlock("pre",ix,l.toDisplayString(e.helper.text),1)):l.createCommentVNode("",!0)])}const w0=nt(rx,[["render",sx]]),WD="";function ox(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const $a=l.defineComponent({name:"FsFormWrapper",props:{options:{},slots:{},inner:{},innerWrapper:{},id:{},zIndex:{}},emits:["reset","submit","validationError","value-change","open","opened","mounted","closed","inner-change"],setup(e,t){var L;const{t:r}=jt(),{merge:n}=Je(),a=l.ref(!1),i=l.ref(),s=l.ref(),o=l.ref(),c=l.ref(),f=l.ref(),u=l.ref(!1),d=l.ref(),h=l.ref(),m=l.ref(),g=l.ref(),p=e.id||Math.floor(Math.random()*1e6)+"",x="fs-form-wrapper_"+p,v=l.ref({});function y(de={}){var _e;return{formWrapperId:p,formWrapperIdClass:x,close:z,doClose:te,onClosed:W,onOpened:Y,open:w,title:g,fullscreenEnabled:ee,fullscreen:H,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,computedButtons:F,onValueChange:ae,innerBind:ie,formWrapperSlots:v,wrapper:o.value,options:s.value,formRef:f.value,form:ce(),wrapperBindRef:o,formOptionsRef:s,setFormData:N,getFormData:ce,reset:K,loading:u,toggleFullscreen:Q,submit:he,mode:(_e=s.value)==null?void 0:_e.mode,...de}}const w=async de=>{var me,Qe;const{wrapper:_e}=de;_e.onOpen&&_e.onOpen(de),g.value=l.unref(_e.title),i.value=de.wrapper.is,c.value=_e,s.value={...X.omit(de,"wrapper","slots"),slots:{...e.slots,...de.slots,...t.slots}};const Fe=re.formWrapper.customClass(i.value),ke=`fs-form-wrapper fs-form-wrapper-${(me=s.value)==null?void 0:me.mode} ${x} ${_e[Fe]||""} `;return o.value={...X.omit(_e,"title","onOpen","onClosed","onOpened","is","inner","beforeClose"),[Fe]:ke},v.value={...e.slots,...(Qe=de.wrapper)==null?void 0:Qe.slots,...t.slots},t.emit("open",y()),d.value=()=>{_e.onClosed&&_e.onClosed(y())},h.value=()=>{_e.onOpened&&_e.onOpened(y())},m.value=_e.beforeClose,_e.fullscreen!=null&&(H.value=_e.fullscreen),t.emit("inner-change",!!c.value.inner),await l.nextTick(),a.value=!0,await l.nextTick(),Y(),y()};async function b(){var Fe;const de=c.value.saveRemind;if(((Fe=f.value)==null?void 0:Fe.isDirty())&&de){let ke=!1;if(de instanceof Function)ke=await de();else try{await re.messageBox.confirm({title:r("fs.form.saveRemind.title"),message:r("fs.form.saveRemind.content"),confirmButtonText:r("fs.form.saveRemind.ok"),cancelButtonText:r("fs.form.saveRemind.cancel")}),ke=!0}catch{ke=!1}ke&&await he()}}const R=df.useRoute();let A=null;function k(){return c.value.saveDraft?(A==null&&(A=new jo({$router:R,tableName:"addFormDraft",keyType:e.id||"0"})),A):null}async function U(){var ke;const de=c.value.saveDraft,_e=(ke=f.value)==null?void 0:ke.isDirty(),Fe=s.value.mode=="add";return _e&&de&&Fe?(await k().updateTableValue(ce()),!0):!1}async function T(){const de=k();de&&await de.clearTableValue()}async function j(){const de=k();if(de){const _e=await de.getTableValue();_e&&N(_e,{mergeForm:!0})}}async function G(){let de=!1;return c.value.saveDraft&&(de=await U()),m.value&&m.value(y())==!1?!1:(de||await b(),!0)}const B=l.computed(()=>re.type=="element"?{beforeClose:de=>{te()}}:{}),z=async()=>{a.value=!1},te=async()=>await G()==!1?!1:(z(),!0),W=()=>{d.value&&d.value(),t.emit("closed"),s.value=null},Y=()=>{if(c.value.saveDraft&&j(),t.emit("opened"),h.value&&h.value(),o.value.draggable||o.value.dragenabled){const{dragModal:de}=t0();de({getModal:()=>document.querySelector(`.${x}`)})}},ae=de=>{t.emit("value-change",de)};async function he(){u.value=!0;try{if(await f.value.submit()===!1)return;await T(),z()}finally{u.value=!1}}async function K(){await f.value.reset()}function ce(){var de;return(de=f.value)==null?void 0:de.getFormData()}function N(de,_e){var Fe;(Fe=f.value)==null||Fe.setFormData(de,_e)}const{doComputed:_}=Br();function E(){var de,_e,Fe;return{row:(de=s.value)==null?void 0:de.initialForm,form:ce(),index:(_e=s.value)==null?void 0:_e.index,mode:(Fe=s.value)==null?void 0:Fe.mode,attrs:s.value,getComponentRef(...ke){var me;(me=f.value)==null||me.getComponentRef(...ke)}}}const C=_(()=>{var de;return(de=o.value)==null?void 0:de.buttons},E),F=l.computed(()=>{const de={cancel:{},reset:{},ok:{loading:u.value}},_e=n(de,C.value),Fe=[];return X.forEach(_e,(ke,me)=>{ke.key=me,Fe.push(ke),ke.onClick==null&&ke.click!=null&&(ke.onClick=Qe=>{ke.click(y({loadingRef:Qe==null?void 0:Qe.loadingRef}))})}),X.sortBy(Fe,ke=>ke.order??Un.orderDefault)});l.onMounted(async()=>{e.options!=null&&await w(e.options),t.emit("mounted",l.getCurrentInstance().exposed)});const H=l.ref(!1),ee=l.computed(()=>{var de;return!((de=i.value)!=null&&de.endsWith("drawer"))});function Q(){H.value=!H.value}const re=ue.uiContext.get(),ie=l.computed(()=>c.value.inner?re.formWrapper.buildInnerBind({getInnerWrapper(){if(c.value.innerContainerSelector){const de=document.querySelector(c.value.innerContainerSelector);if(de)return de.classList.add("fs-form-inner-wrapper"),de;console.error(`找不到选择器为${c.value.innerContainerSelector}的元素`)}return e.innerWrapper}}):{});t.expose({formWrapperId:p,formWrapperIdClass:x,close:z,doClose:te,onClosed:W,onOpened:Y,open:w,title:g,fullscreenEnabled:ee,fullscreen:H,toggleFullscreen:Q,formOptions:s,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,formRef:f,submit:he,reset:K,computedButtons:F,loading:u,getFormData:ce,setFormData:N,onValueChange:ae,innerBind:ie,formWrapperSlots:v,form:ce(),wrapperBindRef:o,formOptionsRef:s,mode:(L=s.value)==null?void 0:L.mode});const Se=l.useSlots();return()=>{if(!o.value)return null;const de=ue.uiContext.get();let _e={};const Fe={...Se,...v.value},ke=(ot,Ht,De=Fe)=>De[ot]?De[ot](Ht):null,me=i.value||"el-dialog";if(s.value){const{index:ot,mode:Ht}=s.value||{},De={_self:this,index:ot,mode:Ht,getFormData:ce};_e={[de.formWrapper.titleSlotName]:()=>{let it=null;return ee.value&&(it=l.createVNode(l.resolveComponent("fs-icon"),{class:"fs-fullscreen-icon",onClick:Q,icon:H.value?de.icons.fullScreen:de.icons.unFullScreen},null)),l.createVNode("div",{class:"fs-form-header"},[l.createVNode("div",{class:"fs-form-header-left"},[ke("form-header-left",De),g.value,ke("form-header-right",De)]),l.createVNode("div",{class:"fs-form-header-action"},[ke("form-header-action-left",De),it,ke("form-header-action-right",De)])])},default:()=>{var hr;const it=[];return X.forEach(F.value,bt=>{bt.show!==!1&&it.push(l.createVNode(l.resolveComponent("fs-button"),bt,null))}),l.createVNode("div",{class:"fs-form-wrapper-body"},[l.createVNode("div",{class:"fs-form-body"},[ke("form-body-top",De),l.createVNode("div",{class:"fs-form-content"},[ke("form-body-left",De),l.createVNode(l.resolveComponent("fs-form"),l.mergeProps({ref:f},s.value,{onValueChange:ae}),null),ke("form-body-right",De)]),ke("form-body-bottom",De)]),l.withDirectives(l.createVNode("div",{class:"fs-form-footer-btns"},[ke("form-footer-left",De),it,ke("form-footer-right",De)]),[[l.resolveDirective("if"),it.length>0||((hr=o.value.footerProps)==null?void 0:hr.show)!==!1],[l.resolveDirective("bind"),o.value.footerProps]])])}}}if(de.formWrapper.hasContentWrap){const ot=de.formWrapper.hasContentWrap(me),Ht=_e;if(ot){const De=l.resolveDynamicComponent(ot);_e={default:()=>l.createVNode(De,l.mergeProps({closable:!0},c.value.contentProps),ox(Ht)?Ht:{default:()=>[Ht]})}}}const Qe=de.formWrapper.visible,vr={[Qe]:a.value,["onUpdate:"+Qe]:async ot=>{if(ot===!1&&a.value)return await te();a.value=ot}},Hr=de.formWrapper.buildOnClosedBind(me,W),jr=de.formWrapper.customClass(me),kn=`${H.value?"fs-fullscreen":""} ${o.value[jr]||""}`,dr={[jr]:kn},on={fullscreen:H.value},bn={zIndex:o.value.zIndex||e.zIndex},Ia=l.resolveDynamicComponent(me);return l.createVNode(Ia,l.mergeProps(o.value,dr,vr,Hr,on,ie.value,bn,B.value),_e)}}}),lx=l.defineComponent({name:"FsFormProvider"}),_0=l.defineComponent({...lx,setup(e){const t=l.ref({}),r=l.ref({});return l.provide("get:form:wrapper:context",n=>r.value[n]),l.provide("use:form:wrapper",()=>({setContext(n,a){r.value[n]=a},open(n){const a=n.id||Math.floor(Math.random()*1e6)+"";return new Promise((i,s)=>{t.value[a]={id:a,async onMounted(o){await o.open(n),i(o)},onClosed(){n.id||delete t.value[a]}}})}})),(n,a)=>(l.openBlock(),l.createElementBlock(l.Fragment,null,[l.renderSlot(n.$slots,"default"),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(t.value,i=>(l.openBlock(),l.createBlock(l.unref($a),l.mergeProps({key:i.id},{ref_for:!0},i),null,16))),128))],64))}}),cx={default:"default","header-top":"headerTop",headerTop:"headerTop","header-bottom":"headerBottom",headerBottom:"headerBottom","header-middle":"headerMiddle",headerMiddle:"headerMiddle","actionbar-left":"actionbarLeft",actionbarLeft:"actionbarLeft","actionbar-right":"actionbarRight",actionbarRight:"actionbarRight","toolbar-left":"toolbarLeft",toolbarLeft:"toolbarLeft","toolbar-right":"toolbarRight",toolbarRight:"toolbarRight","pagination-left":"paginationLeft",paginationLeft:"paginationLeft","pagination-right":"paginationRight",paginationRight:"paginationRight","footer-top":"footerTop",footerTop:"footerTop","footer-bottom":"footerBottom",footerBottom:"footerBottom"};function y0(e){const t={};return X.forEach(e,(r,n)=>{if(r==null)return;const a=cx[n]||n;(n===a||t[a]==null)&&(t[a]=r)}),t}function fx(e,t){return{...y0(e),...y0(t)}}function Ls(e,t){const r={};return X.forEach(e,(n,a)=>{a.startsWith(t)&&(r[a]=n)}),r}function ux(e,t){l.provide("get:columns",()=>e.table.columns),l.provide("update:columns",r=>{t.emit("update:columns",r)}),l.provide("get:crudBinding",()=>e)}function dx(e,t){const r=l.ref(),n=()=>r.value,a=()=>r.value?r.value.getForm():(Re.warn("请使用expose.getSearchFormData代替"),{}),i=()=>r.value?r.value.getValidatedForm():(Re.warn("请使用expose.getSearchValidatedFormData代替"),{});function s({form:o,mergeForm:c=!1}){r.value&&r.value.setForm(o,c)}return{searchRef:r,getSearchRef:n,getSearchFormData:a,setSearchFormData:s,getSearchValidatedFormData:i}}function hx(e,t,r){return{tabsBinding:l.computed(()=>{var a,i,s,o,c,f,u;if(t.tabs&&t.tabs.show&&t.tabs.name){let d=null;const h={...t.tabs};return(a=t.search)!=null&&a.columns&&((o=(s=(i=t.search)==null?void 0:i.columns[t.tabs.name])==null?void 0:s.component)!=null&&o.dict)&&(d=(u=(f=(c=t.search)==null?void 0:c.columns[t.tabs.name])==null?void 0:f.component)==null?void 0:u.dict,h.value==null&&(h.value=d.value),h.label==null&&(h.label=d.label),h.options==null&&(h.options=d.data||[])),{...h,modelValue:t.search.validatedForm&&t.search.validatedForm[t.tabs.name],"onUpdate:modelValue":m=>{r.emit("tab-change",{[t.tabs.name]:m})}}}return{show:!1}})}}function mx(e,t,{tableRef:r,containerRef:n}){var f;const a=ue.uiContext.get();let i=a.table;if(((f=e.table)==null?void 0:f.tableVersion)==="v2"&&(i=a.tableV2),i.hasMaxHeight(e.table))return{};if(!i.fixedHeaderNeedComputeBodyHeight)return{};const s=l.ref(null);function o(){var g;const u=(g=r==null?void 0:r.value)==null?void 0:g.$el;if(u==null||u.querySelector==null||!(u.querySelector instanceof Function))return;const d=u.querySelector(i.headerDomSelector);if(d==null)return;const h=u.getBoundingClientRect().height,m=d.getBoundingClientRect().height;s.value=h-m-2+(e.table.maxHeightAdjust||0),Re.debug("table max height recomputed ",s.value)}function c(){var m;const u=(m=r==null?void 0:r.value)==null?void 0:m.$el;if(u==null)return;const d=u.parentNode;new ResizeObserver(function(g){Re.debug("table resized",g),g.length>0&&g[0].contentRect.height>0&&(o(),setTimeout(()=>{o()},200),setTimeout(()=>{o()},500))}).observe(d)}return l.onMounted(async()=>{await l.nextTick(),await l.nextTick(),c()}),{maxHeightRef:s,computeBodyHeight:o}}function px(e,t){const r=ue.uiContext.get(),n=l.ref(),a=l.ref(),i=l.ref(),{maxHeightRef:s,computeBodyHeight:o}=mx(e,t,{tableRef:n,containerRef:i}),{merge:c}=Je(),f=l.toRef(e,"table"),u=l.computed(()=>{var U;let A={};if((s==null?void 0:s.value)!=null){let T=r.table;((U=e.table)==null?void 0:U.tableVersion)==="v2"&&(T=r.tableV2),A=T.buildMaxHeight(s.value)}const k=Cn.dash.omit(f,"loading","columns","columnsMap");return c(A,{...t.attrs,...k})}),d=l.toRef(e,"toolbar"),h=l.computed(()=>fx(e.slots,t.slots)),m=l.computed(()=>Ls(h.value,"cell")),g=l.computed(()=>Ls(h.value,"form")),p=l.computed(()=>Ls(h.value,"search")),x=l.computed(()=>Ls(h.value,"toolbar")),v=l.ref(),y=l.computed(()=>{const A={compact:e.toolbar.compact!==!1};return e.customClass&&(A[e.customClass]=!0),A}),w=l.ref(),b=l.ref(!1);return{tableRef:n,containerRef:i,toolbarRef:a,computedTable:u,computedToolbar:d,mergedSlots:h,computedCellSlots:m,formWrapperRef:v,isFormInner:b,onFormInnerChange:A=>{b.value=A},computedFormSlots:g,computedSearchSlots:p,computedToolbarSlots:x,computeBodyHeight:o,computedClass:y,innerWrapperRef:w}}const gx=l.defineComponent({name:"FsCrud",inheritAttrs:!1,props:{id:{type:String,default:""},table:{type:Object,default(){return{}}},data:{type:Array},rowHandle:{type:Object,default(){return{}}},search:{type:Object,default(){return{}}},toolbar:{type:Object,default(){return{}}},actionbar:{type:Object,default(){return{}}},tabs:{type:Object,default(){return{}}},addForm:{type:Object,default(){return{}}},editForm:{type:Object,default(){return{}}},viewForm:{type:Object,default(){return{}}},pagination:{type:Object,default(){return{show:!1}}},container:{type:Object,default(){return{}}},slots:{type:Object,default(){return{}}},customClass:{},form:{type:Object,default(){return{}}},selection:{type:Object,default(){return{show:!1}}}},emits:["update:search","update:compact","update:columns","form-value-change","update:modelValue","tab-change"],setup(e,t){const{ui:r}=ue.useUi();ux(e,t);const n=dx(),a=hx(n,e,t),i=px(e,t);return{ui:r,...n,...i,...a}}}),HD="",xx={class:"fs-crud-search"},vx={key:0,class:"fs-crud-actionbar"},wx={key:0,class:"fs-crud-toolbar"},_x={class:"fs-crud-pagination"},yx={class:"fs-pagination-left"},kx={class:"fs-pagination"},bx={class:"fs-pagination-right"};function Cx(e,t,r,n,a,i){var h;const s=l.resolveComponent("fs-slot-render"),o=l.resolveComponent("fs-actionbar"),c=l.resolveComponent("fs-toolbar"),f=l.resolveComponent("fs-tabs-filter"),u=l.resolveComponent("fs-table"),d=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(((h=e.container)==null?void 0:h.is)||"fs-layout-default"),l.mergeProps({ref:"containerRef",class:"fs-crud-container"},e.container,{class:e.computedClass}),{"header-top":l.withCtx(()=>[e.mergedSlots.headerTop?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.headerTop},null,8,["slots"])):l.createCommentVNode("",!0)]),"header-bottom":l.withCtx(()=>[e.mergedSlots.headerBottom?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.headerBottom},null,8,["slots"])):l.createCommentVNode("",!0)]),"header-middle":l.withCtx(()=>[e.mergedSlots.headerMiddle?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.headerMiddle},null,8,["slots"])):l.createCommentVNode("",!0)]),search:l.withCtx(()=>[l.createElementVNode("div",xx,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.search.is||"fs-search"),l.mergeProps({ref:"searchRef"},e.search,{slots:e.computedSearchSlots}),null,16,["slots"]))])]),actionbar:l.withCtx(()=>[e.actionbar&&e.actionbar.show!==!1?(l.openBlock(),l.createElementBlock("div",vx,[e.mergedSlots.actionbarLeft?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.actionbarLeft},null,8,["slots"])):l.createCommentVNode("",!0),l.createVNode(o,l.normalizeProps(l.guardReactiveProps(e.actionbar)),null,16),e.mergedSlots.actionbarRight?(l.openBlock(),l.createBlock(s,{key:1,slots:e.mergedSlots.actionbarRight},null,8,["slots"])):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)]),toolbar:l.withCtx(()=>[e.toolbar&&e.toolbar.show!==!1?(l.openBlock(),l.createElementBlock("div",wx,[e.mergedSlots.toolbarLeft?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.toolbarLeft},null,8,["slots"])):l.createCommentVNode("",!0),l.createVNode(c,l.mergeProps({ref:"toolbarRef"},e.toolbar,{slots:e.computedToolbarSlots,columns:e.table.columns}),null,16,["slots","columns"]),e.mergedSlots.toolbarRight?(l.openBlock(),l.createBlock(s,{key:1,slots:e.mergedSlots.toolbarRight},null,8,["slots"])):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)]),tabs:l.withCtx(()=>[e.tabsBinding.show?(l.openBlock(),l.createBlock(f,l.mergeProps({key:0,ref:"tabsRef",class:"fs-tabs"},e.tabsBinding),null,16)):l.createCommentVNode("",!0)]),table:l.withCtx(()=>[l.createVNode(u,l.mergeProps({ref:"tableRef",class:"fs-crud-table"},e.computedTable,{columns:e.table.columns,loading:e.table.loading,"row-handle":e.rowHandle,data:e.data,"cell-slots":e.computedCellSlots}),null,16,["columns","loading","row-handle","data","cell-slots"])]),form:l.withCtx(()=>[l.createElementVNode("div",{ref:"innerWrapperRef",class:l.normalizeClass(["fs-form-wrapper-container",{"fs-form-inner-wrapper":e.isFormInner}])},[l.createVNode(d,{ref:"formWrapperRef",slots:e.computedFormSlots,"inner-wrapper":e.innerWrapperRef,onInnerChange:e.onFormInnerChange,onValueChange:t[0]||(t[0]=m=>e.$emit("form-value-change",m))},null,8,["slots","inner-wrapper","onInnerChange"])],2)]),pagination:l.withCtx(()=>[l.createElementVNode("div",_x,[l.createElementVNode("div",yx,[e.mergedSlots.paginationLeft?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.paginationLeft},null,8,["slots"])):l.createCommentVNode("",!0)]),l.createElementVNode("div",kx,[e.pagination.show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.pagination.name),l.normalizeProps(l.mergeProps({key:0},e.pagination)),null,16)):l.createCommentVNode("",!0)]),l.createElementVNode("div",bx,[e.mergedSlots.paginationRight?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.paginationRight},null,8,["slots"])):l.createCommentVNode("",!0)])])]),"footer-top":l.withCtx(()=>[e.mergedSlots.footerTop?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.footerTop},null,8,["slots"])):l.createCommentVNode("",!0)]),"footer-bottom":l.withCtx(()=>[e.mergedSlots.footerBottom?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.footerBottom},null,8,["slots"])):l.createCommentVNode("",!0)]),default:l.withCtx(()=>[e.mergedSlots.default?(l.openBlock(),l.createBlock(s,{key:0,slots:e.mergedSlots.default},null,8,["slots"])):l.createCommentVNode("",!0)]),_:1},16,["class"])}const k0=nt(gx,[["render",Cx]]),Ex=l.defineComponent({name:"FsRowHandle",props:{dropdown:{type:Object},buttons:{type:Object},group:{type:Object},active:{type:String,default:"default"},scope:{type:Object,default:()=>({})}},emits:["handle"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Je(),{t:a}=jt(),i=l.computed(()=>({...e.scope,row:e.scope[r.tableColumn.row],index:e.scope[r.tableColumn.index]})),s=(x,v)=>{const y=e.scope[r.tableColumn.index],w=e.scope[r.tableColumn.row],b={key:x.key,row:w,btn:x,index:y,...e.scope,loadingRef:v==null?void 0:v.loadingRef};if(x.click)return x.click(b);t.emit("handle",b)},{doComputed:o}=Br(),c=l.computed(()=>({dropdown:e.dropdown,buttons:e.buttons,active:e.active,group:e.group})),f=o(()=>c.value,()=>{const x=e.scope[r.tableColumn.index],v=e.scope[r.tableColumn.row];return{...e.scope,index:x,row:v}}),u=l.computed(()=>{let x=null;if(f.value.active==null||f.value.active==="default"){const y={view:{key:"view",text:a("fs.rowHandle.view.text"),title:a("fs.rowHandle.view.text"),size:"small"},copy:{key:"copy",text:a("fs.rowHandle.copy.text"),title:a("fs.rowHandle.copy.text"),size:"small"},edit:{key:"edit",type:"primary",text:a("fs.rowHandle.edit.text"),title:a("fs.rowHandle.edit.text"),size:"small"},remove:{key:"remove",...r.button.colors("danger"),text:a("fs.rowHandle.remove.text"),title:a("fs.rowHandle.remove.text"),size:"small"}};x=n(y,f.value.buttons)}else x=f.value.group[f.value.active];const v=[];return X.forEach(x,(y,w)=>{y.key=w,y.show!==!1&&v.push(y)}),X.sortBy(v,y=>y.order??Un.orderDefault)}),d=l.computed(()=>f.value.dropdown==null||f.value.dropdown.atLeast==null||f.value.dropdown.atLeast<=0||u.value.length<=f.value.dropdown.atLeast?0:f.value.dropdown.atLeast||0);function h(x,v){return x.dropdown===!0||d.value>0&&d.value<v}const m=l.computed(()=>{let x=0;for(const v of u.value){if(h(v,x))return!0;x++}return!1});function g(x){for(let v of u.value)if(x===v.key){s(v);return}}const p=l.computed(()=>{const x={};if(r.dropdown.renderMode!=="slot"){const v=u.value,y=[];X.forEach(v,(w,b)=>{w.show!==!1&&h(w,b)&&y.push({[r.dropdown.value]:w.key,[r.dropdown.label]:w.text,title:w.title})}),x.options=y}return{...X.omit(e.dropdown,"more","atLeast"),...r.dropdown.command(g),...x}});return{ui:r,hasDropdownBtn:m,computedHandleBtns:u,doDropdownItemClick:g,computedDropdownAtLeast:d,doClick:s,isDropdownBtn:h,scopeRef:i,computedDropdownBinding:p}}}),jD="",Sx={class:"fs-row-handle"},Tx={key:0,class:"row-handle-btn fs-handle-row-dropdown"};function Fx(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-button"),c=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("div",Sx,[l.renderSlot(e.$slots,"cell-rowHandle-left",l.normalizeProps(l.guardReactiveProps(e.scopeRef))),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedHandleBtns,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1&&!e.isDropdownBtn(f,u)?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[f.render?(l.openBlock(),l.createBlock(s,{key:0,"render-func":f.render,scope:e.scopeRef},null,8,["render-func","scope"])):(l.openBlock(),l.createBlock(o,l.mergeProps({key:1,class:"row-handle-btn"},{ref_for:!0},f,{onClick:l.withModifiers(d=>e.doClick(f,d),["stop"])}),null,16,["onClick"]))],64)):l.createCommentVNode("",!0)],64))),128)),l.renderSlot(e.$slots,"cell-rowHandle-middle",l.normalizeProps(l.guardReactiveProps(e.scope))),e.hasDropdownBtn?(l.openBlock(),l.createElementBlock("span",Tx,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdown.name),l.normalizeProps(l.guardReactiveProps(e.computedDropdownBinding)),{[e.ui.dropdown.slotName]:l.withCtx(()=>[e.ui.dropdown.renderMode==="slot"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdownMenu.name),l.normalizeProps(l.mergeProps({key:0},e.ui.dropdownMenu.command(e.doDropdownItemClick))),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedHandleBtns,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1&&e.isDropdownBtn(f,u)?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdownItem.name),l.mergeProps({key:0,[e.ui.dropdownItem.command||""]:f.key},{ref_for:!0},f.dropdownItem,{disabled:f.disabled}),{default:l.withCtx(()=>[f.render?(l.openBlock(),l.createBlock(s,{key:0,"render-func":f.render,scope:e.scopeRef},null,8,["render-func","scope"])):(l.openBlock(),l.createElementBlock("div",l.mergeProps({key:1,class:"fs-row-handle-dropdown-item"},{ref_for:!0},f),[f.icon?(l.openBlock(),l.createBlock(c,{key:0,icon:f.icon},null,8,["icon"])):l.createCommentVNode("",!0),l.createTextVNode(" "+l.toDisplayString(f.text||f.title),1)],16))]),_:2},1040,["disabled"])):l.createCommentVNode("",!0)],64))),128))]),_:1},16)):l.createCommentVNode("",!0)]),default:l.withCtx(()=>[l.createVNode(o,l.normalizeProps(l.guardReactiveProps(e.dropdown.more)),null,16)]),_:2},1040))])):l.createCommentVNode("",!0),l.renderSlot(e.$slots,"cell-rowHandle-right",l.normalizeProps(l.guardReactiveProps(e.scope)))])}const cl=nt(Ex,[["render",Fx]]);function ca(){return ca=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ca.apply(this,arguments)}function Ax(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Si(e,t)}function fl(e){return fl=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},fl(e)}function Si(e,t){return Si=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Si(e,t)}function Dx(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ms(e,t,r){return Dx()?Ms=Reflect.construct.bind():Ms=function(a,i,s){var o=[null];o.push.apply(o,i);var c=Function.bind.apply(a,o),f=new c;return s&&Si(f,s.prototype),f},Ms.apply(null,arguments)}function Rx(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function ul(e){var t=typeof Map=="function"?new Map:void 0;return ul=function(n){if(n===null||!Rx(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return Ms(n,arguments,fl(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Si(a,n)},ul(e)}var Ox=/%[sdj%]/g,b0=function(){};typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&typeof window<"u"&&typeof document<"u"&&(b0=function(t,r){typeof console<"u"&&console.warn&&typeof ASYNC_VALIDATOR_NO_WARNING>"u"&&r.every(function(n){return typeof n=="string"})&&console.warn(t,r)});function dl(e){if(!e||!e.length)return null;var t={};return e.forEach(function(r){var n=r.field;t[n]=t[n]||[],t[n].push(r)}),t}function wr(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var a=0,i=r.length;if(typeof e=="function")return e.apply(null,r);if(typeof e=="string"){var s=e.replace(Ox,function(o){if(o==="%%")return"%";if(a>=i)return o;switch(o){case"%s":return String(r[a++]);case"%d":return Number(r[a++]);case"%j":try{return JSON.stringify(r[a++])}catch{return"[Circular]"}break;default:return o}});return s}return e}function Bx(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Ot(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||Bx(t)&&typeof e=="string"&&!e)}function Nx(e,t,r){var n=[],a=0,i=e.length;function s(o){n.push.apply(n,o||[]),a++,a===i&&r(n)}e.forEach(function(o){t(o,s)})}function C0(e,t,r){var n=0,a=e.length;function i(s){if(s&&s.length){r(s);return}var o=n;n=n+1,o<a?t(e[o],i):r([])}i([])}function Ix(e){var t=[];return Object.keys(e).forEach(function(r){t.push.apply(t,e[r]||[])}),t}var E0=function(e){Ax(t,e);function t(r,n){var a;return a=e.call(this,"Async Validation Error")||this,a.errors=r,a.fields=n,a}return t}(ul(Error));function Px(e,t,r,n,a){if(t.first){var i=new Promise(function(h,m){var g=function(v){return n(v),v.length?m(new E0(v,dl(v))):h(a)},p=Ix(e);C0(p,r,g)});return i.catch(function(h){return h}),i}var s=t.firstFields===!0?Object.keys(e):t.firstFields||[],o=Object.keys(e),c=o.length,f=0,u=[],d=new Promise(function(h,m){var g=function(x){if(u.push.apply(u,x),f++,f===c)return n(u),u.length?m(new E0(u,dl(u))):h(a)};o.length||(n(u),h(a)),o.forEach(function(p){var x=e[p];s.indexOf(p)!==-1?C0(x,r,g):Nx(x,r,g)})});return d.catch(function(h){return h}),d}function Lx(e){return!!(e&&e.message!==void 0)}function Mx(e,t){for(var r=e,n=0;n<t.length;n++){if(r==null)return r;r=r[t[n]]}return r}function S0(e,t){return function(r){var n;return e.fullFields?n=Mx(t,e.fullFields):n=t[r.field||e.fullField],Lx(r)?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:typeof r=="function"?r():r,fieldValue:n,field:r.field||e.fullField}}}function T0(e,t){if(t){for(var r in t)if(t.hasOwnProperty(r)){var n=t[r];typeof n=="object"&&typeof e[r]=="object"?e[r]=ca({},e[r],n):e[r]=n}}return e}var F0=function(t,r,n,a,i,s){t.required&&(!n.hasOwnProperty(t.field)||Ot(r,s||t.type))&&a.push(wr(i.messages.required,t.fullField))},Vx=function(t,r,n,a,i){(/^\s+$/.test(r)||r==="")&&a.push(wr(i.messages.whitespace,t.fullField))},Vs,Ux=function(){if(Vs)return Vs;var e="[a-fA-F\\d:]",t=function(b){return b&&b.includeBoundaries?"(?:(?<=\\s|^)(?="+e+")|(?<="+e+")(?=\\s|$))":""},r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",a=(`
(?:
(?:`+n+":){7}(?:"+n+`|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
(?:`+n+":){6}(?:"+r+"|:"+n+`|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
(?:`+n+":){5}(?::"+r+"|(?::"+n+`){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
(?:`+n+":){4}(?:(?::"+n+"){0,1}:"+r+"|(?::"+n+`){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
(?:`+n+":){3}(?:(?::"+n+"){0,2}:"+r+"|(?::"+n+`){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
(?:`+n+":){2}(?:(?::"+n+"){0,3}:"+r+"|(?::"+n+`){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
(?:`+n+":){1}(?:(?::"+n+"){0,4}:"+r+"|(?::"+n+`){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
(?::(?:(?::`+n+"){0,5}:"+r+"|(?::"+n+`){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp("(?:^"+r+"$)|(?:^"+a+"$)"),s=new RegExp("^"+r+"$"),o=new RegExp("^"+a+"$"),c=function(b){return b&&b.exact?i:new RegExp("(?:"+t(b)+r+t(b)+")|(?:"+t(b)+a+t(b)+")","g")};c.v4=function(w){return w&&w.exact?s:new RegExp(""+t(w)+r+t(w),"g")},c.v6=function(w){return w&&w.exact?o:new RegExp(""+t(w)+a+t(w),"g")};var f="(?:(?:[a-z]+:)?//)",u="(?:\\S+(?::\\S*)?@)?",d=c.v4().source,h=c.v6().source,m="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",g="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",p="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",x="(?::\\d{2,5})?",v='(?:[/?#][^\\s"]*)?',y="(?:"+f+"|www\\.)"+u+"(?:localhost|"+d+"|"+h+"|"+m+g+p+")"+x+v;return Vs=new RegExp("(?:^"+y+"$)","i"),Vs},A0={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ti={integer:function(t){return Ti.number(t)&&parseInt(t,10)===t},float:function(t){return Ti.number(t)&&!Ti.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!Ti.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(A0.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(Ux())},hex:function(t){return typeof t=="string"&&!!t.match(A0.hex)}},$x=function(t,r,n,a,i){if(t.required&&r===void 0){F0(t,r,n,a,i);return}var s=["integer","float","array","regexp","object","method","email","number","date","url","hex"],o=t.type;s.indexOf(o)>-1?Ti[o](r)||a.push(wr(i.messages.types[o],t.fullField,t.type)):o&&typeof r!==t.type&&a.push(wr(i.messages.types[o],t.fullField,t.type))},Wx=function(t,r,n,a,i){var s=typeof t.len=="number",o=typeof t.min=="number",c=typeof t.max=="number",f=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=r,d=null,h=typeof r=="number",m=typeof r=="string",g=Array.isArray(r);if(h?d="number":m?d="string":g&&(d="array"),!d)return!1;g&&(u=r.length),m&&(u=r.replace(f,"_").length),s?u!==t.len&&a.push(wr(i.messages[d].len,t.fullField,t.len)):o&&!c&&u<t.min?a.push(wr(i.messages[d].min,t.fullField,t.min)):c&&!o&&u>t.max?a.push(wr(i.messages[d].max,t.fullField,t.max)):o&&c&&(u<t.min||u>t.max)&&a.push(wr(i.messages[d].range,t.fullField,t.min,t.max))},Wa="enum",Hx=function(t,r,n,a,i){t[Wa]=Array.isArray(t[Wa])?t[Wa]:[],t[Wa].indexOf(r)===-1&&a.push(wr(i.messages[Wa],t.fullField,t[Wa].join(", ")))},jx=function(t,r,n,a,i){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(r)||a.push(wr(i.messages.pattern.mismatch,t.fullField,r,t.pattern));else if(typeof t.pattern=="string"){var s=new RegExp(t.pattern);s.test(r)||a.push(wr(i.messages.pattern.mismatch,t.fullField,r,t.pattern))}}},Ge={required:F0,whitespace:Vx,type:$x,range:Wx,enum:Hx,pattern:jx},zx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i,"string"),Ot(r,"string")||(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i),Ge.pattern(t,r,a,s,i),t.whitespace===!0&&Ge.whitespace(t,r,a,s,i))}n(s)},Gx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Xx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(r===""&&(r=void 0),Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Kx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Yx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),Ot(r)||Ge.type(t,r,a,s,i)}n(s)},qx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Jx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Zx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(r==null&&!t.required)return n();Ge.required(t,r,a,s,i,"array"),r!=null&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Qx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},ev="enum",tv=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge[ev](t,r,a,s,i)}n(s)},rv=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i),Ot(r,"string")||Ge.pattern(t,r,a,s,i)}n(s)},nv=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r,"date")&&!t.required)return n();if(Ge.required(t,r,a,s,i),!Ot(r,"date")){var c;r instanceof Date?c=r:c=new Date(r),Ge.type(t,c,a,s,i),c&&Ge.range(t,c.getTime(),a,s,i)}}n(s)},av=function(t,r,n,a,i){var s=[],o=Array.isArray(r)?"array":typeof r;Ge.required(t,r,a,s,i,o),n(s)},hl=function(t,r,n,a,i){var s=t.type,o=[],c=t.required||!t.required&&a.hasOwnProperty(t.field);if(c){if(Ot(r,s)&&!t.required)return n();Ge.required(t,r,a,o,i,s),Ot(r,s)||Ge.type(t,r,a,o,i)}n(o)},iv=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Ot(r)&&!t.required)return n();Ge.required(t,r,a,s,i)}n(s)},Fi={string:zx,method:Gx,number:Xx,boolean:Kx,regexp:Yx,integer:qx,float:Jx,array:Zx,object:Qx,enum:tv,pattern:rv,date:nv,url:hl,hex:hl,email:hl,required:av,any:iv};function ml(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var pl=ml(),Ai=function(){function e(r){this.rules=null,this._messages=pl,this.define(r)}var t=e.prototype;return t.define=function(n){var a=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(i){var s=n[i];a.rules[i]=Array.isArray(s)?s:[s]})},t.messages=function(n){return n&&(this._messages=T0(ml(),n)),this._messages},t.validate=function(n,a,i){var s=this;a===void 0&&(a={}),i===void 0&&(i=function(){});var o=n,c=a,f=i;if(typeof c=="function"&&(f=c,c={}),!this.rules||Object.keys(this.rules).length===0)return f&&f(null,o),Promise.resolve(o);function u(p){var x=[],v={};function y(b){if(Array.isArray(b)){var R;x=(R=x).concat.apply(R,b)}else x.push(b)}for(var w=0;w<p.length;w++)y(p[w]);x.length?(v=dl(x),f(x,v)):f(null,o)}if(c.messages){var d=this.messages();d===pl&&(d=ml()),T0(d,c.messages),c.messages=d}else c.messages=this.messages();var h={},m=c.keys||Object.keys(this.rules);m.forEach(function(p){var x=s.rules[p],v=o[p];x.forEach(function(y){var w=y;typeof w.transform=="function"&&(o===n&&(o=ca({},o)),v=o[p]=w.transform(v)),typeof w=="function"?w={validator:w}:w=ca({},w),w.validator=s.getValidationMethod(w),w.validator&&(w.field=p,w.fullField=w.fullField||p,w.type=s.getType(w),h[p]=h[p]||[],h[p].push({rule:w,value:v,source:o,field:p}))})});var g={};return Px(h,c,function(p,x){var v=p.rule,y=(v.type==="object"||v.type==="array")&&(typeof v.fields=="object"||typeof v.defaultField=="object");y=y&&(v.required||!v.required&&p.value),v.field=p.field;function w(A,k){return ca({},k,{fullField:v.fullField+"."+A,fullFields:v.fullFields?[].concat(v.fullFields,[A]):[A]})}function b(A){A===void 0&&(A=[]);var k=Array.isArray(A)?A:[A];!c.suppressWarning&&k.length&&e.warning("async-validator:",k),k.length&&v.message!==void 0&&(k=[].concat(v.message));var U=k.map(S0(v,o));if(c.first&&U.length)return g[v.field]=1,x(U);if(!y)x(U);else{if(v.required&&!p.value)return v.message!==void 0?U=[].concat(v.message).map(S0(v,o)):c.error&&(U=[c.error(v,wr(c.messages.required,v.field))]),x(U);var T={};v.defaultField&&Object.keys(p.value).map(function(B){T[B]=v.defaultField}),T=ca({},T,p.rule.fields);var j={};Object.keys(T).forEach(function(B){var z=T[B],te=Array.isArray(z)?z:[z];j[B]=te.map(w.bind(null,B))});var G=new e(j);G.messages(c.messages),p.rule.options&&(p.rule.options.messages=c.messages,p.rule.options.error=c.error),G.validate(p.value,p.rule.options||c,function(B){var z=[];U&&U.length&&z.push.apply(z,U),B&&B.length&&z.push.apply(z,B),x(z.length?z:null)})}}var R;if(v.asyncValidator)R=v.asyncValidator(v,p.value,b,p.source,c);else if(v.validator){try{R=v.validator(v,p.value,b,p.source,c)}catch(A){console.error==null||console.error(A),c.suppressValidatorError||setTimeout(function(){throw A},0),b(A.message)}R===!0?b():R===!1?b(typeof v.message=="function"?v.message(v.fullField||v.field):v.message||(v.fullField||v.field)+" fails"):R instanceof Array?b(R):R instanceof Error&&b(R.message)}R&&R.then&&R.then(function(){return b()},function(A){return b(A)})},function(p){u(p)},o)},t.getType=function(n){if(n.type===void 0&&n.pattern instanceof RegExp&&(n.type="pattern"),typeof n.validator!="function"&&n.type&&!Fi.hasOwnProperty(n.type))throw new Error(wr("Unknown rule type %s",n.type));return n.type||"string"},t.getValidationMethod=function(n){if(typeof n.validator=="function")return n.validator;var a=Object.keys(n),i=a.indexOf("message");return i!==-1&&a.splice(i,1),a.length===1&&a[0]==="required"?Fi.required:Fi[this.getType(n)]||void 0},e}();Ai.register=function(t,r){if(typeof r!="function")throw new Error("Cannot register a validator by type, validator is not a function");Fi[t]=r},Ai.warning=b0,Ai.messages=pl,Ai.validators=Fi;function sv(e){const t={};for(const r in e){const n=e[r].getForm(),a=n.rules||n.rule,i=r.split(".");let s=t;if(a)for(let o=0;o<i.length;o++){const c=i[o];s[c]||(s[c]={type:"object",fields:{}}),o==i.length-1?s[c]=a:s=s[c].fields}}return new Ai(t)}function gl(e,t){X.forEach(e,r=>{r.children?gl(r.children,t):t(r)})}function ov(e,t){const r=ue.uiContext.get();function n(){if(e.data)return e.data;if(t.value){let a=r.table;return e.tableVersion==="v2"&&(a=r.tableV2),t.value[a.data]||[]}return[]}return{getData:n,insert(a,i){n().splice(a,0,i)},unshift(a){n().unshift(a)},remove(a){n().splice(a,1)},get(a){return n()[a]}}}function lv(e,t,r){const n=ov(e,r),a=l.reactive([]);function i(N){return typeof e.rowKey=="string"?N[e.rowKey]:e.rowKey(N)}function s(N){return N[e.editable.rowKey]}function o(N){for(const _ in a){const E=a[_],C=E.cells,F=E.rowData;if(N({rowData:F,row:E,cells:C})==="break")return}}function c(N){o(({rowData:_,row:E,cells:C})=>{X.forEach(C,(F,H)=>{N({rowData:_,row:E,cells:C,cell:F,key:H})})})}const{merge:f}=Je(),u=l.computed(()=>f({enabled:!1,mode:"free",rowKey:"id",addForm:{},editForm:{},exclusive:!0,exclusiveEffect:"cancel",activeTrigger:"onClick",activeDefault:!1,isEditable(N){return!0}},e.editable));function d(N,_,E,C){function F(ie){return X.get(N,ie)}function H(ie,Se){X.set(N,ie,Se)}const ee=l.computed(()=>{var ie;return((ie=C.editable)==null?void 0:ie.updateCell)||u.value.updateCell}),Q=l.computed(()=>{var ie;return((ie=C.editable)==null?void 0:ie.showAction)??u.value.showAction}),re=l.reactive({mode:E<0?"add":"edit",oldValue:void 0,newValue:void 0,loading:!1,isEditing:u.value.activeDefault,activeTrigger:u.value.activeTrigger,column:C,updateCell:ee,showAction:Q,isEditable:()=>{var L;let ie=(L=C==null?void 0:C.editable)==null?void 0:L.disabled;ie instanceof Function&&(ie=ie({column:C,editableId:E,row:N}));let Se=null;return ie!=null&&(Se=!ie),Se??(u.value.isEditable({editableId:E,key:_,row:N})||!1)},isChanged:()=>re.newValue!==re.oldValue,getForm:()=>{let ie=u.value[re.mode+"Form"];return ie==null&&(ie=u.value.editForm),ie[_]},active:(ie={})=>{(ie.exclusive??u.value.exclusive)&&((ie.exclusiveEffect??u.value.exclusiveEffect)==="save"?b():R()),re.isEditing=!0,re.oldValue=F(_);const L=u.value.editForm[_];L&&G(L,N)},inactive:()=>{re.isEditing=!1,re.newValue=F(_)},resume:()=>{re.isEditing&&(re.isEditing=!1,H(_,re.oldValue),delete re.newValue,delete re.oldValue)},cancel:()=>{re.resume()},persist:()=>{re.isEditing=!1,delete re.newValue,delete re.oldValue},save:async()=>{const ie=l.unref(re.updateCell);if(!ie){Re.warn("没有配置table.editable.updateCell方法,无法保存,相关文档:http://fast-crud.docmirror.cn/api/crud-options/table.html#editable");return}re.loading=!0;try{const Se=await ie({editableId:E,row:N,key:_,value:F(_)}),L=N[u.value.rowKey];(L==null||L<=0)&&((Se&&Se[u.value.rowKey])==null?Re.error(`对于添加的行,updateCell方法需要返回{'id':value},如果你配置了别的rowKey,需要返回{[rowKey]:id}。
当前返回值:${JSON.stringify(Se)}`):N[u.value.rowKey]=Se[u.value.rowKey]),re.persist()}finally{re.loading=!1}}});return re}function h(N,_){const E={};gl(e.columns,Q=>{E[Q.key]=d(_,Q.key,N,Q)});const C=l.computed(()=>sv(E)),F=i(_),H=F==null||F<0,ee=l.reactive({isAdd:H,rowData:_,editableId:N,isEditing:!1,loading:!1,cells:E,validator:C,inactive:()=>{ee.isEditing=!1,X.forEach(ee.cells,Q=>{Q.isEditing&&Q.inactive()})},active:()=>{ee.isEditing=!0,X.forEach(ee.cells,Q=>{Q.active({exclusive:!1})})},persist:()=>{ee.isEditing=!1,ee.inactive(),delete ee.isAdd,X.forEach(ee.cells,Q=>{Q.persist()})},resume:()=>{ee.isEditing=!1,X.forEach(ee.cells,Q=>{Q.resume()})},cancel:()=>{ee.resume()},validate:async Q=>{try{return X.forEach(ee.cells,(re,ie)=>{re.validateErrors=[]}),Q==null&&(Q=ee.rowData),await ee.validator.validate(Q),!0}catch(re){const{errors:ie,fields:Se}=re;return X.forEach(Se,(L,de)=>{const _e=ee.cells[de];_e&&(_e.validateErrors=L)}),Se}},getRowData:()=>{const Q=X.cloneDeep(ee.rowData);return delete Q[e.editable.rowKey],delete Q.children,Q},save:async Q=>{const{doSave:re}=Q,ie=ee.rowData,{merge:Se}=Je();if(await ee.validate()!==!0)return;function de(Fe){Fe&&(i(Fe)==null&&console.error("保存接口没有返回rowKey,无法更新该行的id,newRow:",Fe),Se(ie,Fe))}ee.loading=!0;const _e=ee.getRowData();try{await re({isAdd:ee.isAdd,row:_e,setData:de}),ee.persist()}finally{ee.loading=!1}}});if(l.watch(()=>_,async(Q,re,ie)=>{await ee.validate()},{deep:!0}),_.children&&_.children.length>0)for(const Q of _.children){Q[e.editable.rowKey]||(Q[e.editable.rowKey]=g());const re=Q[e.editable.rowKey];a[re]=h(re,Q)}return H&&ee.active(),ee}let m=0;function g(){return m++,m}function p(N){N==null&&(N=n.getData());const _=Object.assign({},a);X.forOwn(a,(E,C)=>{delete a[C]}),X.forEach(N,E=>{E[e.editable.rowKey]||(E[e.editable.rowKey]=g());const C=E[e.editable.rowKey];_[C]?a[C]=_[C]:a[C]=h(C,E)}),u.value.onSetup&&u.value.onSetup()}function x(N){const _=e.editable.rowKey,E=[];for(const C of N){const F={[_]:C[_]};C.children&&C.children.length&&(F.children=x(C.children)),E.push(F)}return E}l.watch(()=>{const N=e.data;let _=[];return N!=null&&N instanceof Array&&(_=x(N)),JSON.stringify(_)},(N,_)=>{u.value.enabled&&p(e.data)},{immediate:!0}),l.watch(()=>u.value.enabled,N=>{var _;N&&(((_=n.getData())==null?void 0:_.length)>0&&p(),u.value.onEnabled&&u.value.onEnabled({...u.value}))},{immediate:!0}),l.watch(()=>u.value.mode,()=>{u.value.onEnabled&&u.value.onEnabled({...u.value})});function v(N,_){var E;if(_!=null)return(E=a[N])==null?void 0:E.cells[_]}function y(N={}){c(({cell:_})=>{_.active({...N,exclusive:!1})})}function w(){c(({cell:N})=>{N.isEditing&&N.inactive()})}async function b(){c(({cell:N})=>{N.isEditing&&N.save()})}function R(){c(({cell:N})=>{N.isEditing&&N.cancel()})}function A(){w(),o(({row:N})=>{delete N.isAdd}),c(({cell:N})=>{delete N.newValue,delete N.oldValue})}function k(){c(({cell:N})=>{N.resume()})}function U(){let N=!1;return o(({cells:_})=>{X.forEach(_,E=>{if(E.isChanged())return N=!0,"break"})}),N}let T=0;function j(N,_){gl(N,E=>{G(E,_)})}function G(N,_){const E=X.get(_,N.key),C=l.unref(N.value);C!=null&&E==null&&X.set(_,N.key,C)}async function B(N={row:void 0,active:!0}){let _=N.row||{[u.value.rowKey]:--T,[e.rowKey]:T};if(j(u.value.addForm,_),N.addRowFunc){const E=await N.addRowFunc({row:N.row});E&&(_=E)}else if(e.editable.addRow){const E=await e.editable.addRow(n.getData(),_);E&&(_=E)}else n.unshift(_);if(N.active??e.editable.activeDefault){await l.nextTick();const E=s(_),C=Y(E);C&&C.active()}}function z(N,_){for(let E=0;E<_.length;E++){const C=_[E];if(s(C)===N)return X.remove(_,C),!0;if(C.children&&C.children.length>0&&z(N,C.children))return}return!1}function te(N){delete a[N],z(N,n.getData())}function W(N){const{cols:_}=N;o(({cells:E})=>{X.forEach(_,C=>{E[C].active({...N,exclusive:!1})})})}function Y(N){return a[N]}function ae(){const N=[];return o(({row:_})=>{_.isEditing&&N.push(_)}),N}async function he(){const N={};let _=!1;for(const E in a){const C=a[E],F=await C.validate();F!=!0&&(N[C.editableId]=F,_=!0)}return _?N:!0}function K(N){for(const _ of N)delete _[e.editable.rowKey],_.children&&_.children.length>0&&K(_.children);return N}function ce(N){return N==null&&(N=X.cloneDeep(n.getData())),N==null?[]:K(N)}return{editable:{options:u,setupEditable:p,inactive:w,active:y,persist:A,saveEach:b,cancelAll:R,resume:k,addRow:B,removeRow:te,getEditableRow:Y,activeCols:W,hasDirty:U,getEditableCell:v,eachRows:o,eachCells:c,validate:he,getCleanTableData:ce,getActiveRows:ae}}}const zD="";function cv(e){const t=(n,a)=>X.get(e,`value[${n}].${a}`);l.provide("componentRef:get",t);const r=(n,a,i)=>X.set(e,`value[${n}].${a}`,i);return l.provide("componentRef:set",r),{getter:t,setter:r}}const xl=l.defineComponent({name:"FsCell",props:{item:{},scope:{default(){return{}}},slots:{},conditionalRender:{type:Object}},setup(e,t){const{doComputed:r}=Br(),{ui:n}=ue.useUi(),s=r(()=>({component:e.item.component}),()=>e.scope,null,h=>h.component),o=l.ref();function c(){return o.value.getTargetRef()}t.expose({getTargetRef:c,targetRef:o});const f=l.computed(()=>{let h=e.item.showTitle;const m=e.scope.value;return h===!0&&(h=m),h}),u=l.computed(()=>m=>l.createVNode("span",{class:"fs-cell",title:f.value},[m])),d=()=>{var x,v;const h=e.scope.value,m=u.value,g={...e.scope,props:e.item},p=e.item.conditionalRender??e.conditionalRender;if(p&&p.match&&p.match(g))return m(p.render(g));if(e.slots)return m(e.slots(g));if(e.item.formatter)return m(e.item.formatter(g));if(e.item.cellRender)return m(e.item.cellRender(g));if(e.item.render)console.warn("column.render 配置已废弃,请使用column.cellRender代替");else return(x=s.value)!=null&&x.name?((v=s.value)==null?void 0:v.show)===!1?void 0:l.createVNode(ol,l.mergeProps({title:f.value,ref:o},s.value,{scope:g}),null):m(X.toString(h))};if(e.item.tooltip){const h=l.resolveDynamicComponent(n.tooltip.name);return()=>{let m={},g={};typeof e.item.tooltip=="object"?(m=X.omit(e.item.tooltip,"slots"),g={...e.item.tooltip.slots}):g[n.tooltip.content]=()=>e.item.tooltip===!0?f.value??e.scope.value:typeof e.item.tooltip=="function"?e.item.tooltip({...e.scope}):e.item.tooltip;const p={...g,[n.tooltip.trigger]:()=>d()};return l.createVNode(h,m,p)}}else return d}}),vl=l.defineComponent({name:"FsEditableCell",inheritAttrs:!1,props:{item:{},scope:{},index:{},editableId:{},columnKey:{},editableCell:{type:Object},editableOpts:{type:Object},slots:{},disabled:{},readonly:{}},setup(e,t){ue.uiContext.get();const{doComputed:r}=Br();if(e.index===-1)return()=>{};const a=r(()=>{var m;return(m=e.editableCell)==null?void 0:m.getForm()},()=>e.scope),i=l.computed(()=>{var m;return a.value&&a.value.show!==!1&&((m=e.editableCell)==null?void 0:m.isEditable())});function s(m){m&&i.value&&e.editableCell.active()}async function o(){var m;if(((m=e.editableOpts)==null?void 0:m.mode)==="free"){await e.editableCell.persist();return}await e.editableCell.save()}function c(){e.editableCell.cancel()}const f=l.computed(()=>{var m,g;return((m=e.editableOpts)==null?void 0:m.mode)!=="cell"&&((g=e.editableOpts)==null?void 0:g.mode)!=="free"?!1:e.editableCell.showAction}),u=l.computed(()=>e.editableCell.isChanged&&e.editableCell.isChanged()),d=()=>e.scope,h={default:()=>l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:"targetRef",item:e.item,scope:e.scope,slots:e.slots},t.attrs),null),edit:()=>{var g,p;let m=null;return(g=e.editableCell)!=null&&g.isEditing&&(a.value.blank===!1||((p=a.value.component)==null?void 0:p.show)===!1?m=null:a.value.conditionalRender&&a.value.conditionalRender.match&&a.value.conditionalRender.match(d())?m=l.createVNode(l.resolveComponent("fs-render"),l.mergeProps({"render-func":a.value.conditionalRender.render,scope:d()},t.attrs),null):a.value.render?m=l.createVNode(l.resolveComponent("fs-render"),l.mergeProps({"render-func":a.value.render,scope:d()},t.attrs),null):m=l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({ref:"targetInputRef"},a.value.component,t.attrs,{scope:e.scope}),null)),m}};return()=>{var p,x;if(!i.value||e.disabled||e.readonly)return l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:"targetRef",item:e.item,scope:e.scope},t.attrs),null);const m=e.editableCell,g=(p=e.editableOpts)==null?void 0:p.activeTrigger;return l.createVNode(l.resolveComponent("fs-editable"),{ref:"editableRef",class:"fs-editable-cell",editing:m==null?void 0:m.isEditing,showAction:f.value,submitOnEnter:(x=e.editableOpts)==null?void 0:x.submitOnEnter,dirty:u.value,"onUpdate:editing":s,onSubmit:o,onCancel:c,loading:m==null?void 0:m.loading,trigger:g,validateErrors:m==null?void 0:m.validateErrors},h)}},methods:{getTargetRef(){var e;return((e=this.$refs.targetInputRef)==null?void 0:e.getTargetRef())||this.$refs.targetRef}}});function fv({props:e,ui:t,sortedColumns:r,renderRowHandle:n,renderCellComponent:a,renderContext:i,componentDefines:s}){const{tableComp:o,tableColumnComp:c,tableColumnGroupComp:f}=s;t.tableColumn;const u={},d=h=>{const m={...h.columnSlots},g="cell_"+h.key;let p=c;if(h.children)m.default=()=>{const v=[];return X.forEach(h.children,y=>{y.show!==!1&&v.push(d(y))}),v},p=f;else if(h.type!=null){Re.debug("cell render column.type:",h.type);const v=e.cellSlots&&e.cellSlots[g];v&&(m.default=v)}else m.default=l.withCtx(v=>v==null?[l.createVNode("div",null,[l.createTextVNode("1111")])]:[a(h,v)],i);const x={...h};return delete x.children,l.createVNode(p,l.mergeProps({ref:"tableColumnRef"},x,{label:h.title,prop:h.key,dataIndex:h.key}),m)};return u.default=()=>{var m;const h=[];if(X.forEach(r,g=>{g.show!==!1&&h.push(d(g))}),e.rowHandle&&e.rowHandle.show!==!1){const g={default:l.withCtx(p=>[n(p)],i),...(m=e.rowHandle)==null?void 0:m.columnSlots};h.push(l.createVNode(c,l.mergeProps({ref:"tableColumnRef"},e.rowHandle,{label:e.rowHandle.title,prop:e.rowHandle.key||"rowHandle"}),g))}return h},e.slots&&X.forEach(e.slots,(h,m)=>{u[m]=h}),u}function D0(e,t){var d;const{props:r,renderRowHandle:n,renderCellComponent:a,renderContext:i,sortedColumns:s}=e,{ui:o}=ue.useUi(),c=s??{},f=[];let u=o.table;r.tableVersion==="v2"&&(u=o.tableV2);for(const h in c){const m=c[h];if(m.show===!1)continue;const g={...m};if(g._parent=t,g.dataIndex=m.key,f.push(g),m.children!=null){const x={...e,sortedColumns:m.children};delete x.renderRowHandle,g.children=D0(x,g)}else if(m.type==null){const x=g[u.renderMethod],v={...g};delete v[u.renderMethod],x?g[u.renderMethod]=l.withCtx((y,w,b)=>{const R=u.rebuildRenderScope(y,w,b),A=l.withCtx(()=>a(v,R),i);return x(R,A)},i):g[u.renderMethod]=l.withCtx((y,w,b)=>{const R=u.rebuildRenderScope(y,w,b);return a(v,R)},i)}}if(n&&((d=r.rowHandle)==null?void 0:d.show)!==!1){const h={key:"_rowHandle",...r.rowHandle};h[u.renderMethod]=l.withCtx((m,g,p)=>{const x=u.rebuildRenderScope(m,g,p);return n(x)},i),f.push(h)}return Re.debug("table columns:",f),f}const R0=l.defineComponent({name:"FsTable",inheritAttrs:!1,props:{tableVersion:{type:String},slots:{type:Object},cellSlots:{type:Object},columns:{type:Object,default:void 0},rowHandle:{type:Object},show:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},conditionalRender:{type:Object},editable:{type:Object,default(){return{}}},loading:{type:Boolean,default:!1},sort:{type:Object},request:{type:Object},rowKey:{type:[String,Function],default:"id"}},emits:["row-handle","value-change","pagination-change","filter-change","sort-change","data-change"],setup(e,t){const r=l.ref(),n=l.ref([]);cv(n);const a=(B,z)=>{if(!z||B==null||B>n.value.length)return;const W=n.value[B][z];return W==null?void 0:W.getTargetRef()},{ui:i}=ue.useUi(),s=l.getCurrentInstance();l.watch(()=>e.data,B=>{t.emit("data-change",{data:B})});let o=i.table,c=i.tableColumn;e.tableVersion==="v2"&&(o=i.tableV2,c=i.tableColumnV2);function f(B=0){o.scrollTo({top:B,tableRef:r,fsTableRef:s})}const u=l.resolveDynamicComponent(o.name),d=lv(e,t,r),h=(B,z)=>{const te=z[c.row],W=te,Y=z[c.index];return z.index=Y,{...z,key:B.key,value:X.get(te,B.key),row:te,form:W,getComponentRef:ae=>a(Y,ae)}};function m(B){t.emit("row-handle",B)}const g=o.onChange({onSortChange:B=>{t.emit("sort-change",B)},onFilterChange:B=>{t.emit("filter-change",B)},onPagination:()=>{},bubbleUp:B=>{B(t.attrs)}}),p=B=>{B==null&&(B={}),B.index=B[c.index];const z="cell-rowHandle",te={};if(e.cellSlots)for(const W in e.cellSlots)W.startsWith(z)&&(te[W]=e.cellSlots[W]);return l.createVNode(cl,l.mergeProps(e.rowHandle,{scope:B,onHandle:m}),te)},x=(B,z)=>{var _,E,C,F,H,ee,Q,re,ie,Se,L,de;const te="cell_"+B.key;z==null&&(z={});const W=(z.row=z[c.row])||{},Y={modelValue:X.get(z[c.row],B.key),"onUpdate:modelValue":_e=>{var ke;X.set(z[c.row],B.key,_e);const Fe=h(B,z);t.emit("value-change",Fe),B.valueChange&&(B.valueChange instanceof Function?B.valueChange(Fe):(ke=B.valueChange)==null||ke.handle(Fe))}},ae=_e=>{const Fe=z[c.index],ke=B.key;let me=n.value[Fe];me==null&&(n.value[Fe]=me={}),me[ke]=_e},he=z[c.index],K=W[(_=e.editable)==null?void 0:_.rowKey],ce=e.cellSlots&&e.cellSlots[te],N=h(B,z);if(((F=(C=(E=d.editable)==null?void 0:E.options)==null?void 0:C.value)==null?void 0:F.enabled)===!0){const _e=d.editable.getEditableCell(K,B.key);return l.createVNode(vl,l.mergeProps({ref:ae,key:B.key,columnKey:B.key,index:he,editableId:K,item:B,editableCell:_e,editableOpts:(ee=(H=d.editable)==null?void 0:H.options)==null?void 0:ee.value,scope:N,slots:ce,disabled:(ie=(re=(Q=d.editable)==null?void 0:Q.options)==null?void 0:re.value)==null?void 0:ie.disabled,readonly:(de=(L=(Se=d.editable)==null?void 0:Se.options)==null?void 0:L.value)==null?void 0:de.readonly},Y),null)}else return l.createVNode(xl,l.mergeProps({ref:ae,key:B.key,item:B,scope:N,slots:ce},Y,{conditionalRender:e.conditionalRender}),null)},{expose:v}=t;v({tableRef:r,componentRefs:n,getComponentRef:a,...d,scrollTo:f});const{doColumnsSort:y}=Bs(),w=o.renderMode,b=l.computed(()=>({[o.data]:e.data})),{merge:R,cloneDeep:A}=Je(),k=l.computed(()=>{let B=e.rowKey;return i.type==="naive"&&typeof e.rowKey=="string"&&(B=z=>z[e.rowKey]),R({rowKey:B},t.attrs,g)}),U=l.computed(()=>y(A(e.columns))),T=l.resolveDynamicComponent(i.tableColumn.name),j=l.resolveDynamicComponent(i.tableColumnGroup.name),G={tableComp:u,tableColumnComp:T,tableColumnGroupComp:j};if(w==="slot"){const B=l.computed(()=>fv({props:e,ui:i,sortedColumns:U.value,renderRowHandle:p,renderCellComponent:x,renderContext:s,componentDefines:G}));return()=>{if(e.show===!1)return;const z=l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},k.value,b.value),B.value);if(typeof o.vLoading=="string"){const te=l.resolveDirective(o.vLoading);return l.withDirectives(z,[[te,e.loading]])}return z}}else{const B=l.computed(()=>D0({props:e,ctx:t,ui:i,getContextFn:h,sortedColumns:U.value,componentRefs:n,renderRowHandle:p,renderCellComponent:x,renderContext:s,columns:e.columns})),z=l.computed(()=>{const W=[];function Y(ae){ae.forEach(he=>{he.children?Y(he.children):W.push(he)})}return Y(B.value),W}),te=l.computed(()=>o.buildMultiHeadersBind?o.buildMultiHeadersBind({treeColumns:B.value,flatColumns:z.value}):{bind:{},slots:{}});return()=>{var he;if(e.show===!1)return;const W={...e.slots,...(he=te.value)==null?void 0:he.slots},Y=o.columnsIsFlat,ae=(K={})=>{var ce;return l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},k.value,{columns:Y?z.value:B.value},b.value,(ce=te.value)==null?void 0:ce.bind,K),W)};if(e.tableVersion==="v2"&&i.type==="element"){const K={default({width:ce,height:N}){return ae({width:ce,height:N})}};return l.createVNode(l.resolveComponent("el-auto-resizer"),null,K)}return ae()}}}}),uv={class:"fs-editable"},dv={class:"fs-editable-input"},hv={key:0,class:"fs-editable-dirty"},mv={key:0,class:"fs-editable-action fs-editable-icon"},pv={class:"fs-editable-input"},gv={class:"fs-editable-action"},xv={class:"error-icon"},O0=l.defineComponent({__name:"fs-editable",props:{disabled:{type:Boolean,default:!1},editing:{type:Boolean,default:!1},dirty:{type:Boolean,default:!1},trigger:{type:[String,Boolean],default:"onClick"},loading:{type:Boolean,default:!1},showAction:{type:[Boolean,Object],default:!0},submitOnEnter:{type:Boolean,default:!1},validateErrors:{default:()=>[]}},emits:["update:editing","submit","cancel"],setup(e,{emit:t}){const r=e,{ui:n}=ue.useUi(),a=t,i=l.computed(()=>r.trigger?{[r.trigger]:()=>{a("update:editing",!0)}}:{}),s=l.computed(()=>r.showAction!==!1&&(typeof r.showAction!="object"||r.showAction.submit!==!1)),o=l.computed(()=>r.showAction!==!1&&(typeof r.showAction!="object"||r.showAction.cancel!==!1));function c(){a("submit")}function f(){a("cancel")}function u(m){!r.submitOnEnter||r.loading||m.key!=="Enter"||m.isComposing||m.altKey||m.ctrlKey||m.metaKey||m.shiftKey||m.target instanceof HTMLTextAreaElement||(m.preventDefault(),c())}function d(){var m;return((m=r.validateErrors)==null?void 0:m.length)>0}function h(){var m,g;if(((m=r.validateErrors)==null?void 0:m.length)!==0)return(g=r.validateErrors)==null?void 0:g.map(p=>p.message).join(",")}return(m,g)=>{const p=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("div",uv,[!e.editing||e.disabled?(l.openBlock(),l.createElementBlock("div",l.mergeProps({key:0,class:"fs-editable-inner fs-editable-pointer"},i.value),[l.createElementVNode("div",dv,[e.dirty?(l.openBlock(),l.createElementBlock("div",hv)):l.createCommentVNode("",!0),l.renderSlot(m.$slots,"default")]),e.trigger&&!e.disabled?(l.openBlock(),l.createElementBlock("div",mv,[l.createVNode(p,{icon:l.unref(n).icons.edit},null,8,["icon"])])):l.createCommentVNode("",!0)],16)):(l.openBlock(),l.createElementBlock("div",{key:1,class:l.normalizeClass(["fs-editable-inner",{"fs-validate-error":d()}]),onKeydown:u},[l.createElementVNode("div",pv,[l.renderSlot(m.$slots,"edit")]),l.createElementVNode("div",gv,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(n).tooltip.name),null,{[l.unref(n).tooltip.content]:l.withCtx(()=>[l.createElementVNode("span",xv,l.toDisplayString(h()),1)]),[l.unref(n).tooltip.trigger]:l.withCtx(()=>[l.createVNode(p,{class:l.normalizeClass({hidden:!d(),"error-icon":!0}),size:"mini",icon:l.unref(n).icons.info},null,8,["class","icon"])]),_:2},1024)),s.value?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[e.loading?(l.openBlock(),l.createBlock(p,{key:0,size:"mini",spin:!0,icon:l.unref(n).icons.refresh},null,8,["icon"])):(l.openBlock(),l.createBlock(p,{key:1,size:"mini",icon:l.unref(n).icons.check,onClick:c},null,8,["icon"]))],64)):l.createCommentVNode("",!0),o.value?(l.openBlock(),l.createBlock(p,{key:1,class:l.normalizeClass({hidden:e.loading}),size:"mini",icon:l.unref(n).icons.close,onClick:f},null,8,["class","icon"])):l.createCommentVNode("",!0)])],34))])}}}),GD="",vv=l.defineComponent({name:"FsActionbar",props:{buttons:{}},emits:["action"],setup(e,t){function r(a,i,s){const o={key:a,btn:i,$event:s,loadingRef:s==null?void 0:s.loadingRef};if(i.click){i.click(o);return}if(i.onClick){i.onClick(o);return}t.emit("action",o)}const n=l.computed(()=>{let a=[];for(let s in e.buttons)a.push({...e.buttons[s],_key:s});a=X.sortBy(a,s=>s.order??Un.orderDefault);const i={};return a.forEach(s=>{let o=s._key;delete s._key,i[o]=s}),i});return{onClick:r,computedButtons:n}}}),XD="",wv={class:"fs-actionbar"};function _v(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",wv,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(o,c)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:c},[o.show!==!1?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},o,{onClick:f=>e.onClick(c,o,f)}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))])}const B0=nt(vv,[["render",_v]]);class yv{constructor(){Te(this,"valueChange");Te(this,"mergeForm")}}const Us="ColumnsFilterContext",kv=l.defineComponent({__name:"index",props:{container:{default:()=>({is:"fs-columns-filter-layout-default"})},is:{},show:{type:Boolean},mode:{default:"default"},columns:{},originalColumns:{},storage:{type:[Boolean,String,Object],default:!0},text:{},onReset:{},onSubmit:{}},emits:["update:columns","update:show","reset","submit"],setup(e,{expose:t,emit:r}){const n=e,a=r,{t:i}=jt(),s=ue.uiContext.get(),o=l.ref(!1),c=()=>{o.value=!0},f=l.computed(()=>w(n.originalColumns)),u=l.ref([]),d=l.computed(()=>{const _={};return p(f.value,E=>{_[E.__key]=E}),_}),{merge:h,cloneDeep:m}=Je(),g=l.computed(()=>{const _={title:i("fs.toolbar.columnFilter.title"),fixed:i("fs.toolbar.columnFilter.fixed"),order:i("fs.toolbar.columnFilter.order"),reset:i("fs.toolbar.columnFilter.reset"),confirm:i("fs.toolbar.columnFilter.confirm"),unnamed:i("fs.toolbar.columnFilter.unnamed")};return h(_,n.text),_});function p(_,E){if(_)if(Array.isArray(_))for(const C of _)E(C),C.children&&p(C.children,E);else for(const C in _){const F=_[C];E(F),F.children&&p(F.children,E)}}const x=["__show","__disabled","__parent","__key","__title"];function v(_){return{key:_.key,title:_.title,fixed:_.fixed??!1,show:_.show??!0,__show:_.columnSetShow!==!1,__disabled:_.columnSetDisabled??!1,__title:_.columnSetTitle}}function y(_){const E={};return X.forEach(_,C=>{const F=X.omit(C,"children",...x);C.children&&C.children.length>0&&(F.children=y(C.children)),E[C.key]=F}),E}function w(_,E){const C=[];return X.forEach(_,F=>{const H=v(F);H.__parent=E,H.__key=`${(E==null?void 0:E.key)||""}.${F.key}`,C.push(H),F.children&&(H.children=w(F.children,H))}),C}function b(_){u.value=w(_)}async function R(){u.value=w(n.originalColumns),await A(!0),await ae(),a("reset")}async function A(_=!1){_||await W(u.value);const E=m(u.value);return p(E,C=>{if(C)for(const F of Object.keys(C))F.startsWith("__")&&delete C[F]}),G(E),o.value=!1,E}async function k(_=!1){const E=await A(_);a("submit",{columns:E})}const U=l.computed(()=>n.originalColumns);l.provide(Us,{originalColumns:U,originalColumnsMap:d,currentColumns:u,text:g,active:o,submit:k,reset:R});async function T(){await k(!1),a("update:show",!1)}async function j(){await R(),a("update:show",!1)}function G(_){a("update:columns",y(_))}const B=l.inject("get:crudBinding",()=>({id:""})),z=l.ref();function te(){const _=typeof n.storage=="object"?n.storage:null,E=typeof n.storage=="string"?n.storage:"";if(z.value==null){const C=df.useRoute();z.value=new jo({$router:C,tableName:"columnsFilter",keyType:E,remoteStorage:_})}return z.value.id=B().id,z.value}async function W(_){if(n.storage===!1)return;const E=m(_);p(E,C=>{delete C.__parent}),await te().updateTableValue(E)}async function Y(){if(n.storage!==!1)return await te().getTableValue()}async function ae(){await te().clearTableValue()}function he(_){const E=[];p(_,F=>{const H=X.pick(F,"key","__show","__disabled");E.push(JSON.stringify(H))}),E.sort();let C="";for(const F of E)C+=F;return C}l.watch(()=>n.columns,_=>{b(_)});const K=async()=>{b(n.columns);const _=await Y();if(_){const E=he(_);if(he(f.value)!==E)return;u.value=_,await l.nextTick(),await k(!0)}};async function ce(_){await _(u),await A()}l.watch(()=>f.value,async _=>{await K()},{immediate:!0}),t({start:c,save:A,update:ce,original:f,columns:u});function N(_){return _.__title||_.label||_.title||_.key||g.value.unnamed}return(_,E)=>{var F;const C=l.resolveComponent("fs-button");return e.mode==="simple"?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),{class:"fs-table-columns-filter-simple"},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(u.value,(H,ee)=>{var Q;return l.withDirectives((l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{key:ee,span:6},{default:l.withCtx(()=>{var re;return[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).checkbox.name),l.normalizeProps({[l.unref(s).checkbox.modelValue]:H.show,["onUpdate:"+l.unref(s).checkbox.modelValue]:ie=>H.show=ie,disabled:((re=f.value[H.key])==null?void 0:re.__disabled)===!0,class:"item-label",title:N(H)}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(N(H)),1)]),_:2},1040,["disabled","title"]))]}),_:2},1024)),[[l.vShow,((Q=f.value[H.key])==null?void 0:Q.__show)!==!1]])}),128))]),_:1})),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).divider.name))),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),null,{default:l.withCtx(()=>[l.createVNode(C,{style:{"margin-right":"5px"},type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,onClick:E[0]||(E[0]=H=>T())},null,8,["icon","text"]),l.createVNode(C,{icon:l.unref(s).icons.refresh,text:g.value.reset,onClick:j},null,8,["icon","text"])]),_:1}))],64)):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(((F=e.container)==null?void 0:F.is)||"fs-columns-filter-layout-default"),l.normalizeProps(l.mergeProps({key:1},e.container)),{buttons:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),{class:"fs-drawer-footer",gutter:10},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{span:12},{default:l.withCtx(()=>[l.createVNode(C,{icon:l.unref(s).icons.refresh,text:g.value.reset,block:"",onClick:R},null,8,["icon","text"])]),_:1})),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{span:12},{default:l.withCtx(()=>[l.createVNode(C,{type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,block:"",onClick:E[1]||(E[1]=H=>k(!1))},null,8,["icon","text"])]),_:1}))]),_:1}))]),_:1},16))}}}),KD="",bv=l.defineComponent({name:"FsToolbar",components:{FsTableColumnsFilter:kv},props:{buttons:{type:Object},compact:{type:Boolean,default:!0},columns:{type:Object,default:void 0},storage:{type:[String,Boolean],default:!0},slots:{},columnsFilter:{type:Object}},emits:["update:columns"],setup(e,t){jt();const r=l.ref(),{ui:n}=ue.useUi(),{merge:a}=Je(),i=l.computed(()=>{const c={columns:{click:()=>{r.value.start()}}};a(c,e.buttons);let f=[];for(let d in c)f.push({...c[d],_key:d});f=X.sortBy(f,d=>d.order??Un.orderDefault);const u={};return f.forEach(d=>{let h=d._key;delete d._key,u[h]=d}),u}),s=l.ref(!1);return{ui:n,columnsFilterRef:r,computedButtons:i,popoverVisible:s,handleSimpleClick:c=>{n.type!=="element"&&(s.value=!s.value)}}}}),YD="",Cv={class:"fs-toolbar"};function Ev(e,t,r,n,a,i){var o;const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",Cv,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(c,f)=>{var u;return l.openBlock(),l.createElementBlock(l.Fragment,{key:f},[c.show!==!1?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[f==="columns"&&e.columnsFilter&&((u=e.columnsFilter)==null?void 0:u.mode)==="simple"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.popover.name),l.normalizeProps({key:0,[e.ui.popover.visible]:e.popoverVisible,["onUpdate:"+e.ui.popover.visible]:t[2]||(t[2]=d=>e.popoverVisible=d),"display-directive":"show",placement:"bottom",width:760,trigger:"click"}),{[e.ui.popover.triggerSlotName]:l.withCtx(()=>[l.createVNode(s,l.mergeProps({ref_for:!0},c,{onClick:e.handleSimpleClick}),null,16,["onClick"])]),[e.ui.popover.contentSlotName]:l.withCtx(()=>[e.columns?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.columnsFilter.is||"fs-table-columns-filter"),l.mergeProps({key:0,ref_for:!0,ref:"columnsFilterRef",show:e.popoverVisible,"onUpdate:show":t[0]||(t[0]=d=>e.popoverVisible=d),mode:"simple"},{ref_for:!0},e.columnsFilter,{columns:e.columns,storage:e.storage,"onUpdate:columns":t[1]||(t[1]=d=>e.$emit("update:columns",d))}),null,16,["show","columns","storage"])):l.createCommentVNode("",!0)]),_:2},1040)):(l.openBlock(),l.createBlock(s,l.mergeProps({key:1,ref_for:!0},c,{onClick:d=>c.click(d)}),null,16,["onClick"]))],64)):l.createCommentVNode("",!0)],64)}),128)),e.columns&&((o=e.columnsFilter)==null?void 0:o.mode)!=="simple"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.columnsFilter.is||"fs-table-columns-filter"),l.mergeProps({key:0,ref:"columnsFilterRef",storage:e.storage},e.columnsFilter,{columns:e.columns,"onUpdate:columns":t[3]||(t[3]=c=>e.$emit("update:columns",c))}),null,16,["storage","columns"])):l.createCommentVNode("",!0)])}const N0=nt(bv,[["render",Ev]]);/**!
* Sortable 1.14.0
* @author RubaXa <trash@rubaxa.org>
* @author owenm <owen23355@gmail.com>
* @license MIT
*/function I0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function cn(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?I0(Object(r),!0).forEach(function(n){Sv(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I0(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function $s(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$s=function(t){return typeof t}:$s=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$s(e)}function Sv(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Fn(){return Fn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Fn.apply(this,arguments)}function Tv(e,t){if(e==null)return{};var r={},n=Object.keys(e),a,i;for(i=0;i<n.length;i++)a=n[i],!(t.indexOf(a)>=0)&&(r[a]=e[a]);return r}function Fv(e,t){if(e==null)return{};var r=Tv(e,t),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var Av="1.14.0";function An(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var Dn=An(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Di=An(/Edge/i),P0=An(/firefox/i),Ri=An(/safari/i)&&!An(/chrome/i)&&!An(/android/i),L0=An(/iP(ad|od|hone)/i),Dv=An(/chrome/i)&&An(/android/i),M0={capture:!1,passive:!1};function Ze(e,t,r){e.addEventListener(t,r,!Dn&&M0)}function Xe(e,t,r){e.removeEventListener(t,r,!Dn&&M0)}function Ws(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function Rv(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function fn(e,t,r,n){if(e){r=r||document;do{if(t!=null&&(t[0]===">"?e.parentNode===r&&Ws(e,t):Ws(e,t))||n&&e===r)return e;if(e===r)break}while(e=Rv(e))}return null}var V0=/\s+/g;function _r(e,t,r){if(e&&t)if(e.classList)e.classList[r?"add":"remove"](t);else{var n=(" "+e.className+" ").replace(V0," ").replace(" "+t+" "," ");e.className=(n+(r?" "+t:"")).replace(V0," ")}}function Ie(e,t,r){var n=e&&e.style;if(n){if(r===void 0)return document.defaultView&&document.defaultView.getComputedStyle?r=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(r=e.currentStyle),t===void 0?r:r[t];!(t in n)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),n[t]=r+(typeof r=="string"?"":"px")}}function Ha(e,t){var r="";if(typeof e=="string")r=e;else do{var n=Ie(e,"transform");n&&n!=="none"&&(r=n+" "+r)}while(!t&&(e=e.parentNode));var a=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return a&&new a(r)}function U0(e,t,r){if(e){var n=e.getElementsByTagName(t),a=0,i=n.length;if(r)for(;a<i;a++)r(n[a],a);return n}return[]}function un(){var e=document.scrollingElement;return e||document.documentElement}function Bt(e,t,r,n,a){if(!(!e.getBoundingClientRect&&e!==window)){var i,s,o,c,f,u,d;if(e!==window&&e.parentNode&&e!==un()?(i=e.getBoundingClientRect(),s=i.top,o=i.left,c=i.bottom,f=i.right,u=i.height,d=i.width):(s=0,o=0,c=window.innerHeight,f=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(t||r)&&e!==window&&(a=a||e.parentNode,!Dn))do if(a&&a.getBoundingClientRect&&(Ie(a,"transform")!=="none"||r&&Ie(a,"position")!=="static")){var h=a.getBoundingClientRect();s-=h.top+parseInt(Ie(a,"border-top-width")),o-=h.left+parseInt(Ie(a,"border-left-width")),c=s+i.height,f=o+i.width;break}while(a=a.parentNode);if(n&&e!==window){var m=Ha(a||e),g=m&&m.a,p=m&&m.d;m&&(s/=p,o/=g,d/=g,u/=p,c=s+u,f=o+d)}return{top:s,left:o,bottom:c,right:f,width:d,height:u}}}function $0(e,t,r){for(var n=Hn(e,!0),a=Bt(e)[t];n;){var i=Bt(n)[r],s=void 0;if(r==="top"||r==="left"?s=a>=i:s=a<=i,!s)return n;if(n===un())break;n=Hn(n,!1)}return!1}function ja(e,t,r,n){for(var a=0,i=0,s=e.children;i<s.length;){if(s[i].style.display!=="none"&&s[i]!==Pe.ghost&&(n||s[i]!==Pe.dragged)&&fn(s[i],r.draggable,e,!1)){if(a===t)return s[i];a++}i++}return null}function wl(e,t){for(var r=e.lastElementChild;r&&(r===Pe.ghost||Ie(r,"display")==="none"||t&&!Ws(r,t));)r=r.previousElementSibling;return r||null}function Nr(e,t){var r=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!=="TEMPLATE"&&e!==Pe.clone&&(!t||Ws(e,t))&&r++;return r}function W0(e){var t=0,r=0,n=un();if(e)do{var a=Ha(e),i=a.a,s=a.d;t+=e.scrollLeft*i,r+=e.scrollTop*s}while(e!==n&&(e=e.parentNode));return[t,r]}function Ov(e,t){for(var r in e)if(e.hasOwnProperty(r)){for(var n in t)if(t.hasOwnProperty(n)&&t[n]===e[r][n])return Number(r)}return-1}function Hn(e,t){if(!e||!e.getBoundingClientRect)return un();var r=e,n=!1;do if(r.clientWidth<r.scrollWidth||r.clientHeight<r.scrollHeight){var a=Ie(r);if(r.clientWidth<r.scrollWidth&&(a.overflowX=="auto"||a.overflowX=="scroll")||r.clientHeight<r.scrollHeight&&(a.overflowY=="auto"||a.overflowY=="scroll")){if(!r.getBoundingClientRect||r===document.body)return un();if(n||t)return r;n=!0}}while(r=r.parentNode);return un()}function Bv(e,t){if(e&&t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function _l(e,t){return Math.round(e.top)===Math.round(t.top)&&Math.round(e.left)===Math.round(t.left)&&Math.round(e.height)===Math.round(t.height)&&Math.round(e.width)===Math.round(t.width)}var Oi;function H0(e,t){return function(){if(!Oi){var r=arguments,n=this;r.length===1?e.call(n,r[0]):e.apply(n,r),Oi=setTimeout(function(){Oi=void 0},t)}}}function Nv(){clearTimeout(Oi),Oi=void 0}function j0(e,t,r){e.scrollLeft+=t,e.scrollTop+=r}function z0(e){var t=window.Polymer,r=window.jQuery||window.Zepto;return t&&t.dom?t.dom(e).cloneNode(!0):r?r(e).clone(!0)[0]:e.cloneNode(!0)}var yr="Sortable"+new Date().getTime();function Iv(){var e=[],t;return{captureAnimationState:function(){if(e=[],!!this.options.animation){var n=[].slice.call(this.el.children);n.forEach(function(a){if(!(Ie(a,"display")==="none"||a===Pe.ghost)){e.push({target:a,rect:Bt(a)});var i=cn({},e[e.length-1].rect);if(a.thisAnimationDuration){var s=Ha(a,!0);s&&(i.top-=s.f,i.left-=s.e)}a.fromRect=i}})}},addAnimationState:function(n){e.push(n)},removeAnimationState:function(n){e.splice(Ov(e,{target:n}),1)},animateAll:function(n){var a=this;if(!this.options.animation){clearTimeout(t),typeof n=="function"&&n();return}var i=!1,s=0;e.forEach(function(o){var c=0,f=o.target,u=f.fromRect,d=Bt(f),h=f.prevFromRect,m=f.prevToRect,g=o.rect,p=Ha(f,!0);p&&(d.top-=p.f,d.left-=p.e),f.toRect=d,f.thisAnimationDuration&&_l(h,d)&&!_l(u,d)&&(g.top-d.top)/(g.left-d.left)===(u.top-d.top)/(u.left-d.left)&&(c=Lv(g,h,m,a.options)),_l(d,u)||(f.prevFromRect=u,f.prevToRect=d,c||(c=a.options.animation),a.animate(f,g,d,c)),c&&(i=!0,s=Math.max(s,c),clearTimeout(f.animationResetTimer),f.animationResetTimer=setTimeout(function(){f.animationTime=0,f.prevFromRect=null,f.fromRect=null,f.prevToRect=null,f.thisAnimationDuration=null},c),f.thisAnimationDuration=c)}),clearTimeout(t),i?t=setTimeout(function(){typeof n=="function"&&n()},s):typeof n=="function"&&n(),e=[]},animate:function(n,a,i,s){if(s){Ie(n,"transition",""),Ie(n,"transform","");var o=Ha(this.el),c=o&&o.a,f=o&&o.d,u=(a.left-i.left)/(c||1),d=(a.top-i.top)/(f||1);n.animatingX=!!u,n.animatingY=!!d,Ie(n,"transform","translate3d("+u+"px,"+d+"px,0)"),this.forRepaintDummy=Pv(n),Ie(n,"transition","transform "+s+"ms"+(this.options.easing?" "+this.options.easing:"")),Ie(n,"transform","translate3d(0,0,0)"),typeof n.animated=="number"&&clearTimeout(n.animated),n.animated=setTimeout(function(){Ie(n,"transition",""),Ie(n,"transform",""),n.animated=!1,n.animatingX=!1,n.animatingY=!1},s)}}}}function Pv(e){return e.offsetWidth}function Lv(e,t,r,n){return Math.sqrt(Math.pow(t.top-e.top,2)+Math.pow(t.left-e.left,2))/Math.sqrt(Math.pow(t.top-r.top,2)+Math.pow(t.left-r.left,2))*n.animation}var za=[],yl={initializeByDefault:!0},Bi={mount:function(t){for(var r in yl)yl.hasOwnProperty(r)&&!(r in t)&&(t[r]=yl[r]);za.forEach(function(n){if(n.pluginName===t.pluginName)throw"Sortable: Cannot mount plugin ".concat(t.pluginName," more than once")}),za.push(t)},pluginEvent:function(t,r,n){var a=this;this.eventCanceled=!1,n.cancel=function(){a.eventCanceled=!0};var i=t+"Global";za.forEach(function(s){r[s.pluginName]&&(r[s.pluginName][i]&&r[s.pluginName][i](cn({sortable:r},n)),r.options[s.pluginName]&&r[s.pluginName][t]&&r[s.pluginName][t](cn({sortable:r},n)))})},initializePlugins:function(t,r,n,a){za.forEach(function(o){var c=o.pluginName;if(!(!t.options[c]&&!o.initializeByDefault)){var f=new o(t,r,t.options);f.sortable=t,f.options=t.options,t[c]=f,Fn(n,f.defaults)}});for(var i in t.options)if(t.options.hasOwnProperty(i)){var s=this.modifyOption(t,i,t.options[i]);typeof s<"u"&&(t.options[i]=s)}},getEventProperties:function(t,r){var n={};return za.forEach(function(a){typeof a.eventProperties=="function"&&Fn(n,a.eventProperties.call(r[a.pluginName],t))}),n},modifyOption:function(t,r,n){var a;return za.forEach(function(i){t[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[r]=="function"&&(a=i.optionListeners[r].call(t[i.pluginName],n))}),a}};function Mv(e){var t=e.sortable,r=e.rootEl,n=e.name,a=e.targetEl,i=e.cloneEl,s=e.toEl,o=e.fromEl,c=e.oldIndex,f=e.newIndex,u=e.oldDraggableIndex,d=e.newDraggableIndex,h=e.originalEvent,m=e.putSortable,g=e.extraEventProperties;if(t=t||r&&r[yr],!!t){var p,x=t.options,v="on"+n.charAt(0).toUpperCase()+n.substr(1);window.CustomEvent&&!Dn&&!Di?p=new CustomEvent(n,{bubbles:!0,cancelable:!0}):(p=document.createEvent("Event"),p.initEvent(n,!0,!0)),p.to=s||r,p.from=o||r,p.item=a||r,p.clone=i,p.oldIndex=c,p.newIndex=f,p.oldDraggableIndex=u,p.newDraggableIndex=d,p.originalEvent=h,p.pullMode=m?m.lastPutMode:void 0;var y=cn(cn({},g),Bi.getEventProperties(n,t));for(var w in y)p[w]=y[w];r&&r.dispatchEvent(p),x[v]&&x[v].call(t,p)}}var Vv=["evt"],mr=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.evt,i=Fv(n,Vv);Bi.pluginEvent.bind(Pe)(t,r,cn({dragEl:we,parentEl:vt,ghostEl:$e,rootEl:ht,nextEl:fa,lastDownEl:Hs,cloneEl:wt,cloneHidden:jn,dragStarted:Ii,putSortable:zt,activeSortable:Pe.active,originalEvent:a,oldIndex:Ga,oldDraggableIndex:Ni,newIndex:kr,newDraggableIndex:zn,hideGhostForTarget:Z0,unhideGhostForTarget:Q0,cloneNowHidden:function(){jn=!0},cloneNowShown:function(){jn=!1},dispatchSortableEvent:function(o){sr({sortable:r,name:o,originalEvent:a})}},i))};function sr(e){Mv(cn({putSortable:zt,cloneEl:wt,targetEl:we,rootEl:ht,oldIndex:Ga,oldDraggableIndex:Ni,newIndex:kr,newDraggableIndex:zn},e))}var we,vt,$e,ht,fa,Hs,wt,jn,Ga,kr,Ni,zn,js,zt,Xa=!1,zs=!1,Gs=[],ua,Gr,kl,bl,G0,X0,Ii,Ka,Pi,Li=!1,Xs=!1,Ks,Yt,Cl=[],El=!1,Ys=[],qs=typeof document<"u",Js=L0,K0=Di||Dn?"cssFloat":"float",Uv=qs&&!Dv&&!L0&&"draggable"in document.createElement("div"),Y0=function(){if(qs){if(Dn)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),q0=function(t,r){var n=Ie(t),a=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=ja(t,0,r),s=ja(t,1,r),o=i&&Ie(i),c=s&&Ie(s),f=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+Bt(i).width,u=c&&parseInt(c.marginLeft)+parseInt(c.marginRight)+Bt(s).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&o.float&&o.float!=="none"){var d=o.float==="left"?"left":"right";return s&&(c.clear==="both"||c.clear===d)?"vertical":"horizontal"}return i&&(o.display==="block"||o.display==="flex"||o.display==="table"||o.display==="grid"||f>=a&&n[K0]==="none"||s&&n[K0]==="none"&&f+u>a)?"vertical":"horizontal"},$v=function(t,r,n){var a=n?t.left:t.top,i=n?t.right:t.bottom,s=n?t.width:t.height,o=n?r.left:r.top,c=n?r.right:r.bottom,f=n?r.width:r.height;return a===o||i===c||a+s/2===o+f/2},Wv=function(t,r){var n;return Gs.some(function(a){var i=a[yr].options.emptyInsertThreshold;if(!(!i||wl(a))){var s=Bt(a),o=t>=s.left-i&&t<=s.right+i,c=r>=s.top-i&&r<=s.bottom+i;if(o&&c)return n=a}}),n},J0=function(t){function r(i,s){return function(o,c,f,u){var d=o.options.group.name&&c.options.group.name&&o.options.group.name===c.options.group.name;if(i==null&&(s||d))return!0;if(i==null||i===!1)return!1;if(s&&i==="clone")return i;if(typeof i=="function")return r(i(o,c,f,u),s)(o,c,f,u);var h=(s?o:c).options.group.name;return i===!0||typeof i=="string"&&i===h||i.join&&i.indexOf(h)>-1}}var n={},a=t.group;(!a||$s(a)!="object")&&(a={name:a}),n.name=a.name,n.checkPull=r(a.pull,!0),n.checkPut=r(a.put),n.revertClone=a.revertClone,t.group=n},Z0=function(){!Y0&&$e&&Ie($e,"display","none")},Q0=function(){!Y0&&$e&&Ie($e,"display","")};qs&&document.addEventListener("click",function(e){if(zs)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),zs=!1,!1},!0);var da=function(t){if(we){t=t.touches?t.touches[0]:t;var r=Wv(t.clientX,t.clientY);if(r){var n={};for(var a in t)t.hasOwnProperty(a)&&(n[a]=t[a]);n.target=n.rootEl=r,n.preventDefault=void 0,n.stopPropagation=void 0,r[yr]._onDragOver(n)}}},Hv=function(t){we&&we.parentNode[yr]._isOutsideThisEl(t.target)};function Pe(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=Fn({},t),e[yr]=this;var r={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return q0(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,o){s.setData("Text",o.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Pe.supportPointer!==!1&&"PointerEvent"in window&&!Ri,emptyInsertThreshold:5};Bi.initializePlugins(this,e,r);for(var n in r)!(n in t)&&(t[n]=r[n]);J0(t);for(var a in this)a.charAt(0)==="_"&&typeof this[a]=="function"&&(this[a]=this[a].bind(this));this.nativeDraggable=t.forceFallback?!1:Uv,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Ze(e,"pointerdown",this._onTapStart):(Ze(e,"mousedown",this._onTapStart),Ze(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ze(e,"dragover",this),Ze(e,"dragenter",this)),Gs.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),Fn(this,Iv())}Pe.prototype={constructor:Pe,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(Ka=null)},_getDirection:function(t,r){return typeof this.options.direction=="function"?this.options.direction.call(this,t,r,we):this.options.direction},_onTapStart:function(t){if(t.cancelable){var r=this,n=this.el,a=this.options,i=a.preventOnFilter,s=t.type,o=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,c=(o||t).target,f=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||c,u=a.filter;if(Jv(n),!we&&!(/mousedown|pointerdown/.test(s)&&t.button!==0||a.disabled)&&!f.isContentEditable&&!(!this.nativeDraggable&&Ri&&c&&c.tagName.toUpperCase()==="SELECT")&&(c=fn(c,a.draggable,n,!1),!(c&&c.animated)&&Hs!==c)){if(Ga=Nr(c),Ni=Nr(c,a.draggable),typeof u=="function"){if(u.call(this,t,c,this)){sr({sortable:r,rootEl:f,name:"filter",targetEl:c,toEl:n,fromEl:n}),mr("filter",r,{evt:t}),i&&t.cancelable&&t.preventDefault();return}}else if(u&&(u=u.split(",").some(function(d){if(d=fn(f,d.trim(),n,!1),d)return sr({sortable:r,rootEl:d,name:"filter",targetEl:c,fromEl:n,toEl:n}),mr("filter",r,{evt:t}),!0}),u)){i&&t.cancelable&&t.preventDefault();return}a.handle&&!fn(f,a.handle,n,!1)||this._prepareDragStart(t,o,c)}}},_prepareDragStart:function(t,r,n){var a=this,i=a.el,s=a.options,o=i.ownerDocument,c;if(n&&!we&&n.parentNode===i){var f=Bt(n);if(ht=i,we=n,vt=we.parentNode,fa=we.nextSibling,Hs=n,js=s.group,Pe.dragged=we,ua={target:we,clientX:(r||t).clientX,clientY:(r||t).clientY},G0=ua.clientX-f.left,X0=ua.clientY-f.top,this._lastX=(r||t).clientX,this._lastY=(r||t).clientY,we.style["will-change"]="all",c=function(){if(mr("delayEnded",a,{evt:t}),Pe.eventCanceled){a._onDrop();return}a._disableDelayedDragEvents(),!P0&&a.nativeDraggable&&(we.draggable=!0),a._triggerDragStart(t,r),sr({sortable:a,name:"choose",originalEvent:t}),_r(we,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){U0(we,u.trim(),Sl)}),Ze(o,"dragover",da),Ze(o,"mousemove",da),Ze(o,"touchmove",da),Ze(o,"mouseup",a._onDrop),Ze(o,"touchend",a._onDrop),Ze(o,"touchcancel",a._onDrop),P0&&this.nativeDraggable&&(this.options.touchStartThreshold=4,we.draggable=!0),mr("delayStart",this,{evt:t}),s.delay&&(!s.delayOnTouchOnly||r)&&(!this.nativeDraggable||!(Di||Dn))){if(Pe.eventCanceled){this._onDrop();return}Ze(o,"mouseup",a._disableDelayedDrag),Ze(o,"touchend",a._disableDelayedDrag),Ze(o,"touchcancel",a._disableDelayedDrag),Ze(o,"mousemove",a._delayedDragTouchMoveHandler),Ze(o,"touchmove",a._delayedDragTouchMoveHandler),s.supportPointer&&Ze(o,"pointermove",a._delayedDragTouchMoveHandler),a._dragStartTimer=setTimeout(c,s.delay)}else c()}},_delayedDragTouchMoveHandler:function(t){var r=t.touches?t.touches[0]:t;Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){we&&Sl(we),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;Xe(t,"mouseup",this._disableDelayedDrag),Xe(t,"touchend",this._disableDelayedDrag),Xe(t,"touchcancel",this._disableDelayedDrag),Xe(t,"mousemove",this._delayedDragTouchMoveHandler),Xe(t,"touchmove",this._delayedDragTouchMoveHandler),Xe(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,r){r=r||t.pointerType=="touch"&&t,!this.nativeDraggable||r?this.options.supportPointer?Ze(document,"pointermove",this._onTouchMove):r?Ze(document,"touchmove",this._onTouchMove):Ze(document,"mousemove",this._onTouchMove):(Ze(we,"dragend",this),Ze(ht,"dragstart",this._onDragStart));try{document.selection?Qs(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,r){if(Xa=!1,ht&&we){mr("dragStarted",this,{evt:r}),this.nativeDraggable&&Ze(document,"dragover",Hv);var n=this.options;!t&&_r(we,n.dragClass,!1),_r(we,n.ghostClass,!0),Pe.active=this,t&&this._appendGhost(),sr({sortable:this,name:"start",originalEvent:r})}else this._nulling()},_emulateDragOver:function(){if(Gr){this._lastX=Gr.clientX,this._lastY=Gr.clientY,Z0();for(var t=document.elementFromPoint(Gr.clientX,Gr.clientY),r=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(Gr.clientX,Gr.clientY),t!==r);)r=t;if(we.parentNode[yr]._isOutsideThisEl(t),r)do{if(r[yr]){var n=void 0;if(n=r[yr]._onDragOver({clientX:Gr.clientX,clientY:Gr.clientY,target:t,rootEl:r}),n&&!this.options.dragoverBubble)break}t=r}while(r=r.parentNode);Q0()}},_onTouchMove:function(t){if(ua){var r=this.options,n=r.fallbackTolerance,a=r.fallbackOffset,i=t.touches?t.touches[0]:t,s=$e&&Ha($e,!0),o=$e&&s&&s.a,c=$e&&s&&s.d,f=Js&&Yt&&W0(Yt),u=(i.clientX-ua.clientX+a.x)/(o||1)+(f?f[0]-Cl[0]:0)/(o||1),d=(i.clientY-ua.clientY+a.y)/(c||1)+(f?f[1]-Cl[1]:0)/(c||1);if(!Pe.active&&!Xa){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if($e){s?(s.e+=u-(kl||0),s.f+=d-(bl||0)):s={a:1,b:0,c:0,d:1,e:u,f:d};var h="matrix(".concat(s.a,",").concat(s.b,",").concat(s.c,",").concat(s.d,",").concat(s.e,",").concat(s.f,")");Ie($e,"webkitTransform",h),Ie($e,"mozTransform",h),Ie($e,"msTransform",h),Ie($e,"transform",h),kl=u,bl=d,Gr=i}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!$e){var t=this.options.fallbackOnBody?document.body:ht,r=Bt(we,!0,Js,!0,t),n=this.options;if(Js){for(Yt=t;Ie(Yt,"position")==="static"&&Ie(Yt,"transform")==="none"&&Yt!==document;)Yt=Yt.parentNode;Yt!==document.body&&Yt!==document.documentElement?(Yt===document&&(Yt=un()),r.top+=Yt.scrollTop,r.left+=Yt.scrollLeft):Yt=un(),Cl=W0(Yt)}$e=we.cloneNode(!0),_r($e,n.ghostClass,!1),_r($e,n.fallbackClass,!0),_r($e,n.dragClass,!0),Ie($e,"transition",""),Ie($e,"transform",""),Ie($e,"box-sizing","border-box"),Ie($e,"margin",0),Ie($e,"top",r.top),Ie($e,"left",r.left),Ie($e,"width",r.width),Ie($e,"height",r.height),Ie($e,"opacity","0.8"),Ie($e,"position",Js?"absolute":"fixed"),Ie($e,"zIndex","100000"),Ie($e,"pointerEvents","none"),Pe.ghost=$e,t.appendChild($e),Ie($e,"transform-origin",G0/parseInt($e.style.width)*100+"% "+X0/parseInt($e.style.height)*100+"%")}},_onDragStart:function(t,r){var n=this,a=t.dataTransfer,i=n.options;if(mr("dragStart",this,{evt:t}),Pe.eventCanceled){this._onDrop();return}mr("setupClone",this),Pe.eventCanceled||(wt=z0(we),wt.draggable=!1,wt.style["will-change"]="",this._hideClone(),_r(wt,this.options.chosenClass,!1),Pe.clone=wt),n.cloneId=Qs(function(){mr("clone",n),!Pe.eventCanceled&&(n.options.removeCloneOnHide||ht.insertBefore(wt,we),n._hideClone(),sr({sortable:n,name:"clone"}))}),!r&&_r(we,i.dragClass,!0),r?(zs=!0,n._loopId=setInterval(n._emulateDragOver,50)):(Xe(document,"mouseup",n._onDrop),Xe(document,"touchend",n._onDrop),Xe(document,"touchcancel",n._onDrop),a&&(a.effectAllowed="move",i.setData&&i.setData.call(n,a,we)),Ze(document,"drop",n),Ie(we,"transform","translateZ(0)")),Xa=!0,n._dragStartId=Qs(n._dragStarted.bind(n,r,t)),Ze(document,"selectstart",n),Ii=!0,Ri&&Ie(document.body,"user-select","none")},_onDragOver:function(t){var r=this.el,n=t.target,a,i,s,o=this.options,c=o.group,f=Pe.active,u=js===c,d=o.sort,h=zt||f,m,g=this,p=!1;if(El)return;function x(he,K){mr(he,g,cn({evt:t,isOwner:u,axis:m?"vertical":"horizontal",revert:s,dragRect:a,targetRect:i,canSort:d,fromSortable:h,target:n,completed:y,onMove:function(N,_){return Zs(ht,r,we,a,N,Bt(N),t,_)},changed:w},K))}function v(){x("dragOverAnimationCapture"),g.captureAnimationState(),g!==h&&h.captureAnimationState()}function y(he){return x("dragOverCompleted",{insertion:he}),he&&(u?f._hideClone():f._showClone(g),g!==h&&(_r(we,zt?zt.options.ghostClass:f.options.ghostClass,!1),_r(we,o.ghostClass,!0)),zt!==g&&g!==Pe.active?zt=g:g===Pe.active&&zt&&(zt=null),h===g&&(g._ignoreWhileAnimating=n),g.animateAll(function(){x("dragOverAnimationComplete"),g._ignoreWhileAnimating=null}),g!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(n===we&&!we.animated||n===r&&!n.animated)&&(Ka=null),!o.dragoverBubble&&!t.rootEl&&n!==document&&(we.parentNode[yr]._isOutsideThisEl(t.target),!he&&da(t)),!o.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),p=!0}function w(){kr=Nr(we),zn=Nr(we,o.draggable),sr({sortable:g,name:"change",toEl:r,newIndex:kr,newDraggableIndex:zn,originalEvent:t})}if(t.preventDefault!==void 0&&t.cancelable&&t.preventDefault(),n=fn(n,o.draggable,r,!0),x("dragOver"),Pe.eventCanceled)return p;if(we.contains(t.target)||n.animated&&n.animatingX&&n.animatingY||g._ignoreWhileAnimating===n)return y(!1);if(zs=!1,f&&!o.disabled&&(u?d||(s=vt!==ht):zt===this||(this.lastPutMode=js.checkPull(this,f,we,t))&&c.checkPut(this,f,we,t))){if(m=this._getDirection(t,n)==="vertical",a=Bt(we),x("dragOverValid"),Pe.eventCanceled)return p;if(s)return vt=ht,v(),this._hideClone(),x("revert"),Pe.eventCanceled||(fa?ht.insertBefore(we,fa):ht.appendChild(we)),y(!0);var b=wl(r,o.draggable);if(!b||Xv(t,m,this)&&!b.animated){if(b===we)return y(!1);if(b&&r===t.target&&(n=b),n&&(i=Bt(n)),Zs(ht,r,we,a,n,i,t,!!n)!==!1)return v(),r.appendChild(we),vt=r,w(),y(!0)}else if(b&&Gv(t,m,this)){var R=ja(r,0,o,!0);if(R===we)return y(!1);if(n=R,i=Bt(n),Zs(ht,r,we,a,n,i,t,!1)!==!1)return v(),r.insertBefore(we,R),vt=r,w(),y(!0)}else if(n.parentNode===r){i=Bt(n);var A=0,k,U=we.parentNode!==r,T=!$v(we.animated&&we.toRect||a,n.animated&&n.toRect||i,m),j=m?"top":"left",G=$0(n,"top","top")||$0(we,"top","top"),B=G?G.scrollTop:void 0;Ka!==n&&(k=i[j],Li=!1,Xs=!T&&o.invertSwap||U),A=Kv(t,n,i,m,T?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Xs,Ka===n);var z;if(A!==0){var te=Nr(we);do te-=A,z=vt.children[te];while(z&&(Ie(z,"display")==="none"||z===$e))}if(A===0||z===n)return y(!1);Ka=n,Pi=A;var W=n.nextElementSibling,Y=!1;Y=A===1;var ae=Zs(ht,r,we,a,n,i,t,Y);if(ae!==!1)return(ae===1||ae===-1)&&(Y=ae===1),El=!0,setTimeout(zv,30),v(),Y&&!W?r.appendChild(we):n.parentNode.insertBefore(we,Y?W:n),G&&j0(G,0,B-G.scrollTop),vt=we.parentNode,k!==void 0&&!Xs&&(Ks=Math.abs(k-Bt(n)[j])),w(),y(!0)}if(r.contains(we))return y(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){Xe(document,"mousemove",this._onTouchMove),Xe(document,"touchmove",this._onTouchMove),Xe(document,"pointermove",this._onTouchMove),Xe(document,"dragover",da),Xe(document,"mousemove",da),Xe(document,"touchmove",da)},_offUpEvents:function(){var t=this.el.ownerDocument;Xe(t,"mouseup",this._onDrop),Xe(t,"touchend",this._onDrop),Xe(t,"pointerup",this._onDrop),Xe(t,"touchcancel",this._onDrop),Xe(document,"selectstart",this)},_onDrop:function(t){var r=this.el,n=this.options;if(kr=Nr(we),zn=Nr(we,n.draggable),mr("drop",this,{evt:t}),vt=we&&we.parentNode,kr=Nr(we),zn=Nr(we,n.draggable),Pe.eventCanceled){this._nulling();return}Xa=!1,Xs=!1,Li=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Tl(this.cloneId),Tl(this._dragStartId),this.nativeDraggable&&(Xe(document,"drop",this),Xe(r,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Ri&&Ie(document.body,"user-select",""),Ie(we,"transform",""),t&&(Ii&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),$e&&$e.parentNode&&$e.parentNode.removeChild($e),(ht===vt||zt&&zt.lastPutMode!=="clone")&&wt&&wt.parentNode&&wt.parentNode.removeChild(wt),we&&(this.nativeDraggable&&Xe(we,"dragend",this),Sl(we),we.style["will-change"]="",Ii&&!Xa&&_r(we,zt?zt.options.ghostClass:this.options.ghostClass,!1),_r(we,this.options.chosenClass,!1),sr({sortable:this,name:"unchoose",toEl:vt,newIndex:null,newDraggableIndex:null,originalEvent:t}),ht!==vt?(kr>=0&&(sr({rootEl:vt,name:"add",toEl:vt,fromEl:ht,originalEvent:t}),sr({sortable:this,name:"remove",toEl:vt,originalEvent:t}),sr({rootEl:vt,name:"sort",toEl:vt,fromEl:ht,originalEvent:t}),sr({sortable:this,name:"sort",toEl:vt,originalEvent:t})),zt&&zt.save()):kr!==Ga&&kr>=0&&(sr({sortable:this,name:"update",toEl:vt,originalEvent:t}),sr({sortable:this,name:"sort",toEl:vt,originalEvent:t})),Pe.active&&((kr==null||kr===-1)&&(kr=Ga,zn=Ni),sr({sortable:this,name:"end",toEl:vt,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){mr("nulling",this),ht=we=vt=$e=fa=wt=Hs=jn=ua=Gr=Ii=kr=zn=Ga=Ni=Ka=Pi=zt=js=Pe.dragged=Pe.ghost=Pe.clone=Pe.active=null,Ys.forEach(function(t){t.checked=!0}),Ys.length=kl=bl=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":we&&(this._onDragOver(t),jv(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],r,n=this.el.children,a=0,i=n.length,s=this.options;a<i;a++)r=n[a],fn(r,s.draggable,this.el,!1)&&t.push(r.getAttribute(s.dataIdAttr)||qv(r));return t},sort:function(t,r){var n={},a=this.el;this.toArray().forEach(function(i,s){var o=a.children[s];fn(o,this.options.draggable,a,!1)&&(n[i]=o)},this),r&&this.captureAnimationState(),t.forEach(function(i){n[i]&&(a.removeChild(n[i]),a.appendChild(n[i]))}),r&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,r){return fn(t,r||this.options.draggable,this.el,!1)},option:function(t,r){var n=this.options;if(r===void 0)return n[t];var a=Bi.modifyOption(this,t,r);typeof a<"u"?n[t]=a:n[t]=r,t==="group"&&J0(n)},destroy:function(){mr("destroy",this);var t=this.el;t[yr]=null,Xe(t,"mousedown",this._onTapStart),Xe(t,"touchstart",this._onTapStart),Xe(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(Xe(t,"dragover",this),Xe(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(r){r.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),Gs.splice(Gs.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!jn){if(mr("hideClone",this),Pe.eventCanceled)return;Ie(wt,"display","none"),this.options.removeCloneOnHide&&wt.parentNode&&wt.parentNode.removeChild(wt),jn=!0}},_showClone:function(t){if(t.lastPutMode!=="clone"){this._hideClone();return}if(jn){if(mr("showClone",this),Pe.eventCanceled)return;we.parentNode==ht&&!this.options.group.revertClone?ht.insertBefore(wt,we):fa?ht.insertBefore(wt,fa):ht.appendChild(wt),this.options.group.revertClone&&this.animate(we,wt),Ie(wt,"display",""),jn=!1}}};function jv(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move"),e.cancelable&&e.preventDefault()}function Zs(e,t,r,n,a,i,s,o){var c,f=e[yr],u=f.options.onMove,d;return window.CustomEvent&&!Dn&&!Di?c=new CustomEvent("move",{bubbles:!0,cancelable:!0}):(c=document.createEvent("Event"),c.initEvent("move",!0,!0)),c.to=t,c.from=e,c.dragged=r,c.draggedRect=n,c.related=a||t,c.relatedRect=i||Bt(t),c.willInsertAfter=o,c.originalEvent=s,e.dispatchEvent(c),u&&(d=u.call(f,c,s)),d}function Sl(e){e.draggable=!1}function zv(){El=!1}function Gv(e,t,r){var n=Bt(ja(r.el,0,r.options,!0)),a=10;return t?e.clientX<n.left-a||e.clientY<n.top&&e.clientX<n.right:e.clientY<n.top-a||e.clientY<n.bottom&&e.clientX<n.left}function Xv(e,t,r){var n=Bt(wl(r.el,r.options.draggable)),a=10;return t?e.clientX>n.right+a||e.clientX<=n.right&&e.clientY>n.bottom&&e.clientX>=n.left:e.clientX>n.right&&e.clientY>n.top||e.clientX<=n.right&&e.clientY>n.bottom+a}function Kv(e,t,r,n,a,i,s,o){var c=n?e.clientY:e.clientX,f=n?r.height:r.width,u=n?r.top:r.left,d=n?r.bottom:r.right,h=!1;if(!s){if(o&&Ks<f*a){if(!Li&&(Pi===1?c>u+f*i/2:c<d-f*i/2)&&(Li=!0),Li)h=!0;else if(Pi===1?c<u+Ks:c>d-Ks)return-Pi}else if(c>u+f*(1-a)/2&&c<d-f*(1-a)/2)return Yv(t)}return h=h||s,h&&(c<u+f*i/2||c>d-f*i/2)?c>u+f/2?1:-1:0}function Yv(e){return Nr(we)<Nr(e)?1:-1}function qv(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,r=t.length,n=0;r--;)n+=t.charCodeAt(r);return n.toString(36)}function Jv(e){Ys.length=0;for(var t=e.getElementsByTagName("input"),r=t.length;r--;){var n=t[r];n.checked&&Ys.push(n)}}function Qs(e){return setTimeout(e,0)}function Tl(e){return clearTimeout(e)}qs&&Ze(document,"touchmove",function(e){(Pe.active||Xa)&&e.cancelable&&e.preventDefault()}),Pe.utils={on:Ze,off:Xe,css:Ie,find:U0,is:function(t,r){return!!fn(t,r,t,!1)},extend:Bv,throttle:H0,closest:fn,toggleClass:_r,clone:z0,index:Nr,nextTick:Qs,cancelNextTick:Tl,detectDirection:q0,getChild:ja},Pe.get=function(e){return e[yr]},Pe.mount=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t[0].constructor===Array&&(t=t[0]),t.forEach(function(n){if(!n.prototype||!n.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(n));n.utils&&(Pe.utils=cn(cn({},Pe.utils),n.utils)),Bi.mount(n)})},Pe.create=function(e,t){return new Pe(e,t)},Pe.version=Av;var Tt=[],Mi,Fl,Al=!1,Dl,Rl,eo,Vi;function Zv(){function e(){this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0};for(var t in this)t.charAt(0)==="_"&&typeof this[t]=="function"&&(this[t]=this[t].bind(this))}return e.prototype={dragStarted:function(r){var n=r.originalEvent;this.sortable.nativeDraggable?Ze(document,"dragover",this._handleAutoScroll):this.options.supportPointer?Ze(document,"pointermove",this._handleFallbackAutoScroll):n.touches?Ze(document,"touchmove",this._handleFallbackAutoScroll):Ze(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(r){var n=r.originalEvent;!this.options.dragOverBubble&&!n.rootEl&&this._handleAutoScroll(n)},drop:function(){this.sortable.nativeDraggable?Xe(document,"dragover",this._handleAutoScroll):(Xe(document,"pointermove",this._handleFallbackAutoScroll),Xe(document,"touchmove",this._handleFallbackAutoScroll),Xe(document,"mousemove",this._handleFallbackAutoScroll)),eu(),to(),Nv()},nulling:function(){eo=Fl=Mi=Al=Vi=Dl=Rl=null,Tt.length=0},_handleFallbackAutoScroll:function(r){this._handleAutoScroll(r,!0)},_handleAutoScroll:function(r,n){var a=this,i=(r.touches?r.touches[0]:r).clientX,s=(r.touches?r.touches[0]:r).clientY,o=document.elementFromPoint(i,s);if(eo=r,n||this.options.forceAutoScrollFallback||Di||Dn||Ri){Ol(r,this.options,o,n);var c=Hn(o,!0);Al&&(!Vi||i!==Dl||s!==Rl)&&(Vi&&eu(),Vi=setInterval(function(){var f=Hn(document.elementFromPoint(i,s),!0);f!==c&&(c=f,to()),Ol(r,a.options,f,n)},10),Dl=i,Rl=s)}else{if(!this.options.bubbleScroll||Hn(o,!0)===un()){to();return}Ol(r,this.options,Hn(o,!1),!1)}}},Fn(e,{pluginName:"scroll",initializeByDefault:!0})}function to(){Tt.forEach(function(e){clearInterval(e.pid)}),Tt=[]}function eu(){clearInterval(Vi)}var Ol=H0(function(e,t,r,n){if(t.scroll){var a=(e.touches?e.touches[0]:e).clientX,i=(e.touches?e.touches[0]:e).clientY,s=t.scrollSensitivity,o=t.scrollSpeed,c=un(),f=!1,u;Fl!==r&&(Fl=r,to(),Mi=t.scroll,u=t.scrollFn,Mi===!0&&(Mi=Hn(r,!0)));var d=0,h=Mi;do{var m=h,g=Bt(m),p=g.top,x=g.bottom,v=g.left,y=g.right,w=g.width,b=g.height,R=void 0,A=void 0,k=m.scrollWidth,U=m.scrollHeight,T=Ie(m),j=m.scrollLeft,G=m.scrollTop;m===c?(R=w<k&&(T.overflowX==="auto"||T.overflowX==="scroll"||T.overflowX==="visible"),A=b<U&&(T.overflowY==="auto"||T.overflowY==="scroll"||T.overflowY==="visible")):(R=w<k&&(T.overflowX==="auto"||T.overflowX==="scroll"),A=b<U&&(T.overflowY==="auto"||T.overflowY==="scroll"));var B=R&&(Math.abs(y-a)<=s&&j+w<k)-(Math.abs(v-a)<=s&&!!j),z=A&&(Math.abs(x-i)<=s&&G+b<U)-(Math.abs(p-i)<=s&&!!G);if(!Tt[d])for(var te=0;te<=d;te++)Tt[te]||(Tt[te]={});(Tt[d].vx!=B||Tt[d].vy!=z||Tt[d].el!==m)&&(Tt[d].el=m,Tt[d].vx=B,Tt[d].vy=z,clearInterval(Tt[d].pid),(B!=0||z!=0)&&(f=!0,Tt[d].pid=setInterval((function(){n&&this.layer===0&&Pe.active._onTouchMove(eo);var W=Tt[this.layer].vy?Tt[this.layer].vy*o:0,Y=Tt[this.layer].vx?Tt[this.layer].vx*o:0;typeof u=="function"&&u.call(Pe.dragged.parentNode[yr],Y,W,e,eo,Tt[this.layer].el)!=="continue"||j0(Tt[this.layer].el,Y,W)}).bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=Hn(h,!1)));Al=f}},30),tu=function(t){var r=t.originalEvent,n=t.putSortable,a=t.dragEl,i=t.activeSortable,s=t.dispatchSortableEvent,o=t.hideGhostForTarget,c=t.unhideGhostForTarget;if(r){var f=n||i;o();var u=r.changedTouches&&r.changedTouches.length?r.changedTouches[0]:r,d=document.elementFromPoint(u.clientX,u.clientY);c(),f&&!f.el.contains(d)&&(s("spill"),this.onSpill({dragEl:a,putSortable:n}))}};function Bl(){}Bl.prototype={startIndex:null,dragStart:function(t){var r=t.oldDraggableIndex;this.startIndex=r},onSpill:function(t){var r=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var a=ja(this.sortable.el,this.startIndex,this.options);a?this.sortable.el.insertBefore(r,a):this.sortable.el.appendChild(r),this.sortable.animateAll(),n&&n.animateAll()},drop:tu},Fn(Bl,{pluginName:"revertOnSpill"});function Nl(){}Nl.prototype={onSpill:function(t){var r=t.dragEl,n=t.putSortable,a=n||this.sortable;a.captureAnimationState(),r.parentNode&&r.parentNode.removeChild(r),a.animateAll()},drop:tu},Fn(Nl,{pluginName:"removeOnSpill"}),Pe.mount(new Zv),Pe.mount(Nl,Bl);var Qv=Object.defineProperty,ew=Object.defineProperties,tw=Object.getOwnPropertyDescriptors,ru=Object.getOwnPropertySymbols,rw=Object.prototype.hasOwnProperty,nw=Object.prototype.propertyIsEnumerable,nu=(e,t,r)=>t in e?Qv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Gn=(e,t)=>{for(var r in t||(t={}))rw.call(t,r)&&nu(e,r,t[r]);if(ru)for(var r of ru(t))nw.call(t,r)&&nu(e,r,t[r]);return e},ro=(e,t)=>ew(e,tw(t));function Il(e){e.parentElement!==null&&e.parentElement.removeChild(e)}function au(e,t,r){const n=r===0?e.children[0]:e.children[r-1].nextSibling;e.insertBefore(t,n)}function aw(){return typeof window<"u"?window.console:global.console}const iw=aw();function sw(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const ow=/-(\w)/g,lw=sw(e=>e.replace(ow,(t,r)=>r.toUpperCase())),iu=["Start","Add","Remove","Update","End"],su=["Choose","Unchoose","Sort","Filter","Clone"],ou=["Move"],cw=[ou,iu,su].flatMap(e=>e).map(e=>`on${e}`),Pl={manage:ou,manageAndEmit:iu,emit:su};function fw(e){return cw.indexOf(e)!==-1}const uw=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function dw(e){return uw.includes(e)}function hw(e){return["transition-group","TransitionGroup"].includes(e)}function lu(e){return["id","class","role","style"].includes(e)||e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("on")}function cu(e){return e.reduce((t,[r,n])=>(t[r]=n,t),{})}function mw({$attrs:e,componentData:t={}}){const r=cu(Object.entries(e).filter(([n,a])=>lu(n)));return Gn(Gn({},r),t)}function pw({$attrs:e,callBackBuilder:t}){const r=cu(fu(e));Object.entries(t).forEach(([a,i])=>{Pl[a].forEach(s=>{r[`on${s}`]=i(s)})});const n=`[data-draggable]${r.draggable||""}`;return ro(Gn({},r),{draggable:n})}function fu(e){return Object.entries(e).filter(([t,r])=>!lu(t)).map(([t,r])=>[lw(t),r]).filter(([t,r])=>!fw(t))}const uu=e=>{const t=e.el||Array.isArray(e.children)&&e.children[0].el.parentNode;return t||console.error("使用 transition-group , 需要在slot中template内至少2层html标签"),t||{}},gw=(e,t)=>e.__draggable_context=t,du=e=>e.__draggable_context;class xw{constructor({nodes:{header:t,default:r,footer:n},root:a,realList:i}){this.defaultNodes=r,this.children=[...t,...r,...n],this.externalComponent=a.externalComponent,this.rootTransition=a.transition,this.tag=a.tag,this.realList=i}get _isRootComponent(){return this.externalComponent||this.rootTransition}render(t,r){const{tag:n,children:a,_isRootComponent:i}=this;return t(n,r,i?{default:()=>a}:a)}updated(){const{defaultNodes:t,realList:r}=this;t.forEach((n,a)=>{gw(uu(n),{element:r[a],index:a})})}getUnderlyingVm(t){return du(t)}getVmIndexFromDomIndex(t,r){const{defaultNodes:n}=this,{length:a}=n,i=r.children,s=i.item(t);if(s===null)return a;const o=du(s);if(o)return o.index;if(a===0)return 0;const c=uu(n[0]),f=[...i].findIndex(u=>u===c);return t<f?0:a}}function vw(e,t){const r=e[t];return r?r():[]}function ww({$slots:e,realList:t,getKey:r}){const n=t||[],[a,i]=["header","footer"].map(c=>vw(e,c)),{item:s}=e;if(!s)throw new Error("draggable element must have an item slot");const o=n.flatMap((c,f)=>s({element:c,index:f}).map(u=>(u.key=r(c),u.props=ro(Gn({},u.props||{}),{"data-draggable":!0}),u)));if(o.length!==n.length)throw new Error("Item slot must have only one child");return{header:a,footer:i,default:o}}function _w(e){const t=hw(e),r=!dw(e)&&!t;return{transition:t,externalComponent:r,tag:r?l.resolveComponent(e):t?l.TransitionGroup:e}}function yw({$slots:e,tag:t,realList:r,getKey:n}){const a=ww({$slots:e,realList:r,getKey:n}),i=_w(t);return new xw({nodes:a,root:i,realList:r})}function hu(e,t){l.nextTick(()=>this.$emit(e.toLowerCase(),t))}function mu(e){return(t,r)=>{if(this.realList!==null)return this[`onDrag${e}`](t,r)}}function kw(e){const t=mu.call(this,e);return(r,n)=>{t.call(this,r,n),hu.call(this,e,r)}}let Ll=null;const bw={list:{type:Array,required:!1,default:null},modelValue:{type:Array,required:!1,default:null},itemKey:{type:[String,Function],required:!0},clone:{type:Function,default:e=>e},tag:{type:String,default:"div"},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},Cw=["update:modelValue","change",...[...Pl.manageAndEmit,...Pl.emit].map(e=>e.toLowerCase())],Ew=l.defineComponent({name:"draggable",inheritAttrs:!1,props:bw,emits:Cw,data(){return{error:!1}},render(){try{this.error=!1;const{$slots:e,$attrs:t,tag:r,componentData:n,realList:a,getKey:i}=this,s=yw({$slots:e,tag:r,realList:a,getKey:i});this.componentStructure=s;const o=mw({$attrs:t,componentData:n});return s.render(l.h,o)}catch(e){return this.error=!0,l.h("pre",{style:{color:"red"}},e.stack)}},created(){this.list!==null&&this.modelValue!==null&&iw.error("modelValue and list props are mutually exclusive! Please set one or another.")},mounted(){if(this.error)return;const{$attrs:e,$el:t,componentStructure:r}=this;r.updated();const n=pw({$attrs:e,callBackBuilder:{manageAndEmit:i=>kw.call(this,i),emit:i=>hu.bind(this,i),manage:i=>mu.call(this,i)}}),a=t.nodeType===1?t:t.parentElement;this._sortable=new Pe(a,n),this.targetDomElement=a,a.__draggable_component__=this},updated(){this.componentStructure.updated()},beforeUnmount(){this._sortable!==void 0&&this._sortable.destroy()},computed:{realList(){const{list:e}=this;return e||this.modelValue},getKey(){const{itemKey:e}=this;return typeof e=="function"?e:t=>t[e]}},watch:{$attrs:{handler(e){const{_sortable:t}=this;t&&fu(e).forEach(([r,n])=>{t.option(r,n)})},deep:!0}},methods:{getUnderlyingVm(e){return this.componentStructure.getUnderlyingVm(e)||null},getUnderlyingPotencialDraggableComponent(e){return e.__draggable_component__},emitChanges(e){l.nextTick(()=>this.$emit("change",e))},alterList(e){if(this.list){e(this.list);return}const t=[...this.modelValue];e(t),this.$emit("update:modelValue",t)},spliceList(){const e=t=>t.splice(...arguments);this.alterList(e)},updatePosition(e,t){const r=n=>n.splice(t,0,n.splice(e,1)[0]);this.alterList(r)},getRelatedContextFromMoveEvent({to:e,related:t}){const r=this.getUnderlyingPotencialDraggableComponent(e);if(!r)return{component:r};const n=r.realList,a={list:n,component:r};if(e!==t&&n){const i=r.getUnderlyingVm(t)||{};return Gn(Gn({},i),a)}return a},getVmIndexFromDomIndex(e){return this.componentStructure.getVmIndexFromDomIndex(e,this.targetDomElement)},onDragStart(e){this.context=this.getUnderlyingVm(e.item),e.item._underlying_vm_=this.clone(this.context.element),Ll=e.item},onDragAdd(e){const t=e.item._underlying_vm_;if(t===void 0)return;Il(e.item);const r=this.getVmIndexFromDomIndex(e.newIndex);this.spliceList(r,0,t);const n={element:t,newIndex:r};this.emitChanges({added:n})},onDragRemove(e){if(au(this.$el,e.item,e.oldIndex),e.pullMode==="clone"){Il(e.clone);return}const{index:t,element:r}=this.context;this.spliceList(t,1);const n={element:r,oldIndex:t};this.emitChanges({removed:n})},onDragUpdate(e){Il(e.item),au(e.from,e.item,e.oldIndex);const t=this.context.index,r=this.getVmIndexFromDomIndex(e.newIndex);this.updatePosition(t,r);const n={element:this.context.element,oldIndex:t,newIndex:r};this.emitChanges({moved:n})},computeFutureIndex(e,t){if(!e.element)return 0;const r=[...t.to.children].filter(s=>s.style.display!=="none"),n=r.indexOf(t.related),a=e.component.getVmIndexFromDomIndex(n);return r.indexOf(Ll)!==-1||!t.willInsertAfter?a:a+1},onDragMove(e,t){const{move:r,realList:n}=this;if(!r||!n)return!0;const a=this.getRelatedContextFromMoveEvent(e),i=this.computeFutureIndex(a,e),s=ro(Gn({},this.context),{futureIndex:i}),o=ro(Gn({},e),{relatedContext:a,draggedContext:s});return r(o,t)},onDragEnd(){Ll=null}}}),Sw=l.defineComponent({name:"FsTableColumnsFixedController",props:{modelValue:{default:!1}},emits:["update:modelValue","change"],setup(e,t){const{ui:r}=ue.useUi(),n=l.computed(()=>[{value:"left",icon:r.icons.left},{value:!1,icon:r.icons.close},{value:"right",icon:r.icons.right}]);function a(i){t.emit("update:modelValue",i),t.emit("change",i)}return{ui:r,options:n,submit:a}}}),qD="";function Tw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.buttonGroup.name),{class:"fs-table-columns-fixed-controller"},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.options,o=>(l.openBlock(),l.createBlock(s,{key:o.icon,type:e.modelValue===o.value?"primary":"default",icon:o.icon,size:"small",onClick:c=>e.submit(o.value)},null,8,["type","icon","onClick"]))),128))]),_:1})}const Ml=nt(Sw,[["render",Tw]]),Fw=["title","i"],Aw={class:"item-right"},Dw={"flex-box":"0",class:"component--list-item-handle handle"},Rw={style:{"margin-left":"20px","padding-left":"10px","border-left":"1px solid #eee"}},Vl=l.defineComponent({__name:"fs-columns-filter-nest-list",props:{columns:{},isRoot:{type:Boolean,default:!1}},emits:["check-changed","fixed-changed"],setup(e,{emit:t}){const{ui:r}=ue.useUi(),n=t,{originalColumns:a,currentColumns:i,originalColumnsMap:s,text:o,active:c}=l.inject(Us);function f(p){return p.__title||p.label||p.title||p.key||o.value.unnamed}function u(p){const x=p.draggedContext.element,v=p.relatedContext.element,y=[];for(const k of i.value)k.key===x.key?y.push(v):k.key===v.key?y.push(x):y.push(k);let w=0,b=y.length-1,R=y.length-1,A=0;for(let k=0;k<y.length;k++){const U=y[k];U.fixed==="left"?w=k:U.fixed==="right"?b=b>k?k:b:(R=R>k?k:R,A=A<k?k:A)}if(R<w||A>b)return!1}function d(p){return"update:"+p}function h(p){p.show=!p.show;function x(y){y.children&&y.children.forEach(w=>{!w.__show||w.__disabled||(w.show=y.show,x(w))})}x(p);function v(y){if(y.__parent){const w=y.__parent;w&&(w.show=w.children.filter(b=>b.__show&&b.show===!0).length>0,v(w))}}v(p)}function m(){n("check-changed")}function g(p,x){n("fixed-changed",p,x)}return(p,x)=>{const v=l.resolveComponent("fs-icon"),y=l.resolveComponent("fs-columns-filter-nest-list",!0);return l.openBlock(),l.createBlock(l.unref(Ew),{list:e.columns,"item-key":"key",move:u},{item:l.withCtx(({element:w,index:b})=>{var R,A;return[l.createElementVNode("div",null,[l.withDirectives(l.createElementVNode("div",{title:f(w),class:"component--list-item",flex:"main:justify cross:center",i:b},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(r).checkbox.name),l.mergeProps({[l.unref(r).checkbox.modelValue||""]:w.show,disabled:((R=l.unref(s)[w.__key])==null?void 0:R.__disabled)===!0,class:"item-label",title:f(w)},{[l.toHandlerKey(d(l.unref(r).checkbox.modelValue))]:k=>h(w)},{onChange:m}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(f(w)),1)]),_:2},1040,["disabled","title"])),l.createElementVNode("div",Aw,[e.isRoot?(l.openBlock(),l.createBlock(Ml,{key:0,modelValue:w.fixed,"onUpdate:modelValue":k=>w.fixed=k,"flex-box":"0",class:"d2-mr-10",onChange:k=>g(b,k)},null,8,["modelValue","onUpdate:modelValue","onChange"])):l.createCommentVNode("",!0),l.createElementVNode("div",Dw,[l.createVNode(v,{icon:l.unref(r).icons.sort},null,8,["icon"])])])],8,Fw),[[l.vShow,((A=l.unref(s)[w.__key])==null?void 0:A.__show)!==!1]]),l.createElementVNode("div",Rw,[w.children?(l.openBlock(),l.createBlock(y,{key:0,columns:w.children,onCheckChanged:m},null,8,["columns"])):l.createCommentVNode("",!0)])])]}),_:1},8,["list"])}}}),Ow={class:"component--list"},Bw={key:"__first__",class:"component--list-item",flex:"main:justify cross:center"},Nw={span:12},Iw={class:"title"},pu=l.defineComponent({__name:"fs-columns-filter-layout-default",props:{width:{},drawer:{}},setup(e){const{ui:t}=ue.useUi(),{originalColumns:r,currentColumns:n,text:a,active:i}=l.inject(Us),s=e,o=l.computed(()=>X.merge({[t.drawer.visible]:i.value,["onUpdate:"+t.drawer.visible]:x=>{i.value=x},[t.drawer.width]:s.width||"400px"},s.drawer)),c=l.ref(!1);function f(x){c.value=x,n.value=n.value.map(v=>(!v.__show||v.__disabled||(v.show=x),v))}const u=l.computed(()=>({[t.checkbox.modelValue]:c.value,["onUpdate:"+t.checkbox.modelValue]:x=>{f(x)}})),d=l.computed(()=>n.value.filter(x=>x.__show&&x.show===!0).length),h=l.computed(()=>n.value.filter(x=>x.__show).length),m=l.computed(()=>d.value>0&&d.value<h.value);l.watch(()=>{n.value},()=>{p()},{immediate:!0});function g(x,v){v&&(n.value[x].show=!0),v==="left"&&n.value.unshift(n.value.splice(x,1)[0]),v==="right"&&n.value.push(n.value.splice(x,1)[0]),p()}function p(){c.value=d.value===h.value}return(x,v)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).drawer.name),l.mergeProps({class:"fs-columns-filter-layout-default",title:l.unref(a).title},o.value,{"append-to-body":""}),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).drawer.hasContentWrap||"div"),{class:"fs-drawer-wrapper fs-table-columns-filter",title:l.unref(a).title},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).card.name),{shadow:"never"},{default:l.withCtx(()=>[l.createElementVNode("div",Ow,[l.createElementVNode("div",Bw,[l.createElementVNode("span",Nw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).checkbox.name),l.mergeProps({indeterminate:m.value},u.value),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(d.value)+" / "+l.toDisplayString(h.value),1)]),_:1},16,["indeterminate"]))]),l.createElementVNode("span",Iw,l.toDisplayString(l.unref(a).fixed)+" / "+l.toDisplayString(l.unref(a).order),1)]),l.createVNode(Vl,{columns:l.unref(n),"is-root":!0,onCheckChanged:p,onFixedChanged:g},null,8,["columns"])])]),_:1})),l.renderSlot(x.$slots,"buttons")]),_:3},8,["title"]))]),_:3},16,["title"]))}}),Pw=l.defineComponent({name:"FsSearchButtons",inheritAttrs:!1,props:{buttons:{type:Object}},setup(){const{ui:e}=ue.useUi();return{ui:e}}}),Lw={class:"fs-search-col fs-search-btns"};function Mw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",Lw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.buttons,(o,c)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:c},[o.show?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},o,{onClick:f=>o._click(f)}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))]),_:1}))])}const gu=nt(Pw,[["render",Mw]]),Vw=l.defineComponent({name:"FsSearch",components:{FsSearchButtons:gu},inheritAttrs:!1,props:{container:{type:Object},initialForm:{type:Object},validatedForm:{type:Object},options:{type:Object},columns:{type:Object},buttons:{type:Object},searchAfterReset:{type:Boolean,default:!0},autoSearch:{type:Boolean,default:!0},debounce:{type:[Boolean,Object],default:void 0},slots:{type:Object,default(){return{}}},show:{type:Boolean,default:!0},validate:{default:!1},validateOnChange:{default:!0,type:Boolean},col:{},formItem:{type:Object,default:void 0}},emits:["search","_search","reset","_reset","validate-error","update:validatedForm"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Je(),a=n,{doComputed:i,AsyncComputeValue:s,ComputeValue:o}=Br();X.each(e.columns,N=>{N.value!=null&&(N.value instanceof s||N.value instanceof o)&&Re.warn("search.value配置不支持ComputeValue/AsyncCompute类型的动态计算")});function c(){const N={};return X.forEach(e.columns,(_,E)=>{var F;if(_.value===void 0)return;const C=l.unref(_.value);C!==void 0&&_.show!==!1&&((F=_.component)==null?void 0:F.show)!==!1&&(N[E]=C)}),X.cloneDeep(n({},e.initialForm,N))}const f=l.reactive(c());let u=null;const d=i(()=>e.columns,R,null,N=>{const _=X.cloneDeep(e.formItem||{});X.forEach(N,F=>{n(F,_,F)}),e.validate||X.forEach(N,F=>{delete F.rules,delete F.rule}),e.col&&X.forEach(N,F=>{F.col=n({},e.col,F.col)}),X.forEach(N,F=>{F._cellRender=()=>p(F)});let E=[];X.forEach(N,(F,H)=>{F._key=H,E.push(F)}),E=X.sortBy(E,F=>F.order??Un.orderDefault);const C={};return E.forEach(F=>{let H=F._key;delete F._key,C[H]=F}),C});function h(){const N=X.cloneDeep(f);t.emit("update:validatedForm",N)}l.watch(()=>e.validatedForm,N=>{for(const _ in f)delete f[_];n(f,N||{})},{deep:!0});const m=(N,_)=>X.get(N,_);function g(N){if(N!=null)return N.indexOf(".")>=0?N.split("."):N}function p(N){const _=N.key;async function E(Q){K(Q,N)}function C(){ae(N)}function F(Q,re){re.code==="Enter"&&Q.autoSearchTrigger!=!1&&U()}let H=null;e.slots["search_"+_]?H=l.createVNode(l.resolveComponent("fs-slot-render"),{slots:e.slots["search_"+_],scope:A(_)},null):N.render?H=l.createVNode(l.resolveComponent("fs-render"),{"render-func":N.render,scope:A(_)},null):N.component&&N.component.show!==!1&&(H=l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({ref:Q=>{y.value[_]=Q},"model-value":m(f,_),onKeyup:Q=>{F(N,Q)}},N.component,{scope:A(_),"onUpdate:modelValue":E,onInput:C,onCompositionstart:()=>{he(!0)},onCompositionend:()=>{he(!1)}}),null));const ee=g(_);return r.formItem.render({props:{...N,label:N.title,[r.formItem.prop]:ee,path:_,rulePath:_},slots:{default(){return H}}})}const x=l.ref(),{t:v}=jt(),y=l.ref({});function w(N){return y.value[N]}function b(N){var _;return(_=w(N))==null?void 0:_.getTargetRef()}function R(){return{form:f,validatedForm:e.validatedForm,getComponentRef:b,doSearch:U,doReset:T,doValidate:k}}function A(N){return{...R(),key:N,value:m(f,N)}}async function k(N=!1,_="search"){try{return e.validate&&await r.form.validateWrap(x.value),!0}catch(E){return N||t.emit("validate-error",{...R(),error:E,trigger:_}),!1}}async function U(){u&&u.cancel(),await k()&&(h(),await l.nextTick(),t.emit("_search",R()),t.emit("search",R()))}async function T(){const N=c(),_=X.entries(f);for(const E of _){const C=m(N,E[0]);C==null?X.unset(f,E[0]):X.set(f,E[0],C)}await k()&&(h(),await l.nextTick(),e.reset&&e.reset(R()),t.emit("_reset",R()),t.emit("reset",R()),e.searchAfterReset&&U())}const j=l.computed(()=>{const N=[],_={search:{show:!0,type:"primary",disabled:!1,click:E=>{U()},order:1,text:v("fs.search.search.text")},reset:{show:!0,disabled:!1,click:E=>{T()},text:v("fs.search.reset.text"),order:2}};n(_,e.buttons);for(let E in _){const C=_[E];C._click=()=>{C.click(R())},N.push(C)}return N.sort((E,C)=>E.order-C.order),N});function G(){var N;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((N=e.debounce)==null?void 0:N.wait)||500;u=X.debounce(U,_,e.debounce)}}G();function B(){return f}function z(){return e.validatedForm}function te(N,_=!0){_||X.each(X.keys(f),E=>{delete f[E]}),a(f,N),h()}const W=l.ref(!1),Y=()=>{Re.debug("do auto search,inputEventDisabled:",W.value),W.value!==!0&&u&&u()},ae=N=>{N.autoSearchTrigger==="input"&&Y()},he=N=>{W.value=N};async function K(N,_){const E=_.key;X.set(f,E,N);const C=e.validateOnChangeSilent;if(_.valueChange){const F=_.key,H=f[F],ee=b(F),Q=_.valueChange instanceof Function?_.valueChange:_.valueChange.handle,re=R(),ie={index:0,row:re.form,form:re.form,...re,key:F,value:H,componentRef:ee,immediate:!1,getComponentRef:b,mode:"search"};Q(ie)}e.validateOnChange&&await k(C,"change")&&h(),W.value,(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&Y()}const ce=l.computed(()=>e.validate?e.options.rules:[]);return h(),{get:m,ui:r,onValueChanged:K,doValidate:k,doSearch:U,doReset:T,formData:f,componentRenderRefs:y,getComponentRenderRef:w,getComponentRef:b,getForm:B,getValidatedForm:z,setForm:te,searchFormRef:x,onInput:ae,inputEventDisabled:W,changeInputEventDisabled:he,computedColumns:d,computedButtons:j,computedRules:ce,buildFieldContext:A,getContextFn:R}}}),JD="",Uw={class:"fs-search fs-search-v2"},$w={class:"fs-search-buttons"};function Ww(e,t,r,n,a,i){const s=l.resolveComponent("fs-button"),o=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createElementBlock("div",Uw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.collapseTransition.name),null,{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),l.mergeProps({ref:"searchFormRef",model:e.formData,onsubmit:"event.preventDefault();"},e.options,{rules:e.computedRules,class:"fs-search-form"}),{default:l.withCtx(()=>{var c;return[e.show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(((c=e.container)==null?void 0:c.is)||"fs-search-layout-default"),l.mergeProps({key:0},e.container,{columns:e.computedColumns,"get-context-fn":e.getContextFn}),l.createSlots({"search-buttons":l.withCtx(()=>[l.createElementVNode("div",$w,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},f,{onClick:d=>f._click()}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))])]),_:2},[e.slots["search-left"]?{name:"search-left",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-left"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"0"}:void 0,e.slots["search-middle"]?{name:"search-middle",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-middle"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"1"}:void 0,e.slots["search-right"]?{name:"search-right",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-right"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"2"}:void 0]),1040,["columns","get-context-fn"])):l.createCommentVNode("",!0)]}),_:1},16,["model","rules"]))]),_:1}))])}const xu=nt(Vw,[["render",Ww]]),Hw=l.defineComponent({name:"FsSearchV1",components:{FsSearchButtons:gu},inheritAttrs:!1,props:{initialForm:{type:Object},options:{type:Object},columns:{type:Object},tabs:{type:Object},buttons:{type:Object},searchAfterReset:{type:Boolean,default:!0},autoSearch:{type:Boolean,default:!0},debounce:{type:[Boolean,Object],default:void 0},slots:{default(){return{}}},show:{type:Boolean,default:!0},validate:{default:!1},layout:{type:String,default:"single-line"},col:{},collapse:{type:Boolean,default:!1}},emits:["search","reset","collapse","update:collapse"],setup(e,t){const{ui:r}=ue.useUi();l.onMounted(()=>{if(K.value&&te.value){W.value=te.value.$el.offsetHeight;const N=te.value.$el.children;N&&N.length>1&&(Y.value=N[1].offsetHeight+2)}});let n=null;function a(){return cloneDeep(e.initialForm||{})}const i=l.reactive(a()),{doComputed:s,AsyncComputeValue:o}=Br();X.each(e.columns,N=>{N.value!=null&&N.value instanceof o&&Re.warn("search.value配置不支持AsyncCompute类型的动态计算")});const{merge:c}=Je(),f=c,u=s(()=>e.columns,x,null,N=>{e.validate||X.forEach(N,C=>{delete C.rules}),e.col&&X.forEach(N,C=>{C.col=c({},e.col,C.col)});let _=[];X.forEach(N,(C,F)=>{C._key=F,_.push(C)}),_=X.sortBy(_,C=>C.order??Un.orderDefault);const E={};return _.forEach(C=>{let F=C._key;delete C._key,E[F]=C}),E});X.forEach(u.value,(N,_)=>{var C;if(N.value===void 0)return;const E=l.unref(N.value);E!==void 0&&N.show!==!1&&((C=N.component)==null?void 0:C.show)!==!1&&(i[_]=E)});const d=l.ref(),{t:h}=jt(),m=l.ref({});function g(N){return m.value[N]}function p(N){var _,E;return(E=(_=g(N))==null?void 0:_.$refs)==null?void 0:E.targetRef}function x(){return{form:i,validatedForm:i,getComponentRef:p,doValidate:null}}const v=l.ref(x());async function y(){if(n&&n.cancel(),await r.form.validateWrap(d.value))t.emit("search",v.value);else return r.message.error({message:h("fs.search.error.message")}),!1}function w(){const N=a(),_=X.entries(i);for(const E of _){const C=X.get(N,E[0]);C==null?X.unset(i,E[0]):X.set(i,E[0],C)}e.reset&&e.reset(v.value),t.emit("reset",x()),e.searchAfterReset&&l.nextTick(()=>{y()})}const b=l.computed(()=>{const N=[],_={search:{show:!0,type:"primary",disabled:!1,click:E=>{y()},order:1,text:h("fs.search.search.text")},reset:{show:!0,disabled:!1,click:E=>{w()},text:h("fs.search.reset.text"),order:2}};c(_,e.buttons);for(let E in _){const C=_[E];C._click=()=>{C.click(x())},N.push(C)}return N.sort((E,C)=>E.order-C.order),N});function R(){var N;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((N=e.debounce)==null?void 0:N.wait)||500;n=debounce(y,_,e.debounce)}}R();function A(){return i}function k(N,_=!0){_||X.each(X.keys(i),E=>{delete i[E]}),f(i,N)}const U=l.ref(!1),T=()=>{Re.debug("do auto search,inputEventDisabled:",U.value),U.value!==!0&&n&&n()},j=N=>{N.autoSearchTrigger==="input"&&T()},G=N=>{U.value=N,T()};function B(N,_){const E=_.key;if(X.set(i,E,N),_.valueChange){const C=_.key,F=i[C],H=p(C);(_.valueChange instanceof Function?_.valueChange:_.valueChange.handle)({key:C,value:F,componentRef:H,...x(),immidiate:!1})}(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&T()}const z=l.computed(()=>e.validate?e.options.rules:[]),te=l.ref(),W=l.ref(0),Y=l.ref(0),ae=()=>{t.emit("update:collapse",!e.collapse),t.emit("collapse",!e.collapse)},he=l.computed(()=>e.layout==="multi-line"?r.col.name:"div"),K=l.computed(()=>e.layout==="multi-line"),ce=l.computed(()=>K.value?e.collapse?Y.value?Y.value+"px":"":W.value?W.value+"px":"":"auto");return{get:(N,_)=>X.get(N,_),ui:r,onValueChanged:B,doSearch:y,doReset:w,form:i,componentRenderRefs:m,getComponentRenderRef:g,getComponentRef:p,getForm:A,setForm:k,searchFormRef:d,onInput:j,inputEventDisabled:U,changeInputEventDisabled:G,computedColumns:u,computedButtons:b,computedRules:z,columnsRowRef:te,computedColumnBoxHeight:ce,computedColName:he,computedIsMultiLine:K,toggleCollapse:ae,searchEventContextRef:v}}}),ZD="",jw={class:"fs-search-box"},zw={class:"fs-search-main"},Gw={key:0,class:"fs-search-col"},Xw={key:1,class:"fs-search-col fs-search-middle"},Kw={key:3,class:"fs-search-col fs-search-right"},Yw={key:0,class:"fs-search-action"};function qw(e,t,r,n,a,i){const s=l.resolveComponent("fs-slot-render"),o=l.resolveComponent("fs-component-render"),c=l.resolveComponent("fs-search-buttons"),f=l.resolveComponent("fs-button");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.collapseTransition.name),null,{default:l.withCtx(()=>[e.show!==!1?(l.openBlock(),l.createElementBlock("div",{key:0,class:l.normalizeClass(["fs-search",{"fs-search-multi-line":e.computedIsMultiLine}])},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),l.mergeProps({ref:"searchFormRef",model:e.form},e.options,{rules:e.computedRules,class:"fs-search-form",onCompositionstart:t[0]||(t[0]=u=>e.changeInputEventDisabled(!0)),onCompositionend:t[1]||(t[1]=u=>e.changeInputEventDisabled(!1))}),{default:l.withCtx(()=>[l.createElementVNode("div",jw,[l.createElementVNode("div",zw,[l.createElementVNode("div",{class:l.normalizeClass(["fs-search-columns",{"fs-search-collapse":e.collapse}]),style:l.normalizeStyle({height:e.computedColumnBoxHeight})},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),{ref:"columnsRowRef"},{default:l.withCtx(()=>[e.slots["search-left"]?(l.openBlock(),l.createElementBlock("div",Gw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-left"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedColumns,(u,d)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:d},[u.show===!0?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedColName),l.mergeProps({key:0,class:"fs-search-col"},{ref_for:!0},u.col),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.mergeProps({ref_for:!0},u,{[e.ui.formItem.prop||""]:d,label:u.title}),{default:l.withCtx(()=>[e.slots["search_"+d]?(l.openBlock(),l.createBlock(s,{key:0,slots:e.slots["search_"+d],scope:{...e.searchEventContextRef,key:d}},null,8,["slots","scope"])):(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[u.component&&u.component.show!==!1?(l.openBlock(),l.createBlock(o,l.mergeProps({key:0,ref_for:!0,ref:h=>{h&&(e.componentRenderRefs[u.key]=h)},"model-value":e.get(e.form,d)},{ref_for:!0},u.component,{scope:e.searchEventContextRef,"onUpdate:modelValue":h=>e.onValueChanged(h,u),onInput:h=>e.onInput(u)}),null,16,["model-value","scope","onUpdate:modelValue","onInput"])):l.createCommentVNode("",!0)],64))]),_:2},1040,["label"]))]),_:2},1040)):l.createCommentVNode("",!0)],64))),128)),e.slots["search-middle"]?(l.openBlock(),l.createElementBlock("div",Xw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-middle"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0),e.computedIsMultiLine?l.createCommentVNode("",!0):(l.openBlock(),l.createBlock(c,{key:2,buttons:e.computedButtons},null,8,["buttons"])),e.slots["search-right"]?(l.openBlock(),l.createElementBlock("div",Kw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-right"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0)]),_:1},512))],6),e.computedIsMultiLine?(l.openBlock(),l.createBlock(c,{key:0,buttons:e.computedButtons},null,8,["buttons"])):l.createCommentVNode("",!0)]),e.computedIsMultiLine?(l.openBlock(),l.createElementBlock("div",Yw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(f,{icon:e.collapse?e.ui.icons.caretUp:e.ui.icons.caretDown,onClick:e.toggleCollapse},null,8,["icon","onClick"])]),_:1}))])):l.createCommentVNode("",!0)])]),_:1},16,["model","rules"]))],2)):l.createCommentVNode("",!0)]),_:1})}const vu=nt(Hw,[["render",qw]]),Jw=l.defineComponent({name:"FsSearchLayoutDefault",props:{collapse:{type:Boolean,default:!0},collapseButton:{type:Object},action:{type:Object},layout:{type:String,default:"single-line"},columns:{type:Object},col:{type:Object},getContextFn:{type:Function}},emits:["update:collapse","collapse"],setup(e,t){const{ui:r}=ue.useUi(),{t:n}=jt(),a=l.ref(),i=l.computed(()=>e.layout==="multi-line");l.onMounted(()=>{i.value&&a.value&&(o.value=a.value.$el.offsetHeight)});const s=l.computed(()=>!i.value||!e.collapse?"auto":o.value?o.value+"px":""),o=l.ref(0),c=()=>{t.emit("update:collapse",!e.collapse),t.emit("collapse",!e.collapse)};function f(u){return X.merge({},e.col,u)}return{ui:r,columnsRowRef:a,computedColumnBoxHeight:s,computedIsMultiLine:i,toggleCollapse:c,mergeCol:f,t:n}}}),QD="",Zw={class:"fs-search-box"},Qw={class:"fs-search-col fs-search-slot"},e_={class:"fs-search-col fs-search-slot"},t_={class:"fs-search-col fs-search-slot"},r_={key:0,class:"fs-search-buttons-group fs-search-multi-line-buttons"};function n_(e,t,r,n,a,i){var c;const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["fs-search-layout-default",{"fs-search-multi-line":e.computedIsMultiLine}])},[l.createElementVNode("div",Zw,[l.createElementVNode("div",{class:l.normalizeClass(["fs-search-main",{"fs-search-collapse":e.collapse}]),style:l.normalizeStyle({maxHeight:e.computedColumnBoxHeight})},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),{ref:"columnsRowRef",class:"fs-search-columns"},{default:l.withCtx(()=>{var f;return[l.createElementVNode("span",Qw,[l.renderSlot(e.$slots,"search-left")]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.columns,(u,d)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:d},[u.show?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.col.name),l.mergeProps({key:0,class:"fs-search-col"},{ref_for:!0},e.mergeCol(u.col)),{default:l.withCtx(()=>[l.createVNode(s,{"render-func":u._cellRender,scope:e.getContextFn()},null,8,["render-func","scope"])]),_:2},1040)):l.createCommentVNode("",!0)],64))),128)),l.createElementVNode("span",e_,[l.renderSlot(e.$slots,"search-middle")]),e.computedIsMultiLine?l.createCommentVNode("",!0):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.col.name),l.mergeProps({key:0,class:"fs-search-col fs-search-buttons-group"},e.mergeCol((f=e.action)==null?void 0:f.col)),{default:l.withCtx(()=>{var u;return[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.normalizeProps({[e.ui.formItem.label||""]:(u=e.action)==null?void 0:u.label}),{default:l.withCtx(()=>[l.renderSlot(e.$slots,"search-buttons",l.normalizeProps(l.guardReactiveProps(e.getContextFn())))]),_:3},16))]}),_:3},16)),l.createElementVNode("span",t_,[l.renderSlot(e.$slots,"search-right",l.normalizeProps(l.guardReactiveProps(e.getContextFn())))])]}),_:3},512))],6),e.computedIsMultiLine?(l.openBlock(),l.createElementBlock("div",r_,[l.renderSlot(e.$slots,"search-buttons"),((c=e.collapseButton)==null?void 0:c.show)!==!1?(l.openBlock(),l.createBlock(o,l.mergeProps({key:0,icon:e.collapse?e.ui.icons.caretDown:e.ui.icons.caretUp,text:e.collapse?e.t("fs.search.container.collapseButton.text.expand"):e.t("fs.search.container.collapseButton.text.collapse")},e.collapseButton,{onClick:e.toggleCollapse}),null,16,["icon","text","onClick"])):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)])],2)}const wu=nt(Jw,[["render",n_]]),a_={class:"fs-tabs-filter"},i_=l.defineComponent({name:"FsTabsFilter",inheritAttrs:!1}),_u=l.defineComponent({...i_,props:{name:{},show:{type:Boolean,default:!1},defaultOption:{default:void 0},options:{default:()=>[]},modelValue:{},value:{default:"value"},label:{default:"label"}},emits:["update:modelValue","change"],setup(e,{emit:t}){const r=l.useAttrs(),{merge:n}=Je(),a=e,i=l.computed(()=>{const g={show:!0,value:null,label:m("fs.search.tabs.all")};return n(g,a.defaultOption||{})}),s="_default_key_",o=l.computed(()=>{const g=a.modelValue==null||a.modelValue===i.value.value?s:a.modelValue;return{type:"card",...r,[h.tabs.modelValue]:g,["onUpdate:"+h.tabs.modelValue]:f}}),c=t;function f(g){s===g&&(g=i.value.value);const p=a.modelValue;c("update:modelValue",g),p!==g&&c("change",g)}function u(g){return g[a.value]}function d(g){return g[a.label]}const{ui:h}=ue.useUi(),{t:m}=jt();return(g,p)=>(l.openBlock(),l.createElementBlock("div",a_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabs.name),l.normalizeProps(l.guardReactiveProps(o.value)),{default:l.withCtx(()=>[i.value.show?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabPane.name),l.normalizeProps({key:0,[l.unref(h).tabPane.key||""]:s,[l.unref(h).tabPane.tab||""]:i.value.label}),null,16)):l.createCommentVNode("",!0),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.options,(x,v)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabPane.name),l.normalizeProps({key:v,[l.unref(h).tabPane.key||""]:u(x),[l.unref(h).tabPane.tab||""]:d(x)}),null,16))),128))]),_:1},16))]))}}),eR="",s_={class:"fs-icon-selector"},o_={key:0,class:"fs-icon-selector-dialog"},l_={class:"fs-icon-selector-dialog-content"},c_={class:"icon-tabs-box mt-10"},f_={class:"search-box"},u_={class:"color-select"},d_=["onClick"],h_={class:"icon-container"},m_={class:"icon-list"},p_=["title","onClick","onDblclick"],g_={class:"load-more"},x_={key:1},v_={class:"footer"},w_=l.defineComponent({name:"FsIconSelector"}),yu=l.defineComponent({...w_,props:{modelValue:{type:String,default:""},dialog:{type:Object,default:()=>({})},tabs:{type:Object,default:()=>({})},limit:{type:Number,default:136},iconSets:{type:Array,default:()=>["logos","fa-brands","fa-solid","fa-regular","carbon","ion","ant-design","mdi","twemoji","svg-spinners"]},apiProvider:{type:String,default:"https://api.iconify.design"},colors:{type:Array,default:()=>["","#007AFF","#34C759","#FF9500","#FF3B30","#FFCC00","#424242","#8E8E93","#AF52DE","#5AC8FA","#A2845E"]}},emits:["update:modelValue"],setup(e,{emit:t}){const r=t,n=136,a=e,{ui:i}=ue.useUi(),s=l.ref(!1),o=l.computed(()=>({width:1024,style:{width:"1024px"},...a.dialog,[i.dialog.visible]:s.value,[`onUpdate:${i.dialog.visible}`]:W=>{s.value=W}})),c=i.formItem.injectFormItemContext(),f=l.computed(()=>({...h,[i.input.modelValue]:a.modelValue,[`onUpdate:${i.input.modelValue}`]:W=>{u(W)}})),u=W=>{r("update:modelValue",W),c==null||c.onChange()},d=()=>{var Y;s.value=!0,a.iconSets.length>0&&b.value.records.length===0&&y(a.iconSets[0]);const W=((Y=a.modelValue)==null?void 0:Y.split(":"))||[];W.length>=2?(U.value=W[0]+":"+W[1],T.value=W[2]):(U.value=a.modelValue,T.value="")},h=l.useAttrs(),m={async getCollections(){return await(await fetch(`${a.apiProvider}/collections`)).json()},async getIcons(W){return await(await fetch(`${a.apiProvider}/collection?prefix=${W}`)).json()},async search(W,Y){const ae=Y.start??0,he=Y.limit??50;return await(await fetch(`${a.apiProvider}/search?query=${W}&start=${ae}&limit=${he}`)).json()}},g=l.ref({}),p=async W=>{let Y=g.value[W];if(!Y){const ae=await m.getIcons(W),he=ae.uncategorized??[],K=ae.categories??[];Y=he;for(const ce in K)Y=Y.concat(K[ce]);Y=Y.map(ce=>`${W}:${ce}`),g.value[W]=Y}return Y},x=l.ref(""),v=l.ref("all"),y=W=>{v.value=W,x.value="",w(),R()},w=()=>{b.value.start=0,b.value.records=[],b.value.total=0,b.value.limit=a.limit??n},b=l.ref({loading:!1,start:0,limit:a.limit??n,total:null,query:"",records:[]}),R=async()=>{if(!b.value.loading){b.value.query!==x.value&&w(),b.value.loading=!0;try{const W=await A();b.value.records=b.value.records.concat(W.icons),b.value.total=W.total,b.value.limit=W.limit,b.value.query=x.value}finally{b.value.loading=!1}}};async function A(){if(v.value==="all"){if(!x.value){i.notification.warn("请输入搜索关键字");return}return await m.search(x.value,b.value)}else return await k(v.value)}async function k(W){const Y=await p(W);let ae=Y;x.value&&(ae=Y.filter(ce=>ce.includes(x.value)));let he=b.value.start+b.value.limit;return he>ae.length&&(he=ae.length),{icons:ae.slice(b.value.start,he),total:ae.length,limit:b.value.limit,start:b.value.start}}const U=l.ref(""),T=l.ref(""),j=(W,Y=!1)=>{U.value=W,Y&&G()},G=()=>{s.value=!1;let W=U.value;T.value&&(W=W+":"+T.value),u(W)},B=W=>{T.value=W},z=async()=>{b.value.start+=b.value.limit,await R()},te=l.computed(()=>({...a.tabs,[i.tabs.modelValue]:v.value,[`onUpdate:${i.tabs.modelValue}`]:y}));return(W,Y)=>{const ae=l.resolveComponent("fs-icon"),he=l.resolveComponent("fs-button"),K=l.resolveComponent("fs-loading");return l.openBlock(),l.createElementBlock("div",s_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).input.name),l.mergeProps(f.value,{class:"fs-icon-selector-search",onClick:d}),{prefix:l.withCtx(()=>[e.modelValue?(l.openBlock(),l.createBlock(ae,{key:0,class:"fs-icon-selector-input-prefix",icon:e.modelValue},null,8,["icon"])):l.createCommentVNode("",!0)]),_:1},16)),s.value?(l.openBlock(),l.createElementBlock("div",o_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).dialog.name),l.mergeProps({preset:"dialog",title:"选择图标"},o.value,{footer:null}),{default:l.withCtx(()=>[l.createElementVNode("div",l_,[l.createElementVNode("div",c_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabs.name),l.mergeProps(te.value,{type:"card"}),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabPane.name),l.normalizeProps({key:"all",[l.unref(i).tabPane.key||""]:"all",[l.unref(i).tabPane.tab||""]:"全部"}),null,16)),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.iconSets,ce=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabPane.name),l.normalizeProps({key:ce,[l.unref(i).tabPane.key||""]:ce,[l.unref(i).tabPane.tab||""]:ce}),null,16))),128))]),_:1},16)),l.createElementVNode("div",f_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).input.name),l.normalizeProps({[l.unref(i).input.modelValue]:x.value,["onUpdate:"+l.unref(i).input.modelValue]:Y[0]||(Y[0]=ce=>x.value=ce),class:"search-input",placeholder:"搜索图标, 双击选择",onKeydown:l.withKeys(R,["enter"])}),{suffix:l.withCtx(()=>[l.createVNode(he,{type:"primary",size:"small",icon:l.unref(i).icons.search,onClick:R},null,8,["icon"])]),_:1},16)),l.createElementVNode("div",u_,[Y[2]||(Y[2]=l.createTextVNode(" 图标颜色: ",-1)),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.colors,ce=>(l.openBlock(),l.createElementBlock("div",{key:ce,class:l.normalizeClass(["color-item",{active:ce===T.value}]),style:l.normalizeStyle({backgroundColor:ce}),onClick:N=>B(ce)},l.toDisplayString(ce?"":"无"),15,d_))),128)),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).input.name),l.normalizeProps({style:{width:"100px"},icon:l.unref(i).icons.search,[l.unref(i).input.modelValue||""]:T.value,onInput:Y[1]||(Y[1]=ce=>B(ce))}),null,16,["icon"]))])]),l.createElementVNode("div",h_,[l.createElementVNode("div",m_,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(b.value.records,ce=>(l.openBlock(),l.createElementBlock("div",{key:ce,class:l.normalizeClass(["icon-item",{active:ce===U.value}]),title:ce,onClick:N=>j(ce,!1),onDblclick:N=>j(ce,!0)},[l.createVNode(ae,{icon:T.value?`${ce}:${T.value}`:ce,class:"text-2xl"},null,8,["icon"])],42,p_))),128))]),l.createElementVNode("div",g_,[b.value.loading?(l.openBlock(),l.createBlock(K,{key:0,loading:b.value.loading,text:"加载中"},null,8,["loading"])):b.value.total==null||b.value.total==0?(l.openBlock(),l.createElementBlock("div",x_,[...Y[3]||(Y[3]=[l.createElementVNode("div",null,"暂无数据",-1)])])):b.value.total>b.value.start+b.value.limit?(l.openBlock(),l.createElementBlock("div",{key:2,onClick:z},[...Y[4]||(Y[4]=[l.createElementVNode("div",null,"加载更多",-1)])])):l.createCommentVNode("",!0)])]),l.createElementVNode("div",v_,[l.createVNode(he,{type:"primary",onClick:G},{default:l.withCtx(()=>[...Y[5]||(Y[5]=[l.createTextVNode("确定",-1)])]),_:1})])])])]),_:1},16))])):l.createCommentVNode("",!0)])}}}),tR="",__=l.defineComponent({name:"FsDictRadio",props:{dict:{},options:{type:Array},radioName:{},optionName:{type:String},optionProps:{type:Object,default(){return{}}},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{ui:r}=ue.useUi();e.radioName&&console.warn("参数radioName即将废弃,请改成optionName");const n=l.computed(()=>e.optionName??e.radioName??r.radio.name);let a=Tn(e,t,r.radioGroup.modelValue);const i=a.createComputedOptions();return{ui:r,computedRadioName:n,...a,computedOptions:i,onSelectedChange:o=>{t.emit("change",o),o&&o.target&&(o=o.target.value);const c=a.getDict();if(c&&c.dataMap&&c.dataMap[o]){const f=c.dataMap[o];t.emit("selected-change",f)}else t.emit("selected-change",null)}}}});function y_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.radioGroup.name),{onChange:e.onSelectedChange},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedOptions,s=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedRadioName),l.mergeProps({ref_for:!0,ref:"radioRef",key:e.getValue(s),[e.ui.radio.value||""]:e.getValue(s)},{ref_for:!0},e.optionProps),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(e.getLabel(s)),1)]),_:2},1040))),128))]),_:1},40,["onChange"])}const ku=nt(__,[["render",y_]]),k_=l.defineComponent({name:"FsDictSelect"}),bu=l.defineComponent({...k_,props:{dict:{},options:{},slots:{},renderLabel:{type:Function},transformDictData:{type:Function}},emits:["dict-change","selected-change","change"],setup(e,{expose:t,emit:r}){const n=e,a=r,i=l.ref(),{t:s}=jt(),o=l.computed(()=>n.placeholder||s("fs.component.select.placeholder")),{ui:c}=ue.useUi(),f=l.useAttrs(),d=Tn(n,{emit:a,attrs:f},c.select.modelValue),h=d.createComputedOptions(),m=l.ref();n.dict&&(m.value=c.select.fieldNames({value:n.dict.value,label:n.dict.label}));const g=v=>{a("change",v);const y=d.getDict();if(v&&Array.isArray(v)&&v.length>0){const w=[];for(const b of v)y&&y.dataMap&&y.dataMap[b]&&w.push(y.dataMap[b]);a("selected-change",w);return}if(y&&y.dataMap&&y.dataMap[v]){const w=y.dataMap[v];a("selected-change",w)}else a("selected-change",null)},p=l.useSlots();t({selectRef:i,computedPlaceholder:o,...d,computedOptions:h,onSelectedChange:g});const x=()=>{const{ui:v}=ue.useUi(),y=l.resolveDynamicComponent(v.select.name),w=v.select.modelValue;if(v.option.name==null){const U=h.value||[],T={[`onUpdate:${w}`]:G=>{this.$emit(`onUpdate:${w}`,G),g(G)},...f},j={...p,...n.slots};return l.createVNode(y,l.mergeProps({ref:"selectRef",placeholder:o.value,options:U},m.value,{renderLabel:n.renderLabel},T),j)}const b=[],R=l.resolveDynamicComponent(v.option.name),A=h.value||[];for(const U of A){const T=l.createVNode(R,l.mergeProps(U,{value:d.getValue(U),label:d.getLabel(U)}),{default:()=>[n.renderLabel?n.renderLabel(U):d.getLabel(U)]});b.push(T)}const k={default:()=>b,...p,...n.slots};return l.createVNode(y,l.mergeProps({ref:"selectRef",placeholder:o.value,onChange:g},f),k)};return(v,y)=>(l.openBlock(),l.createBlock(x))}}),rR="";function b_(e){if(e==null)return 0;typeof e!="string"&&(e=JSON.stringify(e));let t=0,r,n,a;if(e.length===0)return t;for(r=0,a=e.length;r<a;r++)n=e.charCodeAt(r),t=(t<<5)-t+n,t|=0;return Math.abs(t)}function C_(e){let t=[];return typeof e.modelValue=="string"&&e.multiple&&e.separator!=null&&e.separator!==""?t=e.modelValue.split(e.separator):e.modelValue instanceof Array?t=e.modelValue:t=[e.modelValue],t}const E_=l.defineComponent({name:"FsValuesFormat",props:{modelValue:{},dict:{},multiple:{default:!0},separator:{default:","},color:{},effect:{},autoColors:{type:Array},autoEffects:{type:Array},type:{default:"tag"},valueType:{type:String},defaultLabel:{},labelFormatter:{type:Function},itemRender:{type:Function},maxVisible:{type:Number},closable:{type:Boolean,default:!1}},emits:["click","dict-change","close","update:modelValue"],setup(e,t){const{ui:r}=ue.useUi(),n=r.tag.colors,a=["plain","light"],i=Tn(e,t),{getColor:s,getValue:o,removePropValue:c}=i;i.watchValue();function f(p,x){!x.effect&&p.effect&&(x.effect=p.effect);const v=r.tag.type,y=s(x);if(y!=null){if(typeof y!="string")return;c(x,"color"),x[v]=y;return}if(p.color==="auto"){const w=b_(o(x));o(x);const b=p.autoColors?p.autoColors:n;x[v]=b[w%b.length];const R=p.autoEffects?p.autoEffects:a;x.effect=R[Math.floor(w/b.length)%R.length]}else x[v]=p.color}const u=l.computed(()=>{var R,A;if(e.valueType==="object")return e.modelValue&&!Array.isArray(e.modelValue)?[e.modelValue]:e.modelValue;const p=i.getDict();if(e.modelValue==null||e.modelValue==="")return[];const x=C_(e);let v=[];const y=((R=e.dict)==null?void 0:R.value)||"value",w=((A=e.dict)==null?void 0:A.label)||"label";p?(v=p.getNodesFromDataMap(x),X.forEach(v,k=>{k[w]==null&&(k[w]=e.defaultLabel||k[y])})):(v=[],X.forEach(x,k=>{k instanceof Object?v.push(k):v.push({[y]:k,[w]:k})}));const b=[];return X.forEach(v,k=>{b.push(X.omit(k,"children"))}),X.forEach(b,k=>{f(e,k)}),b}),d=l.computed(()=>e.maxVisible==null||e.maxVisible<0?u.value:u.value.slice(0,e.maxVisible)),h=l.computed(()=>u.value.length-d.value.length);function m(p){t.emit("click",{item:p})}function g(p,x){t.emit("close",{item:x,index:p});const v=[];for(let y=0;y<u.value.length;y++)y!==p&&v.push(o(u.value[y]));t.emit("update:modelValue",v)}return{ui:r,...i,doClick:m,computedValueItems:u,visibleValueItems:d,hiddenValueCount:h,doClose:g}}}),nR="",S_={class:"fs-values-format"},T_={key:0},F_=["onClick"],A_={key:0};function D_(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("span",S_,[e.itemRender?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.visibleValueItems,c=>(l.openBlock(),l.createBlock(s,{key:e.getValue(c),"render-func":e.itemRender,scope:c},null,8,["render-func","scope"]))),128)),e.hiddenValueCount>0?(l.openBlock(),l.createElementBlock("span",T_,"+"+l.toDisplayString(e.hiddenValueCount),1)):l.createCommentVNode("",!0)],64)):e.type==="text"?(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.visibleValueItems,c=>(l.openBlock(),l.createElementBlock("span",{key:e.getValue(c),onClick:f=>e.doClick(c)},l.toDisplayString(e.getLabel(c)),9,F_))),128)),e.hiddenValueCount>0?(l.openBlock(),l.createElementBlock("span",A_,"+"+l.toDisplayString(e.hiddenValueCount),1)):l.createCommentVNode("",!0)],64)):(l.openBlock(),l.createElementBlock(l.Fragment,{key:2},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.visibleValueItems,(c,f)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.tag.name),l.mergeProps({key:e.getValue(c),class:"fs-tag",size:"small",closable:e.closable},{ref_for:!0},c,{icon:null,name:null,onClose:u=>e.doClose(f,c),onClick:u=>e.doClick(c)}),{default:l.withCtx(()=>[c.icon?(l.openBlock(),l.createBlock(o,{key:0,icon:c.icon,spin:c.iconSpin,class:"fs-tag-icon"},null,8,["icon","spin"])):l.createCommentVNode("",!0),l.createTextVNode(" "+l.toDisplayString(e.getLabel(c)),1)]),_:2},1040,["closable","onClose","onClick"]))),128)),e.hiddenValueCount>0?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.tag.name),{key:0,class:"fs-tag",size:"small",closable:!1},{default:l.withCtx(()=>[l.createTextVNode(" +"+l.toDisplayString(e.hiddenValueCount),1)]),_:1})):l.createCommentVNode("",!0)],64))])}const Cu=nt(E_,[["render",D_]]),R_=l.defineComponent({name:"FsDictCascaderFormat",props:{modelValue:{type:[String,Array],default:void 0,require:!0},separator:{type:String,default:",",require:!1},multiple:{type:Boolean,default:!1},dict:{type:Object,default:void 0,require:!1}},emits:["dict-change"],setup(e,t){var a;const r=Tn(e,t);(a=e.dict)!=null&&a.getNodesByValues&&r.watchValue();const n=l.computed(()=>e.multiple);return{...r,computedMultiple:n}},data(){return{}},computed:{labels(){return this.modelValue==null?[]:this.buildValueItem(this.modelValue)},multipleLabels(){if(this.modelValue==null)return[];const e=[];for(const t of this.modelValue)e.push(this.buildValueItem(t));return e}},methods:{getValueArr(e){if(e==null)if(this.multiple){e=[];for(const r of this.modelValue)for(const n of r)e.push(n)}else e=this.modelValue;if(e==null)return[];let t=null;return typeof e=="string"&&!this.multiple&&this.separator!=null&&this.separator!==""?t=e.split(this.separator):e instanceof Array?t=e:t=[e],t},buildValueItem(e){const t=this.getValueArr(e),r=this.getDict();if(r)return r.getNodesFromDataMap(t)}}}),O_={key:0},B_={key:0};function N_(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",null,[e.computedMultiple?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(e.multipleLabels,(s,o)=>(l.openBlock(),l.createElementBlock("div",{key:o},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(s,(c,f)=>(l.openBlock(),l.createElementBlock("span",{key:f},[f!==0?(l.openBlock(),l.createElementBlock("span",O_," / ")):l.createCommentVNode("",!0),l.createElementVNode("span",null,l.toDisplayString(e.getLabel(c)),1)]))),128))]))),128)):(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:1},l.renderList(e.labels,(s,o)=>(l.openBlock(),l.createElementBlock("span",{key:o},[o!==0?(l.openBlock(),l.createElementBlock("span",B_," / ")):l.createCommentVNode("",!0),l.createElementVNode("span",null,l.toDisplayString(e.getLabel(s)),1)]))),128))])}const Eu=nt(R_,[["render",N_]]),I_=l.defineComponent({name:"FsDictCascader",props:{dict:{},options:{type:Array},transformDictData:{type:Function,default:void 0},slots:{type:Object,default(){return{}}}},emits:["dict-change","selected-change","change"],setup(e,t){const r=l.ref(),n=Tn(e,t),{ui:a}=ue.useUi(),i=l.ref();e.dict&&(i.value=a.cascader.fieldNames({value:e.dict.value,label:e.dict.label,children:e.dict.children}));const s=n.createComputedOptions(),o=l.computed(()=>({...e.slots,...t.slots}));function c(f){if(t.emit("change",f),f){let u=[];const d=n.getDict();if(d&&d.dataMap){for(let h of f){const m=d.dataMap[h];m&&u.push(m)}t.emit("selected-change",u)}}else t.emit("selected-change",null)}return{ui:a,cascaderRef:r,...n,fieldNamesBinder:i,computedOptions:s,mergedSlots:o,onSelectChange:c}}});function P_(e,t,r,n,a,i){const s=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.cascader.name),l.mergeProps({ref:"cascaderRef",options:e.computedOptions},e.fieldNamesBinder,{onChange:e.onSelectChange}),l.createSlots({_:2},[l.renderList(e.mergedSlots,(o,c)=>({name:c,fn:l.withCtx(f=>[l.createVNode(s,{slots:o,scope:f},null,8,["slots","scope"])])}))]),1040,["options","onChange"])}const Su=nt(I_,[["render",P_]]),L_=l.defineComponent({name:"FsDictCheckbox",props:{dict:{},options:{type:Array,default:void 0,require:!1},optionName:{type:String},optionProps:{type:Object,default(){return{}}},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{ui:r}=ue.useUi();let n=Tn(e,t,r.checkboxGroup.modelValue);const a=n.createComputedOptions();return{ui:r,...n,computedOptions:a,onSelectedChange:s=>{if(t.emit("change",s),s){let o=[];const c=n.getDict();if(c&&c.dataMap){for(let f of s){const u=c.dataMap[f];u&&o.push(u)}t.emit("selected-change",o)}}else t.emit("selected-change",null)}}}});function M_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.checkboxGroup.name),{onChange:e.onSelectedChange},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedOptions,s=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.optionName||e.ui.checkbox.name),l.mergeProps({ref_for:!0,ref:"checkboxRef",key:e.getValue(s),[e.ui.checkbox.value||""]:e.getValue(s)},{ref_for:!0},e.optionProps),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(e.getLabel(s)),1)]),_:2},1040))),128))]),_:1},40,["onChange"])}const Tu=nt(L_,[["render",M_]]),V_=l.defineComponent({name:"FsDictSwitch",props:{dict:{type:Object},options:{},transformDictData:{type:Function,default:void 0}},emits:["dict-change"],setup(e,t){const{ui:r}=ue.useUi();let n=Tn(e,t,r.switch.modelValue);const a=n.createComputedOptions();return{ui:r,...n,computedOptions:a}},computed:{_active(){return this.computedOptions.length>0?this.computedOptions[0]:{}},_inActive(){return this.computedOptions.length>1?this.computedOptions[1]:{}},binding(){var t,r,n,a,i,s;const e=ue.uiContext.get();return{[e.switch.activeText]:this._active[((t=this.dict)==null?void 0:t.label)||"label"],[e.switch.inactiveText]:this._inActive[((r=this.dict)==null?void 0:r.label)||"label"],[e.switch.activeColor]:this._active[((n=this.dict)==null?void 0:n.color)||"color"],[e.switch.inactiveColor]:this._inActive[((a=this.dict)==null?void 0:a.color)||"color"],[e.switch.activeValue]:this._active[((i=this.dict)==null?void 0:i.value)||"value"],[e.switch.inactiveValue]:this._inActive[((s=this.dict)==null?void 0:s.value)||"value"]}}}});function U_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.switch.name),l.mergeProps({ref:"switchRef"},e.binding),null,16)}const Fu=nt(V_,[["render",U_]]),$_=l.defineComponent({name:"FsDateFormat",props:{modelValue:{required:!1},valueFormat:{type:String,default:void 0,required:!1},format:{type:String,default:"YYYY-MM-DD HH:mm:ss",required:!1}},data(){return{item:{}}},computed:{doFormat(){if(this.modelValue==null||this.modelValue==="")return"";let e=null;return this.valueFormat!=null?e=Lt(this.modelValue,this.valueFormat):e=Lt(this.modelValue),e.format(this.format)}},created(){},methods:{}});function W_(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",null,l.toDisplayString(e.doFormat),1)}const Au=nt($_,[["render",W_]]),H_=l.defineComponent({name:"FsDictTree",components:{},props:{dict:{},options:{type:Array},placeholder:{type:String},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{t:r}=jt(),{ui:n}=ue.useUi(),a=l.computed(()=>e.placeholder||r("fs.component.select.placeholder"));let i=Tn(e,t);const s=t.slots,o=i.createComputedOptions(),c=l.computed(()=>{const d=i.getDict();return n.treeSelect.buildOptionKeysNameBinding({label:d.label,value:d.value,children:d.children})}),f=d=>{if(t.emit("change",d),d){const h=i.getDict();if(h&&h.dataMap)if(d instanceof Array){let m=[];for(let g of d){const p=h.dataMap[g];p&&m.push(p)}t.emit("selected-change",m)}else t.emit("selected-change",h.dataMap[d])}else t.emit("selected-change",null)},u=l.ref();return{ui:n,computedBinding:c,computedPlaceholder:a,...i,computedOptions:o,onSelectedChange:f,slots:s,treeRef:u}}});function j_(e,t,r,n,a,i){const s=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.treeSelect.name),l.mergeProps({ref:"treeRef",[e.ui.treeSelect.options||""]:e.computedOptions,placeholder:e.computedPlaceholder},e.computedBinding,{onChange:e.onSelectedChange}),l.createSlots({_:2},[l.renderList(e.slots,(o,c)=>({name:c,fn:l.withCtx(f=>[l.createVNode(s,{slots:o,scope:f},null,8,["slots","scope"])])}))]),1040,["placeholder","onChange"])}const Du=nt(H_,[["render",j_]]),z_={class:"fs-table-select"},G_={key:0,class:"fs-table-select-current"},Ru=l.defineComponent({__name:"fs-table-select",props:{modelValue:{},createCrudOptions:{},crudOptionsOverride:{default:void 0},beforeOpen:{},dict:{},select:{default:void 0},showSelect:{type:Boolean,default:!0},dialog:{default:void 0},showCurrent:{type:Boolean,default:!0},valuesFormat:{default:void 0},height:{default:void 0},multiple:{type:Boolean},crossPage:{type:Boolean,default:!0},rowKey:{default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},valueType:{default:"value"},viewMode:{type:Boolean,default:!1},emitOnViewModel:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!0}},emits:["change","update:modelValue","selected-change","dialog-close","dialog-closed","close","open"],setup(e,{expose:t,emit:r}){const n=e,a=l.useSlots(),i=r,{ui:s}=ue.useUi(),{t:o}=jt(),c=l.ref(),f=l.ref(),u=l.ref(!1);function d(){u.value=!1,i("close",z())}function h(){u.value=!0,i("open",z())}function m(){d()}const{crudRef:g,crudBinding:p,crudExpose:x}=Xf();function v(W){W==null||Array.isArray(W)&&W.length==0?k.value=[]:(n.multiple?k.value=W||[]:k.value=[W],n.valueType==="object"&&(k.value=k.value.map(Y=>n.dict.getValue(Y))))}const y=l.ref(),w=l.computed(()=>({wrapper:{}})),b=async(W={})=>{var he,K;if(n.disabled||n.readonly||(he=n.select)!=null&&he.disabled||(K=n.select)!=null&&K.readonly)return;if(n.dict==null)throw new Error("必须配置dict,且必须配置dict.getNodesByValues");const Y=await Gf({crudBinding:p,crudRef:g,createCrudOptions:n.createCrudOptions,crudOptionsOverride:j(),context:{t:o,ui:s,...W==null?void 0:W.context},crudExpose:x});v(n.modelValue),n.beforeOpen&&await n.beforeOpen({crudOptions:W==null?void 0:W.crudOptions,...z()}),W&&Y.appendCrudOptions(W==null?void 0:W.crudOptions);const ae=G({wrapper:{title:n.viewMode?o("fs.extends.tableSelect.view"):o("fs.extends.tableSelect.select"),width:"80%",draggable:!0,is:s.dialog.name,footer:!1,...s.formWrapper.buildInitBind(s.dialog.name),buttons:{reset:{show:!1},cancel:{text:o("fs.extends.tableSelect.cancel"),async click(){y.value.close()}},ok:{type:"primary",text:o("fs.extends.tableSelect.ok"),async click(){await B()}}}}},{wrapper:n.dialog});return y.value.open(ae),await l.nextTick(),await x.doRefresh(),Y},R=l.computed(()=>({maxVisible:3,...n.valuesFormat})),A=l.computed(()=>{const W=`onUpdate:${s.select.modelValue}`;let Y=n.modelValue;return n.valueType==="object"&&n.modelValue&&(n.multiple?Y=n.modelValue.map(ae=>n.dict.getValue(ae)):Y=n.dict.getValue(n.modelValue)),{[s.select.modelValue]:Y,[W]:ae=>{i("update:modelValue",ae)},[s.select.clearable]:!0,...s.select.buildMultiBinding(n.multiple),show:!1,...n.select}});l.watch(()=>n.modelValue,async W=>{W!==k.value&&(v(W),await l.nextTick(),await n.dict.appendByValues(k.value))});const k=l.ref([]);function U(){return n.rowKey||p.value.table.rowKey||"id"}const T=l.ref(!1);function j(){var he,K;let W=s.table;((K=(he=p.value)==null?void 0:he.table)==null?void 0:K.tableVersion)==="v2"&&(W=s.tableV2);let Y=W.buildSelectionCrudOptions({crossPage:n.crossPage,selectOnClickRow:!0,getRowKey:U,getPageData(){return p.value.data},useCompute:Br,multiple:n.multiple,selectedRowKeys:k,onSelectedKeysChanged:async ce=>{k.value=[...ce],await l.nextTick(),await n.dict.appendByValues(k.value)}});return G({table:{async onRefreshed(){if(W.setSelectedRows){T.value=!0,await l.nextTick(),await l.nextTick();const ce=x.getBaseTableRef();W.setSelectedRows({getRowKey:U,multiple:n.multiple,tableRef:ce,selectedRowKeys:k}),T.value=!1}}}},Y,n.crudOptionsOverride)}const{merge:G}=Je();async function B(){var he;if(n.dict.loading)return;let W=null,Y=null;((he=k.value)==null?void 0:he.length)>0&&(W=[...k.value],Y=W.map(K=>n.dict.getDictMap()[K]),n.valueType==="object"&&(W=Y),n.multiple!==!0&&W.length>0&&(W=W[0])),(!n.viewMode||n.emitOnViewModel)&&(i("update:modelValue",W),i("change",W),i("selected-change",Y));let ae={value:W,rows:Y,selectedRowKeys:k.value};i("dialog-close",ae),await l.nextTick(),await y.value.close(),i("dialog-closed",ae)}const z=()=>({opened:u,open:b,selectedRowKeys:k,dictSelectRef:c,valuesFormatRef:f,crudRef:g,crudBinding:p,crudExpose:x,close:m}),te=l.ref(z());return t(te.value),(W,Y)=>{const ae=l.resolveComponent("fs-dict-select"),he=l.resolveComponent("fs-values-format"),K=l.resolveComponent("fs-crud"),ce=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createElementBlock("div",z_,[!(a!=null&&a.default)&&!e.viewMode?(l.openBlock(),l.createBlock(ae,l.mergeProps({key:0,ref_key:"dictSelectRef",ref:c},A.value,{open:!1,disabled:e.disabled,readonly:e.readonly,dict:e.dict,onClick:b}),null,16,["disabled","readonly","dict"])):l.createCommentVNode("",!0),l.renderSlot(W.$slots,"default",l.normalizeProps(l.guardReactiveProps(te.value))),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).formItem.skipValidationWrapper),null,{default:l.withCtx(()=>[l.createVNode(ce,l.mergeProps({ref_key:"formWrapperRef",ref:y},w.value,{onClosed:d,onOpen:h}),{"form-body-top":l.withCtx(()=>[u.value||e.destroyOnClose===!1?(l.openBlock(),l.createElementBlock("div",{key:0,style:l.normalizeStyle({width:"100%",height:e.height||"70vh"})},[l.createVNode(K,l.mergeProps({ref_key:"crudRef",ref:g},l.unref(p)),{"header-top":l.withCtx(()=>[e.showCurrent!==!1&&!e.viewMode?(l.openBlock(),l.createElementBlock("div",G_,[l.createTextVNode(l.toDisplayString(l.unref(o)("fs.extends.tableSelect.current"))+": ",1),l.createVNode(he,l.mergeProps({ref_key:"valuesFormatRef",ref:f,modelValue:k.value,"onUpdate:modelValue":Y[0]||(Y[0]=N=>k.value=N),dict:e.dict,closable:!0},R.value),null,16,["modelValue","dict"])])):l.createCommentVNode("",!0)]),_:1},16)],4)):l.createCommentVNode("",!0)]),_:1},16)]),_:1}))])}}}),aR="",X_={class:"fs-editable-select"},K_={class:"select"},Y_=l.defineComponent({name:"FsEditableSelect"}),Ou=l.defineComponent({...Y_,props:{modelValue:{},dict:{},tableSelect:{},dictSelect:{},button:{}},emits:["refresh","update:modelValue"],setup(e,{emit:t}){const r=e,n=t;function a(){var s;n("refresh"),(s=r.dict)==null||s.reloadDict()}function i(s){n("update:modelValue",s)}return(s,o)=>{const c=l.resolveComponent("fs-dict-select"),f=l.resolveComponent("fs-button"),u=l.resolveComponent("fs-table-select");return l.openBlock(),l.createElementBlock("div",X_,[l.createElementVNode("div",K_,[l.createVNode(c,l.mergeProps({value:e.modelValue,dict:e.dict},e.dictSelect,{"onUpdate:value":i}),null,16,["value","dict"])]),l.createVNode(u,l.mergeProps({class:"table-select","model-value":e.modelValue,dict:e.dict,"destroy-on-close":!1,height:"400px"},e.tableSelect,{"onUpdate:modelValue":i,onDialogClosed:a}),{default:l.withCtx(d=>[l.createVNode(f,l.mergeProps({type:"primary",icon:"ant-design:edit-outlined"},e.button,{onClick:d.open}),null,16,["onClick"])]),_:1},16,["model-value","dict"])])}}}),iR="",Bu=Object.freeze(Object.defineProperty({__proto__:null,FsActionbar:B0,FsBox:h0,FsButton:o0,FsCell:xl,FsColumnsFilterLayoutDefault:pu,FsComponentRender:ol,FsContainer:n0,FsCrud:k0,FsDateFormat:Au,FsDictCascader:Su,FsDictCascaderFormat:Eu,FsDictCheckbox:Tu,FsDictRadio:ku,FsDictSelect:bu,FsDictSwitch:Fu,FsDictTree:Du,FsEditable:O0,FsEditableCell:vl,FsEditableSelect:Ou,FsForm:g0,FsFormHelper:w0,FsFormItem:x0,FsFormItemCol:v0,FsFormProvider:_0,FsFormWrapper:$a,FsIcon:l0,FsIconSelector:yu,FsIconSvg:f0,FsIconify:c0,FsLabel:u0,FsLayoutCard:i0,FsLayoutDefault:a0,FsLoading:d0,FsPage:Af,FsRender:ll,FsRowHandle:cl,FsSearch:xu,FsSearchLayoutDefault:wu,FsSearchV1:vu,FsSlotRender:p0,FsTable:R0,FsTableColumnsFixedController:Ml,FsTableSelect:Ru,FsTabsFilter:_u,FsToolbar:N0,FsValuesFormat:Cu,fsColumnsFilterNestList:Vl},Symbol.toStringTag,{value:"Module"})),{setDictRequest:q_}=e0(),Nu={install(e,t={}){t.ui&&ue.uiContext.set(t.ui);const{merge:r}=Je();t.commonOptions&&(vi.commonOptions=t.commonOptions),t.dictRequest&&q_(t.dictRequest),t.i18n&&Ds.setVueI18n(t.i18n);const n=t.customComponents||{};for(const a in Bu){const i=n[a]||Bu[a];e.component(a,i)}$a._context=e._context,Ma.install(),e.config.globalProperties.$fsui=ue.uiContext.get(),r(r0.logger,t.logger),J_(t.logger)}};function J_(e){var t;((t=e==null?void 0:e.off)==null?void 0:t.tableColumns)!==!1&&console.warn(`[fast-crud] crudBinding.value.table.columns / toolbar.columnsFilter.originalColumns 由array改成map. 请改成通过key读取,你可以全局代码搜索【value.table.columns / columnsFilter.originalColumns】来检查是否有使用它们。
[通过 app.use(FastCrud,{logger:{off:{tableColumns:false}}}) 可关闭此警告] `)}function Ul(e){const t=navigator.userAgent;return e==="ie"?t.indexOf("compatible")>-1&&t.indexOf("MSIE")>-1?(new RegExp("MSIE (\\d+\\.\\d+);").test(t),parseFloat(RegExp.$1)):!1:t.indexOf(e)>-1}const Z_={_isIE11(){let e=0;const t=/MSIE (\d+\.\d+);/.test(navigator.userAgent),r=!!navigator.userAgent.match(/Trident\/7.0/),n=navigator.userAgent.indexOf("rv:11.0");return t&&(e=Number(RegExp.$1)),navigator.appVersion.indexOf("MSIE 10")!==-1&&(e=10),r&&n!==-1&&(e=11),e===11},_isEdge(){return/Edge/.test(navigator.userAgent)},_getDownloadUrl(e){const t="\uFEFF";if(window.Blob&&window.URL&&window.URL.createObjectURL){const r=new Blob([t+e],{type:"text/csv"});return URL.createObjectURL(r)}else return"data:attachment/csv;charset=utf-8,"+t+encodeURIComponent(e)},download(e,t){if(Ul("ie")&&Ul("ie")<10){const r=window.top.open("about:blank","_blank");r.document.charset="utf-8",r.document.write(t),r.document.close(),r.document.execCommand("SaveAs",e+".csv"),r.close()}else if(Ul("ie")===10||this._isIE11()||this._isEdge()){const r="\uFEFF",n=new Blob([r+t],{type:"text/csv"});navigator.msSaveBlob(n,e+".csv")}else{const r=document.createElement("a");r.download=e+".csv",r.href=this._getDownloadUrl(t),document.body.appendChild(r),r.click(),document.body.removeChild(r)}}},Q_=`\r
`,$l=(e,t,{separator:r,quoted:n})=>{const a=t.map(i=>n?(i=typeof i=="string"?i.replace(/"/g,'"'):i,`"${i}"`):i);e.push(a.join(r))},ey={separator:",",quoted:!1};function ty(e,t,r,n=!1){r=Object.assign({},ey,r);let a;const i=[],s=[];return e?(a=e.map(o=>typeof o=="string"?o:(n||s.push(typeof o.label<"u"?o.label:o.prop),o.prop)),s.length>0&&$l(i,s,r)):(a=[],t.forEach(o=>{Array.isArray(o)||(a=a.concat(Object.keys(o)))}),a.length>0&&(a=a.filter((o,c,f)=>f.indexOf(o)===c),n||$l(i,a,r))),Array.isArray(t)&&t.forEach(o=>{Array.isArray(o)||(o=a.map(c=>typeof o[c]<"u"?o[c]:"")),$l(i,o,r)}),i.join(Q_)}/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */(function(e){if(e.URL=e.URL||e.webkitURL,e.Blob&&e.URL)try{new Blob;return}catch{}var t=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder||function(r){var n=function(b){return Object.prototype.toString.call(b).match(/^\[object\s(.*)\]$/)[1]},a=function(){this.data=[]},i=function(R,A,k){this.data=R,this.size=R.length,this.type=A,this.encoding=k},s=a.prototype,o=i.prototype,c=r.FileReaderSync,f=function(b){this.code=this[this.name=b]},u="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),d=u.length,h=r.URL||r.webkitURL||r,m=h.createObjectURL,g=h.revokeObjectURL,p=h,x=r.btoa,v=r.atob,y=r.ArrayBuffer,w=r.Uint8Array;for(i.fake=o.fake=!0;d--;)f.prototype[u[d]]=d+1;return h.createObjectURL||(p=r.URL={}),p.createObjectURL=function(b){var R=b.type,A;if(R===null&&(R="application/octet-stream"),b instanceof i)return A="data:"+R,b.encoding==="base64"?A+";base64,"+b.data:b.encoding==="URI"?A+","+decodeURIComponent(b.data):x?A+";base64,"+x(b.data):A+","+encodeURIComponent(b.data);if(m)return m.call(h,b)},p.revokeObjectURL=function(b){b.substring(0,5)!=="data:"&&g&&g.call(h,b)},s.append=function(b){var R=this.data;if(w&&(b instanceof y||b instanceof w)){for(var A="",k=new w(b),U=0,T=k.length;U<T;U++)A+=String.fromCharCode(k[U]);R.push(A)}else if(n(b)==="Blob"||n(b)==="File")if(c){var j=new c;R.push(j.readAsBinaryString(b))}else throw new f("NOT_READABLE_ERR");else b instanceof i?b.encoding==="base64"&&v?R.push(v(b.data)):b.encoding==="URI"?R.push(decodeURIComponent(b.data)):b.encoding==="raw"&&R.push(b.data):(typeof b!="string"&&(b+=""),R.push(unescape(encodeURIComponent(b))))},s.getBlob=function(b){return arguments.length||(b=null),new i(this.data.join(""),b,"raw")},s.toString=function(){return"[object BlobBuilder]"},o.slice=function(b,R,A){var k=arguments.length;return k<3&&(A=null),new i(this.data.slice(b,k>1?R:this.data.length),A,this.encoding)},o.toString=function(){return"[object Blob]"},o.close=function(){this.size=this.data.length=0},a}(e);e.Blob=function(n,a){var i=a&&a.type||"",s=new t;if(n)for(var o=0,c=n.length;o<c;o++)s.append(n[o]);return s.getBlob(i)}})(typeof self<"u"&&self||typeof window<"u"&&window||globalThis.content||globalThis);var Iu={exports:{}};(function(e,t){(function(r,n){n()})(En,function(){function r(f,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(f.type)?new Blob(["\uFEFF",f],{type:f.type}):f}function n(f,u,d){var h=new XMLHttpRequest;h.open("GET",f),h.responseType="blob",h.onload=function(){c(h.response,u,d)},h.onerror=function(){console.error("could not download file")},h.send()}function a(f){var u=new XMLHttpRequest;u.open("HEAD",f,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function i(f){try{f.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),f.dispatchEvent(u)}}var s=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof En=="object"&&En.global===En?En:void 0,o=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),c=s.saveAs||(typeof window!="object"||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(f,u,d){var h=s.URL||s.webkitURL,m=document.createElement("a");u=u||f.name||"download",m.download=u,m.rel="noopener",typeof f=="string"?(m.href=f,m.origin===location.origin?i(m):a(m.href)?n(f,u,d):i(m,m.target="_blank")):(m.href=h.createObjectURL(f),setTimeout(function(){h.revokeObjectURL(m.href)},4e4),setTimeout(function(){i(m)},0))}:"msSaveOrOpenBlob"in navigator?function(f,u,d){if(u=u||f.name||"download",typeof f!="string")navigator.msSaveOrOpenBlob(r(f,d),u);else if(a(f))n(f,u,d);else{var h=document.createElement("a");h.href=f,h.target="_blank",setTimeout(function(){i(h)})}}:function(f,u,d,h){if(h=h||open("","_blank"),h&&(h.document.title=h.document.body.innerText="downloading..."),typeof f=="string")return n(f,u,d);var m=f.type==="application/octet-stream",g=/constructor/i.test(s.HTMLElement)||s.safari,p=/CriOS\/[\d]+/.test(navigator.userAgent);if((p||m&&g||o)&&typeof FileReader<"u"){var x=new FileReader;x.onloadend=function(){var w=x.result;w=p?w:w.replace(/^data:[^;]*;/,"data:attachment/file;"),h?h.location.href=w:location=w,h=null},x.readAsDataURL(f)}else{var v=s.URL||s.webkitURL,y=v.createObjectURL(f);h?h.location=y:location.href=y,h=null,setTimeout(function(){v.revokeObjectURL(y)},4e4)}});s.saveAs=c.saveAs=c,e.exports=c})})(Iu);var ry=Iu.exports;const Pu=wi(ry);/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var no={};no.version="0.18.5";var Lu=1252,ny=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],Wl={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},Hl=function(e){ny.indexOf(e)!=-1&&(Lu=Wl[0]=e)};function ay(){Hl(1252)}var Xr=function(e){Hl(e)};function jl(){Xr(1200),ay()}function Mu(e){for(var t=[],r=0,n=e.length;r<n;++r)t[r]=e.charCodeAt(r);return t}function iy(e){for(var t=[],r=0;r<e.length>>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r)+(e.charCodeAt(2*r+1)<<8));return t.join("")}function Vu(e){for(var t=[],r=0;r<e.length>>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r+1)+(e.charCodeAt(2*r)<<8));return t.join("")}var Ui=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1);return t==255&&r==254?iy(e.slice(2)):t==254&&r==255?Vu(e.slice(2)):t==65279?e.slice(1):e},ao=function(t){return String.fromCharCode(t)},Uu=function(t){return String.fromCharCode(t)},Xn,Kn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function $i(e){for(var t="",r=0,n=0,a=0,i=0,s=0,o=0,c=0,f=0;f<e.length;)r=e.charCodeAt(f++),i=r>>2,n=e.charCodeAt(f++),s=(r&3)<<4|n>>4,a=e.charCodeAt(f++),o=(n&15)<<2|a>>6,c=a&63,isNaN(n)?o=c=64:isNaN(a)&&(c=64),t+=Kn.charAt(i)+Kn.charAt(s)+Kn.charAt(o)+Kn.charAt(c);return t}function br(e){var t="",r=0,n=0,a=0,i=0,s=0,o=0,c=0;e=e.replace(/[^\w\+\/\=]/g,"");for(var f=0;f<e.length;)i=Kn.indexOf(e.charAt(f++)),s=Kn.indexOf(e.charAt(f++)),r=i<<2|s>>4,t+=String.fromCharCode(r),o=Kn.indexOf(e.charAt(f++)),n=(s&15)<<4|o>>2,o!==64&&(t+=String.fromCharCode(n)),c=Kn.indexOf(e.charAt(f++)),a=(o&3)<<6|c,c!==64&&(t+=String.fromCharCode(a));return t}var je=function(){return typeof Buffer<"u"&&typeof process<"u"&&typeof process.versions<"u"&&!!process.versions.node}(),Rn=function(){if(typeof Buffer<"u"){var e=!Buffer.from;if(!e)try{Buffer.from("foo","utf8")}catch{e=!0}return e?function(t,r){return r?new Buffer(t,r):new Buffer(t)}:Buffer.from.bind(Buffer)}return function(){}}();function Yn(e){return je?Buffer.alloc?Buffer.alloc(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}function $u(e){return je?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}var Cr=function(t){return je?Rn(t,"binary"):t.split("").map(function(r){return r.charCodeAt(0)&255})};function io(e){if(typeof ArrayBuffer>"u")return Cr(e);for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!=e.length;++n)r[n]=e.charCodeAt(n)&255;return t}function qn(e){if(Array.isArray(e))return e.map(function(n){return String.fromCharCode(n)}).join("");for(var t=[],r=0;r<e.length;++r)t[r]=String.fromCharCode(e[r]);return t.join("")}function sy(e){if(typeof Uint8Array>"u")throw new Error("Unsupported");return new Uint8Array(e)}function zl(e){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(e instanceof ArrayBuffer)return zl(new Uint8Array(e));for(var t=new Array(e.length),r=0;r<e.length;++r)t[r]=e[r];return t}var Mt=je?function(e){return Buffer.concat(e.map(function(t){return Buffer.isBuffer(t)?t:Rn(t)}))}:function(e){if(typeof Uint8Array<"u"){var t=0,r=0;for(t=0;t<e.length;++t)r+=e[t].length;var n=new Uint8Array(r),a=0;for(t=0,r=0;t<e.length;r+=a,++t)if(a=e[t].length,e[t]instanceof Uint8Array)n.set(e[t],r);else{if(typeof e[t]=="string")throw"wtf";n.set(new Uint8Array(e[t]),r)}return n}return[].concat.apply([],e.map(function(i){return Array.isArray(i)?i:[].slice.call(i)}))};function oy(e){for(var t=[],r=0,n=e.length+250,a=Yn(e.length+255),i=0;i<e.length;++i){var s=e.charCodeAt(i);if(s<128)a[r++]=s;else if(s<2048)a[r++]=192|s>>6&31,a[r++]=128|s&63;else if(s>=55296&&s<57344){s=(s&1023)+64;var o=e.charCodeAt(++i)&1023;a[r++]=240|s>>8&7,a[r++]=128|s>>2&63,a[r++]=128|o>>6&15|(s&3)<<4,a[r++]=128|o&63}else a[r++]=224|s>>12&15,a[r++]=128|s>>6&63,a[r++]=128|s&63;r>n&&(t.push(a.slice(0,r)),r=0,a=Yn(65535),n=65530)}return t.push(a.slice(0,r)),Mt(t)}var or=/\u0000/g,Wi=/[\u0001-\u0006]/g;function Ya(e){for(var t="",r=e.length-1;r>=0;)t+=e.charAt(r--);return t}function Kr(e,t){var r=""+e;return r.length>=t?r:yt("0",t-r.length)+r}function Gl(e,t){var r=""+e;return r.length>=t?r:yt(" ",t-r.length)+r}function so(e,t){var r=""+e;return r.length>=t?r:r+yt(" ",t-r.length)}function ly(e,t){var r=""+Math.round(e);return r.length>=t?r:yt("0",t-r.length)+r}function cy(e,t){var r=""+e;return r.length>=t?r:yt("0",t-r.length)+r}var Wu=Math.pow(2,32);function qa(e,t){if(e>Wu||e<-Wu)return ly(e,t);var r=Math.round(e);return cy(r,t)}function oo(e,t){return t=t||0,e.length>=7+t&&(e.charCodeAt(t)|32)===103&&(e.charCodeAt(t+1)|32)===101&&(e.charCodeAt(t+2)|32)===110&&(e.charCodeAt(t+3)|32)===101&&(e.charCodeAt(t+4)|32)===114&&(e.charCodeAt(t+5)|32)===97&&(e.charCodeAt(t+6)|32)===108}var Hu=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],Xl=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function fy(e){return e||(e={}),e[0]="General",e[1]="0",e[2]="0.00",e[3]="#,##0",e[4]="#,##0.00",e[9]="0%",e[10]="0.00%",e[11]="0.00E+00",e[12]="# ?/?",e[13]="# ??/??",e[14]="m/d/yy",e[15]="d-mmm-yy",e[16]="d-mmm",e[17]="mmm-yy",e[18]="h:mm AM/PM",e[19]="h:mm:ss AM/PM",e[20]="h:mm",e[21]="h:mm:ss",e[22]="m/d/yy h:mm",e[37]="#,##0 ;(#,##0)",e[38]="#,##0 ;[Red](#,##0)",e[39]="#,##0.00;(#,##0.00)",e[40]="#,##0.00;[Red](#,##0.00)",e[45]="mm:ss",e[46]="[h]:mm:ss",e[47]="mmss.0",e[48]="##0.0E+0",e[49]="@",e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',e}var Oe={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "'},ju={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},uy={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function lo(e,t,r){for(var n=e<0?-1:1,a=e*n,i=0,s=1,o=0,c=1,f=0,u=0,d=Math.floor(a);f<t&&(d=Math.floor(a),o=d*s+i,u=d*f+c,!(a-d<5e-8));)a=1/(a-d),i=s,s=o,c=f,f=u;if(u>t&&(f>t?(u=c,o=i):(u=f,o=s)),!r)return[0,n*o,u];var h=Math.floor(n*o/u);return[h,n*o-h*u,u]}function Jn(e,t,r){if(e>2958465||e<0)return null;var n=e|0,a=Math.floor(86400*(e-n)),i=0,s=[],o={D:n,T:a,u:86400*(e-n)-a,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(o.u)<1e-6&&(o.u=0),t&&t.date1904&&(n+=1462),o.u>.9999&&(o.u=0,++a==86400&&(o.T=a=0,++n,++o.D)),n===60)s=r?[1317,10,29]:[1900,2,29],i=3;else if(n===0)s=r?[1317,8,29]:[1900,1,0],i=6;else{n>60&&--n;var c=new Date(1900,0,1);c.setDate(c.getDate()+n-1),s=[c.getFullYear(),c.getMonth()+1,c.getDate()],i=c.getDay(),n<60&&(i=(i+6)%7),r&&(i=xy(c,s))}return o.y=s[0],o.m=s[1],o.d=s[2],o.S=a%60,a=Math.floor(a/60),o.M=a%60,a=Math.floor(a/60),o.H=a,o.q=i,o}var zu=new Date(1899,11,31,0,0,0),dy=zu.getTime(),hy=new Date(1900,2,1,0,0,0);function Gu(e,t){var r=e.getTime();return t?r-=1461*24*60*60*1e3:e>=hy&&(r+=24*60*60*1e3),(r-(dy+(e.getTimezoneOffset()-zu.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function Kl(e){return e.indexOf(".")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function my(e){return e.indexOf("E")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function py(e){var t=e<0?12:11,r=Kl(e.toFixed(12));return r.length<=t||(r=e.toPrecision(10),r.length<=t)?r:e.toExponential(5)}function gy(e){var t=Kl(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function Hi(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),r;return t>=-4&&t<=-1?r=e.toPrecision(10+t):Math.abs(t)<=9?r=py(e):t===10?r=e.toFixed(10).substr(0,12):r=gy(e),Kl(my(r.toUpperCase()))}function ha(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):Hi(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return Er(14,Gu(e,t&&t.date1904),t)}throw new Error("unsupported value in General format: "+e)}function xy(e,t){t[0]-=581;var r=e.getDay();return e<60&&(r=(r+6)%7),r}function vy(e,t,r,n){var a="",i=0,s=0,o=r.y,c,f=0;switch(e){case 98:o=r.y+543;case 121:switch(t.length){case 1:case 2:c=o%100,f=2;break;default:c=o%1e4,f=4;break}break;case 109:switch(t.length){case 1:case 2:c=r.m,f=t.length;break;case 3:return Xl[r.m-1][1];case 5:return Xl[r.m-1][0];default:return Xl[r.m-1][2]}break;case 100:switch(t.length){case 1:case 2:c=r.d,f=t.length;break;case 3:return Hu[r.q][0];default:return Hu[r.q][1]}break;case 104:switch(t.length){case 1:case 2:c=1+(r.H+11)%12,f=t.length;break;default:throw"bad hour format: "+t}break;case 72:switch(t.length){case 1:case 2:c=r.H,f=t.length;break;default:throw"bad hour format: "+t}break;case 77:switch(t.length){case 1:case 2:c=r.M,f=t.length;break;default:throw"bad minute format: "+t}break;case 115:if(t!="s"&&t!="ss"&&t!=".0"&&t!=".00"&&t!=".000")throw"bad second format: "+t;return r.u===0&&(t=="s"||t=="ss")?Kr(r.S,t.length):(n>=2?s=n===3?1e3:100:s=n===1?10:1,i=Math.round(s*(r.S+r.u)),i>=60*s&&(i=0),t==="s"?i===0?"0":""+i/s:(a=Kr(i,2+n),t==="ss"?a.substr(0,2):"."+a.substr(2,t.length-1)));case 90:switch(t){case"[h]":case"[hh]":c=r.D*24+r.H;break;case"[m]":case"[mm]":c=(r.D*24+r.H)*60+r.M;break;case"[s]":case"[ss]":c=((r.D*24+r.H)*60+r.M)*60+Math.round(r.S+r.u);break;default:throw"bad abstime format: "+t}f=t.length===3?1:2;break;case 101:c=o,f=1;break}var u=f>0?Kr(c,f):"";return u}function Zn(e){var t=3;if(e.length<=t)return e;for(var r=e.length%t,n=e.substr(0,r);r!=e.length;r+=t)n+=(n.length>0?",":"")+e.substr(r,t);return n}var Xu=/%/g;function wy(e,t,r){var n=t.replace(Xu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function _y(e,t,r){for(var n=t.length-1;t.charCodeAt(n-1)===44;)--n;return On(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}function Ku(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return"0.0E+0";if(t<0)return"-"+Ku(e,-t);var a=e.indexOf(".");a===-1&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a),r.indexOf("e")===-1){var s=Math.floor(Math.log(t)*Math.LOG10E);for(r.indexOf(".")===-1?r=r.charAt(0)+"."+r.substr(1)+"E+"+(s-r.length+i):r+="E+"+(s-i);r.substr(0,2)==="0.";)r=r.charAt(0)+r.substr(2,a)+"."+r.substr(2+a),r=r.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(o,c,f,u){return c+f+u.substr(0,(a+i)%a)+"."+u.substr(i)+"E"})}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}var Yu=/# (\?+)( ?)\/( ?)(\d+)/;function yy(e,t,r){var n=parseInt(e[4],10),a=Math.round(t*n),i=Math.floor(a/n),s=a-i*n,o=n;return r+(i===0?"":""+i)+" "+(s===0?yt(" ",e[1].length+1+e[4].length):Gl(s,e[1].length)+e[2]+"/"+e[3]+Kr(o,e[4].length))}function ky(e,t,r){return r+(t===0?"":""+t)+yt(" ",e[1].length+2+e[4].length)}var qu=/^#*0*\.([0#]+)/,Ju=/\).*[0#]/,Zu=/\(###\) ###\\?-####/;function lr(e){for(var t="",r,n=0;n!=e.length;++n)switch(r=e.charCodeAt(n)){case 35:break;case 63:t+=" ";break;case 48:t+="0";break;default:t+=String.fromCharCode(r)}return t}function Qu(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r}function ed(e,t){var r=e-Math.floor(e),n=Math.pow(10,t);return t<(""+Math.round(r*n)).length?0:Math.round(r*n)}function by(e,t){return t<(""+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}function Cy(e){return e<2147483647&&e>-2147483648?""+(e>=0?e|0:e-1|0):""+Math.floor(e)}function Ir(e,t,r){if(e.charCodeAt(0)===40&&!t.match(Ju)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?Ir("n",n,r):"("+Ir("n",n,-r)+")"}if(t.charCodeAt(t.length-1)===44)return _y(e,t,r);if(t.indexOf("%")!==-1)return wy(e,t,r);if(t.indexOf("E")!==-1)return Ku(t,r);if(t.charCodeAt(0)===36)return"$"+Ir(e,t.substr(t.charAt(1)==" "?2:1),r);var a,i,s,o,c=Math.abs(r),f=r<0?"-":"";if(t.match(/^00+$/))return f+qa(c,t.length);if(t.match(/^[#?]+$/))return a=qa(r,0),a==="0"&&(a=""),a.length>t.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(Yu))return yy(i,c,f);if(t.match(/^#+0+$/))return f+qa(c,t.length-t.indexOf("0"));if(i=t.match(qu))return a=Qu(r,i[1].length).replace(/^([^\.]+)$/,"$1."+lr(i[1])).replace(/\.$/,"."+lr(i[1])).replace(/\.(\d*)$/,function(g,p){return"."+p+yt("0",lr(i[1]).length-p.length)}),t.indexOf("0.")!==-1?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return f+Qu(c,i[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return f+Zn(qa(c,0));if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+Ir(e,t,-r):Zn(""+(Math.floor(r)+by(r,i[1].length)))+"."+Kr(ed(r,i[1].length),i[1].length);if(i=t.match(/^#,#*,#0/))return Ir(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=Ya(Ir(e,t.replace(/[\\-]/g,""),r)),s=0,Ya(Ya(t.replace(/\\/g,"")).replace(/[0#]/g,function(g){return s<a.length?a.charAt(s++):g==="0"?"0":""}));if(t.match(Zu))return a=Ir(e,"##########",r),"("+a.substr(0,3)+") "+a.substr(3,3)+"-"+a.substr(6);var u="";if(i=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(i[4].length,7),o=lo(c,Math.pow(10,s)-1,!1),a=""+f,u=On("n",i[1],o[1]),u.charAt(u.length-1)==" "&&(u=u.substr(0,u.length-1)+"0"),a+=u+i[2]+"/"+i[3],u=so(o[2],s),u.length<i[4].length&&(u=lr(i[4].substr(i[4].length-u.length))+u),a+=u,a;if(i=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(Math.max(i[1].length,i[4].length),7),o=lo(c,Math.pow(10,s)-1,!0),f+(o[0]||(o[1]?"":"0"))+" "+(o[1]?Gl(o[1],s)+i[2]+"/"+i[3]+so(o[2],s):yt(" ",2*s+1+i[2].length+i[3].length));if(i=t.match(/^[#0?]+$/))return a=qa(r,0),t.length<=a.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(/^([#0?]+)\.([#0]+)$/)){a=""+r.toFixed(Math.min(i[2].length,10)).replace(/([^0])0+$/,"$1"),s=a.indexOf(".");var d=t.indexOf(".")-s,h=t.length-a.length-d;return lr(t.substr(0,d)+a+t.substr(t.length-h))}if(i=t.match(/^00,000\.([#0]*0)$/))return s=ed(r,i[1].length),r<0?"-"+Ir(e,t,-r):Zn(Cy(r)).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(g){return"00,"+(g.length<3?Kr(0,3-g.length):"")+g})+"."+Kr(s,i[1].length);switch(t){case"###,##0.00":return Ir(e,"#,##0.00",r);case"###,###":case"##,###":case"#,###":var m=Zn(qa(c,0));return m!=="0"?f+m:"";case"###,###.00":return Ir(e,"###,##0.00",r).replace(/^0\./,".");case"#,###.00":return Ir(e,"#,##0.00",r).replace(/^0\./,".")}throw new Error("unsupported format |"+t+"|")}function Ey(e,t,r){for(var n=t.length-1;t.charCodeAt(n-1)===44;)--n;return On(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}function Sy(e,t,r){var n=t.replace(Xu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function td(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return"0.0E+0";if(t<0)return"-"+td(e,-t);var a=e.indexOf(".");a===-1&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a),!r.match(/[Ee]/)){var s=Math.floor(Math.log(t)*Math.LOG10E);r.indexOf(".")===-1?r=r.charAt(0)+"."+r.substr(1)+"E+"+(s-r.length+i):r+="E+"+(s-i),r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(o,c,f,u){return c+f+u.substr(0,(a+i)%a)+"."+u.substr(i)+"E"})}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}function dn(e,t,r){if(e.charCodeAt(0)===40&&!t.match(Ju)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?dn("n",n,r):"("+dn("n",n,-r)+")"}if(t.charCodeAt(t.length-1)===44)return Ey(e,t,r);if(t.indexOf("%")!==-1)return Sy(e,t,r);if(t.indexOf("E")!==-1)return td(t,r);if(t.charCodeAt(0)===36)return"$"+dn(e,t.substr(t.charAt(1)==" "?2:1),r);var a,i,s,o,c=Math.abs(r),f=r<0?"-":"";if(t.match(/^00+$/))return f+Kr(c,t.length);if(t.match(/^[#?]+$/))return a=""+r,r===0&&(a=""),a.length>t.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(Yu))return ky(i,c,f);if(t.match(/^#+0+$/))return f+Kr(c,t.length-t.indexOf("0"));if(i=t.match(qu))return a=(""+r).replace(/^([^\.]+)$/,"$1."+lr(i[1])).replace(/\.$/,"."+lr(i[1])),a=a.replace(/\.(\d*)$/,function(g,p){return"."+p+yt("0",lr(i[1]).length-p.length)}),t.indexOf("0.")!==-1?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return f+(""+c).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return f+Zn(""+c);if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+dn(e,t,-r):Zn(""+r)+"."+yt("0",i[1].length);if(i=t.match(/^#,#*,#0/))return dn(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=Ya(dn(e,t.replace(/[\\-]/g,""),r)),s=0,Ya(Ya(t.replace(/\\/g,"")).replace(/[0#]/g,function(g){return s<a.length?a.charAt(s++):g==="0"?"0":""}));if(t.match(Zu))return a=dn(e,"##########",r),"("+a.substr(0,3)+") "+a.substr(3,3)+"-"+a.substr(6);var u="";if(i=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(i[4].length,7),o=lo(c,Math.pow(10,s)-1,!1),a=""+f,u=On("n",i[1],o[1]),u.charAt(u.length-1)==" "&&(u=u.substr(0,u.length-1)+"0"),a+=u+i[2]+"/"+i[3],u=so(o[2],s),u.length<i[4].length&&(u=lr(i[4].substr(i[4].length-u.length))+u),a+=u,a;if(i=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(Math.max(i[1].length,i[4].length),7),o=lo(c,Math.pow(10,s)-1,!0),f+(o[0]||(o[1]?"":"0"))+" "+(o[1]?Gl(o[1],s)+i[2]+"/"+i[3]+so(o[2],s):yt(" ",2*s+1+i[2].length+i[3].length));if(i=t.match(/^[#0?]+$/))return a=""+r,t.length<=a.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(/^([#0]+)\.([#0]+)$/)){a=""+r.toFixed(Math.min(i[2].length,10)).replace(/([^0])0+$/,"$1"),s=a.indexOf(".");var d=t.indexOf(".")-s,h=t.length-a.length-d;return lr(t.substr(0,d)+a+t.substr(t.length-h))}if(i=t.match(/^00,000\.([#0]*0)$/))return r<0?"-"+dn(e,t,-r):Zn(""+r).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(g){return"00,"+(g.length<3?Kr(0,3-g.length):"")+g})+"."+Kr(0,i[1].length);switch(t){case"###,###":case"##,###":case"#,###":var m=Zn(""+c);return m!=="0"?f+m:"";default:if(t.match(/\.[0#?]*$/))return dn(e,t.slice(0,t.lastIndexOf(".")),r)+lr(t.slice(t.lastIndexOf(".")))}throw new Error("unsupported format |"+t+"|")}function On(e,t,r){return(r|0)===r?dn(e,t,r):Ir(e,t,r)}function Ty(e){for(var t=[],r=!1,n=0,a=0;n<e.length;++n)switch(e.charCodeAt(n)){case 34:r=!r;break;case 95:case 42:case 92:++n;break;case 59:t[t.length]=e.substr(a,n-a),a=n+1}if(t[t.length]=e.substr(a),r===!0)throw new Error("Format |"+e+"| unterminated string ");return t}var rd=/\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;function ma(e){for(var t=0,r="",n="";t<e.length;)switch(r=e.charAt(t)){case"G":oo(e,t)&&(t+=6),t++;break;case'"':for(;e.charCodeAt(++t)!==34&&t<e.length;);++t;break;case"\\":t+=2;break;case"_":t+=2;break;case"@":++t;break;case"B":case"b":if(e.charAt(t+1)==="1"||e.charAt(t+1)==="2")return!0;case"M":case"D":case"Y":case"H":case"S":case"E":case"m":case"d":case"y":case"h":case"s":case"e":case"g":return!0;case"A":case"a":case"上":if(e.substr(t,3).toUpperCase()==="A/P"||e.substr(t,5).toUpperCase()==="AM/PM"||e.substr(t,5).toUpperCase()==="上午/下午")return!0;++t;break;case"[":for(n=r;e.charAt(t++)!=="]"&&t<e.length;)n+=e.charAt(t);if(n.match(rd))return!0;break;case".":case"0":case"#":for(;t<e.length&&("0#?.,E+-%".indexOf(r=e.charAt(++t))>-1||r=="\\"&&e.charAt(t+1)=="-"&&"0#".indexOf(e.charAt(t+2))>-1););break;case"?":for(;e.charAt(++t)===r;);break;case"*":++t,(e.charAt(t)==" "||e.charAt(t)=="*")&&++t;break;case"(":case")":++t;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;t<e.length&&"0123456789".indexOf(e.charAt(++t))>-1;);break;case" ":++t;break;default:++t;break}return!1}function Fy(e,t,r,n){for(var a=[],i="",s=0,o="",c="t",f,u,d,h="H";s<e.length;)switch(o=e.charAt(s)){case"G":if(!oo(e,s))throw new Error("unrecognized character "+o+" in "+e);a[a.length]={t:"G",v:"General"},s+=7;break;case'"':for(i="";(d=e.charCodeAt(++s))!==34&&s<e.length;)i+=String.fromCharCode(d);a[a.length]={t:"t",v:i},++s;break;case"\\":var m=e.charAt(++s),g=m==="("||m===")"?m:"t";a[a.length]={t:g,v:m},++s;break;case"_":a[a.length]={t:"t",v:" "},s+=2;break;case"@":a[a.length]={t:"T",v:t},++s;break;case"B":case"b":if(e.charAt(s+1)==="1"||e.charAt(s+1)==="2"){if(f==null&&(f=Jn(t,r,e.charAt(s+1)==="2"),f==null))return"";a[a.length]={t:"X",v:e.substr(s,2)},c=o,s+=2;break}case"M":case"D":case"Y":case"H":case"S":case"E":o=o.toLowerCase();case"m":case"d":case"y":case"h":case"s":case"e":case"g":if(t<0||f==null&&(f=Jn(t,r),f==null))return"";for(i=o;++s<e.length&&e.charAt(s).toLowerCase()===o;)i+=o;o==="m"&&c.toLowerCase()==="h"&&(o="M"),o==="h"&&(o=h),a[a.length]={t:o,v:i},c=o;break;case"A":case"a":case"上":var p={t:o,v:o};if(f==null&&(f=Jn(t,r)),e.substr(s,3).toUpperCase()==="A/P"?(f!=null&&(p.v=f.H>=12?"P":"A"),p.t="T",h="h",s+=3):e.substr(s,5).toUpperCase()==="AM/PM"?(f!=null&&(p.v=f.H>=12?"PM":"AM"),p.t="T",s+=5,h="h"):e.substr(s,5).toUpperCase()==="上午/下午"?(f!=null&&(p.v=f.H>=12?"下午":"上午"),p.t="T",s+=5,h="h"):(p.t="t",++s),f==null&&p.t==="T")return"";a[a.length]=p,c=o;break;case"[":for(i=o;e.charAt(s++)!=="]"&&s<e.length;)i+=e.charAt(s);if(i.slice(-1)!=="]")throw'unterminated "[" block: |'+i+"|";if(i.match(rd)){if(f==null&&(f=Jn(t,r),f==null))return"";a[a.length]={t:"Z",v:i.toLowerCase()},c=i.charAt(1)}else i.indexOf("$")>-1&&(i=(i.match(/\$([^-\[\]]*)/)||[])[1]||"$",ma(e)||(a[a.length]={t:"t",v:i}));break;case".":if(f!=null){for(i=o;++s<e.length&&(o=e.charAt(s))==="0";)i+=o;a[a.length]={t:"s",v:i};break}case"0":case"#":for(i=o;++s<e.length&&"0#?.,E+-%".indexOf(o=e.charAt(s))>-1;)i+=o;a[a.length]={t:"n",v:i};break;case"?":for(i=o;e.charAt(++s)===o;)i+=o;a[a.length]={t:o,v:i},c=o;break;case"*":++s,(e.charAt(s)==" "||e.charAt(s)=="*")&&++s;break;case"(":case")":a[a.length]={t:n===1?"t":o,v:o},++s;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(i=o;s<e.length&&"0123456789".indexOf(e.charAt(++s))>-1;)i+=e.charAt(s);a[a.length]={t:"D",v:i};break;case" ":a[a.length]={t:o,v:o},++s;break;case"$":a[a.length]={t:"t",v:"$"},++s;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(o)===-1)throw new Error("unrecognized character "+o+" in "+e);a[a.length]={t:"t",v:o},++s;break}var x=0,v=0,y;for(s=a.length-1,c="t";s>=0;--s)switch(a[s].t){case"h":case"H":a[s].t=h,c="h",x<1&&(x=1);break;case"s":(y=a[s].v.match(/\.0+$/))&&(v=Math.max(v,y[0].length-1)),x<3&&(x=3);case"d":case"y":case"M":case"e":c=a[s].t;break;case"m":c==="s"&&(a[s].t="M",x<2&&(x=2));break;case"X":break;case"Z":x<1&&a[s].v.match(/[Hh]/)&&(x=1),x<2&&a[s].v.match(/[Mm]/)&&(x=2),x<3&&a[s].v.match(/[Ss]/)&&(x=3)}switch(x){case 0:break;case 1:f.u>=.5&&(f.u=0,++f.S),f.S>=60&&(f.S=0,++f.M),f.M>=60&&(f.M=0,++f.H);break;case 2:f.u>=.5&&(f.u=0,++f.S),f.S>=60&&(f.S=0,++f.M);break}var w="",b;for(s=0;s<a.length;++s)switch(a[s].t){case"t":case"T":case" ":case"D":break;case"X":a[s].v="",a[s].t=";";break;case"d":case"m":case"y":case"h":case"H":case"M":case"s":case"e":case"b":case"Z":a[s].v=vy(a[s].t.charCodeAt(0),a[s].v,f,v),a[s].t="t";break;case"n":case"?":for(b=s+1;a[b]!=null&&((o=a[b].t)==="?"||o==="D"||(o===" "||o==="t")&&a[b+1]!=null&&(a[b+1].t==="?"||a[b+1].t==="t"&&a[b+1].v==="/")||a[s].t==="("&&(o===" "||o==="n"||o===")")||o==="t"&&(a[b].v==="/"||a[b].v===" "&&a[b+1]!=null&&a[b+1].t=="?"));)a[s].v+=a[b].v,a[b]={v:"",t:";"},++b;w+=a[s].v,s=b-1;break;case"G":a[s].t="t",a[s].v=ha(t,r);break}var R="",A,k;if(w.length>0){w.charCodeAt(0)==40?(A=t<0&&w.charCodeAt(0)===45?-t:t,k=On("n",w,A)):(A=t<0&&n>1?-t:t,k=On("n",w,A),A<0&&a[0]&&a[0].t=="t"&&(k=k.substr(1),a[0].v="-"+a[0].v)),b=k.length-1;var U=a.length;for(s=0;s<a.length;++s)if(a[s]!=null&&a[s].t!="t"&&a[s].v.indexOf(".")>-1){U=s;break}var T=a.length;if(U===a.length&&k.indexOf("E")===-1){for(s=a.length-1;s>=0;--s)a[s]==null||"n?".indexOf(a[s].t)===-1||(b>=a[s].v.length-1?(b-=a[s].v.length,a[s].v=k.substr(b+1,a[s].v.length)):b<0?a[s].v="":(a[s].v=k.substr(0,b+1),b=-1),a[s].t="t",T=s);b>=0&&T<a.length&&(a[T].v=k.substr(0,b+1)+a[T].v)}else if(U!==a.length&&k.indexOf("E")===-1){for(b=k.indexOf(".")-1,s=U;s>=0;--s)if(!(a[s]==null||"n?".indexOf(a[s].t)===-1)){for(u=a[s].v.indexOf(".")>-1&&s===U?a[s].v.indexOf(".")-1:a[s].v.length-1,R=a[s].v.substr(u+1);u>=0;--u)b>=0&&(a[s].v.charAt(u)==="0"||a[s].v.charAt(u)==="#")&&(R=k.charAt(b--)+R);a[s].v=R,a[s].t="t",T=s}for(b>=0&&T<a.length&&(a[T].v=k.substr(0,b+1)+a[T].v),b=k.indexOf(".")+1,s=U;s<a.length;++s)if(!(a[s]==null||"n?(".indexOf(a[s].t)===-1&&s!==U)){for(u=a[s].v.indexOf(".")>-1&&s===U?a[s].v.indexOf(".")+1:0,R=a[s].v.substr(0,u);u<a[s].v.length;++u)b<k.length&&(R+=k.charAt(b++));a[s].v=R,a[s].t="t",T=s}}}for(s=0;s<a.length;++s)a[s]!=null&&"n?".indexOf(a[s].t)>-1&&(A=n>1&&t<0&&s>0&&a[s-1].v==="-"?-t:t,a[s].v=On(a[s].t,a[s].v,A),a[s].t="t");var j="";for(s=0;s!==a.length;++s)a[s]!=null&&(j+=a[s].v);return j}var nd=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function ad(e,t){if(t==null)return!1;var r=parseFloat(t[2]);switch(t[1]){case"=":if(e==r)return!0;break;case">":if(e>r)return!0;break;case"<":if(e<r)return!0;break;case"<>":if(e!=r)return!0;break;case">=":if(e>=r)return!0;break;case"<=":if(e<=r)return!0;break}return!1}function Ay(e,t){var r=Ty(e),n=r.length,a=r[n-1].indexOf("@");if(n<4&&a>-1&&--n,r.length>4)throw new Error("cannot find right format for |"+r.join("|")+"|");if(typeof t!="number")return[4,r.length===4||a>-1?r[r.length-1]:"@"];switch(r.length){case 1:r=a>-1?["General","General","General",r[0]]:[r[0],r[0],r[0],"@"];break;case 2:r=a>-1?[r[0],r[0],r[0],r[1]]:[r[0],r[1],r[0],"@"];break;case 3:r=a>-1?[r[0],r[1],r[0],r[2]]:[r[0],r[1],r[2],"@"];break}var i=t>0?r[0]:t<0?r[1]:r[2];if(r[0].indexOf("[")===-1&&r[1].indexOf("[")===-1)return[n,i];if(r[0].match(/\[[=<>]/)!=null||r[1].match(/\[[=<>]/)!=null){var s=r[0].match(nd),o=r[1].match(nd);return ad(t,s)?[n,r[0]]:ad(t,o)?[n,r[1]]:[n,r[s!=null&&o!=null?2:1]]}return[n,i]}function Er(e,t,r){r==null&&(r={});var n="";switch(typeof e){case"string":e=="m/d/yy"&&r.dateNF?n=r.dateNF:n=e;break;case"number":e==14&&r.dateNF?n=r.dateNF:n=(r.table!=null?r.table:Oe)[e],n==null&&(n=r.table&&r.table[ju[e]]||Oe[ju[e]]),n==null&&(n=uy[e]||"General");break}if(oo(n,0))return ha(t,r);t instanceof Date&&(t=Gu(t,r.date1904));var a=Ay(n,t);if(oo(a[1]))return ha(t,r);if(t===!0)t="TRUE";else if(t===!1)t="FALSE";else if(t===""||t==null)return"";return Fy(a[1],t,r,a[0])}function hn(e,t){if(typeof t!="number"){t=+t||-1;for(var r=0;r<392;++r){if(Oe[r]==null){t<0&&(t=r);continue}if(Oe[r]==e){t=r;break}}t<0&&(t=391)}return Oe[t]=e,t}function ji(e){for(var t=0;t!=392;++t)e[t]!==void 0&&hn(e[t],t)}function Ja(){Oe=fy()}var id={format:Er,load:hn,_table:Oe,load_table:ji,parse_date_code:Jn,is_date:ma,get_table:function(){return id._table=Oe}},Dy={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"},sd=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function Ry(e){var t=typeof e=="number"?Oe[e]:e;return t=t.replace(sd,"(\\d+)"),new RegExp("^"+t+"$")}function Oy(e,t,r){var n=-1,a=-1,i=-1,s=-1,o=-1,c=-1;(t.match(sd)||[]).forEach(function(d,h){var m=parseInt(r[h+1],10);switch(d.toLowerCase().charAt(0)){case"y":n=m;break;case"d":i=m;break;case"h":s=m;break;case"s":c=m;break;case"m":s>=0?o=m:a=m;break}}),c>=0&&o==-1&&a>=0&&(o=a,a=-1);var f=(""+(n>=0?n:new Date().getFullYear())).slice(-4)+"-"+("00"+(a>=1?a:1)).slice(-2)+"-"+("00"+(i>=1?i:1)).slice(-2);f.length==7&&(f="0"+f),f.length==8&&(f="20"+f);var u=("00"+(s>=0?s:0)).slice(-2)+":"+("00"+(o>=0?o:0)).slice(-2)+":"+("00"+(c>=0?c:0)).slice(-2);return s==-1&&o==-1&&c==-1?f:n==-1&&a==-1&&i==-1?u:f+"T"+u}var By=function(){var e={};e.version="1.2.0";function t(){for(var k=0,U=new Array(256),T=0;T!=256;++T)k=T,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,k=k&1?-306674912^k>>>1:k>>>1,U[T]=k;return typeof Int32Array<"u"?new Int32Array(U):U}var r=t();function n(k){var U=0,T=0,j=0,G=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(j=0;j!=256;++j)G[j]=k[j];for(j=0;j!=256;++j)for(T=k[j],U=256+j;U<4096;U+=256)T=G[U]=T>>>8^k[T&255];var B=[];for(j=1;j!=16;++j)B[j-1]=typeof Int32Array<"u"?G.subarray(j*256,j*256+256):G.slice(j*256,j*256+256);return B}var a=n(r),i=a[0],s=a[1],o=a[2],c=a[3],f=a[4],u=a[5],d=a[6],h=a[7],m=a[8],g=a[9],p=a[10],x=a[11],v=a[12],y=a[13],w=a[14];function b(k,U){for(var T=U^-1,j=0,G=k.length;j<G;)T=T>>>8^r[(T^k.charCodeAt(j++))&255];return~T}function R(k,U){for(var T=U^-1,j=k.length-15,G=0;G<j;)T=w[k[G++]^T&255]^y[k[G++]^T>>8&255]^v[k[G++]^T>>16&255]^x[k[G++]^T>>>24]^p[k[G++]]^g[k[G++]]^m[k[G++]]^h[k[G++]]^d[k[G++]]^u[k[G++]]^f[k[G++]]^c[k[G++]]^o[k[G++]]^s[k[G++]]^i[k[G++]]^r[k[G++]];for(j+=15;G<j;)T=T>>>8^r[(T^k[G++])&255];return~T}function A(k,U){for(var T=U^-1,j=0,G=k.length,B=0,z=0;j<G;)B=k.charCodeAt(j++),B<128?T=T>>>8^r[(T^B)&255]:B<2048?(T=T>>>8^r[(T^(192|B>>6&31))&255],T=T>>>8^r[(T^(128|B&63))&255]):B>=55296&&B<57344?(B=(B&1023)+64,z=k.charCodeAt(j++)&1023,T=T>>>8^r[(T^(240|B>>8&7))&255],T=T>>>8^r[(T^(128|B>>2&63))&255],T=T>>>8^r[(T^(128|z>>6&15|(B&3)<<4))&255],T=T>>>8^r[(T^(128|z&63))&255]):(T=T>>>8^r[(T^(224|B>>12&15))&255],T=T>>>8^r[(T^(128|B>>6&63))&255],T=T>>>8^r[(T^(128|B&63))&255]);return~T}return e.table=r,e.bstr=b,e.buf=R,e.str=A,e}(),Ae=function(){var t={};t.version="1.2.1";function r(S,I){for(var D=S.split("/"),O=I.split("/"),P=0,M=0,J=Math.min(D.length,O.length);P<J;++P){if(M=D[P].length-O[P].length)return M;if(D[P]!=O[P])return D[P]<O[P]?-1:1}return D.length-O.length}function n(S){if(S.charAt(S.length-1)=="/")return S.slice(0,-1).indexOf("/")===-1?S:n(S.slice(0,-1));var I=S.lastIndexOf("/");return I===-1?S:S.slice(0,I+1)}function a(S){if(S.charAt(S.length-1)=="/")return a(S.slice(0,-1));var I=S.lastIndexOf("/");return I===-1?S:S.slice(I+1)}function i(S,I){typeof I=="string"&&(I=new Date(I));var D=I.getHours();D=D<<6|I.getMinutes(),D=D<<5|I.getSeconds()>>>1,S.write_shift(2,D);var O=I.getFullYear()-1980;O=O<<4|I.getMonth()+1,O=O<<5|I.getDate(),S.write_shift(2,O)}function s(S){var I=S.read_shift(2)&65535,D=S.read_shift(2)&65535,O=new Date,P=D&31;D>>>=5;var M=D&15;D>>>=4,O.setMilliseconds(0),O.setFullYear(D+1980),O.setMonth(M-1),O.setDate(P);var J=I&31;I>>>=5;var le=I&63;return I>>>=6,O.setHours(I),O.setMinutes(le),O.setSeconds(J<<1),O}function o(S){Xt(S,0);for(var I={},D=0;S.l<=S.length-4;){var O=S.read_shift(2),P=S.read_shift(2),M=S.l+P,J={};switch(O){case 21589:D=S.read_shift(1),D&1&&(J.mtime=S.read_shift(4)),P>5&&(D&2&&(J.atime=S.read_shift(4)),D&4&&(J.ctime=S.read_shift(4))),J.mtime&&(J.mt=new Date(J.mtime*1e3));break}S.l=M,I[O]=J}return I}var c;function f(){return c||(c={})}function u(S,I){if(S[0]==80&&S[1]==75)return lp(S,I);if((S[0]|32)==109&&(S[1]|32)==105)return vD(S,I);if(S.length<512)throw new Error("CFB file size "+S.length+" < 512");var D=3,O=512,P=0,M=0,J=0,le=0,q=0,Z=[],ne=S.slice(0,512);Xt(ne,0);var pe=d(ne);switch(D=pe[0],D){case 3:O=512;break;case 4:O=4096;break;case 0:if(pe[1]==0)return lp(S,I);default:throw new Error("Major Version: Expected 3 or 4 saw "+D)}O!==512&&(ne=S.slice(0,O),Xt(ne,28));var ye=S.slice(0,O);h(ne,D);var Ce=ne.read_shift(4,"i");if(D===3&&Ce!==0)throw new Error("# Directory Sectors: Expected 0 saw "+Ce);ne.l+=4,J=ne.read_shift(4,"i"),ne.l+=4,ne.chk("00100000","Mini Stream Cutoff Size: "),le=ne.read_shift(4,"i"),P=ne.read_shift(4,"i"),q=ne.read_shift(4,"i"),M=ne.read_shift(4,"i");for(var ge=-1,be=0;be<109&&(ge=ne.read_shift(4,"i"),!(ge<0));++be)Z[be]=ge;var Ue=m(S,O);x(q,M,Ue,O,Z);var gt=y(Ue,J,Z,O);gt[J].name="!Directory",P>0&&le!==z&&(gt[le].name="!MiniFAT"),gt[Z[0]].name="!FAT",gt.fat_addrs=Z,gt.ssz=O;var xt={},ir=[],Ss=[],Ts=[];w(J,gt,Ue,ir,P,xt,Ss,le),g(Ss,Ts,ir),ir.shift();var Fs={FileIndex:Ss,FullPaths:Ts};return I&&I.raw&&(Fs.raw={header:ye,sectors:Ue}),Fs}function d(S){if(S[S.l]==80&&S[S.l+1]==75)return[0,0];S.chk(te,"Header Signature: "),S.l+=16;var I=S.read_shift(2,"u");return[S.read_shift(2,"u"),I]}function h(S,I){var D=9;switch(S.l+=2,D=S.read_shift(2)){case 9:if(I!=3)throw new Error("Sector Shift: Expected 9 saw "+D);break;case 12:if(I!=4)throw new Error("Sector Shift: Expected 12 saw "+D);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+D)}S.chk("0600","Mini Sector Shift: "),S.chk("000000000000","Reserved: ")}function m(S,I){for(var D=Math.ceil(S.length/I)-1,O=[],P=1;P<D;++P)O[P-1]=S.slice(P*I,(P+1)*I);return O[D-1]=S.slice(D*I),O}function g(S,I,D){for(var O=0,P=0,M=0,J=0,le=0,q=D.length,Z=[],ne=[];O<q;++O)Z[O]=ne[O]=O,I[O]=D[O];for(;le<ne.length;++le)O=ne[le],P=S[O].L,M=S[O].R,J=S[O].C,Z[O]===O&&(P!==-1&&Z[P]!==P&&(Z[O]=Z[P]),M!==-1&&Z[M]!==M&&(Z[O]=Z[M])),J!==-1&&(Z[J]=O),P!==-1&&O!=Z[O]&&(Z[P]=Z[O],ne.lastIndexOf(P)<le&&ne.push(P)),M!==-1&&O!=Z[O]&&(Z[M]=Z[O],ne.lastIndexOf(M)<le&&ne.push(M));for(O=1;O<q;++O)Z[O]===O&&(M!==-1&&Z[M]!==M?Z[O]=Z[M]:P!==-1&&Z[P]!==P&&(Z[O]=Z[P]));for(O=1;O<q;++O)if(S[O].type!==0){if(le=O,le!=Z[le])do le=Z[le],I[O]=I[le]+"/"+I[O];while(le!==0&&Z[le]!==-1&&le!=Z[le]);Z[O]=-1}for(I[0]+="/",O=1;O<q;++O)S[O].type!==2&&(I[O]+="/")}function p(S,I,D){for(var O=S.start,P=S.size,M=[],J=O;D&&P>0&&J>=0;)M.push(I.slice(J*B,J*B+B)),P-=B,J=xa(D,J*4);return M.length===0?se(0):Mt(M).slice(0,S.size)}function x(S,I,D,O,P){var M=z;if(S===z){if(I!==0)throw new Error("DIFAT chain shorter than expected")}else if(S!==-1){var J=D[S],le=(O>>>2)-1;if(!J)return;for(var q=0;q<le&&(M=xa(J,q*4))!==z;++q)P.push(M);x(xa(J,O-4),I-1,D,O,P)}}function v(S,I,D,O,P){var M=[],J=[];P||(P=[]);var le=O-1,q=0,Z=0;for(q=I;q>=0;){P[q]=!0,M[M.length]=q,J.push(S[q]);var ne=D[Math.floor(q*4/O)];if(Z=q*4&le,O<4+Z)throw new Error("FAT boundary crossed: "+q+" 4 "+O);if(!S[ne])break;q=xa(S[ne],Z)}return{nodes:M,data:Fd([J])}}function y(S,I,D,O){var P=S.length,M=[],J=[],le=[],q=[],Z=O-1,ne=0,pe=0,ye=0,Ce=0;for(ne=0;ne<P;++ne)if(le=[],ye=ne+I,ye>=P&&(ye-=P),!J[ye]){q=[];var ge=[];for(pe=ye;pe>=0;){ge[pe]=!0,J[pe]=!0,le[le.length]=pe,q.push(S[pe]);var be=D[Math.floor(pe*4/O)];if(Ce=pe*4&Z,O<4+Ce)throw new Error("FAT boundary crossed: "+pe+" 4 "+O);if(!S[be]||(pe=xa(S[be],Ce),ge[pe]))break}M[ye]={nodes:le,data:Fd([q])}}return M}function w(S,I,D,O,P,M,J,le){for(var q=0,Z=O.length?2:0,ne=I[S].data,pe=0,ye=0,Ce;pe<ne.length;pe+=128){var ge=ne.slice(pe,pe+128);Xt(ge,64),ye=ge.read_shift(2),Ce=nc(ge,0,ye-Z),O.push(Ce);var be={name:Ce,type:ge.read_shift(1),color:ge.read_shift(1),L:ge.read_shift(4,"i"),R:ge.read_shift(4,"i"),C:ge.read_shift(4,"i"),clsid:ge.read_shift(16),state:ge.read_shift(4,"i"),start:0,size:0},Ue=ge.read_shift(2)+ge.read_shift(2)+ge.read_shift(2)+ge.read_shift(2);Ue!==0&&(be.ct=b(ge,ge.l-8));var gt=ge.read_shift(2)+ge.read_shift(2)+ge.read_shift(2)+ge.read_shift(2);gt!==0&&(be.mt=b(ge,ge.l-8)),be.start=ge.read_shift(4,"i"),be.size=ge.read_shift(4,"i"),be.size<0&&be.start<0&&(be.size=be.type=0,be.start=z,be.name=""),be.type===5?(q=be.start,P>0&&q!==z&&(I[q].name="!StreamData")):be.size>=4096?(be.storage="fat",I[be.start]===void 0&&(I[be.start]=v(D,be.start,I.fat_addrs,I.ssz)),I[be.start].name=be.name,be.content=I[be.start].data.slice(0,be.size)):(be.storage="minifat",be.size<0?be.size=0:q!==z&&be.start!==z&&I[q]&&(be.content=p(be,I[q].data,(I[le]||{}).data))),be.content&&Xt(be.content,0),M[Ce]=be,J.push(be)}}function b(S,I){return new Date((Fr(S,I+4)/1e7*Math.pow(2,32)+Fr(S,I)/1e7-11644473600)*1e3)}function R(S,I){return f(),u(c.readFileSync(S),I)}function A(S,I){var D=I&&I.type;switch(D||je&&Buffer.isBuffer(S)&&(D="buffer"),D||"base64"){case"file":return R(S,I);case"base64":return u(Cr(br(S)),I);case"binary":return u(Cr(S),I)}return u(S,I)}function k(S,I){var D=I||{},O=D.root||"Root Entry";if(S.FullPaths||(S.FullPaths=[]),S.FileIndex||(S.FileIndex=[]),S.FullPaths.length!==S.FileIndex.length)throw new Error("inconsistent CFB structure");S.FullPaths.length===0&&(S.FullPaths[0]=O+"/",S.FileIndex[0]={name:O,type:5}),D.CLSID&&(S.FileIndex[0].clsid=D.CLSID),U(S)}function U(S){var I="Sh33tJ5";if(!Ae.find(S,"/"+I)){var D=se(4);D[0]=55,D[1]=D[3]=50,D[2]=54,S.FileIndex.push({name:I,type:2,content:D,size:4,L:69,R:69,C:69}),S.FullPaths.push(S.FullPaths[0]+I),T(S)}}function T(S,I){k(S);for(var D=!1,O=!1,P=S.FullPaths.length-1;P>=0;--P){var M=S.FileIndex[P];switch(M.type){case 0:O?D=!0:(S.FileIndex.pop(),S.FullPaths.pop());break;case 1:case 2:case 5:O=!0,isNaN(M.R*M.L*M.C)&&(D=!0),M.R>-1&&M.L>-1&&M.R==M.L&&(D=!0);break;default:D=!0;break}}if(!(!D&&!I)){var J=new Date(1987,1,19),le=0,q=Object.create?Object.create(null):{},Z=[];for(P=0;P<S.FullPaths.length;++P)q[S.FullPaths[P]]=!0,S.FileIndex[P].type!==0&&Z.push([S.FullPaths[P],S.FileIndex[P]]);for(P=0;P<Z.length;++P){var ne=n(Z[P][0]);O=q[ne],O||(Z.push([ne,{name:a(ne).replace("/",""),type:1,clsid:Y,ct:J,mt:J,content:null}]),q[ne]=!0)}for(Z.sort(function(Ce,ge){return r(Ce[0],ge[0])}),S.FullPaths=[],S.FileIndex=[],P=0;P<Z.length;++P)S.FullPaths[P]=Z[P][0],S.FileIndex[P]=Z[P][1];for(P=0;P<Z.length;++P){var pe=S.FileIndex[P],ye=S.FullPaths[P];if(pe.name=a(ye).replace("/",""),pe.L=pe.R=pe.C=-(pe.color=1),pe.size=pe.content?pe.content.length:0,pe.start=0,pe.clsid=pe.clsid||Y,P===0)pe.C=Z.length>1?1:-1,pe.size=0,pe.type=5;else if(ye.slice(-1)=="/"){for(le=P+1;le<Z.length&&n(S.FullPaths[le])!=ye;++le);for(pe.C=le>=Z.length?-1:le,le=P+1;le<Z.length&&n(S.FullPaths[le])!=n(ye);++le);pe.R=le>=Z.length?-1:le,pe.type=1}else n(S.FullPaths[P+1]||"")==n(ye)&&(pe.R=P+1),pe.type=2}}}function j(S,I){var D=I||{};if(D.fileType=="mad")return wD(S,D);switch(T(S),D.fileType){case"zip":return dD(S,D)}var O=function(Ce){for(var ge=0,be=0,Ue=0;Ue<Ce.FileIndex.length;++Ue){var gt=Ce.FileIndex[Ue];if(gt.content){var xt=gt.content.length;xt>0&&(xt<4096?ge+=xt+63>>6:be+=xt+511>>9)}}for(var ir=Ce.FullPaths.length+3>>2,Ss=ge+7>>3,Ts=ge+127>>7,Fs=Ss+be+ir+Ts,La=Fs+127>>7,sf=La<=109?0:Math.ceil((La-109)/127);Fs+La+sf+127>>7>La;)sf=++La<=109?0:Math.ceil((La-109)/127);var Vn=[1,sf,La,Ts,ir,be,ge,0];return Ce.FileIndex[0].size=ge<<6,Vn[7]=(Ce.FileIndex[0].start=Vn[0]+Vn[1]+Vn[2]+Vn[3]+Vn[4]+Vn[5])+(Vn[6]+7>>3),Vn}(S),P=se(O[7]<<9),M=0,J=0;{for(M=0;M<8;++M)P.write_shift(1,W[M]);for(M=0;M<8;++M)P.write_shift(2,0);for(P.write_shift(2,62),P.write_shift(2,3),P.write_shift(2,65534),P.write_shift(2,9),P.write_shift(2,6),M=0;M<3;++M)P.write_shift(2,0);for(P.write_shift(4,0),P.write_shift(4,O[2]),P.write_shift(4,O[0]+O[1]+O[2]+O[3]-1),P.write_shift(4,0),P.write_shift(4,4096),P.write_shift(4,O[3]?O[0]+O[1]+O[2]-1:z),P.write_shift(4,O[3]),P.write_shift(-4,O[1]?O[0]-1:z),P.write_shift(4,O[1]),M=0;M<109;++M)P.write_shift(-4,M<O[2]?O[1]+M:-1)}if(O[1])for(J=0;J<O[1];++J){for(;M<236+J*127;++M)P.write_shift(-4,M<O[2]?O[1]+M:-1);P.write_shift(-4,J===O[1]-1?z:J+1)}var le=function(Ce){for(J+=Ce;M<J-1;++M)P.write_shift(-4,M+1);Ce&&(++M,P.write_shift(-4,z))};for(J=M=0,J+=O[1];M<J;++M)P.write_shift(-4,ae.DIFSECT);for(J+=O[2];M<J;++M)P.write_shift(-4,ae.FATSECT);le(O[3]),le(O[4]);for(var q=0,Z=0,ne=S.FileIndex[0];q<S.FileIndex.length;++q)ne=S.FileIndex[q],ne.content&&(Z=ne.content.length,!(Z<4096)&&(ne.start=J,le(Z+511>>9)));for(le(O[6]+7>>3);P.l&511;)P.write_shift(-4,ae.ENDOFCHAIN);for(J=M=0,q=0;q<S.FileIndex.length;++q)ne=S.FileIndex[q],ne.content&&(Z=ne.content.length,!(!Z||Z>=4096)&&(ne.start=J,le(Z+63>>6)));for(;P.l&511;)P.write_shift(-4,ae.ENDOFCHAIN);for(M=0;M<O[4]<<2;++M){var pe=S.FullPaths[M];if(!pe||pe.length===0){for(q=0;q<17;++q)P.write_shift(4,0);for(q=0;q<3;++q)P.write_shift(4,-1);for(q=0;q<12;++q)P.write_shift(4,0);continue}ne=S.FileIndex[M],M===0&&(ne.start=ne.size?ne.start-1:z);var ye=M===0&&D.root||ne.name;if(Z=2*(ye.length+1),P.write_shift(64,ye,"utf16le"),P.write_shift(2,Z),P.write_shift(1,ne.type),P.write_shift(1,ne.color),P.write_shift(-4,ne.L),P.write_shift(-4,ne.R),P.write_shift(-4,ne.C),ne.clsid)P.write_shift(16,ne.clsid,"hex");else for(q=0;q<4;++q)P.write_shift(4,0);P.write_shift(4,ne.state||0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,ne.start),P.write_shift(4,ne.size),P.write_shift(4,0)}for(M=1;M<S.FileIndex.length;++M)if(ne=S.FileIndex[M],ne.size>=4096)if(P.l=ne.start+1<<9,je&&Buffer.isBuffer(ne.content))ne.content.copy(P,P.l,0,ne.size),P.l+=ne.size+511&-512;else{for(q=0;q<ne.size;++q)P.write_shift(1,ne.content[q]);for(;q&511;++q)P.write_shift(1,0)}for(M=1;M<S.FileIndex.length;++M)if(ne=S.FileIndex[M],ne.size>0&&ne.size<4096)if(je&&Buffer.isBuffer(ne.content))ne.content.copy(P,P.l,0,ne.size),P.l+=ne.size+63&-64;else{for(q=0;q<ne.size;++q)P.write_shift(1,ne.content[q]);for(;q&63;++q)P.write_shift(1,0)}if(je)P.l=P.length;else for(;P.l<P.length;)P.write_shift(1,0);return P}function G(S,I){var D=S.FullPaths.map(function(q){return q.toUpperCase()}),O=D.map(function(q){var Z=q.split("/");return Z[Z.length-(q.slice(-1)=="/"?2:1)]}),P=!1;I.charCodeAt(0)===47?(P=!0,I=D[0].slice(0,-1)+I):P=I.indexOf("/")!==-1;var M=I.toUpperCase(),J=P===!0?D.indexOf(M):O.indexOf(M);if(J!==-1)return S.FileIndex[J];var le=!M.match(Wi);for(M=M.replace(or,""),le&&(M=M.replace(Wi,"!")),J=0;J<D.length;++J)if((le?D[J].replace(Wi,"!"):D[J]).replace(or,"")==M||(le?O[J].replace(Wi,"!"):O[J]).replace(or,"")==M)return S.FileIndex[J];return null}var B=64,z=-2,te="d0cf11e0a1b11ae1",W=[208,207,17,224,161,177,26,225],Y="00000000000000000000000000000000",ae={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:z,FREESECT:-1,HEADER_SIGNATURE:te,HEADER_MINOR_VERSION:"3e00",MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:Y,EntryTypes:["unknown","storage","stream","lockbytes","property","root"]};function he(S,I,D){f();var O=j(S,D);c.writeFileSync(I,O)}function K(S){for(var I=new Array(S.length),D=0;D<S.length;++D)I[D]=String.fromCharCode(S[D]);return I.join("")}function ce(S,I){var D=j(S,I);switch(I&&I.type||"buffer"){case"file":return f(),c.writeFileSync(I.filename,D),D;case"binary":return typeof D=="string"?D:K(D);case"base64":return $i(typeof D=="string"?D:K(D));case"buffer":if(je)return Buffer.isBuffer(D)?D:Rn(D);case"array":return typeof D=="string"?Cr(D):D}return D}var N;function _(S){try{var I=S.InflateRaw,D=new I;if(D._processChunk(new Uint8Array([3,0]),D._finishFlushFlag),D.bytesRead)N=S;else throw new Error("zlib does not expose bytesRead")}catch(O){console.error("cannot use native zlib: "+(O.message||O))}}function E(S,I){if(!N)return sp(S,I);var D=N.InflateRaw,O=new D,P=O._processChunk(S.slice(S.l),O._finishFlushFlag);return S.l+=O.bytesRead,P}function C(S){return N?N.deflateRawSync(S):De(S)}var F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],H=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],ee=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];function Q(S){var I=(S<<1|S<<11)&139536|(S<<5|S<<15)&558144;return(I>>16|I>>8|I)&255}for(var re=typeof Uint8Array<"u",ie=re?new Uint8Array(256):[],Se=0;Se<256;++Se)ie[Se]=Q(Se);function L(S,I){var D=ie[S&255];return I<=8?D>>>8-I:(D=D<<8|ie[S>>8&255],I<=16?D>>>16-I:(D=D<<8|ie[S>>16&255],D>>>24-I))}function de(S,I){var D=I&7,O=I>>>3;return(S[O]|(D<=6?0:S[O+1]<<8))>>>D&3}function _e(S,I){var D=I&7,O=I>>>3;return(S[O]|(D<=5?0:S[O+1]<<8))>>>D&7}function Fe(S,I){var D=I&7,O=I>>>3;return(S[O]|(D<=4?0:S[O+1]<<8))>>>D&15}function ke(S,I){var D=I&7,O=I>>>3;return(S[O]|(D<=3?0:S[O+1]<<8))>>>D&31}function me(S,I){var D=I&7,O=I>>>3;return(S[O]|(D<=1?0:S[O+1]<<8))>>>D&127}function Qe(S,I,D){var O=I&7,P=I>>>3,M=(1<<D)-1,J=S[P]>>>O;return D<8-O||(J|=S[P+1]<<8-O,D<16-O)||(J|=S[P+2]<<16-O,D<24-O)||(J|=S[P+3]<<24-O),J&M}function vr(S,I,D){var O=I&7,P=I>>>3;return O<=5?S[P]|=(D&7)<<O:(S[P]|=D<<O&255,S[P+1]=(D&7)>>8-O),I+3}function Hr(S,I,D){var O=I&7,P=I>>>3;return D=(D&1)<<O,S[P]|=D,I+1}function jr(S,I,D){var O=I&7,P=I>>>3;return D<<=O,S[P]|=D&255,D>>>=8,S[P+1]=D,I+8}function gi(S,I,D){var O=I&7,P=I>>>3;return D<<=O,S[P]|=D&255,D>>>=8,S[P+1]=D&255,S[P+2]=D>>>8,I+16}function kn(S,I){var D=S.length,O=2*D>I?2*D:I+5,P=0;if(D>=I)return S;if(je){var M=$u(O);if(S.copy)S.copy(M);else for(;P<S.length;++P)M[P]=S[P];return M}else if(re){var J=new Uint8Array(O);if(J.set)J.set(S);else for(;P<D;++P)J[P]=S[P];return J}return S.length=O,S}function dr(S){for(var I=new Array(S),D=0;D<S;++D)I[D]=0;return I}function on(S,I,D){var O=1,P=0,M=0,J=0,le=0,q=S.length,Z=re?new Uint16Array(32):dr(32);for(M=0;M<32;++M)Z[M]=0;for(M=q;M<D;++M)S[M]=0;q=S.length;var ne=re?new Uint16Array(q):dr(q);for(M=0;M<q;++M)Z[P=S[M]]++,O<P&&(O=P),ne[M]=0;for(Z[0]=0,M=1;M<=O;++M)Z[M+16]=le=le+Z[M-1]<<1;for(M=0;M<q;++M)le=S[M],le!=0&&(ne[M]=Z[le+16]++);var pe=0;for(M=0;M<q;++M)if(pe=S[M],pe!=0)for(le=L(ne[M],O)>>O-pe,J=(1<<O+4-pe)-1;J>=0;--J)I[le|J<<pe]=pe&15|M<<4;return O}var bn=re?new Uint16Array(512):dr(512),Ia=re?new Uint16Array(32):dr(32);if(!re){for(var ot=0;ot<512;++ot)bn[ot]=0;for(ot=0;ot<32;++ot)Ia[ot]=0}(function(){for(var S=[],I=0;I<32;I++)S.push(5);on(S,Ia,32);var D=[];for(I=0;I<=143;I++)D.push(8);for(;I<=255;I++)D.push(9);for(;I<=279;I++)D.push(7);for(;I<=287;I++)D.push(8);on(D,bn,288)})();var Ht=function(){for(var I=re?new Uint8Array(32768):[],D=0,O=0;D<ee.length-1;++D)for(;O<ee[D+1];++O)I[O]=D;for(;O<32768;++O)I[O]=29;var P=re?new Uint8Array(259):[];for(D=0,O=0;D<H.length-1;++D)for(;O<H[D+1];++O)P[O]=D;function M(le,q){for(var Z=0;Z<le.length;){var ne=Math.min(65535,le.length-Z),pe=Z+ne==le.length;for(q.write_shift(1,+pe),q.write_shift(2,ne),q.write_shift(2,~ne&65535);ne-- >0;)q[q.l++]=le[Z++]}return q.l}function J(le,q){for(var Z=0,ne=0,pe=re?new Uint16Array(32768):[];ne<le.length;){var ye=Math.min(65535,le.length-ne);if(ye<10){for(Z=vr(q,Z,+(ne+ye==le.length)),Z&7&&(Z+=8-(Z&7)),q.l=Z/8|0,q.write_shift(2,ye),q.write_shift(2,~ye&65535);ye-- >0;)q[q.l++]=le[ne++];Z=q.l*8;continue}Z=vr(q,Z,+(ne+ye==le.length)+2);for(var Ce=0;ye-- >0;){var ge=le[ne];Ce=(Ce<<5^ge)&32767;var be=-1,Ue=0;if((be=pe[Ce])&&(be|=ne&-32768,be>ne&&(be-=32768),be<ne))for(;le[be+Ue]==le[ne+Ue]&&Ue<250;)++Ue;if(Ue>2){ge=P[Ue],ge<=22?Z=jr(q,Z,ie[ge+1]>>1)-1:(jr(q,Z,3),Z+=5,jr(q,Z,ie[ge-23]>>5),Z+=3);var gt=ge<8?0:ge-4>>2;gt>0&&(gi(q,Z,Ue-H[ge]),Z+=gt),ge=I[ne-be],Z=jr(q,Z,ie[ge]>>3),Z-=3;var xt=ge<4?0:ge-2>>1;xt>0&&(gi(q,Z,ne-be-ee[ge]),Z+=xt);for(var ir=0;ir<Ue;++ir)pe[Ce]=ne&32767,Ce=(Ce<<5^le[ne])&32767,++ne;ye-=Ue-1}else ge<=143?ge=ge+48:Z=Hr(q,Z,1),Z=jr(q,Z,ie[ge]),pe[Ce]=ne&32767,++ne}Z=jr(q,Z,0)-1}return q.l=(Z+7)/8|0,q.l}return function(q,Z){return q.length<8?M(q,Z):J(q,Z)}}();function De(S){var I=se(50+Math.floor(S.length*1.1)),D=Ht(S,I);return I.slice(0,D)}var it=re?new Uint16Array(32768):dr(32768),hr=re?new Uint16Array(32768):dr(32768),bt=re?new Uint16Array(128):dr(128),Pa=1,ip=1;function cD(S,I){var D=ke(S,I)+257;I+=5;var O=ke(S,I)+1;I+=5;var P=Fe(S,I)+4;I+=4;for(var M=0,J=re?new Uint8Array(19):dr(19),le=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],q=1,Z=re?new Uint8Array(8):dr(8),ne=re?new Uint8Array(8):dr(8),pe=J.length,ye=0;ye<P;++ye)J[F[ye]]=M=_e(S,I),q<M&&(q=M),Z[M]++,I+=3;var Ce=0;for(Z[0]=0,ye=1;ye<=q;++ye)ne[ye]=Ce=Ce+Z[ye-1]<<1;for(ye=0;ye<pe;++ye)(Ce=J[ye])!=0&&(le[ye]=ne[Ce]++);var ge=0;for(ye=0;ye<pe;++ye)if(ge=J[ye],ge!=0){Ce=ie[le[ye]]>>8-ge;for(var be=(1<<7-ge)-1;be>=0;--be)bt[Ce|be<<ge]=ge&7|ye<<3}var Ue=[];for(q=1;Ue.length<D+O;)switch(Ce=bt[me(S,I)],I+=Ce&7,Ce>>>=3){case 16:for(M=3+de(S,I),I+=2,Ce=Ue[Ue.length-1];M-- >0;)Ue.push(Ce);break;case 17:for(M=3+_e(S,I),I+=3;M-- >0;)Ue.push(0);break;case 18:for(M=11+me(S,I),I+=7;M-- >0;)Ue.push(0);break;default:Ue.push(Ce),q<Ce&&(q=Ce);break}var gt=Ue.slice(0,D),xt=Ue.slice(D);for(ye=D;ye<286;++ye)gt[ye]=0;for(ye=O;ye<30;++ye)xt[ye]=0;return Pa=on(gt,it,286),ip=on(xt,hr,30),I}function fD(S,I){if(S[0]==3&&!(S[1]&3))return[Yn(I),2];for(var D=0,O=0,P=$u(I||1<<18),M=0,J=P.length>>>0,le=0,q=0;!(O&1);){if(O=_e(S,D),D+=3,O>>>1)O>>1==1?(le=9,q=5):(D=cD(S,D),le=Pa,q=ip);else{D&7&&(D+=8-(D&7));var Z=S[D>>>3]|S[(D>>>3)+1]<<8;if(D+=32,Z>0)for(!I&&J<M+Z&&(P=kn(P,M+Z),J=P.length);Z-- >0;)P[M++]=S[D>>>3],D+=8;continue}for(;;){!I&&J<M+32767&&(P=kn(P,M+32767),J=P.length);var ne=Qe(S,D,le),pe=O>>>1==1?bn[ne]:it[ne];if(D+=pe&15,pe>>>=4,!(pe>>>8&255))P[M++]=pe;else{if(pe==256)break;pe-=257;var ye=pe<8?0:pe-4>>2;ye>5&&(ye=0);var Ce=M+H[pe];ye>0&&(Ce+=Qe(S,D,ye),D+=ye),ne=Qe(S,D,q),pe=O>>>1==1?Ia[ne]:hr[ne],D+=pe&15,pe>>>=4;var ge=pe<4?0:pe-2>>1,be=ee[pe];for(ge>0&&(be+=Qe(S,D,ge),D+=ge),!I&&J<Ce&&(P=kn(P,Ce+100),J=P.length);M<Ce;)P[M]=P[M-be],++M}}}return I?[P,D+7>>>3]:[P.slice(0,M),D+7>>>3]}function sp(S,I){var D=S.slice(S.l||0),O=fD(D,I);return S.l+=O[1],O[0]}function op(S,I){if(S)typeof console<"u"&&console.error(I);else throw new Error(I)}function lp(S,I){var D=S;Xt(D,0);var O=[],P=[],M={FileIndex:O,FullPaths:P};k(M,{root:I.root});for(var J=D.length-4;(D[J]!=80||D[J+1]!=75||D[J+2]!=5||D[J+3]!=6)&&J>=0;)--J;D.l=J+4,D.l+=4;var le=D.read_shift(2);D.l+=6;var q=D.read_shift(4);for(D.l=q,J=0;J<le;++J){D.l+=20;var Z=D.read_shift(4),ne=D.read_shift(4),pe=D.read_shift(2),ye=D.read_shift(2),Ce=D.read_shift(2);D.l+=8;var ge=D.read_shift(4),be=o(D.slice(D.l+pe,D.l+pe+ye));D.l+=pe+ye+Ce;var Ue=D.l;D.l=ge+4,uD(D,Z,ne,M,be),D.l=Ue}return M}function uD(S,I,D,O,P){S.l+=2;var M=S.read_shift(2),J=S.read_shift(2),le=s(S);if(M&8257)throw new Error("Unsupported ZIP encryption");for(var q=S.read_shift(4),Z=S.read_shift(4),ne=S.read_shift(4),pe=S.read_shift(2),ye=S.read_shift(2),Ce="",ge=0;ge<pe;++ge)Ce+=String.fromCharCode(S[S.l++]);if(ye){var be=o(S.slice(S.l,S.l+ye));(be[21589]||{}).mt&&(le=be[21589].mt),((P||{})[21589]||{}).mt&&(le=P[21589].mt)}S.l+=ye;var Ue=S.slice(S.l,S.l+Z);switch(J){case 8:Ue=E(S,ne);break;case 0:break;default:throw new Error("Unsupported ZIP Compression method "+J)}var gt=!1;M&8&&(q=S.read_shift(4),q==134695760&&(q=S.read_shift(4),gt=!0),Z=S.read_shift(4),ne=S.read_shift(4)),Z!=I&&op(gt,"Bad compressed size: "+I+" != "+Z),ne!=D&&op(gt,"Bad uncompressed size: "+D+" != "+ne),af(O,Ce,Ue,{unsafe:!0,mt:le})}function dD(S,I){var D=I||{},O=[],P=[],M=se(1),J=D.compression?8:0,le=0,q=0,Z=0,ne=0,pe=0,ye=S.FullPaths[0],Ce=ye,ge=S.FileIndex[0],be=[],Ue=0;for(q=1;q<S.FullPaths.length;++q)if(Ce=S.FullPaths[q].slice(ye.length),ge=S.FileIndex[q],!(!ge.size||!ge.content||Ce=="Sh33tJ5")){var gt=ne,xt=se(Ce.length);for(Z=0;Z<Ce.length;++Z)xt.write_shift(1,Ce.charCodeAt(Z)&127);xt=xt.slice(0,xt.l),be[pe]=By.buf(ge.content,0);var ir=ge.content;J==8&&(ir=C(ir)),M=se(30),M.write_shift(4,67324752),M.write_shift(2,20),M.write_shift(2,le),M.write_shift(2,J),ge.mt?i(M,ge.mt):M.write_shift(4,0),M.write_shift(-4,be[pe]),M.write_shift(4,ir.length),M.write_shift(4,ge.content.length),M.write_shift(2,xt.length),M.write_shift(2,0),ne+=M.length,O.push(M),ne+=xt.length,O.push(xt),ne+=ir.length,O.push(ir),M=se(46),M.write_shift(4,33639248),M.write_shift(2,0),M.write_shift(2,20),M.write_shift(2,le),M.write_shift(2,J),M.write_shift(4,0),M.write_shift(-4,be[pe]),M.write_shift(4,ir.length),M.write_shift(4,ge.content.length),M.write_shift(2,xt.length),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(4,0),M.write_shift(4,gt),Ue+=M.l,P.push(M),Ue+=xt.length,P.push(xt),++pe}return M=se(22),M.write_shift(4,101010256),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,pe),M.write_shift(2,pe),M.write_shift(4,Ue),M.write_shift(4,ne),M.write_shift(2,0),Mt([Mt(O),Mt(P),M])}var Lo={htm:"text/html",xml:"text/xml",gif:"image/gif",jpg:"image/jpeg",png:"image/png",mso:"application/x-mso",thmx:"application/vnd.ms-officetheme",sh33tj5:"application/octet-stream"};function hD(S,I){if(S.ctype)return S.ctype;var D=S.name||"",O=D.match(/\.([^\.]+)$/);return O&&Lo[O[1]]||I&&(O=(D=I).match(/[\.\\]([^\.\\])+$/),O&&Lo[O[1]])?Lo[O[1]]:"application/octet-stream"}function mD(S){for(var I=$i(S),D=[],O=0;O<I.length;O+=76)D.push(I.slice(O,O+76));return D.join(`\r
`)+`\r
`}function pD(S){var I=S.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g,function(Z){var ne=Z.charCodeAt(0).toString(16).toUpperCase();return"="+(ne.length==1?"0"+ne:ne)});I=I.replace(/ $/mg,"=20").replace(/\t$/mg,"=09"),I.charAt(0)==`
`&&(I="=0D"+I.slice(1)),I=I.replace(/\r(?!\n)/mg,"=0D").replace(/\n\n/mg,`
=0A`).replace(/([^\r\n])\n/mg,"$1=0A");for(var D=[],O=I.split(`\r
`),P=0;P<O.length;++P){var M=O[P];if(M.length==0){D.push("");continue}for(var J=0;J<M.length;){var le=76,q=M.slice(J,J+le);q.charAt(le-1)=="="?le--:q.charAt(le-2)=="="?le-=2:q.charAt(le-3)=="="&&(le-=3),q=M.slice(J,J+le),J+=le,J<M.length&&(q+="="),D.push(q)}}return D.join(`\r
`)}function gD(S){for(var I=[],D=0;D<S.length;++D){for(var O=S[D];D<=S.length&&O.charAt(O.length-1)=="=";)O=O.slice(0,O.length-1)+S[++D];I.push(O)}for(var P=0;P<I.length;++P)I[P]=I[P].replace(/[=][0-9A-Fa-f]{2}/g,function(M){return String.fromCharCode(parseInt(M.slice(1),16))});return Cr(I.join(`\r
`))}function xD(S,I,D){for(var O="",P="",M="",J,le=0;le<10;++le){var q=I[le];if(!q||q.match(/^\s*$/))break;var Z=q.match(/^(.*?):\s*([^\s].*)$/);if(Z)switch(Z[1].toLowerCase()){case"content-location":O=Z[2].trim();break;case"content-type":M=Z[2].trim();break;case"content-transfer-encoding":P=Z[2].trim();break}}switch(++le,P.toLowerCase()){case"base64":J=Cr(br(I.slice(le).join("")));break;case"quoted-printable":J=gD(I.slice(le));break;default:throw new Error("Unsupported Content-Transfer-Encoding "+P)}var ne=af(S,O.slice(D.length),J,{unsafe:!0});M&&(ne.ctype=M)}function vD(S,I){if(K(S.slice(0,13)).toLowerCase()!="mime-version:")throw new Error("Unsupported MAD header");var D=I&&I.root||"",O=(je&&Buffer.isBuffer(S)?S.toString("binary"):K(S)).split(`\r
`),P=0,M="";for(P=0;P<O.length;++P)if(M=O[P],!!/^Content-Location:/i.test(M)&&(M=M.slice(M.indexOf("file")),D||(D=M.slice(0,M.lastIndexOf("/")+1)),M.slice(0,D.length)!=D))for(;D.length>0&&(D=D.slice(0,D.length-1),D=D.slice(0,D.lastIndexOf("/")+1),M.slice(0,D.length)!=D););var J=(O[1]||"").match(/boundary="(.*?)"/);if(!J)throw new Error("MAD cannot find boundary");var le="--"+(J[1]||""),q=[],Z=[],ne={FileIndex:q,FullPaths:Z};k(ne);var pe,ye=0;for(P=0;P<O.length;++P){var Ce=O[P];Ce!==le&&Ce!==le+"--"||(ye++&&xD(ne,O.slice(pe,P),D),pe=P)}return ne}function wD(S,I){var D=I||{},O=D.boundary||"SheetJS";O="------="+O;for(var P=["MIME-Version: 1.0",'Content-Type: multipart/related; boundary="'+O.slice(2)+'"',"","",""],M=S.FullPaths[0],J=M,le=S.FileIndex[0],q=1;q<S.FullPaths.length;++q)if(J=S.FullPaths[q].slice(M.length),le=S.FileIndex[q],!(!le.size||!le.content||J=="Sh33tJ5")){J=J.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g,function(Ue){return"_x"+Ue.charCodeAt(0).toString(16)+"_"}).replace(/[\u0080-\uFFFF]/g,function(Ue){return"_u"+Ue.charCodeAt(0).toString(16)+"_"});for(var Z=le.content,ne=je&&Buffer.isBuffer(Z)?Z.toString("binary"):K(Z),pe=0,ye=Math.min(1024,ne.length),Ce=0,ge=0;ge<=ye;++ge)(Ce=ne.charCodeAt(ge))>=32&&Ce<128&&++pe;var be=pe>=ye*4/5;P.push(O),P.push("Content-Location: "+(D.root||"file:///C:/SheetJS/")+J),P.push("Content-Transfer-Encoding: "+(be?"quoted-printable":"base64")),P.push("Content-Type: "+hD(le,J)),P.push(""),P.push(be?pD(ne):mD(ne))}return P.push(O+`--\r
`),P.join(`\r
`)}function _D(S){var I={};return k(I,S),I}function af(S,I,D,O){var P=O&&O.unsafe;P||k(S);var M=!P&&Ae.find(S,I);if(!M){var J=S.FullPaths[0];I.slice(0,J.length)==J?J=I:(J.slice(-1)!="/"&&(J+="/"),J=(J+I).replace("//","/")),M={name:a(I),type:2},S.FileIndex.push(M),S.FullPaths.push(J),P||Ae.utils.cfb_gc(S)}return M.content=D,M.size=D?D.length:0,O&&(O.CLSID&&(M.clsid=O.CLSID),O.mt&&(M.mt=O.mt),O.ct&&(M.ct=O.ct)),M}function yD(S,I){k(S);var D=Ae.find(S,I);if(D){for(var O=0;O<S.FileIndex.length;++O)if(S.FileIndex[O]==D)return S.FileIndex.splice(O,1),S.FullPaths.splice(O,1),!0}return!1}function kD(S,I,D){k(S);var O=Ae.find(S,I);if(O){for(var P=0;P<S.FileIndex.length;++P)if(S.FileIndex[P]==O)return S.FileIndex[P].name=a(D),S.FullPaths[P]=D,!0}return!1}function bD(S){T(S,!0)}return t.find=G,t.read=A,t.parse=u,t.write=ce,t.writeFile=he,t.utils={cfb_new:_D,cfb_add:af,cfb_del:yD,cfb_mov:kD,cfb_gc:bD,ReadShift:Ji,CheckField:jd,prep_blob:Xt,bconcat:Mt,use_zlib:_,_deflateRaw:De,_inflateRaw:sp,consts:ae},t}();function Ny(e){return typeof e=="string"?io(e):Array.isArray(e)?sy(e):e}function zi(e,t,r){if(typeof Deno<"u"){if(r&&typeof t=="string")switch(r){case"utf8":t=new TextEncoder(r).encode(t);break;case"binary":t=io(t);break;default:throw new Error("Unsupported encoding "+r)}return Deno.writeFileSync(e,t)}var n=r=="utf8"?pn(t):t;if(typeof IE_SaveFile<"u")return IE_SaveFile(n,e);if(typeof Blob<"u"){var a=new Blob([Ny(n)],{type:"application/octet-stream"});if(typeof navigator<"u"&&navigator.msSaveBlob)return navigator.msSaveBlob(a,e);if(typeof saveAs<"u")return saveAs(a,e);if(typeof URL<"u"&&typeof document<"u"&&document.createElement&&URL.createObjectURL){var i=URL.createObjectURL(a);if(typeof chrome=="object"&&typeof(chrome.downloads||{}).download=="function")return URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(i)},6e4),chrome.downloads.download({url:i,filename:e,saveAs:!0});var s=document.createElement("a");if(s.download!=null)return s.download=e,s.href=i,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(i)},6e4),i}}if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var o=File(e);return o.open("w"),o.encoding="binary",Array.isArray(t)&&(t=qn(t)),o.write(t),o.close(),t}catch(c){if(!c.message||!c.message.match(/onstruct/))throw c}throw new Error("cannot save file "+e)}function Iy(e){if(typeof Deno<"u")return Deno.readFileSync(e);if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var t=File(e);t.open("r"),t.encoding="binary";var r=t.read();return t.close(),r}catch(n){if(!n.message||!n.message.match(/onstruct/))throw n}throw new Error("Cannot access file "+e)}function _t(e){for(var t=Object.keys(e),r=[],n=0;n<t.length;++n)Object.prototype.hasOwnProperty.call(e,t[n])&&r.push(t[n]);return r}function od(e,t){for(var r=[],n=_t(e),a=0;a!==n.length;++a)r[e[n[a]][t]]==null&&(r[e[n[a]][t]]=n[a]);return r}function co(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]=r[n];return t}function fo(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]=parseInt(r[n],10);return t}function Py(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]==null&&(t[e[r[n]]]=[]),t[e[r[n]]].push(r[n]);return t}var uo=new Date(1899,11,30,0,0,0);function Nt(e,t){var r=e.getTime();t&&(r-=1462*24*60*60*1e3);var n=uo.getTime()+(e.getTimezoneOffset()-uo.getTimezoneOffset())*6e4;return(r-n)/(24*60*60*1e3)}var ld=new Date,Ly=uo.getTime()+(ld.getTimezoneOffset()-uo.getTimezoneOffset())*6e4,cd=ld.getTimezoneOffset();function ho(e){var t=new Date;return t.setTime(e*24*60*60*1e3+Ly),t.getTimezoneOffset()!==cd&&t.setTime(t.getTime()+(t.getTimezoneOffset()-cd)*6e4),t}function My(e){var t=0,r=0,n=!1,a=e.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/);if(!a)throw new Error("|"+e+"| is not an ISO8601 Duration");for(var i=1;i!=a.length;++i)if(a[i]){switch(r=1,i>3&&(n=!0),a[i].slice(a[i].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+a[i].slice(a[i].length-1));case"D":r*=24;case"H":r*=60;case"M":if(n)r*=60;else throw new Error("Unsupported ISO Duration Field: M")}t+=r*parseInt(a[i],10)}return t}var fd=new Date("2017-02-19T19:06:09.000Z"),ud=isNaN(fd.getFullYear())?new Date("2/19/17"):fd,Vy=ud.getFullYear()==2017;function lt(e,t){var r=new Date(e);if(Vy)return t>0?r.setTime(r.getTime()+r.getTimezoneOffset()*60*1e3):t<0&&r.setTime(r.getTime()-r.getTimezoneOffset()*60*1e3),r;if(e instanceof Date)return e;if(ud.getFullYear()==1917&&!isNaN(r.getFullYear())){var n=r.getFullYear();return e.indexOf(""+n)>-1||r.setFullYear(r.getFullYear()+100),r}var a=e.match(/\d+/g)||["2017","2","19","0","0","0"],i=new Date(+a[0],+a[1]-1,+a[2],+a[3]||0,+a[4]||0,+a[5]||0);return e.indexOf("Z")>-1&&(i=new Date(i.getTime()-i.getTimezoneOffset()*60*1e3)),i}function pa(e,t){if(je&&Buffer.isBuffer(e)){if(t){if(e[0]==255&&e[1]==254)return pn(e.slice(2).toString("utf16le"));if(e[1]==254&&e[2]==255)return pn(Vu(e.slice(2).toString("binary")))}return e.toString("binary")}if(typeof TextDecoder<"u")try{if(t){if(e[0]==255&&e[1]==254)return pn(new TextDecoder("utf-16le").decode(e.slice(2)));if(e[0]==254&&e[1]==255)return pn(new TextDecoder("utf-16be").decode(e.slice(2)))}var r={"€":"€","‚":"‚",ƒ:"ƒ","„":"„","…":"…","†":"†","‡":"‡","ˆ":"ˆ","‰":"‰",Š:"Š","‹":"‹",Œ:"Œ",Ž:"Ž","‘":"‘","’":"’","“":"“","”":"”","•":"•","–":"–","—":"—","˜":"˜","™":"™",š:"š","›":"›",œ:"œ",ž:"ž",Ÿ:"Ÿ"};return Array.isArray(e)&&(e=new Uint8Array(e)),new TextDecoder("latin1").decode(e).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g,function(i){return r[i]||i})}catch{}for(var n=[],a=0;a!=e.length;++a)n.push(String.fromCharCode(e[a]));return n.join("")}function ct(e){if(typeof JSON<"u"&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if(typeof e!="object"||e==null)return e;if(e instanceof Date)return new Date(e.getTime());var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=ct(e[r]));return t}function yt(e,t){for(var r="";r.length<t;)r+=e;return r}function Yr(e){var t=Number(e);if(!isNaN(t))return isFinite(t)?t:NaN;if(!/\d/.test(e))return t;var r=1,n=e.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g,function(){return r*=100,""});return!isNaN(t=Number(n))||(n=n.replace(/[(](.*)[)]/,function(a,i){return r=-r,i}),!isNaN(t=Number(n)))?t/r:t}var Uy=["january","february","march","april","may","june","july","august","september","october","november","december"];function Za(e){var t=new Date(e),r=new Date(NaN),n=t.getYear(),a=t.getMonth(),i=t.getDate();if(isNaN(i))return r;var s=e.toLowerCase();if(s.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)){if(s=s.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""),s.length>3&&Uy.indexOf(s)==-1)return r}else if(s.match(/[a-z]/))return r;return n<0||n>8099?r:(a>0||i>1)&&n!=101?t:e.match(/[^-0-9:,\/\\]/)?r:t}var $y=function(){var e="abacaba".split(/(:?b)/i).length==5;return function(r,n,a){if(e||typeof n=="string")return r.split(n);for(var i=r.split(n),s=[i[0]],o=1;o<i.length;++o)s.push(a),s.push(i[o]);return s}}();function dd(e){return e?e.content&&e.type?pa(e.content,!0):e.data?Ui(e.data):e.asNodeBuffer&&je?Ui(e.asNodeBuffer().toString("binary")):e.asBinary?Ui(e.asBinary()):e._data&&e._data.getContent?Ui(pa(Array.prototype.slice.call(e._data.getContent(),0))):null:null}function hd(e){if(!e)return null;if(e.data)return Mu(e.data);if(e.asNodeBuffer&&je)return e.asNodeBuffer();if(e._data&&e._data.getContent){var t=e._data.getContent();return typeof t=="string"?Mu(t):Array.prototype.slice.call(t)}return e.content&&e.type?e.content:null}function Wy(e){return e&&e.name.slice(-4)===".bin"?hd(e):dd(e)}function Pr(e,t){for(var r=e.FullPaths||_t(e.files),n=t.toLowerCase().replace(/[\/]/g,"\\"),a=n.replace(/\\/g,"/"),i=0;i<r.length;++i){var s=r[i].replace(/^Root Entry[\/]/,"").toLowerCase();if(n==s||a==s)return e.files?e.files[r[i]]:e.FileIndex[i]}return null}function Yl(e,t){var r=Pr(e,t);if(r==null)throw new Error("Cannot find file "+t+" in zip");return r}function Ft(e,t,r){if(!r)return Wy(Yl(e,t));if(!t)return null;try{return Ft(e,t)}catch{return null}}function Sr(e,t,r){if(!r)return dd(Yl(e,t));if(!t)return null;try{return Sr(e,t)}catch{return null}}function md(e,t,r){if(!r)return hd(Yl(e,t));if(!t)return null;try{return md(e,t)}catch{return null}}function pd(e){for(var t=e.FullPaths||_t(e.files),r=[],n=0;n<t.length;++n)t[n].slice(-1)!="/"&&r.push(t[n].replace(/^Root Entry[\/]/,""));return r.sort()}function He(e,t,r){if(e.FullPaths){if(typeof r=="string"){var n;return je?n=Rn(r):n=oy(r),Ae.utils.cfb_add(e,t,n)}Ae.utils.cfb_add(e,t,r)}else e.file(t,r)}function ql(){return Ae.utils.cfb_new()}function gd(e,t){switch(t.type){case"base64":return Ae.read(e,{type:"base64"});case"binary":return Ae.read(e,{type:"binary"});case"buffer":case"array":return Ae.read(e,{type:"buffer"})}throw new Error("Unrecognized type "+t.type)}function Gi(e,t){if(e.charAt(0)=="/")return e.slice(1);var r=t.split("/");t.slice(-1)!="/"&&r.pop();for(var n=e.split("/");n.length!==0;){var a=n.shift();a===".."?r.pop():a!=="."&&r.push(a)}return r.join("/")}var Ct=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
`,Hy=/([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g,xd=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg,jy=/<[^>]*>/g,qt=Ct.match(xd)?xd:jy,zy=/<\w*:/,Gy=/<(\/?)\w+:/;function Le(e,t,r){for(var n={},a=0,i=0;a!==e.length&&!((i=e.charCodeAt(a))===32||i===10||i===13);++a);if(t||(n[0]=e.slice(0,a)),a===e.length)return n;var s=e.match(Hy),o=0,c="",f=0,u="",d="",h=1;if(s)for(f=0;f!=s.length;++f){for(d=s[f],i=0;i!=d.length&&d.charCodeAt(i)!==61;++i);for(u=d.slice(0,i).trim();d.charCodeAt(i+1)==32;)++i;for(h=(a=d.charCodeAt(i+1))==34||a==39?1:0,c=d.slice(i+1+h,d.length-h),o=0;o!=u.length&&u.charCodeAt(o)!==58;++o);if(o===u.length)u.indexOf("_")>0&&(u=u.slice(0,u.indexOf("_"))),n[u]=c,r||(n[u.toLowerCase()]=c);else{var m=(o===5&&u.slice(0,5)==="xmlns"?"xmlns":"")+u.slice(o+1);if(n[m]&&u.slice(o-3,o)=="ext")continue;n[m]=c,r||(n[m.toLowerCase()]=c)}}return n}function mn(e){return e.replace(Gy,"<$1")}var vd={"&quot;":'"',"&apos;":"'","&gt;":">","&lt;":"<","&amp;":"&"},Jl=co(vd),Ke=function(){var e=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig,t=/_x([\da-fA-F]{4})_/ig;return function r(n){var a=n+"",i=a.indexOf("<![CDATA[");if(i==-1)return a.replace(e,function(o,c){return vd[o]||String.fromCharCode(parseInt(c,o.indexOf("x")>-1?16:10))||o}).replace(t,function(o,c){return String.fromCharCode(parseInt(c,16))});var s=a.indexOf("]]>");return r(a.slice(0,i))+a.slice(i+9,s)+r(a.slice(s+3))}}(),Zl=/[&<>'"]/g,Xy=/[\u0000-\u0008\u000b-\u001f]/g;function et(e){var t=e+"";return t.replace(Zl,function(r){return Jl[r]}).replace(Xy,function(r){return"_x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+"_"})}function wd(e){return et(e).replace(/ /g,"_x0020_")}var _d=/[\u0000-\u001f]/g;function Ql(e){var t=e+"";return t.replace(Zl,function(r){return Jl[r]}).replace(/\n/g,"<br/>").replace(_d,function(r){return"&#x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+";"})}function Ky(e){var t=e+"";return t.replace(Zl,function(r){return Jl[r]}).replace(_d,function(r){return"&#x"+r.charCodeAt(0).toString(16).toUpperCase()+";"})}var yd=function(){var e=/&#(\d+);/g;function t(r,n){return String.fromCharCode(parseInt(n,10))}return function(n){return n.replace(e,t)}}();function Yy(e){return e.replace(/(\r\n|[\r\n])/g,"&#10;")}function ft(e){switch(e){case 1:case!0:case"1":case"true":case"TRUE":return!0;default:return!1}}function ec(e){for(var t="",r=0,n=0,a=0,i=0,s=0,o=0;r<e.length;){if(n=e.charCodeAt(r++),n<128){t+=String.fromCharCode(n);continue}if(a=e.charCodeAt(r++),n>191&&n<224){s=(n&31)<<6,s|=a&63,t+=String.fromCharCode(s);continue}if(i=e.charCodeAt(r++),n<240){t+=String.fromCharCode((n&15)<<12|(a&63)<<6|i&63);continue}s=e.charCodeAt(r++),o=((n&7)<<18|(a&63)<<12|(i&63)<<6|s&63)-65536,t+=String.fromCharCode(55296+(o>>>10&1023)),t+=String.fromCharCode(56320+(o&1023))}return t}function kd(e){var t=Yn(2*e.length),r,n,a=1,i=0,s=0,o;for(n=0;n<e.length;n+=a)a=1,(o=e.charCodeAt(n))<128?r=o:o<224?(r=(o&31)*64+(e.charCodeAt(n+1)&63),a=2):o<240?(r=(o&15)*4096+(e.charCodeAt(n+1)&63)*64+(e.charCodeAt(n+2)&63),a=3):(a=4,r=(o&7)*262144+(e.charCodeAt(n+1)&63)*4096+(e.charCodeAt(n+2)&63)*64+(e.charCodeAt(n+3)&63),r-=65536,s=55296+(r>>>10&1023),r=56320+(r&1023)),s!==0&&(t[i++]=s&255,t[i++]=s>>>8,s=0),t[i++]=r%256,t[i++]=r>>>8;return t.slice(0,i).toString("ucs2")}function bd(e){return Rn(e,"binary").toString("utf8")}var mo="foo bar baz☃🍣",at=je&&(bd(mo)==ec(mo)&&bd||kd(mo)==ec(mo)&&kd)||ec,pn=je?function(e){return Rn(e,"utf8").toString("binary")}:function(e){for(var t=[],r=0,n=0,a=0;r<e.length;)switch(n=e.charCodeAt(r++),!0){case n<128:t.push(String.fromCharCode(n));break;case n<2048:t.push(String.fromCharCode(192+(n>>6))),t.push(String.fromCharCode(128+(n&63)));break;case(n>=55296&&n<57344):n-=55296,a=e.charCodeAt(r++)-56320+(n<<10),t.push(String.fromCharCode(240+(a>>18&7))),t.push(String.fromCharCode(144+(a>>12&63))),t.push(String.fromCharCode(128+(a>>6&63))),t.push(String.fromCharCode(128+(a&63)));break;default:t.push(String.fromCharCode(224+(n>>12))),t.push(String.fromCharCode(128+(n>>6&63))),t.push(String.fromCharCode(128+(n&63)))}return t.join("")},Xi=function(){var e={};return function(r,n){var a=r+"|"+(n||"");return e[a]?e[a]:e[a]=new RegExp("<(?:\\w+:)?"+r+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)</(?:\\w+:)?'+r+">",n||"")}}(),Cd=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(t){return[new RegExp("&"+t[0]+";","ig"),t[1]]});return function(r){for(var n=r.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+</g,"<").replace(/[\t\n\r ]+/g," ").replace(/<\s*[bB][rR]\s*\/?>/g,`
`).replace(/<[^>]*>/g,""),a=0;a<e.length;++a)n=n.replace(e[a][0],e[a][1]);return n}}(),qy=function(){var e={};return function(r){return e[r]!==void 0?e[r]:e[r]=new RegExp("<(?:vt:)?"+r+">([\\s\\S]*?)</(?:vt:)?"+r+">","g")}}(),Jy=/<\/?(?:vt:)?variant>/g,Zy=/<(?:vt:)([^>]*)>([\s\S]*)</;function Ed(e,t){var r=Le(e),n=e.match(qy(r.baseType))||[],a=[];if(n.length!=r.size){if(t.WTF)throw new Error("unexpected vector length "+n.length+" != "+r.size);return a}return n.forEach(function(i){var s=i.replace(Jy,"").match(Zy);s&&a.push({v:at(s[2]),t:s[1]})}),a}var Sd=/(^\s|\s$|\n)/;function Gt(e,t){return"<"+e+(t.match(Sd)?' xml:space="preserve"':"")+">"+t+"</"+e+">"}function Ki(e){return _t(e).map(function(t){return" "+t+'="'+e[t]+'"'}).join("")}function xe(e,t,r){return"<"+e+(r!=null?Ki(r):"")+(t!=null?(t.match(Sd)?' xml:space="preserve"':"")+">"+t+"</"+e:"/")+">"}function tc(e,t){try{return e.toISOString().replace(/\.\d*/,"")}catch(r){if(t)throw r}return""}function Qy(e,t){switch(typeof e){case"string":var r=xe("vt:lpwstr",et(e));return t&&(r=r.replace(/&quot;/g,"_x0022_")),r;case"number":return xe((e|0)==e?"vt:i4":"vt:r8",et(String(e)));case"boolean":return xe("vt:bool",e?"true":"false")}if(e instanceof Date)return xe("vt:filetime",tc(e));throw new Error("Unable to serialize "+e)}function rc(e){if(je&&Buffer.isBuffer(e))return e.toString("utf8");if(typeof e=="string")return e;if(typeof Uint8Array<"u"&&e instanceof Uint8Array)return at(qn(zl(e)));throw new Error("Bad input format: expected Buffer or string")}var Yi=/<(\/?)([^\s?><!\/:]*:|)([^\s?<>:\/]+)(?:[\s?:\/][^>]*)?>/mg,It={CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",CT:"http://schemas.openxmlformats.org/package/2006/content-types",RELS:"http://schemas.openxmlformats.org/package/2006/relationships",TCMNT:"http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},ga=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"],Tr={o:"urn:schemas-microsoft-com:office:office",x:"urn:schemas-microsoft-com:office:excel",ss:"urn:schemas-microsoft-com:office:spreadsheet",dt:"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882",mv:"http://macVmlSchemaUri",v:"urn:schemas-microsoft-com:vml",html:"http://www.w3.org/TR/REC-html40"};function e2(e,t){for(var r=1-2*(e[t+7]>>>7),n=((e[t+7]&127)<<4)+(e[t+6]>>>4&15),a=e[t+6]&15,i=5;i>=0;--i)a=a*256+e[t+i];return n==2047?a==0?r*(1/0):NaN:(n==0?n=-1022:(n-=1023,a+=Math.pow(2,52)),r*Math.pow(2,n-52)*a)}function t2(e,t,r){var n=(t<0||1/t==-1/0?1:0)<<7,a=0,i=0,s=n?-t:t;isFinite(s)?s==0?a=i=0:(a=Math.floor(Math.log(s)/Math.LN2),i=s*Math.pow(2,52-a),a<=-1023&&(!isFinite(i)||i<Math.pow(2,52))?a=-1022:(i-=Math.pow(2,52),a+=1023)):(a=2047,i=isNaN(t)?26985:0);for(var o=0;o<=5;++o,i/=256)e[r+o]=i&255;e[r+6]=(a&15)<<4|i&15,e[r+7]=a>>4|n}var Td=function(e){for(var t=[],r=10240,n=0;n<e[0].length;++n)if(e[0][n])for(var a=0,i=e[0][n].length;a<i;a+=r)t.push.apply(t,e[0][n].slice(a,a+r));return t},Fd=je?function(e){return e[0].length>0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map(function(t){return Buffer.isBuffer(t)?t:Rn(t)})):Td(e)}:Td,Ad=function(e,t,r){for(var n=[],a=t;a<r;a+=2)n.push(String.fromCharCode(Bn(e,a)));return n.join("").replace(or,"")},nc=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("utf16le",t,r).replace(or,""):Ad(e,t,r)}:Ad,Dd=function(e,t,r){for(var n=[],a=t;a<t+r;++a)n.push(("0"+e[a].toString(16)).slice(-2));return n.join("")},Rd=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("hex",t,t+r):Dd(e,t,r)}:Dd,Od=function(e,t,r){for(var n=[],a=t;a<r;a++)n.push(String.fromCharCode(Qa(e,a)));return n.join("")},qi=je?function(t,r,n){return Buffer.isBuffer(t)?t.toString("utf8",r,n):Od(t,r,n)}:Od,Bd=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Nd=Bd,Id=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Pd=Id,Ld=function(e,t){var r=2*Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Md=Ld,Vd=function(t,r){var n=Fr(t,r);return n>0?nc(t,r+4,r+4+n):""},Ud=Vd,$d=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r):""},Wd=$d,Hd=function(e,t){return e2(e,t)},po=Hd,ac=function(t){return Array.isArray(t)||typeof Uint8Array<"u"&&t instanceof Uint8Array};je&&(Nd=function(t,r){if(!Buffer.isBuffer(t))return Bd(t,r);var n=t.readUInt32LE(r);return n>0?t.toString("utf8",r+4,r+4+n-1):""},Pd=function(t,r){if(!Buffer.isBuffer(t))return Id(t,r);var n=t.readUInt32LE(r);return n>0?t.toString("utf8",r+4,r+4+n-1):""},Md=function(t,r){if(!Buffer.isBuffer(t))return Ld(t,r);var n=2*t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n-1)},Ud=function(t,r){if(!Buffer.isBuffer(t))return Vd(t,r);var n=t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n)},Wd=function(t,r){if(!Buffer.isBuffer(t))return $d(t,r);var n=t.readUInt32LE(r);return t.toString("utf8",r+4,r+4+n)},po=function(t,r){return Buffer.isBuffer(t)?t.readDoubleLE(r):Hd(t,r)},ac=function(t){return Buffer.isBuffer(t)||Array.isArray(t)||typeof Uint8Array<"u"&&t instanceof Uint8Array});var Qa=function(e,t){return e[t]},Bn=function(e,t){return e[t+1]*256+e[t]},r2=function(e,t){var r=e[t+1]*256+e[t];return r<32768?r:(65535-r+1)*-1},Fr=function(e,t){return e[t+3]*(1<<24)+(e[t+2]<<16)+(e[t+1]<<8)+e[t]},xa=function(e,t){return e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t]},n2=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};function Ji(e,t){var r="",n,a,i=[],s,o,c,f;switch(t){case"dbcs":if(f=this.l,je&&Buffer.isBuffer(this))r=this.slice(this.l,this.l+2*e).toString("utf16le");else for(c=0;c<e;++c)r+=String.fromCharCode(Bn(this,f)),f+=2;e*=2;break;case"utf8":r=qi(this,this.l,this.l+e);break;case"utf16le":e*=2,r=nc(this,this.l,this.l+e);break;case"wstr":return Ji.call(this,e,"dbcs");case"lpstr-ansi":r=Nd(this,this.l),e=4+Fr(this,this.l);break;case"lpstr-cp":r=Pd(this,this.l),e=4+Fr(this,this.l);break;case"lpwstr":r=Md(this,this.l),e=4+2*Fr(this,this.l);break;case"lpp4":e=4+Fr(this,this.l),r=Ud(this,this.l),e&2&&(e+=2);break;case"8lpp4":e=4+Fr(this,this.l),r=Wd(this,this.l),e&3&&(e+=4-(e&3));break;case"cstr":for(e=0,r="";(s=Qa(this,this.l+e++))!==0;)i.push(ao(s));r=i.join("");break;case"_wstr":for(e=0,r="";(s=Bn(this,this.l+e))!==0;)i.push(ao(s)),e+=2;e+=2,r=i.join("");break;case"dbcs-cont":for(r="",f=this.l,c=0;c<e;++c){if(this.lens&&this.lens.indexOf(f)!==-1)return s=Qa(this,f),this.l=f+1,o=Ji.call(this,e-c,s?"dbcs-cont":"sbcs-cont"),i.join("")+o;i.push(ao(Bn(this,f))),f+=2}r=i.join(""),e*=2;break;case"cpstr":case"sbcs-cont":for(r="",f=this.l,c=0;c!=e;++c){if(this.lens&&this.lens.indexOf(f)!==-1)return s=Qa(this,f),this.l=f+1,o=Ji.call(this,e-c,s?"dbcs-cont":"sbcs-cont"),i.join("")+o;i.push(ao(Qa(this,f))),f+=1}r=i.join("");break;default:switch(e){case 1:return n=Qa(this,this.l),this.l++,n;case 2:return n=(t==="i"?r2:Bn)(this,this.l),this.l+=2,n;case 4:case-4:return t==="i"||!(this[this.l+3]&128)?(n=(e>0?xa:n2)(this,this.l),this.l+=4,n):(a=Fr(this,this.l),this.l+=4,a);case 8:case-8:if(t==="f")return e==8?a=po(this,this.l):a=po([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0),this.l+=8,a;e=8;case 16:r=Rd(this,this.l,e);break}}return this.l+=e,r}var a2=function(e,t,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24&255},i2=function(e,t,r){e[r]=t&255,e[r+1]=t>>8&255,e[r+2]=t>>16&255,e[r+3]=t>>24&255},s2=function(e,t,r){e[r]=t&255,e[r+1]=t>>>8&255};function o2(e,t,r){var n=0,a=0;if(r==="dbcs"){for(a=0;a!=t.length;++a)s2(this,t.charCodeAt(a),this.l+2*a);n=2*t.length}else if(r==="sbcs"){for(t=t.replace(/[^\x00-\x7F]/g,"_"),a=0;a!=t.length;++a)this[this.l+a]=t.charCodeAt(a)&255;n=t.length}else if(r==="hex"){for(;a<e;++a)this[this.l++]=parseInt(t.slice(2*a,2*a+2),16)||0;return this}else if(r==="utf16le"){var i=Math.min(this.l+e,this.length);for(a=0;a<Math.min(t.length,e);++a){var s=t.charCodeAt(a);this[this.l++]=s&255,this[this.l++]=s>>8}for(;this.l<i;)this[this.l++]=0;return this}else switch(e){case 1:n=1,this[this.l]=t&255;break;case 2:n=2,this[this.l]=t&255,t>>>=8,this[this.l+1]=t&255;break;case 3:n=3,this[this.l]=t&255,t>>>=8,this[this.l+1]=t&255,t>>>=8,this[this.l+2]=t&255;break;case 4:n=4,a2(this,t,this.l);break;case 8:if(n=8,r==="f"){t2(this,t,this.l);break}case 16:break;case-4:n=4,i2(this,t,this.l);break}return this.l+=n,this}function jd(e,t){var r=Rd(this,this.l,e.length>>1);if(r!==e)throw new Error(t+"Expected "+e+" saw "+r);this.l+=e.length>>1}function Xt(e,t){e.l=t,e.read_shift=Ji,e.chk=jd,e.write_shift=o2}function Jt(e,t){e.l+=t}function se(e){var t=Yn(e);return Xt(t,0),t}function Nn(e,t,r){if(e){var n,a,i;Xt(e,e.l||0);for(var s=e.length,o=0,c=0;e.l<s;){o=e.read_shift(1),o&128&&(o=(o&127)+((e.read_shift(1)&127)<<7));var f=gs[o]||gs[65535];for(n=e.read_shift(1),i=n&127,a=1;a<4&&n&128;++a)i+=((n=e.read_shift(1))&127)<<7*a;c=e.l+i;var u=f.f&&f.f(e,i,r);if(e.l=c,t(u,f,o))return}}}function pr(){var e=[],t=je?256:2048,r=function(f){var u=se(f);return Xt(u,0),u},n=r(t),a=function(){n&&(n.length>n.l&&(n=n.slice(0,n.l),n.l=n.length),n.length>0&&e.push(n),n=null)},i=function(f){return n&&f<n.length-n.l?n:(a(),n=r(Math.max(f+1,t)))},s=function(){return a(),Mt(e)},o=function(f){a(),n=f,n.l==null&&(n.l=n.length),i(t)};return{next:i,push:o,end:s,_bufs:e}}function fe(e,t,r,n){var a=+t,i;if(!isNaN(a)){n||(n=gs[a].p||(r||[]).length||0),i=1+(a>=128?1:0)+1,n>=128&&++i,n>=16384&&++i,n>=2097152&&++i;var s=e.next(i);a<=127?s.write_shift(1,a):(s.write_shift(1,(a&127)+128),s.write_shift(1,a>>7));for(var o=0;o!=4;++o)if(n>=128)s.write_shift(1,(n&127)+128),n>>=7;else{s.write_shift(1,n);break}n>0&&ac(r)&&e.push(r)}}function Zi(e,t,r){var n=ct(e);if(t.s?(n.cRel&&(n.c+=t.s.c),n.rRel&&(n.r+=t.s.r)):(n.cRel&&(n.c+=t.c),n.rRel&&(n.r+=t.r)),!r||r.biff<12){for(;n.c>=256;)n.c-=256;for(;n.r>=65536;)n.r-=65536}return n}function zd(e,t,r){var n=ct(e);return n.s=Zi(n.s,t.s,r),n.e=Zi(n.e,t.s,r),n}function Qi(e,t){if(e.cRel&&e.c<0)for(e=ct(e);e.c<0;)e.c+=t>8?16384:256;if(e.rRel&&e.r<0)for(e=ct(e);e.r<0;)e.r+=t>8?1048576:t>5?65536:16384;var r=Ne(e);return!e.cRel&&e.cRel!=null&&(r=f2(r)),!e.rRel&&e.rRel!=null&&(r=l2(r)),r}function ic(e,t){return e.s.r==0&&!e.s.rRel&&e.e.r==(t.biff>=12?1048575:t.biff>=8?65536:16384)&&!e.e.rRel?(e.s.cRel?"":"$")+mt(e.s.c)+":"+(e.e.cRel?"":"$")+mt(e.e.c):e.s.c==0&&!e.s.cRel&&e.e.c==(t.biff>=12?16383:255)&&!e.e.cRel?(e.s.rRel?"":"$")+Et(e.s.r)+":"+(e.e.rRel?"":"$")+Et(e.e.r):Qi(e.s,t.biff)+":"+Qi(e.e,t.biff)}function sc(e){return parseInt(c2(e),10)-1}function Et(e){return""+(e+1)}function l2(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function c2(e){return e.replace(/\$(\d+)$/,"$1")}function oc(e){for(var t=u2(e),r=0,n=0;n!==t.length;++n)r=26*r+t.charCodeAt(n)-64;return r-1}function mt(e){if(e<0)throw new Error("invalid column "+e);var t="";for(++e;e;e=Math.floor((e-1)/26))t=String.fromCharCode((e-1)%26+65)+t;return t}function f2(e){return e.replace(/^([A-Z])/,"$$$1")}function u2(e){return e.replace(/^\$([A-Z])/,"$1")}function d2(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function pt(e){for(var t=0,r=0,n=0;n<e.length;++n){var a=e.charCodeAt(n);a>=48&&a<=57?t=10*t+(a-48):a>=65&&a<=90&&(r=26*r+(a-64))}return{c:r-1,r:t-1}}function Ne(e){for(var t=e.c+1,r="";t;t=(t-1)/26|0)r=String.fromCharCode((t-1)%26+65)+r;return r+(e.r+1)}function gr(e){var t=e.indexOf(":");return t==-1?{s:pt(e),e:pt(e)}:{s:pt(e.slice(0,t)),e:pt(e.slice(t+1))}}function We(e,t){return typeof t>"u"||typeof t=="number"?We(e.s,e.e):(typeof e!="string"&&(e=Ne(e)),typeof t!="string"&&(t=Ne(t)),e==t?e:e+":"+t)}function Ye(e){var t={s:{c:0,r:0},e:{c:0,r:0}},r=0,n=0,a=0,i=e.length;for(r=0;n<i&&!((a=e.charCodeAt(n)-64)<1||a>26);++n)r=26*r+a;for(t.s.c=--r,r=0;n<i&&!((a=e.charCodeAt(n)-48)<0||a>9);++n)r=10*r+a;if(t.s.r=--r,n===i||a!=10)return t.e.c=t.s.c,t.e.r=t.s.r,t;for(++n,r=0;n!=i&&!((a=e.charCodeAt(n)-64)<1||a>26);++n)r=26*r+a;for(t.e.c=--r,r=0;n!=i&&!((a=e.charCodeAt(n)-48)<0||a>9);++n)r=10*r+a;return t.e.r=--r,t}function Gd(e,t){var r=e.t=="d"&&t instanceof Date;if(e.z!=null)try{return e.w=Er(e.z,r?Nt(t):t)}catch{}try{return e.w=Er((e.XF||{}).numFmtId||(r?14:0),r?Nt(t):t)}catch{return""+t}}function In(e,t,r){return e==null||e.t==null||e.t=="z"?"":e.w!==void 0?e.w:(e.t=="d"&&!e.z&&r&&r.dateNF&&(e.z=r.dateNF),e.t=="e"?Pn[e.v]||e.v:t==null?Gd(e,e.v):Gd(e,t))}function Qn(e,t){var r=t&&t.sheet?t.sheet:"Sheet1",n={};return n[r]=e,{SheetNames:[r],Sheets:n}}function Xd(e,t,r){var n=r||{},a=e?Array.isArray(e):n.dense,i=e||(a?[]:{}),s=0,o=0;if(i&&n.origin!=null){if(typeof n.origin=="number")s=n.origin;else{var c=typeof n.origin=="string"?pt(n.origin):n.origin;s=c.r,o=c.c}i["!ref"]||(i["!ref"]="A1:A1")}var f={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var u=Ye(i["!ref"]);f.s.c=u.s.c,f.s.r=u.s.r,f.e.c=Math.max(f.e.c,u.e.c),f.e.r=Math.max(f.e.r,u.e.r),s==-1&&(f.e.r=s=u.e.r+1)}for(var d=0;d!=t.length;++d)if(t[d]){if(!Array.isArray(t[d]))throw new Error("aoa_to_sheet expects an array of arrays");for(var h=0;h!=t[d].length;++h)if(!(typeof t[d][h]>"u")){var m={v:t[d][h]},g=s+d,p=o+h;if(f.s.r>g&&(f.s.r=g),f.s.c>p&&(f.s.c=p),f.e.r<g&&(f.e.r=g),f.e.c<p&&(f.e.c=p),t[d][h]&&typeof t[d][h]=="object"&&!Array.isArray(t[d][h])&&!(t[d][h]instanceof Date))m=t[d][h];else if(Array.isArray(m.v)&&(m.f=t[d][h][1],m.v=m.v[0]),m.v===null)if(m.f)m.t="n";else if(n.nullError)m.t="e",m.v=0;else if(n.sheetStubs)m.t="z";else continue;else typeof m.v=="number"?m.t="n":typeof m.v=="boolean"?m.t="b":m.v instanceof Date?(m.z=n.dateNF||Oe[14],n.cellDates?(m.t="d",m.w=Er(m.z,Nt(m.v))):(m.t="n",m.v=Nt(m.v),m.w=Er(m.z,m.v))):m.t="s";if(a)i[g]||(i[g]=[]),i[g][p]&&i[g][p].z&&(m.z=i[g][p].z),i[g][p]=m;else{var x=Ne({c:p,r:g});i[x]&&i[x].z&&(m.z=i[x].z),i[x]=m}}}return f.s.c<1e7&&(i["!ref"]=We(f)),i}function ei(e,t){return Xd(null,e,t)}function h2(e){return e.read_shift(4,"i")}function qr(e,t){return t||(t=se(4)),t.write_shift(4,e),t}function Zt(e){var t=e.read_shift(4);return t===0?"":e.read_shift(t,"dbcs")}function Vt(e,t){var r=!1;return t==null&&(r=!0,t=se(4+2*e.length)),t.write_shift(4,e.length),e.length>0&&t.write_shift(0,e,"dbcs"),r?t.slice(0,t.l):t}function m2(e){return{ich:e.read_shift(2),ifnt:e.read_shift(2)}}function p2(e,t){return t||(t=se(4)),t.write_shift(2,e.ich||0),t.write_shift(2,e.ifnt||0),t}function lc(e,t){var r=e.l,n=e.read_shift(1),a=Zt(e),i=[],s={t:a,h:a};if(n&1){for(var o=e.read_shift(4),c=0;c!=o;++c)i.push(m2(e));s.r=i}else s.r=[{ich:0,ifnt:0}];return e.l=r+t,s}function g2(e,t){var r=!1;return t==null&&(r=!0,t=se(15+4*e.t.length)),t.write_shift(1,0),Vt(e.t,t),r?t.slice(0,t.l):t}var x2=lc;function v2(e,t){var r=!1;return t==null&&(r=!0,t=se(23+4*e.t.length)),t.write_shift(1,1),Vt(e.t,t),t.write_shift(4,1),p2({ich:0,ifnt:0},t),r?t.slice(0,t.l):t}function Lr(e){var t=e.read_shift(4),r=e.read_shift(2);return r+=e.read_shift(1)<<16,e.l++,{c:t,iStyleRef:r}}function va(e,t){return t==null&&(t=se(8)),t.write_shift(-4,e.c),t.write_shift(3,e.iStyleRef||e.s),t.write_shift(1,0),t}function wa(e){var t=e.read_shift(2);return t+=e.read_shift(1)<<16,e.l++,{c:-1,iStyleRef:t}}function _a(e,t){return t==null&&(t=se(4)),t.write_shift(3,e.iStyleRef||e.s),t.write_shift(1,0),t}var w2=Zt,Kd=Vt;function cc(e){var t=e.read_shift(4);return t===0||t===4294967295?"":e.read_shift(t,"dbcs")}function go(e,t){var r=!1;return t==null&&(r=!0,t=se(127)),t.write_shift(4,e.length>0?e.length:4294967295),e.length>0&&t.write_shift(0,e,"dbcs"),r?t.slice(0,t.l):t}var _2=Zt,fc=cc,uc=go;function dc(e){var t=e.slice(e.l,e.l+4),r=t[0]&1,n=t[0]&2;e.l+=4;var a=n===0?po([0,0,0,0,t[0]&252,t[1],t[2],t[3]],0):xa(t,0)>>2;return r?a/100:a}function Yd(e,t){t==null&&(t=se(4));var r=0,n=0,a=e*100;if(e==(e|0)&&e>=-(1<<29)&&e<1<<29?n=1:a==(a|0)&&a>=-(1<<29)&&a<1<<29&&(n=1,r=1),n)t.write_shift(-4,((r?a:e)<<2)+(r+2));else throw new Error("unsupported RkNumber "+e)}function qd(e){var t={s:{},e:{}};return t.s.r=e.read_shift(4),t.e.r=e.read_shift(4),t.s.c=e.read_shift(4),t.e.c=e.read_shift(4),t}function y2(e,t){return t||(t=se(16)),t.write_shift(4,e.s.r),t.write_shift(4,e.e.r),t.write_shift(4,e.s.c),t.write_shift(4,e.e.c),t}var ya=qd,ti=y2;function Qt(e){if(e.length-e.l<8)throw"XLS Xnum Buffer underflow";return e.read_shift(8,"f")}function ka(e,t){return(t||se(8)).write_shift(8,e,"f")}function k2(e){var t={},r=e.read_shift(1),n=r>>>1,a=e.read_shift(1),i=e.read_shift(2,"i"),s=e.read_shift(1),o=e.read_shift(1),c=e.read_shift(1);switch(e.l++,n){case 0:t.auto=1;break;case 1:t.index=a;var f=ba[a];f&&(t.rgb=as(f));break;case 2:t.rgb=as([s,o,c]);break;case 3:t.theme=a;break}return i!=0&&(t.tint=i>0?i/32767:i/32768),t}function xo(e,t){if(t||(t=se(8)),!e||e.auto)return t.write_shift(4,0),t.write_shift(4,0),t;e.index!=null?(t.write_shift(1,2),t.write_shift(1,e.index)):e.theme!=null?(t.write_shift(1,6),t.write_shift(1,e.theme)):(t.write_shift(1,5),t.write_shift(1,0));var r=e.tint||0;if(r>0?r*=32767:r<0&&(r*=32768),t.write_shift(2,r),!e.rgb||e.theme!=null)t.write_shift(2,0),t.write_shift(1,0),t.write_shift(1,0);else{var n=e.rgb||"FFFFFF";typeof n=="number"&&(n=("000000"+n.toString(16)).slice(-6)),t.write_shift(1,parseInt(n.slice(0,2),16)),t.write_shift(1,parseInt(n.slice(2,4),16)),t.write_shift(1,parseInt(n.slice(4,6),16)),t.write_shift(1,255)}return t}function b2(e){var t=e.read_shift(1);e.l++;var r={fBold:t&1,fItalic:t&2,fUnderline:t&4,fStrikeout:t&8,fOutline:t&16,fShadow:t&32,fCondense:t&64,fExtend:t&128};return r}function C2(e,t){t||(t=se(2));var r=(e.italic?2:0)|(e.strike?8:0)|(e.outline?16:0)|(e.shadow?32:0)|(e.condense?64:0)|(e.extend?128:0);return t.write_shift(1,r),t.write_shift(1,0),t}function Jd(e,t){var r={2:"BITMAP",3:"METAFILEPICT",8:"DIB",14:"ENHMETAFILE"},n=e.read_shift(4);switch(n){case 0:return"";case 4294967295:case 4294967294:return r[e.read_shift(4)]||""}if(n>400)throw new Error("Unsupported Clipboard: "+n.toString(16));return e.l-=4,e.read_shift(0,t==1?"lpstr":"lpwstr")}function E2(e){return Jd(e,1)}function S2(e){return Jd(e,2)}var hc=2,xr=3,vo=11,Zd=12,wo=19,_o=64,T2=65,F2=71,A2=4108,D2=4126,Ut=80,Qd=81,R2=[Ut,Qd],mc={1:{n:"CodePage",t:hc},2:{n:"Category",t:Ut},3:{n:"PresentationFormat",t:Ut},4:{n:"ByteCount",t:xr},5:{n:"LineCount",t:xr},6:{n:"ParagraphCount",t:xr},7:{n:"SlideCount",t:xr},8:{n:"NoteCount",t:xr},9:{n:"HiddenCount",t:xr},10:{n:"MultimediaClipCount",t:xr},11:{n:"ScaleCrop",t:vo},12:{n:"HeadingPairs",t:A2},13:{n:"TitlesOfParts",t:D2},14:{n:"Manager",t:Ut},15:{n:"Company",t:Ut},16:{n:"LinksUpToDate",t:vo},17:{n:"CharacterCount",t:xr},19:{n:"SharedDoc",t:vo},22:{n:"HyperlinksChanged",t:vo},23:{n:"AppVersion",t:xr,p:"version"},24:{n:"DigSig",t:T2},26:{n:"ContentType",t:Ut},27:{n:"ContentStatus",t:Ut},28:{n:"Language",t:Ut},29:{n:"Version",t:Ut},255:{},2147483648:{n:"Locale",t:wo},2147483651:{n:"Behavior",t:wo},1919054434:{}},pc={1:{n:"CodePage",t:hc},2:{n:"Title",t:Ut},3:{n:"Subject",t:Ut},4:{n:"Author",t:Ut},5:{n:"Keywords",t:Ut},6:{n:"Comments",t:Ut},7:{n:"Template",t:Ut},8:{n:"LastAuthor",t:Ut},9:{n:"RevNumber",t:Ut},10:{n:"EditTime",t:_o},11:{n:"LastPrinted",t:_o},12:{n:"CreatedDate",t:_o},13:{n:"ModifiedDate",t:_o},14:{n:"PageCount",t:xr},15:{n:"WordCount",t:xr},16:{n:"CharCount",t:xr},17:{n:"Thumbnail",t:F2},18:{n:"Application",t:Ut},19:{n:"DocSecurity",t:xr},255:{},2147483648:{n:"Locale",t:wo},2147483651:{n:"Behavior",t:wo},1919054434:{}},eh={1:"US",2:"CA",3:"",7:"RU",20:"EG",30:"GR",31:"NL",32:"BE",33:"FR",34:"ES",36:"HU",39:"IT",41:"CH",43:"AT",44:"GB",45:"DK",46:"SE",47:"NO",48:"PL",49:"DE",52:"MX",55:"BR",61:"AU",64:"NZ",66:"TH",81:"JP",82:"KR",84:"VN",86:"CN",90:"TR",105:"JS",213:"DZ",216:"MA",218:"LY",351:"PT",354:"IS",358:"FI",420:"CZ",886:"TW",961:"LB",962:"JO",963:"SY",964:"IQ",965:"KW",966:"SA",971:"AE",972:"IL",974:"QA",981:"IR",65535:"US"},O2=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];function B2(e){return e.map(function(t){return[t>>16&255,t>>8&255,t&255]})}var N2=B2([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),ba=ct(N2),Pn={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"},th={"#NULL!":0,"#DIV/0!":7,"#VALUE!":15,"#REF!":23,"#NAME?":29,"#NUM!":36,"#N/A":42,"#GETTING_DATA":43,"#WTF?":255},gc={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.sheet.macroEnabled.main+xml":"workbooks","application/vnd.ms-excel.sheet.binary.macroEnabled.main":"workbooks","application/vnd.ms-excel.addin.macroEnabled.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":"sheets","application/vnd.ms-excel.worksheet":"sheets","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":"charts","application/vnd.ms-excel.chartsheet":"charts","application/vnd.ms-excel.macrosheet+xml":"macros","application/vnd.ms-excel.macrosheet":"macros","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":"dialogs","application/vnd.ms-excel.dialogsheet":"dialogs","application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml":"strs","application/vnd.ms-excel.sharedStrings":"strs","application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":"styles","application/vnd.ms-excel.styles":"styles","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":"comments","application/vnd.ms-excel.comments":"comments","application/vnd.ms-excel.threadedcomments+xml":"threadedcomments","application/vnd.ms-excel.person+xml":"people","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"metadata","application/vnd.ms-excel.sheetMetadata":"metadata","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"},yo={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},metadata:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml",xlsb:"application/vnd.ms-excel.sheetMetadata"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};function xc(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""}}function I2(e){var t=xc();if(!e||!e.match)return t;var r={};if((e.match(qt)||[]).forEach(function(n){var a=Le(n);switch(a[0].replace(zy,"<")){case"<?xml":break;case"<Types":t.xmlns=a["xmlns"+(a[0].match(/<(\w+):/)||["",""])[1]];break;case"<Default":r[a.Extension]=a.ContentType;break;case"<Override":t[gc[a.ContentType]]!==void 0&&t[gc[a.ContentType]].push(a.PartName);break}}),t.xmlns!==It.CT)throw new Error("Unknown Namespace: "+t.xmlns);return t.calcchain=t.calcchains.length>0?t.calcchains[0]:"",t.sst=t.strs.length>0?t.strs[0]:"",t.style=t.styles.length>0?t.styles[0]:"",t.defaults=r,delete t.calcchains,t}function rh(e,t){var r=Py(gc),n=[],a;n[n.length]=Ct,n[n.length]=xe("Types",null,{xmlns:It.CT,"xmlns:xsd":It.xsd,"xmlns:xsi":It.xsi}),n=n.concat([["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels","application/vnd.openxmlformats-package.relationships+xml"]].map(function(c){return xe("Default",null,{Extension:c[0],ContentType:c[1]})}));var i=function(c){e[c]&&e[c].length>0&&(a=e[c][0],n[n.length]=xe("Override",null,{PartName:(a[0]=="/"?"":"/")+a,ContentType:yo[c][t.bookType]||yo[c].xlsx}))},s=function(c){(e[c]||[]).forEach(function(f){n[n.length]=xe("Override",null,{PartName:(f[0]=="/"?"":"/")+f,ContentType:yo[c][t.bookType]||yo[c].xlsx})})},o=function(c){(e[c]||[]).forEach(function(f){n[n.length]=xe("Override",null,{PartName:(f[0]=="/"?"":"/")+f,ContentType:r[c][0]})})};return i("workbooks"),s("sheets"),s("charts"),o("themes"),["strs","styles"].forEach(i),["coreprops","extprops","custprops"].forEach(o),o("vba"),o("comments"),o("threadedcomments"),o("drawings"),s("metadata"),o("people"),n.length>2&&(n[n.length]="</Types>",n[1]=n[1].replace("/>",">")),n.join("")}var ze={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument",HLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",VML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",CMNT:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties",SST:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",STY:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",THEME:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",CHART:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",CHARTEX:"http://schemas.microsoft.com/office/2014/relationships/chartEx",CS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",WS:["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"],DS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",MS:"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",IMG:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",DRAW:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",XLMETA:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata",TCMNT:"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment",PEOPLE:"http://schemas.microsoft.com/office/2017/10/relationships/person",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function es(e){var t=e.lastIndexOf("/");return e.slice(0,t+1)+"_rels/"+e.slice(t+1)+".rels"}function ts(e,t){var r={"!id":{}};if(!e)return r;t.charAt(0)!=="/"&&(t="/"+t);var n={};return(e.match(qt)||[]).forEach(function(a){var i=Le(a);if(i[0]==="<Relationship"){var s={};s.Type=i.Type,s.Target=i.Target,s.Id=i.Id,i.TargetMode&&(s.TargetMode=i.TargetMode);var o=i.TargetMode==="External"?i.Target:Gi(i.Target,t);r[o]=s,n[i.Id]=s}}),r["!id"]=n,r}function ri(e){var t=[Ct,xe("Relationships",null,{xmlns:It.RELS})];return _t(e["!id"]).forEach(function(r){t[t.length]=xe("Relationship",null,e["!id"][r])}),t.length>2&&(t[t.length]="</Relationships>",t[1]=t[1].replace("/>",">")),t.join("")}function tt(e,t,r,n,a,i){if(a||(a={}),e["!id"]||(e["!id"]={}),e["!idx"]||(e["!idx"]=1),t<0)for(t=e["!idx"];e["!id"]["rId"+t];++t);if(e["!idx"]=t+1,a.Id="rId"+t,a.Type=n,a.Target=r,i?a.TargetMode=i:[ze.HLINK,ze.XPATH,ze.XMISS].indexOf(a.Type)>-1&&(a.TargetMode="External"),e["!id"][a.Id])throw new Error("Cannot rewrite rId "+t);return e["!id"][a.Id]=a,e[("/"+a.Target).replace("//","/")]=a,t}var P2="application/vnd.oasis.opendocument.spreadsheet";function L2(e,t){for(var r=rc(e),n,a;n=Yi.exec(r);)switch(n[3]){case"manifest":break;case"file-entry":if(a=Le(n[0],!1),a.path=="/"&&a.type!==P2)throw new Error("This OpenDocument is not a spreadsheet");break;case"encryption-data":case"algorithm":case"start-key-generation":case"key-derivation":throw new Error("Unsupported ODS Encryption");default:if(t&&t.WTF)throw n}}function M2(e){var t=[Ct];t.push(`<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
`),t.push(` <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
`);for(var r=0;r<e.length;++r)t.push(' <manifest:file-entry manifest:full-path="'+e[r][0]+'" manifest:media-type="'+e[r][1]+`"/>
`);return t.push("</manifest:manifest>"),t.join("")}function nh(e,t,r){return[' <rdf:Description rdf:about="'+e+`">
`,' <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/'+(r||"odf")+"#"+t+`"/>
`,` </rdf:Description>
`].join("")}function V2(e,t){return[' <rdf:Description rdf:about="'+e+`">
`,' <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="'+t+`"/>
`,` </rdf:Description>
`].join("")}function U2(e){var t=[Ct];t.push(`<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
`);for(var r=0;r!=e.length;++r)t.push(nh(e[r][0],e[r][1])),t.push(V2("",e[r][0]));return t.push(nh("","Document","pkg")),t.push("</rdf:RDF>"),t.join("")}function ah(){return'<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2"><office:meta><meta:generator>SheetJS '+no.version+"</meta:generator></office:meta></office:document-meta>"}var Mr=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]],$2=function(){for(var e=new Array(Mr.length),t=0;t<Mr.length;++t){var r=Mr[t],n="(?:"+r[0].slice(0,r[0].indexOf(":"))+":)"+r[0].slice(r[0].indexOf(":")+1);e[t]=new RegExp("<"+n+"[^>]*>([\\s\\S]*?)</"+n+">")}return e}();function ih(e){var t={};e=at(e);for(var r=0;r<Mr.length;++r){var n=Mr[r],a=e.match($2[r]);a!=null&&a.length>0&&(t[n[1]]=Ke(a[1])),n[2]==="date"&&t[n[1]]&&(t[n[1]]=lt(t[n[1]]))}return t}function vc(e,t,r,n,a){a[e]!=null||t==null||t===""||(a[e]=t,t=et(t),n[n.length]=r?xe(e,t,r):Gt(e,t))}function sh(e,t){var r=t||{},n=[Ct,xe("cp:coreProperties",null,{"xmlns:cp":It.CORE_PROPS,"xmlns:dc":It.dc,"xmlns:dcterms":It.dcterms,"xmlns:dcmitype":It.dcmitype,"xmlns:xsi":It.xsi})],a={};if(!e&&!r.Props)return n.join("");e&&(e.CreatedDate!=null&&vc("dcterms:created",typeof e.CreatedDate=="string"?e.CreatedDate:tc(e.CreatedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a),e.ModifiedDate!=null&&vc("dcterms:modified",typeof e.ModifiedDate=="string"?e.ModifiedDate:tc(e.ModifiedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a));for(var i=0;i!=Mr.length;++i){var s=Mr[i],o=r.Props&&r.Props[s[1]]!=null?r.Props[s[1]]:e?e[s[1]]:null;o===!0?o="1":o===!1?o="0":typeof o=="number"&&(o=String(o)),o!=null&&vc(s[0],o,null,n,a)}return n.length>2&&(n[n.length]="</cp:coreProperties>",n[1]=n[1].replace("/>",">")),n.join("")}var Ca=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]],oh=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function lh(e,t,r,n){var a=[];if(typeof e=="string")a=Ed(e,n);else for(var i=0;i<e.length;++i)a=a.concat(e[i].map(function(u){return{v:u}}));var s=typeof t=="string"?Ed(t,n).map(function(u){return u.v}):t,o=0,c=0;if(s.length>0)for(var f=0;f!==a.length;f+=2){switch(c=+a[f+1].v,a[f].v){case"Worksheets":case"工作表":case"Листы":case"أوراق العمل":case"ワークシート":case"גליונות עבודה":case"Arbeitsblätter":case"Çalışma Sayfaları":case"Feuilles de calcul":case"Fogli di lavoro":case"Folhas de cálculo":case"Planilhas":case"Regneark":case"Hojas de cálculo":case"Werkbladen":r.Worksheets=c,r.SheetNames=s.slice(o,o+c);break;case"Named Ranges":case"Rangos con nombre":case"名前付き一覧":case"Benannte Bereiche":case"Navngivne områder":r.NamedRanges=c,r.DefinedNames=s.slice(o,o+c);break;case"Charts":case"Diagramme":r.Chartsheets=c,r.ChartNames=s.slice(o,o+c);break}o+=c}}function W2(e,t,r){var n={};return t||(t={}),e=at(e),Ca.forEach(function(a){var i=(e.match(Xi(a[0]))||[])[1];switch(a[2]){case"string":i&&(t[a[1]]=Ke(i));break;case"bool":t[a[1]]=i==="true";break;case"raw":var s=e.match(new RegExp("<"+a[0]+"[^>]*>([\\s\\S]*?)</"+a[0]+">"));s&&s.length>0&&(n[a[1]]=s[1]);break}}),n.HeadingPairs&&n.TitlesOfParts&&lh(n.HeadingPairs,n.TitlesOfParts,t,r),t}function ch(e){var t=[],r=xe;return e||(e={}),e.Application="SheetJS",t[t.length]=Ct,t[t.length]=xe("Properties",null,{xmlns:It.EXT_PROPS,"xmlns:vt":It.vt}),Ca.forEach(function(n){if(e[n[1]]!==void 0){var a;switch(n[2]){case"string":a=et(String(e[n[1]]));break;case"bool":a=e[n[1]]?"true":"false";break}a!==void 0&&(t[t.length]=r(n[0],a))}}),t[t.length]=r("HeadingPairs",r("vt:vector",r("vt:variant","<vt:lpstr>Worksheets</vt:lpstr>")+r("vt:variant",r("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"})),t[t.length]=r("TitlesOfParts",r("vt:vector",e.SheetNames.map(function(n){return"<vt:lpstr>"+et(n)+"</vt:lpstr>"}).join(""),{size:e.Worksheets,baseType:"lpstr"})),t.length>2&&(t[t.length]="</Properties>",t[1]=t[1].replace("/>",">")),t.join("")}var H2=/<[^>]+>[^<]*/g;function j2(e,t){var r={},n="",a=e.match(H2);if(a)for(var i=0;i!=a.length;++i){var s=a[i],o=Le(s);switch(o[0]){case"<?xml":break;case"<Properties":break;case"<property":n=Ke(o.name);break;case"</property>":n=null;break;default:if(s.indexOf("<vt:")===0){var c=s.split(">"),f=c[0].slice(4),u=c[1];switch(f){case"lpstr":case"bstr":case"lpwstr":r[n]=Ke(u);break;case"bool":r[n]=ft(u);break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":r[n]=parseInt(u,10);break;case"r4":case"r8":case"decimal":r[n]=parseFloat(u);break;case"filetime":case"date":r[n]=lt(u);break;case"cy":case"error":r[n]=Ke(u);break;default:if(f.slice(-1)=="/")break;t.WTF&&typeof console<"u"&&console.warn("Unexpected",s,f,c)}}else if(s.slice(0,2)!=="</"){if(t.WTF)throw new Error(s)}}}return r}function fh(e){var t=[Ct,xe("Properties",null,{xmlns:It.CUST_PROPS,"xmlns:vt":It.vt})];if(!e)return t.join("");var r=1;return _t(e).forEach(function(a){++r,t[t.length]=xe("property",Qy(e[a],!0),{fmtid:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:r,name:et(a)})}),t.length>2&&(t[t.length]="</Properties>",t[1]=t[1].replace("/>",">")),t.join("")}var wc={Title:"Title",Subject:"Subject",Author:"Author",Keywords:"Keywords",Comments:"Description",LastAuthor:"LastAuthor",RevNumber:"Revision",Application:"AppName",LastPrinted:"LastPrinted",CreatedDate:"Created",ModifiedDate:"LastSaved",Category:"Category",Manager:"Manager",Company:"Company",AppVersion:"Version",ContentStatus:"ContentStatus",Identifier:"Identifier",Language:"Language"},_c;function z2(e,t,r){_c||(_c=co(wc)),t=_c[t]||t,e[t]=r}function G2(e,t){var r=[];return _t(wc).map(function(n){for(var a=0;a<Mr.length;++a)if(Mr[a][1]==n)return Mr[a];for(a=0;a<Ca.length;++a)if(Ca[a][1]==n)return Ca[a];throw n}).forEach(function(n){if(e[n[1]]!=null){var a=t&&t.Props&&t.Props[n[1]]!=null?t.Props[n[1]]:e[n[1]];switch(n[2]){case"date":a=new Date(a).toISOString().replace(/\.\d*Z/,"Z");break}typeof a=="number"?a=String(a):a===!0||a===!1?a=a?"1":"0":a instanceof Date&&(a=new Date(a).toISOString().replace(/\.\d*Z/,"")),r.push(Gt(wc[n[1]]||n[1],a))}}),xe("DocumentProperties",r.join(""),{xmlns:Tr.o})}function X2(e,t){var r=["Worksheets","SheetNames"],n="CustomDocumentProperties",a=[];return e&&_t(e).forEach(function(i){if(Object.prototype.hasOwnProperty.call(e,i)){for(var s=0;s<Mr.length;++s)if(i==Mr[s][1])return;for(s=0;s<Ca.length;++s)if(i==Ca[s][1])return;for(s=0;s<r.length;++s)if(i==r[s])return;var o=e[i],c="string";typeof o=="number"?(c="float",o=String(o)):o===!0||o===!1?(c="boolean",o=o?"1":"0"):o=String(o),a.push(xe(wd(i),o,{"dt:dt":c}))}}),t&&_t(t).forEach(function(i){if(Object.prototype.hasOwnProperty.call(t,i)&&!(e&&Object.prototype.hasOwnProperty.call(e,i))){var s=t[i],o="string";typeof s=="number"?(o="float",s=String(s)):s===!0||s===!1?(o="boolean",s=s?"1":"0"):s instanceof Date?(o="dateTime.tz",s=s.toISOString()):s=String(s),a.push(xe(wd(i),s,{"dt:dt":o}))}}),"<"+n+' xmlns="'+Tr.o+'">'+a.join("")+"</"+n+">"}function yc(e){var t=e.read_shift(4),r=e.read_shift(4);return new Date((r/1e7*Math.pow(2,32)+t/1e7-11644473600)*1e3).toISOString().replace(/\.000/,"")}function K2(e){var t=typeof e=="string"?new Date(Date.parse(e)):e,r=t.getTime()/1e3+11644473600,n=r%Math.pow(2,32),a=(r-n)/Math.pow(2,32);n*=1e7,a*=1e7;var i=n/Math.pow(2,32)|0;i>0&&(n=n%Math.pow(2,32),a+=i);var s=se(8);return s.write_shift(4,n),s.write_shift(4,a),s}function uh(e,t,r){var n=e.l,a=e.read_shift(0,"lpstr-cp");if(r)for(;e.l-n&3;)++e.l;return a}function dh(e,t,r){var n=e.read_shift(0,"lpwstr");return r&&(e.l+=4-(n.length+1&3)&3),n}function hh(e,t,r){return t===31?dh(e):uh(e,t,r)}function kc(e,t,r){return hh(e,t,r===!1?0:4)}function Y2(e,t){if(!t)throw new Error("VtUnalignedString must have positive length");return hh(e,t,0)}function q2(e){for(var t=e.read_shift(4),r=[],n=0;n!=t;++n){var a=e.l;r[n]=e.read_shift(0,"lpwstr").replace(or,""),e.l-a&2&&(e.l+=2)}return r}function J2(e){for(var t=e.read_shift(4),r=[],n=0;n!=t;++n)r[n]=e.read_shift(0,"lpstr-cp").replace(or,"");return r}function Z2(e){var t=e.l,r=ko(e,Qd);e[e.l]==0&&e[e.l+1]==0&&e.l-t&2&&(e.l+=2);var n=ko(e,xr);return[r,n]}function Q2(e){for(var t=e.read_shift(4),r=[],n=0;n<t/2;++n)r.push(Z2(e));return r}function mh(e,t){for(var r=e.read_shift(4),n={},a=0;a!=r;++a){var i=e.read_shift(4),s=e.read_shift(4);n[i]=e.read_shift(s,t===1200?"utf16le":"utf8").replace(or,"").replace(Wi,"!"),t===1200&&s%2&&(e.l+=2)}return e.l&3&&(e.l=e.l>>2+1<<2),n}function ph(e){var t=e.read_shift(4),r=e.slice(e.l,e.l+t);return e.l+=t,(t&3)>0&&(e.l+=4-(t&3)&3),r}function ek(e){var t={};return t.Size=e.read_shift(4),e.l+=t.Size+3-(t.Size-1)%4,t}function ko(e,t,r){var n=e.read_shift(2),a,i=r||{};if(e.l+=2,t!==Zd&&n!==t&&R2.indexOf(t)===-1&&!((t&65534)==4126&&(n&65534)==4126))throw new Error("Expected type "+t+" saw "+n);switch(t===Zd?n:t){case 2:return a=e.read_shift(2,"i"),i.raw||(e.l+=2),a;case 3:return a=e.read_shift(4,"i"),a;case 11:return e.read_shift(4)!==0;case 19:return a=e.read_shift(4),a;case 30:return uh(e,n,4).replace(or,"");case 31:return dh(e);case 64:return yc(e);case 65:return ph(e);case 71:return ek(e);case 80:return kc(e,n,!i.raw).replace(or,"");case 81:return Y2(e,n).replace(or,"");case 4108:return Q2(e);case 4126:case 4127:return n==4127?q2(e):J2(e);default:throw new Error("TypedPropertyValue unrecognized type "+t+" "+n)}}function gh(e,t){var r=se(4),n=se(4);switch(r.write_shift(4,e==80?31:e),e){case 3:n.write_shift(-4,t);break;case 5:n=se(8),n.write_shift(8,t,"f");break;case 11:n.write_shift(4,t?1:0);break;case 64:n=K2(t);break;case 31:case 80:for(n=se(4+2*(t.length+1)+(t.length%2?0:2)),n.write_shift(4,t.length+1),n.write_shift(0,t,"dbcs");n.l!=n.length;)n.write_shift(1,0);break;default:throw new Error("TypedPropertyValue unrecognized type "+e+" "+t)}return Mt([r,n])}function xh(e,t){var r=e.l,n=e.read_shift(4),a=e.read_shift(4),i=[],s=0,o=0,c=-1,f={};for(s=0;s!=a;++s){var u=e.read_shift(4),d=e.read_shift(4);i[s]=[u,d+r]}i.sort(function(y,w){return y[1]-w[1]});var h={};for(s=0;s!=a;++s){if(e.l!==i[s][1]){var m=!0;if(s>0&&t)switch(t[i[s-1][0]].t){case 2:e.l+2===i[s][1]&&(e.l+=2,m=!1);break;case 80:e.l<=i[s][1]&&(e.l=i[s][1],m=!1);break;case 4108:e.l<=i[s][1]&&(e.l=i[s][1],m=!1);break}if((!t||s==0)&&e.l<=i[s][1]&&(m=!1,e.l=i[s][1]),m)throw new Error("Read Error: Expected address "+i[s][1]+" at "+e.l+" :"+s)}if(t){var g=t[i[s][0]];if(h[g.n]=ko(e,g.t,{raw:!0}),g.p==="version"&&(h[g.n]=String(h[g.n]>>16)+"."+("0000"+String(h[g.n]&65535)).slice(-4)),g.n=="CodePage")switch(h[g.n]){case 0:h[g.n]=1252;case 874:case 932:case 936:case 949:case 950:case 1250:case 1251:case 1253:case 1254:case 1255:case 1256:case 1257:case 1258:case 1e4:case 1200:case 1201:case 1252:case 65e3:case-536:case 65001:case-535:Xr(o=h[g.n]>>>0&65535);break;default:throw new Error("Unsupported CodePage: "+h[g.n])}}else if(i[s][0]===1){if(o=h.CodePage=ko(e,hc),Xr(o),c!==-1){var p=e.l;e.l=i[c][1],f=mh(e,o),e.l=p}}else if(i[s][0]===0){if(o===0){c=s,e.l=i[s+1][1];continue}f=mh(e,o)}else{var x=f[i[s][0]],v;switch(e[e.l]){case 65:e.l+=4,v=ph(e);break;case 30:e.l+=4,v=kc(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 31:e.l+=4,v=kc(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 3:e.l+=4,v=e.read_shift(4,"i");break;case 19:e.l+=4,v=e.read_shift(4);break;case 5:e.l+=4,v=e.read_shift(8,"f");break;case 11:e.l+=4,v=St(e,4);break;case 64:e.l+=4,v=lt(yc(e));break;default:throw new Error("unparsed value: "+e[e.l])}h[x]=v}}return e.l=r+n,h}var vh=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"];function tk(e){switch(typeof e){case"boolean":return 11;case"number":return(e|0)==e?3:5;case"string":return 31;case"object":if(e instanceof Date)return 64;break}return-1}function wh(e,t,r){var n=se(8),a=[],i=[],s=8,o=0,c=se(8),f=se(8);if(c.write_shift(4,2),c.write_shift(4,1200),f.write_shift(4,1),i.push(c),a.push(f),s+=8+c.length,!t){f=se(8),f.write_shift(4,0),a.unshift(f);var u=[se(4)];for(u[0].write_shift(4,e.length),o=0;o<e.length;++o){var d=e[o][0];for(c=se(4+4+2*(d.length+1)+(d.length%2?0:2)),c.write_shift(4,o+2),c.write_shift(4,d.length+1),c.write_shift(0,d,"dbcs");c.l!=c.length;)c.write_shift(1,0);u.push(c)}c=Mt(u),i.unshift(c),s+=8+c.length}for(o=0;o<e.length;++o)if(!(t&&!t[e[o][0]])&&!(vh.indexOf(e[o][0])>-1||oh.indexOf(e[o][0])>-1)&&e[o][1]!=null){var h=e[o][1],m=0;if(t){m=+t[e[o][0]];var g=r[m];if(g.p=="version"&&typeof h=="string"){var p=h.split(".");h=(+p[0]<<16)+(+p[1]||0)}c=gh(g.t,h)}else{var x=tk(h);x==-1&&(x=31,h=String(h)),c=gh(x,h)}i.push(c),f=se(8),f.write_shift(4,t?m:2+o),a.push(f),s+=8+c.length}var v=8*(i.length+1);for(o=0;o<i.length;++o)a[o].write_shift(4,v),v+=i[o].length;return n.write_shift(4,s),n.write_shift(4,i.length),Mt([n].concat(a).concat(i))}function _h(e,t,r){var n=e.content;if(!n)return{};Xt(n,0);var a,i,s,o,c=0;n.chk("feff","Byte Order: "),n.read_shift(2);var f=n.read_shift(4),u=n.read_shift(16);if(u!==Ae.utils.consts.HEADER_CLSID&&u!==r)throw new Error("Bad PropertySet CLSID "+u);if(a=n.read_shift(4),a!==1&&a!==2)throw new Error("Unrecognized #Sets: "+a);if(i=n.read_shift(16),o=n.read_shift(4),a===1&&o!==n.l)throw new Error("Length mismatch: "+o+" !== "+n.l);a===2&&(s=n.read_shift(16),c=n.read_shift(4));var d=xh(n,t),h={SystemIdentifier:f};for(var m in d)h[m]=d[m];if(h.FMTID=i,a===1)return h;if(c-n.l==2&&(n.l+=2),n.l!==c)throw new Error("Length mismatch 2: "+n.l+" !== "+c);var g;try{g=xh(n,null)}catch{}for(m in g)h[m]=g[m];return h.FMTID=[i,s],h}function yh(e,t,r,n,a,i){var s=se(a?68:48),o=[s];s.write_shift(2,65534),s.write_shift(2,0),s.write_shift(4,842412599),s.write_shift(16,Ae.utils.consts.HEADER_CLSID,"hex"),s.write_shift(4,a?2:1),s.write_shift(16,t,"hex"),s.write_shift(4,a?68:48);var c=wh(e,r,n);if(o.push(c),a){var f=wh(a,null,null);s.write_shift(16,i,"hex"),s.write_shift(4,68+c.length),o.push(f)}return Mt(o)}function ea(e,t){return e.read_shift(t),null}function rk(e,t){t||(t=se(e));for(var r=0;r<e;++r)t.write_shift(1,0);return t}function nk(e,t,r){for(var n=[],a=e.l+t;e.l<a;)n.push(r(e,a-e.l));if(a!==e.l)throw new Error("Slurp error");return n}function St(e,t){return e.read_shift(t)===1}function cr(e,t){return t||(t=se(2)),t.write_shift(2,+!!e),t}function At(e){return e.read_shift(2,"u")}function Vr(e,t){return t||(t=se(2)),t.write_shift(2,e),t}function kh(e,t){return nk(e,t,At)}function ak(e){var t=e.read_shift(1),r=e.read_shift(1);return r===1?t:t===1}function bh(e,t,r){return r||(r=se(2)),r.write_shift(1,t=="e"?+e:+!!e),r.write_shift(1,t=="e"?1:0),r}function rs(e,t,r){var n=e.read_shift(r&&r.biff>=12?2:1),a="sbcs-cont";if(r&&r.biff>=8,!r||r.biff==8){var i=e.read_shift(1);i&&(a="dbcs-cont")}else r.biff==12&&(a="wstr");r.biff>=2&&r.biff<=5&&(a="cpstr");var s=n?e.read_shift(n,a):"";return s}function ik(e){var t=e.read_shift(2),r=e.read_shift(1),n=r&4,a=r&8,i=1+(r&1),s=0,o,c={};a&&(s=e.read_shift(2)),n&&(o=e.read_shift(4));var f=i==2?"dbcs-cont":"sbcs-cont",u=t===0?"":e.read_shift(t,f);return a&&(e.l+=4*s),n&&(e.l+=o),c.t=u,a||(c.raw="<t>"+c.t+"</t>",c.r=c.t),c}function sk(e){var t=e.t||"",r=se(3+0);r.write_shift(2,t.length),r.write_shift(1,1);var n=se(2*t.length);n.write_shift(2*t.length,t,"utf16le");var a=[r,n];return Mt(a)}function Ea(e,t,r){var n;if(r){if(r.biff>=2&&r.biff<=5)return e.read_shift(t,"cpstr");if(r.biff>=12)return e.read_shift(t,"dbcs-cont")}var a=e.read_shift(1);return a===0?n=e.read_shift(t,"sbcs-cont"):n=e.read_shift(t,"dbcs-cont"),n}function ns(e,t,r){var n=e.read_shift(r&&r.biff==2?1:2);return n===0?(e.l++,""):Ea(e,n,r)}function Sa(e,t,r){if(r.biff>5)return ns(e,t,r);var n=e.read_shift(1);return n===0?(e.l++,""):e.read_shift(n,r.biff<=4||!e.lens?"cpstr":"sbcs-cont")}function Ch(e,t,r){return r||(r=se(3+2*e.length)),r.write_shift(2,e.length),r.write_shift(1,1),r.write_shift(31,e,"utf16le"),r}function ok(e){var t=e.read_shift(1);e.l++;var r=e.read_shift(2);return e.l+=2,[t,r]}function lk(e){var t=e.read_shift(4),r=e.l,n=!1;t>24&&(e.l+=t-24,e.read_shift(16)==="795881f43b1d7f48af2c825dc4852763"&&(n=!0),e.l=r);var a=e.read_shift((n?t-24:t)>>1,"utf16le").replace(or,"");return n&&(e.l+=24),a}function ck(e){for(var t=e.read_shift(2),r="";t-- >0;)r+="../";var n=e.read_shift(0,"lpstr-ansi");if(e.l+=2,e.read_shift(2)!=57005)throw new Error("Bad FileMoniker");var a=e.read_shift(4);if(a===0)return r+n.replace(/\\/g,"/");var i=e.read_shift(4);if(e.read_shift(2)!=3)throw new Error("Bad FileMoniker");var s=e.read_shift(i>>1,"utf16le").replace(or,"");return r+s}function fk(e,t){var r=e.read_shift(16);switch(r){case"e0c9ea79f9bace118c8200aa004ba90b":return lk(e);case"0303000000000000c000000000000046":return ck(e);default:throw new Error("Unsupported Moniker "+r)}}function bo(e){var t=e.read_shift(4),r=t>0?e.read_shift(t,"utf16le").replace(or,""):"";return r}function Eh(e,t){t||(t=se(6+e.length*2)),t.write_shift(4,1+e.length);for(var r=0;r<e.length;++r)t.write_shift(2,e.charCodeAt(r));return t.write_shift(2,0),t}function uk(e,t){var r=e.l+t,n=e.read_shift(4);if(n!==2)throw new Error("Unrecognized streamVersion: "+n);var a=e.read_shift(2);e.l+=2;var i,s,o,c,f="",u,d;a&16&&(i=bo(e,r-e.l)),a&128&&(s=bo(e,r-e.l)),(a&257)===257&&(o=bo(e,r-e.l)),(a&257)===1&&(c=fk(e,r-e.l)),a&8&&(f=bo(e,r-e.l)),a&32&&(u=e.read_shift(16)),a&64&&(d=yc(e)),e.l=r;var h=s||o||c||"";h&&f&&(h+="#"+f),h||(h="#"+f),a&2&&h.charAt(0)=="/"&&h.charAt(1)!="/"&&(h="file://"+h);var m={Target:h};return u&&(m.guid=u),d&&(m.time=d),i&&(m.Tooltip=i),m}function dk(e){var t=se(512),r=0,n=e.Target;n.slice(0,7)=="file://"&&(n=n.slice(7));var a=n.indexOf("#"),i=a>-1?31:23;switch(n.charAt(0)){case"#":i=28;break;case".":i&=-3;break}t.write_shift(4,2),t.write_shift(4,i);var s=[8,6815827,6619237,4849780,83];for(r=0;r<s.length;++r)t.write_shift(4,s[r]);if(i==28)n=n.slice(1),Eh(n,t);else if(i&2){for(s="e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),r=0;r<s.length;++r)t.write_shift(1,parseInt(s[r],16));var o=a>-1?n.slice(0,a):n;for(t.write_shift(4,2*(o.length+1)),r=0;r<o.length;++r)t.write_shift(2,o.charCodeAt(r));t.write_shift(2,0),i&8&&Eh(a>-1?n.slice(a+1):"",t)}else{for(s="03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "),r=0;r<s.length;++r)t.write_shift(1,parseInt(s[r],16));for(var c=0;n.slice(c*3,c*3+3)=="../"||n.slice(c*3,c*3+3)=="..\\";)++c;for(t.write_shift(2,c),t.write_shift(4,n.length-3*c+1),r=0;r<n.length-3*c;++r)t.write_shift(1,n.charCodeAt(r+3*c)&255);for(t.write_shift(1,0),t.write_shift(2,65535),t.write_shift(2,57005),r=0;r<6;++r)t.write_shift(4,0)}return t.slice(0,t.l)}function Sh(e){var t=e.read_shift(1),r=e.read_shift(1),n=e.read_shift(1),a=e.read_shift(1);return[t,r,n,a]}function Th(e,t){var r=Sh(e);return r[3]=0,r}function gn(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2);return{r:t,c:r,ixfe:n}}function Ta(e,t,r,n){return n||(n=se(6)),n.write_shift(2,e),n.write_shift(2,t),n.write_shift(2,r||0),n}function hk(e){var t=e.read_shift(2),r=e.read_shift(2);return e.l+=8,{type:t,flags:r}}function mk(e,t,r){return t===0?"":Sa(e,t,r)}function pk(e,t,r){var n=r.biff>8?4:2,a=e.read_shift(n),i=e.read_shift(n,"i"),s=e.read_shift(n,"i");return[a,i,s]}function Fh(e){var t=e.read_shift(2),r=dc(e);return[t,r]}function gk(e,t,r){e.l+=4,t-=4;var n=e.l+t,a=rs(e,t,r),i=e.read_shift(2);if(n-=e.l,i!==n)throw new Error("Malformed AddinUdf: padding = "+n+" != "+i);return e.l+=i,a}function Co(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2),a=e.read_shift(2);return{s:{c:n,r:t},e:{c:a,r}}}function Ah(e,t){return t||(t=se(8)),t.write_shift(2,e.s.r),t.write_shift(2,e.e.r),t.write_shift(2,e.s.c),t.write_shift(2,e.e.c),t}function Dh(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(1),a=e.read_shift(1);return{s:{c:n,r:t},e:{c:a,r}}}var xk=Dh;function Rh(e){e.l+=4;var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2);return e.l+=12,[r,t,n]}function vk(e){var t={};return e.l+=4,e.l+=16,t.fSharedNote=e.read_shift(2),e.l+=4,t}function wk(e){var t={};return e.l+=4,e.cf=e.read_shift(2),t}function er(e){e.l+=2,e.l+=e.read_shift(2)}var _k={0:er,4:er,5:er,6:er,7:wk,8:er,9:er,10:er,11:er,12:er,13:vk,14:er,15:er,16:er,17:er,18:er,19:er,20:er,21:Rh};function yk(e,t){for(var r=e.l+t,n=[];e.l<r;){var a=e.read_shift(2);e.l-=2;try{n.push(_k[a](e,r-e.l))}catch{return e.l=r,n}}return e.l!=r&&(e.l=r),n}function Eo(e,t){var r={BIFFVer:0,dt:0};switch(r.BIFFVer=e.read_shift(2),t-=2,t>=2&&(r.dt=e.read_shift(2),e.l-=2),r.BIFFVer){case 1536:case 1280:case 1024:case 768:case 512:case 2:case 7:break;default:if(t>6)throw new Error("Unexpected BIFF Ver "+r.BIFFVer)}return e.read_shift(t),r}function bc(e,t,r){var n=1536,a=16;switch(r.bookType){case"biff8":break;case"biff5":n=1280,a=8;break;case"biff4":n=4,a=6;break;case"biff3":n=3,a=6;break;case"biff2":n=2,a=4;break;case"xla":break;default:throw new Error("unsupported BIFF version")}var i=se(a);return i.write_shift(2,n),i.write_shift(2,t),a>4&&i.write_shift(2,29282),a>6&&i.write_shift(2,1997),a>8&&(i.write_shift(2,49161),i.write_shift(2,1),i.write_shift(2,1798),i.write_shift(2,0)),i}function kk(e,t){return t===0||e.read_shift(2),1200}function bk(e,t,r){if(r.enc)return e.l+=t,"";var n=e.l,a=Sa(e,0,r);return e.read_shift(t+n-e.l),a}function Ck(e,t){var r=!t||t.biff==8,n=se(r?112:54);for(n.write_shift(t.biff==8?2:1,7),r&&n.write_shift(1,0),n.write_shift(4,859007059),n.write_shift(4,5458548|(r?0:536870912));n.l<n.length;)n.write_shift(1,r?0:32);return n}function Ek(e,t,r){var n=r&&r.biff==8||t==2?e.read_shift(2):(e.l+=t,0);return{fDialog:n&16,fBelow:n&64,fRight:n&128}}function Sk(e,t,r){var n=e.read_shift(4),a=e.read_shift(1)&3,i=e.read_shift(1);switch(i){case 0:i="Worksheet";break;case 1:i="Macrosheet";break;case 2:i="Chartsheet";break;case 6:i="VBAModule";break}var s=rs(e,0,r);return s.length===0&&(s="Sheet1"),{pos:n,hs:a,dt:i,name:s}}function Tk(e,t){var r=!t||t.biff>=8?2:1,n=se(8+r*e.name.length);n.write_shift(4,e.pos),n.write_shift(1,e.hs||0),n.write_shift(1,e.dt),n.write_shift(1,e.name.length),t.biff>=8&&n.write_shift(1,1),n.write_shift(r*e.name.length,e.name,t.biff<8?"sbcs":"utf16le");var a=n.slice(0,n.l);return a.l=n.l,a}function Fk(e,t){for(var r=e.l+t,n=e.read_shift(4),a=e.read_shift(4),i=[],s=0;s!=a&&e.l<r;++s)i.push(ik(e));return i.Count=n,i.Unique=a,i}function Ak(e,t){var r=se(8);r.write_shift(4,e.Count),r.write_shift(4,e.Unique);for(var n=[],a=0;a<e.length;++a)n[a]=sk(e[a]);var i=Mt([r].concat(n));return i.parts=[r.length].concat(n.map(function(s){return s.length})),i}function Dk(e,t){var r={};return r.dsst=e.read_shift(2),e.l+=t-2,r}function Rk(e){var t={};t.r=e.read_shift(2),t.c=e.read_shift(2),t.cnt=e.read_shift(2)-t.c;var r=e.read_shift(2);e.l+=4;var n=e.read_shift(1);return e.l+=3,n&7&&(t.level=n&7),n&32&&(t.hidden=!0),n&64&&(t.hpt=r/20),t}function Ok(e){var t=hk(e);if(t.type!=2211)throw new Error("Invalid Future Record "+t.type);var r=e.read_shift(4);return r!==0}function Bk(e){return e.read_shift(2),e.read_shift(4)}function Oh(e,t,r){var n=0;r&&r.biff==2||(n=e.read_shift(2));var a=e.read_shift(2);r&&r.biff==2&&(n=1-(a>>15),a&=32767);var i={Unsynced:n&1,DyZero:(n&2)>>1,ExAsc:(n&4)>>2,ExDsc:(n&8)>>3};return[i,a]}function Nk(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2),o=e.read_shift(2),c=e.read_shift(2),f=e.read_shift(2);return{Pos:[t,r],Dim:[n,a],Flags:i,CurTab:s,FirstTab:o,Selected:c,TabRatio:f}}function Ik(){var e=se(18);return e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,29280),e.write_shift(2,17600),e.write_shift(2,56),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,1),e.write_shift(2,500),e}function Pk(e,t,r){if(r&&r.biff>=2&&r.biff<5)return{};var n=e.read_shift(2);return{RTL:n&64}}function Lk(e){var t=se(18),r=1718;return e&&e.RTL&&(r|=64),t.write_shift(2,r),t.write_shift(4,0),t.write_shift(4,64),t.write_shift(4,0),t.write_shift(4,0),t}function Mk(){}function Vk(e,t,r){var n={dyHeight:e.read_shift(2),fl:e.read_shift(2)};switch(r&&r.biff||8){case 2:break;case 3:case 4:e.l+=2;break;default:e.l+=10;break}return n.name=rs(e,0,r),n}function Uk(e,t){var r=e.name||"Arial",n=t&&t.biff==5,a=n?15+r.length:16+2*r.length,i=se(a);return i.write_shift(2,(e.sz||12)*20),i.write_shift(4,0),i.write_shift(2,400),i.write_shift(4,0),i.write_shift(2,0),i.write_shift(1,r.length),n||i.write_shift(1,1),i.write_shift((n?1:2)*r.length,r,n?"sbcs":"utf16le"),i}function $k(e){var t=gn(e);return t.isst=e.read_shift(4),t}function Wk(e,t,r,n){var a=se(10);return Ta(e,t,n,a),a.write_shift(4,r),a}function Hk(e,t,r){r.biffguess&&r.biff==2&&(r.biff=5);var n=e.l+t,a=gn(e);r.biff==2&&e.l++;var i=ns(e,n-e.l,r);return a.val=i,a}function jk(e,t,r,n,a){var i=!a||a.biff==8,s=se(6+2+ +i+(1+i)*r.length);return Ta(e,t,n,s),s.write_shift(2,r.length),i&&s.write_shift(1,1),s.write_shift((1+i)*r.length,r,i?"utf16le":"sbcs"),s}function zk(e,t,r){var n=e.read_shift(2),a=Sa(e,0,r);return[n,a]}function Gk(e,t,r,n){var a=r&&r.biff==5;n||(n=se(a?3+t.length:5+2*t.length)),n.write_shift(2,e),n.write_shift(a?1:2,t.length),a||n.write_shift(1,1),n.write_shift((a?1:2)*t.length,t,a?"sbcs":"utf16le");var i=n.length>n.l?n.slice(0,n.l):n;return i.l==null&&(i.l=i.length),i}var Xk=Sa;function Bh(e,t,r){var n=e.l+t,a=r.biff==8||!r.biff?4:2,i=e.read_shift(a),s=e.read_shift(a),o=e.read_shift(2),c=e.read_shift(2);return e.l=n,{s:{r:i,c:o},e:{r:s,c}}}function Kk(e,t){var r=t.biff==8||!t.biff?4:2,n=se(2*r+6);return n.write_shift(r,e.s.r),n.write_shift(r,e.e.r+1),n.write_shift(2,e.s.c),n.write_shift(2,e.e.c+1),n.write_shift(2,0),n}function Yk(e){var t=e.read_shift(2),r=e.read_shift(2),n=Fh(e);return{r:t,c:r,ixfe:n[0],rknum:n[1]}}function qk(e,t){for(var r=e.l+t-2,n=e.read_shift(2),a=e.read_shift(2),i=[];e.l<r;)i.push(Fh(e));if(e.l!==r)throw new Error("MulRK read error");var s=e.read_shift(2);if(i.length!=s-a+1)throw new Error("MulRK length mismatch");return{r:n,c:a,C:s,rkrec:i}}function Jk(e,t){for(var r=e.l+t-2,n=e.read_shift(2),a=e.read_shift(2),i=[];e.l<r;)i.push(e.read_shift(2));if(e.l!==r)throw new Error("MulBlank read error");var s=e.read_shift(2);if(i.length!=s-a+1)throw new Error("MulBlank length mismatch");return{r:n,c:a,C:s,ixfe:i}}function Zk(e,t,r,n){var a={},i=e.read_shift(4),s=e.read_shift(4),o=e.read_shift(4),c=e.read_shift(2);return a.patternType=O2[o>>26],n.cellStyles&&(a.alc=i&7,a.fWrap=i>>3&1,a.alcV=i>>4&7,a.fJustLast=i>>7&1,a.trot=i>>8&255,a.cIndent=i>>16&15,a.fShrinkToFit=i>>20&1,a.iReadOrder=i>>22&2,a.fAtrNum=i>>26&1,a.fAtrFnt=i>>27&1,a.fAtrAlc=i>>28&1,a.fAtrBdr=i>>29&1,a.fAtrPat=i>>30&1,a.fAtrProt=i>>31&1,a.dgLeft=s&15,a.dgRight=s>>4&15,a.dgTop=s>>8&15,a.dgBottom=s>>12&15,a.icvLeft=s>>16&127,a.icvRight=s>>23&127,a.grbitDiag=s>>30&3,a.icvTop=o&127,a.icvBottom=o>>7&127,a.icvDiag=o>>14&127,a.dgDiag=o>>21&15,a.icvFore=c&127,a.icvBack=c>>7&127,a.fsxButton=c>>14&1),a}function Qk(e,t,r){var n={};return n.ifnt=e.read_shift(2),n.numFmtId=e.read_shift(2),n.flags=e.read_shift(2),n.fStyle=n.flags>>2&1,t-=6,n.data=Zk(e,t,n.fStyle,r),n}function Nh(e,t,r,n){var a=r&&r.biff==5;n||(n=se(a?16:20)),n.write_shift(2,0),e.style?(n.write_shift(2,e.numFmtId||0),n.write_shift(2,65524)):(n.write_shift(2,e.numFmtId||0),n.write_shift(2,t<<4));var i=0;return e.numFmtId>0&&a&&(i|=1024),n.write_shift(4,i),n.write_shift(4,0),a||n.write_shift(4,0),n.write_shift(2,0),n}function eb(e){e.l+=4;var t=[e.read_shift(2),e.read_shift(2)];if(t[0]!==0&&t[0]--,t[1]!==0&&t[1]--,t[0]>7||t[1]>7)throw new Error("Bad Gutters: "+t.join("|"));return t}function tb(e){var t=se(8);return t.write_shift(4,0),t.write_shift(2,e[0]?e[0]+1:0),t.write_shift(2,e[1]?e[1]+1:0),t}function Ih(e,t,r){var n=gn(e);(r.biff==2||t==9)&&++e.l;var a=ak(e);return n.val=a,n.t=a===!0||a===!1?"b":"e",n}function rb(e,t,r,n,a,i){var s=se(8);return Ta(e,t,n,s),bh(r,i,s),s}function nb(e,t,r){r.biffguess&&r.biff==2&&(r.biff=5);var n=gn(e),a=Qt(e);return n.val=a,n}function ab(e,t,r,n){var a=se(14);return Ta(e,t,n,a),ka(r,a),a}var Ph=mk;function ib(e,t,r){var n=e.l+t,a=e.read_shift(2),i=e.read_shift(2);if(r.sbcch=i,i==1025||i==14849)return[i,a];if(i<1||i>255)throw new Error("Unexpected SupBook type: "+i);for(var s=Ea(e,i),o=[];n>e.l;)o.push(ns(e));return[i,a,s,o]}function Lh(e,t,r){var n=e.read_shift(2),a,i={fBuiltIn:n&1,fWantAdvise:n>>>1&1,fWantPict:n>>>2&1,fOle:n>>>3&1,fOleLink:n>>>4&1,cf:n>>>5&1023,fIcon:n>>>15&1};return r.sbcch===14849&&(a=gk(e,t-2,r)),i.body=a||e.read_shift(t-2),typeof a=="string"&&(i.Name=a),i}var sb=["_xlnm.Consolidate_Area","_xlnm.Auto_Open","_xlnm.Auto_Close","_xlnm.Extract","_xlnm.Database","_xlnm.Criteria","_xlnm.Print_Area","_xlnm.Print_Titles","_xlnm.Recorder","_xlnm.Data_Form","_xlnm.Auto_Activate","_xlnm.Auto_Deactivate","_xlnm.Sheet_Title","_xlnm._FilterDatabase"];function Mh(e,t,r){var n=e.l+t,a=e.read_shift(2),i=e.read_shift(1),s=e.read_shift(1),o=e.read_shift(r&&r.biff==2?1:2),c=0;(!r||r.biff>=5)&&(r.biff!=5&&(e.l+=2),c=e.read_shift(2),r.biff==5&&(e.l+=2),e.l+=4);var f=Ea(e,s,r);a&32&&(f=sb[f.charCodeAt(0)]);var u=n-e.l;r&&r.biff==2&&--u;var d=n==e.l||o===0||!(u>0)?[]:yT(e,u,r,o);return{chKey:i,Name:f,itab:c,rgce:d}}function Vh(e,t,r){if(r.biff<8)return ob(e,t,r);for(var n=[],a=e.l+t,i=e.read_shift(r.biff>8?4:2);i--!==0;)n.push(pk(e,r.biff>8?12:6,r));if(e.l!=a)throw new Error("Bad ExternSheet: "+e.l+" != "+a);return n}function ob(e,t,r){e[e.l+1]==3&&e[e.l]++;var n=rs(e,t,r);return n.charCodeAt(0)==3?n.slice(1):n}function lb(e,t,r){if(r.biff<8){e.l+=t;return}var n=e.read_shift(2),a=e.read_shift(2),i=Ea(e,n,r),s=Ea(e,a,r);return[i,s]}function cb(e,t,r){var n=Dh(e);e.l++;var a=e.read_shift(1);return t-=8,[kT(e,t,r),a,n]}function Uh(e,t,r){var n=xk(e);switch(r.biff){case 2:e.l++,t-=7;break;case 3:case 4:e.l+=2,t-=8;break;default:e.l+=6,t-=12}return[n,wT(e,t,r)]}function fb(e){var t=e.read_shift(4)!==0,r=e.read_shift(4)!==0,n=e.read_shift(4);return[t,r,n]}function ub(e,t,r){if(!(r.biff<8)){var n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2),o=Sa(e,0,r);return r.biff<8&&e.read_shift(1),[{r:n,c:a},o,s,i]}}function db(e,t,r){return ub(e,t,r)}function hb(e,t){for(var r=[],n=e.read_shift(2);n--;)r.push(Co(e));return r}function mb(e){var t=se(2+e.length*8);t.write_shift(2,e.length);for(var r=0;r<e.length;++r)Ah(e[r],t);return t}function pb(e,t,r){if(r&&r.biff<8)return xb(e,t,r);var n=Rh(e),a=yk(e,t-22,n[1]);return{cmo:n,ft:a}}var gb={8:function(e,t){var r=e.l+t;e.l+=10;var n=e.read_shift(2);e.l+=4,e.l+=2,e.l+=2,e.l+=2,e.l+=4;var a=e.read_shift(1);return e.l+=a,e.l=r,{fmt:n}}};function xb(e,t,r){e.l+=4;var n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2);e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=6,t-=36;var s=[];return s.push((gb[n]||Jt)(e,t,r)),{cmo:[a,n,i],ft:s}}function vb(e,t,r){var n=e.l,a="";try{e.l+=4;var i=(r.lastobj||{cmo:[0,0]}).cmo[1],s;[0,5,7,11,12,14].indexOf(i)==-1?e.l+=6:s=ok(e,6,r);var o=e.read_shift(2);e.read_shift(2),At(e,2);var c=e.read_shift(2);e.l+=c;for(var f=1;f<e.lens.length-1;++f){if(e.l-n!=e.lens[f])throw new Error("TxO: bad continue record");var u=e[e.l],d=Ea(e,e.lens[f+1]-e.lens[f]-1);if(a+=d,a.length>=(u?o:2*o))break}if(a.length!==o&&a.length!==o*2)throw new Error("cchText: "+o+" != "+a.length);return e.l=n+t,{t:a}}catch{return e.l=n+t,{t:a}}}function wb(e,t){var r=Co(e);e.l+=16;var n=uk(e,t-24);return[r,n]}function _b(e){var t=se(24),r=pt(e[0]);t.write_shift(2,r.r),t.write_shift(2,r.r),t.write_shift(2,r.c),t.write_shift(2,r.c);for(var n="d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),a=0;a<16;++a)t.write_shift(1,parseInt(n[a],16));return Mt([t,dk(e[1])])}function yb(e,t){e.read_shift(2);var r=Co(e),n=e.read_shift((t-10)/2,"dbcs-cont");return n=n.replace(or,""),[r,n]}function kb(e){var t=e[1].Tooltip,r=se(10+2*(t.length+1));r.write_shift(2,2048);var n=pt(e[0]);r.write_shift(2,n.r),r.write_shift(2,n.r),r.write_shift(2,n.c),r.write_shift(2,n.c);for(var a=0;a<t.length;++a)r.write_shift(2,t.charCodeAt(a));return r.write_shift(2,0),r}function bb(e){var t=[0,0],r;return r=e.read_shift(2),t[0]=eh[r]||r,r=e.read_shift(2),t[1]=eh[r]||r,t}function Cb(e){return e||(e=se(4)),e.write_shift(2,1),e.write_shift(2,1),e}function Eb(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(Th(e));return r}function Sb(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(Th(e));return r}function Tb(e){e.l+=2;var t={cxfs:0,crc:0};return t.cxfs=e.read_shift(2),t.crc=e.read_shift(4),t}function $h(e,t,r){if(!r.cellStyles)return Jt(e,t);var n=r&&r.biff>=12?4:2,a=e.read_shift(n),i=e.read_shift(n),s=e.read_shift(n),o=e.read_shift(n),c=e.read_shift(2);n==2&&(e.l+=2);var f={s:a,e:i,w:s,ixfe:o,flags:c};return(r.biff>=5||!r.biff)&&(f.level=c>>8&7),f}function Fb(e,t){var r=se(12);r.write_shift(2,t),r.write_shift(2,t),r.write_shift(2,e.width*256),r.write_shift(2,0);var n=0;return e.hidden&&(n|=1),r.write_shift(1,n),n=e.level||0,r.write_shift(1,n),r.write_shift(2,0),r}function Ab(e,t){var r={};return t<32||(e.l+=16,r.header=Qt(e),r.footer=Qt(e),e.l+=2),r}function Db(e,t,r){var n={area:!1};if(r.biff!=5)return e.l+=t,n;var a=e.read_shift(1);return e.l+=3,a&16&&(n.area=!0),n}function Rb(e){for(var t=se(2*e),r=0;r<e;++r)t.write_shift(2,r+1);return t}var Ob=gn,Bb=kh,Nb=ns;function Ib(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(4),a={fmt:t,env:r,len:n,data:e.slice(e.l,e.l+n)};return e.l+=n,a}function Pb(e,t,r){r.biffguess&&r.biff==5&&(r.biff=2);var n=gn(e);++e.l;var a=Sa(e,t-7,r);return n.t="str",n.val=a,n}function Lb(e){var t=gn(e);++e.l;var r=Qt(e);return t.t="n",t.val=r,t}function Mb(e,t,r){var n=se(15);return xs(n,e,t),n.write_shift(8,r,"f"),n}function Vb(e){var t=gn(e);++e.l;var r=e.read_shift(2);return t.t="n",t.val=r,t}function Ub(e,t,r){var n=se(9);return xs(n,e,t),n.write_shift(2,r),n}function $b(e){var t=e.read_shift(1);return t===0?(e.l++,""):e.read_shift(t,"sbcs-cont")}function Wb(e,t){e.l+=6,e.l+=2,e.l+=1,e.l+=3,e.l+=1,e.l+=t-13}function Hb(e,t,r){var n=e.l+t,a=gn(e),i=e.read_shift(2),s=Ea(e,i,r);return e.l=n,a.t="str",a.val=s,a}var jb=[2,3,48,49,131,139,140,245],Cc=function(){var e={1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127,8:865,9:437,10:850,11:437,13:437,14:850,15:437,16:850,17:437,18:850,19:932,20:850,21:437,22:850,23:865,24:437,25:437,26:850,27:437,28:863,29:850,31:852,34:852,35:852,36:860,37:850,38:866,55:850,64:852,77:936,78:949,79:950,80:874,87:1252,88:1252,89:1252,108:863,134:737,135:852,136:857,204:1257,255:16969},t=co({1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127});function r(o,c){var f=[],u=Yn(1);switch(c.type){case"base64":u=Cr(br(o));break;case"binary":u=Cr(o);break;case"buffer":case"array":u=o;break}Xt(u,0);var d=u.read_shift(1),h=!!(d&136),m=!1,g=!1;switch(d){case 2:break;case 3:break;case 48:m=!0,h=!0;break;case 49:m=!0,h=!0;break;case 131:break;case 139:break;case 140:g=!0;break;case 245:break;default:throw new Error("DBF Unsupported Version: "+d.toString(16))}var p=0,x=521;d==2&&(p=u.read_shift(2)),u.l+=3,d!=2&&(p=u.read_shift(4)),p>1048576&&(p=1e6),d!=2&&(x=u.read_shift(2));var v=u.read_shift(2),y=c.codepage||1252;d!=2&&(u.l+=16,u.read_shift(1),u[u.l]!==0&&(y=e[u[u.l]]),u.l+=1,u.l+=2),g&&(u.l+=36);for(var w=[],b={},R=Math.min(u.length,d==2?521:x-10-(m?264:0)),A=g?32:11;u.l<R&&u[u.l]!=13;)switch(b={},b.name=Xn.utils.decode(y,u.slice(u.l,u.l+A)).replace(/[\u0000\r\n].*$/g,""),u.l+=A,b.type=String.fromCharCode(u.read_shift(1)),d!=2&&!g&&(b.offset=u.read_shift(4)),b.len=u.read_shift(1),d==2&&(b.offset=u.read_shift(2)),b.dec=u.read_shift(1),b.name.length&&w.push(b),d!=2&&(u.l+=g?13:14),b.type){case"B":(!m||b.len!=8)&&c.WTF&&""+b.name+b.type;break;case"G":case"P":c.WTF&&""+b.name+b.type;break;case"+":case"0":case"@":case"C":case"D":case"F":case"I":case"L":case"M":case"N":case"O":case"T":case"Y":break;default:throw new Error("Unknown Field Type: "+b.type)}if(u[u.l]!==13&&(u.l=x-1),u.read_shift(1)!==13)throw new Error("DBF Terminator not found "+u.l+" "+u[u.l]);u.l=x;var k=0,U=0;for(f[0]=[],U=0;U!=w.length;++U)f[0][U]=w[U].name;for(;p-- >0;){if(u[u.l]===42){u.l+=v;continue}for(++u.l,f[++k]=[],U=0,U=0;U!=w.length;++U){var T=u.slice(u.l,u.l+w[U].len);u.l+=w[U].len,Xt(T,0);var j=Xn.utils.decode(y,T);switch(w[U].type){case"C":j.trim().length&&(f[k][U]=j.replace(/\s+$/,""));break;case"D":j.length===8?f[k][U]=new Date(+j.slice(0,4),+j.slice(4,6)-1,+j.slice(6,8)):f[k][U]=j;break;case"F":f[k][U]=parseFloat(j.trim());break;case"+":case"I":f[k][U]=g?T.read_shift(-4,"i")^2147483648:T.read_shift(4,"i");break;case"L":switch(j.trim().toUpperCase()){case"Y":case"T":f[k][U]=!0;break;case"N":case"F":f[k][U]=!1;break;case"":case"?":break;default:throw new Error("DBF Unrecognized L:|"+j+"|")}break;case"M":if(!h)throw new Error("DBF Unexpected MEMO for type "+d.toString(16));f[k][U]="##MEMO##"+(g?parseInt(j.trim(),10):T.read_shift(4));break;case"N":j=j.replace(/\u0000/g,"").trim(),j&&j!="."&&(f[k][U]=+j||0);break;case"@":f[k][U]=new Date(T.read_shift(-8,"f")-621356832e5);break;case"T":f[k][U]=new Date((T.read_shift(4)-2440588)*864e5+T.read_shift(4));break;case"Y":f[k][U]=T.read_shift(4,"i")/1e4+T.read_shift(4,"i")/1e4*Math.pow(2,32);break;case"O":f[k][U]=-T.read_shift(-8,"f");break;case"B":if(m&&w[U].len==8){f[k][U]=T.read_shift(8,"f");break}case"G":case"P":T.l+=w[U].len;break;case"0":if(w[U].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+w[U].type)}}}if(d!=2&&u.l<u.length&&u[u.l++]!=26)throw new Error("DBF EOF Marker missing "+(u.l-1)+" of "+u.length+" "+u[u.l-1].toString(16));return c&&c.sheetRows&&(f=f.slice(0,c.sheetRows)),c.DBF=w,f}function n(o,c){var f=c||{};f.dateNF||(f.dateNF="yyyymmdd");var u=ei(r(o,f),f);return u["!cols"]=f.DBF.map(function(d){return{wch:d.len,DBF:d}}),delete f.DBF,u}function a(o,c){try{return Qn(n(o,c),c)}catch(f){if(c&&c.WTF)throw f}return{SheetNames:[],Sheets:{}}}var i={B:8,C:250,L:1,D:8,"?":0,"":0};function s(o,c){var f=c||{};if(+f.codepage>=0&&Xr(+f.codepage),f.type=="string")throw new Error("Cannot write DBF to JS string");var u=pr(),d=Io(o,{header:1,raw:!0,cellDates:!0}),h=d[0],m=d.slice(1),g=o["!cols"]||[],p=0,x=0,v=0,y=1;for(p=0;p<h.length;++p){if(((g[p]||{}).DBF||{}).name){h[p]=g[p].DBF.name,++v;continue}if(h[p]!=null){if(++v,typeof h[p]=="number"&&(h[p]=h[p].toString(10)),typeof h[p]!="string")throw new Error("DBF Invalid column name "+h[p]+" |"+typeof h[p]+"|");if(h.indexOf(h[p])!==p){for(x=0;x<1024;++x)if(h.indexOf(h[p]+"_"+x)==-1){h[p]+="_"+x;break}}}}var w=Ye(o["!ref"]),b=[],R=[],A=[];for(p=0;p<=w.e.c-w.s.c;++p){var k="",U="",T=0,j=[];for(x=0;x<m.length;++x)m[x][p]!=null&&j.push(m[x][p]);if(j.length==0||h[p]==null){b[p]="?";continue}for(x=0;x<j.length;++x){switch(typeof j[x]){case"number":U="B";break;case"string":U="C";break;case"boolean":U="L";break;case"object":U=j[x]instanceof Date?"D":"C";break;default:U="C"}T=Math.max(T,String(j[x]).length),k=k&&k!=U?"C":U}T>250&&(T=250),U=((g[p]||{}).DBF||{}).type,U=="C"&&g[p].DBF.len>T&&(T=g[p].DBF.len),k=="B"&&U=="N"&&(k="N",A[p]=g[p].DBF.dec,T=g[p].DBF.len),R[p]=k=="C"||U=="N"?T:i[k]||0,y+=R[p],b[p]=k}var G=u.next(32);for(G.write_shift(4,318902576),G.write_shift(4,m.length),G.write_shift(2,296+32*v),G.write_shift(2,y),p=0;p<4;++p)G.write_shift(4,0);for(G.write_shift(4,0|(+t[Lu]||3)<<8),p=0,x=0;p<h.length;++p)if(h[p]!=null){var B=u.next(32),z=(h[p].slice(-10)+"\0\0\0\0\0\0\0\0\0\0\0").slice(0,11);B.write_shift(1,z,"sbcs"),B.write_shift(1,b[p]=="?"?"C":b[p],"sbcs"),B.write_shift(4,x),B.write_shift(1,R[p]||i[b[p]]||0),B.write_shift(1,A[p]||0),B.write_shift(1,2),B.write_shift(4,0),B.write_shift(1,0),B.write_shift(4,0),B.write_shift(4,0),x+=R[p]||i[b[p]]||0}var te=u.next(264);for(te.write_shift(4,13),p=0;p<65;++p)te.write_shift(4,0);for(p=0;p<m.length;++p){var W=u.next(y);for(W.write_shift(1,0),x=0;x<h.length;++x)if(h[x]!=null)switch(b[x]){case"L":W.write_shift(1,m[p][x]==null?63:m[p][x]?84:70);break;case"B":W.write_shift(8,m[p][x]||0,"f");break;case"N":var Y="0";for(typeof m[p][x]=="number"&&(Y=m[p][x].toFixed(A[x]||0)),v=0;v<R[x]-Y.length;++v)W.write_shift(1,32);W.write_shift(1,Y,"sbcs");break;case"D":m[p][x]?(W.write_shift(4,("0000"+m[p][x].getFullYear()).slice(-4),"sbcs"),W.write_shift(2,("00"+(m[p][x].getMonth()+1)).slice(-2),"sbcs"),W.write_shift(2,("00"+m[p][x].getDate()).slice(-2),"sbcs")):W.write_shift(8,"00000000","sbcs");break;case"C":var ae=String(m[p][x]!=null?m[p][x]:"").slice(0,R[x]);for(W.write_shift(1,ae,"sbcs"),v=0;v<R[x]-ae.length;++v)W.write_shift(1,32);break}}return u.next(1).write_shift(1,26),u.end()}return{to_workbook:a,to_sheet:n,from_sheet:s}}(),Wh=function(){var e={AA:"À",BA:"Á",CA:"Â",DA:195,HA:"Ä",JA:197,AE:"È",BE:"É",CE:"Ê",HE:"Ë",AI:"Ì",BI:"Í",CI:"Î",HI:"Ï",AO:"Ò",BO:"Ó",CO:"Ô",DO:213,HO:"Ö",AU:"Ù",BU:"Ú",CU:"Û",HU:"Ü",Aa:"à",Ba:"á",Ca:"â",Da:227,Ha:"ä",Ja:229,Ae:"è",Be:"é",Ce:"ê",He:"ë",Ai:"ì",Bi:"í",Ci:"î",Hi:"ï",Ao:"ò",Bo:"ó",Co:"ô",Do:245,Ho:"ö",Au:"ù",Bu:"ú",Cu:"û",Hu:"ü",KC:"Ç",Kc:"ç",q:"æ",z:"œ",a:"Æ",j:"Œ",DN:209,Dn:241,Hy:255,S:169,c:170,R:174,"B ":180,0:176,1:177,2:178,3:179,5:181,6:182,7:183,Q:185,k:186,b:208,i:216,l:222,s:240,y:248,"!":161,'"':162,"#":163,"(":164,"%":165,"'":167,"H ":168,"+":171,";":187,"<":188,"=":189,">":190,"?":191,"{":223},t=new RegExp("\x1BN("+_t(e).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm"),r=function(h,m){var g=e[m];return typeof g=="number"?Uu(g):g},n=function(h,m,g){var p=m.charCodeAt(0)-32<<4|g.charCodeAt(0)-48;return p==59?h:Uu(p)};e["|"]=254;function a(h,m){switch(m.type){case"base64":return i(br(h),m);case"binary":return i(h,m);case"buffer":return i(je&&Buffer.isBuffer(h)?h.toString("binary"):qn(h),m);case"array":return i(pa(h),m)}throw new Error("Unrecognized type "+m.type)}function i(h,m){var g=h.split(/[\n\r]+/),p=-1,x=-1,v=0,y=0,w=[],b=[],R=null,A={},k=[],U=[],T=[],j=0,G;for(+m.codepage>=0&&Xr(+m.codepage);v!==g.length;++v){j=0;var B=g[v].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,n).replace(t,r),z=B.replace(/;;/g,"\0").split(";").map(function(F){return F.replace(/\u0000/g,";")}),te=z[0],W;if(B.length>0)switch(te){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":z[1].charAt(0)=="P"&&b.push(B.slice(3).replace(/;;/g,";"));break;case"C":var Y=!1,ae=!1,he=!1,K=!1,ce=-1,N=-1;for(y=1;y<z.length;++y)switch(z[y].charAt(0)){case"A":break;case"X":x=parseInt(z[y].slice(1))-1,ae=!0;break;case"Y":for(p=parseInt(z[y].slice(1))-1,ae||(x=0),G=w.length;G<=p;++G)w[G]=[];break;case"K":W=z[y].slice(1),W.charAt(0)==='"'?W=W.slice(1,W.length-1):W==="TRUE"?W=!0:W==="FALSE"?W=!1:isNaN(Yr(W))?isNaN(Za(W).getDate())||(W=lt(W)):(W=Yr(W),R!==null&&ma(R)&&(W=ho(W))),Y=!0;break;case"E":K=!0;var _=si(z[y].slice(1),{r:p,c:x});w[p][x]=[w[p][x],_];break;case"S":he=!0,w[p][x]=[w[p][x],"S5S"];break;case"G":break;case"R":ce=parseInt(z[y].slice(1))-1;break;case"C":N=parseInt(z[y].slice(1))-1;break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}if(Y&&(w[p][x]&&w[p][x].length==2?w[p][x][0]=W:w[p][x]=W,R=null),he){if(K)throw new Error("SYLK shared formula cannot have own formula");var E=ce>-1&&w[ce][N];if(!E||!E[1])throw new Error("SYLK shared formula cannot find base");w[p][x][1]=lm(E[1],{r:p-ce,c:x-N})}break;case"F":var C=0;for(y=1;y<z.length;++y)switch(z[y].charAt(0)){case"X":x=parseInt(z[y].slice(1))-1,++C;break;case"Y":for(p=parseInt(z[y].slice(1))-1,G=w.length;G<=p;++G)w[G]=[];break;case"M":j=parseInt(z[y].slice(1))/20;break;case"F":break;case"G":break;case"P":R=b[parseInt(z[y].slice(1))];break;case"S":break;case"D":break;case"N":break;case"W":for(T=z[y].slice(1).split(" "),G=parseInt(T[0],10);G<=parseInt(T[1],10);++G)j=parseInt(T[2],10),U[G-1]=j===0?{hidden:!0}:{wch:j},ta(U[G-1]);break;case"C":x=parseInt(z[y].slice(1))-1,U[x]||(U[x]={});break;case"R":p=parseInt(z[y].slice(1))-1,k[p]||(k[p]={}),j>0?(k[p].hpt=j,k[p].hpx=ai(j)):j===0&&(k[p].hidden=!0);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}C<1&&(R=null);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}}return k.length>0&&(A["!rows"]=k),U.length>0&&(A["!cols"]=U),m&&m.sheetRows&&(w=w.slice(0,m.sheetRows)),[w,A]}function s(h,m){var g=a(h,m),p=g[0],x=g[1],v=ei(p,m);return _t(x).forEach(function(y){v[y]=x[y]}),v}function o(h,m){return Qn(s(h,m),m)}function c(h,m,g,p){var x="C;Y"+(g+1)+";X"+(p+1)+";K";switch(h.t){case"n":x+=h.v||0,h.f&&!h.F&&(x+=";E"+Oc(h.f,{r:g,c:p}));break;case"b":x+=h.v?"TRUE":"FALSE";break;case"e":x+=h.w||h.v;break;case"d":x+='"'+(h.w||h.v)+'"';break;case"s":x+='"'+h.v.replace(/"/g,"").replace(/;/g,";;")+'"';break}return x}function f(h,m){m.forEach(function(g,p){var x="F;W"+(p+1)+" "+(p+1)+" ";g.hidden?x+="0":(typeof g.width=="number"&&!g.wpx&&(g.wpx=is(g.width)),typeof g.wpx=="number"&&!g.wch&&(g.wch=ss(g.wpx)),typeof g.wch=="number"&&(x+=Math.round(g.wch))),x.charAt(x.length-1)!=" "&&h.push(x)})}function u(h,m){m.forEach(function(g,p){var x="F;";g.hidden?x+="M0;":g.hpt?x+="M"+20*g.hpt+";":g.hpx&&(x+="M"+20*os(g.hpx)+";"),x.length>2&&h.push(x+"R"+(p+1))})}function d(h,m){var g=["ID;PWXL;N;E"],p=[],x=Ye(h["!ref"]),v,y=Array.isArray(h),w=`\r
`;g.push("P;PGeneral"),g.push("F;P0;DG0G8;M255"),h["!cols"]&&f(g,h["!cols"]),h["!rows"]&&u(g,h["!rows"]),g.push("B;Y"+(x.e.r-x.s.r+1)+";X"+(x.e.c-x.s.c+1)+";D"+[x.s.c,x.s.r,x.e.c,x.e.r].join(" "));for(var b=x.s.r;b<=x.e.r;++b)for(var R=x.s.c;R<=x.e.c;++R){var A=Ne({r:b,c:R});v=y?(h[b]||[])[R]:h[A],!(!v||v.v==null&&(!v.f||v.F))&&p.push(c(v,h,b,R))}return g.join(w)+w+p.join(w)+w+"E"+w}return{to_workbook:o,to_sheet:s,from_sheet:d}}(),Hh=function(){function e(i,s){switch(s.type){case"base64":return t(br(i),s);case"binary":return t(i,s);case"buffer":return t(je&&Buffer.isBuffer(i)?i.toString("binary"):qn(i),s);case"array":return t(pa(i),s)}throw new Error("Unrecognized type "+s.type)}function t(i,s){for(var o=i.split(`
`),c=-1,f=-1,u=0,d=[];u!==o.length;++u){if(o[u].trim()==="BOT"){d[++c]=[],f=0;continue}if(!(c<0)){var h=o[u].trim().split(","),m=h[0],g=h[1];++u;for(var p=o[u]||"";(p.match(/["]/g)||[]).length&1&&u<o.length-1;)p+=`
`+o[++u];switch(p=p.trim(),+m){case-1:if(p==="BOT"){d[++c]=[],f=0;continue}else if(p!=="EOD")throw new Error("Unrecognized DIF special command "+p);break;case 0:p==="TRUE"?d[c][f]=!0:p==="FALSE"?d[c][f]=!1:isNaN(Yr(g))?isNaN(Za(g).getDate())?d[c][f]=g:d[c][f]=lt(g):d[c][f]=Yr(g),++f;break;case 1:p=p.slice(1,p.length-1),p=p.replace(/""/g,'"'),p&&p.match(/^=".*"$/)&&(p=p.slice(2,-1)),d[c][f++]=p!==""?p:null;break}if(p==="EOD")break}}return s&&s.sheetRows&&(d=d.slice(0,s.sheetRows)),d}function r(i,s){return ei(e(i,s),s)}function n(i,s){return Qn(r(i,s),s)}var a=function(){var i=function(c,f,u,d,h){c.push(f),c.push(u+","+d),c.push('"'+h.replace(/"/g,'""')+'"')},s=function(c,f,u,d){c.push(f+","+u),c.push(f==1?'"'+d.replace(/"/g,'""')+'"':d)};return function(c){var f=[],u=Ye(c["!ref"]),d,h=Array.isArray(c);i(f,"TABLE",0,1,"sheetjs"),i(f,"VECTORS",0,u.e.r-u.s.r+1,""),i(f,"TUPLES",0,u.e.c-u.s.c+1,""),i(f,"DATA",0,0,"");for(var m=u.s.r;m<=u.e.r;++m){s(f,-1,0,"BOT");for(var g=u.s.c;g<=u.e.c;++g){var p=Ne({r:m,c:g});if(d=h?(c[m]||[])[g]:c[p],!d){s(f,1,0,"");continue}switch(d.t){case"n":var x=d.w;!x&&d.v!=null&&(x=d.v),x==null?d.f&&!d.F?s(f,1,0,"="+d.f):s(f,1,0,""):s(f,0,x,"V");break;case"b":s(f,0,d.v?1:0,d.v?"TRUE":"FALSE");break;case"s":s(f,1,0,isNaN(d.v)?d.v:'="'+d.v+'"');break;case"d":d.w||(d.w=Er(d.z||Oe[14],Nt(lt(d.v)))),s(f,0,d.w,"V");break;default:s(f,1,0,"")}}}s(f,-1,0,"EOD");var v=`\r
`,y=f.join(v);return y}}();return{to_workbook:n,to_sheet:r,from_sheet:a}}(),jh=function(){function e(d){return d.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,`
`)}function t(d){return d.replace(/\\/g,"\\b").replace(/:/g,"\\c").replace(/\n/g,"\\n")}function r(d,h){for(var m=d.split(`
`),g=-1,p=-1,x=0,v=[];x!==m.length;++x){var y=m[x].trim().split(":");if(y[0]==="cell"){var w=pt(y[1]);if(v.length<=w.r)for(g=v.length;g<=w.r;++g)v[g]||(v[g]=[]);switch(g=w.r,p=w.c,y[2]){case"t":v[g][p]=e(y[3]);break;case"v":v[g][p]=+y[3];break;case"vtf":var b=y[y.length-1];case"vtc":switch(y[3]){case"nl":v[g][p]=!!+y[4];break;default:v[g][p]=+y[4];break}y[2]=="vtf"&&(v[g][p]=[v[g][p],b])}}}return h&&h.sheetRows&&(v=v.slice(0,h.sheetRows)),v}function n(d,h){return ei(r(d,h),h)}function a(d,h){return Qn(n(d,h),h)}var i=["socialcalc:version:1.5","MIME-Version: 1.0","Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave"].join(`
`),s=["--SocialCalcSpreadsheetControlSave","Content-type: text/plain; charset=UTF-8"].join(`
`)+`
`,o=["# SocialCalc Spreadsheet Control Save","part:sheet"].join(`
`),c="--SocialCalcSpreadsheetControlSave--";function f(d){if(!d||!d["!ref"])return"";for(var h=[],m=[],g,p="",x=gr(d["!ref"]),v=Array.isArray(d),y=x.s.r;y<=x.e.r;++y)for(var w=x.s.c;w<=x.e.c;++w)if(p=Ne({r:y,c:w}),g=v?(d[y]||[])[w]:d[p],!(!g||g.v==null||g.t==="z")){switch(m=["cell",p,"t"],g.t){case"s":case"str":m.push(t(g.v));break;case"n":g.f?(m[2]="vtf",m[3]="n",m[4]=g.v,m[5]=t(g.f)):(m[2]="v",m[3]=g.v);break;case"b":m[2]="vt"+(g.f?"f":"c"),m[3]="nl",m[4]=g.v?"1":"0",m[5]=t(g.f||(g.v?"TRUE":"FALSE"));break;case"d":var b=Nt(lt(g.v));m[2]="vtc",m[3]="nd",m[4]=""+b,m[5]=g.w||Er(g.z||Oe[14],b);break;case"e":continue}h.push(m.join(":"))}return h.push("sheet:c:"+(x.e.c-x.s.c+1)+":r:"+(x.e.r-x.s.r+1)+":tvf:1"),h.push("valueformat:1:text-wiki"),h.join(`
`)}function u(d){return[i,s,o,s,f(d),c].join(`
`)}return{to_workbook:a,to_sheet:n,from_sheet:u}}(),ni=function(){function e(u,d,h,m,g){g.raw?d[h][m]=u:u===""||(u==="TRUE"?d[h][m]=!0:u==="FALSE"?d[h][m]=!1:isNaN(Yr(u))?isNaN(Za(u).getDate())?d[h][m]=u:d[h][m]=lt(u):d[h][m]=Yr(u))}function t(u,d){var h=d||{},m=[];if(!u||u.length===0)return m;for(var g=u.split(/[\r\n]/),p=g.length-1;p>=0&&g[p].length===0;)--p;for(var x=10,v=0,y=0;y<=p;++y)v=g[y].indexOf(" "),v==-1?v=g[y].length:v++,x=Math.max(x,v);for(y=0;y<=p;++y){m[y]=[];var w=0;for(e(g[y].slice(0,x).trim(),m,y,w,h),w=1;w<=(g[y].length-x)/10+1;++w)e(g[y].slice(x+(w-1)*10,x+w*10).trim(),m,y,w,h)}return h.sheetRows&&(m=m.slice(0,h.sheetRows)),m}var r={44:",",9:" ",59:";",124:"|"},n={44:3,9:2,59:1,124:0};function a(u){for(var d={},h=!1,m=0,g=0;m<u.length;++m)(g=u.charCodeAt(m))==34?h=!h:!h&&g in r&&(d[g]=(d[g]||0)+1);g=[];for(m in d)Object.prototype.hasOwnProperty.call(d,m)&&g.push([d[m],m]);if(!g.length){d=n;for(m in d)Object.prototype.hasOwnProperty.call(d,m)&&g.push([d[m],m])}return g.sort(function(p,x){return p[0]-x[0]||n[p[1]]-n[x[1]]}),r[g.pop()[1]]||44}function i(u,d){var h=d||{},m="",g=h.dense?[]:{},p={s:{c:0,r:0},e:{c:0,r:0}};u.slice(0,4)=="sep="?u.charCodeAt(5)==13&&u.charCodeAt(6)==10?(m=u.charAt(4),u=u.slice(7)):u.charCodeAt(5)==13||u.charCodeAt(5)==10?(m=u.charAt(4),u=u.slice(6)):m=a(u.slice(0,1024)):h&&h.FS?m=h.FS:m=a(u.slice(0,1024));var x=0,v=0,y=0,w=0,b=0,R=m.charCodeAt(0),A=!1,k=0,U=u.charCodeAt(0);u=u.replace(/\r\n/mg,`
`);var T=h.dateNF!=null?Ry(h.dateNF):null;function j(){var G=u.slice(w,b),B={};if(G.charAt(0)=='"'&&G.charAt(G.length-1)=='"'&&(G=G.slice(1,-1).replace(/""/g,'"')),G.length===0)B.t="z";else if(h.raw)B.t="s",B.v=G;else if(G.trim().length===0)B.t="s",B.v=G;else if(G.charCodeAt(0)==61)G.charCodeAt(1)==34&&G.charCodeAt(G.length-1)==34?(B.t="s",B.v=G.slice(2,-1).replace(/""/g,'"')):iS(G)?(B.t="n",B.f=G.slice(1)):(B.t="s",B.v=G);else if(G=="TRUE")B.t="b",B.v=!0;else if(G=="FALSE")B.t="b",B.v=!1;else if(!isNaN(y=Yr(G)))B.t="n",h.cellText!==!1&&(B.w=G),B.v=y;else if(!isNaN(Za(G).getDate())||T&&G.match(T)){B.z=h.dateNF||Oe[14];var z=0;T&&G.match(T)&&(G=Oy(G,h.dateNF,G.match(T)||[]),z=1),h.cellDates?(B.t="d",B.v=lt(G,z)):(B.t="n",B.v=Nt(lt(G,z))),h.cellText!==!1&&(B.w=Er(B.z,B.v instanceof Date?Nt(B.v):B.v)),h.cellNF||delete B.z}else B.t="s",B.v=G;if(B.t=="z"||(h.dense?(g[x]||(g[x]=[]),g[x][v]=B):g[Ne({c:v,r:x})]=B),w=b+1,U=u.charCodeAt(w),p.e.c<v&&(p.e.c=v),p.e.r<x&&(p.e.r=x),k==R)++v;else if(v=0,++x,h.sheetRows&&h.sheetRows<=x)return!0}e:for(;b<u.length;++b)switch(k=u.charCodeAt(b)){case 34:U===34&&(A=!A);break;case R:case 10:case 13:if(!A&&j())break e;break}return b-w>0&&j(),g["!ref"]=We(p),g}function s(u,d){return!(d&&d.PRN)||d.FS||u.slice(0,4)=="sep="||u.indexOf(" ")>=0||u.indexOf(",")>=0||u.indexOf(";")>=0?i(u,d):ei(t(u,d),d)}function o(u,d){var h="",m=d.type=="string"?[0,0,0,0]:Yc(u,d);switch(d.type){case"base64":h=br(u);break;case"binary":h=u;break;case"buffer":d.codepage==65001?h=u.toString("utf8"):d.codepage&&typeof Xn<"u"?h=Xn.utils.decode(d.codepage,u):h=je&&Buffer.isBuffer(u)?u.toString("binary"):qn(u);break;case"array":h=pa(u);break;case"string":h=u;break;default:throw new Error("Unrecognized type "+d.type)}return m[0]==239&&m[1]==187&&m[2]==191?h=at(h.slice(3)):d.type!="string"&&d.type!="buffer"&&d.codepage==65001?h=at(h):d.type=="binary"&&typeof Xn<"u"&&d.codepage&&(h=Xn.utils.decode(d.codepage,Xn.utils.encode(28591,h))),h.slice(0,19)=="socialcalc:version:"?jh.to_sheet(d.type=="string"?h:at(h),d):s(h,d)}function c(u,d){return Qn(o(u,d),d)}function f(u){for(var d=[],h=Ye(u["!ref"]),m,g=Array.isArray(u),p=h.s.r;p<=h.e.r;++p){for(var x=[],v=h.s.c;v<=h.e.c;++v){var y=Ne({r:p,c:v});if(m=g?(u[p]||[])[v]:u[y],!m||m.v==null){x.push(" ");continue}for(var w=(m.w||(In(m),m.w)||"").slice(0,10);w.length<10;)w+=" ";x.push(w+(v===0?" ":""))}d.push(x.join(""))}return d.join(`
`)}return{to_workbook:c,to_sheet:o,from_sheet:f}}();function zb(e,t){var r=t||{},n=!!r.WTF;r.WTF=!0;try{var a=Wh.to_workbook(e,r);return r.WTF=n,a}catch(i){if(r.WTF=n,!i.message.match(/SYLK bad record ID/)&&n)throw i;return ni.to_workbook(e,t)}}var Fa=function(){function e(_,E,C){if(_){Xt(_,_.l||0);for(var F=C.Enum||ce;_.l<_.length;){var H=_.read_shift(2),ee=F[H]||F[65535],Q=_.read_shift(2),re=_.l+Q,ie=ee.f&&ee.f(_,Q,C);if(_.l=re,E(ie,ee,H))return}}}function t(_,E){switch(E.type){case"base64":return r(Cr(br(_)),E);case"binary":return r(Cr(_),E);case"buffer":case"array":return r(_,E)}throw"Unsupported type "+E.type}function r(_,E){if(!_)return _;var C=E||{},F=C.dense?[]:{},H="Sheet1",ee="",Q=0,re={},ie=[],Se=[],L={s:{r:0,c:0},e:{r:0,c:0}},de=C.sheetRows||0;if(_[2]==0&&(_[3]==8||_[3]==9)&&_.length>=16&&_[14]==5&&_[15]===108)throw new Error("Unsupported Works 3 for Mac file");if(_[2]==2)C.Enum=ce,e(_,function(me,Qe,vr){switch(vr){case 0:C.vers=me,me>=4096&&(C.qpro=!0);break;case 6:L=me;break;case 204:me&&(ee=me);break;case 222:ee=me;break;case 15:case 51:C.qpro||(me[1].v=me[1].v.slice(1));case 13:case 14:case 16:vr==14&&(me[2]&112)==112&&(me[2]&15)>1&&(me[2]&15)<15&&(me[1].z=C.dateNF||Oe[14],C.cellDates&&(me[1].t="d",me[1].v=ho(me[1].v))),C.qpro&&me[3]>Q&&(F["!ref"]=We(L),re[H]=F,ie.push(H),F=C.dense?[]:{},L={s:{r:0,c:0},e:{r:0,c:0}},Q=me[3],H=ee||"Sheet"+(Q+1),ee="");var Hr=C.dense?(F[me[0].r]||[])[me[0].c]:F[Ne(me[0])];if(Hr){Hr.t=me[1].t,Hr.v=me[1].v,me[1].z!=null&&(Hr.z=me[1].z),me[1].f!=null&&(Hr.f=me[1].f);break}C.dense?(F[me[0].r]||(F[me[0].r]=[]),F[me[0].r][me[0].c]=me[1]):F[Ne(me[0])]=me[1];break}},C);else if(_[2]==26||_[2]==14)C.Enum=N,_[2]==14&&(C.qpro=!0,_.l=0),e(_,function(me,Qe,vr){switch(vr){case 204:H=me;break;case 22:me[1].v=me[1].v.slice(1);case 23:case 24:case 25:case 37:case 39:case 40:if(me[3]>Q&&(F["!ref"]=We(L),re[H]=F,ie.push(H),F=C.dense?[]:{},L={s:{r:0,c:0},e:{r:0,c:0}},Q=me[3],H="Sheet"+(Q+1)),de>0&&me[0].r>=de)break;C.dense?(F[me[0].r]||(F[me[0].r]=[]),F[me[0].r][me[0].c]=me[1]):F[Ne(me[0])]=me[1],L.e.c<me[0].c&&(L.e.c=me[0].c),L.e.r<me[0].r&&(L.e.r=me[0].r);break;case 27:me[14e3]&&(Se[me[14e3][0]]=me[14e3][1]);break;case 1537:Se[me[0]]=me[1],me[0]==Q&&(H=me[1]);break}},C);else throw new Error("Unrecognized LOTUS BOF "+_[2]);if(F["!ref"]=We(L),re[ee||H]=F,ie.push(ee||H),!Se.length)return{SheetNames:ie,Sheets:re};for(var _e={},Fe=[],ke=0;ke<Se.length;++ke)re[ie[ke]]?(Fe.push(Se[ke]||ie[ke]),_e[Se[ke]]=re[Se[ke]]||re[ie[ke]]):(Fe.push(Se[ke]),_e[Se[ke]]={"!ref":"A1"});return{SheetNames:Fe,Sheets:_e}}function n(_,E){var C=E||{};if(+C.codepage>=0&&Xr(+C.codepage),C.type=="string")throw new Error("Cannot write WK1 to JS string");var F=pr(),H=Ye(_["!ref"]),ee=Array.isArray(_),Q=[];ve(F,0,i(1030)),ve(F,6,c(H));for(var re=Math.min(H.e.r,8191),ie=H.s.r;ie<=re;++ie)for(var Se=Et(ie),L=H.s.c;L<=H.e.c;++L){ie===H.s.r&&(Q[L]=mt(L));var de=Q[L]+Se,_e=ee?(_[ie]||[])[L]:_[de];if(!(!_e||_e.t=="z"))if(_e.t=="n")(_e.v|0)==_e.v&&_e.v>=-32768&&_e.v<=32767?ve(F,13,m(ie,L,_e.v)):ve(F,14,p(ie,L,_e.v));else{var Fe=In(_e);ve(F,15,d(ie,L,Fe.slice(0,239)))}}return ve(F,1),F.end()}function a(_,E){var C=E||{};if(+C.codepage>=0&&Xr(+C.codepage),C.type=="string")throw new Error("Cannot write WK3 to JS string");var F=pr();ve(F,0,s(_));for(var H=0,ee=0;H<_.SheetNames.length;++H)(_.Sheets[_.SheetNames[H]]||{})["!ref"]&&ve(F,27,K(_.SheetNames[H],ee++));var Q=0;for(H=0;H<_.SheetNames.length;++H){var re=_.Sheets[_.SheetNames[H]];if(!(!re||!re["!ref"])){for(var ie=Ye(re["!ref"]),Se=Array.isArray(re),L=[],de=Math.min(ie.e.r,8191),_e=ie.s.r;_e<=de;++_e)for(var Fe=Et(_e),ke=ie.s.c;ke<=ie.e.c;++ke){_e===ie.s.r&&(L[ke]=mt(ke));var me=L[ke]+Fe,Qe=Se?(re[_e]||[])[ke]:re[me];if(!(!Qe||Qe.t=="z"))if(Qe.t=="n")ve(F,23,j(_e,ke,Q,Qe.v));else{var vr=In(Qe);ve(F,22,k(_e,ke,Q,vr.slice(0,239)))}}++Q}}return ve(F,1),F.end()}function i(_){var E=se(2);return E.write_shift(2,_),E}function s(_){var E=se(26);E.write_shift(2,4096),E.write_shift(2,4),E.write_shift(4,0);for(var C=0,F=0,H=0,ee=0;ee<_.SheetNames.length;++ee){var Q=_.SheetNames[ee],re=_.Sheets[Q];if(!(!re||!re["!ref"])){++H;var ie=gr(re["!ref"]);C<ie.e.r&&(C=ie.e.r),F<ie.e.c&&(F=ie.e.c)}}return C>8191&&(C=8191),E.write_shift(2,C),E.write_shift(1,H),E.write_shift(1,F),E.write_shift(2,0),E.write_shift(2,0),E.write_shift(1,1),E.write_shift(1,2),E.write_shift(4,0),E.write_shift(4,0),E}function o(_,E,C){var F={s:{c:0,r:0},e:{c:0,r:0}};return E==8&&C.qpro?(F.s.c=_.read_shift(1),_.l++,F.s.r=_.read_shift(2),F.e.c=_.read_shift(1),_.l++,F.e.r=_.read_shift(2),F):(F.s.c=_.read_shift(2),F.s.r=_.read_shift(2),E==12&&C.qpro&&(_.l+=2),F.e.c=_.read_shift(2),F.e.r=_.read_shift(2),E==12&&C.qpro&&(_.l+=2),F.s.c==65535&&(F.s.c=F.e.c=F.s.r=F.e.r=0),F)}function c(_){var E=se(8);return E.write_shift(2,_.s.c),E.write_shift(2,_.s.r),E.write_shift(2,_.e.c),E.write_shift(2,_.e.r),E}function f(_,E,C){var F=[{c:0,r:0},{t:"n",v:0},0,0];return C.qpro&&C.vers!=20768?(F[0].c=_.read_shift(1),F[3]=_.read_shift(1),F[0].r=_.read_shift(2),_.l+=2):(F[2]=_.read_shift(1),F[0].c=_.read_shift(2),F[0].r=_.read_shift(2)),F}function u(_,E,C){var F=_.l+E,H=f(_,E,C);if(H[1].t="s",C.vers==20768){_.l++;var ee=_.read_shift(1);return H[1].v=_.read_shift(ee,"utf8"),H}return C.qpro&&_.l++,H[1].v=_.read_shift(F-_.l,"cstr"),H}function d(_,E,C){var F=se(7+C.length);F.write_shift(1,255),F.write_shift(2,E),F.write_shift(2,_),F.write_shift(1,39);for(var H=0;H<F.length;++H){var ee=C.charCodeAt(H);F.write_shift(1,ee>=128?95:ee)}return F.write_shift(1,0),F}function h(_,E,C){var F=f(_,E,C);return F[1].v=_.read_shift(2,"i"),F}function m(_,E,C){var F=se(7);return F.write_shift(1,255),F.write_shift(2,E),F.write_shift(2,_),F.write_shift(2,C,"i"),F}function g(_,E,C){var F=f(_,E,C);return F[1].v=_.read_shift(8,"f"),F}function p(_,E,C){var F=se(13);return F.write_shift(1,255),F.write_shift(2,E),F.write_shift(2,_),F.write_shift(8,C,"f"),F}function x(_,E,C){var F=_.l+E,H=f(_,E,C);if(H[1].v=_.read_shift(8,"f"),C.qpro)_.l=F;else{var ee=_.read_shift(2);b(_.slice(_.l,_.l+ee),H),_.l+=ee}return H}function v(_,E,C){var F=E&32768;return E&=-32769,E=(F?_:0)+(E>=8192?E-16384:E),(F?"":"$")+(C?mt(E):Et(E))}var y={51:["FALSE",0],52:["TRUE",0],70:["LEN",1],80:["SUM",69],81:["AVERAGEA",69],82:["COUNTA",69],83:["MINA",69],84:["MAXA",69],111:["T",1]},w=["","","","","","","","","","+","-","*","/","^","=","<>","<=",">=","<",">","","","","","&","","","","","","",""];function b(_,E){Xt(_,0);for(var C=[],F=0,H="",ee="",Q="",re="";_.l<_.length;){var ie=_[_.l++];switch(ie){case 0:C.push(_.read_shift(8,"f"));break;case 1:ee=v(E[0].c,_.read_shift(2),!0),H=v(E[0].r,_.read_shift(2),!1),C.push(ee+H);break;case 2:{var Se=v(E[0].c,_.read_shift(2),!0),L=v(E[0].r,_.read_shift(2),!1);ee=v(E[0].c,_.read_shift(2),!0),H=v(E[0].r,_.read_shift(2),!1),C.push(Se+L+":"+ee+H)}break;case 3:if(_.l<_.length){console.error("WK1 premature formula end");return}break;case 4:C.push("("+C.pop()+")");break;case 5:C.push(_.read_shift(2));break;case 6:{for(var de="";ie=_[_.l++];)de+=String.fromCharCode(ie);C.push('"'+de.replace(/"/g,'""')+'"')}break;case 8:C.push("-"+C.pop());break;case 23:C.push("+"+C.pop());break;case 22:C.push("NOT("+C.pop()+")");break;case 20:case 21:re=C.pop(),Q=C.pop(),C.push(["AND","OR"][ie-20]+"("+Q+","+re+")");break;default:if(ie<32&&w[ie])re=C.pop(),Q=C.pop(),C.push(Q+w[ie]+re);else if(y[ie]){if(F=y[ie][1],F==69&&(F=_[_.l++]),F>C.length){console.error("WK1 bad formula parse 0x"+ie.toString(16)+":|"+C.join("|")+"|");return}var _e=C.slice(-F);C.length-=F,C.push(y[ie][0]+"("+_e.join(",")+")")}else return ie<=7?console.error("WK1 invalid opcode "+ie.toString(16)):ie<=24?console.error("WK1 unsupported op "+ie.toString(16)):ie<=30?console.error("WK1 invalid opcode "+ie.toString(16)):ie<=115?console.error("WK1 unsupported function opcode "+ie.toString(16)):console.error("WK1 unrecognized opcode "+ie.toString(16))}}C.length==1?E[1].f=""+C[0]:console.error("WK1 bad formula parse |"+C.join("|")+"|")}function R(_){var E=[{c:0,r:0},{t:"n",v:0},0];return E[0].r=_.read_shift(2),E[3]=_[_.l++],E[0].c=_[_.l++],E}function A(_,E){var C=R(_);return C[1].t="s",C[1].v=_.read_shift(E-4,"cstr"),C}function k(_,E,C,F){var H=se(6+F.length);H.write_shift(2,_),H.write_shift(1,C),H.write_shift(1,E),H.write_shift(1,39);for(var ee=0;ee<F.length;++ee){var Q=F.charCodeAt(ee);H.write_shift(1,Q>=128?95:Q)}return H.write_shift(1,0),H}function U(_,E){var C=R(_);C[1].v=_.read_shift(2);var F=C[1].v>>1;if(C[1].v&1)switch(F&7){case 0:F=(F>>3)*5e3;break;case 1:F=(F>>3)*500;break;case 2:F=(F>>3)/20;break;case 3:F=(F>>3)/200;break;case 4:F=(F>>3)/2e3;break;case 5:F=(F>>3)/2e4;break;case 6:F=(F>>3)/16;break;case 7:F=(F>>3)/64;break}return C[1].v=F,C}function T(_,E){var C=R(_),F=_.read_shift(4),H=_.read_shift(4),ee=_.read_shift(2);if(ee==65535)return F===0&&H===3221225472?(C[1].t="e",C[1].v=15):F===0&&H===3489660928?(C[1].t="e",C[1].v=42):C[1].v=0,C;var Q=ee&32768;return ee=(ee&32767)-16446,C[1].v=(1-Q*2)*(H*Math.pow(2,ee+32)+F*Math.pow(2,ee)),C}function j(_,E,C,F){var H=se(14);if(H.write_shift(2,_),H.write_shift(1,C),H.write_shift(1,E),F==0)return H.write_shift(4,0),H.write_shift(4,0),H.write_shift(2,65535),H;var ee=0,Q=0,re=0,ie=0;return F<0&&(ee=1,F=-F),Q=Math.log2(F)|0,F/=Math.pow(2,Q-31),ie=F>>>0,ie&2147483648||(F/=2,++Q,ie=F>>>0),F-=ie,ie|=2147483648,ie>>>=0,F*=Math.pow(2,32),re=F>>>0,H.write_shift(4,re),H.write_shift(4,ie),Q+=16383+(ee?32768:0),H.write_shift(2,Q),H}function G(_,E){var C=T(_);return _.l+=E-14,C}function B(_,E){var C=R(_),F=_.read_shift(4);return C[1].v=F>>6,C}function z(_,E){var C=R(_),F=_.read_shift(8,"f");return C[1].v=F,C}function te(_,E){var C=z(_);return _.l+=E-10,C}function W(_,E){return _[_.l+E-1]==0?_.read_shift(E,"cstr"):""}function Y(_,E){var C=_[_.l++];C>E-1&&(C=E-1);for(var F="";F.length<C;)F+=String.fromCharCode(_[_.l++]);return F}function ae(_,E,C){if(!(!C.qpro||E<21)){var F=_.read_shift(1);_.l+=17,_.l+=1,_.l+=2;var H=_.read_shift(E-21,"cstr");return[F,H]}}function he(_,E){for(var C={},F=_.l+E;_.l<F;){var H=_.read_shift(2);if(H==14e3){for(C[H]=[0,""],C[H][0]=_.read_shift(2);_[_.l];)C[H][1]+=String.fromCharCode(_[_.l]),_.l++;_.l++}}return C}function K(_,E){var C=se(5+_.length);C.write_shift(2,14e3),C.write_shift(2,E);for(var F=0;F<_.length;++F){var H=_.charCodeAt(F);C[C.l++]=H>127?95:H}return C[C.l++]=0,C}var ce={0:{n:"BOF",f:At},1:{n:"EOF"},2:{n:"CALCMODE"},3:{n:"CALCORDER"},4:{n:"SPLIT"},5:{n:"SYNC"},6:{n:"RANGE",f:o},7:{n:"WINDOW1"},8:{n:"COLW1"},9:{n:"WINTWO"},10:{n:"COLW2"},11:{n:"NAME"},12:{n:"BLANK"},13:{n:"INTEGER",f:h},14:{n:"NUMBER",f:g},15:{n:"LABEL",f:u},16:{n:"FORMULA",f:x},24:{n:"TABLE"},25:{n:"ORANGE"},26:{n:"PRANGE"},27:{n:"SRANGE"},28:{n:"FRANGE"},29:{n:"KRANGE1"},32:{n:"HRANGE"},35:{n:"KRANGE2"},36:{n:"PROTEC"},37:{n:"FOOTER"},38:{n:"HEADER"},39:{n:"SETUP"},40:{n:"MARGINS"},41:{n:"LABELFMT"},42:{n:"TITLES"},43:{n:"SHEETJS"},45:{n:"GRAPH"},46:{n:"NGRAPH"},47:{n:"CALCCOUNT"},48:{n:"UNFORMATTED"},49:{n:"CURSORW12"},50:{n:"WINDOW"},51:{n:"STRING",f:u},55:{n:"PASSWORD"},56:{n:"LOCKED"},60:{n:"QUERY"},61:{n:"QUERYNAME"},62:{n:"PRINT"},63:{n:"PRINTNAME"},64:{n:"GRAPH2"},65:{n:"GRAPHNAME"},66:{n:"ZOOM"},67:{n:"SYMSPLIT"},68:{n:"NSROWS"},69:{n:"NSCOLS"},70:{n:"RULER"},71:{n:"NNAME"},72:{n:"ACOMM"},73:{n:"AMACRO"},74:{n:"PARSE"},102:{n:"PRANGES??"},103:{n:"RRANGES??"},104:{n:"FNAME??"},105:{n:"MRANGES??"},204:{n:"SHEETNAMECS",f:W},222:{n:"SHEETNAMELP",f:Y},65535:{n:""}},N={0:{n:"BOF"},1:{n:"EOF"},2:{n:"PASSWORD"},3:{n:"CALCSET"},4:{n:"WINDOWSET"},5:{n:"SHEETCELLPTR"},6:{n:"SHEETLAYOUT"},7:{n:"COLUMNWIDTH"},8:{n:"HIDDENCOLUMN"},9:{n:"USERRANGE"},10:{n:"SYSTEMRANGE"},11:{n:"ZEROFORCE"},12:{n:"SORTKEYDIR"},13:{n:"FILESEAL"},14:{n:"DATAFILLNUMS"},15:{n:"PRINTMAIN"},16:{n:"PRINTSTRING"},17:{n:"GRAPHMAIN"},18:{n:"GRAPHSTRING"},19:{n:"??"},20:{n:"ERRCELL"},21:{n:"NACELL"},22:{n:"LABEL16",f:A},23:{n:"NUMBER17",f:T},24:{n:"NUMBER18",f:U},25:{n:"FORMULA19",f:G},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:he},28:{n:"DTLABELMISC"},29:{n:"DTLABELCELL"},30:{n:"GRAPHWINDOW"},31:{n:"CPA"},32:{n:"LPLAUTO"},33:{n:"QUERY"},34:{n:"HIDDENSHEET"},35:{n:"??"},37:{n:"NUMBER25",f:B},38:{n:"??"},39:{n:"NUMBER27",f:z},40:{n:"FORMULA28",f:te},142:{n:"??"},147:{n:"??"},150:{n:"??"},151:{n:"??"},152:{n:"??"},153:{n:"??"},154:{n:"??"},155:{n:"??"},156:{n:"??"},163:{n:"??"},174:{n:"??"},175:{n:"??"},176:{n:"??"},177:{n:"??"},184:{n:"??"},185:{n:"??"},186:{n:"??"},187:{n:"??"},188:{n:"??"},195:{n:"??"},201:{n:"??"},204:{n:"SHEETNAMECS",f:W},205:{n:"??"},206:{n:"??"},207:{n:"??"},208:{n:"??"},256:{n:"??"},259:{n:"??"},260:{n:"??"},261:{n:"??"},262:{n:"??"},263:{n:"??"},265:{n:"??"},266:{n:"??"},267:{n:"??"},268:{n:"??"},270:{n:"??"},271:{n:"??"},384:{n:"??"},389:{n:"??"},390:{n:"??"},393:{n:"??"},396:{n:"??"},512:{n:"??"},514:{n:"??"},513:{n:"??"},516:{n:"??"},517:{n:"??"},640:{n:"??"},641:{n:"??"},642:{n:"??"},643:{n:"??"},644:{n:"??"},645:{n:"??"},646:{n:"??"},647:{n:"??"},648:{n:"??"},658:{n:"??"},659:{n:"??"},660:{n:"??"},661:{n:"??"},662:{n:"??"},665:{n:"??"},666:{n:"??"},768:{n:"??"},772:{n:"??"},1537:{n:"SHEETINFOQP",f:ae},1600:{n:"??"},1602:{n:"??"},1793:{n:"??"},1794:{n:"??"},1795:{n:"??"},1796:{n:"??"},1920:{n:"??"},2048:{n:"??"},2049:{n:"??"},2052:{n:"??"},2688:{n:"??"},10998:{n:"??"},12849:{n:"??"},28233:{n:"??"},28484:{n:"??"},65535:{n:""}};return{sheet_to_wk1:n,book_to_wk3:a,to_workbook:t}}();function Gb(e){var t={},r=e.match(qt),n=0,a=!1;if(r)for(;n!=r.length;++n){var i=Le(r[n]);switch(i[0].replace(/\w*:/g,"")){case"<condense":break;case"<extend":break;case"<shadow":if(!i.val)break;case"<shadow>":case"<shadow/>":t.shadow=1;break;case"</shadow>":break;case"<charset":if(i.val=="1")break;t.cp=Wl[parseInt(i.val,10)];break;case"<outline":if(!i.val)break;case"<outline>":case"<outline/>":t.outline=1;break;case"</outline>":break;case"<rFont":t.name=i.val;break;case"<sz":t.sz=i.val;break;case"<strike":if(!i.val)break;case"<strike>":case"<strike/>":t.strike=1;break;case"</strike>":break;case"<u":if(!i.val)break;switch(i.val){case"double":t.uval="double";break;case"singleAccounting":t.uval="single-accounting";break;case"doubleAccounting":t.uval="double-accounting";break}case"<u>":case"<u/>":t.u=1;break;case"</u>":break;case"<b":if(i.val=="0")break;case"<b>":case"<b/>":t.b=1;break;case"</b>":break;case"<i":if(i.val=="0")break;case"<i>":case"<i/>":t.i=1;break;case"</i>":break;case"<color":i.rgb&&(t.color=i.rgb.slice(2,8));break;case"<color>":case"<color/>":case"</color>":break;case"<family":t.family=i.val;break;case"<family>":case"<family/>":case"</family>":break;case"<vertAlign":t.valign=i.val;break;case"<vertAlign>":case"<vertAlign/>":case"</vertAlign>":break;case"<scheme":break;case"<scheme>":case"<scheme/>":case"</scheme>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;default:if(i[0].charCodeAt(1)!==47&&!a)throw new Error("Unrecognized rich format "+i[0])}}return t}var Xb=function(){var e=Xi("t"),t=Xi("rPr");function r(i){var s=i.match(e);if(!s)return{t:"s",v:""};var o={t:"s",v:Ke(s[1])},c=i.match(t);return c&&(o.s=Gb(c[1])),o}var n=/<(?:\w+:)?r>/g,a=/<\/(?:\w+:)?r>/;return function(s){return s.replace(n,"").split(a).map(r).filter(function(o){return o.v})}}(),Kb=function(){var t=/(\r\n|\n)/g;function r(a,i,s){var o=[];a.u&&o.push("text-decoration: underline;"),a.uval&&o.push("text-underline-style:"+a.uval+";"),a.sz&&o.push("font-size:"+a.sz+"pt;"),a.outline&&o.push("text-effect: outline;"),a.shadow&&o.push("text-shadow: auto;"),i.push('<span style="'+o.join("")+'">'),a.b&&(i.push("<b>"),s.push("</b>")),a.i&&(i.push("<i>"),s.push("</i>")),a.strike&&(i.push("<s>"),s.push("</s>"));var c=a.valign||"";return c=="superscript"||c=="super"?c="sup":c=="subscript"&&(c="sub"),c!=""&&(i.push("<"+c+">"),s.push("</"+c+">")),s.push("</span>"),a}function n(a){var i=[[],a.v,[]];return a.v?(a.s&&r(a.s,i[0],i[2]),i[0].join("")+i[1].replace(t,"<br/>")+i[2].join("")):""}return function(i){return i.map(n).join("")}}(),Yb=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,qb=/<(?:\w+:)?r>/,Jb=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function Ec(e,t){var r=t?t.cellHTML:!0,n={};return e?(e.match(/^\s*<(?:\w+:)?t[^>]*>/)?(n.t=Ke(at(e.slice(e.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")),n.r=at(e),r&&(n.h=Ql(n.t))):e.match(qb)&&(n.r=at(e),n.t=Ke(at((e.replace(Jb,"").match(Yb)||[]).join("").replace(qt,""))),r&&(n.h=Kb(Xb(n.r)))),n):{t:""}}var Zb=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/,Qb=/<(?:\w+:)?(?:si|sstItem)>/g,eC=/<\/(?:\w+:)?(?:si|sstItem)>/;function tC(e,t){var r=[],n="";if(!e)return r;var a=e.match(Zb);if(a){n=a[2].replace(Qb,"").split(eC);for(var i=0;i!=n.length;++i){var s=Ec(n[i].trim(),t);s!=null&&(r[r.length]=s)}a=Le(a[1]),r.Count=a.count,r.Unique=a.uniqueCount}return r}var rC=/^\s|\s$|[\t\n\r]/;function zh(e,t){if(!t.bookSST)return"";var r=[Ct];r[r.length]=xe("sst",null,{xmlns:ga[0],count:e.Count,uniqueCount:e.Unique});for(var n=0;n!=e.length;++n)if(e[n]!=null){var a=e[n],i="<si>";a.r?i+=a.r:(i+="<t",a.t||(a.t=""),a.t.match(rC)&&(i+=' xml:space="preserve"'),i+=">"+et(a.t)+"</t>"),i+="</si>",r[r.length]=i}return r.length>2&&(r[r.length]="</sst>",r[1]=r[1].replace("/>",">")),r.join("")}function nC(e){return[e.read_shift(4),e.read_shift(4)]}function aC(e,t){var r=[],n=!1;return Nn(e,function(i,s,o){switch(o){case 159:r.Count=i[0],r.Unique=i[1];break;case 19:r.push(i);break;case 160:return!0;case 35:n=!0;break;case 36:n=!1;break;default:if(s.T,!n||t.WTF)throw new Error("Unexpected record 0x"+o.toString(16))}}),r}function iC(e,t){return t||(t=se(8)),t.write_shift(4,e.Count),t.write_shift(4,e.Unique),t}var sC=g2;function oC(e){var t=pr();fe(t,159,iC(e));for(var r=0;r<e.length;++r)fe(t,19,sC(e[r]));return fe(t,160),t.end()}function Gh(e){for(var t=[],r=e.split(""),n=0;n<r.length;++n)t[n]=r[n].charCodeAt(0);return t}function Ln(e,t){var r={};return r.Major=e.read_shift(2),r.Minor=e.read_shift(2),t>=4&&(e.l+=t-4),r}function lC(e){var t={};return t.id=e.read_shift(0,"lpp4"),t.R=Ln(e,4),t.U=Ln(e,4),t.W=Ln(e,4),t}function cC(e){for(var t=e.read_shift(4),r=e.l+t-4,n={},a=e.read_shift(4),i=[];a-- >0;)i.push({t:e.read_shift(4),v:e.read_shift(0,"lpp4")});if(n.name=e.read_shift(0,"lpp4"),n.comps=i,e.l!=r)throw new Error("Bad DataSpaceMapEntry: "+e.l+" != "+r);return n}function fC(e){var t=[];e.l+=4;for(var r=e.read_shift(4);r-- >0;)t.push(cC(e));return t}function uC(e){var t=[];e.l+=4;for(var r=e.read_shift(4);r-- >0;)t.push(e.read_shift(0,"lpp4"));return t}function dC(e){var t={};return e.read_shift(4),e.l+=4,t.id=e.read_shift(0,"lpp4"),t.name=e.read_shift(0,"lpp4"),t.R=Ln(e,4),t.U=Ln(e,4),t.W=Ln(e,4),t}function hC(e){var t=dC(e);if(t.ename=e.read_shift(0,"8lpp4"),t.blksz=e.read_shift(4),t.cmode=e.read_shift(4),e.read_shift(4)!=4)throw new Error("Bad !Primary record");return t}function Xh(e,t){var r=e.l+t,n={};n.Flags=e.read_shift(4)&63,e.l+=4,n.AlgID=e.read_shift(4);var a=!1;switch(n.AlgID){case 26126:case 26127:case 26128:a=n.Flags==36;break;case 26625:a=n.Flags==4;break;case 0:a=n.Flags==16||n.Flags==4||n.Flags==36;break;default:throw"Unrecognized encryption algorithm: "+n.AlgID}if(!a)throw new Error("Encryption Flags/AlgID mismatch");return n.AlgIDHash=e.read_shift(4),n.KeySize=e.read_shift(4),n.ProviderType=e.read_shift(4),e.l+=8,n.CSPName=e.read_shift(r-e.l>>1,"utf16le"),e.l=r,n}function Kh(e,t){var r={},n=e.l+t;return e.l+=4,r.Salt=e.slice(e.l,e.l+16),e.l+=16,r.Verifier=e.slice(e.l,e.l+16),e.l+=16,e.read_shift(4),r.VerifierHash=e.slice(e.l,n),e.l=n,r}function mC(e){var t=Ln(e);switch(t.Minor){case 2:return[t.Minor,pC(e)];case 3:return[t.Minor,gC()];case 4:return[t.Minor,xC(e)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+t.Minor)}function pC(e){var t=e.read_shift(4);if((t&63)!=36)throw new Error("EncryptionInfo mismatch");var r=e.read_shift(4),n=Xh(e,r),a=Kh(e,e.length-e.l);return{t:"Std",h:n,v:a}}function gC(){throw new Error("File is password-protected: ECMA-376 Extensible")}function xC(e){var t=["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"];e.l+=4;var r=e.read_shift(e.length-e.l,"utf8"),n={};return r.replace(qt,function(i){var s=Le(i);switch(mn(s[0])){case"<?xml":break;case"<encryption":case"</encryption>":break;case"<keyData":t.forEach(function(o){n[o]=s[o]});break;case"<dataIntegrity":n.encryptedHmacKey=s.encryptedHmacKey,n.encryptedHmacValue=s.encryptedHmacValue;break;case"<keyEncryptors>":case"<keyEncryptors":n.encs=[];break;case"</keyEncryptors>":break;case"<keyEncryptor":n.uri=s.uri;break;case"</keyEncryptor>":break;case"<encryptedKey":n.encs.push(s);break;default:throw s[0]}}),n}function vC(e,t){var r={},n=r.EncryptionVersionInfo=Ln(e,4);if(t-=4,n.Minor!=2)throw new Error("unrecognized minor version code: "+n.Minor);if(n.Major>4||n.Major<2)throw new Error("unrecognized major version code: "+n.Major);r.Flags=e.read_shift(4),t-=4;var a=e.read_shift(4);return t-=4,r.EncryptionHeader=Xh(e,a),t-=a,r.EncryptionVerifier=Kh(e,t),r}function wC(e){var t={},r=t.EncryptionVersionInfo=Ln(e,4);if(r.Major!=1||r.Minor!=1)throw"unrecognized version code "+r.Major+" : "+r.Minor;return t.Salt=e.read_shift(16),t.EncryptedVerifier=e.read_shift(16),t.EncryptedVerifierHash=e.read_shift(16),t}function Sc(e){var t=0,r,n=Gh(e),a=n.length+1,i,s,o,c,f;for(r=Yn(a),r[0]=n.length,i=1;i!=a;++i)r[i]=n[i-1];for(i=a-1;i>=0;--i)s=r[i],o=t&16384?1:0,c=t<<1&32767,f=o|c,t=f^s;return t^52811}var Yh=function(){var e=[187,255,255,186,255,255,185,128,0,190,15,0,191,15,0],t=[57840,7439,52380,33984,4364,3600,61902,12606,6258,57657,54287,34041,10252,43370,20163],r=[44796,19929,39858,10053,20106,40212,10761,31585,63170,64933,60267,50935,40399,11199,17763,35526,1453,2906,5812,11624,23248,885,1770,3540,7080,14160,28320,56640,55369,41139,20807,41614,21821,43642,17621,28485,56970,44341,19019,38038,14605,29210,60195,50791,40175,10751,21502,43004,24537,18387,36774,3949,7898,15796,31592,63184,47201,24803,49606,37805,14203,28406,56812,17824,35648,1697,3394,6788,13576,27152,43601,17539,35078,557,1114,2228,4456,30388,60776,51953,34243,7079,14158,28316,14128,28256,56512,43425,17251,34502,7597,13105,26210,52420,35241,883,1766,3532,4129,8258,16516,33032,4657,9314,18628],n=function(s){return(s/2|s*128)&255},a=function(s,o){return n(s^o)},i=function(s){for(var o=t[s.length-1],c=104,f=s.length-1;f>=0;--f)for(var u=s[f],d=0;d!=7;++d)u&64&&(o^=r[c]),u*=2,--c;return o};return function(s){for(var o=Gh(s),c=i(o),f=o.length,u=Yn(16),d=0;d!=16;++d)u[d]=0;var h,m,g;for((f&1)===1&&(h=c>>8,u[f]=a(e[0],h),--f,h=c&255,m=o[o.length-1],u[f]=a(m,h));f>0;)--f,h=c>>8,u[f]=a(o[f],h),--f,h=c&255,u[f]=a(o[f],h);for(f=15,g=15-o.length;g>0;)h=c>>8,u[f]=a(e[g],h),--f,--g,h=c&255,u[f]=a(o[f],h),--f,--g;return u}}(),_C=function(e,t,r,n,a){a||(a=t),n||(n=Yh(e));var i,s;for(i=0;i!=t.length;++i)s=t[i],s^=n[r],s=(s>>5|s<<3)&255,a[i]=s,++r;return[a,r,n]},yC=function(e){var t=0,r=Yh(e);return function(n){var a=_C("",n,t,r);return t=a[1],a[0]}};function kC(e,t,r,n){var a={key:At(e),verificationBytes:At(e)};return r.password&&(a.verifier=Sc(r.password)),n.valid=a.verificationBytes===a.verifier,n.valid&&(n.insitu=yC(r.password)),a}function bC(e,t,r){var n=r||{};return n.Info=e.read_shift(2),e.l-=2,n.Info===1?n.Data=wC(e):n.Data=vC(e,t),n}function CC(e,t,r){var n={Type:r.biff>=8?e.read_shift(2):0};return n.Type?bC(e,t-2,n):kC(e,r.biff>=8?t:t-2,r,n),n}var qh=function(){function e(a,i){switch(i.type){case"base64":return t(br(a),i);case"binary":return t(a,i);case"buffer":return t(je&&Buffer.isBuffer(a)?a.toString("binary"):qn(a),i);case"array":return t(pa(a),i)}throw new Error("Unrecognized type "+i.type)}function t(a,i){var s=i||{},o=s.dense?[]:{},c=a.match(/\\trowd.*?\\row\b/g);if(!c.length)throw new Error("RTF missing table");var f={s:{c:0,r:0},e:{c:0,r:c.length-1}};return c.forEach(function(u,d){Array.isArray(o)&&(o[d]=[]);for(var h=/\\\w+\b/g,m=0,g,p=-1;g=h.exec(u);){switch(g[0]){case"\\cell":var x=u.slice(m,h.lastIndex-g[0].length);if(x[0]==" "&&(x=x.slice(1)),++p,x.length){var v={v:x,t:"s"};Array.isArray(o)?o[d][p]=v:o[Ne({r:d,c:p})]=v}break}m=h.lastIndex}p>f.e.c&&(f.e.c=p)}),o["!ref"]=We(f),o}function r(a,i){return Qn(e(a,i),i)}function n(a){for(var i=["{\\rtf1\\ansi"],s=Ye(a["!ref"]),o,c=Array.isArray(a),f=s.s.r;f<=s.e.r;++f){i.push("\\trowd\\trautofit1");for(var u=s.s.c;u<=s.e.c;++u)i.push("\\cellx"+(u+1));for(i.push("\\pard\\intbl"),u=s.s.c;u<=s.e.c;++u){var d=Ne({r:f,c:u});o=c?(a[f]||[])[u]:a[d],!(!o||o.v==null&&(!o.f||o.F))&&(i.push(" "+(o.w||(In(o),o.w))),i.push("\\cell"))}i.push("\\pard\\intbl\\row")}return i.join("")+"}"}return{to_workbook:r,to_sheet:e,from_sheet:n}}();function EC(e){var t=e.slice(e[0]==="#"?1:0).slice(0,6);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}function as(e){for(var t=0,r=1;t!=3;++t)r=r*256+(e[t]>255?255:e[t]<0?0:e[t]);return r.toString(16).toUpperCase().slice(1)}function SC(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,a=Math.max(t,r,n),i=Math.min(t,r,n),s=a-i;if(s===0)return[0,0,t];var o=0,c=0,f=a+i;switch(c=s/(f>1?2-f:f),a){case t:o=((r-n)/s+6)%6;break;case r:o=(n-t)/s+2;break;case n:o=(t-r)/s+4;break}return[o/6,c,f/2]}function TC(e){var t=e[0],r=e[1],n=e[2],a=r*2*(n<.5?n:1-n),i=n-a/2,s=[i,i,i],o=6*t,c;if(r!==0)switch(o|0){case 0:case 6:c=a*o,s[0]+=a,s[1]+=c;break;case 1:c=a*(2-o),s[0]+=c,s[1]+=a;break;case 2:c=a*(o-2),s[1]+=a,s[2]+=c;break;case 3:c=a*(4-o),s[1]+=c,s[2]+=a;break;case 4:c=a*(o-4),s[2]+=a,s[0]+=c;break;case 5:c=a*(6-o),s[2]+=c,s[0]+=a;break}for(var f=0;f!=3;++f)s[f]=Math.round(s[f]*255);return s}function So(e,t){if(t===0)return e;var r=SC(EC(e));return t<0?r[2]=r[2]*(1+t):r[2]=1-(1-r[2])*(1-t),as(TC(r))}var Jh=6,FC=15,AC=1,tr=Jh;function is(e){return Math.floor((e+Math.round(128/tr)/256)*tr)}function ss(e){return Math.floor((e-5)/tr*100+.5)/100}function To(e){return Math.round((e*tr+5)/tr*256)/256}function Tc(e){return To(ss(is(e)))}function Fc(e){var t=Math.abs(e-Tc(e)),r=tr;if(t>.005)for(tr=AC;tr<FC;++tr)Math.abs(e-Tc(e))<=t&&(t=Math.abs(e-Tc(e)),r=tr);tr=r}function ta(e){e.width?(e.wpx=is(e.width),e.wch=ss(e.wpx),e.MDW=tr):e.wpx?(e.wch=ss(e.wpx),e.width=To(e.wch),e.MDW=tr):typeof e.wch=="number"&&(e.width=To(e.wch),e.wpx=is(e.width),e.MDW=tr),e.customWidth&&delete e.customWidth}var DC=96,Zh=DC;function os(e){return e*96/Zh}function ai(e){return e*Zh/96}var RC={None:"none",Solid:"solid",Gray50:"mediumGray",Gray75:"darkGray",Gray25:"lightGray",HorzStripe:"darkHorizontal",VertStripe:"darkVertical",ReverseDiagStripe:"darkDown",DiagStripe:"darkUp",DiagCross:"darkGrid",ThickDiagCross:"darkTrellis",ThinHorzStripe:"lightHorizontal",ThinVertStripe:"lightVertical",ThinReverseDiagStripe:"lightDown",ThinHorzCross:"lightGrid"};function OC(e,t,r,n){t.Borders=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Le(s);switch(mn(o[0])){case"<borders":case"<borders>":case"</borders>":break;case"<border":case"<border>":case"<border/>":a={},o.diagonalUp&&(a.diagonalUp=ft(o.diagonalUp)),o.diagonalDown&&(a.diagonalDown=ft(o.diagonalDown)),t.Borders.push(a);break;case"</border>":break;case"<left/>":break;case"<left":case"<left>":break;case"</left>":break;case"<right/>":break;case"<right":case"<right>":break;case"</right>":break;case"<top/>":break;case"<top":case"<top>":break;case"</top>":break;case"<bottom/>":break;case"<bottom":case"<bottom>":break;case"</bottom>":break;case"<diagonal":case"<diagonal>":case"<diagonal/>":break;case"</diagonal>":break;case"<horizontal":case"<horizontal>":case"<horizontal/>":break;case"</horizontal>":break;case"<vertical":case"<vertical>":case"<vertical/>":break;case"</vertical>":break;case"<start":case"<start>":case"<start/>":break;case"</start>":break;case"<end":case"<end>":case"<end/>":break;case"</end>":break;case"<color":case"<color>":break;case"<color/>":case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in borders")}})}function BC(e,t,r,n){t.Fills=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Le(s);switch(mn(o[0])){case"<fills":case"<fills>":case"</fills>":break;case"<fill>":case"<fill":case"<fill/>":a={},t.Fills.push(a);break;case"</fill>":break;case"<gradientFill>":break;case"<gradientFill":case"</gradientFill>":t.Fills.push(a),a={};break;case"<patternFill":case"<patternFill>":o.patternType&&(a.patternType=o.patternType);break;case"<patternFill/>":case"</patternFill>":break;case"<bgColor":a.bgColor||(a.bgColor={}),o.indexed&&(a.bgColor.indexed=parseInt(o.indexed,10)),o.theme&&(a.bgColor.theme=parseInt(o.theme,10)),o.tint&&(a.bgColor.tint=parseFloat(o.tint)),o.rgb&&(a.bgColor.rgb=o.rgb.slice(-6));break;case"<bgColor/>":case"</bgColor>":break;case"<fgColor":a.fgColor||(a.fgColor={}),o.theme&&(a.fgColor.theme=parseInt(o.theme,10)),o.tint&&(a.fgColor.tint=parseFloat(o.tint)),o.rgb!=null&&(a.fgColor.rgb=o.rgb.slice(-6));break;case"<fgColor/>":case"</fgColor>":break;case"<stop":case"<stop/>":break;case"</stop>":break;case"<color":case"<color/>":break;case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in fills")}})}function NC(e,t,r,n){t.Fonts=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Le(s);switch(mn(o[0])){case"<fonts":case"<fonts>":case"</fonts>":break;case"<font":case"<font>":break;case"</font>":case"<font/>":t.Fonts.push(a),a={};break;case"<name":o.val&&(a.name=at(o.val));break;case"<name/>":case"</name>":break;case"<b":a.bold=o.val?ft(o.val):1;break;case"<b/>":a.bold=1;break;case"<i":a.italic=o.val?ft(o.val):1;break;case"<i/>":a.italic=1;break;case"<u":switch(o.val){case"none":a.underline=0;break;case"single":a.underline=1;break;case"double":a.underline=2;break;case"singleAccounting":a.underline=33;break;case"doubleAccounting":a.underline=34;break}break;case"<u/>":a.underline=1;break;case"<strike":a.strike=o.val?ft(o.val):1;break;case"<strike/>":a.strike=1;break;case"<outline":a.outline=o.val?ft(o.val):1;break;case"<outline/>":a.outline=1;break;case"<shadow":a.shadow=o.val?ft(o.val):1;break;case"<shadow/>":a.shadow=1;break;case"<condense":a.condense=o.val?ft(o.val):1;break;case"<condense/>":a.condense=1;break;case"<extend":a.extend=o.val?ft(o.val):1;break;case"<extend/>":a.extend=1;break;case"<sz":o.val&&(a.sz=+o.val);break;case"<sz/>":case"</sz>":break;case"<vertAlign":o.val&&(a.vertAlign=o.val);break;case"<vertAlign/>":case"</vertAlign>":break;case"<family":o.val&&(a.family=parseInt(o.val,10));break;case"<family/>":case"</family>":break;case"<scheme":o.val&&(a.scheme=o.val);break;case"<scheme/>":case"</scheme>":break;case"<charset":if(o.val=="1")break;o.codepage=Wl[parseInt(o.val,10)];break;case"<color":if(a.color||(a.color={}),o.auto&&(a.color.auto=ft(o.auto)),o.rgb)a.color.rgb=o.rgb.slice(-6);else if(o.indexed){a.color.index=parseInt(o.indexed,10);var c=ba[a.color.index];a.color.index==81&&(c=ba[1]),c||(c=ba[1]),a.color.rgb=c[0].toString(16)+c[1].toString(16)+c[2].toString(16)}else o.theme&&(a.color.theme=parseInt(o.theme,10),o.tint&&(a.color.tint=parseFloat(o.tint)),o.theme&&r.themeElements&&r.themeElements.clrScheme&&(a.color.rgb=So(r.themeElements.clrScheme[a.color.theme].rgb,a.color.tint||0)));break;case"<color/>":case"</color>":break;case"<AlternateContent":i=!0;break;case"</AlternateContent>":i=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in fonts")}})}function IC(e,t,r){t.NumberFmt=[];for(var n=_t(Oe),a=0;a<n.length;++a)t.NumberFmt[n[a]]=Oe[n[a]];var i=e[0].match(qt);if(i)for(a=0;a<i.length;++a){var s=Le(i[a]);switch(mn(s[0])){case"<numFmts":case"</numFmts>":case"<numFmts/>":case"<numFmts>":break;case"<numFmt":{var o=Ke(at(s.formatCode)),c=parseInt(s.numFmtId,10);if(t.NumberFmt[c]=o,c>0){if(c>392){for(c=392;c>60&&t.NumberFmt[c]!=null;--c);t.NumberFmt[c]=o}hn(o,c)}}break;case"</numFmt>":break;default:if(r.WTF)throw new Error("unrecognized "+s[0]+" in numFmts")}}}function PC(e){var t=["<numFmts>"];return[[5,8],[23,26],[41,44],[50,392]].forEach(function(r){for(var n=r[0];n<=r[1];++n)e[n]!=null&&(t[t.length]=xe("numFmt",null,{numFmtId:n,formatCode:et(e[n])}))}),t.length===1?"":(t[t.length]="</numFmts>",t[0]=xe("numFmts",null,{count:t.length-2}).replace("/>",">"),t.join(""))}var Fo=["numFmtId","fillId","fontId","borderId","xfId"],Ao=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function LC(e,t,r){t.CellXf=[];var n,a=!1;(e[0].match(qt)||[]).forEach(function(i){var s=Le(i),o=0;switch(mn(s[0])){case"<cellXfs":case"<cellXfs>":case"<cellXfs/>":case"</cellXfs>":break;case"<xf":case"<xf/>":for(n=s,delete n[0],o=0;o<Fo.length;++o)n[Fo[o]]&&(n[Fo[o]]=parseInt(n[Fo[o]],10));for(o=0;o<Ao.length;++o)n[Ao[o]]&&(n[Ao[o]]=ft(n[Ao[o]]));if(t.NumberFmt&&n.numFmtId>392){for(o=392;o>60;--o)if(t.NumberFmt[n.numFmtId]==t.NumberFmt[o]){n.numFmtId=o;break}}t.CellXf.push(n);break;case"</xf>":break;case"<alignment":case"<alignment/>":var c={};s.vertical&&(c.vertical=s.vertical),s.horizontal&&(c.horizontal=s.horizontal),s.textRotation!=null&&(c.textRotation=s.textRotation),s.indent&&(c.indent=s.indent),s.wrapText&&(c.wrapText=ft(s.wrapText)),n.alignment=c;break;case"</alignment>":break;case"<protection":break;case"</protection>":case"<protection/>":break;case"<AlternateContent":a=!0;break;case"</AlternateContent>":a=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;default:if(r&&r.WTF&&!a)throw new Error("unrecognized "+s[0]+" in cellXfs")}})}function MC(e){var t=[];return t[t.length]=xe("cellXfs",null),e.forEach(function(r){t[t.length]=xe("xf",null,r)}),t[t.length]="</cellXfs>",t.length===2?"":(t[0]=xe("cellXfs",null,{count:t.length-2}).replace("/>",">"),t.join(""))}var VC=function(){var t=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/,r=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/,n=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/,a=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/,i=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function(o,c,f){var u={};if(!o)return u;o=o.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");var d;return(d=o.match(t))&&IC(d,u,f),(d=o.match(a))&&NC(d,u,c,f),(d=o.match(n))&&BC(d,u,c,f),(d=o.match(i))&&OC(d,u,c,f),(d=o.match(r))&&LC(d,u,f),u}}();function Qh(e,t){var r=[Ct,xe("styleSheet",null,{xmlns:ga[0],"xmlns:vt":It.vt})],n;return e.SSF&&(n=PC(e.SSF))!=null&&(r[r.length]=n),r[r.length]='<fonts count="1"><font><sz val="12"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts>',r[r.length]='<fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills>',r[r.length]='<borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders>',r[r.length]='<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs>',(n=MC(t.cellXfs))&&(r[r.length]=n),r[r.length]='<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>',r[r.length]='<dxfs count="0"/>',r[r.length]='<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4"/>',r.length>2&&(r[r.length]="</styleSheet>",r[1]=r[1].replace("/>",">")),r.join("")}function UC(e,t){var r=e.read_shift(2),n=Zt(e);return[r,n]}function $C(e,t,r){r||(r=se(6+4*t.length)),r.write_shift(2,e),Vt(t,r);var n=r.length>r.l?r.slice(0,r.l):r;return r.l==null&&(r.l=r.length),n}function WC(e,t,r){var n={};n.sz=e.read_shift(2)/20;var a=b2(e);a.fItalic&&(n.italic=1),a.fCondense&&(n.condense=1),a.fExtend&&(n.extend=1),a.fShadow&&(n.shadow=1),a.fOutline&&(n.outline=1),a.fStrikeout&&(n.strike=1);var i=e.read_shift(2);switch(i===700&&(n.bold=1),e.read_shift(2)){case 1:n.vertAlign="superscript";break;case 2:n.vertAlign="subscript";break}var s=e.read_shift(1);s!=0&&(n.underline=s);var o=e.read_shift(1);o>0&&(n.family=o);var c=e.read_shift(1);switch(c>0&&(n.charset=c),e.l++,n.color=k2(e),e.read_shift(1)){case 1:n.scheme="major";break;case 2:n.scheme="minor";break}return n.name=Zt(e),n}function HC(e,t){t||(t=se(25+4*32)),t.write_shift(2,e.sz*20),C2(e,t),t.write_shift(2,e.bold?700:400);var r=0;e.vertAlign=="superscript"?r=1:e.vertAlign=="subscript"&&(r=2),t.write_shift(2,r),t.write_shift(1,e.underline||0),t.write_shift(1,e.family||0),t.write_shift(1,e.charset||0),t.write_shift(1,0),xo(e.color,t);var n=0;return e.scheme=="major"&&(n=1),e.scheme=="minor"&&(n=2),t.write_shift(1,n),Vt(e.name,t),t.length>t.l?t.slice(0,t.l):t}var jC=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"],Ac,zC=Jt;function em(e,t){t||(t=se(4*3+8*7+16*1)),Ac||(Ac=co(jC));var r=Ac[e.patternType];r==null&&(r=40),t.write_shift(4,r);var n=0;if(r!=40)for(xo({auto:1},t),xo({auto:1},t);n<12;++n)t.write_shift(4,0);else{for(;n<4;++n)t.write_shift(4,0);for(;n<12;++n)t.write_shift(4,0)}return t.length>t.l?t.slice(0,t.l):t}function GC(e,t){var r=e.l+t,n=e.read_shift(2),a=e.read_shift(2);return e.l=r,{ixfe:n,numFmtId:a}}function tm(e,t,r){r||(r=se(16)),r.write_shift(2,t||0),r.write_shift(2,e.numFmtId||0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(1,0),r.write_shift(1,0);var n=0;return r.write_shift(1,n),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(1,0),r}function ls(e,t){return t||(t=se(10)),t.write_shift(1,0),t.write_shift(1,0),t.write_shift(4,0),t.write_shift(4,0),t}var XC=Jt;function KC(e,t){return t||(t=se(51)),t.write_shift(1,0),ls(null,t),ls(null,t),ls(null,t),ls(null,t),ls(null,t),t.length>t.l?t.slice(0,t.l):t}function YC(e,t){return t||(t=se(12+4*10)),t.write_shift(4,e.xfId),t.write_shift(2,1),t.write_shift(1,+e.builtinId),t.write_shift(1,0),go(e.name||"",t),t.length>t.l?t.slice(0,t.l):t}function qC(e,t,r){var n=se(2052);return n.write_shift(4,e),go(t,n),go(r,n),n.length>n.l?n.slice(0,n.l):n}function JC(e,t,r){var n={};n.NumberFmt=[];for(var a in Oe)n.NumberFmt[a]=Oe[a];n.CellXf=[],n.Fonts=[];var i=[],s=!1;return Nn(e,function(c,f,u){switch(u){case 44:n.NumberFmt[c[0]]=c[1],hn(c[1],c[0]);break;case 43:n.Fonts.push(c),c.color.theme!=null&&t&&t.themeElements&&t.themeElements.clrScheme&&(c.color.rgb=So(t.themeElements.clrScheme[c.color.theme].rgb,c.color.tint||0));break;case 1025:break;case 45:break;case 46:break;case 47:i[i.length-1]==617&&n.CellXf.push(c);break;case 48:case 507:case 572:case 475:break;case 1171:case 2102:case 1130:case 512:case 2095:case 3072:break;case 35:s=!0;break;case 36:s=!1;break;case 37:i.push(u),s=!0;break;case 38:i.pop(),s=!1;break;default:if(f.T>0)i.push(u);else if(f.T<0)i.pop();else if(!s||r.WTF&&i[i.length-1]!=37)throw new Error("Unexpected record 0x"+u.toString(16))}}),n}function ZC(e,t){if(t){var r=0;[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&++r}),r!=0&&(fe(e,615,qr(r)),[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&fe(e,44,$C(a,t[a]))}),fe(e,616))}}function QC(e){var t=1;fe(e,611,qr(t)),fe(e,43,HC({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"})),fe(e,612)}function eE(e){var t=2;fe(e,603,qr(t)),fe(e,45,em({patternType:"none"})),fe(e,45,em({patternType:"gray125"})),fe(e,604)}function tE(e){var t=1;fe(e,613,qr(t)),fe(e,46,KC()),fe(e,614)}function rE(e){var t=1;fe(e,626,qr(t)),fe(e,47,tm({numFmtId:0,fontId:0,fillId:0,borderId:0},65535)),fe(e,627)}function nE(e,t){fe(e,617,qr(t.length)),t.forEach(function(r){fe(e,47,tm(r,0))}),fe(e,618)}function aE(e){var t=1;fe(e,619,qr(t)),fe(e,48,YC({xfId:0,builtinId:0,name:"Normal"})),fe(e,620)}function iE(e){var t=0;fe(e,505,qr(t)),fe(e,506)}function sE(e){var t=0;fe(e,508,qC(t,"TableStyleMedium9","PivotStyleMedium4")),fe(e,509)}function oE(e,t){var r=pr();return fe(r,278),ZC(r,e.SSF),QC(r),eE(r),tE(r),rE(r),nE(r,t.cellXfs),aE(r),iE(r),sE(r),fe(r,279),r.end()}var lE=["</a:lt1>","</a:dk1>","</a:lt2>","</a:dk2>","</a:accent1>","</a:accent2>","</a:accent3>","</a:accent4>","</a:accent5>","</a:accent6>","</a:hlink>","</a:folHlink>"];function cE(e,t,r){t.themeElements.clrScheme=[];var n={};(e[0].match(qt)||[]).forEach(function(a){var i=Le(a);switch(i[0]){case"<a:clrScheme":case"</a:clrScheme>":break;case"<a:srgbClr":n.rgb=i.val;break;case"<a:sysClr":n.rgb=i.lastClr;break;case"<a:dk1>":case"</a:dk1>":case"<a:lt1>":case"</a:lt1>":case"<a:dk2>":case"</a:dk2>":case"<a:lt2>":case"</a:lt2>":case"<a:accent1>":case"</a:accent1>":case"<a:accent2>":case"</a:accent2>":case"<a:accent3>":case"</a:accent3>":case"<a:accent4>":case"</a:accent4>":case"<a:accent5>":case"</a:accent5>":case"<a:accent6>":case"</a:accent6>":case"<a:hlink>":case"</a:hlink>":case"<a:folHlink>":case"</a:folHlink>":i[0].charAt(1)==="/"?(t.themeElements.clrScheme[lE.indexOf(i[0])]=n,n={}):n.name=i[0].slice(3,i[0].length-1);break;default:if(r&&r.WTF)throw new Error("Unrecognized "+i[0]+" in clrScheme")}})}function fE(){}function uE(){}var dE=/<a:clrScheme([^>]*)>[\s\S]*<\/a:clrScheme>/,hE=/<a:fontScheme([^>]*)>[\s\S]*<\/a:fontScheme>/,mE=/<a:fmtScheme([^>]*)>[\s\S]*<\/a:fmtScheme>/;function pE(e,t,r){t.themeElements={};var n;[["clrScheme",dE,cE],["fontScheme",hE,fE],["fmtScheme",mE,uE]].forEach(function(a){if(!(n=e.match(a[1])))throw new Error(a[0]+" not found in themeElements");a[2](n,t,r)})}var gE=/<a:themeElements([^>]*)>[\s\S]*<\/a:themeElements>/;function rm(e,t){(!e||e.length===0)&&(e=Dc());var r,n={};if(!(r=e.match(gE)))throw new Error("themeElements not found in theme");return pE(r[0],n,t),n.raw=e,n}function Dc(e,t){if(t&&t.themeXLSX)return t.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var r=[Ct];return r[r.length]='<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">',r[r.length]="<a:themeElements>",r[r.length]='<a:clrScheme name="Office">',r[r.length]='<a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1>',r[r.length]='<a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1>',r[r.length]='<a:dk2><a:srgbClr val="1F497D"/></a:dk2>',r[r.length]='<a:lt2><a:srgbClr val="EEECE1"/></a:lt2>',r[r.length]='<a:accent1><a:srgbClr val="4F81BD"/></a:accent1>',r[r.length]='<a:accent2><a:srgbClr val="C0504D"/></a:accent2>',r[r.length]='<a:accent3><a:srgbClr val="9BBB59"/></a:accent3>',r[r.length]='<a:accent4><a:srgbClr val="8064A2"/></a:accent4>',r[r.length]='<a:accent5><a:srgbClr val="4BACC6"/></a:accent5>',r[r.length]='<a:accent6><a:srgbClr val="F79646"/></a:accent6>',r[r.length]='<a:hlink><a:srgbClr val="0000FF"/></a:hlink>',r[r.length]='<a:folHlink><a:srgbClr val="800080"/></a:folHlink>',r[r.length]="</a:clrScheme>",r[r.length]='<a:fontScheme name="Office">',r[r.length]="<a:majorFont>",r[r.length]='<a:latin typeface="Cambria"/>',r[r.length]='<a:ea typeface=""/>',r[r.length]='<a:cs typeface=""/>',r[r.length]='<a:font script="Jpan" typeface="MS Pゴシック"/>',r[r.length]='<a:font script="Hang" typeface="맑은 고딕"/>',r[r.length]='<a:font script="Hans" typeface="宋体"/>',r[r.length]='<a:font script="Hant" typeface="新細明體"/>',r[r.length]='<a:font script="Arab" typeface="Times New Roman"/>',r[r.length]='<a:font script="Hebr" typeface="Times New Roman"/>',r[r.length]='<a:font script="Thai" typeface="Tahoma"/>',r[r.length]='<a:font script="Ethi" typeface="Nyala"/>',r[r.length]='<a:font script="Beng" typeface="Vrinda"/>',r[r.length]='<a:font script="Gujr" typeface="Shruti"/>',r[r.length]='<a:font script="Khmr" typeface="MoolBoran"/>',r[r.length]='<a:font script="Knda" typeface="Tunga"/>',r[r.length]='<a:font script="Guru" typeface="Raavi"/>',r[r.length]='<a:font script="Cans" typeface="Euphemia"/>',r[r.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',r[r.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',r[r.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',r[r.length]='<a:font script="Thaa" typeface="MV Boli"/>',r[r.length]='<a:font script="Deva" typeface="Mangal"/>',r[r.length]='<a:font script="Telu" typeface="Gautami"/>',r[r.length]='<a:font script="Taml" typeface="Latha"/>',r[r.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',r[r.length]='<a:font script="Orya" typeface="Kalinga"/>',r[r.length]='<a:font script="Mlym" typeface="Kartika"/>',r[r.length]='<a:font script="Laoo" typeface="DokChampa"/>',r[r.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',r[r.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>',r[r.length]='<a:font script="Viet" typeface="Times New Roman"/>',r[r.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',r[r.length]='<a:font script="Geor" typeface="Sylfaen"/>',r[r.length]="</a:majorFont>",r[r.length]="<a:minorFont>",r[r.length]='<a:latin typeface="Calibri"/>',r[r.length]='<a:ea typeface=""/>',r[r.length]='<a:cs typeface=""/>',r[r.length]='<a:font script="Jpan" typeface="MS Pゴシック"/>',r[r.length]='<a:font script="Hang" typeface="맑은 고딕"/>',r[r.length]='<a:font script="Hans" typeface="宋体"/>',r[r.length]='<a:font script="Hant" typeface="新細明體"/>',r[r.length]='<a:font script="Arab" typeface="Arial"/>',r[r.length]='<a:font script="Hebr" typeface="Arial"/>',r[r.length]='<a:font script="Thai" typeface="Tahoma"/>',r[r.length]='<a:font script="Ethi" typeface="Nyala"/>',r[r.length]='<a:font script="Beng" typeface="Vrinda"/>',r[r.length]='<a:font script="Gujr" typeface="Shruti"/>',r[r.length]='<a:font script="Khmr" typeface="DaunPenh"/>',r[r.length]='<a:font script="Knda" typeface="Tunga"/>',r[r.length]='<a:font script="Guru" typeface="Raavi"/>',r[r.length]='<a:font script="Cans" typeface="Euphemia"/>',r[r.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',r[r.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',r[r.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',r[r.length]='<a:font script="Thaa" typeface="MV Boli"/>',r[r.length]='<a:font script="Deva" typeface="Mangal"/>',r[r.length]='<a:font script="Telu" typeface="Gautami"/>',r[r.length]='<a:font script="Taml" typeface="Latha"/>',r[r.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',r[r.length]='<a:font script="Orya" typeface="Kalinga"/>',r[r.length]='<a:font script="Mlym" typeface="Kartika"/>',r[r.length]='<a:font script="Laoo" typeface="DokChampa"/>',r[r.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',r[r.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>',r[r.length]='<a:font script="Viet" typeface="Arial"/>',r[r.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',r[r.length]='<a:font script="Geor" typeface="Sylfaen"/>',r[r.length]="</a:minorFont>",r[r.length]="</a:fontScheme>",r[r.length]='<a:fmtScheme name="Office">',r[r.length]="<a:fillStyleLst>",r[r.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:lin ang="16200000" scaled="1"/>',r[r.length]="</a:gradFill>",r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="100000"/><a:satMod val="130000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val="100000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:lin ang="16200000" scaled="0"/>',r[r.length]="</a:gradFill>",r[r.length]="</a:fillStyleLst>",r[r.length]="<a:lnStyleLst>",r[r.length]='<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]='<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]='<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]="</a:lnStyleLst>",r[r.length]="<a:effectStyleLst>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]="</a:effectStyle>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]="</a:effectStyle>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]='<a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d>',r[r.length]='<a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d>',r[r.length]="</a:effectStyle>",r[r.length]="</a:effectStyleLst>",r[r.length]="<a:bgFillStyleLst>",r[r.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path>',r[r.length]="</a:gradFill>",r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path>',r[r.length]="</a:gradFill>",r[r.length]="</a:bgFillStyleLst>",r[r.length]="</a:fmtScheme>",r[r.length]="</a:themeElements>",r[r.length]="<a:objectDefaults>",r[r.length]="<a:spDef>",r[r.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style>',r[r.length]="</a:spDef>",r[r.length]="<a:lnDef>",r[r.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style>',r[r.length]="</a:lnDef>",r[r.length]="</a:objectDefaults>",r[r.length]="<a:extraClrSchemeLst/>",r[r.length]="</a:theme>",r.join("")}function xE(e,t,r){var n=e.l+t,a=e.read_shift(4);if(a!==124226){if(!r.cellStyles){e.l=n;return}var i=e.slice(e.l);e.l=n;var s;try{s=gd(i,{type:"array"})}catch{return}var o=Sr(s,"theme/theme/theme1.xml",!0);if(o)return rm(o,r)}}function vE(e){return e.read_shift(4)}function wE(e){var t={};switch(t.xclrType=e.read_shift(2),t.nTintShade=e.read_shift(2),t.xclrType){case 0:e.l+=4;break;case 1:t.xclrValue=_E(e,4);break;case 2:t.xclrValue=Sh(e);break;case 3:t.xclrValue=vE(e);break;case 4:e.l+=4;break}return e.l+=8,t}function _E(e,t){return Jt(e,t)}function yE(e,t){return Jt(e,t)}function kE(e){var t=e.read_shift(2),r=e.read_shift(2)-4,n=[t];switch(t){case 4:case 5:case 7:case 8:case 9:case 10:case 11:case 13:n[1]=wE(e);break;case 6:n[1]=yE(e,r);break;case 14:case 15:n[1]=e.read_shift(r===1?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+t+" "+r)}return n}function bE(e,t){var r=e.l+t;e.l+=2;var n=e.read_shift(2);e.l+=2;for(var a=e.read_shift(2),i=[];a-- >0;)i.push(kE(e,r-e.l));return{ixfe:n,ext:i}}function CE(e,t){t.forEach(function(r){switch(r[0]){}})}function EE(e,t){return{flags:e.read_shift(4),version:e.read_shift(4),name:Zt(e)}}function SE(e){var t=se(12+2*e.name.length);return t.write_shift(4,e.flags),t.write_shift(4,e.version),Vt(e.name,t),t.slice(0,t.l)}function TE(e){for(var t=[],r=e.read_shift(4);r-- >0;)t.push([e.read_shift(4),e.read_shift(4)]);return t}function FE(e){var t=se(4+8*e.length);t.write_shift(4,e.length);for(var r=0;r<e.length;++r)t.write_shift(4,e[r][0]),t.write_shift(4,e[r][1]);return t}function AE(e,t){var r=se(8+2*t.length);return r.write_shift(4,e),Vt(t,r),r.slice(0,r.l)}function DE(e){return e.l+=4,e.read_shift(4)!=0}function RE(e,t){var r=se(8);return r.write_shift(4,e),r.write_shift(4,t?1:0),r}function OE(e,t,r){var n={Types:[],Cell:[],Value:[]},a=r||{},i=[],s=!1,o=2;return Nn(e,function(c,f,u){switch(u){case 335:n.Types.push({name:c.name});break;case 51:c.forEach(function(d){o==1?n.Cell.push({type:n.Types[d[0]-1].name,index:d[1]}):o==0&&n.Value.push({type:n.Types[d[0]-1].name,index:d[1]})});break;case 337:o=c?1:0;break;case 338:o=2;break;case 35:i.push(u),s=!0;break;case 36:i.pop(),s=!1;break;default:if(!f.T){if(!s||a.WTF&&i[i.length-1]!=35)throw new Error("Unexpected record 0x"+u.toString(16))}}}),n}function BE(){var e=pr();return fe(e,332),fe(e,334,qr(1)),fe(e,335,SE({name:"XLDAPR",version:12e4,flags:3496657072})),fe(e,336),fe(e,339,AE(1,"XLDAPR")),fe(e,52),fe(e,35,qr(514)),fe(e,4096,qr(0)),fe(e,4097,Vr(1)),fe(e,36),fe(e,53),fe(e,340),fe(e,337,RE(1,!0)),fe(e,51,FE([[1,0]])),fe(e,338),fe(e,333),e.end()}function NE(e,t,r){var n={Types:[],Cell:[],Value:[]};if(!e)return n;var a=!1,i=2,s;return e.replace(qt,function(o){var c=Le(o);switch(mn(c[0])){case"<?xml":break;case"<metadata":case"</metadata>":break;case"<metadataTypes":case"</metadataTypes>":break;case"<metadataType":n.Types.push({name:c.name});break;case"</metadataType>":break;case"<futureMetadata":for(var f=0;f<n.Types.length;++f)n.Types[f].name==c.name&&(s=n.Types[f]);break;case"</futureMetadata>":break;case"<bk>":break;case"</bk>":break;case"<rc":i==1?n.Cell.push({type:n.Types[c.t-1].name,index:+c.v}):i==0&&n.Value.push({type:n.Types[c.t-1].name,index:+c.v});break;case"</rc>":break;case"<cellMetadata":i=1;break;case"</cellMetadata>":i=2;break;case"<valueMetadata":i=0;break;case"</valueMetadata>":i=2;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;case"<rvb":if(!s)break;s.offsets||(s.offsets=[]),s.offsets.push(+c.i);break;default:if(!a&&r.WTF)throw new Error("unrecognized "+c[0]+" in metadata")}return o}),n}function nm(){var e=[Ct];return e.push(`<metadata xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:xlrd="http://schemas.microsoft.com/office/spreadsheetml/2017/richdata" xmlns:xda="http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray">
<metadataTypes count="1">
<metadataType name="XLDAPR" minSupportedVersion="120000" copy="1" pasteAll="1" pasteValues="1" merge="1" splitFirst="1" rowColShift="1" clearFormats="1" clearComments="1" assign="1" coerce="1" cellMeta="1"/>
</metadataTypes>
<futureMetadata name="XLDAPR" count="1">
<bk>
<extLst>
<ext uri="{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}">
<xda:dynamicArrayProperties fDynamic="1" fCollapsed="0"/>
</ext>
</extLst>
</bk>
</futureMetadata>
<cellMetadata count="1">
<bk>
<rc t="1" v="0"/>
</bk>
</cellMetadata>
</metadata>`),e.join("")}function IE(e){var t=[];if(!e)return t;var r=1;return(e.match(qt)||[]).forEach(function(n){var a=Le(n);switch(a[0]){case"<?xml":break;case"<calcChain":case"<calcChain>":case"</calcChain>":break;case"<c":delete a[0],a.i?r=a.i:a.i=r,t.push(a);break}}),t}function PE(e){var t={};t.i=e.read_shift(4);var r={};r.r=e.read_shift(4),r.c=e.read_shift(4),t.r=Ne(r);var n=e.read_shift(1);return n&2&&(t.l="1"),n&8&&(t.a="1"),t}function LE(e,t,r){var n=[];return Nn(e,function(i,s,o){switch(o){case 63:n.push(i);break;default:if(!s.T)throw new Error("Unexpected record 0x"+o.toString(16))}}),n}function sR(){}function ME(e,t,r,n){if(!e)return e;var a=n||{},i=!1;Nn(e,function(o,c,f){switch(f){case 359:case 363:case 364:case 366:case 367:case 368:case 369:case 370:case 371:case 472:case 577:case 578:case 579:case 580:case 581:case 582:case 583:case 584:case 585:case 586:case 587:break;case 35:i=!0;break;case 36:i=!1;break;default:if(!c.T){if(!i||a.WTF)throw new Error("Unexpected record 0x"+f.toString(16))}}},a)}function VE(e,t){if(!e)return"??";var r=(e.match(/<c:chart [^>]*r:id="([^"]*)"/)||["",""])[1];return t["!id"][r].Target}var ii=1024;function am(e,t){for(var r=[21600,21600],n=["m0,0l0",r[1],r[0],r[1],r[0],"0xe"].join(","),a=[xe("xml",null,{"xmlns:v":Tr.v,"xmlns:o":Tr.o,"xmlns:x":Tr.x,"xmlns:mv":Tr.mv}).replace(/\/>/,">"),xe("o:shapelayout",xe("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),xe("v:shapetype",[xe("v:stroke",null,{joinstyle:"miter"}),xe("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:r.join(","),path:n})];ii<e*1e3;)ii+=1e3;return t.forEach(function(i){var s=pt(i[0]),o={color2:"#BEFF82",type:"gradient"};o.type=="gradient"&&(o.angle="-180");var c=o.type=="gradient"?xe("o:fill",null,{type:"gradientUnscaled","v:ext":"view"}):null,f=xe("v:fill",c,o),u={on:"t",obscured:"t"};++ii,a=a.concat(["<v:shape"+Ki({id:"_x0000_s"+ii,type:"#_x0000_t202",style:"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10"+(i[1].hidden?";visibility:hidden":""),fillcolor:"#ECFAD4",strokecolor:"#edeaa1"})+">",f,xe("v:shadow",null,u),xe("v:path",null,{"o:connecttype":"none"}),'<v:textbox><div style="text-align:left"></div></v:textbox>','<x:ClientData ObjectType="Note">',"<x:MoveWithCells/>","<x:SizeWithCells/>",Gt("x:Anchor",[s.c+1,0,s.r+1,0,s.c+3,20,s.r+5,20].join(",")),Gt("x:AutoFill","False"),Gt("x:Row",String(s.r)),Gt("x:Column",String(s.c)),i[1].hidden?"":"<x:Visible/>","</x:ClientData>","</v:shape>"])}),a.push("</xml>"),a.join("")}function im(e,t,r,n){var a=Array.isArray(e),i;t.forEach(function(s){var o=pt(s.ref);if(a?(e[o.r]||(e[o.r]=[]),i=e[o.r][o.c]):i=e[s.ref],!i){i={t:"z"},a?e[o.r][o.c]=i:e[s.ref]=i;var c=Ye(e["!ref"]||"BDWGO1000001:A1");c.s.r>o.r&&(c.s.r=o.r),c.e.r<o.r&&(c.e.r=o.r),c.s.c>o.c&&(c.s.c=o.c),c.e.c<o.c&&(c.e.c=o.c);var f=We(c);f!==e["!ref"]&&(e["!ref"]=f)}i.c||(i.c=[]);var u={a:s.author,t:s.t,r:s.r,T:r};s.h&&(u.h=s.h);for(var d=i.c.length-1;d>=0;--d){if(!r&&i.c[d].T)return;r&&!i.c[d].T&&i.c.splice(d,1)}if(r&&n){for(d=0;d<n.length;++d)if(u.a==n[d].id){u.a=n[d].name||u.a;break}}i.c.push(u)})}function UE(e,t){if(e.match(/<(?:\w+:)?comments *\/>/))return[];var r=[],n=[],a=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);a&&a[1]&&a[1].split(/<\/\w*:?author>/).forEach(function(s){if(!(s===""||s.trim()==="")){var o=s.match(/<(?:\w+:)?author[^>]*>(.*)/);o&&r.push(o[1])}});var i=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);return i&&i[1]&&i[1].split(/<\/\w*:?comment>/).forEach(function(s){if(!(s===""||s.trim()==="")){var o=s.match(/<(?:\w+:)?comment[^>]*>/);if(o){var c=Le(o[0]),f={author:c.authorId&&r[c.authorId]||"sheetjsghost",ref:c.ref,guid:c.guid},u=pt(c.ref);if(!(t.sheetRows&&t.sheetRows<=u.r)){var d=s.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/),h=!!d&&!!d[1]&&Ec(d[1])||{r:"",t:"",h:""};f.r=h.r,h.r=="<t></t>"&&(h.t=h.h=""),f.t=(h.t||"").replace(/\r\n/g,`
`).replace(/\r/g,`
`),t.cellHTML&&(f.h=h.h),n.push(f)}}}}),n}function sm(e){var t=[Ct,xe("comments",null,{xmlns:ga[0]})],r=[];return t.push("<authors>"),e.forEach(function(n){n[1].forEach(function(a){var i=et(a.a);r.indexOf(i)==-1&&(r.push(i),t.push("<author>"+i+"</author>")),a.T&&a.ID&&r.indexOf("tc="+a.ID)==-1&&(r.push("tc="+a.ID),t.push("<author>tc="+a.ID+"</author>"))})}),r.length==0&&(r.push("SheetJ5"),t.push("<author>SheetJ5</author>")),t.push("</authors>"),t.push("<commentList>"),e.forEach(function(n){var a=0,i=[];if(n[1][0]&&n[1][0].T&&n[1][0].ID?a=r.indexOf("tc="+n[1][0].ID):n[1].forEach(function(c){c.a&&(a=r.indexOf(et(c.a))),i.push(c.t||"")}),t.push('<comment ref="'+n[0]+'" authorId="'+a+'"><text>'),i.length<=1)t.push(Gt("t",et(i[0]||"")));else{for(var s=`Comment:
`+i[0]+`
`,o=1;o<i.length;++o)s+=`Reply:
`+i[o]+`
`;t.push(Gt("t",et(s)))}t.push("</text></comment>")}),t.push("</commentList>"),t.length>2&&(t[t.length]="</comments>",t[1]=t[1].replace("/>",">")),t.join("")}function $E(e,t){var r=[],n=!1,a={},i=0;return e.replace(qt,function(o,c){var f=Le(o);switch(mn(f[0])){case"<?xml":break;case"<ThreadedComments":break;case"</ThreadedComments>":break;case"<threadedComment":a={author:f.personId,guid:f.id,ref:f.ref,T:1};break;case"</threadedComment>":a.t!=null&&r.push(a);break;case"<text>":case"<text":i=c+o.length;break;case"</text>":a.t=e.slice(i,c).replace(/\r\n/g,`
`).replace(/\r/g,`
`);break;case"<mentions":case"<mentions>":n=!0;break;case"</mentions>":n=!1;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;default:if(!n&&t.WTF)throw new Error("unrecognized "+f[0]+" in threaded comments")}return o}),r}function WE(e,t,r){var n=[Ct,xe("ThreadedComments",null,{xmlns:It.TCMNT}).replace(/[\/]>/,">")];return e.forEach(function(a){var i="";(a[1]||[]).forEach(function(s,o){if(!s.T){delete s.ID;return}s.a&&t.indexOf(s.a)==-1&&t.push(s.a);var c={ref:a[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+r.tcid++).slice(-12)+"}"};o==0?i=c.id:c.parentId=i,s.ID=c.id,s.a&&(c.personId="{54EE7950-7262-4200-6969-"+("000000000000"+t.indexOf(s.a)).slice(-12)+"}"),n.push(xe("threadedComment",Gt("text",s.t||""),c))})}),n.push("</ThreadedComments>"),n.join("")}function HE(e,t){var r=[],n=!1;return e.replace(qt,function(i){var s=Le(i);switch(mn(s[0])){case"<?xml":break;case"<personList":break;case"</personList>":break;case"<person":r.push({name:s.displayname,id:s.id});break;case"</person>":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;default:if(!n&&t.WTF)throw new Error("unrecognized "+s[0]+" in threaded comments")}return i}),r}function jE(e){var t=[Ct,xe("personList",null,{xmlns:It.TCMNT,"xmlns:x":ga[0]}).replace(/[\/]>/,">")];return e.forEach(function(r,n){t.push(xe("person",null,{displayName:r,id:"{54EE7950-7262-4200-6969-"+("000000000000"+n).slice(-12)+"}",userId:r,providerId:"None"}))}),t.push("</personList>"),t.join("")}function zE(e){var t={};t.iauthor=e.read_shift(4);var r=ya(e);return t.rfx=r.s,t.ref=Ne(r.s),e.l+=16,t}function GE(e,t){return t==null&&(t=se(36)),t.write_shift(4,e[1].iauthor),ti(e[0],t),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t}var XE=Zt;function KE(e){return Vt(e.slice(0,54))}function YE(e,t){var r=[],n=[],a={},i=!1;return Nn(e,function(o,c,f){switch(f){case 632:n.push(o);break;case 635:a=o;break;case 637:a.t=o.t,a.h=o.h,a.r=o.r;break;case 636:if(a.author=n[a.iauthor],delete a.iauthor,t.sheetRows&&a.rfx&&t.sheetRows<=a.rfx.r)break;a.t||(a.t=""),delete a.rfx,r.push(a);break;case 3072:break;case 35:i=!0;break;case 36:i=!1;break;case 37:break;case 38:break;default:if(!c.T){if(!i||t.WTF)throw new Error("Unexpected record 0x"+f.toString(16))}}}),r}function qE(e){var t=pr(),r=[];return fe(t,628),fe(t,630),e.forEach(function(n){n[1].forEach(function(a){r.indexOf(a.a)>-1||(r.push(a.a.slice(0,54)),fe(t,632,KE(a.a)))})}),fe(t,631),fe(t,633),e.forEach(function(n){n[1].forEach(function(a){a.iauthor=r.indexOf(a.a);var i={s:pt(n[0]),e:pt(n[0])};fe(t,635,GE([i,a])),a.t&&a.t.length>0&&fe(t,637,v2(a)),fe(t,636),delete a.iauthor})}),fe(t,634),fe(t,629),t.end()}var JE="application/vnd.ms-office.vbaProject";function ZE(e){var t=Ae.utils.cfb_new({root:"R"});return e.FullPaths.forEach(function(r,n){if(!(r.slice(-1)==="/"||!r.match(/_VBA_PROJECT_CUR/))){var a=r.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");Ae.utils.cfb_add(t,a,e.FileIndex[n].content)}}),Ae.write(t)}function QE(e,t){t.FullPaths.forEach(function(r,n){if(n!=0){var a=r.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");a.slice(-1)!=="/"&&Ae.utils.cfb_add(e,a,t.FileIndex[n].content)}})}var om=["xlsb","xlsm","xlam","biff8","xla"];function eS(){return{"!type":"dialog"}}function tS(){return{"!type":"dialog"}}function rS(){return{"!type":"macro"}}function nS(){return{"!type":"macro"}}var si=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g,t={r:0,c:0};function r(n,a,i,s){var o=!1,c=!1;i.length==0?c=!0:i.charAt(0)=="["&&(c=!0,i=i.slice(1,-1)),s.length==0?o=!0:s.charAt(0)=="["&&(o=!0,s=s.slice(1,-1));var f=i.length>0?parseInt(i,10)|0:0,u=s.length>0?parseInt(s,10)|0:0;return o?u+=t.c:--u,c?f+=t.r:--f,a+(o?"":"$")+mt(u)+(c?"":"$")+Et(f)}return function(a,i){return t=i,a.replace(e,r)}}(),Rc=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g,Oc=function(){return function(t,r){return t.replace(Rc,function(n,a,i,s,o,c){var f=oc(s)-(i?0:r.c),u=sc(c)-(o?0:r.r),d=u==0?"":o?u+1:"["+u+"]",h=f==0?"":i?f+1:"["+f+"]";return a+"R"+d+"C"+h})}}();function lm(e,t){return e.replace(Rc,function(r,n,a,i,s,o){return n+(a=="$"?a+i:mt(oc(i)+t.c))+(s=="$"?s+o:Et(sc(o)+t.r))})}function aS(e,t,r){var n=gr(t),a=n.s,i=pt(r),s={r:i.r-a.r,c:i.c-a.c};return lm(e,s)}function iS(e){return e.length!=1}function cm(e){return e.replace(/_xlfn\./g,"")}function Dt(e){e.l+=1}function ra(e,t){var r=e.read_shift(t==1?1:2);return[r&16383,r>>14&1,r>>15&1]}function fm(e,t,r){var n=2;if(r){if(r.biff>=2&&r.biff<=5)return um(e);r.biff==12&&(n=4)}var a=e.read_shift(n),i=e.read_shift(n),s=ra(e,2),o=ra(e,2);return{s:{r:a,c:s[0],cRel:s[1],rRel:s[2]},e:{r:i,c:o[0],cRel:o[1],rRel:o[2]}}}function um(e){var t=ra(e,2),r=ra(e,2),n=e.read_shift(1),a=e.read_shift(1);return{s:{r:t[0],c:n,cRel:t[1],rRel:t[2]},e:{r:r[0],c:a,cRel:r[1],rRel:r[2]}}}function sS(e,t,r){if(r.biff<8)return um(e);var n=e.read_shift(r.biff==12?4:2),a=e.read_shift(r.biff==12?4:2),i=ra(e,2),s=ra(e,2);return{s:{r:n,c:i[0],cRel:i[1],rRel:i[2]},e:{r:a,c:s[0],cRel:s[1],rRel:s[2]}}}function dm(e,t,r){if(r&&r.biff>=2&&r.biff<=5)return oS(e);var n=e.read_shift(r&&r.biff==12?4:2),a=ra(e,2);return{r:n,c:a[0],cRel:a[1],rRel:a[2]}}function oS(e){var t=ra(e,2),r=e.read_shift(1);return{r:t[0],c:r,cRel:t[1],rRel:t[2]}}function lS(e){var t=e.read_shift(2),r=e.read_shift(2);return{r:t,c:r&255,fQuoted:!!(r&16384),cRel:r>>15,rRel:r>>15}}function cS(e,t,r){var n=r&&r.biff?r.biff:8;if(n>=2&&n<=5)return fS(e);var a=e.read_shift(n>=12?4:2),i=e.read_shift(2),s=(i&16384)>>14,o=(i&32768)>>15;if(i&=16383,o==1)for(;a>524287;)a-=1048576;if(s==1)for(;i>8191;)i=i-16384;return{r:a,c:i,cRel:s,rRel:o}}function fS(e){var t=e.read_shift(2),r=e.read_shift(1),n=(t&32768)>>15,a=(t&16384)>>14;return t&=16383,n==1&&t>=8192&&(t=t-16384),a==1&&r>=128&&(r=r-256),{r:t,c:r,cRel:a,rRel:n}}function uS(e,t,r){var n=(e[e.l++]&96)>>5,a=fm(e,r.biff>=2&&r.biff<=5?6:8,r);return[n,a]}function dS(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2,"i"),i=8;if(r)switch(r.biff){case 5:e.l+=12,i=6;break;case 12:i=12;break}var s=fm(e,i,r);return[n,a,s]}function hS(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r&&r.biff>8?12:r.biff<8?6:8,[n]}function mS(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2),i=8;if(r)switch(r.biff){case 5:e.l+=12,i=6;break;case 12:i=12;break}return e.l+=i,[n,a]}function pS(e,t,r){var n=(e[e.l++]&96)>>5,a=sS(e,t-1,r);return[n,a]}function gS(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r.biff==2?6:r.biff==12?14:7,[n]}function hm(e){var t=e[e.l+1]&1,r=1;return e.l+=4,[t,r]}function xS(e,t,r){e.l+=2;for(var n=e.read_shift(r&&r.biff==2?1:2),a=[],i=0;i<=n;++i)a.push(e.read_shift(r&&r.biff==2?1:2));return a}function vS(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function wS(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function _S(e){var t=e[e.l+1]&255?1:0;return e.l+=2,[t,e.read_shift(2)]}function yS(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=r&&r.biff==2?3:4,[n]}function mm(e){var t=e.read_shift(1),r=e.read_shift(1);return[t,r]}function kS(e){return e.read_shift(2),mm(e)}function bS(e){return e.read_shift(2),mm(e)}function CS(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=dm(e,0,r);return[n,a]}function ES(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=cS(e,0,r);return[n,a]}function SS(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=e.read_shift(2);r&&r.biff==5&&(e.l+=12);var i=dm(e,0,r);return[n,a,i]}function TS(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=e.read_shift(r&&r.biff<=3?1:2);return[DT[a],wm[a],n]}function FS(e,t,r){var n=e[e.l++],a=e.read_shift(1),i=r&&r.biff<=3?[n==88?-1:0,e.read_shift(1)]:AS(e);return[a,(i[0]===0?wm:AT)[i[1]]]}function AS(e){return[e[e.l+1]>>7,e.read_shift(2)&32767]}function DS(e,t,r){e.l+=r&&r.biff==2?3:4}function RS(e,t,r){if(e.l++,r&&r.biff==12)return[e.read_shift(4,"i"),0];var n=e.read_shift(2),a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function OS(e){return e.l++,Pn[e.read_shift(1)]}function BS(e){return e.l++,e.read_shift(2)}function NS(e){return e.l++,e.read_shift(1)!==0}function IS(e){return e.l++,Qt(e)}function PS(e,t,r){return e.l++,rs(e,t-1,r)}function LS(e,t){var r=[e.read_shift(1)];if(t==12)switch(r[0]){case 2:r[0]=4;break;case 4:r[0]=16;break;case 0:r[0]=1;break;case 1:r[0]=2;break}switch(r[0]){case 4:r[1]=St(e,1)?"TRUE":"FALSE",t!=12&&(e.l+=7);break;case 37:case 16:r[1]=Pn[e[e.l]],e.l+=t==12?4:8;break;case 0:e.l+=8;break;case 1:r[1]=Qt(e);break;case 2:r[1]=Sa(e,0,{biff:t>0&&t<8?2:t});break;default:throw new Error("Bad SerAr: "+r[0])}return r}function MS(e,t,r){for(var n=e.read_shift(r.biff==12?4:2),a=[],i=0;i!=n;++i)a.push((r.biff==12?ya:Co)(e));return a}function VS(e,t,r){var n=0,a=0;r.biff==12?(n=e.read_shift(4),a=e.read_shift(4)):(a=1+e.read_shift(1),n=1+e.read_shift(2)),r.biff>=2&&r.biff<8&&(--n,--a==0&&(a=256));for(var i=0,s=[];i!=n&&(s[i]=[]);++i)for(var o=0;o!=a;++o)s[i][o]=LS(e,r.biff);return s}function US(e,t,r){var n=e.read_shift(1)>>>5&3,a=!r||r.biff>=8?4:2,i=e.read_shift(a);switch(r.biff){case 2:e.l+=5;break;case 3:case 4:e.l+=8;break;case 5:e.l+=12;break}return[n,0,i]}function $S(e,t,r){if(r.biff==5)return WS(e);var n=e.read_shift(1)>>>5&3,a=e.read_shift(2),i=e.read_shift(4);return[n,a,i]}function WS(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2,"i");e.l+=8;var n=e.read_shift(2);return e.l+=12,[t,r,n]}function HS(e,t,r){var n=e.read_shift(1)>>>5&3;e.l+=r&&r.biff==2?3:4;var a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function jS(e,t,r){var n=e.read_shift(1)>>>5&3,a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function zS(e,t,r){var n=e.read_shift(1)>>>5&3;return e.l+=4,r.biff<8&&e.l--,r.biff==12&&(e.l+=2),[n]}function GS(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2),i=4;if(r)switch(r.biff){case 5:i=15;break;case 12:i=6;break}return e.l+=i,[n,a]}var XS=Jt,KS=Jt,YS=Jt;function cs(e,t,r){return e.l+=2,[lS(e)]}function Bc(e){return e.l+=6,[]}var qS=cs,JS=Bc,ZS=Bc,QS=cs;function pm(e){return e.l+=2,[At(e),e.read_shift(2)&1]}var eT=cs,tT=pm,rT=Bc,nT=cs,aT=cs,iT=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function sT(e){e.l+=2;var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(4),a=e.read_shift(2),i=e.read_shift(2),s=iT[r>>2&31];return{ixti:t,coltype:r&3,rt:s,idx:n,c:a,C:i}}function oT(e){return e.l+=2,[e.read_shift(4)]}function lT(e,t,r){return e.l+=5,e.l+=2,e.l+=r.biff==2?1:4,["PTGSHEET"]}function cT(e,t,r){return e.l+=r.biff==2?4:5,["PTGENDSHEET"]}function fT(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function uT(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function dT(e){return e.l+=4,[0,0]}var gm={1:{n:"PtgExp",f:RS},2:{n:"PtgTbl",f:YS},3:{n:"PtgAdd",f:Dt},4:{n:"PtgSub",f:Dt},5:{n:"PtgMul",f:Dt},6:{n:"PtgDiv",f:Dt},7:{n:"PtgPower",f:Dt},8:{n:"PtgConcat",f:Dt},9:{n:"PtgLt",f:Dt},10:{n:"PtgLe",f:Dt},11:{n:"PtgEq",f:Dt},12:{n:"PtgGe",f:Dt},13:{n:"PtgGt",f:Dt},14:{n:"PtgNe",f:Dt},15:{n:"PtgIsect",f:Dt},16:{n:"PtgUnion",f:Dt},17:{n:"PtgRange",f:Dt},18:{n:"PtgUplus",f:Dt},19:{n:"PtgUminus",f:Dt},20:{n:"PtgPercent",f:Dt},21:{n:"PtgParen",f:Dt},22:{n:"PtgMissArg",f:Dt},23:{n:"PtgStr",f:PS},26:{n:"PtgSheet",f:lT},27:{n:"PtgEndSheet",f:cT},28:{n:"PtgErr",f:OS},29:{n:"PtgBool",f:NS},30:{n:"PtgInt",f:BS},31:{n:"PtgNum",f:IS},32:{n:"PtgArray",f:gS},33:{n:"PtgFunc",f:TS},34:{n:"PtgFuncVar",f:FS},35:{n:"PtgName",f:US},36:{n:"PtgRef",f:CS},37:{n:"PtgArea",f:uS},38:{n:"PtgMemArea",f:HS},39:{n:"PtgMemErr",f:XS},40:{n:"PtgMemNoMem",f:KS},41:{n:"PtgMemFunc",f:jS},42:{n:"PtgRefErr",f:zS},43:{n:"PtgAreaErr",f:hS},44:{n:"PtgRefN",f:ES},45:{n:"PtgAreaN",f:pS},46:{n:"PtgMemAreaN",f:fT},47:{n:"PtgMemNoMemN",f:uT},57:{n:"PtgNameX",f:$S},58:{n:"PtgRef3d",f:SS},59:{n:"PtgArea3d",f:dS},60:{n:"PtgRefErr3d",f:GS},61:{n:"PtgAreaErr3d",f:mS},255:{}},hT={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61},mT={1:{n:"PtgElfLel",f:pm},2:{n:"PtgElfRw",f:nT},3:{n:"PtgElfCol",f:qS},6:{n:"PtgElfRwV",f:aT},7:{n:"PtgElfColV",f:QS},10:{n:"PtgElfRadical",f:eT},11:{n:"PtgElfRadicalS",f:rT},13:{n:"PtgElfColS",f:JS},15:{n:"PtgElfColSV",f:ZS},16:{n:"PtgElfRadicalLel",f:tT},25:{n:"PtgList",f:sT},29:{n:"PtgSxName",f:oT},255:{}},pT={0:{n:"PtgAttrNoop",f:dT},1:{n:"PtgAttrSemi",f:yS},2:{n:"PtgAttrIf",f:wS},4:{n:"PtgAttrChoose",f:xS},8:{n:"PtgAttrGoto",f:vS},16:{n:"PtgAttrSum",f:DS},32:{n:"PtgAttrBaxcel",f:hm},33:{n:"PtgAttrBaxcel",f:hm},64:{n:"PtgAttrSpace",f:kS},65:{n:"PtgAttrSpaceSemi",f:bS},128:{n:"PtgAttrIfError",f:_S},255:{}};function fs(e,t,r,n){if(n.biff<8)return Jt(e,t);for(var a=e.l+t,i=[],s=0;s!==r.length;++s)switch(r[s][0]){case"PtgArray":r[s][1]=VS(e,0,n),i.push(r[s][1]);break;case"PtgMemArea":r[s][2]=MS(e,r[s][1],n),i.push(r[s][2]);break;case"PtgExp":n&&n.biff==12&&(r[s][1][1]=e.read_shift(4),i.push(r[s][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+r[s][0]}return t=a-e.l,t!==0&&i.push(Jt(e,t)),i}function us(e,t,r){for(var n=e.l+t,a,i,s=[];n!=e.l;)t=n-e.l,i=e[e.l],a=gm[i]||gm[hT[i]],(i===24||i===25)&&(a=(i===24?mT:pT)[e[e.l+1]]),!a||!a.f?Jt(e,t):s.push([a.n,a.f(e,t,r)]);return s}function gT(e){for(var t=[],r=0;r<e.length;++r){for(var n=e[r],a=[],i=0;i<n.length;++i){var s=n[i];if(s)switch(s[0]){case 2:a.push('"'+s[1].replace(/"/g,'""')+'"');break;default:a.push(s[1])}else a.push("")}t.push(a.join(","))}return t.join(";")}var xT={PtgAdd:"+",PtgConcat:"&",PtgDiv:"/",PtgEq:"=",PtgGe:">=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function vT(e,t){if(!e&&!(t&&t.biff<=5&&t.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(e)?"'"+e+"'":e}function xm(e,t,r){if(!e)return"SH33TJSERR0";if(r.biff>8&&(!e.XTI||!e.XTI[t]))return e.SheetNames[t];if(!e.XTI)return"SH33TJSERR6";var n=e.XTI[t];if(r.biff<8)return t>1e4&&(t-=65536),t<0&&(t=-t),t==0?"":e.XTI[t-1];if(!n)return"SH33TJSERR1";var a="";if(r.biff>8)switch(e[n[0]][0]){case 357:return a=n[1]==-1?"#REF":e.SheetNames[n[1]],n[1]==n[2]?a:a+":"+e.SheetNames[n[2]];case 358:return r.SID!=null?e.SheetNames[r.SID]:"SH33TJSSAME"+e[n[0]][0];case 355:default:return"SH33TJSSRC"+e[n[0]][0]}switch(e[n[0]][0][0]){case 1025:return a=n[1]==-1?"#REF":e.SheetNames[n[1]]||"SH33TJSERR3",n[1]==n[2]?a:a+":"+e.SheetNames[n[2]];case 14849:return e[n[0]].slice(1).map(function(i){return i.Name}).join(";;");default:return e[n[0]][0][3]?(a=n[1]==-1?"#REF":e[n[0]][0][3][n[1]]||"SH33TJSERR4",n[1]==n[2]?a:a+":"+e[n[0]][0][3][n[2]]):"SH33TJSERR2"}}function vm(e,t,r){var n=xm(e,t,r);return n=="#REF"?n:vT(n,r)}function rr(e,t,r,n,a){var i=a&&a.biff||8,s={s:{c:0,r:0},e:{c:0,r:0}},o=[],c,f,u,d=0,h=0,m,g="";if(!e[0]||!e[0][0])return"";for(var p=-1,x="",v=0,y=e[0].length;v<y;++v){var w=e[0][v];switch(w[0]){case"PtgUminus":o.push("-"+o.pop());break;case"PtgUplus":o.push("+"+o.pop());break;case"PtgPercent":o.push(o.pop()+"%");break;case"PtgAdd":case"PtgConcat":case"PtgDiv":case"PtgEq":case"PtgGe":case"PtgGt":case"PtgLe":case"PtgLt":case"PtgMul":case"PtgNe":case"PtgPower":case"PtgSub":if(c=o.pop(),f=o.pop(),p>=0){switch(e[0][p][1][0]){case 0:x=yt(" ",e[0][p][1][1]);break;case 1:x=yt("\r",e[0][p][1][1]);break;default:if(x="",a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}f=f+x,p=-1}o.push(f+xT[w[0]]+c);break;case"PtgIsect":c=o.pop(),f=o.pop(),o.push(f+" "+c);break;case"PtgUnion":c=o.pop(),f=o.pop(),o.push(f+","+c);break;case"PtgRange":c=o.pop(),f=o.pop(),o.push(f+":"+c);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":u=Zi(w[1][1],s,a),o.push(Qi(u,i));break;case"PtgRefN":u=r?Zi(w[1][1],r,a):w[1][1],o.push(Qi(u,i));break;case"PtgRef3d":d=w[1][1],u=Zi(w[1][2],s,a),g=vm(n,d,a),o.push(g+"!"+Qi(u,i));break;case"PtgFunc":case"PtgFuncVar":var b=w[1][0],R=w[1][1];b||(b=0),b&=127;var A=b==0?[]:o.slice(-b);o.length-=b,R==="User"&&(R=A.shift()),o.push(R+"("+A.join(",")+")");break;case"PtgBool":o.push(w[1]?"TRUE":"FALSE");break;case"PtgInt":o.push(w[1]);break;case"PtgNum":o.push(String(w[1]));break;case"PtgStr":o.push('"'+w[1].replace(/"/g,'""')+'"');break;case"PtgErr":o.push(w[1]);break;case"PtgAreaN":m=zd(w[1][1],r?{s:r}:s,a),o.push(ic(m,a));break;case"PtgArea":m=zd(w[1][1],s,a),o.push(ic(m,a));break;case"PtgArea3d":d=w[1][1],m=w[1][2],g=vm(n,d,a),o.push(g+"!"+ic(m,a));break;case"PtgAttrSum":o.push("SUM("+o.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":h=w[1][2];var k=(n.names||[])[h-1]||(n[0]||[])[h],U=k?k.Name:"SH33TJSNAME"+String(h);U&&U.slice(0,6)=="_xlfn."&&!a.xlfn&&(U=U.slice(6)),o.push(U);break;case"PtgNameX":var T=w[1][1];h=w[1][2];var j;if(a.biff<=5)T<0&&(T=-T),n[T]&&(j=n[T][h]);else{var G="";if(((n[T]||[])[0]||[])[0]==14849||(((n[T]||[])[0]||[])[0]==1025?n[T][h]&&n[T][h].itab>0&&(G=n.SheetNames[n[T][h].itab-1]+"!"):G=n.SheetNames[h-1]+"!"),n[T]&&n[T][h])G+=n[T][h].Name;else if(n[0]&&n[0][h])G+=n[0][h].Name;else{var B=(xm(n,T,a)||"").split(";;");B[h-1]?G=B[h-1]:G+="SH33TJSERRX"}o.push(G);break}j||(j={Name:"SH33TJSERRY"}),o.push(j.Name);break;case"PtgParen":var z="(",te=")";if(p>=0){switch(x="",e[0][p][1][0]){case 2:z=yt(" ",e[0][p][1][1])+z;break;case 3:z=yt("\r",e[0][p][1][1])+z;break;case 4:te=yt(" ",e[0][p][1][1])+te;break;case 5:te=yt("\r",e[0][p][1][1])+te;break;default:if(a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}p=-1}o.push(z+o.pop()+te);break;case"PtgRefErr":o.push("#REF!");break;case"PtgRefErr3d":o.push("#REF!");break;case"PtgExp":u={c:w[1][1],r:w[1][0]};var W={c:r.c,r:r.r};if(n.sharedf[Ne(u)]){var Y=n.sharedf[Ne(u)];o.push(rr(Y,s,W,n,a))}else{var ae=!1;for(c=0;c!=n.arrayf.length;++c)if(f=n.arrayf[c],!(u.c<f[0].s.c||u.c>f[0].e.c)&&!(u.r<f[0].s.r||u.r>f[0].e.r)){o.push(rr(f[1],s,W,n,a)),ae=!0;break}ae||o.push(w[1])}break;case"PtgArray":o.push("{"+gT(w[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":p=v;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":o.push("");break;case"PtgAreaErr":o.push("#REF!");break;case"PtgAreaErr3d":o.push("#REF!");break;case"PtgList":o.push("Table"+w[1].idx+"[#"+w[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(w));default:throw new Error("Unrecognized Formula Token: "+String(w))}var he=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(a.biff!=3&&p>=0&&he.indexOf(e[0][v][0])==-1){w=e[0][p];var K=!0;switch(w[1][0]){case 4:K=!1;case 0:x=yt(" ",w[1][1]);break;case 5:K=!1;case 1:x=yt("\r",w[1][1]);break;default:if(x="",a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+w[1][0])}o.push((K?x:"")+o.pop()+(K?"":x)),p=-1}}if(o.length>1&&a.WTF)throw new Error("bad formula stack");return o[0]}function wT(e,t,r){var n=e.l+t,a=r.biff==2?1:2,i,s=e.read_shift(a);if(s==65535)return[[],Jt(e,t-2)];var o=us(e,s,r);return t!==s+a&&(i=fs(e,t-s-a,o,r)),e.l=n,[o,i]}function _T(e,t,r){var n=e.l+t,a=r.biff==2?1:2,i,s=e.read_shift(a);if(s==65535)return[[],Jt(e,t-2)];var o=us(e,s,r);return t!==s+a&&(i=fs(e,t-s-a,o,r)),e.l=n,[o,i]}function yT(e,t,r,n){var a=e.l+t,i=us(e,n,r),s;return a!==e.l&&(s=fs(e,a-e.l,i,r)),[i,s]}function kT(e,t,r){var n=e.l+t,a,i=e.read_shift(2),s=us(e,i,r);return i==65535?[[],Jt(e,t-2)]:(t!==i+2&&(a=fs(e,n-i-2,s,r)),[s,a])}function bT(e){var t;if(Bn(e,e.l+6)!==65535)return[Qt(e),"n"];switch(e[e.l]){case 0:return e.l+=8,["String","s"];case 1:return t=e[e.l+2]===1,e.l+=8,[t,"b"];case 2:return t=e[e.l+2],e.l+=8,[t,"e"];case 3:return e.l+=8,["","s"]}return[]}function CT(e){if(e==null){var t=se(8);return t.write_shift(1,3),t.write_shift(1,0),t.write_shift(2,0),t.write_shift(2,0),t.write_shift(2,65535),t}else if(typeof e=="number")return ka(e);return ka(0)}function Nc(e,t,r){var n=e.l+t,a=gn(e);r.biff==2&&++e.l;var i=bT(e),s=e.read_shift(1);r.biff!=2&&(e.read_shift(1),r.biff>=5&&e.read_shift(4));var o=_T(e,n-e.l,r);return{cell:a,val:i[0],formula:o,shared:s>>3&1,tt:i[1]}}function ET(e,t,r,n,a){var i=Ta(t,r,a),s=CT(e.v),o=se(6),c=33;o.write_shift(2,c),o.write_shift(4,0);for(var f=se(e.bf.length),u=0;u<e.bf.length;++u)f[u]=e.bf[u];var d=Mt([i,s,o,f]);return d}function Do(e,t,r){var n=e.read_shift(4),a=us(e,n,r),i=e.read_shift(4),s=i>0?fs(e,i,a,r):null;return[a,s]}var ST=Do,Ro=Do,TT=Do,FT=Do,AT={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},wm={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"},DT={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0};function _m(e){return e.slice(0,3)=="of:"&&(e=e.slice(3)),e.charCodeAt(0)==61&&(e=e.slice(1),e.charCodeAt(0)==61&&(e=e.slice(1))),e=e.replace(/COM\.MICROSOFT\./g,""),e=e.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(t,r){return r.replace(/\./g,"")}),e=e.replace(/\[.(#[A-Z]*[?!])\]/g,"$1"),e.replace(/[;~]/g,",").replace(/\|/g,";")}function RT(e){var t="of:="+e.replace(Rc,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return t.replace(/;/g,"|").replace(/,/g,";")}function Ic(e){var t=e.split(":"),r=t[0].split(".")[0];return[r,t[0].split(".")[1]+(t.length>1?":"+(t[1].split(".")[1]||t[1].split(".")[0]):"")]}function OT(e){return e.replace(/\./,"!")}var ds={},oi={},hs=typeof Map<"u";function Pc(e,t,r){var n=0,a=e.length;if(r){if(hs?r.has(t):Object.prototype.hasOwnProperty.call(r,t)){for(var i=hs?r.get(t):r[t];n<i.length;++n)if(e[i[n]].t===t)return e.Count++,i[n]}}else for(;n<a;++n)if(e[n].t===t)return e.Count++,n;return e[a]={t},e.Count++,e.Unique++,r&&(hs?(r.has(t)||r.set(t,[]),r.get(t).push(a)):(Object.prototype.hasOwnProperty.call(r,t)||(r[t]=[]),r[t].push(a))),a}function Oo(e,t){var r={min:e+1,max:e+1},n=-1;return t.MDW&&(tr=t.MDW),t.width!=null?r.customWidth=1:t.wpx!=null?n=ss(t.wpx):t.wch!=null&&(n=t.wch),n>-1?(r.width=To(n),r.customWidth=1):t.width!=null&&(r.width=t.width),t.hidden&&(r.hidden=!0),t.level!=null&&(r.outlineLevel=r.level=t.level),r}function Aa(e,t){if(e){var r=[.7,.7,.75,.75,.3,.3];t=="xlml"&&(r=[1,1,1,1,.5,.5]),e.left==null&&(e.left=r[0]),e.right==null&&(e.right=r[1]),e.top==null&&(e.top=r[2]),e.bottom==null&&(e.bottom=r[3]),e.header==null&&(e.header=r[4]),e.footer==null&&(e.footer=r[5])}}function na(e,t,r){var n=r.revssf[t.z!=null?t.z:"General"],a=60,i=e.length;if(n==null&&r.ssf){for(;a<392;++a)if(r.ssf[a]==null){hn(t.z,a),r.ssf[a]=t.z,r.revssf[t.z]=n=a;break}}for(a=0;a!=i;++a)if(e[a].numFmtId===n)return a;return e[i]={numFmtId:n,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},i}function ym(e,t,r,n,a,i){try{n.cellNF&&(e.z=Oe[t])}catch(o){if(n.WTF)throw o}if(!(e.t==="z"&&!n.cellStyles)){if(e.t==="d"&&typeof e.v=="string"&&(e.v=lt(e.v)),(!n||n.cellText!==!1)&&e.t!=="z")try{if(Oe[t]==null&&hn(Dy[t]||"General",t),e.t==="e")e.w=e.w||Pn[e.v];else if(t===0)if(e.t==="n")(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Hi(e.v);else if(e.t==="d"){var s=Nt(e.v);(s|0)===s?e.w=s.toString(10):e.w=Hi(s)}else{if(e.v===void 0)return"";e.w=ha(e.v,oi)}else e.t==="d"?e.w=Er(t,Nt(e.v),oi):e.w=Er(t,e.v,oi)}catch(o){if(n.WTF)throw o}if(n.cellStyles&&r!=null)try{e.s=i.Fills[r],e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb&&(e.s.fgColor.rgb=So(a.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0),n.WTF&&(e.s.fgColor.raw_rgb=a.themeElements.clrScheme[e.s.fgColor.theme].rgb)),e.s.bgColor&&e.s.bgColor.theme&&(e.s.bgColor.rgb=So(a.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0),n.WTF&&(e.s.bgColor.raw_rgb=a.themeElements.clrScheme[e.s.bgColor.theme].rgb))}catch(o){if(n.WTF&&i.Fills)throw o}}}function BT(e,t,r){if(e&&e["!ref"]){var n=Ye(e["!ref"]);if(n.e.c<n.s.c||n.e.r<n.s.r)throw new Error("Bad range ("+r+"): "+e["!ref"])}}function NT(e,t){var r=Ye(t);r.s.r<=r.e.r&&r.s.c<=r.e.c&&r.s.r>=0&&r.s.c>=0&&(e["!ref"]=We(r))}var IT=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g,PT=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/,LT=/<(?:\w:)?hyperlink [^>]*>/mg,MT=/"(\w*:\w*)"/,VT=/<(?:\w:)?col\b[^>]*[\/]?>/g,UT=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,$T=/<(?:\w:)?pageMargins[^>]*\/>/g,km=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,WT=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/,HT=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function jT(e,t,r,n,a,i,s){if(!e)return e;n||(n={"!id":{}});var o=t.dense?[]:{},c={s:{r:2e6,c:2e6},e:{r:0,c:0}},f="",u="",d=e.match(PT);d?(f=e.slice(0,d.index),u=e.slice(d.index+d[0].length)):f=u=e;var h=f.match(km);h?Lc(h[0],o,a,r):(h=f.match(WT))&&GT(h[0],h[1]||"",o,a,r);var m=(f.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(m>0){var g=f.slice(m,m+50).match(MT);g&&NT(o,g[1])}var p=f.match(HT);p&&p[1]&&iF(p[1],a);var x=[];if(t.cellStyles){var v=f.match(VT);v&&eF(x,v)}d&&lF(d[1],o,t,c,i,s);var y=u.match(UT);y&&(o["!autofilter"]=rF(y[0]));var w=[],b=u.match(IT);if(b)for(m=0;m!=b.length;++m)w[m]=Ye(b[m].slice(b[m].indexOf('"')+1));var R=u.match(LT);R&&JT(o,R,n);var A=u.match($T);if(A&&(o["!margins"]=ZT(Le(A[0]))),!o["!ref"]&&c.e.c>=c.s.c&&c.e.r>=c.s.r&&(o["!ref"]=We(c)),t.sheetRows>0&&o["!ref"]){var k=Ye(o["!ref"]);t.sheetRows<=+k.e.r&&(k.e.r=t.sheetRows-1,k.e.r>c.e.r&&(k.e.r=c.e.r),k.e.r<k.s.r&&(k.s.r=k.e.r),k.e.c>c.e.c&&(k.e.c=c.e.c),k.e.c<k.s.c&&(k.s.c=k.e.c),o["!fullref"]=o["!ref"],o["!ref"]=We(k))}return x.length>0&&(o["!cols"]=x),w.length>0&&(o["!merges"]=w),o}function zT(e){if(e.length===0)return"";for(var t='<mergeCells count="'+e.length+'">',r=0;r!=e.length;++r)t+='<mergeCell ref="'+We(e[r])+'"/>';return t+"</mergeCells>"}function Lc(e,t,r,n){var a=Le(e);r.Sheets[n]||(r.Sheets[n]={}),a.codeName&&(r.Sheets[n].CodeName=Ke(at(a.codeName)))}function GT(e,t,r,n,a){Lc(e.slice(0,e.indexOf(">")),r,n,a)}function XT(e,t,r,n,a){var i=!1,s={},o=null;if(n.bookType!=="xlsx"&&t.vbaraw){var c=t.SheetNames[r];try{t.Workbook&&(c=t.Workbook.Sheets[r].CodeName||c)}catch{}i=!0,s.codeName=pn(et(c))}if(e&&e["!outline"]){var f={summaryBelow:1,summaryRight:1};e["!outline"].above&&(f.summaryBelow=0),e["!outline"].left&&(f.summaryRight=0),o=(o||"")+xe("outlinePr",null,f)}!i&&!o||(a[a.length]=xe("sheetPr",o,s))}var KT=["objects","scenarios","selectLockedCells","selectUnlockedCells"],YT=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function qT(e){var t={sheet:1};return KT.forEach(function(r){e[r]!=null&&e[r]&&(t[r]="1")}),YT.forEach(function(r){e[r]!=null&&!e[r]&&(t[r]="0")}),e.password&&(t.password=Sc(e.password).toString(16).toUpperCase()),xe("sheetProtection",null,t)}function JT(e,t,r){for(var n=Array.isArray(e),a=0;a!=t.length;++a){var i=Le(at(t[a]),!0);if(!i.ref)return;var s=((r||{})["!id"]||[])[i.id];s?(i.Target=s.Target,i.location&&(i.Target+="#"+Ke(i.location))):(i.Target="#"+Ke(i.location),s={Target:i.Target,TargetMode:"Internal"}),i.Rel=s,i.tooltip&&(i.Tooltip=i.tooltip,delete i.tooltip);for(var o=Ye(i.ref),c=o.s.r;c<=o.e.r;++c)for(var f=o.s.c;f<=o.e.c;++f){var u=Ne({c:f,r:c});n?(e[c]||(e[c]=[]),e[c][f]||(e[c][f]={t:"z",v:void 0}),e[c][f].l=i):(e[u]||(e[u]={t:"z",v:void 0}),e[u].l=i)}}}function ZT(e){var t={};return["left","right","top","bottom","header","footer"].forEach(function(r){e[r]&&(t[r]=parseFloat(e[r]))}),t}function QT(e){return Aa(e),xe("pageMargins",null,e)}function eF(e,t){for(var r=!1,n=0;n!=t.length;++n){var a=Le(t[n],!0);a.hidden&&(a.hidden=ft(a.hidden));var i=parseInt(a.min,10)-1,s=parseInt(a.max,10)-1;for(a.outlineLevel&&(a.level=+a.outlineLevel||0),delete a.min,delete a.max,a.width=+a.width,!r&&a.width&&(r=!0,Fc(a.width)),ta(a);i<=s;)e[i++]=ct(a)}}function tF(e,t){for(var r=["<cols>"],n,a=0;a!=t.length;++a)(n=t[a])&&(r[r.length]=xe("col",null,Oo(a,n)));return r[r.length]="</cols>",r.join("")}function rF(e){var t={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return t}function nF(e,t,r,n){var a=typeof e.ref=="string"?e.ref:We(e.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var i=r.Workbook.Names,s=gr(a);s.s.r==s.e.r&&(s.e.r=gr(t["!ref"]).e.r,a=We(s));for(var o=0;o<i.length;++o){var c=i[o];if(c.Name=="_xlnm._FilterDatabase"&&c.Sheet==n){c.Ref="'"+r.SheetNames[n]+"'!"+a;break}}return o==i.length&&i.push({Name:"_xlnm._FilterDatabase",Sheet:n,Ref:"'"+r.SheetNames[n]+"'!"+a}),xe("autoFilter",null,{ref:a})}var aF=/<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/;function iF(e,t){t.Views||(t.Views=[{}]),(e.match(aF)||[]).forEach(function(r,n){var a=Le(r);t.Views[n]||(t.Views[n]={}),+a.zoomScale&&(t.Views[n].zoom=+a.zoomScale),ft(a.rightToLeft)&&(t.Views[n].RTL=!0)})}function sF(e,t,r,n){var a={workbookViewId:"0"};return(((n||{}).Workbook||{}).Views||[])[0]&&(a.rightToLeft=n.Workbook.Views[0].RTL?"1":"0"),xe("sheetViews",xe("sheetView",null,a),{})}function oF(e,t,r,n){if(e.c&&r["!comments"].push([t,e.c]),e.v===void 0&&typeof e.f!="string"||e.t==="z"&&!e.f)return"";var a="",i=e.t,s=e.v;if(e.t!=="z")switch(e.t){case"b":a=e.v?"1":"0";break;case"n":a=""+e.v;break;case"e":a=Pn[e.v];break;case"d":n&&n.cellDates?a=lt(e.v,-1).toISOString():(e=ct(e),e.t="n",a=""+(e.v=Nt(lt(e.v)))),typeof e.z>"u"&&(e.z=Oe[14]);break;default:a=e.v;break}var o=Gt("v",et(a)),c={r:t},f=na(n.cellXfs,e,n);switch(f!==0&&(c.s=f),e.t){case"n":break;case"d":c.t="d";break;case"b":c.t="b";break;case"e":c.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(n&&n.bookSST){o=Gt("v",""+Pc(n.Strings,e.v,n.revStrings)),c.t="s";break}c.t="str";break}if(e.t!=i&&(e.t=i,e.v=s),typeof e.f=="string"&&e.f){var u=e.F&&e.F.slice(0,t.length)==t?{t:"array",ref:e.F}:null;o=xe("f",et(e.f),u)+(e.v!=null?o:"")}return e.l&&r["!links"].push([t,e.l]),e.D&&(c.cm=1),xe("c",o,c)}var lF=function(){var e=/<(?:\w+:)?c[ \/>]/,t=/<\/(?:\w+:)?row>/,r=/r=["']([^"']*)["']/,n=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/,a=/ref=["']([^"']*)["']/,i=Xi("v"),s=Xi("f");return function(c,f,u,d,h,m){for(var g=0,p="",x=[],v=[],y=0,w=0,b=0,R="",A,k,U=0,T=0,j,G,B=0,z=0,te=Array.isArray(m.CellXf),W,Y=[],ae=[],he=Array.isArray(f),K=[],ce={},N=!1,_=!!u.sheetStubs,E=c.split(t),C=0,F=E.length;C!=F;++C){p=E[C].trim();var H=p.length;if(H!==0){var ee=0;e:for(g=0;g<H;++g)switch(p[g]){case">":if(p[g-1]!="/"){++g;break e}if(u&&u.cellStyles){if(k=Le(p.slice(ee,g),!0),U=k.r!=null?parseInt(k.r,10):U+1,T=-1,u.sheetRows&&u.sheetRows<U)continue;ce={},N=!1,k.ht&&(N=!0,ce.hpt=parseFloat(k.ht),ce.hpx=ai(ce.hpt)),k.hidden=="1"&&(N=!0,ce.hidden=!0),k.outlineLevel!=null&&(N=!0,ce.level=+k.outlineLevel),N&&(K[U-1]=ce)}break;case"<":ee=g;break}if(ee>=g)break;if(k=Le(p.slice(ee,g),!0),U=k.r!=null?parseInt(k.r,10):U+1,T=-1,!(u.sheetRows&&u.sheetRows<U)){d.s.r>U-1&&(d.s.r=U-1),d.e.r<U-1&&(d.e.r=U-1),u&&u.cellStyles&&(ce={},N=!1,k.ht&&(N=!0,ce.hpt=parseFloat(k.ht),ce.hpx=ai(ce.hpt)),k.hidden=="1"&&(N=!0,ce.hidden=!0),k.outlineLevel!=null&&(N=!0,ce.level=+k.outlineLevel),N&&(K[U-1]=ce)),x=p.slice(g).split(e);for(var Q=0;Q!=x.length&&x[Q].trim().charAt(0)=="<";++Q);for(x=x.slice(Q),g=0;g!=x.length;++g)if(p=x[g].trim(),p.length!==0){if(v=p.match(r),y=g,w=0,b=0,p="<c "+(p.slice(0,1)=="<"?">":"")+p,v!=null&&v.length===2){for(y=0,R=v[1],w=0;w!=R.length&&!((b=R.charCodeAt(w)-64)<1||b>26);++w)y=26*y+b;--y,T=y}else++T;for(w=0;w!=p.length&&p.charCodeAt(w)!==62;++w);if(++w,k=Le(p.slice(0,w),!0),k.r||(k.r=Ne({r:U-1,c:T})),R=p.slice(w),A={t:""},(v=R.match(i))!=null&&v[1]!==""&&(A.v=Ke(v[1])),u.cellFormula){if((v=R.match(s))!=null&&v[1]!==""){if(A.f=Ke(at(v[1])).replace(/\r\n/g,`
`),u.xlfn||(A.f=cm(A.f)),v[0].indexOf('t="array"')>-1)A.F=(R.match(a)||[])[1],A.F.indexOf(":")>-1&&Y.push([Ye(A.F),A.F]);else if(v[0].indexOf('t="shared"')>-1){G=Le(v[0]);var re=Ke(at(v[1]));u.xlfn||(re=cm(re)),ae[parseInt(G.si,10)]=[G,re,k.r]}}else(v=R.match(/<f[^>]*\/>/))&&(G=Le(v[0]),ae[G.si]&&(A.f=aS(ae[G.si][1],ae[G.si][2],k.r)));var ie=pt(k.r);for(w=0;w<Y.length;++w)ie.r>=Y[w][0].s.r&&ie.r<=Y[w][0].e.r&&ie.c>=Y[w][0].s.c&&ie.c<=Y[w][0].e.c&&(A.F=Y[w][1])}if(k.t==null&&A.v===void 0)if(A.f||A.F)A.v=0,A.t="n";else if(_)A.t="z";else continue;else A.t=k.t||"n";switch(d.s.c>T&&(d.s.c=T),d.e.c<T&&(d.e.c=T),A.t){case"n":if(A.v==""||A.v==null){if(!_)continue;A.t="z"}else A.v=parseFloat(A.v);break;case"s":if(typeof A.v>"u"){if(!_)continue;A.t="z"}else j=ds[parseInt(A.v,10)],A.v=j.t,A.r=j.r,u.cellHTML&&(A.h=j.h);break;case"str":A.t="s",A.v=A.v!=null?at(A.v):"",u.cellHTML&&(A.h=Ql(A.v));break;case"inlineStr":v=R.match(n),A.t="s",v!=null&&(j=Ec(v[1]))?(A.v=j.t,u.cellHTML&&(A.h=j.h)):A.v="";break;case"b":A.v=ft(A.v);break;case"d":u.cellDates?A.v=lt(A.v,1):(A.v=Nt(lt(A.v,1)),A.t="n");break;case"e":(!u||u.cellText!==!1)&&(A.w=A.v),A.v=th[A.v];break}if(B=z=0,W=null,te&&k.s!==void 0&&(W=m.CellXf[k.s],W!=null&&(W.numFmtId!=null&&(B=W.numFmtId),u.cellStyles&&W.fillId!=null&&(z=W.fillId))),ym(A,B,z,u,h,m),u.cellDates&&te&&A.t=="n"&&ma(Oe[B])&&(A.t="d",A.v=ho(A.v)),k.cm&&u.xlmeta){var Se=(u.xlmeta.Cell||[])[+k.cm-1];Se&&Se.type=="XLDAPR"&&(A.D=!0)}if(he){var L=pt(k.r);f[L.r]||(f[L.r]=[]),f[L.r][L.c]=A}else f[k.r]=A}}}}K.length>0&&(f["!rows"]=K)}}();function cF(e,t,r,n){var a=[],i=[],s=Ye(e["!ref"]),o="",c,f="",u=[],d=0,h=0,m=e["!rows"],g=Array.isArray(e),p={r:f},x,v=-1;for(h=s.s.c;h<=s.e.c;++h)u[h]=mt(h);for(d=s.s.r;d<=s.e.r;++d){for(i=[],f=Et(d),h=s.s.c;h<=s.e.c;++h){c=u[h]+f;var y=g?(e[d]||[])[h]:e[c];y!==void 0&&(o=oF(y,c,e,t))!=null&&i.push(o)}(i.length>0||m&&m[d])&&(p={r:f},m&&m[d]&&(x=m[d],x.hidden&&(p.hidden=1),v=-1,x.hpx?v=os(x.hpx):x.hpt&&(v=x.hpt),v>-1&&(p.ht=v,p.customHeight=1),x.level&&(p.outlineLevel=x.level)),a[a.length]=xe("row",i.join(""),p))}if(m)for(;d<m.length;++d)m&&m[d]&&(p={r:d+1},x=m[d],x.hidden&&(p.hidden=1),v=-1,x.hpx?v=os(x.hpx):x.hpt&&(v=x.hpt),v>-1&&(p.ht=v,p.customHeight=1),x.level&&(p.outlineLevel=x.level),a[a.length]=xe("row","",p));return a.join("")}function bm(e,t,r,n){var a=[Ct,xe("worksheet",null,{xmlns:ga[0],"xmlns:r":It.r})],i=r.SheetNames[e],s=0,o="",c=r.Sheets[i];c==null&&(c={});var f=c["!ref"]||"A1",u=Ye(f);if(u.e.c>16383||u.e.r>1048575){if(t.WTF)throw new Error("Range "+f+" exceeds format limit A1:XFD1048576");u.e.c=Math.min(u.e.c,16383),u.e.r=Math.min(u.e.c,1048575),f=We(u)}n||(n={}),c["!comments"]=[];var d=[];XT(c,r,e,t,a),a[a.length]=xe("dimension",null,{ref:f}),a[a.length]=sF(c,t,e,r),t.sheetFormat&&(a[a.length]=xe("sheetFormatPr",null,{defaultRowHeight:t.sheetFormat.defaultRowHeight||"16",baseColWidth:t.sheetFormat.baseColWidth||"10",outlineLevelRow:t.sheetFormat.outlineLevelRow||"7"})),c["!cols"]!=null&&c["!cols"].length>0&&(a[a.length]=tF(c,c["!cols"])),a[s=a.length]="<sheetData/>",c["!links"]=[],c["!ref"]!=null&&(o=cF(c,t),o.length>0&&(a[a.length]=o)),a.length>s+1&&(a[a.length]="</sheetData>",a[s]=a[s].replace("/>",">")),c["!protect"]&&(a[a.length]=qT(c["!protect"])),c["!autofilter"]!=null&&(a[a.length]=nF(c["!autofilter"],c,r,e)),c["!merges"]!=null&&c["!merges"].length>0&&(a[a.length]=zT(c["!merges"]));var h=-1,m,g=-1;return c["!links"].length>0&&(a[a.length]="<hyperlinks>",c["!links"].forEach(function(p){p[1].Target&&(m={ref:p[0]},p[1].Target.charAt(0)!="#"&&(g=tt(n,-1,et(p[1].Target).replace(/#.*$/,""),ze.HLINK),m["r:id"]="rId"+g),(h=p[1].Target.indexOf("#"))>-1&&(m.location=et(p[1].Target.slice(h+1))),p[1].Tooltip&&(m.tooltip=et(p[1].Tooltip)),a[a.length]=xe("hyperlink",null,m))}),a[a.length]="</hyperlinks>"),delete c["!links"],c["!margins"]!=null&&(a[a.length]=QT(c["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&(a[a.length]=Gt("ignoredErrors",xe("ignoredError",null,{numberStoredAsText:1,sqref:f}))),d.length>0&&(g=tt(n,-1,"../drawings/drawing"+(e+1)+".xml",ze.DRAW),a[a.length]=xe("drawing",null,{"r:id":"rId"+g}),c["!drawing"]=d),c["!comments"].length>0&&(g=tt(n,-1,"../drawings/vmlDrawing"+(e+1)+".vml",ze.VML),a[a.length]=xe("legacyDrawing",null,{"r:id":"rId"+g}),c["!legacy"]=g),a.length>1&&(a[a.length]="</worksheet>",a[1]=a[1].replace("/>",">")),a.join("")}function fF(e,t){var r={},n=e.l+t;r.r=e.read_shift(4),e.l+=4;var a=e.read_shift(2);e.l+=1;var i=e.read_shift(1);return e.l=n,i&7&&(r.level=i&7),i&16&&(r.hidden=!0),i&32&&(r.hpt=a/20),r}function uF(e,t,r){var n=se(145),a=(r["!rows"]||[])[e]||{};n.write_shift(4,e),n.write_shift(4,0);var i=320;a.hpx?i=os(a.hpx)*20:a.hpt&&(i=a.hpt*20),n.write_shift(2,i),n.write_shift(1,0);var s=0;a.level&&(s|=a.level),a.hidden&&(s|=16),(a.hpx||a.hpt)&&(s|=32),n.write_shift(1,s),n.write_shift(1,0);var o=0,c=n.l;n.l+=4;for(var f={r:e,c:0},u=0;u<16;++u)if(!(t.s.c>u+1<<10||t.e.c<u<<10)){for(var d=-1,h=-1,m=u<<10;m<u+1<<10;++m){f.c=m;var g=Array.isArray(r)?(r[f.r]||[])[f.c]:r[Ne(f)];g&&(d<0&&(d=m),h=m)}d<0||(++o,n.write_shift(4,d),n.write_shift(4,h))}var p=n.l;return n.l=c,n.write_shift(4,o),n.l=p,n.length>n.l?n.slice(0,n.l):n}function dF(e,t,r,n){var a=uF(n,r,t);(a.length>17||(t["!rows"]||[])[n])&&fe(e,0,a)}var hF=ya,mF=ti;function pF(){}function gF(e,t){var r={},n=e[e.l];return++e.l,r.above=!(n&64),r.left=!(n&128),e.l+=18,r.name=w2(e),r}function xF(e,t,r){r==null&&(r=se(84+4*e.length));var n=192;t&&(t.above&&(n&=-65),t.left&&(n&=-129)),r.write_shift(1,n);for(var a=1;a<3;++a)r.write_shift(1,0);return xo({auto:1},r),r.write_shift(-4,-1),r.write_shift(-4,-1),Kd(e,r),r.slice(0,r.l)}function vF(e){var t=Lr(e);return[t]}function wF(e,t,r){return r==null&&(r=se(8)),va(t,r)}function _F(e){var t=wa(e);return[t]}function yF(e,t,r){return r==null&&(r=se(4)),_a(t,r)}function kF(e){var t=Lr(e),r=e.read_shift(1);return[t,r,"b"]}function bF(e,t,r){return r==null&&(r=se(9)),va(t,r),r.write_shift(1,e.v?1:0),r}function CF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"b"]}function EF(e,t,r){return r==null&&(r=se(5)),_a(t,r),r.write_shift(1,e.v?1:0),r}function SF(e){var t=Lr(e),r=e.read_shift(1);return[t,r,"e"]}function TF(e,t,r){return r==null&&(r=se(9)),va(t,r),r.write_shift(1,e.v),r}function FF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"e"]}function AF(e,t,r){return r==null&&(r=se(8)),_a(t,r),r.write_shift(1,e.v),r.write_shift(2,0),r.write_shift(1,0),r}function DF(e){var t=Lr(e),r=e.read_shift(4);return[t,r,"s"]}function RF(e,t,r){return r==null&&(r=se(12)),va(t,r),r.write_shift(4,t.v),r}function OF(e){var t=wa(e),r=e.read_shift(4);return[t,r,"s"]}function BF(e,t,r){return r==null&&(r=se(8)),_a(t,r),r.write_shift(4,t.v),r}function NF(e){var t=Lr(e),r=Qt(e);return[t,r,"n"]}function IF(e,t,r){return r==null&&(r=se(16)),va(t,r),ka(e.v,r),r}function Cm(e){var t=wa(e),r=Qt(e);return[t,r,"n"]}function PF(e,t,r){return r==null&&(r=se(12)),_a(t,r),ka(e.v,r),r}function LF(e){var t=Lr(e),r=dc(e);return[t,r,"n"]}function MF(e,t,r){return r==null&&(r=se(12)),va(t,r),Yd(e.v,r),r}function VF(e){var t=wa(e),r=dc(e);return[t,r,"n"]}function UF(e,t,r){return r==null&&(r=se(8)),_a(t,r),Yd(e.v,r),r}function $F(e){var t=Lr(e),r=lc(e);return[t,r,"is"]}function WF(e){var t=Lr(e),r=Zt(e);return[t,r,"str"]}function HF(e,t,r){return r==null&&(r=se(12+4*e.v.length)),va(t,r),Vt(e.v,r),r.length>r.l?r.slice(0,r.l):r}function jF(e){var t=wa(e),r=Zt(e);return[t,r,"str"]}function zF(e,t,r){return r==null&&(r=se(8+4*e.v.length)),_a(t,r),Vt(e.v,r),r.length>r.l?r.slice(0,r.l):r}function GF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=e.read_shift(1),s=[a,i,"b"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function XF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=e.read_shift(1),s=[a,i,"e"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function KF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=Qt(e),s=[a,i,"n"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function YF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=Zt(e),s=[a,i,"str"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}var qF=ya,JF=ti;function ZF(e,t){return t==null&&(t=se(4)),t.write_shift(4,e),t}function QF(e,t){var r=e.l+t,n=ya(e),a=cc(e),i=Zt(e),s=Zt(e),o=Zt(e);e.l=r;var c={rfx:n,relId:a,loc:i,display:o};return s&&(c.Tooltip=s),c}function e4(e,t){var r=se(50+4*(e[1].Target.length+(e[1].Tooltip||"").length));ti({s:pt(e[0]),e:pt(e[0])},r),uc("rId"+t,r);var n=e[1].Target.indexOf("#"),a=n==-1?"":e[1].Target.slice(n+1);return Vt(a||"",r),Vt(e[1].Tooltip||"",r),Vt("",r),r.slice(0,r.l)}function t4(){}function r4(e,t,r){var n=e.l+t,a=qd(e),i=e.read_shift(1),s=[a];if(s[2]=i,r.cellFormula){var o=ST(e,n-e.l,r);s[1]=o}else e.l=n;return s}function n4(e,t,r){var n=e.l+t,a=ya(e),i=[a];if(r.cellFormula){var s=FT(e,n-e.l,r);i[1]=s,e.l=n}else e.l=n;return i}function a4(e,t,r){r==null&&(r=se(18));var n=Oo(e,t);r.write_shift(-4,e),r.write_shift(-4,e),r.write_shift(4,(n.width||10)*256),r.write_shift(4,0);var a=0;return t.hidden&&(a|=1),typeof n.width=="number"&&(a|=2),t.level&&(a|=t.level<<8),r.write_shift(2,a),r}var Em=["left","right","top","bottom","header","footer"];function i4(e){var t={};return Em.forEach(function(r){t[r]=Qt(e)}),t}function s4(e,t){return t==null&&(t=se(6*8)),Aa(e),Em.forEach(function(r){ka(e[r],t)}),t}function o4(e){var t=e.read_shift(2);return e.l+=28,{RTL:t&32}}function l4(e,t,r){r==null&&(r=se(30));var n=924;return(((t||{}).Views||[])[0]||{}).RTL&&(n|=32),r.write_shift(2,n),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(2,0),r.write_shift(2,100),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(4,0),r}function c4(e){var t=se(24);return t.write_shift(4,4),t.write_shift(4,1),ti(e,t),t}function f4(e,t){return t==null&&(t=se(16*4+2)),t.write_shift(2,e.password?Sc(e.password):0),t.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach(function(r){r[1]?t.write_shift(4,e[r[0]]!=null&&!e[r[0]]?1:0):t.write_shift(4,e[r[0]]!=null&&e[r[0]]?0:1)}),t}function u4(){}function d4(){}function h4(e,t,r,n,a,i,s){if(!e)return e;var o=t||{};n||(n={"!id":{}});var c=o.dense?[]:{},f,u={s:{r:2e6,c:2e6},e:{r:0,c:0}},d=!1,h=!1,m,g,p,x,v,y,w,b,R,A=[];o.biff=12,o["!row"]=0;var k=0,U=!1,T=[],j={},G=o.supbooks||a.supbooks||[[]];if(G.sharedf=j,G.arrayf=T,G.SheetNames=a.SheetNames||a.Sheets.map(function(he){return he.name}),!o.supbooks&&(o.supbooks=G,a.Names))for(var B=0;B<a.Names.length;++B)G[0][B+1]=a.Names[B];var z=[],te=[],W=!1;gs[16]={n:"BrtShortReal",f:Cm};var Y;if(Nn(e,function(K,ce,N){if(!h)switch(N){case 148:f=K;break;case 0:m=K,o.sheetRows&&o.sheetRows<=m.r&&(h=!0),b=Et(x=m.r),o["!row"]=m.r,(K.hidden||K.hpt||K.level!=null)&&(K.hpt&&(K.hpx=ai(K.hpt)),te[K.r]=K);break;case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 17:case 18:case 62:switch(g={t:K[2]},K[2]){case"n":g.v=K[1];break;case"s":w=ds[K[1]],g.v=w.t,g.r=w.r;break;case"b":g.v=!!K[1];break;case"e":g.v=K[1],o.cellText!==!1&&(g.w=Pn[g.v]);break;case"str":g.t="s",g.v=K[1];break;case"is":g.t="s",g.v=K[1].t;break}if((p=s.CellXf[K[0].iStyleRef])&&ym(g,p.numFmtId,null,o,i,s),v=K[0].c==-1?v+1:K[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+b]=g,o.cellFormula){for(U=!1,k=0;k<T.length;++k){var _=T[k];m.r>=_[0].s.r&&m.r<=_[0].e.r&&v>=_[0].s.c&&v<=_[0].e.c&&(g.F=We(_[0]),U=!0)}!U&&K.length>3&&(g.f=K[3])}if(u.s.r>m.r&&(u.s.r=m.r),u.s.c>v&&(u.s.c=v),u.e.r<m.r&&(u.e.r=m.r),u.e.c<v&&(u.e.c=v),o.cellDates&&p&&g.t=="n"&&ma(Oe[p.numFmtId])){var E=Jn(g.v);E&&(g.t="d",g.v=new Date(E.y,E.m-1,E.d,E.H,E.M,E.S,E.u))}Y&&(Y.type=="XLDAPR"&&(g.D=!0),Y=void 0);break;case 1:case 12:if(!o.sheetStubs||d)break;g={t:"z",v:void 0},v=K[0].c==-1?v+1:K[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+b]=g,u.s.r>m.r&&(u.s.r=m.r),u.s.c>v&&(u.s.c=v),u.e.r<m.r&&(u.e.r=m.r),u.e.c<v&&(u.e.c=v),Y&&(Y.type=="XLDAPR"&&(g.D=!0),Y=void 0);break;case 176:A.push(K);break;case 49:Y=((o.xlmeta||{}).Cell||[])[K-1];break;case 494:var C=n["!id"][K.relId];for(C?(K.Target=C.Target,K.loc&&(K.Target+="#"+K.loc),K.Rel=C):K.relId==""&&(K.Target="#"+K.loc),x=K.rfx.s.r;x<=K.rfx.e.r;++x)for(v=K.rfx.s.c;v<=K.rfx.e.c;++v)o.dense?(c[x]||(c[x]=[]),c[x][v]||(c[x][v]={t:"z",v:void 0}),c[x][v].l=K):(y=Ne({c:v,r:x}),c[y]||(c[y]={t:"z",v:void 0}),c[y].l=K);break;case 426:if(!o.cellFormula)break;T.push(K),R=o.dense?c[x][v]:c[mt(v)+b],R.f=rr(K[1],u,{r:m.r,c:v},G,o),R.F=We(K[0]);break;case 427:if(!o.cellFormula)break;j[Ne(K[0].s)]=K[1],R=o.dense?c[x][v]:c[mt(v)+b],R.f=rr(K[1],u,{r:m.r,c:v},G,o);break;case 60:if(!o.cellStyles)break;for(;K.e>=K.s;)z[K.e--]={width:K.w/256,hidden:!!(K.flags&1),level:K.level},W||(W=!0,Fc(K.w/256)),ta(z[K.e+1]);break;case 161:c["!autofilter"]={ref:We(K)};break;case 476:c["!margins"]=K;break;case 147:a.Sheets[r]||(a.Sheets[r]={}),K.name&&(a.Sheets[r].CodeName=K.name),(K.above||K.left)&&(c["!outline"]={above:K.above,left:K.left});break;case 137:a.Views||(a.Views=[{}]),a.Views[0]||(a.Views[0]={}),K.RTL&&(a.Views[0].RTL=!0);break;case 485:break;case 64:case 1053:break;case 151:break;case 152:case 175:case 644:case 625:case 562:case 396:case 1112:case 1146:case 471:case 1050:case 649:case 1105:case 589:case 607:case 564:case 1055:case 168:case 174:case 1180:case 499:case 507:case 550:case 171:case 167:case 1177:case 169:case 1181:case 551:case 552:case 661:case 639:case 478:case 537:case 477:case 536:case 1103:case 680:case 1104:case 1024:case 663:case 535:case 678:case 504:case 1043:case 428:case 170:case 3072:case 50:case 2070:case 1045:break;case 35:d=!0;break;case 36:d=!1;break;case 37:d=!0;break;case 38:d=!1;break;default:if(!ce.T){if(!d||o.WTF)throw new Error("Unexpected record 0x"+N.toString(16))}}},o),delete o.supbooks,delete o["!row"],!c["!ref"]&&(u.s.r<2e6||f&&(f.e.r>0||f.e.c>0||f.s.r>0||f.s.c>0))&&(c["!ref"]=We(f||u)),o.sheetRows&&c["!ref"]){var ae=Ye(c["!ref"]);o.sheetRows<=+ae.e.r&&(ae.e.r=o.sheetRows-1,ae.e.r>u.e.r&&(ae.e.r=u.e.r),ae.e.r<ae.s.r&&(ae.s.r=ae.e.r),ae.e.c>u.e.c&&(ae.e.c=u.e.c),ae.e.c<ae.s.c&&(ae.s.c=ae.e.c),c["!fullref"]=c["!ref"],c["!ref"]=We(ae))}return A.length>0&&(c["!merges"]=A),z.length>0&&(c["!cols"]=z),te.length>0&&(c["!rows"]=te),c}function m4(e,t,r,n,a,i,s){if(t.v===void 0)return!1;var o="";switch(t.t){case"b":o=t.v?"1":"0";break;case"d":t=ct(t),t.z=t.z||Oe[14],t.v=Nt(lt(t.v)),t.t="n";break;case"n":case"e":o=""+t.v;break;default:o=t.v;break}var c={r,c:n};switch(c.s=na(a.cellXfs,t,a),t.l&&i["!links"].push([Ne(c),t.l]),t.c&&i["!comments"].push([Ne(c),t.c]),t.t){case"s":case"str":return a.bookSST?(o=Pc(a.Strings,t.v,a.revStrings),c.t="s",c.v=o,s?fe(e,18,BF(t,c)):fe(e,7,RF(t,c))):(c.t="str",s?fe(e,17,zF(t,c)):fe(e,6,HF(t,c))),!0;case"n":return t.v==(t.v|0)&&t.v>-1e3&&t.v<1e3?s?fe(e,13,UF(t,c)):fe(e,2,MF(t,c)):s?fe(e,16,PF(t,c)):fe(e,5,IF(t,c)),!0;case"b":return c.t="b",s?fe(e,15,EF(t,c)):fe(e,4,bF(t,c)),!0;case"e":return c.t="e",s?fe(e,14,AF(t,c)):fe(e,3,TF(t,c)),!0}return s?fe(e,12,yF(t,c)):fe(e,1,wF(t,c)),!0}function p4(e,t,r,n){var a=Ye(t["!ref"]||"A1"),i,s="",o=[];fe(e,145);var c=Array.isArray(t),f=a.e.r;t["!rows"]&&(f=Math.max(a.e.r,t["!rows"].length-1));for(var u=a.s.r;u<=f;++u){s=Et(u),dF(e,t,a,u);var d=!1;if(u<=a.e.r)for(var h=a.s.c;h<=a.e.c;++h){u===a.s.r&&(o[h]=mt(h)),i=o[h]+s;var m=c?(t[u]||[])[h]:t[i];if(!m){d=!1;continue}d=m4(e,m,u,h,n,t,d)}}fe(e,146)}function g4(e,t){!t||!t["!merges"]||(fe(e,177,ZF(t["!merges"].length)),t["!merges"].forEach(function(r){fe(e,176,JF(r))}),fe(e,178))}function x4(e,t){!t||!t["!cols"]||(fe(e,390),t["!cols"].forEach(function(r,n){r&&fe(e,60,a4(n,r))}),fe(e,391))}function v4(e,t){!t||!t["!ref"]||(fe(e,648),fe(e,649,c4(Ye(t["!ref"]))),fe(e,650))}function w4(e,t,r){t["!links"].forEach(function(n){if(n[1].Target){var a=tt(r,-1,n[1].Target.replace(/#.*$/,""),ze.HLINK);fe(e,494,e4(n,a))}}),delete t["!links"]}function _4(e,t,r,n){if(t["!comments"].length>0){var a=tt(n,-1,"../drawings/vmlDrawing"+(r+1)+".vml",ze.VML);fe(e,551,uc("rId"+a)),t["!legacy"]=a}}function y4(e,t,r,n){if(t["!autofilter"]){var a=t["!autofilter"],i=typeof a.ref=="string"?a.ref:We(a.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var s=r.Workbook.Names,o=gr(i);o.s.r==o.e.r&&(o.e.r=gr(t["!ref"]).e.r,i=We(o));for(var c=0;c<s.length;++c){var f=s[c];if(f.Name=="_xlnm._FilterDatabase"&&f.Sheet==n){f.Ref="'"+r.SheetNames[n]+"'!"+i;break}}c==s.length&&s.push({Name:"_xlnm._FilterDatabase",Sheet:n,Ref:"'"+r.SheetNames[n]+"'!"+i}),fe(e,161,ti(Ye(i))),fe(e,162)}}function k4(e,t,r){fe(e,133),fe(e,137,l4(t,r)),fe(e,138),fe(e,134)}function b4(e,t){t["!protect"]&&fe(e,535,f4(t["!protect"]))}function C4(e,t,r,n){var a=pr(),i=r.SheetNames[e],s=r.Sheets[i]||{},o=i;try{r&&r.Workbook&&(o=r.Workbook.Sheets[e].CodeName||o)}catch{}var c=Ye(s["!ref"]||"A1");if(c.e.c>16383||c.e.r>1048575){if(t.WTF)throw new Error("Range "+(s["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");c.e.c=Math.min(c.e.c,16383),c.e.r=Math.min(c.e.c,1048575)}return s["!links"]=[],s["!comments"]=[],fe(a,129),(r.vbaraw||s["!outline"])&&fe(a,147,xF(o,s["!outline"])),fe(a,148,mF(c)),k4(a,s,r.Workbook),x4(a,s),p4(a,s,e,t),b4(a,s),y4(a,s,r,e),g4(a,s),w4(a,s,n),s["!margins"]&&fe(a,476,s4(s["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&v4(a,s),_4(a,s,e,n),fe(a,130),a.end()}function E4(e){var t=[],r=e.match(/^<c:numCache>/),n;(e.match(/<c:pt idx="(\d*)">(.*?)<\/c:pt>/mg)||[]).forEach(function(i){var s=i.match(/<c:pt idx="(\d*?)"><c:v>(.*)<\/c:v><\/c:pt>/);s&&(t[+s[1]]=r?+s[2]:s[2])});var a=Ke((e.match(/<c:formatCode>([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);return(e.match(/<c:f>(.*?)<\/c:f>/mg)||[]).forEach(function(i){n=i.replace(/<.*?>/g,"")}),[t,a,n]}function S4(e,t,r,n,a,i){var s=i||{"!type":"chart"};if(!e)return i;var o=0,c=0,f="A",u={s:{r:2e6,c:2e6},e:{r:0,c:0}};return(e.match(/<c:numCache>[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(d){var h=E4(d);u.s.r=u.s.c=0,u.e.c=o,f=mt(o),h[0].forEach(function(m,g){s[f+Et(g)]={t:"n",v:m,z:h[1]},c=g}),u.e.r<c&&(u.e.r=c),++o}),o>0&&(s["!ref"]=We(u)),s}function T4(e,t,r,n,a){if(!e)return e;n||(n={"!id":{}});var i={"!type":"chart","!drawel":null,"!rel":""},s,o=e.match(km);return o&&Lc(o[0],i,a,r),(s=e.match(/drawing r:id="(.*?)"/))&&(i["!rel"]=s[1]),n["!id"][i["!rel"]]&&(i["!drawel"]=n["!id"][i["!rel"]]),i}function F4(e,t){e.l+=10;var r=Zt(e);return{name:r}}function A4(e,t,r,n,a){if(!e)return e;n||(n={"!id":{}});var i={"!type":"chart","!drawel":null,"!rel":""},s=!1;return Nn(e,function(c,f,u){switch(u){case 550:i["!rel"]=c;break;case 651:a.Sheets[r]||(a.Sheets[r]={}),c.name&&(a.Sheets[r].CodeName=c.name);break;case 562:case 652:case 669:case 679:case 551:case 552:case 476:case 3072:break;case 35:s=!0;break;case 36:s=!1;break;case 37:break;case 38:break;default:if(!(f.T>0)){if(!(f.T<0)){if(!s||t.WTF)throw new Error("Unexpected record 0x"+u.toString(16))}}}},t),n["!id"][i["!rel"]]&&(i["!drawel"]=n["!id"][i["!rel"]]),i}var Mc=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],D4=[["activeTab",0,"int"],["autoFilterDateGrouping",!0,"bool"],["firstSheet",0,"int"],["minimized",!1,"bool"],["showHorizontalScroll",!0,"bool"],["showSheetTabs",!0,"bool"],["showVerticalScroll",!0,"bool"],["tabRatio",600,"int"],["visibility","visible"]],R4=[],O4=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function Sm(e,t){for(var r=0;r!=e.length;++r)for(var n=e[r],a=0;a!=t.length;++a){var i=t[a];if(n[i[0]]==null)n[i[0]]=i[1];else switch(i[2]){case"bool":typeof n[i[0]]=="string"&&(n[i[0]]=ft(n[i[0]]));break;case"int":typeof n[i[0]]=="string"&&(n[i[0]]=parseInt(n[i[0]],10));break}}}function Tm(e,t){for(var r=0;r!=t.length;++r){var n=t[r];if(e[n[0]]==null)e[n[0]]=n[1];else switch(n[2]){case"bool":typeof e[n[0]]=="string"&&(e[n[0]]=ft(e[n[0]]));break;case"int":typeof e[n[0]]=="string"&&(e[n[0]]=parseInt(e[n[0]],10));break}}}function Fm(e){Tm(e.WBProps,Mc),Tm(e.CalcPr,O4),Sm(e.WBView,D4),Sm(e.Sheets,R4),oi.date1904=ft(e.WBProps.date1904)}function B4(e){return!e.Workbook||!e.Workbook.WBProps?"false":ft(e.Workbook.WBProps.date1904)?"true":"false"}var N4="][*?/\\".split("");function Am(e,t){if(e.length>31){if(t)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var r=!0;return N4.forEach(function(n){if(e.indexOf(n)!=-1){if(!t)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");r=!1}}),r}function I4(e,t,r){e.forEach(function(n,a){Am(n);for(var i=0;i<a;++i)if(n==e[i])throw new Error("Duplicate Sheet Name: "+n);if(r){var s=t&&t[a]&&t[a].CodeName||n;if(s.charCodeAt(0)==95&&s.length>22)throw new Error("Bad Code Name: Worksheet"+s)}})}function P4(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var t=e.Workbook&&e.Workbook.Sheets||[];I4(e.SheetNames,t,!!e.vbaraw);for(var r=0;r<e.SheetNames.length;++r)BT(e.Sheets[e.SheetNames[r]],e.SheetNames[r],r)}var L4=/<\w+:workbook/;function M4(e,t){if(!e)throw new Error("Could not find file");var r={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},Names:[],xmlns:""},n=!1,a="xmlns",i={},s=0;if(e.replace(qt,function(c,f){var u=Le(c);switch(mn(u[0])){case"<?xml":break;case"<workbook":c.match(L4)&&(a="xmlns"+c.match(/<(\w+):/)[1]),r.xmlns=u[a];break;case"</workbook>":break;case"<fileVersion":delete u[0],r.AppVersion=u;break;case"<fileVersion/>":case"</fileVersion>":break;case"<fileSharing":break;case"<fileSharing/>":break;case"<workbookPr":case"<workbookPr/>":Mc.forEach(function(d){if(u[d[0]]!=null)switch(d[2]){case"bool":r.WBProps[d[0]]=ft(u[d[0]]);break;case"int":r.WBProps[d[0]]=parseInt(u[d[0]],10);break;default:r.WBProps[d[0]]=u[d[0]]}}),u.codeName&&(r.WBProps.CodeName=at(u.codeName));break;case"</workbookPr>":break;case"<workbookProtection":break;case"<workbookProtection/>":break;case"<bookViews":case"<bookViews>":case"</bookViews>":break;case"<workbookView":case"<workbookView/>":delete u[0],r.WBView.push(u);break;case"</workbookView>":break;case"<sheets":case"<sheets>":case"</sheets>":break;case"<sheet":switch(u.state){case"hidden":u.Hidden=1;break;case"veryHidden":u.Hidden=2;break;default:u.Hidden=0}delete u.state,u.name=Ke(at(u.name)),delete u[0],r.Sheets.push(u);break;case"</sheet>":break;case"<functionGroups":case"<functionGroups/>":break;case"<functionGroup":break;case"<externalReferences":case"</externalReferences>":case"<externalReferences>":break;case"<externalReference":break;case"<definedNames/>":break;case"<definedNames>":case"<definedNames":n=!0;break;case"</definedNames>":n=!1;break;case"<definedName":i={},i.Name=at(u.name),u.comment&&(i.Comment=u.comment),u.localSheetId&&(i.Sheet=+u.localSheetId),ft(u.hidden||"0")&&(i.Hidden=!0),s=f+c.length;break;case"</definedName>":i.Ref=Ke(at(e.slice(s,f))),r.Names.push(i);break;case"<definedName/>":break;case"<calcPr":delete u[0],r.CalcPr=u;break;case"<calcPr/>":delete u[0],r.CalcPr=u;break;case"</calcPr>":break;case"<oleSize":break;case"<customWorkbookViews>":case"</customWorkbookViews>":case"<customWorkbookViews":break;case"<customWorkbookView":case"</customWorkbookView>":break;case"<pivotCaches>":case"</pivotCaches>":case"<pivotCaches":break;case"<pivotCache":break;case"<smartTagPr":case"<smartTagPr/>":break;case"<smartTagTypes":case"<smartTagTypes>":case"</smartTagTypes>":break;case"<smartTagType":break;case"<webPublishing":case"<webPublishing/>":break;case"<fileRecoveryPr":case"<fileRecoveryPr/>":break;case"<webPublishObjects>":case"<webPublishObjects":case"</webPublishObjects>":break;case"<webPublishObject":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;case"<ArchID":break;case"<AlternateContent":case"<AlternateContent>":n=!0;break;case"</AlternateContent>":n=!1;break;case"<revisionPtr":break;default:if(!n&&t.WTF)throw new Error("unrecognized "+u[0]+" in workbook")}return c}),ga.indexOf(r.xmlns)===-1)throw new Error("Unknown Namespace: "+r.xmlns);return Fm(r),r}function Dm(e){var t=[Ct];t[t.length]=xe("workbook",null,{xmlns:ga[0],"xmlns:r":It.r});var r=e.Workbook&&(e.Workbook.Names||[]).length>0,n={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(Mc.forEach(function(o){e.Workbook.WBProps[o[0]]!=null&&e.Workbook.WBProps[o[0]]!=o[1]&&(n[o[0]]=e.Workbook.WBProps[o[0]])}),e.Workbook.WBProps.CodeName&&(n.codeName=e.Workbook.WBProps.CodeName,delete n.CodeName)),t[t.length]=xe("workbookPr",null,n);var a=e.Workbook&&e.Workbook.Sheets||[],i=0;if(a&&a[0]&&a[0].Hidden){for(t[t.length]="<bookViews>",i=0;i!=e.SheetNames.length&&!(!a[i]||!a[i].Hidden);++i);i==e.SheetNames.length&&(i=0),t[t.length]='<workbookView firstSheet="'+i+'" activeTab="'+i+'"/>',t[t.length]="</bookViews>"}for(t[t.length]="<sheets>",i=0;i!=e.SheetNames.length;++i){var s={name:et(e.SheetNames[i].slice(0,31))};if(s.sheetId=""+(i+1),s["r:id"]="rId"+(i+1),a[i])switch(a[i].Hidden){case 1:s.state="hidden";break;case 2:s.state="veryHidden";break}t[t.length]=xe("sheet",null,s)}return t[t.length]="</sheets>",r&&(t[t.length]="<definedNames>",e.Workbook&&e.Workbook.Names&&e.Workbook.Names.forEach(function(o){var c={name:o.Name};o.Comment&&(c.comment=o.Comment),o.Sheet!=null&&(c.localSheetId=""+o.Sheet),o.Hidden&&(c.hidden="1"),o.Ref&&(t[t.length]=xe("definedName",et(o.Ref),c))}),t[t.length]="</definedNames>"),t.length>2&&(t[t.length]="</workbook>",t[1]=t[1].replace("/>",">")),t.join("")}function V4(e,t){var r={};return r.Hidden=e.read_shift(4),r.iTabID=e.read_shift(4),r.strRelID=fc(e),r.name=Zt(e),r}function U4(e,t){return t||(t=se(127)),t.write_shift(4,e.Hidden),t.write_shift(4,e.iTabID),uc(e.strRelID,t),Vt(e.name.slice(0,31),t),t.length>t.l?t.slice(0,t.l):t}function $4(e,t){var r={},n=e.read_shift(4);r.defaultThemeVersion=e.read_shift(4);var a=t>8?Zt(e):"";return a.length>0&&(r.CodeName=a),r.autoCompressPictures=!!(n&65536),r.backupFile=!!(n&64),r.checkCompatibility=!!(n&4096),r.date1904=!!(n&1),r.filterPrivacy=!!(n&8),r.hidePivotFieldList=!!(n&1024),r.promptedSolutions=!!(n&16),r.publishItems=!!(n&2048),r.refreshAllConnections=!!(n&262144),r.saveExternalLinkValues=!!(n&128),r.showBorderUnselectedTables=!!(n&4),r.showInkAnnotation=!!(n&32),r.showObjects=["all","placeholders","none"][n>>13&3],r.showPivotChartFilter=!!(n&32768),r.updateLinks=["userSet","never","always"][n>>8&3],r}function W4(e,t){t||(t=se(72));var r=0;return e&&e.filterPrivacy&&(r|=8),t.write_shift(4,r),t.write_shift(4,0),Kd(e&&e.CodeName||"ThisWorkbook",t),t.slice(0,t.l)}function H4(e,t){var r={};return e.read_shift(4),r.ArchID=e.read_shift(4),e.l+=t-8,r}function j4(e,t,r){var n=e.l+t;e.l+=4,e.l+=1;var a=e.read_shift(4),i=_2(e),s=TT(e,0,r),o=cc(e);e.l=n;var c={Name:i,Ptg:s};return a<268435455&&(c.Sheet=a),o&&(c.Comment=o),c}function z4(e,t){var r={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""},n=[],a=!1;t||(t={}),t.biff=12;var i=[],s=[[]];return s.SheetNames=[],s.XTI=[],gs[16]={n:"BrtFRTArchID$",f:H4},Nn(e,function(c,f,u){switch(u){case 156:s.SheetNames.push(c.name),r.Sheets.push(c);break;case 153:r.WBProps=c;break;case 39:c.Sheet!=null&&(t.SID=c.Sheet),c.Ref=rr(c.Ptg,null,null,s,t),delete t.SID,delete c.Ptg,i.push(c);break;case 1036:break;case 357:case 358:case 355:case 667:s[0].length?s.push([u,c]):s[0]=[u,c],s[s.length-1].XTI=[];break;case 362:s.length===0&&(s[0]=[],s[0].XTI=[]),s[s.length-1].XTI=s[s.length-1].XTI.concat(c),s.XTI=s.XTI.concat(c);break;case 361:break;case 2071:case 158:case 143:case 664:case 353:break;case 3072:case 3073:case 534:case 677:case 157:case 610:case 2050:case 155:case 548:case 676:case 128:case 665:case 2128:case 2125:case 549:case 2053:case 596:case 2076:case 2075:case 2082:case 397:case 154:case 1117:case 553:case 2091:break;case 35:n.push(u),a=!0;break;case 36:n.pop(),a=!1;break;case 37:n.push(u),a=!0;break;case 38:n.pop(),a=!1;break;case 16:break;default:if(!f.T){if(!a||t.WTF&&n[n.length-1]!=37&&n[n.length-1]!=35)throw new Error("Unexpected record 0x"+u.toString(16))}}},t),Fm(r),r.Names=i,r.supbooks=s,r}function G4(e,t){fe(e,143);for(var r=0;r!=t.SheetNames.length;++r){var n=t.Workbook&&t.Workbook.Sheets&&t.Workbook.Sheets[r]&&t.Workbook.Sheets[r].Hidden||0,a={Hidden:n,iTabID:r+1,strRelID:"rId"+(r+1),name:t.SheetNames[r]};fe(e,156,U4(a))}fe(e,144)}function X4(e,t){t||(t=se(127));for(var r=0;r!=4;++r)t.write_shift(4,0);return Vt("SheetJS",t),Vt(no.version,t),Vt(no.version,t),Vt("7262",t),t.length>t.l?t.slice(0,t.l):t}function K4(e,t){t||(t=se(29)),t.write_shift(-4,0),t.write_shift(-4,460),t.write_shift(4,28800),t.write_shift(4,17600),t.write_shift(4,500),t.write_shift(4,e),t.write_shift(4,e);var r=120;return t.write_shift(1,r),t.length>t.l?t.slice(0,t.l):t}function Y4(e,t){if(!(!t.Workbook||!t.Workbook.Sheets)){for(var r=t.Workbook.Sheets,n=0,a=-1,i=-1;n<r.length;++n)!r[n]||!r[n].Hidden&&a==-1?a=n:r[n].Hidden==1&&i==-1&&(i=n);i>a||(fe(e,135),fe(e,158,K4(a)),fe(e,136))}}function q4(e,t){var r=pr();return fe(r,131),fe(r,128,X4()),fe(r,153,W4(e.Workbook&&e.Workbook.WBProps||null)),Y4(r,e),G4(r,e),fe(r,132),r.end()}function J4(e,t,r){return t.slice(-4)===".bin"?z4(e,r):M4(e,r)}function Z4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?h4(e,n,r,a,i,s,o):jT(e,n,r,a,i,s,o)}function Q4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?A4(e,n,r,a,i):T4(e,n,r,a,i)}function eA(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?rS():nS()}function tA(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?eS():tS()}function rA(e,t,r,n){return t.slice(-4)===".bin"?JC(e,r,n):VC(e,r,n)}function nA(e,t,r){return rm(e,r)}function aA(e,t,r){return t.slice(-4)===".bin"?aC(e,r):tC(e,r)}function iA(e,t,r){return t.slice(-4)===".bin"?YE(e,r):UE(e,r)}function sA(e,t,r){return t.slice(-4)===".bin"?LE(e):IE(e)}function oA(e,t,r,n){return r.slice(-4)===".bin"?ME(e,t,r,n):void 0}function lA(e,t,r){return t.slice(-4)===".bin"?OE(e,t,r):NE(e,t,r)}function cA(e,t,r){return(t.slice(-4)===".bin"?q4:Dm)(e)}function fA(e,t,r,n,a){return(t.slice(-4)===".bin"?C4:bm)(e,r,n,a)}function uA(e,t,r){return(t.slice(-4)===".bin"?oE:Qh)(e,r)}function dA(e,t,r){return(t.slice(-4)===".bin"?oC:zh)(e,r)}function hA(e,t,r){return(t.slice(-4)===".bin"?qE:sm)(e)}function mA(e){return(e.slice(-4)===".bin"?BE:nm)()}var Rm=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,Om=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/;function Jr(e,t){var r=e.split(/\s+/),n=[];if(t||(n[0]=r[0]),r.length===1)return n;var a=e.match(Rm),i,s,o,c;if(a)for(c=0;c!=a.length;++c)i=a[c].match(Om),(s=i[1].indexOf(":"))===-1?n[i[1]]=i[2].slice(1,i[2].length-1):(i[1].slice(0,6)==="xmlns:"?o="xmlns"+i[1].slice(6):o=i[1].slice(s+1),n[o]=i[2].slice(1,i[2].length-1));return n}function pA(e){var t=e.split(/\s+/),r={};if(t.length===1)return r;var n=e.match(Rm),a,i,s,o;if(n)for(o=0;o!=n.length;++o)a=n[o].match(Om),(i=a[1].indexOf(":"))===-1?r[a[1]]=a[2].slice(1,a[2].length-1):(a[1].slice(0,6)==="xmlns:"?s="xmlns"+a[1].slice(6):s=a[1].slice(i+1),r[s]=a[2].slice(1,a[2].length-1));return r}var ms;function gA(e,t){var r=ms[e]||Ke(e);return r==="General"?ha(t):Er(r,t)}function xA(e,t,r,n){var a=n;switch((r[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":a=ft(n);break;case"i2":case"int":a=parseInt(n,10);break;case"r4":case"float":a=parseFloat(n);break;case"date":case"dateTime.tz":a=lt(n);break;case"i8":case"string":case"fixed":case"uuid":case"bin.base64":break;default:throw new Error("bad custprop:"+r[0])}e[Ke(t)]=a}function vA(e,t,r){if(e.t!=="z"){if(!r||r.cellText!==!1)try{e.t==="e"?e.w=e.w||Pn[e.v]:t==="General"?e.t==="n"?(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Hi(e.v):e.w=ha(e.v):e.w=gA(t||"General",e.v)}catch(i){if(r.WTF)throw i}try{var n=ms[t]||t||"General";if(r.cellNF&&(e.z=n),r.cellDates&&e.t=="n"&&ma(n)){var a=Jn(e.v);a&&(e.t="d",e.v=new Date(a.y,a.m-1,a.d,a.H,a.M,a.S,a.u))}}catch(i){if(r.WTF)throw i}}}function wA(e,t,r){if(r.cellStyles&&t.Interior){var n=t.Interior;n.Pattern&&(n.patternType=RC[n.Pattern]||n.Pattern)}e[t.ID]=t}function _A(e,t,r,n,a,i,s,o,c,f){var u="General",d=n.StyleID,h={};f=f||{};var m=[],g=0;for(d===void 0&&o&&(d=o.StyleID),d===void 0&&s&&(d=s.StyleID);i[d]!==void 0&&(i[d].nf&&(u=i[d].nf),i[d].Interior&&m.push(i[d].Interior),!!i[d].Parent);)d=i[d].Parent;switch(r.Type){case"Boolean":n.t="b",n.v=ft(e);break;case"String":n.t="s",n.r=yd(Ke(e)),n.v=e.indexOf("<")>-1?Ke(t||e).replace(/<.*?>/g,""):n.r;break;case"DateTime":e.slice(-1)!="Z"&&(e+="Z"),n.v=(lt(e)-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3),n.v!==n.v?n.v=Ke(e):n.v<60&&(n.v=n.v-1),(!u||u=="General")&&(u="yyyy-mm-dd");case"Number":n.v===void 0&&(n.v=+e),n.t||(n.t="n");break;case"Error":n.t="e",n.v=th[e],f.cellText!==!1&&(n.w=e);break;default:e==""&&t==""?n.t="z":(n.t="s",n.v=yd(t||e));break}if(vA(n,u,f),f.cellFormula!==!1)if(n.Formula){var p=Ke(n.Formula);p.charCodeAt(0)==61&&(p=p.slice(1)),n.f=si(p,a),delete n.Formula,n.ArrayRange=="RC"?n.F=si("RC:RC",a):n.ArrayRange&&(n.F=si(n.ArrayRange,a),c.push([Ye(n.F),n.F]))}else for(g=0;g<c.length;++g)a.r>=c[g][0].s.r&&a.r<=c[g][0].e.r&&a.c>=c[g][0].s.c&&a.c<=c[g][0].e.c&&(n.F=c[g][1]);f.cellStyles&&(m.forEach(function(x){!h.patternType&&x.patternType&&(h.patternType=x.patternType)}),n.s=h),n.StyleID!==void 0&&(n.ixfe=n.StyleID)}function yA(e){e.t=e.v||"",e.t=e.t.replace(/\r\n/g,`
`).replace(/\r/g,`
`),e.v=e.w=e.ixfe=void 0}function Vc(e,t){var r=t||{};Ja();var n=Ui(rc(e));(r.type=="binary"||r.type=="array"||r.type=="base64")&&(n=at(n));var a=n.slice(0,1024).toLowerCase(),i=!1;if(a=a.replace(/".*?"/g,""),(a.indexOf(">")&1023)>Math.min(a.indexOf(",")&1023,a.indexOf(";")&1023)){var s=ct(r);return s.type="string",ni.to_workbook(n,s)}if(a.indexOf("<?xml")==-1&&["html","table","head","meta","script","style","div"].forEach(function(Qe){a.indexOf("<"+Qe)>=0&&(i=!0)}),i)return s3(n,r);ms={"General Number":"General","General Date":Oe[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":Oe[15],"Short Date":Oe[14],"Long Time":Oe[19],"Medium Time":Oe[18],"Short Time":Oe[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:Oe[2],Standard:Oe[4],Percent:Oe[10],Scientific:Oe[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var o,c=[],f,u={},d=[],h=r.dense?[]:{},m="",g={},p={},x=Jr('<Data ss:Type="String">'),v=0,y=0,w=0,b={s:{r:2e6,c:2e6},e:{r:0,c:0}},R={},A={},k="",U=0,T=[],j={},G={},B=0,z=[],te=[],W={},Y=[],ae,he=!1,K=[],ce=[],N={},_=0,E=0,C={Sheets:[],WBProps:{date1904:!1}},F={};Yi.lastIndex=0,n=n.replace(/<!--([\s\S]*?)-->/mg,"");for(var H="";o=Yi.exec(n);)switch(o[3]=(H=o[3]).toLowerCase()){case"data":if(H=="data"){if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break}if(c[c.length-1][1])break;o[1]==="/"?_A(n.slice(v,o.index),k,x,c[c.length-1][0]=="comment"?W:g,{c:y,r:w},R,Y[y],p,K,r):(k="",x=Jr(o[0]),v=o.index+o[0].length);break;case"cell":if(o[1]==="/")if(te.length>0&&(g.c=te),(!r.sheetRows||r.sheetRows>w)&&g.v!==void 0&&(r.dense?(h[w]||(h[w]=[]),h[w][y]=g):h[mt(y)+Et(w)]=g),g.HRef&&(g.l={Target:Ke(g.HRef)},g.HRefScreenTip&&(g.l.Tooltip=g.HRefScreenTip),delete g.HRef,delete g.HRefScreenTip),(g.MergeAcross||g.MergeDown)&&(_=y+(parseInt(g.MergeAcross,10)|0),E=w+(parseInt(g.MergeDown,10)|0),T.push({s:{c:y,r:w},e:{c:_,r:E}})),!r.sheetStubs)g.MergeAcross?y=_+1:++y;else if(g.MergeAcross||g.MergeDown){for(var ee=y;ee<=_;++ee)for(var Q=w;Q<=E;++Q)(ee>y||Q>w)&&(r.dense?(h[Q]||(h[Q]=[]),h[Q][ee]={t:"z"}):h[mt(ee)+Et(Q)]={t:"z"});y=_+1}else++y;else g=pA(o[0]),g.Index&&(y=+g.Index-1),y<b.s.c&&(b.s.c=y),y>b.e.c&&(b.e.c=y),o[0].slice(-2)==="/>"&&++y,te=[];break;case"row":o[1]==="/"||o[0].slice(-2)==="/>"?(w<b.s.r&&(b.s.r=w),w>b.e.r&&(b.e.r=w),o[0].slice(-2)==="/>"&&(p=Jr(o[0]),p.Index&&(w=+p.Index-1)),y=0,++w):(p=Jr(o[0]),p.Index&&(w=+p.Index-1),N={},(p.AutoFitHeight=="0"||p.Height)&&(N.hpx=parseInt(p.Height,10),N.hpt=os(N.hpx),ce[w]=N),p.Hidden=="1"&&(N.hidden=!0,ce[w]=N));break;case"worksheet":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"));d.push(m),b.s.r<=b.e.r&&b.s.c<=b.e.c&&(h["!ref"]=We(b),r.sheetRows&&r.sheetRows<=b.e.r&&(h["!fullref"]=h["!ref"],b.e.r=r.sheetRows-1,h["!ref"]=We(b))),T.length&&(h["!merges"]=T),Y.length>0&&(h["!cols"]=Y),ce.length>0&&(h["!rows"]=ce),u[m]=h}else b={s:{r:2e6,c:2e6},e:{r:0,c:0}},w=y=0,c.push([o[3],!1]),f=Jr(o[0]),m=Ke(f.Name),h=r.dense?[]:{},T=[],K=[],ce=[],F={name:m,Hidden:0},C.Sheets.push(F);break;case"table":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else{if(o[0].slice(-2)=="/>")break;c.push([o[3],!1]),Y=[],he=!1}break;case"style":o[1]==="/"?wA(R,A,r):A=Jr(o[0]);break;case"numberformat":A.nf=Ke(Jr(o[0]).Format||"General"),ms[A.nf]&&(A.nf=ms[A.nf]);for(var re=0;re!=392&&Oe[re]!=A.nf;++re);if(re==392){for(re=57;re!=392;++re)if(Oe[re]==null){hn(A.nf,re);break}}break;case"column":if(c[c.length-1][0]!=="table")break;if(ae=Jr(o[0]),ae.Hidden&&(ae.hidden=!0,delete ae.Hidden),ae.Width&&(ae.wpx=parseInt(ae.Width,10)),!he&&ae.wpx>10){he=!0,tr=Jh;for(var ie=0;ie<Y.length;++ie)Y[ie]&&ta(Y[ie])}he&&ta(ae),Y[ae.Index-1||Y.length]=ae;for(var Se=0;Se<+ae.Span;++Se)Y[Y.length]=ct(ae);break;case"namedrange":if(o[1]==="/")break;C.Names||(C.Names=[]);var L=Le(o[0]),de={Name:L.Name,Ref:si(L.RefersTo.slice(1),{r:0,c:0})};C.Sheets.length>0&&(de.Sheet=C.Sheets.length-1),C.Names.push(de);break;case"namedcell":break;case"b":break;case"i":break;case"u":break;case"s":break;case"em":break;case"h2":break;case"h3":break;case"sub":break;case"sup":break;case"span":break;case"alignment":break;case"borders":break;case"border":break;case"font":if(o[0].slice(-2)==="/>")break;o[1]==="/"?k+=n.slice(U,o.index):U=o.index+o[0].length;break;case"interior":if(!r.cellStyles)break;A.Interior=Jr(o[0]);break;case"protection":break;case"author":case"title":case"description":case"created":case"keywords":case"subject":case"category":case"company":case"lastauthor":case"lastsaved":case"lastprinted":case"version":case"revision":case"totaltime":case"hyperlinkbase":case"manager":case"contentstatus":case"identifier":case"language":case"appname":if(o[0].slice(-2)==="/>")break;o[1]==="/"?z2(j,H,n.slice(B,o.index)):B=o.index+o[0].length;break;case"paragraphs":break;case"styles":case"workbook":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else c.push([o[3],!1]);break;case"comment":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"));yA(W),te.push(W)}else c.push([o[3],!1]),f=Jr(o[0]),W={a:f.Author};break;case"autofilter":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else if(o[0].charAt(o[0].length-2)!=="/"){var _e=Jr(o[0]);h["!autofilter"]={ref:si(_e.Range).replace(/\$/g,"")},c.push([o[3],!0])}break;case"name":break;case"datavalidation":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break;case"pixelsperinch":break;case"componentoptions":case"documentproperties":case"customdocumentproperties":case"officedocumentsettings":case"pivottable":case"pivotcache":case"names":case"mapinfo":case"pagebreaks":case"querytable":case"sorting":case"schema":case"conditionalformatting":case"smarttagtype":case"smarttags":case"excelworkbook":case"workbookoptions":case"worksheetoptions":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break;case"null":break;default:if(c.length==0&&o[3]=="document"||c.length==0&&o[3]=="uof")return jm(n,r);var Fe=!0;switch(c[c.length-1][0]){case"officedocumentsettings":switch(o[3]){case"allowpng":break;case"removepersonalinformation":break;case"downloadcomponents":break;case"locationofcomponents":break;case"colors":break;case"color":break;case"index":break;case"rgb":break;case"targetscreensize":break;case"readonlyrecommended":break;default:Fe=!1}break;case"componentoptions":switch(o[3]){case"toolbar":break;case"hideofficelogo":break;case"spreadsheetautofit":break;case"label":break;case"caption":break;case"maxheight":break;case"maxwidth":break;case"nextsheetnumber":break;default:Fe=!1}break;case"excelworkbook":switch(o[3]){case"date1904":C.WBProps.date1904=!0;break;case"windowheight":break;case"windowwidth":break;case"windowtopx":break;case"windowtopy":break;case"tabratio":break;case"protectstructure":break;case"protectwindow":break;case"protectwindows":break;case"activesheet":break;case"displayinknotes":break;case"firstvisiblesheet":break;case"supbook":break;case"sheetname":break;case"sheetindex":break;case"sheetindexfirst":break;case"sheetindexlast":break;case"dll":break;case"acceptlabelsinformulas":break;case"donotsavelinkvalues":break;case"iteration":break;case"maxiterations":break;case"maxchange":break;case"path":break;case"xct":break;case"count":break;case"selectedsheets":break;case"calculation":break;case"uncalced":break;case"startupprompt":break;case"crn":break;case"externname":break;case"formula":break;case"colfirst":break;case"collast":break;case"wantadvise":break;case"boolean":break;case"error":break;case"text":break;case"ole":break;case"noautorecover":break;case"publishobjects":break;case"donotcalculatebeforesave":break;case"number":break;case"refmoder1c1":break;case"embedsavesmarttags":break;default:Fe=!1}break;case"workbookoptions":switch(o[3]){case"owcversion":break;case"height":break;case"width":break;default:Fe=!1}break;case"worksheetoptions":switch(o[3]){case"visible":if(o[0].slice(-2)!=="/>")if(o[1]==="/")switch(n.slice(B,o.index)){case"SheetHidden":F.Hidden=1;break;case"SheetVeryHidden":F.Hidden=2;break}else B=o.index+o[0].length;break;case"header":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Le(o[0]).Margin)||(h["!margins"].header=+Le(o[0]).Margin);break;case"footer":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Le(o[0]).Margin)||(h["!margins"].footer=+Le(o[0]).Margin);break;case"pagemargins":var ke=Le(o[0]);h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+ke.Top)||(h["!margins"].top=+ke.Top),isNaN(+ke.Left)||(h["!margins"].left=+ke.Left),isNaN(+ke.Right)||(h["!margins"].right=+ke.Right),isNaN(+ke.Bottom)||(h["!margins"].bottom=+ke.Bottom);break;case"displayrighttoleft":C.Views||(C.Views=[]),C.Views[0]||(C.Views[0]={}),C.Views[0].RTL=!0;break;case"freezepanes":break;case"frozennosplit":break;case"splithorizontal":case"splitvertical":break;case"donotdisplaygridlines":break;case"activerow":break;case"activecol":break;case"toprowbottompane":break;case"leftcolumnrightpane":break;case"unsynced":break;case"print":break;case"printerrors":break;case"panes":break;case"scale":break;case"pane":break;case"number":break;case"layout":break;case"pagesetup":break;case"selected":break;case"protectobjects":break;case"enableselection":break;case"protectscenarios":break;case"validprinterinfo":break;case"horizontalresolution":break;case"verticalresolution":break;case"numberofcopies":break;case"activepane":break;case"toprowvisible":break;case"leftcolumnvisible":break;case"fittopage":break;case"rangeselection":break;case"papersizeindex":break;case"pagelayoutzoom":break;case"pagebreakzoom":break;case"filteron":break;case"fitwidth":break;case"fitheight":break;case"commentslayout":break;case"zoom":break;case"lefttoright":break;case"gridlines":break;case"allowsort":break;case"allowfilter":break;case"allowinsertrows":break;case"allowdeleterows":break;case"allowinsertcols":break;case"allowdeletecols":break;case"allowinserthyperlinks":break;case"allowformatcells":break;case"allowsizecols":break;case"allowsizerows":break;case"nosummaryrowsbelowdetail":h["!outline"]||(h["!outline"]={}),h["!outline"].above=!0;break;case"tabcolorindex":break;case"donotdisplayheadings":break;case"showpagelayoutzoom":break;case"nosummarycolumnsrightdetail":h["!outline"]||(h["!outline"]={}),h["!outline"].left=!0;break;case"blackandwhite":break;case"donotdisplayzeros":break;case"displaypagebreak":break;case"rowcolheadings":break;case"donotdisplayoutline":break;case"noorientation":break;case"allowusepivottables":break;case"zeroheight":break;case"viewablerange":break;case"selection":break;case"protectcontents":break;default:Fe=!1}break;case"pivottable":case"pivotcache":switch(o[3]){case"immediateitemsondrop":break;case"showpagemultipleitemlabel":break;case"compactrowindent":break;case"location":break;case"pivotfield":break;case"orientation":break;case"layoutform":break;case"layoutsubtotallocation":break;case"layoutcompactrow":break;case"position":break;case"pivotitem":break;case"datatype":break;case"datafield":break;case"sourcename":break;case"parentfield":break;case"ptlineitems":break;case"ptlineitem":break;case"countofsameitems":break;case"item":break;case"itemtype":break;case"ptsource":break;case"cacheindex":break;case"consolidationreference":break;case"filename":break;case"reference":break;case"nocolumngrand":break;case"norowgrand":break;case"blanklineafteritems":break;case"hidden":break;case"subtotal":break;case"basefield":break;case"mapchilditems":break;case"function":break;case"refreshonfileopen":break;case"printsettitles":break;case"mergelabels":break;case"defaultversion":break;case"refreshname":break;case"refreshdate":break;case"refreshdatecopy":break;case"versionlastrefresh":break;case"versionlastupdate":break;case"versionupdateablemin":break;case"versionrefreshablemin":break;case"calculation":break;default:Fe=!1}break;case"pagebreaks":switch(o[3]){case"colbreaks":break;case"colbreak":break;case"rowbreaks":break;case"rowbreak":break;case"colstart":break;case"colend":break;case"rowend":break;default:Fe=!1}break;case"autofilter":switch(o[3]){case"autofiltercolumn":break;case"autofiltercondition":break;case"autofilterand":break;case"autofilteror":break;default:Fe=!1}break;case"querytable":switch(o[3]){case"id":break;case"autoformatfont":break;case"autoformatpattern":break;case"querysource":break;case"querytype":break;case"enableredirections":break;case"refreshedinxl9":break;case"urlstring":break;case"htmltables":break;case"connection":break;case"commandtext":break;case"refreshinfo":break;case"notitles":break;case"nextid":break;case"columninfo":break;case"overwritecells":break;case"donotpromptforfile":break;case"textwizardsettings":break;case"source":break;case"number":break;case"decimal":break;case"thousandseparator":break;case"trailingminusnumbers":break;case"formatsettings":break;case"fieldtype":break;case"delimiters":break;case"tab":break;case"comma":break;case"autoformatname":break;case"versionlastedit":break;case"versionlastrefresh":break;default:Fe=!1}break;case"datavalidation":switch(o[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;case"cellrangelist":break;default:Fe=!1}break;case"sorting":case"conditionalformatting":switch(o[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"cellrangelist":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;default:Fe=!1}break;case"mapinfo":case"schema":case"data":switch(o[3]){case"map":break;case"entry":break;case"range":break;case"xpath":break;case"field":break;case"xsdtype":break;case"filteron":break;case"aggregate":break;case"elementtype":break;case"attributetype":break;case"schema":case"element":case"complextype":case"datatype":case"all":case"attribute":case"extends":break;case"row":break;default:Fe=!1}break;case"smarttags":break;default:Fe=!1;break}if(Fe||o[3].match(/!\[CDATA/))break;if(!c[c.length-1][1])throw"Unrecognized tag: "+o[3]+"|"+c.join("|");if(c[c.length-1][0]==="customdocumentproperties"){if(o[0].slice(-2)==="/>")break;o[1]==="/"?xA(G,H,z,n.slice(B,o.index)):(z=o,B=o.index+o[0].length);break}if(r.WTF)throw"Unrecognized tag: "+o[3]+"|"+c.join("|")}var me={};return!r.bookSheets&&!r.bookProps&&(me.Sheets=u),me.SheetNames=d,me.Workbook=C,me.SSF=ct(Oe),me.Props=j,me.Custprops=G,me}function Uc(e,t){switch(Xc(t=t||{}),t.type||"base64"){case"base64":return Vc(br(e),t);case"binary":case"buffer":case"file":return Vc(e,t);case"array":return Vc(qn(e),t)}}function kA(e,t){var r=[];return e.Props&&r.push(G2(e.Props,t)),e.Custprops&&r.push(X2(e.Props,e.Custprops)),r.join("")}function bA(){return""}function CA(e,t){var r=['<Style ss:ID="Default" ss:Name="Normal"><NumberFormat/></Style>'];return t.cellXfs.forEach(function(n,a){var i=[];i.push(xe("NumberFormat",null,{"ss:Format":et(Oe[n.numFmtId])}));var s={"ss:ID":"s"+(21+a)};r.push(xe("Style",i.join(""),s))}),xe("Styles",r.join(""))}function Bm(e){return xe("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Oc(e.Ref,{r:0,c:0})})}function EA(e){if(!((e||{}).Workbook||{}).Names)return"";for(var t=e.Workbook.Names,r=[],n=0;n<t.length;++n){var a=t[n];a.Sheet==null&&(a.Name.match(/^_xlfn\./)||r.push(Bm(a)))}return xe("Names",r.join(""))}function SA(e,t,r,n){if(!e||!((n||{}).Workbook||{}).Names)return"";for(var a=n.Workbook.Names,i=[],s=0;s<a.length;++s){var o=a[s];o.Sheet==r&&(o.Name.match(/^_xlfn\./)||i.push(Bm(o)))}return i.join("")}function TA(e,t,r,n){if(!e)return"";var a=[];if(e["!margins"]&&(a.push("<PageSetup>"),e["!margins"].header&&a.push(xe("Header",null,{"x:Margin":e["!margins"].header})),e["!margins"].footer&&a.push(xe("Footer",null,{"x:Margin":e["!margins"].footer})),a.push(xe("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"})),a.push("</PageSetup>")),n&&n.Workbook&&n.Workbook.Sheets&&n.Workbook.Sheets[r])if(n.Workbook.Sheets[r].Hidden)a.push(xe("Visible",n.Workbook.Sheets[r].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var i=0;i<r&&!(n.Workbook.Sheets[i]&&!n.Workbook.Sheets[i].Hidden);++i);i==r&&a.push("<Selected/>")}return((((n||{}).Workbook||{}).Views||[])[0]||{}).RTL&&a.push("<DisplayRightToLeft/>"),e["!protect"]&&(a.push(Gt("ProtectContents","True")),e["!protect"].objects&&a.push(Gt("ProtectObjects","True")),e["!protect"].scenarios&&a.push(Gt("ProtectScenarios","True")),e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells?a.push(Gt("EnableSelection","NoSelection")):e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells&&a.push(Gt("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(s){e["!protect"][s[0]]&&a.push("<"+s[1]+"/>")})),a.length==0?"":xe("WorksheetOptions",a.join(""),{xmlns:Tr.x})}function FA(e){return e.map(function(t){var r=Yy(t.t||""),n=xe("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return xe("Comment",n,{"ss:Author":t.a})}).join("")}function AA(e,t,r,n,a,i,s){if(!e||e.v==null&&e.f==null)return"";var o={};if(e.f&&(o["ss:Formula"]="="+et(Oc(e.f,s))),e.F&&e.F.slice(0,t.length)==t){var c=pt(e.F.slice(t.length+1));o["ss:ArrayRange"]="RC:R"+(c.r==s.r?"":"["+(c.r-s.r)+"]")+"C"+(c.c==s.c?"":"["+(c.c-s.c)+"]")}if(e.l&&e.l.Target&&(o["ss:HRef"]=et(e.l.Target),e.l.Tooltip&&(o["x:HRefScreenTip"]=et(e.l.Tooltip))),r["!merges"])for(var f=r["!merges"],u=0;u!=f.length;++u)f[u].s.c!=s.c||f[u].s.r!=s.r||(f[u].e.c>f[u].s.c&&(o["ss:MergeAcross"]=f[u].e.c-f[u].s.c),f[u].e.r>f[u].s.r&&(o["ss:MergeDown"]=f[u].e.r-f[u].s.r));var d="",h="";switch(e.t){case"z":if(!n.sheetStubs)return"";break;case"n":d="Number",h=String(e.v);break;case"b":d="Boolean",h=e.v?"1":"0";break;case"e":d="Error",h=Pn[e.v];break;case"d":d="DateTime",h=new Date(e.v).toISOString(),e.z==null&&(e.z=e.z||Oe[14]);break;case"s":d="String",h=Ky(e.v||"");break}var m=na(n.cellXfs,e,n);o["ss:StyleID"]="s"+(21+m),o["ss:Index"]=s.c+1;var g=e.v!=null?h:"",p=e.t=="z"?"":'<Data ss:Type="'+d+'">'+g+"</Data>";return(e.c||[]).length>0&&(p+=FA(e.c)),xe("Cell",p,o)}function DA(e,t){var r='<Row ss:Index="'+(e+1)+'"';return t&&(t.hpt&&!t.hpx&&(t.hpx=ai(t.hpt)),t.hpx&&(r+=' ss:AutoFitHeight="0" ss:Height="'+t.hpx+'"'),t.hidden&&(r+=' ss:Hidden="1"')),r+">"}function RA(e,t,r,n){if(!e["!ref"])return"";var a=Ye(e["!ref"]),i=e["!merges"]||[],s=0,o=[];e["!cols"]&&e["!cols"].forEach(function(x,v){ta(x);var y=!!x.width,w=Oo(v,x),b={"ss:Index":v+1};y&&(b["ss:Width"]=is(w.width)),x.hidden&&(b["ss:Hidden"]="1"),o.push(xe("Column",null,b))});for(var c=Array.isArray(e),f=a.s.r;f<=a.e.r;++f){for(var u=[DA(f,(e["!rows"]||[])[f])],d=a.s.c;d<=a.e.c;++d){var h=!1;for(s=0;s!=i.length;++s)if(!(i[s].s.c>d)&&!(i[s].s.r>f)&&!(i[s].e.c<d)&&!(i[s].e.r<f)){(i[s].s.c!=d||i[s].s.r!=f)&&(h=!0);break}if(!h){var m={r:f,c:d},g=Ne(m),p=c?(e[f]||[])[d]:e[g];u.push(AA(p,g,e,t,r,n,m))}}u.push("</Row>"),u.length>2&&o.push(u.join(""))}return o.join("")}function OA(e,t,r){var n=[],a=r.SheetNames[e],i=r.Sheets[a],s=i?SA(i,t,e,r):"";return s.length>0&&n.push("<Names>"+s+"</Names>"),s=i?RA(i,t,e,r):"",s.length>0&&n.push("<Table>"+s+"</Table>"),n.push(TA(i,t,e,r)),n.join("")}function BA(e,t){t||(t={}),e.SSF||(e.SSF=ct(Oe)),e.SSF&&(Ja(),ji(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF,t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}));var r=[];r.push(kA(e,t)),r.push(bA()),r.push(""),r.push("");for(var n=0;n<e.SheetNames.length;++n)r.push(xe("Worksheet",OA(n,t,e),{"ss:Name":et(e.SheetNames[n])}));return r[2]=CA(e,t),r[3]=EA(e),Ct+xe("Workbook",r.join(""),{xmlns:Tr.ss,"xmlns:o":Tr.o,"xmlns:x":Tr.x,"xmlns:ss":Tr.ss,"xmlns:dt":Tr.dt,"xmlns:html":Tr.html})}function NA(e){var t={},r=e.content;if(r.l=28,t.AnsiUserType=r.read_shift(0,"lpstr-ansi"),t.AnsiClipboardFormat=E2(r),r.length-r.l<=4)return t;var n=r.read_shift(4);if(n==0||n>40||(r.l-=4,t.Reserved1=r.read_shift(0,"lpstr-ansi"),r.length-r.l<=4)||(n=r.read_shift(4),n!==1907505652)||(t.UnicodeClipboardFormat=S2(r),n=r.read_shift(4),n==0||n>40))return t;r.l-=4,t.Reserved2=r.read_shift(0,"lpwstr")}var IA=[60,1084,2066,2165,2175];function PA(e,t,r,n,a){var i=n,s=[],o=r.slice(r.l,r.l+i);if(a&&a.enc&&a.enc.insitu&&o.length>0)switch(e){case 9:case 521:case 1033:case 2057:case 47:case 405:case 225:case 406:case 312:case 404:case 10:break;case 133:break;default:a.enc.insitu(o)}s.push(o),r.l+=i;for(var c=Bn(r,r.l),f=$c[c],u=0;f!=null&&IA.indexOf(c)>-1;)i=Bn(r,r.l+2),u=r.l+4,c==2066?u+=4:(c==2165||c==2175)&&(u+=12),o=r.slice(u,r.l+4+i),s.push(o),r.l+=4+i,f=$c[c=Bn(r,r.l)];var d=Mt(s);Xt(d,0);var h=0;d.lens=[];for(var m=0;m<s.length;++m)d.lens.push(h),h+=s[m].length;if(d.length<n)throw"XLS Record 0x"+e.toString(16)+" Truncated: "+d.length+" < "+n;return t.f(d,d.length,a)}function xn(e,t,r){if(e.t!=="z"&&e.XF){var n=0;try{n=e.z||e.XF.numFmtId||0,t.cellNF&&(e.z=Oe[n])}catch(i){if(t.WTF)throw i}if(!t||t.cellText!==!1)try{e.t==="e"?e.w=e.w||Pn[e.v]:n===0||n=="General"?e.t==="n"?(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Hi(e.v):e.w=ha(e.v):e.w=Er(n,e.v,{date1904:!!r,dateNF:t&&t.dateNF})}catch(i){if(t.WTF)throw i}if(t.cellDates&&n&&e.t=="n"&&ma(Oe[n]||String(n))){var a=Jn(e.v);a&&(e.t="d",e.v=new Date(a.y,a.m-1,a.d,a.H,a.M,a.S,a.u))}}}function Bo(e,t,r){return{v:e,ixfe:t,t:r}}function LA(e,t){var r={opts:{}},n={},a=t.dense?[]:{},i={},s={},o=null,c=[],f="",u={},d,h="",m,g,p,x,v={},y=[],w,b,R=[],A=[],k={Sheets:[],WBProps:{date1904:!1},Views:[{}]},U={},T=function(De){return De<8?ba[De]:De<64&&A[De-8]||ba[De]},j=function(De,it,hr){var bt=it.XF.data;if(!(!bt||!bt.patternType||!hr||!hr.cellStyles)){it.s={},it.s.patternType=bt.patternType;var Pa;(Pa=as(T(bt.icvFore)))&&(it.s.fgColor={rgb:Pa}),(Pa=as(T(bt.icvBack)))&&(it.s.bgColor={rgb:Pa})}},G=function(De,it,hr){if(!(N>1)&&!(hr.sheetRows&&De.r>=hr.sheetRows)){if(hr.cellStyles&&it.XF&&it.XF.data&&j(De,it,hr),delete it.ixfe,delete it.XF,d=De,h=Ne(De),(!s||!s.s||!s.e)&&(s={s:{r:0,c:0},e:{r:0,c:0}}),De.r<s.s.r&&(s.s.r=De.r),De.c<s.s.c&&(s.s.c=De.c),De.r+1>s.e.r&&(s.e.r=De.r+1),De.c+1>s.e.c&&(s.e.c=De.c+1),hr.cellFormula&&it.f){for(var bt=0;bt<y.length;++bt)if(!(y[bt][0].s.c>De.c||y[bt][0].s.r>De.r)&&!(y[bt][0].e.c<De.c||y[bt][0].e.r<De.r)){it.F=We(y[bt][0]),(y[bt][0].s.c!=De.c||y[bt][0].s.r!=De.r)&&delete it.f,it.f&&(it.f=""+rr(y[bt][1],s,De,K,B));break}}hr.dense?(a[De.r]||(a[De.r]=[]),a[De.r][De.c]=it):a[h]=it}},B={enc:!1,sbcch:0,snames:[],sharedf:v,arrayf:y,rrtabid:[],lastuser:"",biff:8,codepage:0,winlocked:0,cellStyles:!!t&&!!t.cellStyles,WTF:!!t&&!!t.wtf};t.password&&(B.password=t.password);var z,te=[],W=[],Y=[],ae=[],he=!1,K=[];K.SheetNames=B.snames,K.sharedf=B.sharedf,K.arrayf=B.arrayf,K.names=[],K.XTI=[];var ce=0,N=0,_=0,E=[],C=[],F;B.codepage=1200,Xr(1200);for(var H=!1;e.l<e.length-1;){var ee=e.l,Q=e.read_shift(2);if(Q===0&&ce===10)break;var re=e.l===e.length?0:e.read_shift(2),ie=$c[Q];if(ie&&ie.f){if(t.bookSheets&&ce===133&&Q!==133)break;if(ce=Q,ie.r===2||ie.r==12){var Se=e.read_shift(2);if(re-=2,!B.enc&&Se!==Q&&((Se&255)<<8|Se>>8)!==Q)throw new Error("rt mismatch: "+Se+"!="+Q);ie.r==12&&(e.l+=10,re-=10)}var L={};if(Q===10?L=ie.f(e,re,B):L=PA(Q,ie,e,re,B),N==0&&[9,521,1033,2057].indexOf(ce)===-1)continue;switch(Q){case 34:r.opts.Date1904=k.WBProps.date1904=L;break;case 134:r.opts.WriteProtect=!0;break;case 47:if(B.enc||(e.l=0),B.enc=L,!t.password)throw new Error("File is password-protected");if(L.valid==null)throw new Error("Encryption scheme unsupported");if(!L.valid)throw new Error("Password is incorrect");break;case 92:B.lastuser=L;break;case 66:var de=Number(L);switch(de){case 21010:de=1200;break;case 32768:de=1e4;break;case 32769:de=1252;break}Xr(B.codepage=de),H=!0;break;case 317:B.rrtabid=L;break;case 25:B.winlocked=L;break;case 439:r.opts.RefreshAll=L;break;case 12:r.opts.CalcCount=L;break;case 16:r.opts.CalcDelta=L;break;case 17:r.opts.CalcIter=L;break;case 13:r.opts.CalcMode=L;break;case 14:r.opts.CalcPrecision=L;break;case 95:r.opts.CalcSaveRecalc=L;break;case 15:B.CalcRefMode=L;break;case 2211:r.opts.FullCalc=L;break;case 129:L.fDialog&&(a["!type"]="dialog"),L.fBelow||((a["!outline"]||(a["!outline"]={})).above=!0),L.fRight||((a["!outline"]||(a["!outline"]={})).left=!0);break;case 224:R.push(L);break;case 430:K.push([L]),K[K.length-1].XTI=[];break;case 35:case 547:K[K.length-1].push(L);break;case 24:case 536:F={Name:L.Name,Ref:rr(L.rgce,s,null,K,B)},L.itab>0&&(F.Sheet=L.itab-1),K.names.push(F),K[0]||(K[0]=[],K[0].XTI=[]),K[K.length-1].push(L),L.Name=="_xlnm._FilterDatabase"&&L.itab>0&&L.rgce&&L.rgce[0]&&L.rgce[0][0]&&L.rgce[0][0][0]=="PtgArea3d"&&(C[L.itab-1]={ref:We(L.rgce[0][0][1][2])});break;case 22:B.ExternCount=L;break;case 23:K.length==0&&(K[0]=[],K[0].XTI=[]),K[K.length-1].XTI=K[K.length-1].XTI.concat(L),K.XTI=K.XTI.concat(L);break;case 2196:if(B.biff<8)break;F!=null&&(F.Comment=L[1]);break;case 18:a["!protect"]=L;break;case 19:L!==0&&B.WTF&&console.error("Password verifier: "+L);break;case 133:i[L.pos]=L,B.snames.push(L.name);break;case 10:{if(--N)break;if(s.e){if(s.e.r>0&&s.e.c>0){if(s.e.r--,s.e.c--,a["!ref"]=We(s),t.sheetRows&&t.sheetRows<=s.e.r){var _e=s.e.r;s.e.r=t.sheetRows-1,a["!fullref"]=a["!ref"],a["!ref"]=We(s),s.e.r=_e}s.e.r++,s.e.c++}te.length>0&&(a["!merges"]=te),W.length>0&&(a["!objects"]=W),Y.length>0&&(a["!cols"]=Y),ae.length>0&&(a["!rows"]=ae),k.Sheets.push(U)}f===""?u=a:n[f]=a,a=t.dense?[]:{}}break;case 9:case 521:case 1033:case 2057:{if(B.biff===8&&(B.biff={9:2,521:3,1033:4}[Q]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[L.BIFFVer]||8),B.biffguess=L.BIFFVer==0,L.BIFFVer==0&&L.dt==4096&&(B.biff=5,H=!0,Xr(B.codepage=28591)),B.biff==8&&L.BIFFVer==0&&L.dt==16&&(B.biff=2),N++)break;if(a=t.dense?[]:{},B.biff<8&&!H&&(H=!0,Xr(B.codepage=t.codepage||1252)),B.biff<5||L.BIFFVer==0&&L.dt==4096){f===""&&(f="Sheet1"),s={s:{r:0,c:0},e:{r:0,c:0}};var Fe={pos:e.l-re,name:f};i[Fe.pos]=Fe,B.snames.push(f)}else f=(i[ee]||{name:""}).name;L.dt==32&&(a["!type"]="chart"),L.dt==64&&(a["!type"]="macro"),te=[],W=[],B.arrayf=y=[],Y=[],ae=[],he=!1,U={Hidden:(i[ee]||{hs:0}).hs,name:f}}break;case 515:case 3:case 2:a["!type"]=="chart"&&(t.dense?(a[L.r]||[])[L.c]:a[Ne({c:L.c,r:L.r})])&&++L.c,w={ixfe:L.ixfe,XF:R[L.ixfe]||{},v:L.val,t:"n"},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t);break;case 5:case 517:w={ixfe:L.ixfe,XF:R[L.ixfe],v:L.val,t:L.t},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t);break;case 638:w={ixfe:L.ixfe,XF:R[L.ixfe],v:L.rknum,t:"n"},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t);break;case 189:for(var ke=L.c;ke<=L.C;++ke){var me=L.rkrec[ke-L.c][0];w={ixfe:me,XF:R[me],v:L.rkrec[ke-L.c][1],t:"n"},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:ke,r:L.r},w,t)}break;case 6:case 518:case 1030:{if(L.val=="String"){o=L;break}if(w=Bo(L.val,L.cell.ixfe,L.tt),w.XF=R[w.ixfe],t.cellFormula){var Qe=L.formula;if(Qe&&Qe[0]&&Qe[0][0]&&Qe[0][0][0]=="PtgExp"){var vr=Qe[0][0][1][0],Hr=Qe[0][0][1][1],jr=Ne({r:vr,c:Hr});v[jr]?w.f=""+rr(L.formula,s,L.cell,K,B):w.F=((t.dense?(a[vr]||[])[Hr]:a[jr])||{}).F}else w.f=""+rr(L.formula,s,L.cell,K,B)}_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G(L.cell,w,t),o=L}break;case 7:case 519:if(o)o.val=L,w=Bo(L,o.cell.ixfe,"s"),w.XF=R[w.ixfe],t.cellFormula&&(w.f=""+rr(o.formula,s,o.cell,K,B)),_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G(o.cell,w,t),o=null;else throw new Error("String record expects Formula");break;case 33:case 545:{y.push(L);var gi=Ne(L[0].s);if(m=t.dense?(a[L[0].s.r]||[])[L[0].s.c]:a[gi],t.cellFormula&&m){if(!o||!gi||!m)break;m.f=""+rr(L[1],s,L[0],K,B),m.F=We(L[0])}}break;case 1212:{if(!t.cellFormula)break;if(h){if(!o)break;v[Ne(o.cell)]=L[0],m=t.dense?(a[o.cell.r]||[])[o.cell.c]:a[Ne(o.cell)],(m||{}).f=""+rr(L[0],s,d,K,B)}}break;case 253:w=Bo(c[L.isst].t,L.ixfe,"s"),c[L.isst].h&&(w.h=c[L.isst].h),w.XF=R[w.ixfe],_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t);break;case 513:t.sheetStubs&&(w={ixfe:L.ixfe,XF:R[L.ixfe],t:"z"},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t));break;case 190:if(t.sheetStubs)for(var kn=L.c;kn<=L.C;++kn){var dr=L.ixfe[kn-L.c];w={ixfe:dr,XF:R[dr],t:"z"},_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:kn,r:L.r},w,t)}break;case 214:case 516:case 4:w=Bo(L.val,L.ixfe,"s"),w.XF=R[w.ixfe],_>0&&(w.z=E[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:L.c,r:L.r},w,t);break;case 0:case 512:N===1&&(s=L);break;case 252:c=L;break;case 1054:if(B.biff==4){E[_++]=L[1];for(var on=0;on<_+163&&Oe[on]!=L[1];++on);on>=163&&hn(L[1],_+163)}else hn(L[1],L[0]);break;case 30:{E[_++]=L;for(var bn=0;bn<_+163&&Oe[bn]!=L;++bn);bn>=163&&hn(L,_+163)}break;case 229:te=te.concat(L);break;case 93:W[L.cmo[0]]=B.lastobj=L;break;case 438:B.lastobj.TxO=L;break;case 127:B.lastobj.ImData=L;break;case 440:for(x=L[0].s.r;x<=L[0].e.r;++x)for(p=L[0].s.c;p<=L[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&(m.l=L[1]);break;case 2048:for(x=L[0].s.r;x<=L[0].e.r;++x)for(p=L[0].s.c;p<=L[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&m.l&&(m.l.Tooltip=L[1]);break;case 28:{if(B.biff<=5&&B.biff>=2)break;m=t.dense?(a[L[0].r]||[])[L[0].c]:a[Ne(L[0])];var Ia=W[L[2]];m||(t.dense?(a[L[0].r]||(a[L[0].r]=[]),m=a[L[0].r][L[0].c]={t:"z"}):m=a[Ne(L[0])]={t:"z"},s.e.r=Math.max(s.e.r,L[0].r),s.s.r=Math.min(s.s.r,L[0].r),s.e.c=Math.max(s.e.c,L[0].c),s.s.c=Math.min(s.s.c,L[0].c)),m.c||(m.c=[]),g={a:L[1],t:Ia.TxO.t},m.c.push(g)}break;case 2173:CE(R[L.ixfe],L.ext);break;case 125:{if(!B.cellStyles)break;for(;L.e>=L.s;)Y[L.e--]={width:L.w/256,level:L.level||0,hidden:!!(L.flags&1)},he||(he=!0,Fc(L.w/256)),ta(Y[L.e+1])}break;case 520:{var ot={};L.level!=null&&(ae[L.r]=ot,ot.level=L.level),L.hidden&&(ae[L.r]=ot,ot.hidden=!0),L.hpt&&(ae[L.r]=ot,ot.hpt=L.hpt,ot.hpx=ai(L.hpt))}break;case 38:case 39:case 40:case 41:a["!margins"]||Aa(a["!margins"]={}),a["!margins"][{38:"left",39:"right",40:"top",41:"bottom"}[Q]]=L;break;case 161:a["!margins"]||Aa(a["!margins"]={}),a["!margins"].header=L.header,a["!margins"].footer=L.footer;break;case 574:L.RTL&&(k.Views[0].RTL=!0);break;case 146:A=L;break;case 2198:z=L;break;case 140:b=L;break;case 442:f?U.CodeName=L||U.name:k.WBProps.CodeName=L||"ThisWorkbook";break}}else ie||console.error("Missing Info for XLS Record 0x"+Q.toString(16)),e.l+=re}return r.SheetNames=_t(i).sort(function(Ht,De){return Number(Ht)-Number(De)}).map(function(Ht){return i[Ht].name}),t.bookSheets||(r.Sheets=n),!r.SheetNames.length&&u["!ref"]?(r.SheetNames.push("Sheet1"),r.Sheets&&(r.Sheets.Sheet1=u)):r.Preamble=u,r.Sheets&&C.forEach(function(Ht,De){r.Sheets[r.SheetNames[De]]["!autofilter"]=Ht}),r.Strings=c,r.SSF=ct(Oe),B.enc&&(r.Encryption=B.enc),z&&(r.Themes=z),r.Metadata={},b!==void 0&&(r.Metadata.Country=b),K.names.length>0&&(k.Names=K.names),r.Workbook=k,r}var ps={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function MA(e,t,r){var n=Ae.find(e,"/!DocumentSummaryInformation");if(n&&n.size>0)try{var a=_h(n,mc,ps.DSI);for(var i in a)t[i]=a[i]}catch(f){if(r.WTF)throw f}var s=Ae.find(e,"/!SummaryInformation");if(s&&s.size>0)try{var o=_h(s,pc,ps.SI);for(var c in o)t[c]==null&&(t[c]=o[c])}catch(f){if(r.WTF)throw f}t.HeadingPairs&&t.TitlesOfParts&&(lh(t.HeadingPairs,t.TitlesOfParts,t,r),delete t.HeadingPairs,delete t.TitlesOfParts)}function VA(e,t){var r=[],n=[],a=[],i=0,s,o=od(mc,"n"),c=od(pc,"n");if(e.Props)for(s=_t(e.Props),i=0;i<s.length;++i)(Object.prototype.hasOwnProperty.call(o,s[i])?r:Object.prototype.hasOwnProperty.call(c,s[i])?n:a).push([s[i],e.Props[s[i]]]);if(e.Custprops)for(s=_t(e.Custprops),i=0;i<s.length;++i)Object.prototype.hasOwnProperty.call(e.Props||{},s[i])||(Object.prototype.hasOwnProperty.call(o,s[i])?r:Object.prototype.hasOwnProperty.call(c,s[i])?n:a).push([s[i],e.Custprops[s[i]]]);var f=[];for(i=0;i<a.length;++i)vh.indexOf(a[i][0])>-1||oh.indexOf(a[i][0])>-1||a[i][1]!=null&&f.push(a[i]);n.length&&Ae.utils.cfb_add(t,"/SummaryInformation",yh(n,ps.SI,c,pc)),(r.length||f.length)&&Ae.utils.cfb_add(t,"/DocumentSummaryInformation",yh(r,ps.DSI,o,mc,f.length?f:null,ps.UDI))}function Nm(e,t){t||(t={}),Xc(t),jl(),t.codepage&&Hl(t.codepage);var r,n;if(e.FullPaths){if(Ae.find(e,"/encryption"))throw new Error("File is password-protected");r=Ae.find(e,"!CompObj"),n=Ae.find(e,"/Workbook")||Ae.find(e,"/Book")}else{switch(t.type){case"base64":e=Cr(br(e));break;case"binary":e=Cr(e);break;case"buffer":break;case"array":Array.isArray(e)||(e=Array.prototype.slice.call(e));break}Xt(e,0),n={content:e}}var a,i;if(r&&NA(r),t.bookProps&&!t.bookSheets)a={};else{var s=je?"buffer":"array";if(n&&n.content)a=LA(n.content,t);else if((i=Ae.find(e,"PerfectOffice_MAIN"))&&i.content)a=Fa.to_workbook(i.content,(t.type=s,t));else if((i=Ae.find(e,"NativeContent_MAIN"))&&i.content)a=Fa.to_workbook(i.content,(t.type=s,t));else throw(i=Ae.find(e,"MN0"))&&i.content?new Error("Unsupported Works 4 for Mac file"):new Error("Cannot find Workbook stream");t.bookVBA&&e.FullPaths&&Ae.find(e,"/_VBA_PROJECT_CUR/VBA/dir")&&(a.vbaraw=ZE(e))}var o={};return e.FullPaths&&MA(e,o,t),a.Props=a.Custprops=o,t.bookFiles&&(a.cfb=e),a}function UA(e,t){var r=t||{},n=Ae.utils.cfb_new({root:"R"}),a="/Workbook";switch(r.bookType||"xls"){case"xls":r.bookType="biff8";case"xla":r.bookType||(r.bookType="xla");case"biff8":a="/Workbook",r.biff=8;break;case"biff5":a="/Book",r.biff=5;break;default:throw new Error("invalid type "+r.bookType+" for XLS CFB")}return Ae.utils.cfb_add(n,a,Im(e,r)),r.biff==8&&(e.Props||e.Custprops)&&VA(e,n),r.biff==8&&e.vbaraw&&QE(n,Ae.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"})),n}var gs={0:{f:fF},1:{f:vF},2:{f:LF},3:{f:SF},4:{f:kF},5:{f:NF},6:{f:WF},7:{f:DF},8:{f:YF},9:{f:KF},10:{f:GF},11:{f:XF},12:{f:_F},13:{f:VF},14:{f:FF},15:{f:CF},16:{f:Cm},17:{f:jF},18:{f:OF},19:{f:lc},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:j4},40:{},42:{},43:{f:WC},44:{f:UC},45:{f:zC},46:{f:XC},47:{f:GC},48:{},49:{f:h2},50:{},51:{f:TE},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:$h},62:{f:$F},63:{f:PE},64:{f:u4},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:Jt,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:o4},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:gF},148:{f:hF,p:16},151:{f:t4},152:{},153:{f:$4},154:{},155:{},156:{f:V4},157:{},158:{},159:{T:1,f:nC},160:{T:-1},161:{T:1,f:ya},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:qF},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:EE},336:{T:-1},337:{f:DE,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:fc},357:{},358:{},359:{},360:{T:1},361:{},362:{f:Vh},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:r4},427:{f:n4},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:i4},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:pF},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:QF},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:fc},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:XE},633:{T:1},634:{T:-1},635:{T:1,f:zE},636:{T:-1},637:{f:x2},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:F4},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:d4},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}},$c={6:{f:Nc},10:{f:ea},12:{f:At},13:{f:At},14:{f:St},15:{f:St},16:{f:Qt},17:{f:St},18:{f:St},19:{f:At},20:{f:Ph},21:{f:Ph},23:{f:Vh},24:{f:Mh},25:{f:St},26:{},27:{},28:{f:db},29:{},34:{f:St},35:{f:Lh},38:{f:Qt},39:{f:Qt},40:{f:Qt},41:{f:Qt},42:{f:St},43:{f:St},47:{f:CC},49:{f:Vk},51:{f:At},60:{},61:{f:Nk},64:{f:St},65:{f:Mk},66:{f:At},77:{},80:{},81:{},82:{},85:{f:At},89:{},90:{},91:{},92:{f:bk},93:{f:pb},94:{},95:{f:St},96:{},97:{},99:{f:St},125:{f:$h},128:{f:eb},129:{f:Ek},130:{f:At},131:{f:St},132:{f:St},133:{f:Sk},134:{},140:{f:bb},141:{f:At},144:{},146:{f:Sb},151:{},152:{},153:{},154:{},155:{},156:{f:At},157:{},158:{},160:{f:Bb},161:{f:Ab},174:{},175:{},176:{},177:{},178:{},180:{},181:{},182:{},184:{},185:{},189:{f:qk},190:{f:Jk},193:{f:ea},197:{},198:{},199:{},200:{},201:{},202:{f:St},203:{},204:{},205:{},206:{},207:{},208:{},209:{},210:{},211:{},213:{},215:{},216:{},217:{},218:{f:At},220:{},221:{f:St},222:{},224:{f:Qk},225:{f:kk},226:{f:ea},227:{},229:{f:hb},233:{},235:{},236:{},237:{},239:{},240:{},241:{},242:{},244:{},245:{},246:{},247:{},248:{},249:{},251:{},252:{f:Fk},253:{f:$k},255:{f:Dk},256:{},259:{},290:{},311:{},312:{},315:{},317:{f:kh},318:{},319:{},320:{},330:{},331:{},333:{},334:{},335:{},336:{},337:{},338:{},339:{},340:{},351:{},352:{f:St},353:{f:ea},401:{},402:{},403:{},404:{},405:{},406:{},407:{},408:{},425:{},426:{},427:{},428:{},429:{},430:{f:ib},431:{f:St},432:{},433:{},434:{},437:{},438:{f:vb},439:{f:St},440:{f:wb},441:{},442:{f:ns},443:{},444:{f:At},445:{},446:{},448:{f:ea},449:{f:Bk,r:2},450:{f:ea},512:{f:Bh},513:{f:Ob},515:{f:nb},516:{f:Hk},517:{f:Ih},519:{f:Nb},520:{f:Rk},523:{},545:{f:Uh},549:{f:Oh},566:{},574:{f:Pk},638:{f:Yk},659:{},1048:{},1054:{f:zk},1084:{},1212:{f:cb},2048:{f:yb},2049:{},2050:{},2051:{},2052:{},2053:{},2054:{},2055:{},2056:{},2057:{f:Eo},2058:{},2059:{},2060:{},2061:{},2062:{},2063:{},2064:{},2066:{},2067:{},2128:{},2129:{},2130:{},2131:{},2132:{},2133:{},2134:{},2135:{},2136:{},2137:{},2138:{},2146:{},2147:{r:12},2148:{},2149:{},2150:{},2151:{f:ea},2152:{},2154:{},2155:{},2156:{},2161:{},2162:{},2164:{},2165:{},2166:{},2167:{},2168:{},2169:{},2170:{},2171:{},2172:{f:Tb,r:12},2173:{f:bE,r:12},2174:{},2175:{},2180:{},2181:{},2182:{},2183:{},2184:{},2185:{},2186:{},2187:{},2188:{f:St,r:12},2189:{},2190:{r:12},2191:{},2192:{},2194:{},2195:{},2196:{f:lb,r:12},2197:{},2198:{f:xE,r:12},2199:{},2200:{},2201:{},2202:{f:fb,r:12},2203:{f:ea},2204:{},2205:{},2206:{},2207:{},2211:{f:Ok},2212:{},2213:{},2214:{},2215:{},4097:{},4098:{},4099:{},4102:{},4103:{},4105:{},4106:{},4107:{},4108:{},4109:{},4116:{},4117:{},4118:{},4119:{},4120:{},4121:{},4122:{},4123:{},4124:{},4125:{},4126:{},4127:{},4128:{},4129:{},4130:{},4132:{},4133:{},4134:{f:At},4135:{},4146:{},4147:{},4148:{},4149:{},4154:{},4156:{},4157:{},4158:{},4159:{},4160:{},4161:{},4163:{},4164:{f:Db},4165:{},4166:{},4168:{},4170:{},4171:{},4174:{},4175:{},4176:{},4177:{},4187:{},4188:{f:Eb},4189:{},4191:{},4192:{},4193:{},4194:{},4195:{},4196:{},4197:{},4198:{},4199:{},4200:{},0:{f:Bh},1:{},2:{f:Vb},3:{f:Lb},4:{f:Pb},5:{f:Ih},7:{f:$b},8:{},9:{f:Eo},11:{},22:{f:At},30:{f:Xk},31:{},32:{},33:{f:Uh},36:{},37:{f:Oh},50:{f:Wb},62:{},52:{},67:{},68:{f:At},69:{},86:{},126:{},127:{f:Ib},135:{},136:{},137:{},145:{},148:{},149:{},150:{},169:{},171:{},188:{},191:{},192:{},194:{},195:{},214:{f:Hb},223:{},234:{},354:{},421:{},518:{f:Nc},521:{f:Eo},536:{f:Mh},547:{f:Lh},561:{},579:{},1030:{f:Nc},1033:{f:Eo},1091:{},2157:{},2163:{},2177:{},2240:{},2241:{},2242:{},2243:{},2244:{},2245:{},2246:{},2247:{},2248:{},2249:{},2250:{},2251:{},2262:{r:12},29282:{}};function ve(e,t,r,n){var a=t;if(!isNaN(a)){var i=n||(r||[]).length||0,s=e.next(4);s.write_shift(2,a),s.write_shift(2,i),i>0&&ac(r)&&e.push(r)}}function $A(e,t,r,n){var a=n||(r||[]).length||0;if(a<=8224)return ve(e,t,r,a);var i=t;if(!isNaN(i)){for(var s=r.parts||[],o=0,c=0,f=0;f+(s[o]||8224)<=8224;)f+=s[o]||8224,o++;var u=e.next(4);for(u.write_shift(2,i),u.write_shift(2,f),e.push(r.slice(c,c+f)),c+=f;c<a;){for(u=e.next(4),u.write_shift(2,60),f=0;f+(s[o]||8224)<=8224;)f+=s[o]||8224,o++;u.write_shift(2,f),e.push(r.slice(c,c+f)),c+=f}}}function xs(e,t,r){return e||(e=se(7)),e.write_shift(2,t),e.write_shift(2,r),e.write_shift(2,0),e.write_shift(1,0),e}function WA(e,t,r,n){var a=se(9);return xs(a,e,t),bh(r,n||"b",a),a}function HA(e,t,r){var n=se(8+2*r.length);return xs(n,e,t),n.write_shift(1,r.length),n.write_shift(r.length,r,"sbcs"),n.l<n.length?n.slice(0,n.l):n}function jA(e,t,r,n){if(t.v!=null)switch(t.t){case"d":case"n":var a=t.t=="d"?Nt(lt(t.v)):t.v;a==(a|0)&&a>=0&&a<65536?ve(e,2,Ub(r,n,a)):ve(e,3,Mb(r,n,a));return;case"b":case"e":ve(e,5,WA(r,n,t.v,t.t));return;case"s":case"str":ve(e,4,HA(r,n,(t.v||"").slice(0,255)));return}ve(e,1,xs(null,r,n))}function zA(e,t,r,n){var a=Array.isArray(t),i=Ye(t["!ref"]||"A1"),s,o="",c=[];if(i.e.c>255||i.e.r>16383){if(n.WTF)throw new Error("Range "+(t["!ref"]||"A1")+" exceeds format limit A1:IV16384");i.e.c=Math.min(i.e.c,255),i.e.r=Math.min(i.e.c,16383),s=We(i)}for(var f=i.s.r;f<=i.e.r;++f){o=Et(f);for(var u=i.s.c;u<=i.e.c;++u){f===i.s.r&&(c[u]=mt(u)),s=c[u]+o;var d=a?(t[f]||[])[u]:t[s];d&&jA(e,d,f,u)}}}function GA(e,t){for(var r=t||{},n=pr(),a=0,i=0;i<e.SheetNames.length;++i)e.SheetNames[i]==r.sheet&&(a=i);if(a==0&&r.sheet&&e.SheetNames[0]!=r.sheet)throw new Error("Sheet not found: "+r.sheet);return ve(n,r.biff==4?1033:r.biff==3?521:9,bc(e,16,r)),zA(n,e.Sheets[e.SheetNames[a]],a,r),ve(n,10),n.end()}function XA(e,t,r){ve(e,49,Uk({sz:12,color:{theme:1},name:"Arial",family:2,scheme:"minor"},r))}function KA(e,t,r){t&&[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&ve(e,1054,Gk(a,t[a],r))})}function YA(e,t){var r=se(19);r.write_shift(4,2151),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(2,3),r.write_shift(1,1),r.write_shift(4,0),ve(e,2151,r),r=se(39),r.write_shift(4,2152),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(2,3),r.write_shift(1,0),r.write_shift(4,0),r.write_shift(2,1),r.write_shift(4,4),r.write_shift(2,0),Ah(Ye(t["!ref"]||"A1"),r),r.write_shift(4,4),ve(e,2152,r)}function qA(e,t){for(var r=0;r<16;++r)ve(e,224,Nh({numFmtId:0,style:!0},0,t));t.cellXfs.forEach(function(n){ve(e,224,Nh(n,0,t))})}function JA(e,t){for(var r=0;r<t["!links"].length;++r){var n=t["!links"][r];ve(e,440,_b(n)),n[1].Tooltip&&ve(e,2048,kb(n))}delete t["!links"]}function ZA(e,t){if(t){var r=0;t.forEach(function(n,a){++r<=256&&n&&ve(e,125,Fb(Oo(a,n),a))})}}function QA(e,t,r,n,a){var i=16+na(a.cellXfs,t,a);if(t.v==null&&!t.bf){ve(e,513,Ta(r,n,i));return}if(t.bf)ve(e,6,ET(t,r,n,a,i));else switch(t.t){case"d":case"n":var s=t.t=="d"?Nt(lt(t.v)):t.v;ve(e,515,ab(r,n,s,i));break;case"b":case"e":ve(e,517,rb(r,n,t.v,i,a,t.t));break;case"s":case"str":if(a.bookSST){var o=Pc(a.Strings,t.v,a.revStrings);ve(e,253,Wk(r,n,o,i))}else ve(e,516,jk(r,n,(t.v||"").slice(0,255),i,a));break;default:ve(e,513,Ta(r,n,i))}}function e3(e,t,r){var n=pr(),a=r.SheetNames[e],i=r.Sheets[a]||{},s=(r||{}).Workbook||{},o=(s.Sheets||[])[e]||{},c=Array.isArray(i),f=t.biff==8,u,d="",h=[],m=Ye(i["!ref"]||"A1"),g=f?65536:16384;if(m.e.c>255||m.e.r>=g){if(t.WTF)throw new Error("Range "+(i["!ref"]||"A1")+" exceeds format limit A1:IV16384");m.e.c=Math.min(m.e.c,255),m.e.r=Math.min(m.e.c,g-1)}ve(n,2057,bc(r,16,t)),ve(n,13,Vr(1)),ve(n,12,Vr(100)),ve(n,15,cr(!0)),ve(n,17,cr(!1)),ve(n,16,ka(.001)),ve(n,95,cr(!0)),ve(n,42,cr(!1)),ve(n,43,cr(!1)),ve(n,130,Vr(1)),ve(n,128,tb([0,0])),ve(n,131,cr(!1)),ve(n,132,cr(!1)),f&&ZA(n,i["!cols"]),ve(n,512,Kk(m,t)),f&&(i["!links"]=[]);for(var p=m.s.r;p<=m.e.r;++p){d=Et(p);for(var x=m.s.c;x<=m.e.c;++x){p===m.s.r&&(h[x]=mt(x)),u=h[x]+d;var v=c?(i[p]||[])[x]:i[u];v&&(QA(n,v,p,x,t),f&&v.l&&i["!links"].push([u,v.l]))}}var y=o.CodeName||o.name||a;return f&&ve(n,574,Lk((s.Views||[])[0])),f&&(i["!merges"]||[]).length&&ve(n,229,mb(i["!merges"])),f&&JA(n,i),ve(n,442,Ch(y)),f&&YA(n,i),ve(n,10),n.end()}function t3(e,t,r){var n=pr(),a=(e||{}).Workbook||{},i=a.Sheets||[],s=a.WBProps||{},o=r.biff==8,c=r.biff==5;if(ve(n,2057,bc(e,5,r)),r.bookType=="xla"&&ve(n,135),ve(n,225,o?Vr(1200):null),ve(n,193,rk(2)),c&&ve(n,191),c&&ve(n,192),ve(n,226),ve(n,92,Ck("SheetJS",r)),ve(n,66,Vr(o?1200:1252)),o&&ve(n,353,Vr(0)),o&&ve(n,448),ve(n,317,Rb(e.SheetNames.length)),o&&e.vbaraw&&ve(n,211),o&&e.vbaraw){var f=s.CodeName||"ThisWorkbook";ve(n,442,Ch(f))}ve(n,156,Vr(17)),ve(n,25,cr(!1)),ve(n,18,cr(!1)),ve(n,19,Vr(0)),o&&ve(n,431,cr(!1)),o&&ve(n,444,Vr(0)),ve(n,61,Ik()),ve(n,64,cr(!1)),ve(n,141,Vr(0)),ve(n,34,cr(B4(e)=="true")),ve(n,14,cr(!0)),o&&ve(n,439,cr(!1)),ve(n,218,Vr(0)),XA(n,e,r),KA(n,e.SSF,r),qA(n,r),o&&ve(n,352,cr(!1));var u=n.end(),d=pr();o&&ve(d,140,Cb()),o&&r.Strings&&$A(d,252,Ak(r.Strings)),ve(d,10);var h=d.end(),m=pr(),g=0,p=0;for(p=0;p<e.SheetNames.length;++p)g+=(o?12:11)+(o?2:1)*e.SheetNames[p].length;var x=u.length+g+h.length;for(p=0;p<e.SheetNames.length;++p){var v=i[p]||{};ve(m,133,Tk({pos:x,hs:v.Hidden||0,dt:0,name:e.SheetNames[p]},r)),x+=t[p].length}var y=m.end();if(g!=y.length)throw new Error("BS8 "+g+" != "+y.length);var w=[];return u.length&&w.push(u),y.length&&w.push(y),h.length&&w.push(h),Mt(w)}function r3(e,t){var r=t||{},n=[];e&&!e.SSF&&(e.SSF=ct(Oe)),e&&e.SSF&&(Ja(),ji(e.SSF),r.revssf=fo(e.SSF),r.revssf[e.SSF[65535]]=0,r.ssf=e.SSF),r.Strings=[],r.Strings.Count=0,r.Strings.Unique=0,Kc(r),r.cellXfs=[],na(r.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={});for(var a=0;a<e.SheetNames.length;++a)n[n.length]=e3(a,r,e);return n.unshift(t3(e,n,r)),Mt(n)}function Im(e,t){for(var r=0;r<=e.SheetNames.length;++r){var n=e.Sheets[e.SheetNames[r]];if(!(!n||!n["!ref"])){var a=gr(n["!ref"]);a.e.c>255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+e.SheetNames[r]+"' extends beyond column IV (255). Data may be lost.")}}var i=t||{};switch(i.biff||2){case 8:case 5:return r3(e,t);case 4:case 3:case 2:return GA(e,t)}throw new Error("invalid type "+i.bookType+" for BIFF")}function Pm(e,t){var r=t||{},n=r.dense?[]:{};e=e.replace(/<!--.*?-->/g,"");var a=e.match(/<table/i);if(!a)throw new Error("Invalid HTML: could not find <table>");var i=e.match(/<\/table/i),s=a.index,o=i&&i.index||e.length,c=$y(e.slice(s,o),/(:?<tr[^>]*>)/i,"<tr>"),f=-1,u=0,d=0,h=0,m={s:{r:1e7,c:1e7},e:{r:0,c:0}},g=[];for(s=0;s<c.length;++s){var p=c[s].trim(),x=p.slice(0,3).toLowerCase();if(x=="<tr"){if(++f,r.sheetRows&&r.sheetRows<=f){--f;break}u=0;continue}if(!(x!="<td"&&x!="<th")){var v=p.split(/<\/t[dh]>/i);for(o=0;o<v.length;++o){var y=v[o].trim();if(y.match(/<t[dh]/i)){for(var w=y,b=0;w.charAt(0)=="<"&&(b=w.indexOf(">"))>-1;)w=w.slice(b+1);for(var R=0;R<g.length;++R){var A=g[R];A.s.c==u&&A.s.r<f&&f<=A.e.r&&(u=A.e.c+1,R=-1)}var k=Le(y.slice(0,y.indexOf(">")));h=k.colspan?+k.colspan:1,((d=+k.rowspan)>1||h>1)&&g.push({s:{r:f,c:u},e:{r:f+(d||1)-1,c:u+h-1}});var U=k.t||k["data-t"]||"";if(!w.length){u+=h;continue}if(w=Cd(w),m.s.r>f&&(m.s.r=f),m.e.r<f&&(m.e.r=f),m.s.c>u&&(m.s.c=u),m.e.c<u&&(m.e.c=u),!w.length){u+=h;continue}var T={t:"s",v:w};r.raw||!w.trim().length||U=="s"||(w==="TRUE"?T={t:"b",v:!0}:w==="FALSE"?T={t:"b",v:!1}:isNaN(Yr(w))?isNaN(Za(w).getDate())||(T={t:"d",v:lt(w)},r.cellDates||(T={t:"n",v:Nt(T.v)}),T.z=r.dateNF||Oe[14]):T={t:"n",v:Yr(w)}),r.dense?(n[f]||(n[f]=[]),n[f][u]=T):n[Ne({r:f,c:u})]=T,u+=h}}}}return n["!ref"]=We(m),g.length&&(n["!merges"]=g),n}function n3(e,t,r,n){for(var a=e["!merges"]||[],i=[],s=t.s.c;s<=t.e.c;++s){for(var o=0,c=0,f=0;f<a.length;++f)if(!(a[f].s.r>r||a[f].s.c>s)&&!(a[f].e.r<r||a[f].e.c<s)){if(a[f].s.r<r||a[f].s.c<s){o=-1;break}o=a[f].e.r-a[f].s.r+1,c=a[f].e.c-a[f].s.c+1;break}if(!(o<0)){var u=Ne({r,c:s}),d=n.dense?(e[r]||[])[s]:e[u],h=d&&d.v!=null&&(d.h||Ql(d.w||(In(d),d.w)||""))||"",m={};o>1&&(m.rowspan=o),c>1&&(m.colspan=c),n.editable?h='<span contenteditable="true">'+h+"</span>":d&&(m["data-t"]=d&&d.t||"z",d.v!=null&&(m["data-v"]=d.v),d.z!=null&&(m["data-z"]=d.z),d.l&&(d.l.Target||"#").charAt(0)!="#"&&(h='<a href="'+d.l.Target+'">'+h+"</a>")),m.id=(n.id||"sjs")+"-"+u,i.push(xe("td",h,m))}}var g="<tr>";return g+i.join("")+"</tr>"}var a3='<html><head><meta charset="utf-8"/><title>SheetJS Table Export</title></head><body>',i3="</body></html>";function s3(e,t){var r=e.match(/<table[\s\S]*?>[\s\S]*?<\/table>/gi);if(!r||r.length==0)throw new Error("Invalid HTML: could not find <table>");if(r.length==1)return Qn(Pm(r[0],t),t);var n=Qc();return r.forEach(function(a,i){ef(n,Pm(a,t),"Sheet"+(i+1))}),n}function o3(e,t,r){var n=[];return n.join("")+"<table"+(r&&r.id?' id="'+r.id+'"':"")+">"}function Lm(e,t){var r=t||{},n=r.header!=null?r.header:a3,a=r.footer!=null?r.footer:i3,i=[n],s=gr(e["!ref"]);r.dense=Array.isArray(e),i.push(o3(e,s,r));for(var o=s.s.r;o<=s.e.r;++o)i.push(n3(e,s,o,r));return i.push("</table>"+a),i.join("")}function Mm(e,t,r){var n=r||{},a=0,i=0;if(n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var s=typeof n.origin=="string"?pt(n.origin):n.origin;a=s.r,i=s.c}var o=t.getElementsByTagName("tr"),c=Math.min(n.sheetRows||1e7,o.length),f={s:{r:0,c:0},e:{r:a,c:i}};if(e["!ref"]){var u=gr(e["!ref"]);f.s.r=Math.min(f.s.r,u.s.r),f.s.c=Math.min(f.s.c,u.s.c),f.e.r=Math.max(f.e.r,u.e.r),f.e.c=Math.max(f.e.c,u.e.c),a==-1&&(f.e.r=a=u.e.r+1)}var d=[],h=0,m=e["!rows"]||(e["!rows"]=[]),g=0,p=0,x=0,v=0,y=0,w=0;for(e["!cols"]||(e["!cols"]=[]);g<o.length&&p<c;++g){var b=o[g];if(Um(b)){if(n.display)continue;m[p]={hidden:!0}}var R=b.children;for(x=v=0;x<R.length;++x){var A=R[x];if(!(n.display&&Um(A))){var k=A.hasAttribute("data-v")?A.getAttribute("data-v"):A.hasAttribute("v")?A.getAttribute("v"):Cd(A.innerHTML),U=A.getAttribute("data-z")||A.getAttribute("z");for(h=0;h<d.length;++h){var T=d[h];T.s.c==v+i&&T.s.r<p+a&&p+a<=T.e.r&&(v=T.e.c+1-i,h=-1)}w=+A.getAttribute("colspan")||1,((y=+A.getAttribute("rowspan")||1)>1||w>1)&&d.push({s:{r:p+a,c:v+i},e:{r:p+a+(y||1)-1,c:v+i+(w||1)-1}});var j={t:"s",v:k},G=A.getAttribute("data-t")||A.getAttribute("t")||"";k!=null&&(k.length==0?j.t=G||"z":n.raw||k.trim().length==0||G=="s"||(k==="TRUE"?j={t:"b",v:!0}:k==="FALSE"?j={t:"b",v:!1}:isNaN(Yr(k))?isNaN(Za(k).getDate())||(j={t:"d",v:lt(k)},n.cellDates||(j={t:"n",v:Nt(j.v)}),j.z=n.dateNF||Oe[14]):j={t:"n",v:Yr(k)})),j.z===void 0&&U!=null&&(j.z=U);var B="",z=A.getElementsByTagName("A");if(z&&z.length)for(var te=0;te<z.length&&!(z[te].hasAttribute("href")&&(B=z[te].getAttribute("href"),B.charAt(0)!="#"));++te);B&&B.charAt(0)!="#"&&(j.l={Target:B}),n.dense?(e[p+a]||(e[p+a]=[]),e[p+a][v+i]=j):e[Ne({c:v+i,r:p+a})]=j,f.e.c<v+i&&(f.e.c=v+i),v+=w}}++p}return d.length&&(e["!merges"]=(e["!merges"]||[]).concat(d)),f.e.r=Math.max(f.e.r,p-1+a),e["!ref"]=We(f),p>=c&&(e["!fullref"]=We((f.e.r=o.length-g+p-1+a,f))),e}function Vm(e,t){var r=t||{},n=r.dense?[]:{};return Mm(n,e,t)}function l3(e,t){return Qn(Vm(e,t),t)}function Um(e){var t="",r=c3(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),t==="none"}function c3(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}function f3(e){var t=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(/<text:s\/>/g," ").replace(/<text:s text:c="(\d+)"\/>/g,function(n,a){return Array(parseInt(a,10)+1).join(" ")}).replace(/<text:tab[^>]*\/>/g," ").replace(/<text:line-break\/>/g,`
`),r=Ke(t.replace(/<[^>]*>/g,""));return[r]}var $m={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};function Wm(e,t){var r=t||{},n=rc(e),a=[],i,s,o={name:""},c="",f=0,u,d,h={},m=[],g=r.dense?[]:{},p,x,v={value:""},y="",w=0,b=[],R=-1,A=-1,k={s:{r:1e6,c:1e7},e:{r:0,c:0}},U=0,T={},j=[],G={},B=0,z=0,te=[],W=1,Y=1,ae=[],he={Names:[]},K={},ce=["",""],N=[],_={},E="",C=0,F=!1,H=!1,ee=0;for(Yi.lastIndex=0,n=n.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");p=Yi.exec(n);)switch(p[3]=p[3].replace(/_.*$/,"")){case"table":case"工作表":p[1]==="/"?(k.e.c>=k.s.c&&k.e.r>=k.s.r?g["!ref"]=We(k):g["!ref"]="A1:A1",r.sheetRows>0&&r.sheetRows<=k.e.r&&(g["!fullref"]=g["!ref"],k.e.r=r.sheetRows-1,g["!ref"]=We(k)),j.length&&(g["!merges"]=j),te.length&&(g["!rows"]=te),u.name=u.名称||u.name,typeof JSON<"u"&&JSON.stringify(u),m.push(u.name),h[u.name]=g,H=!1):p[0].charAt(p[0].length-2)!=="/"&&(u=Le(p[0],!1),R=A=-1,k.s.r=k.s.c=1e7,k.e.r=k.e.c=0,g=r.dense?[]:{},j=[],te=[],H=!0);break;case"table-row-group":p[1]==="/"?--U:++U;break;case"table-row":case"行":if(p[1]==="/"){R+=W,W=1;break}if(d=Le(p[0],!1),d.行号?R=d.行号-1:R==-1&&(R=0),W=+d["number-rows-repeated"]||1,W<10)for(ee=0;ee<W;++ee)U>0&&(te[R+ee]={level:U});A=-1;break;case"covered-table-cell":p[1]!=="/"&&++A,r.sheetStubs&&(r.dense?(g[R]||(g[R]=[]),g[R][A]={t:"z"}):g[Ne({r:R,c:A})]={t:"z"}),y="",b=[];break;case"table-cell":case"数据":if(p[0].charAt(p[0].length-2)==="/")++A,v=Le(p[0],!1),Y=parseInt(v["number-columns-repeated"]||"1",10),x={t:"z",v:null},v.formula&&r.cellFormula!=!1&&(x.f=_m(Ke(v.formula))),(v.数据类型||v["value-type"])=="string"&&(x.t="s",x.v=Ke(v["string-value"]||""),r.dense?(g[R]||(g[R]=[]),g[R][A]=x):g[Ne({r:R,c:A})]=x),A+=Y-1;else if(p[1]!=="/"){++A,y="",w=0,b=[],Y=1;var Q=W?R+W-1:R;if(A>k.e.c&&(k.e.c=A),A<k.s.c&&(k.s.c=A),R<k.s.r&&(k.s.r=R),Q>k.e.r&&(k.e.r=Q),v=Le(p[0],!1),N=[],_={},x={t:v.数据类型||v["value-type"],v:null},r.cellFormula)if(v.formula&&(v.formula=Ke(v.formula)),v["number-matrix-columns-spanned"]&&v["number-matrix-rows-spanned"]&&(B=parseInt(v["number-matrix-rows-spanned"],10)||0,z=parseInt(v["number-matrix-columns-spanned"],10)||0,G={s:{r:R,c:A},e:{r:R+B-1,c:A+z-1}},x.F=We(G),ae.push([G,x.F])),v.formula)x.f=_m(v.formula);else for(ee=0;ee<ae.length;++ee)R>=ae[ee][0].s.r&&R<=ae[ee][0].e.r&&A>=ae[ee][0].s.c&&A<=ae[ee][0].e.c&&(x.F=ae[ee][1]);switch((v["number-columns-spanned"]||v["number-rows-spanned"])&&(B=parseInt(v["number-rows-spanned"],10)||0,z=parseInt(v["number-columns-spanned"],10)||0,G={s:{r:R,c:A},e:{r:R+B-1,c:A+z-1}},j.push(G)),v["number-columns-repeated"]&&(Y=parseInt(v["number-columns-repeated"],10)),x.t){case"boolean":x.t="b",x.v=ft(v["boolean-value"]);break;case"float":x.t="n",x.v=parseFloat(v.value);break;case"percentage":x.t="n",x.v=parseFloat(v.value);break;case"currency":x.t="n",x.v=parseFloat(v.value);break;case"date":x.t="d",x.v=lt(v["date-value"]),r.cellDates||(x.t="n",x.v=Nt(x.v)),x.z="m/d/yy";break;case"time":x.t="n",x.v=My(v["time-value"])/86400,r.cellDates&&(x.t="d",x.v=ho(x.v)),x.z="HH:MM:SS";break;case"number":x.t="n",x.v=parseFloat(v.数据数值);break;default:if(x.t==="string"||x.t==="text"||!x.t)x.t="s",v["string-value"]!=null&&(y=Ke(v["string-value"]),b=[]);else throw new Error("Unsupported value type "+x.t)}}else{if(F=!1,x.t==="s"&&(x.v=y||"",b.length&&(x.R=b),F=w==0),K.Target&&(x.l=K),N.length>0&&(x.c=N,N=[]),y&&r.cellText!==!1&&(x.w=y),F&&(x.t="z",delete x.v),(!F||r.sheetStubs)&&!(r.sheetRows&&r.sheetRows<=R))for(var re=0;re<W;++re){if(Y=parseInt(v["number-columns-repeated"]||"1",10),r.dense)for(g[R+re]||(g[R+re]=[]),g[R+re][A]=re==0?x:ct(x);--Y>0;)g[R+re][A+Y]=ct(x);else for(g[Ne({r:R+re,c:A})]=x;--Y>0;)g[Ne({r:R+re,c:A+Y})]=ct(x);k.e.c<=A&&(k.e.c=A)}Y=parseInt(v["number-columns-repeated"]||"1",10),A+=Y-1,Y=0,x={},y="",b=[]}K={};break;case"document":case"document-content":case"电子表格文档":case"spreadsheet":case"主体":case"scripts":case"styles":case"font-face-decls":case"master-styles":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!0]);break;case"annotation":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i;_.t=y,b.length&&(_.R=b),_.a=E,N.push(_)}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!1]);E="",C=0,y="",w=0,b=[];break;case"creator":p[1]==="/"?E=n.slice(C,p.index):C=p.index+p[0].length;break;case"meta":case"元数据":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!1]);y="",w=0,b=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if(p[1]==="/"){if(T[o.name]=c,(i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&(c="",o=Le(p[0],!1),a.push([p[3],!0]));break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Le(p[0],!1),c+=$m[p[3]][s.style==="long"?1:0];break}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Le(p[0],!1),c+=$m[p[3]][s.style==="long"?1:0];break}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(p[0].slice(-2)==="/>")break;if(p[1]==="/")switch(a[a.length-1][0]){case"number-style":case"date-style":case"time-style":c+=n.slice(f,p.index);break}else f=p.index+p[0].length;break;case"named-range":s=Le(p[0],!1),ce=Ic(s["cell-range-address"]);var ie={Name:s.name,Ref:ce[0]+"!"+ce[1]};H&&(ie.Sheet=m.length),he.Names.push(ie);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":case"文本串":if(["master-styles"].indexOf(a[a.length-1][0])>-1)break;if(p[1]==="/"&&(!v||!v["string-value"])){var Se=f3(n.slice(w,p.index));y=(y.length>0?y+`
`:"")+Se[0]}else Le(p[0],!1),w=p.index+p[0].length;break;case"s":break;case"database-range":if(p[1]==="/")break;try{ce=Ic(Le(p[0])["target-range-address"]),h[ce[0]]["!autofilter"]={ref:ce[1]}}catch{}break;case"date":break;case"object":break;case"title":case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":break;case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":break;case"properties":break;case"property":break;case"a":if(p[1]!=="/"){if(K=Le(p[0],!1),!K.href)break;K.Target=Ke(K.href),delete K.href,K.Target.charAt(0)=="#"&&K.Target.indexOf(".")>-1?(ce=Ic(K.Target.slice(1)),K.Target="#"+ce[0]+"!"+ce[1]):K.Target.match(/^\.\.[\\\/]/)&&(K.Target=K.Target.slice(3))}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(p[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"表:":case"字:":break;default:if(r.WTF)throw new Error(p)}}var L={Sheets:h,SheetNames:m,Workbook:he};return r.bookSheets&&delete L.Sheets,L}function Hm(e,t){t=t||{},Pr(e,"META-INF/manifest.xml")&&L2(Ft(e,"META-INF/manifest.xml"),t);var r=Sr(e,"content.xml");if(!r)throw new Error("Missing content.xml in ODS / UOF file");var n=Wm(at(r),t);return Pr(e,"meta.xml")&&(n.Props=ih(Ft(e,"meta.xml"))),n}function jm(e,t){return Wm(e,t)}var u3=function(){var e=["<office:master-styles>",'<style:master-page style:name="mp1" style:page-layout-name="mp1">',"<style:header/>",'<style:header-left style:display="false"/>',"<style:footer/>",'<style:footer-left style:display="false"/>',"</style:master-page>","</office:master-styles>"].join(""),t="<office:document-styles "+Ki({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","office:version":"1.2"})+">"+e+"</office:document-styles>";return function(){return Ct+t}}(),zm=function(){var e=function(i){return et(i).replace(/ +/g,function(s){return'<text:s text:c="'+s.length+'"/>'}).replace(/\t/g,"<text:tab/>").replace(/\n/g,"</text:p><text:p>").replace(/^ /,"<text:s/>").replace(/ $/,"<text:s/>")},t=` <table:table-cell />
`,r=` <table:covered-table-cell/>
`,n=function(i,s,o){var c=[];c.push(' <table:table table:name="'+et(s.SheetNames[o])+`" table:style-name="ta1">
`);var f=0,u=0,d=gr(i["!ref"]||"A1"),h=i["!merges"]||[],m=0,g=Array.isArray(i);if(i["!cols"])for(u=0;u<=d.e.c;++u)c.push(" <table:table-column"+(i["!cols"][u]?' table:style-name="co'+i["!cols"][u].ods+'"':"")+`></table:table-column>
`);var p="",x=i["!rows"]||[];for(f=0;f<d.s.r;++f)p=x[f]?' table:style-name="ro'+x[f].ods+'"':"",c.push(" <table:table-row"+p+`></table:table-row>
`);for(;f<=d.e.r;++f){for(p=x[f]?' table:style-name="ro'+x[f].ods+'"':"",c.push(" <table:table-row"+p+`>
`),u=0;u<d.s.c;++u)c.push(t);for(;u<=d.e.c;++u){var v=!1,y={},w="";for(m=0;m!=h.length;++m)if(!(h[m].s.c>u)&&!(h[m].s.r>f)&&!(h[m].e.c<u)&&!(h[m].e.r<f)){(h[m].s.c!=u||h[m].s.r!=f)&&(v=!0),y["table:number-columns-spanned"]=h[m].e.c-h[m].s.c+1,y["table:number-rows-spanned"]=h[m].e.r-h[m].s.r+1;break}if(v){c.push(r);continue}var b=Ne({r:f,c:u}),R=g?(i[f]||[])[u]:i[b];if(R&&R.f&&(y["table:formula"]=et(RT(R.f)),R.F&&R.F.slice(0,b.length)==b)){var A=gr(R.F);y["table:number-matrix-columns-spanned"]=A.e.c-A.s.c+1,y["table:number-matrix-rows-spanned"]=A.e.r-A.s.r+1}if(!R){c.push(t);continue}switch(R.t){case"b":w=R.v?"TRUE":"FALSE",y["office:value-type"]="boolean",y["office:boolean-value"]=R.v?"true":"false";break;case"n":w=R.w||String(R.v||0),y["office:value-type"]="float",y["office:value"]=R.v||0;break;case"s":case"str":w=R.v==null?"":R.v,y["office:value-type"]="string";break;case"d":w=R.w||lt(R.v).toISOString(),y["office:value-type"]="date",y["office:date-value"]=lt(R.v).toISOString(),y["table:style-name"]="ce1";break;default:c.push(t);continue}var k=e(w);if(R.l&&R.l.Target){var U=R.l.Target;U=U.charAt(0)=="#"?"#"+OT(U.slice(1)):U,U.charAt(0)!="#"&&!U.match(/^\w+:/)&&(U="../"+U),k=xe("text:a",k,{"xlink:href":U.replace(/&/g,"&amp;")})}c.push(" "+xe("table:table-cell",xe("text:p",k,{}),y)+`
`)}c.push(` </table:table-row>
`)}return c.push(` </table:table>
`),c.join("")},a=function(i,s){i.push(` <office:automatic-styles>
`),i.push(` <number:date-style style:name="N37" number:automatic-order="true">
`),i.push(` <number:month number:style="long"/>
`),i.push(` <number:text>/</number:text>
`),i.push(` <number:day number:style="long"/>
`),i.push(` <number:text>/</number:text>
`),i.push(` <number:year/>
`),i.push(` </number:date-style>
`);var o=0;s.SheetNames.map(function(f){return s.Sheets[f]}).forEach(function(f){if(f&&f["!cols"]){for(var u=0;u<f["!cols"].length;++u)if(f["!cols"][u]){var d=f["!cols"][u];if(d.width==null&&d.wpx==null&&d.wch==null)continue;ta(d),d.ods=o;var h=f["!cols"][u].wpx+"px";i.push(' <style:style style:name="co'+o+`" style:family="table-column">
`),i.push(' <style:table-column-properties fo:break-before="auto" style:column-width="'+h+`"/>
`),i.push(` </style:style>
`),++o}}});var c=0;s.SheetNames.map(function(f){return s.Sheets[f]}).forEach(function(f){if(f&&f["!rows"]){for(var u=0;u<f["!rows"].length;++u)if(f["!rows"][u]){f["!rows"][u].ods=c;var d=f["!rows"][u].hpx+"px";i.push(' <style:style style:name="ro'+c+`" style:family="table-row">
`),i.push(' <style:table-row-properties fo:break-before="auto" style:row-height="'+d+`"/>
`),i.push(` </style:style>
`),++c}}}),i.push(` <style:style style:name="ta1" style:family="table" style:master-page-name="mp1">
`),i.push(` <style:table-properties table:display="true" style:writing-mode="lr-tb"/>
`),i.push(` </style:style>
`),i.push(` <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>
`),i.push(` </office:automatic-styles>
`)};return function(s,o){var c=[Ct],f=Ki({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"}),u=Ki({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});o.bookType=="fods"?(c.push("<office:document"+f+u+`>
`),c.push(ah().replace(/office:document-meta/g,"office:meta"))):c.push("<office:document-content"+f+`>
`),a(c,s),c.push(` <office:body>
`),c.push(` <office:spreadsheet>
`);for(var d=0;d!=s.SheetNames.length;++d)c.push(n(s.Sheets[s.SheetNames[d]],s,d));return c.push(` </office:spreadsheet>
`),c.push(` </office:body>
`),o.bookType=="fods"?c.push("</office:document>"):c.push("</office:document-content>"),c.join("")}}();function Gm(e,t){if(t.bookType=="fods")return zm(e,t);var r=ql(),n="",a=[],i=[];return n="mimetype",He(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",He(r,n,zm(e,t)),a.push([n,"text/xml"]),i.push([n,"ContentFile"]),n="styles.xml",He(r,n,u3(e,t)),a.push([n,"text/xml"]),i.push([n,"StylesFile"]),n="meta.xml",He(r,n,Ct+ah()),a.push([n,"text/xml"]),i.push([n,"MetadataFile"]),n="manifest.rdf",He(r,n,U2(i)),a.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",He(r,n,M2(a)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Da(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Wc(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):at(qn(e))}function d3(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Cr(pn(e))}function h3(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var n=0;n<t.length;++n)if(e[r+n]!=t[n])continue e;return!0}return!1}function aa(e){var t=e.reduce(function(a,i){return a+i.length},0),r=new Uint8Array(t),n=0;return e.forEach(function(a){r.set(a,n),n+=a.length}),r}function Xm(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>>24}function m3(e,t){for(var r=(e[t+15]&127)<<7|e[t+14]>>1,n=e[t+14]&1,a=t+13;a>=t;--a)n=n*256+e[a];return(e[t+15]&128?-n:n)*Math.pow(10,r-6176)}function p3(e,t,r){var n=Math.floor(r==0?0:Math.LOG10E*Math.log(Math.abs(r)))+6176-20,a=r/Math.pow(10,n-6176);e[t+15]|=n>>7,e[t+14]|=(n&127)<<1;for(var i=0;a>=1;++i,a/=256)e[t+i]=a&255;e[t+15]|=r>=0?0:128}function vs(e,t){var r=t?t[0]:0,n=e[r]&127;e:if(e[r++]>=128&&(n|=(e[r]&127)<<7,e[r++]<128||(n|=(e[r]&127)<<14,e[r++]<128)||(n|=(e[r]&127)<<21,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),n}function rt(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function kt(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function qe(e){for(var t=[],r=[0];r[0]<e.length;){var n=r[0],a=vs(e,r),i=a&7;a=Math.floor(a/8);var s=0,o;if(a==0)break;switch(i){case 0:{for(var c=r[0];e[r[0]++]>=128;);o=e.slice(c,r[0])}break;case 5:s=4,o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 1:s=8,o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 2:s=vs(e,r),o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 3:case 4:default:throw new Error("PB Type ".concat(i," for Field ").concat(a," at offset ").concat(n))}var f={data:o,type:i};t[a]==null?t[a]=[f]:t[a].push(f)}return t}function Kt(e){var t=[];return e.forEach(function(r,n){r.forEach(function(a){a.data&&(t.push(rt(n*8+a.type)),a.type==2&&t.push(rt(a.data.length)),t.push(a.data))})}),aa(t)}function Hc(e,t){return(e==null?void 0:e.map(function(r){return t(r.data)}))||[]}function Ur(e){for(var t,r=[],n=[0];n[0]<e.length;){var a=vs(e,n),i=qe(e.slice(n[0],n[0]+a));n[0]+=a;var s={id:kt(i[1][0].data),messages:[]};i[2].forEach(function(o){var c=qe(o.data),f=kt(c[3][0].data);s.messages.push({meta:c,data:e.slice(n[0],n[0]+f)}),n[0]+=f}),(t=i[3])!=null&&t[0]&&(s.merge=kt(i[3][0].data)>>>0>0),r.push(s)}return r}function li(e){var t=[];return e.forEach(function(r){var n=[];n[1]=[{data:rt(r.id),type:0}],n[2]=[],r.merge!=null&&(n[3]=[{data:rt(+!!r.merge),type:0}]);var a=[];r.messages.forEach(function(s){a.push(s.data),s.meta[3]=[{type:0,data:rt(s.data.length)}],n[2].push({data:Kt(s.meta),type:2})});var i=Kt(n);t.push(rt(i.length)),t.push(i),a.forEach(function(s){return t.push(s)})}),aa(t)}function g3(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],n=vs(t,r),a=[];r[0]<t.length;){var i=t[r[0]]&3;if(i==0){var s=t[r[0]++]>>2;if(s<60)++s;else{var o=s-59;s=t[r[0]],o>1&&(s|=t[r[0]+1]<<8),o>2&&(s|=t[r[0]+2]<<16),o>3&&(s|=t[r[0]+3]<<24),s>>>=0,s++,r[0]+=o}a.push(t.slice(r[0],r[0]+s)),r[0]+=s;continue}else{var c=0,f=0;if(i==1?(f=(t[r[0]]>>2&7)+4,c=(t[r[0]++]&224)<<3,c|=t[r[0]++]):(f=(t[r[0]++]>>2)+1,i==2?(c=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(c=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),a=[aa(a)],c==0)throw new Error("Invalid offset 0");if(c>a[0].length)throw new Error("Invalid offset beyond length");if(f>=c)for(a.push(a[0].slice(-c)),f-=c;f>=a[a.length-1].length;)a.push(a[a.length-1]),f-=a[a.length-1].length;a.push(a[0].slice(-c,-c+f))}}var u=aa(a);if(u.length!=n)throw new Error("Unexpected length: ".concat(u.length," != ").concat(n));return u}function $r(e){for(var t=[],r=0;r<e.length;){var n=e[r++],a=e[r]|e[r+1]<<8|e[r+2]<<16;r+=3,t.push(g3(n,e.slice(r,r+a))),r+=a}if(r!==e.length)throw new Error("data is not a valid framed stream!");return aa(t)}function ci(e){for(var t=[],r=0;r<e.length;){var n=Math.min(e.length-r,268435455),a=new Uint8Array(4);t.push(a);var i=rt(n),s=i.length;t.push(i),n<=60?(s++,t.push(new Uint8Array([n-1<<2]))):n<=256?(s+=2,t.push(new Uint8Array([240,n-1&255]))):n<=65536?(s+=3,t.push(new Uint8Array([244,n-1&255,n-1>>8&255]))):n<=16777216?(s+=4,t.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(s+=5,t.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),t.push(e.slice(r,r+n)),s+=n,a[0]=0,a[1]=s&255,a[2]=s>>8&255,a[3]=s>>16&255,r+=n}return aa(t)}function x3(e,t,r,n){var a=Da(e),i=a.getUint32(4,!0),s=(n>1?12:8)+Xm(i&(n>1?3470:398))*4,o=-1,c=-1,f=NaN,u=new Date(2001,0,1);i&512&&(o=a.getUint32(s,!0),s+=4),s+=Xm(i&(n>1?12288:4096))*4,i&16&&(c=a.getUint32(s,!0),s+=4),i&32&&(f=a.getFloat64(s,!0),s+=8),i&64&&(u.setTime(u.getTime()+a.getFloat64(s,!0)*1e3),s+=8);var d;switch(e[2]){case 0:break;case 2:d={t:"n",v:f};break;case 3:d={t:"s",v:t[c]};break;case 5:d={t:"d",v:u};break;case 6:d={t:"b",v:f>0};break;case 7:d={t:"n",v:f/86400};break;case 8:d={t:"e",v:0};break;case 9:if(o>-1)d={t:"s",v:r[o]};else if(c>-1)d={t:"s",v:t[c]};else if(!isNaN(f))d={t:"n",v:f};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}return d}function v3(e,t,r){var n=Da(e),a=n.getUint32(8,!0),i=12,s=-1,o=-1,c=NaN,f=NaN,u=new Date(2001,0,1);a&1&&(c=m3(e,i),i+=16),a&2&&(f=n.getFloat64(i,!0),i+=8),a&4&&(u.setTime(u.getTime()+n.getFloat64(i,!0)*1e3),i+=8),a&8&&(o=n.getUint32(i,!0),i+=4),a&16&&(s=n.getUint32(i,!0),i+=4);var d;switch(e[1]){case 0:break;case 2:d={t:"n",v:c};break;case 3:d={t:"s",v:t[o]};break;case 5:d={t:"d",v:u};break;case 6:d={t:"b",v:f>0};break;case 7:d={t:"n",v:f/86400};break;case 8:d={t:"e",v:0};break;case 9:if(s>-1)d={t:"s",v:r[s]};else throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)));break;case 10:d={t:"n",v:c};break;default:throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)))}return d}function jc(e,t){var r=new Uint8Array(32),n=Da(r),a=12,i=0;switch(r[0]=5,e.t){case"n":r[1]=2,p3(r,a,e.v),i|=1,a+=16;break;case"b":r[1]=6,n.setFloat64(a,e.v?1:0,!0),i|=2,a+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,n.setUint32(a,t.indexOf(e.v),!0),i|=8,a+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(8,i,!0),r.slice(0,a)}function zc(e,t){var r=new Uint8Array(32),n=Da(r),a=12,i=0;switch(r[0]=3,e.t){case"n":r[2]=2,n.setFloat64(a,e.v,!0),i|=32,a+=8;break;case"b":r[2]=6,n.setFloat64(a,e.v?1:0,!0),i|=32,a+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,n.setUint32(a,t.indexOf(e.v),!0),i|=16,a+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(4,i,!0),r.slice(0,a)}function w3(e,t,r){switch(e[0]){case 0:case 1:case 2:case 3:return x3(e,t,r,e[0]);case 5:return v3(e,t,r);default:throw new Error("Unsupported payload version ".concat(e[0]))}}function nr(e){var t=qe(e);return vs(t[1][0].data)}function Km(e,t){var r=qe(t.data),n=kt(r[1][0].data),a=r[3],i=[];return(a||[]).forEach(function(s){var o=qe(s.data),c=kt(o[1][0].data)>>>0;switch(n){case 1:i[c]=Wc(o[3][0].data);break;case 8:{var f=e[nr(o[9][0].data)][0],u=qe(f.data),d=e[nr(u[1][0].data)][0],h=kt(d.meta[1][0].data);if(h!=2001)throw new Error("2000 unexpected reference to ".concat(h));var m=qe(d.data);i[c]=m[3].map(function(g){return Wc(g.data)}).join("")}break}}),i}function _3(e,t){var r,n,a,i,s,o,c,f,u,d,h,m,g,p,x=qe(e),v=kt(x[1][0].data)>>>0,y=kt(x[2][0].data)>>>0,w=((n=(r=x[8])==null?void 0:r[0])==null?void 0:n.data)&&kt(x[8][0].data)>0||!1,b,R;if((i=(a=x[7])==null?void 0:a[0])!=null&&i.data&&t!=0)b=(o=(s=x[7])==null?void 0:s[0])==null?void 0:o.data,R=(f=(c=x[6])==null?void 0:c[0])==null?void 0:f.data;else if((d=(u=x[4])==null?void 0:u[0])!=null&&d.data&&t!=1)b=(m=(h=x[4])==null?void 0:h[0])==null?void 0:m.data,R=(p=(g=x[3])==null?void 0:g[0])==null?void 0:p.data;else throw"NUMBERS Tile missing ".concat(t," cell storage");for(var A=w?4:1,k=Da(b),U=[],T=0;T<b.length/2;++T){var j=k.getUint16(T*2,!0);j<65535&&U.push([T,j])}if(U.length!=y)throw"Expected ".concat(y," cells, found ").concat(U.length);var G=[];for(T=0;T<U.length-1;++T)G[U[T][0]]=R.subarray(U[T][1]*A,U[T+1][1]*A);return U.length>=1&&(G[U[U.length-1][0]]=R.subarray(U[U.length-1][1]*A)),{R:v,cells:G}}function y3(e,t){var r,n=qe(t.data),a=(r=n==null?void 0:n[7])!=null&&r[0]?kt(n[7][0].data)>>>0>0?1:0:-1,i=Hc(n[5],function(s){return _3(s,a)});return{nrows:kt(n[4][0].data)>>>0,data:i.reduce(function(s,o){return s[o.R]||(s[o.R]=[]),o.cells.forEach(function(c,f){if(s[o.R][f])throw new Error("Duplicate cell r=".concat(o.R," c=").concat(f));s[o.R][f]=c}),s},[])}}function k3(e,t,r){var n,a=qe(t.data),i={s:{r:0,c:0},e:{r:0,c:0}};if(i.e.r=(kt(a[6][0].data)>>>0)-1,i.e.r<0)throw new Error("Invalid row varint ".concat(a[6][0].data));if(i.e.c=(kt(a[7][0].data)>>>0)-1,i.e.c<0)throw new Error("Invalid col varint ".concat(a[7][0].data));r["!ref"]=We(i);var s=qe(a[4][0].data),o=Km(e,e[nr(s[4][0].data)][0]),c=(n=s[17])!=null&&n[0]?Km(e,e[nr(s[17][0].data)][0]):[],f=qe(s[3][0].data),u=0;f[1].forEach(function(d){var h=qe(d.data),m=e[nr(h[2][0].data)][0],g=kt(m.meta[1][0].data);if(g!=6002)throw new Error("6001 unexpected reference to ".concat(g));var p=y3(e,m);p.data.forEach(function(x,v){x.forEach(function(y,w){var b=Ne({r:u+v,c:w}),R=w3(y,o,c);R&&(r[b]=R)})}),u+=p.nrows})}function b3(e,t){var r=qe(t.data),n={"!ref":"A1"},a=e[nr(r[2][0].data)],i=kt(a[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));return k3(e,a[0],n),n}function C3(e,t){var r,n=qe(t.data),a={name:(r=n[1])!=null&&r[0]?Wc(n[1][0].data):"",sheets:[]},i=Hc(n[2],nr);return i.forEach(function(s){e[s].forEach(function(o){var c=kt(o.meta[1][0].data);c==6e3&&a.sheets.push(b3(e,o))})}),a}function E3(e,t){var r=Qc(),n=qe(t.data),a=Hc(n[1],nr);if(a.forEach(function(i){e[i].forEach(function(s){var o=kt(s.meta[1][0].data);if(o==2){var c=C3(e,s);c.sheets.forEach(function(f,u){ef(r,f,u==0?c.name:c.name+"_"+u,!0)})}})}),r.SheetNames.length==0)throw new Error("Empty NUMBERS file");return r}function Gc(e){var t,r,n,a,i={},s=[];if(e.FullPaths.forEach(function(c){if(c.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),e.FileIndex.forEach(function(c){if(c.name.match(/\.iwa$/)){var f;try{f=$r(c.content)}catch(d){return console.log("?? "+c.content.length+" "+(d.message||d))}var u;try{u=Ur(f)}catch(d){return console.log("## "+(d.message||d))}u.forEach(function(d){i[d.id]=d.messages,s.push(d.id)})}}),!s.length)throw new Error("File has no messages");var o=((a=(n=(r=(t=i==null?void 0:i[1])==null?void 0:t[0])==null?void 0:r.meta)==null?void 0:n[1])==null?void 0:a[0].data)&&kt(i[1][0].meta[1][0].data)==1&&i[1][0];if(o||s.forEach(function(c){i[c].forEach(function(f){var u=kt(f.meta[1][0].data)>>>0;if(u==1)if(!o)o=f;else throw new Error("Document has multiple roots")})}),!o)throw new Error("Cannot find Document root");return E3(i,o)}function S3(e,t,r){var n,a,i,s;if(!((n=e[6])!=null&&n[0])||!((a=e[7])!=null&&a[0]))throw"Mutation only works on post-BNC storages!";var o=((s=(i=e[8])==null?void 0:i[0])==null?void 0:s.data)&&kt(e[8][0].data)>0||!1;if(o)throw"Math only works with normal offsets";for(var c=0,f=Da(e[7][0].data),u=0,d=[],h=Da(e[4][0].data),m=0,g=[],p=0;p<t.length;++p){if(t[p]==null){f.setUint16(p*2,65535,!0),h.setUint16(p*2,65535);continue}f.setUint16(p*2,u,!0),h.setUint16(p*2,m,!0);var x,v;switch(typeof t[p]){case"string":x=jc({t:"s",v:t[p]},r),v=zc({t:"s",v:t[p]},r);break;case"number":x=jc({t:"n",v:t[p]},r),v=zc({t:"n",v:t[p]},r);break;case"boolean":x=jc({t:"b",v:t[p]},r),v=zc({t:"b",v:t[p]},r);break;default:throw new Error("Unsupported value "+t[p])}d.push(x),u+=x.length,g.push(v),m+=v.length,++c}for(e[2][0].data=rt(c);p<e[7][0].data.length/2;++p)f.setUint16(p*2,65535,!0),h.setUint16(p*2,65535,!0);return e[6][0].data=aa(d),e[3][0].data=aa(g),c}function T3(e,t){if(!t||!t.numbers)throw new Error("Must pass a `numbers` option -- check the README");var r=e.Sheets[e.SheetNames[0]];e.SheetNames.length>1&&console.error("The Numbers writer currently writes only the first table");var n=gr(r["!ref"]);n.s.r=n.s.c=0;var a=!1;n.e.c>9&&(a=!0,n.e.c=9),n.e.r>49&&(a=!0,n.e.r=49),a&&console.error("The Numbers writer is currently limited to ".concat(We(n)));var i=Io(r,{range:n,header:1}),s=["~Sh33tJ5~"];i.forEach(function(E){return E.forEach(function(C){typeof C=="string"&&s.push(C)})});var o={},c=[],f=Ae.read(t.numbers,{type:"base64"});f.FileIndex.map(function(E,C){return[E,f.FullPaths[C]]}).forEach(function(E){var C=E[0],F=E[1];if(C.type==2&&C.name.match(/\.iwa/)){var H=C.content,ee=$r(H),Q=Ur(ee);Q.forEach(function(re){c.push(re.id),o[re.id]={deps:[],location:F,type:kt(re.messages[0].meta[1][0].data)}})}}),c.sort(function(E,C){return E-C});var u=c.filter(function(E){return E>1}).map(function(E){return[E,rt(E)]});f.FileIndex.map(function(E,C){return[E,f.FullPaths[C]]}).forEach(function(E){var C=E[0];if(E[1],!!C.name.match(/\.iwa/)){var F=Ur($r(C.content));F.forEach(function(H){H.messages.forEach(function(ee){u.forEach(function(Q){H.messages.some(function(re){return kt(re.meta[1][0].data)!=11006&&h3(re.data,Q[1])})&&o[Q[0]].deps.push(H.id)})})})}});for(var d=Ae.find(f,o[1].location),h=Ur($r(d.content)),m,g=0;g<h.length;++g){var p=h[g];p.id==1&&(m=p)}var x=nr(qe(m.messages[0].data)[1][0].data);for(d=Ae.find(f,o[x].location),h=Ur($r(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);for(x=nr(qe(m.messages[0].data)[2][0].data),d=Ae.find(f,o[x].location),h=Ur($r(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);for(x=nr(qe(m.messages[0].data)[2][0].data),d=Ae.find(f,o[x].location),h=Ur($r(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);var v=qe(m.messages[0].data);{v[6][0].data=rt(n.e.r+1),v[7][0].data=rt(n.e.c+1);var y=nr(v[46][0].data),w=Ae.find(f,o[y].location),b=Ur($r(w.content));{for(var R=0;R<b.length&&b[R].id!=y;++R);if(b[R].id!=y)throw"Bad ColumnRowUIDMapArchive";var A=qe(b[R].messages[0].data);A[1]=[],A[2]=[],A[3]=[];for(var k=0;k<=n.e.c;++k){var U=[];U[1]=U[2]=[{type:0,data:rt(k+420690)}],A[1].push({type:2,data:Kt(U)}),A[2].push({type:0,data:rt(k)}),A[3].push({type:0,data:rt(k)})}A[4]=[],A[5]=[],A[6]=[];for(var T=0;T<=n.e.r;++T)U=[],U[1]=U[2]=[{type:0,data:rt(T+726270)}],A[4].push({type:2,data:Kt(U)}),A[5].push({type:0,data:rt(T)}),A[6].push({type:0,data:rt(T)});b[R].messages[0].data=Kt(A)}w.content=ci(li(b)),w.size=w.content.length,delete v[46];var j=qe(v[4][0].data);{j[7][0].data=rt(n.e.r+1);var G=qe(j[1][0].data),B=nr(G[2][0].data);w=Ae.find(f,o[B].location),b=Ur($r(w.content));{if(b[0].id!=B)throw"Bad HeaderStorageBucket";var z=qe(b[0].messages[0].data);for(T=0;T<i.length;++T){var te=qe(z[2][0].data);te[1][0].data=rt(T),te[4][0].data=rt(i[T].length),z[2][T]={type:z[2][0].type,data:Kt(te)}}b[0].messages[0].data=Kt(z)}w.content=ci(li(b)),w.size=w.content.length;var W=nr(j[2][0].data);w=Ae.find(f,o[W].location),b=Ur($r(w.content));{if(b[0].id!=W)throw"Bad HeaderStorageBucket";for(z=qe(b[0].messages[0].data),k=0;k<=n.e.c;++k)te=qe(z[2][0].data),te[1][0].data=rt(k),te[4][0].data=rt(n.e.r+1),z[2][k]={type:z[2][0].type,data:Kt(te)};b[0].messages[0].data=Kt(z)}w.content=ci(li(b)),w.size=w.content.length;var Y=nr(j[4][0].data);(function(){for(var E=Ae.find(f,o[Y].location),C=Ur($r(E.content)),F,H=0;H<C.length;++H){var ee=C[H];ee.id==Y&&(F=ee)}var Q=qe(F.messages[0].data);{Q[3]=[];var re=[];s.forEach(function(L,de){re[1]=[{type:0,data:rt(de)}],re[2]=[{type:0,data:rt(1)}],re[3]=[{type:2,data:d3(L)}],Q[3].push({type:2,data:Kt(re)})})}F.messages[0].data=Kt(Q);var ie=li(C),Se=ci(ie);E.content=Se,E.size=E.content.length})();var ae=qe(j[3][0].data);{var he=ae[1][0];delete ae[2];var K=qe(he.data);{var ce=nr(K[2][0].data);(function(){for(var E=Ae.find(f,o[ce].location),C=Ur($r(E.content)),F,H=0;H<C.length;++H){var ee=C[H];ee.id==ce&&(F=ee)}var Q=qe(F.messages[0].data);{delete Q[6],delete ae[7];var re=new Uint8Array(Q[5][0].data);Q[5]=[];for(var ie=0,Se=0;Se<=n.e.r;++Se){var L=qe(re);ie+=S3(L,i[Se],s),L[1][0].data=rt(Se),Q[5].push({data:Kt(L),type:2})}Q[1]=[{type:0,data:rt(n.e.c+1)}],Q[2]=[{type:0,data:rt(n.e.r+1)}],Q[3]=[{type:0,data:rt(ie)}],Q[4]=[{type:0,data:rt(n.e.r+1)}]}F.messages[0].data=Kt(Q);var de=li(C),_e=ci(de);E.content=_e,E.size=E.content.length})()}he.data=Kt(K)}j[3][0].data=Kt(ae)}v[4][0].data=Kt(j)}m.messages[0].data=Kt(v);var N=li(h),_=ci(N);return d.content=_,d.size=d.content.length,f}function Ym(e){return function(r){for(var n=0;n!=e.length;++n){var a=e[n];r[a[0]]===void 0&&(r[a[0]]=a[1]),a[2]==="n"&&(r[a[0]]=Number(r[a[0]]))}}}function Xc(e){Ym([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]])(e)}function Kc(e){Ym([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]])(e)}function F3(e){return ze.WS.indexOf(e)>-1?"sheet":e==ze.CS?"chart":e==ze.DS?"dialog":e==ze.MS?"macro":e&&e.length?e:"sheet"}function A3(e,t){if(!e)return 0;try{e=t.map(function(n){return n.id||(n.id=n.strRelID),[n.name,e["!id"][n.id].Target,F3(e["!id"][n.id].Type)]})}catch{return null}return!e||e.length===0?null:e}function D3(e,t,r,n,a,i,s,o,c,f,u,d){try{i[n]=ts(Sr(e,r,!0),t);var h=Ft(e,t),m;switch(o){case"sheet":m=Z4(h,t,a,c,i[n],f,u,d);break;case"chart":if(m=Q4(h,t,a,c,i[n],f,u,d),!m||!m["!drawel"])break;var g=Gi(m["!drawel"].Target,t),p=es(g),x=VE(Sr(e,g,!0),ts(Sr(e,p,!0),g)),v=Gi(x,g),y=es(v);m=S4(Sr(e,v,!0),v,c,ts(Sr(e,y,!0),v),f,m);break;case"macro":m=eA(h,t,a,c,i[n],f,u,d);break;case"dialog":m=tA(h,t,a,c,i[n],f,u,d);break;default:throw new Error("Unrecognized sheet type "+o)}s[n]=m;var w=[];i&&i[n]&&_t(i[n]).forEach(function(b){var R="";if(i[n][b].Type==ze.CMNT){R=Gi(i[n][b].Target,t);var A=iA(Ft(e,R,!0),R,c);if(!A||!A.length)return;im(m,A,!1)}i[n][b].Type==ze.TCMNT&&(R=Gi(i[n][b].Target,t),w=w.concat($E(Ft(e,R,!0),c)))}),w&&w.length&&im(m,w,!0,c.people||[])}catch(b){if(c.WTF)throw b}}function Wr(e){return e.charAt(0)=="/"?e.slice(1):e}function R3(e,t){if(Ja(),t=t||{},Xc(t),Pr(e,"META-INF/manifest.xml")||Pr(e,"objectdata.xml"))return Hm(e,t);if(Pr(e,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof Gc<"u"){if(e.FileIndex)return Gc(e);var r=Ae.utils.cfb_new();return pd(e).forEach(function(te){He(r,te,md(e,te))}),Gc(r)}throw new Error("Unsupported NUMBERS file")}if(!Pr(e,"[Content_Types].xml"))throw Pr(e,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):Pr(e,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var n=pd(e),a=I2(Sr(e,"[Content_Types].xml")),i=!1,s,o;if(a.workbooks.length===0&&(o="xl/workbook.xml",Ft(e,o,!0)&&a.workbooks.push(o)),a.workbooks.length===0){if(o="xl/workbook.bin",!Ft(e,o,!0))throw new Error("Could not find workbook");a.workbooks.push(o),i=!0}a.workbooks[0].slice(-3)=="bin"&&(i=!0);var c={},f={};if(!t.bookSheets&&!t.bookProps){if(ds=[],a.sst)try{ds=aA(Ft(e,Wr(a.sst)),a.sst,t)}catch(te){if(t.WTF)throw te}t.cellStyles&&a.themes.length&&(c=nA(Sr(e,a.themes[0].replace(/^\//,""),!0)||"",a.themes[0],t)),a.style&&(f=rA(Ft(e,Wr(a.style)),a.style,c,t))}a.links.map(function(te){try{var W=ts(Sr(e,es(Wr(te))),te);return oA(Ft(e,Wr(te)),W,te,t)}catch{}});var u=J4(Ft(e,Wr(a.workbooks[0])),a.workbooks[0],t),d={},h="";a.coreprops.length&&(h=Ft(e,Wr(a.coreprops[0]),!0),h&&(d=ih(h)),a.extprops.length!==0&&(h=Ft(e,Wr(a.extprops[0]),!0),h&&W2(h,d,t)));var m={};(!t.bookSheets||t.bookProps)&&a.custprops.length!==0&&(h=Sr(e,Wr(a.custprops[0]),!0),h&&(m=j2(h,t)));var g={};if((t.bookSheets||t.bookProps)&&(u.Sheets?s=u.Sheets.map(function(W){return W.name}):d.Worksheets&&d.SheetNames.length>0&&(s=d.SheetNames),t.bookProps&&(g.Props=d,g.Custprops=m),t.bookSheets&&typeof s<"u"&&(g.SheetNames=s),t.bookSheets?g.SheetNames:t.bookProps))return g;s={};var p={};t.bookDeps&&a.calcchain&&(p=sA(Ft(e,Wr(a.calcchain)),a.calcchain));var x=0,v={},y,w;{var b=u.Sheets;d.Worksheets=b.length,d.SheetNames=[];for(var R=0;R!=b.length;++R)d.SheetNames[R]=b[R].name}var A=i?"bin":"xml",k=a.workbooks[0].lastIndexOf("/"),U=(a.workbooks[0].slice(0,k+1)+"_rels/"+a.workbooks[0].slice(k+1)+".rels").replace(/^\//,"");Pr(e,U)||(U="xl/_rels/workbook."+A+".rels");var T=ts(Sr(e,U,!0),U.replace(/_rels.*/,"s5s"));(a.metadata||[]).length>=1&&(t.xlmeta=lA(Ft(e,Wr(a.metadata[0])),a.metadata[0],t)),(a.people||[]).length>=1&&(t.people=HE(Ft(e,Wr(a.people[0])),t)),T&&(T=A3(T,u.Sheets));var j=Ft(e,"xl/worksheets/sheet.xml",!0)?1:0;e:for(x=0;x!=d.Worksheets;++x){var G="sheet";if(T&&T[x]?(y="xl/"+T[x][1].replace(/[\/]?xl\//,""),Pr(e,y)||(y=T[x][1]),Pr(e,y)||(y=U.replace(/_rels\/.*$/,"")+T[x][1]),G=T[x][2]):(y="xl/worksheets/sheet"+(x+1-j)+"."+A,y=y.replace(/sheet0\./,"sheet.")),w=y.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),t&&t.sheets!=null)switch(typeof t.sheets){case"number":if(x!=t.sheets)continue e;break;case"string":if(d.SheetNames[x].toLowerCase()!=t.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(t.sheets)){for(var B=!1,z=0;z!=t.sheets.length;++z)typeof t.sheets[z]=="number"&&t.sheets[z]==x&&(B=1),typeof t.sheets[z]=="string"&&t.sheets[z].toLowerCase()==d.SheetNames[x].toLowerCase()&&(B=1);if(!B)continue e}}D3(e,y,w,d.SheetNames[x],x,v,s,G,t,u,c,f)}return g={Directory:a,Workbook:u,Props:d,Custprops:m,Deps:p,Sheets:s,SheetNames:d.SheetNames,Strings:ds,Styles:f,Themes:c,SSF:ct(Oe)},t&&t.bookFiles&&(e.files?(g.keys=n,g.files=e.files):(g.keys=[],g.files={},e.FullPaths.forEach(function(te,W){te=te.replace(/^Root Entry[\/]/,""),g.keys.push(te),g.files[te]=e.FileIndex[W]}))),t&&t.bookVBA&&(a.vba.length>0?g.vbaraw=Ft(e,Wr(a.vba[0]),!0):a.defaults&&a.defaults.bin===JE&&(g.vbaraw=Ft(e,"xl/vbaProject.bin",!0))),g}function O3(e,t){var r=t||{},n="Workbook",a=Ae.find(e,n);try{if(n="/!DataSpaces/Version",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(lC(a.content),n="/!DataSpaces/DataSpaceMap",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var i=fC(a.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var s=uC(a.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);hC(a.content)}catch{}if(n="/EncryptionInfo",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var o=mC(a.content);if(n="/EncryptedPackage",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(o[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(o[1],a.content,r.password||"",r);if(o[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(o[1],a.content,r.password||"",r);throw new Error("File is password-protected")}function B3(e,t){return t.bookType=="ods"?Gm(e,t):t.bookType=="numbers"?T3(e,t):t.bookType=="xlsb"?N3(e,t):I3(e,t)}function N3(e,t){ii=1024,e&&!e.SSF&&(e.SSF=ct(Oe)),e&&e.SSF&&(Ja(),ji(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,hs?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r=t.bookType=="xlsb"?"bin":"xml",n=om.indexOf(t.bookType)>-1,a=xc();Kc(t=t||{});var i=ql(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,sh(e.Props,t)),a.coreprops.push(s),tt(t.rels,2,s,ze.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],f=0;f<e.SheetNames.length;++f)(e.Workbook.Sheets[f]||{}).Hidden!=2&&c.push(e.SheetNames[f]);e.Props.SheetNames=c}for(e.Props.Worksheets=e.Props.SheetNames.length,He(i,s,ch(e.Props)),a.extprops.push(s),tt(t.rels,3,s,ze.EXT_PROPS),e.Custprops!==e.Props&&_t(e.Custprops||{}).length>0&&(s="docProps/custom.xml",He(i,s,fh(e.Custprops)),a.custprops.push(s),tt(t.rels,4,s,ze.CUST_PROPS)),o=1;o<=e.SheetNames.length;++o){var u={"!id":{}},d=e.Sheets[e.SheetNames[o-1]],h=(d||{})["!type"]||"sheet";switch(h){case"chart":default:s="xl/worksheets/sheet"+o+"."+r,He(i,s,fA(o-1,s,t,e,u)),a.sheets.push(s),tt(t.wbrels,-1,"worksheets/sheet"+o+"."+r,ze.WS[0])}if(d){var m=d["!comments"],g=!1,p="";m&&m.length>0&&(p="xl/comments"+o+"."+r,He(i,p,hA(m,p)),a.comments.push(p),tt(u,-1,"../comments"+o+"."+r,ze.CMNT),g=!0),d["!legacy"]&&g&&He(i,"xl/drawings/vmlDrawing"+o+".vml",am(o,d["!comments"])),delete d["!comments"],delete d["!legacy"]}u["!id"].rId1&&He(i,es(s),ri(u))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,He(i,s,dA(t.Strings,s,t)),a.strs.push(s),tt(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,cA(e,s)),a.workbooks.push(s),tt(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Dc(e.Themes,t)),a.themes.push(s),tt(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,uA(e,s,t)),a.styles.push(s),tt(t.wbrels,-1,"styles."+r,ze.STY),e.vbaraw&&n&&(s="xl/vbaProject.bin",He(i,s,e.vbaraw),a.vba.push(s),tt(t.wbrels,-1,"vbaProject.bin",ze.VBA)),s="xl/metadata."+r,He(i,s,mA(s)),a.metadata.push(s),tt(t.wbrels,-1,"metadata."+r,ze.XLMETA),He(i,"[Content_Types].xml",rh(a,t)),He(i,"_rels/.rels",ri(t.rels)),He(i,"xl/_rels/workbook."+r+".rels",ri(t.wbrels)),delete t.revssf,delete t.ssf,i}function I3(e,t){ii=1024,e&&!e.SSF&&(e.SSF=ct(Oe)),e&&e.SSF&&(Ja(),ji(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,hs?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",n=om.indexOf(t.bookType)>-1,a=xc();Kc(t=t||{});var i=ql(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,sh(e.Props,t)),a.coreprops.push(s),tt(t.rels,2,s,ze.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],f=0;f<e.SheetNames.length;++f)(e.Workbook.Sheets[f]||{}).Hidden!=2&&c.push(e.SheetNames[f]);e.Props.SheetNames=c}e.Props.Worksheets=e.Props.SheetNames.length,He(i,s,ch(e.Props)),a.extprops.push(s),tt(t.rels,3,s,ze.EXT_PROPS),e.Custprops!==e.Props&&_t(e.Custprops||{}).length>0&&(s="docProps/custom.xml",He(i,s,fh(e.Custprops)),a.custprops.push(s),tt(t.rels,4,s,ze.CUST_PROPS));var u=["SheetJ5"];for(t.tcid=0,o=1;o<=e.SheetNames.length;++o){var d={"!id":{}},h=e.Sheets[e.SheetNames[o-1]],m=(h||{})["!type"]||"sheet";switch(m){case"chart":default:s="xl/worksheets/sheet"+o+"."+r,He(i,s,bm(o-1,t,e,d)),a.sheets.push(s),tt(t.wbrels,-1,"worksheets/sheet"+o+"."+r,ze.WS[0])}if(h){var g=h["!comments"],p=!1,x="";if(g&&g.length>0){var v=!1;g.forEach(function(y){y[1].forEach(function(w){w.T==!0&&(v=!0)})}),v&&(x="xl/threadedComments/threadedComment"+o+"."+r,He(i,x,WE(g,u,t)),a.threadedcomments.push(x),tt(d,-1,"../threadedComments/threadedComment"+o+"."+r,ze.TCMNT)),x="xl/comments"+o+"."+r,He(i,x,sm(g)),a.comments.push(x),tt(d,-1,"../comments"+o+"."+r,ze.CMNT),p=!0}h["!legacy"]&&p&&He(i,"xl/drawings/vmlDrawing"+o+".vml",am(o,h["!comments"])),delete h["!comments"],delete h["!legacy"]}d["!id"].rId1&&He(i,es(s),ri(d))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,He(i,s,zh(t.Strings,t)),a.strs.push(s),tt(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,Dm(e)),a.workbooks.push(s),tt(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Dc(e.Themes,t)),a.themes.push(s),tt(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,Qh(e,t)),a.styles.push(s),tt(t.wbrels,-1,"styles."+r,ze.STY),e.vbaraw&&n&&(s="xl/vbaProject.bin",He(i,s,e.vbaraw),a.vba.push(s),tt(t.wbrels,-1,"vbaProject.bin",ze.VBA)),s="xl/metadata."+r,He(i,s,nm()),a.metadata.push(s),tt(t.wbrels,-1,"metadata."+r,ze.XLMETA),u.length>1&&(s="xl/persons/person.xml",He(i,s,jE(u)),a.people.push(s),tt(t.wbrels,-1,"persons/person.xml",ze.PEOPLE)),He(i,"[Content_Types].xml",rh(a,t)),He(i,"_rels/.rels",ri(t.rels)),He(i,"xl/_rels/workbook."+r+".rels",ri(t.wbrels)),delete t.revssf,delete t.ssf,i}function Yc(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=br(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function P3(e,t){return Ae.find(e,"EncryptedPackage")?O3(e,t):Nm(e,t)}function L3(e,t){var r,n=e,a=t||{};return a.type||(a.type=je&&Buffer.isBuffer(e)?"buffer":"base64"),r=gd(n,a),R3(r,a)}function qm(e,t){var r=0;e:for(;r<e.length;)switch(e.charCodeAt(r)){case 10:case 13:case 32:++r;break;case 60:return Uc(e.slice(r),t);default:break e}return ni.to_workbook(e,t)}function M3(e,t){var r="",n=Yc(e,t);switch(t.type){case"base64":r=br(e);break;case"binary":r=e;break;case"buffer":r=e.toString("binary");break;case"array":r=pa(e);break;default:throw new Error("Unrecognized type "+t.type)}return n[0]==239&&n[1]==187&&n[2]==191&&(r=at(r)),t.type="binary",qm(r,t)}function V3(e,t){var r=e;return t.type=="base64"&&(r=br(r)),r=Xn.utils.decode(1200,r.slice(2),"str"),t.type="binary",qm(r,t)}function U3(e){return e.match(/[^\x00-\x7F]/)?pn(e):e}function qc(e,t,r,n){return n?(r.type="string",ni.to_workbook(e,r)):ni.to_workbook(t,r)}function Jc(e,t){jl();var r=t||{};if(typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer)return Jc(new Uint8Array(e),(r=ct(r),r.type="array",r));typeof Uint8Array<"u"&&e instanceof Uint8Array&&!r.type&&(r.type=typeof Deno<"u"?"buffer":"array");var n=e,a=[0,0,0,0],i=!1;if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),oi={},r.dateNF&&(oi.dateNF=r.dateNF),r.type||(r.type=je&&Buffer.isBuffer(e)?"buffer":"base64"),r.type=="file"&&(r.type=je?"buffer":"binary",n=Iy(e),typeof Uint8Array<"u"&&!je&&(r.type="array")),r.type=="string"&&(i=!0,r.type="binary",r.codepage=65001,n=U3(e)),r.type=="array"&&typeof Uint8Array<"u"&&e instanceof Uint8Array&&typeof ArrayBuffer<"u"){var s=new ArrayBuffer(3),o=new Uint8Array(s);if(o.foo="bar",!o.foo)return r=ct(r),r.type="array",Jc(zl(n),r)}switch((a=Yc(n,r))[0]){case 208:if(a[1]===207&&a[2]===17&&a[3]===224&&a[4]===161&&a[5]===177&&a[6]===26&&a[7]===225)return P3(Ae.read(n,r),r);break;case 9:if(a[1]<=8)return Nm(n,r);break;case 60:return Uc(n,r);case 73:if(a[1]===73&&a[2]===42&&a[3]===0)throw new Error("TIFF Image File is not a spreadsheet");if(a[1]===68)return zb(n,r);break;case 84:if(a[1]===65&&a[2]===66&&a[3]===76)return Hh.to_workbook(n,r);break;case 80:return a[1]===75&&a[2]<9&&a[3]<9?L3(n,r):qc(e,n,r,i);case 239:return a[3]===60?Uc(n,r):qc(e,n,r,i);case 255:if(a[1]===254)return V3(n,r);if(a[1]===0&&a[2]===2&&a[3]===0)return Fa.to_workbook(n,r);break;case 0:if(a[1]===0&&(a[2]>=2&&a[3]===0||a[2]===0&&(a[3]===8||a[3]===9)))return Fa.to_workbook(n,r);break;case 3:case 131:case 139:case 140:return Cc.to_workbook(n,r);case 123:if(a[1]===92&&a[2]===114&&a[3]===116)return qh.to_workbook(n,r);break;case 10:case 13:case 32:return M3(n,r);case 137:if(a[1]===80&&a[2]===78&&a[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return jb.indexOf(a[0])>-1&&a[2]<=12&&a[3]<=31?Cc.to_workbook(n,r):qc(e,n,r,i)}function Jm(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return zi(t.file,Ae.write(e,{type:je?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return Ae.write(e,t)}function $3(e,t){var r=ct(t||{}),n=B3(e,r);return W3(n,r)}function W3(e,t){var r={},n=je?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var a=e.FullPaths?Ae.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof a=="string"){if(t.type=="binary"||t.type=="base64")return a;a=new Uint8Array(io(a))}return t.password&&typeof encrypt_agile<"u"?Jm(encrypt_agile(a,t.password),t):t.type==="file"?zi(t.file,a):t.type=="string"?at(a):a}function H3(e,t){var r=t||{},n=UA(e,r);return Jm(n,r)}function vn(e,t,r){r||(r="");var n=r+e;switch(t.type){case"base64":return $i(pn(n));case"binary":return pn(n);case"string":return e;case"file":return zi(t.file,n,"utf8");case"buffer":return je?Rn(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):vn(n,{type:"binary"}).split("").map(function(a){return a.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function j3(e,t){switch(t.type){case"base64":return $i(e);case"binary":return e;case"string":return e;case"file":return zi(t.file,e,"binary");case"buffer":return je?Rn(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function No(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",n=0;n<e.length;++n)r+=String.fromCharCode(e[n]);return t.type=="base64"?$i(r):t.type=="string"?at(r):r;case"file":return zi(t.file,e);case"buffer":return e;default:throw new Error("Unrecognized type "+t.type)}}function Zm(e,t){jl(),P4(e);var r=ct(t||{});if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),r.type=="array"){r.type="binary";var n=Zm(e,r);return r.type="array",io(n)}var a=0;if(r.sheet&&(typeof r.sheet=="number"?a=r.sheet:a=e.SheetNames.indexOf(r.sheet),!e.SheetNames[a]))throw new Error("Sheet not found: "+r.sheet+" : "+typeof r.sheet);switch(r.bookType||"xlsb"){case"xml":case"xlml":return vn(BA(e,r),r);case"slk":case"sylk":return vn(Wh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"htm":case"html":return vn(Lm(e.Sheets[e.SheetNames[a]],r),r);case"txt":return j3(ep(e.Sheets[e.SheetNames[a]],r),r);case"csv":return vn(Zc(e.Sheets[e.SheetNames[a]],r),r,"\uFEFF");case"dif":return vn(Hh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"dbf":return No(Cc.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"prn":return vn(ni.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"rtf":return vn(qh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"eth":return vn(jh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"fods":return vn(Gm(e,r),r);case"wk1":return No(Fa.sheet_to_wk1(e.Sheets[e.SheetNames[a]],r),r);case"wk3":return No(Fa.book_to_wk3(e,r),r);case"biff2":r.biff||(r.biff=2);case"biff3":r.biff||(r.biff=3);case"biff4":return r.biff||(r.biff=4),No(Im(e,r),r);case"biff5":r.biff||(r.biff=5);case"biff8":case"xla":case"xls":return r.biff||(r.biff=8),H3(e,r);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"numbers":case"ods":return $3(e,r);default:throw new Error("Unrecognized bookType |"+r.bookType+"|")}}function z3(e,t,r,n,a,i,s,o){var c=Et(r),f=o.defval,u=o.raw||!Object.prototype.hasOwnProperty.call(o,"raw"),d=!0,h=a===1?[]:{};if(a!==1)if(Object.defineProperty)try{Object.defineProperty(h,"__rowNum__",{value:r,enumerable:!1})}catch{h.__rowNum__=r}else h.__rowNum__=r;if(!s||e[r])for(var m=t.s.c;m<=t.e.c;++m){var g=s?e[r][m]:e[n[m]+c];if(g===void 0||g.t===void 0){if(f===void 0)continue;i[m]!=null&&(h[i[m]]=f);continue}var p=g.v;switch(g.t){case"z":if(p==null)break;continue;case"e":p=p==0?null:void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+g.t)}if(i[m]!=null){if(p==null)if(g.t=="e"&&p===null)h[i[m]]=null;else if(f!==void 0)h[i[m]]=f;else if(u&&p===null)h[i[m]]=null;else continue;else h[i[m]]=u&&(g.t!=="n"||g.t==="n"&&o.rawNumbers!==!1)?p:In(g,p,o);p!=null&&(d=!1)}}return{row:h,isempty:d}}function Io(e,t){if(e==null||e["!ref"]==null)return[];var r={t:"n",v:0},n=0,a=1,i=[],s=0,o="",c={s:{r:0,c:0},e:{r:0,c:0}},f=t||{},u=f.range!=null?f.range:e["!ref"];switch(f.header===1?n=1:f.header==="A"?n=2:Array.isArray(f.header)?n=3:f.header==null&&(n=0),typeof u){case"string":c=Ye(u);break;case"number":c=Ye(e["!ref"]),c.s.r=u;break;default:c=u}n>0&&(a=0);var d=Et(c.s.r),h=[],m=[],g=0,p=0,x=Array.isArray(e),v=c.s.r,y=0,w={};x&&!e[v]&&(e[v]=[]);var b=f.skipHidden&&e["!cols"]||[],R=f.skipHidden&&e["!rows"]||[];for(y=c.s.c;y<=c.e.c;++y)if(!(b[y]||{}).hidden)switch(h[y]=mt(y),r=x?e[v][y]:e[h[y]+d],n){case 1:i[y]=y-c.s.c;break;case 2:i[y]=h[y];break;case 3:i[y]=f.header[y-c.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),o=s=In(r,null,f),p=w[s]||0,!p)w[s]=1;else{do o=s+"_"+p++;while(w[o]);w[s]=p,w[o]=1}i[y]=o}for(v=c.s.r+a;v<=c.e.r;++v)if(!(R[v]||{}).hidden){var A=z3(e,c,v,h,n,i,x,f);(A.isempty===!1||(n===1?f.blankrows!==!1:f.blankrows))&&(m[g++]=A.row)}return m.length=g,m}var Qm=/"/g;function G3(e,t,r,n,a,i,s,o){for(var c=!0,f=[],u="",d=Et(r),h=t.s.c;h<=t.e.c;++h)if(n[h]){var m=o.dense?(e[r]||[])[h]:e[n[h]+d];if(m==null)u="";else if(m.v!=null){c=!1,u=""+(o.rawNumbers&&m.t=="n"?m.v:In(m,null,o));for(var g=0,p=0;g!==u.length;++g)if((p=u.charCodeAt(g))===a||p===i||p===34||o.forceQuotes){u='"'+u.replace(Qm,'""')+'"';break}u=="ID"&&(u='"ID"')}else m.f!=null&&!m.F?(c=!1,u="="+m.f,u.indexOf(",")>=0&&(u='"'+u.replace(Qm,'""')+'"')):u="";f.push(u)}return o.blankrows===!1&&c?null:f.join(s)}function Zc(e,t){var r=[],n=t??{};if(e==null||e["!ref"]==null)return"";var a=Ye(e["!ref"]),i=n.FS!==void 0?n.FS:",",s=i.charCodeAt(0),o=n.RS!==void 0?n.RS:`
`,c=o.charCodeAt(0),f=new RegExp((i=="|"?"\\|":i)+"+$"),u="",d=[];n.dense=Array.isArray(e);for(var h=n.skipHidden&&e["!cols"]||[],m=n.skipHidden&&e["!rows"]||[],g=a.s.c;g<=a.e.c;++g)(h[g]||{}).hidden||(d[g]=mt(g));for(var p=0,x=a.s.r;x<=a.e.r;++x)(m[x]||{}).hidden||(u=G3(e,a,x,d,s,c,i,n),u!=null&&(n.strip&&(u=u.replace(f,"")),(u||n.blankrows!==!1)&&r.push((p++?o:"")+u)));return delete n.dense,r.join("")}function ep(e,t){t||(t={}),t.FS=" ",t.RS=`
`;var r=Zc(e,t);return r}function X3(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var a=Ye(e["!ref"]),i="",s=[],o,c=[],f=Array.isArray(e);for(o=a.s.c;o<=a.e.c;++o)s[o]=mt(o);for(var u=a.s.r;u<=a.e.r;++u)for(i=Et(u),o=a.s.c;o<=a.e.c;++o)if(t=s[o]+i,r=f?(e[u]||[])[o]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}c[c.length]=t+"="+n}return c}function tp(e,t,r){var n=r||{},a=+!n.skipHeader,i=e||{},s=0,o=0;if(i&&n.origin!=null)if(typeof n.origin=="number")s=n.origin;else{var c=typeof n.origin=="string"?pt(n.origin):n.origin;s=c.r,o=c.c}var f,u={s:{c:0,r:0},e:{c:o,r:s+t.length-1+a}};if(i["!ref"]){var d=Ye(i["!ref"]);u.e.c=Math.max(u.e.c,d.e.c),u.e.r=Math.max(u.e.r,d.e.r),s==-1&&(s=d.e.r+1,u.e.r=s+t.length-1+a)}else s==-1&&(s=0,u.e.r=t.length-1+a);var h=n.header||[],m=0;t.forEach(function(p,x){_t(p).forEach(function(v){(m=h.indexOf(v))==-1&&(h[m=h.length]=v);var y=p[v],w="z",b="",R=Ne({c:o+m,r:s+x+a});f=ws(i,R),y&&typeof y=="object"&&!(y instanceof Date)?i[R]=y:(typeof y=="number"?w="n":typeof y=="boolean"?w="b":typeof y=="string"?w="s":y instanceof Date?(w="d",n.cellDates||(w="n",y=Nt(y)),b=n.dateNF||Oe[14]):y===null&&n.nullError&&(w="e",y=0),f?(f.t=w,f.v=y,delete f.w,delete f.R,b&&(f.z=b)):i[R]=f={t:w,v:y},b&&(f.z=b))})}),u.e.c=Math.max(u.e.c,o+h.length-1);var g=Et(s);if(a)for(m=0;m<h.length;++m)i[mt(m+o)+g]={t:"s",v:h[m]};return i["!ref"]=We(u),i}function K3(e,t){return tp(null,e,t)}function ws(e,t,r){if(typeof t=="string"){if(Array.isArray(e)){var n=pt(t);return e[n.r]||(e[n.r]=[]),e[n.r][n.c]||(e[n.r][n.c]={t:"z"})}return e[t]||(e[t]={t:"z"})}return typeof t!="number"?ws(e,Ne(t)):ws(e,Ne({r:t,c:r||0}))}function Y3(e,t){if(typeof t=="number"){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function Qc(){return{SheetNames:[],Sheets:{}}}function ef(e,t,r,n){var a=1;if(!r)for(;a<=65535&&e.SheetNames.indexOf(r="Sheet"+a)!=-1;++a,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var i=r.match(/(^.*?)(\d+)$/);a=i&&+i[2]||0;var s=i&&i[1]||r;for(++a;a<=65535&&e.SheetNames.indexOf(r=s+a)!=-1;++a);}if(Am(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function q3(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=Y3(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function J3(e,t){return e.z=t,e}function rp(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function Z3(e,t,r){return rp(e,"#"+t,r)}function Q3(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function eD(e,t,r,n){for(var a=typeof t!="string"?t:Ye(t),i=typeof t=="string"?t:We(t),s=a.s.r;s<=a.e.r;++s)for(var o=a.s.c;o<=a.e.c;++o){var c=ws(e,s,o);c.t="n",c.F=i,delete c.v,s==a.s.r&&o==a.s.c&&(c.f=r,n&&(c.D=!0))}return e}var tf={encode_col:mt,encode_row:Et,encode_cell:Ne,encode_range:We,decode_col:oc,decode_row:sc,split_cell:d2,decode_cell:pt,decode_range:gr,format_cell:In,sheet_add_aoa:Xd,sheet_add_json:tp,sheet_add_dom:Mm,aoa_to_sheet:ei,json_to_sheet:K3,table_to_sheet:Vm,table_to_book:l3,sheet_to_csv:Zc,sheet_to_txt:ep,sheet_to_json:Io,sheet_to_html:Lm,sheet_to_formulae:X3,sheet_to_row_object_array:Io,sheet_get_cell:ws,book_new:Qc,book_append_sheet:ef,book_set_sheet_visibility:q3,cell_set_number_format:J3,cell_set_hyperlink:rp,cell_set_internal_link:Z3,cell_add_comment:Q3,sheet_set_array_formula:eD,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function tD(e,t){t&&(e+=1462);var r=Date.parse(e);return(r-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3)}function rD(e,t={}){for(var r={},n={s:{c:1e7,r:1e7},e:{c:0,r:0}},a=0;a!=e.length;++a)for(var i=0;i!=e[a].length;++i){n.s.r>a&&(n.s.r=a),n.s.c>i&&(n.s.c=i),n.e.r<a&&(n.e.r=a),n.e.c<i&&(n.e.c=i);var s={v:e[a][i]};if(s.v!=null){var o=tf.encode_cell({c:i,r:a});typeof s.v=="number"?s.t="n":typeof s.v=="boolean"?s.t="b":s.v instanceof Date?(s.t="n",s.z=id._table[14],s.v=tD(s.v)):s.t="s",r[o]=s}}return n.s.c<1e7&&(r["!ref"]=tf.encode_range(n)),r}function rf(){if(!(this instanceof rf))return new rf;this.SheetNames=[],this.Sheets={}}function nD(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!=e.length;++n)r[n]=e.charCodeAt(n)&255;return t}function aD(e,t,r,n={merges:[],header:null,cols:null}){var a=t;a.unshift(e),n.header&&a.unshift([n.header]);var i="SheetJS";const s={};var o=new rf,c=rD(a,s);let{merges:f}=n;typeof f[0]=="string"&&f.length==2&&(f=[f]),f=f.map(h=>h instanceof Array?{s:h[0],e:h[1]}:h),c["!merges"]=f,n.cols&&(c["!cols"]=n.cols),o.SheetNames.push(i),o.Sheets[i]=c;var u=Zm(o,{bookType:"xlsx",bookSST:!1,type:"binary"}),d=r||"列表";Pu.saveAs(new Blob([nD(u)],{type:"application/octet-stream"}),d+".xlsx")}const iD=e=>{const t=e.split(/\r\n|\n/),r=t[0].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/),n=[];for(let i=1;i<t.length;i++){const s=t[i].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/);if(r&&s.length==r.length){const o={};for(let c=0;c<r.length;c++){let f=s[c];f.length>0&&(f[0]=='"'&&(f=f.substring(1,f.length-1)),f[f.length-1]=='"'&&(f=f.substring(f.length-2,1))),r[c]&&(o[r[c]]=f)}Object.values(o).filter(c=>c).length>0&&n.push(o)}}const a=r.map(i=>({title:i,key:i}));return{data:n,columns:a}};async function sD(e){const t=new FileReader;return new Promise((r,n)=>{t.onload=a=>{const i=a.target.result,s=Jc(i,{type:"binary"}),o=s.SheetNames[0],c=s.Sheets[o],f=tf.sheet_to_csv(c),u=iD(f);r(u)},t.onerror=a=>{n(a)},t.readAsBinaryString(e)})}function oD(e){return e.map(t=>({prop:t.key,label:t.title}))}const np=Object.freeze(Object.defineProperty({__proto__:null,exportUtil:{csv(e){return new Promise((t,r)=>{const a=Object.assign({},{columns:[],data:[],filename:"table",noHeader:!1},e),i=ty(oD(a.columns),a.data,e,a.noHeader);Z_.download(a.filename,i),t()})},excel(e){return new Promise((t,r)=>{const a=Object.assign({},{columns:[],data:[],filename:"table",header:null,merges:[]},e),i=a.columns.map(c=>c.title),s=a.data.map(c=>a.columns.map(f=>c[f.key])),o=a.columns.map(c=>{const f={...c};return delete f.title,delete f.key,f});aD(i,s,a.filename,{merges:a.merges,header:a.header,cols:o}),t()})},txt(e){return new Promise((t,r)=>{const a=Object.assign({},{text:"",filename:"文本"},e),i=new Blob([a.text],{type:"text/plain;charset=utf-8"});Pu.saveAs(i,a.filename+".txt"),t()})}},importUtil:{async csv(e){return await sD(e)}}},Symbol.toStringTag,{value:"Module"}));Object.defineProperty(oe,"uiContext",{enumerable:!0,get:()=>ue.uiContext}),Object.defineProperty(oe,"useUi",{enumerable:!0,get:()=>ue.useUi}),oe.AsyncComputeValue=Rs,oe.ColumnsFilterProvideKey=Us,oe.ComputeValue=yi,oe.Dict=sl,oe.FastCrud=Nu,oe.FsActionbar=B0,oe.FsBox=h0,oe.FsButton=o0,oe.FsCell=xl,oe.FsColumnsFilterLayoutDefault=pu,oe.FsComponentRender=ol,oe.FsContainer=n0,oe.FsCrud=k0,oe.FsDateFormat=Au,oe.FsDictCascader=Su,oe.FsDictCascaderFormat=Eu,oe.FsDictCheckbox=Tu,oe.FsDictRadio=ku,oe.FsDictSelect=bu,oe.FsDictSwitch=Fu,oe.FsDictTree=Du,oe.FsEditable=O0,oe.FsEditableCell=vl,oe.FsEditableSelect=Ou,oe.FsForm=g0,oe.FsFormHelper=w0,oe.FsFormItem=x0,oe.FsFormItemCol=v0,oe.FsFormProvider=_0,oe.FsFormWrapper=$a,oe.FsIcon=l0,oe.FsIconSelector=yu,oe.FsIconSvg=f0,oe.FsIconify=c0,oe.FsLabel=u0,oe.FsLayoutCard=i0,oe.FsLayoutDefault=a0,oe.FsLoading=d0,oe.FsPage=Af,oe.FsRender=ll,oe.FsRowHandle=cl,oe.FsSearch=xu,oe.FsSearchLayoutDefault=wu,oe.FsSearchV1=vu,oe.FsSlotRender=p0,oe.FsTable=R0,oe.FsTableColumnsFixedController=Ml,oe.FsTableSelect=Ru,oe.FsTabsFilter=_u,oe.FsToolbar=N0,oe.FsValuesFormat=Cu,oe.GlobalConfig=r0,oe.SetFormDataOptions=yv,oe.asyncCompute=Nf,oe.buildTableColumnsFlatMap=Os,oe.compute=Bf,oe.crudOptionsPlugins=tl,oe.default=Nu,oe.dict=Qf,oe.exportTable=Wf,oe.forEachColumns=Ei,oe.forEachTableColumns=Ci,oe.fsColumnsFilterNestList=Vl,oe.getCrudOptionsPlugin=Hf,oe.importTable=eg,oe.loadFsExportUtil=Uf,oe.loadFsImportUtil=$f,oe.registerCrudOptionsPlugin=rl,oe.registerMergeColumnPlugin=Yo,oe.setLogger=mf,oe.useColumns=Bs,oe.useCompute=Br,oe.useCrud=jf,oe.useDict=Tn,oe.useDictDefine=e0,oe.useDrag=t0,oe.useExpose=el,oe.useFormWrapper=Mf,oe.useFs=tg,oe.useFsAsync=Gf,oe.useFsRef=Xf,oe.useI18n=jt,oe.useMerge=Je,oe.useTypes=ig,oe.utils=Cn,Object.keys(ue).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(oe,e)&&Object.defineProperty(oe,e,{enumerable:!0,get:()=>ue[e]})}),Object.defineProperties(oe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1jcnVkLnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3V0aWwubG9nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuc3RyaW5nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwudHJhY2UudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC52aXRlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuc3RvcmUudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvcHJpdmF0ZS9nZXRQYXRoVG9TdHJpbmcudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvcHJpdmF0ZS9nZXRJdGVyYXRlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlZXBkYXNoL2dldC1lYWNoLWRlZXAudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvaW5kZXgudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC5kYXNoLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuY2xpcGJvYXJkLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIiwiLi4vLi4vc3JjL3VzZS9kZWZhdWx0LWNydWQtb3B0aW9ucy50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Fzc2lzdC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2J1dHRvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Nhc2NhZGVyLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL3poLWNuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL2VuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9kYXlqc0AxLjExLjIzL25vZGVfbW9kdWxlcy9kYXlqcy9wbHVnaW4vYWR2YW5jZWRGb3JtYXQuanMiLCIuLi8uLi9zcmMvdHlwZXMvZnVuY3Rpb25zLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMjMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrT2ZZZWFyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMjMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrZGF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMjMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhLmpzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvZGF0ZS50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2VsLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvaWNvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L251bWJlci50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3Bob25lLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3Qvc2VsZWN0LnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvdGV4dC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3RyZWUudHMiLCIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi8uLi9zcmMvdXNlL3VzZS1tZXJnZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLWNvbXB1dGUudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC5jb25zdGFudHMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jb2x1bW5zLnRzeCIsIi4uLy4uL3NyYy91c2UvdXNlLWZvcm0udHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1leHBvc2UudHMiLCIuLi8uLi9zcmMvbGliL2ZzLWV4cG9ydC9pbmRleC50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXBsdWdpbnMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jcnVkLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZGljdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9scnUtY2FjaGVAMTAuNC4zL25vZGVfbW9kdWxlcy9scnUtY2FjaGUvZGlzdC9lc20vaW5kZXguanMiLCIuLi8uLi9zcmMvdXNlL3VzZS1kaWN0LWRlZmluZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXR5cGVzLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZHJhZy50cyIsIi4uLy4uL3NyYy91c2UvY29uZmlnLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWNvbnRhaW5lci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtY29udGFpbmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWxheW91dC1jYXJkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtY2FyZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1idXR0b24udHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1pY29uaWZ5LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2Jhc2ljL2ZzLWljb25pZnkudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbG9hZGluZy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1ib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtYm94LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1jb21wb25lbnQtcmVuZGVyLnRzeCIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1zbG90LXJlbmRlci50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXIvZnMtcmVuZGVyLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0tY29sLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS1oZWxwZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWhlbHBlci52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0td3JhcHBlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0tcHJvdmlkZXIudnVlIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvZnMtY3J1ZC1zbG90cy50cyIsIi4uL3NyYy9jb21wb25lbnRzL2ZzLWNydWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZnMtY3J1ZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLXJvdy1oYW5kbGUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1yb3ctaGFuZGxlLnZ1ZSIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9hc3luYy12YWxpZGF0b3JANC4yLjUvbm9kZV9tb2R1bGVzL2FzeW5jLXZhbGlkYXRvci9kaXN0LXdlYi9pbmRleC5qcyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NydWQvZWRpdGFibGUvdmFsaWRhdG9yLnRzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9lZGl0YWJsZS91c2UtZWRpdGFibGUudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL3VzZS9wcm92aWRlci50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtY2VsbC50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2VkaXRhYmxlL2ZzLWVkaXRhYmxlLWNlbGwudHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy10YWJsZS50c3giLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2VkaXRhYmxlL2ZzLWVkaXRhYmxlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2FjdGlvbmJhci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9hY3Rpb25iYXIvaW5kZXgudnVlIiwiLi4vLi4vc3JjL2QvZXhwb3NlLnRzIiwiLi4vLi4vc3JjL2QvY29sdW1ucy1maWx0ZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2luZGV4LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3Rvb2xiYXIvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9pbmRleC52dWUiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc29ydGFibGVqc0AxLjE0LjAvbm9kZV9tb2R1bGVzL3NvcnRhYmxlanMvbW9kdWxhci9zb3J0YWJsZS5lc20uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdnVlZHJhZ2dhYmxlLWVzQDQuMS4xX3Z1ZUAzLjUuNDRfdHlwZXNjcmlwdEA1LjEuNl8vbm9kZV9tb2R1bGVzL3Z1ZWRyYWdnYWJsZS1lcy9kaXN0L2luZGV4LmVzLmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9mcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXIvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9mcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXIvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9mcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3QudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9mcy1jb2x1bW5zLWZpbHRlci1sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvYnV0dG9ucy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvYnV0dG9ucy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL2luZGV4LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2hfdjEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaF92MS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL2xheW91dC1kZWZhdWx0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC90YWJzLWZpbHRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWljb24tc2VsZWN0b3IvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LXJhZGlvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1yYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3Qtc2VsZWN0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtdmFsdWVzLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLXZhbHVlcy1mb3JtYXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNhc2NhZGVyLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2FzY2FkZXItZm9ybWF0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jYXNjYWRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2FzY2FkZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3Qtc3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGF0ZS1mb3JtYXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LXRyZWUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LXRyZWUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy10YWJsZS1zZWxlY3QudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1lZGl0YWJsZS1zZWxlY3QudnVlIiwiLi4vLi4vc3JjL2luZGV4LnRzIiwiLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL19leHBvcnQtY3N2LmpzIiwiLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL19jc3YuanMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2Jsb2IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmlsZS1zYXZlckAyLjAuNS9ub2RlX21vZHVsZXMvZmlsZS1zYXZlci9kaXN0L0ZpbGVTYXZlci5taW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0veGxzeEAwLjE4LjUvbm9kZV9tb2R1bGVzL3hsc3gveGxzeC5tanMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2V4cG9ydDJFeGNlbC5qcyIsIi4uLy4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9faW1wb3J0LmNzdi50cyIsIi4uLy4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZGF5anNfcGx1Z2luX2FkdmFuY2VkRm9ybWF0PXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj10LnByb3RvdHlwZSxuPXIuZm9ybWF0O3IuZm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj10aGlzLiRsb2NhbGUoKTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG4uYmluZCh0aGlzKShlKTt2YXIgcz10aGlzLiR1dGlscygpLGE9KGV8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIikucmVwbGFjZSgvXFxbKFteXFxdXSspXXxRfHdvfHd3fHd8V1d8V3x6enp8enxnZ2dnfEdHR0d8RG98WHx4fGt7MSwyfXxTL2csKGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJRXCI6cmV0dXJuIE1hdGguY2VpbCgodC4kTSsxKS8zKTtjYXNlXCJEb1wiOnJldHVybiByLm9yZGluYWwodC4kRCk7Y2FzZVwiZ2dnZ1wiOnJldHVybiB0LndlZWtZZWFyKCk7Y2FzZVwiR0dHR1wiOnJldHVybiB0Lmlzb1dlZWtZZWFyKCk7Y2FzZVwid29cIjpyZXR1cm4gci5vcmRpbmFsKHQud2VlaygpLFwiV1wiKTtjYXNlXCJ3XCI6Y2FzZVwid3dcIjpyZXR1cm4gcy5zKHQud2VlaygpLFwid1wiPT09ZT8xOjIsXCIwXCIpO2Nhc2VcIldcIjpjYXNlXCJXV1wiOnJldHVybiBzLnModC5pc29XZWVrKCksXCJXXCI9PT1lPzE6MixcIjBcIik7Y2FzZVwia1wiOmNhc2VcImtrXCI6cmV0dXJuIHMucyhTdHJpbmcoMD09PXQuJEg/MjQ6dC4kSCksXCJrXCI9PT1lPzE6MixcIjBcIik7Y2FzZVwiWFwiOnJldHVybiBNYXRoLmZsb29yKHQuJGQuZ2V0VGltZSgpLzFlMyk7Y2FzZVwieFwiOnJldHVybiB0LiRkLmdldFRpbWUoKTtjYXNlXCJ6XCI6cmV0dXJuXCJbXCIrdC5vZmZzZXROYW1lKCkrXCJdXCI7Y2FzZVwienp6XCI6cmV0dXJuXCJbXCIrdC5vZmZzZXROYW1lKFwibG9uZ1wiKStcIl1cIjtkZWZhdWx0OnJldHVybiBlfX0pKTtyZXR1cm4gbi5iaW5kKHRoaXMpKGEpfX19KSk7IixudWxsLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLmRheWpzX3BsdWdpbl93ZWVrT2ZZZWFyPXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZT1cIndlZWtcIix0PVwieWVhclwiO3JldHVybiBmdW5jdGlvbihpLG4scil7dmFyIGY9bi5wcm90b3R5cGU7Zi53ZWVrPWZ1bmN0aW9uKGkpe2lmKHZvaWQgMD09PWkmJihpPW51bGwpLG51bGwhPT1pKXJldHVybiB0aGlzLmFkZCg3KihpLXRoaXMud2VlaygpKSxcImRheVwiKTt2YXIgbj10aGlzLiRsb2NhbGUoKS55ZWFyU3RhcnR8fDE7aWYoMTE9PT10aGlzLm1vbnRoKCkmJnRoaXMuZGF0ZSgpPjI1KXt2YXIgZj1yKHRoaXMpLnN0YXJ0T2YodCkuYWRkKDEsdCkuZGF0ZShuKSxzPXIodGhpcykuZW5kT2YoZSk7aWYoZi5pc0JlZm9yZShzKSlyZXR1cm4gMX12YXIgYT1yKHRoaXMpLnN0YXJ0T2YodCkuZGF0ZShuKS5zdGFydE9mKGUpLnN1YnRyYWN0KDEsXCJtaWxsaXNlY29uZFwiKSxvPXRoaXMuZGlmZihhLGUsITApO3JldHVybiBvPDA/cih0aGlzKS5zdGFydE9mKFwid2Vla1wiKS53ZWVrKCk6TWF0aC5jZWlsKG8pfSxmLndlZWtzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSx0aGlzLndlZWsoZSl9fX0pKTsiLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLmRheWpzX3BsdWdpbl93ZWVrZGF5PXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSx0KXt0LnByb3RvdHlwZS53ZWVrZGF5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJGxvY2FsZSgpLndlZWtTdGFydHx8MCxpPXRoaXMuJFcsbj0oaTx0P2krNzppKS10O3JldHVybiB0aGlzLiR1dGlscygpLnUoZSk/bjp0aGlzLnN1YnRyYWN0KG4sXCJkYXlcIikuYWRkKGUsXCJkYXlcIil9fX0pKTsiLCIhZnVuY3Rpb24obixlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToobj1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOm58fHNlbGYpLmRheWpzX3BsdWdpbl9sb2NhbGVEYXRhPWUoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24obixlLHQpe3ZhciByPWUucHJvdG90eXBlLG89ZnVuY3Rpb24obil7cmV0dXJuIG4mJihuLmluZGV4T2Y/bjpuLnMpfSx1PWZ1bmN0aW9uKG4sZSx0LHIsdSl7dmFyIGk9bi5uYW1lP246bi4kbG9jYWxlKCksYT1vKGlbZV0pLHM9byhpW3RdKSxmPWF8fHMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gbi5zbGljZSgwLHIpfSkpO2lmKCF1KXJldHVybiBmO3ZhciBkPWkud2Vla1N0YXJ0O3JldHVybiBmLm1hcCgoZnVuY3Rpb24obixlKXtyZXR1cm4gZlsoZSsoZHx8MCkpJTddfSkpfSxpPWZ1bmN0aW9uKCl7cmV0dXJuIHQuTHNbdC5sb2NhbGUoKV19LGE9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5mb3JtYXRzW2VdfHxmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXBsYWNlKC8oXFxbW15cXF1dK10pfChNTU1NfE1NfEREfGRkZGQpL2csKGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gZXx8dC5zbGljZSgxKX0pKX0obi5mb3JtYXRzW2UudG9VcHBlckNhc2UoKV0pfSxzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm57bW9udGhzOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiTU1NTVwiKTp1KG4sXCJtb250aHNcIil9LG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiTU1NXCIpOnUobixcIm1vbnRoc1Nob3J0XCIsXCJtb250aHNcIiwzKX0sZmlyc3REYXlPZldlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gbi4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwfSx3ZWVrZGF5czpmdW5jdGlvbihlKXtyZXR1cm4gZT9lLmZvcm1hdChcImRkZGRcIik6dShuLFwid2Vla2RheXNcIil9LHdlZWtkYXlzTWluOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiZGRcIik6dShuLFwid2Vla2RheXNNaW5cIixcIndlZWtkYXlzXCIsMil9LHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5mb3JtYXQoXCJkZGRcIik6dShuLFwid2Vla2RheXNTaG9ydFwiLFwid2Vla2RheXNcIiwzKX0sbG9uZ0RhdGVGb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGEobi4kbG9jYWxlKCksZSl9LG1lcmlkaWVtOnRoaXMuJGxvY2FsZSgpLm1lcmlkaWVtLG9yZGluYWw6dGhpcy4kbG9jYWxlKCkub3JkaW5hbH19O3IubG9jYWxlRGF0YT1mdW5jdGlvbigpe3JldHVybiBzLmJpbmQodGhpcykoKX0sdC5sb2NhbGVEYXRhPWZ1bmN0aW9uKCl7dmFyIG49aSgpO3JldHVybntmaXJzdERheU9mV2VlazpmdW5jdGlvbigpe3JldHVybiBuLndlZWtTdGFydHx8MH0sd2Vla2RheXM6ZnVuY3Rpb24oKXtyZXR1cm4gdC53ZWVrZGF5cygpfSx3ZWVrZGF5c1Nob3J0OmZ1bmN0aW9uKCl7cmV0dXJuIHQud2Vla2RheXNTaG9ydCgpfSx3ZWVrZGF5c01pbjpmdW5jdGlvbigpe3JldHVybiB0LndlZWtkYXlzTWluKCl9LG1vbnRoczpmdW5jdGlvbigpe3JldHVybiB0Lm1vbnRocygpfSxtb250aHNTaG9ydDpmdW5jdGlvbigpe3JldHVybiB0Lm1vbnRoc1Nob3J0KCl9LGxvbmdEYXRlRm9ybWF0OmZ1bmN0aW9uKGUpe3JldHVybiBhKG4sZSl9LG1lcmlkaWVtOm4ubWVyaWRpZW0sb3JkaW5hbDpuLm9yZGluYWx9fSx0Lm1vbnRocz1mdW5jdGlvbigpe3JldHVybiB1KGkoKSxcIm1vbnRoc1wiKX0sdC5tb250aHNTaG9ydD1mdW5jdGlvbigpe3JldHVybiB1KGkoKSxcIm1vbnRoc1Nob3J0XCIsXCJtb250aHNcIiwzKX0sdC53ZWVrZGF5cz1mdW5jdGlvbihuKXtyZXR1cm4gdShpKCksXCJ3ZWVrZGF5c1wiLG51bGwsbnVsbCxuKX0sdC53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKG4pe3JldHVybiB1KGkoKSxcIndlZWtkYXlzU2hvcnRcIixcIndlZWtkYXlzXCIsMyxuKX0sdC53ZWVrZGF5c01pbj1mdW5jdGlvbihuKXtyZXR1cm4gdShpKCksXCJ3ZWVrZGF5c01pblwiLFwid2Vla2RheXNcIiwyLG4pfX19KSk7IixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgcmVmPVwicGFnZVJlZlwiIGNsYXNzPVwiZnMtcGFnZVwiPlxyXG4gICAgPGRpdiB2LWlmPVwiJHNsb3RzLmhlYWRlciAhPSBudWxsXCIgY2xhc3M9XCJmcy1wYWdlLWhlYWRlclwiPlxyXG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZzLXBhZ2UtY29udGVudFwiPlxyXG4gICAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgdi1pZj1cIiRzbG90cy5mb290ZXIgIT0gbnVsbFwiIGNsYXNzPVwiZnMtcGFnZS1mb290ZXJcIj5cclxuICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPjwvc2xvdD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIHJlZiwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNQYWdlXCIsXHJcbiAgc2V0dXAoKSB7XHJcbiAgICBjb25zdCBwYWdlUmVmOiBSZWYgPSByZWYoKTtcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhZ2VSZWYudmFsdWUucGFyZW50Tm9kZSk7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBvc2l0aW9uXCIpO1xyXG4gICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gXCJyZWxhdGl2ZVwiKSB7XHJcbiAgICAgICAgdXRpbHMubG9nZ2VyLndhcm4oXHJcbiAgICAgICAgICBcImZzLXBhZ2XniLboioLngrnnmoRwb3NpdGlvbuW7uuiuruS4unJlbGF0aXZlLOWboOS4umZzLXBhZ2XkuLrnm7jlr7nlrprkvY3vvIhwb3NpdGlvbjphYnNvbHV0Ze+8ie+8jOWmguaenOagt+W8j+ayoeacieW8guW4uO+8jOS9oOWPr+S7peW/veeVpeatpOitpuWRilwiXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYWdlUmVmXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1wYWdlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICB0b3A6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblxyXG4gIC5mcy1wYWdlLWhlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xyXG4gICAgPiAudGl0bGUge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XHJcbiAgICAgIHBhZGRpbmc6IDE4cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGNvbG9yOiAjNDQ0O1xyXG5cclxuICAgICAgLnN1YiB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGNvbG9yOiBncmF5O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBsaWdodGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICA+IC5tb3JlIHtcclxuICAgICAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5mcy1wYWdlLWNvbnRlbnQge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiByZWY9XCJwYWdlUmVmXCIgY2xhc3M9XCJmcy1wYWdlXCI+XHJcbiAgICA8ZGl2IHYtaWY9XCIkc2xvdHMuaGVhZGVyICE9IG51bGxcIiBjbGFzcz1cImZzLXBhZ2UtaGVhZGVyXCI+XHJcbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj48L3Nsb3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnZS1jb250ZW50XCI+XHJcbiAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiB2LWlmPVwiJHNsb3RzLmZvb3RlciAhPSBudWxsXCIgY2xhc3M9XCJmcy1wYWdlLWZvb3RlclwiPlxyXG4gICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCI+PC9zbG90PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIG9uTW91bnRlZCwgcmVmLCBSZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1BhZ2VcIixcclxuICBzZXR1cCgpIHtcclxuICAgIGNvbnN0IHBhZ2VSZWY6IFJlZiA9IHJlZigpO1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFnZVJlZi52YWx1ZS5wYXJlbnROb2RlKTtcclxuICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicG9zaXRpb25cIik7XHJcbiAgICAgIGlmIChwb3NpdGlvblZhbHVlICE9PSBcInJlbGF0aXZlXCIpIHtcclxuICAgICAgICB1dGlscy5sb2dnZXIud2FybihcclxuICAgICAgICAgIFwiZnMtcGFnZeeItuiKgueCueeahHBvc2l0aW9u5bu66K6u5Li6cmVsYXRpdmUs5Zug5Li6ZnMtcGFnZeS4uuebuOWvueWumuS9je+8iHBvc2l0aW9uOmFic29sdXRl77yJ77yM5aaC5p6c5qC35byP5rKh5pyJ5byC5bi477yM5L2g5Y+v5Lul5b+955Wl5q2k6K2m5ZGKXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBhZ2VSZWZcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXBhZ2Uge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgLmZzLXBhZ2UtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICA+IC50aXRsZSB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcclxuICAgICAgcGFkZGluZzogMThweDtcclxuICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgY29sb3I6ICM0NDQ7XHJcblxyXG4gICAgICAuc3ViIHtcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgY29sb3I6IGdyYXk7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgID4gLm1vcmUge1xyXG4gICAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgIH1cclxuICB9XHJcbiAgLmZzLXBhZ2UtY29udGVudCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiLyoqXG4gKiBAbW9kdWxlIExSVUNhY2hlXG4gKi9cbmNvbnN0IHBlcmYgPSB0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICdvYmplY3QnICYmXG4gICAgcGVyZm9ybWFuY2UgJiZcbiAgICB0eXBlb2YgcGVyZm9ybWFuY2Uubm93ID09PSAnZnVuY3Rpb24nXG4gICAgPyBwZXJmb3JtYW5jZVxuICAgIDogRGF0ZTtcbmNvbnN0IHdhcm5lZCA9IG5ldyBTZXQoKTtcbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuY29uc3QgUFJPQ0VTUyA9ICh0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiYgISFwcm9jZXNzID8gcHJvY2VzcyA6IHt9KTtcbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuY29uc3QgZW1pdFdhcm5pbmcgPSAobXNnLCB0eXBlLCBjb2RlLCBmbikgPT4ge1xuICAgIHR5cGVvZiBQUk9DRVNTLmVtaXRXYXJuaW5nID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gUFJPQ0VTUy5lbWl0V2FybmluZyhtc2csIHR5cGUsIGNvZGUsIGZuKVxuICAgICAgICA6IGNvbnNvbGUuZXJyb3IoYFske2NvZGV9XSAke3R5cGV9OiAke21zZ31gKTtcbn07XG5sZXQgQUMgPSBnbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlcjtcbmxldCBBUyA9IGdsb2JhbFRoaXMuQWJvcnRTaWduYWw7XG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmlmICh0eXBlb2YgQUMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgQVMgPSBjbGFzcyBBYm9ydFNpZ25hbCB7XG4gICAgICAgIG9uYWJvcnQ7XG4gICAgICAgIF9vbmFib3J0ID0gW107XG4gICAgICAgIHJlYXNvbjtcbiAgICAgICAgYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgICBhZGRFdmVudExpc3RlbmVyKF8sIGZuKSB7XG4gICAgICAgICAgICB0aGlzLl9vbmFib3J0LnB1c2goZm4pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBBQyA9IGNsYXNzIEFib3J0Q29udHJvbGxlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgd2FybkFDUG9seWZpbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBzaWduYWwgPSBuZXcgQVMoKTtcbiAgICAgICAgYWJvcnQocmVhc29uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaWduYWwuYWJvcnRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMuc2lnbmFsLnJlYXNvbiA9IHJlYXNvbjtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5zaWduYWwuYWJvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm4gb2YgdGhpcy5zaWduYWwuX29uYWJvcnQpIHtcbiAgICAgICAgICAgICAgICBmbihyZWFzb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaWduYWwub25hYm9ydD8uKHJlYXNvbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGxldCBwcmludEFDUG9seWZpbGxXYXJuaW5nID0gUFJPQ0VTUy5lbnY/LkxSVV9DQUNIRV9JR05PUkVfQUNfV0FSTklORyAhPT0gJzEnO1xuICAgIGNvbnN0IHdhcm5BQ1BvbHlmaWxsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXByaW50QUNQb2x5ZmlsbFdhcm5pbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHByaW50QUNQb2x5ZmlsbFdhcm5pbmcgPSBmYWxzZTtcbiAgICAgICAgZW1pdFdhcm5pbmcoJ0Fib3J0Q29udHJvbGxlciBpcyBub3QgZGVmaW5lZC4gSWYgdXNpbmcgbHJ1LWNhY2hlIGluICcgK1xuICAgICAgICAgICAgJ25vZGUgMTQsIGxvYWQgYW4gQWJvcnRDb250cm9sbGVyIHBvbHlmaWxsIGZyb20gdGhlICcgK1xuICAgICAgICAgICAgJ2Bub2RlLWFib3J0LWNvbnRyb2xsZXJgIHBhY2thZ2UuIEEgbWluaW1hbCBwb2x5ZmlsbCBpcyAnICtcbiAgICAgICAgICAgICdwcm92aWRlZCBmb3IgdXNlIGJ5IExSVUNhY2hlLmZldGNoKCksIGJ1dCBpdCBzaG91bGQgbm90IGJlICcgK1xuICAgICAgICAgICAgJ3JlbGllZCB1cG9uIGluIG90aGVyIGNvbnRleHRzIChlZywgcGFzc2luZyBpdCB0byBvdGhlciBBUElzIHRoYXQgJyArXG4gICAgICAgICAgICAndXNlIEFib3J0Q29udHJvbGxlci9BYm9ydFNpZ25hbCBtaWdodCBoYXZlIHVuZGVzaXJhYmxlIGVmZmVjdHMpLiAnICtcbiAgICAgICAgICAgICdZb3UgbWF5IGRpc2FibGUgdGhpcyB3aXRoIExSVV9DQUNIRV9JR05PUkVfQUNfV0FSTklORz0xIGluIHRoZSBlbnYuJywgJ05PX0FCT1JUX0NPTlRST0xMRVInLCAnRU5PVFNVUCcsIHdhcm5BQ1BvbHlmaWxsKTtcbiAgICB9O1xufVxuLyogYzggaWdub3JlIHN0b3AgKi9cbmNvbnN0IHNob3VsZFdhcm4gPSAoY29kZSkgPT4gIXdhcm5lZC5oYXMoY29kZSk7XG5jb25zdCBUWVBFID0gU3ltYm9sKCd0eXBlJyk7XG5jb25zdCBpc1Bvc0ludCA9IChuKSA9PiBuICYmIG4gPT09IE1hdGguZmxvb3IobikgJiYgbiA+IDAgJiYgaXNGaW5pdGUobik7XG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbi8vIFRoaXMgaXMgYSBsaXR0bGUgYml0IHJpZGljdWxvdXMsIHRiaC5cbi8vIFRoZSBtYXhpbXVtIGFycmF5IGxlbmd0aCBpcyAyXjMyLTEgb3IgdGhlcmVhYm91dHMgb24gbW9zdCBKUyBpbXBscy5cbi8vIEFuZCB3ZWxsIGJlZm9yZSB0aGF0IHBvaW50LCB5b3UncmUgY2FjaGluZyB0aGUgZW50aXJlIHdvcmxkLCBJIG1lYW4sXG4vLyB0aGF0J3MgfjMyR0Igb2YganVzdCBpbnRlZ2VycyBmb3IgdGhlIG5leHQvcHJldiBsaW5rcywgcGx1cyB3aGF0ZXZlclxuLy8gZWxzZSB0byBob2xkIHRoYXQgbWFueSBrZXlzIGFuZCB2YWx1ZXMuICBKdXN0IGZpbGxpbmcgdGhlIG1lbW9yeSB3aXRoXG4vLyB6ZXJvZXMgYXQgaW5pdCB0aW1lIGlzIGJydXRhbCB3aGVuIHlvdSBnZXQgdGhhdCBiaWcuXG4vLyBCdXQgd2h5IG5vdCBiZSBjb21wbGV0ZT9cbi8vIE1heWJlIGluIHRoZSBmdXR1cmUsIHRoZXNlIGxpbWl0cyB3aWxsIGhhdmUgZXhwYW5kZWQuXG5jb25zdCBnZXRVaW50QXJyYXkgPSAobWF4KSA9PiAhaXNQb3NJbnQobWF4KVxuICAgID8gbnVsbFxuICAgIDogbWF4IDw9IE1hdGgucG93KDIsIDgpXG4gICAgICAgID8gVWludDhBcnJheVxuICAgICAgICA6IG1heCA8PSBNYXRoLnBvdygyLCAxNilcbiAgICAgICAgICAgID8gVWludDE2QXJyYXlcbiAgICAgICAgICAgIDogbWF4IDw9IE1hdGgucG93KDIsIDMyKVxuICAgICAgICAgICAgICAgID8gVWludDMyQXJyYXlcbiAgICAgICAgICAgICAgICA6IG1heCA8PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgICAgICAgICAgICAgICAgICA/IFplcm9BcnJheVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuY2xhc3MgWmVyb0FycmF5IGV4dGVuZHMgQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKHNpemUpIHtcbiAgICAgICAgc3VwZXIoc2l6ZSk7XG4gICAgICAgIHRoaXMuZmlsbCgwKTtcbiAgICB9XG59XG5jbGFzcyBTdGFjayB7XG4gICAgaGVhcDtcbiAgICBsZW5ndGg7XG4gICAgLy8gcHJpdmF0ZSBjb25zdHJ1Y3RvclxuICAgIHN0YXRpYyAjY29uc3RydWN0aW5nID0gZmFsc2U7XG4gICAgc3RhdGljIGNyZWF0ZShtYXgpIHtcbiAgICAgICAgY29uc3QgSGVhcENscyA9IGdldFVpbnRBcnJheShtYXgpO1xuICAgICAgICBpZiAoIUhlYXBDbHMpXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIFN0YWNrLiNjb25zdHJ1Y3RpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBzID0gbmV3IFN0YWNrKG1heCwgSGVhcENscyk7XG4gICAgICAgIFN0YWNrLiNjb25zdHJ1Y3RpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKG1heCwgSGVhcENscykge1xuICAgICAgICAvKiBjOCBpZ25vcmUgc3RhcnQgKi9cbiAgICAgICAgaWYgKCFTdGFjay4jY29uc3RydWN0aW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnN0YW50aWF0ZSBTdGFjayB1c2luZyBTdGFjay5jcmVhdGUobiknKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICB0aGlzLmhlYXAgPSBuZXcgSGVhcENscyhtYXgpO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgfVxuICAgIHB1c2gobikge1xuICAgICAgICB0aGlzLmhlYXBbdGhpcy5sZW5ndGgrK10gPSBuO1xuICAgIH1cbiAgICBwb3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYXBbLS10aGlzLmxlbmd0aF07XG4gICAgfVxufVxuLyoqXG4gKiBEZWZhdWx0IGV4cG9ydCwgdGhlIHRoaW5nIHlvdSdyZSB1c2luZyB0aGlzIG1vZHVsZSB0byBnZXQuXG4gKlxuICogVGhlIGBLYCBhbmQgYFZgIHR5cGVzIGRlZmluZSB0aGUga2V5IGFuZCB2YWx1ZSB0eXBlcywgcmVzcGVjdGl2ZWx5LiBUaGVcbiAqIG9wdGlvbmFsIGBGQ2AgdHlwZSBkZWZpbmVzIHRoZSB0eXBlIG9mIHRoZSBgY29udGV4dGAgb2JqZWN0IHBhc3NlZCB0b1xuICogYGNhY2hlLmZldGNoKClgIGFuZCBgY2FjaGUubWVtbygpYC5cbiAqXG4gKiBLZXlzIGFuZCB2YWx1ZXMgKiptdXN0IG5vdCoqIGJlIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqXG4gKiBBbGwgcHJvcGVydGllcyBmcm9tIHRoZSBvcHRpb25zIG9iamVjdCAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBtYXhgLFxuICogYG1heFNpemVgLCBgZmV0Y2hNZXRob2RgLCBgbWVtb01ldGhvZGAsIGBkaXNwb3NlYCBhbmQgYGRpc3Bvc2VBZnRlcmApIGFyZVxuICogYWRkZWQgYXMgbm9ybWFsIHB1YmxpYyBtZW1iZXJzLiAoVGhlIGxpc3RlZCBvcHRpb25zIGFyZSByZWFkLW9ubHkgZ2V0dGVycy4pXG4gKlxuICogQ2hhbmdpbmcgYW55IG9mIHRoZXNlIHdpbGwgYWx0ZXIgdGhlIGRlZmF1bHRzIGZvciBzdWJzZXF1ZW50IG1ldGhvZCBjYWxscy5cbiAqL1xuZXhwb3J0IGNsYXNzIExSVUNhY2hlIHtcbiAgICAvLyBvcHRpb25zIHRoYXQgY2Fubm90IGJlIGNoYW5nZWQgd2l0aG91dCBkaXNhc3RlclxuICAgICNtYXg7XG4gICAgI21heFNpemU7XG4gICAgI2Rpc3Bvc2U7XG4gICAgI2Rpc3Bvc2VBZnRlcjtcbiAgICAjZmV0Y2hNZXRob2Q7XG4gICAgI21lbW9NZXRob2Q7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnR0bH1cbiAgICAgKi9cbiAgICB0dGw7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnR0bFJlc29sdXRpb259XG4gICAgICovXG4gICAgdHRsUmVzb2x1dGlvbjtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudHRsQXV0b3B1cmdlfVxuICAgICAqL1xuICAgIHR0bEF1dG9wdXJnZTtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudXBkYXRlQWdlT25HZXR9XG4gICAgICovXG4gICAgdXBkYXRlQWdlT25HZXQ7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnVwZGF0ZUFnZU9uSGFzfVxuICAgICAqL1xuICAgIHVwZGF0ZUFnZU9uSGFzO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5hbGxvd1N0YWxlfVxuICAgICAqL1xuICAgIGFsbG93U3RhbGU7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm5vRGlzcG9zZU9uU2V0fVxuICAgICAqL1xuICAgIG5vRGlzcG9zZU9uU2V0O1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5ub1VwZGF0ZVRUTH1cbiAgICAgKi9cbiAgICBub1VwZGF0ZVRUTDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UubWF4RW50cnlTaXplfVxuICAgICAqL1xuICAgIG1heEVudHJ5U2l6ZTtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2Uuc2l6ZUNhbGN1bGF0aW9ufVxuICAgICAqL1xuICAgIHNpemVDYWxjdWxhdGlvbjtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2Uubm9EZWxldGVPbkZldGNoUmVqZWN0aW9ufVxuICAgICAqL1xuICAgIG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2Uubm9EZWxldGVPblN0YWxlR2V0fVxuICAgICAqL1xuICAgIG5vRGVsZXRlT25TdGFsZUdldDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydH1cbiAgICAgKi9cbiAgICBhbGxvd1N0YWxlT25GZXRjaEFib3J0O1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbn1cbiAgICAgKi9cbiAgICBhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuaWdub3JlRmV0Y2hBYm9ydH1cbiAgICAgKi9cbiAgICBpZ25vcmVGZXRjaEFib3J0O1xuICAgIC8vIGNvbXB1dGVkIHByb3BlcnRpZXNcbiAgICAjc2l6ZTtcbiAgICAjY2FsY3VsYXRlZFNpemU7XG4gICAgI2tleU1hcDtcbiAgICAja2V5TGlzdDtcbiAgICAjdmFsTGlzdDtcbiAgICAjbmV4dDtcbiAgICAjcHJldjtcbiAgICAjaGVhZDtcbiAgICAjdGFpbDtcbiAgICAjZnJlZTtcbiAgICAjZGlzcG9zZWQ7XG4gICAgI3NpemVzO1xuICAgICNzdGFydHM7XG4gICAgI3R0bHM7XG4gICAgI2hhc0Rpc3Bvc2U7XG4gICAgI2hhc0ZldGNoTWV0aG9kO1xuICAgICNoYXNEaXNwb3NlQWZ0ZXI7XG4gICAgLyoqXG4gICAgICogRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgdW5sZXNzIHlvdSBuZWVkIHRvIGluc3BlY3QgdGhlXG4gICAgICogaW5uZXIgd29ya2luZ3Mgb2YgdGhlIGNhY2hlLiAgSWYgYW55dGhpbmcgcmV0dXJuZWQgYnkgdGhpc1xuICAgICAqIG9iamVjdCBpcyBtb2RpZmllZCBpbiBhbnkgd2F5LCBzdHJhbmdlIGJyZWFrYWdlIG1heSBvY2N1ci5cbiAgICAgKlxuICAgICAqIFRoZXNlIGZpZWxkcyBhcmUgcHJpdmF0ZSBmb3IgYSByZWFzb24hXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBzdGF0aWMgdW5zYWZlRXhwb3NlSW50ZXJuYWxzKGMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIHByb3BlcnRpZXNcbiAgICAgICAgICAgIHN0YXJ0czogYy4jc3RhcnRzLFxuICAgICAgICAgICAgdHRsczogYy4jdHRscyxcbiAgICAgICAgICAgIHNpemVzOiBjLiNzaXplcyxcbiAgICAgICAgICAgIGtleU1hcDogYy4ja2V5TWFwLFxuICAgICAgICAgICAga2V5TGlzdDogYy4ja2V5TGlzdCxcbiAgICAgICAgICAgIHZhbExpc3Q6IGMuI3ZhbExpc3QsXG4gICAgICAgICAgICBuZXh0OiBjLiNuZXh0LFxuICAgICAgICAgICAgcHJldjogYy4jcHJldixcbiAgICAgICAgICAgIGdldCBoZWFkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjLiNoZWFkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB0YWlsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjLiN0YWlsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZyZWU6IGMuI2ZyZWUsXG4gICAgICAgICAgICAvLyBtZXRob2RzXG4gICAgICAgICAgICBpc0JhY2tncm91bmRGZXRjaDogKHApID0+IGMuI2lzQmFja2dyb3VuZEZldGNoKHApLFxuICAgICAgICAgICAgYmFja2dyb3VuZEZldGNoOiAoaywgaW5kZXgsIG9wdGlvbnMsIGNvbnRleHQpID0+IGMuI2JhY2tncm91bmRGZXRjaChrLCBpbmRleCwgb3B0aW9ucywgY29udGV4dCksXG4gICAgICAgICAgICBtb3ZlVG9UYWlsOiAoaW5kZXgpID0+IGMuI21vdmVUb1RhaWwoaW5kZXgpLFxuICAgICAgICAgICAgaW5kZXhlczogKG9wdGlvbnMpID0+IGMuI2luZGV4ZXMob3B0aW9ucyksXG4gICAgICAgICAgICByaW5kZXhlczogKG9wdGlvbnMpID0+IGMuI3JpbmRleGVzKG9wdGlvbnMpLFxuICAgICAgICAgICAgaXNTdGFsZTogKGluZGV4KSA9PiBjLiNpc1N0YWxlKGluZGV4KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gUHJvdGVjdGVkIHJlYWQtb25seSBtZW1iZXJzXG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm1heH0gKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgbWF4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWF4O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UubWF4U2l6ZX0gKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgbWF4U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21heFNpemU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSB0b3RhbCBjb21wdXRlZCBzaXplIG9mIGl0ZW1zIGluIHRoZSBjYWNoZSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBjYWxjdWxhdGVkU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhbGN1bGF0ZWRTaXplO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHN0b3JlZCBpbiB0aGUgY2FjaGUgKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3NpemU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5mZXRjaE1ldGhvZH0gKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgZmV0Y2hNZXRob2QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNmZXRjaE1ldGhvZDtcbiAgICB9XG4gICAgZ2V0IG1lbW9NZXRob2QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNtZW1vTWV0aG9kO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuZGlzcG9zZX0gKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgZGlzcG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2Rpc3Bvc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5kaXNwb3NlQWZ0ZXJ9IChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IGRpc3Bvc2VBZnRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2Rpc3Bvc2VBZnRlcjtcbiAgICB9XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IG1heCA9IDAsIHR0bCwgdHRsUmVzb2x1dGlvbiA9IDEsIHR0bEF1dG9wdXJnZSwgdXBkYXRlQWdlT25HZXQsIHVwZGF0ZUFnZU9uSGFzLCBhbGxvd1N0YWxlLCBkaXNwb3NlLCBkaXNwb3NlQWZ0ZXIsIG5vRGlzcG9zZU9uU2V0LCBub1VwZGF0ZVRUTCwgbWF4U2l6ZSA9IDAsIG1heEVudHJ5U2l6ZSA9IDAsIHNpemVDYWxjdWxhdGlvbiwgZmV0Y2hNZXRob2QsIG1lbW9NZXRob2QsIG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbiwgbm9EZWxldGVPblN0YWxlR2V0LCBhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbiwgYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCwgaWdub3JlRmV0Y2hBYm9ydCwgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChtYXggIT09IDAgJiYgIWlzUG9zSW50KG1heCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBvcHRpb24gbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBVaW50QXJyYXkgPSBtYXggPyBnZXRVaW50QXJyYXkobWF4KSA6IEFycmF5O1xuICAgICAgICBpZiAoIVVpbnRBcnJheSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIG1heCB2YWx1ZTogJyArIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jbWF4ID0gbWF4O1xuICAgICAgICB0aGlzLiNtYXhTaXplID0gbWF4U2l6ZTtcbiAgICAgICAgdGhpcy5tYXhFbnRyeVNpemUgPSBtYXhFbnRyeVNpemUgfHwgdGhpcy4jbWF4U2l6ZTtcbiAgICAgICAgdGhpcy5zaXplQ2FsY3VsYXRpb24gPSBzaXplQ2FsY3VsYXRpb247XG4gICAgICAgIGlmICh0aGlzLnNpemVDYWxjdWxhdGlvbikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiNtYXhTaXplICYmICF0aGlzLm1heEVudHJ5U2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCBzZXQgc2l6ZUNhbGN1bGF0aW9uIHdpdGhvdXQgc2V0dGluZyBtYXhTaXplIG9yIG1heEVudHJ5U2l6ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpemVDYWxjdWxhdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemVDYWxjdWxhdGlvbiBzZXQgdG8gbm9uLWZ1bmN0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW9NZXRob2QgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIG1lbW9NZXRob2QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lbW9NZXRob2QgbXVzdCBiZSBhIGZ1bmN0aW9uIGlmIGRlZmluZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNtZW1vTWV0aG9kID0gbWVtb01ldGhvZDtcbiAgICAgICAgaWYgKGZldGNoTWV0aG9kICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHR5cGVvZiBmZXRjaE1ldGhvZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmV0Y2hNZXRob2QgbXVzdCBiZSBhIGZ1bmN0aW9uIGlmIHNwZWNpZmllZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2ZldGNoTWV0aG9kID0gZmV0Y2hNZXRob2Q7XG4gICAgICAgIHRoaXMuI2hhc0ZldGNoTWV0aG9kID0gISFmZXRjaE1ldGhvZDtcbiAgICAgICAgdGhpcy4ja2V5TWFwID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLiNrZXlMaXN0ID0gbmV3IEFycmF5KG1heCkuZmlsbCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLiN2YWxMaXN0ID0gbmV3IEFycmF5KG1heCkuZmlsbCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLiNuZXh0ID0gbmV3IFVpbnRBcnJheShtYXgpO1xuICAgICAgICB0aGlzLiNwcmV2ID0gbmV3IFVpbnRBcnJheShtYXgpO1xuICAgICAgICB0aGlzLiNoZWFkID0gMDtcbiAgICAgICAgdGhpcy4jdGFpbCA9IDA7XG4gICAgICAgIHRoaXMuI2ZyZWUgPSBTdGFjay5jcmVhdGUobWF4KTtcbiAgICAgICAgdGhpcy4jc2l6ZSA9IDA7XG4gICAgICAgIHRoaXMuI2NhbGN1bGF0ZWRTaXplID0gMDtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2VBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyID0gZGlzcG9zZUFmdGVyO1xuICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2hhc0Rpc3Bvc2UgPSAhIXRoaXMuI2Rpc3Bvc2U7XG4gICAgICAgIHRoaXMuI2hhc0Rpc3Bvc2VBZnRlciA9ICEhdGhpcy4jZGlzcG9zZUFmdGVyO1xuICAgICAgICB0aGlzLm5vRGlzcG9zZU9uU2V0ID0gISFub0Rpc3Bvc2VPblNldDtcbiAgICAgICAgdGhpcy5ub1VwZGF0ZVRUTCA9ICEhbm9VcGRhdGVUVEw7XG4gICAgICAgIHRoaXMubm9EZWxldGVPbkZldGNoUmVqZWN0aW9uID0gISFub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgICAgIHRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24gPSAhIWFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uO1xuICAgICAgICB0aGlzLmFsbG93U3RhbGVPbkZldGNoQWJvcnQgPSAhIWFsbG93U3RhbGVPbkZldGNoQWJvcnQ7XG4gICAgICAgIHRoaXMuaWdub3JlRmV0Y2hBYm9ydCA9ICEhaWdub3JlRmV0Y2hBYm9ydDtcbiAgICAgICAgLy8gTkI6IG1heEVudHJ5U2l6ZSBpcyBzZXQgdG8gbWF4U2l6ZSBpZiBpdCdzIHNldFxuICAgICAgICBpZiAodGhpcy5tYXhFbnRyeVNpemUgIT09IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNtYXhTaXplICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1Bvc0ludCh0aGlzLiNtYXhTaXplKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXhTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNQb3NJbnQodGhpcy5tYXhFbnRyeVNpemUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4RW50cnlTaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4jaW5pdGlhbGl6ZVNpemVUcmFja2luZygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWxsb3dTdGFsZSA9ICEhYWxsb3dTdGFsZTtcbiAgICAgICAgdGhpcy5ub0RlbGV0ZU9uU3RhbGVHZXQgPSAhIW5vRGVsZXRlT25TdGFsZUdldDtcbiAgICAgICAgdGhpcy51cGRhdGVBZ2VPbkdldCA9ICEhdXBkYXRlQWdlT25HZXQ7XG4gICAgICAgIHRoaXMudXBkYXRlQWdlT25IYXMgPSAhIXVwZGF0ZUFnZU9uSGFzO1xuICAgICAgICB0aGlzLnR0bFJlc29sdXRpb24gPVxuICAgICAgICAgICAgaXNQb3NJbnQodHRsUmVzb2x1dGlvbikgfHwgdHRsUmVzb2x1dGlvbiA9PT0gMFxuICAgICAgICAgICAgICAgID8gdHRsUmVzb2x1dGlvblxuICAgICAgICAgICAgICAgIDogMTtcbiAgICAgICAgdGhpcy50dGxBdXRvcHVyZ2UgPSAhIXR0bEF1dG9wdXJnZTtcbiAgICAgICAgdGhpcy50dGwgPSB0dGwgfHwgMDtcbiAgICAgICAgaWYgKHRoaXMudHRsKSB7XG4gICAgICAgICAgICBpZiAoIWlzUG9zSW50KHRoaXMudHRsKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3R0bCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2luaXRpYWxpemVUVExUcmFja2luZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRvIG5vdCBhbGxvdyBjb21wbGV0ZWx5IHVuYm91bmRlZCBjYWNoZXNcbiAgICAgICAgaWYgKHRoaXMuI21heCA9PT0gMCAmJiB0aGlzLnR0bCA9PT0gMCAmJiB0aGlzLiNtYXhTaXplID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBdCBsZWFzdCBvbmUgb2YgbWF4LCBtYXhTaXplLCBvciB0dGwgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudHRsQXV0b3B1cmdlICYmICF0aGlzLiNtYXggJiYgIXRoaXMuI21heFNpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSAnTFJVX0NBQ0hFX1VOQk9VTkRFRCc7XG4gICAgICAgICAgICBpZiAoc2hvdWxkV2Fybihjb2RlKSkge1xuICAgICAgICAgICAgICAgIHdhcm5lZC5hZGQoY29kZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gJ1RUTCBjYWNoaW5nIHdpdGhvdXQgdHRsQXV0b3B1cmdlLCBtYXgsIG9yIG1heFNpemUgY2FuICcgK1xuICAgICAgICAgICAgICAgICAgICAncmVzdWx0IGluIHVuYm91bmRlZCBtZW1vcnkgY29uc3VtcHRpb24uJztcbiAgICAgICAgICAgICAgICBlbWl0V2FybmluZyhtc2csICdVbmJvdW5kZWRDYWNoZVdhcm5pbmcnLCBjb2RlLCBMUlVDYWNoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgbXMgbGVmdCBpbiB0aGUgaXRlbSdzIFRUTC4gSWYgaXRlbSBpcyBub3QgaW4gY2FjaGUsXG4gICAgICogcmV0dXJucyBgMGAuIFJldHVybnMgYEluZmluaXR5YCBpZiBpdGVtIGlzIGluIGNhY2hlIHdpdGhvdXQgYSBkZWZpbmVkIFRUTC5cbiAgICAgKi9cbiAgICBnZXRSZW1haW5pbmdUVEwoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNrZXlNYXAuaGFzKGtleSkgPyBJbmZpbml0eSA6IDA7XG4gICAgfVxuICAgICNpbml0aWFsaXplVFRMVHJhY2tpbmcoKSB7XG4gICAgICAgIGNvbnN0IHR0bHMgPSBuZXcgWmVyb0FycmF5KHRoaXMuI21heCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0cyA9IG5ldyBaZXJvQXJyYXkodGhpcy4jbWF4KTtcbiAgICAgICAgdGhpcy4jdHRscyA9IHR0bHM7XG4gICAgICAgIHRoaXMuI3N0YXJ0cyA9IHN0YXJ0cztcbiAgICAgICAgdGhpcy4jc2V0SXRlbVRUTCA9IChpbmRleCwgdHRsLCBzdGFydCA9IHBlcmYubm93KCkpID0+IHtcbiAgICAgICAgICAgIHN0YXJ0c1tpbmRleF0gPSB0dGwgIT09IDAgPyBzdGFydCA6IDA7XG4gICAgICAgICAgICB0dGxzW2luZGV4XSA9IHR0bDtcbiAgICAgICAgICAgIGlmICh0dGwgIT09IDAgJiYgdGhpcy50dGxBdXRvcHVyZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNpc1N0YWxlKGluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGVsZXRlKHRoaXMuI2tleUxpc3RbaW5kZXhdLCAnZXhwaXJlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0dGwgKyAxKTtcbiAgICAgICAgICAgICAgICAvLyB1bnJlZigpIG5vdCBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICAgICAgICAgICAgICAgIGlmICh0LnVucmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHQudW5yZWYoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogYzggaWdub3JlIHN0b3AgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4jdXBkYXRlSXRlbUFnZSA9IGluZGV4ID0+IHtcbiAgICAgICAgICAgIHN0YXJ0c1tpbmRleF0gPSB0dGxzW2luZGV4XSAhPT0gMCA/IHBlcmYubm93KCkgOiAwO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNzdGF0dXNUVEwgPSAoc3RhdHVzLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR0bHNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHRsID0gdHRsc1tpbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzdGFydHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICAgICAgaWYgKCF0dGwgfHwgIXN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgc3RhdHVzLnR0bCA9IHR0bDtcbiAgICAgICAgICAgICAgICBzdGF0dXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgICAgICAgICBzdGF0dXMubm93ID0gY2FjaGVkTm93IHx8IGdldE5vdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZSA9IHN0YXR1cy5ub3cgLSBzdGFydDtcbiAgICAgICAgICAgICAgICBzdGF0dXMucmVtYWluaW5nVFRMID0gdHRsIC0gYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyBkZWJvdW5jZSBjYWxscyB0byBwZXJmLm5vdygpIHRvIDFzIHNvIHdlJ3JlIG5vdCBoaXR0aW5nXG4gICAgICAgIC8vIHRoYXQgY29zdGx5IGNhbGwgcmVwZWF0ZWRseS5cbiAgICAgICAgbGV0IGNhY2hlZE5vdyA9IDA7XG4gICAgICAgIGNvbnN0IGdldE5vdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwZXJmLm5vdygpO1xuICAgICAgICAgICAgaWYgKHRoaXMudHRsUmVzb2x1dGlvbiA+IDApIHtcbiAgICAgICAgICAgICAgICBjYWNoZWROb3cgPSBuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBzZXRUaW1lb3V0KCgpID0+IChjYWNoZWROb3cgPSAwKSwgdGhpcy50dGxSZXNvbHV0aW9uKTtcbiAgICAgICAgICAgICAgICAvLyBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXNcbiAgICAgICAgICAgICAgICAvKiBjOCBpZ25vcmUgc3RhcnQgKi9cbiAgICAgICAgICAgICAgICBpZiAodC51bnJlZikge1xuICAgICAgICAgICAgICAgICAgICB0LnVucmVmKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5nZXRSZW1haW5pbmdUVEwgPSBrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdHRsID0gdHRsc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0c1tpbmRleF07XG4gICAgICAgICAgICBpZiAoIXR0bCB8fCAhc3RhcnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhZ2UgPSAoY2FjaGVkTm93IHx8IGdldE5vdygpKSAtIHN0YXJ0O1xuICAgICAgICAgICAgcmV0dXJuIHR0bCAtIGFnZTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4jaXNTdGFsZSA9IGluZGV4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBzdGFydHNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgdCA9IHR0bHNbaW5kZXhdO1xuICAgICAgICAgICAgcmV0dXJuICEhdCAmJiAhIXMgJiYgKGNhY2hlZE5vdyB8fCBnZXROb3coKSkgLSBzID4gdDtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gY29uZGl0aW9uYWxseSBzZXQgcHJpdmF0ZSBtZXRob2RzIHJlbGF0ZWQgdG8gVFRMXG4gICAgI3VwZGF0ZUl0ZW1BZ2UgPSAoKSA9PiB7IH07XG4gICAgI3N0YXR1c1RUTCA9ICgpID0+IHsgfTtcbiAgICAjc2V0SXRlbVRUTCA9ICgpID0+IHsgfTtcbiAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICAgICNpc1N0YWxlID0gKCkgPT4gZmFsc2U7XG4gICAgI2luaXRpYWxpemVTaXplVHJhY2tpbmcoKSB7XG4gICAgICAgIGNvbnN0IHNpemVzID0gbmV3IFplcm9BcnJheSh0aGlzLiNtYXgpO1xuICAgICAgICB0aGlzLiNjYWxjdWxhdGVkU2l6ZSA9IDA7XG4gICAgICAgIHRoaXMuI3NpemVzID0gc2l6ZXM7XG4gICAgICAgIHRoaXMuI3JlbW92ZUl0ZW1TaXplID0gaW5kZXggPT4ge1xuICAgICAgICAgICAgdGhpcy4jY2FsY3VsYXRlZFNpemUgLT0gc2l6ZXNbaW5kZXhdO1xuICAgICAgICAgICAgc2l6ZXNbaW5kZXhdID0gMDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4jcmVxdWlyZVNpemUgPSAoaywgdiwgc2l6ZSwgc2l6ZUNhbGN1bGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBwcm92aXNpb25hbGx5IGFjY2VwdCBiYWNrZ3JvdW5kIGZldGNoZXMuXG4gICAgICAgICAgICAvLyBhY3R1YWwgdmFsdWUgc2l6ZSB3aWxsIGJlIGNoZWNrZWQgd2hlbiB0aGV5IHJldHVybi5cbiAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1Bvc0ludChzaXplKSkge1xuICAgICAgICAgICAgICAgIGlmIChzaXplQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzaXplQ2FsY3VsYXRpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemVDYWxjdWxhdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzaXplID0gc2l6ZUNhbGN1bGF0aW9uKHYsIGspO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUG9zSW50KHNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplQ2FsY3VsYXRpb24gcmV0dXJuIGludmFsaWQgKGV4cGVjdCBwb3NpdGl2ZSBpbnRlZ2VyKScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHNpemUgdmFsdWUgKG11c3QgYmUgcG9zaXRpdmUgaW50ZWdlcikuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1doZW4gbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgaXMgdXNlZCwgc2l6ZUNhbGN1bGF0aW9uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ29yIHNpemUgbXVzdCBiZSBzZXQuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuI2FkZEl0ZW1TaXplID0gKGluZGV4LCBzaXplLCBzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIHNpemVzW2luZGV4XSA9IHNpemU7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWF4U2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNpemUgPSB0aGlzLiNtYXhTaXplIC0gc2l6ZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLiNjYWxjdWxhdGVkU2l6ZSA+IG1heFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZXZpY3QodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4jY2FsY3VsYXRlZFNpemUgKz0gc2l6ZXNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5lbnRyeVNpemUgPSBzaXplO1xuICAgICAgICAgICAgICAgIHN0YXR1cy50b3RhbENhbGN1bGF0ZWRTaXplID0gdGhpcy4jY2FsY3VsYXRlZFNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgICNyZW1vdmVJdGVtU2l6ZSA9IF9pID0+IHsgfTtcbiAgICAjYWRkSXRlbVNpemUgPSAoX2ksIF9zLCBfc3QpID0+IHsgfTtcbiAgICAjcmVxdWlyZVNpemUgPSAoX2ssIF92LCBzaXplLCBzaXplQ2FsY3VsYXRpb24pID0+IHtcbiAgICAgICAgaWYgKHNpemUgfHwgc2l6ZUNhbGN1bGF0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3Qgc2V0IHNpemUgd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplIG9uIGNhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgICAqI2luZGV4ZXMoeyBhbGxvd1N0YWxlID0gdGhpcy5hbGxvd1N0YWxlIH0gPSB7fSkge1xuICAgICAgICBpZiAodGhpcy4jc2l6ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuI3RhaWw7IHRydWU7KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLiNpc1ZhbGlkSW5kZXgoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhbGxvd1N0YWxlIHx8ICF0aGlzLiNpc1N0YWxlKGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpID09PSB0aGlzLiNoZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuI3ByZXZbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICojcmluZGV4ZXMoeyBhbGxvd1N0YWxlID0gdGhpcy5hbGxvd1N0YWxlIH0gPSB7fSkge1xuICAgICAgICBpZiAodGhpcy4jc2l6ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuI2hlYWQ7IHRydWU7KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLiNpc1ZhbGlkSW5kZXgoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhbGxvd1N0YWxlIHx8ICF0aGlzLiNpc1N0YWxlKGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpID09PSB0aGlzLiN0YWlsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuI25leHRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICNpc1ZhbGlkSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIChpbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLiNrZXlNYXAuZ2V0KHRoaXMuI2tleUxpc3RbaW5kZXhdKSA9PT0gaW5kZXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgYFtrZXksIHZhbHVlXWAgcGFpcnMsXG4gICAgICogaW4gb3JkZXIgZnJvbSBtb3N0IHJlY2VudGx5IHVzZWQgdG8gbGVhc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqZW50cmllcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbExpc3RbaV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuI2tleUxpc3RbaV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIFt0aGlzLiNrZXlMaXN0W2ldLCB0aGlzLiN2YWxMaXN0W2ldXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnZlcnNlIG9yZGVyIHZlcnNpb24gb2Yge0BsaW5rIExSVUNhY2hlLmVudHJpZXN9XG4gICAgICpcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgYFtrZXksIHZhbHVlXWAgcGFpcnMsXG4gICAgICogaW4gb3JkZXIgZnJvbSBsZWFzdCByZWNlbnRseSB1c2VkIHRvIG1vc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqcmVudHJpZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNyaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jdmFsTGlzdFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy4ja2V5TGlzdFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgW3RoaXMuI2tleUxpc3RbaV0sIHRoaXMuI3ZhbExpc3RbaV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyB0aGUga2V5cyBpbiB0aGUgY2FjaGUsXG4gICAgICogaW4gb3JkZXIgZnJvbSBtb3N0IHJlY2VudGx5IHVzZWQgdG8gbGVhc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqa2V5cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgayA9IHRoaXMuI2tleUxpc3RbaV07XG4gICAgICAgICAgICBpZiAoayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnZlcnNlIG9yZGVyIHZlcnNpb24gb2Yge0BsaW5rIExSVUNhY2hlLmtleXN9XG4gICAgICpcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgdGhlIGtleXMgaW4gdGhlIGNhY2hlLFxuICAgICAqIGluIG9yZGVyIGZyb20gbGVhc3QgcmVjZW50bHkgdXNlZCB0byBtb3N0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKnJrZXlzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jcmluZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgayA9IHRoaXMuI2tleUxpc3RbaV07XG4gICAgICAgICAgICBpZiAoayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgdGhlIHZhbHVlcyBpbiB0aGUgY2FjaGUsXG4gICAgICogaW4gb3JkZXIgZnJvbSBtb3N0IHJlY2VudGx5IHVzZWQgdG8gbGVhc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqdmFsdWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEludmVyc2Ugb3JkZXIgdmVyc2lvbiBvZiB7QGxpbmsgTFJVQ2FjaGUudmFsdWVzfVxuICAgICAqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIGNhY2hlLFxuICAgICAqIGluIG9yZGVyIGZyb20gbGVhc3QgcmVjZW50bHkgdXNlZCB0byBtb3N0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKnJ2YWx1ZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNyaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGluZyBvdmVyIHRoZSBjYWNoZSBpdHNlbGYgeWllbGRzIHRoZSBzYW1lIHJlc3VsdHMgYXNcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuZW50cmllc31cbiAgICAgKi9cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIFN0cmluZyB2YWx1ZSB0aGF0IGlzIHVzZWQgaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBkZWZhdWx0IHN0cmluZ1xuICAgICAqIGRlc2NyaXB0aW9uIG9mIGFuIG9iamVjdC4gQ2FsbGVkIGJ5IHRoZSBidWlsdC1pbiBtZXRob2RcbiAgICAgKiBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gICAgICovXG4gICAgW1N5bWJvbC50b1N0cmluZ1RhZ10gPSAnTFJVQ2FjaGUnO1xuICAgIC8qKlxuICAgICAqIEZpbmQgYSB2YWx1ZSBmb3Igd2hpY2ggdGhlIHN1cHBsaWVkIGZuIG1ldGhvZCByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLFxuICAgICAqIHNpbWlsYXIgdG8gYEFycmF5LmZpbmQoKWAuIGZuIGlzIGNhbGxlZCBhcyBgZm4odmFsdWUsIGtleSwgY2FjaGUpYC5cbiAgICAgKi9cbiAgICBmaW5kKGZuLCBnZXRPcHRpb25zID0ge30pIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpXG4gICAgICAgICAgICAgICAgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgOiB2O1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBpZiAoZm4odmFsdWUsIHRoaXMuI2tleUxpc3RbaV0sIHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHRoaXMuI2tleUxpc3RbaV0sIGdldE9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGwgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uIG9uIGVhY2ggaXRlbSBpbiB0aGUgY2FjaGUsIGluIG9yZGVyIGZyb20gbW9zdFxuICAgICAqIHJlY2VudGx5IHVzZWQgdG8gbGVhc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKlxuICAgICAqIGBmbmAgaXMgY2FsbGVkIGFzIGBmbih2YWx1ZSwga2V5LCBjYWNoZSlgLlxuICAgICAqXG4gICAgICogSWYgYHRoaXNwYCBpcyBwcm92aWRlZCwgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgaW4gdGhlIGB0aGlzYC1jb250ZXh0IG9mXG4gICAgICogdGhlIHByb3ZpZGVkIG9iamVjdCwgb3IgdGhlIGNhY2hlIGlmIG5vIGB0aGlzcGAgb2JqZWN0IGlzIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogRG9lcyBub3QgdXBkYXRlIGFnZSBvciByZWNlbnR5IG9mIHVzZSwgb3IgaXRlcmF0ZSBvdmVyIHN0YWxlIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmb3JFYWNoKGZuLCB0aGlzcCA9IHRoaXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpXG4gICAgICAgICAgICAgICAgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgOiB2O1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBmbi5jYWxsKHRoaXNwLCB2YWx1ZSwgdGhpcy4ja2V5TGlzdFtpXSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHNhbWUgYXMge0BsaW5rIExSVUNhY2hlLmZvckVhY2h9IGJ1dCBpdGVtcyBhcmUgaXRlcmF0ZWQgb3ZlciBpblxuICAgICAqIHJldmVyc2Ugb3JkZXIuICAoaWUsIGxlc3MgcmVjZW50bHkgdXNlZCBpdGVtcyBhcmUgaXRlcmF0ZWQgb3ZlciBmaXJzdC4pXG4gICAgICovXG4gICAgcmZvckVhY2goZm4sIHRoaXNwID0gdGhpcykge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jcmluZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpXG4gICAgICAgICAgICAgICAgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgOiB2O1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBmbi5jYWxsKHRoaXNwLCB2YWx1ZSwgdGhpcy4ja2V5TGlzdFtpXSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlIGFueSBzdGFsZSBlbnRyaWVzLiBSZXR1cm5zIHRydWUgaWYgYW55dGhpbmcgd2FzIHJlbW92ZWQsXG4gICAgICogZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1cmdlU3RhbGUoKSB7XG4gICAgICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNyaW5kZXhlcyh7IGFsbG93U3RhbGU6IHRydWUgfSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNpc1N0YWxlKGkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGVsZXRlKHRoaXMuI2tleUxpc3RbaV0sICdleHBpcmUnKTtcbiAgICAgICAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVsZXRlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBleHRlbmRlZCBpbmZvIGFib3V0IGEgZ2l2ZW4gZW50cnksIHRvIGdldCBpdHMgdmFsdWUsIHNpemUsIGFuZFxuICAgICAqIFRUTCBpbmZvIHNpbXVsdGFuZW91c2x5LiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQuXG4gICAgICpcbiAgICAgKiBVbmxpa2Uge0BsaW5rIExSVUNhY2hlI2R1bXB9LCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBwb3J0YWJsZSBhbmQgc3Vydml2ZVxuICAgICAqIHNlcmlhbGl6YXRpb24sIHRoZSBgc3RhcnRgIHZhbHVlIGlzIGFsd2F5cyB0aGUgY3VycmVudCB0aW1lc3RhbXAsIGFuZCB0aGVcbiAgICAgKiBgdHRsYCBpcyBhIGNhbGN1bGF0ZWQgcmVtYWluaW5nIHRpbWUgdG8gbGl2ZSAobmVnYXRpdmUgaWYgZXhwaXJlZCkuXG4gICAgICpcbiAgICAgKiBBbHdheXMgcmV0dXJucyBzdGFsZSB2YWx1ZXMsIGlmIHRoZWlyIGluZm8gaXMgZm91bmQgaW4gdGhlIGNhY2hlLCBzbyBiZVxuICAgICAqIHN1cmUgdG8gY2hlY2sgZm9yIGV4cGlyYXRpb25zIChpZSwgYSBuZWdhdGl2ZSB7QGxpbmsgTFJVQ2FjaGUuRW50cnkjdHRsfSlcbiAgICAgKiBpZiByZWxldmFudC5cbiAgICAgKi9cbiAgICBpbmZvKGtleSkge1xuICAgICAgICBjb25zdCBpID0gdGhpcy4ja2V5TWFwLmdldChrZXkpO1xuICAgICAgICBpZiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godilcbiAgICAgICAgICAgID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgOiB2O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0geyB2YWx1ZSB9O1xuICAgICAgICBpZiAodGhpcy4jdHRscyAmJiB0aGlzLiNzdGFydHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHR0bCA9IHRoaXMuI3R0bHNbaV07XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuI3N0YXJ0c1tpXTtcbiAgICAgICAgICAgIGlmICh0dGwgJiYgc3RhcnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW4gPSB0dGwgLSAocGVyZi5ub3coKSAtIHN0YXJ0KTtcbiAgICAgICAgICAgICAgICBlbnRyeS50dGwgPSByZW1haW47XG4gICAgICAgICAgICAgICAgZW50cnkuc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLiNzaXplcykge1xuICAgICAgICAgICAgZW50cnkuc2l6ZSA9IHRoaXMuI3NpemVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIGFycmF5IG9mIFtrZXksIHtAbGluayBMUlVDYWNoZS5FbnRyeX1dIHR1cGxlcyB3aGljaCBjYW4gYmVcbiAgICAgKiBwYXNzZWQgdG8ge0BsaW5rIExSTFVDYWNoZSNsb2FkfS5cbiAgICAgKlxuICAgICAqIFRoZSBgc3RhcnRgIGZpZWxkcyBhcmUgY2FsY3VsYXRlZCByZWxhdGl2ZSB0byBhIHBvcnRhYmxlIGBEYXRlLm5vdygpYFxuICAgICAqIHRpbWVzdGFtcCwgZXZlbiBpZiBgcGVyZm9ybWFuY2Uubm93KClgIGlzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIFN0YWxlIGVudHJpZXMgYXJlIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgYGR1bXBgLCBldmVuIGlmXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmFsbG93U3RhbGV9IGlzIGZhbHNlLlxuICAgICAqXG4gICAgICogTm90ZTogdGhpcyByZXR1cm5zIGFuIGFjdHVhbCBhcnJheSwgbm90IGEgZ2VuZXJhdG9yLCBzbyBpdCBjYW4gYmUgbW9yZVxuICAgICAqIGVhc2lseSBwYXNzZWQgYXJvdW5kLlxuICAgICAqL1xuICAgIGR1bXAoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcyh7IGFsbG93U3RhbGU6IHRydWUgfSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuI2tleUxpc3RbaV07XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godilcbiAgICAgICAgICAgICAgICA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICA6IHY7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBrZXkgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0geyB2YWx1ZSB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuI3R0bHMgJiYgdGhpcy4jc3RhcnRzKSB7XG4gICAgICAgICAgICAgICAgZW50cnkudHRsID0gdGhpcy4jdHRsc1tpXTtcbiAgICAgICAgICAgICAgICAvLyBhbHdheXMgZHVtcCB0aGUgc3RhcnQgcmVsYXRpdmUgdG8gYSBwb3J0YWJsZSB0aW1lc3RhbXBcbiAgICAgICAgICAgICAgICAvLyBpdCdzIG9rIGZvciB0aGlzIHRvIGJlIGEgYml0IHNsb3csIGl0J3MgYSByYXJlIG9wZXJhdGlvbi5cbiAgICAgICAgICAgICAgICBjb25zdCBhZ2UgPSBwZXJmLm5vdygpIC0gdGhpcy4jc3RhcnRzW2ldO1xuICAgICAgICAgICAgICAgIGVudHJ5LnN0YXJ0ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC0gYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLiNzaXplcykge1xuICAgICAgICAgICAgICAgIGVudHJ5LnNpemUgPSB0aGlzLiNzaXplc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFyci51bnNoaWZ0KFtrZXksIGVudHJ5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIGNhY2hlIGFuZCBsb2FkIGluIHRoZSBpdGVtcyBpbiBlbnRyaWVzIGluIHRoZSBvcmRlciBsaXN0ZWQuXG4gICAgICpcbiAgICAgKiBUaGUgc2hhcGUgb2YgdGhlIHJlc3VsdGluZyBjYWNoZSBtYXkgYmUgZGlmZmVyZW50IGlmIHRoZSBzYW1lIG9wdGlvbnMgYXJlXG4gICAgICogbm90IHVzZWQgaW4gYm90aCBjYWNoZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYHN0YXJ0YCBmaWVsZHMgYXJlIGFzc3VtZWQgdG8gYmUgY2FsY3VsYXRlZCByZWxhdGl2ZSB0byBhIHBvcnRhYmxlXG4gICAgICogYERhdGUubm93KClgIHRpbWVzdGFtcCwgZXZlbiBpZiBgcGVyZm9ybWFuY2Uubm93KClgIGlzIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBsb2FkKGFycikge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgZW50cnldIG9mIGFycikge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgLy8gZW50cnkuc3RhcnQgaXMgYSBwb3J0YWJsZSB0aW1lc3RhbXAsIGJ1dCB3ZSBtYXkgYmUgdXNpbmdcbiAgICAgICAgICAgICAgICAvLyBub2RlJ3MgcGVyZm9ybWFuY2Uubm93KCksIHNvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0LCBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gd2UgZ2V0IHRoZSBpbnRlbmRlZCByZW1haW5pbmcgVFRMLCBubyBtYXR0ZXIgaG93IGxvbmcgaXQnc1xuICAgICAgICAgICAgICAgIC8vIGJlZW4gb24gaWNlLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gaXQncyBvayBmb3IgdGhpcyB0byBiZSBhIGJpdCBzbG93LCBpdCdzIGEgcmFyZSBvcGVyYXRpb24uXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlID0gRGF0ZS5ub3coKSAtIGVudHJ5LnN0YXJ0O1xuICAgICAgICAgICAgICAgIGVudHJ5LnN0YXJ0ID0gcGVyZi5ub3coKSAtIGFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0KGtleSwgZW50cnkudmFsdWUsIGVudHJ5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGQgYSB2YWx1ZSB0byB0aGUgY2FjaGUuXG4gICAgICpcbiAgICAgKiBOb3RlOiBpZiBgdW5kZWZpbmVkYCBpcyBzcGVjaWZpZWQgYXMgYSB2YWx1ZSwgdGhpcyBpcyBhbiBhbGlhcyBmb3JcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUjZGVsZXRlfVxuICAgICAqXG4gICAgICogRmllbGRzIG9uIHRoZSB7QGxpbmsgTFJVQ2FjaGUuU2V0T3B0aW9uc30gb3B0aW9ucyBwYXJhbSB3aWxsIG92ZXJyaWRlXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yIG9wdGlvbnMgZm9yIHRoZSBzY29wZVxuICAgICAqIG9mIHRoaXMgc2luZ2xlIGBzZXQoKWAgb3BlcmF0aW9uLlxuICAgICAqXG4gICAgICogSWYgYHN0YXJ0YCBpcyBwcm92aWRlZCwgdGhlbiB0aGF0IHdpbGwgc2V0IHRoZSBlZmZlY3RpdmUgc3RhcnRcbiAgICAgKiB0aW1lIGZvciB0aGUgVFRMIGNhbGN1bGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBtdXN0IGJlIGEgcHJldmlvdXNcbiAgICAgKiB2YWx1ZSBvZiBgcGVyZm9ybWFuY2Uubm93KClgIGlmIHN1cHBvcnRlZCwgb3IgYSBwcmV2aW91cyB2YWx1ZSBvZlxuICAgICAqIGBEYXRlLm5vdygpYCBpZiBub3QuXG4gICAgICpcbiAgICAgKiBPcHRpb25zIG9iamVjdCBtYXkgYWxzbyBpbmNsdWRlIGBzaXplYCwgd2hpY2ggd2lsbCBwcmV2ZW50XG4gICAgICogY2FsbGluZyB0aGUgYHNpemVDYWxjdWxhdGlvbmAgZnVuY3Rpb24gYW5kIGp1c3QgdXNlIHRoZSBzcGVjaWZpZWRcbiAgICAgKiBudW1iZXIgaWYgaXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBhbmQgYG5vRGlzcG9zZU9uU2V0YCB3aGljaFxuICAgICAqIHdpbGwgcHJldmVudCBjYWxsaW5nIGEgYGRpc3Bvc2VgIGZ1bmN0aW9uIGluIHRoZSBjYXNlIG9mXG4gICAgICogb3ZlcndyaXRlcy5cbiAgICAgKlxuICAgICAqIElmIHRoZSBgc2l6ZWAgKG9yIHJldHVybiB2YWx1ZSBvZiBgc2l6ZUNhbGN1bGF0aW9uYCkgZm9yIGEgZ2l2ZW5cbiAgICAgKiBlbnRyeSBpcyBncmVhdGVyIHRoYW4gYG1heEVudHJ5U2l6ZWAsIHRoZW4gdGhlIGl0ZW0gd2lsbCBub3QgYmVcbiAgICAgKiBhZGRlZCB0byB0aGUgY2FjaGUuXG4gICAgICpcbiAgICAgKiBXaWxsIHVwZGF0ZSB0aGUgcmVjZW5jeSBvZiB0aGUgZW50cnkuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAsIHRoZW4gdGhpcyBpcyBhbiBhbGlhcyBmb3JcbiAgICAgKiBgY2FjaGUuZGVsZXRlKGtleSlgLiBgdW5kZWZpbmVkYCBpcyBuZXZlciBzdG9yZWQgaW4gdGhlIGNhY2hlLlxuICAgICAqL1xuICAgIHNldChrLCB2LCBzZXRPcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGUoayk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHR0bCA9IHRoaXMudHRsLCBzdGFydCwgbm9EaXNwb3NlT25TZXQgPSB0aGlzLm5vRGlzcG9zZU9uU2V0LCBzaXplQ2FsY3VsYXRpb24gPSB0aGlzLnNpemVDYWxjdWxhdGlvbiwgc3RhdHVzLCB9ID0gc2V0T3B0aW9ucztcbiAgICAgICAgbGV0IHsgbm9VcGRhdGVUVEwgPSB0aGlzLm5vVXBkYXRlVFRMIH0gPSBzZXRPcHRpb25zO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy4jcmVxdWlyZVNpemUoaywgdiwgc2V0T3B0aW9ucy5zaXplIHx8IDAsIHNpemVDYWxjdWxhdGlvbik7XG4gICAgICAgIC8vIGlmIHRoZSBpdGVtIGRvZXNuJ3QgZml0LCBkb24ndCBkbyBhbnl0aGluZ1xuICAgICAgICAvLyBOQjogbWF4RW50cnlTaXplIHNldCB0byBtYXhTaXplIGJ5IGRlZmF1bHRcbiAgICAgICAgaWYgKHRoaXMubWF4RW50cnlTaXplICYmIHNpemUgPiB0aGlzLm1heEVudHJ5U2l6ZSkge1xuICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQgPSAnbWlzcyc7XG4gICAgICAgICAgICAgICAgc3RhdHVzLm1heEVudHJ5U2l6ZUV4Y2VlZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhdmUgdG8gZGVsZXRlLCBpbiBjYXNlIHNvbWV0aGluZyBpcyB0aGVyZSBhbHJlYWR5LlxuICAgICAgICAgICAgdGhpcy4jZGVsZXRlKGssICdzZXQnKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuI3NpemUgPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gYWRkaXRpb25cbiAgICAgICAgICAgIGluZGV4ID0gKHRoaXMuI3NpemUgPT09IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMuI3RhaWxcbiAgICAgICAgICAgICAgICA6IHRoaXMuI2ZyZWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy4jZnJlZS5wb3AoKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuI3NpemUgPT09IHRoaXMuI21heFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLiNldmljdChmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy4jc2l6ZSk7XG4gICAgICAgICAgICB0aGlzLiNrZXlMaXN0W2luZGV4XSA9IGs7XG4gICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IHY7XG4gICAgICAgICAgICB0aGlzLiNrZXlNYXAuc2V0KGssIGluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuI25leHRbdGhpcy4jdGFpbF0gPSBpbmRleDtcbiAgICAgICAgICAgIHRoaXMuI3ByZXZbaW5kZXhdID0gdGhpcy4jdGFpbDtcbiAgICAgICAgICAgIHRoaXMuI3RhaWwgPSBpbmRleDtcbiAgICAgICAgICAgIHRoaXMuI3NpemUrKztcbiAgICAgICAgICAgIHRoaXMuI2FkZEl0ZW1TaXplKGluZGV4LCBzaXplLCBzdGF0dXMpO1xuICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICBzdGF0dXMuc2V0ID0gJ2FkZCc7XG4gICAgICAgICAgICBub1VwZGF0ZVRUTCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gdXBkYXRlXG4gICAgICAgICAgICB0aGlzLiNtb3ZlVG9UYWlsKGluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbCA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHYgIT09IG9sZFZhbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNGZXRjaE1ldGhvZCAmJiB0aGlzLiNpc0JhY2tncm91bmRGZXRjaChvbGRWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9sZFZhbC5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ3JlcGxhY2VkJykpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IF9fc3RhbGVXaGlsZUZldGNoaW5nOiBzIH0gPSBvbGRWYWw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzICE9PSB1bmRlZmluZWQgJiYgIW5vRGlzcG9zZU9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2U/LihzLCBrLCAnc2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQ/LnB1c2goW3MsIGssICdzZXQnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW5vRGlzcG9zZU9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlPy4ob2xkVmFsLCBrLCAnc2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQ/LnB1c2goW29sZFZhbCwgaywgJ3NldCddKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLiNyZW1vdmVJdGVtU2l6ZShpbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jYWRkSXRlbVNpemUoaW5kZXgsIHNpemUsIHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSB2O1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnNldCA9ICdyZXBsYWNlJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBvbGRWYWwgJiYgdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2gob2xkVmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBvbGRWYWwuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogb2xkVmFsO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQgPSAndXBkYXRlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHRsICE9PSAwICYmICF0aGlzLiN0dGxzKSB7XG4gICAgICAgICAgICB0aGlzLiNpbml0aWFsaXplVFRMVHJhY2tpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4jdHRscykge1xuICAgICAgICAgICAgaWYgKCFub1VwZGF0ZVRUTCkge1xuICAgICAgICAgICAgICAgIHRoaXMuI3NldEl0ZW1UVEwoaW5kZXgsIHR0bCwgc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICB0aGlzLiNzdGF0dXNUVEwoc3RhdHVzLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub0Rpc3Bvc2VPblNldCAmJiB0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIgJiYgdGhpcy4jZGlzcG9zZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGR0ID0gdGhpcy4jZGlzcG9zZWQ7XG4gICAgICAgICAgICBsZXQgdGFzaztcbiAgICAgICAgICAgIHdoaWxlICgodGFzayA9IGR0Py5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlcj8uKC4uLnRhc2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmljdCB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBpdGVtLCByZXR1cm5pbmcgaXRzIHZhbHVlIG9yXG4gICAgICogYHVuZGVmaW5lZGAgaWYgY2FjaGUgaXMgZW1wdHkuXG4gICAgICovXG4gICAgcG9wKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuI3NpemUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLiN2YWxMaXN0W3RoaXMuI2hlYWRdO1xuICAgICAgICAgICAgICAgIHRoaXMuI2V2aWN0KHRydWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwuX19zdGFsZVdoaWxlRmV0Y2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwuX19zdGFsZVdoaWxlRmV0Y2hpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyICYmIHRoaXMuI2Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLiNkaXNwb3NlZDtcbiAgICAgICAgICAgICAgICBsZXQgdGFzaztcbiAgICAgICAgICAgICAgICB3aGlsZSAoKHRhc2sgPSBkdD8uc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyPy4oLi4udGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICNldmljdChmcmVlKSB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSB0aGlzLiNoZWFkO1xuICAgICAgICBjb25zdCBrID0gdGhpcy4ja2V5TGlzdFtoZWFkXTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaGVhZF07XG4gICAgICAgIGlmICh0aGlzLiNoYXNGZXRjaE1ldGhvZCAmJiB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgdi5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ2V2aWN0ZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy4jaGFzRGlzcG9zZSB8fCB0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZT8uKHYsIGssICdldmljdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkPy5wdXNoKFt2LCBrLCAnZXZpY3QnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jcmVtb3ZlSXRlbVNpemUoaGVhZCk7XG4gICAgICAgIC8vIGlmIHdlIGFyZW4ndCBhYm91dCB0byB1c2UgdGhlIGluZGV4LCB0aGVuIG51bGwgdGhlc2Ugb3V0XG4gICAgICAgIGlmIChmcmVlKSB7XG4gICAgICAgICAgICB0aGlzLiNrZXlMaXN0W2hlYWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtoZWFkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuI2ZyZWUucHVzaChoZWFkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4jc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy4jaGVhZCA9IHRoaXMuI3RhaWwgPSAwO1xuICAgICAgICAgICAgdGhpcy4jZnJlZS5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jaGVhZCA9IHRoaXMuI25leHRbaGVhZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4ja2V5TWFwLmRlbGV0ZShrKTtcbiAgICAgICAgdGhpcy4jc2l6ZS0tO1xuICAgICAgICByZXR1cm4gaGVhZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBrZXkgaXMgaW4gdGhlIGNhY2hlLCB3aXRob3V0IHVwZGF0aW5nIHRoZSByZWNlbmN5IG9mIHVzZS5cbiAgICAgKiBXaWxsIHJldHVybiBmYWxzZSBpZiB0aGUgaXRlbSBpcyBzdGFsZSwgZXZlbiB0aG91Z2ggaXQgaXMgdGVjaG5pY2FsbHlcbiAgICAgKiBpbiB0aGUgY2FjaGUuXG4gICAgICpcbiAgICAgKiBDaGVjayBpZiBhIGtleSBpcyBpbiB0aGUgY2FjaGUsIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHJlY2VuY3kgb2ZcbiAgICAgKiB1c2UuIEFnZSBpcyB1cGRhdGVkIGlmIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS51cGRhdGVBZ2VPbkhhc30gaXMgc2V0XG4gICAgICogdG8gYHRydWVgIGluIGVpdGhlciB0aGUgb3B0aW9ucyBvciB0aGUgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBXaWxsIHJldHVybiBgZmFsc2VgIGlmIHRoZSBpdGVtIGlzIHN0YWxlLCBldmVuIHRob3VnaCBpdCBpcyB0ZWNobmljYWxseSBpblxuICAgICAqIHRoZSBjYWNoZS4gVGhlIGRpZmZlcmVuY2UgY2FuIGJlIGRldGVybWluZWQgKGlmIGl0IG1hdHRlcnMpIGJ5IHVzaW5nIGFcbiAgICAgKiBgc3RhdHVzYCBhcmd1bWVudCwgYW5kIGluc3BlY3RpbmcgdGhlIGBoYXNgIGZpZWxkLlxuICAgICAqXG4gICAgICogV2lsbCBub3QgdXBkYXRlIGl0ZW0gYWdlIHVubGVzc1xuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS51cGRhdGVBZ2VPbkhhc30gaXMgc2V0LlxuICAgICAqL1xuICAgIGhhcyhrLCBoYXNPcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgeyB1cGRhdGVBZ2VPbkhhcyA9IHRoaXMudXBkYXRlQWdlT25IYXMsIHN0YXR1cyB9ID0gaGFzT3B0aW9ucztcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpICYmXG4gICAgICAgICAgICAgICAgdi5fX3N0YWxlV2hpbGVGZXRjaGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLiNpc1N0YWxlKGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVBZ2VPbkhhcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiN1cGRhdGVJdGVtQWdlKGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuaGFzID0gJ2hpdCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3N0YXR1c1RUTChzdGF0dXMsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuaGFzID0gJ3N0YWxlJztcbiAgICAgICAgICAgICAgICB0aGlzLiNzdGF0dXNUVEwoc3RhdHVzLCBpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICBzdGF0dXMuaGFzID0gJ21pc3MnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTGlrZSB7QGxpbmsgTFJVQ2FjaGUjZ2V0fSBidXQgZG9lc24ndCB1cGRhdGUgcmVjZW5jeSBvciBkZWxldGUgc3RhbGVcbiAgICAgKiBpdGVtcy5cbiAgICAgKlxuICAgICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGl0ZW0gaXMgc3RhbGUsIHVubGVzc1xuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5hbGxvd1N0YWxlfSBpcyBzZXQuXG4gICAgICovXG4gICAgcGVlayhrLCBwZWVrT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHsgYWxsb3dTdGFsZSA9IHRoaXMuYWxsb3dTdGFsZSB9ID0gcGVla09wdGlvbnM7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICghYWxsb3dTdGFsZSAmJiB0aGlzLiNpc1N0YWxlKGluZGV4KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgIC8vIGVpdGhlciBzdGFsZSBhbmQgYWxsb3dlZCwgb3IgZm9yY2luZyBhIHJlZnJlc2ggb2Ygbm9uLXN0YWxlIHZhbHVlXG4gICAgICAgIHJldHVybiB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgOiB2O1xuICAgIH1cbiAgICAjYmFja2dyb3VuZEZldGNoKGssIGluZGV4LCBvcHRpb25zLCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHYgPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWMgPSBuZXcgQUMoKTtcbiAgICAgICAgY29uc3QgeyBzaWduYWwgfSA9IG9wdGlvbnM7XG4gICAgICAgIC8vIHdoZW4vaWYgb3VyIEFDIHNpZ25hbHMsIHRoZW4gc3RvcCBsaXN0ZW5pbmcgdG8gdGhlaXJzLlxuICAgICAgICBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gYWMuYWJvcnQoc2lnbmFsLnJlYXNvbiksIHtcbiAgICAgICAgICAgIHNpZ25hbDogYWMuc2lnbmFsLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZmV0Y2hPcHRzID0ge1xuICAgICAgICAgICAgc2lnbmFsOiBhYy5zaWduYWwsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2IgPSAodiwgdXBkYXRlQ2FjaGUgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhYm9ydGVkIH0gPSBhYy5zaWduYWw7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVBYm9ydCA9IG9wdGlvbnMuaWdub3JlRmV0Y2hBYm9ydCAmJiB2ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWJvcnRlZCAmJiAhdXBkYXRlQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hBYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hFcnJvciA9IGFjLnNpZ25hbC5yZWFzb247XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVBYm9ydClcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoQWJvcnRJZ25vcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhYm9ydGVkICYmICFpZ25vcmVBYm9ydCAmJiAhdXBkYXRlQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hGYWlsKGFjLnNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWl0aGVyIHdlIGRpZG4ndCBhYm9ydCwgYW5kIGFyZSBzdGlsbCBoZXJlLCBvciB3ZSBkaWQsIGFuZCBpZ25vcmVkXG4gICAgICAgICAgICBjb25zdCBiZiA9IHA7XG4gICAgICAgICAgICBpZiAodGhpcy4jdmFsTGlzdFtpbmRleF0gPT09IHApIHtcbiAgICAgICAgICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZi5fX3N0YWxlV2hpbGVGZXRjaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSBiZi5fX3N0YWxlV2hpbGVGZXRjaGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2RlbGV0ZShrLCAnZmV0Y2gnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoaywgdiwgZmV0Y2hPcHRzLm9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBlYiA9IChlcikgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hSZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hFcnJvciA9IGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZldGNoRmFpbChlcik7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZldGNoRmFpbCA9IChlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhYm9ydGVkIH0gPSBhYy5zaWduYWw7XG4gICAgICAgICAgICBjb25zdCBhbGxvd1N0YWxlQWJvcnRlZCA9IGFib3J0ZWQgJiYgb3B0aW9ucy5hbGxvd1N0YWxlT25GZXRjaEFib3J0O1xuICAgICAgICAgICAgY29uc3QgYWxsb3dTdGFsZSA9IGFsbG93U3RhbGVBYm9ydGVkIHx8IG9wdGlvbnMuYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgICAgICAgICBjb25zdCBub0RlbGV0ZSA9IGFsbG93U3RhbGUgfHwgb3B0aW9ucy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgICAgICAgICBjb25zdCBiZiA9IHA7XG4gICAgICAgICAgICBpZiAodGhpcy4jdmFsTGlzdFtpbmRleF0gPT09IHApIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBhbGxvdyBzdGFsZSBvbiBmZXRjaCByZWplY3Rpb25zLCB0aGVuIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXRcbiAgICAgICAgICAgICAgICAvLyB0aGUgc3RhbGUgdmFsdWUgaXMgbm90IHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuXG4gICAgICAgICAgICAgICAgY29uc3QgZGVsID0gIW5vRGVsZXRlIHx8IGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGRlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNkZWxldGUoaywgJ2ZldGNoJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhbGxvd1N0YWxlQWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCByZXBsYWNlIHRoZSAqcHJvbWlzZSogd2l0aCB0aGUgc3RhbGUgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGFyZSBkb25lIHdpdGggdGhlIHByb21pc2UgYXQgdGhpcyBwb2ludC5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGVhdmUgaXQgdW50b3VjaGVkIGlmIHdlJ3JlIHN0aWxsIHdhaXRpbmcgZm9yIGFuXG4gICAgICAgICAgICAgICAgICAgIC8vIGFib3J0ZWQgYmFja2dyb3VuZCBmZXRjaCB0aGF0IGhhc24ndCB5ZXQgcmV0dXJuZWQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFsbG93U3RhbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zdGF0dXMgJiYgYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5yZXR1cm5lZFN0YWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYmYuX19yZXR1cm5lZCA9PT0gYmYpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcGNhbGwgPSAocmVzLCByZWopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZtcCA9IHRoaXMuI2ZldGNoTWV0aG9kPy4oaywgdiwgZmV0Y2hPcHRzKTtcbiAgICAgICAgICAgIGlmIChmbXAgJiYgZm1wIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGZtcC50aGVuKHYgPT4gcmVzKHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHYpLCByZWopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWdub3JlZCwgd2UgZ28gdW50aWwgd2UgZmluaXNoLCByZWdhcmRsZXNzLlxuICAgICAgICAgICAgLy8gZGVmZXIgY2hlY2sgdW50aWwgd2UgYXJlIGFjdHVhbGx5IGFib3J0aW5nLFxuICAgICAgICAgICAgLy8gc28gZmV0Y2hNZXRob2QgY2FuIG92ZXJyaWRlLlxuICAgICAgICAgICAgYWMuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pZ25vcmVGZXRjaEFib3J0IHx8XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCkge1xuICAgICAgICAgICAgICAgICAgICByZXModW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBpdCBldmVudHVhbGx5IHJlc29sdmVzLCB1cGRhdGUgdGhlIGNhY2hlLlxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5hbGxvd1N0YWxlT25GZXRjaEFib3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2ID0+IGNiKHYsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChvcHRpb25zLnN0YXR1cylcbiAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoRGlzcGF0Y2hlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZShwY2FsbCkudGhlbihjYiwgZWIpO1xuICAgICAgICBjb25zdCBiZiA9IE9iamVjdC5hc3NpZ24ocCwge1xuICAgICAgICAgICAgX19hYm9ydENvbnRyb2xsZXI6IGFjLFxuICAgICAgICAgICAgX19zdGFsZVdoaWxlRmV0Y2hpbmc6IHYsXG4gICAgICAgICAgICBfX3JldHVybmVkOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gaW50ZXJuYWwsIGRvbid0IGV4cG9zZSBzdGF0dXMuXG4gICAgICAgICAgICB0aGlzLnNldChrLCBiZiwgeyAuLi5mZXRjaE9wdHMub3B0aW9ucywgc3RhdHVzOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IGJmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiZjtcbiAgICB9XG4gICAgI2lzQmFja2dyb3VuZEZldGNoKHApIHtcbiAgICAgICAgaWYgKCF0aGlzLiNoYXNGZXRjaE1ldGhvZClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgYiA9IHA7XG4gICAgICAgIHJldHVybiAoISFiICYmXG4gICAgICAgICAgICBiIGluc3RhbmNlb2YgUHJvbWlzZSAmJlxuICAgICAgICAgICAgYi5oYXNPd25Qcm9wZXJ0eSgnX19zdGFsZVdoaWxlRmV0Y2hpbmcnKSAmJlxuICAgICAgICAgICAgYi5fX2Fib3J0Q29udHJvbGxlciBpbnN0YW5jZW9mIEFDKTtcbiAgICB9XG4gICAgYXN5bmMgZmV0Y2goaywgZmV0Y2hPcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgeyBcbiAgICAgICAgLy8gZ2V0IG9wdGlvbnNcbiAgICAgICAgYWxsb3dTdGFsZSA9IHRoaXMuYWxsb3dTdGFsZSwgdXBkYXRlQWdlT25HZXQgPSB0aGlzLnVwZGF0ZUFnZU9uR2V0LCBub0RlbGV0ZU9uU3RhbGVHZXQgPSB0aGlzLm5vRGVsZXRlT25TdGFsZUdldCwgXG4gICAgICAgIC8vIHNldCBvcHRpb25zXG4gICAgICAgIHR0bCA9IHRoaXMudHRsLCBub0Rpc3Bvc2VPblNldCA9IHRoaXMubm9EaXNwb3NlT25TZXQsIHNpemUgPSAwLCBzaXplQ2FsY3VsYXRpb24gPSB0aGlzLnNpemVDYWxjdWxhdGlvbiwgbm9VcGRhdGVUVEwgPSB0aGlzLm5vVXBkYXRlVFRMLCBcbiAgICAgICAgLy8gZmV0Y2ggZXhjbHVzaXZlIG9wdGlvbnNcbiAgICAgICAgbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uID0gdGhpcy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sIGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uID0gdGhpcy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbiwgaWdub3JlRmV0Y2hBYm9ydCA9IHRoaXMuaWdub3JlRmV0Y2hBYm9ydCwgYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCA9IHRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCwgY29udGV4dCwgZm9yY2VSZWZyZXNoID0gZmFsc2UsIHN0YXR1cywgc2lnbmFsLCB9ID0gZmV0Y2hPcHRpb25zO1xuICAgICAgICBpZiAoIXRoaXMuI2hhc0ZldGNoTWV0aG9kKSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5mZXRjaCA9ICdnZXQnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KGssIHtcbiAgICAgICAgICAgICAgICBhbGxvd1N0YWxlLFxuICAgICAgICAgICAgICAgIHVwZGF0ZUFnZU9uR2V0LFxuICAgICAgICAgICAgICAgIG5vRGVsZXRlT25TdGFsZUdldCxcbiAgICAgICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYWxsb3dTdGFsZSxcbiAgICAgICAgICAgIHVwZGF0ZUFnZU9uR2V0LFxuICAgICAgICAgICAgbm9EZWxldGVPblN0YWxlR2V0LFxuICAgICAgICAgICAgdHRsLFxuICAgICAgICAgICAgbm9EaXNwb3NlT25TZXQsXG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgc2l6ZUNhbGN1bGF0aW9uLFxuICAgICAgICAgICAgbm9VcGRhdGVUVEwsXG4gICAgICAgICAgICBub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sXG4gICAgICAgICAgICBhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbixcbiAgICAgICAgICAgIGFsbG93U3RhbGVPbkZldGNoQWJvcnQsXG4gICAgICAgICAgICBpZ25vcmVGZXRjaEFib3J0LFxuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgc2lnbmFsLFxuICAgICAgICB9O1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICBzdGF0dXMuZmV0Y2ggPSAnbWlzcyc7XG4gICAgICAgICAgICBjb25zdCBwID0gdGhpcy4jYmFja2dyb3VuZEZldGNoKGssIGluZGV4LCBvcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiAocC5fX3JldHVybmVkID0gcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBpbiBjYWNoZSwgbWF5YmUgYWxyZWFkeSBmZXRjaGluZ1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhbGUgPSBhbGxvd1N0YWxlICYmIHYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5mZXRjaCA9ICdpbmZsaWdodCc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5yZXR1cm5lZFN0YWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YWxlID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZyA6ICh2Ll9fcmV0dXJuZWQgPSB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIHdlIGZvcmNlIGEgcmVmcmVzaCwgdGhhdCBtZWFucyBkbyBOT1Qgc2VydmUgdGhlIGNhY2hlZCB2YWx1ZSxcbiAgICAgICAgICAgIC8vIHVubGVzcyB3ZSBhcmUgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcyBvZiByZWZyZXNoaW5nIHRoZSBjYWNoZS5cbiAgICAgICAgICAgIGNvbnN0IGlzU3RhbGUgPSB0aGlzLiNpc1N0YWxlKGluZGV4KTtcbiAgICAgICAgICAgIGlmICghZm9yY2VSZWZyZXNoICYmICFpc1N0YWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmZldGNoID0gJ2hpdCc7XG4gICAgICAgICAgICAgICAgdGhpcy4jbW92ZVRvVGFpbChpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUFnZU9uR2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZUl0ZW1BZ2UoaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNzdGF0dXNUVEwoc3RhdHVzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBvaywgaXQgaXMgc3RhbGUgb3IgYSBmb3JjZWQgcmVmcmVzaCwgYW5kIG5vdCBhbHJlYWR5IGZldGNoaW5nLlxuICAgICAgICAgICAgLy8gcmVmcmVzaCB0aGUgY2FjaGUuXG4gICAgICAgICAgICBjb25zdCBwID0gdGhpcy4jYmFja2dyb3VuZEZldGNoKGssIGluZGV4LCBvcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1N0YWxlID0gcC5fX3N0YWxlV2hpbGVGZXRjaGluZyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgc3RhbGVWYWwgPSBoYXNTdGFsZSAmJiBhbGxvd1N0YWxlO1xuICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5mZXRjaCA9IGlzU3RhbGUgPyAnc3RhbGUnIDogJ3JlZnJlc2gnO1xuICAgICAgICAgICAgICAgIGlmIChzdGFsZVZhbCAmJiBpc1N0YWxlKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMucmV0dXJuZWRTdGFsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RhbGVWYWwgPyBwLl9fc3RhbGVXaGlsZUZldGNoaW5nIDogKHAuX19yZXR1cm5lZCA9IHApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZvcmNlRmV0Y2goaywgZmV0Y2hPcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgdiA9IGF3YWl0IHRoaXMuZmV0Y2goaywgZmV0Y2hPcHRpb25zKTtcbiAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZmV0Y2goKSByZXR1cm5lZCB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIG1lbW8oaywgbWVtb09wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCBtZW1vTWV0aG9kID0gdGhpcy4jbWVtb01ldGhvZDtcbiAgICAgICAgaWYgKCFtZW1vTWV0aG9kKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIG1lbW9NZXRob2QgcHJvdmlkZWQgdG8gY29uc3RydWN0b3InKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNvbnRleHQsIGZvcmNlUmVmcmVzaCwgLi4ub3B0aW9ucyB9ID0gbWVtb09wdGlvbnM7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmdldChrLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFmb3JjZVJlZnJlc2ggJiYgdiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNvbnN0IHZ2ID0gbWVtb01ldGhvZChrLCB2LCB7XG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KGssIHZ2LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHZ2O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSB2YWx1ZSBmcm9tIHRoZSBjYWNoZS4gV2lsbCB1cGRhdGUgdGhlIHJlY2VuY3kgb2YgdGhlIGNhY2hlXG4gICAgICogZW50cnkgZm91bmQuXG4gICAgICpcbiAgICAgKiBJZiB0aGUga2V5IGlzIG5vdCBmb3VuZCwgZ2V0KCkgd2lsbCByZXR1cm4gYHVuZGVmaW5lZGAuXG4gICAgICovXG4gICAgZ2V0KGssIGdldE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IGFsbG93U3RhbGUgPSB0aGlzLmFsbG93U3RhbGUsIHVwZGF0ZUFnZU9uR2V0ID0gdGhpcy51cGRhdGVBZ2VPbkdldCwgbm9EZWxldGVPblN0YWxlR2V0ID0gdGhpcy5ub0RlbGV0ZU9uU3RhbGVHZXQsIHN0YXR1cywgfSA9IGdldE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICBjb25zdCBmZXRjaGluZyA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzVFRMKHN0YXR1cywgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2lzU3RhbGUoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmdldCA9ICdzdGFsZSc7XG4gICAgICAgICAgICAgICAgLy8gZGVsZXRlIG9ubHkgaWYgbm90IGFuIGluLWZsaWdodCBiYWNrZ3JvdW5kIGZldGNoXG4gICAgICAgICAgICAgICAgaWYgKCFmZXRjaGluZykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5vRGVsZXRlT25TdGFsZUdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGVsZXRlKGssICdleHBpcmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYmIGFsbG93U3RhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMucmV0dXJuZWRTdGFsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGxvd1N0YWxlID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1N0YWxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5fX3N0YWxlV2hpbGVGZXRjaGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMucmV0dXJuZWRTdGFsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbG93U3RhbGUgPyB2YWx1ZS5fX3N0YWxlV2hpbGVGZXRjaGluZyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0ID0gJ2hpdCc7XG4gICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgY3VycmVudGx5IGZldGNoaW5nIGl0LCB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIGl0IHlldFxuICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90IHN0YWxlLCB3aGljaCBtZWFucyB0aGlzIGlzbid0IGEgc3RhbGVXaGlsZVJlZmV0Y2hpbmcuXG4gICAgICAgICAgICAgICAgLy8gSWYgaXQncyBub3Qgc3RhbGUsIGFuZCBmZXRjaGluZywgQU5EIGhhcyBhIF9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgLy8gdmFsdWUsIHRoZW4gdGhhdCBtZWFucyB0aGUgdXNlciBmZXRjaGVkIHdpdGgge2ZvcmNlUmVmcmVzaDp0cnVlfSxcbiAgICAgICAgICAgICAgICAvLyBzbyBpdCdzIHNhZmUgdG8gcmV0dXJuIHRoYXQgdmFsdWUuXG4gICAgICAgICAgICAgICAgaWYgKGZldGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5fX3N0YWxlV2hpbGVGZXRjaGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy4jbW92ZVRvVGFpbChpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUFnZU9uR2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZUl0ZW1BZ2UoaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICBzdGF0dXMuZ2V0ID0gJ21pc3MnO1xuICAgICAgICB9XG4gICAgfVxuICAgICNjb25uZWN0KHAsIG4pIHtcbiAgICAgICAgdGhpcy4jcHJldltuXSA9IHA7XG4gICAgICAgIHRoaXMuI25leHRbcF0gPSBuO1xuICAgIH1cbiAgICAjbW92ZVRvVGFpbChpbmRleCkge1xuICAgICAgICAvLyBpZiB0YWlsIGFscmVhZHksIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgLy8gaWYgaGVhZCwgbW92ZSBoZWFkIHRvIG5leHRbaW5kZXhdXG4gICAgICAgIC8vIGVsc2VcbiAgICAgICAgLy8gICBtb3ZlIG5leHRbcHJldltpbmRleF1dIHRvIG5leHRbaW5kZXhdIChoZWFkIGhhcyBubyBwcmV2KVxuICAgICAgICAvLyAgIG1vdmUgcHJldltuZXh0W2luZGV4XV0gdG8gcHJldltpbmRleF1cbiAgICAgICAgLy8gcHJldltpbmRleF0gPSB0YWlsXG4gICAgICAgIC8vIG5leHRbdGFpbF0gPSBpbmRleFxuICAgICAgICAvLyB0YWlsID0gaW5kZXhcbiAgICAgICAgaWYgKGluZGV4ICE9PSB0aGlzLiN0YWlsKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuI2hlYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNoZWFkID0gdGhpcy4jbmV4dFtpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNjb25uZWN0KHRoaXMuI3ByZXZbaW5kZXhdLCB0aGlzLiNuZXh0W2luZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNjb25uZWN0KHRoaXMuI3RhaWwsIGluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuI3RhaWwgPSBpbmRleDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEga2V5IG91dCBvZiB0aGUgY2FjaGUuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGtleSB3YXMgZGVsZXRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGRlbGV0ZShrKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNkZWxldGUoaywgJ2RlbGV0ZScpO1xuICAgIH1cbiAgICAjZGVsZXRlKGssIHJlYXNvbikge1xuICAgICAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy4jc2l6ZSAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNjbGVhcihyZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jcmVtb3ZlSXRlbVNpemUoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdi5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ2RlbGV0ZWQnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy4jaGFzRGlzcG9zZSB8fCB0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZT8uKHYsIGssIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQ/LnB1c2goW3YsIGssIHJlYXNvbl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2tleU1hcC5kZWxldGUoayk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2tleUxpc3RbaW5kZXhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLiN0YWlsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiN0YWlsID0gdGhpcy4jcHJldltpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPT09IHRoaXMuI2hlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2hlYWQgPSB0aGlzLiNuZXh0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpID0gdGhpcy4jcHJldltpbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNuZXh0W3BpXSA9IHRoaXMuI25leHRbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmkgPSB0aGlzLiNuZXh0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI3ByZXZbbmldID0gdGhpcy4jcHJldltpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jc2l6ZS0tO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNmcmVlLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyICYmIHRoaXMuI2Rpc3Bvc2VkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGR0ID0gdGhpcy4jZGlzcG9zZWQ7XG4gICAgICAgICAgICBsZXQgdGFzaztcbiAgICAgICAgICAgIHdoaWxlICgodGFzayA9IGR0Py5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlcj8uKC4uLnRhc2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgY2FjaGUgZW50aXJlbHksIHRocm93aW5nIGF3YXkgYWxsIHZhbHVlcy5cbiAgICAgKi9cbiAgICBjbGVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NsZWFyKCdkZWxldGUnKTtcbiAgICB9XG4gICAgI2NsZWFyKHJlYXNvbikge1xuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIHRoaXMuI3JpbmRleGVzKHsgYWxsb3dTdGFsZTogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICAgICAgdi5fX2Fib3J0Q29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoJ2RlbGV0ZWQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrID0gdGhpcy4ja2V5TGlzdFtpbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZT8uKHYsIGssIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQ/LnB1c2goW3YsIGssIHJlYXNvbl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNrZXlNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy4jdmFsTGlzdC5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuI2tleUxpc3QuZmlsbCh1bmRlZmluZWQpO1xuICAgICAgICBpZiAodGhpcy4jdHRscyAmJiB0aGlzLiNzdGFydHMpIHtcbiAgICAgICAgICAgIHRoaXMuI3R0bHMuZmlsbCgwKTtcbiAgICAgICAgICAgIHRoaXMuI3N0YXJ0cy5maWxsKDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLiNzaXplcykge1xuICAgICAgICAgICAgdGhpcy4jc2l6ZXMuZmlsbCgwKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNoZWFkID0gMDtcbiAgICAgICAgdGhpcy4jdGFpbCA9IDA7XG4gICAgICAgIHRoaXMuI2ZyZWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy4jY2FsY3VsYXRlZFNpemUgPSAwO1xuICAgICAgICB0aGlzLiNzaXplID0gMDtcbiAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlciAmJiB0aGlzLiNkaXNwb3NlZCkge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLiNkaXNwb3NlZDtcbiAgICAgICAgICAgIGxldCB0YXNrO1xuICAgICAgICAgICAgd2hpbGUgKCh0YXNrID0gZHQ/LnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyPy4oLi4udGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLG51bGwsbnVsbCxudWxsLG51bGwsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiIDpzdHlsZT1cImNvbXB1dGVkSW5uZXJTdHlsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDwhLS0gaGVhZGVyIC0tPlxyXG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiPjwvc2xvdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiIDpzdHlsZT1cImNvbXB1dGVkQm9keVN0eWxlXCI+XHJcbiAgICAgICAgICA8IS0tIGJvZHksIOmrmOW6puiHqumAguW6lCAtLT5cclxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICA8IS0tIGZvb3RlciAtLT5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2xvdCBuYW1lPVwiYm94XCI+PC9zbG90PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcbi8qKlxyXG4gKiBjcnVk55qE5a655Zmo77yM5qC55o2u5aSW6YOo6auY5bqm6Ieq6YCC5bqUXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNDb250YWluZXJcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblm7rlrprpq5jluqZcclxuICAgICAqL1xyXG4gICAgZml4ZWRIZWlnaHQ6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogYm9keeeahOagt+W8j1xyXG4gICAgICovXHJcbiAgICBib2R5U3R5bGU6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiBpbm5lcueahOagt+W8j1xyXG4gICAgICovXHJcbiAgICBpbm5lclN0eWxlOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSW5uZXJTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgaWYgKHByb3BzLmZpeGVkSGVpZ2h0ID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBtZXJnZSh7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfSwgcHJvcHMuaW5uZXJTdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHByb3BzLmlubmVyU3R5bGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlZEJvZHlTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgaWYgKHByb3BzLmZpeGVkSGVpZ2h0ID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBtZXJnZSh7IGZsZXg6IFwidW5zZXRcIiB9LCBwcm9wcy5ib2R5U3R5bGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwcm9wcy5ib2R5U3R5bGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb21wdXRlZElubmVyU3R5bGUsXHJcbiAgICAgIGNvbXB1dGVkQm9keVN0eWxlXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1jb250YWluZXIge1xyXG4gICYuY29tcGFjdCB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxuICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAuYm94IHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgLmlubmVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIC5oZWFkZXIge1xyXG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICB9XHJcbiAgICAgIC5ib2R5IHtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgIH1cclxuICAgICAgLmZvb3RlciB7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCIgOnN0eWxlPVwiY29tcHV0ZWRJbm5lclN0eWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgPCEtLSBoZWFkZXIgLS0+XHJcbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgOnN0eWxlPVwiY29tcHV0ZWRCb2R5U3R5bGVcIj5cclxuICAgICAgICAgIDwhLS0gYm9keSwg6auY5bqm6Ieq6YCC5bqUIC0tPlxyXG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgIDwhLS0gZm9vdGVyIC0tPlxyXG4gICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPjwvc2xvdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzbG90IG5hbWU9XCJib3hcIj48L3Nsb3Q+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuLyoqXHJcbiAqIGNydWTnmoTlrrnlmajvvIzmoLnmja7lpJbpg6jpq5jluqboh6rpgILlupRcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0NvbnRhaW5lclwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuWbuuWumumrmOW6plxyXG4gICAgICovXHJcbiAgICBmaXhlZEhlaWdodDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiBib2R555qE5qC35byPXHJcbiAgICAgKi9cclxuICAgIGJvZHlTdHlsZToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGlubmVy55qE5qC35byPXHJcbiAgICAgKi9cclxuICAgIGlubmVyU3R5bGU6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRJbm5lclN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlKHsgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9LCBwcm9wcy5pbm5lclN0eWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcHJvcHMuaW5uZXJTdHlsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQm9keVN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlKHsgZmxleDogXCJ1bnNldFwiIH0sIHByb3BzLmJvZHlTdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHByb3BzLmJvZHlTdHlsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbXB1dGVkSW5uZXJTdHlsZSxcclxuICAgICAgY29tcHV0ZWRCb2R5U3R5bGVcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLWNvbnRhaW5lciB7XHJcbiAgJi5jb21wYWN0IHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG4gIHBhZGRpbmc6IDAgMjBweDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIC5ib3gge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZsZXg6IDE7XHJcbiAgICAuaW5uZXIge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgLmhlYWRlciB7XHJcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIH1cclxuICAgICAgLmJvZHkge1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgfVxyXG4gICAgICAuZm9vdGVyIHtcclxuICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGZzLWNvbnRhaW5lciBjbGFzcz1cImZzLWxheW91dC1kZWZhdWx0XCI+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci10b3BcIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2hcIj48L3Nsb3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1taWRkbGVcIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJ0YWJzXCI+PC9zbG90PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSDpu5jorqTmj5Lmp70gLS0+XHJcbiAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgICA8IS0tIHRhYmxlIC0tPlxyXG4gICAgPHNsb3QgbmFtZT1cInRhYmxlXCI+PC9zbG90PlxyXG5cclxuICAgIDxzbG90IG5hbWU9XCJmb3JtXCI+IDwvc2xvdD5cclxuXHJcbiAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtZm9vdGVyXCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb25cIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci1ib3R0b21cIj48L3Nsb3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2ZzLWNvbnRhaW5lcj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcclxuLyoqXHJcbiAqIOm7mOiupOW4g+WxgFxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzTGF5b3V0RGVmYXVsdFwiXHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtbGF5b3V0LWRlZmF1bHQge1xyXG4gIC5mcy10YWJzLWZpbHRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGZzLWNvbnRhaW5lciBjbGFzcz1cImZzLWxheW91dC1kZWZhdWx0XCI+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci10b3BcIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2hcIj48L3Nsb3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1taWRkbGVcIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJ0YWJzXCI+PC9zbG90PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSDpu5jorqTmj5Lmp70gLS0+XHJcbiAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgICA8IS0tIHRhYmxlIC0tPlxyXG4gICAgPHNsb3QgbmFtZT1cInRhYmxlXCI+PC9zbG90PlxyXG5cclxuICAgIDxzbG90IG5hbWU9XCJmb3JtXCI+IDwvc2xvdD5cclxuXHJcbiAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtZm9vdGVyXCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb25cIj48L3Nsb3Q+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci1ib3R0b21cIj48L3Nsb3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2ZzLWNvbnRhaW5lcj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcclxuLyoqXHJcbiAqIOm7mOiupOW4g+WxgFxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzTGF5b3V0RGVmYXVsdFwiXHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtbGF5b3V0LWRlZmF1bHQge1xyXG4gIC5mcy10YWJzLWZpbHRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGZzLWNvbnRhaW5lciBjbGFzcz1cImZzLWxheW91dC1jYXJkXCI+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci10b3BcIj5cclxuICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLXRvcFwiPjwvc2xvdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxjb21wb25lbnQgOmlzPVwiY2FyZENvbXBvbmVudE5hbWVcIiB2LWlmPVwic2VhcmNoU2hvd1wiPlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2hcIj48L3Nsb3Q+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPGZzLWNvbnRhaW5lcj5cclxuICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYnNcIj48L3Nsb3Q+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgIDxjb21wb25lbnQgOmlzPVwiY2FyZENvbXBvbmVudE5hbWVcIiBjbGFzcz1cImZzLWxheW91dC1jYXJkLWJvZHlcIj5cclxuICAgICAgICA8dGVtcGxhdGUgI3RpdGxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDxmcy1jb250YWluZXI+XHJcbiAgICAgICAgICA8IS0tIOm7mOiupOaPkuanvSAtLT5cclxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgICAgICAgIDwhLS0gdGFibGUgLS0+XHJcbiAgICAgICAgICA8c2xvdCBuYW1lPVwidGFibGVcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9ybVwiPjwvc2xvdD5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSAjZm9vdGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLXRvcFwiPjwvc2xvdD5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvblwiPjwvc2xvdD5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDwvZnMtY29udGFpbmVyPlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvZnMtY29udGFpbmVyPlxyXG4gIDwvZnMtY29udGFpbmVyPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgaW5qZWN0LCByZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcclxuLyoqXHJcbiAqIGNhcmTluIPlsYBcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0xheW91dENhcmRcIixcclxuICBzZXR1cCgpIHtcclxuICAgIGNvbnN0IGdldENydWRCaW5kaW5nID0gaW5qZWN0KFwiZ2V0OmNydWRCaW5kaW5nXCIpO1xyXG4gICAgY29uc3Qgc2VhcmNoU2hvdyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgaWYgKGdldENydWRCaW5kaW5nID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiBnZXRDcnVkQmluZGluZygpPy5zZWFyY2g/LnNob3c7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG5cclxuICAgIGNvbnN0IGNhcmRDb21wb25lbnROYW1lID0gcmVmKHVpLmNhcmQubmFtZSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzZWFyY2hTaG93LFxyXG4gICAgICBjYXJkQ29tcG9uZW50TmFtZVxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtbGF5b3V0LWNhcmQge1xyXG4gICYgPiAuYm94ID4gLmlubmVyID4gLmhlYWRlciB7XHJcbiAgICBtYXJnaW46IDEwcHggMTBweCA1cHggMTBweDtcclxuICB9XHJcbiAgJiA+IC5ib3ggPiAuaW5uZXIgPiAuYm9keSB7XHJcbiAgICBtYXJnaW46IDVweCAxMHB4IDEwcHggMTBweDtcclxuICB9XHJcbiAgLnRvcC1iYXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICB9XHJcbiAgLmZzLWNvbnRhaW5lciB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgLmJveCB7XHJcbiAgICAgIC5pbm5lciB7XHJcbiAgICAgICAgLmhlYWRlciB7XHJcbiAgICAgICAgICAuYW50LWNhcmQtYm9keSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5mcy1sYXlvdXQtY2FyZC1ib2R5IHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAgIC5hbnQtY2FyZC1oZWFkIHtcclxuICAgICAgbWluLWhlaWdodDogMDtcclxuICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICAuYW50LWNhcmQtaGVhZC10aXRsZSB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5lbC1jYXJkX19oZWFkZXIge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5uLWNhcmQtaGVhZGVyIHtcclxuICAgICAgcGFkZGluZzogMHB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcclxuICAgIH1cclxuICAgIC5uLWNhcmRfX2NvbnRlbnQge1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1jcnVkLWFjdGlvbmJhciB7XHJcbiAgICAgIG1hcmdpbjogMTBweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuICAgIC5mcy1jcnVkLXRvb2xiYXIge1xyXG4gICAgICBtYXJnaW46IDEwcHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmFudC1jYXJkLWJvZHkge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLmVsLWNhcmRfX2JvZHkge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZzLXRhYnMtZmlsdGVyIHtcclxuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgICAubi10YWJzIC5uLXRhYnMtbmF2Lm4tdGFicy1uYXYtLWNhcmQtdHlwZSAubi10YWJzLXRhYiB7XHJcbiAgICAgICYubi10YWJzLXRhYi0tYWN0aXZlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICB9XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY2MDtcclxuICAgIH1cclxuXHJcbiAgICAuZWwtdGFicy0tY2FyZCA+IC5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0ge1xyXG4gICAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmODA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZnMtY29udGFpbmVyIGNsYXNzPVwiZnMtbGF5b3V0LWNhcmRcIj5cclxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLXRvcFwiPlxyXG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJjYXJkQ29tcG9uZW50TmFtZVwiIHYtaWY9XCJzZWFyY2hTaG93XCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaFwiPjwvc2xvdD5cclxuICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItYm90dG9tXCI+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1ib3R0b21cIj48L3Nsb3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZnMtY29udGFpbmVyPlxyXG4gICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cclxuICAgICAgICA8c2xvdCBuYW1lPVwidGFic1wiPjwvc2xvdD5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJjYXJkQ29tcG9uZW50TmFtZVwiIGNsYXNzPVwiZnMtbGF5b3V0LWNhcmQtYm9keVwiPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJhclwiPlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyXCI+PC9zbG90PlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJhclwiPlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyXCI+PC9zbG90PlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPGZzLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwhLS0g6buY6K6k5o+S5qe9IC0tPlxyXG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxyXG4gICAgICAgICAgPCEtLSB0YWJsZSAtLT5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJ0YWJsZVwiPjwvc2xvdD5cclxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb3JtXCI+PC9zbG90PlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItdG9wXCI+PC9zbG90PlxyXG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwYWdpbmF0aW9uXCI+PC9zbG90PlxyXG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItYm90dG9tXCI+PC9zbG90PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mcy1jb250YWluZXI+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgPC9mcy1jb250YWluZXI+XHJcbiAgPC9mcy1jb250YWluZXI+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBpbmplY3QsIHJlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xyXG4vKipcclxuICogY2FyZOW4g+WxgFxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzTGF5b3V0Q2FyZFwiLFxyXG4gIHNldHVwKCkge1xyXG4gICAgY29uc3QgZ2V0Q3J1ZEJpbmRpbmcgPSBpbmplY3QoXCJnZXQ6Y3J1ZEJpbmRpbmdcIik7XHJcbiAgICBjb25zdCBzZWFyY2hTaG93ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAoZ2V0Q3J1ZEJpbmRpbmcgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIGdldENydWRCaW5kaW5nKCk/LnNlYXJjaD8uc2hvdztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcblxyXG4gICAgY29uc3QgY2FyZENvbXBvbmVudE5hbWUgPSByZWYodWkuY2FyZC5uYW1lKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNlYXJjaFNob3csXHJcbiAgICAgIGNhcmRDb21wb25lbnROYW1lXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1sYXlvdXQtY2FyZCB7XHJcbiAgJiA+IC5ib3ggPiAuaW5uZXIgPiAuaGVhZGVyIHtcclxuICAgIG1hcmdpbjogMTBweCAxMHB4IDVweCAxMHB4O1xyXG4gIH1cclxuICAmID4gLmJveCA+IC5pbm5lciA+IC5ib2R5IHtcclxuICAgIG1hcmdpbjogNXB4IDEwcHggMTBweCAxMHB4O1xyXG4gIH1cclxuICAudG9wLWJhciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIH1cclxuICAuZnMtY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICAuYm94IHtcclxuICAgICAgLmlubmVyIHtcclxuICAgICAgICAuaGVhZGVyIHtcclxuICAgICAgICAgIC5hbnQtY2FyZC1ib2R5IHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTRweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLmZzLWxheW91dC1jYXJkLWJvZHkge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblxyXG4gICAgLmFudC1jYXJkLWhlYWQge1xyXG4gICAgICBtaW4taGVpZ2h0OiAwO1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIC5hbnQtY2FyZC1oZWFkLXRpdGxlIHtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmVsLWNhcmRfX2hlYWRlciB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm4tY2FyZC1oZWFkZXIge1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gICAgfVxyXG4gICAgLm4tY2FyZF9fY29udGVudCB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWNydWQtYWN0aW9uYmFyIHtcclxuICAgICAgbWFyZ2luOiAxMHB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgLmZzLWNydWQtdG9vbGJhciB7XHJcbiAgICAgIG1hcmdpbjogMTBweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuYW50LWNhcmQtYm9keSB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB9XHJcbiAgICAuZWwtY2FyZF9fYm9keSB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZnMtdGFicy1maWx0ZXIge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDtcclxuICAgIC5uLXRhYnMgLm4tdGFicy1uYXYubi10YWJzLW5hdi0tY2FyZC10eXBlIC5uLXRhYnMtdGFiIHtcclxuICAgICAgJi5uLXRhYnMtdGFiLS1hY3RpdmUge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgIH1cclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjYwO1xyXG4gICAgfVxyXG5cclxuICAgIC5lbC10YWJzLS1jYXJkID4gLmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbSB7XHJcbiAgICAgICYuaXMtYWN0aXZlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICB9XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY4MDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIixudWxsLG51bGwsIjx0ZW1wbGF0ZT5cclxuICA8c3BhbiBjbGFzcz1cImZzLWljb25pZnlcIiA6Y2xhc3M9XCJ7ICdmcy1pY29uaWZ5LXNwaW4nOiBzcGluIH1cIj5cclxuICAgIDxJY29uIHJlZj1cImljb25pZnlSZWZcIiA6aWNvbj1cImljb25cIiA6aW5saW5lPVwidHJ1ZVwiIC8+XHJcbiAgPC9zcGFuPlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlZiwgdW5yZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIkBpY29uaWZ5L3Z1ZVwiO1xyXG4vKipcclxuICogaWNvbmlmeSDmjInpnIDliqDovb3lm77moIfnu4Tku7ZcclxuICogaHR0cHM6Ly9pY29uaWZ5LmRlc2lnbi9pY29uLXNldHMvaW9uL1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzSWNvbmlmeVwiLFxyXG4gIGNvbXBvbmVudHM6IHsgSWNvbiB9LFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOWbvuagh+WQjeensFxyXG4gICAgICovXHJcbiAgICBpY29uOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5peL6L2sXHJcbiAgICAgKi9cclxuICAgIHNwaW46IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcclxuICAgIGNvbnN0IGljb25pZnlSZWYgPSByZWYobnVsbCk7XHJcbiAgICByZXR1cm4geyBpY29uaWZ5UmVmIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtaWNvbmlmeSB7XHJcbiAgLy9kaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgJi1zcGluIHtcclxuICAgIHN2ZyB7XHJcbiAgICAgIGFuaW1hdGlvbjogZnNMb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuZnMtaWNvbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZnNMb2FkaW5nQ2lyY2xlIHtcclxuICBmcm9tIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xyXG4gIH1cclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGZzTG9hZGluZ0NpcmNsZSB7XHJcbiAgZnJvbSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuXHJcbi8vc3Bhbi5pY29uaWZ5IHtcclxuLy8gIGRpc3BsYXk6IGJsb2NrO1xyXG4vLyAgbWluLXdpZHRoOiAxZW07XHJcbi8vICBtaW4taGVpZ2h0OiAxZW07XHJcbi8vICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiBAaWNvbmlmeS1iZy1jb2xvcjtcclxuLy8gIGJvcmRlci1yYWRpdXM6IDEwMCU7XHJcbi8vfVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPHNwYW4gY2xhc3M9XCJmcy1pY29uaWZ5XCIgOmNsYXNzPVwieyAnZnMtaWNvbmlmeS1zcGluJzogc3BpbiB9XCI+XHJcbiAgICA8SWNvbiByZWY9XCJpY29uaWZ5UmVmXCIgOmljb249XCJpY29uXCIgOmlubGluZT1cInRydWVcIiAvPlxyXG4gIDwvc3Bhbj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHVucmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCJAaWNvbmlmeS92dWVcIjtcclxuLyoqXHJcbiAqIGljb25pZnkg5oyJ6ZyA5Yqg6L295Zu+5qCH57uE5Lu2XHJcbiAqIGh0dHBzOi8vaWNvbmlmeS5kZXNpZ24vaWNvbi1zZXRzL2lvbi9cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0ljb25pZnlcIixcclxuICBjb21wb25lbnRzOiB7IEljb24gfSxcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDlm77moIflkI3np7BcclxuICAgICAqL1xyXG4gICAgaWNvbjoge1xyXG4gICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaXi+i9rFxyXG4gICAgICovXHJcbiAgICBzcGluOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCBpY29uaWZ5UmVmID0gcmVmKG51bGwpO1xyXG4gICAgcmV0dXJuIHsgaWNvbmlmeVJlZiB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLWljb25pZnkge1xyXG4gIC8vZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICYtc3BpbiB7XHJcbiAgICBzdmcge1xyXG4gICAgICBhbmltYXRpb246IGZzTG9hZGluZ0NpcmNsZSAxcyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmZzLWljb24ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZzTG9hZGluZ0NpcmNsZSB7XHJcbiAgZnJvbSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBmc0xvYWRpbmdDaXJjbGUge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4vL3NwYW4uaWNvbmlmeSB7XHJcbi8vICBkaXNwbGF5OiBibG9jaztcclxuLy8gIG1pbi13aWR0aDogMWVtO1xyXG4vLyAgbWluLWhlaWdodDogMWVtO1xyXG4vLyAgLy8gYmFja2dyb3VuZC1jb2xvcjogQGljb25pZnktYmctY29sb3I7XHJcbi8vICBib3JkZXItcmFkaXVzOiAxMDAlO1xyXG4vL31cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxzcGFuIDpjbGFzcz1cIlsnZnMtaWNvbi1zdmcnLCBzcGluICYmICdmcy1pY29uLXNwaW4nXVwiPlxyXG4gICAgPHN2ZyBjbGFzcz1cImZzLWljb24tc3ZnLWNvbnRlbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgPHVzZSA6eGxpbms6aHJlZj1cInN5bWJvbElkXCI+PC91c2U+XHJcbiAgICA8L3N2Zz5cclxuICA8L3NwYW4+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1N2Z0ljb25cIixcclxuICBwcm9wczoge1xyXG4gICAgaWNvbjoge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgc2l6ZToge1xyXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG4gICAgICBkZWZhdWx0OiAxNlxyXG4gICAgfSxcclxuICAgIHNwaW46IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHNldHVwKHByb3BzKSB7XHJcbiAgICBjb25zdCBzeW1ib2xJZCA9IGNvbXB1dGVkKCgpID0+IGAjJHtwcm9wcy5pY29ufWApO1xyXG5cclxuICAgIGNvbnN0IGdldFN0eWxlID0gY29tcHV0ZWQoKCk6IENTU1Byb3BlcnRpZXMgPT4ge1xyXG4gICAgICBjb25zdCB7IHNpemUgfSA9IHByb3BzO1xyXG4gICAgICBsZXQgcyA9IGAke3NpemV9YDtcclxuICAgICAgcyA9IGAke3MucmVwbGFjZShcInB4XCIsIFwiXCIpfXB4YDtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB3aWR0aDogcyxcclxuICAgICAgICBoZWlnaHQ6IHNcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHsgc3ltYm9sSWQsIGdldFN0eWxlIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtaWNvbi1zdmcge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICYuZnMtaWNvbi1zcGluIHtcclxuICAgIGFuaW1hdGlvbjogbG9hZGluZ0NpcmNsZSAxcyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgfVxyXG5cclxuICAuZnMtaWNvbi1zdmctY29udGVudCB7XHJcbiAgICB3aWR0aDogMWVtO1xyXG4gICAgaGVpZ2h0OiAxZW07XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTVlbTtcclxuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8c3BhbiA6Y2xhc3M9XCJbJ2ZzLWljb24tc3ZnJywgc3BpbiAmJiAnZnMtaWNvbi1zcGluJ11cIj5cclxuICAgIDxzdmcgY2xhc3M9XCJmcy1pY29uLXN2Zy1jb250ZW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgIDx1c2UgOnhsaW5rOmhyZWY9XCJzeW1ib2xJZFwiPjwvdXNlPlxyXG4gICAgPC9zdmc+XHJcbiAgPC9zcGFuPlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNTdmdJY29uXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIGljb246IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHNpemU6IHtcclxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuICAgICAgZGVmYXVsdDogMTZcclxuICAgIH0sXHJcbiAgICBzcGluOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzZXR1cChwcm9wcykge1xyXG4gICAgY29uc3Qgc3ltYm9sSWQgPSBjb21wdXRlZCgoKSA9PiBgIyR7cHJvcHMuaWNvbn1gKTtcclxuXHJcbiAgICBjb25zdCBnZXRTdHlsZSA9IGNvbXB1dGVkKCgpOiBDU1NQcm9wZXJ0aWVzID0+IHtcclxuICAgICAgY29uc3QgeyBzaXplIH0gPSBwcm9wcztcclxuICAgICAgbGV0IHMgPSBgJHtzaXplfWA7XHJcbiAgICAgIHMgPSBgJHtzLnJlcGxhY2UoXCJweFwiLCBcIlwiKX1weGA7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgd2lkdGg6IHMsXHJcbiAgICAgICAgaGVpZ2h0OiBzXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IHN5bWJvbElkLCBnZXRTdHlsZSB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLWljb24tc3ZnIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAmLmZzLWljb24tc3BpbiB7XHJcbiAgICBhbmltYXRpb246IGxvYWRpbmdDaXJjbGUgMXMgaW5maW5pdGUgbGluZWFyO1xyXG4gIH1cclxuXHJcbiAgLmZzLWljb24tc3ZnLWNvbnRlbnQge1xyXG4gICAgd2lkdGg6IDFlbTtcclxuICAgIGhlaWdodDogMWVtO1xyXG4gICAgdmVydGljYWwtYWxpZ246IC0wLjE1ZW07XHJcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZzLWxhYmVsXCIgOmNsYXNzPVwieyBjb21wYWN0OiBjb21wYWN0IH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHYtYmluZD1cImxhYmVsQXR0cnNcIj5cclxuICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgPHNsb3QgbmFtZT1cImxhYmVsXCI+PC9zbG90PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIHYtYmluZD1cImNvbnRlbnRBdHRyc1wiPlxyXG4gICAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5cclxuLyoqXHJcbiAqIGxhYmVs57uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNMYWJlbFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICBjb21wYWN0OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgbGFiZWw6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBcIlwiXHJcbiAgICB9LFxyXG4gICAgbGFiZWxBdHRyczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcclxuICAgIH0sXHJcbiAgICBjb250ZW50QXR0cnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXHJcbiAgICB9XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtbGFiZWwge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAmLmNvbXBhY3Qge1xyXG4gICAgLmxhYmVsIHtcclxuICAgICAgbWluLXdpZHRoOiBhdXRvO1xyXG4gICAgfVxyXG4gICAgLmNvbnRlbnQge1xyXG4gICAgICBtaW4td2lkdGg6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5sYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgIG1pbi13aWR0aDogODBweDtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgfVxyXG4gIC5jb250ZW50IHtcclxuICAgIGZsZXg6IDE7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWluLXdpZHRoOiA4MHB4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB9XHJcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtbGFiZWxcIiA6Y2xhc3M9XCJ7IGNvbXBhY3Q6IGNvbXBhY3QgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdi1iaW5kPVwibGFiZWxBdHRyc1wiPlxyXG4gICAgICB7eyBsYWJlbCB9fVxyXG4gICAgICA8c2xvdCBuYW1lPVwibGFiZWxcIj48L3Nsb3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgdi1iaW5kPVwiY29udGVudEF0dHJzXCI+XHJcbiAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcblxyXG4vKipcclxuICogbGFiZWznu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0xhYmVsXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIGNvbXBhY3Q6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBsYWJlbDoge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6IFwiXCJcclxuICAgIH0sXHJcbiAgICBsYWJlbEF0dHJzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KVxyXG4gICAgfSxcclxuICAgIGNvbnRlbnRBdHRyczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcclxuICAgIH1cclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1sYWJlbCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICYuY29tcGFjdCB7XHJcbiAgICAubGFiZWwge1xyXG4gICAgICBtaW4td2lkdGg6IGF1dG87XHJcbiAgICB9XHJcbiAgICAuY29udGVudCB7XHJcbiAgICAgIG1pbi13aWR0aDogYXV0bztcclxuICAgIH1cclxuICB9XHJcbiAgLmxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xyXG4gICAgbWluLXdpZHRoOiA4MHB4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICB9XHJcbiAgLmNvbnRlbnQge1xyXG4gICAgZmxleDogMTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtaW4td2lkdGg6IDgwcHg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0xvYWRpbmdcIlxyXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgdi1pZj1cImxvYWRpbmdcIiBjbGFzcz1cImZzLWxvYWRpbmdcIj5cclxuICAgIDxmcy1pY29uIGNsYXNzPVwiZnMtaWNvbi1zcGluXCIgOmljb249XCJpY29uID8/IHVpLmljb25zLnJlZnJlc2hcIj48L2ZzLWljb24+XHJcbiAgICA8c3BhbiB2LWlmPVwidGV4dFwiPnt7IHRleHQgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG5cclxuO1xyXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcclxuICBsb2FkaW5nPzogYm9vbGVhbjtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbn0+KCk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLWxvYWRpbmcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgLmZzLWljb24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIHdpZHRoOiA5MCU7XHJcbiAgICBoZWlnaHQ6IDkwJTtcclxuICAgIG1heC13aWR0aDogNTBweDtcclxuICAgIG1heC1oZWlnaHQ6IDUwcHg7XHJcbiAgICAmLmZzLWljb24tc3BpbiB7XHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgYW5pbWF0aW9uOiBmcy1sb2FkaW5nLWNpcmNsZSAxcyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEAtd2Via2l0LWtleWZyYW1lcyBmcy1sb2FkaW5nLWNpcmNsZSB7XHJcbiAgICBmcm9tIHtcclxuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICB9XHJcbiAgICB0byB7XHJcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtYm94XCI+XHJcbiAgICA8c2xvdD48L3Nsb3Q+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcclxuXHJcbi8qKlxyXG4gKiDljZXnuq/nmoTljIXoo7nkuIDkuKrlrZDnu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0JveFwiXHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1ib3hcIj5cclxuICAgIDxzbG90Pjwvc2xvdD5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5cclxuLyoqXHJcbiAqIOWNlee6r+eahOWMheijueS4gOS4quWtkOe7hOS7tlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzQm94XCJcclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLG51bGwsbnVsbCxudWxsLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudFxyXG4gICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcclxuICAgIHJlZj1cImZvcm1SZWZcIlxyXG4gICAgY2xhc3M9XCJmcy1mb3JtXCJcclxuICAgIDpjbGFzcz1cIntcclxuICAgICAgJ2ZzLWZvcm0tZ3JpZCc6IGRpc3BsYXkgPT09ICdncmlkJyxcclxuICAgICAgJ2ZzLWZvcm0tZmxleCc6IGRpc3BsYXkgPT09ICdmbGV4JyxcclxuICAgICAgJ2ZzLWZvcm0taW52YWxpZCc6IHZhbGlkUmVmID09PSBmYWxzZVxyXG4gICAgfVwiXHJcbiAgICBvbnN1Ym1pdD1cImV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcclxuICAgIDptb2RlbD1cImZvcm1cIlxyXG4gID5cclxuICAgIDwhLS0gcm93IC0tPlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtcm93XCIgdi1iaW5kPVwicm93XCI+XHJcbiAgICAgIDwhLS0gY29sIC0tPlxyXG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCJpdGVtIGluIGNvbXB1dGVkRGVmYXVsdENvbHVtbnNcIiA6a2V5PVwiaXRlbT8ua2V5XCI+XHJcbiAgICAgICAgPGZzLWZvcm0taXRlbS1jb2xcclxuICAgICAgICAgIDpyZWY9XCJcclxuICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1JdGVtUmVmc1tpdGVtLmtleV0gPSBlbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICA6Y29sPVwibWVyZ2VDb2woaXRlbS5jb2wpXCJcclxuICAgICAgICAgIDppdGVtPVwiaXRlbVwiXHJcbiAgICAgICAgICA6aGVscGVyPVwiaGVscGVyXCJcclxuICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBpdGVtLmtleSlcIlxyXG4gICAgICAgICAgOnNsb3RzPVwibWVyZ2VkU2xvdHNbJ2Zvcm1fJyArIGl0ZW0ua2V5XVwiXHJcbiAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxyXG4gICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInNldChmb3JtLCBpdGVtLmtleSwgJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gICAgPGNvbXBvbmVudFxyXG4gICAgICA6aXM9XCJjb21wdXRlZEdyb3VwLndyYXBwZXIucGFyZW50XCJcclxuICAgICAgdi1pZj1cImNvbXB1dGVkR3JvdXAud3JhcHBlclwiXHJcbiAgICAgIHYtbW9kZWw6W3VpLmNvbGxhcHNlLm1vZGVsVmFsdWVdPVwiZ3JvdXBBY3RpdmVLZXlcIlxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcclxuICAgICAgdi1iaW5kPVwiY29tcHV0ZWRHcm91cFwiXHJcbiAgICA+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihncm91cEl0ZW0sIGdyb3VwS2V5KSBvZiBjb21wdXRlZEdyb3VwLmdyb3Vwc1wiIDprZXk9XCJncm91cEtleVwiPlxyXG4gICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgIDppcz1cImNvbXB1dGVkR3JvdXAud3JhcHBlci5jaGlsZFwiXHJcbiAgICAgICAgICB2LWlmPVwiZ3JvdXBJdGVtU2hvdyhncm91cEl0ZW0pXCJcclxuICAgICAgICAgIDpbdWkuY29sbGFwc2Uua2V5TmFtZV09XCJncm91cEtleVwiXHJcbiAgICAgICAgICB2LWJpbmQ9XCJncm91cEl0ZW1cIlxyXG4gICAgICAgICAgOmNsYXNzPVwieyAnZnMtZm9ybS1ncm91cC1lcnJvcic6IGVycm9yc1JlZlsnZ3JvdXAuJyArIGdyb3VwS2V5XSB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgc2xvdE5hbWUpIG9mIGdyb3VwSXRlbS5zbG90c1wiIDprZXk9XCJzbG90TmFtZVwiICNbc2xvdE5hbWVdPVwic2NvcGVcIj5cclxuICAgICAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJpdGVtXCIgOnNjb3BlPVwieyAuLi5zY29wZSwgaGFzRXJyb3I6IGVycm9yc1JlZlsnZ3JvdXAuJyArIGdyb3VwS2V5XSB9XCIgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICA8IS0tIHJvdyAtLT5cclxuICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLXJvd1wiIHYtYmluZD1cInJvd1wiPlxyXG4gICAgICAgICAgICA8IS0tIGNvbCAtLT5cclxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwia2V5IGluIGdyb3VwSXRlbS5jb2x1bW5zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICAgICAgICAgIDxmcy1mb3JtLWl0ZW0tY29sXHJcbiAgICAgICAgICAgICAgICB2LWlmPVwiY29tcHV0ZWRDb2x1bW5zW2tleV1cIlxyXG4gICAgICAgICAgICAgICAgOnJlZj1cIlxyXG4gICAgICAgICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUl0ZW1SZWZzW2tleV0gPSBlbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA6Y29sPVwibWVyZ2VDb2woY29tcHV0ZWRDb2x1bW5zW2tleV0uY29sKVwiXHJcbiAgICAgICAgICAgICAgICA6aXRlbT1cImNvbXB1dGVkQ29sdW1uc1trZXldXCJcclxuICAgICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBrZXkpXCJcclxuICAgICAgICAgICAgICAgIDpzbG90cz1cIm1lcmdlZFNsb3RzWydmb3JtXycgKyBrZXldXCJcclxuICAgICAgICAgICAgICAgIDpnZXQtY29udGV4dC1mbj1cImdldENvbnRleHRGblwiXHJcbiAgICAgICAgICAgICAgICA6aGVscGVyPVwiaGVscGVyXCJcclxuICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJzZXQoZm9ybSwga2V5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L2NvbXBvbmVudD5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgZGVmaW5lQ29tcG9uZW50LFxyXG4gIGdldEN1cnJlbnRJbnN0YW5jZSxcclxuICBvbk1vdW50ZWQsXHJcbiAgcmVhY3RpdmUsXHJcbiAgUmVmLFxyXG4gIHJlZixcclxuICB0b1JhdyxcclxuICB1bnJlZixcclxuICBVbndyYXBOZXN0ZWRSZWZzLFxyXG4gIHdhdGNoXHJcbn0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBlYWNoLCBzZXQsIGNsb25lRGVlcCwgZW50cmllcywgZ2V0LCB1bnNldCwgZm9yRWFjaCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IENvbXB1dGVWYWx1ZSwgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcclxuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRm9ybVNjb3BlQ29udGV4dCwgU2V0Rm9ybURhdGFPcHRpb25zLCB1c2VVaSwgdXRpbHMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcclxuXHJcbi8qKlxyXG4gKiDphY3nva7ljJbnmoTooajljZXnu4Tku7ZcclxuICog5pq06Zyy55qE5pa55rOV77yaXHJcbiAqIHJlZi5zdWJtaXQoKSA9IOaPkOS6pOihqOWNlVxyXG4gKiByZWYucmVzZXQoKSA9IOmHjee9ruihqOWNlVxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRm9ybVwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOWIneWni+ihqOWNleaVsOaNrlxyXG4gICAgICoqL1xyXG4gICAgaW5pdGlhbEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5a2X5q615qih54mIXHJcbiAgICAgKiB7XHJcbiAgICAgKiAgIGtleTp7XHJcbiAgICAgKiAgICAgdGl0bGU6IFwi5a2X5q615ZCN56ewXCIsXHJcbiAgICAgKiAgICAgY29tcG9uZW50OntcclxuICAgICAqICAgICAgIG5hbWU6XCLnu4Tku7blkI3np7BcIlxyXG4gICAgICogICAgICAgLi4u57uE5Lu25Y+C5pWwXHJcbiAgICAgKiAgICAgfVxyXG4gICAgICogICB9XHJcbiAgICAgKiB9XHJcbiAgICAgKiAqL1xyXG4gICAgY29sdW1uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5a2X5q615YiG57uEXHJcbiAgICAgKiB7XHJcbiAgICAgKiAgIHR5cGU6J3h4eCcsIC8v5YiG57uE5bGV56S657G75Z6LXHJcbiAgICAgKiAgIGdyb3Vwczp7IC8v5YiG57uE5pWw5o2uXHJcbiAgICAgKiAgICAgZ3JvdXBLZXk6eyB0aXRsZToneHh4Jyxjb2x1bW5zOlsnZmllbGRLZXknLCdmaWVsZEtleSddfVxyXG4gICAgICogICB9XHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIGdyb3VwOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDph43nva7ooajljZXlkI7nmoTmk43kvZxcclxuICAgICAqL1xyXG4gICAgZG9SZXNldDoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDngrnlh7vkv53lrZjmjInpkq7vvIzooajljZXmoKHpqozliY3miafooYzmk43kvZzvvIhhc3luY++8iVxyXG4gICAgICovXHJcbiAgICBiZWZvcmVWYWxpZGF0ZToge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDooajljZXmoKHpqozlrozlrozmiJDlkI7vvIzmj5DkuqTliY3lpITnkIbvvIhhc3luY++8iVxyXG4gICAgICovXHJcbiAgICBiZWZvcmVTdWJtaXQ6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog54K55Ye75L+d5a2Y5oyJ6ZKu5pe25omn6KGM5pON5L2c77yIYXN5bmPvvIlcclxuICAgICAqL1xyXG4gICAgZG9TdWJtaXQ6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6KGo5Y2V5o+Q5Lqk5ZCO5aSE55CG77yIYXN5bmPvvIlcclxuICAgICAqL1xyXG4gICAgYWZ0ZXJTdWJtaXQ6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5o+S5qe95YaF5a65XHJcbiAgICAgKi9cclxuICAgIHNsb3RzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5biD5bGA5pa55byP44CQZmxleHxncmlk44CRXHJcbiAgICAgKi9cclxuICAgIGRpc3BsYXk6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBcImZsZXhcIiAvLyBmbGV4XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDluo/lj7fvvIznvJbovpHml7bkvJrkvKDlhaVcclxuICAgICAqL1xyXG4gICAgaW5kZXg6IHtcclxuICAgICAgdHlwZTogTnVtYmVyLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaooeW8jyBbYWRkLGVkaXQsdmlldyzoh6rlrprkuYldXHJcbiAgICAgKi9cclxuICAgIG1vZGU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGEtcm936YWN572uXHJcbiAgICAgKi9cclxuICAgIHJvdzoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogZWwtY29sfGEtY29s6YWN572u77yM5Y+v6YWN572u6Leo5YiXXHJcbiAgICAgKi9cclxuICAgIGNvbDoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogZm9ybUl0ZW3nmoTlhazlhbHphY3nva5cclxuICAgICAqL1xyXG4gICAgZm9ybUl0ZW06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlcuS9jee9ru+8mntwb3NpdGlvbjonbGFiZWwnfVxyXG4gICAgICovXHJcbiAgICBoZWxwZXI6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG5cclxuICAgIHdhdGNoOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiBudWxsXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1wicmVzZXRcIiwgXCJzdWJtaXRcIiwgXCJzdWNjZXNzXCIsIFwidmFsaWRhdGlvbkVycm9yXCIsIFwidmFsdWUtY2hhbmdlXCIsIFwiaW5pdFwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IHsgQXN5bmNDb21wdXRlVmFsdWUsIGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcclxuICAgIGNvbnN0IGZvcm1SZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGZvcm06IFVud3JhcE5lc3RlZFJlZnM8YW55PiA9IHJlYWN0aXZlKHt9KTtcclxuICAgIGNvbnN0IHsgcHJveHkgfSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG5cclxuICAgIC8vIHV0aWxzLnRyYWNlKFwiZnMtZm9ybVwiKTtcclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXHJcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiAoaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlIHx8IGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBDb21wdXRlVmFsdWUpKSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJmb3JtLnZhbHVl6YWN572u5LiN5pSv5oyBQ29tcHV0ZS9Bc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKSB7XHJcbiAgICAgIGNvbnN0IGZvcm0gPSB7fTtcclxuICAgICAgLy8g5Yid5aeL5pWw5o2u6LWL5YC8XHJcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGl0ZW0udmFsdWUpO1xyXG4gICAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBzZXQoZm9ybSwga2V5LCBkZWZWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgbWVyZ2UoZm9ybSwgY2xvbmVEZWVwKHByb3BzLmluaXRpYWxGb3JtKSk7XHJcbiAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcclxuICAgIHNldEZvcm1EYXRhKGluaXRpYWxGb3JtKTtcclxuXHJcbiAgICBjb25zdCBzY29wZTogUmVmPEZvcm1TY29wZUNvbnRleHQ+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvdzogaW5pdGlhbEZvcm0sXHJcbiAgICAgICAgZm9ybSxcclxuICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXHJcbiAgICAgICAgbW9kZTogcHJvcHMubW9kZSB8fCBcImFkZFwiLFxyXG4gICAgICAgIGF0dHJzOiBjdHguYXR0cnMsXHJcbiAgICAgICAgZ2V0Q29tcG9uZW50UmVmXHJcbiAgICAgIH0gYXMgRm9ybVNjb3BlQ29udGV4dDtcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpIHtcclxuICAgICAgcmV0dXJuIHNjb3BlLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XHJcbiAgICB9KTtcclxuICAgIC8vZm9ybS52YWx1ZUJ1aWxkZXJcclxuXHJcbiAgICBmdW5jdGlvbiBkb1ZhbHVlQnVpbGRlcihmb3JtOiBhbnkpIHtcclxuICAgICAgaWYgKGZvcm0gPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZ2V0KGZvcm0sIGtleSk7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVCdWlsZGVyKSB7XHJcbiAgICAgICAgICBjb25zdCByZXM6IGFueSA9IGl0ZW0udmFsdWVCdWlsZGVyKHtcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgcm93OiBpbml0aWFsRm9ybSxcclxuICAgICAgICAgICAgZm9ybSxcclxuICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxyXG4gICAgICAgICAgICBtb2RlOiBwcm9wcy5tb2RlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiAhKHJlcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XHJcbiAgICAgICAgICAgIHNldChmb3JtLCBrZXksIHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRGb3JtRGF0YSgpIHtcclxuICAgICAgcmV0dXJuIGZvcm07XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBzZXRGb3JtRGF0YShmb3JtRGF0YTogYW55LCBvcHRpb25zOiBTZXRGb3JtRGF0YU9wdGlvbnMgPSB7fSkge1xyXG4gICAgICBkb1ZhbHVlQnVpbGRlcihmb3JtRGF0YSk7XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy5tZXJnZUZvcm0gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybSkge1xyXG4gICAgICAgICAgZGVsZXRlIGZvcm1ba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbWVyZ2UoZm9ybSwgZm9ybURhdGEpO1xyXG4gICAgICBjb25zdCB7IHZhbHVlQ2hhbmdlIH0gPSBvcHRpb25zO1xyXG4gICAgICBpZiAodmFsdWVDaGFuZ2UpIHtcclxuICAgICAgICBmb3JFYWNoKHByb3BzLmNvbHVtbnMsIChjb2x1bW46IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVtrZXldO1xyXG4gICAgICAgICAgZG9WYWx1ZUNoYW5nZShrZXksIHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIG1lcmdlQ29sKC4uLmNvbDogYW55KSB7XHJcbiAgICAgIHJldHVybiBtZXJnZSh7fSwgcHJvcHMuY29sLCAuLi5jb2wpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGJ1aWxkSXRlbVNjb3BlKGl0ZW06IGFueSk6IEZvcm1TY29wZUNvbnRleHQge1xyXG4gICAgICByZXR1cm4geyBrZXk6IGl0ZW0ua2V5LCAuLi5zY29wZS52YWx1ZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRvVmFsdWVCdWlsZGVyKGZvcm0pO1xyXG5cclxuICAgIC8vIHdhdGNoKFxyXG4gICAgLy8gICAoKSA9PiBwcm9wcy5pbml0aWFsRm9ybSxcclxuICAgIC8vICAgKCkgPT4ge1xyXG4gICAgLy8gICAgIHNldEZvcm1EYXRhKGNyZWF0ZUluaXRpYWxGb3JtKCksIHsgbWVyZ2VGb3JtOiBmYWxzZSB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gKTtcclxuXHJcbiAgICBmdW5jdGlvbiBkb1ZhbHVlQ2hhbmdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0geyBrZXksIHZhbHVlLCBmb3JtUmVmOiBwcm94eSwgLi4uc2NvcGUudmFsdWUsIGltbWVkaWF0ZTogZmFsc2UgfTtcclxuICAgICAgY3R4LmVtaXQoXCJ2YWx1ZS1jaGFuZ2VcIiwgZXZlbnQpO1xyXG4gICAgICBsZXQgdmFsdWVDaGFuZ2UgPSBwcm9wcy5jb2x1bW5zW2tleV0udmFsdWVDaGFuZ2U7XHJcbiAgICAgIGlmICh2YWx1ZUNoYW5nZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICB2YWx1ZUNoYW5nZShldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcclxuICAgICAgICAgIHZhbHVlQ2hhbmdlLmhhbmRsZShldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUl0ZW1SZWZzOiBSZWYgPSByZWYoe30pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGdldEZvcm1JdGVtUmVmKGtleTogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBmb3JtSXRlbVJlZnMudmFsdWVba2V5XS5nZXRGb3JtSXRlbVJlZigpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZywgaXNBc3luYyA9IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBnZXRGb3JtSXRlbVJlZihrZXkpPy5nZXRDb21wb25lbnRSZWYoaXNBc3luYyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ3JvdXBBY3RpdmVLZXkgPSByZWYoW10pO1xyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcclxuICAgIGZvckVhY2gocHJvcHMuZ3JvdXA/Lmdyb3VwcywgKGdyb3VwSXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZ3JvdXBJdGVtLmNvbGxhcHNlZCAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIGdyb3VwQWN0aXZlS2V5LnZhbHVlLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXHJcbiAgICBpZiAocHJvcHMuZ3JvdXA/Lmdyb3VwVHlwZSA9PT0gXCJ0YWJzXCIpIHtcclxuICAgICAgZ3JvdXBBY3RpdmVLZXkudmFsdWUgPSBncm91cEFjdGl2ZUtleS52YWx1ZS5sZW5ndGggPiAwID8gZ3JvdXBBY3RpdmVLZXkudmFsdWVbMF0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5p6E5bu65YiG57uE5pWw5o2uXHJcbiAgICBjb25zdCBjb21wdXRlZEdyb3VwID0gZG9Db21wdXRlZChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBwcm9wcy5ncm91cDtcclxuICAgICAgfSxcclxuICAgICAgZ2V0Q29udGV4dEZuLFxyXG4gICAgICBudWxsLFxyXG4gICAgICAoZ3JvdXAgPSB7fSkgPT4ge1xyXG4gICAgICAgIC8v5om+5Ye65rKh5pyJ5re75Yqg6L+b5YiG57uE55qE5a2X5q61XHJcbiAgICAgICAgY29uc3QgZ3JvdXBlZEtleXM6IGFueSA9IHt9O1xyXG4gICAgICAgIGZvckVhY2goZ3JvdXA/Lmdyb3VwcywgKGdyb3VwSXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgZm9yRWFjaChncm91cEl0ZW0uY29sdW1ucywgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29tcHV0ZWRDb2x1bW5zLnZhbHVlW2l0ZW1dID09IG51bGwpIHtcclxuICAgICAgICAgICAgICB1dGlscy5sb2dnZXIud2FybihcIuaXoOaViOeahOWIhue7hOWtl+aute+8mlwiICsgaXRlbSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGdyb3VwZWRLZXlzW2l0ZW1dID0ga2V5O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBncm91cC5ncm91cFR5cGU7XHJcbiAgICAgICAgbGV0IHdyYXBwZXIgPSB7XHJcbiAgICAgICAgICBwYXJlbnQ6IHVpLmNvbGxhcHNlLm5hbWUsXHJcbiAgICAgICAgICBjaGlsZDogdWkuY29sbGFwc2VJdGVtLm5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0eXBlID09PSBcInRhYnNcIikge1xyXG4gICAgICAgICAgd3JhcHBlci5wYXJlbnQgPSB1aS50YWJzLm5hbWU7XHJcbiAgICAgICAgICB3cmFwcGVyLmNoaWxkID0gdWkudGFiUGFuZS5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWVyZ2UoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHdyYXBwZXIsXHJcbiAgICAgICAgICAgIGdyb3VwZWRLZXlzXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZ3JvdXBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnM6IGFueSA9IFtdO1xyXG4gICAgICAvL2RlZmF1bHQgY29sdW1uc+aOkuW6j1xyXG4gICAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XHJcbiAgICAgICAgdmFsdWUgPSBtZXJnZShpdGVtLCB2YWx1ZSk7XHJcbiAgICAgICAgdmFsdWUua2V5ID0ga2V5O1xyXG4gICAgICAgIGlmICh2YWx1ZS5vcmRlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICB2YWx1ZS5vcmRlciA9IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5cyA9PSBudWxsIHx8IGNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsdWUuY29sID0gbWVyZ2VDb2wodmFsdWUuY29sKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8v5o6S5bqPXHJcbiAgICAgIGNvbHVtbnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRGb3JtUmVmKCkge1xyXG4gICAgICByZXR1cm4gZm9ybVJlZi52YWx1ZTtcclxuICAgIH1cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlc2V0KCkge1xyXG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChmb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xyXG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XHJcbiAgICAgIGNvbnN0IGVudHJpZXNSZXQgPSBlbnRyaWVzKGZvcm0pO1xyXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcclxuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgIHVuc2V0KGZvcm0sIGVudHJ5WzBdKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0KGZvcm0sIGVudHJ5WzBdLCBpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHByb3BzLmRvUmVzZXQpIHtcclxuICAgICAgICBhd2FpdCBwcm9wcy5kb1Jlc2V0KHNjb3BlLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBjdHguZW1pdChcInJlc2V0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbGlkUmVmOiBSZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGVycm9yc1JlZjogUmVmID0gcmVmKHt9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBmaWxsR3JvdXBFcnJvcihmaWVsZEVycm9yczogYW55KSB7XHJcbiAgICAgIGlmICghY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXMpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQga2V5IGluIGZpZWxkRXJyb3JzKSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5c1trZXldO1xyXG4gICAgICAgIGlmIChncm91cCAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmaWVsZEVycm9yc1tcImdyb3VwLlwiICsgZ3JvdXBdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGVTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm0gfTtcclxuICAgICAgaWYgKHZhbGlkYXRlU2NvcGUubW9kZSA9PT0gXCJ2aWV3XCIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb3BzLmJlZm9yZVZhbGlkYXRlKSB7XHJcbiAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgcHJvcHMuYmVmb3JlVmFsaWRhdGUodmFsaWRhdGVTY29wZSk7XHJcbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgZXJyb3JzUmVmLnZhbHVlID0ge307XHJcbiAgICAgICAgYXdhaXQgdWkuZm9ybS52YWxpZGF0ZVdyYXAoZm9ybVJlZi52YWx1ZSk7XHJcbiAgICAgICAgdmFsaWRSZWYudmFsdWUgPSB0cnVlO1xyXG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgICB2YWxpZFJlZi52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlRXJyb3JzID0gdWkuZm9ybS50cmFuc2Zvcm1WYWxpZGF0ZUVycm9ycyhlKTtcclxuICAgICAgICBmaWxsR3JvdXBFcnJvcih2YWxpZGF0ZUVycm9ycyk7XHJcbiAgICAgICAgZXJyb3JzUmVmLnZhbHVlID0gdmFsaWRhdGVFcnJvcnM7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJ2YWxpZGF0aW9uRXJyb3JcIiwgc2NvcGUudmFsdWUpO1xyXG4gICAgICAgIHRocm93IGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHN1Ym1pdCgpIHtcclxuICAgICAgYXdhaXQgdmFsaWRhdGUoKTtcclxuICAgICAgY29uc3QgZm9ybURhdGEgPSBjbG9uZURlZXAodG9SYXcoZm9ybSkpO1xyXG4gICAgICBjb25zdCBzdWJtaXRTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm06IGZvcm1EYXRhIH07XHJcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImZvcm0gc3VibWl0XCIsIEpTT04uc3RyaW5naWZ5KGZvcm0pKTtcclxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtRGF0YSwga2V5KTtcclxuICAgICAgICBpZiAoaXRlbS52YWx1ZVJlc29sdmUpIHtcclxuICAgICAgICAgIGNvbnN0IHJlczogYW55ID0gaXRlbS52YWx1ZVJlc29sdmUoe1xyXG4gICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAuLi5zdWJtaXRTY29wZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgIShyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xyXG4gICAgICAgICAgICBzZXQoZm9ybURhdGEsIGtleSwgcmVzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHByb3BzLmJlZm9yZVN1Ym1pdCkge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHByb3BzLmJlZm9yZVN1Ym1pdChzdWJtaXRTY29wZSk7XHJcbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8v56e76Zmk5LiN5YWB6K645o+Q5Lqk55qE5a2X5q61XHJcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5zdWJtaXQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICB1bnNldChmb3JtRGF0YSwga2V5KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uc3VibWl0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAvL+iuvue9ruW8uuWItuaPkOS6pOeahOWtl+autVxyXG4gICAgICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIGZvcm1EYXRhW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAocHJvcHMuZG9TdWJtaXQpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBwcm9wcy5kb1N1Ym1pdChzdWJtaXRTY29wZSk7XHJcbiAgICAgICAgc3VibWl0U2NvcGUucmVzID0gcmVzO1xyXG4gICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGN0eC5lbWl0KFwic3VibWl0XCIsIHN1Ym1pdFNjb3BlKTtcclxuICAgICAgaWYgKHByb3BzLmFmdGVyU3VibWl0KSB7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHByb3BzLmFmdGVyU3VibWl0KHN1Ym1pdFNjb3BlKTtcclxuICAgICAgICBpZiAoc3VjY2VzcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY3R4LmVtaXQoXCJzdWNjZXNzXCIsIHN1Ym1pdFNjb3BlKTtcclxuXHJcbiAgICAgIHJldHVybiBzdWJtaXRTY29wZTtcclxuICAgIH1cclxuXHJcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAvLyBpbW1lZGlhdGUgdmFsdWVDaGFuZ2Xop6blj5FcclxuICAgICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVDaGFuZ2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFsdWVDaGFuZ2UgPSBpdGVtLnZhbHVlQ2hhbmdlO1xyXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZSAmJiB2YWx1ZUNoYW5nZS5pbW1lZGlhdGUgPT09IHRydWUgJiYgdmFsdWVDaGFuZ2UuaGFuZGxlKSB7XHJcbiAgICAgICAgICBjb25zdCBldmVudCA9IHsga2V5LCB2YWx1ZTogZm9ybVtrZXldLCBmb3JtUmVmOiBwcm94eSwgLi4uc2NvcGUudmFsdWUsIGltbWVkaWF0ZTogdHJ1ZSB9O1xyXG4gICAgICAgICAgaWYgKHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xyXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZS5oYW5kbGUoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBmb3JtSXRlbVNob3coaXRlbTogYW55KSB7XHJcbiAgICAgIGlmIChpdGVtICYmIHVucmVmKGl0ZW0uc2hvdykgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZ3JvdXBJdGVtU2hvdyhncm91cEl0ZW06IGFueSkge1xyXG4gICAgICBpZiAoIWdyb3VwSXRlbS5jb2x1bW5zKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh1bnJlZihncm91cEl0ZW0uc2hvdykgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGxldCBrZXkgb2YgZ3JvdXBJdGVtLmNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29tcHV0ZWRDb2x1bW5zLnZhbHVlW2tleV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlzRmllbGRTaG93ID0gZm9ybUl0ZW1TaG93KGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtrZXldKTtcclxuICAgICAgICBpZiAoaXNGaWVsZFNob3cpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHByb3BzLndhdGNoKSB7XHJcbiAgICAgIHdhdGNoKFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XHJcbiAgICAgICAgICBpZiAocHJvcHMud2F0Y2gpIHtcclxuICAgICAgICAgICAgcHJvcHMud2F0Y2goc2NvcGUudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGVlcDogdHJ1ZSxcclxuICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBpc0RpcnR5KCkge1xyXG4gICAgICBjb25zdCBiZWZvcmUgPSBKU09OLnN0cmluZ2lmeShpbml0aWFsRm9ybSk7XHJcbiAgICAgIGNvbnN0IGFmdGVyID0gSlNPTi5zdHJpbmdpZnkoZm9ybSk7XHJcbiAgICAgIHJldHVybiBiZWZvcmUgIT09IGFmdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lcmdlZFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLnNsb3RzLCBjdHguc2xvdHMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY3R4LmVtaXQoXCJpbml0XCIsIHNjb3BlLnZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldChmb3JtLCBrZXkpO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgc2V0KGZvcm0sIGtleSwgdmFsdWUpO1xyXG4gICAgICAgIGRvVmFsdWVDaGFuZ2Uoa2V5LCB2YWx1ZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHVpLFxyXG4gICAgICB2YWxpZFJlZixcclxuICAgICAgZXJyb3JzUmVmLFxyXG4gICAgICBmb3JtUmVmLFxyXG4gICAgICBjb21wdXRlZENvbHVtbnMsXHJcbiAgICAgIGNvbXB1dGVkRGVmYXVsdENvbHVtbnMsXHJcbiAgICAgIHN1Ym1pdCxcclxuICAgICAgcmVzZXQsXHJcbiAgICAgIGdldEZvcm1SZWYsXHJcbiAgICAgIHNjb3BlLFxyXG4gICAgICBidWlsZEl0ZW1TY29wZSxcclxuICAgICAgZ3JvdXBBY3RpdmVLZXksXHJcbiAgICAgIGZvcm0sXHJcbiAgICAgIGZvcm1JdGVtUmVmcyxcclxuICAgICAgZ2V0Rm9ybURhdGEsXHJcbiAgICAgIHNldEZvcm1EYXRhLFxyXG4gICAgICBnZXRDb21wb25lbnRSZWYsXHJcbiAgICAgIG1lcmdlQ29sLFxyXG4gICAgICB2YWxpZGF0ZSxcclxuICAgICAgY29tcHV0ZWRHcm91cCxcclxuICAgICAgZ2V0Q29udGV4dEZuLFxyXG4gICAgICBmb3JtSXRlbVNob3csXHJcbiAgICAgIGdyb3VwSXRlbVNob3csXHJcbiAgICAgIGlzRGlydHksXHJcbiAgICAgIG1lcmdlZFNsb3RzXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1mb3JtIHtcclxuICAuZWwtY29sbGFwc2UtaXRlbV9fY29udGVudCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogMzBweDtcclxuICB9XHJcblxyXG4gIC5mcy1mb3JtLWludmFsaWQge1xyXG4gIH1cclxuXHJcbiAgLmZzLWZvcm0taXRlbS1jb21wb25lbnQge1xyXG4gICAgLmFudC1waWNrZXIsXHJcbiAgICAuYW50LWlucHV0LWFmZml4LXdyYXBwZXIsXHJcbiAgICAuYW50LWlucHV0LW51bWJlcixcclxuICAgIC5lbC1jYXNjYWRlcixcclxuICAgIC5lbC1kYXRlLWVkaXRvcixcclxuICAgIC5lbC1pbnB1dC1udW1iZXIsXHJcbiAgICAuZWwtaW5wdXQsXHJcbiAgICA+IC5lbC1zZWxlY3QsXHJcbiAgICA+IC5uLXNlbGVjdCxcclxuICAgIC5uLWRhdGUtcGlja2VyLFxyXG4gICAgLm4taW5wdXQtbnVtYmVyIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuZWwtcmFuZ2UtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLmVsLWRhdGUtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcclxuICAvLyAgd2lkdGg6IDEwMCU7XHJcbiAgLy99XHJcbn1cclxuXHJcbi5mcy1mb3JtLWdyaWQge1xyXG4gIC5mcy1yb3cge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcclxuICAgIC8vIGdhcDogMCAyMHB4OyAvL+WIl+mXtOi3nSAyMHB4XHJcbiAgICAuZnMtY29sIHtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhbnRkdlxyXG4gICAgLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xyXG4gICAgICB3aWR0aDogMTAwcHg7XHJcbiAgICAgIGZsZXg6IG5vbmU7XHJcbiAgICAgIG1heC13aWR0aDogbm9uZTtcclxuICAgIH1cclxuICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wtd3JhcHBlciB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1heC13aWR0aDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGVsZW1lbnRcclxuICAuZWwtcm93OjphZnRlcixcclxuICAuZWwtcm93OjpiZWZvcmUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuLmZzLWZvcm0tZmxleCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICAuZnMtcm93IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgLmZzLWZvcm0tZmxleCB7XHJcbiAgICAuZnMtcm93IHtcclxuICAgICAgLmZzLWNvbCB7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcclxuICAuZnMtZm9ybS1mbGV4IHtcclxuICAgIC5mcy1yb3cge1xyXG4gICAgICAuZnMtY29sIHtcclxuICAgICAgICAvLy5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcclxuICAgICAgICAvLyAgZmxleDogbm9uZTtcclxuICAgICAgICAvL31cclxuICAgICAgICAvLy5hbnQtZm9ybS1pdGVtIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xyXG4gICAgICAgIC8vICBmbGV4OiAxO1xyXG4gICAgICAgIC8vICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgLy99XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnRcclxuICAgIDppcz1cInVpLmZvcm0ubmFtZVwiXHJcbiAgICByZWY9XCJmb3JtUmVmXCJcclxuICAgIGNsYXNzPVwiZnMtZm9ybVwiXHJcbiAgICA6Y2xhc3M9XCJ7XHJcbiAgICAgICdmcy1mb3JtLWdyaWQnOiBkaXNwbGF5ID09PSAnZ3JpZCcsXHJcbiAgICAgICdmcy1mb3JtLWZsZXgnOiBkaXNwbGF5ID09PSAnZmxleCcsXHJcbiAgICAgICdmcy1mb3JtLWludmFsaWQnOiB2YWxpZFJlZiA9PT0gZmFsc2VcclxuICAgIH1cIlxyXG4gICAgb25zdWJtaXQ9XCJldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXHJcbiAgICA6bW9kZWw9XCJmb3JtXCJcclxuICA+XHJcbiAgICA8IS0tIHJvdyAtLT5cclxuICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLXJvd1wiIHYtYmluZD1cInJvd1wiPlxyXG4gICAgICA8IS0tIGNvbCAtLT5cclxuICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiaXRlbSBpbiBjb21wdXRlZERlZmF1bHRDb2x1bW5zXCIgOmtleT1cIml0ZW0/LmtleVwiPlxyXG4gICAgICAgIDxmcy1mb3JtLWl0ZW0tY29sXHJcbiAgICAgICAgICA6cmVmPVwiXHJcbiAgICAgICAgICAgIChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtSXRlbVJlZnNbaXRlbS5rZXldID0gZWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgOmNvbD1cIm1lcmdlQ29sKGl0ZW0uY29sKVwiXHJcbiAgICAgICAgICA6aXRlbT1cIml0ZW1cIlxyXG4gICAgICAgICAgOmhlbHBlcj1cImhlbHBlclwiXHJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwgaXRlbS5rZXkpXCJcclxuICAgICAgICAgIDpzbG90cz1cIm1lcmdlZFNsb3RzWydmb3JtXycgKyBpdGVtLmtleV1cIlxyXG4gICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcclxuICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJzZXQoZm9ybSwgaXRlbS5rZXksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L2NvbXBvbmVudD5cclxuICAgIDxjb21wb25lbnRcclxuICAgICAgOmlzPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyLnBhcmVudFwiXHJcbiAgICAgIHYtaWY9XCJjb21wdXRlZEdyb3VwLndyYXBwZXJcIlxyXG4gICAgICB2LW1vZGVsOlt1aS5jb2xsYXBzZS5tb2RlbFZhbHVlXT1cImdyb3VwQWN0aXZlS2V5XCJcclxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXHJcbiAgICAgIHYtYmluZD1cImNvbXB1dGVkR3JvdXBcIlxyXG4gICAgPlxyXG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoZ3JvdXBJdGVtLCBncm91cEtleSkgb2YgY29tcHV0ZWRHcm91cC5ncm91cHNcIiA6a2V5PVwiZ3JvdXBLZXlcIj5cclxuICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICA6aXM9XCJjb21wdXRlZEdyb3VwLndyYXBwZXIuY2hpbGRcIlxyXG4gICAgICAgICAgdi1pZj1cImdyb3VwSXRlbVNob3coZ3JvdXBJdGVtKVwiXHJcbiAgICAgICAgICA6W3VpLmNvbGxhcHNlLmtleU5hbWVdPVwiZ3JvdXBLZXlcIlxyXG4gICAgICAgICAgdi1iaW5kPVwiZ3JvdXBJdGVtXCJcclxuICAgICAgICAgIDpjbGFzcz1cInsgJ2ZzLWZvcm0tZ3JvdXAtZXJyb3InOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIHNsb3ROYW1lKSBvZiBncm91cEl0ZW0uc2xvdHNcIiA6a2V5PVwic2xvdE5hbWVcIiAjW3Nsb3ROYW1lXT1cInNjb3BlXCI+XHJcbiAgICAgICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaXRlbVwiIDpzY29wZT1cInsgLi4uc2NvcGUsIGhhc0Vycm9yOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPCEtLSByb3cgLS0+XHJcbiAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgY2xhc3M9XCJmcy1yb3dcIiB2LWJpbmQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBjb2wgLS0+XHJcbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cImtleSBpbiBncm91cEl0ZW0uY29sdW1uc1wiIDprZXk9XCJrZXlcIj5cclxuICAgICAgICAgICAgICA8ZnMtZm9ybS1pdGVtLWNvbFxyXG4gICAgICAgICAgICAgICAgdi1pZj1cImNvbXB1dGVkQ29sdW1uc1trZXldXCJcclxuICAgICAgICAgICAgICAgIDpyZWY9XCJcclxuICAgICAgICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1JdGVtUmVmc1trZXldID0gZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgOmNvbD1cIm1lcmdlQ29sKGNvbXB1dGVkQ29sdW1uc1trZXldLmNvbClcIlxyXG4gICAgICAgICAgICAgICAgOml0ZW09XCJjb21wdXRlZENvbHVtbnNba2V5XVwiXHJcbiAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwga2V5KVwiXHJcbiAgICAgICAgICAgICAgICA6c2xvdHM9XCJtZXJnZWRTbG90c1snZm9ybV8nICsga2V5XVwiXHJcbiAgICAgICAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxyXG4gICAgICAgICAgICAgICAgOmhlbHBlcj1cImhlbHBlclwiXHJcbiAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0KGZvcm0sIGtleSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC9jb21wb25lbnQ+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQge1xyXG4gIGNvbXB1dGVkLFxyXG4gIGRlZmluZUNvbXBvbmVudCxcclxuICBnZXRDdXJyZW50SW5zdGFuY2UsXHJcbiAgb25Nb3VudGVkLFxyXG4gIHJlYWN0aXZlLFxyXG4gIFJlZixcclxuICByZWYsXHJcbiAgdG9SYXcsXHJcbiAgdW5yZWYsXHJcbiAgVW53cmFwTmVzdGVkUmVmcyxcclxuICB3YXRjaFxyXG59IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgZWFjaCwgc2V0LCBjbG9uZURlZXAsIGVudHJpZXMsIGdldCwgdW5zZXQsIGZvckVhY2gsIG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBDb21wdXRlVmFsdWUsIHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XHJcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwubG9nXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEZvcm1TY29wZUNvbnRleHQsIFNldEZvcm1EYXRhT3B0aW9ucywgdXNlVWksIHV0aWxzIH0gZnJvbSBcIi4uLy4uL2luZGV4XCI7XHJcblxyXG4vKipcclxuICog6YWN572u5YyW55qE6KGo5Y2V57uE5Lu2XHJcbiAqIOaatOmcsueahOaWueazle+8mlxyXG4gKiByZWYuc3VibWl0KCkgPSDmj5DkuqTooajljZVcclxuICogcmVmLnJlc2V0KCkgPSDph43nva7ooajljZVcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0Zvcm1cIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDliJ3lp4vooajljZXmlbDmja5cclxuICAgICAqKi9cclxuICAgIGluaXRpYWxGb3JtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWtl+auteaooeeJiFxyXG4gICAgICoge1xyXG4gICAgICogICBrZXk6e1xyXG4gICAgICogICAgIHRpdGxlOiBcIuWtl+auteWQjeensFwiLFxyXG4gICAgICogICAgIGNvbXBvbmVudDp7XHJcbiAgICAgKiAgICAgICBuYW1lOlwi57uE5Lu25ZCN56ewXCJcclxuICAgICAqICAgICAgIC4uLue7hOS7tuWPguaVsFxyXG4gICAgICogICAgIH1cclxuICAgICAqICAgfVxyXG4gICAgICogfVxyXG4gICAgICogKi9cclxuICAgIGNvbHVtbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWtl+auteWIhue7hFxyXG4gICAgICoge1xyXG4gICAgICogICB0eXBlOid4eHgnLCAvL+WIhue7hOWxleekuuexu+Wei1xyXG4gICAgICogICBncm91cHM6eyAvL+WIhue7hOaVsOaNrlxyXG4gICAgICogICAgIGdyb3VwS2V5OnsgdGl0bGU6J3h4eCcsY29sdW1uczpbJ2ZpZWxkS2V5JywnZmllbGRLZXknXX1cclxuICAgICAqICAgfVxyXG4gICAgICogfVxyXG4gICAgICovXHJcbiAgICBncm91cDoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6YeN572u6KGo5Y2V5ZCO55qE5pON5L2cXHJcbiAgICAgKi9cclxuICAgIGRvUmVzZXQ6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog54K55Ye75L+d5a2Y5oyJ6ZKu77yM6KGo5Y2V5qCh6aqM5YmN5omn6KGM5pON5L2c77yIYXN5bmPvvIlcclxuICAgICAqL1xyXG4gICAgYmVmb3JlVmFsaWRhdGU6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6KGo5Y2V5qCh6aqM5a6M5a6M5oiQ5ZCO77yM5o+Q5Lqk5YmN5aSE55CG77yIYXN5bmPvvIlcclxuICAgICAqL1xyXG4gICAgYmVmb3JlU3VibWl0OiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOeCueWHu+S/neWtmOaMiemSruaXtuaJp+ihjOaTjeS9nO+8iGFzeW5j77yJXHJcbiAgICAgKi9cclxuICAgIGRvU3VibWl0OiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOihqOWNleaPkOS6pOWQjuWkhOeQhu+8iGFzeW5j77yJXHJcbiAgICAgKi9cclxuICAgIGFmdGVyU3VibWl0OiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaPkuanveWGheWuuVxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOW4g+WxgOaWueW8j+OAkGZsZXh8Z3JpZOOAkVxyXG4gICAgICovXHJcbiAgICBkaXNwbGF5OiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogXCJmbGV4XCIgLy8gZmxleFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5bqP5Y+377yM57yW6L6R5pe25Lya5Lyg5YWlXHJcbiAgICAgKi9cclxuICAgIGluZGV4OiB7XHJcbiAgICAgIHR5cGU6IE51bWJlcixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmqKHlvI8gW2FkZCxlZGl0LHZpZXcs6Ieq5a6a5LmJXVxyXG4gICAgICovXHJcbiAgICBtb2RlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiBhLXJvd+mFjee9rlxyXG4gICAgICovXHJcbiAgICByb3c6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGVsLWNvbHxhLWNvbOmFjee9ru+8jOWPr+mFjee9rui3qOWIl1xyXG4gICAgICovXHJcbiAgICBjb2w6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGZvcm1JdGVt55qE5YWs5YWx6YWN572uXHJcbiAgICAgKi9cclxuICAgIGZvcm1JdGVtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiBoZWxwZXLkvY3nva7vvJp7cG9zaXRpb246J2xhYmVsJ31cclxuICAgICAqL1xyXG4gICAgaGVscGVyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuXHJcbiAgICB3YXRjaDoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogbnVsbFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcInJlc2V0XCIsIFwic3VibWl0XCIsIFwic3VjY2Vzc1wiLCBcInZhbGlkYXRpb25FcnJvclwiLCBcInZhbHVlLWNoYW5nZVwiLCBcImluaXRcIl0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCB7IEFzeW5jQ29tcHV0ZVZhbHVlLCBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XHJcbiAgICBjb25zdCBmb3JtUmVmID0gcmVmKCk7XHJcbiAgICBjb25zdCBmb3JtOiBVbndyYXBOZXN0ZWRSZWZzPGFueT4gPSByZWFjdGl2ZSh7fSk7XHJcbiAgICBjb25zdCB7IHByb3h5IH0gPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuXHJcbiAgICAvLyB1dGlscy50cmFjZShcImZzLWZvcm1cIik7XHJcblxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxyXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgKGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSB8fCBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQ29tcHV0ZVZhbHVlKSkge1xyXG4gICAgICAgIGxvZ2dlci53YXJuKFwiZm9ybS52YWx1ZemFjee9ruS4jeaUr+aMgUNvbXB1dGUvQXN5bmNDb21wdXRl57G75Z6L55qE5Yqo5oCB6K6h566XXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCkge1xyXG4gICAgICBjb25zdCBmb3JtID0ge307XHJcbiAgICAgIC8vIOWIneWni+aVsOaNrui1i+WAvFxyXG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihpdGVtLnZhbHVlKTtcclxuICAgICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc2V0KGZvcm0sIGtleSwgZGVmVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIG1lcmdlKGZvcm0sIGNsb25lRGVlcChwcm9wcy5pbml0aWFsRm9ybSkpO1xyXG4gICAgICByZXR1cm4gZm9ybTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XHJcbiAgICBzZXRGb3JtRGF0YShpbml0aWFsRm9ybSk7XHJcblxyXG4gICAgY29uc3Qgc2NvcGU6IFJlZjxGb3JtU2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICByb3c6IGluaXRpYWxGb3JtLFxyXG4gICAgICAgIGZvcm0sXHJcbiAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxyXG4gICAgICAgIG1vZGU6IHByb3BzLm1vZGUgfHwgXCJhZGRcIixcclxuICAgICAgICBhdHRyczogY3R4LmF0dHJzLFxyXG4gICAgICAgIGdldENvbXBvbmVudFJlZlxyXG4gICAgICB9IGFzIEZvcm1TY29wZUNvbnRleHQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKSB7XHJcbiAgICAgIHJldHVybiBzY29wZS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xyXG4gICAgfSk7XHJcbiAgICAvL2Zvcm0udmFsdWVCdWlsZGVyXHJcblxyXG4gICAgZnVuY3Rpb24gZG9WYWx1ZUJ1aWxkZXIoZm9ybTogYW55KSB7XHJcbiAgICAgIGlmIChmb3JtID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtLCBrZXkpO1xyXG4gICAgICAgIGlmIChpdGVtLnZhbHVlQnVpbGRlcikge1xyXG4gICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBpdGVtLnZhbHVlQnVpbGRlcih7XHJcbiAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgIHJvdzogaW5pdGlhbEZvcm0sXHJcbiAgICAgICAgICAgIGZvcm0sXHJcbiAgICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcclxuICAgICAgICAgICAgbW9kZTogcHJvcHMubW9kZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgIShyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xyXG4gICAgICAgICAgICBzZXQoZm9ybSwga2V5LCByZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybURhdGEoKSB7XHJcbiAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gc2V0Rm9ybURhdGEoZm9ybURhdGE6IGFueSwgb3B0aW9uczogU2V0Rm9ybURhdGFPcHRpb25zID0ge30pIHtcclxuICAgICAgZG9WYWx1ZUJ1aWxkZXIoZm9ybURhdGEpO1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMubWVyZ2VGb3JtID09PSBmYWxzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm0pIHtcclxuICAgICAgICAgIGRlbGV0ZSBmb3JtW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIG1lcmdlKGZvcm0sIGZvcm1EYXRhKTtcclxuICAgICAgY29uc3QgeyB2YWx1ZUNoYW5nZSB9ID0gb3B0aW9ucztcclxuICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgICAgZm9yRWFjaChwcm9wcy5jb2x1bW5zLCAoY29sdW1uOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1ba2V5XTtcclxuICAgICAgICAgIGRvVmFsdWVDaGFuZ2Uoa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBtZXJnZUNvbCguLi5jb2w6IGFueSkge1xyXG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLmNvbCwgLi4uY29sKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBidWlsZEl0ZW1TY29wZShpdGVtOiBhbnkpOiBGb3JtU2NvcGVDb250ZXh0IHtcclxuICAgICAgcmV0dXJuIHsga2V5OiBpdGVtLmtleSwgLi4uc2NvcGUudmFsdWUgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBkb1ZhbHVlQnVpbGRlcihmb3JtKTtcclxuXHJcbiAgICAvLyB3YXRjaChcclxuICAgIC8vICAgKCkgPT4gcHJvcHMuaW5pdGlhbEZvcm0sXHJcbiAgICAvLyAgICgpID0+IHtcclxuICAgIC8vICAgICBzZXRGb3JtRGF0YShjcmVhdGVJbml0aWFsRm9ybSgpLCB7IG1lcmdlRm9ybTogZmFsc2UgfSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICk7XHJcblxyXG4gICAgZnVuY3Rpb24gZG9WYWx1ZUNoYW5nZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICBjb25zdCBldmVudCA9IHsga2V5LCB2YWx1ZSwgZm9ybVJlZjogcHJveHksIC4uLnNjb3BlLnZhbHVlLCBpbW1lZGlhdGU6IGZhbHNlIH07XHJcbiAgICAgIGN0eC5lbWl0KFwidmFsdWUtY2hhbmdlXCIsIGV2ZW50KTtcclxuICAgICAgbGV0IHZhbHVlQ2hhbmdlID0gcHJvcHMuY29sdW1uc1trZXldLnZhbHVlQ2hhbmdlO1xyXG4gICAgICBpZiAodmFsdWVDaGFuZ2UpIHtcclxuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgdmFsdWVDaGFuZ2UoZXZlbnQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVDaGFuZ2UuaGFuZGxlKSB7XHJcbiAgICAgICAgICB2YWx1ZUNoYW5nZS5oYW5kbGUoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1JdGVtUmVmczogUmVmID0gcmVmKHt9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRGb3JtSXRlbVJlZihrZXk6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gZm9ybUl0ZW1SZWZzLnZhbHVlW2tleV0uZ2V0Rm9ybUl0ZW1SZWYoKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcsIGlzQXN5bmMgPSBmYWxzZSkge1xyXG4gICAgICByZXR1cm4gZ2V0Rm9ybUl0ZW1SZWYoa2V5KT8uZ2V0Q29tcG9uZW50UmVmKGlzQXN5bmMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGdyb3VwQWN0aXZlS2V5ID0gcmVmKFtdKTtcclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXHJcbiAgICBmb3JFYWNoKHByb3BzLmdyb3VwPy5ncm91cHMsIChncm91cEl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGdyb3VwSXRlbS5jb2xsYXBzZWQgIT09IHRydWUpIHtcclxuICAgICAgICBncm91cEFjdGl2ZUtleS52YWx1ZS5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxyXG4gICAgaWYgKHByb3BzLmdyb3VwPy5ncm91cFR5cGUgPT09IFwidGFic1wiKSB7XHJcbiAgICAgIGdyb3VwQWN0aXZlS2V5LnZhbHVlID0gZ3JvdXBBY3RpdmVLZXkudmFsdWUubGVuZ3RoID4gMCA/IGdyb3VwQWN0aXZlS2V5LnZhbHVlWzBdIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvL+aehOW7uuWIhue7hOaVsOaNrlxyXG4gICAgY29uc3QgY29tcHV0ZWRHcm91cCA9IGRvQ29tcHV0ZWQoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICByZXR1cm4gcHJvcHMuZ3JvdXA7XHJcbiAgICAgIH0sXHJcbiAgICAgIGdldENvbnRleHRGbixcclxuICAgICAgbnVsbCxcclxuICAgICAgKGdyb3VwID0ge30pID0+IHtcclxuICAgICAgICAvL+aJvuWHuuayoeaciea3u+WKoOi/m+WIhue7hOeahOWtl+autVxyXG4gICAgICAgIGNvbnN0IGdyb3VwZWRLZXlzOiBhbnkgPSB7fTtcclxuICAgICAgICBmb3JFYWNoKGdyb3VwPy5ncm91cHMsIChncm91cEl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGZvckVhY2goZ3JvdXBJdGVtLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtpdGVtXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgdXRpbHMubG9nZ2VyLndhcm4oXCLml6DmlYjnmoTliIbnu4TlrZfmrrXvvJpcIiArIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBncm91cGVkS2V5c1tpdGVtXSA9IGtleTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB0eXBlID0gZ3JvdXAuZ3JvdXBUeXBlO1xyXG4gICAgICAgIGxldCB3cmFwcGVyID0ge1xyXG4gICAgICAgICAgcGFyZW50OiB1aS5jb2xsYXBzZS5uYW1lLFxyXG4gICAgICAgICAgY2hpbGQ6IHVpLmNvbGxhcHNlSXRlbS5uYW1lXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gXCJ0YWJzXCIpIHtcclxuICAgICAgICAgIHdyYXBwZXIucGFyZW50ID0gdWkudGFicy5uYW1lO1xyXG4gICAgICAgICAgd3JhcHBlci5jaGlsZCA9IHVpLnRhYlBhbmUubmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB3cmFwcGVyLFxyXG4gICAgICAgICAgICBncm91cGVkS2V5c1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGdyb3VwXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlZERlZmF1bHRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW5zOiBhbnkgPSBbXTtcclxuICAgICAgLy9kZWZhdWx0IGNvbHVtbnPmjpLluo9cclxuICAgICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsICh2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjbG9uZURlZXAocHJvcHMuZm9ybUl0ZW0gfHwge30pO1xyXG4gICAgICAgIHZhbHVlID0gbWVyZ2UoaXRlbSwgdmFsdWUpO1xyXG4gICAgICAgIHZhbHVlLmtleSA9IGtleTtcclxuICAgICAgICBpZiAodmFsdWUub3JkZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFsdWUub3JkZXIgPSBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXMgPT0gbnVsbCB8fCBjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5c1trZXldID09IG51bGwpIHtcclxuICAgICAgICAgIGNvbHVtbnMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbHVlLmNvbCA9IG1lcmdlQ29sKHZhbHVlLmNvbCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvL+aOkuW6j1xyXG4gICAgICBjb2x1bW5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBjb2x1bW5zO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybVJlZigpIHtcclxuICAgICAgcmV0dXJuIGZvcm1SZWYudmFsdWU7XHJcbiAgICB9XHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXNldCgpIHtcclxuICAgICAgLy8gdWkuZm9ybS5yZXNldFdyYXAoZm9ybVJlZi52YWx1ZSwgeyBmb3JtLCBpbml0aWFsRm9ybTogY3JlYXRlSW5pdGlhbEZvcm0oKSB9KTtcclxuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xyXG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtKTtcclxuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XHJcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0KGluaXRpYWxGb3JtLCBlbnRyeVswXSk7XHJcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB1bnNldChmb3JtLCBlbnRyeVswXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldChmb3JtLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChwcm9wcy5kb1Jlc2V0KSB7XHJcbiAgICAgICAgYXdhaXQgcHJvcHMuZG9SZXNldChzY29wZS52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgY3R4LmVtaXQoXCJyZXNldFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2YWxpZFJlZjogUmVmID0gcmVmKCk7XHJcbiAgICBjb25zdCBlcnJvcnNSZWY6IFJlZiA9IHJlZih7fSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZmlsbEdyb3VwRXJyb3IoZmllbGRFcnJvcnM6IGFueSkge1xyXG4gICAgICBpZiAoIWNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBmaWVsZEVycm9ycykge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXNba2V5XTtcclxuICAgICAgICBpZiAoZ3JvdXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZmllbGRFcnJvcnNbXCJncm91cC5cIiArIGdyb3VwXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGUoKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlU2NvcGUgPSB7IC4uLnNjb3BlLnZhbHVlLCBmb3JtIH07XHJcbiAgICAgIGlmICh2YWxpZGF0ZVNjb3BlLm1vZGUgPT09IFwidmlld1wiKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wcy5iZWZvcmVWYWxpZGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHByb3BzLmJlZm9yZVZhbGlkYXRlKHZhbGlkYXRlU2NvcGUpO1xyXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGVycm9yc1JlZi52YWx1ZSA9IHt9O1xyXG4gICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKGZvcm1SZWYudmFsdWUpO1xyXG4gICAgICAgIHZhbGlkUmVmLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XHJcbiAgICAgICAgdmFsaWRSZWYudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCB2YWxpZGF0ZUVycm9ycyA9IHVpLmZvcm0udHJhbnNmb3JtVmFsaWRhdGVFcnJvcnMoZSk7XHJcbiAgICAgICAgZmlsbEdyb3VwRXJyb3IodmFsaWRhdGVFcnJvcnMpO1xyXG4gICAgICAgIGVycm9yc1JlZi52YWx1ZSA9IHZhbGlkYXRlRXJyb3JzO1xyXG4gICAgICAgIGN0eC5lbWl0KFwidmFsaWRhdGlvbkVycm9yXCIsIHNjb3BlLnZhbHVlKTtcclxuICAgICAgICB0aHJvdyBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBmdW5jdGlvbiBzdWJtaXQoKSB7XHJcbiAgICAgIGF3YWl0IHZhbGlkYXRlKCk7XHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gY2xvbmVEZWVwKHRvUmF3KGZvcm0pKTtcclxuICAgICAgY29uc3Qgc3VibWl0U2NvcGUgPSB7IC4uLnNjb3BlLnZhbHVlLCBmb3JtOiBmb3JtRGF0YSB9O1xyXG4gICAgICBsb2dnZXIuZGVidWcoXCJmb3JtIHN1Ym1pdFwiLCBKU09OLnN0cmluZ2lmeShmb3JtKSk7XHJcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGtleSk7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVSZXNvbHZlKSB7XHJcbiAgICAgICAgICBjb25zdCByZXM6IGFueSA9IGl0ZW0udmFsdWVSZXNvbHZlKHtcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgLi4uc3VibWl0U2NvcGVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmICEocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcclxuICAgICAgICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChwcm9wcy5iZWZvcmVTdWJtaXQpIHtcclxuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBwcm9wcy5iZWZvcmVTdWJtaXQoc3VibWl0U2NvcGUpO1xyXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+enu+mZpOS4jeWFgeiuuOaPkOS6pOeahOWtl+autVxyXG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc3VibWl0ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgdW5zZXQoZm9ybURhdGEsIGtleSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnN1Ym1pdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgLy/orr7nva7lvLrliLbmj5DkuqTnmoTlrZfmrrVcclxuICAgICAgICAgIHNldChmb3JtRGF0YSwga2V5LCBmb3JtRGF0YVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHByb3BzLmRvU3VibWl0KSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcHJvcHMuZG9TdWJtaXQoc3VibWl0U2NvcGUpO1xyXG4gICAgICAgIHN1Ym1pdFNjb3BlLnJlcyA9IHJlcztcclxuICAgICAgICBpZiAocmVzID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjdHguZW1pdChcInN1Ym1pdFwiLCBzdWJtaXRTY29wZSk7XHJcbiAgICAgIGlmIChwcm9wcy5hZnRlclN1Ym1pdCkge1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBwcm9wcy5hZnRlclN1Ym1pdChzdWJtaXRTY29wZSk7XHJcbiAgICAgICAgaWYgKHN1Y2Nlc3MgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGN0eC5lbWl0KFwic3VjY2Vzc1wiLCBzdWJtaXRTY29wZSk7XHJcblxyXG4gICAgICByZXR1cm4gc3VibWl0U2NvcGU7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgLy8gaW1tZWRpYXRlIHZhbHVlQ2hhbmdl6Kem5Y+RXHJcbiAgICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlID09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlID0gaXRlbS52YWx1ZUNoYW5nZTtcclxuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgJiYgdmFsdWVDaGFuZ2UuaW1tZWRpYXRlID09PSB0cnVlICYmIHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xyXG4gICAgICAgICAgY29uc3QgZXZlbnQgPSB7IGtleSwgdmFsdWU6IGZvcm1ba2V5XSwgZm9ybVJlZjogcHJveHksIC4uLnNjb3BlLnZhbHVlLCBpbW1lZGlhdGU6IHRydWUgfTtcclxuICAgICAgICAgIGlmICh2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcclxuICAgICAgICAgICAgdmFsdWVDaGFuZ2UuaGFuZGxlKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZm9ybUl0ZW1TaG93KGl0ZW06IGFueSkge1xyXG4gICAgICBpZiAoaXRlbSAmJiB1bnJlZihpdGVtLnNob3cpICE9PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdyb3VwSXRlbVNob3coZ3JvdXBJdGVtOiBhbnkpIHtcclxuICAgICAgaWYgKCFncm91cEl0ZW0uY29sdW1ucykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodW5yZWYoZ3JvdXBJdGVtLnNob3cpID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQga2V5IG9mIGdyb3VwSXRlbS5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc0ZpZWxkU2hvdyA9IGZvcm1JdGVtU2hvdyhjb21wdXRlZENvbHVtbnMudmFsdWVba2V5XSk7XHJcbiAgICAgICAgaWYgKGlzRmllbGRTaG93KSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wcy53YXRjaCkge1xyXG4gICAgICB3YXRjaChcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZm9ybTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChuZXdWYWwsIG9sZFZhbCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHByb3BzLndhdGNoKSB7XHJcbiAgICAgICAgICAgIHByb3BzLndhdGNoKHNjb3BlLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRlZXA6IHRydWUsXHJcbiAgICAgICAgICBpbW1lZGlhdGU6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gaXNEaXJ0eSgpIHtcclxuICAgICAgY29uc3QgYmVmb3JlID0gSlNPTi5zdHJpbmdpZnkoaW5pdGlhbEZvcm0pO1xyXG4gICAgICBjb25zdCBhZnRlciA9IEpTT04uc3RyaW5naWZ5KGZvcm0pO1xyXG4gICAgICByZXR1cm4gYmVmb3JlICE9PSBhZnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZXJnZWRTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5zbG90cywgY3R4LnNsb3RzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGN0eC5lbWl0KFwiaW5pdFwiLCBzY29wZS52YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZ2V0OiAoZm9ybTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHJldHVybiBnZXQoZm9ybSwga2V5KTtcclxuICAgICAgfSxcclxuICAgICAgc2V0OiAoZm9ybTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHNldChmb3JtLCBrZXksIHZhbHVlKTtcclxuICAgICAgICBkb1ZhbHVlQ2hhbmdlKGtleSwgdmFsdWUpO1xyXG4gICAgICB9LFxyXG4gICAgICB1aSxcclxuICAgICAgdmFsaWRSZWYsXHJcbiAgICAgIGVycm9yc1JlZixcclxuICAgICAgZm9ybVJlZixcclxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxyXG4gICAgICBjb21wdXRlZERlZmF1bHRDb2x1bW5zLFxyXG4gICAgICBzdWJtaXQsXHJcbiAgICAgIHJlc2V0LFxyXG4gICAgICBnZXRGb3JtUmVmLFxyXG4gICAgICBzY29wZSxcclxuICAgICAgYnVpbGRJdGVtU2NvcGUsXHJcbiAgICAgIGdyb3VwQWN0aXZlS2V5LFxyXG4gICAgICBmb3JtLFxyXG4gICAgICBmb3JtSXRlbVJlZnMsXHJcbiAgICAgIGdldEZvcm1EYXRhLFxyXG4gICAgICBzZXRGb3JtRGF0YSxcclxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxyXG4gICAgICBtZXJnZUNvbCxcclxuICAgICAgdmFsaWRhdGUsXHJcbiAgICAgIGNvbXB1dGVkR3JvdXAsXHJcbiAgICAgIGdldENvbnRleHRGbixcclxuICAgICAgZm9ybUl0ZW1TaG93LFxyXG4gICAgICBncm91cEl0ZW1TaG93LFxyXG4gICAgICBpc0RpcnR5LFxyXG4gICAgICBtZXJnZWRTbG90c1xyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtZm9ybSB7XHJcbiAgLmVsLWNvbGxhcHNlLWl0ZW1fX2NvbnRlbnQge1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgIHBhZGRpbmctbGVmdDogMzBweDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XHJcbiAgfVxyXG5cclxuICAuZnMtZm9ybS1pbnZhbGlkIHtcclxuICB9XHJcblxyXG4gIC5mcy1mb3JtLWl0ZW0tY29tcG9uZW50IHtcclxuICAgIC5hbnQtcGlja2VyLFxyXG4gICAgLmFudC1pbnB1dC1hZmZpeC13cmFwcGVyLFxyXG4gICAgLmFudC1pbnB1dC1udW1iZXIsXHJcbiAgICAuZWwtY2FzY2FkZXIsXHJcbiAgICAuZWwtZGF0ZS1lZGl0b3IsXHJcbiAgICAuZWwtaW5wdXQtbnVtYmVyLFxyXG4gICAgLmVsLWlucHV0LFxyXG4gICAgPiAuZWwtc2VsZWN0LFxyXG4gICAgPiAubi1zZWxlY3QsXHJcbiAgICAubi1kYXRlLXBpY2tlcixcclxuICAgIC5uLWlucHV0LW51bWJlciB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2ljb24ge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgIH1cclxuICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2Nsb3NlLWljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy5lbC1kYXRlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XHJcbiAgLy8gIHdpZHRoOiAxMDAlO1xyXG4gIC8vfVxyXG59XHJcblxyXG4uZnMtZm9ybS1ncmlkIHtcclxuICAuZnMtcm93IHtcclxuICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDUwJSA1MCU7XHJcbiAgICAvLyBnYXA6IDAgMjBweDsgLy/liJfpl7Tot50gMjBweFxyXG4gICAgLmZzLWNvbCB7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYW50ZHZcclxuICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcclxuICAgICAgd2lkdGg6IDEwMHB4O1xyXG4gICAgICBmbGV4OiBub25lO1xyXG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAuYW50LWZvcm0taXRlbS1jb250cm9sLXdyYXBwZXIge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBlbGVtZW50XHJcbiAgLmVsLXJvdzo6YWZ0ZXIsXHJcbiAgLmVsLXJvdzo6YmVmb3JlIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcbi5mcy1mb3JtLWZsZXgge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgLmZzLXJvdyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5mcy1mb3JtLWZsZXgge1xyXG4gICAgLmZzLXJvdyB7XHJcbiAgICAgIC5mcy1jb2wge1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7XHJcbiAgLmZzLWZvcm0tZmxleCB7XHJcbiAgICAuZnMtcm93IHtcclxuICAgICAgLmZzLWNvbCB7XHJcbiAgICAgICAgLy8uYW50LWZvcm0taXRlbS1sYWJlbCB7XHJcbiAgICAgICAgLy8gIGZsZXg6IG5vbmU7XHJcbiAgICAgICAgLy99XHJcbiAgICAgICAgLy8uYW50LWZvcm0taXRlbSAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcclxuICAgICAgICAvLyAgZmxleDogMTtcclxuICAgICAgICAvLyAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIC8vfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50XHJcbiAgICA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCJcclxuICAgIHYtaWY9XCJjb21wdXRlZEl0ZW1cIlxyXG4gICAgY2xhc3M9XCJmcy1mb3JtLWl0ZW1cIlxyXG4gICAgOlt1aS5mb3JtSXRlbS5wcm9wXT1cImNvbXB1dGVkS2V5XCJcclxuICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbVwiXHJcbiAgICA6cGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxyXG4gICAgOnJ1bGUtcGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxyXG4gID5cclxuICAgIDx0ZW1wbGF0ZSAjbGFiZWw+XHJcbiAgICAgIDxzcGFuIHYtaWY9XCJjb21wdXRlZExhYmVsSXNSZW5kZXJcIiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC10ZXh0XCI+XHJcbiAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZExhYmVsUmVuZGVyXCI+PC9mcy1yZW5kZXI+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gdi1lbHNlIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLXRleHRcIiA6dGl0bGU9XCJjb21wdXRlZExhYmVsXCI+XHJcbiAgICAgICAge3sgY29tcHV0ZWRMYWJlbCB9fVxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkudG9vbHRpcC5uYW1lXCJcclxuICAgICAgICB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uID09PSAnbGFiZWwnXCJcclxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEhlbHBlclRvb2x0aXBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC5jb250ZW50XT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oZWxwZXItdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICA8ZnMtZm9ybS1oZWxwZXIgOmhlbHBlcj1cImNvbXB1dGVkSXRlbS5oZWxwZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLnRyaWdnZXJdPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtaWNvblwiPlxyXG4gICAgICAgICAgICA8ZnMtaWNvbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uLWlubmVyXCIgOmljb249XCJ1aS5pY29ucy5xdWVzdGlvblwiPjwvZnMtaWNvbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLWNvbnRlbnRcIj5cclxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnRvcFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS50b3BSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tcmVuZGVyXCI+XHJcbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnByZWZpeFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5wcmVmaXhSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1jb21wb25lbnRcIj5cclxuICAgICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwiZm9ybVNsb3RcIiA6c2xvdHM9XCJmb3JtU2xvdFwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZVwiPlxyXG4gICAgICAgICAgICA8ZnMtcmVuZGVyXHJcbiAgICAgICAgICAgICAgdi1pZj1cIlxyXG4gICAgICAgICAgICAgICAgY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyICYmXHJcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2ggJiZcclxuICAgICAgICAgICAgICAgIGNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5tYXRjaChzY29wZUZ1bmMoKSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5yZW5kZXJcIlxyXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGZzLXJlbmRlciB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cclxuICAgICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcclxuICAgICAgICAgICAgICB2LWVsc2VcclxuICAgICAgICAgICAgICByZWY9XCJjb21wb25lbnRSZW5kZXJSZWZcIlxyXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbS5jb21wb25lbnRcIlxyXG4gICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxyXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcclxuICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwidXBkYXRlTW9kZWxWYWx1ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5zdWZmaXhSZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uc3VmZml4UmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLmJvdHRvbVJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5ib3R0b21SZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uICE9PSAnbGFiZWwnXCI+XHJcbiAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUmVmLCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IEZzUmVuZGVyIGZyb20gXCIuLi9yZW5kZXIvZnMtcmVuZGVyLmpzXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuLyoqXHJcbiAqIGZvcm0taXRlbee7hOS7tuWwgeijhVxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRm9ybUl0ZW1cIixcclxuICBjb21wb25lbnRzOiB7IEZzUmVuZGVyIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog6KGo5Y2V5a2X5q615YC8KHYtbW9kZWwpXHJcbiAgICAgKi9cclxuICAgIG1vZGVsVmFsdWU6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrZfmrrXphY3nva5cclxuICAgICAqL1xyXG4gICAgaXRlbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8YW55PixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrZfmrrXnu4Tku7bmj5Lmp71cclxuICAgICAqL1xyXG4gICAgZm9ybVNsb3Q6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIGdldENvbnRleHRGbjoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgaGVscGVyOiB7XHJcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF1cclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZiA9IHJlZigpO1xyXG4gICAgLy8gdXRpbHMudHJhY2UoXCJmcy1mb3JtLWl0ZW1cIik7XHJcbiAgICAvLyBjb25zdCBzY29wZUNvbXB1dGVkOiBSZWY8U2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHt9KTtcclxuXHJcbiAgICBjb25zdCBzY29wZUZ1bmMgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNjb3BlID0gcHJvcHMuZ2V0Q29udGV4dEZuID8gcHJvcHMuZ2V0Q29udGV4dEZuKCkgOiB7fTtcclxuICAgICAgcmV0dXJuIHsgdmFsdWU6IHByb3BzLm1vZGVsVmFsdWUsIGtleTogcHJvcHMuaXRlbS5rZXksIC4uLnNjb3BlIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihpc0FzeW5jID0gZmFsc2UpIHtcclxuICAgICAgaWYgKGlzQXN5bmMpIHtcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWZBc3luYygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb21wb25lbnRSZW5kZXJSZWYudmFsdWU/LmdldFRhcmdldFJlZigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkSXRlbSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgcmVzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLml0ZW1cclxuICAgICAgfTtcclxuICAgICAgZGVsZXRlIHJlcy50aXRsZTtcclxuICAgICAgZGVsZXRlIHJlcy5sYWJlbDtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkSGVscGVyUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtPy5oZWxwZXI/LnBvc2l0aW9uIHx8IChwcm9wcy5oZWxwZXIgYXMgYW55KT8ucG9zaXRpb247XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSGVscGVyVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5pdGVtLmhlbHBlcj8udG9vbHRpcCwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy50b29sdGlwKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29tcHV0ZWRLZXkgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChwcm9wcy5pdGVtID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb3BzLml0ZW0ua2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcclxuICAgICAgICByZXR1cm4gcHJvcHMuaXRlbS5rZXkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmxhYmVsIHx8IHByb3BzLml0ZW0udGl0bGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxJc1JlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbjtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxSZW5kZXIgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBjb21wdXRlZExhYmVsLnZhbHVlKHNjb3BlRnVuYygpKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIHVwZGF0ZU1vZGVsVmFsdWUsXHJcbiAgICAgIHNjb3BlRnVuYyxcclxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxyXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWYsXHJcbiAgICAgIGNvbXB1dGVkSGVscGVyUG9zaXRpb24sXHJcbiAgICAgIGNvbXB1dGVkSGVscGVyVG9vbHRpcCxcclxuICAgICAgY29tcHV0ZWRLZXksXHJcbiAgICAgIGNvbXB1dGVkTGFiZWxJc1JlbmRlcixcclxuICAgICAgY29tcHV0ZWRMYWJlbCxcclxuICAgICAgY29tcHV0ZWRMYWJlbFJlbmRlcixcclxuICAgICAgY29tcHV0ZWRJdGVtXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1mb3JtLWl0ZW0ge1xyXG4gIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcclxuICAgIC8vbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLXRleHQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5lbC1mb3JtLWl0ZW0ge1xyXG4gICAgLmZzLWZvcm0taXRlbS1sYWJlbC1pY29uIHtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcclxuICAgIH1cclxuICB9XHJcbiAgLmZzLWZvcm0taXRlbS1sYWJlbC1pY29uIHtcclxuICAgIG1hcmdpbjogMCAycHg7XHJcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXIge1xyXG4gICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgICAgaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgfVxyXG4gIH1cclxuICAuZnMtZm9ybS1pdGVtLWNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGZsZXg6IDE7XHJcbiAgICAuZnMtZm9ybS1pdGVtLXJlbmRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgLmZzLWZvcm0taXRlbS1jb21wb25lbnQge1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi5mcy1mb3JtLWhlbHBlci10b29sdGlwIHtcclxuICAuZnMtZm9ybS1oZWxwZXIge1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50XHJcbiAgICA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCJcclxuICAgIHYtaWY9XCJjb21wdXRlZEl0ZW1cIlxyXG4gICAgY2xhc3M9XCJmcy1mb3JtLWl0ZW1cIlxyXG4gICAgOlt1aS5mb3JtSXRlbS5wcm9wXT1cImNvbXB1dGVkS2V5XCJcclxuICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbVwiXHJcbiAgICA6cGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxyXG4gICAgOnJ1bGUtcGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxyXG4gID5cclxuICAgIDx0ZW1wbGF0ZSAjbGFiZWw+XHJcbiAgICAgIDxzcGFuIHYtaWY9XCJjb21wdXRlZExhYmVsSXNSZW5kZXJcIiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC10ZXh0XCI+XHJcbiAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZExhYmVsUmVuZGVyXCI+PC9mcy1yZW5kZXI+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gdi1lbHNlIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLXRleHRcIiA6dGl0bGU9XCJjb21wdXRlZExhYmVsXCI+XHJcbiAgICAgICAge3sgY29tcHV0ZWRMYWJlbCB9fVxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkudG9vbHRpcC5uYW1lXCJcclxuICAgICAgICB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uID09PSAnbGFiZWwnXCJcclxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEhlbHBlclRvb2x0aXBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC5jb250ZW50XT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oZWxwZXItdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICA8ZnMtZm9ybS1oZWxwZXIgOmhlbHBlcj1cImNvbXB1dGVkSXRlbS5oZWxwZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLnRyaWdnZXJdPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtaWNvblwiPlxyXG4gICAgICAgICAgICA8ZnMtaWNvbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uLWlubmVyXCIgOmljb249XCJ1aS5pY29ucy5xdWVzdGlvblwiPjwvZnMtaWNvbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLWNvbnRlbnRcIj5cclxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnRvcFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS50b3BSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tcmVuZGVyXCI+XHJcbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnByZWZpeFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5wcmVmaXhSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1jb21wb25lbnRcIj5cclxuICAgICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwiZm9ybVNsb3RcIiA6c2xvdHM9XCJmb3JtU2xvdFwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZVwiPlxyXG4gICAgICAgICAgICA8ZnMtcmVuZGVyXHJcbiAgICAgICAgICAgICAgdi1pZj1cIlxyXG4gICAgICAgICAgICAgICAgY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyICYmXHJcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2ggJiZcclxuICAgICAgICAgICAgICAgIGNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5tYXRjaChzY29wZUZ1bmMoKSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5yZW5kZXJcIlxyXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGZzLXJlbmRlciB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cclxuICAgICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcclxuICAgICAgICAgICAgICB2LWVsc2VcclxuICAgICAgICAgICAgICByZWY9XCJjb21wb25lbnRSZW5kZXJSZWZcIlxyXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbS5jb21wb25lbnRcIlxyXG4gICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxyXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcclxuICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwidXBkYXRlTW9kZWxWYWx1ZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5zdWZmaXhSZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uc3VmZml4UmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLmJvdHRvbVJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5ib3R0b21SZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uICE9PSAnbGFiZWwnXCI+XHJcbiAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUmVmLCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IEZzUmVuZGVyIGZyb20gXCIuLi9yZW5kZXIvZnMtcmVuZGVyLmpzXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuLyoqXHJcbiAqIGZvcm0taXRlbee7hOS7tuWwgeijhVxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRm9ybUl0ZW1cIixcclxuICBjb21wb25lbnRzOiB7IEZzUmVuZGVyIH0sXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog6KGo5Y2V5a2X5q615YC8KHYtbW9kZWwpXHJcbiAgICAgKi9cclxuICAgIG1vZGVsVmFsdWU6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrZfmrrXphY3nva5cclxuICAgICAqL1xyXG4gICAgaXRlbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8YW55PixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrZfmrrXnu4Tku7bmj5Lmp71cclxuICAgICAqL1xyXG4gICAgZm9ybVNsb3Q6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIGdldENvbnRleHRGbjoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgaGVscGVyOiB7XHJcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF1cclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZiA9IHJlZigpO1xyXG4gICAgLy8gdXRpbHMudHJhY2UoXCJmcy1mb3JtLWl0ZW1cIik7XHJcbiAgICAvLyBjb25zdCBzY29wZUNvbXB1dGVkOiBSZWY8U2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHt9KTtcclxuXHJcbiAgICBjb25zdCBzY29wZUZ1bmMgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNjb3BlID0gcHJvcHMuZ2V0Q29udGV4dEZuID8gcHJvcHMuZ2V0Q29udGV4dEZuKCkgOiB7fTtcclxuICAgICAgcmV0dXJuIHsgdmFsdWU6IHByb3BzLm1vZGVsVmFsdWUsIGtleTogcHJvcHMuaXRlbS5rZXksIC4uLnNjb3BlIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihpc0FzeW5jID0gZmFsc2UpIHtcclxuICAgICAgaWYgKGlzQXN5bmMpIHtcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWZBc3luYygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb21wb25lbnRSZW5kZXJSZWYudmFsdWU/LmdldFRhcmdldFJlZigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkSXRlbSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgcmVzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLml0ZW1cclxuICAgICAgfTtcclxuICAgICAgZGVsZXRlIHJlcy50aXRsZTtcclxuICAgICAgZGVsZXRlIHJlcy5sYWJlbDtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkSGVscGVyUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtPy5oZWxwZXI/LnBvc2l0aW9uIHx8IChwcm9wcy5oZWxwZXIgYXMgYW55KT8ucG9zaXRpb247XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSGVscGVyVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5pdGVtLmhlbHBlcj8udG9vbHRpcCwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy50b29sdGlwKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29tcHV0ZWRLZXkgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChwcm9wcy5pdGVtID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb3BzLml0ZW0ua2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcclxuICAgICAgICByZXR1cm4gcHJvcHMuaXRlbS5rZXkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmtleTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmxhYmVsIHx8IHByb3BzLml0ZW0udGl0bGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxJc1JlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbjtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxSZW5kZXIgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBjb21wdXRlZExhYmVsLnZhbHVlKHNjb3BlRnVuYygpKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIHVwZGF0ZU1vZGVsVmFsdWUsXHJcbiAgICAgIHNjb3BlRnVuYyxcclxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxyXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWYsXHJcbiAgICAgIGNvbXB1dGVkSGVscGVyUG9zaXRpb24sXHJcbiAgICAgIGNvbXB1dGVkSGVscGVyVG9vbHRpcCxcclxuICAgICAgY29tcHV0ZWRLZXksXHJcbiAgICAgIGNvbXB1dGVkTGFiZWxJc1JlbmRlcixcclxuICAgICAgY29tcHV0ZWRMYWJlbCxcclxuICAgICAgY29tcHV0ZWRMYWJlbFJlbmRlcixcclxuICAgICAgY29tcHV0ZWRJdGVtXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1mb3JtLWl0ZW0ge1xyXG4gIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcclxuICAgIC8vbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLXRleHQge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5lbC1mb3JtLWl0ZW0ge1xyXG4gICAgLmZzLWZvcm0taXRlbS1sYWJlbC1pY29uIHtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcclxuICAgIH1cclxuICB9XHJcbiAgLmZzLWZvcm0taXRlbS1sYWJlbC1pY29uIHtcclxuICAgIG1hcmdpbjogMCAycHg7XHJcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXIge1xyXG4gICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgICAgaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgfVxyXG4gIH1cclxuICAuZnMtZm9ybS1pdGVtLWNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGZsZXg6IDE7XHJcbiAgICAuZnMtZm9ybS1pdGVtLXJlbmRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgLmZzLWZvcm0taXRlbS1jb21wb25lbnQge1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi5mcy1mb3JtLWhlbHBlci10b29sdGlwIHtcclxuICAuZnMtZm9ybS1oZWxwZXIge1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50XHJcbiAgICA6aXM9XCJ1aS5jb2wubmFtZVwiXHJcbiAgICB2LWlmPVwiY29tcHV0ZWRJdGVtICYmIGNvbXB1dGVkSXRlbS5zaG93ICE9PSBmYWxzZVwiXHJcbiAgICBjbGFzcz1cImZzLWNvbFwiXHJcbiAgICB2LWJpbmQ9XCJtZXJnZShjb2wsIGNvbXB1dGVkSXRlbT8uY29sKVwiXHJcbiAgPlxyXG4gICAgPGZzLWZvcm0taXRlbVxyXG4gICAgICB2LWlmPVwiY29tcHV0ZWRJdGVtICYmIGNvbXB1dGVkSXRlbT8uYmxhbmsgIT09IHRydWVcIlxyXG4gICAgICByZWY9XCJmb3JtSXRlbVJlZlwiXHJcbiAgICAgIDppdGVtPVwiY29tcHV0ZWRJdGVtXCJcclxuICAgICAgOmZvcm0tc2xvdD1cInNsb3RzXCJcclxuICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcclxuICAgICAgOmhlbHBlcj1cImhlbHBlclwiXHJcbiAgICAgIHYtYmluZD1cImF0dHJzXCJcclxuICAgIC8+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XHJcbmltcG9ydCB7IHVzZUF0dHJzLCBQcm9wVHlwZSwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xyXG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XHJcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xyXG4gIC8qKlxyXG4gICAqIOWtl+autemFjee9rlxyXG4gICAqL1xyXG4gIGl0ZW06IHtcclxuICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfSxcclxuICAvKipcclxuICAgKiDlrZfmrrXnu4Tku7bmj5Lmp71cclxuICAgKi9cclxuICBzbG90czoge1xyXG4gICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICB9LFxyXG4gIGdldENvbnRleHRGbjoge1xyXG4gICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICB9LFxyXG4gIGNvbDoge1xyXG4gICAgdHlwZTogT2JqZWN0LFxyXG4gICAgZGVmYXVsdDogKCkgPT4ge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgfSxcclxuICBoZWxwZXI6IHtcclxuICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXHJcbiAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICB9XHJcbn0pO1xyXG5jb25zdCB7IGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcclxuXHJcbmNvbnN0IGNvbXB1dGVkSXRlbSA9IGRvQ29tcHV0ZWQoXHJcbiAgKCkgPT4ge1xyXG4gICAgcmV0dXJuIHByb3BzLml0ZW07XHJcbiAgfSxcclxuICAoKSA9PiB7XHJcbiAgICByZXR1cm4gcHJvcHMuZ2V0Q29udGV4dEZuKCk7XHJcbiAgfVxyXG4pO1xyXG5cclxuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuXHJcbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKTtcclxuY29uc3QgZm9ybUl0ZW1SZWYgPSByZWYoKTtcclxuZnVuY3Rpb24gZ2V0Rm9ybUl0ZW1SZWYoKSB7XHJcbiAgcmV0dXJuIGZvcm1JdGVtUmVmLnZhbHVlO1xyXG59XHJcblxyXG5kZWZpbmVFeHBvc2Uoe1xyXG4gIGdldEZvcm1JdGVtUmVmXHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtZm9ybS1pdGVtLWNvbCB7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhlbHBlclwiPlxyXG4gICAgPHByZSB2LWlmPVwidHlwZW9mIGhlbHBlciA9PT0gJ3N0cmluZydcIj57eyBoZWxwZXIgfX08L3ByZT5cclxuICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJoZWxwZXIucmVuZGVyXCI+XHJcbiAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaGVscGVyLnJlbmRlclwiIDpzY29wZT1cInNjb3BlXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8cHJlIHYtZWxzZS1pZj1cImhlbHBlci50ZXh0XCI+e3sgaGVscGVyLnRleHQgfX08L3ByZT5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcblxyXG4vKipcclxuICog6KGo5Y2V5a2X5q615biu5Yqp6K+05piO57uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNGb3JtSGVscGVyXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5biu5Yqp6K+05piOLCB0ZXh0OiDor7TmmI7mloflrZcsIHJlbmRlcjogZnVuY3Rpb24oc2NvcGUpIOiHquWumuS5iea4suafk1xyXG4gICAgICovXHJcbiAgICBoZWxwZXI6IHtcclxuICAgICAgdHlwZTogW1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHRleHQ6IOivtOaYjuaWh+WtlyxcclxuICAgICAgICAgKiByZW5kZXI6IGZ1bmN0aW9uICwg6Ieq5a6a5LmJcmVuZGVyXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgT2JqZWN0LFxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOivtOaYjuaWh+acrFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFN0cmluZ1xyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgc2NvcGU6IHt9XHJcbiAgfSxcclxuICBzZXR1cChwcm9wcykge1xyXG4gICAgLy8gdXRpbHMudHJhY2UoXCJmcy1mb3JtLWl0ZW1cIik7XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtZm9ybS1oZWxwZXIge1xyXG4gIGNvbG9yOiAjN2U3ZTdlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjM7XHJcbiAgbWFyZ2luLXRvcDogNHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDZweDtcclxuXHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIHByZSB7XHJcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgIG1hcmdpbi1ib3R0b206IDBweDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhlbHBlclwiPlxyXG4gICAgPHByZSB2LWlmPVwidHlwZW9mIGhlbHBlciA9PT0gJ3N0cmluZydcIj57eyBoZWxwZXIgfX08L3ByZT5cclxuICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJoZWxwZXIucmVuZGVyXCI+XHJcbiAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaGVscGVyLnJlbmRlclwiIDpzY29wZT1cInNjb3BlXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8cHJlIHYtZWxzZS1pZj1cImhlbHBlci50ZXh0XCI+e3sgaGVscGVyLnRleHQgfX08L3ByZT5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcblxyXG4vKipcclxuICog6KGo5Y2V5a2X5q615biu5Yqp6K+05piO57uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNGb3JtSGVscGVyXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5biu5Yqp6K+05piOLCB0ZXh0OiDor7TmmI7mloflrZcsIHJlbmRlcjogZnVuY3Rpb24oc2NvcGUpIOiHquWumuS5iea4suafk1xyXG4gICAgICovXHJcbiAgICBoZWxwZXI6IHtcclxuICAgICAgdHlwZTogW1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHRleHQ6IOivtOaYjuaWh+WtlyxcclxuICAgICAgICAgKiByZW5kZXI6IGZ1bmN0aW9uICwg6Ieq5a6a5LmJcmVuZGVyXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgT2JqZWN0LFxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOivtOaYjuaWh+acrFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFN0cmluZ1xyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgc2NvcGU6IHt9XHJcbiAgfSxcclxuICBzZXR1cChwcm9wcykge1xyXG4gICAgLy8gdXRpbHMudHJhY2UoXCJmcy1mb3JtLWl0ZW1cIik7XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtZm9ybS1oZWxwZXIge1xyXG4gIGNvbG9yOiAjN2U3ZTdlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjM7XHJcbiAgbWFyZ2luLXRvcDogNHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDZweDtcclxuXHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIHByZSB7XHJcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgIG1hcmdpbi1ib3R0b206IDBweDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIixudWxsLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRm9ybVByb3ZpZGVyXCJcclxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cclxuICA8c2xvdD48L3Nsb3Q+XHJcbiAgPGZzLWZvcm0td3JhcHBlciB2LWZvcj1cIml0ZW0gb2YgZm9ybVdyYXBwZXJMaXN0XCIgOmtleT1cIml0ZW0uaWRcIiB2LWJpbmQ9XCJpdGVtXCIgLz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHByb3ZpZGUsIFJlZiwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgRnNGb3JtV3JhcHBlciBmcm9tIFwiLi9mcy1mb3JtLXdyYXBwZXIuanNcIjtcclxuaW1wb3J0IHsgT3BlbkRpYWxvZ1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuXHJcbjtcclxuXHJcbmNvbnN0IGZvcm1XcmFwcGVyTGlzdDogUmVmID0gcmVmKHt9KTtcclxuXHJcbmZ1bmN0aW9uIGdldE1heFpJbmRleCgpOiBudW1iZXIge1xyXG4gIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpO1xyXG4gIGxldCBtYXhaaW5kZXggPSAxMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBtYXhaaW5kZXggPSBNYXRoLm1heChtYXhaaW5kZXgsIGVsZW1lbnRzW2ldLnN0eWxlLnpJbmRleCB8fCAwKTtcclxuICB9XHJcbiAgcmV0dXJuIG1heFppbmRleDtcclxufVxyXG5cclxuY29uc3QgZm9ybVdyYXBwZXJDb250ZXh0ID0gcmVmKHt9KTtcclxucHJvdmlkZShcImdldDpmb3JtOndyYXBwZXI6Y29udGV4dFwiLCAoa2V5KSA9PiB7XHJcbiAgcmV0dXJuIGZvcm1XcmFwcGVyQ29udGV4dC52YWx1ZVtrZXldO1xyXG59KTtcclxuXHJcbnByb3ZpZGUoXCJ1c2U6Zm9ybTp3cmFwcGVyXCIsICgpID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgc2V0Q29udGV4dChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICBmb3JtV3JhcHBlckNvbnRleHQudmFsdWVba2V5XSA9IHZhbHVlO1xyXG4gICAgfSxcclxuICAgIG9wZW4ob3B0czogT3BlbkRpYWxvZ1Byb3BzKSB7XHJcbiAgICAgIGNvbnN0IGlkID0gb3B0cy5pZCB8fCBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKSArIFwiXCI7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgZm9ybVdyYXBwZXJMaXN0LnZhbHVlW2lkXSA9IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgLy8gekluZGV4OiBnZXRNYXhaSW5kZXgoKSArIDEsXHJcbiAgICAgICAgICBhc3luYyBvbk1vdW50ZWQoaW5zdGFuY2U6IGFueSkge1xyXG4gICAgICAgICAgICBhd2FpdCBpbnN0YW5jZS5vcGVuKG9wdHMpO1xyXG4gICAgICAgICAgICByZXNvbHZlKGluc3RhbmNlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkNsb3NlZCgpIHtcclxuICAgICAgICAgICAgaWYgKCFvcHRzLmlkKSB7XHJcbiAgICAgICAgICAgICAgLy/lpoLmnpzkuI3mmK/lm7rlrpppZO+8jOWImeWFs+mXreWQjumUgOavgVxyXG4gICAgICAgICAgICAgIGRlbGV0ZSBmb3JtV3JhcHBlckxpc3QudmFsdWVbaWRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLG51bGwsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50XHJcbiAgICA6aXM9XCJjb250YWluZXI/LmlzIHx8ICdmcy1sYXlvdXQtZGVmYXVsdCdcIlxyXG4gICAgcmVmPVwiY29udGFpbmVyUmVmXCJcclxuICAgIGNsYXNzPVwiZnMtY3J1ZC1jb250YWluZXJcIlxyXG4gICAgdi1iaW5kPVwiY29udGFpbmVyXCJcclxuICAgIDpjbGFzcz1cImNvbXB1dGVkQ2xhc3NcIlxyXG4gID5cclxuICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMuZGVmYXVsdFwiIDpzbG90cz1cIm1lcmdlZFNsb3RzLmRlZmF1bHRcIiAvPlxyXG5cclxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLXRvcD5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5oZWFkZXJUb3BcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5oZWFkZXJUb3BcIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLWJvdHRvbT5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5oZWFkZXJCb3R0b21cIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5oZWFkZXJCb3R0b21cIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLW1pZGRsZT5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5oZWFkZXJNaWRkbGVcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5oZWFkZXJNaWRkbGVcIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGVtcGxhdGUgI3NlYXJjaD5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtc2VhcmNoXCI+XHJcbiAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJzZWFyY2guaXMgfHwgJ2ZzLXNlYXJjaCdcIiByZWY9XCJzZWFyY2hSZWZcIiB2LWJpbmQ9XCJzZWFyY2hcIiA6c2xvdHM9XCJjb21wdXRlZFNlYXJjaFNsb3RzXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZW1wbGF0ZSAjYWN0aW9uYmFyPlxyXG4gICAgICA8ZGl2IHYtaWY9XCJhY3Rpb25iYXIgJiYgYWN0aW9uYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLWFjdGlvbmJhclwiPlxyXG4gICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMuYWN0aW9uYmFyTGVmdFwiIDpzbG90cz1cIm1lcmdlZFNsb3RzLmFjdGlvbmJhckxlZnRcIiAvPlxyXG4gICAgICAgIDxmcy1hY3Rpb25iYXIgdi1iaW5kPVwiYWN0aW9uYmFyXCIgLz5cclxuICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLmFjdGlvbmJhclJpZ2h0XCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMuYWN0aW9uYmFyUmlnaHRcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPHRlbXBsYXRlICN0b29sYmFyPlxyXG4gICAgICA8ZGl2IHYtaWY9XCJ0b29sYmFyICYmIHRvb2xiYXIuc2hvdyAhPT0gZmFsc2VcIiBjbGFzcz1cImZzLWNydWQtdG9vbGJhclwiPlxyXG4gICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMudG9vbGJhckxlZnRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy50b29sYmFyTGVmdFwiIC8+XHJcbiAgICAgICAgPGZzLXRvb2xiYXIgcmVmPVwidG9vbGJhclJlZlwiIHYtYmluZD1cInRvb2xiYXJcIiA6c2xvdHM9XCJjb21wdXRlZFRvb2xiYXJTbG90c1wiIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiIC8+XHJcbiAgICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy50b29sYmFyUmlnaHRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy50b29sYmFyUmlnaHRcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgI3RhYnM+XHJcbiAgICAgIDxmcy10YWJzLWZpbHRlciB2LWlmPVwidGFic0JpbmRpbmcuc2hvd1wiIHJlZj1cInRhYnNSZWZcIiBjbGFzcz1cImZzLXRhYnNcIiB2LWJpbmQ9XCJ0YWJzQmluZGluZ1wiIC8+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICN0YWJsZT5cclxuICAgICAgPGZzLXRhYmxlXHJcbiAgICAgICAgcmVmPVwidGFibGVSZWZcIlxyXG4gICAgICAgIGNsYXNzPVwiZnMtY3J1ZC10YWJsZVwiXHJcbiAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRUYWJsZVwiXHJcbiAgICAgICAgOmNvbHVtbnM9XCJ0YWJsZS5jb2x1bW5zXCJcclxuICAgICAgICA6bG9hZGluZz1cInRhYmxlLmxvYWRpbmdcIlxyXG4gICAgICAgIDpyb3ctaGFuZGxlPVwicm93SGFuZGxlXCJcclxuICAgICAgICA6ZGF0YT1cImRhdGFcIlxyXG4gICAgICAgIDpjZWxsLXNsb3RzPVwiY29tcHV0ZWRDZWxsU2xvdHNcIlxyXG4gICAgICAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGVtcGxhdGUgI2Zvcm0+XHJcbiAgICAgIDxkaXYgcmVmPVwiaW5uZXJXcmFwcGVyUmVmXCIgY2xhc3M9XCJmcy1mb3JtLXdyYXBwZXItY29udGFpbmVyXCIgOmNsYXNzPVwieyAnZnMtZm9ybS1pbm5lci13cmFwcGVyJzogaXNGb3JtSW5uZXIgfVwiPlxyXG4gICAgICAgIDxmcy1mb3JtLXdyYXBwZXJcclxuICAgICAgICAgIHJlZj1cImZvcm1XcmFwcGVyUmVmXCJcclxuICAgICAgICAgIDpzbG90cz1cImNvbXB1dGVkRm9ybVNsb3RzXCJcclxuICAgICAgICAgIDppbm5lci13cmFwcGVyPVwiaW5uZXJXcmFwcGVyUmVmXCJcclxuICAgICAgICAgIEBpbm5lci1jaGFuZ2U9XCJvbkZvcm1Jbm5lckNoYW5nZVwiXHJcbiAgICAgICAgICBAdmFsdWUtY2hhbmdlPVwiJGVtaXQoJ2Zvcm0tdmFsdWUtY2hhbmdlJywgJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8IS0tIOe8lui+keWvueivneahhiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZW1wbGF0ZSAjcGFnaW5hdGlvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtcGFnaW5hdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uLWxlZnRcIj5cclxuICAgICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMucGFnaW5hdGlvbkxlZnRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5wYWdpbmF0aW9uTGVmdFwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb25cIj5cclxuICAgICAgICAgIDwhLS0gcGFnaW5hdGlvbi5jdXJyZW50UGFnZSDlpoLmnpzkuLrnqbrvvIwgZWxlbWVudOS8muWHuuitpuWRiiAtLT5cclxuICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucGFnaW5hdGlvbi5uYW1lXCIgdi1pZj1cInBhZ2luYXRpb24uc2hvdyAhPT0gZmFsc2VcIiB2LWJpbmQ9XCJwYWdpbmF0aW9uXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnaW5hdGlvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5wYWdpbmF0aW9uUmlnaHRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5wYWdpbmF0aW9uUmlnaHRcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPHRlbXBsYXRlICNmb290ZXItdG9wPlxyXG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLmZvb3RlclRvcFwiIDpzbG90cz1cIm1lcmdlZFNsb3RzLmZvb3RlclRvcFwiIC8+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICNmb290ZXItYm90dG9tPlxyXG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLmZvb3RlckJvdHRvbVwiIDpzbG90cz1cIm1lcmdlZFNsb3RzLmZvb3RlckJvdHRvbVwiIC8+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgb25Nb3VudGVkLCBQcm9wVHlwZSwgcHJvdmlkZSwgcmVmLCBTZXR1cENvbnRleHQsIHRvUmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vdWlcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vdXNlL3VzZS1tZXJnZVwiO1xyXG5pbXBvcnQgdXRpbExvZyBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcclxuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcclxuaW1wb3J0IHsgUm93U2VsZWN0aW9uUHJvcHMsIFNldFNlYXJjaEZvcm1EYXRhUHJvcHMgfSBmcm9tIFwiLi4vZFwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi91c2VcIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgZmlsdGVyQ3J1ZFNsb3RzLCBtZXJnZUNydWRTbG90cywgdHlwZSBDcnVkU2xvdHMgfSBmcm9tIFwiLi9mcy1jcnVkLXNsb3RzXCI7XHJcblxyXG4vLyB1dGlscy50cmFjZShcImZzLXRhYmxlXCIpO1xyXG5jb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG5cclxuZnVuY3Rpb24gdXNlUHJvdmlkZXJzKHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XHJcbiAgcHJvdmlkZShcImdldDpjb2x1bW5zXCIsICgpID0+IHtcclxuICAgIHJldHVybiBwcm9wcy50YWJsZS5jb2x1bW5zO1xyXG4gIH0pO1xyXG4gIHByb3ZpZGUoXCJ1cGRhdGU6Y29sdW1uc1wiLCAoY29sdW1uczogYW55KSA9PiB7XHJcbiAgICBjdHguZW1pdChcInVwZGF0ZTpjb2x1bW5zXCIsIGNvbHVtbnMpO1xyXG4gIH0pO1xyXG5cclxuICBwcm92aWRlKFwiZ2V0OmNydWRCaW5kaW5nXCIsICgpID0+IHtcclxuICAgIHJldHVybiBwcm9wcztcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gdXNlU2VhcmNoKHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XHJcbiAgY29uc3Qgc2VhcmNoUmVmID0gcmVmKCk7XHJcbiAgY29uc3QgZ2V0U2VhcmNoUmVmID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZTtcclxuICB9O1xyXG5cclxuICBjb25zdCBnZXRTZWFyY2hGb3JtRGF0YSA9ICgpID0+IHtcclxuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZS5nZXRGb3JtKCk7XHJcbiAgICB9XHJcbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hGb3JtRGF0YeS7o+abv1wiKTtcclxuICAgIHJldHVybiB7fTtcclxuICB9O1xyXG5cclxuICBjb25zdCBnZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YSA9ICgpID0+IHtcclxuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZS5nZXRWYWxpZGF0ZWRGb3JtKCk7XHJcbiAgICB9XHJcbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YeS7o+abv1wiKTtcclxuICAgIHJldHVybiB7fTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiDorr7nva5mb3Jt5YC8XHJcbiAgICogQHBhcmFtIGZvcm0gZm9ybeWvueixoVxyXG4gICAqIEBwYXJhbSBvcHRzID0ge1xyXG4gICAqICAgIGlzTWVyZ2U6ZmFsc2Ug5piv5ZCm5LiO5Y6f5pyJZm9ybeWAvOWQiOW5tixcclxuICAgKiB9XHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc2V0U2VhcmNoRm9ybURhdGEoeyBmb3JtLCBtZXJnZUZvcm0gPSBmYWxzZSB9OiBTZXRTZWFyY2hGb3JtRGF0YVByb3BzKSB7XHJcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XHJcbiAgICAgIHNlYXJjaFJlZi52YWx1ZS5zZXRGb3JtKGZvcm0sIG1lcmdlRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgc2VhcmNoUmVmLFxyXG4gICAgZ2V0U2VhcmNoUmVmLFxyXG4gICAgZ2V0U2VhcmNoRm9ybURhdGEsXHJcbiAgICBzZXRTZWFyY2hGb3JtRGF0YSxcclxuICAgIGdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRhXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gdXNlVGFicyhzZWFyY2hSZXQ6IGFueSwgcHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcclxuICBjb25zdCB0YWJzQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChwcm9wcy50YWJzICYmIHByb3BzLnRhYnMuc2hvdyAmJiBwcm9wcy50YWJzLm5hbWUpIHtcclxuICAgICAgbGV0IGRpY3QgPSBudWxsO1xyXG4gICAgICBjb25zdCBkZWZhdWx0VGFicyA9IHsgLi4ucHJvcHMudGFicyB9O1xyXG4gICAgICBpZiAocHJvcHMuc2VhcmNoPy5jb2x1bW5zICYmIHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3QpIHtcclxuICAgICAgICBkaWN0ID0gcHJvcHMuc2VhcmNoPy5jb2x1bW5zW3Byb3BzLnRhYnMubmFtZV0/LmNvbXBvbmVudD8uZGljdDtcclxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZGVmYXVsdFRhYnMudmFsdWUgPSBkaWN0LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMubGFiZWwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZGVmYXVsdFRhYnMubGFiZWwgPSBkaWN0LmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMub3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgICBkZWZhdWx0VGFicy5vcHRpb25zID0gZGljdC5kYXRhIHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5kZWZhdWx0VGFicyxcclxuICAgICAgICBtb2RlbFZhbHVlOiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybSAmJiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybVtwcm9wcy50YWJzLm5hbWVdLFxyXG4gICAgICAgIFwib25VcGRhdGU6bW9kZWxWYWx1ZVwiOiAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY3R4LmVtaXQoXCJ0YWItY2hhbmdlXCIsIHsgW3Byb3BzLnRhYnMubmFtZV06IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNob3c6IGZhbHNlXHJcbiAgICB9O1xyXG4gIH0pO1xyXG4gIHJldHVybiB7XHJcbiAgICB0YWJzQmluZGluZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVzZUZpeGVkSGVpZ2h0KHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0LCB7IHRhYmxlUmVmLCBjb250YWluZXJSZWYgfTogYW55KSB7XHJcbiAgY29uc3QgdWkgPSB1aUNvbnRleHQuZ2V0KCk7XHJcbiAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcclxuICBpZiAocHJvcHMudGFibGU/LnRhYmxlVmVyc2lvbiA9PT0gXCJ2MlwiKSB7XHJcbiAgICB0YWJsZUNJID0gdWkudGFibGVWMjtcclxuICB9XHJcbiAgaWYgKHRhYmxlQ0kuaGFzTWF4SGVpZ2h0KHByb3BzLnRhYmxlKSkge1xyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuICBpZiAoIXRhYmxlQ0kuZml4ZWRIZWFkZXJOZWVkQ29tcHV0ZUJvZHlIZWlnaHQpIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9XHJcbiAgY29uc3QgbWF4SGVpZ2h0UmVmID0gcmVmKG51bGwpO1xyXG5cclxuICBmdW5jdGlvbiBjb21wdXRlQm9keUhlaWdodCgpIHtcclxuICAgIGNvbnN0IHRhYmxlRG9tID0gdGFibGVSZWY/LnZhbHVlPy4kZWw7XHJcbiAgICBpZiAodGFibGVEb20gPT0gbnVsbCB8fCB0YWJsZURvbS5xdWVyeVNlbGVjdG9yID09IG51bGwgfHwgISh0YWJsZURvbS5xdWVyeVNlbGVjdG9yIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhlYWREb20gPSB0YWJsZURvbS5xdWVyeVNlbGVjdG9yKHRhYmxlQ0kuaGVhZGVyRG9tU2VsZWN0b3IpO1xyXG4gICAgaWYgKGhlYWREb20gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgIGNvbnN0IGhlYWRIZWlnaHQgPSBoZWFkRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgIG1heEhlaWdodFJlZi52YWx1ZSA9IHRhYmxlSGVpZ2h0IC0gaGVhZEhlaWdodCAtIDIgKyAocHJvcHMudGFibGUubWF4SGVpZ2h0QWRqdXN0IHx8IDApO1xyXG5cclxuICAgIHV0aWxMb2cuZGVidWcoXCJ0YWJsZSBtYXggaGVpZ2h0IHJlY29tcHV0ZWQgXCIsIG1heEhlaWdodFJlZi52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiB3YXRjaEJvZHlIZWlnaHRDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xyXG4gICAgaWYgKHRhYmxlRG9tID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFibGVXcmFwcGVyRG9tID0gdGFibGVEb20ucGFyZW50Tm9kZTtcclxuXHJcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xyXG4gICAgICB1dGlsTG9nLmRlYnVnKFwidGFibGUgcmVzaXplZFwiLCBlbnRyaWVzKTtcclxuICAgICAgLy8g5q+P5qyh6KKr6KeC5rWL55qE5YWD57Sg5bC65a+45Y+R55Sf5pS55Y+Y6L+Z6YeM6YO95Lya5omn6KGMXHJcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDAgJiYgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgY29tcHV0ZUJvZHlIZWlnaHQoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhYmxlV3JhcHBlckRvbSk7IC8vIOingua1i0RPTeWFg+e0oFxyXG4gIH1cclxuXHJcbiAgb25Nb3VudGVkKGFzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IG5leHRUaWNrKCk7XHJcbiAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgd2F0Y2hCb2R5SGVpZ2h0Q2hhbmdlKCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB1c2VUYWJsZShwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xyXG4gIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xyXG4gIGNvbnN0IHRhYmxlUmVmID0gcmVmKCk7XHJcbiAgY29uc3QgdG9vbGJhclJlZiA9IHJlZigpO1xyXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZigpO1xyXG4gIGNvbnN0IHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9ID0gdXNlRml4ZWRIZWlnaHQocHJvcHMsIGN0eCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH0pO1xyXG4gIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbiAgY29uc3QgdGFibGVQcm9wUmVmID0gdG9SZWYocHJvcHMsIFwidGFibGVcIik7XHJcbiAgY29uc3QgY29tcHV0ZWRUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIC8vIGFudGR2IG5haXZlIOmrmOW6puiHqumAguW6lO+8jCDlpoLmnpznlKjmiLfmnInphY3nva5zY3JvbGzvvIzliJnkvJjlhYjkvb/nlKjnlKjmiLfphY3nva7nmoRcclxuICAgIGxldCBmaXhlZEhlaWdodCA9IHt9O1xyXG4gICAgaWYgKG1heEhlaWdodFJlZj8udmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgdGFibGVDSSA9IHVpLnRhYmxlO1xyXG4gICAgICBpZiAocHJvcHMudGFibGU/LnRhYmxlVmVyc2lvbiA9PT0gXCJ2MlwiKSB7XHJcbiAgICAgICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XHJcbiAgICAgIH1cclxuICAgICAgZml4ZWRIZWlnaHQgPSB0YWJsZUNJLmJ1aWxkTWF4SGVpZ2h0KG1heEhlaWdodFJlZi52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwQXR0cnMgPSB1dGlscy5kYXNoLm9taXQodGFibGVQcm9wUmVmLCBcImxvYWRpbmdcIiwgXCJjb2x1bW5zXCIsIFwiY29sdW1uc01hcFwiKTtcclxuXHJcbiAgICByZXR1cm4gbWVyZ2UoZml4ZWRIZWlnaHQsIHsgLi4uY3R4LmF0dHJzLCAuLi5wQXR0cnMgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGNvbXB1dGVkVG9vbGJhciA9IHRvUmVmKHByb3BzLCBcInRvb2xiYXJcIik7XHJcbiAgY29uc3QgbWVyZ2VkU2xvdHMgPSBjb21wdXRlZCgoKSA9PiBtZXJnZUNydWRTbG90cyhwcm9wcy5zbG90cywgY3R4LnNsb3RzKSk7XHJcblxyXG4gIGNvbnN0IGNvbXB1dGVkQ2VsbFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIGZpbHRlckNydWRTbG90cyhtZXJnZWRTbG90cy52YWx1ZSwgXCJjZWxsXCIpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBjb21wdXRlZEZvcm1TbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiBmaWx0ZXJDcnVkU2xvdHMobWVyZ2VkU2xvdHMudmFsdWUsIFwiZm9ybVwiKTtcclxuICB9KTtcclxuICBjb25zdCBjb21wdXRlZFNlYXJjaFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIGZpbHRlckNydWRTbG90cyhtZXJnZWRTbG90cy52YWx1ZSwgXCJzZWFyY2hcIik7XHJcbiAgfSk7XHJcbiAgY29uc3QgY29tcHV0ZWRUb29sYmFyU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gZmlsdGVyQ3J1ZFNsb3RzKG1lcmdlZFNsb3RzLnZhbHVlLCBcInRvb2xiYXJcIik7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGZvcm1XcmFwcGVyUmVmID0gcmVmKCk7XHJcblxyXG4gIGNvbnN0IGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjbGF6ejogYW55ID0geyBjb21wYWN0OiBwcm9wcy50b29sYmFyLmNvbXBhY3QgIT09IGZhbHNlIH07XHJcbiAgICBpZiAocHJvcHMuY3VzdG9tQ2xhc3MpIHtcclxuICAgICAgY2xhenpbcHJvcHMuY3VzdG9tQ2xhc3NdID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBjbGF6ejtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgaW5uZXJXcmFwcGVyUmVmID0gcmVmKCk7XHJcblxyXG4gIGNvbnN0IGlzRm9ybUlubmVyID0gcmVmKGZhbHNlKTtcclxuICBjb25zdCBvbkZvcm1Jbm5lckNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBpc0Zvcm1Jbm5lci52YWx1ZSA9IHZhbHVlO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICB0YWJsZVJlZixcclxuICAgIGNvbnRhaW5lclJlZixcclxuICAgIHRvb2xiYXJSZWYsXHJcbiAgICBjb21wdXRlZFRhYmxlLFxyXG4gICAgY29tcHV0ZWRUb29sYmFyLFxyXG4gICAgbWVyZ2VkU2xvdHMsXHJcbiAgICBjb21wdXRlZENlbGxTbG90cyxcclxuICAgIGZvcm1XcmFwcGVyUmVmLFxyXG4gICAgaXNGb3JtSW5uZXIsXHJcbiAgICBvbkZvcm1Jbm5lckNoYW5nZSxcclxuICAgIGNvbXB1dGVkRm9ybVNsb3RzLFxyXG4gICAgY29tcHV0ZWRTZWFyY2hTbG90cyxcclxuICAgIGNvbXB1dGVkVG9vbGJhclNsb3RzLFxyXG4gICAgY29tcHV0ZUJvZHlIZWlnaHQsXHJcbiAgICBjb21wdXRlZENsYXNzLFxyXG4gICAgaW5uZXJXcmFwcGVyUmVmXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIGZzLWNydWRcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0NydWRcIixcclxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOihqOagvGlkXHJcbiAgICAgKi9cclxuICAgIGlkOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogXCJcIlxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6KGo5qC86YWN572u77yM6KeBRnNUYWJsZVxyXG4gICAgICovXHJcbiAgICB0YWJsZToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDooajmoLzmlbDmja5cclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9yZXF1aXJlLWRlZmF1bHQtcHJvcFxyXG4gICAgZGF0YToge1xyXG4gICAgICB0eXBlOiBBcnJheVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5pON5L2c5YiX6YWN572u77yM6KeBRnNSb3dIYW5kbGVcclxuICAgICAqL1xyXG4gICAgcm93SGFuZGxlOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouahhumFjee9ru+8jOingUZzU2VhcmNoXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaDoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlt6XlhbfmnaHphY3nva7vvIzop4FGc1Rvb2xiYXJcclxuICAgICAqL1xyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDliqjkvZzmnaHphY3nva7vvIzop4FGc0FjdGlvbmJhclxyXG4gICAgICovXHJcbiAgICBhY3Rpb25iYXI6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogdGFicyBmaWx0ZXJcclxuICAgICAqL1xyXG4gICAgdGFiczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmt7vliqDooajljZXlr7nor53moYbphY3nva7vvIzop4FGc0Zvcm1XcmFwcGVyXHJcbiAgICAgKi9cclxuICAgIGFkZEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog57yW6L6R6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxyXG4gICAgICovXHJcbiAgICBlZGl0Rm9ybToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmn6XnnIvooajljZXlr7nor53moYbphY3nva7vvIzop4FGc0Zvcm1XcmFwcGVyXHJcbiAgICAgKi9cclxuICAgIHZpZXdGb3JtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOe/u+mhtemFjee9rizmlK/mjIFlbC1wYWdpbmF0aW9ufGEtcGFnaW5hdGlvbumFjee9rlxyXG4gICAgICovXHJcbiAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrrnlmajphY3nva7vvIzop4FGc0NvbnRhaW5lclxyXG4gICAgICovXHJcbiAgICBjb250YWluZXI6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6YWN572u5byP5o+S5qe977yM5qih5p2/5o+S5qe95ZCM5ZCN5pe25LyY5YWIXHJcbiAgICAgKi9cclxuICAgIHNsb3RzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxDcnVkU2xvdHM+LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNydWTljIXoo7nlrrnlmajnmoRjbGFzc1xyXG4gICAgICovXHJcbiAgICBjdXN0b21DbGFzczoge30sXHJcbiAgICAvKipcclxuICAgICAqIOS4jeimgeS8oOWIsGZzLXRhYmxl5Y67XHJcbiAgICAgKi9cclxuICAgIGZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOWPr+mAieaLqVxyXG4gICAgICovXHJcbiAgICBzZWxlY3Rpb246IHtcclxuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPFJvd1NlbGVjdGlvblByb3BzPixcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1widXBkYXRlOnNlYXJjaFwiLCBcInVwZGF0ZTpjb21wYWN0XCIsIFwidXBkYXRlOmNvbHVtbnNcIiwgXCJmb3JtLXZhbHVlLWNoYW5nZVwiLCBcInVwZGF0ZTptb2RlbFZhbHVlXCIsIFwidGFiLWNoYW5nZVwiXSxcclxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIHVzZVByb3ZpZGVycyhwcm9wcywgY3R4KTtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHVzZVNlYXJjaChwcm9wcywgY3R4KTtcclxuICAgIGNvbnN0IHRhYnMgPSB1c2VUYWJzKHNlYXJjaCwgcHJvcHMsIGN0eCk7XHJcbiAgICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlKHByb3BzLCBjdHgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIC4uLnNlYXJjaCxcclxuICAgICAgLi4udGFibGUsXHJcbiAgICAgIC4uLnRhYnNcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4vL+S9nOS4uuaVsOaNruihqOagvOS9v+eUqOeahOmihOiuvuagt+W8j++8jOmakOiXj2Zvb3Rlcu+8jOihqOagvOmrmOW6pueijuiusOW9leaVsOWinuWKoOiAjOWinuWKoFxyXG4uZnMtY3J1ZC1hcy10YWJsZSB7XHJcbiAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50O1xyXG4gIGhlaWdodDogdW5zZXQ7XHJcblxyXG4gIC5mcy1jcnVkLWZvb3RlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmJveCAuaW5uZXIge1xyXG4gICAgcG9zaXRpb246IHN0YXRpYztcclxuICB9XHJcbn1cclxuXHJcbi5mcy1jcnVkLWNvbnRhaW5lciB7XHJcbiAgbWluLWhlaWdodDogMzAwcHg7XHJcblxyXG4gICYuY29tcGFjdCB7XHJcbiAgICAuZWwtdGFibGUtLWJvcmRlciB7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1jcnVkLWhlYWRlciB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuZnMtY3J1ZC1mb290ZXIge1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZnMtY3J1ZC1oZWFkZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIHBhZGRpbmc6IDEwcHggMDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAuZnMtaGVhZGVyLXRvcCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1jcnVkLXNlYXJjaCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1oZWFkZXItbWlkZGxlIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWhlYWRlci1ib3R0b20ge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZnMtY3J1ZC1hY3Rpb25iYXIge1xyXG4gICAgICAvLyBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4OiAxMDAwMDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWluLXdpZHRoOiAxcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWNydWQtdG9vbGJhciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgZmxleDogMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5mcy1jcnVkLXRhYmxlIHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgLmZzLWNydWQtZm9vdGVyIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMDtcclxuXHJcbiAgICAuZnMtY3J1ZC1wYWdpbmF0aW9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAuZnMtcGFnaW5hdGlvbi1sZWZ0IHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcblxyXG4gICAgICAgIC8qIOW3puS+p+ayoeacieaPkuanveWGheWuueaXtuS4jeeVmeepuumame+8jOS/neivgeWIhumhteWZqOS4peagvOWxheS4rSAqL1xyXG4gICAgICAgICY6ZW1wdHkge1xyXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmZzLXBhZ2luYXRpb24tcmlnaHQge1xyXG4gICAgICAgIGZsZXg6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5mcy1wYWdpbmF0aW9uIHtcclxuICAgICAgICAvKiDliIbpobXlmajlsYXkuK3vvJrkuI3lho3mkpHmu6HmlbTooYzvvIzlrr3luqboh6rpgILlupTlubbmiorliIbpobXnu4Tku7bmsLTlubPlsYXkuK0gKi9cclxuICAgICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgICAuYW50LXBhZ2luYXRpb24tb3B0aW9ucyB7XHJcbiAgICAgICAgICAuYW50LXNlbGVjdCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmVsLXBhZ2luYXRpb24ge1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmZzLXBhZ2luYXRpb24tcmlnaHQge1xyXG4gICAgICAgIGZsZXg6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5mcy1jcnVkLWNvbnRhaW5lciB7XHJcbiAgICAuYm9keSB7XHJcbiAgICAgIG92ZXJmbG93LXk6IHVuc2V0ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAuYW50LXRhYmxlLWJvZHkge1xyXG4gICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLm4tZGF0YS10YWJsZS1iYXNlLXRhYmxlLWJvZHkge1xyXG4gICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWNydWQtaGVhZGVyIC5mcy1jcnVkLWFjdGlvbmJhciB7XHJcbiAgICAgIGZsZXg6IHVuc2V0ICFpbXBvcnRhbnQ7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudFxyXG4gICAgOmlzPVwiY29udGFpbmVyPy5pcyB8fCAnZnMtbGF5b3V0LWRlZmF1bHQnXCJcclxuICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXHJcbiAgICBjbGFzcz1cImZzLWNydWQtY29udGFpbmVyXCJcclxuICAgIHYtYmluZD1cImNvbnRhaW5lclwiXHJcbiAgICA6Y2xhc3M9XCJjb21wdXRlZENsYXNzXCJcclxuICA+XHJcbiAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLmRlZmF1bHRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5kZWZhdWx0XCIgLz5cclxuXHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlci10b3A+XHJcbiAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMuaGVhZGVyVG9wXCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMuaGVhZGVyVG9wXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlci1ib3R0b20+XHJcbiAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMuaGVhZGVyQm90dG9tXCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMuaGVhZGVyQm90dG9tXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgI2hlYWRlci1taWRkbGU+XHJcbiAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMuaGVhZGVyTWlkZGxlXCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMuaGVhZGVyTWlkZGxlXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPHRlbXBsYXRlICNzZWFyY2g+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLXNlYXJjaFwiPlxyXG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwic2VhcmNoLmlzIHx8ICdmcy1zZWFyY2gnXCIgcmVmPVwic2VhcmNoUmVmXCIgdi1iaW5kPVwic2VhcmNoXCIgOnNsb3RzPVwiY29tcHV0ZWRTZWFyY2hTbG90c1wiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGVtcGxhdGUgI2FjdGlvbmJhcj5cclxuICAgICAgPGRpdiB2LWlmPVwiYWN0aW9uYmFyICYmIGFjdGlvbmJhci5zaG93ICE9PSBmYWxzZVwiIGNsYXNzPVwiZnMtY3J1ZC1hY3Rpb25iYXJcIj5cclxuICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLmFjdGlvbmJhckxlZnRcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5hY3Rpb25iYXJMZWZ0XCIgLz5cclxuICAgICAgICA8ZnMtYWN0aW9uYmFyIHYtYmluZD1cImFjdGlvbmJhclwiIC8+XHJcbiAgICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5hY3Rpb25iYXJSaWdodFwiIDpzbG90cz1cIm1lcmdlZFNsb3RzLmFjdGlvbmJhclJpZ2h0XCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZW1wbGF0ZSAjdG9vbGJhcj5cclxuICAgICAgPGRpdiB2LWlmPVwidG9vbGJhciAmJiB0b29sYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLXRvb2xiYXJcIj5cclxuICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLnRvb2xiYXJMZWZ0XCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMudG9vbGJhckxlZnRcIiAvPlxyXG4gICAgICAgIDxmcy10b29sYmFyIHJlZj1cInRvb2xiYXJSZWZcIiB2LWJpbmQ9XCJ0b29sYmFyXCIgOnNsb3RzPVwiY29tcHV0ZWRUb29sYmFyU2xvdHNcIiA6Y29sdW1ucz1cInRhYmxlLmNvbHVtbnNcIiAvPlxyXG4gICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMudG9vbGJhclJpZ2h0XCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMudG9vbGJhclJpZ2h0XCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICN0YWJzPlxyXG4gICAgICA8ZnMtdGFicy1maWx0ZXIgdi1pZj1cInRhYnNCaW5kaW5nLnNob3dcIiByZWY9XCJ0YWJzUmVmXCIgY2xhc3M9XCJmcy10YWJzXCIgdi1iaW5kPVwidGFic0JpbmRpbmdcIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjdGFibGU+XHJcbiAgICAgIDxmcy10YWJsZVxyXG4gICAgICAgIHJlZj1cInRhYmxlUmVmXCJcclxuICAgICAgICBjbGFzcz1cImZzLWNydWQtdGFibGVcIlxyXG4gICAgICAgIHYtYmluZD1cImNvbXB1dGVkVGFibGVcIlxyXG4gICAgICAgIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiXHJcbiAgICAgICAgOmxvYWRpbmc9XCJ0YWJsZS5sb2FkaW5nXCJcclxuICAgICAgICA6cm93LWhhbmRsZT1cInJvd0hhbmRsZVwiXHJcbiAgICAgICAgOmRhdGE9XCJkYXRhXCJcclxuICAgICAgICA6Y2VsbC1zbG90cz1cImNvbXB1dGVkQ2VsbFNsb3RzXCJcclxuICAgICAgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgPHRlbXBsYXRlICNmb3JtPlxyXG4gICAgICA8ZGl2IHJlZj1cImlubmVyV3JhcHBlclJlZlwiIGNsYXNzPVwiZnMtZm9ybS13cmFwcGVyLWNvbnRhaW5lclwiIDpjbGFzcz1cInsgJ2ZzLWZvcm0taW5uZXItd3JhcHBlcic6IGlzRm9ybUlubmVyIH1cIj5cclxuICAgICAgICA8ZnMtZm9ybS13cmFwcGVyXHJcbiAgICAgICAgICByZWY9XCJmb3JtV3JhcHBlclJlZlwiXHJcbiAgICAgICAgICA6c2xvdHM9XCJjb21wdXRlZEZvcm1TbG90c1wiXHJcbiAgICAgICAgICA6aW5uZXItd3JhcHBlcj1cImlubmVyV3JhcHBlclJlZlwiXHJcbiAgICAgICAgICBAaW5uZXItY2hhbmdlPVwib25Gb3JtSW5uZXJDaGFuZ2VcIlxyXG4gICAgICAgICAgQHZhbHVlLWNoYW5nZT1cIiRlbWl0KCdmb3JtLXZhbHVlLWNoYW5nZScsICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPCEtLSDnvJbovpHlr7nor53moYYgLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICA8dGVtcGxhdGUgI3BhZ2luYXRpb24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLXBhZ2luYXRpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnaW5hdGlvbi1sZWZ0XCI+XHJcbiAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cIm1lcmdlZFNsb3RzLnBhZ2luYXRpb25MZWZ0XCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMucGFnaW5hdGlvbkxlZnRcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uXCI+XHJcbiAgICAgICAgICA8IS0tIHBhZ2luYXRpb24uY3VycmVudFBhZ2Ug5aaC5p6c5Li656m677yMIGVsZW1lbnTkvJrlh7rorablkYogLS0+XHJcbiAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnBhZ2luYXRpb24ubmFtZVwiIHYtaWY9XCJwYWdpbmF0aW9uLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwicGFnaW5hdGlvblwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb24tcmlnaHRcIj5cclxuICAgICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwibWVyZ2VkU2xvdHMucGFnaW5hdGlvblJpZ2h0XCIgOnNsb3RzPVwibWVyZ2VkU2xvdHMucGFnaW5hdGlvblJpZ2h0XCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG5cclxuICAgIDx0ZW1wbGF0ZSAjZm9vdGVyLXRvcD5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5mb290ZXJUb3BcIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5mb290ZXJUb3BcIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjZm9vdGVyLWJvdHRvbT5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJtZXJnZWRTbG90cy5mb290ZXJCb3R0b21cIiA6c2xvdHM9XCJtZXJnZWRTbG90cy5mb290ZXJCb3R0b21cIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgUHJvcFR5cGUsIHByb3ZpZGUsIHJlZiwgU2V0dXBDb250ZXh0LCB0b1JlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdWlDb250ZXh0IH0gZnJvbSBcIi4uL3VpXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uL3VzZS91c2UtbWVyZ2VcIjtcclxuaW1wb3J0IHV0aWxMb2cgZnJvbSBcIi4uL3V0aWxzL3V0aWwubG9nXCI7XHJcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uL3V0aWxzL3V0aWwubG9nXCI7XHJcbmltcG9ydCB7IFJvd1NlbGVjdGlvblByb3BzLCBTZXRTZWFyY2hGb3JtRGF0YVByb3BzIH0gZnJvbSBcIi4uL2RcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vdXNlXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGZpbHRlckNydWRTbG90cywgbWVyZ2VDcnVkU2xvdHMsIHR5cGUgQ3J1ZFNsb3RzIH0gZnJvbSBcIi4vZnMtY3J1ZC1zbG90c1wiO1xyXG5cclxuLy8gdXRpbHMudHJhY2UoXCJmcy10YWJsZVwiKTtcclxuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuXHJcbmZ1bmN0aW9uIHVzZVByb3ZpZGVycyhwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xyXG4gIHByb3ZpZGUoXCJnZXQ6Y29sdW1uc1wiLCAoKSA9PiB7XHJcbiAgICByZXR1cm4gcHJvcHMudGFibGUuY29sdW1ucztcclxuICB9KTtcclxuICBwcm92aWRlKFwidXBkYXRlOmNvbHVtbnNcIiwgKGNvbHVtbnM6IGFueSkgPT4ge1xyXG4gICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sdW1uc1wiLCBjb2x1bW5zKTtcclxuICB9KTtcclxuXHJcbiAgcHJvdmlkZShcImdldDpjcnVkQmluZGluZ1wiLCAoKSA9PiB7XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVzZVNlYXJjaChwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xyXG4gIGNvbnN0IHNlYXJjaFJlZiA9IHJlZigpO1xyXG4gIGNvbnN0IGdldFNlYXJjaFJlZiA9ICgpID0+IHtcclxuICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ2V0U2VhcmNoRm9ybURhdGEgPSAoKSA9PiB7XHJcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0Rm9ybSgpO1xyXG4gICAgfVxyXG4gICAgbG9nZ2VyLndhcm4oXCLor7fkvb/nlKhleHBvc2UuZ2V0U2VhcmNoRm9ybURhdGHku6Pmm79cIik7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEgPSAoKSA9PiB7XHJcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0VmFsaWRhdGVkRm9ybSgpO1xyXG4gICAgfVxyXG4gICAgbG9nZ2VyLndhcm4oXCLor7fkvb/nlKhleHBvc2UuZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGHku6Pmm79cIik7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICog6K6+572uZm9ybeWAvFxyXG4gICAqIEBwYXJhbSBmb3JtIGZvcm3lr7nosaFcclxuICAgKiBAcGFyYW0gb3B0cyA9IHtcclxuICAgKiAgICBpc01lcmdlOmZhbHNlIOaYr+WQpuS4juWOn+aciWZvcm3lgLzlkIjlubYsXHJcbiAgICogfVxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNldFNlYXJjaEZvcm1EYXRhKHsgZm9ybSwgbWVyZ2VGb3JtID0gZmFsc2UgfTogU2V0U2VhcmNoRm9ybURhdGFQcm9wcykge1xyXG4gICAgaWYgKHNlYXJjaFJlZi52YWx1ZSkge1xyXG4gICAgICBzZWFyY2hSZWYudmFsdWUuc2V0Rm9ybShmb3JtLCBtZXJnZUZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHNlYXJjaFJlZixcclxuICAgIGdldFNlYXJjaFJlZixcclxuICAgIGdldFNlYXJjaEZvcm1EYXRhLFxyXG4gICAgc2V0U2VhcmNoRm9ybURhdGEsXHJcbiAgICBnZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVzZVRhYnMoc2VhcmNoUmV0OiBhbnksIHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XHJcbiAgY29uc3QgdGFic0JpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAocHJvcHMudGFicyAmJiBwcm9wcy50YWJzLnNob3cgJiYgcHJvcHMudGFicy5uYW1lKSB7XHJcbiAgICAgIGxldCBkaWN0ID0gbnVsbDtcclxuICAgICAgY29uc3QgZGVmYXVsdFRhYnMgPSB7IC4uLnByb3BzLnRhYnMgfTtcclxuICAgICAgaWYgKHByb3BzLnNlYXJjaD8uY29sdW1ucyAmJiBwcm9wcy5zZWFyY2g/LmNvbHVtbnNbcHJvcHMudGFicy5uYW1lXT8uY29tcG9uZW50Py5kaWN0KSB7XHJcbiAgICAgICAgZGljdCA9IHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3Q7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRUYWJzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgIGRlZmF1bHRUYWJzLnZhbHVlID0gZGljdC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlZmF1bHRUYWJzLmxhYmVsID09IG51bGwpIHtcclxuICAgICAgICAgIGRlZmF1bHRUYWJzLmxhYmVsID0gZGljdC5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlZmF1bHRUYWJzLm9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZGVmYXVsdFRhYnMub3B0aW9ucyA9IGRpY3QuZGF0YSB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFRhYnMsXHJcbiAgICAgICAgbW9kZWxWYWx1ZTogcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm0gJiYgcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm1bcHJvcHMudGFicy5uYW1lXSxcclxuICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGN0eC5lbWl0KFwidGFiLWNoYW5nZVwiLCB7IFtwcm9wcy50YWJzLm5hbWVdOiB2YWx1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaG93OiBmYWxzZVxyXG4gICAgfTtcclxuICB9KTtcclxuICByZXR1cm4ge1xyXG4gICAgdGFic0JpbmRpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB1c2VGaXhlZEhlaWdodChwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH06IGFueSkge1xyXG4gIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xyXG4gIGxldCB0YWJsZUNJID0gdWkudGFibGU7XHJcbiAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xyXG4gICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XHJcbiAgfVxyXG4gIGlmICh0YWJsZUNJLmhhc01heEhlaWdodChwcm9wcy50YWJsZSkpIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9XHJcbiAgaWYgKCF0YWJsZUNJLmZpeGVkSGVhZGVyTmVlZENvbXB1dGVCb2R5SGVpZ2h0KSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG4gIGNvbnN0IG1heEhlaWdodFJlZiA9IHJlZihudWxsKTtcclxuXHJcbiAgZnVuY3Rpb24gY29tcHV0ZUJvZHlIZWlnaHQoKSB7XHJcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xyXG4gICAgaWYgKHRhYmxlRG9tID09IG51bGwgfHwgdGFibGVEb20ucXVlcnlTZWxlY3RvciA9PSBudWxsIHx8ICEodGFibGVEb20ucXVlcnlTZWxlY3RvciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBoZWFkRG9tID0gdGFibGVEb20ucXVlcnlTZWxlY3Rvcih0YWJsZUNJLmhlYWRlckRvbVNlbGVjdG9yKTtcclxuICAgIGlmIChoZWFkRG9tID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZURvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICBjb25zdCBoZWFkSGVpZ2h0ID0gaGVhZERvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICBtYXhIZWlnaHRSZWYudmFsdWUgPSB0YWJsZUhlaWdodCAtIGhlYWRIZWlnaHQgLSAyICsgKHByb3BzLnRhYmxlLm1heEhlaWdodEFkanVzdCB8fCAwKTtcclxuXHJcbiAgICB1dGlsTG9nLmRlYnVnKFwidGFibGUgbWF4IGhlaWdodCByZWNvbXB1dGVkIFwiLCBtYXhIZWlnaHRSZWYudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gd2F0Y2hCb2R5SGVpZ2h0Q2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGFibGVEb20gPSB0YWJsZVJlZj8udmFsdWU/LiRlbDtcclxuICAgIGlmICh0YWJsZURvbSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhYmxlV3JhcHBlckRvbSA9IHRhYmxlRG9tLnBhcmVudE5vZGU7XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcclxuICAgICAgdXRpbExvZy5kZWJ1ZyhcInRhYmxlIHJlc2l6ZWRcIiwgZW50cmllcyk7XHJcbiAgICAgIC8vIOavj+asoeiiq+ingua1i+eahOWFg+e0oOWwuuWvuOWPkeeUn+aUueWPmOi/memHjOmDveS8muaJp+ihjFxyXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwICYmIGVudHJpZXNbMF0uY29udGVudFJlY3QuaGVpZ2h0ID4gMCkge1xyXG4gICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YWJsZVdyYXBwZXJEb20pOyAvLyDop4LmtYtET03lhYPntKBcclxuICB9XHJcblxyXG4gIG9uTW91bnRlZChhc3luYyAoKSA9PiB7XHJcbiAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgYXdhaXQgbmV4dFRpY2soKTtcclxuICAgIHdhdGNoQm9keUhlaWdodENoYW5nZSgpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB7IG1heEhlaWdodFJlZiwgY29tcHV0ZUJvZHlIZWlnaHQgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gdXNlVGFibGUocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcclxuICBjb25zdCB1aSA9IHVpQ29udGV4dC5nZXQoKTtcclxuICBjb25zdCB0YWJsZVJlZiA9IHJlZigpO1xyXG4gIGNvbnN0IHRvb2xiYXJSZWYgPSByZWYoKTtcclxuICBjb25zdCBjb250YWluZXJSZWYgPSByZWYoKTtcclxuICBjb25zdCB7IG1heEhlaWdodFJlZiwgY29tcHV0ZUJvZHlIZWlnaHQgfSA9IHVzZUZpeGVkSGVpZ2h0KHByb3BzLCBjdHgsIHsgdGFibGVSZWYsIGNvbnRhaW5lclJlZiB9KTtcclxuICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG4gIGNvbnN0IHRhYmxlUHJvcFJlZiA9IHRvUmVmKHByb3BzLCBcInRhYmxlXCIpO1xyXG4gIGNvbnN0IGNvbXB1dGVkVGFibGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAvLyBhbnRkdiBuYWl2ZSDpq5jluqboh6rpgILlupTvvIwg5aaC5p6c55So5oi35pyJ6YWN572uc2Nyb2xs77yM5YiZ5LyY5YWI5L2/55So55So5oi36YWN572u55qEXHJcbiAgICBsZXQgZml4ZWRIZWlnaHQgPSB7fTtcclxuICAgIGlmIChtYXhIZWlnaHRSZWY/LnZhbHVlICE9IG51bGwpIHtcclxuICAgICAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcclxuICAgICAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xyXG4gICAgICAgIHRhYmxlQ0kgPSB1aS50YWJsZVYyO1xyXG4gICAgICB9XHJcbiAgICAgIGZpeGVkSGVpZ2h0ID0gdGFibGVDSS5idWlsZE1heEhlaWdodChtYXhIZWlnaHRSZWYudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcEF0dHJzID0gdXRpbHMuZGFzaC5vbWl0KHRhYmxlUHJvcFJlZiwgXCJsb2FkaW5nXCIsIFwiY29sdW1uc1wiLCBcImNvbHVtbnNNYXBcIik7XHJcblxyXG4gICAgcmV0dXJuIG1lcmdlKGZpeGVkSGVpZ2h0LCB7IC4uLmN0eC5hdHRycywgLi4ucEF0dHJzIH0pO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBjb21wdXRlZFRvb2xiYXIgPSB0b1JlZihwcm9wcywgXCJ0b29sYmFyXCIpO1xyXG4gIGNvbnN0IG1lcmdlZFNsb3RzID0gY29tcHV0ZWQoKCkgPT4gbWVyZ2VDcnVkU2xvdHMocHJvcHMuc2xvdHMsIGN0eC5zbG90cykpO1xyXG5cclxuICBjb25zdCBjb21wdXRlZENlbGxTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiBmaWx0ZXJDcnVkU2xvdHMobWVyZ2VkU2xvdHMudmFsdWUsIFwiY2VsbFwiKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgY29tcHV0ZWRGb3JtU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gZmlsdGVyQ3J1ZFNsb3RzKG1lcmdlZFNsb3RzLnZhbHVlLCBcImZvcm1cIik7XHJcbiAgfSk7XHJcbiAgY29uc3QgY29tcHV0ZWRTZWFyY2hTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiBmaWx0ZXJDcnVkU2xvdHMobWVyZ2VkU2xvdHMudmFsdWUsIFwic2VhcmNoXCIpO1xyXG4gIH0pO1xyXG4gIGNvbnN0IGNvbXB1dGVkVG9vbGJhclNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIGZpbHRlckNydWRTbG90cyhtZXJnZWRTbG90cy52YWx1ZSwgXCJ0b29sYmFyXCIpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBmb3JtV3JhcHBlclJlZiA9IHJlZigpO1xyXG5cclxuICBjb25zdCBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY2xheno6IGFueSA9IHsgY29tcGFjdDogcHJvcHMudG9vbGJhci5jb21wYWN0ICE9PSBmYWxzZSB9O1xyXG4gICAgaWYgKHByb3BzLmN1c3RvbUNsYXNzKSB7XHJcbiAgICAgIGNsYXp6W3Byb3BzLmN1c3RvbUNsYXNzXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xheno7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGlubmVyV3JhcHBlclJlZiA9IHJlZigpO1xyXG5cclxuICBjb25zdCBpc0Zvcm1Jbm5lciA9IHJlZihmYWxzZSk7XHJcbiAgY29uc3Qgb25Gb3JtSW5uZXJDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgaXNGb3JtSW5uZXIudmFsdWUgPSB2YWx1ZTtcclxuICB9O1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgdGFibGVSZWYsXHJcbiAgICBjb250YWluZXJSZWYsXHJcbiAgICB0b29sYmFyUmVmLFxyXG4gICAgY29tcHV0ZWRUYWJsZSxcclxuICAgIGNvbXB1dGVkVG9vbGJhcixcclxuICAgIG1lcmdlZFNsb3RzLFxyXG4gICAgY29tcHV0ZWRDZWxsU2xvdHMsXHJcbiAgICBmb3JtV3JhcHBlclJlZixcclxuICAgIGlzRm9ybUlubmVyLFxyXG4gICAgb25Gb3JtSW5uZXJDaGFuZ2UsXHJcbiAgICBjb21wdXRlZEZvcm1TbG90cyxcclxuICAgIGNvbXB1dGVkU2VhcmNoU2xvdHMsXHJcbiAgICBjb21wdXRlZFRvb2xiYXJTbG90cyxcclxuICAgIGNvbXB1dGVCb2R5SGVpZ2h0LFxyXG4gICAgY29tcHV0ZWRDbGFzcyxcclxuICAgIGlubmVyV3JhcHBlclJlZlxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBmcy1jcnVkXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNDcnVkXCIsXHJcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDooajmoLxpZFxyXG4gICAgICovXHJcbiAgICBpZDoge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6IFwiXCJcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOihqOagvOmFjee9ru+8jOingUZzVGFibGVcclxuICAgICAqL1xyXG4gICAgdGFibGU6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6KGo5qC85pWw5o2uXHJcbiAgICAgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvcmVxdWlyZS1kZWZhdWx0LXByb3BcclxuICAgIGRhdGE6IHtcclxuICAgICAgdHlwZTogQXJyYXlcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaTjeS9nOWIl+mFjee9ru+8jOingUZzUm93SGFuZGxlXHJcbiAgICAgKi9cclxuICAgIHJvd0hhbmRsZToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmn6Xor6LmoYbphY3nva7vvIzop4FGc1NlYXJjaFxyXG4gICAgICovXHJcbiAgICBzZWFyY2g6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5bel5YW35p2h6YWN572u77yM6KeBRnNUb29sYmFyXHJcbiAgICAgKi9cclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5Yqo5L2c5p2h6YWN572u77yM6KeBRnNBY3Rpb25iYXJcclxuICAgICAqL1xyXG4gICAgYWN0aW9uYmFyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIHRhYnMgZmlsdGVyXHJcbiAgICAgKi9cclxuICAgIHRhYnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5re75Yqg6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxyXG4gICAgICovXHJcbiAgICBhZGRGb3JtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOe8lui+keihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcclxuICAgICAqL1xyXG4gICAgZWRpdEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5p+l55yL6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxyXG4gICAgICovXHJcbiAgICB2aWV3Rm9ybToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDnv7vpobXphY3nva4s5pSv5oyBZWwtcGFnaW5hdGlvbnxhLXBhZ2luYXRpb27phY3nva5cclxuICAgICAqL1xyXG4gICAgcGFnaW5hdGlvbjoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5a655Zmo6YWN572u77yM6KeBRnNDb250YWluZXJcclxuICAgICAqL1xyXG4gICAgY29udGFpbmVyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOmFjee9ruW8j+aPkuanve+8jOaooeadv+aPkuanveWQjOWQjeaXtuS8mOWFiFxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8Q3J1ZFNsb3RzPixcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjcnVk5YyF6KO55a655Zmo55qEY2xhc3NcclxuICAgICAqL1xyXG4gICAgY3VzdG9tQ2xhc3M6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDkuI3opoHkvKDliLBmcy10YWJsZeWOu1xyXG4gICAgICovXHJcbiAgICBmb3JtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlj6/pgInmi6lcclxuICAgICAqL1xyXG4gICAgc2VsZWN0aW9uOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxSb3dTZWxlY3Rpb25Qcm9wcz4sXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcInVwZGF0ZTpzZWFyY2hcIiwgXCJ1cGRhdGU6Y29tcGFjdFwiLCBcInVwZGF0ZTpjb2x1bW5zXCIsIFwiZm9ybS12YWx1ZS1jaGFuZ2VcIiwgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcInRhYi1jaGFuZ2VcIl0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICB1c2VQcm92aWRlcnMocHJvcHMsIGN0eCk7XHJcbiAgICBjb25zdCBzZWFyY2ggPSB1c2VTZWFyY2gocHJvcHMsIGN0eCk7XHJcbiAgICBjb25zdCB0YWJzID0gdXNlVGFicyhzZWFyY2gsIHByb3BzLCBjdHgpO1xyXG4gICAgY29uc3QgdGFibGUgPSB1c2VUYWJsZShwcm9wcywgY3R4KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICAuLi5zZWFyY2gsXHJcbiAgICAgIC4uLnRhYmxlLFxyXG4gICAgICAuLi50YWJzXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLy/kvZzkuLrmlbDmja7ooajmoLzkvb/nlKjnmoTpooTorr7moLflvI/vvIzpmpDol49mb290ZXLvvIzooajmoLzpq5jluqbnoo7orrDlvZXmlbDlop7liqDogIzlop7liqBcclxuLmZzLWNydWQtYXMtdGFibGUge1xyXG4gIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IHVuc2V0O1xyXG5cclxuICAuZnMtY3J1ZC1mb290ZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIC5ib3ggLmlubmVyIHtcclxuICAgIHBvc2l0aW9uOiBzdGF0aWM7XHJcbiAgfVxyXG59XHJcblxyXG4uZnMtY3J1ZC1jb250YWluZXIge1xyXG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xyXG5cclxuICAmLmNvbXBhY3Qge1xyXG4gICAgLmVsLXRhYmxlLS1ib3JkZXIge1xyXG4gICAgICBib3JkZXItbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAuZnMtY3J1ZC1oZWFkZXIge1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWNydWQtZm9vdGVyIHtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZzLWNydWQtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDA7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICAgLmZzLWhlYWRlci10b3Age1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZnMtY3J1ZC1zZWFyY2gge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMjtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcclxuICAgIH1cclxuXHJcbiAgICAuZnMtaGVhZGVyLW1pZGRsZSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1oZWFkZXItYm90dG9tIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLWNydWQtYWN0aW9uYmFyIHtcclxuICAgICAgLy8gcGFkZGluZy10b3A6IDVweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleDogMTAwMDA7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1pbi13aWR0aDogMXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1jcnVkLXRvb2xiYXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZnMtY3J1ZC10YWJsZSB7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5mcy1jcnVkLWZvb3RlciB7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDA7XHJcblxyXG4gICAgLmZzLWNydWQtcGFnaW5hdGlvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICAgLmZzLXBhZ2luYXRpb24tbGVmdCB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cclxuICAgICAgICAvKiDlt6bkvqfmsqHmnInmj5Lmp73lhoXlrrnml7bkuI3nlZnnqbrpmpnvvIzkv53or4HliIbpobXlmajkuKXmoLzlsYXkuK0gKi9cclxuICAgICAgICAmOmVtcHR5IHtcclxuICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5mcy1wYWdpbmF0aW9uLXJpZ2h0IHtcclxuICAgICAgICBmbGV4OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZnMtcGFnaW5hdGlvbiB7XHJcbiAgICAgICAgLyog5YiG6aG15Zmo5bGF5Lit77ya5LiN5YaN5pKR5ruh5pW06KGM77yM5a695bqm6Ieq6YCC5bqU5bm25oqK5YiG6aG157uE5Lu25rC05bmz5bGF5LitICovXHJcbiAgICAgICAgZmxleDogMCAxIGF1dG87XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgLmFudC1wYWdpbmF0aW9uLW9wdGlvbnMge1xyXG4gICAgICAgICAgLmFudC1zZWxlY3Qge1xyXG4gICAgICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5lbC1wYWdpbmF0aW9uIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5mcy1wYWdpbmF0aW9uLXJpZ2h0IHtcclxuICAgICAgICBmbGV4OiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAuZnMtY3J1ZC1jb250YWluZXIge1xyXG4gICAgLmJvZHkge1xyXG4gICAgICBvdmVyZmxvdy15OiB1bnNldCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLmFudC10YWJsZS1ib2R5IHtcclxuICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5uLWRhdGEtdGFibGUtYmFzZS10YWJsZS1ib2R5IHtcclxuICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1jcnVkLWhlYWRlciAuZnMtY3J1ZC1hY3Rpb25iYXIge1xyXG4gICAgICBmbGV4OiB1bnNldCAhaW1wb3J0YW50O1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1yb3ctaGFuZGxlXCI+XHJcbiAgICA8c2xvdCBuYW1lPVwiY2VsbC1yb3dIYW5kbGUtbGVmdFwiIHYtYmluZD1cInNjb3BlUmVmXCI+PC9zbG90PlxyXG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBjb21wdXRlZEhhbmRsZUJ0bnNcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlICYmICFpc0Ryb3Bkb3duQnRuKGl0ZW0sIGluZGV4KVwiPlxyXG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cIml0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiaXRlbS5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZVJlZlwiIC8+XHJcbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2UgY2xhc3M9XCJyb3ctaGFuZGxlLWJ0blwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2suc3RvcD1cImRvQ2xpY2soaXRlbSwgJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLW1pZGRsZVwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxyXG4gICAgPCEtLSDkuIvmi4nmjInpkq7oj5zljZUgLS0+XHJcbiAgICA8c3BhbiB2LWlmPVwiaGFzRHJvcGRvd25CdG5cIiBjbGFzcz1cInJvdy1oYW5kbGUtYnRuIGZzLWhhbmRsZS1yb3ctZHJvcGRvd25cIj5cclxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kcm9wZG93bi5uYW1lXCIgdi1iaW5kPVwiY29tcHV0ZWREcm9wZG93bkJpbmRpbmdcIj5cclxuICAgICAgICA8ZnMtYnV0dG9uIHYtYmluZD1cImRyb3Bkb3duLm1vcmVcIiAvPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLmRyb3Bkb3duLnNsb3ROYW1lXT5cclxuICAgICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgICAgOmlzPVwidWkuZHJvcGRvd25NZW51Lm5hbWVcIlxyXG4gICAgICAgICAgICB2LWlmPVwidWkuZHJvcGRvd24ucmVuZGVyTW9kZSA9PT0gJ3Nsb3QnXCJcclxuICAgICAgICAgICAgdi1iaW5kPVwidWkuZHJvcGRvd25NZW51LmNvbW1hbmQoZG9Ecm9wZG93bkl0ZW1DbGljaylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkSGFuZGxlQnRuc1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgICAgICAgIDppcz1cInVpLmRyb3Bkb3duSXRlbS5uYW1lXCJcclxuICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlICYmIGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpXCJcclxuICAgICAgICAgICAgICAgIDpbdWkuZHJvcGRvd25JdGVtLmNvbW1hbmRdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgdi1iaW5kPVwiaXRlbS5kcm9wZG93bkl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiaXRlbS5yZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJpdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlUmVmXCIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwiZnMtcm93LWhhbmRsZS1kcm9wZG93bi1pdGVtXCIgdi1iaW5kPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnMtaWNvbiB2LWlmPVwiaXRlbS5pY29uXCIgOmljb249XCJpdGVtLmljb25cIiAvPiB7eyBpdGVtLnRleHQgfHwgaXRlbS50aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1yaWdodFwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBmb3JFYWNoLCBzb3J0QnksIG9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcclxuaW1wb3J0IHsgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBTY29wZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vZFwiO1xyXG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuXHJcbi8qKlxyXG4gKiDmk43kvZzliJfphY3nva5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1Jvd0hhbmRsZVwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaMiemSruaKmOWPoOmFjee9rlxyXG4gICAgICovXHJcbiAgICBkcm9wZG93bjoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrumFjee9rlxyXG4gICAgICoge1xyXG4gICAgICogICB2aWV3OnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjoxfSxcclxuICAgICAqICAgZWRpdDp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6Mn0sXHJcbiAgICAgKiAgIHJlbW92ZTp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6M30sXHJcbiAgICAgKiAgIC4uLuiHquWumuS5iVxyXG4gICAgICogfVxyXG4gICAgICovXHJcbiAgICBidXR0b25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5oyJ6ZKu5YiG57uELOS4iumdoueahGJ1dHRvbnPkuLrpu5jorqTliIbnu4RcclxuICAgICAqICB7XHJcbiAgICAgKiAgICBncm91cEtleTp7YnV0dG9uS2V5Ont9LGJ1dHRvbktleTI6e319XHJcbiAgICAgKiAgfVxyXG4gICAgICovXHJcbiAgICBncm91cDoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOW9k+WJjea/gOa0u+WIhue7hFxyXG4gICAgICovXHJcbiAgICBhY3RpdmU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBcImRlZmF1bHRcIlxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogc2NvcGVcclxuICAgICAqL1xyXG4gICAgc2NvcGU6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1wiaGFuZGxlXCJdLFxyXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eCkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuXHJcbiAgICBjb25zdCBzY29wZVJlZiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5wcm9wcy5zY29wZSxcclxuICAgICAgICByb3c6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLnJvd10sXHJcbiAgICAgICAgaW5kZXg6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBkb0NsaWNrID0gKGl0ZW06IGFueSwgJGV2ZW50PzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4uaW5kZXhdO1xyXG4gICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xyXG4gICAgICBjb25zdCBlOiBTY29wZUNvbnRleHQgPSB7IGtleTogaXRlbS5rZXksIHJvdywgYnRuOiBpdGVtLCBpbmRleCwgLi4ucHJvcHMuc2NvcGUsIGxvYWRpbmdSZWY6ICRldmVudD8ubG9hZGluZ1JlZiB9O1xyXG4gICAgICBpZiAoaXRlbS5jbGljaykge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmNsaWNrKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGN0eC5lbWl0KFwiaGFuZGxlXCIsIGUpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgZG9Db21wdXRlZCB9ID0gdXNlQ29tcHV0ZSgpO1xyXG4gICAgY29uc3QgcGlja2VkUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZHJvcGRvd246IHByb3BzLmRyb3Bkb3duLFxyXG4gICAgICAgIGJ1dHRvbnM6IHByb3BzLmJ1dHRvbnMsXHJcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmUsXHJcbiAgICAgICAgZ3JvdXA6IHByb3BzLmdyb3VwXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IGRvQ29tcHV0ZWQoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICByZXR1cm4gcGlja2VkUHJvcHMudmFsdWU7XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XTtcclxuICAgICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xyXG4gICAgICAgIHJldHVybiB7IC4uLnByb3BzLnNjb3BlLCBpbmRleCwgcm93IH07XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy9jb25zdCBjb21wdXRlUHJvcHMgPSB7IHZhbHVlOiBwcm9wcyB9O1xyXG4gICAgY29uc3QgY29tcHV0ZWRIYW5kbGVCdG5zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBsZXQgbWVyZ2VkQnRucyA9IG51bGw7XHJcbiAgICAgIGlmIChjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlID09IG51bGwgfHwgY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZSA9PT0gXCJkZWZhdWx0XCIpIHtcclxuICAgICAgICBjb25zdCBkZWZCdG5zID0ge1xyXG4gICAgICAgICAgdmlldzoge1xyXG4gICAgICAgICAgICBrZXk6IFwidmlld1wiLFxyXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKSxcclxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUudmlldy50ZXh0XCIpLFxyXG4gICAgICAgICAgICBzaXplOiBcInNtYWxsXCJcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb3B5OiB7XHJcbiAgICAgICAgICAgIGtleTogXCJjb3B5XCIsXHJcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpLFxyXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5jb3B5LnRleHRcIiksXHJcbiAgICAgICAgICAgIHNpemU6IFwic21hbGxcIlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVkaXQ6IHtcclxuICAgICAgICAgICAga2V5OiBcImVkaXRcIixcclxuICAgICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXHJcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUuZWRpdC50ZXh0XCIpLFxyXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5lZGl0LnRleHRcIiksXHJcbiAgICAgICAgICAgIHNpemU6IFwic21hbGxcIlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlbW92ZToge1xyXG4gICAgICAgICAgICBrZXk6IFwicmVtb3ZlXCIsXHJcbiAgICAgICAgICAgIC4uLnVpLmJ1dHRvbi5jb2xvcnMoXCJkYW5nZXJcIiksXHJcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUucmVtb3ZlLnRleHRcIiksXHJcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnJlbW92ZS50ZXh0XCIpLFxyXG4gICAgICAgICAgICBzaXplOiBcInNtYWxsXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIG1lcmdlZEJ0bnMgPSBtZXJnZShkZWZCdG5zLCBjb21wdXRlUHJvcHMudmFsdWUuYnV0dG9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWVyZ2VkQnRucyA9IGNvbXB1dGVQcm9wcy52YWx1ZS5ncm91cFtjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYnRuczogQnV0dG9uUHJvcHNbXSA9IFtdO1xyXG4gICAgICBmb3JFYWNoKG1lcmdlZEJ0bnMsIChpdGVtLCBrZXkpID0+IHtcclxuICAgICAgICBpdGVtLmtleSA9IGtleTtcclxuICAgICAgICBpZiAoaXRlbS5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBidG5zLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHNvcnRCeShidG5zLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWREcm9wZG93bkF0TGVhc3QgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24gPT0gbnVsbCB8fFxyXG4gICAgICAgIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0ID09IG51bGwgfHxcclxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCA8PSAwIHx8XHJcbiAgICAgICAgY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlLmxlbmd0aCA8PSBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdFxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgfHwgMDtcclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gaXNEcm9wZG93bkJ0bihpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgaWYgKGl0ZW0uZHJvcGRvd24gPT09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29tcHV0ZWREcm9wZG93bkF0TGVhc3QudmFsdWUgPiAwICYmIGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LnZhbHVlIDwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYXNEcm9wZG93bkJ0biA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGlzID0gaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleCk7XHJcbiAgICAgICAgaWYgKGlzKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBkb0Ryb3Bkb3duSXRlbUNsaWNrKCRldmVudDogYW55KSB7XHJcbiAgICAgIGZvciAobGV0IGJ0biBvZiBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWUpIHtcclxuICAgICAgICBpZiAoJGV2ZW50ID09PSBidG4ua2V5KSB7XHJcbiAgICAgICAgICBkb0NsaWNrKGJ0bik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWREcm9wZG93bkJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGJpbmRpbmc6IGFueSA9IHt9O1xyXG4gICAgICBpZiAodWkuZHJvcGRvd24ucmVuZGVyTW9kZSAhPT0gXCJzbG90XCIpIHtcclxuICAgICAgICAvLyBuYWl2ZSDpgJrov4dvcHRpb25z6YWN572u5p2l5pi+56S65a2Q6aG5XHJcbiAgICAgICAgY29uc3QgYnRucyA9IGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvcHRzOiBCdXR0b25Qcm9wc1tdID0gW107XHJcbiAgICAgICAgZm9yRWFjaChidG5zLCAodmFsdWUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWUuc2hvdyAhPT0gZmFsc2UgJiYgaXNEcm9wZG93bkJ0bih2YWx1ZSwgaW5kZXgpKSB7XHJcbiAgICAgICAgICAgIG9wdHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgW3VpLmRyb3Bkb3duLnZhbHVlXTogdmFsdWUua2V5LFxyXG4gICAgICAgICAgICAgIFt1aS5kcm9wZG93bi5sYWJlbF06IHZhbHVlLnRleHQsXHJcbiAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlLnRpdGxlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJpbmRpbmcub3B0aW9ucyA9IG9wdHM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5vbWl0KHByb3BzLmRyb3Bkb3duLCBcIm1vcmVcIiwgXCJhdExlYXN0XCIpLFxyXG4gICAgICAgIC4uLnVpLmRyb3Bkb3duLmNvbW1hbmQoZG9Ecm9wZG93bkl0ZW1DbGljayksXHJcbiAgICAgICAgLi4uYmluZGluZ1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIGhhc0Ryb3Bkb3duQnRuLFxyXG4gICAgICBjb21wdXRlZEhhbmRsZUJ0bnMsXHJcbiAgICAgIGRvRHJvcGRvd25JdGVtQ2xpY2ssXHJcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LFxyXG4gICAgICBkb0NsaWNrLFxyXG4gICAgICBpc0Ryb3Bkb3duQnRuLFxyXG4gICAgICBzY29wZVJlZixcclxuICAgICAgY29tcHV0ZWREcm9wZG93bkJpbmRpbmdcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXJvdy1oYW5kbGUge1xyXG4gIC8vIGRpc3BsYXk6IGZsZXggOyAvLyDov5nph4zkuI3og73nlKhmbGV477yM5ZCm5YiZ5Lya56C05Z2PYWxpZ246Y2VudGVy6YWN572uXHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgLmVsLWJ1dHRvbiArIC5lbC1idXR0b24ge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDJweDtcclxuICB9XHJcbiAgJiA+ICoge1xyXG4gICAgbWFyZ2luOiAycHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG4gIC5mcy1yb3ctaGFuZGxlLWRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9XHJcblxyXG4gIC5uLWJ1dHRvbiB7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luOiAycHg7XHJcbiAgfVxyXG5cclxuICAucm93LWhhbmRsZS1idG4ge1xyXG4gICAgLmZzLWljb24ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtcm93LWhhbmRsZVwiPlxyXG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLWxlZnRcIiB2LWJpbmQ9XCJzY29wZVJlZlwiPjwvc2xvdD5cclxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRIYW5kbGVCdG5zXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZSAmJiAhaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleClcIj5cclxuICAgICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJpdGVtLnJlbmRlclwiIDpyZW5kZXItZnVuYz1cIml0ZW0ucmVuZGVyXCIgOnNjb3BlPVwic2NvcGVSZWZcIiAvPlxyXG4gICAgICAgIDxmcy1idXR0b24gdi1lbHNlIGNsYXNzPVwicm93LWhhbmRsZS1idG5cIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrLnN0b3A9XCJkb0NsaWNrKGl0ZW0sICRldmVudClcIiAvPlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1taWRkbGVcIiB2LWJpbmQ9XCJzY29wZVwiPjwvc2xvdD5cclxuICAgIDwhLS0g5LiL5ouJ5oyJ6ZKu6I+c5Y2VIC0tPlxyXG4gICAgPHNwYW4gdi1pZj1cImhhc0Ryb3Bkb3duQnRuXCIgY2xhc3M9XCJyb3ctaGFuZGxlLWJ0biBmcy1oYW5kbGUtcm93LWRyb3Bkb3duXCI+XHJcbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZHJvcGRvd24ubmFtZVwiIHYtYmluZD1cImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXCI+XHJcbiAgICAgICAgPGZzLWJ1dHRvbiB2LWJpbmQ9XCJkcm9wZG93bi5tb3JlXCIgLz5cclxuICAgICAgICA8dGVtcGxhdGUgI1t1aS5kcm9wZG93bi5zbG90TmFtZV0+XHJcbiAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgIDppcz1cInVpLmRyb3Bkb3duTWVudS5uYW1lXCJcclxuICAgICAgICAgICAgdi1pZj1cInVpLmRyb3Bkb3duLnJlbmRlck1vZGUgPT09ICdzbG90J1wiXHJcbiAgICAgICAgICAgIHYtYmluZD1cInVpLmRyb3Bkb3duTWVudS5jb21tYW5kKGRvRHJvcGRvd25JdGVtQ2xpY2spXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBjb21wdXRlZEhhbmRsZUJ0bnNcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICA6aXM9XCJ1aS5kcm9wZG93bkl0ZW0ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZSAmJiBpc0Ryb3Bkb3duQnRuKGl0ZW0sIGluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICA6W3VpLmRyb3Bkb3duSXRlbS5jb21tYW5kXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cIml0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiaXRlbS5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZVJlZlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cImZzLXJvdy1oYW5kbGUtZHJvcGRvd24taXRlbVwiIHYtYmluZD1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gdi1pZj1cIml0ZW0uaWNvblwiIDppY29uPVwiaXRlbS5pY29uXCIgLz4ge3sgaXRlbS50ZXh0IHx8IGl0ZW0udGl0bGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c2xvdCBuYW1lPVwiY2VsbC1yb3dIYW5kbGUtcmlnaHRcIiB2LWJpbmQ9XCJzY29wZVwiPjwvc2xvdD5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgZm9yRWFjaCwgc29ydEJ5LCBvbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XHJcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgU2NvcGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcblxyXG4vKipcclxuICog5pON5L2c5YiX6YWN572uXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNSb3dIYW5kbGVcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDmjInpkq7mipjlj6DphY3nva5cclxuICAgICAqL1xyXG4gICAgZHJvcGRvd246IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmjInpkq7phY3nva5cclxuICAgICAqIHtcclxuICAgICAqICAgdmlldzp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6MX0sXHJcbiAgICAgKiAgIGVkaXQ6ey4uLkZzQnV0dG9uLGNsaWNrOkZ1bmN0aW9uLG9yZGVyOjJ9LFxyXG4gICAgICogICByZW1vdmU6ey4uLkZzQnV0dG9uLGNsaWNrOkZ1bmN0aW9uLG9yZGVyOjN9LFxyXG4gICAgICogICAuLi7oh6rlrprkuYlcclxuICAgICAqIH1cclxuICAgICAqL1xyXG4gICAgYnV0dG9uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSruWIhue7hCzkuIrpnaLnmoRidXR0b25z5Li66buY6K6k5YiG57uEXHJcbiAgICAgKiAge1xyXG4gICAgICogICAgZ3JvdXBLZXk6e2J1dHRvbktleTp7fSxidXR0b25LZXkyOnt9fVxyXG4gICAgICogIH1cclxuICAgICAqL1xyXG4gICAgZ3JvdXA6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlvZPliY3mv4DmtLvliIbnu4RcclxuICAgICAqL1xyXG4gICAgYWN0aXZlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogXCJkZWZhdWx0XCJcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIHNjb3BlXHJcbiAgICAgKi9cclxuICAgIHNjb3BlOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcImhhbmRsZVwiXSxcclxuICBzZXR1cChwcm9wczogYW55LCBjdHgpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XHJcblxyXG4gICAgY29uc3Qgc2NvcGVSZWYgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4ucHJvcHMuc2NvcGUsXHJcbiAgICAgICAgcm93OiBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddLFxyXG4gICAgICAgIGluZGV4OiBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZG9DbGljayA9IChpdGVtOiBhbnksICRldmVudD86IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XTtcclxuICAgICAgY29uc3Qgcm93ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XTtcclxuICAgICAgY29uc3QgZTogU2NvcGVDb250ZXh0ID0geyBrZXk6IGl0ZW0ua2V5LCByb3csIGJ0bjogaXRlbSwgaW5kZXgsIC4uLnByb3BzLnNjb3BlLCBsb2FkaW5nUmVmOiAkZXZlbnQ/LmxvYWRpbmdSZWYgfTtcclxuICAgICAgaWYgKGl0ZW0uY2xpY2spIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5jbGljayhlKTtcclxuICAgICAgfVxyXG4gICAgICBjdHguZW1pdChcImhhbmRsZVwiLCBlKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcclxuICAgIGNvbnN0IHBpY2tlZFByb3BzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRyb3Bkb3duOiBwcm9wcy5kcm9wZG93bixcclxuICAgICAgICBidXR0b25zOiBwcm9wcy5idXR0b25zLFxyXG4gICAgICAgIGFjdGl2ZTogcHJvcHMuYWN0aXZlLFxyXG4gICAgICAgIGdyb3VwOiBwcm9wcy5ncm91cFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb21wdXRlUHJvcHMgPSBkb0NvbXB1dGVkKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHBpY2tlZFByb3BzLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF07XHJcbiAgICAgICAgY29uc3Qgcm93ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XTtcclxuICAgICAgICByZXR1cm4geyAuLi5wcm9wcy5zY29wZSwgaW5kZXgsIHJvdyB9O1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIC8vY29uc3QgY29tcHV0ZVByb3BzID0geyB2YWx1ZTogcHJvcHMgfTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSGFuZGxlQnRucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgbGV0IG1lcmdlZEJ0bnMgPSBudWxsO1xyXG4gICAgICBpZiAoY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZSA9PSBudWxsIHx8IGNvbXB1dGVQcm9wcy52YWx1ZS5hY3RpdmUgPT09IFwiZGVmYXVsdFwiKSB7XHJcbiAgICAgICAgY29uc3QgZGVmQnRucyA9IHtcclxuICAgICAgICAgIHZpZXc6IHtcclxuICAgICAgICAgICAga2V5OiBcInZpZXdcIixcclxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS52aWV3LnRleHRcIiksXHJcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKSxcclxuICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29weToge1xyXG4gICAgICAgICAgICBrZXk6IFwiY29weVwiLFxyXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLmNvcHkudGV4dFwiKSxcclxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpLFxyXG4gICAgICAgICAgICBzaXplOiBcInNtYWxsXCJcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlZGl0OiB7XHJcbiAgICAgICAgICAgIGtleTogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxyXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLmVkaXQudGV4dFwiKSxcclxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUuZWRpdC50ZXh0XCIpLFxyXG4gICAgICAgICAgICBzaXplOiBcInNtYWxsXCJcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmU6IHtcclxuICAgICAgICAgICAga2V5OiBcInJlbW92ZVwiLFxyXG4gICAgICAgICAgICAuLi51aS5idXR0b24uY29sb3JzKFwiZGFuZ2VyXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLnJlbW92ZS50ZXh0XCIpLFxyXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5yZW1vdmUudGV4dFwiKSxcclxuICAgICAgICAgICAgc2l6ZTogXCJzbWFsbFwiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBtZXJnZWRCdG5zID0gbWVyZ2UoZGVmQnRucywgY29tcHV0ZVByb3BzLnZhbHVlLmJ1dHRvbnMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1lcmdlZEJ0bnMgPSBjb21wdXRlUHJvcHMudmFsdWUuZ3JvdXBbY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZV07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGJ0bnM6IEJ1dHRvblByb3BzW10gPSBbXTtcclxuICAgICAgZm9yRWFjaChtZXJnZWRCdG5zLCAoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgICAgaXRlbS5rZXkgPSBrZXk7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvdyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnRucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBzb3J0QnkoYnRucywgKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkRHJvcGRvd25BdExlYXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duID09IG51bGwgfHxcclxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgPD0gMCB8fFxyXG4gICAgICAgIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZS5sZW5ndGggPD0gY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3RcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0IHx8IDA7XHJcbiAgICB9KTtcclxuICAgIGZ1bmN0aW9uIGlzRHJvcGRvd25CdG4oaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgIGlmIChpdGVtLmRyb3Bkb3duID09PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LnZhbHVlID4gMCAmJiBjb21wdXRlZERyb3Bkb3duQXRMZWFzdC52YWx1ZSA8IGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFzRHJvcGRvd25CdG4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWUpIHtcclxuICAgICAgICBjb25zdCBpcyA9IGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpO1xyXG4gICAgICAgIGlmIChpcykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZG9Ecm9wZG93bkl0ZW1DbGljaygkZXZlbnQ6IGFueSkge1xyXG4gICAgICBmb3IgKGxldCBidG4gb2YgY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCRldmVudCA9PT0gYnRuLmtleSkge1xyXG4gICAgICAgICAgZG9DbGljayhidG4pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBiaW5kaW5nOiBhbnkgPSB7fTtcclxuICAgICAgaWYgKHVpLmRyb3Bkb3duLnJlbmRlck1vZGUgIT09IFwic2xvdFwiKSB7XHJcbiAgICAgICAgLy8gbmFpdmUg6YCa6L+Hb3B0aW9uc+mFjee9ruadpeaYvuekuuWtkOmhuVxyXG4gICAgICAgIGNvbnN0IGJ0bnMgPSBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3B0czogQnV0dG9uUHJvcHNbXSA9IFtdO1xyXG4gICAgICAgIGZvckVhY2goYnRucywgKHZhbHVlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHZhbHVlLnNob3cgIT09IGZhbHNlICYmIGlzRHJvcGRvd25CdG4odmFsdWUsIGluZGV4KSkge1xyXG4gICAgICAgICAgICBvcHRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIFt1aS5kcm9wZG93bi52YWx1ZV06IHZhbHVlLmtleSxcclxuICAgICAgICAgICAgICBbdWkuZHJvcGRvd24ubGFiZWxdOiB2YWx1ZS50ZXh0LFxyXG4gICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS50aXRsZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBiaW5kaW5nLm9wdGlvbnMgPSBvcHRzO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4ub21pdChwcm9wcy5kcm9wZG93biwgXCJtb3JlXCIsIFwiYXRMZWFzdFwiKSxcclxuICAgICAgICAuLi51aS5kcm9wZG93bi5jb21tYW5kKGRvRHJvcGRvd25JdGVtQ2xpY2spLFxyXG4gICAgICAgIC4uLmJpbmRpbmdcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBoYXNEcm9wZG93bkJ0bixcclxuICAgICAgY29tcHV0ZWRIYW5kbGVCdG5zLFxyXG4gICAgICBkb0Ryb3Bkb3duSXRlbUNsaWNrLFxyXG4gICAgICBjb21wdXRlZERyb3Bkb3duQXRMZWFzdCxcclxuICAgICAgZG9DbGljayxcclxuICAgICAgaXNEcm9wZG93bkJ0bixcclxuICAgICAgc2NvcGVSZWYsXHJcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1yb3ctaGFuZGxlIHtcclxuICAvLyBkaXNwbGF5OiBmbGV4IDsgLy8g6L+Z6YeM5LiN6IO955SoZmxleO+8jOWQpuWImeS8muegtOWdj2FsaWduOmNlbnRlcumFjee9rlxyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC5lbC1idXR0b24gKyAuZWwtYnV0dG9uIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAycHg7XHJcbiAgfVxyXG4gICYgPiAqIHtcclxuICAgIG1hcmdpbjogMnB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuICAuZnMtcm93LWhhbmRsZS1kcm9wZG93bi1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgfVxyXG5cclxuICAubi1idXR0b24ge1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIG1hcmdpbjogMnB4O1xyXG4gIH1cclxuXHJcbiAgLnJvdy1oYW5kbGUtYnRuIHtcclxuICAgIC5mcy1pY29uIHtcclxuICAgICAgbWFyZ2luOiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcblxuICBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykge1xuICAgICAgdmFyIGEgPSBbbnVsbF07XG4gICAgICBhLnB1c2guYXBwbHkoYSwgYXJncyk7XG4gICAgICB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7XG4gICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTtcbiAgICAgIGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbihmbikge1xuICByZXR1cm4gRnVuY3Rpb24udG9TdHJpbmcuY2FsbChmbikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7XG4gIHZhciBfY2FjaGUgPSB0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgPyBuZXcgTWFwKCkgOiB1bmRlZmluZWQ7XG5cbiAgX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgICBpZiAoQ2xhc3MgPT09IG51bGwgfHwgIV9pc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzO1xuXG4gICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpO1xuXG4gICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG5cbiAgICBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogV3JhcHBlcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3NldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTtcbiAgfTtcblxuICByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7XG59XG5cbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xudmFyIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKCkge307IC8vIGRvbid0IHByaW50IHdhcm5pbmcgbWVzc2FnZSB3aGVuIGluIHByb2R1Y3Rpb24gZW52IG9yIG5vZGUgcnVudGltZVxuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyh0eXBlLCBlcnJvcnMpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2FybiAmJiB0eXBlb2YgQVNZTkNfVkFMSURBVE9SX05PX1dBUk5JTkcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoZXJyb3JzLmV2ZXJ5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ3N0cmluZyc7XG4gICAgICB9KSkge1xuICAgICAgICBjb25zb2xlLndhcm4odHlwZSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHJldHVybiBudWxsO1xuICB2YXIgZmllbGRzID0ge307XG4gIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHZhciBmaWVsZCA9IGVycm9yLmZpZWxkO1xuICAgIGZpZWxkc1tmaWVsZF0gPSBmaWVsZHNbZmllbGRdIHx8IFtdO1xuICAgIGZpZWxkc1tmaWVsZF0ucHVzaChlcnJvcik7XG4gIH0pO1xuICByZXR1cm4gZmllbGRzO1xufVxuZnVuY3Rpb24gZm9ybWF0KHRlbXBsYXRlKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuXG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVtcGxhdGUuYXBwbHkobnVsbCwgYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykge1xuICAgIHZhciBzdHIgPSB0ZW1wbGF0ZS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24gKHgpIHtcbiAgICAgIGlmICh4ID09PSAnJSUnKSB7XG4gICAgICAgIHJldHVybiAnJSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChpID49IGxlbikge1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh4KSB7XG4gICAgICAgIGNhc2UgJyVzJzpcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG5cbiAgICAgICAgY2FzZSAnJWQnOlxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcblxuICAgICAgICBjYXNlICclaic6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBpc05hdGl2ZVN0cmluZ1R5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ3VybCcgfHwgdHlwZSA9PT0gJ2hleCcgfHwgdHlwZSA9PT0gJ2VtYWlsJyB8fCB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3BhdHRlcm4nO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICF2YWx1ZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc05hdGl2ZVN0cmluZ1R5cGUodHlwZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXN5bmNQYXJhbGxlbEFycmF5KGFyciwgZnVuYywgY2FsbGJhY2spIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHRvdGFsID0gMDtcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gY291bnQoZXJyb3JzKSB7XG4gICAgcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIGVycm9ycyB8fCBbXSk7XG4gICAgdG90YWwrKztcblxuICAgIGlmICh0b3RhbCA9PT0gYXJyTGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xuICAgIGZ1bmMoYSwgY291bnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBvcmlnaW5hbCA9IGluZGV4O1xuICAgIGluZGV4ID0gaW5kZXggKyAxO1xuXG4gICAgaWYgKG9yaWdpbmFsIDwgYXJyTGVuZ3RoKSB7XG4gICAgICBmdW5jKGFycltvcmlnaW5hbF0sIG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhbXSk7XG4gICAgfVxuICB9XG5cbiAgbmV4dChbXSk7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5PYmpBcnIob2JqQXJyKSB7XG4gIHZhciByZXQgPSBbXTtcbiAgT2JqZWN0LmtleXMob2JqQXJyKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBvYmpBcnJba10gfHwgW10pO1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxudmFyIEFzeW5jVmFsaWRhdGlvbkVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfRXJyb3IpIHtcbiAgX2luaGVyaXRzTG9vc2UoQXN5bmNWYWxpZGF0aW9uRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gQXN5bmNWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLCBmaWVsZHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9FcnJvci5jYWxsKHRoaXMsICdBc3luYyBWYWxpZGF0aW9uIEVycm9yJykgfHwgdGhpcztcbiAgICBfdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgX3RoaXMuZmllbGRzID0gZmllbGRzO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBBc3luY1ZhbGlkYXRpb25FcnJvcjtcbn0oIC8qI19fUFVSRV9fKi9fd3JhcE5hdGl2ZVN1cGVyKEVycm9yKSk7XG5mdW5jdGlvbiBhc3luY01hcChvYmpBcnIsIG9wdGlvbiwgZnVuYywgY2FsbGJhY2ssIHNvdXJjZSkge1xuICBpZiAob3B0aW9uLmZpcnN0KSB7XG4gICAgdmFyIF9wZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLmxlbmd0aCA/IHJlamVjdChuZXcgQXN5bmNWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLCBjb252ZXJ0RmllbGRzRXJyb3IoZXJyb3JzKSkpIDogcmVzb2x2ZShzb3VyY2UpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGZsYXR0ZW5BcnIgPSBmbGF0dGVuT2JqQXJyKG9iakFycik7XG4gICAgICBhc3luY1NlcmlhbEFycmF5KGZsYXR0ZW5BcnIsIGZ1bmMsIG5leHQpO1xuICAgIH0pO1xuXG4gICAgX3BlbmRpbmdbXCJjYXRjaFwiXShmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3BlbmRpbmc7XG4gIH1cblxuICB2YXIgZmlyc3RGaWVsZHMgPSBvcHRpb24uZmlyc3RGaWVsZHMgPT09IHRydWUgPyBPYmplY3Qua2V5cyhvYmpBcnIpIDogb3B0aW9uLmZpcnN0RmllbGRzIHx8IFtdO1xuICB2YXIgb2JqQXJyS2V5cyA9IE9iamVjdC5rZXlzKG9iakFycik7XG4gIHZhciBvYmpBcnJMZW5ndGggPSBvYmpBcnJLZXlzLmxlbmd0aDtcbiAgdmFyIHRvdGFsID0gMDtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgICAgcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIGVycm9ycyk7XG4gICAgICB0b3RhbCsrO1xuXG4gICAgICBpZiAodG90YWwgPT09IG9iakFyckxlbmd0aCkge1xuICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoID8gcmVqZWN0KG5ldyBBc3luY1ZhbGlkYXRpb25FcnJvcihyZXN1bHRzLCBjb252ZXJ0RmllbGRzRXJyb3IocmVzdWx0cykpKSA6IHJlc29sdmUoc291cmNlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFvYmpBcnJLZXlzLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2socmVzdWx0cyk7XG4gICAgICByZXNvbHZlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgb2JqQXJyS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBhcnIgPSBvYmpBcnJba2V5XTtcblxuICAgICAgaWYgKGZpcnN0RmllbGRzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgICAgYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXN5bmNQYXJhbGxlbEFycmF5KGFyciwgZnVuYywgbmV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBwZW5kaW5nW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gZTtcbiAgfSk7XG4gIHJldHVybiBwZW5kaW5nO1xufVxuXG5mdW5jdGlvbiBpc0Vycm9yT2JqKG9iaikge1xuICByZXR1cm4gISEob2JqICYmIG9iai5tZXNzYWdlICE9PSB1bmRlZmluZWQpO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZSh2YWx1ZSwgcGF0aCkge1xuICB2YXIgdiA9IHZhbHVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgdiA9IHZbcGF0aFtpXV07XG4gIH1cblxuICByZXR1cm4gdjtcbn1cblxuZnVuY3Rpb24gY29tcGxlbWVudEVycm9yKHJ1bGUsIHNvdXJjZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG9lKSB7XG4gICAgdmFyIGZpZWxkVmFsdWU7XG5cbiAgICBpZiAocnVsZS5mdWxsRmllbGRzKSB7XG4gICAgICBmaWVsZFZhbHVlID0gZ2V0VmFsdWUoc291cmNlLCBydWxlLmZ1bGxGaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZFZhbHVlID0gc291cmNlW29lLmZpZWxkIHx8IHJ1bGUuZnVsbEZpZWxkXTtcbiAgICB9XG5cbiAgICBpZiAoaXNFcnJvck9iaihvZSkpIHtcbiAgICAgIG9lLmZpZWxkID0gb2UuZmllbGQgfHwgcnVsZS5mdWxsRmllbGQ7XG4gICAgICBvZS5maWVsZFZhbHVlID0gZmllbGRWYWx1ZTtcbiAgICAgIHJldHVybiBvZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdHlwZW9mIG9lID09PSAnZnVuY3Rpb24nID8gb2UoKSA6IG9lLFxuICAgICAgZmllbGRWYWx1ZTogZmllbGRWYWx1ZSxcbiAgICAgIGZpZWxkOiBvZS5maWVsZCB8fCBydWxlLmZ1bGxGaWVsZFxuICAgIH07XG4gIH07XG59XG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCBzb3VyY2UpIHtcbiAgaWYgKHNvdXJjZSkge1xuICAgIGZvciAodmFyIHMgaW4gc291cmNlKSB7XG4gICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHMpKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtzXTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0W3NdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRhcmdldFtzXSA9IF9leHRlbmRzKHt9LCB0YXJnZXRbc10sIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRbc10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbnZhciByZXF1aXJlZCQxID0gZnVuY3Rpb24gcmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCB0eXBlKSB7XG4gIGlmIChydWxlLnJlcXVpcmVkICYmICghc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpIHx8IGlzRW1wdHlWYWx1ZSh2YWx1ZSwgdHlwZSB8fCBydWxlLnR5cGUpKSkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnJlcXVpcmVkLCBydWxlLmZ1bGxGaWVsZCkpO1xuICB9XG59O1xuXG4vKipcbiAqICBSdWxlIGZvciB2YWxpZGF0aW5nIHdoaXRlc3BhY2UuXG4gKlxuICogIEBwYXJhbSBydWxlIFRoZSB2YWxpZGF0aW9uIHJ1bGUuXG4gKiAgQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgb24gdGhlIHNvdXJjZSBvYmplY3QuXG4gKiAgQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIG9iamVjdCBiZWluZyB2YWxpZGF0ZWQuXG4gKiAgQHBhcmFtIGVycm9ycyBBbiBhcnJheSBvZiBlcnJvcnMgdGhhdCB0aGlzIHJ1bGUgbWF5IGFkZFxuICogIHZhbGlkYXRpb24gZXJyb3JzIHRvLlxuICogIEBwYXJhbSBvcHRpb25zIFRoZSB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiAgQHBhcmFtIG9wdGlvbnMubWVzc2FnZXMgVGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gKi9cblxudmFyIHdoaXRlc3BhY2UgPSBmdW5jdGlvbiB3aGl0ZXNwYWNlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICBpZiAoL15cXHMrJC8udGVzdCh2YWx1ZSkgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMud2hpdGVzcGFjZSwgcnVsZS5mdWxsRmllbGQpKTtcbiAgfVxufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2tldnZhL3VybC1yZWdleC9ibG9iL21hc3Rlci9pbmRleC5qc1xudmFyIHVybFJlZztcbnZhciBnZXRVcmxSZWdleCA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICh1cmxSZWcpIHtcbiAgICByZXR1cm4gdXJsUmVnO1xuICB9XG5cbiAgdmFyIHdvcmQgPSAnW2EtZkEtRlxcXFxkOl0nO1xuXG4gIHZhciBiID0gZnVuY3Rpb24gYihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5pbmNsdWRlQm91bmRhcmllcyA/IFwiKD86KD88PVxcXFxzfF4pKD89XCIgKyB3b3JkICsgXCIpfCg/PD1cIiArIHdvcmQgKyBcIikoPz1cXFxcc3wkKSlcIiA6ICcnO1xuICB9O1xuXG4gIHZhciB2NCA9ICcoPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKD86XFxcXC4oPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKXszfSc7XG4gIHZhciB2NnNlZyA9ICdbYS1mQS1GXFxcXGRdezEsNH0nO1xuICB2YXIgdjYgPSAoXCJcXG4oPzpcXG4oPzpcIiArIHY2c2VnICsgXCI6KXs3fSg/OlwiICsgdjZzZWcgKyBcInw6KXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6Njo3OjogIDE6MjozOjQ6NTo2Ojc6OFxcbig/OlwiICsgdjZzZWcgKyBcIjopezZ9KD86XCIgKyB2NCArIFwifDpcIiArIHY2c2VnICsgXCJ8Oil8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6Njo6ICAgIDE6MjozOjQ6NTo2Ojo4ICAgMToyOjM6NDo1OjY6OjggIDE6MjozOjQ6NTo2OjoxLjIuMy40XFxuKD86XCIgKyB2NnNlZyArIFwiOil7NX0oPzo6XCIgKyB2NCArIFwifCg/OjpcIiArIHY2c2VnICsgXCIpezEsMn18Oil8ICAgICAgICAgICAgICAgICAgIC8vIDE6MjozOjQ6NTo6ICAgICAgMToyOjM6NDo1Ojo3OjggICAxOjI6Mzo0OjU6OjggICAgMToyOjM6NDo1Ojo3OjEuMi4zLjRcXG4oPzpcIiArIHY2c2VnICsgXCI6KXs0fSg/Oig/OjpcIiArIHY2c2VnICsgXCIpezAsMX06XCIgKyB2NCArIFwifCg/OjpcIiArIHY2c2VnICsgXCIpezEsM318Oil8IC8vIDE6MjozOjQ6OiAgICAgICAgMToyOjM6NDo6Njo3OjggICAxOjI6Mzo0Ojo4ICAgICAgMToyOjM6NDo6Njo3OjEuMi4zLjRcXG4oPzpcIiArIHY2c2VnICsgXCI6KXszfSg/Oig/OjpcIiArIHY2c2VnICsgXCIpezAsMn06XCIgKyB2NCArIFwifCg/OjpcIiArIHY2c2VnICsgXCIpezEsNH18Oil8IC8vIDE6MjozOjogICAgICAgICAgMToyOjM6OjU6Njo3OjggICAxOjI6Mzo6OCAgICAgICAgMToyOjM6OjU6Njo3OjEuMi4zLjRcXG4oPzpcIiArIHY2c2VnICsgXCI6KXsyfSg/Oig/OjpcIiArIHY2c2VnICsgXCIpezAsM306XCIgKyB2NCArIFwifCg/OjpcIiArIHY2c2VnICsgXCIpezEsNX18Oil8IC8vIDE6Mjo6ICAgICAgICAgICAgMToyOjo0OjU6Njo3OjggICAxOjI6OjggICAgICAgICAgMToyOjo0OjU6Njo3OjEuMi4zLjRcXG4oPzpcIiArIHY2c2VnICsgXCI6KXsxfSg/Oig/OjpcIiArIHY2c2VnICsgXCIpezAsNH06XCIgKyB2NCArIFwifCg/OjpcIiArIHY2c2VnICsgXCIpezEsNn18Oil8IC8vIDE6OiAgICAgICAgICAgICAgMTo6Mzo0OjU6Njo3OjggICAxOjo4ICAgICAgICAgICAgMTo6Mzo0OjU6Njo3OjEuMi4zLjRcXG4oPzo6KD86KD86OlwiICsgdjZzZWcgKyBcIil7MCw1fTpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSw3fXw6KSkgICAgICAgICAgICAgLy8gOjoyOjM6NDo1OjY6Nzo4ICA6OjI6Mzo0OjU6Njo3OjggIDo6OCAgICAgICAgICAgICA6OjEuMi4zLjRcXG4pKD86JVswLTlhLXpBLVpdezEsfSk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJWV0aDAgICAgICAgICAgICAlMVxcblwiKS5yZXBsYWNlKC9cXHMqXFwvXFwvLiokL2dtLCAnJykucmVwbGFjZSgvXFxuL2csICcnKS50cmltKCk7IC8vIFByZS1jb21waWxlIG9ubHkgdGhlIGV4YWN0IHJlZ2V4ZXMgYmVjYXVzZSBhZGRpbmcgYSBnbG9iYWwgZmxhZyBtYWtlIHJlZ2V4ZXMgc3RhdGVmdWxcblxuICB2YXIgdjQ2RXhhY3QgPSBuZXcgUmVnRXhwKFwiKD86XlwiICsgdjQgKyBcIiQpfCg/Ol5cIiArIHY2ICsgXCIkKVwiKTtcbiAgdmFyIHY0ZXhhY3QgPSBuZXcgUmVnRXhwKFwiXlwiICsgdjQgKyBcIiRcIik7XG4gIHZhciB2NmV4YWN0ID0gbmV3IFJlZ0V4cChcIl5cIiArIHY2ICsgXCIkXCIpO1xuXG4gIHZhciBpcCA9IGZ1bmN0aW9uIGlwKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gdjQ2RXhhY3QgOiBuZXcgUmVnRXhwKFwiKD86XCIgKyBiKG9wdGlvbnMpICsgdjQgKyBiKG9wdGlvbnMpICsgXCIpfCg/OlwiICsgYihvcHRpb25zKSArIHY2ICsgYihvcHRpb25zKSArIFwiKVwiLCAnZycpO1xuICB9O1xuXG4gIGlwLnY0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gdjRleGFjdCA6IG5ldyBSZWdFeHAoXCJcIiArIGIob3B0aW9ucykgKyB2NCArIGIob3B0aW9ucyksICdnJyk7XG4gIH07XG5cbiAgaXAudjYgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuZXhhY3QgPyB2NmV4YWN0IDogbmV3IFJlZ0V4cChcIlwiICsgYihvcHRpb25zKSArIHY2ICsgYihvcHRpb25zKSwgJ2cnKTtcbiAgfTtcblxuICB2YXIgcHJvdG9jb2wgPSBcIig/Oig/OlthLXpdKzopPy8vKVwiO1xuICB2YXIgYXV0aCA9ICcoPzpcXFxcUysoPzo6XFxcXFMqKT9AKT8nO1xuICB2YXIgaXB2NCA9IGlwLnY0KCkuc291cmNlO1xuICB2YXIgaXB2NiA9IGlwLnY2KCkuc291cmNlO1xuICB2YXIgaG9zdCA9IFwiKD86KD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldWy1fXSopKlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSspXCI7XG4gIHZhciBkb21haW4gPSBcIig/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldLSopKlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSspKlwiO1xuICB2YXIgdGxkID0gXCIoPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmXXsyLH0pKVwiO1xuICB2YXIgcG9ydCA9ICcoPzo6XFxcXGR7Miw1fSk/JztcbiAgdmFyIHBhdGggPSAnKD86Wy8/I11bXlxcXFxzXCJdKik/JztcbiAgdmFyIHJlZ2V4ID0gXCIoPzpcIiArIHByb3RvY29sICsgXCJ8d3d3XFxcXC4pXCIgKyBhdXRoICsgXCIoPzpsb2NhbGhvc3R8XCIgKyBpcHY0ICsgXCJ8XCIgKyBpcHY2ICsgXCJ8XCIgKyBob3N0ICsgZG9tYWluICsgdGxkICsgXCIpXCIgKyBwb3J0ICsgcGF0aDtcbiAgdXJsUmVnID0gbmV3IFJlZ0V4cChcIig/Ol5cIiArIHJlZ2V4ICsgXCIkKVwiLCAnaScpO1xuICByZXR1cm4gdXJsUmVnO1xufSk7XG5cbi8qIGVzbGludCBtYXgtbGVuOjAgKi9cblxudmFyIHBhdHRlcm4kMiA9IHtcbiAgLy8gaHR0cDovL2VtYWlscmVnZXguY29tL1xuICBlbWFpbDogL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XSl8KChbYS16QS1aXFwtMC05XFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXStcXC4pK1thLXpBLVpcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdezIsfSkpJC8sXG4gIC8vIHVybDogbmV3IFJlZ0V4cChcbiAgLy8gICAnXig/IW1haWx0bzopKD86KD86aHR0cHxodHRwc3xmdHApOi8vfC8vKSg/OlxcXFxTKyg/OjpcXFxcUyopP0ApPyg/Oig/Oig/OlsxLTldXFxcXGQ/fDFcXFxcZFxcXFxkfDJbMDFdXFxcXGR8MjJbMC0zXSkoPzpcXFxcLig/OjE/XFxcXGR7MSwyfXwyWzAtNF1cXFxcZHwyNVswLTVdKSl7Mn0oPzpcXFxcLig/OlswLTldXFxcXGQ/fDFcXFxcZFxcXFxkfDJbMC00XVxcXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rLSopKlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSspKD86XFxcXC4oPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0rLSopKlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSspKig/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmZdezIsfSkpKXxsb2NhbGhvc3QpKD86OlxcXFxkezIsNX0pPyg/OigvfFxcXFw/fCMpW15cXFxcc10qKT8kJyxcbiAgLy8gICAnaScsXG4gIC8vICksXG4gIGhleDogL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2lcbn07XG52YXIgdHlwZXMgPSB7XG4gIGludGVnZXI6IGZ1bmN0aW9uIGludGVnZXIodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZXMubnVtYmVyKHZhbHVlKSAmJiBwYXJzZUludCh2YWx1ZSwgMTApID09PSB2YWx1ZTtcbiAgfSxcbiAgXCJmbG9hdFwiOiBmdW5jdGlvbiBmbG9hdCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlcy5udW1iZXIodmFsdWUpICYmICF0eXBlcy5pbnRlZ2VyKHZhbHVlKTtcbiAgfSxcbiAgYXJyYXk6IGZ1bmN0aW9uIGFycmF5KHZhbHVlKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9LFxuICByZWdleHA6IGZ1bmN0aW9uIHJlZ2V4cCh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAhIW5ldyBSZWdFeHAodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIGRhdGU6IGZ1bmN0aW9uIGRhdGUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLmdldFRpbWUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlLmdldE1vbnRoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZS5nZXRZZWFyID09PSAnZnVuY3Rpb24nICYmICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpO1xuICB9LFxuICBudW1iZXI6IGZ1bmN0aW9uIG51bWJlcih2YWx1ZSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgfSxcbiAgb2JqZWN0OiBmdW5jdGlvbiBvYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhdHlwZXMuYXJyYXkodmFsdWUpO1xuICB9LFxuICBtZXRob2Q6IGZ1bmN0aW9uIG1ldGhvZCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG4gIH0sXG4gIGVtYWlsOiBmdW5jdGlvbiBlbWFpbCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8PSAzMjAgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuJDIuZW1haWwpO1xuICB9LFxuICB1cmw6IGZ1bmN0aW9uIHVybCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8PSAyMDQ4ICYmICEhdmFsdWUubWF0Y2goZ2V0VXJsUmVnZXgoKSk7XG4gIH0sXG4gIGhleDogZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgISF2YWx1ZS5tYXRjaChwYXR0ZXJuJDIuaGV4KTtcbiAgfVxufTtcblxudmFyIHR5cGUkMSA9IGZ1bmN0aW9uIHR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmIChydWxlLnJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXF1aXJlZCQxKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGN1c3RvbSA9IFsnaW50ZWdlcicsICdmbG9hdCcsICdhcnJheScsICdyZWdleHAnLCAnb2JqZWN0JywgJ21ldGhvZCcsICdlbWFpbCcsICdudW1iZXInLCAnZGF0ZScsICd1cmwnLCAnaGV4J107XG4gIHZhciBydWxlVHlwZSA9IHJ1bGUudHlwZTtcblxuICBpZiAoY3VzdG9tLmluZGV4T2YocnVsZVR5cGUpID4gLTEpIHtcbiAgICBpZiAoIXR5cGVzW3J1bGVUeXBlXSh2YWx1ZSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICAgIH0gLy8gc3RyYWlnaHQgdHlwZW9mIGNoZWNrXG5cbiAgfSBlbHNlIGlmIChydWxlVHlwZSAmJiB0eXBlb2YgdmFsdWUgIT09IHJ1bGUudHlwZSkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzLnR5cGVzW3J1bGVUeXBlXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGUudHlwZSkpO1xuICB9XG59O1xuXG52YXIgcmFuZ2UgPSBmdW5jdGlvbiByYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgdmFyIGxlbiA9IHR5cGVvZiBydWxlLmxlbiA9PT0gJ251bWJlcic7XG4gIHZhciBtaW4gPSB0eXBlb2YgcnVsZS5taW4gPT09ICdudW1iZXInO1xuICB2YXIgbWF4ID0gdHlwZW9mIHJ1bGUubWF4ID09PSAnbnVtYmVyJzsgLy8g5q2j5YiZ5Yy56YWN56CB54K56IyD5Zu05LuOVSswMTAwMDDkuIDnm7TliLBVKzEwRkZGRueahOaWh+Wtl++8iOihpeWFheW5s+mdolN1cHBsZW1lbnRhcnkgUGxhbmXvvIlcblxuICB2YXIgc3BSZWdleHAgPSAvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXS9nO1xuICB2YXIgdmFsID0gdmFsdWU7XG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgdmFyIHN0ciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gIHZhciBhcnIgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuICBpZiAobnVtKSB7XG4gICAga2V5ID0gJ251bWJlcic7XG4gIH0gZWxzZSBpZiAoc3RyKSB7XG4gICAga2V5ID0gJ3N0cmluZyc7XG4gIH0gZWxzZSBpZiAoYXJyKSB7XG4gICAga2V5ID0gJ2FycmF5JztcbiAgfSAvLyBpZiB0aGUgdmFsdWUgaXMgbm90IG9mIGEgc3VwcG9ydGVkIHR5cGUgZm9yIHJhbmdlIHZhbGlkYXRpb25cbiAgLy8gdGhlIHZhbGlkYXRpb24gcnVsZSBydWxlIHNob3VsZCB1c2UgdGhlXG4gIC8vIHR5cGUgcHJvcGVydHkgdG8gYWxzbyB0ZXN0IGZvciBhIHBhcnRpY3VsYXIgdHlwZVxuXG5cbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYXJyKSB7XG4gICAgdmFsID0gdmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgaWYgKHN0cikge1xuICAgIC8vIOWkhOeQhueggeeCueWkp+S6jlUrMDEwMDAw55qE5paH5a2XbGVuZ3Ro5bGe5oCn5LiN5YeG56Gu55qEYnVn77yM5aaCXCLwoK638KCut/CgrrdcIi5sZW5naHQgIT09IDNcbiAgICB2YWwgPSB2YWx1ZS5yZXBsYWNlKHNwUmVnZXhwLCAnXycpLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChsZW4pIHtcbiAgICBpZiAodmFsICE9PSBydWxlLmxlbikge1xuICAgICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5sZW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLmxlbikpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChtaW4gJiYgIW1heCAmJiB2YWwgPCBydWxlLm1pbikge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW2tleV0ubWluLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4pKTtcbiAgfSBlbHNlIGlmIChtYXggJiYgIW1pbiAmJiB2YWwgPiBydWxlLm1heCkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW2tleV0ubWF4LCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5tYXgpKTtcbiAgfSBlbHNlIGlmIChtaW4gJiYgbWF4ICYmICh2YWwgPCBydWxlLm1pbiB8fCB2YWwgPiBydWxlLm1heCkpIHtcbiAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLnJhbmdlLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS5taW4sIHJ1bGUubWF4KSk7XG4gIH1cbn07XG5cbnZhciBFTlVNJDEgPSAnZW51bSc7XG5cbnZhciBlbnVtZXJhYmxlJDEgPSBmdW5jdGlvbiBlbnVtZXJhYmxlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICBydWxlW0VOVU0kMV0gPSBBcnJheS5pc0FycmF5KHJ1bGVbRU5VTSQxXSkgPyBydWxlW0VOVU0kMV0gOiBbXTtcblxuICBpZiAocnVsZVtFTlVNJDFdLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW0VOVU0kMV0sIHJ1bGUuZnVsbEZpZWxkLCBydWxlW0VOVU0kMV0uam9pbignLCAnKSkpO1xuICB9XG59O1xuXG52YXIgcGF0dGVybiQxID0gZnVuY3Rpb24gcGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKHJ1bGUucGF0dGVybikge1xuICAgIGlmIChydWxlLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIGlmIGEgUmVnRXhwIGluc3RhbmNlIGlzIHBhc3NlZCwgcmVzZXQgYGxhc3RJbmRleGAgaW4gY2FzZSBpdHMgYGdsb2JhbGBcbiAgICAgIC8vIGZsYWcgaXMgYWNjaWRlbnRhbGx5IHNldCB0byBgdHJ1ZWAsIHdoaWNoIGluIGEgdmFsaWRhdGlvbiBzY2VuYXJpb1xuICAgICAgLy8gaXMgbm90IG5lY2Vzc2FyeSBhbmQgdGhlIHJlc3VsdCBtaWdodCBiZSBtaXNsZWFkaW5nXG4gICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcblxuICAgICAgaWYgKCFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucGF0dGVybi5taXNtYXRjaCwgcnVsZS5mdWxsRmllbGQsIHZhbHVlLCBydWxlLnBhdHRlcm4pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBydWxlLnBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgX3BhdHRlcm4gPSBuZXcgUmVnRXhwKHJ1bGUucGF0dGVybik7XG5cbiAgICAgIGlmICghX3BhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucGF0dGVybi5taXNtYXRjaCwgcnVsZS5mdWxsRmllbGQsIHZhbHVlLCBydWxlLnBhdHRlcm4pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBydWxlcyA9IHtcbiAgcmVxdWlyZWQ6IHJlcXVpcmVkJDEsXG4gIHdoaXRlc3BhY2U6IHdoaXRlc3BhY2UsXG4gIHR5cGU6IHR5cGUkMSxcbiAgcmFuZ2U6IHJhbmdlLFxuICBcImVudW1cIjogZW51bWVyYWJsZSQxLFxuICBwYXR0ZXJuOiBwYXR0ZXJuJDFcbn07XG5cbnZhciBzdHJpbmcgPSBmdW5jdGlvbiBzdHJpbmcocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlLCAnc3RyaW5nJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgJ3N0cmluZycpO1xuXG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUsICdzdHJpbmcnKSkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnBhdHRlcm4ocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHJ1bGUud2hpdGVzcGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgICBydWxlcy53aGl0ZXNwYWNlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBtZXRob2QgPSBmdW5jdGlvbiBtZXRob2QocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBudW1iZXIgPSBmdW5jdGlvbiBudW1iZXIocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgX2Jvb2xlYW4gPSBmdW5jdGlvbiBfYm9vbGVhbihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIHJlZ2V4cCA9IGZ1bmN0aW9uIHJlZ2V4cChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBpbnRlZ2VyID0gZnVuY3Rpb24gaW50ZWdlcihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBmbG9hdEZuID0gZnVuY3Rpb24gZmxvYXRGbihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBhcnJheSA9IGZ1bmN0aW9uIGFycmF5KHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCAnYXJyYXknKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgb2JqZWN0ID0gZnVuY3Rpb24gb2JqZWN0KHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgRU5VTSA9ICdlbnVtJztcblxudmFyIGVudW1lcmFibGUgPSBmdW5jdGlvbiBlbnVtZXJhYmxlKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXNbRU5VTV0ocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIHBhdHRlcm4gPSBmdW5jdGlvbiBwYXR0ZXJuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFpc0VtcHR5VmFsdWUodmFsdWUsICdzdHJpbmcnKSkge1xuICAgICAgcnVsZXMucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgZGF0ZSA9IGZ1bmN0aW9uIGRhdGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgLy8gY29uc29sZS5sb2coJ2ludGVnZXIgcnVsZSBjYWxsZWQgJWonLCBydWxlKTtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTsgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRlIG9uICVzIHZhbHVlJywgdmFsdWUpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUsICdkYXRlJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ2RhdGUnKSkge1xuICAgICAgdmFyIGRhdGVPYmplY3Q7XG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcnVsZXMudHlwZShydWxlLCBkYXRlT2JqZWN0LCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICAgIGlmIChkYXRlT2JqZWN0KSB7XG4gICAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIGRhdGVPYmplY3QuZ2V0VGltZSgpLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciByZXF1aXJlZCA9IGZ1bmN0aW9uIHJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHR5cGUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdhcnJheScgOiB0eXBlb2YgdmFsdWU7XG4gIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucywgdHlwZSk7XG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgdHlwZSA9IGZ1bmN0aW9uIHR5cGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIHJ1bGVUeXBlID0gcnVsZS50eXBlO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUsIHJ1bGVUeXBlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCBydWxlVHlwZSk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgcnVsZVR5cGUpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBhbnkgPSBmdW5jdGlvbiBhbnkocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgdmFsaWRhdG9ycyA9IHtcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIG1ldGhvZDogbWV0aG9kLFxuICBudW1iZXI6IG51bWJlcixcbiAgXCJib29sZWFuXCI6IF9ib29sZWFuLFxuICByZWdleHA6IHJlZ2V4cCxcbiAgaW50ZWdlcjogaW50ZWdlcixcbiAgXCJmbG9hdFwiOiBmbG9hdEZuLFxuICBhcnJheTogYXJyYXksXG4gIG9iamVjdDogb2JqZWN0LFxuICBcImVudW1cIjogZW51bWVyYWJsZSxcbiAgcGF0dGVybjogcGF0dGVybixcbiAgZGF0ZTogZGF0ZSxcbiAgdXJsOiB0eXBlLFxuICBoZXg6IHR5cGUsXG4gIGVtYWlsOiB0eXBlLFxuICByZXF1aXJlZDogcmVxdWlyZWQsXG4gIGFueTogYW55XG59O1xuXG5mdW5jdGlvbiBuZXdNZXNzYWdlcygpIHtcbiAgcmV0dXJuIHtcbiAgICBcImRlZmF1bHRcIjogJ1ZhbGlkYXRpb24gZXJyb3Igb24gZmllbGQgJXMnLFxuICAgIHJlcXVpcmVkOiAnJXMgaXMgcmVxdWlyZWQnLFxuICAgIFwiZW51bVwiOiAnJXMgbXVzdCBiZSBvbmUgb2YgJXMnLFxuICAgIHdoaXRlc3BhY2U6ICclcyBjYW5ub3QgYmUgZW1wdHknLFxuICAgIGRhdGU6IHtcbiAgICAgIGZvcm1hdDogJyVzIGRhdGUgJXMgaXMgaW52YWxpZCBmb3IgZm9ybWF0ICVzJyxcbiAgICAgIHBhcnNlOiAnJXMgZGF0ZSBjb3VsZCBub3QgYmUgcGFyc2VkLCAlcyBpcyBpbnZhbGlkICcsXG4gICAgICBpbnZhbGlkOiAnJXMgZGF0ZSAlcyBpcyBpbnZhbGlkJ1xuICAgIH0sXG4gICAgdHlwZXM6IHtcbiAgICAgIHN0cmluZzogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIG1ldGhvZDogJyVzIGlzIG5vdCBhICVzIChmdW5jdGlvbiknLFxuICAgICAgYXJyYXk6ICclcyBpcyBub3QgYW4gJXMnLFxuICAgICAgb2JqZWN0OiAnJXMgaXMgbm90IGFuICVzJyxcbiAgICAgIG51bWJlcjogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIGRhdGU6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICBcImJvb2xlYW5cIjogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIGludGVnZXI6ICclcyBpcyBub3QgYW4gJXMnLFxuICAgICAgXCJmbG9hdFwiOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgcmVnZXhwOiAnJXMgaXMgbm90IGEgdmFsaWQgJXMnLFxuICAgICAgZW1haWw6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICB1cmw6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICBoZXg6ICclcyBpcyBub3QgYSB2YWxpZCAlcydcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgbGVuOiAnJXMgbXVzdCBiZSBleGFjdGx5ICVzIGNoYXJhY3RlcnMnLFxuICAgICAgbWluOiAnJXMgbXVzdCBiZSBhdCBsZWFzdCAlcyBjaGFyYWN0ZXJzJyxcbiAgICAgIG1heDogJyVzIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlcyBjaGFyYWN0ZXJzJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcyBjaGFyYWN0ZXJzJ1xuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICBsZW46ICclcyBtdXN0IGVxdWFsICVzJyxcbiAgICAgIG1pbjogJyVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMnLFxuICAgICAgbWF4OiAnJXMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAlcycsXG4gICAgICByYW5nZTogJyVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMnXG4gICAgfSxcbiAgICBhcnJheToge1xuICAgICAgbGVuOiAnJXMgbXVzdCBiZSBleGFjdGx5ICVzIGluIGxlbmd0aCcsXG4gICAgICBtaW46ICclcyBjYW5ub3QgYmUgbGVzcyB0aGFuICVzIGluIGxlbmd0aCcsXG4gICAgICBtYXg6ICclcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVzIGluIGxlbmd0aCcsXG4gICAgICByYW5nZTogJyVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMgaW4gbGVuZ3RoJ1xuICAgIH0sXG4gICAgcGF0dGVybjoge1xuICAgICAgbWlzbWF0Y2g6ICclcyB2YWx1ZSAlcyBkb2VzIG5vdCBtYXRjaCBwYXR0ZXJuICVzJ1xuICAgIH0sXG4gICAgY2xvbmU6IGZ1bmN0aW9uIGNsb25lKCkge1xuICAgICAgdmFyIGNsb25lZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcykpO1xuICAgICAgY2xvbmVkLmNsb25lID0gdGhpcy5jbG9uZTtcbiAgICAgIHJldHVybiBjbG9uZWQ7XG4gICAgfVxuICB9O1xufVxudmFyIG1lc3NhZ2VzID0gbmV3TWVzc2FnZXMoKTtcblxuLyoqXG4gKiAgRW5jYXBzdWxhdGVzIGEgdmFsaWRhdGlvbiBzY2hlbWEuXG4gKlxuICogIEBwYXJhbSBkZXNjcmlwdG9yIEFuIG9iamVjdCBkZWNsYXJpbmcgdmFsaWRhdGlvbiBydWxlc1xuICogIGZvciB0aGlzIHNjaGVtYS5cbiAqL1xuXG52YXIgU2NoZW1hID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PSBTdGF0aWMgPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT0gSW5zdGFuY2UgPT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIFNjaGVtYShkZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5ydWxlcyA9IG51bGw7XG4gICAgdGhpcy5fbWVzc2FnZXMgPSBtZXNzYWdlcztcbiAgICB0aGlzLmRlZmluZShkZXNjcmlwdG9yKTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTY2hlbWEucHJvdG90eXBlO1xuXG4gIF9wcm90by5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUocnVsZXMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFydWxlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uZmlndXJlIGEgc2NoZW1hIHdpdGggbm8gcnVsZXMnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJ1bGVzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHJ1bGVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRoaXMucnVsZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhydWxlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGl0ZW0gPSBydWxlc1tuYW1lXTtcbiAgICAgIF90aGlzLnJ1bGVzW25hbWVdID0gQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV07XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLm1lc3NhZ2VzID0gZnVuY3Rpb24gbWVzc2FnZXMoX21lc3NhZ2VzKSB7XG4gICAgaWYgKF9tZXNzYWdlcykge1xuICAgICAgdGhpcy5fbWVzc2FnZXMgPSBkZWVwTWVyZ2UobmV3TWVzc2FnZXMoKSwgX21lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZXM7XG4gIH07XG5cbiAgX3Byb3RvLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoc291cmNlXywgbywgb2MpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmIChvID09PSB2b2lkIDApIHtcbiAgICAgIG8gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAob2MgPT09IHZvaWQgMCkge1xuICAgICAgb2MgPSBmdW5jdGlvbiBvYygpIHt9O1xuICAgIH1cblxuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VfO1xuICAgIHZhciBvcHRpb25zID0gbztcbiAgICB2YXIgY2FsbGJhY2sgPSBvYztcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5ydWxlcyB8fCBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcGxldGUocmVzdWx0cykge1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIGZpZWxkcyA9IHt9O1xuXG4gICAgICBmdW5jdGlvbiBhZGQoZSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgICAgIHZhciBfZXJyb3JzO1xuXG4gICAgICAgICAgZXJyb3JzID0gKF9lcnJvcnMgPSBlcnJvcnMpLmNvbmNhdC5hcHBseShfZXJyb3JzLCBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYWRkKHJlc3VsdHNbaV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgc291cmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkcyA9IGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpO1xuICAgICAgICBjYWxsYmFjayhlcnJvcnMsIGZpZWxkcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWVzc2FnZXMpIHtcbiAgICAgIHZhciBtZXNzYWdlcyQxID0gdGhpcy5tZXNzYWdlcygpO1xuXG4gICAgICBpZiAobWVzc2FnZXMkMSA9PT0gbWVzc2FnZXMpIHtcbiAgICAgICAgbWVzc2FnZXMkMSA9IG5ld01lc3NhZ2VzKCk7XG4gICAgICB9XG5cbiAgICAgIGRlZXBNZXJnZShtZXNzYWdlcyQxLCBvcHRpb25zLm1lc3NhZ2VzKTtcbiAgICAgIG9wdGlvbnMubWVzc2FnZXMgPSBtZXNzYWdlcyQxO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcygpO1xuICAgIH1cblxuICAgIHZhciBzZXJpZXMgPSB7fTtcbiAgICB2YXIga2V5cyA9IG9wdGlvbnMua2V5cyB8fCBPYmplY3Qua2V5cyh0aGlzLnJ1bGVzKTtcbiAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKHopIHtcbiAgICAgIHZhciBhcnIgPSBfdGhpczIucnVsZXNbel07XG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vbel07XG4gICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgICB2YXIgcnVsZSA9IHI7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGlmIChzb3VyY2UgPT09IHNvdXJjZV8pIHtcbiAgICAgICAgICAgIHNvdXJjZSA9IF9leHRlbmRzKHt9LCBzb3VyY2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhbHVlID0gc291cmNlW3pdID0gcnVsZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcnVsZSA9IHtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogcnVsZVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcnVsZSA9IF9leHRlbmRzKHt9LCBydWxlKTtcbiAgICAgICAgfSAvLyBGaWxsIHZhbGlkYXRvci4gU2tpcCBpZiBub3RoaW5nIG5lZWQgdG8gdmFsaWRhdGVcblxuXG4gICAgICAgIHJ1bGUudmFsaWRhdG9yID0gX3RoaXMyLmdldFZhbGlkYXRpb25NZXRob2QocnVsZSk7XG5cbiAgICAgICAgaWYgKCFydWxlLnZhbGlkYXRvcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bGUuZmllbGQgPSB6O1xuICAgICAgICBydWxlLmZ1bGxGaWVsZCA9IHJ1bGUuZnVsbEZpZWxkIHx8IHo7XG4gICAgICAgIHJ1bGUudHlwZSA9IF90aGlzMi5nZXRUeXBlKHJ1bGUpO1xuICAgICAgICBzZXJpZXNbel0gPSBzZXJpZXNbel0gfHwgW107XG4gICAgICAgIHNlcmllc1t6XS5wdXNoKHtcbiAgICAgICAgICBydWxlOiBydWxlLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICBmaWVsZDogelxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHZhciBlcnJvckZpZWxkcyA9IHt9O1xuICAgIHJldHVybiBhc3luY01hcChzZXJpZXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChkYXRhLCBkb0l0KSB7XG4gICAgICB2YXIgcnVsZSA9IGRhdGEucnVsZTtcbiAgICAgIHZhciBkZWVwID0gKHJ1bGUudHlwZSA9PT0gJ29iamVjdCcgfHwgcnVsZS50eXBlID09PSAnYXJyYXknKSAmJiAodHlwZW9mIHJ1bGUuZmllbGRzID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcnVsZS5kZWZhdWx0RmllbGQgPT09ICdvYmplY3QnKTtcbiAgICAgIGRlZXAgPSBkZWVwICYmIChydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIGRhdGEudmFsdWUpO1xuICAgICAgcnVsZS5maWVsZCA9IGRhdGEuZmllbGQ7XG5cbiAgICAgIGZ1bmN0aW9uIGFkZEZ1bGxGaWVsZChrZXksIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHNjaGVtYSwge1xuICAgICAgICAgIGZ1bGxGaWVsZDogcnVsZS5mdWxsRmllbGQgKyBcIi5cIiArIGtleSxcbiAgICAgICAgICBmdWxsRmllbGRzOiBydWxlLmZ1bGxGaWVsZHMgPyBbXS5jb25jYXQocnVsZS5mdWxsRmllbGRzLCBba2V5XSkgOiBba2V5XVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2IoZSkge1xuICAgICAgICBpZiAoZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGVycm9yTGlzdCA9IEFycmF5LmlzQXJyYXkoZSkgPyBlIDogW2VdO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc1dhcm5pbmcgJiYgZXJyb3JMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIFNjaGVtYS53YXJuaW5nKCdhc3luYy12YWxpZGF0b3I6JywgZXJyb3JMaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvckxpc3QubGVuZ3RoICYmIHJ1bGUubWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXJyb3JMaXN0ID0gW10uY29uY2F0KHJ1bGUubWVzc2FnZSk7XG4gICAgICAgIH0gLy8gRmlsbCBlcnJvciBpbmZvXG5cblxuICAgICAgICB2YXIgZmlsbGVkRXJyb3JzID0gZXJyb3JMaXN0Lm1hcChjb21wbGVtZW50RXJyb3IocnVsZSwgc291cmNlKSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZmlyc3QgJiYgZmlsbGVkRXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIGVycm9yRmllbGRzW3J1bGUuZmllbGRdID0gMTtcbiAgICAgICAgICByZXR1cm4gZG9JdChmaWxsZWRFcnJvcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZWVwKSB7XG4gICAgICAgICAgZG9JdChmaWxsZWRFcnJvcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHJ1bGUgaXMgcmVxdWlyZWQgYnV0IHRoZSB0YXJnZXQgb2JqZWN0XG4gICAgICAgICAgLy8gZG9lcyBub3QgZXhpc3QgZmFpbCBhdCB0aGUgcnVsZSBsZXZlbCBhbmQgZG9uJ3RcbiAgICAgICAgICAvLyBnbyBkZWVwZXJcbiAgICAgICAgICBpZiAocnVsZS5yZXF1aXJlZCAmJiAhZGF0YS52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHJ1bGUubWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGZpbGxlZEVycm9ycyA9IFtdLmNvbmNhdChydWxlLm1lc3NhZ2UpLm1hcChjb21wbGVtZW50RXJyb3IocnVsZSwgc291cmNlKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgZmlsbGVkRXJyb3JzID0gW29wdGlvbnMuZXJyb3IocnVsZSwgZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZmllbGQpKV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkb0l0KGZpbGxlZEVycm9ycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGZpZWxkc1NjaGVtYSA9IHt9O1xuXG4gICAgICAgICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhLnZhbHVlKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICBmaWVsZHNTY2hlbWFba2V5XSA9IHJ1bGUuZGVmYXVsdEZpZWxkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRzU2NoZW1hID0gX2V4dGVuZHMoe30sIGZpZWxkc1NjaGVtYSwgZGF0YS5ydWxlLmZpZWxkcyk7XG4gICAgICAgICAgdmFyIHBhcmVkRmllbGRzU2NoZW1hID0ge307XG4gICAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzU2NoZW1hKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICAgICAgdmFyIGZpZWxkU2NoZW1hID0gZmllbGRzU2NoZW1hW2ZpZWxkXTtcbiAgICAgICAgICAgIHZhciBmaWVsZFNjaGVtYUxpc3QgPSBBcnJheS5pc0FycmF5KGZpZWxkU2NoZW1hKSA/IGZpZWxkU2NoZW1hIDogW2ZpZWxkU2NoZW1hXTtcbiAgICAgICAgICAgIHBhcmVkRmllbGRzU2NoZW1hW2ZpZWxkXSA9IGZpZWxkU2NoZW1hTGlzdC5tYXAoYWRkRnVsbEZpZWxkLmJpbmQobnVsbCwgZmllbGQpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgc2NoZW1hID0gbmV3IFNjaGVtYShwYXJlZEZpZWxkc1NjaGVtYSk7XG4gICAgICAgICAgc2NoZW1hLm1lc3NhZ2VzKG9wdGlvbnMubWVzc2FnZXMpO1xuXG4gICAgICAgICAgaWYgKGRhdGEucnVsZS5vcHRpb25zKSB7XG4gICAgICAgICAgICBkYXRhLnJ1bGUub3B0aW9ucy5tZXNzYWdlcyA9IG9wdGlvbnMubWVzc2FnZXM7XG4gICAgICAgICAgICBkYXRhLnJ1bGUub3B0aW9ucy5lcnJvciA9IG9wdGlvbnMuZXJyb3I7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2NoZW1hLnZhbGlkYXRlKGRhdGEudmFsdWUsIGRhdGEucnVsZS5vcHRpb25zIHx8IG9wdGlvbnMsIGZ1bmN0aW9uIChlcnJzKSB7XG4gICAgICAgICAgICB2YXIgZmluYWxFcnJvcnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKGZpbGxlZEVycm9ycyAmJiBmaWxsZWRFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGZpbmFsRXJyb3JzLnB1c2guYXBwbHkoZmluYWxFcnJvcnMsIGZpbGxlZEVycm9ycyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlcnJzICYmIGVycnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGZpbmFsRXJyb3JzLnB1c2guYXBwbHkoZmluYWxFcnJvcnMsIGVycnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkb0l0KGZpbmFsRXJyb3JzLmxlbmd0aCA/IGZpbmFsRXJyb3JzIDogbnVsbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJlcztcblxuICAgICAgaWYgKHJ1bGUuYXN5bmNWYWxpZGF0b3IpIHtcbiAgICAgICAgcmVzID0gcnVsZS5hc3luY1ZhbGlkYXRvcihydWxlLCBkYXRhLnZhbHVlLCBjYiwgZGF0YS5zb3VyY2UsIG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmIChydWxlLnZhbGlkYXRvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcyA9IHJ1bGUudmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvciA9PSBudWxsID8gdm9pZCAwIDogY29uc29sZS5lcnJvcihlcnJvcik7IC8vIHJldGhyb3cgdG8gcmVwb3J0IGVycm9yXG5cbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NWYWxpZGF0b3JFcnJvcikge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzID09PSB0cnVlKSB7XG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgY2IodHlwZW9mIHJ1bGUubWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IHJ1bGUubWVzc2FnZShydWxlLmZ1bGxGaWVsZCB8fCBydWxlLmZpZWxkKSA6IHJ1bGUubWVzc2FnZSB8fCAocnVsZS5mdWxsRmllbGQgfHwgcnVsZS5maWVsZCkgKyBcIiBmYWlsc1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNiKHJlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBjYihyZXMubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgY29tcGxldGUocmVzdWx0cyk7XG4gICAgfSwgc291cmNlKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VHlwZSA9IGZ1bmN0aW9uIGdldFR5cGUocnVsZSkge1xuICAgIGlmIChydWxlLnR5cGUgPT09IHVuZGVmaW5lZCAmJiBydWxlLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJ1bGUudHlwZSA9ICdwYXR0ZXJuJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nICYmIHJ1bGUudHlwZSAmJiAhdmFsaWRhdG9ycy5oYXNPd25Qcm9wZXJ0eShydWxlLnR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0KCdVbmtub3duIHJ1bGUgdHlwZSAlcycsIHJ1bGUudHlwZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBydWxlLnR5cGUgfHwgJ3N0cmluZyc7XG4gIH07XG5cbiAgX3Byb3RvLmdldFZhbGlkYXRpb25NZXRob2QgPSBmdW5jdGlvbiBnZXRWYWxpZGF0aW9uTWV0aG9kKHJ1bGUpIHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcnVsZS52YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhydWxlKTtcbiAgICB2YXIgbWVzc2FnZUluZGV4ID0ga2V5cy5pbmRleE9mKCdtZXNzYWdlJyk7XG5cbiAgICBpZiAobWVzc2FnZUluZGV4ICE9PSAtMSkge1xuICAgICAga2V5cy5zcGxpY2UobWVzc2FnZUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgcmV0dXJuIHZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnNbdGhpcy5nZXRUeXBlKHJ1bGUpXSB8fCB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIFNjaGVtYTtcbn0oKTtcblxuU2NoZW1hLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgdmFsaWRhdG9yKSB7XG4gIGlmICh0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVnaXN0ZXIgYSB2YWxpZGF0b3IgYnkgdHlwZSwgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB2YWxpZGF0b3JzW3R5cGVdID0gdmFsaWRhdG9yO1xufTtcblxuU2NoZW1hLndhcm5pbmcgPSB3YXJuaW5nO1xuU2NoZW1hLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG5TY2hlbWEudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XG5cbmV4cG9ydCB7IFNjaGVtYSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGVcIj5cclxuICAgIDxkaXYgdi1pZj1cIiFlZGl0aW5nIHx8IGRpc2FibGVkXCIgY2xhc3M9XCJmcy1lZGl0YWJsZS1pbm5lciBmcy1lZGl0YWJsZS1wb2ludGVyXCIgdi1iaW5kPVwiYWN0aXZlVHJpZ2dlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtaW5wdXRcIj5cclxuICAgICAgICA8ZGl2IHYtaWY9XCJkaXJ0eVwiIGNsYXNzPVwiZnMtZWRpdGFibGUtZGlydHlcIiAvPlxyXG4gICAgICAgIDxzbG90Pjwvc2xvdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgdi1pZj1cInRyaWdnZXIgJiYgIWRpc2FibGVkXCIgY2xhc3M9XCJmcy1lZGl0YWJsZS1hY3Rpb24gZnMtZWRpdGFibGUtaWNvblwiPlxyXG4gICAgICAgIDxmcy1pY29uIDppY29uPVwidWkuaWNvbnMuZWRpdFwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IHYtZWxzZSBjbGFzcz1cImZzLWVkaXRhYmxlLWlubmVyXCIgOmNsYXNzPVwieyAnZnMtdmFsaWRhdGUtZXJyb3InOiBoYXNFcnJvcigpIH1cIiBAa2V5ZG93bj1cIm9uS2V5ZG93blwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtaW5wdXRcIj5cclxuICAgICAgICA8c2xvdCBuYW1lPVwiZWRpdFwiPjwvc2xvdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1lZGl0YWJsZS1hY3Rpb25cIj5cclxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnRvb2x0aXAubmFtZVwiPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC5jb250ZW50XT5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1pY29uXCI+XHJcbiAgICAgICAgICAgICAge3sgZ2V0VmFsaWRhdGVFcnJvck1lc3NhZ2UoKSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC50cmlnZ2VyXT5cclxuICAgICAgICAgICAgPGZzLWljb24gOmNsYXNzPVwieyBoaWRkZW46ICFoYXNFcnJvcigpLCAnZXJyb3ItaWNvbic6IHRydWUgfVwiIHNpemU9XCJtaW5pXCIgOmljb249XCJ1aS5pY29ucy5pbmZvXCIgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzaG93U3VibWl0QWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZnMtaWNvbiB2LWlmPVwibG9hZGluZ1wiIHNpemU9XCJtaW5pXCIgOnNwaW49XCJ0cnVlXCIgOmljb249XCJ1aS5pY29ucy5yZWZyZXNoXCIgLz5cclxuICAgICAgICAgIDxmcy1pY29uIHYtZWxzZSBzaXplPVwibWluaVwiIDppY29uPVwidWkuaWNvbnMuY2hlY2tcIiBAY2xpY2s9XCJkb1N1Ym1pdFwiIC8+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICA8ZnMtaWNvbiB2LWlmPVwic2hvd0NhbmNlbEFjdGlvblwiIDpjbGFzcz1cInsgaGlkZGVuOiBsb2FkaW5nIH1cIiBzaXplPVwibWluaVwiIDppY29uPVwidWkuaWNvbnMuY2xvc2VcIiBAY2xpY2s9XCJkb0NhbmNlbFwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCJAZmFzdC1jcnVkL3VpLWludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcclxuXHJcbnR5cGUgRnNFZGl0YWJsZVByb3BzID0ge1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBlZGl0aW5nOiBib29sZWFuO1xyXG4gIGRpcnR5PzogYm9vbGVhbjtcclxuICB0cmlnZ2VyPzogXCJvbkNsaWNrXCIgfCBcIm9uRGJDbGlja1wiIHwgZmFsc2U7XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgc2hvd0FjdGlvbj86IGJvb2xlYW4gfCB7IHN1Ym1pdD86IGJvb2xlYW47IGNhbmNlbD86IGJvb2xlYW4gfTtcclxuICBzdWJtaXRPbkVudGVyPzogYm9vbGVhbjtcclxuICB2YWxpZGF0ZUVycm9ycz86IGFueVtdO1xyXG59O1xyXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxGc0VkaXRhYmxlUHJvcHM+KCksIHtcclxuICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgZWRpdGluZzogZmFsc2UsXHJcbiAgZGlydHk6IGZhbHNlLFxyXG4gIGxvYWRpbmc6IGZhbHNlLFxyXG4gIHNob3dBY3Rpb246IHRydWUsXHJcbiAgc3VibWl0T25FbnRlcjogZmFsc2UsXHJcbiAgdHJpZ2dlcjogXCJvbkNsaWNrXCIsXHJcbiAgdmFsaWRhdGVFcnJvcnM6ICgpID0+IHtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcbn0pO1xyXG5cclxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuY29uc3QgZW1pdHMgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6ZWRpdGluZ1wiLCBcInN1Ym1pdFwiLCBcImNhbmNlbFwiXSk7XHJcbmNvbnN0IGFjdGl2ZVRyaWdnZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgaWYgKCFwcm9wcy50cmlnZ2VyKSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICBbcHJvcHMudHJpZ2dlcl06ICgpID0+IHtcclxuICAgICAgZW1pdHMoXCJ1cGRhdGU6ZWRpdGluZ1wiLCB0cnVlKTtcclxuICAgIH1cclxuICB9O1xyXG59KTtcclxuY29uc3Qgc2hvd1N1Ym1pdEFjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gcHJvcHMuc2hvd0FjdGlvbiAhPT0gZmFsc2UgJiYgKHR5cGVvZiBwcm9wcy5zaG93QWN0aW9uICE9PSBcIm9iamVjdFwiIHx8IHByb3BzLnNob3dBY3Rpb24uc3VibWl0ICE9PSBmYWxzZSk7XHJcbn0pO1xyXG5jb25zdCBzaG93Q2FuY2VsQWN0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiBwcm9wcy5zaG93QWN0aW9uICE9PSBmYWxzZSAmJiAodHlwZW9mIHByb3BzLnNob3dBY3Rpb24gIT09IFwib2JqZWN0XCIgfHwgcHJvcHMuc2hvd0FjdGlvbi5jYW5jZWwgIT09IGZhbHNlKTtcclxufSk7XHJcbmZ1bmN0aW9uIGRvU3VibWl0KCkge1xyXG4gIGVtaXRzKFwic3VibWl0XCIpO1xyXG59XHJcbmZ1bmN0aW9uIGRvQ2FuY2VsKCkge1xyXG4gIGVtaXRzKFwiY2FuY2VsXCIpO1xyXG59XHJcbmZ1bmN0aW9uIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gIGlmIChcclxuICAgICFwcm9wcy5zdWJtaXRPbkVudGVyIHx8XHJcbiAgICBwcm9wcy5sb2FkaW5nIHx8XHJcbiAgICBldmVudC5rZXkgIT09IFwiRW50ZXJcIiB8fFxyXG4gICAgZXZlbnQuaXNDb21wb3NpbmcgfHxcclxuICAgIGV2ZW50LmFsdEtleSB8fFxyXG4gICAgZXZlbnQuY3RybEtleSB8fFxyXG4gICAgZXZlbnQubWV0YUtleSB8fFxyXG4gICAgZXZlbnQuc2hpZnRLZXkgfHxcclxuICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnRcclxuICApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICBkb1N1Ym1pdCgpO1xyXG59XHJcbmZ1bmN0aW9uIGhhc0Vycm9yKCkge1xyXG4gIHJldHVybiBwcm9wcy52YWxpZGF0ZUVycm9ycz8ubGVuZ3RoID4gMDtcclxufVxyXG5mdW5jdGlvbiBnZXRWYWxpZGF0ZUVycm9yTWVzc2FnZSgpIHtcclxuICBpZiAocHJvcHMudmFsaWRhdGVFcnJvcnM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICByZXR1cm4gcHJvcHMudmFsaWRhdGVFcnJvcnM/Lm1hcCgoaXRlbSkgPT4gaXRlbS5tZXNzYWdlKS5qb2luKFwiLFwiKTtcclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtZWRpdGFibGUge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAuZnMtZWRpdGFibGUtcG9pbnRlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG4gIC5mcy1lZGl0YWJsZS1pbm5lciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWluLWhlaWdodDogMjNweDtcclxuICAgIC5mcy1lZGl0YWJsZS1kaXJ0eSB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xyXG4gICAgICB3aWR0aDogNXB4O1xyXG4gICAgICBoZWlnaHQ6IDVweDtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC01cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJlZDtcclxuICAgIH1cclxuICAgIC5mcy1lZGl0YWJsZS1pbnB1dCB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcbiAgICAuZnMtZWRpdGFibGUtYWN0aW9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgIGksXHJcbiAgICAgIC5hbnRpY29uIHtcclxuICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgfVxyXG4gICAgICAuaGlkZGVuIHtcclxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZnMtZWRpdGFibGUtaWNvbiB7XHJcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIH1cclxuICAgICY6aG92ZXIgLmZzLWVkaXRhYmxlLWljb24ge1xyXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5lbC1yYWRpbyB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgICAuZWwtcmFkaW9fX2xhYmVsIHtcclxuICAgICAgICBwYWRkaW5nOiAycHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmZzLXZhbGlkYXRlLWVycm9yIHtcclxuICAgICAgLmVycm9yLWljb24ge1xyXG4gICAgICAgIGNvbG9yOiAjZmY0ZDRmO1xyXG4gICAgICB9XHJcbiAgICAgIC5hbnQtaW5wdXQtYWZmaXgtd3JhcHBlciB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmY0ZDRmO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IoMjU1IDM4IDUgLyA2JSk7XHJcbiAgICAgIH1cclxuICAgICAgLmVsLWlucHV0X193cmFwcGVyIHtcclxuICAgICAgICBib3JkZXItY29sb3I6ICNmZjRkNGYgIWltcG9ydGFudDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmNGQ0ZiBpbnNldCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICAgIC5uLWlucHV0IC5uLWlucHV0X19zdGF0ZS1ib3JkZXIge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmNGQ0ZiAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IoMjU1IDM4IDUgLyA2JSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1hY3Rpb25iYXJcIj5cclxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIih2YWx1ZSwga2V5KSBpbiBjb21wdXRlZEJ1dHRvbnNcIiA6a2V5PVwia2V5XCI+XHJcbiAgICAgIDxmcy1idXR0b24gdi1pZj1cInZhbHVlLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwidmFsdWVcIiBAY2xpY2s9XCJvbkNsaWNrKGtleSwgdmFsdWUsICRldmVudClcIiAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25iYXJDbGlja0V2ZW50LCBCdXR0b25zUHJvcHMgfSBmcm9tIFwiLi4vLi4vZFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzQWN0aW9uYmFyXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5oyJ6ZKu6YWN572uXHJcbiAgICAgKiB7XHJcbiAgICAgKiAgYWRkOntcclxuICAgICAqICAgIC4uLkZzQnV0dG9uLFxyXG4gICAgICogICAgc2hvdzp0cnVlXHJcbiAgICAgKiAgfSxcclxuICAgICAqICBjdXN0b206ey4uLn1cclxuICAgICAqIH1cclxuICAgICAqL1xyXG4gICAgYnV0dG9uczoge31cclxuICB9IGFzIGFueSxcclxuICBlbWl0czogW1wiYWN0aW9uXCJdLFxyXG4gIHNldHVwKHByb3BzLCBjdHg6IGFueSkge1xyXG4gICAgZnVuY3Rpb24gb25DbGljayhrZXk6IGFueSwgYnRuOiBhbnksICRldmVudDogYW55KSB7XHJcbiAgICAgIGNvbnN0IGUgPSB7IGtleSwgYnRuLCAkZXZlbnQsIGxvYWRpbmdSZWY6ICRldmVudD8ubG9hZGluZ1JlZiB9O1xyXG4gICAgICBpZiAoYnRuLmNsaWNrKSB7XHJcbiAgICAgICAgYnRuLmNsaWNrKGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYnRuLm9uQ2xpY2spIHtcclxuICAgICAgICBidG4ub25DbGljayhlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY3R4LmVtaXQoXCJhY3Rpb25cIiwgZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnM6IFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgbGV0IHNvcnRBcnIgPSBbXTtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMuYnV0dG9ucykge1xyXG4gICAgICAgIHNvcnRBcnIucHVzaCh7XHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAuLi5wcm9wcy5idXR0b25zW2tleV0sXHJcbiAgICAgICAgICBfa2V5OiBrZXlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczxBY3Rpb25iYXJDbGlja0V2ZW50PiA9IHt9O1xyXG5cclxuICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcclxuICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xyXG4gICAgICAgIHNvcnRlZEJ1dHRvbnNbX2tleV0gPSBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHNvcnRlZEJ1dHRvbnM7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG9uQ2xpY2ssXHJcbiAgICAgIGNvbXB1dGVkQnV0dG9uc1xyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1hY3Rpb25iYXIge1xyXG4gIC8vIGRpc3BsYXk6IGZsZXg7XHJcbiAgLy8gZ2FwOiA0cHg7XHJcbiAgLmZzLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDJweDsgLy8g5o2i6KGM5LmL5ZCO5Lmf6KaB5pyJ5LiA54K56Ze06ZqUXHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtYWN0aW9uYmFyXCI+XHJcbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIodmFsdWUsIGtleSkgaW4gY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJ2YWx1ZS5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cInZhbHVlXCIgQGNsaWNrPVwib25DbGljayhrZXksIHZhbHVlLCAkZXZlbnQpXCIgLz5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQsIFJlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQWN0aW9uYmFyQ2xpY2tFdmVudCwgQnV0dG9uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0FjdGlvbmJhclwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrumFjee9rlxyXG4gICAgICoge1xyXG4gICAgICogIGFkZDp7XHJcbiAgICAgKiAgICAuLi5Gc0J1dHRvbixcclxuICAgICAqICAgIHNob3c6dHJ1ZVxyXG4gICAgICogIH0sXHJcbiAgICAgKiAgY3VzdG9tOnsuLi59XHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIGJ1dHRvbnM6IHt9XHJcbiAgfSBhcyBhbnksXHJcbiAgZW1pdHM6IFtcImFjdGlvblwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4OiBhbnkpIHtcclxuICAgIGZ1bmN0aW9uIG9uQ2xpY2soa2V5OiBhbnksIGJ0bjogYW55LCAkZXZlbnQ6IGFueSkge1xyXG4gICAgICBjb25zdCBlID0geyBrZXksIGJ0biwgJGV2ZW50LCBsb2FkaW5nUmVmOiAkZXZlbnQ/LmxvYWRpbmdSZWYgfTtcclxuICAgICAgaWYgKGJ0bi5jbGljaykge1xyXG4gICAgICAgIGJ0bi5jbGljayhlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ0bi5vbkNsaWNrKSB7XHJcbiAgICAgICAgYnRuLm9uQ2xpY2soZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGN0eC5lbWl0KFwiYWN0aW9uXCIsIGUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zOiBSZWYgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGxldCBzb3J0QXJyID0gW107XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgZm9yIChsZXQga2V5IGluIHByb3BzLmJ1dHRvbnMpIHtcclxuICAgICAgICBzb3J0QXJyLnB1c2goe1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgLi4ucHJvcHMuYnV0dG9uc1trZXldLFxyXG4gICAgICAgICAgX2tleToga2V5XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBzb3J0ZWRCdXR0b25zOiBCdXR0b25zUHJvcHM8QWN0aW9uYmFyQ2xpY2tFdmVudD4gPSB7fTtcclxuXHJcbiAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XHJcbiAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcclxuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBzb3J0ZWRCdXR0b25zO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBvbkNsaWNrLFxyXG4gICAgICBjb21wdXRlZEJ1dHRvbnNcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtYWN0aW9uYmFyIHtcclxuICAvLyBkaXNwbGF5OiBmbGV4O1xyXG4gIC8vIGdhcDogNHB4O1xyXG4gIC5mcy1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAycHg7IC8vIOaNouihjOS5i+WQjuS5n+imgeacieS4gOeCuemXtOmalFxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxyXG4gIDwhLS0g566A5Y2V5qih5byPIC0tPlxyXG4gIDx0ZW1wbGF0ZSB2LWlmPVwibW9kZSA9PT0gJ3NpbXBsZSdcIj5cclxuICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyLXNpbXBsZVwiPlxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkuY29sLm5hbWVcIlxyXG4gICAgICAgIHYtZm9yPVwiKGVsZW1lbnQsIGtleSkgaW4gY3VycmVudENvbHVtbnNcIlxyXG4gICAgICAgIHYtc2hvdz1cIm9yaWdpbmFsW2VsZW1lbnQua2V5XT8uX19zaG93ICE9PSBmYWxzZVwiXHJcbiAgICAgICAgOmtleT1cImtleVwiXHJcbiAgICAgICAgOnNwYW49XCI2XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgIDppcz1cInVpLmNoZWNrYm94Lm5hbWVcIlxyXG4gICAgICAgICAgdi1tb2RlbDpbdWkuY2hlY2tib3gubW9kZWxWYWx1ZV09XCJlbGVtZW50LnNob3dcIlxyXG4gICAgICAgICAgOmRpc2FibGVkPVwib3JpZ2luYWxbZWxlbWVudC5rZXldPy5fX2Rpc2FibGVkID09PSB0cnVlXCJcclxuICAgICAgICAgIGNsYXNzPVwiaXRlbS1sYWJlbFwiXHJcbiAgICAgICAgICA6dGl0bGU9XCJidWlsZFRleHQoZWxlbWVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGJ1aWxkVGV4dChlbGVtZW50KSB9fVxyXG4gICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kaXZpZGVyLm5hbWVcIiAvPlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiPlxyXG4gICAgICA8ZnMtYnV0dG9uXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweFwiXHJcbiAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgIDppY29uPVwidWkuaWNvbnMuY2hlY2tcIlxyXG4gICAgICAgIDp0ZXh0PVwiX3RleHQuY29uZmlybVwiXHJcbiAgICAgICAgQGNsaWNrPVwic2ltcGxlU3VibWl0KClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8ZnMtYnV0dG9uIDppY29uPVwidWkuaWNvbnMucmVmcmVzaFwiIDp0ZXh0PVwiX3RleHQucmVzZXRcIiBAY2xpY2s9XCJzaW1wbGVSZXNldFwiIC8+XHJcbiAgICA8L2NvbXBvbmVudD5cclxuICA8L3RlbXBsYXRlPlxyXG4gIDwhLS0g5a6M5YWo5qih5byPIC0tPlxyXG5cclxuICA8Y29tcG9uZW50IDppcz1cImNvbnRhaW5lcj8uaXMgfHwgJ2ZzLWNvbHVtbnMtZmlsdGVyLWxheW91dC1kZWZhdWx0J1wiIHYtZWxzZSB2LWJpbmQ9XCJjb250YWluZXJcIj5cclxuICAgIDx0ZW1wbGF0ZSAjYnV0dG9ucz5cclxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtZHJhd2VyLWZvb3RlclwiIDpndXR0ZXI9XCIxMFwiPlxyXG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sLm5hbWVcIiA6c3Bhbj1cIjEyXCI+XHJcbiAgICAgICAgICA8ZnMtYnV0dG9uIDppY29uPVwidWkuaWNvbnMucmVmcmVzaFwiIDp0ZXh0PVwiX3RleHQucmVzZXRcIiBibG9jayBAY2xpY2s9XCJyZXNldFwiIC8+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2wubmFtZVwiIDpzcGFuPVwiMTJcIj5cclxuICAgICAgICAgIDxmcy1idXR0b24gdHlwZT1cInByaW1hcnlcIiA6aWNvbj1cInVpLmljb25zLmNoZWNrXCIgOnRleHQ9XCJfdGV4dC5jb25maXJtXCIgYmxvY2sgQGNsaWNrPVwic3VibWl0KGZhbHNlKVwiIC8+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XHJcbi8qKlxyXG4gKiBGc1RhYmxlQ29sdW1uc0ZpbHRlcu+8jOWIl+iuvue9rue7hOS7tlxyXG4gKi9cclxuaW1wb3J0IHsgb21pdCwgZm9yRWFjaCwgcGljayB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IFRhYmxlU3RvcmUgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3V0aWwuc3RvcmVcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgbmV4dFRpY2ssIHByb3ZpZGUsIFJlZiwgcmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdWlDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL3VpXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcclxuaW1wb3J0IHsgdXNlUm91dGUgfSBmcm9tIFwidnVlLXJvdXRlclwiO1xyXG5pbXBvcnQge1xyXG4gIENvbHVtblByb3BzLFxyXG4gIENvbHVtbnNGaWx0ZXJDb21wb25lbnRQcm9wcyxcclxuICBDb2x1bW5zRmlsdGVySXRlbSxcclxuICBDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSxcclxuICBUYWJsZUNvbHVtbnNQcm9wc1xyXG59IGZyb20gXCIuLi8uLi8uLi9kXCI7XHJcblxyXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxDb2x1bW5zRmlsdGVyQ29tcG9uZW50UHJvcHM+KCksIHtcclxuICBzdG9yYWdlOiB0cnVlLFxyXG4gIG1vZGU6IFwiZGVmYXVsdFwiLFxyXG4gIGNvbnRhaW5lcjogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHsgaXM6IFwiZnMtY29sdW1ucy1maWx0ZXItbGF5b3V0LWRlZmF1bHRcIiB9O1xyXG4gIH1cclxufSk7XHJcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6Y29sdW1uc1wiLCBcInVwZGF0ZTpzaG93XCIsIFwicmVzZXRcIiwgXCJzdWJtaXRcIl0pO1xyXG5cclxuY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XHJcbmNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xyXG5jb25zdCBhY3RpdmUgPSByZWYoZmFsc2UpO1xyXG5jb25zdCBzdGFydCA9ICgpID0+IHtcclxuICBhY3RpdmUudmFsdWUgPSB0cnVlO1xyXG59O1xyXG5cclxuLy8g5pWw57uE5b2i5byP55qE5Y6f5aeLdHJlZVxyXG5jb25zdCBvcmlnaW5hbDogUmVmPENvbHVtbnNGaWx0ZXJJdGVtW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiB0cmFuc2Zvcm1Db2x1bW5zVHJlZShwcm9wcy5vcmlnaW5hbENvbHVtbnMpO1xyXG59KTtcclxuLy/mlbDnu4TlvaLlvI/nmoR0cmVlXHJcbmNvbnN0IGN1cnJlbnRDb2x1bW5zOiBSZWY8Q29sdW1uc0ZpbHRlckl0ZW1bXT4gPSByZWYoW10pO1xyXG5cclxuY29uc3Qgb3JpZ2luYWxDb2x1bW5zTWFwOiBSZWY8UmVjb3JkPHN0cmluZywgQ29sdW1uc0ZpbHRlckl0ZW0+PiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIENvbHVtbnNGaWx0ZXJJdGVtPiA9IHt9O1xyXG4gIGVhY2hUcmVlKG9yaWdpbmFsLnZhbHVlLCAoaXRlbTogQ29sdW1uc0ZpbHRlckl0ZW0pID0+IHtcclxuICAgIG1hcFtpdGVtLl9fa2V5XSA9IGl0ZW07XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG1hcDtcclxufSk7XHJcbmNvbnN0IHsgbWVyZ2UsIGNsb25lRGVlcCB9ID0gdXNlTWVyZ2UoKTtcclxuXHJcbmNvbnN0IF90ZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IGRlZiA9IHtcclxuICAgIHRpdGxlOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIudGl0bGVcIiksXHJcbiAgICBmaXhlZDogdChcImZzLnRvb2xiYXIuY29sdW1uRmlsdGVyLmZpeGVkXCIpLFxyXG4gICAgb3JkZXI6IHQoXCJmcy50b29sYmFyLmNvbHVtbkZpbHRlci5vcmRlclwiKSxcclxuICAgIHJlc2V0OiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIucmVzZXRcIiksXHJcbiAgICBjb25maXJtOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIuY29uZmlybVwiKSxcclxuICAgIHVubmFtZWQ6IHQoXCJmcy50b29sYmFyLmNvbHVtbkZpbHRlci51bm5hbWVkXCIpXHJcbiAgfTtcclxuICBtZXJnZShkZWYsIHByb3BzLnRleHQpO1xyXG4gIHJldHVybiBkZWY7XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gZWFjaFRyZWUodHJlZTogYW55LCBjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICBpZiAoIXRyZWUpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlKSB7XHJcbiAgICAgIGNhbGxiYWNrKGl0ZW0pO1xyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgIGVhY2hUcmVlKGl0ZW0uY2hpbGRyZW4sIGNhbGxiYWNrKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0cmVlKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0cmVlW2tleV07XHJcbiAgICAgIGNhbGxiYWNrKGl0ZW0pO1xyXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICAgIGVhY2hUcmVlKGl0ZW0uY2hpbGRyZW4sIGNhbGxiYWNrKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgX19rZXlzID0gW1wiX19zaG93XCIsIFwiX19kaXNhYmxlZFwiLCBcIl9fcGFyZW50XCIsIFwiX19rZXlcIiwgXCJfX3RpdGxlXCJdO1xyXG5mdW5jdGlvbiBidWlsZENvbHVtbkZpbHRlckl0ZW0oaXRlbTogQ29sdW1uUHJvcHMpOiBDb2x1bW5zRmlsdGVySXRlbSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGtleTogaXRlbS5rZXksXHJcbiAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgIGZpeGVkOiBpdGVtLmZpeGVkID8/IGZhbHNlLFxyXG4gICAgc2hvdzogaXRlbS5zaG93ID8/IHRydWUsXHJcbiAgICBfX3Nob3c6IGl0ZW0uY29sdW1uU2V0U2hvdyAhPT0gZmFsc2UsXHJcbiAgICBfX2Rpc2FibGVkOiBpdGVtLmNvbHVtblNldERpc2FibGVkID8/IGZhbHNlLFxyXG4gICAgX190aXRsZTogaXRlbS5jb2x1bW5TZXRUaXRsZVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybVRvVGFibGVDb2x1bW5zKHJlc3VsdDogQ29sdW1uc0ZpbHRlckl0ZW1bXSkge1xyXG4gIGNvbnN0IGNvbHVtbnM6IFRhYmxlQ29sdW1uc1Byb3BzID0ge307XHJcbiAgZm9yRWFjaChyZXN1bHQsIChpdGVtKSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW46IENvbHVtblByb3BzID0gb21pdChpdGVtLCBcImNoaWxkcmVuXCIsIC4uLl9fa2V5cyk7XHJcbiAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29sdW1uLmNoaWxkcmVuID0gdHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMoaXRlbS5jaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICBjb2x1bW5zW2l0ZW0ua2V5XSA9IGNvbHVtbjtcclxuICB9KTtcclxuICByZXR1cm4gY29sdW1ucztcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhbnNmb3JtQ29sdW1uc1RyZWUodmFsdWU6IFRhYmxlQ29sdW1uc1Byb3BzLCBwYXJlbnQ/OiBDb2x1bW5zRmlsdGVySXRlbSk6IENvbHVtbnNGaWx0ZXJJdGVtW10ge1xyXG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbnNGaWx0ZXJJdGVtW10gPSBbXTtcclxuICBmb3JFYWNoKHZhbHVlLCAoaXRlbSkgPT4ge1xyXG4gICAgY29uc3QgY29sdW1uID0gYnVpbGRDb2x1bW5GaWx0ZXJJdGVtKGl0ZW0pO1xyXG4gICAgY29sdW1uLl9fcGFyZW50ID0gcGFyZW50O1xyXG4gICAgY29sdW1uLl9fa2V5ID0gYCR7cGFyZW50Py5rZXkgfHwgXCJcIn0uJHtpdGVtLmtleX1gO1xyXG4gICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICBjb2x1bW4uY2hpbGRyZW4gPSB0cmFuc2Zvcm1Db2x1bW5zVHJlZShpdGVtLmNoaWxkcmVuLCBjb2x1bW4pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBjb2x1bW5zO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRDdXJyZW50VmFsdWUodmFsdWU6IGFueSkge1xyXG4gIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gdHJhbnNmb3JtQ29sdW1uc1RyZWUodmFsdWUpO1xyXG59XHJcblxyXG4vLyDov5jljp9cclxuYXN5bmMgZnVuY3Rpb24gcmVzZXQoKSB7XHJcbiAgY3VycmVudENvbHVtbnMudmFsdWUgPSB0cmFuc2Zvcm1Db2x1bW5zVHJlZShwcm9wcy5vcmlnaW5hbENvbHVtbnMpO1xyXG4gIGF3YWl0IGRvX3NhdmUodHJ1ZSk7XHJcbiAgYXdhaXQgY2xlYXJUaGlzU3RvcmFnZSgpO1xyXG4gIGVtaXQoXCJyZXNldFwiKTtcclxufVxyXG5cclxuLy8g56Gu6K6kXHJcbmFzeW5jIGZ1bmN0aW9uIGRvX3NhdmUobm9TYXZlID0gZmFsc2UpIHtcclxuICBpZiAoIW5vU2F2ZSkge1xyXG4gICAgYXdhaXQgc2F2ZU9wdGlvbnNUb1N0b3JhZ2UoY3VycmVudENvbHVtbnMudmFsdWUpO1xyXG4gIH1cclxuICBjb25zdCByZXN1bHQgPSBjbG9uZURlZXAoY3VycmVudENvbHVtbnMudmFsdWUpO1xyXG5cclxuICAvL+ino+WGs25haXZlIHVp5LiO5YiX6K6+572u5Yay56qB55qE6Zeu6aKYXHJcbiAgZWFjaFRyZWUocmVzdWx0LCAoaXRlbTogYW55KSA9PiB7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpdGVtKSkge1xyXG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIl9fXCIpKSB7XHJcbiAgICAgICAgICBkZWxldGUgaXRlbVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBkb0VtaXQocmVzdWx0KTtcclxuICBhY3RpdmUudmFsdWUgPSBmYWxzZTtcclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzdWJtaXQobm9TYXZlID0gZmFsc2UpIHtcclxuICBjb25zdCBjb2x1bW5zID0gYXdhaXQgZG9fc2F2ZShub1NhdmUpO1xyXG4gIGVtaXQoXCJzdWJtaXRcIiwgeyBjb2x1bW5zIH0pO1xyXG59XHJcbmNvbnN0IGNvbXB1dGVkT3JpZ2luYWxDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiBwcm9wcy5vcmlnaW5hbENvbHVtbnM7XHJcbn0pO1xyXG5wcm92aWRlKENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5LCB7XHJcbiAgb3JpZ2luYWxDb2x1bW5zOiBjb21wdXRlZE9yaWdpbmFsQ29sdW1ucyxcclxuICBvcmlnaW5hbENvbHVtbnNNYXA6IG9yaWdpbmFsQ29sdW1uc01hcCxcclxuICBjdXJyZW50Q29sdW1ucyxcclxuICB0ZXh0OiBfdGV4dCxcclxuICBhY3RpdmUsXHJcbiAgc3VibWl0LFxyXG4gIHJlc2V0XHJcbn0pO1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2ltcGxlU3VibWl0KCkge1xyXG4gIGF3YWl0IHN1Ym1pdChmYWxzZSk7XHJcbiAgZW1pdChcInVwZGF0ZTpzaG93XCIsIGZhbHNlKTtcclxufVxyXG5hc3luYyBmdW5jdGlvbiBzaW1wbGVSZXNldCgpIHtcclxuICBhd2FpdCByZXNldCgpO1xyXG4gIGVtaXQoXCJ1cGRhdGU6c2hvd1wiLCBmYWxzZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvRW1pdChyZXN1bHQ6IENvbHVtbnNGaWx0ZXJJdGVtW10pIHtcclxuICBlbWl0KFwidXBkYXRlOmNvbHVtbnNcIiwgdHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMocmVzdWx0KSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldENydWRCaW5kaW5nID0gaW5qZWN0KFwiZ2V0OmNydWRCaW5kaW5nXCIsICgpID0+IHtcclxuICByZXR1cm4geyBpZDogXCJcIiB9O1xyXG59KTtcclxuXHJcbmNvbnN0IHN0b3JhZ2VUYWJsZVN0b3JlID0gcmVmKCk7XHJcbmZ1bmN0aW9uIGdldFN0b3JhZ2VUYWJsZSgpIHtcclxuICAvL3Byb3BzLnN0b3JhZ2XmmK/lkKblrp7njrDkuoZDb2x1bW5GaWx0ZXJTdG9yYWdlIOaOpeWPo1xyXG4gIGNvbnN0IHJlbW90ZVN0b3JhZ2UgPSB0eXBlb2YgcHJvcHMuc3RvcmFnZSA9PT0gXCJvYmplY3RcIiA/IHByb3BzLnN0b3JhZ2UgOiBudWxsO1xyXG4gIGNvbnN0IGtleVR5cGUgPSB0eXBlb2YgcHJvcHMuc3RvcmFnZSA9PT0gXCJzdHJpbmdcIiA/IHByb3BzLnN0b3JhZ2UgOiBcIlwiO1xyXG4gIGlmIChzdG9yYWdlVGFibGVTdG9yZS52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHVzZVJvdXRlKCk7XHJcbiAgICBzdG9yYWdlVGFibGVTdG9yZS52YWx1ZSA9IG5ldyBUYWJsZVN0b3JlKHtcclxuICAgICAgJHJvdXRlcjogcm91dGUsXHJcbiAgICAgIHRhYmxlTmFtZTogXCJjb2x1bW5zRmlsdGVyXCIsXHJcbiAgICAgIGtleVR5cGU6IGtleVR5cGUsXHJcbiAgICAgIHJlbW90ZVN0b3JhZ2VcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdG9yYWdlVGFibGVTdG9yZS52YWx1ZS5pZCA9IGdldENydWRCaW5kaW5nKCkuaWQ7XHJcbiAgcmV0dXJuIHN0b3JhZ2VUYWJsZVN0b3JlLnZhbHVlO1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzYXZlT3B0aW9uc1RvU3RvcmFnZSh2YWx1ZTogYW55KSB7XHJcbiAgaWYgKHByb3BzLnN0b3JhZ2UgPT09IGZhbHNlKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IHN0b3JlZE9wdGlvbnM6IGFueSA9IGNsb25lRGVlcCh2YWx1ZSk7XHJcbiAgLy/liKDpmaRwYXJlbnTlvJXnlKhcclxuICBlYWNoVHJlZShzdG9yZWRPcHRpb25zLCAoaXRlbTogYW55KSA9PiB7XHJcbiAgICBkZWxldGUgaXRlbS5fX3BhcmVudDtcclxuICB9KTtcclxuXHJcbiAgYXdhaXQgZ2V0U3RvcmFnZVRhYmxlKCkudXBkYXRlVGFibGVWYWx1ZShzdG9yZWRPcHRpb25zKTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gZ2V0T3B0aW9uc0Zyb21TdG9yYWdlKCkge1xyXG4gIGlmIChwcm9wcy5zdG9yYWdlID09PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICByZXR1cm4gYXdhaXQgZ2V0U3RvcmFnZVRhYmxlKCkuZ2V0VGFibGVWYWx1ZSgpO1xyXG59XHJcbmFzeW5jIGZ1bmN0aW9uIGNsZWFyVGhpc1N0b3JhZ2UoKSB7XHJcbiAgYXdhaXQgZ2V0U3RvcmFnZVRhYmxlKCkuY2xlYXJUYWJsZVZhbHVlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENvbHVtbnNIYXNoKGNvbHVtbnM6IGFueSkge1xyXG4gIGNvbnN0IGtleXM6IGFueSA9IFtdO1xyXG4gIGVhY2hUcmVlKGNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHBpY2soaXRlbSwgXCJrZXlcIiwgXCJfX3Nob3dcIiwgXCJfX2Rpc2FibGVkXCIpO1xyXG4gICAga2V5cy5wdXNoKEpTT04uc3RyaW5naWZ5KHRhcmdldCkpO1xyXG4gIH0pO1xyXG4gIGtleXMuc29ydCgpO1xyXG4gIGxldCBoYXNoID0gXCJcIjtcclxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICBoYXNoICs9IGtleTtcclxuICB9XHJcbiAgcmV0dXJuIGhhc2g7XHJcbn1cclxud2F0Y2goXHJcbiAgKCkgPT4ge1xyXG4gICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XHJcbiAgfSxcclxuICAodmFsdWUpID0+IHtcclxuICAgIHNldEN1cnJlbnRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG4pO1xyXG5cclxuY29uc3QgaW5pdCA9IGFzeW5jICgpID0+IHtcclxuICBzZXRDdXJyZW50VmFsdWUocHJvcHMuY29sdW1ucyk7XHJcbiAgY29uc3Qgc3RvcmVkT3B0aW9ucyA9IGF3YWl0IGdldE9wdGlvbnNGcm9tU3RvcmFnZSgpO1xyXG4gIGlmIChzdG9yZWRPcHRpb25zKSB7XHJcbiAgICBjb25zdCBzdG9yZUhhc2ggPSBnZXRDb2x1bW5zSGFzaChzdG9yZWRPcHRpb25zKTtcclxuICAgIGNvbnN0IG9wdGlvbkhhc2ggPSBnZXRDb2x1bW5zSGFzaChvcmlnaW5hbC52YWx1ZSk7XHJcbiAgICBpZiAob3B0aW9uSGFzaCAhPT0gc3RvcmVIYXNoKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY29sdW1ucyBjaGFuZ2VkLCBpZ25vcmUgbG9jYWwgc3RvcmFnZVwiKTtcclxuICAgICAgLy8g5aaC5p6c5a2X5q615YiX5pyJ6L+H5L+u5pS577yM5YiZ5LiN5L2/55So5pys5Zyw6K6+572uXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gc3RvcmVkT3B0aW9ucztcclxuICAgIGF3YWl0IG5leHRUaWNrKCk7XHJcbiAgICBhd2FpdCBzdWJtaXQodHJ1ZSk7XHJcbiAgfVxyXG59O1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlKGNoYW5nZTogKGN1cnJlbnRDb2x1bW5zOiBSZWY8Q29sdW1uc0ZpbHRlckl0ZW1bXT4pID0+IFByb21pc2U8dm9pZD4pIHtcclxuICBhd2FpdCBjaGFuZ2UoY3VycmVudENvbHVtbnMpO1xyXG4gIGF3YWl0IGRvX3NhdmUoKTtcclxufVxyXG5cclxud2F0Y2goXHJcbiAgKCkgPT4ge1xyXG4gICAgcmV0dXJuIG9yaWdpbmFsLnZhbHVlO1xyXG4gIH0sXHJcbiAgYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICBhd2FpdCBpbml0KCk7XHJcbiAgfSxcclxuICB7XHJcbiAgICBpbW1lZGlhdGU6IHRydWVcclxuICB9XHJcbik7XHJcblxyXG5kZWZpbmVFeHBvc2Uoe1xyXG4gIHN0YXJ0LFxyXG4gIHNhdmU6IGRvX3NhdmUsXHJcbiAgdXBkYXRlLFxyXG4gIG9yaWdpbmFsLFxyXG4gIGNvbHVtbnM6IGN1cnJlbnRDb2x1bW5zXHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gYnVpbGRUZXh0KGVsZW1lbnQ6IGFueSkge1xyXG4gIHJldHVybiBlbGVtZW50Ll9fdGl0bGUgfHwgZWxlbWVudC5sYWJlbCB8fCBlbGVtZW50LnRpdGxlIHx8IGVsZW1lbnQua2V5IHx8IF90ZXh0LnZhbHVlLnVubmFtZWQ7XHJcbn1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtdGFibGUtY29sdW1ucy1maWx0ZXItc2ltcGxlIHtcclxuICBtaW4td2lkdGg6IDc2MHB4O1xyXG4gIHBhZGRpbmctdG9wOiAyMHB4O1xyXG59XHJcblxyXG4uZnMtdGFibGUtY29sdW1ucy1maWx0ZXIge1xyXG4gIDpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOiAwO1xyXG4gIH1cclxuXHJcbiAgW2ZsZXh+PVwiY3Jvc3M6Y2VudGVyXCJdIHtcclxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgW2ZsZXh+PVwibWFpbjpqdXN0aWZ5XCJdIHtcclxuICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgfVxyXG5cclxuICBbZmxleF0ge1xyXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH1cclxuXHJcbiAgW2ZsZXgtYm94PVwiMVwiXSB7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmbGV4LXNocmluazogMTtcclxuICB9XHJcblxyXG4gIFtmbGV4XSA+ICoge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9XHJcblxyXG4gIC5lbC1kcmF3ZXJfX2JvZHkge1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbiAgLmZzLWRyYXdlci13cmFwcGVyIHtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmZzLWRyYXdlci1mb290ZXIge1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICB9XHJcblxyXG4gIC5jb21wb25lbnQtLWxpc3Qge1xyXG4gICAgbWFyZ2luOiAtMjBweDtcclxuXHJcbiAgICAuaXRlbS1sYWJlbCB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuXHJcbiAgICAgIC5hbnQtY2hlY2tib3ggKyBzcGFuIHtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC5pdGVtLXJpZ2h0IHtcclxuICAgICAgZmxleC1zaHJpbms6IDE7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlIHtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5jb21wb25lbnQtLWxpc3QtaXRlbSB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcclxuXHJcbiAgICAgICYuZ2hvc3Qge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jb21wb25lbnQtLWxpc3QtaXRlbS1oYW5kbGUge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgIGN1cnNvcjogbW92ZTtcclxuXHJcbiAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjM7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtdG9vbGJhclwiPlxyXG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgb2YgY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2VcIj5cclxuICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICA6aXM9XCJ1aS5wb3BvdmVyLm5hbWVcIlxyXG4gICAgICAgICAgdi1pZj1cImtleSA9PT0gJ2NvbHVtbnMnICYmIGNvbHVtbnNGaWx0ZXIgJiYgY29sdW1uc0ZpbHRlcj8ubW9kZSA9PT0gJ3NpbXBsZSdcIlxyXG4gICAgICAgICAgdi1tb2RlbDpbdWkucG9wb3Zlci52aXNpYmxlXT1cInBvcG92ZXJWaXNpYmxlXCJcclxuICAgICAgICAgIGRpc3BsYXktZGlyZWN0aXZlPVwic2hvd1wiXHJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgOndpZHRoPVwiNzYwXCJcclxuICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci50cmlnZ2VyU2xvdE5hbWVdPlxyXG4gICAgICAgICAgICA8ZnMtYnV0dG9uIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJoYW5kbGVTaW1wbGVDbGlja1wiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci5jb250ZW50U2xvdE5hbWVdPlxyXG4gICAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcclxuICAgICAgICAgICAgICB2LWlmPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgcmVmPVwiY29sdW1uc0ZpbHRlclJlZlwiXHJcbiAgICAgICAgICAgICAgdi1tb2RlbDpzaG93PVwicG9wb3ZlclZpc2libGVcIlxyXG4gICAgICAgICAgICAgIG1vZGU9XCJzaW1wbGVcIlxyXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbHVtbnNGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgOnN0b3JhZ2U9XCJzdG9yYWdlXCJcclxuICAgICAgICAgICAgICBAdXBkYXRlOmNvbHVtbnM9XCIkZW1pdCgndXBkYXRlOmNvbHVtbnMnLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2Ugdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uY2xpY2soJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPGNvbXBvbmVudFxyXG4gICAgICA6aXM9XCJjb2x1bW5zRmlsdGVyLmlzIHx8ICdmcy10YWJsZS1jb2x1bW5zLWZpbHRlcidcIlxyXG4gICAgICB2LWlmPVwiY29sdW1ucyAmJiBjb2x1bW5zRmlsdGVyPy5tb2RlICE9PSAnc2ltcGxlJ1wiXHJcbiAgICAgIHJlZj1cImNvbHVtbnNGaWx0ZXJSZWZcIlxyXG4gICAgICA6c3RvcmFnZT1cInN0b3JhZ2VcIlxyXG4gICAgICB2LWJpbmQ9XCJjb2x1bW5zRmlsdGVyXCJcclxuICAgICAgOmNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgQHVwZGF0ZTpjb2x1bW5zPVwiJGVtaXQoJ3VwZGF0ZTpjb2x1bW5zJywgJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IEZzVGFibGVDb2x1bW5zRmlsdGVyIGZyb20gXCIuL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2luZGV4LnZ1ZVwiO1xyXG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFByb3BUeXBlLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBCdXR0b25zUHJvcHMsIFRhYmxlQ29sdW1uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG4vKipcclxuICog5bel5YW35p2hXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNUb29sYmFyXCIsXHJcbiAgY29tcG9uZW50czogeyBGc1RhYmxlQ29sdW1uc0ZpbHRlciB9LFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrumFjee9rlxyXG4gICAgICp7XHJcbiAgICAgKiAgIHNlYXJjaDp7fSwg5p+l6K+iXHJcbiAgICAgKiAgIHJlZnJlc2g6e30sIOWIt+aWsFxyXG4gICAgICogICBjb21wYWN0Ont9LCDntKflh5HmqKHlvI9cclxuICAgICAqICAgZXhwb3J0Ont9LCDlr7zlh7pcclxuICAgICAqICAgY29sdW1uczp7fSDliJforr7nva5cclxuICAgICAqfVxyXG4gICAgICoqL1xyXG4gICAgYnV0dG9uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOW9k+WJjeaYr+WQpue0p+WHkeaooeW8j1xyXG4gICAgICovXHJcbiAgICBjb21wYWN0OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWIl+mFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxUYWJsZUNvbHVtbnNQcm9wcz4sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5L+d5a2Y55So5oi35YiX6K6+572uXHJcbiAgICAgKiDkvKBzdHJpbmfliJnooajnpLrkvKDlhaXnvJPlrZjnmoTkuLtrZXlcclxuICAgICAqL1xyXG4gICAgc3RvcmFnZToge1xyXG4gICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5o+S5qe9XHJcbiAgICAgKi9cclxuICAgIHNsb3RzOiB7fSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+iuvue9rumFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zRmlsdGVyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+XHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1widXBkYXRlOmNvbHVtbnNcIl0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4KSB7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IGNvbHVtbnNGaWx0ZXJSZWY6IFJlZiA9IHJlZigpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRCdXR0b25zOiBCdXR0b25zUHJvcHM8dm9pZD4gPSB7XHJcbiAgICAgICAgY29sdW1uczoge1xyXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29sdW1uc0ZpbHRlclJlZi52YWx1ZS5zdGFydCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIG1lcmdlKGRlZmF1bHRCdXR0b25zLCBwcm9wcy5idXR0b25zKTtcclxuICAgICAgLy8gaWYgKGRlZmF1bHRCdXR0b25zLnNlYXJjaCkge1xyXG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLnNlYXJjaC50eXBlID0gcHJvcHMuc2VhcmNoID8gXCJwcmltYXJ5XCIgOiBcImRlZmF1bHRcIjtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAoZGVmYXVsdEJ1dHRvbnMuY29tcGFjdCkge1xyXG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLmNvbXBhY3QudHlwZSA9IHByb3BzLmNvbXBhY3QgPyBcInByaW1hcnlcIiA6IFwiZGVmYXVsdFwiO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBsZXQgc29ydEFycjogQnV0dG9uUHJvcHNbXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBkZWZhdWx0QnV0dG9uc0tleSBpbiBkZWZhdWx0QnV0dG9ucykge1xyXG4gICAgICAgIHNvcnRBcnIucHVzaCh7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0QnV0dG9uc1tkZWZhdWx0QnV0dG9uc0tleV0sXHJcbiAgICAgICAgICBfa2V5OiBkZWZhdWx0QnV0dG9uc0tleVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczx2b2lkPiA9IHt9O1xyXG5cclxuICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XHJcbiAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcclxuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBzb3J0ZWRCdXR0b25zO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwb3BvdmVyVmlzaWJsZSA9IHJlZihmYWxzZSk7XHJcbiAgICBjb25zdCBoYW5kbGVTaW1wbGVDbGljayA9ICgkZXZlbnQpID0+IHtcclxuICAgICAgaWYgKHVpLnR5cGUgPT09IFwiZWxlbWVudFwiKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBvcG92ZXJWaXNpYmxlLnZhbHVlID0gIXBvcG92ZXJWaXNpYmxlLnZhbHVlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBjb2x1bW5zRmlsdGVyUmVmLFxyXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXHJcbiAgICAgIHBvcG92ZXJWaXNpYmxlLFxyXG4gICAgICBoYW5kbGVTaW1wbGVDbGlja1xyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy10b29sYmFyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuZnMtYnV0dG9uIHtcclxuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtdG9vbGJhclwiPlxyXG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgb2YgY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2VcIj5cclxuICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICA6aXM9XCJ1aS5wb3BvdmVyLm5hbWVcIlxyXG4gICAgICAgICAgdi1pZj1cImtleSA9PT0gJ2NvbHVtbnMnICYmIGNvbHVtbnNGaWx0ZXIgJiYgY29sdW1uc0ZpbHRlcj8ubW9kZSA9PT0gJ3NpbXBsZSdcIlxyXG4gICAgICAgICAgdi1tb2RlbDpbdWkucG9wb3Zlci52aXNpYmxlXT1cInBvcG92ZXJWaXNpYmxlXCJcclxuICAgICAgICAgIGRpc3BsYXktZGlyZWN0aXZlPVwic2hvd1wiXHJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgOndpZHRoPVwiNzYwXCJcclxuICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci50cmlnZ2VyU2xvdE5hbWVdPlxyXG4gICAgICAgICAgICA8ZnMtYnV0dG9uIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJoYW5kbGVTaW1wbGVDbGlja1wiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci5jb250ZW50U2xvdE5hbWVdPlxyXG4gICAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcclxuICAgICAgICAgICAgICB2LWlmPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgcmVmPVwiY29sdW1uc0ZpbHRlclJlZlwiXHJcbiAgICAgICAgICAgICAgdi1tb2RlbDpzaG93PVwicG9wb3ZlclZpc2libGVcIlxyXG4gICAgICAgICAgICAgIG1vZGU9XCJzaW1wbGVcIlxyXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbHVtbnNGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgOnN0b3JhZ2U9XCJzdG9yYWdlXCJcclxuICAgICAgICAgICAgICBAdXBkYXRlOmNvbHVtbnM9XCIkZW1pdCgndXBkYXRlOmNvbHVtbnMnLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2Ugdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uY2xpY2soJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPGNvbXBvbmVudFxyXG4gICAgICA6aXM9XCJjb2x1bW5zRmlsdGVyLmlzIHx8ICdmcy10YWJsZS1jb2x1bW5zLWZpbHRlcidcIlxyXG4gICAgICB2LWlmPVwiY29sdW1ucyAmJiBjb2x1bW5zRmlsdGVyPy5tb2RlICE9PSAnc2ltcGxlJ1wiXHJcbiAgICAgIHJlZj1cImNvbHVtbnNGaWx0ZXJSZWZcIlxyXG4gICAgICA6c3RvcmFnZT1cInN0b3JhZ2VcIlxyXG4gICAgICB2LWJpbmQ9XCJjb2x1bW5zRmlsdGVyXCJcclxuICAgICAgOmNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgQHVwZGF0ZTpjb2x1bW5zPVwiJGVtaXQoJ3VwZGF0ZTpjb2x1bW5zJywgJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IEZzVGFibGVDb2x1bW5zRmlsdGVyIGZyb20gXCIuL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2luZGV4LnZ1ZVwiO1xyXG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFByb3BUeXBlLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBCdXR0b25zUHJvcHMsIFRhYmxlQ29sdW1uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG4vKipcclxuICog5bel5YW35p2hXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNUb29sYmFyXCIsXHJcbiAgY29tcG9uZW50czogeyBGc1RhYmxlQ29sdW1uc0ZpbHRlciB9LFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrumFjee9rlxyXG4gICAgICp7XHJcbiAgICAgKiAgIHNlYXJjaDp7fSwg5p+l6K+iXHJcbiAgICAgKiAgIHJlZnJlc2g6e30sIOWIt+aWsFxyXG4gICAgICogICBjb21wYWN0Ont9LCDntKflh5HmqKHlvI9cclxuICAgICAqICAgZXhwb3J0Ont9LCDlr7zlh7pcclxuICAgICAqICAgY29sdW1uczp7fSDliJforr7nva5cclxuICAgICAqfVxyXG4gICAgICoqL1xyXG4gICAgYnV0dG9uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOW9k+WJjeaYr+WQpue0p+WHkeaooeW8j1xyXG4gICAgICovXHJcbiAgICBjb21wYWN0OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWIl+mFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxUYWJsZUNvbHVtbnNQcm9wcz4sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5L+d5a2Y55So5oi35YiX6K6+572uXHJcbiAgICAgKiDkvKBzdHJpbmfliJnooajnpLrkvKDlhaXnvJPlrZjnmoTkuLtrZXlcclxuICAgICAqL1xyXG4gICAgc3RvcmFnZToge1xyXG4gICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5o+S5qe9XHJcbiAgICAgKi9cclxuICAgIHNsb3RzOiB7fSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+iuvue9rumFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zRmlsdGVyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+XHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1widXBkYXRlOmNvbHVtbnNcIl0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4KSB7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IGNvbHVtbnNGaWx0ZXJSZWY6IFJlZiA9IHJlZigpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRCdXR0b25zOiBCdXR0b25zUHJvcHM8dm9pZD4gPSB7XHJcbiAgICAgICAgY29sdW1uczoge1xyXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29sdW1uc0ZpbHRlclJlZi52YWx1ZS5zdGFydCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIG1lcmdlKGRlZmF1bHRCdXR0b25zLCBwcm9wcy5idXR0b25zKTtcclxuICAgICAgLy8gaWYgKGRlZmF1bHRCdXR0b25zLnNlYXJjaCkge1xyXG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLnNlYXJjaC50eXBlID0gcHJvcHMuc2VhcmNoID8gXCJwcmltYXJ5XCIgOiBcImRlZmF1bHRcIjtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAoZGVmYXVsdEJ1dHRvbnMuY29tcGFjdCkge1xyXG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLmNvbXBhY3QudHlwZSA9IHByb3BzLmNvbXBhY3QgPyBcInByaW1hcnlcIiA6IFwiZGVmYXVsdFwiO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBsZXQgc29ydEFycjogQnV0dG9uUHJvcHNbXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBkZWZhdWx0QnV0dG9uc0tleSBpbiBkZWZhdWx0QnV0dG9ucykge1xyXG4gICAgICAgIHNvcnRBcnIucHVzaCh7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0QnV0dG9uc1tkZWZhdWx0QnV0dG9uc0tleV0sXHJcbiAgICAgICAgICBfa2V5OiBkZWZhdWx0QnV0dG9uc0tleVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczx2b2lkPiA9IHt9O1xyXG5cclxuICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XHJcbiAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcclxuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBzb3J0ZWRCdXR0b25zO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBwb3BvdmVyVmlzaWJsZSA9IHJlZihmYWxzZSk7XHJcbiAgICBjb25zdCBoYW5kbGVTaW1wbGVDbGljayA9ICgkZXZlbnQpID0+IHtcclxuICAgICAgaWYgKHVpLnR5cGUgPT09IFwiZWxlbWVudFwiKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBvcG92ZXJWaXNpYmxlLnZhbHVlID0gIXBvcG92ZXJWaXNpYmxlLnZhbHVlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBjb2x1bW5zRmlsdGVyUmVmLFxyXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXHJcbiAgICAgIHBvcG92ZXJWaXNpYmxlLFxyXG4gICAgICBoYW5kbGVTaW1wbGVDbGlja1xyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy10b29sYmFyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAuZnMtYnV0dG9uIHtcclxuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIi8qKiFcbiAqIFNvcnRhYmxlIDEuMTQuMFxuICogQGF1dGhvclx0UnViYVhhICAgPHRyYXNoQHJ1YmF4YS5vcmc+XG4gKiBAYXV0aG9yXHRvd2VubSAgICA8b3dlbjIzMzU1QGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICovXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7XG5cbiAgICBpZiAoZW51bWVyYWJsZU9ubHkpIHtcbiAgICAgIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuXG4gICAgaWYgKGkgJSAyKSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuXG4gIHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcblxuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgcmV0dXJuIGFycjI7XG59XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5cbnZhciB2ZXJzaW9uID0gXCIxLjE0LjBcIjtcblxuZnVuY3Rpb24gdXNlckFnZW50KHBhdHRlcm4pIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5uYXZpZ2F0b3IpIHtcbiAgICByZXR1cm4gISEgLypAX19QVVJFX18qL25hdmlnYXRvci51c2VyQWdlbnQubWF0Y2gocGF0dGVybik7XG4gIH1cbn1cblxudmFyIElFMTFPckxlc3MgPSB1c2VyQWdlbnQoLyg/OlRyaWRlbnQuKnJ2WyA6XT8xMVxcLnxtc2llfGllbW9iaWxlfFdpbmRvd3MgUGhvbmUpL2kpO1xudmFyIEVkZ2UgPSB1c2VyQWdlbnQoL0VkZ2UvaSk7XG52YXIgRmlyZUZveCA9IHVzZXJBZ2VudCgvZmlyZWZveC9pKTtcbnZhciBTYWZhcmkgPSB1c2VyQWdlbnQoL3NhZmFyaS9pKSAmJiAhdXNlckFnZW50KC9jaHJvbWUvaSkgJiYgIXVzZXJBZ2VudCgvYW5kcm9pZC9pKTtcbnZhciBJT1MgPSB1c2VyQWdlbnQoL2lQKGFkfG9kfGhvbmUpL2kpO1xudmFyIENocm9tZUZvckFuZHJvaWQgPSB1c2VyQWdlbnQoL2Nocm9tZS9pKSAmJiB1c2VyQWdlbnQoL2FuZHJvaWQvaSk7XG5cbnZhciBjYXB0dXJlTW9kZSA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuXG5mdW5jdGlvbiBvbihlbCwgZXZlbnQsIGZuKSB7XG4gIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCAhSUUxMU9yTGVzcyAmJiBjYXB0dXJlTW9kZSk7XG59XG5cbmZ1bmN0aW9uIG9mZihlbCwgZXZlbnQsIGZuKSB7XG4gIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCAhSUUxMU9yTGVzcyAmJiBjYXB0dXJlTW9kZSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMoXG4vKipIVE1MRWxlbWVudCovXG5lbCxcbi8qKlN0cmluZyovXG5zZWxlY3Rvcikge1xuICBpZiAoIXNlbGVjdG9yKSByZXR1cm47XG4gIHNlbGVjdG9yWzBdID09PSAnPicgJiYgKHNlbGVjdG9yID0gc2VsZWN0b3Iuc3Vic3RyaW5nKDEpKTtcblxuICBpZiAoZWwpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGVsLm1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIGVsLm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmIChlbC5tc01hdGNoZXNTZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gZWwubXNNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmIChlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGVsLndlYmtpdE1hdGNoZXNTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50T3JIb3N0KGVsKSB7XG4gIHJldHVybiBlbC5ob3N0ICYmIGVsICE9PSBkb2N1bWVudCAmJiBlbC5ob3N0Lm5vZGVUeXBlID8gZWwuaG9zdCA6IGVsLnBhcmVudE5vZGU7XG59XG5cbmZ1bmN0aW9uIGNsb3Nlc3QoXG4vKipIVE1MRWxlbWVudCovXG5lbCxcbi8qKlN0cmluZyovXG5zZWxlY3Rvcixcbi8qKkhUTUxFbGVtZW50Ki9cbmN0eCwgaW5jbHVkZUNUWCkge1xuICBpZiAoZWwpIHtcbiAgICBjdHggPSBjdHggfHwgZG9jdW1lbnQ7XG5cbiAgICBkbyB7XG4gICAgICBpZiAoc2VsZWN0b3IgIT0gbnVsbCAmJiAoc2VsZWN0b3JbMF0gPT09ICc+JyA/IGVsLnBhcmVudE5vZGUgPT09IGN0eCAmJiBtYXRjaGVzKGVsLCBzZWxlY3RvcikgOiBtYXRjaGVzKGVsLCBzZWxlY3RvcikpIHx8IGluY2x1ZGVDVFggJiYgZWwgPT09IGN0eCkge1xuICAgICAgICByZXR1cm4gZWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbCA9PT0gY3R4KSBicmVhaztcbiAgICAgIC8qIGpzaGludCBib3NzOnRydWUgKi9cbiAgICB9IHdoaWxlIChlbCA9IGdldFBhcmVudE9ySG9zdChlbCkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBSX1NQQUNFID0gL1xccysvZztcblxuZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWwsIG5hbWUsIHN0YXRlKSB7XG4gIGlmIChlbCAmJiBuYW1lKSB7XG4gICAgaWYgKGVsLmNsYXNzTGlzdCkge1xuICAgICAgZWwuY2xhc3NMaXN0W3N0YXRlID8gJ2FkZCcgOiAncmVtb3ZlJ10obmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjbGFzc05hbWUgPSAoJyAnICsgZWwuY2xhc3NOYW1lICsgJyAnKS5yZXBsYWNlKFJfU1BBQ0UsICcgJykucmVwbGFjZSgnICcgKyBuYW1lICsgJyAnLCAnICcpO1xuICAgICAgZWwuY2xhc3NOYW1lID0gKGNsYXNzTmFtZSArIChzdGF0ZSA/ICcgJyArIG5hbWUgOiAnJykpLnJlcGxhY2UoUl9TUEFDRSwgJyAnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3NzKGVsLCBwcm9wLCB2YWwpIHtcbiAgdmFyIHN0eWxlID0gZWwgJiYgZWwuc3R5bGU7XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgaWYgKHZhbCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcgJiYgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSkge1xuICAgICAgICB2YWwgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCAnJyk7XG4gICAgICB9IGVsc2UgaWYgKGVsLmN1cnJlbnRTdHlsZSkge1xuICAgICAgICB2YWwgPSBlbC5jdXJyZW50U3R5bGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wID09PSB2b2lkIDAgPyB2YWwgOiB2YWxbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKHByb3AgaW4gc3R5bGUpICYmIHByb3AuaW5kZXhPZignd2Via2l0JykgPT09IC0xKSB7XG4gICAgICAgIHByb3AgPSAnLXdlYmtpdC0nICsgcHJvcDtcbiAgICAgIH1cblxuICAgICAgc3R5bGVbcHJvcF0gPSB2YWwgKyAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyAnJyA6ICdweCcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXRyaXgoZWwsIHNlbGZPbmx5KSB7XG4gIHZhciBhcHBsaWVkVHJhbnNmb3JtcyA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgYXBwbGllZFRyYW5zZm9ybXMgPSBlbDtcbiAgfSBlbHNlIHtcbiAgICBkbyB7XG4gICAgICB2YXIgdHJhbnNmb3JtID0gY3NzKGVsLCAndHJhbnNmb3JtJyk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtICE9PSAnbm9uZScpIHtcbiAgICAgICAgYXBwbGllZFRyYW5zZm9ybXMgPSB0cmFuc2Zvcm0gKyAnICcgKyBhcHBsaWVkVHJhbnNmb3JtcztcbiAgICAgIH1cbiAgICAgIC8qIGpzaGludCBib3NzOnRydWUgKi9cblxuICAgIH0gd2hpbGUgKCFzZWxmT25seSAmJiAoZWwgPSBlbC5wYXJlbnROb2RlKSk7XG4gIH1cblxuICB2YXIgbWF0cml4Rm4gPSB3aW5kb3cuRE9NTWF0cml4IHx8IHdpbmRvdy5XZWJLaXRDU1NNYXRyaXggfHwgd2luZG93LkNTU01hdHJpeCB8fCB3aW5kb3cuTVNDU1NNYXRyaXg7XG4gIC8qanNoaW50IC1XMDU2ICovXG5cbiAgcmV0dXJuIG1hdHJpeEZuICYmIG5ldyBtYXRyaXhGbihhcHBsaWVkVHJhbnNmb3Jtcyk7XG59XG5cbmZ1bmN0aW9uIGZpbmQoY3R4LCB0YWdOYW1lLCBpdGVyYXRvcikge1xuICBpZiAoY3R4KSB7XG4gICAgdmFyIGxpc3QgPSBjdHguZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSksXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBuID0gbGlzdC5sZW5ndGg7XG5cbiAgICBpZiAoaXRlcmF0b3IpIHtcbiAgICAgIGZvciAoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGl0ZXJhdG9yKGxpc3RbaV0sIGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCkge1xuICB2YXIgc2Nyb2xsaW5nRWxlbWVudCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ7XG5cbiAgaWYgKHNjcm9sbGluZ0VsZW1lbnQpIHtcbiAgICByZXR1cm4gc2Nyb2xsaW5nRWxlbWVudDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB9XG59XG4vKipcbiAqIFJldHVybnMgdGhlIFwiYm91bmRpbmcgY2xpZW50IHJlY3RcIiBvZiBnaXZlbiBlbGVtZW50XG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbGVtZW50IHdob3NlIGJvdW5kaW5nQ2xpZW50UmVjdCBpcyB3YW50ZWRcbiAqIEBwYXJhbSAge1tCb29sZWFuXX0gcmVsYXRpdmVUb0NvbnRhaW5pbmdCbG9jayAgV2hldGhlciB0aGUgcmVjdCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgKGluY2x1ZGluZykgdGhlIGNvbnRhaW5lclxuICogQHBhcmFtICB7W0Jvb2xlYW5dfSByZWxhdGl2ZVRvTm9uU3RhdGljUGFyZW50ICBXaGV0aGVyIHRoZSByZWN0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcmVsYXRpdmUgcGFyZW50IG9mIChpbmNsdWRpbmcpIHRoZSBjb250YWllbnJcbiAqIEBwYXJhbSAge1tCb29sZWFuXX0gdW5kb1NjYWxlICAgICAgICAgICAgICAgICAgV2hldGhlciB0aGUgY29udGFpbmVyJ3Mgc2NhbGUoKSBzaG91bGQgYmUgdW5kb25lXG4gKiBAcGFyYW0gIHtbSFRNTEVsZW1lbnRdfSBjb250YWluZXIgICAgICAgICAgICAgIFRoZSBwYXJlbnQgdGhlIGVsZW1lbnQgd2lsbCBiZSBwbGFjZWQgaW5cbiAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJvdW5kaW5nQ2xpZW50UmVjdCBvZiBlbCwgd2l0aCBzcGVjaWZpZWQgYWRqdXN0bWVudHNcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJlY3QoZWwsIHJlbGF0aXZlVG9Db250YWluaW5nQmxvY2ssIHJlbGF0aXZlVG9Ob25TdGF0aWNQYXJlbnQsIHVuZG9TY2FsZSwgY29udGFpbmVyKSB7XG4gIGlmICghZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICYmIGVsICE9PSB3aW5kb3cpIHJldHVybjtcbiAgdmFyIGVsUmVjdCwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBoZWlnaHQsIHdpZHRoO1xuXG4gIGlmIChlbCAhPT0gd2luZG93ICYmIGVsLnBhcmVudE5vZGUgJiYgZWwgIT09IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKSkge1xuICAgIGVsUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRvcCA9IGVsUmVjdC50b3A7XG4gICAgbGVmdCA9IGVsUmVjdC5sZWZ0O1xuICAgIGJvdHRvbSA9IGVsUmVjdC5ib3R0b207XG4gICAgcmlnaHQgPSBlbFJlY3QucmlnaHQ7XG4gICAgaGVpZ2h0ID0gZWxSZWN0LmhlaWdodDtcbiAgICB3aWR0aCA9IGVsUmVjdC53aWR0aDtcbiAgfSBlbHNlIHtcbiAgICB0b3AgPSAwO1xuICAgIGxlZnQgPSAwO1xuICAgIGJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICByaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICB9XG5cbiAgaWYgKChyZWxhdGl2ZVRvQ29udGFpbmluZ0Jsb2NrIHx8IHJlbGF0aXZlVG9Ob25TdGF0aWNQYXJlbnQpICYmIGVsICE9PSB3aW5kb3cpIHtcbiAgICAvLyBBZGp1c3QgZm9yIHRyYW5zbGF0ZSgpXG4gICAgY29udGFpbmVyID0gY29udGFpbmVyIHx8IGVsLnBhcmVudE5vZGU7IC8vIHNvbHZlcyAjMTEyMyAoc2VlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzc5NTM4MDYvNjA4ODMxMilcbiAgICAvLyBOb3QgbmVlZGVkIG9uIDw9IElFMTFcblxuICAgIGlmICghSUUxMU9yTGVzcykge1xuICAgICAgZG8ge1xuICAgICAgICBpZiAoY29udGFpbmVyICYmIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QgJiYgKGNzcyhjb250YWluZXIsICd0cmFuc2Zvcm0nKSAhPT0gJ25vbmUnIHx8IHJlbGF0aXZlVG9Ob25TdGF0aWNQYXJlbnQgJiYgY3NzKGNvbnRhaW5lciwgJ3Bvc2l0aW9uJykgIT09ICdzdGF0aWMnKSkge1xuICAgICAgICAgIHZhciBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyAvLyBTZXQgcmVsYXRpdmUgdG8gZWRnZXMgb2YgcGFkZGluZyBib3ggb2YgY29udGFpbmVyXG5cbiAgICAgICAgICB0b3AgLT0gY29udGFpbmVyUmVjdC50b3AgKyBwYXJzZUludChjc3MoY29udGFpbmVyLCAnYm9yZGVyLXRvcC13aWR0aCcpKTtcbiAgICAgICAgICBsZWZ0IC09IGNvbnRhaW5lclJlY3QubGVmdCArIHBhcnNlSW50KGNzcyhjb250YWluZXIsICdib3JkZXItbGVmdC13aWR0aCcpKTtcbiAgICAgICAgICBib3R0b20gPSB0b3AgKyBlbFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIHJpZ2h0ID0gbGVmdCArIGVsUmVjdC53aWR0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cbiAgICAgIH0gd2hpbGUgKGNvbnRhaW5lciA9IGNvbnRhaW5lci5wYXJlbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICBpZiAodW5kb1NjYWxlICYmIGVsICE9PSB3aW5kb3cpIHtcbiAgICAvLyBBZGp1c3QgZm9yIHNjYWxlKClcbiAgICB2YXIgZWxNYXRyaXggPSBtYXRyaXgoY29udGFpbmVyIHx8IGVsKSxcbiAgICAgICAgc2NhbGVYID0gZWxNYXRyaXggJiYgZWxNYXRyaXguYSxcbiAgICAgICAgc2NhbGVZID0gZWxNYXRyaXggJiYgZWxNYXRyaXguZDtcblxuICAgIGlmIChlbE1hdHJpeCkge1xuICAgICAgdG9wIC89IHNjYWxlWTtcbiAgICAgIGxlZnQgLz0gc2NhbGVYO1xuICAgICAgd2lkdGggLz0gc2NhbGVYO1xuICAgICAgaGVpZ2h0IC89IHNjYWxlWTtcbiAgICAgIGJvdHRvbSA9IHRvcCArIGhlaWdodDtcbiAgICAgIHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiB0b3AsXG4gICAgbGVmdDogbGVmdCxcbiAgICBib3R0b206IGJvdHRvbSxcbiAgICByaWdodDogcmlnaHQsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59XG4vKipcbiAqIENoZWNrcyBpZiBhIHNpZGUgb2YgYW4gZWxlbWVudCBpcyBzY3JvbGxlZCBwYXN0IGEgc2lkZSBvZiBpdHMgcGFyZW50c1xuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9ICBlbCAgICAgICAgICAgVGhlIGVsZW1lbnQgd2hvJ3Mgc2lkZSBiZWluZyBzY3JvbGxlZCBvdXQgb2YgdmlldyBpcyBpbiBxdWVzdGlvblxuICogQHBhcmFtICB7U3RyaW5nfSAgICAgICBlbFNpZGUgICAgICAgU2lkZSBvZiB0aGUgZWxlbWVudCBpbiBxdWVzdGlvbiAoJ3RvcCcsICdsZWZ0JywgJ3JpZ2h0JywgJ2JvdHRvbScpXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgIHBhcmVudFNpZGUgICBTaWRlIG9mIHRoZSBwYXJlbnQgaW4gcXVlc3Rpb24gKCd0b3AnLCAnbGVmdCcsICdyaWdodCcsICdib3R0b20nKVxuICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgICAgICAgICAgICAgVGhlIHBhcmVudCBzY3JvbGwgZWxlbWVudCB0aGF0IHRoZSBlbCdzIHNpZGUgaXMgc2Nyb2xsZWQgcGFzdCwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGVsZW1lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIGlzU2Nyb2xsZWRQYXN0KGVsLCBlbFNpZGUsIHBhcmVudFNpZGUpIHtcbiAgdmFyIHBhcmVudCA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsLCB0cnVlKSxcbiAgICAgIGVsU2lkZVZhbCA9IGdldFJlY3QoZWwpW2VsU2lkZV07XG4gIC8qIGpzaGludCBib3NzOnRydWUgKi9cblxuICB3aGlsZSAocGFyZW50KSB7XG4gICAgdmFyIHBhcmVudFNpZGVWYWwgPSBnZXRSZWN0KHBhcmVudClbcGFyZW50U2lkZV0sXG4gICAgICAgIHZpc2libGUgPSB2b2lkIDA7XG5cbiAgICBpZiAocGFyZW50U2lkZSA9PT0gJ3RvcCcgfHwgcGFyZW50U2lkZSA9PT0gJ2xlZnQnKSB7XG4gICAgICB2aXNpYmxlID0gZWxTaWRlVmFsID49IHBhcmVudFNpZGVWYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpc2libGUgPSBlbFNpZGVWYWwgPD0gcGFyZW50U2lkZVZhbDtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2libGUpIHJldHVybiBwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCA9PT0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpKSBicmVhaztcbiAgICBwYXJlbnQgPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChwYXJlbnQsIGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogR2V0cyBudGggY2hpbGQgb2YgZWwsIGlnbm9yaW5nIGhpZGRlbiBjaGlsZHJlbiwgc29ydGFibGUncyBlbGVtZW50cyAoZG9lcyBub3QgaWdub3JlIGNsb25lIGlmIGl0J3MgdmlzaWJsZSlcbiAqIGFuZCBub24tZHJhZ2dhYmxlIGVsZW1lbnRzXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgICAgVGhlIHBhcmVudCBlbGVtZW50XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGNoaWxkTnVtICAgICAgVGhlIGluZGV4IG9mIHRoZSBjaGlsZFxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zICAgICAgIFBhcmVudCBTb3J0YWJsZSdzIG9wdGlvbnNcbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgICAgICAgICBUaGUgY2hpbGQgYXQgaW5kZXggY2hpbGROdW0sIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gKi9cblxuXG5mdW5jdGlvbiBnZXRDaGlsZChlbCwgY2hpbGROdW0sIG9wdGlvbnMsIGluY2x1ZGVEcmFnRWwpIHtcbiAgdmFyIGN1cnJlbnRDaGlsZCA9IDAsXG4gICAgICBpID0gMCxcbiAgICAgIGNoaWxkcmVuID0gZWwuY2hpbGRyZW47XG5cbiAgd2hpbGUgKGkgPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBpZiAoY2hpbGRyZW5baV0uc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnICYmIGNoaWxkcmVuW2ldICE9PSBTb3J0YWJsZS5naG9zdCAmJiAoaW5jbHVkZURyYWdFbCB8fCBjaGlsZHJlbltpXSAhPT0gU29ydGFibGUuZHJhZ2dlZCkgJiYgY2xvc2VzdChjaGlsZHJlbltpXSwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCBmYWxzZSkpIHtcbiAgICAgIGlmIChjdXJyZW50Q2hpbGQgPT09IGNoaWxkTnVtKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbltpXTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudENoaWxkKys7XG4gICAgfVxuXG4gICAgaSsrO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEdldHMgdGhlIGxhc3QgY2hpbGQgaW4gdGhlIGVsLCBpZ25vcmluZyBnaG9zdEVsIG9yIGludmlzaWJsZSBlbGVtZW50cyAoY2xvbmVzKVxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgICAgIFBhcmVudCBlbGVtZW50XG4gKiBAcGFyYW0gIHtzZWxlY3Rvcn0gc2VsZWN0b3IgICAgQW55IG90aGVyIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWRcbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgICAgICAgICBUaGUgbGFzdCBjaGlsZCwgaWdub3JpbmcgZ2hvc3RFbFxuICovXG5cblxuZnVuY3Rpb24gbGFzdENoaWxkKGVsLCBzZWxlY3Rvcikge1xuICB2YXIgbGFzdCA9IGVsLmxhc3RFbGVtZW50Q2hpbGQ7XG5cbiAgd2hpbGUgKGxhc3QgJiYgKGxhc3QgPT09IFNvcnRhYmxlLmdob3N0IHx8IGNzcyhsYXN0LCAnZGlzcGxheScpID09PSAnbm9uZScgfHwgc2VsZWN0b3IgJiYgIW1hdGNoZXMobGFzdCwgc2VsZWN0b3IpKSkge1xuICAgIGxhc3QgPSBsYXN0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gIH1cblxuICByZXR1cm4gbGFzdCB8fCBudWxsO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBvZiBhbiBlbGVtZW50IHdpdGhpbiBpdHMgcGFyZW50IGZvciBhIHNlbGVjdGVkIHNldCBvZlxuICogZWxlbWVudHNcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbFxuICogQHBhcmFtICB7c2VsZWN0b3J9IHNlbGVjdG9yXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cblxuXG5mdW5jdGlvbiBpbmRleChlbCwgc2VsZWN0b3IpIHtcbiAgdmFyIGluZGV4ID0gMDtcblxuICBpZiAoIWVsIHx8ICFlbC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIC8qIGpzaGludCBib3NzOnRydWUgKi9cblxuXG4gIHdoaWxlIChlbCA9IGVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICBpZiAoZWwubm9kZU5hbWUudG9VcHBlckNhc2UoKSAhPT0gJ1RFTVBMQVRFJyAmJiBlbCAhPT0gU29ydGFibGUuY2xvbmUgJiYgKCFzZWxlY3RvciB8fCBtYXRjaGVzKGVsLCBzZWxlY3RvcikpKSB7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgc2Nyb2xsIG9mZnNldCBvZiB0aGUgZ2l2ZW4gZWxlbWVudCwgYWRkZWQgd2l0aCBhbGwgdGhlIHNjcm9sbCBvZmZzZXRzIG9mIHBhcmVudCBlbGVtZW50cy5cbiAqIFRoZSB2YWx1ZSBpcyByZXR1cm5lZCBpbiByZWFsIHBpeGVscy5cbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgICAgIE9mZnNldHMgaW4gdGhlIGZvcm1hdCBvZiBbbGVmdCwgdG9wXVxuICovXG5cblxuZnVuY3Rpb24gZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQoZWwpIHtcbiAgdmFyIG9mZnNldExlZnQgPSAwLFxuICAgICAgb2Zmc2V0VG9wID0gMCxcbiAgICAgIHdpblNjcm9sbGVyID0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuXG4gIGlmIChlbCkge1xuICAgIGRvIHtcbiAgICAgIHZhciBlbE1hdHJpeCA9IG1hdHJpeChlbCksXG4gICAgICAgICAgc2NhbGVYID0gZWxNYXRyaXguYSxcbiAgICAgICAgICBzY2FsZVkgPSBlbE1hdHJpeC5kO1xuICAgICAgb2Zmc2V0TGVmdCArPSBlbC5zY3JvbGxMZWZ0ICogc2NhbGVYO1xuICAgICAgb2Zmc2V0VG9wICs9IGVsLnNjcm9sbFRvcCAqIHNjYWxlWTtcbiAgICB9IHdoaWxlIChlbCAhPT0gd2luU2Nyb2xsZXIgJiYgKGVsID0gZWwucGFyZW50Tm9kZSkpO1xuICB9XG5cbiAgcmV0dXJuIFtvZmZzZXRMZWZ0LCBvZmZzZXRUb3BdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgb2JqZWN0IHdpdGhpbiB0aGUgZ2l2ZW4gYXJyYXlcbiAqIEBwYXJhbSAge0FycmF5fSBhcnIgICBBcnJheSB0aGF0IG1heSBvciBtYXkgbm90IGhvbGQgdGhlIG9iamVjdFxuICogQHBhcmFtICB7T2JqZWN0fSBvYmogIEFuIG9iamVjdCB0aGF0IGhhcyBhIGtleS12YWx1ZSBwYWlyIHVuaXF1ZSB0byBhbmQgaWRlbnRpY2FsIHRvIGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIG9iamVjdCB5b3Ugd2FudCB0byBmaW5kXG4gKiBAcmV0dXJuIHtOdW1iZXJ9ICAgICAgVGhlIGluZGV4IG9mIHRoZSBvYmplY3QgaW4gdGhlIGFycmF5LCBvciAtMVxuICovXG5cblxuZnVuY3Rpb24gaW5kZXhPZk9iamVjdChhcnIsIG9iaikge1xuICBmb3IgKHZhciBpIGluIGFycikge1xuICAgIGlmICghYXJyLmhhc093blByb3BlcnR5KGkpKSBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiBvYmpba2V5XSA9PT0gYXJyW2ldW2tleV0pIHJldHVybiBOdW1iZXIoaSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbCwgaW5jbHVkZVNlbGYpIHtcbiAgLy8gc2tpcCB0byB3aW5kb3dcbiAgaWYgKCFlbCB8fCAhZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSByZXR1cm4gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuICB2YXIgZWxlbSA9IGVsO1xuICB2YXIgZ290U2VsZiA9IGZhbHNlO1xuXG4gIGRvIHtcbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGdldCBlbGVtIGNzcyBpZiBpdCBpc24ndCBldmVuIG92ZXJmbG93aW5nIGluIHRoZSBmaXJzdCBwbGFjZSAocGVyZm9ybWFuY2UpXG4gICAgaWYgKGVsZW0uY2xpZW50V2lkdGggPCBlbGVtLnNjcm9sbFdpZHRoIHx8IGVsZW0uY2xpZW50SGVpZ2h0IDwgZWxlbS5zY3JvbGxIZWlnaHQpIHtcbiAgICAgIHZhciBlbGVtQ1NTID0gY3NzKGVsZW0pO1xuXG4gICAgICBpZiAoZWxlbS5jbGllbnRXaWR0aCA8IGVsZW0uc2Nyb2xsV2lkdGggJiYgKGVsZW1DU1Mub3ZlcmZsb3dYID09ICdhdXRvJyB8fCBlbGVtQ1NTLm92ZXJmbG93WCA9PSAnc2Nyb2xsJykgfHwgZWxlbS5jbGllbnRIZWlnaHQgPCBlbGVtLnNjcm9sbEhlaWdodCAmJiAoZWxlbUNTUy5vdmVyZmxvd1kgPT0gJ2F1dG8nIHx8IGVsZW1DU1Mub3ZlcmZsb3dZID09ICdzY3JvbGwnKSkge1xuICAgICAgICBpZiAoIWVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0IHx8IGVsZW0gPT09IGRvY3VtZW50LmJvZHkpIHJldHVybiBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG4gICAgICAgIGlmIChnb3RTZWxmIHx8IGluY2x1ZGVTZWxmKSByZXR1cm4gZWxlbTtcbiAgICAgICAgZ290U2VsZiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGpzaGludCBib3NzOnRydWUgKi9cblxuICB9IHdoaWxlIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKTtcblxuICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xufVxuXG5mdW5jdGlvbiBleHRlbmQoZHN0LCBzcmMpIHtcbiAgaWYgKGRzdCAmJiBzcmMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgICBpZiAoc3JjLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgZHN0W2tleV0gPSBzcmNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZHN0O1xufVxuXG5mdW5jdGlvbiBpc1JlY3RFcXVhbChyZWN0MSwgcmVjdDIpIHtcbiAgcmV0dXJuIE1hdGgucm91bmQocmVjdDEudG9wKSA9PT0gTWF0aC5yb3VuZChyZWN0Mi50b3ApICYmIE1hdGgucm91bmQocmVjdDEubGVmdCkgPT09IE1hdGgucm91bmQocmVjdDIubGVmdCkgJiYgTWF0aC5yb3VuZChyZWN0MS5oZWlnaHQpID09PSBNYXRoLnJvdW5kKHJlY3QyLmhlaWdodCkgJiYgTWF0aC5yb3VuZChyZWN0MS53aWR0aCkgPT09IE1hdGgucm91bmQocmVjdDIud2lkdGgpO1xufVxuXG52YXIgX3Rocm90dGxlVGltZW91dDtcblxuZnVuY3Rpb24gdGhyb3R0bGUoY2FsbGJhY2ssIG1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFfdGhyb3R0bGVUaW1lb3V0KSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjYWxsYmFjay5jYWxsKF90aGlzLCBhcmdzWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrLmFwcGx5KF90aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgX3Rocm90dGxlVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhyb3R0bGVUaW1lb3V0ID0gdm9pZCAwO1xuICAgICAgfSwgbXMpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FuY2VsVGhyb3R0bGUoKSB7XG4gIGNsZWFyVGltZW91dChfdGhyb3R0bGVUaW1lb3V0KTtcbiAgX3Rocm90dGxlVGltZW91dCA9IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gc2Nyb2xsQnkoZWwsIHgsIHkpIHtcbiAgZWwuc2Nyb2xsTGVmdCArPSB4O1xuICBlbC5zY3JvbGxUb3AgKz0geTtcbn1cblxuZnVuY3Rpb24gY2xvbmUoZWwpIHtcbiAgdmFyIFBvbHltZXIgPSB3aW5kb3cuUG9seW1lcjtcbiAgdmFyICQgPSB3aW5kb3cualF1ZXJ5IHx8IHdpbmRvdy5aZXB0bztcblxuICBpZiAoUG9seW1lciAmJiBQb2x5bWVyLmRvbSkge1xuICAgIHJldHVybiBQb2x5bWVyLmRvbShlbCkuY2xvbmVOb2RlKHRydWUpO1xuICB9IGVsc2UgaWYgKCQpIHtcbiAgICByZXR1cm4gJChlbCkuY2xvbmUodHJ1ZSlbMF07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsLmNsb25lTm9kZSh0cnVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRSZWN0KGVsLCByZWN0KSB7XG4gIGNzcyhlbCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gIGNzcyhlbCwgJ3RvcCcsIHJlY3QudG9wKTtcbiAgY3NzKGVsLCAnbGVmdCcsIHJlY3QubGVmdCk7XG4gIGNzcyhlbCwgJ3dpZHRoJywgcmVjdC53aWR0aCk7XG4gIGNzcyhlbCwgJ2hlaWdodCcsIHJlY3QuaGVpZ2h0KTtcbn1cblxuZnVuY3Rpb24gdW5zZXRSZWN0KGVsKSB7XG4gIGNzcyhlbCwgJ3Bvc2l0aW9uJywgJycpO1xuICBjc3MoZWwsICd0b3AnLCAnJyk7XG4gIGNzcyhlbCwgJ2xlZnQnLCAnJyk7XG4gIGNzcyhlbCwgJ3dpZHRoJywgJycpO1xuICBjc3MoZWwsICdoZWlnaHQnLCAnJyk7XG59XG5cbnZhciBleHBhbmRvID0gJ1NvcnRhYmxlJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG5mdW5jdGlvbiBBbmltYXRpb25TdGF0ZU1hbmFnZXIoKSB7XG4gIHZhciBhbmltYXRpb25TdGF0ZXMgPSBbXSxcbiAgICAgIGFuaW1hdGlvbkNhbGxiYWNrSWQ7XG4gIHJldHVybiB7XG4gICAgY2FwdHVyZUFuaW1hdGlvblN0YXRlOiBmdW5jdGlvbiBjYXB0dXJlQW5pbWF0aW9uU3RhdGUoKSB7XG4gICAgICBhbmltYXRpb25TdGF0ZXMgPSBbXTtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFuaW1hdGlvbikgcmV0dXJuO1xuICAgICAgdmFyIGNoaWxkcmVuID0gW10uc2xpY2UuY2FsbCh0aGlzLmVsLmNoaWxkcmVuKTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChjc3MoY2hpbGQsICdkaXNwbGF5JykgPT09ICdub25lJyB8fCBjaGlsZCA9PT0gU29ydGFibGUuZ2hvc3QpIHJldHVybjtcbiAgICAgICAgYW5pbWF0aW9uU3RhdGVzLnB1c2goe1xuICAgICAgICAgIHRhcmdldDogY2hpbGQsXG4gICAgICAgICAgcmVjdDogZ2V0UmVjdChjaGlsZClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGZyb21SZWN0ID0gX29iamVjdFNwcmVhZDIoe30sIGFuaW1hdGlvblN0YXRlc1thbmltYXRpb25TdGF0ZXMubGVuZ3RoIC0gMV0ucmVjdCk7IC8vIElmIGFuaW1hdGluZzogY29tcGVuc2F0ZSBmb3IgY3VycmVudCBhbmltYXRpb25cblxuXG4gICAgICAgIGlmIChjaGlsZC50aGlzQW5pbWF0aW9uRHVyYXRpb24pIHtcbiAgICAgICAgICB2YXIgY2hpbGRNYXRyaXggPSBtYXRyaXgoY2hpbGQsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKGNoaWxkTWF0cml4KSB7XG4gICAgICAgICAgICBmcm9tUmVjdC50b3AgLT0gY2hpbGRNYXRyaXguZjtcbiAgICAgICAgICAgIGZyb21SZWN0LmxlZnQgLT0gY2hpbGRNYXRyaXguZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjaGlsZC5mcm9tUmVjdCA9IGZyb21SZWN0O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhZGRBbmltYXRpb25TdGF0ZTogZnVuY3Rpb24gYWRkQW5pbWF0aW9uU3RhdGUoc3RhdGUpIHtcbiAgICAgIGFuaW1hdGlvblN0YXRlcy5wdXNoKHN0YXRlKTtcbiAgICB9LFxuICAgIHJlbW92ZUFuaW1hdGlvblN0YXRlOiBmdW5jdGlvbiByZW1vdmVBbmltYXRpb25TdGF0ZSh0YXJnZXQpIHtcbiAgICAgIGFuaW1hdGlvblN0YXRlcy5zcGxpY2UoaW5kZXhPZk9iamVjdChhbmltYXRpb25TdGF0ZXMsIHtcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRcbiAgICAgIH0pLCAxKTtcbiAgICB9LFxuICAgIGFuaW1hdGVBbGw6IGZ1bmN0aW9uIGFuaW1hdGVBbGwoY2FsbGJhY2spIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmFuaW1hdGlvbikge1xuICAgICAgICBjbGVhclRpbWVvdXQoYW5pbWF0aW9uQ2FsbGJhY2tJZCk7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGFuaW1hdGluZyA9IGZhbHNlLFxuICAgICAgICAgIGFuaW1hdGlvblRpbWUgPSAwO1xuICAgICAgYW5pbWF0aW9uU3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHZhciB0aW1lID0gMCxcbiAgICAgICAgICAgIHRhcmdldCA9IHN0YXRlLnRhcmdldCxcbiAgICAgICAgICAgIGZyb21SZWN0ID0gdGFyZ2V0LmZyb21SZWN0LFxuICAgICAgICAgICAgdG9SZWN0ID0gZ2V0UmVjdCh0YXJnZXQpLFxuICAgICAgICAgICAgcHJldkZyb21SZWN0ID0gdGFyZ2V0LnByZXZGcm9tUmVjdCxcbiAgICAgICAgICAgIHByZXZUb1JlY3QgPSB0YXJnZXQucHJldlRvUmVjdCxcbiAgICAgICAgICAgIGFuaW1hdGluZ1JlY3QgPSBzdGF0ZS5yZWN0LFxuICAgICAgICAgICAgdGFyZ2V0TWF0cml4ID0gbWF0cml4KHRhcmdldCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRhcmdldE1hdHJpeCkge1xuICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIGN1cnJlbnQgYW5pbWF0aW9uXG4gICAgICAgICAgdG9SZWN0LnRvcCAtPSB0YXJnZXRNYXRyaXguZjtcbiAgICAgICAgICB0b1JlY3QubGVmdCAtPSB0YXJnZXRNYXRyaXguZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldC50b1JlY3QgPSB0b1JlY3Q7XG5cbiAgICAgICAgaWYgKHRhcmdldC50aGlzQW5pbWF0aW9uRHVyYXRpb24pIHtcbiAgICAgICAgICAvLyBDb3VsZCBhbHNvIGNoZWNrIGlmIGFuaW1hdGluZ1JlY3QgaXMgYmV0d2VlbiBmcm9tUmVjdCBhbmQgdG9SZWN0XG4gICAgICAgICAgaWYgKGlzUmVjdEVxdWFsKHByZXZGcm9tUmVjdCwgdG9SZWN0KSAmJiAhaXNSZWN0RXF1YWwoZnJvbVJlY3QsIHRvUmVjdCkgJiYgLy8gTWFrZSBzdXJlIGFuaW1hdGluZ1JlY3QgaXMgb24gbGluZSBiZXR3ZWVuIHRvUmVjdCAmIGZyb21SZWN0XG4gICAgICAgICAgKGFuaW1hdGluZ1JlY3QudG9wIC0gdG9SZWN0LnRvcCkgLyAoYW5pbWF0aW5nUmVjdC5sZWZ0IC0gdG9SZWN0LmxlZnQpID09PSAoZnJvbVJlY3QudG9wIC0gdG9SZWN0LnRvcCkgLyAoZnJvbVJlY3QubGVmdCAtIHRvUmVjdC5sZWZ0KSkge1xuICAgICAgICAgICAgLy8gSWYgcmV0dXJuaW5nIHRvIHNhbWUgcGxhY2UgYXMgc3RhcnRlZCBmcm9tIGFuaW1hdGlvbiBhbmQgb24gc2FtZSBheGlzXG4gICAgICAgICAgICB0aW1lID0gY2FsY3VsYXRlUmVhbFRpbWUoYW5pbWF0aW5nUmVjdCwgcHJldkZyb21SZWN0LCBwcmV2VG9SZWN0LCBfdGhpcy5vcHRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gaWYgZnJvbVJlY3QgIT0gdG9SZWN0OiBhbmltYXRlXG5cblxuICAgICAgICBpZiAoIWlzUmVjdEVxdWFsKHRvUmVjdCwgZnJvbVJlY3QpKSB7XG4gICAgICAgICAgdGFyZ2V0LnByZXZGcm9tUmVjdCA9IGZyb21SZWN0O1xuICAgICAgICAgIHRhcmdldC5wcmV2VG9SZWN0ID0gdG9SZWN0O1xuXG4gICAgICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgICAgICB0aW1lID0gX3RoaXMub3B0aW9ucy5hbmltYXRpb247XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMuYW5pbWF0ZSh0YXJnZXQsIGFuaW1hdGluZ1JlY3QsIHRvUmVjdCwgdGltZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGltZSkge1xuICAgICAgICAgIGFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgICAgYW5pbWF0aW9uVGltZSA9IE1hdGgubWF4KGFuaW1hdGlvblRpbWUsIHRpbWUpO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0YXJnZXQuYW5pbWF0aW9uUmVzZXRUaW1lcik7XG4gICAgICAgICAgdGFyZ2V0LmFuaW1hdGlvblJlc2V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRhcmdldC5hbmltYXRpb25UaW1lID0gMDtcbiAgICAgICAgICAgIHRhcmdldC5wcmV2RnJvbVJlY3QgPSBudWxsO1xuICAgICAgICAgICAgdGFyZ2V0LmZyb21SZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRhcmdldC5wcmV2VG9SZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRhcmdldC50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSBudWxsO1xuICAgICAgICAgIH0sIHRpbWUpO1xuICAgICAgICAgIHRhcmdldC50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSB0aW1lO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsZWFyVGltZW91dChhbmltYXRpb25DYWxsYmFja0lkKTtcblxuICAgICAgaWYgKCFhbmltYXRpbmcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbkNhbGxiYWNrSWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuICAgICAgICB9LCBhbmltYXRpb25UaW1lKTtcbiAgICAgIH1cblxuICAgICAgYW5pbWF0aW9uU3RhdGVzID0gW107XG4gICAgfSxcbiAgICBhbmltYXRlOiBmdW5jdGlvbiBhbmltYXRlKHRhcmdldCwgY3VycmVudFJlY3QsIHRvUmVjdCwgZHVyYXRpb24pIHtcbiAgICAgIGlmIChkdXJhdGlvbikge1xuICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNpdGlvbicsICcnKTtcbiAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICcnKTtcbiAgICAgICAgdmFyIGVsTWF0cml4ID0gbWF0cml4KHRoaXMuZWwpLFxuICAgICAgICAgICAgc2NhbGVYID0gZWxNYXRyaXggJiYgZWxNYXRyaXguYSxcbiAgICAgICAgICAgIHNjYWxlWSA9IGVsTWF0cml4ICYmIGVsTWF0cml4LmQsXG4gICAgICAgICAgICB0cmFuc2xhdGVYID0gKGN1cnJlbnRSZWN0LmxlZnQgLSB0b1JlY3QubGVmdCkgLyAoc2NhbGVYIHx8IDEpLFxuICAgICAgICAgICAgdHJhbnNsYXRlWSA9IChjdXJyZW50UmVjdC50b3AgLSB0b1JlY3QudG9wKSAvIChzY2FsZVkgfHwgMSk7XG4gICAgICAgIHRhcmdldC5hbmltYXRpbmdYID0gISF0cmFuc2xhdGVYO1xuICAgICAgICB0YXJnZXQuYW5pbWF0aW5nWSA9ICEhdHJhbnNsYXRlWTtcbiAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUzZCgnICsgdHJhbnNsYXRlWCArICdweCwnICsgdHJhbnNsYXRlWSArICdweCwwKScpO1xuICAgICAgICB0aGlzLmZvclJlcGFpbnREdW1teSA9IHJlcGFpbnQodGFyZ2V0KTsgLy8gcmVwYWludFxuXG4gICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAnICsgZHVyYXRpb24gKyAnbXMnICsgKHRoaXMub3B0aW9ucy5lYXNpbmcgPyAnICcgKyB0aGlzLm9wdGlvbnMuZWFzaW5nIDogJycpKTtcbiAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUzZCgwLDAsMCknKTtcbiAgICAgICAgdHlwZW9mIHRhcmdldC5hbmltYXRlZCA9PT0gJ251bWJlcicgJiYgY2xlYXJUaW1lb3V0KHRhcmdldC5hbmltYXRlZCk7XG4gICAgICAgIHRhcmdldC5hbmltYXRlZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2l0aW9uJywgJycpO1xuICAgICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgICAgdGFyZ2V0LmFuaW1hdGVkID0gZmFsc2U7XG4gICAgICAgICAgdGFyZ2V0LmFuaW1hdGluZ1ggPSBmYWxzZTtcbiAgICAgICAgICB0YXJnZXQuYW5pbWF0aW5nWSA9IGZhbHNlO1xuICAgICAgICB9LCBkdXJhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiByZXBhaW50KHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0Lm9mZnNldFdpZHRoO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVSZWFsVGltZShhbmltYXRpbmdSZWN0LCBmcm9tUmVjdCwgdG9SZWN0LCBvcHRpb25zKSB7XG4gIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coZnJvbVJlY3QudG9wIC0gYW5pbWF0aW5nUmVjdC50b3AsIDIpICsgTWF0aC5wb3coZnJvbVJlY3QubGVmdCAtIGFuaW1hdGluZ1JlY3QubGVmdCwgMikpIC8gTWF0aC5zcXJ0KE1hdGgucG93KGZyb21SZWN0LnRvcCAtIHRvUmVjdC50b3AsIDIpICsgTWF0aC5wb3coZnJvbVJlY3QubGVmdCAtIHRvUmVjdC5sZWZ0LCAyKSkgKiBvcHRpb25zLmFuaW1hdGlvbjtcbn1cblxudmFyIHBsdWdpbnMgPSBbXTtcbnZhciBkZWZhdWx0cyA9IHtcbiAgaW5pdGlhbGl6ZUJ5RGVmYXVsdDogdHJ1ZVxufTtcbnZhciBQbHVnaW5NYW5hZ2VyID0ge1xuICBtb3VudDogZnVuY3Rpb24gbW91bnQocGx1Z2luKSB7XG4gICAgLy8gU2V0IGRlZmF1bHQgc3RhdGljIHByb3BlcnRpZXNcbiAgICBmb3IgKHZhciBvcHRpb24gaW4gZGVmYXVsdHMpIHtcbiAgICAgIGlmIChkZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pICYmICEob3B0aW9uIGluIHBsdWdpbikpIHtcbiAgICAgICAgcGx1Z2luW29wdGlvbl0gPSBkZWZhdWx0c1tvcHRpb25dO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgaWYgKHAucGx1Z2luTmFtZSA9PT0gcGx1Z2luLnBsdWdpbk5hbWUpIHtcbiAgICAgICAgdGhyb3cgXCJTb3J0YWJsZTogQ2Fubm90IG1vdW50IHBsdWdpbiBcIi5jb25jYXQocGx1Z2luLnBsdWdpbk5hbWUsIFwiIG1vcmUgdGhhbiBvbmNlXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHBsdWdpbnMucHVzaChwbHVnaW4pO1xuICB9LFxuICBwbHVnaW5FdmVudDogZnVuY3Rpb24gcGx1Z2luRXZlbnQoZXZlbnROYW1lLCBzb3J0YWJsZSwgZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuZXZlbnRDYW5jZWxlZCA9IGZhbHNlO1xuXG4gICAgZXZ0LmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmV2ZW50Q2FuY2VsZWQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgZXZlbnROYW1lR2xvYmFsID0gZXZlbnROYW1lICsgJ0dsb2JhbCc7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmICghc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdKSByZXR1cm47IC8vIEZpcmUgZ2xvYmFsIGV2ZW50cyBpZiBpdCBleGlzdHMgaW4gdGhpcyBzb3J0YWJsZVxuXG4gICAgICBpZiAoc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdW2V2ZW50TmFtZUdsb2JhbF0pIHtcbiAgICAgICAgc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdW2V2ZW50TmFtZUdsb2JhbF0oX29iamVjdFNwcmVhZDIoe1xuICAgICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZVxuICAgICAgICB9LCBldnQpKTtcbiAgICAgIH0gLy8gT25seSBmaXJlIHBsdWdpbiBldmVudCBpZiBwbHVnaW4gaXMgZW5hYmxlZCBpbiB0aGlzIHNvcnRhYmxlLFxuICAgICAgLy8gYW5kIHBsdWdpbiBoYXMgZXZlbnQgZGVmaW5lZFxuXG5cbiAgICAgIGlmIChzb3J0YWJsZS5vcHRpb25zW3BsdWdpbi5wbHVnaW5OYW1lXSAmJiBzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV1bZXZlbnROYW1lXSkge1xuICAgICAgICBzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV1bZXZlbnROYW1lXShfb2JqZWN0U3ByZWFkMih7XG4gICAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlXG4gICAgICAgIH0sIGV2dCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICBpbml0aWFsaXplUGx1Z2luczogZnVuY3Rpb24gaW5pdGlhbGl6ZVBsdWdpbnMoc29ydGFibGUsIGVsLCBkZWZhdWx0cywgb3B0aW9ucykge1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgICB2YXIgcGx1Z2luTmFtZSA9IHBsdWdpbi5wbHVnaW5OYW1lO1xuICAgICAgaWYgKCFzb3J0YWJsZS5vcHRpb25zW3BsdWdpbk5hbWVdICYmICFwbHVnaW4uaW5pdGlhbGl6ZUJ5RGVmYXVsdCkgcmV0dXJuO1xuICAgICAgdmFyIGluaXRpYWxpemVkID0gbmV3IHBsdWdpbihzb3J0YWJsZSwgZWwsIHNvcnRhYmxlLm9wdGlvbnMpO1xuICAgICAgaW5pdGlhbGl6ZWQuc29ydGFibGUgPSBzb3J0YWJsZTtcbiAgICAgIGluaXRpYWxpemVkLm9wdGlvbnMgPSBzb3J0YWJsZS5vcHRpb25zO1xuICAgICAgc29ydGFibGVbcGx1Z2luTmFtZV0gPSBpbml0aWFsaXplZDsgLy8gQWRkIGRlZmF1bHQgb3B0aW9ucyBmcm9tIHBsdWdpblxuXG4gICAgICBfZXh0ZW5kcyhkZWZhdWx0cywgaW5pdGlhbGl6ZWQuZGVmYXVsdHMpO1xuICAgIH0pO1xuXG4gICAgZm9yICh2YXIgb3B0aW9uIGluIHNvcnRhYmxlLm9wdGlvbnMpIHtcbiAgICAgIGlmICghc29ydGFibGUub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pKSBjb250aW51ZTtcbiAgICAgIHZhciBtb2RpZmllZCA9IHRoaXMubW9kaWZ5T3B0aW9uKHNvcnRhYmxlLCBvcHRpb24sIHNvcnRhYmxlLm9wdGlvbnNbb3B0aW9uXSk7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9kaWZpZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNvcnRhYmxlLm9wdGlvbnNbb3B0aW9uXSA9IG1vZGlmaWVkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZ2V0RXZlbnRQcm9wZXJ0aWVzOiBmdW5jdGlvbiBnZXRFdmVudFByb3BlcnRpZXMobmFtZSwgc29ydGFibGUpIHtcbiAgICB2YXIgZXZlbnRQcm9wZXJ0aWVzID0ge307XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmICh0eXBlb2YgcGx1Z2luLmV2ZW50UHJvcGVydGllcyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuO1xuXG4gICAgICBfZXh0ZW5kcyhldmVudFByb3BlcnRpZXMsIHBsdWdpbi5ldmVudFByb3BlcnRpZXMuY2FsbChzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV0sIG5hbWUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZXZlbnRQcm9wZXJ0aWVzO1xuICB9LFxuICBtb2RpZnlPcHRpb246IGZ1bmN0aW9uIG1vZGlmeU9wdGlvbihzb3J0YWJsZSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgbW9kaWZpZWRWYWx1ZTtcbiAgICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgLy8gUGx1Z2luIG11c3QgZXhpc3Qgb24gdGhlIFNvcnRhYmxlXG4gICAgICBpZiAoIXNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXSkgcmV0dXJuOyAvLyBJZiBzdGF0aWMgb3B0aW9uIGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBvcHRpb24sIGNhbGwgaW4gdGhlIGNvbnRleHQgb2YgdGhlIFNvcnRhYmxlJ3MgaW5zdGFuY2Ugb2YgdGhpcyBwbHVnaW5cblxuICAgICAgaWYgKHBsdWdpbi5vcHRpb25MaXN0ZW5lcnMgJiYgdHlwZW9mIHBsdWdpbi5vcHRpb25MaXN0ZW5lcnNbbmFtZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbW9kaWZpZWRWYWx1ZSA9IHBsdWdpbi5vcHRpb25MaXN0ZW5lcnNbbmFtZV0uY2FsbChzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbW9kaWZpZWRWYWx1ZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChfcmVmKSB7XG4gIHZhciBzb3J0YWJsZSA9IF9yZWYuc29ydGFibGUsXG4gICAgICByb290RWwgPSBfcmVmLnJvb3RFbCxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICB0YXJnZXRFbCA9IF9yZWYudGFyZ2V0RWwsXG4gICAgICBjbG9uZUVsID0gX3JlZi5jbG9uZUVsLFxuICAgICAgdG9FbCA9IF9yZWYudG9FbCxcbiAgICAgIGZyb21FbCA9IF9yZWYuZnJvbUVsLFxuICAgICAgb2xkSW5kZXggPSBfcmVmLm9sZEluZGV4LFxuICAgICAgbmV3SW5kZXggPSBfcmVmLm5ld0luZGV4LFxuICAgICAgb2xkRHJhZ2dhYmxlSW5kZXggPSBfcmVmLm9sZERyYWdnYWJsZUluZGV4LFxuICAgICAgbmV3RHJhZ2dhYmxlSW5kZXggPSBfcmVmLm5ld0RyYWdnYWJsZUluZGV4LFxuICAgICAgb3JpZ2luYWxFdmVudCA9IF9yZWYub3JpZ2luYWxFdmVudCxcbiAgICAgIHB1dFNvcnRhYmxlID0gX3JlZi5wdXRTb3J0YWJsZSxcbiAgICAgIGV4dHJhRXZlbnRQcm9wZXJ0aWVzID0gX3JlZi5leHRyYUV2ZW50UHJvcGVydGllcztcbiAgc29ydGFibGUgPSBzb3J0YWJsZSB8fCByb290RWwgJiYgcm9vdEVsW2V4cGFuZG9dO1xuICBpZiAoIXNvcnRhYmxlKSByZXR1cm47XG4gIHZhciBldnQsXG4gICAgICBvcHRpb25zID0gc29ydGFibGUub3B0aW9ucyxcbiAgICAgIG9uTmFtZSA9ICdvbicgKyBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHIoMSk7IC8vIFN1cHBvcnQgZm9yIG5ldyBDdXN0b21FdmVudCBmZWF0dXJlXG5cbiAgaWYgKHdpbmRvdy5DdXN0b21FdmVudCAmJiAhSUUxMU9yTGVzcyAmJiAhRWRnZSkge1xuICAgIGV2dCA9IG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2dC5pbml0RXZlbnQobmFtZSwgdHJ1ZSwgdHJ1ZSk7XG4gIH1cblxuICBldnQudG8gPSB0b0VsIHx8IHJvb3RFbDtcbiAgZXZ0LmZyb20gPSBmcm9tRWwgfHwgcm9vdEVsO1xuICBldnQuaXRlbSA9IHRhcmdldEVsIHx8IHJvb3RFbDtcbiAgZXZ0LmNsb25lID0gY2xvbmVFbDtcbiAgZXZ0Lm9sZEluZGV4ID0gb2xkSW5kZXg7XG4gIGV2dC5uZXdJbmRleCA9IG5ld0luZGV4O1xuICBldnQub2xkRHJhZ2dhYmxlSW5kZXggPSBvbGREcmFnZ2FibGVJbmRleDtcbiAgZXZ0Lm5ld0RyYWdnYWJsZUluZGV4ID0gbmV3RHJhZ2dhYmxlSW5kZXg7XG4gIGV2dC5vcmlnaW5hbEV2ZW50ID0gb3JpZ2luYWxFdmVudDtcbiAgZXZ0LnB1bGxNb2RlID0gcHV0U29ydGFibGUgPyBwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSA6IHVuZGVmaW5lZDtcblxuICB2YXIgYWxsRXZlbnRQcm9wZXJ0aWVzID0gX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIGV4dHJhRXZlbnRQcm9wZXJ0aWVzKSwgUGx1Z2luTWFuYWdlci5nZXRFdmVudFByb3BlcnRpZXMobmFtZSwgc29ydGFibGUpKTtcblxuICBmb3IgKHZhciBvcHRpb24gaW4gYWxsRXZlbnRQcm9wZXJ0aWVzKSB7XG4gICAgZXZ0W29wdGlvbl0gPSBhbGxFdmVudFByb3BlcnRpZXNbb3B0aW9uXTtcbiAgfVxuXG4gIGlmIChyb290RWwpIHtcbiAgICByb290RWwuZGlzcGF0Y2hFdmVudChldnQpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnNbb25OYW1lXSkge1xuICAgIG9wdGlvbnNbb25OYW1lXS5jYWxsKHNvcnRhYmxlLCBldnQpO1xuICB9XG59XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJldnRcIl07XG5cbnZhciBwbHVnaW5FdmVudCA9IGZ1bmN0aW9uIHBsdWdpbkV2ZW50KGV2ZW50TmFtZSwgc29ydGFibGUpIHtcbiAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9LFxuICAgICAgb3JpZ2luYWxFdmVudCA9IF9yZWYuZXZ0LFxuICAgICAgZGF0YSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIFBsdWdpbk1hbmFnZXIucGx1Z2luRXZlbnQuYmluZChTb3J0YWJsZSkoZXZlbnROYW1lLCBzb3J0YWJsZSwgX29iamVjdFNwcmVhZDIoe1xuICAgIGRyYWdFbDogZHJhZ0VsLFxuICAgIHBhcmVudEVsOiBwYXJlbnRFbCxcbiAgICBnaG9zdEVsOiBnaG9zdEVsLFxuICAgIHJvb3RFbDogcm9vdEVsLFxuICAgIG5leHRFbDogbmV4dEVsLFxuICAgIGxhc3REb3duRWw6IGxhc3REb3duRWwsXG4gICAgY2xvbmVFbDogY2xvbmVFbCxcbiAgICBjbG9uZUhpZGRlbjogY2xvbmVIaWRkZW4sXG4gICAgZHJhZ1N0YXJ0ZWQ6IG1vdmVkLFxuICAgIHB1dFNvcnRhYmxlOiBwdXRTb3J0YWJsZSxcbiAgICBhY3RpdmVTb3J0YWJsZTogU29ydGFibGUuYWN0aXZlLFxuICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnQsXG4gICAgb2xkSW5kZXg6IG9sZEluZGV4LFxuICAgIG9sZERyYWdnYWJsZUluZGV4OiBvbGREcmFnZ2FibGVJbmRleCxcbiAgICBuZXdJbmRleDogbmV3SW5kZXgsXG4gICAgbmV3RHJhZ2dhYmxlSW5kZXg6IG5ld0RyYWdnYWJsZUluZGV4LFxuICAgIGhpZGVHaG9zdEZvclRhcmdldDogX2hpZGVHaG9zdEZvclRhcmdldCxcbiAgICB1bmhpZGVHaG9zdEZvclRhcmdldDogX3VuaGlkZUdob3N0Rm9yVGFyZ2V0LFxuICAgIGNsb25lTm93SGlkZGVuOiBmdW5jdGlvbiBjbG9uZU5vd0hpZGRlbigpIHtcbiAgICAgIGNsb25lSGlkZGVuID0gdHJ1ZTtcbiAgICB9LFxuICAgIGNsb25lTm93U2hvd246IGZ1bmN0aW9uIGNsb25lTm93U2hvd24oKSB7XG4gICAgICBjbG9uZUhpZGRlbiA9IGZhbHNlO1xuICAgIH0sXG4gICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50OiBmdW5jdGlvbiBkaXNwYXRjaFNvcnRhYmxlRXZlbnQobmFtZSkge1xuICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICBzb3J0YWJsZTogc29ydGFibGUsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgZGF0YSkpO1xufTtcblxuZnVuY3Rpb24gX2Rpc3BhdGNoRXZlbnQoaW5mbykge1xuICBkaXNwYXRjaEV2ZW50KF9vYmplY3RTcHJlYWQyKHtcbiAgICBwdXRTb3J0YWJsZTogcHV0U29ydGFibGUsXG4gICAgY2xvbmVFbDogY2xvbmVFbCxcbiAgICB0YXJnZXRFbDogZHJhZ0VsLFxuICAgIHJvb3RFbDogcm9vdEVsLFxuICAgIG9sZEluZGV4OiBvbGRJbmRleCxcbiAgICBvbGREcmFnZ2FibGVJbmRleDogb2xkRHJhZ2dhYmxlSW5kZXgsXG4gICAgbmV3SW5kZXg6IG5ld0luZGV4LFxuICAgIG5ld0RyYWdnYWJsZUluZGV4OiBuZXdEcmFnZ2FibGVJbmRleFxuICB9LCBpbmZvKSk7XG59XG5cbnZhciBkcmFnRWwsXG4gICAgcGFyZW50RWwsXG4gICAgZ2hvc3RFbCxcbiAgICByb290RWwsXG4gICAgbmV4dEVsLFxuICAgIGxhc3REb3duRWwsXG4gICAgY2xvbmVFbCxcbiAgICBjbG9uZUhpZGRlbixcbiAgICBvbGRJbmRleCxcbiAgICBuZXdJbmRleCxcbiAgICBvbGREcmFnZ2FibGVJbmRleCxcbiAgICBuZXdEcmFnZ2FibGVJbmRleCxcbiAgICBhY3RpdmVHcm91cCxcbiAgICBwdXRTb3J0YWJsZSxcbiAgICBhd2FpdGluZ0RyYWdTdGFydGVkID0gZmFsc2UsXG4gICAgaWdub3JlTmV4dENsaWNrID0gZmFsc2UsXG4gICAgc29ydGFibGVzID0gW10sXG4gICAgdGFwRXZ0LFxuICAgIHRvdWNoRXZ0LFxuICAgIGxhc3REeCxcbiAgICBsYXN0RHksXG4gICAgdGFwRGlzdGFuY2VMZWZ0LFxuICAgIHRhcERpc3RhbmNlVG9wLFxuICAgIG1vdmVkLFxuICAgIGxhc3RUYXJnZXQsXG4gICAgbGFzdERpcmVjdGlvbixcbiAgICBwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggPSBmYWxzZSxcbiAgICBpc0NpcmN1bXN0YW50aWFsSW52ZXJ0ID0gZmFsc2UsXG4gICAgdGFyZ2V0TW92ZURpc3RhbmNlLFxuICAgIC8vIEZvciBwb3NpdGlvbmluZyBnaG9zdCBhYnNvbHV0ZWx5XG5naG9zdFJlbGF0aXZlUGFyZW50LFxuICAgIGdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsID0gW10sXG4gICAgLy8gKGxlZnQsIHRvcClcbl9zaWxlbnQgPSBmYWxzZSxcbiAgICBzYXZlZElucHV0Q2hlY2tlZCA9IFtdO1xuLyoqIEBjb25zdCAqL1xuXG52YXIgZG9jdW1lbnRFeGlzdHMgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnLFxuICAgIFBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5ID0gSU9TLFxuICAgIENTU0Zsb2F0UHJvcGVydHkgPSBFZGdlIHx8IElFMTFPckxlc3MgPyAnY3NzRmxvYXQnIDogJ2Zsb2F0JyxcbiAgICAvLyBUaGlzIHdpbGwgbm90IHBhc3MgZm9yIElFOSwgYmVjYXVzZSBJRTkgRG5EIG9ubHkgd29ya3Mgb24gYW5jaG9yc1xuc3VwcG9ydERyYWdnYWJsZSA9IGRvY3VtZW50RXhpc3RzICYmICFDaHJvbWVGb3JBbmRyb2lkICYmICFJT1MgJiYgJ2RyYWdnYWJsZScgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgc3VwcG9ydENzc1BvaW50ZXJFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghZG9jdW1lbnRFeGlzdHMpIHJldHVybjsgLy8gZmFsc2Ugd2hlbiA8PSBJRTExXG5cbiAgaWYgKElFMTFPckxlc3MpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd4Jyk7XG4gIGVsLnN0eWxlLmNzc1RleHQgPSAncG9pbnRlci1ldmVudHM6YXV0byc7XG4gIHJldHVybiBlbC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnYXV0byc7XG59KCksXG4gICAgX2RldGVjdERpcmVjdGlvbiA9IGZ1bmN0aW9uIF9kZXRlY3REaXJlY3Rpb24oZWwsIG9wdGlvbnMpIHtcbiAgdmFyIGVsQ1NTID0gY3NzKGVsKSxcbiAgICAgIGVsV2lkdGggPSBwYXJzZUludChlbENTUy53aWR0aCkgLSBwYXJzZUludChlbENTUy5wYWRkaW5nTGVmdCkgLSBwYXJzZUludChlbENTUy5wYWRkaW5nUmlnaHQpIC0gcGFyc2VJbnQoZWxDU1MuYm9yZGVyTGVmdFdpZHRoKSAtIHBhcnNlSW50KGVsQ1NTLmJvcmRlclJpZ2h0V2lkdGgpLFxuICAgICAgY2hpbGQxID0gZ2V0Q2hpbGQoZWwsIDAsIG9wdGlvbnMpLFxuICAgICAgY2hpbGQyID0gZ2V0Q2hpbGQoZWwsIDEsIG9wdGlvbnMpLFxuICAgICAgZmlyc3RDaGlsZENTUyA9IGNoaWxkMSAmJiBjc3MoY2hpbGQxKSxcbiAgICAgIHNlY29uZENoaWxkQ1NTID0gY2hpbGQyICYmIGNzcyhjaGlsZDIpLFxuICAgICAgZmlyc3RDaGlsZFdpZHRoID0gZmlyc3RDaGlsZENTUyAmJiBwYXJzZUludChmaXJzdENoaWxkQ1NTLm1hcmdpbkxlZnQpICsgcGFyc2VJbnQoZmlyc3RDaGlsZENTUy5tYXJnaW5SaWdodCkgKyBnZXRSZWN0KGNoaWxkMSkud2lkdGgsXG4gICAgICBzZWNvbmRDaGlsZFdpZHRoID0gc2Vjb25kQ2hpbGRDU1MgJiYgcGFyc2VJbnQoc2Vjb25kQ2hpbGRDU1MubWFyZ2luTGVmdCkgKyBwYXJzZUludChzZWNvbmRDaGlsZENTUy5tYXJnaW5SaWdodCkgKyBnZXRSZWN0KGNoaWxkMikud2lkdGg7XG5cbiAgaWYgKGVsQ1NTLmRpc3BsYXkgPT09ICdmbGV4Jykge1xuICAgIHJldHVybiBlbENTUy5mbGV4RGlyZWN0aW9uID09PSAnY29sdW1uJyB8fCBlbENTUy5mbGV4RGlyZWN0aW9uID09PSAnY29sdW1uLXJldmVyc2UnID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcbiAgfVxuXG4gIGlmIChlbENTUy5kaXNwbGF5ID09PSAnZ3JpZCcpIHtcbiAgICByZXR1cm4gZWxDU1MuZ3JpZFRlbXBsYXRlQ29sdW1ucy5zcGxpdCgnICcpLmxlbmd0aCA8PSAxID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcbiAgfVxuXG4gIGlmIChjaGlsZDEgJiYgZmlyc3RDaGlsZENTU1tcImZsb2F0XCJdICYmIGZpcnN0Q2hpbGRDU1NbXCJmbG9hdFwiXSAhPT0gJ25vbmUnKSB7XG4gICAgdmFyIHRvdWNoaW5nU2lkZUNoaWxkMiA9IGZpcnN0Q2hpbGRDU1NbXCJmbG9hdFwiXSA9PT0gJ2xlZnQnID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICByZXR1cm4gY2hpbGQyICYmIChzZWNvbmRDaGlsZENTUy5jbGVhciA9PT0gJ2JvdGgnIHx8IHNlY29uZENoaWxkQ1NTLmNsZWFyID09PSB0b3VjaGluZ1NpZGVDaGlsZDIpID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcbiAgfVxuXG4gIHJldHVybiBjaGlsZDEgJiYgKGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBmaXJzdENoaWxkQ1NTLmRpc3BsYXkgPT09ICdmbGV4JyB8fCBmaXJzdENoaWxkQ1NTLmRpc3BsYXkgPT09ICd0YWJsZScgfHwgZmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAnZ3JpZCcgfHwgZmlyc3RDaGlsZFdpZHRoID49IGVsV2lkdGggJiYgZWxDU1NbQ1NTRmxvYXRQcm9wZXJ0eV0gPT09ICdub25lJyB8fCBjaGlsZDIgJiYgZWxDU1NbQ1NTRmxvYXRQcm9wZXJ0eV0gPT09ICdub25lJyAmJiBmaXJzdENoaWxkV2lkdGggKyBzZWNvbmRDaGlsZFdpZHRoID4gZWxXaWR0aCkgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xufSxcbiAgICBfZHJhZ0VsSW5Sb3dDb2x1bW4gPSBmdW5jdGlvbiBfZHJhZ0VsSW5Sb3dDb2x1bW4oZHJhZ1JlY3QsIHRhcmdldFJlY3QsIHZlcnRpY2FsKSB7XG4gIHZhciBkcmFnRWxTMU9wcCA9IHZlcnRpY2FsID8gZHJhZ1JlY3QubGVmdCA6IGRyYWdSZWN0LnRvcCxcbiAgICAgIGRyYWdFbFMyT3BwID0gdmVydGljYWwgPyBkcmFnUmVjdC5yaWdodCA6IGRyYWdSZWN0LmJvdHRvbSxcbiAgICAgIGRyYWdFbE9wcExlbmd0aCA9IHZlcnRpY2FsID8gZHJhZ1JlY3Qud2lkdGggOiBkcmFnUmVjdC5oZWlnaHQsXG4gICAgICB0YXJnZXRTMU9wcCA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC5sZWZ0IDogdGFyZ2V0UmVjdC50b3AsXG4gICAgICB0YXJnZXRTMk9wcCA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC5yaWdodCA6IHRhcmdldFJlY3QuYm90dG9tLFxuICAgICAgdGFyZ2V0T3BwTGVuZ3RoID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LndpZHRoIDogdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gIHJldHVybiBkcmFnRWxTMU9wcCA9PT0gdGFyZ2V0UzFPcHAgfHwgZHJhZ0VsUzJPcHAgPT09IHRhcmdldFMyT3BwIHx8IGRyYWdFbFMxT3BwICsgZHJhZ0VsT3BwTGVuZ3RoIC8gMiA9PT0gdGFyZ2V0UzFPcHAgKyB0YXJnZXRPcHBMZW5ndGggLyAyO1xufSxcblxuLyoqXG4gKiBEZXRlY3RzIGZpcnN0IG5lYXJlc3QgZW1wdHkgc29ydGFibGUgdG8gWCBhbmQgWSBwb3NpdGlvbiB1c2luZyBlbXB0eUluc2VydFRocmVzaG9sZC5cbiAqIEBwYXJhbSAge051bWJlcn0geCAgICAgIFggcG9zaXRpb25cbiAqIEBwYXJhbSAge051bWJlcn0geSAgICAgIFkgcG9zaXRpb25cbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgIEVsZW1lbnQgb2YgdGhlIGZpcnN0IGZvdW5kIG5lYXJlc3QgU29ydGFibGVcbiAqL1xuX2RldGVjdE5lYXJlc3RFbXB0eVNvcnRhYmxlID0gZnVuY3Rpb24gX2RldGVjdE5lYXJlc3RFbXB0eVNvcnRhYmxlKHgsIHkpIHtcbiAgdmFyIHJldDtcbiAgc29ydGFibGVzLnNvbWUoZnVuY3Rpb24gKHNvcnRhYmxlKSB7XG4gICAgdmFyIHRocmVzaG9sZCA9IHNvcnRhYmxlW2V4cGFuZG9dLm9wdGlvbnMuZW1wdHlJbnNlcnRUaHJlc2hvbGQ7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgbGFzdENoaWxkKHNvcnRhYmxlKSkgcmV0dXJuO1xuICAgIHZhciByZWN0ID0gZ2V0UmVjdChzb3J0YWJsZSksXG4gICAgICAgIGluc2lkZUhvcml6b250YWxseSA9IHggPj0gcmVjdC5sZWZ0IC0gdGhyZXNob2xkICYmIHggPD0gcmVjdC5yaWdodCArIHRocmVzaG9sZCxcbiAgICAgICAgaW5zaWRlVmVydGljYWxseSA9IHkgPj0gcmVjdC50b3AgLSB0aHJlc2hvbGQgJiYgeSA8PSByZWN0LmJvdHRvbSArIHRocmVzaG9sZDtcblxuICAgIGlmIChpbnNpZGVIb3Jpem9udGFsbHkgJiYgaW5zaWRlVmVydGljYWxseSkge1xuICAgICAgcmV0dXJuIHJldCA9IHNvcnRhYmxlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXQ7XG59LFxuICAgIF9wcmVwYXJlR3JvdXAgPSBmdW5jdGlvbiBfcHJlcGFyZUdyb3VwKG9wdGlvbnMpIHtcbiAgZnVuY3Rpb24gdG9Gbih2YWx1ZSwgcHVsbCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodG8sIGZyb20sIGRyYWdFbCwgZXZ0KSB7XG4gICAgICB2YXIgc2FtZUdyb3VwID0gdG8ub3B0aW9ucy5ncm91cC5uYW1lICYmIGZyb20ub3B0aW9ucy5ncm91cC5uYW1lICYmIHRvLm9wdGlvbnMuZ3JvdXAubmFtZSA9PT0gZnJvbS5vcHRpb25zLmdyb3VwLm5hbWU7XG5cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIChwdWxsIHx8IHNhbWVHcm91cCkpIHtcbiAgICAgICAgLy8gRGVmYXVsdCBwdWxsIHZhbHVlXG4gICAgICAgIC8vIERlZmF1bHQgcHVsbCBhbmQgcHV0IHZhbHVlIGlmIHNhbWUgZ3JvdXBcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAocHVsbCAmJiB2YWx1ZSA9PT0gJ2Nsb25lJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdG9Gbih2YWx1ZSh0bywgZnJvbSwgZHJhZ0VsLCBldnQpLCBwdWxsKSh0bywgZnJvbSwgZHJhZ0VsLCBldnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG90aGVyR3JvdXAgPSAocHVsbCA/IHRvIDogZnJvbSkub3B0aW9ucy5ncm91cC5uYW1lO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSA9PT0gb3RoZXJHcm91cCB8fCB2YWx1ZS5qb2luICYmIHZhbHVlLmluZGV4T2Yob3RoZXJHcm91cCkgPiAtMTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGdyb3VwID0ge307XG4gIHZhciBvcmlnaW5hbEdyb3VwID0gb3B0aW9ucy5ncm91cDtcblxuICBpZiAoIW9yaWdpbmFsR3JvdXAgfHwgX3R5cGVvZihvcmlnaW5hbEdyb3VwKSAhPSAnb2JqZWN0Jykge1xuICAgIG9yaWdpbmFsR3JvdXAgPSB7XG4gICAgICBuYW1lOiBvcmlnaW5hbEdyb3VwXG4gICAgfTtcbiAgfVxuXG4gIGdyb3VwLm5hbWUgPSBvcmlnaW5hbEdyb3VwLm5hbWU7XG4gIGdyb3VwLmNoZWNrUHVsbCA9IHRvRm4ob3JpZ2luYWxHcm91cC5wdWxsLCB0cnVlKTtcbiAgZ3JvdXAuY2hlY2tQdXQgPSB0b0ZuKG9yaWdpbmFsR3JvdXAucHV0KTtcbiAgZ3JvdXAucmV2ZXJ0Q2xvbmUgPSBvcmlnaW5hbEdyb3VwLnJldmVydENsb25lO1xuICBvcHRpb25zLmdyb3VwID0gZ3JvdXA7XG59LFxuICAgIF9oaWRlR2hvc3RGb3JUYXJnZXQgPSBmdW5jdGlvbiBfaGlkZUdob3N0Rm9yVGFyZ2V0KCkge1xuICBpZiAoIXN1cHBvcnRDc3NQb2ludGVyRXZlbnRzICYmIGdob3N0RWwpIHtcbiAgICBjc3MoZ2hvc3RFbCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICB9XG59LFxuICAgIF91bmhpZGVHaG9zdEZvclRhcmdldCA9IGZ1bmN0aW9uIF91bmhpZGVHaG9zdEZvclRhcmdldCgpIHtcbiAgaWYgKCFzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cyAmJiBnaG9zdEVsKSB7XG4gICAgY3NzKGdob3N0RWwsICdkaXNwbGF5JywgJycpO1xuICB9XG59OyAvLyAjMTE4NCBmaXggLSBQcmV2ZW50IGNsaWNrIGV2ZW50IG9uIGZhbGxiYWNrIGlmIGRyYWdnZWQgYnV0IGl0ZW0gbm90IGNoYW5nZWQgcG9zaXRpb25cblxuXG5pZiAoZG9jdW1lbnRFeGlzdHMpIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKGlnbm9yZU5leHRDbGljaykge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uICYmIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gJiYgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgaWdub3JlTmV4dENsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCB0cnVlKTtcbn1cblxudmFyIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50ID0gZnVuY3Rpb24gbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQoZXZ0KSB7XG4gIGlmIChkcmFnRWwpIHtcbiAgICBldnQgPSBldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0O1xuXG4gICAgdmFyIG5lYXJlc3QgPSBfZGV0ZWN0TmVhcmVzdEVtcHR5U29ydGFibGUoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcblxuICAgIGlmIChuZWFyZXN0KSB7XG4gICAgICAvLyBDcmVhdGUgaW1pdGF0aW9uIGV2ZW50XG4gICAgICB2YXIgZXZlbnQgPSB7fTtcblxuICAgICAgZm9yICh2YXIgaSBpbiBldnQpIHtcbiAgICAgICAgaWYgKGV2dC5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgIGV2ZW50W2ldID0gZXZ0W2ldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnRhcmdldCA9IGV2ZW50LnJvb3RFbCA9IG5lYXJlc3Q7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCA9IHZvaWQgMDtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9IHZvaWQgMDtcblxuICAgICAgbmVhcmVzdFtleHBhbmRvXS5fb25EcmFnT3ZlcihldmVudCk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgX2NoZWNrT3V0c2lkZVRhcmdldEVsID0gZnVuY3Rpb24gX2NoZWNrT3V0c2lkZVRhcmdldEVsKGV2dCkge1xuICBpZiAoZHJhZ0VsKSB7XG4gICAgZHJhZ0VsLnBhcmVudE5vZGVbZXhwYW5kb10uX2lzT3V0c2lkZVRoaXNFbChldnQudGFyZ2V0KTtcbiAgfVxufTtcbi8qKlxuICogQGNsYXNzICBTb3J0YWJsZVxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9ICBlbFxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgICBbb3B0aW9uc11cbiAqL1xuXG5cbmZ1bmN0aW9uIFNvcnRhYmxlKGVsLCBvcHRpb25zKSB7XG4gIGlmICghKGVsICYmIGVsLm5vZGVUeXBlICYmIGVsLm5vZGVUeXBlID09PSAxKSkge1xuICAgIHRocm93IFwiU29ydGFibGU6IGBlbGAgbXVzdCBiZSBhbiBIVE1MRWxlbWVudCwgbm90IFwiLmNvbmNhdCh7fS50b1N0cmluZy5jYWxsKGVsKSk7XG4gIH1cblxuICB0aGlzLmVsID0gZWw7IC8vIHJvb3QgZWxlbWVudFxuXG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgb3B0aW9ucyk7IC8vIEV4cG9ydCBpbnN0YW5jZVxuXG4gIGVsW2V4cGFuZG9dID0gdGhpcztcbiAgdmFyIGRlZmF1bHRzID0ge1xuICAgIGdyb3VwOiBudWxsLFxuICAgIHNvcnQ6IHRydWUsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHN0b3JlOiBudWxsLFxuICAgIGhhbmRsZTogbnVsbCxcbiAgICBkcmFnZ2FibGU6IC9eW3VvXWwkL2kudGVzdChlbC5ub2RlTmFtZSkgPyAnPmxpJyA6ICc+KicsXG4gICAgc3dhcFRocmVzaG9sZDogMSxcbiAgICAvLyBwZXJjZW50YWdlOyAwIDw9IHggPD0gMVxuICAgIGludmVydFN3YXA6IGZhbHNlLFxuICAgIC8vIGludmVydCBhbHdheXNcbiAgICBpbnZlcnRlZFN3YXBUaHJlc2hvbGQ6IG51bGwsXG4gICAgLy8gd2lsbCBiZSBzZXQgdG8gc2FtZSBhcyBzd2FwVGhyZXNob2xkIGlmIGRlZmF1bHRcbiAgICByZW1vdmVDbG9uZU9uSGlkZTogdHJ1ZSxcbiAgICBkaXJlY3Rpb246IGZ1bmN0aW9uIGRpcmVjdGlvbigpIHtcbiAgICAgIHJldHVybiBfZGV0ZWN0RGlyZWN0aW9uKGVsLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2hvc3RDbGFzczogJ3NvcnRhYmxlLWdob3N0JyxcbiAgICBjaG9zZW5DbGFzczogJ3NvcnRhYmxlLWNob3NlbicsXG4gICAgZHJhZ0NsYXNzOiAnc29ydGFibGUtZHJhZycsXG4gICAgaWdub3JlOiAnYSwgaW1nJyxcbiAgICBmaWx0ZXI6IG51bGwsXG4gICAgcHJldmVudE9uRmlsdGVyOiB0cnVlLFxuICAgIGFuaW1hdGlvbjogMCxcbiAgICBlYXNpbmc6IG51bGwsXG4gICAgc2V0RGF0YTogZnVuY3Rpb24gc2V0RGF0YShkYXRhVHJhbnNmZXIsIGRyYWdFbCkge1xuICAgICAgZGF0YVRyYW5zZmVyLnNldERhdGEoJ1RleHQnLCBkcmFnRWwudGV4dENvbnRlbnQpO1xuICAgIH0sXG4gICAgZHJvcEJ1YmJsZTogZmFsc2UsXG4gICAgZHJhZ292ZXJCdWJibGU6IGZhbHNlLFxuICAgIGRhdGFJZEF0dHI6ICdkYXRhLWlkJyxcbiAgICBkZWxheTogMCxcbiAgICBkZWxheU9uVG91Y2hPbmx5OiBmYWxzZSxcbiAgICB0b3VjaFN0YXJ0VGhyZXNob2xkOiAoTnVtYmVyLnBhcnNlSW50ID8gTnVtYmVyIDogd2luZG93KS5wYXJzZUludCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgMTApIHx8IDEsXG4gICAgZm9yY2VGYWxsYmFjazogZmFsc2UsXG4gICAgZmFsbGJhY2tDbGFzczogJ3NvcnRhYmxlLWZhbGxiYWNrJyxcbiAgICBmYWxsYmFja09uQm9keTogZmFsc2UsXG4gICAgZmFsbGJhY2tUb2xlcmFuY2U6IDAsXG4gICAgZmFsbGJhY2tPZmZzZXQ6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSxcbiAgICBzdXBwb3J0UG9pbnRlcjogU29ydGFibGUuc3VwcG9ydFBvaW50ZXIgIT09IGZhbHNlICYmICdQb2ludGVyRXZlbnQnIGluIHdpbmRvdyAmJiAhU2FmYXJpLFxuICAgIGVtcHR5SW5zZXJ0VGhyZXNob2xkOiA1XG4gIH07XG4gIFBsdWdpbk1hbmFnZXIuaW5pdGlhbGl6ZVBsdWdpbnModGhpcywgZWwsIGRlZmF1bHRzKTsgLy8gU2V0IGRlZmF1bHQgb3B0aW9uc1xuXG4gIGZvciAodmFyIG5hbWUgaW4gZGVmYXVsdHMpIHtcbiAgICAhKG5hbWUgaW4gb3B0aW9ucykgJiYgKG9wdGlvbnNbbmFtZV0gPSBkZWZhdWx0c1tuYW1lXSk7XG4gIH1cblxuICBfcHJlcGFyZUdyb3VwKG9wdGlvbnMpOyAvLyBCaW5kIGFsbCBwcml2YXRlIG1ldGhvZHNcblxuXG4gIGZvciAodmFyIGZuIGluIHRoaXMpIHtcbiAgICBpZiAoZm4uY2hhckF0KDApID09PSAnXycgJiYgdHlwZW9mIHRoaXNbZm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ZuXSA9IHRoaXNbZm5dLmJpbmQodGhpcyk7XG4gICAgfVxuICB9IC8vIFNldHVwIGRyYWcgbW9kZVxuXG5cbiAgdGhpcy5uYXRpdmVEcmFnZ2FibGUgPSBvcHRpb25zLmZvcmNlRmFsbGJhY2sgPyBmYWxzZSA6IHN1cHBvcnREcmFnZ2FibGU7XG5cbiAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgLy8gVG91Y2ggc3RhcnQgdGhyZXNob2xkIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG5hdGl2ZSBkcmFnc3RhcnQgdGhyZXNob2xkXG4gICAgdGhpcy5vcHRpb25zLnRvdWNoU3RhcnRUaHJlc2hvbGQgPSAxO1xuICB9IC8vIEJpbmQgZXZlbnRzXG5cblxuICBpZiAob3B0aW9ucy5zdXBwb3J0UG9pbnRlcikge1xuICAgIG9uKGVsLCAncG9pbnRlcmRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcbiAgfSBlbHNlIHtcbiAgICBvbihlbCwgJ21vdXNlZG93bicsIHRoaXMuX29uVGFwU3RhcnQpO1xuICAgIG9uKGVsLCAndG91Y2hzdGFydCcsIHRoaXMuX29uVGFwU3RhcnQpO1xuICB9XG5cbiAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgb24oZWwsICdkcmFnb3ZlcicsIHRoaXMpO1xuICAgIG9uKGVsLCAnZHJhZ2VudGVyJywgdGhpcyk7XG4gIH1cblxuICBzb3J0YWJsZXMucHVzaCh0aGlzLmVsKTsgLy8gUmVzdG9yZSBzb3J0aW5nXG5cbiAgb3B0aW9ucy5zdG9yZSAmJiBvcHRpb25zLnN0b3JlLmdldCAmJiB0aGlzLnNvcnQob3B0aW9ucy5zdG9yZS5nZXQodGhpcykgfHwgW10pOyAvLyBBZGQgYW5pbWF0aW9uIHN0YXRlIG1hbmFnZXJcblxuICBfZXh0ZW5kcyh0aGlzLCBBbmltYXRpb25TdGF0ZU1hbmFnZXIoKSk7XG59XG5cblNvcnRhYmxlLnByb3RvdHlwZSA9XG4vKiogQGxlbmRzIFNvcnRhYmxlLnByb3RvdHlwZSAqL1xue1xuICBjb25zdHJ1Y3RvcjogU29ydGFibGUsXG4gIF9pc091dHNpZGVUaGlzRWw6IGZ1bmN0aW9uIF9pc091dHNpZGVUaGlzRWwodGFyZ2V0KSB7XG4gICAgaWYgKCF0aGlzLmVsLmNvbnRhaW5zKHRhcmdldCkgJiYgdGFyZ2V0ICE9PSB0aGlzLmVsKSB7XG4gICAgICBsYXN0VGFyZ2V0ID0gbnVsbDtcbiAgICB9XG4gIH0sXG4gIF9nZXREaXJlY3Rpb246IGZ1bmN0aW9uIF9nZXREaXJlY3Rpb24oZXZ0LCB0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09ICdmdW5jdGlvbicgPyB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLmNhbGwodGhpcywgZXZ0LCB0YXJnZXQsIGRyYWdFbCkgOiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uO1xuICB9LFxuICBfb25UYXBTdGFydDogZnVuY3Rpb24gX29uVGFwU3RhcnQoXG4gIC8qKiBFdmVudHxUb3VjaEV2ZW50ICovXG4gIGV2dCkge1xuICAgIGlmICghZXZ0LmNhbmNlbGFibGUpIHJldHVybjtcblxuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIGVsID0gdGhpcy5lbCxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgcHJldmVudE9uRmlsdGVyID0gb3B0aW9ucy5wcmV2ZW50T25GaWx0ZXIsXG4gICAgICAgIHR5cGUgPSBldnQudHlwZSxcbiAgICAgICAgdG91Y2ggPSBldnQudG91Y2hlcyAmJiBldnQudG91Y2hlc1swXSB8fCBldnQucG9pbnRlclR5cGUgJiYgZXZ0LnBvaW50ZXJUeXBlID09PSAndG91Y2gnICYmIGV2dCxcbiAgICAgICAgdGFyZ2V0ID0gKHRvdWNoIHx8IGV2dCkudGFyZ2V0LFxuICAgICAgICBvcmlnaW5hbFRhcmdldCA9IGV2dC50YXJnZXQuc2hhZG93Um9vdCAmJiAoZXZ0LnBhdGggJiYgZXZ0LnBhdGhbMF0gfHwgZXZ0LmNvbXBvc2VkUGF0aCAmJiBldnQuY29tcG9zZWRQYXRoKClbMF0pIHx8IHRhcmdldCxcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG5cbiAgICBfc2F2ZUlucHV0Q2hlY2tlZFN0YXRlKGVsKTsgLy8gRG9uJ3QgdHJpZ2dlciBzdGFydCBldmVudCB3aGVuIGFuIGVsZW1lbnQgaXMgYmVlbiBkcmFnZ2VkLCBvdGhlcndpc2UgdGhlIGV2dC5vbGRpbmRleCBhbHdheXMgd3Jvbmcgd2hlbiBzZXQgb3B0aW9uLmdyb3VwLlxuXG5cbiAgICBpZiAoZHJhZ0VsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKC9tb3VzZWRvd258cG9pbnRlcmRvd24vLnRlc3QodHlwZSkgJiYgZXZ0LmJ1dHRvbiAhPT0gMCB8fCBvcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47IC8vIG9ubHkgbGVmdCBidXR0b24gYW5kIGVuYWJsZWRcbiAgICB9IC8vIGNhbmNlbCBkbmQgaWYgb3JpZ2luYWwgdGFyZ2V0IGlzIGNvbnRlbnQgZWRpdGFibGVcblxuXG4gICAgaWYgKG9yaWdpbmFsVGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBTYWZhcmkgaWdub3JlcyBmdXJ0aGVyIGV2ZW50IGhhbmRsaW5nIGFmdGVyIG1vdXNlZG93blxuXG5cbiAgICBpZiAoIXRoaXMubmF0aXZlRHJhZ2dhYmxlICYmIFNhZmFyaSAmJiB0YXJnZXQgJiYgdGFyZ2V0LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0YXJnZXQgPSBjbG9zZXN0KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCBmYWxzZSk7XG5cbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5hbmltYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChsYXN0RG93bkVsID09PSB0YXJnZXQpIHtcbiAgICAgIC8vIElnbm9yaW5nIGR1cGxpY2F0ZSBgZG93bmBcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEdldCB0aGUgaW5kZXggb2YgdGhlIGRyYWdnZWQgZWxlbWVudCB3aXRoaW4gaXRzIHBhcmVudFxuXG5cbiAgICBvbGRJbmRleCA9IGluZGV4KHRhcmdldCk7XG4gICAgb2xkRHJhZ2dhYmxlSW5kZXggPSBpbmRleCh0YXJnZXQsIG9wdGlvbnMuZHJhZ2dhYmxlKTsgLy8gQ2hlY2sgZmlsdGVyXG5cbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGZpbHRlci5jYWxsKHRoaXMsIGV2dCwgdGFyZ2V0LCB0aGlzKSkge1xuICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgc29ydGFibGU6IF90aGlzLFxuICAgICAgICAgIHJvb3RFbDogb3JpZ2luYWxUYXJnZXQsXG4gICAgICAgICAgbmFtZTogJ2ZpbHRlcicsXG4gICAgICAgICAgdGFyZ2V0RWw6IHRhcmdldCxcbiAgICAgICAgICB0b0VsOiBlbCxcbiAgICAgICAgICBmcm9tRWw6IGVsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBsdWdpbkV2ZW50KCdmaWx0ZXInLCBfdGhpcywge1xuICAgICAgICAgIGV2dDogZXZ0XG4gICAgICAgIH0pO1xuICAgICAgICBwcmV2ZW50T25GaWx0ZXIgJiYgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjsgLy8gY2FuY2VsIGRuZFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyKSB7XG4gICAgICBmaWx0ZXIgPSBmaWx0ZXIuc3BsaXQoJywnKS5zb21lKGZ1bmN0aW9uIChjcml0ZXJpYSkge1xuICAgICAgICBjcml0ZXJpYSA9IGNsb3Nlc3Qob3JpZ2luYWxUYXJnZXQsIGNyaXRlcmlhLnRyaW0oKSwgZWwsIGZhbHNlKTtcblxuICAgICAgICBpZiAoY3JpdGVyaWEpIHtcbiAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICBzb3J0YWJsZTogX3RoaXMsXG4gICAgICAgICAgICByb290RWw6IGNyaXRlcmlhLFxuICAgICAgICAgICAgbmFtZTogJ2ZpbHRlcicsXG4gICAgICAgICAgICB0YXJnZXRFbDogdGFyZ2V0LFxuICAgICAgICAgICAgZnJvbUVsOiBlbCxcbiAgICAgICAgICAgIHRvRWw6IGVsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwbHVnaW5FdmVudCgnZmlsdGVyJywgX3RoaXMsIHtcbiAgICAgICAgICAgIGV2dDogZXZ0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgIHByZXZlbnRPbkZpbHRlciAmJiBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuOyAvLyBjYW5jZWwgZG5kXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGFuZGxlICYmICFjbG9zZXN0KG9yaWdpbmFsVGFyZ2V0LCBvcHRpb25zLmhhbmRsZSwgZWwsIGZhbHNlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gUHJlcGFyZSBgZHJhZ3N0YXJ0YFxuXG5cbiAgICB0aGlzLl9wcmVwYXJlRHJhZ1N0YXJ0KGV2dCwgdG91Y2gsIHRhcmdldCk7XG4gIH0sXG4gIF9wcmVwYXJlRHJhZ1N0YXJ0OiBmdW5jdGlvbiBfcHJlcGFyZURyYWdTdGFydChcbiAgLyoqIEV2ZW50ICovXG4gIGV2dCxcbiAgLyoqIFRvdWNoICovXG4gIHRvdWNoLFxuICAvKiogSFRNTEVsZW1lbnQgKi9cbiAgdGFyZ2V0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgZWwgPSBfdGhpcy5lbCxcbiAgICAgICAgb3B0aW9ucyA9IF90aGlzLm9wdGlvbnMsXG4gICAgICAgIG93bmVyRG9jdW1lbnQgPSBlbC5vd25lckRvY3VtZW50LFxuICAgICAgICBkcmFnU3RhcnRGbjtcblxuICAgIGlmICh0YXJnZXQgJiYgIWRyYWdFbCAmJiB0YXJnZXQucGFyZW50Tm9kZSA9PT0gZWwpIHtcbiAgICAgIHZhciBkcmFnUmVjdCA9IGdldFJlY3QodGFyZ2V0KTtcbiAgICAgIHJvb3RFbCA9IGVsO1xuICAgICAgZHJhZ0VsID0gdGFyZ2V0O1xuICAgICAgcGFyZW50RWwgPSBkcmFnRWwucGFyZW50Tm9kZTtcbiAgICAgIG5leHRFbCA9IGRyYWdFbC5uZXh0U2libGluZztcbiAgICAgIGxhc3REb3duRWwgPSB0YXJnZXQ7XG4gICAgICBhY3RpdmVHcm91cCA9IG9wdGlvbnMuZ3JvdXA7XG4gICAgICBTb3J0YWJsZS5kcmFnZ2VkID0gZHJhZ0VsO1xuICAgICAgdGFwRXZ0ID0ge1xuICAgICAgICB0YXJnZXQ6IGRyYWdFbCxcbiAgICAgICAgY2xpZW50WDogKHRvdWNoIHx8IGV2dCkuY2xpZW50WCxcbiAgICAgICAgY2xpZW50WTogKHRvdWNoIHx8IGV2dCkuY2xpZW50WVxuICAgICAgfTtcbiAgICAgIHRhcERpc3RhbmNlTGVmdCA9IHRhcEV2dC5jbGllbnRYIC0gZHJhZ1JlY3QubGVmdDtcbiAgICAgIHRhcERpc3RhbmNlVG9wID0gdGFwRXZ0LmNsaWVudFkgLSBkcmFnUmVjdC50b3A7XG4gICAgICB0aGlzLl9sYXN0WCA9ICh0b3VjaCB8fCBldnQpLmNsaWVudFg7XG4gICAgICB0aGlzLl9sYXN0WSA9ICh0b3VjaCB8fCBldnQpLmNsaWVudFk7XG4gICAgICBkcmFnRWwuc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnYWxsJztcblxuICAgICAgZHJhZ1N0YXJ0Rm4gPSBmdW5jdGlvbiBkcmFnU3RhcnRGbigpIHtcbiAgICAgICAgcGx1Z2luRXZlbnQoJ2RlbGF5RW5kZWQnLCBfdGhpcywge1xuICAgICAgICAgIGV2dDogZXZ0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICAgICAgX3RoaXMuX29uRHJvcCgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIERlbGF5ZWQgZHJhZyBoYXMgYmVlbiB0cmlnZ2VyZWRcbiAgICAgICAgLy8gd2UgY2FuIHJlLWVuYWJsZSB0aGUgZXZlbnRzOiB0b3VjaG1vdmUvbW91c2Vtb3ZlXG5cblxuICAgICAgICBfdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzKCk7XG5cbiAgICAgICAgaWYgKCFGaXJlRm94ICYmIF90aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICAgIGRyYWdFbC5kcmFnZ2FibGUgPSB0cnVlO1xuICAgICAgICB9IC8vIEJpbmQgdGhlIGV2ZW50czogZHJhZ3N0YXJ0L2RyYWdlbmRcblxuXG4gICAgICAgIF90aGlzLl90cmlnZ2VyRHJhZ1N0YXJ0KGV2dCwgdG91Y2gpOyAvLyBEcmFnIHN0YXJ0IGV2ZW50XG5cblxuICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgc29ydGFibGU6IF90aGlzLFxuICAgICAgICAgIG5hbWU6ICdjaG9vc2UnLFxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICB9KTsgLy8gQ2hvc2VuIGl0ZW1cblxuXG4gICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5jaG9zZW5DbGFzcywgdHJ1ZSk7XG4gICAgICB9OyAvLyBEaXNhYmxlIFwiZHJhZ2dhYmxlXCJcblxuXG4gICAgICBvcHRpb25zLmlnbm9yZS5zcGxpdCgnLCcpLmZvckVhY2goZnVuY3Rpb24gKGNyaXRlcmlhKSB7XG4gICAgICAgIGZpbmQoZHJhZ0VsLCBjcml0ZXJpYS50cmltKCksIF9kaXNhYmxlRHJhZ2dhYmxlKTtcbiAgICAgIH0pO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ2RyYWdvdmVyJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaG1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIF90aGlzLl9vbkRyb3ApO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoZW5kJywgX3RoaXMuX29uRHJvcCk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBfdGhpcy5fb25Ecm9wKTsgLy8gTWFrZSBkcmFnRWwgZHJhZ2dhYmxlIChtdXN0IGJlIGJlZm9yZSBkZWxheSBmb3IgRmlyZUZveClcblxuICAgICAgaWYgKEZpcmVGb3ggJiYgdGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnRvdWNoU3RhcnRUaHJlc2hvbGQgPSA0O1xuICAgICAgICBkcmFnRWwuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcGx1Z2luRXZlbnQoJ2RlbGF5U3RhcnQnLCB0aGlzLCB7XG4gICAgICAgIGV2dDogZXZ0XG4gICAgICB9KTsgLy8gRGVsYXkgaXMgaW1wb3NzaWJsZSBmb3IgbmF0aXZlIERuRCBpbiBFZGdlIG9yIElFXG5cbiAgICAgIGlmIChvcHRpb25zLmRlbGF5ICYmICghb3B0aW9ucy5kZWxheU9uVG91Y2hPbmx5IHx8IHRvdWNoKSAmJiAoIXRoaXMubmF0aXZlRHJhZ2dhYmxlIHx8ICEoRWRnZSB8fCBJRTExT3JMZXNzKSkpIHtcbiAgICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgICAgICB0aGlzLl9vbkRyb3AoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBJZiB0aGUgdXNlciBtb3ZlcyB0aGUgcG9pbnRlciBvciBsZXQgZ28gdGhlIGNsaWNrIG9yIHRvdWNoXG4gICAgICAgIC8vIGJlZm9yZSB0aGUgZGVsYXkgaGFzIGJlZW4gcmVhY2hlZDpcbiAgICAgICAgLy8gZGlzYWJsZSB0aGUgZGVsYXllZCBkcmFnXG5cblxuICAgICAgICBvbihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIF90aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCBfdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgX3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgICAgIG9uKG93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCBfdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIF90aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgICAgICBvcHRpb25zLnN1cHBvcnRQb2ludGVyICYmIG9uKG93bmVyRG9jdW1lbnQsICdwb2ludGVybW92ZScsIF90aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgICAgICBfdGhpcy5fZHJhZ1N0YXJ0VGltZXIgPSBzZXRUaW1lb3V0KGRyYWdTdGFydEZuLCBvcHRpb25zLmRlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYWdTdGFydEZuKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBfZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyOiBmdW5jdGlvbiBfZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKFxuICAvKiogVG91Y2hFdmVudHxQb2ludGVyRXZlbnQgKiovXG4gIGUpIHtcbiAgICB2YXIgdG91Y2ggPSBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0gOiBlO1xuXG4gICAgaWYgKE1hdGgubWF4KE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSB0aGlzLl9sYXN0WCksIE1hdGguYWJzKHRvdWNoLmNsaWVudFkgLSB0aGlzLl9sYXN0WSkpID49IE1hdGguZmxvb3IodGhpcy5vcHRpb25zLnRvdWNoU3RhcnRUaHJlc2hvbGQgLyAodGhpcy5uYXRpdmVEcmFnZ2FibGUgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSkpKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcoKTtcbiAgICB9XG4gIH0sXG4gIF9kaXNhYmxlRGVsYXllZERyYWc6IGZ1bmN0aW9uIF9kaXNhYmxlRGVsYXllZERyYWcoKSB7XG4gICAgZHJhZ0VsICYmIF9kaXNhYmxlRHJhZ2dhYmxlKGRyYWdFbCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RyYWdTdGFydFRpbWVyKTtcblxuICAgIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpO1xuICB9LFxuICBfZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzOiBmdW5jdGlvbiBfZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzKCkge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gdGhpcy5lbC5vd25lckRvY3VtZW50O1xuICAgIG9mZihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgfSxcbiAgX3RyaWdnZXJEcmFnU3RhcnQ6IGZ1bmN0aW9uIF90cmlnZ2VyRHJhZ1N0YXJ0KFxuICAvKiogRXZlbnQgKi9cbiAgZXZ0LFxuICAvKiogVG91Y2ggKi9cbiAgdG91Y2gpIHtcbiAgICB0b3VjaCA9IHRvdWNoIHx8IGV2dC5wb2ludGVyVHlwZSA9PSAndG91Y2gnICYmIGV2dDtcblxuICAgIGlmICghdGhpcy5uYXRpdmVEcmFnZ2FibGUgfHwgdG91Y2gpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydFBvaW50ZXIpIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICAgIH0gZWxzZSBpZiAodG91Y2gpIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbihkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb24oZHJhZ0VsLCAnZHJhZ2VuZCcsIHRoaXMpO1xuICAgICAgb24ocm9vdEVsLCAnZHJhZ3N0YXJ0JywgdGhpcy5fb25EcmFnU3RhcnQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG4gICAgICAgIC8vIFRpbWVvdXQgbmVjY2Vzc2FyeSBmb3IgSUU5XG4gICAgICAgIF9uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge31cbiAgfSxcbiAgX2RyYWdTdGFydGVkOiBmdW5jdGlvbiBfZHJhZ1N0YXJ0ZWQoZmFsbGJhY2ssIGV2dCkge1xuXG4gICAgYXdhaXRpbmdEcmFnU3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHJvb3RFbCAmJiBkcmFnRWwpIHtcbiAgICAgIHBsdWdpbkV2ZW50KCdkcmFnU3RhcnRlZCcsIHRoaXMsIHtcbiAgICAgICAgZXZ0OiBldnRcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICdkcmFnb3ZlcicsIF9jaGVja091dHNpZGVUYXJnZXRFbCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOyAvLyBBcHBseSBlZmZlY3RcblxuICAgICAgIWZhbGxiYWNrICYmIHRvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5kcmFnQ2xhc3MsIGZhbHNlKTtcbiAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5naG9zdENsYXNzLCB0cnVlKTtcbiAgICAgIFNvcnRhYmxlLmFjdGl2ZSA9IHRoaXM7XG4gICAgICBmYWxsYmFjayAmJiB0aGlzLl9hcHBlbmRHaG9zdCgpOyAvLyBEcmFnIHN0YXJ0IGV2ZW50XG5cbiAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgIG5hbWU6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX251bGxpbmcoKTtcbiAgICB9XG4gIH0sXG4gIF9lbXVsYXRlRHJhZ092ZXI6IGZ1bmN0aW9uIF9lbXVsYXRlRHJhZ092ZXIoKSB7XG4gICAgaWYgKHRvdWNoRXZ0KSB7XG4gICAgICB0aGlzLl9sYXN0WCA9IHRvdWNoRXZ0LmNsaWVudFg7XG4gICAgICB0aGlzLl9sYXN0WSA9IHRvdWNoRXZ0LmNsaWVudFk7XG5cbiAgICAgIF9oaWRlR2hvc3RGb3JUYXJnZXQoKTtcblxuICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodG91Y2hFdnQuY2xpZW50WCwgdG91Y2hFdnQuY2xpZW50WSk7XG4gICAgICB2YXIgcGFyZW50ID0gdGFyZ2V0O1xuXG4gICAgICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC5zaGFkb3dSb290KSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5zaGFkb3dSb290LmVsZW1lbnRGcm9tUG9pbnQodG91Y2hFdnQuY2xpZW50WCwgdG91Y2hFdnQuY2xpZW50WSk7XG4gICAgICAgIGlmICh0YXJnZXQgPT09IHBhcmVudCkgYnJlYWs7XG4gICAgICAgIHBhcmVudCA9IHRhcmdldDtcbiAgICAgIH1cblxuICAgICAgZHJhZ0VsLnBhcmVudE5vZGVbZXhwYW5kb10uX2lzT3V0c2lkZVRoaXNFbCh0YXJnZXQpO1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBpZiAocGFyZW50W2V4cGFuZG9dKSB7XG4gICAgICAgICAgICB2YXIgaW5zZXJ0ZWQgPSB2b2lkIDA7XG4gICAgICAgICAgICBpbnNlcnRlZCA9IHBhcmVudFtleHBhbmRvXS5fb25EcmFnT3Zlcih7XG4gICAgICAgICAgICAgIGNsaWVudFg6IHRvdWNoRXZ0LmNsaWVudFgsXG4gICAgICAgICAgICAgIGNsaWVudFk6IHRvdWNoRXZ0LmNsaWVudFksXG4gICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgICByb290RWw6IHBhcmVudFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpbnNlcnRlZCAmJiAhdGhpcy5vcHRpb25zLmRyYWdvdmVyQnViYmxlKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldCA9IHBhcmVudDsgLy8gc3RvcmUgbGFzdCBlbGVtZW50XG4gICAgICAgIH1cbiAgICAgICAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuICAgICAgICB3aGlsZSAocGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGUpO1xuICAgICAgfVxuXG4gICAgICBfdW5oaWRlR2hvc3RGb3JUYXJnZXQoKTtcbiAgICB9XG4gIH0sXG4gIF9vblRvdWNoTW92ZTogZnVuY3Rpb24gX29uVG91Y2hNb3ZlKFxuICAvKipUb3VjaEV2ZW50Ki9cbiAgZXZ0KSB7XG4gICAgaWYgKHRhcEV2dCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgZmFsbGJhY2tUb2xlcmFuY2UgPSBvcHRpb25zLmZhbGxiYWNrVG9sZXJhbmNlLFxuICAgICAgICAgIGZhbGxiYWNrT2Zmc2V0ID0gb3B0aW9ucy5mYWxsYmFja09mZnNldCxcbiAgICAgICAgICB0b3VjaCA9IGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQsXG4gICAgICAgICAgZ2hvc3RNYXRyaXggPSBnaG9zdEVsICYmIG1hdHJpeChnaG9zdEVsLCB0cnVlKSxcbiAgICAgICAgICBzY2FsZVggPSBnaG9zdEVsICYmIGdob3N0TWF0cml4ICYmIGdob3N0TWF0cml4LmEsXG4gICAgICAgICAgc2NhbGVZID0gZ2hvc3RFbCAmJiBnaG9zdE1hdHJpeCAmJiBnaG9zdE1hdHJpeC5kLFxuICAgICAgICAgIHJlbGF0aXZlU2Nyb2xsT2Zmc2V0ID0gUG9zaXRpb25HaG9zdEFic29sdXRlbHkgJiYgZ2hvc3RSZWxhdGl2ZVBhcmVudCAmJiBnZXRSZWxhdGl2ZVNjcm9sbE9mZnNldChnaG9zdFJlbGF0aXZlUGFyZW50KSxcbiAgICAgICAgICBkeCA9ICh0b3VjaC5jbGllbnRYIC0gdGFwRXZ0LmNsaWVudFggKyBmYWxsYmFja09mZnNldC54KSAvIChzY2FsZVggfHwgMSkgKyAocmVsYXRpdmVTY3JvbGxPZmZzZXQgPyByZWxhdGl2ZVNjcm9sbE9mZnNldFswXSAtIGdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsWzBdIDogMCkgLyAoc2NhbGVYIHx8IDEpLFxuICAgICAgICAgIGR5ID0gKHRvdWNoLmNsaWVudFkgLSB0YXBFdnQuY2xpZW50WSArIGZhbGxiYWNrT2Zmc2V0LnkpIC8gKHNjYWxlWSB8fCAxKSArIChyZWxhdGl2ZVNjcm9sbE9mZnNldCA/IHJlbGF0aXZlU2Nyb2xsT2Zmc2V0WzFdIC0gZ2hvc3RSZWxhdGl2ZVBhcmVudEluaXRpYWxTY3JvbGxbMV0gOiAwKSAvIChzY2FsZVkgfHwgMSk7IC8vIG9ubHkgc2V0IHRoZSBzdGF0dXMgdG8gZHJhZ2dpbmcsIHdoZW4gd2UgYXJlIGFjdHVhbGx5IGRyYWdnaW5nXG5cbiAgICAgIGlmICghU29ydGFibGUuYWN0aXZlICYmICFhd2FpdGluZ0RyYWdTdGFydGVkKSB7XG4gICAgICAgIGlmIChmYWxsYmFja1RvbGVyYW5jZSAmJiBNYXRoLm1heChNYXRoLmFicyh0b3VjaC5jbGllbnRYIC0gdGhpcy5fbGFzdFgpLCBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gdGhpcy5fbGFzdFkpKSA8IGZhbGxiYWNrVG9sZXJhbmNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25EcmFnU3RhcnQoZXZ0LCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdob3N0RWwpIHtcbiAgICAgICAgaWYgKGdob3N0TWF0cml4KSB7XG4gICAgICAgICAgZ2hvc3RNYXRyaXguZSArPSBkeCAtIChsYXN0RHggfHwgMCk7XG4gICAgICAgICAgZ2hvc3RNYXRyaXguZiArPSBkeSAtIChsYXN0RHkgfHwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ2hvc3RNYXRyaXggPSB7XG4gICAgICAgICAgICBhOiAxLFxuICAgICAgICAgICAgYjogMCxcbiAgICAgICAgICAgIGM6IDAsXG4gICAgICAgICAgICBkOiAxLFxuICAgICAgICAgICAgZTogZHgsXG4gICAgICAgICAgICBmOiBkeVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3NzTWF0cml4ID0gXCJtYXRyaXgoXCIuY29uY2F0KGdob3N0TWF0cml4LmEsIFwiLFwiKS5jb25jYXQoZ2hvc3RNYXRyaXguYiwgXCIsXCIpLmNvbmNhdChnaG9zdE1hdHJpeC5jLCBcIixcIikuY29uY2F0KGdob3N0TWF0cml4LmQsIFwiLFwiKS5jb25jYXQoZ2hvc3RNYXRyaXguZSwgXCIsXCIpLmNvbmNhdChnaG9zdE1hdHJpeC5mLCBcIilcIik7XG4gICAgICAgIGNzcyhnaG9zdEVsLCAnd2Via2l0VHJhbnNmb3JtJywgY3NzTWF0cml4KTtcbiAgICAgICAgY3NzKGdob3N0RWwsICdtb3pUcmFuc2Zvcm0nLCBjc3NNYXRyaXgpO1xuICAgICAgICBjc3MoZ2hvc3RFbCwgJ21zVHJhbnNmb3JtJywgY3NzTWF0cml4KTtcbiAgICAgICAgY3NzKGdob3N0RWwsICd0cmFuc2Zvcm0nLCBjc3NNYXRyaXgpO1xuICAgICAgICBsYXN0RHggPSBkeDtcbiAgICAgICAgbGFzdER5ID0gZHk7XG4gICAgICAgIHRvdWNoRXZ0ID0gdG91Y2g7XG4gICAgICB9XG5cbiAgICAgIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfSxcbiAgX2FwcGVuZEdob3N0OiBmdW5jdGlvbiBfYXBwZW5kR2hvc3QoKSB7XG4gICAgLy8gQnVnIGlmIHVzaW5nIHNjYWxlKCk6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MzcwNThcbiAgICAvLyBOb3QgYmVpbmcgYWRqdXN0ZWQgZm9yXG4gICAgaWYgKCFnaG9zdEVsKSB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5vcHRpb25zLmZhbGxiYWNrT25Cb2R5ID8gZG9jdW1lbnQuYm9keSA6IHJvb3RFbCxcbiAgICAgICAgICByZWN0ID0gZ2V0UmVjdChkcmFnRWwsIHRydWUsIFBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5LCB0cnVlLCBjb250YWluZXIpLFxuICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7IC8vIFBvc2l0aW9uIGFic29sdXRlbHlcblxuICAgICAgaWYgKFBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5KSB7XG4gICAgICAgIC8vIEdldCByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgcGFyZW50XG4gICAgICAgIGdob3N0UmVsYXRpdmVQYXJlbnQgPSBjb250YWluZXI7XG5cbiAgICAgICAgd2hpbGUgKGNzcyhnaG9zdFJlbGF0aXZlUGFyZW50LCAncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycgJiYgY3NzKGdob3N0UmVsYXRpdmVQYXJlbnQsICd0cmFuc2Zvcm0nKSA9PT0gJ25vbmUnICYmIGdob3N0UmVsYXRpdmVQYXJlbnQgIT09IGRvY3VtZW50KSB7XG4gICAgICAgICAgZ2hvc3RSZWxhdGl2ZVBhcmVudCA9IGdob3N0UmVsYXRpdmVQYXJlbnQucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChnaG9zdFJlbGF0aXZlUGFyZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIGdob3N0UmVsYXRpdmVQYXJlbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgICAgIGlmIChnaG9zdFJlbGF0aXZlUGFyZW50ID09PSBkb2N1bWVudCkgZ2hvc3RSZWxhdGl2ZVBhcmVudCA9IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbiAgICAgICAgICByZWN0LnRvcCArPSBnaG9zdFJlbGF0aXZlUGFyZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICByZWN0LmxlZnQgKz0gZ2hvc3RSZWxhdGl2ZVBhcmVudC5zY3JvbGxMZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdob3N0UmVsYXRpdmVQYXJlbnQgPSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbCA9IGdldFJlbGF0aXZlU2Nyb2xsT2Zmc2V0KGdob3N0UmVsYXRpdmVQYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICBnaG9zdEVsID0gZHJhZ0VsLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgIHRvZ2dsZUNsYXNzKGdob3N0RWwsIG9wdGlvbnMuZ2hvc3RDbGFzcywgZmFsc2UpO1xuICAgICAgdG9nZ2xlQ2xhc3MoZ2hvc3RFbCwgb3B0aW9ucy5mYWxsYmFja0NsYXNzLCB0cnVlKTtcbiAgICAgIHRvZ2dsZUNsYXNzKGdob3N0RWwsIG9wdGlvbnMuZHJhZ0NsYXNzLCB0cnVlKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAndHJhbnNpdGlvbicsICcnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAndHJhbnNmb3JtJywgJycpO1xuICAgICAgY3NzKGdob3N0RWwsICdib3gtc2l6aW5nJywgJ2JvcmRlci1ib3gnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnbWFyZ2luJywgMCk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3RvcCcsIHJlY3QudG9wKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnbGVmdCcsIHJlY3QubGVmdCk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3dpZHRoJywgcmVjdC53aWR0aCk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ2hlaWdodCcsIHJlY3QuaGVpZ2h0KTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnb3BhY2l0eScsICcwLjgnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAncG9zaXRpb24nLCBQb3NpdGlvbkdob3N0QWJzb2x1dGVseSA/ICdhYnNvbHV0ZScgOiAnZml4ZWQnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnekluZGV4JywgJzEwMDAwMCcpO1xuICAgICAgY3NzKGdob3N0RWwsICdwb2ludGVyRXZlbnRzJywgJ25vbmUnKTtcbiAgICAgIFNvcnRhYmxlLmdob3N0ID0gZ2hvc3RFbDtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChnaG9zdEVsKTsgLy8gU2V0IHRyYW5zZm9ybS1vcmlnaW5cblxuICAgICAgY3NzKGdob3N0RWwsICd0cmFuc2Zvcm0tb3JpZ2luJywgdGFwRGlzdGFuY2VMZWZ0IC8gcGFyc2VJbnQoZ2hvc3RFbC5zdHlsZS53aWR0aCkgKiAxMDAgKyAnJSAnICsgdGFwRGlzdGFuY2VUb3AgLyBwYXJzZUludChnaG9zdEVsLnN0eWxlLmhlaWdodCkgKiAxMDAgKyAnJScpO1xuICAgIH1cbiAgfSxcbiAgX29uRHJhZ1N0YXJ0OiBmdW5jdGlvbiBfb25EcmFnU3RhcnQoXG4gIC8qKkV2ZW50Ki9cbiAgZXZ0LFxuICAvKipib29sZWFuKi9cbiAgZmFsbGJhY2spIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGRhdGFUcmFuc2ZlciA9IGV2dC5kYXRhVHJhbnNmZXI7XG4gICAgdmFyIG9wdGlvbnMgPSBfdGhpcy5vcHRpb25zO1xuICAgIHBsdWdpbkV2ZW50KCdkcmFnU3RhcnQnLCB0aGlzLCB7XG4gICAgICBldnQ6IGV2dFxuICAgIH0pO1xuXG4gICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgIHRoaXMuX29uRHJvcCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGx1Z2luRXZlbnQoJ3NldHVwQ2xvbmUnLCB0aGlzKTtcblxuICAgIGlmICghU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgY2xvbmVFbCA9IGNsb25lKGRyYWdFbCk7XG4gICAgICBjbG9uZUVsLmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgY2xvbmVFbC5zdHlsZVsnd2lsbC1jaGFuZ2UnXSA9ICcnO1xuXG4gICAgICB0aGlzLl9oaWRlQ2xvbmUoKTtcblxuICAgICAgdG9nZ2xlQ2xhc3MoY2xvbmVFbCwgdGhpcy5vcHRpb25zLmNob3NlbkNsYXNzLCBmYWxzZSk7XG4gICAgICBTb3J0YWJsZS5jbG9uZSA9IGNsb25lRWw7XG4gICAgfSAvLyAjMTE0MzogSUZyYW1lIHN1cHBvcnQgd29ya2Fyb3VuZFxuXG5cbiAgICBfdGhpcy5jbG9uZUlkID0gX25leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHBsdWdpbkV2ZW50KCdjbG9uZScsIF90aGlzKTtcbiAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSByZXR1cm47XG5cbiAgICAgIGlmICghX3RoaXMub3B0aW9ucy5yZW1vdmVDbG9uZU9uSGlkZSkge1xuICAgICAgICByb290RWwuaW5zZXJ0QmVmb3JlKGNsb25lRWwsIGRyYWdFbCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9oaWRlQ2xvbmUoKTtcblxuICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICBzb3J0YWJsZTogX3RoaXMsXG4gICAgICAgIG5hbWU6ICdjbG9uZSdcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgICFmYWxsYmFjayAmJiB0b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuZHJhZ0NsYXNzLCB0cnVlKTsgLy8gU2V0IHByb3BlciBkcm9wIGV2ZW50c1xuXG4gICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICBpZ25vcmVOZXh0Q2xpY2sgPSB0cnVlO1xuICAgICAgX3RoaXMuX2xvb3BJZCA9IHNldEludGVydmFsKF90aGlzLl9lbXVsYXRlRHJhZ092ZXIsIDUwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVW5kbyB3aGF0IHdhcyBzZXQgaW4gX3ByZXBhcmVEcmFnU3RhcnQgYmVmb3JlIGRyYWcgc3RhcnRlZFxuICAgICAgb2ZmKGRvY3VtZW50LCAnbW91c2V1cCcsIF90aGlzLl9vbkRyb3ApO1xuICAgICAgb2ZmKGRvY3VtZW50LCAndG91Y2hlbmQnLCBfdGhpcy5fb25Ecm9wKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgX3RoaXMuX29uRHJvcCk7XG5cbiAgICAgIGlmIChkYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG4gICAgICAgIG9wdGlvbnMuc2V0RGF0YSAmJiBvcHRpb25zLnNldERhdGEuY2FsbChfdGhpcywgZGF0YVRyYW5zZmVyLCBkcmFnRWwpO1xuICAgICAgfVxuXG4gICAgICBvbihkb2N1bWVudCwgJ2Ryb3AnLCBfdGhpcyk7IC8vICMxMjc2IGZpeDpcblxuICAgICAgY3NzKGRyYWdFbCwgJ3RyYW5zZm9ybScsICd0cmFuc2xhdGVaKDApJyk7XG4gICAgfVxuXG4gICAgYXdhaXRpbmdEcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgX3RoaXMuX2RyYWdTdGFydElkID0gX25leHRUaWNrKF90aGlzLl9kcmFnU3RhcnRlZC5iaW5kKF90aGlzLCBmYWxsYmFjaywgZXZ0KSk7XG4gICAgb24oZG9jdW1lbnQsICdzZWxlY3RzdGFydCcsIF90aGlzKTtcbiAgICBtb3ZlZCA9IHRydWU7XG5cbiAgICBpZiAoU2FmYXJpKSB7XG4gICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ3VzZXItc2VsZWN0JywgJ25vbmUnKTtcbiAgICB9XG4gIH0sXG4gIC8vIFJldHVybnMgdHJ1ZSAtIGlmIG5vIGZ1cnRoZXIgYWN0aW9uIGlzIG5lZWRlZCAoZWl0aGVyIGluc2VydGVkIG9yIGFub3RoZXIgY29uZGl0aW9uKVxuICBfb25EcmFnT3ZlcjogZnVuY3Rpb24gX29uRHJhZ092ZXIoXG4gIC8qKkV2ZW50Ki9cbiAgZXZ0KSB7XG4gICAgdmFyIGVsID0gdGhpcy5lbCxcbiAgICAgICAgdGFyZ2V0ID0gZXZ0LnRhcmdldCxcbiAgICAgICAgZHJhZ1JlY3QsXG4gICAgICAgIHRhcmdldFJlY3QsXG4gICAgICAgIHJldmVydCxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgZ3JvdXAgPSBvcHRpb25zLmdyb3VwLFxuICAgICAgICBhY3RpdmVTb3J0YWJsZSA9IFNvcnRhYmxlLmFjdGl2ZSxcbiAgICAgICAgaXNPd25lciA9IGFjdGl2ZUdyb3VwID09PSBncm91cCxcbiAgICAgICAgY2FuU29ydCA9IG9wdGlvbnMuc29ydCxcbiAgICAgICAgZnJvbVNvcnRhYmxlID0gcHV0U29ydGFibGUgfHwgYWN0aXZlU29ydGFibGUsXG4gICAgICAgIHZlcnRpY2FsLFxuICAgICAgICBfdGhpcyA9IHRoaXMsXG4gICAgICAgIGNvbXBsZXRlZEZpcmVkID0gZmFsc2U7XG5cbiAgICBpZiAoX3NpbGVudCkgcmV0dXJuO1xuXG4gICAgZnVuY3Rpb24gZHJhZ092ZXJFdmVudChuYW1lLCBleHRyYSkge1xuICAgICAgcGx1Z2luRXZlbnQobmFtZSwgX3RoaXMsIF9vYmplY3RTcHJlYWQyKHtcbiAgICAgICAgZXZ0OiBldnQsXG4gICAgICAgIGlzT3duZXI6IGlzT3duZXIsXG4gICAgICAgIGF4aXM6IHZlcnRpY2FsID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJyxcbiAgICAgICAgcmV2ZXJ0OiByZXZlcnQsXG4gICAgICAgIGRyYWdSZWN0OiBkcmFnUmVjdCxcbiAgICAgICAgdGFyZ2V0UmVjdDogdGFyZ2V0UmVjdCxcbiAgICAgICAgY2FuU29ydDogY2FuU29ydCxcbiAgICAgICAgZnJvbVNvcnRhYmxlOiBmcm9tU29ydGFibGUsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICBjb21wbGV0ZWQ6IGNvbXBsZXRlZCxcbiAgICAgICAgb25Nb3ZlOiBmdW5jdGlvbiBvbk1vdmUodGFyZ2V0LCBhZnRlcikge1xuICAgICAgICAgIHJldHVybiBfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgZ2V0UmVjdCh0YXJnZXQpLCBldnQsIGFmdGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hhbmdlZDogY2hhbmdlZFxuICAgICAgfSwgZXh0cmEpKTtcbiAgICB9IC8vIENhcHR1cmUgYW5pbWF0aW9uIHN0YXRlXG5cblxuICAgIGZ1bmN0aW9uIGNhcHR1cmUoKSB7XG4gICAgICBkcmFnT3ZlckV2ZW50KCdkcmFnT3ZlckFuaW1hdGlvbkNhcHR1cmUnKTtcblxuICAgICAgX3RoaXMuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG5cbiAgICAgIGlmIChfdGhpcyAhPT0gZnJvbVNvcnRhYmxlKSB7XG4gICAgICAgIGZyb21Tb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9IC8vIFJldHVybiBpbnZvY2F0aW9uIHdoZW4gZHJhZ0VsIGlzIGluc2VydGVkIChvciBjb21wbGV0ZWQpXG5cblxuICAgIGZ1bmN0aW9uIGNvbXBsZXRlZChpbnNlcnRpb24pIHtcbiAgICAgIGRyYWdPdmVyRXZlbnQoJ2RyYWdPdmVyQ29tcGxldGVkJywge1xuICAgICAgICBpbnNlcnRpb246IGluc2VydGlvblxuICAgICAgfSk7XG5cbiAgICAgIGlmIChpbnNlcnRpb24pIHtcbiAgICAgICAgLy8gQ2xvbmVzIG11c3QgYmUgaGlkZGVuIGJlZm9yZSBmb2xkaW5nIGFuaW1hdGlvbiB0byBjYXB0dXJlIGRyYWdSZWN0QWJzb2x1dGUgcHJvcGVybHlcbiAgICAgICAgaWYgKGlzT3duZXIpIHtcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5faGlkZUNsb25lKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWN0aXZlU29ydGFibGUuX3Nob3dDbG9uZShfdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMgIT09IGZyb21Tb3J0YWJsZSkge1xuICAgICAgICAgIC8vIFNldCBnaG9zdCBjbGFzcyB0byBuZXcgc29ydGFibGUncyBnaG9zdCBjbGFzc1xuICAgICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgcHV0U29ydGFibGUgPyBwdXRTb3J0YWJsZS5vcHRpb25zLmdob3N0Q2xhc3MgOiBhY3RpdmVTb3J0YWJsZS5vcHRpb25zLmdob3N0Q2xhc3MsIGZhbHNlKTtcbiAgICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuZ2hvc3RDbGFzcywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHV0U29ydGFibGUgIT09IF90aGlzICYmIF90aGlzICE9PSBTb3J0YWJsZS5hY3RpdmUpIHtcbiAgICAgICAgICBwdXRTb3J0YWJsZSA9IF90aGlzO1xuICAgICAgICB9IGVsc2UgaWYgKF90aGlzID09PSBTb3J0YWJsZS5hY3RpdmUgJiYgcHV0U29ydGFibGUpIHtcbiAgICAgICAgICBwdXRTb3J0YWJsZSA9IG51bGw7XG4gICAgICAgIH0gLy8gQW5pbWF0aW9uXG5cblxuICAgICAgICBpZiAoZnJvbVNvcnRhYmxlID09PSBfdGhpcykge1xuICAgICAgICAgIF90aGlzLl9pZ25vcmVXaGlsZUFuaW1hdGluZyA9IHRhcmdldDtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmFuaW1hdGVBbGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRyYWdPdmVyRXZlbnQoJ2RyYWdPdmVyQW5pbWF0aW9uQ29tcGxldGUnKTtcbiAgICAgICAgICBfdGhpcy5faWdub3JlV2hpbGVBbmltYXRpbmcgPSBudWxsO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoX3RoaXMgIT09IGZyb21Tb3J0YWJsZSkge1xuICAgICAgICAgIGZyb21Tb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gICAgICAgICAgZnJvbVNvcnRhYmxlLl9pZ25vcmVXaGlsZUFuaW1hdGluZyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gTnVsbCBsYXN0VGFyZ2V0IGlmIGl0IGlzIG5vdCBpbnNpZGUgYSBwcmV2aW91c2x5IHN3YXBwZWQgZWxlbWVudFxuXG5cbiAgICAgIGlmICh0YXJnZXQgPT09IGRyYWdFbCAmJiAhZHJhZ0VsLmFuaW1hdGVkIHx8IHRhcmdldCA9PT0gZWwgJiYgIXRhcmdldC5hbmltYXRlZCkge1xuICAgICAgICBsYXN0VGFyZ2V0ID0gbnVsbDtcbiAgICAgIH0gLy8gbm8gYnViYmxpbmcgYW5kIG5vdCBmYWxsYmFja1xuXG5cbiAgICAgIGlmICghb3B0aW9ucy5kcmFnb3ZlckJ1YmJsZSAmJiAhZXZ0LnJvb3RFbCAmJiB0YXJnZXQgIT09IGRvY3VtZW50KSB7XG4gICAgICAgIGRyYWdFbC5wYXJlbnROb2RlW2V4cGFuZG9dLl9pc091dHNpZGVUaGlzRWwoZXZ0LnRhcmdldCk7IC8vIERvIG5vdCBkZXRlY3QgZm9yIGVtcHR5IGluc2VydCBpZiBhbHJlYWR5IGluc2VydGVkXG5cblxuICAgICAgICAhaW5zZXJ0aW9uICYmIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KGV2dCk7XG4gICAgICB9XG5cbiAgICAgICFvcHRpb25zLmRyYWdvdmVyQnViYmxlICYmIGV2dC5zdG9wUHJvcGFnYXRpb24gJiYgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuIGNvbXBsZXRlZEZpcmVkID0gdHJ1ZTtcbiAgICB9IC8vIENhbGwgd2hlbiBkcmFnRWwgaGFzIGJlZW4gaW5zZXJ0ZWRcblxuXG4gICAgZnVuY3Rpb24gY2hhbmdlZCgpIHtcbiAgICAgIG5ld0luZGV4ID0gaW5kZXgoZHJhZ0VsKTtcbiAgICAgIG5ld0RyYWdnYWJsZUluZGV4ID0gaW5kZXgoZHJhZ0VsLCBvcHRpb25zLmRyYWdnYWJsZSk7XG5cbiAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgc29ydGFibGU6IF90aGlzLFxuICAgICAgICBuYW1lOiAnY2hhbmdlJyxcbiAgICAgICAgdG9FbDogZWwsXG4gICAgICAgIG5ld0luZGV4OiBuZXdJbmRleCxcbiAgICAgICAgbmV3RHJhZ2dhYmxlSW5kZXg6IG5ld0RyYWdnYWJsZUluZGV4LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChldnQucHJldmVudERlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0ID0gY2xvc2VzdCh0YXJnZXQsIG9wdGlvbnMuZHJhZ2dhYmxlLCBlbCwgdHJ1ZSk7XG4gICAgZHJhZ092ZXJFdmVudCgnZHJhZ092ZXInKTtcbiAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkgcmV0dXJuIGNvbXBsZXRlZEZpcmVkO1xuXG4gICAgaWYgKGRyYWdFbC5jb250YWlucyhldnQudGFyZ2V0KSB8fCB0YXJnZXQuYW5pbWF0ZWQgJiYgdGFyZ2V0LmFuaW1hdGluZ1ggJiYgdGFyZ2V0LmFuaW1hdGluZ1kgfHwgX3RoaXMuX2lnbm9yZVdoaWxlQW5pbWF0aW5nID09PSB0YXJnZXQpIHtcbiAgICAgIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlnbm9yZU5leHRDbGljayA9IGZhbHNlO1xuXG4gICAgaWYgKGFjdGl2ZVNvcnRhYmxlICYmICFvcHRpb25zLmRpc2FibGVkICYmIChpc093bmVyID8gY2FuU29ydCB8fCAocmV2ZXJ0ID0gcGFyZW50RWwgIT09IHJvb3RFbCkgLy8gUmV2ZXJ0aW5nIGl0ZW0gaW50byB0aGUgb3JpZ2luYWwgbGlzdFxuICAgIDogcHV0U29ydGFibGUgPT09IHRoaXMgfHwgKHRoaXMubGFzdFB1dE1vZGUgPSBhY3RpdmVHcm91cC5jaGVja1B1bGwodGhpcywgYWN0aXZlU29ydGFibGUsIGRyYWdFbCwgZXZ0KSkgJiYgZ3JvdXAuY2hlY2tQdXQodGhpcywgYWN0aXZlU29ydGFibGUsIGRyYWdFbCwgZXZ0KSkpIHtcbiAgICAgIHZlcnRpY2FsID0gdGhpcy5fZ2V0RGlyZWN0aW9uKGV2dCwgdGFyZ2V0KSA9PT0gJ3ZlcnRpY2FsJztcbiAgICAgIGRyYWdSZWN0ID0gZ2V0UmVjdChkcmFnRWwpO1xuICAgICAgZHJhZ092ZXJFdmVudCgnZHJhZ092ZXJWYWxpZCcpO1xuICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHJldHVybiBjb21wbGV0ZWRGaXJlZDtcblxuICAgICAgaWYgKHJldmVydCkge1xuICAgICAgICBwYXJlbnRFbCA9IHJvb3RFbDsgLy8gYWN0dWFsaXphdGlvblxuXG4gICAgICAgIGNhcHR1cmUoKTtcblxuICAgICAgICB0aGlzLl9oaWRlQ2xvbmUoKTtcblxuICAgICAgICBkcmFnT3ZlckV2ZW50KCdyZXZlcnQnKTtcblxuICAgICAgICBpZiAoIVNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgICAgICBpZiAobmV4dEVsKSB7XG4gICAgICAgICAgICByb290RWwuaW5zZXJ0QmVmb3JlKGRyYWdFbCwgbmV4dEVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm9vdEVsLmFwcGVuZENoaWxkKGRyYWdFbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlZCh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsTGFzdENoaWxkID0gbGFzdENoaWxkKGVsLCBvcHRpb25zLmRyYWdnYWJsZSk7XG5cbiAgICAgIGlmICghZWxMYXN0Q2hpbGQgfHwgX2dob3N0SXNMYXN0KGV2dCwgdmVydGljYWwsIHRoaXMpICYmICFlbExhc3RDaGlsZC5hbmltYXRlZCkge1xuICAgICAgICAvLyBJbnNlcnQgdG8gZW5kIG9mIGxpc3RcbiAgICAgICAgLy8gSWYgYWxyZWFkeSBhdCBlbmQgb2YgbGlzdDogRG8gbm90IGluc2VydFxuICAgICAgICBpZiAoZWxMYXN0Q2hpbGQgPT09IGRyYWdFbCkge1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuICAgICAgICB9IC8vIGlmIHRoZXJlIGlzIGEgbGFzdCBlbGVtZW50LCBpdCBpcyB0aGUgdGFyZ2V0XG5cblxuICAgICAgICBpZiAoZWxMYXN0Q2hpbGQgJiYgZWwgPT09IGV2dC50YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXQgPSBlbExhc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXRSZWN0ID0gZ2V0UmVjdCh0YXJnZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF9vbk1vdmUocm9vdEVsLCBlbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0LCB0YXJnZXRSZWN0LCBldnQsICEhdGFyZ2V0KSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBjYXB0dXJlKCk7XG4gICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcbiAgICAgICAgICBwYXJlbnRFbCA9IGVsOyAvLyBhY3R1YWxpemF0aW9uXG5cbiAgICAgICAgICBjaGFuZ2VkKCk7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbExhc3RDaGlsZCAmJiBfZ2hvc3RJc0ZpcnN0KGV2dCwgdmVydGljYWwsIHRoaXMpKSB7XG4gICAgICAgIC8vIEluc2VydCB0byBzdGFydCBvZiBsaXN0XG4gICAgICAgIHZhciBmaXJzdENoaWxkID0gZ2V0Q2hpbGQoZWwsIDAsIG9wdGlvbnMsIHRydWUpO1xuXG4gICAgICAgIGlmIChmaXJzdENoaWxkID09PSBkcmFnRWwpIHtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldCA9IGZpcnN0Q2hpbGQ7XG4gICAgICAgIHRhcmdldFJlY3QgPSBnZXRSZWN0KHRhcmdldCk7XG5cbiAgICAgICAgaWYgKF9vbk1vdmUocm9vdEVsLCBlbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0LCB0YXJnZXRSZWN0LCBldnQsIGZhbHNlKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBjYXB0dXJlKCk7XG4gICAgICAgICAgZWwuaW5zZXJ0QmVmb3JlKGRyYWdFbCwgZmlyc3RDaGlsZCk7XG4gICAgICAgICAgcGFyZW50RWwgPSBlbDsgLy8gYWN0dWFsaXphdGlvblxuXG4gICAgICAgICAgY2hhbmdlZCgpO1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnBhcmVudE5vZGUgPT09IGVsKSB7XG4gICAgICAgIHRhcmdldFJlY3QgPSBnZXRSZWN0KHRhcmdldCk7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSAwLFxuICAgICAgICAgICAgdGFyZ2V0QmVmb3JlRmlyc3RTd2FwLFxuICAgICAgICAgICAgZGlmZmVyZW50TGV2ZWwgPSBkcmFnRWwucGFyZW50Tm9kZSAhPT0gZWwsXG4gICAgICAgICAgICBkaWZmZXJlbnRSb3dDb2wgPSAhX2RyYWdFbEluUm93Q29sdW1uKGRyYWdFbC5hbmltYXRlZCAmJiBkcmFnRWwudG9SZWN0IHx8IGRyYWdSZWN0LCB0YXJnZXQuYW5pbWF0ZWQgJiYgdGFyZ2V0LnRvUmVjdCB8fCB0YXJnZXRSZWN0LCB2ZXJ0aWNhbCksXG4gICAgICAgICAgICBzaWRlMSA9IHZlcnRpY2FsID8gJ3RvcCcgOiAnbGVmdCcsXG4gICAgICAgICAgICBzY3JvbGxlZFBhc3RUb3AgPSBpc1Njcm9sbGVkUGFzdCh0YXJnZXQsICd0b3AnLCAndG9wJykgfHwgaXNTY3JvbGxlZFBhc3QoZHJhZ0VsLCAndG9wJywgJ3RvcCcpLFxuICAgICAgICAgICAgc2Nyb2xsQmVmb3JlID0gc2Nyb2xsZWRQYXN0VG9wID8gc2Nyb2xsZWRQYXN0VG9wLnNjcm9sbFRvcCA6IHZvaWQgMDtcblxuICAgICAgICBpZiAobGFzdFRhcmdldCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgdGFyZ2V0QmVmb3JlRmlyc3RTd2FwID0gdGFyZ2V0UmVjdFtzaWRlMV07XG4gICAgICAgICAgcGFzdEZpcnN0SW52ZXJ0VGhyZXNoID0gZmFsc2U7XG4gICAgICAgICAgaXNDaXJjdW1zdGFudGlhbEludmVydCA9ICFkaWZmZXJlbnRSb3dDb2wgJiYgb3B0aW9ucy5pbnZlcnRTd2FwIHx8IGRpZmZlcmVudExldmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlyZWN0aW9uID0gX2dldFN3YXBEaXJlY3Rpb24oZXZ0LCB0YXJnZXQsIHRhcmdldFJlY3QsIHZlcnRpY2FsLCBkaWZmZXJlbnRSb3dDb2wgPyAxIDogb3B0aW9ucy5zd2FwVGhyZXNob2xkLCBvcHRpb25zLmludmVydGVkU3dhcFRocmVzaG9sZCA9PSBudWxsID8gb3B0aW9ucy5zd2FwVGhyZXNob2xkIDogb3B0aW9ucy5pbnZlcnRlZFN3YXBUaHJlc2hvbGQsIGlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQsIGxhc3RUYXJnZXQgPT09IHRhcmdldCk7XG4gICAgICAgIHZhciBzaWJsaW5nO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gIT09IDApIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0YXJnZXQgaXMgYmVzaWRlIGRyYWdFbCBpbiByZXNwZWN0aXZlIGRpcmVjdGlvbiAoaWdub3JpbmcgaGlkZGVuIGVsZW1lbnRzKVxuICAgICAgICAgIHZhciBkcmFnSW5kZXggPSBpbmRleChkcmFnRWwpO1xuXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgZHJhZ0luZGV4IC09IGRpcmVjdGlvbjtcbiAgICAgICAgICAgIHNpYmxpbmcgPSBwYXJlbnRFbC5jaGlsZHJlbltkcmFnSW5kZXhdO1xuICAgICAgICAgIH0gd2hpbGUgKHNpYmxpbmcgJiYgKGNzcyhzaWJsaW5nLCAnZGlzcGxheScpID09PSAnbm9uZScgfHwgc2libGluZyA9PT0gZ2hvc3RFbCkpO1xuICAgICAgICB9IC8vIElmIGRyYWdFbCBpcyBhbHJlYWR5IGJlc2lkZSB0YXJnZXQ6IERvIG5vdCBpbnNlcnRcblxuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09IDAgfHwgc2libGluZyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBsYXN0VGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICBsYXN0RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB2YXIgbmV4dFNpYmxpbmcgPSB0YXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nLFxuICAgICAgICAgICAgYWZ0ZXIgPSBmYWxzZTtcbiAgICAgICAgYWZ0ZXIgPSBkaXJlY3Rpb24gPT09IDE7XG5cbiAgICAgICAgdmFyIG1vdmVWZWN0b3IgPSBfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgdGFyZ2V0UmVjdCwgZXZ0LCBhZnRlcik7XG5cbiAgICAgICAgaWYgKG1vdmVWZWN0b3IgIT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKG1vdmVWZWN0b3IgPT09IDEgfHwgbW92ZVZlY3RvciA9PT0gLTEpIHtcbiAgICAgICAgICAgIGFmdGVyID0gbW92ZVZlY3RvciA9PT0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfc2lsZW50ID0gdHJ1ZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KF91bnNpbGVudCwgMzApO1xuICAgICAgICAgIGNhcHR1cmUoKTtcblxuICAgICAgICAgIGlmIChhZnRlciAmJiAhbmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGRyYWdFbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkcmFnRWwsIGFmdGVyID8gbmV4dFNpYmxpbmcgOiB0YXJnZXQpO1xuICAgICAgICAgIH0gLy8gVW5kbyBjaHJvbWUncyBzY3JvbGwgYWRqdXN0bWVudCAoaGFzIG5vIGVmZmVjdCBvbiBvdGhlciBicm93c2VycylcblxuXG4gICAgICAgICAgaWYgKHNjcm9sbGVkUGFzdFRvcCkge1xuICAgICAgICAgICAgc2Nyb2xsQnkoc2Nyb2xsZWRQYXN0VG9wLCAwLCBzY3JvbGxCZWZvcmUgLSBzY3JvbGxlZFBhc3RUb3Auc2Nyb2xsVG9wKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJlbnRFbCA9IGRyYWdFbC5wYXJlbnROb2RlOyAvLyBhY3R1YWxpemF0aW9uXG4gICAgICAgICAgLy8gbXVzdCBiZSBkb25lIGJlZm9yZSBhbmltYXRpb25cblxuICAgICAgICAgIGlmICh0YXJnZXRCZWZvcmVGaXJzdFN3YXAgIT09IHVuZGVmaW5lZCAmJiAhaXNDaXJjdW1zdGFudGlhbEludmVydCkge1xuICAgICAgICAgICAgdGFyZ2V0TW92ZURpc3RhbmNlID0gTWF0aC5hYnModGFyZ2V0QmVmb3JlRmlyc3RTd2FwIC0gZ2V0UmVjdCh0YXJnZXQpW3NpZGUxXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2hhbmdlZCgpO1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVsLmNvbnRhaW5zKGRyYWdFbCkpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBfaWdub3JlV2hpbGVBbmltYXRpbmc6IG51bGwsXG4gIF9vZmZNb3ZlRXZlbnRzOiBmdW5jdGlvbiBfb2ZmTW92ZUV2ZW50cygpIHtcbiAgICBvZmYoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgb2ZmKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgIG9mZihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgIG9mZihkb2N1bWVudCwgJ2RyYWdvdmVyJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICAgIG9mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgICBvZmYoZG9jdW1lbnQsICd0b3VjaG1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gIH0sXG4gIF9vZmZVcEV2ZW50czogZnVuY3Rpb24gX29mZlVwRXZlbnRzKCkge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gdGhpcy5lbC5vd25lckRvY3VtZW50O1xuICAgIG9mZihvd25lckRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMuX29uRHJvcCk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMuX29uRHJvcCk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICdwb2ludGVydXAnLCB0aGlzLl9vbkRyb3ApO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCB0aGlzLl9vbkRyb3ApO1xuICAgIG9mZihkb2N1bWVudCwgJ3NlbGVjdHN0YXJ0JywgdGhpcyk7XG4gIH0sXG4gIF9vbkRyb3A6IGZ1bmN0aW9uIF9vbkRyb3AoXG4gIC8qKkV2ZW50Ki9cbiAgZXZ0KSB7XG4gICAgdmFyIGVsID0gdGhpcy5lbCxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsgLy8gR2V0IHRoZSBpbmRleCBvZiB0aGUgZHJhZ2dlZCBlbGVtZW50IHdpdGhpbiBpdHMgcGFyZW50XG5cbiAgICBuZXdJbmRleCA9IGluZGV4KGRyYWdFbCk7XG4gICAgbmV3RHJhZ2dhYmxlSW5kZXggPSBpbmRleChkcmFnRWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcbiAgICBwbHVnaW5FdmVudCgnZHJvcCcsIHRoaXMsIHtcbiAgICAgIGV2dDogZXZ0XG4gICAgfSk7XG4gICAgcGFyZW50RWwgPSBkcmFnRWwgJiYgZHJhZ0VsLnBhcmVudE5vZGU7IC8vIEdldCBhZ2FpbiBhZnRlciBwbHVnaW4gZXZlbnRcblxuICAgIG5ld0luZGV4ID0gaW5kZXgoZHJhZ0VsKTtcbiAgICBuZXdEcmFnZ2FibGVJbmRleCA9IGluZGV4KGRyYWdFbCwgb3B0aW9ucy5kcmFnZ2FibGUpO1xuXG4gICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgIHRoaXMuX251bGxpbmcoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICBpc0NpcmN1bXN0YW50aWFsSW52ZXJ0ID0gZmFsc2U7XG4gICAgcGFzdEZpcnN0SW52ZXJ0VGhyZXNoID0gZmFsc2U7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9sb29wSWQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9kcmFnU3RhcnRUaW1lcik7XG5cbiAgICBfY2FuY2VsTmV4dFRpY2sodGhpcy5jbG9uZUlkKTtcblxuICAgIF9jYW5jZWxOZXh0VGljayh0aGlzLl9kcmFnU3RhcnRJZCk7IC8vIFVuYmluZCBldmVudHNcblxuXG4gICAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICBvZmYoZG9jdW1lbnQsICdkcm9wJywgdGhpcyk7XG4gICAgICBvZmYoZWwsICdkcmFnc3RhcnQnLCB0aGlzLl9vbkRyYWdTdGFydCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb2ZmTW92ZUV2ZW50cygpO1xuXG4gICAgdGhpcy5fb2ZmVXBFdmVudHMoKTtcblxuICAgIGlmIChTYWZhcmkpIHtcbiAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAndXNlci1zZWxlY3QnLCAnJyk7XG4gICAgfVxuXG4gICAgY3NzKGRyYWdFbCwgJ3RyYW5zZm9ybScsICcnKTtcblxuICAgIGlmIChldnQpIHtcbiAgICAgIGlmIChtb3ZlZCkge1xuICAgICAgICBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgIW9wdGlvbnMuZHJvcEJ1YmJsZSAmJiBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIGdob3N0RWwgJiYgZ2hvc3RFbC5wYXJlbnROb2RlICYmIGdob3N0RWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnaG9zdEVsKTtcblxuICAgICAgaWYgKHJvb3RFbCA9PT0gcGFyZW50RWwgfHwgcHV0U29ydGFibGUgJiYgcHV0U29ydGFibGUubGFzdFB1dE1vZGUgIT09ICdjbG9uZScpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNsb25lKHMpXG4gICAgICAgIGNsb25lRWwgJiYgY2xvbmVFbC5wYXJlbnROb2RlICYmIGNsb25lRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9uZUVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRyYWdFbCkge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgICBvZmYoZHJhZ0VsLCAnZHJhZ2VuZCcsIHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgX2Rpc2FibGVEcmFnZ2FibGUoZHJhZ0VsKTtcblxuICAgICAgICBkcmFnRWwuc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnJzsgLy8gUmVtb3ZlIGNsYXNzZXNcbiAgICAgICAgLy8gZ2hvc3RDbGFzcyBpcyBhZGRlZCBpbiBkcmFnU3RhcnRlZFxuXG4gICAgICAgIGlmIChtb3ZlZCAmJiAhYXdhaXRpbmdEcmFnU3RhcnRlZCkge1xuICAgICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgcHV0U29ydGFibGUgPyBwdXRTb3J0YWJsZS5vcHRpb25zLmdob3N0Q2xhc3MgOiB0aGlzLm9wdGlvbnMuZ2hvc3RDbGFzcywgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCB0aGlzLm9wdGlvbnMuY2hvc2VuQ2xhc3MsIGZhbHNlKTsgLy8gRHJhZyBzdG9wIGV2ZW50XG5cbiAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgIG5hbWU6ICd1bmNob29zZScsXG4gICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgbmV3SW5kZXg6IG51bGwsXG4gICAgICAgICAgbmV3RHJhZ2dhYmxlSW5kZXg6IG51bGwsXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyb290RWwgIT09IHBhcmVudEVsKSB7XG4gICAgICAgICAgaWYgKG5ld0luZGV4ID49IDApIHtcbiAgICAgICAgICAgIC8vIEFkZCBldmVudFxuICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICByb290RWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBuYW1lOiAnYWRkJyxcbiAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIGZyb21FbDogcm9vdEVsLFxuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgIH0pOyAvLyBSZW1vdmUgZXZlbnRcblxuXG4gICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgICAgICBuYW1lOiAncmVtb3ZlJyxcbiAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgfSk7IC8vIGRyYWcgZnJvbSBvbmUgbGlzdCBhbmQgZHJvcCBpbnRvIGFub3RoZXJcblxuXG4gICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgIHJvb3RFbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIG5hbWU6ICdzb3J0JyxcbiAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIGZyb21FbDogcm9vdEVsLFxuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgICAgICBuYW1lOiAnc29ydCcsXG4gICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHB1dFNvcnRhYmxlICYmIHB1dFNvcnRhYmxlLnNhdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV3SW5kZXggIT09IG9sZEluZGV4KSB7XG4gICAgICAgICAgICBpZiAobmV3SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAvLyBkcmFnICYgZHJvcCB3aXRoaW4gdGhlIHNhbWUgbGlzdFxuICAgICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnc29ydCcsXG4gICAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTb3J0YWJsZS5hY3RpdmUpIHtcbiAgICAgICAgICAvKiBqc2hpbnQgZXFudWxsOnRydWUgKi9cbiAgICAgICAgICBpZiAobmV3SW5kZXggPT0gbnVsbCB8fCBuZXdJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIG5ld0luZGV4ID0gb2xkSW5kZXg7XG4gICAgICAgICAgICBuZXdEcmFnZ2FibGVJbmRleCA9IG9sZERyYWdnYWJsZUluZGV4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgICAgbmFtZTogJ2VuZCcsXG4gICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgIH0pOyAvLyBTYXZlIHNvcnRpbmdcblxuXG4gICAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9udWxsaW5nKCk7XG4gIH0sXG4gIF9udWxsaW5nOiBmdW5jdGlvbiBfbnVsbGluZygpIHtcbiAgICBwbHVnaW5FdmVudCgnbnVsbGluZycsIHRoaXMpO1xuICAgIHJvb3RFbCA9IGRyYWdFbCA9IHBhcmVudEVsID0gZ2hvc3RFbCA9IG5leHRFbCA9IGNsb25lRWwgPSBsYXN0RG93bkVsID0gY2xvbmVIaWRkZW4gPSB0YXBFdnQgPSB0b3VjaEV2dCA9IG1vdmVkID0gbmV3SW5kZXggPSBuZXdEcmFnZ2FibGVJbmRleCA9IG9sZEluZGV4ID0gb2xkRHJhZ2dhYmxlSW5kZXggPSBsYXN0VGFyZ2V0ID0gbGFzdERpcmVjdGlvbiA9IHB1dFNvcnRhYmxlID0gYWN0aXZlR3JvdXAgPSBTb3J0YWJsZS5kcmFnZ2VkID0gU29ydGFibGUuZ2hvc3QgPSBTb3J0YWJsZS5jbG9uZSA9IFNvcnRhYmxlLmFjdGl2ZSA9IG51bGw7XG4gICAgc2F2ZWRJbnB1dENoZWNrZWQuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgIGVsLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHNhdmVkSW5wdXRDaGVja2VkLmxlbmd0aCA9IGxhc3REeCA9IGxhc3REeSA9IDA7XG4gIH0sXG4gIGhhbmRsZUV2ZW50OiBmdW5jdGlvbiBoYW5kbGVFdmVudChcbiAgLyoqRXZlbnQqL1xuICBldnQpIHtcbiAgICBzd2l0Y2ggKGV2dC50eXBlKSB7XG4gICAgICBjYXNlICdkcm9wJzpcbiAgICAgIGNhc2UgJ2RyYWdlbmQnOlxuICAgICAgICB0aGlzLl9vbkRyb3AoZXZ0KTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZHJhZ2VudGVyJzpcbiAgICAgIGNhc2UgJ2RyYWdvdmVyJzpcbiAgICAgICAgaWYgKGRyYWdFbCkge1xuICAgICAgICAgIHRoaXMuX29uRHJhZ092ZXIoZXZ0KTtcblxuICAgICAgICAgIF9nbG9iYWxEcmFnT3ZlcihldnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NlbGVjdHN0YXJ0JzpcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogU2VyaWFsaXplcyB0aGUgaXRlbSBpbnRvIGFuIGFycmF5IG9mIHN0cmluZy5cbiAgICogQHJldHVybnMge1N0cmluZ1tdfVxuICAgKi9cbiAgdG9BcnJheTogZnVuY3Rpb24gdG9BcnJheSgpIHtcbiAgICB2YXIgb3JkZXIgPSBbXSxcbiAgICAgICAgZWwsXG4gICAgICAgIGNoaWxkcmVuID0gdGhpcy5lbC5jaGlsZHJlbixcbiAgICAgICAgaSA9IDAsXG4gICAgICAgIG4gPSBjaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBmb3IgKDsgaSA8IG47IGkrKykge1xuICAgICAgZWwgPSBjaGlsZHJlbltpXTtcblxuICAgICAgaWYgKGNsb3Nlc3QoZWwsIG9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLmVsLCBmYWxzZSkpIHtcbiAgICAgICAgb3JkZXIucHVzaChlbC5nZXRBdHRyaWJ1dGUob3B0aW9ucy5kYXRhSWRBdHRyKSB8fCBfZ2VuZXJhdGVJZChlbCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcmRlcjtcbiAgfSxcblxuICAvKipcbiAgICogU29ydHMgdGhlIGVsZW1lbnRzIGFjY29yZGluZyB0byB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSAge1N0cmluZ1tdfSAgb3JkZXIgIG9yZGVyIG9mIHRoZSBpdGVtc1xuICAgKi9cbiAgc29ydDogZnVuY3Rpb24gc29ydChvcmRlciwgdXNlQW5pbWF0aW9uKSB7XG4gICAgdmFyIGl0ZW1zID0ge30sXG4gICAgICAgIHJvb3RFbCA9IHRoaXMuZWw7XG4gICAgdGhpcy50b0FycmF5KCkuZm9yRWFjaChmdW5jdGlvbiAoaWQsIGkpIHtcbiAgICAgIHZhciBlbCA9IHJvb3RFbC5jaGlsZHJlbltpXTtcblxuICAgICAgaWYgKGNsb3Nlc3QoZWwsIHRoaXMub3B0aW9ucy5kcmFnZ2FibGUsIHJvb3RFbCwgZmFsc2UpKSB7XG4gICAgICAgIGl0ZW1zW2lkXSA9IGVsO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuICAgIHVzZUFuaW1hdGlvbiAmJiB0aGlzLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgIG9yZGVyLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICBpZiAoaXRlbXNbaWRdKSB7XG4gICAgICAgIHJvb3RFbC5yZW1vdmVDaGlsZChpdGVtc1tpZF0pO1xuICAgICAgICByb290RWwuYXBwZW5kQ2hpbGQoaXRlbXNbaWRdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2VBbmltYXRpb24gJiYgdGhpcy5hbmltYXRlQWxsKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIGN1cnJlbnQgc29ydGluZ1xuICAgKi9cbiAgc2F2ZTogZnVuY3Rpb24gc2F2ZSgpIHtcbiAgICB2YXIgc3RvcmUgPSB0aGlzLm9wdGlvbnMuc3RvcmU7XG4gICAgc3RvcmUgJiYgc3RvcmUuc2V0ICYmIHN0b3JlLnNldCh0aGlzKTtcbiAgfSxcblxuICAvKipcbiAgICogRm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgc2V0LCBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciBieSB0ZXN0aW5nIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgdHJhdmVyc2luZyB1cCB0aHJvdWdoIGl0cyBhbmNlc3RvcnMgaW4gdGhlIERPTSB0cmVlLlxuICAgKiBAcGFyYW0gICB7SFRNTEVsZW1lbnR9ICBlbFxuICAgKiBAcGFyYW0gICB7U3RyaW5nfSAgICAgICBbc2VsZWN0b3JdICBkZWZhdWx0OiBgb3B0aW9ucy5kcmFnZ2FibGVgXG4gICAqIEByZXR1cm5zIHtIVE1MRWxlbWVudHxudWxsfVxuICAgKi9cbiAgY2xvc2VzdDogZnVuY3Rpb24gY2xvc2VzdCQxKGVsLCBzZWxlY3Rvcikge1xuICAgIHJldHVybiBjbG9zZXN0KGVsLCBzZWxlY3RvciB8fCB0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLmVsLCBmYWxzZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldC9nZXQgb3B0aW9uXG4gICAqIEBwYXJhbSAgIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtICAgeyp9ICAgICAgW3ZhbHVlXVxuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIG9wdGlvbjogZnVuY3Rpb24gb3B0aW9uKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtb2RpZmllZFZhbHVlID0gUGx1Z2luTWFuYWdlci5tb2RpZnlPcHRpb24odGhpcywgbmFtZSwgdmFsdWUpO1xuXG4gICAgICBpZiAodHlwZW9mIG1vZGlmaWVkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIG9wdGlvbnNbbmFtZV0gPSBtb2RpZmllZFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBfcHJlcGFyZUdyb3VwKG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveVxuICAgKi9cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBwbHVnaW5FdmVudCgnZGVzdHJveScsIHRoaXMpO1xuICAgIHZhciBlbCA9IHRoaXMuZWw7XG4gICAgZWxbZXhwYW5kb10gPSBudWxsO1xuICAgIG9mZihlbCwgJ21vdXNlZG93bicsIHRoaXMuX29uVGFwU3RhcnQpO1xuICAgIG9mZihlbCwgJ3RvdWNoc3RhcnQnLCB0aGlzLl9vblRhcFN0YXJ0KTtcbiAgICBvZmYoZWwsICdwb2ludGVyZG93bicsIHRoaXMuX29uVGFwU3RhcnQpO1xuXG4gICAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICBvZmYoZWwsICdkcmFnb3ZlcicsIHRoaXMpO1xuICAgICAgb2ZmKGVsLCAnZHJhZ2VudGVyJywgdGhpcyk7XG4gICAgfSAvLyBSZW1vdmUgZHJhZ2dhYmxlIGF0dHJpYnV0ZXNcblxuXG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlbC5xdWVyeVNlbGVjdG9yQWxsKCdbZHJhZ2dhYmxlXScpLCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnZHJhZ2dhYmxlJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vbkRyb3AoKTtcblxuICAgIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpO1xuXG4gICAgc29ydGFibGVzLnNwbGljZShzb3J0YWJsZXMuaW5kZXhPZih0aGlzLmVsKSwgMSk7XG4gICAgdGhpcy5lbCA9IGVsID0gbnVsbDtcbiAgfSxcbiAgX2hpZGVDbG9uZTogZnVuY3Rpb24gX2hpZGVDbG9uZSgpIHtcbiAgICBpZiAoIWNsb25lSGlkZGVuKSB7XG4gICAgICBwbHVnaW5FdmVudCgnaGlkZUNsb25lJywgdGhpcyk7XG4gICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkgcmV0dXJuO1xuICAgICAgY3NzKGNsb25lRWwsICdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZW1vdmVDbG9uZU9uSGlkZSAmJiBjbG9uZUVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgY2xvbmVFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb25lRWwpO1xuICAgICAgfVxuXG4gICAgICBjbG9uZUhpZGRlbiA9IHRydWU7XG4gICAgfVxuICB9LFxuICBfc2hvd0Nsb25lOiBmdW5jdGlvbiBfc2hvd0Nsb25lKHB1dFNvcnRhYmxlKSB7XG4gICAgaWYgKHB1dFNvcnRhYmxlLmxhc3RQdXRNb2RlICE9PSAnY2xvbmUnKSB7XG4gICAgICB0aGlzLl9oaWRlQ2xvbmUoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjbG9uZUhpZGRlbikge1xuICAgICAgcGx1Z2luRXZlbnQoJ3Nob3dDbG9uZScsIHRoaXMpO1xuICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHJldHVybjsgLy8gc2hvdyBjbG9uZSBhdCBkcmFnRWwgb3Igb3JpZ2luYWwgcG9zaXRpb25cblxuICAgICAgaWYgKGRyYWdFbC5wYXJlbnROb2RlID09IHJvb3RFbCAmJiAhdGhpcy5vcHRpb25zLmdyb3VwLnJldmVydENsb25lKSB7XG4gICAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUoY2xvbmVFbCwgZHJhZ0VsKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dEVsKSB7XG4gICAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUoY2xvbmVFbCwgbmV4dEVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3RFbC5hcHBlbmRDaGlsZChjbG9uZUVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5ncm91cC5yZXZlcnRDbG9uZSkge1xuICAgICAgICB0aGlzLmFuaW1hdGUoZHJhZ0VsLCBjbG9uZUVsKTtcbiAgICAgIH1cblxuICAgICAgY3NzKGNsb25lRWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgY2xvbmVIaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9nbG9iYWxEcmFnT3Zlcihcbi8qKkV2ZW50Ki9cbmV2dCkge1xuICBpZiAoZXZ0LmRhdGFUcmFuc2Zlcikge1xuICAgIGV2dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcbiAgfVxuXG4gIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xufVxuXG5mdW5jdGlvbiBfb25Nb3ZlKGZyb21FbCwgdG9FbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0RWwsIHRhcmdldFJlY3QsIG9yaWdpbmFsRXZlbnQsIHdpbGxJbnNlcnRBZnRlcikge1xuICB2YXIgZXZ0LFxuICAgICAgc29ydGFibGUgPSBmcm9tRWxbZXhwYW5kb10sXG4gICAgICBvbk1vdmVGbiA9IHNvcnRhYmxlLm9wdGlvbnMub25Nb3ZlLFxuICAgICAgcmV0VmFsOyAvLyBTdXBwb3J0IGZvciBuZXcgQ3VzdG9tRXZlbnQgZmVhdHVyZVxuXG4gIGlmICh3aW5kb3cuQ3VzdG9tRXZlbnQgJiYgIUlFMTFPckxlc3MgJiYgIUVkZ2UpIHtcbiAgICBldnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ21vdmUnLCB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2dC5pbml0RXZlbnQoJ21vdmUnLCB0cnVlLCB0cnVlKTtcbiAgfVxuXG4gIGV2dC50byA9IHRvRWw7XG4gIGV2dC5mcm9tID0gZnJvbUVsO1xuICBldnQuZHJhZ2dlZCA9IGRyYWdFbDtcbiAgZXZ0LmRyYWdnZWRSZWN0ID0gZHJhZ1JlY3Q7XG4gIGV2dC5yZWxhdGVkID0gdGFyZ2V0RWwgfHwgdG9FbDtcbiAgZXZ0LnJlbGF0ZWRSZWN0ID0gdGFyZ2V0UmVjdCB8fCBnZXRSZWN0KHRvRWwpO1xuICBldnQud2lsbEluc2VydEFmdGVyID0gd2lsbEluc2VydEFmdGVyO1xuICBldnQub3JpZ2luYWxFdmVudCA9IG9yaWdpbmFsRXZlbnQ7XG4gIGZyb21FbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cbiAgaWYgKG9uTW92ZUZuKSB7XG4gICAgcmV0VmFsID0gb25Nb3ZlRm4uY2FsbChzb3J0YWJsZSwgZXZ0LCBvcmlnaW5hbEV2ZW50KTtcbiAgfVxuXG4gIHJldHVybiByZXRWYWw7XG59XG5cbmZ1bmN0aW9uIF9kaXNhYmxlRHJhZ2dhYmxlKGVsKSB7XG4gIGVsLmRyYWdnYWJsZSA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBfdW5zaWxlbnQoKSB7XG4gIF9zaWxlbnQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gX2dob3N0SXNGaXJzdChldnQsIHZlcnRpY2FsLCBzb3J0YWJsZSkge1xuICB2YXIgcmVjdCA9IGdldFJlY3QoZ2V0Q2hpbGQoc29ydGFibGUuZWwsIDAsIHNvcnRhYmxlLm9wdGlvbnMsIHRydWUpKTtcbiAgdmFyIHNwYWNlciA9IDEwO1xuICByZXR1cm4gdmVydGljYWwgPyBldnQuY2xpZW50WCA8IHJlY3QubGVmdCAtIHNwYWNlciB8fCBldnQuY2xpZW50WSA8IHJlY3QudG9wICYmIGV2dC5jbGllbnRYIDwgcmVjdC5yaWdodCA6IGV2dC5jbGllbnRZIDwgcmVjdC50b3AgLSBzcGFjZXIgfHwgZXZ0LmNsaWVudFkgPCByZWN0LmJvdHRvbSAmJiBldnQuY2xpZW50WCA8IHJlY3QubGVmdDtcbn1cblxuZnVuY3Rpb24gX2dob3N0SXNMYXN0KGV2dCwgdmVydGljYWwsIHNvcnRhYmxlKSB7XG4gIHZhciByZWN0ID0gZ2V0UmVjdChsYXN0Q2hpbGQoc29ydGFibGUuZWwsIHNvcnRhYmxlLm9wdGlvbnMuZHJhZ2dhYmxlKSk7XG4gIHZhciBzcGFjZXIgPSAxMDtcbiAgcmV0dXJuIHZlcnRpY2FsID8gZXZ0LmNsaWVudFggPiByZWN0LnJpZ2h0ICsgc3BhY2VyIHx8IGV2dC5jbGllbnRYIDw9IHJlY3QucmlnaHQgJiYgZXZ0LmNsaWVudFkgPiByZWN0LmJvdHRvbSAmJiBldnQuY2xpZW50WCA+PSByZWN0LmxlZnQgOiBldnQuY2xpZW50WCA+IHJlY3QucmlnaHQgJiYgZXZ0LmNsaWVudFkgPiByZWN0LnRvcCB8fCBldnQuY2xpZW50WCA8PSByZWN0LnJpZ2h0ICYmIGV2dC5jbGllbnRZID4gcmVjdC5ib3R0b20gKyBzcGFjZXI7XG59XG5cbmZ1bmN0aW9uIF9nZXRTd2FwRGlyZWN0aW9uKGV2dCwgdGFyZ2V0LCB0YXJnZXRSZWN0LCB2ZXJ0aWNhbCwgc3dhcFRocmVzaG9sZCwgaW52ZXJ0ZWRTd2FwVGhyZXNob2xkLCBpbnZlcnRTd2FwLCBpc0xhc3RUYXJnZXQpIHtcbiAgdmFyIG1vdXNlT25BeGlzID0gdmVydGljYWwgPyBldnQuY2xpZW50WSA6IGV2dC5jbGllbnRYLFxuICAgICAgdGFyZ2V0TGVuZ3RoID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LmhlaWdodCA6IHRhcmdldFJlY3Qud2lkdGgsXG4gICAgICB0YXJnZXRTMSA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC50b3AgOiB0YXJnZXRSZWN0LmxlZnQsXG4gICAgICB0YXJnZXRTMiA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC5ib3R0b20gOiB0YXJnZXRSZWN0LnJpZ2h0LFxuICAgICAgaW52ZXJ0ID0gZmFsc2U7XG5cbiAgaWYgKCFpbnZlcnRTd2FwKSB7XG4gICAgLy8gTmV2ZXIgaW52ZXJ0IG9yIGNyZWF0ZSBkcmFnRWwgc2hhZG93IHdoZW4gdGFyZ2V0IG1vdmVtZW5ldCBjYXVzZXMgbW91c2UgdG8gbW92ZSBwYXN0IHRoZSBlbmQgb2YgcmVndWxhciBzd2FwVGhyZXNob2xkXG4gICAgaWYgKGlzTGFzdFRhcmdldCAmJiB0YXJnZXRNb3ZlRGlzdGFuY2UgPCB0YXJnZXRMZW5ndGggKiBzd2FwVGhyZXNob2xkKSB7XG4gICAgICAvLyBtdWx0aXBsaWVkIG9ubHkgYnkgc3dhcFRocmVzaG9sZCBiZWNhdXNlIG1vdXNlIHdpbGwgYWxyZWFkeSBiZSBpbnNpZGUgdGFyZ2V0IGJ5ICgxIC0gdGhyZXNob2xkKSAqIHRhcmdldExlbmd0aCAvIDJcbiAgICAgIC8vIGNoZWNrIGlmIHBhc3QgZmlyc3QgaW52ZXJ0IHRocmVzaG9sZCBvbiBzaWRlIG9wcG9zaXRlIG9mIGxhc3REaXJlY3Rpb25cbiAgICAgIGlmICghcGFzdEZpcnN0SW52ZXJ0VGhyZXNoICYmIChsYXN0RGlyZWN0aW9uID09PSAxID8gbW91c2VPbkF4aXMgPiB0YXJnZXRTMSArIHRhcmdldExlbmd0aCAqIGludmVydGVkU3dhcFRocmVzaG9sZCAvIDIgOiBtb3VzZU9uQXhpcyA8IHRhcmdldFMyIC0gdGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMikpIHtcbiAgICAgICAgLy8gcGFzdCBmaXJzdCBpbnZlcnQgdGhyZXNob2xkLCBkbyBub3QgcmVzdHJpY3QgaW52ZXJ0ZWQgdGhyZXNob2xkIHRvIGRyYWdFbCBzaGFkb3dcbiAgICAgICAgcGFzdEZpcnN0SW52ZXJ0VGhyZXNoID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXN0Rmlyc3RJbnZlcnRUaHJlc2gpIHtcbiAgICAgICAgLy8gZHJhZ0VsIHNoYWRvdyAodGFyZ2V0IG1vdmUgZGlzdGFuY2Ugc2hhZG93KVxuICAgICAgICBpZiAobGFzdERpcmVjdGlvbiA9PT0gMSA/IG1vdXNlT25BeGlzIDwgdGFyZ2V0UzEgKyB0YXJnZXRNb3ZlRGlzdGFuY2UgLy8gb3ZlciBkcmFnRWwgc2hhZG93XG4gICAgICAgIDogbW91c2VPbkF4aXMgPiB0YXJnZXRTMiAtIHRhcmdldE1vdmVEaXN0YW5jZSkge1xuICAgICAgICAgIHJldHVybiAtbGFzdERpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW52ZXJ0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVndWxhclxuICAgICAgaWYgKG1vdXNlT25BeGlzID4gdGFyZ2V0UzEgKyB0YXJnZXRMZW5ndGggKiAoMSAtIHN3YXBUaHJlc2hvbGQpIC8gMiAmJiBtb3VzZU9uQXhpcyA8IHRhcmdldFMyIC0gdGFyZ2V0TGVuZ3RoICogKDEgLSBzd2FwVGhyZXNob2xkKSAvIDIpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRJbnNlcnREaXJlY3Rpb24odGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbnZlcnQgPSBpbnZlcnQgfHwgaW52ZXJ0U3dhcDtcblxuICBpZiAoaW52ZXJ0KSB7XG4gICAgLy8gSW52ZXJ0IG9mIHJlZ3VsYXJcbiAgICBpZiAobW91c2VPbkF4aXMgPCB0YXJnZXRTMSArIHRhcmdldExlbmd0aCAqIGludmVydGVkU3dhcFRocmVzaG9sZCAvIDIgfHwgbW91c2VPbkF4aXMgPiB0YXJnZXRTMiAtIHRhcmdldExlbmd0aCAqIGludmVydGVkU3dhcFRocmVzaG9sZCAvIDIpIHtcbiAgICAgIHJldHVybiBtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoIC8gMiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cbi8qKlxuICogR2V0cyB0aGUgZGlyZWN0aW9uIGRyYWdFbCBtdXN0IGJlIHN3YXBwZWQgcmVsYXRpdmUgdG8gdGFyZ2V0IGluIG9yZGVyIHRvIG1ha2UgaXRcbiAqIHNlZW0gdGhhdCBkcmFnRWwgaGFzIGJlZW4gXCJpbnNlcnRlZFwiIGludG8gdGhhdCBlbGVtZW50J3MgcG9zaXRpb25cbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSB0YXJnZXQgICAgICAgVGhlIHRhcmdldCB3aG9zZSBwb3NpdGlvbiBkcmFnRWwgaXMgYmVpbmcgaW5zZXJ0ZWQgYXRcbiAqIEByZXR1cm4ge051bWJlcn0gICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uIGRyYWdFbCBtdXN0IGJlIHN3YXBwZWRcbiAqL1xuXG5cbmZ1bmN0aW9uIF9nZXRJbnNlcnREaXJlY3Rpb24odGFyZ2V0KSB7XG4gIGlmIChpbmRleChkcmFnRWwpIDwgaW5kZXgodGFyZ2V0KSkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAtMTtcbiAgfVxufVxuLyoqXG4gKiBHZW5lcmF0ZSBpZFxuICogQHBhcmFtICAge0hUTUxFbGVtZW50fSBlbFxuICogQHJldHVybnMge1N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuXG5mdW5jdGlvbiBfZ2VuZXJhdGVJZChlbCkge1xuICB2YXIgc3RyID0gZWwudGFnTmFtZSArIGVsLmNsYXNzTmFtZSArIGVsLnNyYyArIGVsLmhyZWYgKyBlbC50ZXh0Q29udGVudCxcbiAgICAgIGkgPSBzdHIubGVuZ3RoLFxuICAgICAgc3VtID0gMDtcblxuICB3aGlsZSAoaS0tKSB7XG4gICAgc3VtICs9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICB9XG5cbiAgcmV0dXJuIHN1bS50b1N0cmluZygzNik7XG59XG5cbmZ1bmN0aW9uIF9zYXZlSW5wdXRDaGVja2VkU3RhdGUocm9vdCkge1xuICBzYXZlZElucHV0Q2hlY2tlZC5sZW5ndGggPSAwO1xuICB2YXIgaW5wdXRzID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTtcbiAgdmFyIGlkeCA9IGlucHV0cy5sZW5ndGg7XG5cbiAgd2hpbGUgKGlkeC0tKSB7XG4gICAgdmFyIGVsID0gaW5wdXRzW2lkeF07XG4gICAgZWwuY2hlY2tlZCAmJiBzYXZlZElucHV0Q2hlY2tlZC5wdXNoKGVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfbmV4dFRpY2soZm4pIHtcbiAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDApO1xufVxuXG5mdW5jdGlvbiBfY2FuY2VsTmV4dFRpY2soaWQpIHtcbiAgcmV0dXJuIGNsZWFyVGltZW91dChpZCk7XG59IC8vIEZpeGVkICM5NzM6XG5cblxuaWYgKGRvY3VtZW50RXhpc3RzKSB7XG4gIG9uKGRvY3VtZW50LCAndG91Y2htb3ZlJywgZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmICgoU29ydGFibGUuYWN0aXZlIHx8IGF3YWl0aW5nRHJhZ1N0YXJ0ZWQpICYmIGV2dC5jYW5jZWxhYmxlKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH0pO1xufSAvLyBFeHBvcnQgdXRpbHNcblxuXG5Tb3J0YWJsZS51dGlscyA9IHtcbiAgb246IG9uLFxuICBvZmY6IG9mZixcbiAgY3NzOiBjc3MsXG4gIGZpbmQ6IGZpbmQsXG4gIGlzOiBmdW5jdGlvbiBpcyhlbCwgc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gISFjbG9zZXN0KGVsLCBzZWxlY3RvciwgZWwsIGZhbHNlKTtcbiAgfSxcbiAgZXh0ZW5kOiBleHRlbmQsXG4gIHRocm90dGxlOiB0aHJvdHRsZSxcbiAgY2xvc2VzdDogY2xvc2VzdCxcbiAgdG9nZ2xlQ2xhc3M6IHRvZ2dsZUNsYXNzLFxuICBjbG9uZTogY2xvbmUsXG4gIGluZGV4OiBpbmRleCxcbiAgbmV4dFRpY2s6IF9uZXh0VGljayxcbiAgY2FuY2VsTmV4dFRpY2s6IF9jYW5jZWxOZXh0VGljayxcbiAgZGV0ZWN0RGlyZWN0aW9uOiBfZGV0ZWN0RGlyZWN0aW9uLFxuICBnZXRDaGlsZDogZ2V0Q2hpbGRcbn07XG4vKipcbiAqIEdldCB0aGUgU29ydGFibGUgaW5zdGFuY2Ugb2YgYW4gZWxlbWVudFxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnRcbiAqIEByZXR1cm4ge1NvcnRhYmxlfHVuZGVmaW5lZH0gICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgU29ydGFibGVcbiAqL1xuXG5Tb3J0YWJsZS5nZXQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudFtleHBhbmRvXTtcbn07XG4vKipcbiAqIE1vdW50IGEgcGx1Z2luIHRvIFNvcnRhYmxlXG4gKiBAcGFyYW0gIHsuLi5Tb3J0YWJsZVBsdWdpbnxTb3J0YWJsZVBsdWdpbltdfSBwbHVnaW5zICAgICAgIFBsdWdpbnMgYmVpbmcgbW91bnRlZFxuICovXG5cblxuU29ydGFibGUubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBwbHVnaW5zID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHBsdWdpbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAocGx1Z2luc1swXS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHBsdWdpbnMgPSBwbHVnaW5zWzBdO1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIGlmICghcGx1Z2luLnByb3RvdHlwZSB8fCAhcGx1Z2luLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgdGhyb3cgXCJTb3J0YWJsZTogTW91bnRlZCBwbHVnaW4gbXVzdCBiZSBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLCBub3QgXCIuY29uY2F0KHt9LnRvU3RyaW5nLmNhbGwocGx1Z2luKSk7XG4gICAgfVxuXG4gICAgaWYgKHBsdWdpbi51dGlscykgU29ydGFibGUudXRpbHMgPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgU29ydGFibGUudXRpbHMpLCBwbHVnaW4udXRpbHMpO1xuICAgIFBsdWdpbk1hbmFnZXIubW91bnQocGx1Z2luKTtcbiAgfSk7XG59O1xuLyoqXG4gKiBDcmVhdGUgc29ydGFibGUgaW5zdGFuY2VcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9ICBlbFxuICogQHBhcmFtIHtPYmplY3R9ICAgICAgW29wdGlvbnNdXG4gKi9cblxuXG5Tb3J0YWJsZS5jcmVhdGUgPSBmdW5jdGlvbiAoZWwsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBTb3J0YWJsZShlbCwgb3B0aW9ucyk7XG59OyAvLyBFeHBvcnRcblxuXG5Tb3J0YWJsZS52ZXJzaW9uID0gdmVyc2lvbjtcblxudmFyIGF1dG9TY3JvbGxzID0gW10sXG4gICAgc2Nyb2xsRWwsXG4gICAgc2Nyb2xsUm9vdEVsLFxuICAgIHNjcm9sbGluZyA9IGZhbHNlLFxuICAgIGxhc3RBdXRvU2Nyb2xsWCxcbiAgICBsYXN0QXV0b1Njcm9sbFksXG4gICAgdG91Y2hFdnQkMSxcbiAgICBwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbDtcblxuZnVuY3Rpb24gQXV0b1Njcm9sbFBsdWdpbigpIHtcbiAgZnVuY3Rpb24gQXV0b1Njcm9sbCgpIHtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgc2Nyb2xsOiB0cnVlLFxuICAgICAgZm9yY2VBdXRvU2Nyb2xsRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgc2Nyb2xsU2Vuc2l0aXZpdHk6IDMwLFxuICAgICAgc2Nyb2xsU3BlZWQ6IDEwLFxuICAgICAgYnViYmxlU2Nyb2xsOiB0cnVlXG4gICAgfTsgLy8gQmluZCBhbGwgcHJpdmF0ZSBtZXRob2RzXG5cbiAgICBmb3IgKHZhciBmbiBpbiB0aGlzKSB7XG4gICAgICBpZiAoZm4uY2hhckF0KDApID09PSAnXycgJiYgdHlwZW9mIHRoaXNbZm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXNbZm5dID0gdGhpc1tmbl0uYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBBdXRvU2Nyb2xsLnByb3RvdHlwZSA9IHtcbiAgICBkcmFnU3RhcnRlZDogZnVuY3Rpb24gZHJhZ1N0YXJ0ZWQoX3JlZikge1xuICAgICAgdmFyIG9yaWdpbmFsRXZlbnQgPSBfcmVmLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICAgIGlmICh0aGlzLnNvcnRhYmxlLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICBvbihkb2N1bWVudCwgJ2RyYWdvdmVyJywgdGhpcy5faGFuZGxlQXV0b1Njcm9sbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRQb2ludGVyKSB7XG4gICAgICAgICAgb24oZG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3JpZ2luYWxFdmVudC50b3VjaGVzKSB7XG4gICAgICAgICAgb24oZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZHJhZ092ZXJDb21wbGV0ZWQ6IGZ1bmN0aW9uIGRyYWdPdmVyQ29tcGxldGVkKF9yZWYyKSB7XG4gICAgICB2YXIgb3JpZ2luYWxFdmVudCA9IF9yZWYyLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICAgIC8vIEZvciB3aGVuIGJ1YmJsaW5nIGlzIGNhbmNlbGVkIGFuZCB1c2luZyBmYWxsYmFjayAoZmFsbGJhY2sgJ3RvdWNobW92ZScgYWx3YXlzIHJlYWNoZWQpXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5kcmFnT3ZlckJ1YmJsZSAmJiAhb3JpZ2luYWxFdmVudC5yb290RWwpIHtcbiAgICAgICAgdGhpcy5faGFuZGxlQXV0b1Njcm9sbChvcmlnaW5hbEV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRyb3A6IGZ1bmN0aW9uIGRyb3AoKSB7XG4gICAgICBpZiAodGhpcy5zb3J0YWJsZS5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgb2ZmKGRvY3VtZW50LCAnZHJhZ292ZXInLCB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9mZihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgICAgb2ZmKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgICAgb2ZmKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgIH1cblxuICAgICAgY2xlYXJQb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCgpO1xuICAgICAgY2xlYXJBdXRvU2Nyb2xscygpO1xuICAgICAgY2FuY2VsVGhyb3R0bGUoKTtcbiAgICB9LFxuICAgIG51bGxpbmc6IGZ1bmN0aW9uIG51bGxpbmcoKSB7XG4gICAgICB0b3VjaEV2dCQxID0gc2Nyb2xsUm9vdEVsID0gc2Nyb2xsRWwgPSBzY3JvbGxpbmcgPSBwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCA9IGxhc3RBdXRvU2Nyb2xsWCA9IGxhc3RBdXRvU2Nyb2xsWSA9IG51bGw7XG4gICAgICBhdXRvU2Nyb2xscy5sZW5ndGggPSAwO1xuICAgIH0sXG4gICAgX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbDogZnVuY3Rpb24gX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbChldnQpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUF1dG9TY3JvbGwoZXZ0LCB0cnVlKTtcbiAgICB9LFxuICAgIF9oYW5kbGVBdXRvU2Nyb2xsOiBmdW5jdGlvbiBfaGFuZGxlQXV0b1Njcm9sbChldnQsIGZhbGxiYWNrKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgeCA9IChldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0KS5jbGllbnRYLFxuICAgICAgICAgIHkgPSAoZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dCkuY2xpZW50WSxcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTtcbiAgICAgIHRvdWNoRXZ0JDEgPSBldnQ7IC8vIElFIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBuYXRpdmUgYXV0b3Njcm9sbCxcbiAgICAgIC8vIEVkZ2UncyBhdXRvc2Nyb2xsIHNlZW1zIHRvbyBjb25kaXRpb25hbCxcbiAgICAgIC8vIE1BQ09TIFNhZmFyaSBkb2VzIG5vdCBoYXZlIGF1dG9zY3JvbGwsXG4gICAgICAvLyBGaXJlZm94IGFuZCBDaHJvbWUgYXJlIGdvb2RcblxuICAgICAgaWYgKGZhbGxiYWNrIHx8IHRoaXMub3B0aW9ucy5mb3JjZUF1dG9TY3JvbGxGYWxsYmFjayB8fCBFZGdlIHx8IElFMTFPckxlc3MgfHwgU2FmYXJpKSB7XG4gICAgICAgIGF1dG9TY3JvbGwoZXZ0LCB0aGlzLm9wdGlvbnMsIGVsZW0sIGZhbGxiYWNrKTsgLy8gTGlzdGVuZXIgZm9yIHBvaW50ZXIgZWxlbWVudCBjaGFuZ2VcblxuICAgICAgICB2YXIgb2dFbGVtU2Nyb2xsZXIgPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbGVtLCB0cnVlKTtcblxuICAgICAgICBpZiAoc2Nyb2xsaW5nICYmICghcG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgfHwgeCAhPT0gbGFzdEF1dG9TY3JvbGxYIHx8IHkgIT09IGxhc3RBdXRvU2Nyb2xsWSkpIHtcbiAgICAgICAgICBwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCAmJiBjbGVhclBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsKCk7IC8vIERldGVjdCBmb3IgcG9pbnRlciBlbGVtIGNoYW5nZSwgZW11bGF0aW5nIG5hdGl2ZSBEbkQgYmVoYXZpb3VyXG5cbiAgICAgICAgICBwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbGVtID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmIChuZXdFbGVtICE9PSBvZ0VsZW1TY3JvbGxlcikge1xuICAgICAgICAgICAgICBvZ0VsZW1TY3JvbGxlciA9IG5ld0VsZW07XG4gICAgICAgICAgICAgIGNsZWFyQXV0b1Njcm9sbHMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXV0b1Njcm9sbChldnQsIF90aGlzLm9wdGlvbnMsIG5ld0VsZW0sIGZhbGxiYWNrKTtcbiAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgbGFzdEF1dG9TY3JvbGxYID0geDtcbiAgICAgICAgICBsYXN0QXV0b1Njcm9sbFkgPSB5O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiBEbkQgaXMgZW5hYmxlZCAoYW5kIGJyb3dzZXIgaGFzIGdvb2QgYXV0b3Njcm9sbGluZyksIGZpcnN0IGF1dG9zY3JvbGwgd2lsbCBhbHJlYWR5IHNjcm9sbCwgc28gZ2V0IHBhcmVudCBhdXRvc2Nyb2xsIG9mIGZpcnN0IGF1dG9zY3JvbGxcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYnViYmxlU2Nyb2xsIHx8IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsZW0sIHRydWUpID09PSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCkpIHtcbiAgICAgICAgICBjbGVhckF1dG9TY3JvbGxzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0b1Njcm9sbChldnQsIHRoaXMub3B0aW9ucywgZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZWxlbSwgZmFsc2UpLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICByZXR1cm4gX2V4dGVuZHMoQXV0b1Njcm9sbCwge1xuICAgIHBsdWdpbk5hbWU6ICdzY3JvbGwnLFxuICAgIGluaXRpYWxpemVCeURlZmF1bHQ6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyQXV0b1Njcm9sbHMoKSB7XG4gIGF1dG9TY3JvbGxzLmZvckVhY2goZnVuY3Rpb24gKGF1dG9TY3JvbGwpIHtcbiAgICBjbGVhckludGVydmFsKGF1dG9TY3JvbGwucGlkKTtcbiAgfSk7XG4gIGF1dG9TY3JvbGxzID0gW107XG59XG5cbmZ1bmN0aW9uIGNsZWFyUG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwoKSB7XG4gIGNsZWFySW50ZXJ2YWwocG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwpO1xufVxuXG52YXIgYXV0b1Njcm9sbCA9IHRocm90dGxlKGZ1bmN0aW9uIChldnQsIG9wdGlvbnMsIHJvb3RFbCwgaXNGYWxsYmFjaykge1xuICAvLyBCdWc6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTUwNTUyMVxuICBpZiAoIW9wdGlvbnMuc2Nyb2xsKSByZXR1cm47XG4gIHZhciB4ID0gKGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQpLmNsaWVudFgsXG4gICAgICB5ID0gKGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQpLmNsaWVudFksXG4gICAgICBzZW5zID0gb3B0aW9ucy5zY3JvbGxTZW5zaXRpdml0eSxcbiAgICAgIHNwZWVkID0gb3B0aW9ucy5zY3JvbGxTcGVlZCxcbiAgICAgIHdpblNjcm9sbGVyID0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuICB2YXIgc2Nyb2xsVGhpc0luc3RhbmNlID0gZmFsc2UsXG4gICAgICBzY3JvbGxDdXN0b21GbjsgLy8gTmV3IHNjcm9sbCByb290LCBzZXQgc2Nyb2xsRWxcblxuICBpZiAoc2Nyb2xsUm9vdEVsICE9PSByb290RWwpIHtcbiAgICBzY3JvbGxSb290RWwgPSByb290RWw7XG4gICAgY2xlYXJBdXRvU2Nyb2xscygpO1xuICAgIHNjcm9sbEVsID0gb3B0aW9ucy5zY3JvbGw7XG4gICAgc2Nyb2xsQ3VzdG9tRm4gPSBvcHRpb25zLnNjcm9sbEZuO1xuXG4gICAgaWYgKHNjcm9sbEVsID09PSB0cnVlKSB7XG4gICAgICBzY3JvbGxFbCA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KHJvb3RFbCwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxheWVyc091dCA9IDA7XG4gIHZhciBjdXJyZW50UGFyZW50ID0gc2Nyb2xsRWw7XG5cbiAgZG8ge1xuICAgIHZhciBlbCA9IGN1cnJlbnRQYXJlbnQsXG4gICAgICAgIHJlY3QgPSBnZXRSZWN0KGVsKSxcbiAgICAgICAgdG9wID0gcmVjdC50b3AsXG4gICAgICAgIGJvdHRvbSA9IHJlY3QuYm90dG9tLFxuICAgICAgICBsZWZ0ID0gcmVjdC5sZWZ0LFxuICAgICAgICByaWdodCA9IHJlY3QucmlnaHQsXG4gICAgICAgIHdpZHRoID0gcmVjdC53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gcmVjdC5oZWlnaHQsXG4gICAgICAgIGNhblNjcm9sbFggPSB2b2lkIDAsXG4gICAgICAgIGNhblNjcm9sbFkgPSB2b2lkIDAsXG4gICAgICAgIHNjcm9sbFdpZHRoID0gZWwuc2Nyb2xsV2lkdGgsXG4gICAgICAgIHNjcm9sbEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodCxcbiAgICAgICAgZWxDU1MgPSBjc3MoZWwpLFxuICAgICAgICBzY3JvbGxQb3NYID0gZWwuc2Nyb2xsTGVmdCxcbiAgICAgICAgc2Nyb2xsUG9zWSA9IGVsLnNjcm9sbFRvcDtcblxuICAgIGlmIChlbCA9PT0gd2luU2Nyb2xsZXIpIHtcbiAgICAgIGNhblNjcm9sbFggPSB3aWR0aCA8IHNjcm9sbFdpZHRoICYmIChlbENTUy5vdmVyZmxvd1ggPT09ICdhdXRvJyB8fCBlbENTUy5vdmVyZmxvd1ggPT09ICdzY3JvbGwnIHx8IGVsQ1NTLm92ZXJmbG93WCA9PT0gJ3Zpc2libGUnKTtcbiAgICAgIGNhblNjcm9sbFkgPSBoZWlnaHQgPCBzY3JvbGxIZWlnaHQgJiYgKGVsQ1NTLm92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IGVsQ1NTLm92ZXJmbG93WSA9PT0gJ3Njcm9sbCcgfHwgZWxDU1Mub3ZlcmZsb3dZID09PSAndmlzaWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW5TY3JvbGxYID0gd2lkdGggPCBzY3JvbGxXaWR0aCAmJiAoZWxDU1Mub3ZlcmZsb3dYID09PSAnYXV0bycgfHwgZWxDU1Mub3ZlcmZsb3dYID09PSAnc2Nyb2xsJyk7XG4gICAgICBjYW5TY3JvbGxZID0gaGVpZ2h0IDwgc2Nyb2xsSGVpZ2h0ICYmIChlbENTUy5vdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBlbENTUy5vdmVyZmxvd1kgPT09ICdzY3JvbGwnKTtcbiAgICB9XG5cbiAgICB2YXIgdnggPSBjYW5TY3JvbGxYICYmIChNYXRoLmFicyhyaWdodCAtIHgpIDw9IHNlbnMgJiYgc2Nyb2xsUG9zWCArIHdpZHRoIDwgc2Nyb2xsV2lkdGgpIC0gKE1hdGguYWJzKGxlZnQgLSB4KSA8PSBzZW5zICYmICEhc2Nyb2xsUG9zWCk7XG4gICAgdmFyIHZ5ID0gY2FuU2Nyb2xsWSAmJiAoTWF0aC5hYnMoYm90dG9tIC0geSkgPD0gc2VucyAmJiBzY3JvbGxQb3NZICsgaGVpZ2h0IDwgc2Nyb2xsSGVpZ2h0KSAtIChNYXRoLmFicyh0b3AgLSB5KSA8PSBzZW5zICYmICEhc2Nyb2xsUG9zWSk7XG5cbiAgICBpZiAoIWF1dG9TY3JvbGxzW2xheWVyc091dF0pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IGxheWVyc091dDsgaSsrKSB7XG4gICAgICAgIGlmICghYXV0b1Njcm9sbHNbaV0pIHtcbiAgICAgICAgICBhdXRvU2Nyb2xsc1tpXSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGF1dG9TY3JvbGxzW2xheWVyc091dF0udnggIT0gdnggfHwgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS52eSAhPSB2eSB8fCBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLmVsICE9PSBlbCkge1xuICAgICAgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5lbCA9IGVsO1xuICAgICAgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS52eCA9IHZ4O1xuICAgICAgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS52eSA9IHZ5O1xuICAgICAgY2xlYXJJbnRlcnZhbChhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnBpZCk7XG5cbiAgICAgIGlmICh2eCAhPSAwIHx8IHZ5ICE9IDApIHtcbiAgICAgICAgc2Nyb2xsVGhpc0luc3RhbmNlID0gdHJ1ZTtcbiAgICAgICAgLyoganNoaW50IGxvb3BmdW5jOnRydWUgKi9cblxuICAgICAgICBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnBpZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBlbXVsYXRlIGRyYWcgb3ZlciBkdXJpbmcgYXV0b3Njcm9sbCAoZmFsbGJhY2spLCBlbXVsYXRpbmcgbmF0aXZlIERuRCBiZWhhdmlvdXJcbiAgICAgICAgICBpZiAoaXNGYWxsYmFjayAmJiB0aGlzLmxheWVyID09PSAwKSB7XG4gICAgICAgICAgICBTb3J0YWJsZS5hY3RpdmUuX29uVG91Y2hNb3ZlKHRvdWNoRXZ0JDEpOyAvLyBUbyBtb3ZlIGdob3N0IGlmIGl0IGlzIHBvc2l0aW9uZWQgYWJzb2x1dGVseVxuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHNjcm9sbE9mZnNldFkgPSBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS52eSA/IGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLnZ5ICogc3BlZWQgOiAwO1xuICAgICAgICAgIHZhciBzY3JvbGxPZmZzZXRYID0gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnggPyBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS52eCAqIHNwZWVkIDogMDtcblxuICAgICAgICAgIGlmICh0eXBlb2Ygc2Nyb2xsQ3VzdG9tRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChzY3JvbGxDdXN0b21Gbi5jYWxsKFNvcnRhYmxlLmRyYWdnZWQucGFyZW50Tm9kZVtleHBhbmRvXSwgc2Nyb2xsT2Zmc2V0WCwgc2Nyb2xsT2Zmc2V0WSwgZXZ0LCB0b3VjaEV2dCQxLCBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS5lbCkgIT09ICdjb250aW51ZScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNjcm9sbEJ5KGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLmVsLCBzY3JvbGxPZmZzZXRYLCBzY3JvbGxPZmZzZXRZKTtcbiAgICAgICAgfS5iaW5kKHtcbiAgICAgICAgICBsYXllcjogbGF5ZXJzT3V0XG4gICAgICAgIH0pLCAyNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGF5ZXJzT3V0Kys7XG4gIH0gd2hpbGUgKG9wdGlvbnMuYnViYmxlU2Nyb2xsICYmIGN1cnJlbnRQYXJlbnQgIT09IHdpblNjcm9sbGVyICYmIChjdXJyZW50UGFyZW50ID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoY3VycmVudFBhcmVudCwgZmFsc2UpKSk7XG5cbiAgc2Nyb2xsaW5nID0gc2Nyb2xsVGhpc0luc3RhbmNlOyAvLyBpbiBjYXNlIGFub3RoZXIgZnVuY3Rpb24gY2F0Y2hlcyBzY3JvbGxpbmcgYXMgZmFsc2UgaW4gYmV0d2VlbiB3aGVuIGl0IGlzIG5vdFxufSwgMzApO1xuXG52YXIgZHJvcCA9IGZ1bmN0aW9uIGRyb3AoX3JlZikge1xuICB2YXIgb3JpZ2luYWxFdmVudCA9IF9yZWYub3JpZ2luYWxFdmVudCxcbiAgICAgIHB1dFNvcnRhYmxlID0gX3JlZi5wdXRTb3J0YWJsZSxcbiAgICAgIGRyYWdFbCA9IF9yZWYuZHJhZ0VsLFxuICAgICAgYWN0aXZlU29ydGFibGUgPSBfcmVmLmFjdGl2ZVNvcnRhYmxlLFxuICAgICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50ID0gX3JlZi5kaXNwYXRjaFNvcnRhYmxlRXZlbnQsXG4gICAgICBoaWRlR2hvc3RGb3JUYXJnZXQgPSBfcmVmLmhpZGVHaG9zdEZvclRhcmdldCxcbiAgICAgIHVuaGlkZUdob3N0Rm9yVGFyZ2V0ID0gX3JlZi51bmhpZGVHaG9zdEZvclRhcmdldDtcbiAgaWYgKCFvcmlnaW5hbEV2ZW50KSByZXR1cm47XG4gIHZhciB0b1NvcnRhYmxlID0gcHV0U29ydGFibGUgfHwgYWN0aXZlU29ydGFibGU7XG4gIGhpZGVHaG9zdEZvclRhcmdldCgpO1xuICB2YXIgdG91Y2ggPSBvcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID8gb3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSA6IG9yaWdpbmFsRXZlbnQ7XG4gIHZhciB0YXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRvdWNoLmNsaWVudFgsIHRvdWNoLmNsaWVudFkpO1xuICB1bmhpZGVHaG9zdEZvclRhcmdldCgpO1xuXG4gIGlmICh0b1NvcnRhYmxlICYmICF0b1NvcnRhYmxlLmVsLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQoJ3NwaWxsJyk7XG4gICAgdGhpcy5vblNwaWxsKHtcbiAgICAgIGRyYWdFbDogZHJhZ0VsLFxuICAgICAgcHV0U29ydGFibGU6IHB1dFNvcnRhYmxlXG4gICAgfSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIFJldmVydCgpIHt9XG5cblJldmVydC5wcm90b3R5cGUgPSB7XG4gIHN0YXJ0SW5kZXg6IG51bGwsXG4gIGRyYWdTdGFydDogZnVuY3Rpb24gZHJhZ1N0YXJ0KF9yZWYyKSB7XG4gICAgdmFyIG9sZERyYWdnYWJsZUluZGV4ID0gX3JlZjIub2xkRHJhZ2dhYmxlSW5kZXg7XG4gICAgdGhpcy5zdGFydEluZGV4ID0gb2xkRHJhZ2dhYmxlSW5kZXg7XG4gIH0sXG4gIG9uU3BpbGw6IGZ1bmN0aW9uIG9uU3BpbGwoX3JlZjMpIHtcbiAgICB2YXIgZHJhZ0VsID0gX3JlZjMuZHJhZ0VsLFxuICAgICAgICBwdXRTb3J0YWJsZSA9IF9yZWYzLnB1dFNvcnRhYmxlO1xuICAgIHRoaXMuc29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG5cbiAgICBpZiAocHV0U29ydGFibGUpIHtcbiAgICAgIHB1dFNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgIH1cblxuICAgIHZhciBuZXh0U2libGluZyA9IGdldENoaWxkKHRoaXMuc29ydGFibGUuZWwsIHRoaXMuc3RhcnRJbmRleCwgdGhpcy5vcHRpb25zKTtcblxuICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgdGhpcy5zb3J0YWJsZS5lbC5pbnNlcnRCZWZvcmUoZHJhZ0VsLCBuZXh0U2libGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc29ydGFibGUuZWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRhYmxlLmFuaW1hdGVBbGwoKTtcblxuICAgIGlmIChwdXRTb3J0YWJsZSkge1xuICAgICAgcHV0U29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICAgIH1cbiAgfSxcbiAgZHJvcDogZHJvcFxufTtcblxuX2V4dGVuZHMoUmV2ZXJ0LCB7XG4gIHBsdWdpbk5hbWU6ICdyZXZlcnRPblNwaWxsJ1xufSk7XG5cbmZ1bmN0aW9uIFJlbW92ZSgpIHt9XG5cblJlbW92ZS5wcm90b3R5cGUgPSB7XG4gIG9uU3BpbGw6IGZ1bmN0aW9uIG9uU3BpbGwoX3JlZjQpIHtcbiAgICB2YXIgZHJhZ0VsID0gX3JlZjQuZHJhZ0VsLFxuICAgICAgICBwdXRTb3J0YWJsZSA9IF9yZWY0LnB1dFNvcnRhYmxlO1xuICAgIHZhciBwYXJlbnRTb3J0YWJsZSA9IHB1dFNvcnRhYmxlIHx8IHRoaXMuc29ydGFibGU7XG4gICAgcGFyZW50U29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgZHJhZ0VsLnBhcmVudE5vZGUgJiYgZHJhZ0VsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZHJhZ0VsKTtcbiAgICBwYXJlbnRTb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gIH0sXG4gIGRyb3A6IGRyb3Bcbn07XG5cbl9leHRlbmRzKFJlbW92ZSwge1xuICBwbHVnaW5OYW1lOiAncmVtb3ZlT25TcGlsbCdcbn0pO1xuXG52YXIgbGFzdFN3YXBFbDtcblxuZnVuY3Rpb24gU3dhcFBsdWdpbigpIHtcbiAgZnVuY3Rpb24gU3dhcCgpIHtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgc3dhcENsYXNzOiAnc29ydGFibGUtc3dhcC1oaWdobGlnaHQnXG4gICAgfTtcbiAgfVxuXG4gIFN3YXAucHJvdG90eXBlID0ge1xuICAgIGRyYWdTdGFydDogZnVuY3Rpb24gZHJhZ1N0YXJ0KF9yZWYpIHtcbiAgICAgIHZhciBkcmFnRWwgPSBfcmVmLmRyYWdFbDtcbiAgICAgIGxhc3RTd2FwRWwgPSBkcmFnRWw7XG4gICAgfSxcbiAgICBkcmFnT3ZlclZhbGlkOiBmdW5jdGlvbiBkcmFnT3ZlclZhbGlkKF9yZWYyKSB7XG4gICAgICB2YXIgY29tcGxldGVkID0gX3JlZjIuY29tcGxldGVkLFxuICAgICAgICAgIHRhcmdldCA9IF9yZWYyLnRhcmdldCxcbiAgICAgICAgICBvbk1vdmUgPSBfcmVmMi5vbk1vdmUsXG4gICAgICAgICAgYWN0aXZlU29ydGFibGUgPSBfcmVmMi5hY3RpdmVTb3J0YWJsZSxcbiAgICAgICAgICBjaGFuZ2VkID0gX3JlZjIuY2hhbmdlZCxcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmMi5jYW5jZWw7XG4gICAgICBpZiAoIWFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuc3dhcCkgcmV0dXJuO1xuICAgICAgdmFyIGVsID0gdGhpcy5zb3J0YWJsZS5lbCxcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gZWwpIHtcbiAgICAgICAgdmFyIHByZXZTd2FwRWwgPSBsYXN0U3dhcEVsO1xuXG4gICAgICAgIGlmIChvbk1vdmUodGFyZ2V0KSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICB0b2dnbGVDbGFzcyh0YXJnZXQsIG9wdGlvbnMuc3dhcENsYXNzLCB0cnVlKTtcbiAgICAgICAgICBsYXN0U3dhcEVsID0gdGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3RTd2FwRWwgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZTd2FwRWwgJiYgcHJldlN3YXBFbCAhPT0gbGFzdFN3YXBFbCkge1xuICAgICAgICAgIHRvZ2dsZUNsYXNzKHByZXZTd2FwRWwsIG9wdGlvbnMuc3dhcENsYXNzLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2hhbmdlZCgpO1xuICAgICAgY29tcGxldGVkKHRydWUpO1xuICAgICAgY2FuY2VsKCk7XG4gICAgfSxcbiAgICBkcm9wOiBmdW5jdGlvbiBkcm9wKF9yZWYzKSB7XG4gICAgICB2YXIgYWN0aXZlU29ydGFibGUgPSBfcmVmMy5hY3RpdmVTb3J0YWJsZSxcbiAgICAgICAgICBwdXRTb3J0YWJsZSA9IF9yZWYzLnB1dFNvcnRhYmxlLFxuICAgICAgICAgIGRyYWdFbCA9IF9yZWYzLmRyYWdFbDtcbiAgICAgIHZhciB0b1NvcnRhYmxlID0gcHV0U29ydGFibGUgfHwgdGhpcy5zb3J0YWJsZTtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgbGFzdFN3YXBFbCAmJiB0b2dnbGVDbGFzcyhsYXN0U3dhcEVsLCBvcHRpb25zLnN3YXBDbGFzcywgZmFsc2UpO1xuXG4gICAgICBpZiAobGFzdFN3YXBFbCAmJiAob3B0aW9ucy5zd2FwIHx8IHB1dFNvcnRhYmxlICYmIHB1dFNvcnRhYmxlLm9wdGlvbnMuc3dhcCkpIHtcbiAgICAgICAgaWYgKGRyYWdFbCAhPT0gbGFzdFN3YXBFbCkge1xuICAgICAgICAgIHRvU29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgICAgICAgaWYgKHRvU29ydGFibGUgIT09IGFjdGl2ZVNvcnRhYmxlKSBhY3RpdmVTb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICAgICAgICBzd2FwTm9kZXMoZHJhZ0VsLCBsYXN0U3dhcEVsKTtcbiAgICAgICAgICB0b1NvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgICAgICAgICBpZiAodG9Tb3J0YWJsZSAhPT0gYWN0aXZlU29ydGFibGUpIGFjdGl2ZVNvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbnVsbGluZzogZnVuY3Rpb24gbnVsbGluZygpIHtcbiAgICAgIGxhc3RTd2FwRWwgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzKFN3YXAsIHtcbiAgICBwbHVnaW5OYW1lOiAnc3dhcCcsXG4gICAgZXZlbnRQcm9wZXJ0aWVzOiBmdW5jdGlvbiBldmVudFByb3BlcnRpZXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzd2FwSXRlbTogbGFzdFN3YXBFbFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwTm9kZXMobjEsIG4yKSB7XG4gIHZhciBwMSA9IG4xLnBhcmVudE5vZGUsXG4gICAgICBwMiA9IG4yLnBhcmVudE5vZGUsXG4gICAgICBpMSxcbiAgICAgIGkyO1xuICBpZiAoIXAxIHx8ICFwMiB8fCBwMS5pc0VxdWFsTm9kZShuMikgfHwgcDIuaXNFcXVhbE5vZGUobjEpKSByZXR1cm47XG4gIGkxID0gaW5kZXgobjEpO1xuICBpMiA9IGluZGV4KG4yKTtcblxuICBpZiAocDEuaXNFcXVhbE5vZGUocDIpICYmIGkxIDwgaTIpIHtcbiAgICBpMisrO1xuICB9XG5cbiAgcDEuaW5zZXJ0QmVmb3JlKG4yLCBwMS5jaGlsZHJlbltpMV0pO1xuICBwMi5pbnNlcnRCZWZvcmUobjEsIHAyLmNoaWxkcmVuW2kyXSk7XG59XG5cbnZhciBtdWx0aURyYWdFbGVtZW50cyA9IFtdLFxuICAgIG11bHRpRHJhZ0Nsb25lcyA9IFtdLFxuICAgIGxhc3RNdWx0aURyYWdTZWxlY3QsXG4gICAgLy8gZm9yIHNlbGVjdGlvbiB3aXRoIG1vZGlmaWVyIGtleSBkb3duIChTSElGVClcbm11bHRpRHJhZ1NvcnRhYmxlLFxuICAgIGluaXRpYWxGb2xkaW5nID0gZmFsc2UsXG4gICAgLy8gSW5pdGlhbCBtdWx0aS1kcmFnIGZvbGQgd2hlbiBkcmFnIHN0YXJ0ZWRcbmZvbGRpbmcgPSBmYWxzZSxcbiAgICAvLyBGb2xkaW5nIGFueSBvdGhlciB0aW1lXG5kcmFnU3RhcnRlZCA9IGZhbHNlLFxuICAgIGRyYWdFbCQxLFxuICAgIGNsb25lc0Zyb21SZWN0LFxuICAgIGNsb25lc0hpZGRlbjtcblxuZnVuY3Rpb24gTXVsdGlEcmFnUGx1Z2luKCkge1xuICBmdW5jdGlvbiBNdWx0aURyYWcoc29ydGFibGUpIHtcbiAgICAvLyBCaW5kIGFsbCBwcml2YXRlIG1ldGhvZHNcbiAgICBmb3IgKHZhciBmbiBpbiB0aGlzKSB7XG4gICAgICBpZiAoZm4uY2hhckF0KDApID09PSAnXycgJiYgdHlwZW9mIHRoaXNbZm5dID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXNbZm5dID0gdGhpc1tmbl0uYmluZCh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc29ydGFibGUub3B0aW9ucy5zdXBwb3J0UG9pbnRlcikge1xuICAgICAgb24oZG9jdW1lbnQsICdwb2ludGVydXAnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICAgIG9uKGRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgfVxuXG4gICAgb24oZG9jdW1lbnQsICdrZXlkb3duJywgdGhpcy5fY2hlY2tLZXlEb3duKTtcbiAgICBvbihkb2N1bWVudCwgJ2tleXVwJywgdGhpcy5fY2hlY2tLZXlVcCk7XG4gICAgdGhpcy5kZWZhdWx0cyA9IHtcbiAgICAgIHNlbGVjdGVkQ2xhc3M6ICdzb3J0YWJsZS1zZWxlY3RlZCcsXG4gICAgICBtdWx0aURyYWdLZXk6IG51bGwsXG4gICAgICBzZXREYXRhOiBmdW5jdGlvbiBzZXREYXRhKGRhdGFUcmFuc2ZlciwgZHJhZ0VsKSB7XG4gICAgICAgIHZhciBkYXRhID0gJyc7XG5cbiAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCAmJiBtdWx0aURyYWdTb3J0YWJsZSA9PT0gc29ydGFibGUpIHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50LCBpKSB7XG4gICAgICAgICAgICBkYXRhICs9ICghaSA/ICcnIDogJywgJykgKyBtdWx0aURyYWdFbGVtZW50LnRleHRDb250ZW50O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGEgPSBkcmFnRWwudGV4dENvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YSgnVGV4dCcsIGRhdGEpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBNdWx0aURyYWcucHJvdG90eXBlID0ge1xuICAgIG11bHRpRHJhZ0tleURvd246IGZhbHNlLFxuICAgIGlzTXVsdGlEcmFnOiBmYWxzZSxcbiAgICBkZWxheVN0YXJ0R2xvYmFsOiBmdW5jdGlvbiBkZWxheVN0YXJ0R2xvYmFsKF9yZWYpIHtcbiAgICAgIHZhciBkcmFnZ2VkID0gX3JlZi5kcmFnRWw7XG4gICAgICBkcmFnRWwkMSA9IGRyYWdnZWQ7XG4gICAgfSxcbiAgICBkZWxheUVuZGVkOiBmdW5jdGlvbiBkZWxheUVuZGVkKCkge1xuICAgICAgdGhpcy5pc011bHRpRHJhZyA9IH5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGRyYWdFbCQxKTtcbiAgICB9LFxuICAgIHNldHVwQ2xvbmU6IGZ1bmN0aW9uIHNldHVwQ2xvbmUoX3JlZjIpIHtcbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWYyLnNvcnRhYmxlLFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWYyLmNhbmNlbDtcbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZykgcmV0dXJuO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG11bHRpRHJhZ0Nsb25lcy5wdXNoKGNsb25lKG11bHRpRHJhZ0VsZW1lbnRzW2ldKSk7XG4gICAgICAgIG11bHRpRHJhZ0Nsb25lc1tpXS5zb3J0YWJsZUluZGV4ID0gbXVsdGlEcmFnRWxlbWVudHNbaV0uc29ydGFibGVJbmRleDtcbiAgICAgICAgbXVsdGlEcmFnQ2xvbmVzW2ldLmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgICBtdWx0aURyYWdDbG9uZXNbaV0uc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnJztcbiAgICAgICAgdG9nZ2xlQ2xhc3MobXVsdGlEcmFnQ2xvbmVzW2ldLCB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgZmFsc2UpO1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50c1tpXSA9PT0gZHJhZ0VsJDEgJiYgdG9nZ2xlQ2xhc3MobXVsdGlEcmFnQ2xvbmVzW2ldLCB0aGlzLm9wdGlvbnMuY2hvc2VuQ2xhc3MsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgc29ydGFibGUuX2hpZGVDbG9uZSgpO1xuXG4gICAgICBjYW5jZWwoKTtcbiAgICB9LFxuICAgIGNsb25lOiBmdW5jdGlvbiBjbG9uZShfcmVmMykge1xuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjMuc29ydGFibGUsXG4gICAgICAgICAgcm9vdEVsID0gX3JlZjMucm9vdEVsLFxuICAgICAgICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCA9IF9yZWYzLmRpc3BhdGNoU29ydGFibGVFdmVudCxcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmMy5jYW5jZWw7XG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcpIHJldHVybjtcblxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMucmVtb3ZlQ2xvbmVPbkhpZGUpIHtcbiAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCAmJiBtdWx0aURyYWdTb3J0YWJsZSA9PT0gc29ydGFibGUpIHtcbiAgICAgICAgICBpbnNlcnRNdWx0aURyYWdDbG9uZXModHJ1ZSwgcm9vdEVsKTtcbiAgICAgICAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQoJ2Nsb25lJyk7XG4gICAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3dDbG9uZTogZnVuY3Rpb24gc2hvd0Nsb25lKF9yZWY0KSB7XG4gICAgICB2YXIgY2xvbmVOb3dTaG93biA9IF9yZWY0LmNsb25lTm93U2hvd24sXG4gICAgICAgICAgcm9vdEVsID0gX3JlZjQucm9vdEVsLFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWY0LmNhbmNlbDtcbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZykgcmV0dXJuO1xuICAgICAgaW5zZXJ0TXVsdGlEcmFnQ2xvbmVzKGZhbHNlLCByb290RWwpO1xuICAgICAgbXVsdGlEcmFnQ2xvbmVzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lKSB7XG4gICAgICAgIGNzcyhjbG9uZSwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICB9KTtcbiAgICAgIGNsb25lTm93U2hvd24oKTtcbiAgICAgIGNsb25lc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgY2FuY2VsKCk7XG4gICAgfSxcbiAgICBoaWRlQ2xvbmU6IGZ1bmN0aW9uIGhpZGVDbG9uZShfcmVmNSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjUuc29ydGFibGUsXG4gICAgICAgICAgY2xvbmVOb3dIaWRkZW4gPSBfcmVmNS5jbG9uZU5vd0hpZGRlbixcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmNS5jYW5jZWw7XG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcpIHJldHVybjtcbiAgICAgIG11bHRpRHJhZ0Nsb25lcy5mb3JFYWNoKGZ1bmN0aW9uIChjbG9uZSkge1xuICAgICAgICBjc3MoY2xvbmUsICdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgICAgICBpZiAoX3RoaXMub3B0aW9ucy5yZW1vdmVDbG9uZU9uSGlkZSAmJiBjbG9uZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgY2xvbmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9uZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2xvbmVOb3dIaWRkZW4oKTtcbiAgICAgIGNsb25lc0hpZGRlbiA9IHRydWU7XG4gICAgICBjYW5jZWwoKTtcbiAgICB9LFxuICAgIGRyYWdTdGFydEdsb2JhbDogZnVuY3Rpb24gZHJhZ1N0YXJ0R2xvYmFsKF9yZWY2KSB7XG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmNi5zb3J0YWJsZTtcblxuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnICYmIG11bHRpRHJhZ1NvcnRhYmxlKSB7XG4gICAgICAgIG11bHRpRHJhZ1NvcnRhYmxlLm11bHRpRHJhZy5fZGVzZWxlY3RNdWx0aURyYWcoKTtcbiAgICAgIH1cblxuICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50LnNvcnRhYmxlSW5kZXggPSBpbmRleChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgIH0pOyAvLyBTb3J0IG11bHRpLWRyYWcgZWxlbWVudHNcblxuICAgICAgbXVsdGlEcmFnRWxlbWVudHMgPSBtdWx0aURyYWdFbGVtZW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLnNvcnRhYmxlSW5kZXggLSBiLnNvcnRhYmxlSW5kZXg7XG4gICAgICB9KTtcbiAgICAgIGRyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICB9LFxuICAgIGRyYWdTdGFydGVkOiBmdW5jdGlvbiBkcmFnU3RhcnRlZChfcmVmNykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWY3LnNvcnRhYmxlO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnKSByZXR1cm47XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc29ydCkge1xuICAgICAgICAvLyBDYXB0dXJlIHJlY3RzLFxuICAgICAgICAvLyBoaWRlIG11bHRpIGRyYWcgZWxlbWVudHMgKGJ5IHBvc2l0aW9uaW5nIHRoZW0gYWJzb2x1dGUpLFxuICAgICAgICAvLyBzZXQgbXVsdGkgZHJhZyBlbGVtZW50cyByZWN0cyB0byBkcmFnUmVjdCxcbiAgICAgICAgLy8gc2hvdyBtdWx0aSBkcmFnIGVsZW1lbnRzLFxuICAgICAgICAvLyBhbmltYXRlIHRvIHJlY3RzLFxuICAgICAgICAvLyB1bnNldCByZWN0cyAmIHJlbW92ZSBmcm9tIERPTVxuICAgICAgICBzb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFuaW1hdGlvbikge1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50ID09PSBkcmFnRWwkMSkgcmV0dXJuO1xuICAgICAgICAgICAgY3NzKG11bHRpRHJhZ0VsZW1lbnQsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciBkcmFnUmVjdCA9IGdldFJlY3QoZHJhZ0VsJDEsIGZhbHNlLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudCA9PT0gZHJhZ0VsJDEpIHJldHVybjtcbiAgICAgICAgICAgIHNldFJlY3QobXVsdGlEcmFnRWxlbWVudCwgZHJhZ1JlY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvbGRpbmcgPSB0cnVlO1xuICAgICAgICAgIGluaXRpYWxGb2xkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzb3J0YWJsZS5hbmltYXRlQWxsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9sZGluZyA9IGZhbHNlO1xuICAgICAgICBpbml0aWFsRm9sZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfdGhpczIub3B0aW9ucy5hbmltYXRpb24pIHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICB1bnNldFJlY3QobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gLy8gUmVtb3ZlIGFsbCBhdXhpbGlhcnkgbXVsdGlkcmFnIGl0ZW1zIGZyb20gZWwsIGlmIHNvcnRpbmcgZW5hYmxlZFxuXG5cbiAgICAgICAgaWYgKF90aGlzMi5vcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICByZW1vdmVNdWx0aURyYWdFbGVtZW50cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGRyYWdPdmVyOiBmdW5jdGlvbiBkcmFnT3ZlcihfcmVmOCkge1xuICAgICAgdmFyIHRhcmdldCA9IF9yZWY4LnRhcmdldCxcbiAgICAgICAgICBjb21wbGV0ZWQgPSBfcmVmOC5jb21wbGV0ZWQsXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjguY2FuY2VsO1xuXG4gICAgICBpZiAoZm9sZGluZyAmJiB+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZih0YXJnZXQpKSB7XG4gICAgICAgIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgICAgIGNhbmNlbCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmV2ZXJ0OiBmdW5jdGlvbiByZXZlcnQoX3JlZjkpIHtcbiAgICAgIHZhciBmcm9tU29ydGFibGUgPSBfcmVmOS5mcm9tU29ydGFibGUsXG4gICAgICAgICAgcm9vdEVsID0gX3JlZjkucm9vdEVsLFxuICAgICAgICAgIHNvcnRhYmxlID0gX3JlZjkuc29ydGFibGUsXG4gICAgICAgICAgZHJhZ1JlY3QgPSBfcmVmOS5kcmFnUmVjdDtcblxuICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgLy8gU2V0dXAgdW5mb2xkIGFuaW1hdGlvblxuICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgc29ydGFibGUuYWRkQW5pbWF0aW9uU3RhdGUoe1xuICAgICAgICAgICAgdGFyZ2V0OiBtdWx0aURyYWdFbGVtZW50LFxuICAgICAgICAgICAgcmVjdDogZm9sZGluZyA/IGdldFJlY3QobXVsdGlEcmFnRWxlbWVudCkgOiBkcmFnUmVjdFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHVuc2V0UmVjdChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50LmZyb21SZWN0ID0gZHJhZ1JlY3Q7XG4gICAgICAgICAgZnJvbVNvcnRhYmxlLnJlbW92ZUFuaW1hdGlvblN0YXRlKG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgZm9sZGluZyA9IGZhbHNlO1xuICAgICAgICBpbnNlcnRNdWx0aURyYWdFbGVtZW50cyghdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlLCByb290RWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZHJhZ092ZXJDb21wbGV0ZWQ6IGZ1bmN0aW9uIGRyYWdPdmVyQ29tcGxldGVkKF9yZWYxMCkge1xuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjEwLnNvcnRhYmxlLFxuICAgICAgICAgIGlzT3duZXIgPSBfcmVmMTAuaXNPd25lcixcbiAgICAgICAgICBpbnNlcnRpb24gPSBfcmVmMTAuaW5zZXJ0aW9uLFxuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlID0gX3JlZjEwLmFjdGl2ZVNvcnRhYmxlLFxuICAgICAgICAgIHBhcmVudEVsID0gX3JlZjEwLnBhcmVudEVsLFxuICAgICAgICAgIHB1dFNvcnRhYmxlID0gX3JlZjEwLnB1dFNvcnRhYmxlO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChpbnNlcnRpb24pIHtcbiAgICAgICAgLy8gQ2xvbmVzIG11c3QgYmUgaGlkZGVuIGJlZm9yZSBmb2xkaW5nIGFuaW1hdGlvbiB0byBjYXB0dXJlIGRyYWdSZWN0QWJzb2x1dGUgcHJvcGVybHlcbiAgICAgICAgaWYgKGlzT3duZXIpIHtcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5faGlkZUNsb25lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbml0aWFsRm9sZGluZyA9IGZhbHNlOyAvLyBJZiBsZWF2aW5nIHNvcnQ6ZmFsc2Ugcm9vdCwgb3IgYWxyZWFkeSBmb2xkaW5nIC0gRm9sZCB0byBuZXcgbG9jYXRpb25cblxuICAgICAgICBpZiAob3B0aW9ucy5hbmltYXRpb24gJiYgbXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoID4gMSAmJiAoZm9sZGluZyB8fCAhaXNPd25lciAmJiAhYWN0aXZlU29ydGFibGUub3B0aW9ucy5zb3J0ICYmICFwdXRTb3J0YWJsZSkpIHtcbiAgICAgICAgICAvLyBGb2xkOiBTZXQgYWxsIG11bHRpIGRyYWcgZWxlbWVudHMncyByZWN0cyB0byBkcmFnRWwncyByZWN0IHdoZW4gbXVsdGktZHJhZyBlbGVtZW50cyBhcmUgaW52aXNpYmxlXG4gICAgICAgICAgdmFyIGRyYWdSZWN0QWJzb2x1dGUgPSBnZXRSZWN0KGRyYWdFbCQxLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQgPT09IGRyYWdFbCQxKSByZXR1cm47XG4gICAgICAgICAgICBzZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQsIGRyYWdSZWN0QWJzb2x1dGUpOyAvLyBNb3ZlIGVsZW1lbnQocykgdG8gZW5kIG9mIHBhcmVudEVsIHNvIHRoYXQgaXQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggbXVsdGktZHJhZyBjbG9uZXMgaW5zZXJ0aW9uIGlmIHRoZXkgYXJlIGluc2VydGVkXG4gICAgICAgICAgICAvLyB3aGlsZSBmb2xkaW5nLCBhbmQgc28gdGhhdCB3ZSBjYW4gY2FwdHVyZSB0aGVtIGFnYWluIGJlY2F1c2Ugb2xkIHNvcnRhYmxlIHdpbGwgbm8gbG9uZ2VyIGJlIGZyb21Tb3J0YWJsZVxuXG4gICAgICAgICAgICBwYXJlbnRFbC5hcHBlbmRDaGlsZChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmb2xkaW5nID0gdHJ1ZTtcbiAgICAgICAgfSAvLyBDbG9uZXMgbXVzdCBiZSBzaG93biAoYW5kIGNoZWNrIHRvIHJlbW92ZSBtdWx0aSBkcmFncykgYWZ0ZXIgZm9sZGluZyB3aGVuIGludGVyZmVyaW5nIG11bHRpRHJhZ0VsZW1lbnRzIGFyZSBtb3ZlZCBvdXRcblxuXG4gICAgICAgIGlmICghaXNPd25lcikge1xuICAgICAgICAgIC8vIE9ubHkgcmVtb3ZlIGlmIG5vdCBmb2xkaW5nIChmb2xkaW5nIHdpbGwgcmVtb3ZlIHRoZW0gYW55d2F5cylcbiAgICAgICAgICBpZiAoIWZvbGRpbmcpIHtcbiAgICAgICAgICAgIHJlbW92ZU11bHRpRHJhZ0VsZW1lbnRzKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHZhciBjbG9uZXNIaWRkZW5CZWZvcmUgPSBjbG9uZXNIaWRkZW47XG5cbiAgICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLl9zaG93Q2xvbmUoc29ydGFibGUpOyAvLyBVbmZvbGQgYW5pbWF0aW9uIGZvciBjbG9uZXMgaWYgc2hvd2luZyBmcm9tIGhpZGRlblxuXG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVTb3J0YWJsZS5vcHRpb25zLmFuaW1hdGlvbiAmJiAhY2xvbmVzSGlkZGVuICYmIGNsb25lc0hpZGRlbkJlZm9yZSkge1xuICAgICAgICAgICAgICBtdWx0aURyYWdDbG9uZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5hZGRBbmltYXRpb25TdGF0ZSh7XG4gICAgICAgICAgICAgICAgICB0YXJnZXQ6IGNsb25lLFxuICAgICAgICAgICAgICAgICAgcmVjdDogY2xvbmVzRnJvbVJlY3RcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjbG9uZS5mcm9tUmVjdCA9IGNsb25lc0Zyb21SZWN0O1xuICAgICAgICAgICAgICAgIGNsb25lLnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5fc2hvd0Nsb25lKHNvcnRhYmxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGRyYWdPdmVyQW5pbWF0aW9uQ2FwdHVyZTogZnVuY3Rpb24gZHJhZ092ZXJBbmltYXRpb25DYXB0dXJlKF9yZWYxMSkge1xuICAgICAgdmFyIGRyYWdSZWN0ID0gX3JlZjExLmRyYWdSZWN0LFxuICAgICAgICAgIGlzT3duZXIgPSBfcmVmMTEuaXNPd25lcixcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZSA9IF9yZWYxMS5hY3RpdmVTb3J0YWJsZTtcbiAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudC50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChhY3RpdmVTb3J0YWJsZS5vcHRpb25zLmFuaW1hdGlvbiAmJiAhaXNPd25lciAmJiBhY3RpdmVTb3J0YWJsZS5tdWx0aURyYWcuaXNNdWx0aURyYWcpIHtcbiAgICAgICAgY2xvbmVzRnJvbVJlY3QgPSBfZXh0ZW5kcyh7fSwgZHJhZ1JlY3QpO1xuICAgICAgICB2YXIgZHJhZ01hdHJpeCA9IG1hdHJpeChkcmFnRWwkMSwgdHJ1ZSk7XG4gICAgICAgIGNsb25lc0Zyb21SZWN0LnRvcCAtPSBkcmFnTWF0cml4LmY7XG4gICAgICAgIGNsb25lc0Zyb21SZWN0LmxlZnQgLT0gZHJhZ01hdHJpeC5lO1xuICAgICAgfVxuICAgIH0sXG4gICAgZHJhZ092ZXJBbmltYXRpb25Db21wbGV0ZTogZnVuY3Rpb24gZHJhZ092ZXJBbmltYXRpb25Db21wbGV0ZSgpIHtcbiAgICAgIGlmIChmb2xkaW5nKSB7XG4gICAgICAgIGZvbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmVtb3ZlTXVsdGlEcmFnRWxlbWVudHMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRyb3A6IGZ1bmN0aW9uIGRyb3AoX3JlZjEyKSB7XG4gICAgICB2YXIgZXZ0ID0gX3JlZjEyLm9yaWdpbmFsRXZlbnQsXG4gICAgICAgICAgcm9vdEVsID0gX3JlZjEyLnJvb3RFbCxcbiAgICAgICAgICBwYXJlbnRFbCA9IF9yZWYxMi5wYXJlbnRFbCxcbiAgICAgICAgICBzb3J0YWJsZSA9IF9yZWYxMi5zb3J0YWJsZSxcbiAgICAgICAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQgPSBfcmVmMTIuZGlzcGF0Y2hTb3J0YWJsZUV2ZW50LFxuICAgICAgICAgIG9sZEluZGV4ID0gX3JlZjEyLm9sZEluZGV4LFxuICAgICAgICAgIHB1dFNvcnRhYmxlID0gX3JlZjEyLnB1dFNvcnRhYmxlO1xuICAgICAgdmFyIHRvU29ydGFibGUgPSBwdXRTb3J0YWJsZSB8fCB0aGlzLnNvcnRhYmxlO1xuICAgICAgaWYgKCFldnQpIHJldHVybjtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICAgIGNoaWxkcmVuID0gcGFyZW50RWwuY2hpbGRyZW47IC8vIE11bHRpLWRyYWcgc2VsZWN0aW9uXG5cbiAgICAgIGlmICghZHJhZ1N0YXJ0ZWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMubXVsdGlEcmFnS2V5ICYmICF0aGlzLm11bHRpRHJhZ0tleURvd24pIHtcbiAgICAgICAgICB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsJDEsIG9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgIX5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGRyYWdFbCQxKSk7XG5cbiAgICAgICAgaWYgKCF+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihkcmFnRWwkMSkpIHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5wdXNoKGRyYWdFbCQxKTtcbiAgICAgICAgICBkaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZSxcbiAgICAgICAgICAgIHJvb3RFbDogcm9vdEVsLFxuICAgICAgICAgICAgbmFtZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICB0YXJnZXRFbDogZHJhZ0VsJDEsXG4gICAgICAgICAgICBvcmlnaW5hbEV2dDogZXZ0XG4gICAgICAgICAgfSk7IC8vIE1vZGlmaWVyIGFjdGl2YXRlZCwgc2VsZWN0IGZyb20gbGFzdCB0byBkcmFnRWxcblxuICAgICAgICAgIGlmIChldnQuc2hpZnRLZXkgJiYgbGFzdE11bHRpRHJhZ1NlbGVjdCAmJiBzb3J0YWJsZS5lbC5jb250YWlucyhsYXN0TXVsdGlEcmFnU2VsZWN0KSkge1xuICAgICAgICAgICAgdmFyIGxhc3RJbmRleCA9IGluZGV4KGxhc3RNdWx0aURyYWdTZWxlY3QpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGluZGV4KGRyYWdFbCQxKTtcblxuICAgICAgICAgICAgaWYgKH5sYXN0SW5kZXggJiYgfmN1cnJlbnRJbmRleCAmJiBsYXN0SW5kZXggIT09IGN1cnJlbnRJbmRleCkge1xuICAgICAgICAgICAgICAvLyBNdXN0IGluY2x1ZGUgbGFzdE11bHRpRHJhZ1NlbGVjdCAoc2VsZWN0IGl0KSwgaW4gY2FzZSBtb2RpZmllZCBzZWxlY3Rpb24gZnJvbSBubyBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgLy8gKGJ1dCBwcmV2aW91cyBzZWxlY3Rpb24gZXhpc3RlZClcbiAgICAgICAgICAgICAgdmFyIG4sIGk7XG5cbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAgIGkgPSBsYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgbiA9IGN1cnJlbnRJbmRleDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpID0gY3VycmVudEluZGV4O1xuICAgICAgICAgICAgICAgIG4gPSBsYXN0SW5kZXggKyAxO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAofm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoY2hpbGRyZW5baV0pKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcyhjaGlsZHJlbltpXSwgb3B0aW9ucy5zZWxlY3RlZENsYXNzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgIHJvb3RFbDogcm9vdEVsLFxuICAgICAgICAgICAgICAgICAgbmFtZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICB0YXJnZXRFbDogY2hpbGRyZW5baV0sXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2dDogZXZ0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFzdE11bHRpRHJhZ1NlbGVjdCA9IGRyYWdFbCQxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG11bHRpRHJhZ1NvcnRhYmxlID0gdG9Tb3J0YWJsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5zcGxpY2UobXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihkcmFnRWwkMSksIDEpO1xuICAgICAgICAgIGxhc3RNdWx0aURyYWdTZWxlY3QgPSBudWxsO1xuICAgICAgICAgIGRpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlLFxuICAgICAgICAgICAgcm9vdEVsOiByb290RWwsXG4gICAgICAgICAgICBuYW1lOiAnZGVzZWxlY3QnLFxuICAgICAgICAgICAgdGFyZ2V0RWw6IGRyYWdFbCQxLFxuICAgICAgICAgICAgb3JpZ2luYWxFdnQ6IGV2dFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IC8vIE11bHRpLWRyYWcgZHJvcFxuXG5cbiAgICAgIGlmIChkcmFnU3RhcnRlZCAmJiB0aGlzLmlzTXVsdGlEcmFnKSB7XG4gICAgICAgIGZvbGRpbmcgPSBmYWxzZTsgLy8gRG8gbm90IFwidW5mb2xkXCIgYWZ0ZXIgYXJvdW5kIGRyYWdFbCBpZiByZXZlcnRlZFxuXG4gICAgICAgIGlmICgocGFyZW50RWxbZXhwYW5kb10ub3B0aW9ucy5zb3J0IHx8IHBhcmVudEVsICE9PSByb290RWwpICYmIG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB2YXIgZHJhZ1JlY3QgPSBnZXRSZWN0KGRyYWdFbCQxKSxcbiAgICAgICAgICAgICAgbXVsdGlEcmFnSW5kZXggPSBpbmRleChkcmFnRWwkMSwgJzpub3QoLicgKyB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcyArICcpJyk7XG4gICAgICAgICAgaWYgKCFpbml0aWFsRm9sZGluZyAmJiBvcHRpb25zLmFuaW1hdGlvbikgZHJhZ0VsJDEudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gbnVsbDtcbiAgICAgICAgICB0b1NvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuXG4gICAgICAgICAgaWYgKCFpbml0aWFsRm9sZGluZykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgIGRyYWdFbCQxLmZyb21SZWN0ID0gZHJhZ1JlY3Q7XG4gICAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50LnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudCAhPT0gZHJhZ0VsJDEpIHtcbiAgICAgICAgICAgICAgICAgIHZhciByZWN0ID0gZm9sZGluZyA/IGdldFJlY3QobXVsdGlEcmFnRWxlbWVudCkgOiBkcmFnUmVjdDtcbiAgICAgICAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnQuZnJvbVJlY3QgPSByZWN0OyAvLyBQcmVwYXJlIHVuZm9sZCBhbmltYXRpb25cblxuICAgICAgICAgICAgICAgICAgdG9Tb3J0YWJsZS5hZGRBbmltYXRpb25TdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogbXVsdGlEcmFnRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgcmVjdDogcmVjdFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gLy8gTXVsdGkgZHJhZyBlbGVtZW50cyBhcmUgbm90IG5lY2Vzc2FyaWx5IHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9uIGRyb3AsIHNvIHRvIHJlaW5zZXJ0XG4gICAgICAgICAgICAvLyBwcm9wZXJseSB0aGV5IG11c3QgYWxsIGJlIHJlbW92ZWRcblxuXG4gICAgICAgICAgICByZW1vdmVNdWx0aURyYWdFbGVtZW50cygpO1xuICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5bbXVsdGlEcmFnSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50RWwuaW5zZXJ0QmVmb3JlKG11bHRpRHJhZ0VsZW1lbnQsIGNoaWxkcmVuW211bHRpRHJhZ0luZGV4XSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50RWwuYXBwZW5kQ2hpbGQobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBtdWx0aURyYWdJbmRleCsrO1xuICAgICAgICAgICAgfSk7IC8vIElmIGluaXRpYWwgZm9sZGluZyBpcyBkb25lLCB0aGUgZWxlbWVudHMgbWF5IGhhdmUgY2hhbmdlZCBwb3NpdGlvbiBiZWNhdXNlIHRoZXkgYXJlIG5vd1xuICAgICAgICAgICAgLy8gdW5mb2xkaW5nIGFyb3VuZCBkcmFnRWwsIGV2ZW4gdGhvdWdoIGRyYWdFbCBtYXkgbm90IGhhdmUgaGlzIGluZGV4IGNoYW5nZWQsIHNvIHVwZGF0ZSBldmVudFxuICAgICAgICAgICAgLy8gbXVzdCBiZSBmaXJlZCBoZXJlIGFzIFNvcnRhYmxlIHdpbGwgbm90LlxuXG4gICAgICAgICAgICBpZiAob2xkSW5kZXggPT09IGluZGV4KGRyYWdFbCQxKSkge1xuICAgICAgICAgICAgICB2YXIgdXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudC5zb3J0YWJsZUluZGV4ICE9PSBpbmRleChtdWx0aURyYWdFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgdXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGUpIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQoJ3VwZGF0ZScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBNdXN0IGJlIGRvbmUgYWZ0ZXIgY2FwdHVyaW5nIGluZGl2aWR1YWwgcmVjdHMgKHNjcm9sbCBiYXIpXG5cblxuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHVuc2V0UmVjdChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0b1NvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG11bHRpRHJhZ1NvcnRhYmxlID0gdG9Tb3J0YWJsZTtcbiAgICAgIH0gLy8gUmVtb3ZlIGNsb25lcyBpZiBuZWNlc3NhcnlcblxuXG4gICAgICBpZiAocm9vdEVsID09PSBwYXJlbnRFbCB8fCBwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSAhPT0gJ2Nsb25lJykge1xuICAgICAgICBtdWx0aURyYWdDbG9uZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUpIHtcbiAgICAgICAgICBjbG9uZS5wYXJlbnROb2RlICYmIGNsb25lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG51bGxpbmdHbG9iYWw6IGZ1bmN0aW9uIG51bGxpbmdHbG9iYWwoKSB7XG4gICAgICB0aGlzLmlzTXVsdGlEcmFnID0gZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgIG11bHRpRHJhZ0Nsb25lcy5sZW5ndGggPSAwO1xuICAgIH0sXG4gICAgZGVzdHJveUdsb2JhbDogZnVuY3Rpb24gZGVzdHJveUdsb2JhbCgpIHtcbiAgICAgIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKCk7XG5cbiAgICAgIG9mZihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgICBvZmYoZG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ2tleWRvd24nLCB0aGlzLl9jaGVja0tleURvd24pO1xuICAgICAgb2ZmKGRvY3VtZW50LCAna2V5dXAnLCB0aGlzLl9jaGVja0tleVVwKTtcbiAgICB9LFxuICAgIF9kZXNlbGVjdE11bHRpRHJhZzogZnVuY3Rpb24gX2Rlc2VsZWN0TXVsdGlEcmFnKGV2dCkge1xuICAgICAgaWYgKHR5cGVvZiBkcmFnU3RhcnRlZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkcmFnU3RhcnRlZCkgcmV0dXJuOyAvLyBPbmx5IGRlc2VsZWN0IGlmIHNlbGVjdGlvbiBpcyBpbiB0aGlzIHNvcnRhYmxlXG5cbiAgICAgIGlmIChtdWx0aURyYWdTb3J0YWJsZSAhPT0gdGhpcy5zb3J0YWJsZSkgcmV0dXJuOyAvLyBPbmx5IGRlc2VsZWN0IGlmIHRhcmdldCBpcyBub3QgaXRlbSBpbiB0aGlzIHNvcnRhYmxlXG5cbiAgICAgIGlmIChldnQgJiYgY2xvc2VzdChldnQudGFyZ2V0LCB0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLCB0aGlzLnNvcnRhYmxlLmVsLCBmYWxzZSkpIHJldHVybjsgLy8gT25seSBkZXNlbGVjdCBpZiBsZWZ0IGNsaWNrXG5cbiAgICAgIGlmIChldnQgJiYgZXZ0LmJ1dHRvbiAhPT0gMCkgcmV0dXJuO1xuXG4gICAgICB3aGlsZSAobXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbCA9IG11bHRpRHJhZ0VsZW1lbnRzWzBdO1xuICAgICAgICB0b2dnbGVDbGFzcyhlbCwgdGhpcy5vcHRpb25zLnNlbGVjdGVkQ2xhc3MsIGZhbHNlKTtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuc2hpZnQoKTtcbiAgICAgICAgZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgc29ydGFibGU6IHRoaXMuc29ydGFibGUsXG4gICAgICAgICAgcm9vdEVsOiB0aGlzLnNvcnRhYmxlLmVsLFxuICAgICAgICAgIG5hbWU6ICdkZXNlbGVjdCcsXG4gICAgICAgICAgdGFyZ2V0RWw6IGVsLFxuICAgICAgICAgIG9yaWdpbmFsRXZ0OiBldnRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBfY2hlY2tLZXlEb3duOiBmdW5jdGlvbiBfY2hlY2tLZXlEb3duKGV2dCkge1xuICAgICAgaWYgKGV2dC5rZXkgPT09IHRoaXMub3B0aW9ucy5tdWx0aURyYWdLZXkpIHtcbiAgICAgICAgdGhpcy5tdWx0aURyYWdLZXlEb3duID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9jaGVja0tleVVwOiBmdW5jdGlvbiBfY2hlY2tLZXlVcChldnQpIHtcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLm9wdGlvbnMubXVsdGlEcmFnS2V5KSB7XG4gICAgICAgIHRoaXMubXVsdGlEcmFnS2V5RG93biA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzKE11bHRpRHJhZywge1xuICAgIC8vIFN0YXRpYyBtZXRob2RzICYgcHJvcGVydGllc1xuICAgIHBsdWdpbk5hbWU6ICdtdWx0aURyYWcnLFxuICAgIHV0aWxzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFNlbGVjdHMgdGhlIHByb3ZpZGVkIG11bHRpLWRyYWcgaXRlbVxuICAgICAgICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgIFRoZSBlbGVtZW50IHRvIGJlIHNlbGVjdGVkXG4gICAgICAgKi9cbiAgICAgIHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KGVsKSB7XG4gICAgICAgIHZhciBzb3J0YWJsZSA9IGVsLnBhcmVudE5vZGVbZXhwYW5kb107XG4gICAgICAgIGlmICghc29ydGFibGUgfHwgIXNvcnRhYmxlLm9wdGlvbnMubXVsdGlEcmFnIHx8IH5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGVsKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChtdWx0aURyYWdTb3J0YWJsZSAmJiBtdWx0aURyYWdTb3J0YWJsZSAhPT0gc29ydGFibGUpIHtcbiAgICAgICAgICBtdWx0aURyYWdTb3J0YWJsZS5tdWx0aURyYWcuX2Rlc2VsZWN0TXVsdGlEcmFnKCk7XG5cbiAgICAgICAgICBtdWx0aURyYWdTb3J0YWJsZSA9IHNvcnRhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHNvcnRhYmxlLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgdHJ1ZSk7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnB1c2goZWwpO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEZXNlbGVjdHMgdGhlIHByb3ZpZGVkIG11bHRpLWRyYWcgaXRlbVxuICAgICAgICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgIFRoZSBlbGVtZW50IHRvIGJlIGRlc2VsZWN0ZWRcbiAgICAgICAqL1xuICAgICAgZGVzZWxlY3Q6IGZ1bmN0aW9uIGRlc2VsZWN0KGVsKSB7XG4gICAgICAgIHZhciBzb3J0YWJsZSA9IGVsLnBhcmVudE5vZGVbZXhwYW5kb10sXG4gICAgICAgICAgICBpbmRleCA9IG11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZWwpO1xuICAgICAgICBpZiAoIXNvcnRhYmxlIHx8ICFzb3J0YWJsZS5vcHRpb25zLm11bHRpRHJhZyB8fCAhfmluZGV4KSByZXR1cm47XG4gICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBzb3J0YWJsZS5vcHRpb25zLnNlbGVjdGVkQ2xhc3MsIGZhbHNlKTtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGV2ZW50UHJvcGVydGllczogZnVuY3Rpb24gZXZlbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBvbGRJbmRpY2llcyA9IFtdLFxuICAgICAgICAgIG5ld0luZGljaWVzID0gW107XG4gICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgIG9sZEluZGljaWVzLnB1c2goe1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnQ6IG11bHRpRHJhZ0VsZW1lbnQsXG4gICAgICAgICAgaW5kZXg6IG11bHRpRHJhZ0VsZW1lbnQuc29ydGFibGVJbmRleFxuICAgICAgICB9KTsgLy8gbXVsdGlEcmFnRWxlbWVudHMgd2lsbCBhbHJlYWR5IGJlIHNvcnRlZCBpZiBmb2xkaW5nXG5cbiAgICAgICAgdmFyIG5ld0luZGV4O1xuXG4gICAgICAgIGlmIChmb2xkaW5nICYmIG11bHRpRHJhZ0VsZW1lbnQgIT09IGRyYWdFbCQxKSB7XG4gICAgICAgICAgbmV3SW5kZXggPSAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChmb2xkaW5nKSB7XG4gICAgICAgICAgbmV3SW5kZXggPSBpbmRleChtdWx0aURyYWdFbGVtZW50LCAnOm5vdCguJyArIF90aGlzMy5vcHRpb25zLnNlbGVjdGVkQ2xhc3MgKyAnKScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0luZGV4ID0gaW5kZXgobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXdJbmRpY2llcy5wdXNoKHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50OiBtdWx0aURyYWdFbGVtZW50LFxuICAgICAgICAgIGluZGV4OiBuZXdJbmRleFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IF90b0NvbnN1bWFibGVBcnJheShtdWx0aURyYWdFbGVtZW50cyksXG4gICAgICAgIGNsb25lczogW10uY29uY2F0KG11bHRpRHJhZ0Nsb25lcyksXG4gICAgICAgIG9sZEluZGljaWVzOiBvbGRJbmRpY2llcyxcbiAgICAgICAgbmV3SW5kaWNpZXM6IG5ld0luZGljaWVzXG4gICAgICB9O1xuICAgIH0sXG4gICAgb3B0aW9uTGlzdGVuZXJzOiB7XG4gICAgICBtdWx0aURyYWdLZXk6IGZ1bmN0aW9uIG11bHRpRHJhZ0tleShrZXkpIHtcbiAgICAgICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2N0cmwnKSB7XG4gICAgICAgICAga2V5ID0gJ0NvbnRyb2wnO1xuICAgICAgICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0TXVsdGlEcmFnRWxlbWVudHMoY2xvbmVzSW5zZXJ0ZWQsIHJvb3RFbCkge1xuICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50LCBpKSB7XG4gICAgdmFyIHRhcmdldCA9IHJvb3RFbC5jaGlsZHJlblttdWx0aURyYWdFbGVtZW50LnNvcnRhYmxlSW5kZXggKyAoY2xvbmVzSW5zZXJ0ZWQgPyBOdW1iZXIoaSkgOiAwKV07XG5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICByb290RWwuaW5zZXJ0QmVmb3JlKG11bHRpRHJhZ0VsZW1lbnQsIHRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3RFbC5hcHBlbmRDaGlsZChtdWx0aURyYWdFbGVtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuLyoqXG4gKiBJbnNlcnQgbXVsdGktZHJhZyBjbG9uZXNcbiAqIEBwYXJhbSAge1tCb29sZWFuXX0gZWxlbWVudHNJbnNlcnRlZCAgV2hldGhlciB0aGUgbXVsdGktZHJhZyBlbGVtZW50cyBhcmUgaW5zZXJ0ZWRcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSByb290RWxcbiAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydE11bHRpRHJhZ0Nsb25lcyhlbGVtZW50c0luc2VydGVkLCByb290RWwpIHtcbiAgbXVsdGlEcmFnQ2xvbmVzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lLCBpKSB7XG4gICAgdmFyIHRhcmdldCA9IHJvb3RFbC5jaGlsZHJlbltjbG9uZS5zb3J0YWJsZUluZGV4ICsgKGVsZW1lbnRzSW5zZXJ0ZWQgPyBOdW1iZXIoaSkgOiAwKV07XG5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICByb290RWwuaW5zZXJ0QmVmb3JlKGNsb25lLCB0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwuYXBwZW5kQ2hpbGQoY2xvbmUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU11bHRpRHJhZ0VsZW1lbnRzKCkge1xuICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQgPT09IGRyYWdFbCQxKSByZXR1cm47XG4gICAgbXVsdGlEcmFnRWxlbWVudC5wYXJlbnROb2RlICYmIG11bHRpRHJhZ0VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChtdWx0aURyYWdFbGVtZW50KTtcbiAgfSk7XG59XG5cblNvcnRhYmxlLm1vdW50KG5ldyBBdXRvU2Nyb2xsUGx1Z2luKCkpO1xuU29ydGFibGUubW91bnQoUmVtb3ZlLCBSZXZlcnQpO1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0YWJsZTtcbmV4cG9ydCB7IE11bHRpRHJhZ1BsdWdpbiBhcyBNdWx0aURyYWcsIFNvcnRhYmxlLCBTd2FwUGx1Z2luIGFzIFN3YXAgfTtcbiIsInZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZQcm9wcyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO1xudmFyIF9fZ2V0T3duUHJvcERlc2NzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbnZhciBfX3NwcmVhZFByb3BzID0gKGEsIGIpID0+IF9fZGVmUHJvcHMoYSwgX19nZXRPd25Qcm9wRGVzY3MoYikpO1xuaW1wb3J0IFNvcnRhYmxlIGZyb20gXCJzb3J0YWJsZWpzXCI7XG5pbXBvcnQgeyByZXNvbHZlQ29tcG9uZW50LCBUcmFuc2l0aW9uR3JvdXAsIGRlZmluZUNvbXBvbmVudCwgaCwgbmV4dFRpY2sgfSBmcm9tIFwidnVlXCI7XG5mdW5jdGlvbiByZW1vdmVOb2RlKG5vZGUpIHtcbiAgaWYgKG5vZGUucGFyZW50RWxlbWVudCAhPT0gbnVsbCkge1xuICAgIG5vZGUucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChub2RlKTtcbiAgfVxufVxuZnVuY3Rpb24gaW5zZXJ0Tm9kZUF0KGZhdGhlck5vZGUsIG5vZGUsIHBvc2l0aW9uKSB7XG4gIGNvbnN0IHJlZk5vZGUgPSBwb3NpdGlvbiA9PT0gMCA/IGZhdGhlck5vZGUuY2hpbGRyZW5bMF0gOiBmYXRoZXJOb2RlLmNoaWxkcmVuW3Bvc2l0aW9uIC0gMV0ubmV4dFNpYmxpbmc7XG4gIGZhdGhlck5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0Q29uc29sZSgpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gd2luZG93LmNvbnNvbGU7XG4gIH1cbiAgcmV0dXJuIGdsb2JhbC5jb25zb2xlO1xufVxuY29uc3QgY29uc29sZSQxID0gZ2V0Q29uc29sZSgpO1xuZnVuY3Rpb24gY2FjaGVkKGZuKSB7XG4gIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRGbihzdHIpIHtcbiAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcbiAgfTtcbn1cbmNvbnN0IHJlZ2V4ID0gLy0oXFx3KS9nO1xuY29uc3QgY2FtZWxpemUgPSBjYWNoZWQoKHN0cikgPT4gc3RyLnJlcGxhY2UocmVnZXgsIChfLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpKTtcbmNvbnN0IG1hbmFnZUFuZEVtaXQkMSA9IFtcIlN0YXJ0XCIsIFwiQWRkXCIsIFwiUmVtb3ZlXCIsIFwiVXBkYXRlXCIsIFwiRW5kXCJdO1xuY29uc3QgZW1pdCQxID0gW1wiQ2hvb3NlXCIsIFwiVW5jaG9vc2VcIiwgXCJTb3J0XCIsIFwiRmlsdGVyXCIsIFwiQ2xvbmVcIl07XG5jb25zdCBtYW5hZ2UkMSA9IFtcIk1vdmVcIl07XG5jb25zdCBldmVudEhhbmRsZXJOYW1lcyA9IFttYW5hZ2UkMSwgbWFuYWdlQW5kRW1pdCQxLCBlbWl0JDFdLmZsYXRNYXAoKGV2ZW50czIpID0+IGV2ZW50czIpLm1hcCgoZXZ0KSA9PiBgb24ke2V2dH1gKTtcbmNvbnN0IGV2ZW50cyA9IHtcbiAgbWFuYWdlOiBtYW5hZ2UkMSxcbiAgbWFuYWdlQW5kRW1pdDogbWFuYWdlQW5kRW1pdCQxLFxuICBlbWl0OiBlbWl0JDFcbn07XG5mdW5jdGlvbiBpc1JlYWRPbmx5KGV2ZW50TmFtZSkge1xuICByZXR1cm4gZXZlbnRIYW5kbGVyTmFtZXMuaW5kZXhPZihldmVudE5hbWUpICE9PSAtMTtcbn1cbmNvbnN0IHRhZ3MgPSBbXG4gIFwiYVwiLFxuICBcImFiYnJcIixcbiAgXCJhZGRyZXNzXCIsXG4gIFwiYXJlYVwiLFxuICBcImFydGljbGVcIixcbiAgXCJhc2lkZVwiLFxuICBcImF1ZGlvXCIsXG4gIFwiYlwiLFxuICBcImJhc2VcIixcbiAgXCJiZGlcIixcbiAgXCJiZG9cIixcbiAgXCJibG9ja3F1b3RlXCIsXG4gIFwiYm9keVwiLFxuICBcImJyXCIsXG4gIFwiYnV0dG9uXCIsXG4gIFwiY2FudmFzXCIsXG4gIFwiY2FwdGlvblwiLFxuICBcImNpdGVcIixcbiAgXCJjb2RlXCIsXG4gIFwiY29sXCIsXG4gIFwiY29sZ3JvdXBcIixcbiAgXCJkYXRhXCIsXG4gIFwiZGF0YWxpc3RcIixcbiAgXCJkZFwiLFxuICBcImRlbFwiLFxuICBcImRldGFpbHNcIixcbiAgXCJkZm5cIixcbiAgXCJkaWFsb2dcIixcbiAgXCJkaXZcIixcbiAgXCJkbFwiLFxuICBcImR0XCIsXG4gIFwiZW1cIixcbiAgXCJlbWJlZFwiLFxuICBcImZpZWxkc2V0XCIsXG4gIFwiZmlnY2FwdGlvblwiLFxuICBcImZpZ3VyZVwiLFxuICBcImZvb3RlclwiLFxuICBcImZvcm1cIixcbiAgXCJoMVwiLFxuICBcImgyXCIsXG4gIFwiaDNcIixcbiAgXCJoNFwiLFxuICBcImg1XCIsXG4gIFwiaDZcIixcbiAgXCJoZWFkXCIsXG4gIFwiaGVhZGVyXCIsXG4gIFwiaGdyb3VwXCIsXG4gIFwiaHJcIixcbiAgXCJodG1sXCIsXG4gIFwiaVwiLFxuICBcImlmcmFtZVwiLFxuICBcImltZ1wiLFxuICBcImlucHV0XCIsXG4gIFwiaW5zXCIsXG4gIFwia2JkXCIsXG4gIFwibGFiZWxcIixcbiAgXCJsZWdlbmRcIixcbiAgXCJsaVwiLFxuICBcImxpbmtcIixcbiAgXCJtYWluXCIsXG4gIFwibWFwXCIsXG4gIFwibWFya1wiLFxuICBcIm1hdGhcIixcbiAgXCJtZW51XCIsXG4gIFwibWVudWl0ZW1cIixcbiAgXCJtZXRhXCIsXG4gIFwibWV0ZXJcIixcbiAgXCJuYXZcIixcbiAgXCJub3NjcmlwdFwiLFxuICBcIm9iamVjdFwiLFxuICBcIm9sXCIsXG4gIFwib3B0Z3JvdXBcIixcbiAgXCJvcHRpb25cIixcbiAgXCJvdXRwdXRcIixcbiAgXCJwXCIsXG4gIFwicGFyYW1cIixcbiAgXCJwaWN0dXJlXCIsXG4gIFwicHJlXCIsXG4gIFwicHJvZ3Jlc3NcIixcbiAgXCJxXCIsXG4gIFwicmJcIixcbiAgXCJycFwiLFxuICBcInJ0XCIsXG4gIFwicnRjXCIsXG4gIFwicnVieVwiLFxuICBcInNcIixcbiAgXCJzYW1wXCIsXG4gIFwic2NyaXB0XCIsXG4gIFwic2VjdGlvblwiLFxuICBcInNlbGVjdFwiLFxuICBcInNsb3RcIixcbiAgXCJzbWFsbFwiLFxuICBcInNvdXJjZVwiLFxuICBcInNwYW5cIixcbiAgXCJzdHJvbmdcIixcbiAgXCJzdHlsZVwiLFxuICBcInN1YlwiLFxuICBcInN1bW1hcnlcIixcbiAgXCJzdXBcIixcbiAgXCJzdmdcIixcbiAgXCJ0YWJsZVwiLFxuICBcInRib2R5XCIsXG4gIFwidGRcIixcbiAgXCJ0ZW1wbGF0ZVwiLFxuICBcInRleHRhcmVhXCIsXG4gIFwidGZvb3RcIixcbiAgXCJ0aFwiLFxuICBcInRoZWFkXCIsXG4gIFwidGltZVwiLFxuICBcInRpdGxlXCIsXG4gIFwidHJcIixcbiAgXCJ0cmFja1wiLFxuICBcInVcIixcbiAgXCJ1bFwiLFxuICBcInZhclwiLFxuICBcInZpZGVvXCIsXG4gIFwid2JyXCJcbl07XG5mdW5jdGlvbiBpc0h0bWxUYWcobmFtZSkge1xuICByZXR1cm4gdGFncy5pbmNsdWRlcyhuYW1lKTtcbn1cbmZ1bmN0aW9uIGlzVHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBbXCJ0cmFuc2l0aW9uLWdyb3VwXCIsIFwiVHJhbnNpdGlvbkdyb3VwXCJdLmluY2x1ZGVzKG5hbWUpO1xufVxuZnVuY3Rpb24gaXNIdG1sQXR0cmlidXRlKHZhbHVlKSB7XG4gIHJldHVybiBbXCJpZFwiLCBcImNsYXNzXCIsIFwicm9sZVwiLCBcInN0eWxlXCJdLmluY2x1ZGVzKHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKFwiZGF0YS1cIikgfHwgdmFsdWUuc3RhcnRzV2l0aChcImFyaWEtXCIpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCJvblwiKTtcbn1cbmZ1bmN0aW9uIHByb2plY3QoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5yZWR1Y2UoKHJlcywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG59XG5mdW5jdGlvbiBnZXRDb21wb25lbnRBdHRyaWJ1dGVzKHsgJGF0dHJzLCBjb21wb25lbnREYXRhID0ge30gfSkge1xuICBjb25zdCBhdHRyaWJ1dGVzID0gcHJvamVjdChPYmplY3QuZW50cmllcygkYXR0cnMpLmZpbHRlcigoW2tleSwgX10pID0+IGlzSHRtbEF0dHJpYnV0ZShrZXkpKSk7XG4gIHJldHVybiBfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFZhbHVlcyh7fSwgYXR0cmlidXRlcyksIGNvbXBvbmVudERhdGEpO1xufVxuZnVuY3Rpb24gY3JlYXRlU29ydGFibGVPcHRpb24oeyAkYXR0cnMsIGNhbGxCYWNrQnVpbGRlciB9KSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9qZWN0KGdldFZhbGlkU29ydGFibGVFbnRyaWVzKCRhdHRycykpO1xuICBPYmplY3QuZW50cmllcyhjYWxsQmFja0J1aWxkZXIpLmZvckVhY2goKFtldmVudFR5cGUsIGV2ZW50QnVpbGRlcl0pID0+IHtcbiAgICBldmVudHNbZXZlbnRUeXBlXS5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgICAgb3B0aW9uc1tgb24ke2V2ZW50fWBdID0gZXZlbnRCdWlsZGVyKGV2ZW50KTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IGRyYWdnYWJsZSA9IGBbZGF0YS1kcmFnZ2FibGVdJHtvcHRpb25zLmRyYWdnYWJsZSB8fCBcIlwifWA7XG4gIHJldHVybiBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBvcHRpb25zKSwge1xuICAgIGRyYWdnYWJsZVxuICB9KTtcbn1cbmZ1bmN0aW9uIGdldFZhbGlkU29ydGFibGVFbnRyaWVzKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZSkuZmlsdGVyKChba2V5LCBfXSkgPT4gIWlzSHRtbEF0dHJpYnV0ZShrZXkpKS5tYXAoKFtrZXksIHZhbHVlMl0pID0+IFtjYW1lbGl6ZShrZXkpLCB2YWx1ZTJdKS5maWx0ZXIoKFtrZXksIF9dKSA9PiAhaXNSZWFkT25seShrZXkpKTtcbn1cbmNvbnN0IGdldEh0bWxFbGVtZW50RnJvbU5vZGUgPSAobm9kZSkgPT4ge1xuICBjb25zdCBlbCA9IG5vZGUuZWwgfHwgQXJyYXkuaXNBcnJheShub2RlLmNoaWxkcmVuKSAmJiBub2RlLmNoaWxkcmVuWzBdLmVsLnBhcmVudE5vZGU7XG4gIGlmICghZWwpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiXFx1NEY3RlxcdTc1MjggdHJhbnNpdGlvbi1ncm91cCAsIFxcdTk3MDBcXHU4OTgxXFx1NTcyOHNsb3RcXHU0RTJEdGVtcGxhdGVcXHU1MTg1XFx1ODFGM1xcdTVDMTEyXFx1NUM0Mmh0bWxcXHU2ODA3XFx1N0I3RVwiKTtcbiAgfVxuICByZXR1cm4gZWwgfHwge307XG59O1xuY29uc3QgYWRkQ29udGV4dCA9IChkb21FbGVtZW50LCBjb250ZXh0KSA9PiBkb21FbGVtZW50Ll9fZHJhZ2dhYmxlX2NvbnRleHQgPSBjb250ZXh0O1xuY29uc3QgZ2V0Q29udGV4dCA9IChkb21FbGVtZW50KSA9PiBkb21FbGVtZW50Ll9fZHJhZ2dhYmxlX2NvbnRleHQ7XG5jbGFzcyBDb21wb25lbnRTdHJ1Y3R1cmUge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgbm9kZXM6IHsgaGVhZGVyLCBkZWZhdWx0OiBkZWZhdWx0Tm9kZXMsIGZvb3RlciB9LFxuICAgIHJvb3QsXG4gICAgcmVhbExpc3RcbiAgfSkge1xuICAgIHRoaXMuZGVmYXVsdE5vZGVzID0gZGVmYXVsdE5vZGVzO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBbLi4uaGVhZGVyLCAuLi5kZWZhdWx0Tm9kZXMsIC4uLmZvb3Rlcl07XG4gICAgdGhpcy5leHRlcm5hbENvbXBvbmVudCA9IHJvb3QuZXh0ZXJuYWxDb21wb25lbnQ7XG4gICAgdGhpcy5yb290VHJhbnNpdGlvbiA9IHJvb3QudHJhbnNpdGlvbjtcbiAgICB0aGlzLnRhZyA9IHJvb3QudGFnO1xuICAgIHRoaXMucmVhbExpc3QgPSByZWFsTGlzdDtcbiAgfVxuICBnZXQgX2lzUm9vdENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlcm5hbENvbXBvbmVudCB8fCB0aGlzLnJvb3RUcmFuc2l0aW9uO1xuICB9XG4gIHJlbmRlcihoMiwgYXR0cmlidXRlcykge1xuICAgIGNvbnN0IHsgdGFnLCBjaGlsZHJlbiwgX2lzUm9vdENvbXBvbmVudCB9ID0gdGhpcztcbiAgICBjb25zdCBvcHRpb24gPSAhX2lzUm9vdENvbXBvbmVudCA/IGNoaWxkcmVuIDogeyBkZWZhdWx0OiAoKSA9PiBjaGlsZHJlbiB9O1xuICAgIHJldHVybiBoMih0YWcsIGF0dHJpYnV0ZXMsIG9wdGlvbik7XG4gIH1cbiAgdXBkYXRlZCgpIHtcbiAgICBjb25zdCB7IGRlZmF1bHROb2RlcywgcmVhbExpc3QgfSA9IHRoaXM7XG4gICAgZGVmYXVsdE5vZGVzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBhZGRDb250ZXh0KGdldEh0bWxFbGVtZW50RnJvbU5vZGUobm9kZSksIHtcbiAgICAgICAgZWxlbWVudDogcmVhbExpc3RbaW5kZXhdLFxuICAgICAgICBpbmRleFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZ2V0VW5kZXJseWluZ1ZtKGRvbUVsZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0Q29udGV4dChkb21FbGVtZW50KTtcbiAgfVxuICBnZXRWbUluZGV4RnJvbURvbUluZGV4KGRvbUluZGV4LCBlbGVtZW50KSB7XG4gICAgY29uc3QgeyBkZWZhdWx0Tm9kZXMgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBsZW5ndGggfSA9IGRlZmF1bHROb2RlcztcbiAgICBjb25zdCBkb21DaGlsZHJlbiA9IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgY29uc3QgZG9tRWxlbWVudCA9IGRvbUNoaWxkcmVuLml0ZW0oZG9tSW5kZXgpO1xuICAgIGlmIChkb21FbGVtZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChkb21FbGVtZW50KTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuaW5kZXg7XG4gICAgfVxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdERvbUxpc3RFbGVtZW50ID0gZ2V0SHRtbEVsZW1lbnRGcm9tTm9kZShkZWZhdWx0Tm9kZXNbMF0pO1xuICAgIGNvbnN0IGluZGV4Rmlyc3REb21MaXN0RWxlbWVudCA9IFsuLi5kb21DaGlsZHJlbl0uZmluZEluZGV4KChlbGVtZW50MikgPT4gZWxlbWVudDIgPT09IGZpcnN0RG9tTGlzdEVsZW1lbnQpO1xuICAgIHJldHVybiBkb21JbmRleCA8IGluZGV4Rmlyc3REb21MaXN0RWxlbWVudCA/IDAgOiBsZW5ndGg7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFNsb3Qoc2xvdHMsIGtleSkge1xuICBjb25zdCBzbG90VmFsdWUgPSBzbG90c1trZXldO1xuICByZXR1cm4gc2xvdFZhbHVlID8gc2xvdFZhbHVlKCkgOiBbXTtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVOb2Rlcyh7ICRzbG90cywgcmVhbExpc3QsIGdldEtleSB9KSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRMaXN0ID0gcmVhbExpc3QgfHwgW107XG4gIGNvbnN0IFtoZWFkZXIsIGZvb3Rlcl0gPSBbXCJoZWFkZXJcIiwgXCJmb290ZXJcIl0ubWFwKChuYW1lKSA9PiBnZXRTbG90KCRzbG90cywgbmFtZSkpO1xuICBjb25zdCB7IGl0ZW0gfSA9ICRzbG90cztcbiAgaWYgKCFpdGVtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZHJhZ2dhYmxlIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGl0ZW0gc2xvdFwiKTtcbiAgfVxuICBjb25zdCBkZWZhdWx0Tm9kZXMgPSBub3JtYWxpemVkTGlzdC5mbGF0TWFwKChlbGVtZW50LCBpbmRleCkgPT4gaXRlbSh7IGVsZW1lbnQsIGluZGV4IH0pLm1hcCgobm9kZSkgPT4ge1xuICAgIG5vZGUua2V5ID0gZ2V0S2V5KGVsZW1lbnQpO1xuICAgIG5vZGUucHJvcHMgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBub2RlLnByb3BzIHx8IHt9KSwgeyBcImRhdGEtZHJhZ2dhYmxlXCI6IHRydWUgfSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH0pKTtcbiAgaWYgKGRlZmF1bHROb2Rlcy5sZW5ndGggIT09IG5vcm1hbGl6ZWRMaXN0Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkl0ZW0gc2xvdCBtdXN0IGhhdmUgb25seSBvbmUgY2hpbGRcIik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBoZWFkZXIsXG4gICAgZm9vdGVyLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHROb2Rlc1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0Um9vdEluZm9ybWF0aW9uKHRhZykge1xuICBjb25zdCB0cmFuc2l0aW9uID0gaXNUcmFuc2l0aW9uKHRhZyk7XG4gIGNvbnN0IGV4dGVybmFsQ29tcG9uZW50ID0gIWlzSHRtbFRhZyh0YWcpICYmICF0cmFuc2l0aW9uO1xuICByZXR1cm4ge1xuICAgIHRyYW5zaXRpb24sXG4gICAgZXh0ZXJuYWxDb21wb25lbnQsXG4gICAgdGFnOiBleHRlcm5hbENvbXBvbmVudCA/IHJlc29sdmVDb21wb25lbnQodGFnKSA6IHRyYW5zaXRpb24gPyBUcmFuc2l0aW9uR3JvdXAgOiB0YWdcbiAgfTtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVDb21wb25lbnRTdHJ1Y3R1cmUoeyAkc2xvdHMsIHRhZywgcmVhbExpc3QsIGdldEtleSB9KSB7XG4gIGNvbnN0IG5vZGVzID0gY29tcHV0ZU5vZGVzKHsgJHNsb3RzLCByZWFsTGlzdCwgZ2V0S2V5IH0pO1xuICBjb25zdCByb290ID0gZ2V0Um9vdEluZm9ybWF0aW9uKHRhZyk7XG4gIHJldHVybiBuZXcgQ29tcG9uZW50U3RydWN0dXJlKHsgbm9kZXMsIHJvb3QsIHJlYWxMaXN0IH0pO1xufVxuZnVuY3Rpb24gZW1pdChldnROYW1lLCBldnREYXRhKSB7XG4gIG5leHRUaWNrKCgpID0+IHRoaXMuJGVtaXQoZXZ0TmFtZS50b0xvd2VyQ2FzZSgpLCBldnREYXRhKSk7XG59XG5mdW5jdGlvbiBtYW5hZ2UoZXZ0TmFtZSkge1xuICByZXR1cm4gKGV2dERhdGEsIG9yaWdpbmFsRWxlbWVudCkgPT4ge1xuICAgIGlmICh0aGlzLnJlYWxMaXN0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpc1tgb25EcmFnJHtldnROYW1lfWBdKGV2dERhdGEsIG9yaWdpbmFsRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gbWFuYWdlQW5kRW1pdChldnROYW1lKSB7XG4gIGNvbnN0IGRlbGVnYXRlQ2FsbEJhY2sgPSBtYW5hZ2UuY2FsbCh0aGlzLCBldnROYW1lKTtcbiAgcmV0dXJuIChldnREYXRhLCBvcmlnaW5hbEVsZW1lbnQpID0+IHtcbiAgICBkZWxlZ2F0ZUNhbGxCYWNrLmNhbGwodGhpcywgZXZ0RGF0YSwgb3JpZ2luYWxFbGVtZW50KTtcbiAgICBlbWl0LmNhbGwodGhpcywgZXZ0TmFtZSwgZXZ0RGF0YSk7XG4gIH07XG59XG5sZXQgZHJhZ2dpbmdFbGVtZW50ID0gbnVsbDtcbmNvbnN0IHByb3BzID0ge1xuICBsaXN0OiB7XG4gICAgdHlwZTogQXJyYXksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgbW9kZWxWYWx1ZToge1xuICAgIHR5cGU6IEFycmF5LFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGl0ZW1LZXk6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBGdW5jdGlvbl0sXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgY2xvbmU6IHtcbiAgICB0eXBlOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0OiAob3JpZ2luYWwpID0+IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICB9XG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcImRpdlwiXG4gIH0sXG4gIG1vdmU6IHtcbiAgICB0eXBlOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGNvbXBvbmVudERhdGE6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfVxufTtcbmNvbnN0IGVtaXRzID0gW1xuICBcInVwZGF0ZTptb2RlbFZhbHVlXCIsXG4gIFwiY2hhbmdlXCIsXG4gIC4uLlsuLi5ldmVudHMubWFuYWdlQW5kRW1pdCwgLi4uZXZlbnRzLmVtaXRdLm1hcCgoZXZ0KSA9PiBldnQudG9Mb3dlckNhc2UoKSlcbl07XG5jb25zdCBkcmFnZ2FibGVDb21wb25lbnQgPSBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcImRyYWdnYWJsZVwiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wcyxcbiAgZW1pdHMsXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIHJlbmRlcigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgICAgY29uc3QgeyAkc2xvdHMsICRhdHRycywgdGFnLCBjb21wb25lbnREYXRhLCByZWFsTGlzdCwgZ2V0S2V5IH0gPSB0aGlzO1xuICAgICAgY29uc3QgY29tcG9uZW50U3RydWN0dXJlID0gY29tcHV0ZUNvbXBvbmVudFN0cnVjdHVyZSh7XG4gICAgICAgICRzbG90cyxcbiAgICAgICAgdGFnLFxuICAgICAgICByZWFsTGlzdCxcbiAgICAgICAgZ2V0S2V5XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RydWN0dXJlID0gY29tcG9uZW50U3RydWN0dXJlO1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGdldENvbXBvbmVudEF0dHJpYnV0ZXMoeyAkYXR0cnMsIGNvbXBvbmVudERhdGEgfSk7XG4gICAgICByZXR1cm4gY29tcG9uZW50U3RydWN0dXJlLnJlbmRlcihoLCBhdHRyaWJ1dGVzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuIGgoXCJwcmVcIiwgeyBzdHlsZTogeyBjb2xvcjogXCJyZWRcIiB9IH0sIGVyci5zdGFjayk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkKCkge1xuICAgIGlmICh0aGlzLmxpc3QgIT09IG51bGwgJiYgdGhpcy5tb2RlbFZhbHVlICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlJDEuZXJyb3IoXCJtb2RlbFZhbHVlIGFuZCBsaXN0IHByb3BzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUhIFBsZWFzZSBzZXQgb25lIG9yIGFub3RoZXIuXCIpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7ICRhdHRycywgJGVsLCBjb21wb25lbnRTdHJ1Y3R1cmUgfSA9IHRoaXM7XG4gICAgY29tcG9uZW50U3RydWN0dXJlLnVwZGF0ZWQoKTtcbiAgICBjb25zdCBzb3J0YWJsZU9wdGlvbnMgPSBjcmVhdGVTb3J0YWJsZU9wdGlvbih7XG4gICAgICAkYXR0cnMsXG4gICAgICBjYWxsQmFja0J1aWxkZXI6IHtcbiAgICAgICAgbWFuYWdlQW5kRW1pdDogKGV2ZW50KSA9PiBtYW5hZ2VBbmRFbWl0LmNhbGwodGhpcywgZXZlbnQpLFxuICAgICAgICBlbWl0OiAoZXZlbnQpID0+IGVtaXQuYmluZCh0aGlzLCBldmVudCksXG4gICAgICAgIG1hbmFnZTogKGV2ZW50KSA9PiBtYW5hZ2UuY2FsbCh0aGlzLCBldmVudClcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB0YXJnZXREb21FbGVtZW50ID0gJGVsLm5vZGVUeXBlID09PSAxID8gJGVsIDogJGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fc29ydGFibGUgPSBuZXcgU29ydGFibGUodGFyZ2V0RG9tRWxlbWVudCwgc29ydGFibGVPcHRpb25zKTtcbiAgICB0aGlzLnRhcmdldERvbUVsZW1lbnQgPSB0YXJnZXREb21FbGVtZW50O1xuICAgIHRhcmdldERvbUVsZW1lbnQuX19kcmFnZ2FibGVfY29tcG9uZW50X18gPSB0aGlzO1xuICB9LFxuICB1cGRhdGVkKCkge1xuICAgIHRoaXMuY29tcG9uZW50U3RydWN0dXJlLnVwZGF0ZWQoKTtcbiAgfSxcbiAgYmVmb3JlVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy5fc29ydGFibGUgIT09IHZvaWQgMClcbiAgICAgIHRoaXMuX3NvcnRhYmxlLmRlc3Ryb3koKTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICByZWFsTGlzdCgpIHtcbiAgICAgIGNvbnN0IHsgbGlzdCB9ID0gdGhpcztcbiAgICAgIHJldHVybiBsaXN0ID8gbGlzdCA6IHRoaXMubW9kZWxWYWx1ZTtcbiAgICB9LFxuICAgIGdldEtleSgpIHtcbiAgICAgIGNvbnN0IHsgaXRlbUtleSB9ID0gdGhpcztcbiAgICAgIGlmICh0eXBlb2YgaXRlbUtleSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVtS2V5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIChlbGVtZW50KSA9PiBlbGVtZW50W2l0ZW1LZXldO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICAkYXR0cnM6IHtcbiAgICAgIGhhbmRsZXIobmV3T3B0aW9uVmFsdWUpIHtcbiAgICAgICAgY29uc3QgeyBfc29ydGFibGUgfSA9IHRoaXM7XG4gICAgICAgIGlmICghX3NvcnRhYmxlKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZ2V0VmFsaWRTb3J0YWJsZUVudHJpZXMobmV3T3B0aW9uVmFsdWUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIF9zb3J0YWJsZS5vcHRpb24oa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRVbmRlcmx5aW5nVm0oZG9tRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RydWN0dXJlLmdldFVuZGVybHlpbmdWbShkb21FbGVtZW50KSB8fCBudWxsO1xuICAgIH0sXG4gICAgZ2V0VW5kZXJseWluZ1BvdGVuY2lhbERyYWdnYWJsZUNvbXBvbmVudChodG1FbGVtZW50KSB7XG4gICAgICByZXR1cm4gaHRtRWxlbWVudC5fX2RyYWdnYWJsZV9jb21wb25lbnRfXztcbiAgICB9LFxuICAgIGVtaXRDaGFuZ2VzKGV2dCkge1xuICAgICAgbmV4dFRpY2soKCkgPT4gdGhpcy4kZW1pdChcImNoYW5nZVwiLCBldnQpKTtcbiAgICB9LFxuICAgIGFsdGVyTGlzdChvbkxpc3QpIHtcbiAgICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgICAgb25MaXN0KHRoaXMubGlzdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4udGhpcy5tb2RlbFZhbHVlXTtcbiAgICAgIG9uTGlzdChuZXdMaXN0KTtcbiAgICAgIHRoaXMuJGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdMaXN0KTtcbiAgICB9LFxuICAgIHNwbGljZUxpc3QoKSB7XG4gICAgICBjb25zdCBzcGxpY2VMaXN0ID0gKGxpc3QpID0+IGxpc3Quc3BsaWNlKC4uLmFyZ3VtZW50cyk7XG4gICAgICB0aGlzLmFsdGVyTGlzdChzcGxpY2VMaXN0KTtcbiAgICB9LFxuICAgIHVwZGF0ZVBvc2l0aW9uKG9sZEluZGV4LCBuZXdJbmRleCkge1xuICAgICAgY29uc3QgdXBkYXRlUG9zaXRpb24gPSAobGlzdCkgPT4gbGlzdC5zcGxpY2UobmV3SW5kZXgsIDAsIGxpc3Quc3BsaWNlKG9sZEluZGV4LCAxKVswXSk7XG4gICAgICB0aGlzLmFsdGVyTGlzdCh1cGRhdGVQb3NpdGlvbik7XG4gICAgfSxcbiAgICBnZXRSZWxhdGVkQ29udGV4dEZyb21Nb3ZlRXZlbnQoeyB0bywgcmVsYXRlZCB9KSB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmdldFVuZGVybHlpbmdQb3RlbmNpYWxEcmFnZ2FibGVDb21wb25lbnQodG8pO1xuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgcmV0dXJuIHsgY29tcG9uZW50IH07XG4gICAgICB9XG4gICAgICBjb25zdCBsaXN0ID0gY29tcG9uZW50LnJlYWxMaXN0O1xuICAgICAgY29uc3QgY29udGV4dCA9IHsgbGlzdCwgY29tcG9uZW50IH07XG4gICAgICBpZiAodG8gIT09IHJlbGF0ZWQgJiYgbGlzdCkge1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGNvbXBvbmVudC5nZXRVbmRlcmx5aW5nVm0ocmVsYXRlZCkgfHwge307XG4gICAgICAgIHJldHVybiBfX3NwcmVhZFZhbHVlcyhfX3NwcmVhZFZhbHVlcyh7fSwgZGVzdGluYXRpb24pLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH0sXG4gICAgZ2V0Vm1JbmRleEZyb21Eb21JbmRleChkb21JbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RydWN0dXJlLmdldFZtSW5kZXhGcm9tRG9tSW5kZXgoZG9tSW5kZXgsIHRoaXMudGFyZ2V0RG9tRWxlbWVudCk7XG4gICAgfSxcbiAgICBvbkRyYWdTdGFydChldnQpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZ2V0VW5kZXJseWluZ1ZtKGV2dC5pdGVtKTtcbiAgICAgIGV2dC5pdGVtLl91bmRlcmx5aW5nX3ZtXyA9IHRoaXMuY2xvbmUodGhpcy5jb250ZXh0LmVsZW1lbnQpO1xuICAgICAgZHJhZ2dpbmdFbGVtZW50ID0gZXZ0Lml0ZW07XG4gICAgfSxcbiAgICBvbkRyYWdBZGQoZXZ0KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZXZ0Lml0ZW0uX3VuZGVybHlpbmdfdm1fO1xuICAgICAgaWYgKGVsZW1lbnQgPT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZW1vdmVOb2RlKGV2dC5pdGVtKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5nZXRWbUluZGV4RnJvbURvbUluZGV4KGV2dC5uZXdJbmRleCk7XG4gICAgICB0aGlzLnNwbGljZUxpc3QobmV3SW5kZXgsIDAsIGVsZW1lbnQpO1xuICAgICAgY29uc3QgYWRkZWQgPSB7IGVsZW1lbnQsIG5ld0luZGV4IH07XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VzKHsgYWRkZWQgfSk7XG4gICAgfSxcbiAgICBvbkRyYWdSZW1vdmUoZXZ0KSB7XG4gICAgICBpbnNlcnROb2RlQXQodGhpcy4kZWwsIGV2dC5pdGVtLCBldnQub2xkSW5kZXgpO1xuICAgICAgaWYgKGV2dC5wdWxsTW9kZSA9PT0gXCJjbG9uZVwiKSB7XG4gICAgICAgIHJlbW92ZU5vZGUoZXZ0LmNsb25lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBpbmRleDogb2xkSW5kZXgsIGVsZW1lbnQgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIHRoaXMuc3BsaWNlTGlzdChvbGRJbmRleCwgMSk7XG4gICAgICBjb25zdCByZW1vdmVkID0geyBlbGVtZW50LCBvbGRJbmRleCB9O1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlcyh7IHJlbW92ZWQgfSk7XG4gICAgfSxcbiAgICBvbkRyYWdVcGRhdGUoZXZ0KSB7XG4gICAgICByZW1vdmVOb2RlKGV2dC5pdGVtKTtcbiAgICAgIGluc2VydE5vZGVBdChldnQuZnJvbSwgZXZ0Lml0ZW0sIGV2dC5vbGRJbmRleCk7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IHRoaXMuY29udGV4dC5pbmRleDtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5nZXRWbUluZGV4RnJvbURvbUluZGV4KGV2dC5uZXdJbmRleCk7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICBjb25zdCBtb3ZlZCA9IHsgZWxlbWVudDogdGhpcy5jb250ZXh0LmVsZW1lbnQsIG9sZEluZGV4LCBuZXdJbmRleCB9O1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlcyh7IG1vdmVkIH0pO1xuICAgIH0sXG4gICAgY29tcHV0ZUZ1dHVyZUluZGV4KHJlbGF0ZWRDb250ZXh0LCBldnQpIHtcbiAgICAgIGlmICghcmVsYXRlZENvbnRleHQuZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvbUNoaWxkcmVuID0gWy4uLmV2dC50by5jaGlsZHJlbl0uZmlsdGVyKChlbCkgPT4gZWwuc3R5bGVbXCJkaXNwbGF5XCJdICE9PSBcIm5vbmVcIik7XG4gICAgICBjb25zdCBjdXJyZW50RG9tSW5kZXggPSBkb21DaGlsZHJlbi5pbmRleE9mKGV2dC5yZWxhdGVkKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHJlbGF0ZWRDb250ZXh0LmNvbXBvbmVudC5nZXRWbUluZGV4RnJvbURvbUluZGV4KGN1cnJlbnREb21JbmRleCk7XG4gICAgICBjb25zdCBkcmFnZ2VkSW5MaXN0ID0gZG9tQ2hpbGRyZW4uaW5kZXhPZihkcmFnZ2luZ0VsZW1lbnQpICE9PSAtMTtcbiAgICAgIHJldHVybiBkcmFnZ2VkSW5MaXN0IHx8ICFldnQud2lsbEluc2VydEFmdGVyID8gY3VycmVudEluZGV4IDogY3VycmVudEluZGV4ICsgMTtcbiAgICB9LFxuICAgIG9uRHJhZ01vdmUoZXZ0LCBvcmlnaW5hbEV2ZW50KSB7XG4gICAgICBjb25zdCB7IG1vdmUsIHJlYWxMaXN0IH0gPSB0aGlzO1xuICAgICAgaWYgKCFtb3ZlIHx8ICFyZWFsTGlzdCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbGF0ZWRDb250ZXh0ID0gdGhpcy5nZXRSZWxhdGVkQ29udGV4dEZyb21Nb3ZlRXZlbnQoZXZ0KTtcbiAgICAgIGNvbnN0IGZ1dHVyZUluZGV4ID0gdGhpcy5jb21wdXRlRnV0dXJlSW5kZXgocmVsYXRlZENvbnRleHQsIGV2dCk7XG4gICAgICBjb25zdCBkcmFnZ2VkQ29udGV4dCA9IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIHRoaXMuY29udGV4dCksIHtcbiAgICAgICAgZnV0dXJlSW5kZXhcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc2VuZEV2ZW50ID0gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgZXZ0KSwge1xuICAgICAgICByZWxhdGVkQ29udGV4dCxcbiAgICAgICAgZHJhZ2dlZENvbnRleHRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1vdmUoc2VuZEV2ZW50LCBvcmlnaW5hbEV2ZW50KTtcbiAgICB9LFxuICAgIG9uRHJhZ0VuZCgpIHtcbiAgICAgIGRyYWdnaW5nRWxlbWVudCA9IG51bGw7XG4gICAgfVxuICB9XG59KTtcbmV4cG9ydCB7IGRyYWdnYWJsZUNvbXBvbmVudCBhcyBkZWZhdWx0IH07XG4iLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b25Hcm91cC5uYW1lXCIgY2xhc3M9XCJmcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXJcIj5cclxuICAgIDxmcy1idXR0b25cclxuICAgICAgdi1mb3I9XCJvcHRpb24gb2Ygb3B0aW9uc1wiXHJcbiAgICAgIDprZXk9XCJvcHRpb24uaWNvblwiXHJcbiAgICAgIDp0eXBlPVwibW9kZWxWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gJ3ByaW1hcnknIDogJ2RlZmF1bHQnXCJcclxuICAgICAgOmljb249XCJvcHRpb24uaWNvblwiXHJcbiAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgIEBjbGljaz1cInN1Ym1pdChvcHRpb24udmFsdWUpXCJcclxuICAgIC8+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCByZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3VzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzVGFibGVDb2x1bW5zRml4ZWRDb250cm9sbGVyXCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIG1vZGVsVmFsdWU6IHtcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcImNoYW5nZVwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogXCJsZWZ0XCIsXHJcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5sZWZ0IC8vICdlbC1pY29uLWFycm93LWxlZnQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5jbG9zZSAvLyAnZWwtaWNvbi1jbG9zZSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbHVlOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5yaWdodCAvLyAnZWwtaWNvbi1hcnJvdy1yaWdodCdcclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBzdWJtaXQodmFsdWU6IGFueSkge1xyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIHN1Ym1pdFxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyIHtcclxuICAuZnMtYnV0dG9uIHtcclxuICAgIHBhZGRpbmc6IDJweCAhaW1wb3J0YW50O1xyXG4gICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgbWluLWhlaWdodDogYXV0bztcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnQgOmlzPVwidWkuYnV0dG9uR3JvdXAubmFtZVwiIGNsYXNzPVwiZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyXCI+XHJcbiAgICA8ZnMtYnV0dG9uXHJcbiAgICAgIHYtZm9yPVwib3B0aW9uIG9mIG9wdGlvbnNcIlxyXG4gICAgICA6a2V5PVwib3B0aW9uLmljb25cIlxyXG4gICAgICA6dHlwZT1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J1wiXHJcbiAgICAgIDppY29uPVwib3B0aW9uLmljb25cIlxyXG4gICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICBAY2xpY2s9XCJzdWJtaXQob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAvPlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi8uLi8uLi91c2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1RhYmxlQ29sdW1uc0ZpeGVkQ29udHJvbGxlclwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICBtb2RlbFZhbHVlOiB7XHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1widXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJjaGFuZ2VcIl0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6IFwibGVmdFwiLFxyXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMubGVmdCAvLyAnZWwtaWNvbi1hcnJvdy1sZWZ0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMuY2xvc2UgLy8gJ2VsLWljb24tY2xvc2UnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogXCJyaWdodFwiLFxyXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMucmlnaHQgLy8gJ2VsLWljb24tYXJyb3ctcmlnaHQnXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gc3VibWl0KHZhbHVlOiBhbnkpIHtcclxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XHJcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBzdWJtaXRcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlciB7XHJcbiAgLmZzLWJ1dHRvbiB7XHJcbiAgICBwYWRkaW5nOiAycHggIWltcG9ydGFudDtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgIG1pbi1oZWlnaHQ6IGF1dG87XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZHJhZ2dhYmxlIDpsaXN0PVwiY29sdW1uc1wiIGl0ZW0ta2V5PVwia2V5XCIgOm1vdmU9XCJvbkRyYWdnYWJsZU1vdmVcIj5cclxuICAgIDx0ZW1wbGF0ZSAjaXRlbT1cInsgZWxlbWVudCwgaW5kZXggfVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIHYtc2hvdz1cIm9yaWdpbmFsQ29sdW1uc01hcFtlbGVtZW50Ll9fa2V5XT8uX19zaG93ICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICA6dGl0bGU9XCJidWlsZFRleHQoZWxlbWVudClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjb21wb25lbnQtLWxpc3QtaXRlbVwiXHJcbiAgICAgICAgICBmbGV4PVwibWFpbjpqdXN0aWZ5IGNyb3NzOmNlbnRlclwiXHJcbiAgICAgICAgICA6aT1cImluZGV4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgIDppcz1cInVpLmNoZWNrYm94Lm5hbWVcIlxyXG4gICAgICAgICAgICA6W3VpLmNoZWNrYm94Lm1vZGVsVmFsdWVdPVwiZWxlbWVudC5zaG93XCJcclxuICAgICAgICAgICAgOmRpc2FibGVkPVwib3JpZ2luYWxDb2x1bW5zTWFwW2VsZW1lbnQuX19rZXldPy5fX2Rpc2FibGVkID09PSB0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpdGVtLWxhYmVsXCJcclxuICAgICAgICAgICAgOnRpdGxlPVwiYnVpbGRUZXh0KGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgQFtidWlsZFVwZGF0ZUtleSh1aS5jaGVja2JveC5tb2RlbFZhbHVlKV09XCJ1cGRhdGVDaGVja2VkKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgQGNoYW5nZT1cIm9uQ2hlY2tDaGFuZ2VkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgYnVpbGRUZXh0KGVsZW1lbnQpIH19XHJcbiAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxmcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXJcclxuICAgICAgICAgICAgICB2LWlmPVwiaXNSb290XCJcclxuICAgICAgICAgICAgICB2LW1vZGVsPVwiZWxlbWVudC5maXhlZFwiXHJcbiAgICAgICAgICAgICAgZmxleC1ib3g9XCIwXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImQyLW1yLTEwXCJcclxuICAgICAgICAgICAgICBAY2hhbmdlPVwiZml4ZWRDaGFuZ2UoaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2IGZsZXgtYm94PVwiMFwiIGNsYXNzPVwiY29tcG9uZW50LS1saXN0LWl0ZW0taGFuZGxlIGhhbmRsZVwiPlxyXG4gICAgICAgICAgICAgIDxmcy1pY29uIDppY29uPVwidWkuaWNvbnMuc29ydFwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4OyBwYWRkaW5nLWxlZnQ6IDEwcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2VlZVwiPlxyXG4gICAgICAgICAgPGZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdFxyXG4gICAgICAgICAgICB2LWlmPVwiZWxlbWVudC5jaGlsZHJlblwiXHJcbiAgICAgICAgICAgIDpjb2x1bW5zPVwiZWxlbWVudC5jaGlsZHJlblwiXHJcbiAgICAgICAgICAgIEBjaGVjay1jaGFuZ2VkPVwib25DaGVja0NoYW5nZWRcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gIDwvZHJhZ2dhYmxlPlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxyXG4vL+S4jeimgeWIoFxyXG4vL0B0cy1pZ25vcmVcclxuaW1wb3J0IGRyYWdnYWJsZSBmcm9tIFwidnVlZHJhZ2dhYmxlLWVzXCI7XHJcbmltcG9ydCBGc1RhYmxlQ29sdW1uc0ZpeGVkQ29udHJvbGxlciBmcm9tIFwiLi9mcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXIvaW5kZXgudnVlXCI7XHJcbmltcG9ydCB7IENvbHVtbnNGaWx0ZXJDb250ZXh0LCBDb2x1bW5zRmlsdGVySXRlbSwgQ29sdW1uc0ZpbHRlclByb3ZpZGVLZXkgfSBmcm9tIFwiLi4vLi4vLi4vZFwiO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XHJcblxyXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG5jb25zdCBlbWl0cyA9IGRlZmluZUVtaXRzKFtcImNoZWNrLWNoYW5nZWRcIiwgXCJmaXhlZC1jaGFuZ2VkXCJdKTtcclxudHlwZSBOZXN0TGlzdFByb3BzID0ge1xyXG4gIGNvbHVtbnM6IENvbHVtbnNGaWx0ZXJJdGVtW107XHJcbiAgaXNSb290PzogYm9vbGVhbjtcclxufTtcclxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8TmVzdExpc3RQcm9wcz4oKSwge1xyXG4gIGlzUm9vdDogZmFsc2VcclxufSk7XHJcbmNvbnN0IHsgb3JpZ2luYWxDb2x1bW5zLCBjdXJyZW50Q29sdW1ucywgb3JpZ2luYWxDb2x1bW5zTWFwLCB0ZXh0LCBhY3RpdmUgfSA9XHJcbiAgaW5qZWN0PENvbHVtbnNGaWx0ZXJDb250ZXh0PihDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSk7XHJcbmZ1bmN0aW9uIGJ1aWxkVGV4dChlbGVtZW50OiBhbnkpIHtcclxuICByZXR1cm4gZWxlbWVudC5fX3RpdGxlIHx8IGVsZW1lbnQubGFiZWwgfHwgZWxlbWVudC50aXRsZSB8fCBlbGVtZW50LmtleSB8fCB0ZXh0LnZhbHVlLnVubmFtZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9uRHJhZ2dhYmxlTW92ZShlOiBhbnkpIHtcclxuICBjb25zdCBkcmFnZWQgPSBlLmRyYWdnZWRDb250ZXh0LmVsZW1lbnQ7XHJcbiAgY29uc3QgdGFyZ2V0ID0gZS5yZWxhdGVkQ29udGV4dC5lbGVtZW50O1xyXG4gIGNvbnN0IHNvcnRlZDogQ29sdW1uc0ZpbHRlckl0ZW1bXSA9IFtdO1xyXG4gIGZvciAoY29uc3QgaXRlbSBvZiBjdXJyZW50Q29sdW1ucy52YWx1ZSkge1xyXG4gICAgaWYgKGl0ZW0ua2V5ID09PSBkcmFnZWQua2V5KSB7XHJcbiAgICAgIHNvcnRlZC5wdXNoKHRhcmdldCk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2V5ID09PSB0YXJnZXQua2V5KSB7XHJcbiAgICAgIHNvcnRlZC5wdXNoKGRyYWdlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzb3J0ZWQucHVzaChpdGVtKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/nnItrZXnnmoTmjpLliJfmmK/lkKbmraPluLhcclxuICBsZXQgbGVmdEluZGV4ID0gMDtcclxuICBsZXQgcmlnaHRJbmRleCA9IHNvcnRlZC5sZW5ndGggLSAxO1xyXG4gIGxldCBtaW5Ob3RJbmRleCA9IHNvcnRlZC5sZW5ndGggLSAxO1xyXG4gIGxldCBtYXhOb3RJbmRleCA9IDA7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGl0ZW0gPSBzb3J0ZWRbaV07XHJcbiAgICBpZiAoaXRlbS5maXhlZCA9PT0gXCJsZWZ0XCIpIHtcclxuICAgICAgbGVmdEluZGV4ID0gaTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbS5maXhlZCA9PT0gXCJyaWdodFwiKSB7XHJcbiAgICAgIHJpZ2h0SW5kZXggPSByaWdodEluZGV4ID4gaSA/IGkgOiByaWdodEluZGV4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWluTm90SW5kZXggPSBtaW5Ob3RJbmRleCA+IGkgPyBpIDogbWluTm90SW5kZXg7XHJcbiAgICAgIG1heE5vdEluZGV4ID0gbWF4Tm90SW5kZXggPCBpID8gaSA6IG1heE5vdEluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKG1pbk5vdEluZGV4IDwgbGVmdEluZGV4IHx8IG1heE5vdEluZGV4ID4gcmlnaHRJbmRleCkge1xyXG4gICAgLy91aS5tZXNzYWdlLmVycm9yKFwi6Z2eZml4ZWTlrZfmrrXkuI3lvpfotorov4dmaXhlZOWtl+auteeahOmhuuW6j1wiKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuZnVuY3Rpb24gYnVpbGRVcGRhdGVLZXkoa2V5KSB7XHJcbiAgcmV0dXJuIFwidXBkYXRlOlwiICsga2V5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kRnJvbVRyZWUodHJlZTogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyZWUpIHtcclxuICAgIGlmIChpdGVtLmtleSA9PT0ga2V5KSB7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gZmluZEZyb21UcmVlKGl0ZW0uY2hpbGRyZW4sIGtleSk7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbmZ1bmN0aW9uIHVwZGF0ZUNoZWNrZWQoZWxlbWVudDogYW55KSB7XHJcbiAgZWxlbWVudC5zaG93ID0gIWVsZW1lbnQuc2hvdztcclxuICAvL+e6p+iBlOmAieS4reWSjOWPlua2iFxyXG5cclxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbihlbGVtZW50OiBhbnkpIHtcclxuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuKSB7XHJcbiAgICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFlLl9fc2hvdyB8fCBlLl9fZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZS5zaG93ID0gZWxlbWVudC5zaG93O1xyXG4gICAgICAgIHVwZGF0ZUNoaWxkcmVuKGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgdXBkYXRlQ2hpbGRyZW4oZWxlbWVudCk7XHJcblxyXG4gIGZ1bmN0aW9uIHVwZGF0ZVBhcmVudChlbGVtZW50KSB7XHJcbiAgICBpZiAoZWxlbWVudC5fX3BhcmVudCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50Ll9fcGFyZW50O1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcGFyZW50LnNob3cgPSBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKChlOiBhbnkpID0+IGUuX19zaG93ICYmIGUuc2hvdyA9PT0gdHJ1ZSkubGVuZ3RoID4gMDtcclxuICAgICAgICB1cGRhdGVQYXJlbnQocGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVQYXJlbnQoZWxlbWVudCk7XHJcbn1cclxuZnVuY3Rpb24gb25DaGVja0NoYW5nZWQoKSB7XHJcbiAgZW1pdHMoXCJjaGVjay1jaGFuZ2VkXCIpO1xyXG59XHJcbmZ1bmN0aW9uIGZpeGVkQ2hhbmdlKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpIHtcclxuICBlbWl0cyhcImZpeGVkLWNoYW5nZWRcIiwgaW5kZXgsIHZhbHVlKTtcclxufVxyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnRcclxuICAgIDppcz1cInVpLmRyYXdlci5uYW1lXCJcclxuICAgIGNsYXNzPVwiZnMtY29sdW1ucy1maWx0ZXItbGF5b3V0LWRlZmF1bHRcIlxyXG4gICAgOnRpdGxlPVwidGV4dC50aXRsZVwiXHJcbiAgICB2LWJpbmQ9XCJkcmF3ZXJCaW5kXCJcclxuICAgIGFwcGVuZC10by1ib2R5XHJcbiAgPlxyXG4gICAgPGNvbXBvbmVudFxyXG4gICAgICA6aXM9XCJ1aS5kcmF3ZXIuaGFzQ29udGVudFdyYXAgfHwgJ2RpdidcIlxyXG4gICAgICBjbGFzcz1cImZzLWRyYXdlci13cmFwcGVyIGZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyXCJcclxuICAgICAgOnRpdGxlPVwidGV4dC50aXRsZVwiXHJcbiAgICA+XHJcbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY2FyZC5uYW1lXCIgc2hhZG93PVwibmV2ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9uZW50LS1saXN0XCI+XHJcbiAgICAgICAgICA8ZGl2IGtleT1cIl9fZmlyc3RfX1wiIGNsYXNzPVwiY29tcG9uZW50LS1saXN0LWl0ZW1cIiBmbGV4PVwibWFpbjpqdXN0aWZ5IGNyb3NzOmNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiA6c3Bhbj1cIjEyXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSDlhajpgIkg5Y+N6YCJIC0tPlxyXG4gICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY2hlY2tib3gubmFtZVwiIDppbmRldGVybWluYXRlPVwiaXNJbmRldGVybWluYXRlXCIgdi1iaW5kPVwiY2hlY2tBbGxCaW5kXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzaG93TGVuZ3RoIH19IC8ge3sgYWxsTGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IHRleHQuZml4ZWQgfX0gLyB7eyB0ZXh0Lm9yZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdFxyXG4gICAgICAgICAgICA6Y29sdW1ucz1cImN1cnJlbnRDb2x1bW5zXCJcclxuICAgICAgICAgICAgOmlzLXJvb3Q9XCJ0cnVlXCJcclxuICAgICAgICAgICAgQGNoZWNrLWNoYW5nZWQ9XCJhbGxDaGVja2VkVXBkYXRlXCJcclxuICAgICAgICAgICAgQGZpeGVkLWNoYW5nZWQ9XCJmaXhlZENoYW5nZVwiXHJcbiAgICAgICAgICA+PC9mcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8c2xvdCBuYW1lPVwiYnV0dG9uc1wiPjwvc2xvdD5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cclxuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbi8v5LiN6KaB5YigXHJcbi8vQHRzLWlnbm9yZVxyXG5pbXBvcnQgZHJhZ2dhYmxlIGZyb20gXCJ2dWVkcmFnZ2FibGUtZXNcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vLi4vdXNlXCI7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIHJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5LCBDb2x1bW5zRmlsdGVyQ29udGV4dCwgQ29sdW1uc0ZpbHRlckNvbnRhaW5lclByb3BzIH0gZnJvbSBcIi4uLy4uLy4uL2QvXCI7XHJcbmltcG9ydCBGc0NvbHVtbnNGaWx0ZXJOZXN0TGlzdCBmcm9tIFwiLi9mcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3QudnVlXCI7XHJcblxyXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG5cclxuY29uc3QgeyBvcmlnaW5hbENvbHVtbnMsIGN1cnJlbnRDb2x1bW5zLCB0ZXh0LCBhY3RpdmUgfSA9IGluamVjdDxDb2x1bW5zRmlsdGVyQ29udGV4dD4oQ29sdW1uc0ZpbHRlclByb3ZpZGVLZXkpO1xyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPENvbHVtbnNGaWx0ZXJDb250YWluZXJQcm9wcz4oKTtcclxuY29uc3QgZHJhd2VyQmluZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gbWVyZ2UoXHJcbiAgICB7XHJcbiAgICAgIFt1aS5kcmF3ZXIudmlzaWJsZV06IGFjdGl2ZS52YWx1ZSxcclxuICAgICAgW1wib25VcGRhdGU6XCIgKyB1aS5kcmF3ZXIudmlzaWJsZV06IChlOiBhbnkpID0+IHtcclxuICAgICAgICBhY3RpdmUudmFsdWUgPSBlO1xyXG4gICAgICB9LFxyXG4gICAgICBbdWkuZHJhd2VyLndpZHRoXTogcHJvcHMud2lkdGggfHwgXCI0MDBweFwiXHJcbiAgICB9LFxyXG4gICAgcHJvcHMuZHJhd2VyXHJcbiAgKTtcclxufSk7XHJcblxyXG5jb25zdCBjaGVja0FsbCA9IHJlZihmYWxzZSk7XHJcbi8vIOWFqOmAieWSjOWPjemAieWPkeeUn+WPmOWMluaXtuinpuWPkVxyXG5mdW5jdGlvbiBvbkNoZWNrQWxsQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICBjaGVja0FsbC52YWx1ZSA9IHZhbHVlO1xyXG4gIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gY3VycmVudENvbHVtbnMudmFsdWUubWFwKChlOiBhbnkpID0+IHtcclxuICAgIGlmICghZS5fX3Nob3cgfHwgZS5fX2Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBlO1xyXG4gICAgfVxyXG4gICAgZS5zaG93ID0gdmFsdWU7XHJcbiAgICByZXR1cm4gZTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgY2hlY2tBbGxCaW5kID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBbdWkuY2hlY2tib3gubW9kZWxWYWx1ZV06IGNoZWNrQWxsLnZhbHVlLFxyXG4gICAgW1wib25VcGRhdGU6XCIgKyB1aS5jaGVja2JveC5tb2RlbFZhbHVlXTogKHY6IGFueSkgPT4ge1xyXG4gICAgICBvbkNoZWNrQWxsQ2hhbmdlKHYpO1xyXG4gICAgfVxyXG4gIH07XHJcbn0pO1xyXG5cclxuY29uc3Qgc2hvd0xlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gY3VycmVudENvbHVtbnMudmFsdWUuZmlsdGVyKChlOiBhbnkpID0+IGUuX19zaG93ICYmIGUuc2hvdyA9PT0gdHJ1ZSkubGVuZ3RoO1xyXG59KTtcclxuY29uc3QgYWxsTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiBjdXJyZW50Q29sdW1ucy52YWx1ZS5maWx0ZXIoKGU6IGFueSkgPT4gZS5fX3Nob3cpLmxlbmd0aDtcclxufSk7XHJcbmNvbnN0IGlzSW5kZXRlcm1pbmF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4gc2hvd0xlbmd0aC52YWx1ZSA+IDAgJiYgc2hvd0xlbmd0aC52YWx1ZSA8IGFsbExlbmd0aC52YWx1ZTtcclxufSk7XHJcblxyXG53YXRjaChcclxuICAoKSA9PiB7XHJcbiAgICBjdXJyZW50Q29sdW1ucy52YWx1ZTtcclxuICB9LFxyXG4gICgpID0+IHtcclxuICAgIGFsbENoZWNrZWRVcGRhdGUoKTtcclxuICB9LFxyXG4gIHsgaW1tZWRpYXRlOiB0cnVlIH1cclxuKTtcclxuXHJcbi8vIGZpeGVkIOWPmOWMluaXtuinpuWPkVxyXG5mdW5jdGlvbiBmaXhlZENoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSB7XHJcbiAgaWYgKHZhbHVlKSB7XHJcbiAgICBjdXJyZW50Q29sdW1ucy52YWx1ZVtpbmRleF0uc2hvdyA9IHRydWU7XHJcbiAgfVxyXG4gIGlmICh2YWx1ZSA9PT0gXCJsZWZ0XCIpIHtcclxuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlLnVuc2hpZnQoY3VycmVudENvbHVtbnMudmFsdWUuc3BsaWNlKGluZGV4LCAxKVswXSk7XHJcbiAgfVxyXG4gIGlmICh2YWx1ZSA9PT0gXCJyaWdodFwiKSB7XHJcbiAgICBjdXJyZW50Q29sdW1ucy52YWx1ZS5wdXNoKGN1cnJlbnRDb2x1bW5zLnZhbHVlLnNwbGljZShpbmRleCwgMSlbMF0pO1xyXG4gIH1cclxuICBhbGxDaGVja2VkVXBkYXRlKCk7XHJcbn1cclxuZnVuY3Rpb24gYWxsQ2hlY2tlZFVwZGF0ZSgpIHtcclxuICBjaGVja0FsbC52YWx1ZSA9IHNob3dMZW5ndGgudmFsdWUgPT09IGFsbExlbmd0aC52YWx1ZTtcclxufVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtYnRuc1wiPlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gYnV0dG9uc1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgIDxmcy1idXR0b24gdi1pZj1cIml0ZW0uc2hvd1wiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLl9jbGljaygkZXZlbnQpXCIgLz5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzU2VhcmNoQnV0dG9uc1wiLFxyXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXHJcbiAgcHJvcHM6IHtcclxuICAgIGJ1dHRvbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9XHJcbiAgfSxcclxuICBzZXR1cCgpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICByZXR1cm4geyB1aSB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLWJ0bnNcIj5cclxuICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxyXG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGJ1dHRvbnNcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJpdGVtLnNob3dcIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaXRlbS5fY2xpY2soJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L2NvbXBvbmVudD5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1NlYXJjaEJ1dHRvbnNcIixcclxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxyXG4gIHByb3BzOiB7XHJcbiAgICBidXR0b25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2V0dXAoKSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgcmV0dXJuIHsgdWkgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2ggZnMtc2VhcmNoLXYyXCI+XHJcbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbGxhcHNlVHJhbnNpdGlvbi5uYW1lXCI+XHJcbiAgICAgIDxjb21wb25lbnRcclxuICAgICAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxyXG4gICAgICAgIHJlZj1cInNlYXJjaEZvcm1SZWZcIlxyXG4gICAgICAgIDptb2RlbD1cImZvcm1EYXRhXCJcclxuICAgICAgICBvbnN1Ym1pdD1cImV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcclxuICAgICAgICB2LWJpbmQ9XCJvcHRpb25zXCJcclxuICAgICAgICA6cnVsZXM9XCJjb21wdXRlZFJ1bGVzXCJcclxuICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1mb3JtXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgIDppcz1cImNvbnRhaW5lcj8uaXMgfHwgJ2ZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdCdcIlxyXG4gICAgICAgICAgdi1pZj1cInNob3cgIT09IGZhbHNlXCJcclxuICAgICAgICAgIHYtYmluZD1cImNvbnRhaW5lclwiXHJcbiAgICAgICAgICA6Y29sdW1ucz1cImNvbXB1dGVkQ29sdW1uc1wiXHJcbiAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSAjc2VhcmNoLWJ1dHRvbnM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uX2NsaWNrKClcIiAvPlxyXG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgI3NlYXJjaC1sZWZ0PlxyXG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgI3NlYXJjaC1taWRkbGU+XHJcbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgI3NlYXJjaC1yaWdodD5cclxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgPC9jb21wb25lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c3hcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIHJlYWN0aXZlLCByZWYsIFJlZiwgdW5yZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBmb3JFYWNoLCBjbG9uZURlZXAsIGVhY2gsIGtleXMsIHVuc2V0LCBzZXQsIHNvcnRCeSwgZW50cmllcywgZGVib3VuY2UsIGdldCBhcyBMb2Rhc2hHZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XHJcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XHJcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwubG9nXCI7XHJcbmltcG9ydCBGc1NlYXJjaEJ1dHRvbnMgZnJvbSBcIi4vYnV0dG9ucy52dWVcIjtcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uc1Byb3BzLFxyXG4gIFNlYXJjaEV2ZW50Q29udGV4dCxcclxuICBTZWFyY2hJdGVtUHJvcHMsXHJcbiAgVHlwZU1hcCxcclxuICBWYWx1ZUNoYW5nZUNvbnRleHQsXHJcbiAgVmFsdWVDaGFuZ2VIYW5kbGVcclxufSBmcm9tIFwiLi4vLi4vZFwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcclxuXHJcbi8qKlxyXG4gKiDmn6Xor6LmoYbnu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1NlYXJjaFwiLFxyXG4gIGNvbXBvbmVudHM6IHsgRnNTZWFyY2hCdXR0b25zIH0sXHJcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDluIPlsYDlrrnlmahcclxuICAgICAqL1xyXG4gICAgY29udGFpbmVyOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5Yid5aeL5p+l6K+i5p2h5Lu2XHJcbiAgICAgKiDngrnlh7vph43nva7vvIzkvJrph43nva7miJDor6XmnaHku7ZcclxuICAgICAqL1xyXG4gICAgaW5pdGlhbEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmoKHpqozlkI7nmoTmn6Xor6LooajljZXmlbDmja5cclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGVkRm9ybToge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOihqOWNleWPguaVsFxyXG4gICAgICog5pSv5oyBZWwtZm9ybSB8IGEtZm9ybeeahOWxnuaAp1xyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5p+l6K+i5a2X5q616YWN572uXHJcbiAgICAgKi9cclxuICAgIGNvbHVtbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmjInpkq7phY3nva4s5Y+v5Lul5qC55o2ub3JkZXLmjpLluo9cclxuICAgICAqIGB7c2VhcmNoOnsuLi5Gc0J1dHRvbn0scmVzZXQ6ey4uLkZzQnV0dG9ufX1gXHJcbiAgICAgKi9cclxuICAgIGJ1dHRvbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDngrnlh7vph43nva7lkI7mmK/lkKbnq4vljbPop6blj5Hmn6Xor6JcclxuICAgICAqL1xyXG4gICAgc2VhcmNoQWZ0ZXJSZXNldDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblvIDlkK/oh6rliqjmn6Xor6JcclxuICAgICAqL1xyXG4gICAgYXV0b1NlYXJjaDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDoh6rliqjmn6Xor6LvvIzpmLLmipborr7nva5cclxuICAgICAqIOS8oGZhbHNl5YiZ5YWz6Zet6Ieq5Yqo5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIGRlYm91bmNlOiB7XHJcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaPkuanvVxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbmmL7npLrmn6Xor6LmoYZcclxuICAgICAqL1xyXG4gICAgc2hvdzoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblkK/nlKjmoKHpqoxcclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGU6IHtcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbku7vmhI/lgLzlj5jljJblsLHop6blj5HmoKHpqoxcclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGVPbkNoYW5nZToge1xyXG4gICAgICBkZWZhdWx0OiB0cnVlLFxyXG4gICAgICB0eXBlOiBCb29sZWFuXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDliJfnmoTlrr3luqborr7nva7vvIxzcGFuPXh4XHJcbiAgICAgKi9cclxuICAgIGNvbDoge30sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDnu5/kuIDlrZfmrrXnmoRmb3JtSXRlbeWxnuaAp1xyXG4gICAgICovXHJcbiAgICBmb3JtSXRlbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5p+l6K+i5LqL5Lu2XHJcbiAgICAgKiovXHJcbiAgICBcInNlYXJjaFwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDmn6Xor6Lkuovku7bvvIzmraTkuovku7bkvpvns7vnu5/osIPnlKhcclxuICAgICAqL1xyXG4gICAgXCJfc2VhcmNoXCIsXHJcbiAgICAvKipcclxuICAgICAqIOmHjee9ruS6i+S7tu+8jOS+m+eUqOaIt+S9v+eUqFxyXG4gICAgICoqL1xyXG4gICAgXCJyZXNldFwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDph43nva7kuovku7bvvIzmraTkuovku7bkvpvns7vnu5/osIPnlKhcclxuICAgICAqL1xyXG4gICAgXCJfcmVzZXRcIixcclxuICAgIC8qKlxyXG4gICAgICog5qCh6aqM5aSx6LSl5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwidmFsaWRhdGUtZXJyb3JcIixcclxuICAgIC8qKlxyXG4gICAgICog5qCh6aqM5ZCO55qE6KGo5Y2V5pWw5o2u5Y+Y5YyWXHJcbiAgICAgKi9cclxuICAgIFwidXBkYXRlOnZhbGlkYXRlZEZvcm1cIlxyXG4gIF0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xyXG4gICAgY29uc3QgZG9NZXJnZSA9IG1lcmdlO1xyXG4gICAgY29uc3QgeyBkb0NvbXB1dGVkLCBBc3luY0NvbXB1dGVWYWx1ZSwgQ29tcHV0ZVZhbHVlIH0gPSB1c2VDb21wdXRlKCk7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXHJcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgKGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSB8fCBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQ29tcHV0ZVZhbHVlKSkge1xyXG4gICAgICAgIGxvZ2dlci53YXJuKFwic2VhcmNoLnZhbHVl6YWN572u5LiN5pSv5oyBQ29tcHV0ZVZhbHVlL0FzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKTogYW55IHtcclxuICAgICAgLy/pu5jorqTlgLxcclxuICAgICAgY29uc3QgZm9ybTogYW55ID0ge307XHJcblxyXG4gICAgICBmb3JFYWNoKHByb3BzLmNvbHVtbnMsIChjb2x1bW4sIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4udmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGNvbHVtbi52YWx1ZSk7XHJcbiAgICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnNob3cgIT09IGZhbHNlICYmIGNvbHVtbi5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAvL+m7mOiupOWAvFxyXG4gICAgICAgICAgZm9ybVtrZXldID0gZGVmVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBjbG9uZURlZXAobWVyZ2Uoe30sIHByb3BzLmluaXRpYWxGb3JtLCBmb3JtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSByZWFjdGl2ZShjcmVhdGVJbml0aWFsRm9ybSgpKTtcclxuXHJcbiAgICBsZXQgYXV0b1NlYXJjaDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnM6IFJlZjxUeXBlTWFwPFNlYXJjaEl0ZW1Qcm9wcz4+ID0gZG9Db21wdXRlZChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xyXG4gICAgICB9LFxyXG4gICAgICBnZXRDb250ZXh0Rm4sXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIChjb2x1bW5zOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBmb3JtSXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XHJcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgbWVyZ2UoaXRlbSwgZm9ybUl0ZW0sIGl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbHVtbnMgPSBtZXJnZShmb3JtSXRlbSwgY29sdW1ucyk7XHJcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xyXG4gICAgICAgICAgLy/lpoLmnpzlhbPpl612YWxpZGF0ZeWImeWOu+aOiXJ1bGVzXHJcbiAgICAgICAgICBmb3JFYWNoKGNvbHVtbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnJ1bGVzO1xyXG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWQiOW5tmNvbFxyXG4gICAgICAgIGlmIChwcm9wcy5jb2wpIHtcclxuICAgICAgICAgIGZvckVhY2goY29sdW1ucywgKHYpID0+IHtcclxuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vY2VsbFJlbmRlclxyXG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0uX2NlbGxSZW5kZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZWxsUmVuZGVyKGl0ZW0pO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy/lrZfmrrXmjpLluo9cclxuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcclxuICAgICAgICBmb3JFYWNoKGNvbHVtbnMsICh2LCBrZXkpID0+IHtcclxuICAgICAgICAgIHYuX2tleSA9IGtleTtcclxuICAgICAgICAgIHNvcnRBcnIucHVzaCh2KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zOiB7XHJcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBTZWFyY2hJdGVtUHJvcHM7XHJcbiAgICAgICAgfSA9IHt9O1xyXG5cclxuICAgICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xyXG4gICAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcclxuICAgICAgICAgIHNvcnRlZENvbHVtbnNbX2tleV0gPSBpdGVtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzb3J0ZWRDb2x1bW5zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGZ1bmN0aW9uIG9uRm9ybVZhbGlkYXRlZCgpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGVkRm9ybSA9IGNsb25lRGVlcChmb3JtRGF0YSk7XHJcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOnZhbGlkYXRlZEZvcm1cIiwgdmFsaWRhdGVkRm9ybSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2F0Y2goXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICByZXR1cm4gcHJvcHMudmFsaWRhdGVkRm9ybTtcclxuICAgICAgfSxcclxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRGF0YSkge1xyXG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lcmdlKGZvcm1EYXRhLCB2YWx1ZSB8fCB7fSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkZWVwOiB0cnVlXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZ2V0ID0gKGZvcm06IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIExvZGFzaEdldChmb3JtLCBrZXkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBmdW5jdGlvbiBzcGxpdEtleShrZXk6IHN0cmluZykge1xyXG4gICAgICBpZiAoa2V5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiLlwiKSA+PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGtleS5zcGxpdChcIi5cIik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGtleTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb25zdCBkZWJvdW5jZVZhbGlkYXRlID0gZGVib3VuY2UoYXN5bmMgKCkgPT4ge1xyXG4gICAgLy8gICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XHJcbiAgICAvLyAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0sIDUwMCk7XHJcblxyXG4gICAgZnVuY3Rpb24gY2VsbFJlbmRlcihpdGVtOiBhbnkpIHtcclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XHJcblxyXG4gICAgICBhc3luYyBmdW5jdGlvbiBfb25VcGRhdGVNb2RlbFZhbHVlKCRldmVudDogYW55KSB7XHJcbiAgICAgICAgLy8gYXdhaXQgZGVib3VuY2VWYWxpZGF0ZSgpO1xyXG4gICAgICAgIG9uVmFsdWVDaGFuZ2VkKCRldmVudCwgaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZ1bmN0aW9uIF9vbklucHV0KCkge1xyXG4gICAgICAgIG9uSW5wdXQoaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZ1bmN0aW9uIG9uS2V5dXAoaXRlbTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgICAgIGlmIChrZXkuY29kZSA9PT0gXCJFbnRlclwiKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciAhPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBkb1NlYXJjaCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGRlZmF1bHRTbG90OiBhbnkgPSBudWxsO1xyXG4gICAgICBpZiAocHJvcHMuc2xvdHNbXCJzZWFyY2hfXCIgKyBrZXldKSB7XHJcbiAgICAgICAgZGVmYXVsdFNsb3QgPSA8ZnMtc2xvdC1yZW5kZXIgc2xvdHM9e3Byb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XX0gc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9IC8+O1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0ucmVuZGVyKSB7XHJcbiAgICAgICAgZGVmYXVsdFNsb3QgPSA8ZnMtcmVuZGVyIHJlbmRlci1mdW5jPXtpdGVtLnJlbmRlcn0gc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9IC8+O1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY29tcG9uZW50ICYmIGl0ZW0uY29tcG9uZW50LnNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgZGVmYXVsdFNsb3QgPSAoXHJcbiAgICAgICAgICA8ZnMtY29tcG9uZW50LXJlbmRlclxyXG4gICAgICAgICAgICByZWY9eyh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIG1vZGVsLXZhbHVlPXtnZXQoZm9ybURhdGEsIGtleSl9XHJcbiAgICAgICAgICAgIG9uS2V5dXA9eygkZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uS2V5dXAoaXRlbSwgJGV2ZW50KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLml0ZW0uY29tcG9uZW50fVxyXG4gICAgICAgICAgICBzY29wZT17YnVpbGRGaWVsZENvbnRleHQoa2V5KX1cclxuICAgICAgICAgICAgb25VcGRhdGU6bW9kZWxWYWx1ZT17X29uVXBkYXRlTW9kZWxWYWx1ZX1cclxuICAgICAgICAgICAgb25JbnB1dD17X29uSW5wdXR9XHJcbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb25zdGFydD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCh0cnVlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgb25Db21wb3NpdGlvbmVuZD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZChmYWxzZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHNwbGl0ZWRLZXkgPSBzcGxpdEtleShrZXkpO1xyXG5cclxuICAgICAgcmV0dXJuIHVpLmZvcm1JdGVtLnJlbmRlcih7XHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICBsYWJlbDogaXRlbS50aXRsZSxcclxuICAgICAgICAgIFt1aS5mb3JtSXRlbS5wcm9wXTogc3BsaXRlZEtleSxcclxuICAgICAgICAgIHBhdGg6IGtleSxcclxuICAgICAgICAgIHJ1bGVQYXRoOiBrZXlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNsb3RzOiB7XHJcbiAgICAgICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFNsb3Q7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hGb3JtUmVmID0gcmVmKCk7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZnM6IFJlZiA9IHJlZih7fSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleTogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBjb21wb25lbnRSZW5kZXJSZWZzLnZhbHVlW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVmKGtleTogc3RyaW5nKTogYW55IHtcclxuICAgICAgcmV0dXJuIGdldENvbXBvbmVudFJlbmRlclJlZihrZXkpPy5nZXRUYXJnZXRSZWYoKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKTogU2VhcmNoRXZlbnRDb250ZXh0IHtcclxuICAgICAgcmV0dXJuIHsgZm9ybTogZm9ybURhdGEsIHZhbGlkYXRlZEZvcm06IHByb3BzLnZhbGlkYXRlZEZvcm0sIGdldENvbXBvbmVudFJlZiwgZG9TZWFyY2gsIGRvUmVzZXQsIGRvVmFsaWRhdGUgfTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBidWlsZEZpZWxkQ29udGV4dChrZXk6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4geyAuLi5nZXRDb250ZXh0Rm4oKSwga2V5LCB2YWx1ZTogZ2V0KGZvcm1EYXRhLCBrZXkpIH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9WYWxpZGF0ZShzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSwgdHJpZ2dlcjogc3RyaW5nID0gXCJzZWFyY2hcIik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmIChwcm9wcy52YWxpZGF0ZSkge1xyXG4gICAgICAgICAgYXdhaXQgdWkuZm9ybS52YWxpZGF0ZVdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICAgICAgY3R4LmVtaXQoXCJ2YWxpZGF0ZS1lcnJvclwiLCB7IC4uLmdldENvbnRleHRGbigpLCBlcnJvcjogZSwgdHJpZ2dlciB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKCkge1xyXG4gICAgICBpZiAoYXV0b1NlYXJjaCkge1xyXG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxyXG4gICAgICAgIGF1dG9TZWFyY2guY2FuY2VsKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhd2FpdCBkb1ZhbGlkYXRlKCkpIHtcclxuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcclxuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgICAgIGN0eC5lbWl0KFwiX3NlYXJjaFwiLCBnZXRDb250ZXh0Rm4oKSk7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJzZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9SZXNldCgpIHtcclxuICAgICAgLy8gdWkuZm9ybS5yZXNldFdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSwgeyBmb3JtLCBpbml0aWFsRm9ybTogY3JlYXRlSW5pdGlhbEZvcm0oKSB9KTtcclxuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xyXG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtRGF0YSk7XHJcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllc1JldCkge1xyXG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xyXG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdW5zZXQoZm9ybURhdGEsIGVudHJ5WzBdKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0KGZvcm1EYXRhLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhd2FpdCBkb1ZhbGlkYXRlKCkpIHtcclxuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcclxuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgICAgIGlmIChwcm9wcy5yZXNldCkge1xyXG4gICAgICAgICAgcHJvcHMucmVzZXQoZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDooajljZXph43nva7kuovku7ZcclxuICAgICAgICBjdHguZW1pdChcIl9yZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XHJcbiAgICAgICAgaWYgKHByb3BzLnNlYXJjaEFmdGVyUmVzZXQpIHtcclxuICAgICAgICAgIGRvU2VhcmNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBidG5zOiBhbnkgPSBbXTtcclxuICAgICAgY29uc3QgZGVmQnRuT3B0aW9uczogQnV0dG9uc1Byb3BzPFNlYXJjaEV2ZW50Q29udGV4dD4gPSB7XHJcbiAgICAgICAgc2VhcmNoOiB7XHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBkb1NlYXJjaCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5zZWFyY2gudGV4dFwiKSAvLyAn5p+l6K+iJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0OiB7XHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgZG9SZXNldCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2gucmVzZXQudGV4dFwiKSwgLy8gJ+mHjee9ricsXHJcbiAgICAgICAgICBvcmRlcjogMlxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgbWVyZ2UoZGVmQnRuT3B0aW9ucywgcHJvcHMuYnV0dG9ucyk7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiBkZWZCdG5PcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgYnRuID0gZGVmQnRuT3B0aW9uc1trZXldO1xyXG4gICAgICAgIGJ0bi5fY2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICBidG4uY2xpY2soZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnRucy5wdXNoKGJ0bik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJ0bnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYnRucztcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGluaXRBdXRvU2VhcmNoKCkge1xyXG4gICAgICBpZiAocHJvcHMuYXV0b1NlYXJjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8g5p6E5bu66Ziy5oqW5p+l6K+i5Ye95pWwXHJcbiAgICAgIGlmIChwcm9wcy5kZWJvdW5jZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcclxuICAgICAgICBhdXRvU2VhcmNoID0gZGVib3VuY2UoZG9TZWFyY2gsIHdhaXQsIHByb3BzLmRlYm91bmNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXRBdXRvU2VhcmNoKCk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcclxuICAgICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFZhbGlkYXRlZEZvcm0oKSB7XHJcbiAgICAgIHJldHVybiBwcm9wcy52YWxpZGF0ZWRGb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K6+572uZm9ybeWAvFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBzZXRGb3JtKG5ld0Zvcm06IGFueSwgbWVyZ2UgPSB0cnVlKSB7XHJcbiAgICAgIGlmICghbWVyZ2UpIHtcclxuICAgICAgICBlYWNoKGtleXMoZm9ybURhdGEpLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2l0ZW1dO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRvTWVyZ2UoZm9ybURhdGEsIG5ld0Zvcm0pO1xyXG4gICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbnB1dEV2ZW50RGlzYWJsZWQgPSByZWYoZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGRvQXV0b1NlYXJjaCA9ICgpID0+IHtcclxuICAgICAgbG9nZ2VyLmRlYnVnKFwiZG8gYXV0byBzZWFyY2gsaW5wdXRFdmVudERpc2FibGVkOlwiLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xyXG4gICAgICBpZiAoaW5wdXRFdmVudERpc2FibGVkLnZhbHVlICE9PSB0cnVlICYmIGF1dG9TZWFyY2gpIHtcclxuICAgICAgICAvLyDpmLLmipbmn6Xor6JcclxuICAgICAgICBhdXRvU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25JbnB1dCA9IChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiaW5wdXRcIikge1xyXG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8g6L6T5YWl5rOV55uR5ZCsXHJcbiAgICBjb25zdCBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQgPSAoZGlzYWJsZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlID0gZGlzYWJsZWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkOlwiLCBkaXNhYmxlZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnksIGl0ZW06IFNlYXJjaEl0ZW1Qcm9wcykge1xyXG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcclxuICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIHZhbHVlKTtcclxuXHJcbiAgICAgIGNvbnN0IHNpbGVudCA9IHByb3BzLnZhbGlkYXRlT25DaGFuZ2VTaWxlbnQ7XHJcbiAgICAgIC8vIGlmIChwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlICYmIChhd2FpdCBkb1ZhbGlkYXRlKHNpbGVudCwgXCJjaGFuZ2VcIikpKSB7XHJcbiAgICAgIC8vICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtRGF0YVtrZXldO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGdldENvbXBvbmVudFJlZihrZXkpO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlOiBWYWx1ZUNoYW5nZUhhbmRsZSA9XHJcbiAgICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBpdGVtLnZhbHVlQ2hhbmdlIDogaXRlbS52YWx1ZUNoYW5nZS5oYW5kbGU7XHJcbiAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRDb250ZXh0Rm4oKTtcclxuICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZUNvbnRleHQ6IFZhbHVlQ2hhbmdlQ29udGV4dCA9IHtcclxuICAgICAgICAgIGluZGV4OiAwLFxyXG4gICAgICAgICAgcm93OiBzY29wZS5mb3JtLFxyXG4gICAgICAgICAgZm9ybTogc2NvcGUuZm9ybSxcclxuICAgICAgICAgIC4uLnNjb3BlLFxyXG4gICAgICAgICAga2V5LFxyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBjb21wb25lbnRSZWYsXHJcbiAgICAgICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICAgICAgZ2V0Q29tcG9uZW50UmVmLFxyXG4gICAgICAgICAgbW9kZTogXCJzZWFyY2hcIlxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFsdWVDaGFuZ2UodmFsdWVDaGFuZ2VDb250ZXh0KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBUT0RPIOeUseS6jnZhbGlkYXRlZEZvcm0g5Y+R5bCE5Ye65Y675ZCO77yM5Lya5pu05pawZm9ybURhdGHnmoTmlbDmja7vvIzmiYDku6XopoHmlL7lnKh2YWx1ZUNoYW5nZeWQjumdoizkuI3nhLbkvJrmrbvlvqrnjq9cclxuICAgICAgaWYgKHByb3BzLnZhbGlkYXRlT25DaGFuZ2UgJiYgKGF3YWl0IGRvVmFsaWRhdGUoc2lsZW50LCBcImNoYW5nZVwiKSkpIHtcclxuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhcIml0ZW0uYXV0b1NlYXJjaFRyaWdnZXI6XCIsIGl0ZW0sIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSk7XHJcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09IG51bGwgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gdHJ1ZSB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImNoYW5nZVwiKSB7XHJcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wdXRlZFJ1bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBnZXQsXHJcbiAgICAgIHVpLFxyXG4gICAgICBvblZhbHVlQ2hhbmdlZCxcclxuICAgICAgZG9WYWxpZGF0ZSxcclxuICAgICAgZG9TZWFyY2gsXHJcbiAgICAgIGRvUmVzZXQsXHJcbiAgICAgIGZvcm1EYXRhLFxyXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWZzLFxyXG4gICAgICBnZXRDb21wb25lbnRSZW5kZXJSZWYsXHJcbiAgICAgIGdldENvbXBvbmVudFJlZixcclxuICAgICAgZ2V0Rm9ybSxcclxuICAgICAgZ2V0VmFsaWRhdGVkRm9ybSxcclxuICAgICAgc2V0Rm9ybSxcclxuICAgICAgc2VhcmNoRm9ybVJlZixcclxuICAgICAgb25JbnB1dCxcclxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLFxyXG4gICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQsXHJcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcclxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxyXG4gICAgICBjb21wdXRlZFJ1bGVzLFxyXG4gICAgICBidWlsZEZpZWxkQ29udGV4dCxcclxuICAgICAgZ2V0Q29udGV4dEZuXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXNlYXJjaCB7XHJcbiAgJi5mcy1zZWFyY2gtdjIge1xyXG4gICAgLy9kaXNwbGF5OiBmbGV4O1xyXG4gICAgLy9mbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIC5mcy1zZWFyY2gtYnV0dG9ucyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB9XHJcbiAgICAuc2VhcmNoLWxlZnQge1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtcmlnaHQge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC5hbnQtZm9ybS1pbmxpbmUge1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLXNlYXJjaC1mb3JtIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG5cclxuICAgICAgLmFudC1waWNrZXIsXHJcbiAgICAgIC5hbnQtc2VsZWN0LFxyXG4gICAgICAubi1kYXRlLXBpY2tlcixcclxuICAgICAgLmVsLXNlbGVjdCxcclxuICAgICAgLmVsLWRhdGUtZWRpdG9yIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmFudC1idG4tbG9hZGluZy1pY29uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZWwtZm9ybS0tbGFiZWwtdG9wIHtcclxuICAgICAgICAuZWwtZm9ybS1pdGVtIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmVsLWZvcm0taXRlbSB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZWwtZm9ybS0taW5saW5lIHtcclxuICAgICAgICAuZWwtaW5wdXQge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZnMtc2VhcmNoLWNvbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLy8gYW50ZHZcclxuICAgICAgLmFudC1mb3JtLWl0ZW0tZXhwbGFpbixcclxuICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBib3R0b206IDNweDtcclxuICAgICAgICByaWdodDogOHB4O1xyXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICAgIHRvcDogYXV0bztcclxuICAgICAgICBsZWZ0OiBhdXRvO1xyXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xyXG4gICAgICAgIGJvdHRvbTogMTBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tZXhwbGFpbixcclxuICAgICAgICAuZWwtZm9ybS1pdGVtX19lcnJvciB7XHJcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkge1xyXG4gIC5mcy1zZWFyY2gge1xyXG4gICAgLmZzLXNlYXJjaC1mb3JtIHtcclxuICAgICAgLmZzLXNlYXJjaC1jb2wge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgICBmbGV4OiAxMDAlO1xyXG4gICAgICAgIC8vYW50ZHZcclxuICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XHJcbiAgICAgICAgICB3aWR0aDogMTIwcHg7XHJcbiAgICAgICAgICBmbGV4OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcclxuICAgICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoIGZzLXNlYXJjaC12MlwiPlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2xsYXBzZVRyYW5zaXRpb24ubmFtZVwiPlxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcclxuICAgICAgICByZWY9XCJzZWFyY2hGb3JtUmVmXCJcclxuICAgICAgICA6bW9kZWw9XCJmb3JtRGF0YVwiXHJcbiAgICAgICAgb25zdWJtaXQ9XCJldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXHJcbiAgICAgICAgdi1iaW5kPVwib3B0aW9uc1wiXHJcbiAgICAgICAgOnJ1bGVzPVwiY29tcHV0ZWRSdWxlc1wiXHJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICA6aXM9XCJjb250YWluZXI/LmlzIHx8ICdmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHQnXCJcclxuICAgICAgICAgIHYtaWY9XCJzaG93ICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICB2LWJpbmQ9XCJjb250YWluZXJcIlxyXG4gICAgICAgICAgOmNvbHVtbnM9XCJjb21wdXRlZENvbHVtbnNcIlxyXG4gICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgI3NlYXJjaC1idXR0b25zPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGZzLWJ1dHRvbiB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLl9jbGljaygpXCIgLz5cclxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiICNzZWFyY2gtbGVmdD5cclxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxyXG4gICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiICNzZWFyY2gtbWlkZGxlPlxyXG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiICNzZWFyY2gtcmlnaHQ+XHJcbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHN4XCI+XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCByZWFjdGl2ZSwgcmVmLCBSZWYsIHVucmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgZm9yRWFjaCwgY2xvbmVEZWVwLCBlYWNoLCBrZXlzLCB1bnNldCwgc2V0LCBzb3J0QnksIGVudHJpZXMsIGRlYm91bmNlLCBnZXQgYXMgTG9kYXNoR2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xyXG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xyXG5pbXBvcnQgbG9nZ2VyIGZyb20gXCIuLi8uLi91dGlscy91dGlsLmxvZ1wiO1xyXG5pbXBvcnQgRnNTZWFyY2hCdXR0b25zIGZyb20gXCIuL2J1dHRvbnMudnVlXCI7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbnNQcm9wcyxcclxuICBTZWFyY2hFdmVudENvbnRleHQsXHJcbiAgU2VhcmNoSXRlbVByb3BzLFxyXG4gIFR5cGVNYXAsXHJcbiAgVmFsdWVDaGFuZ2VDb250ZXh0LFxyXG4gIFZhbHVlQ2hhbmdlSGFuZGxlXHJcbn0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xyXG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XHJcblxyXG4vKipcclxuICog5p+l6K+i5qGG57uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNTZWFyY2hcIixcclxuICBjb21wb25lbnRzOiB7IEZzU2VhcmNoQnV0dG9ucyB9LFxyXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5biD5bGA5a655ZmoXHJcbiAgICAgKi9cclxuICAgIGNvbnRhaW5lcjoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWIneWni+afpeivouadoeS7tlxyXG4gICAgICog54K55Ye76YeN572u77yM5Lya6YeN572u5oiQ6K+l5p2h5Lu2XHJcbiAgICAgKi9cclxuICAgIGluaXRpYWxGb3JtOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5qCh6aqM5ZCO55qE5p+l6K+i6KGo5Y2V5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlZEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDooajljZXlj4LmlbBcclxuICAgICAqIOaUr+aMgWVsLWZvcm0gfCBhLWZvcm3nmoTlsZ7mgKdcclxuICAgICAqL1xyXG4gICAgb3B0aW9uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouWtl+autemFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5oyJ6ZKu6YWN572uLOWPr+S7peagueaNrm9yZGVy5o6S5bqPXHJcbiAgICAgKiBge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19YFxyXG4gICAgICovXHJcbiAgICBidXR0b25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog54K55Ye76YeN572u5ZCO5piv5ZCm56uL5Y2z6Kem5Y+R5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaEFmdGVyUmVzZXQ6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5byA5ZCv6Ieq5Yqo5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIGF1dG9TZWFyY2g6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6Ieq5Yqo5p+l6K+i77yM6Ziy5oqW6K6+572uXHJcbiAgICAgKiDkvKBmYWxzZeWImeWFs+mXreiHquWKqOafpeivolxyXG4gICAgICovXHJcbiAgICBkZWJvdW5jZToge1xyXG4gICAgICB0eXBlOiBbQm9vbGVhbiwgT2JqZWN0XSxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5Lmp71cclxuICAgICAqL1xyXG4gICAgc2xvdHM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5pi+56S65p+l6K+i5qGGXHJcbiAgICAgKi9cclxuICAgIHNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5ZCv55So5qCh6aqMXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5Lu75oSP5YC85Y+Y5YyW5bCx6Kem5Y+R5qCh6aqMXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlT25DaGFuZ2U6IHtcclxuICAgICAgZGVmYXVsdDogdHJ1ZSxcclxuICAgICAgdHlwZTogQm9vbGVhblxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5YiX55qE5a695bqm6K6+572u77yMc3Bhbj14eFxyXG4gICAgICovXHJcbiAgICBjb2w6IHt9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog57uf5LiA5a2X5q6155qEZm9ybUl0ZW3lsZ7mgKdcclxuICAgICAqL1xyXG4gICAgZm9ybUl0ZW06IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouS6i+S7tlxyXG4gICAgICoqL1xyXG4gICAgXCJzZWFyY2hcIixcclxuICAgIC8qKlxyXG4gICAgICog5p+l6K+i5LqL5Lu277yM5q2k5LqL5Lu25L6b57O757uf6LCD55SoXHJcbiAgICAgKi9cclxuICAgIFwiX3NlYXJjaFwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDph43nva7kuovku7bvvIzkvpvnlKjmiLfkvb/nlKhcclxuICAgICAqKi9cclxuICAgIFwicmVzZXRcIixcclxuICAgIC8qKlxyXG4gICAgICog6YeN572u5LqL5Lu277yM5q2k5LqL5Lu25L6b57O757uf6LCD55SoXHJcbiAgICAgKi9cclxuICAgIFwiX3Jlc2V0XCIsXHJcbiAgICAvKipcclxuICAgICAqIOagoemqjOWksei0peS6i+S7tlxyXG4gICAgICovXHJcbiAgICBcInZhbGlkYXRlLWVycm9yXCIsXHJcbiAgICAvKipcclxuICAgICAqIOagoemqjOWQjueahOihqOWNleaVsOaNruWPmOWMllxyXG4gICAgICovXHJcbiAgICBcInVwZGF0ZTp2YWxpZGF0ZWRGb3JtXCJcclxuICBdLFxyXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IGRvTWVyZ2UgPSBtZXJnZTtcclxuICAgIGNvbnN0IHsgZG9Db21wdXRlZCwgQXN5bmNDb21wdXRlVmFsdWUsIENvbXB1dGVWYWx1ZSB9ID0gdXNlQ29tcHV0ZSgpO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxyXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsICYmIChpdGVtLnZhbHVlIGluc3RhbmNlb2YgQXN5bmNDb21wdXRlVmFsdWUgfHwgaXRlbS52YWx1ZSBpbnN0YW5jZW9mIENvbXB1dGVWYWx1ZSkpIHtcclxuICAgICAgICBsb2dnZXIud2FybihcInNlYXJjaC52YWx1ZemFjee9ruS4jeaUr+aMgUNvbXB1dGVWYWx1ZS9Bc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCk6IGFueSB7XHJcbiAgICAgIC8v6buY6K6k5YC8XHJcbiAgICAgIGNvbnN0IGZvcm06IGFueSA9IHt9O1xyXG5cclxuICAgICAgZm9yRWFjaChwcm9wcy5jb2x1bW5zLCAoY29sdW1uLCBrZXkpID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihjb2x1bW4udmFsdWUpO1xyXG4gICAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5zaG93ICE9PSBmYWxzZSAmJiBjb2x1bW4uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgLy/pu5jorqTlgLxcclxuICAgICAgICAgIGZvcm1ba2V5XSA9IGRlZlZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKG1lcmdlKHt9LCBwcm9wcy5pbml0aWFsRm9ybSwgZm9ybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gcmVhY3RpdmUoY3JlYXRlSW5pdGlhbEZvcm0oKSk7XHJcblxyXG4gICAgbGV0IGF1dG9TZWFyY2g6IGFueSA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5zOiBSZWY8VHlwZU1hcDxTZWFyY2hJdGVtUHJvcHM+PiA9IGRvQ29tcHV0ZWQoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcclxuICAgICAgfSxcclxuICAgICAgZ2V0Q29udGV4dEZuLFxyXG4gICAgICBudWxsLFxyXG4gICAgICAoY29sdW1uczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9ybUl0ZW0gPSBjbG9uZURlZXAocHJvcHMuZm9ybUl0ZW0gfHwge30pO1xyXG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIG1lcmdlKGl0ZW0sIGZvcm1JdGVtLCBpdGVtKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBjb2x1bW5zID0gbWVyZ2UoZm9ybUl0ZW0sIGNvbHVtbnMpO1xyXG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcclxuICAgICAgICAgIC8v5aaC5p6c5YWz6ZetdmFsaWRhdGXliJnljrvmjolydWxlc1xyXG4gICAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlcztcclxuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlkIjlubZjb2xcclxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XHJcbiAgICAgICAgICBmb3JFYWNoKGNvbHVtbnMsICh2KSA9PiB7XHJcbiAgICAgICAgICAgIHYuY29sID0gbWVyZ2Uoe30sIHByb3BzLmNvbCwgdi5jb2wpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2NlbGxSZW5kZXJcclxuICAgICAgICBmb3JFYWNoKGNvbHVtbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLl9jZWxsUmVuZGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY2VsbFJlbmRlcihpdGVtKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8v5a2X5q615o6S5bqPXHJcbiAgICAgICAgbGV0IHNvcnRBcnI6IFNlYXJjaEl0ZW1Qcm9wc1tdID0gW107XHJcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAodiwga2V5KSA9PiB7XHJcbiAgICAgICAgICB2Ll9rZXkgPSBrZXk7XHJcbiAgICAgICAgICBzb3J0QXJyLnB1c2godik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uczoge1xyXG4gICAgICAgICAgW2tleTogc3RyaW5nXTogU2VhcmNoSXRlbVByb3BzO1xyXG4gICAgICAgIH0gPSB7fTtcclxuXHJcbiAgICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcclxuICAgICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XHJcbiAgICAgICAgICBzb3J0ZWRDb2x1bW5zW19rZXldID0gaXRlbTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc29ydGVkQ29sdW1ucztcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBmdW5jdGlvbiBvbkZvcm1WYWxpZGF0ZWQoKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlZEZvcm0gPSBjbG9uZURlZXAoZm9ybURhdGEpO1xyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTp2YWxpZGF0ZWRGb3JtXCIsIHZhbGlkYXRlZEZvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLnZhbGlkYXRlZEZvcm07XHJcbiAgICAgIH0sXHJcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybURhdGEpIHtcclxuICAgICAgICAgIGRlbGV0ZSBmb3JtRGF0YVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXJnZShmb3JtRGF0YSwgdmFsdWUgfHwge30pO1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGVlcDogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGdldCA9IChmb3JtOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBMb2Rhc2hHZXQoZm9ybSwga2V5KTtcclxuICAgIH07XHJcblxyXG4gICAgZnVuY3Rpb24gc3BsaXRLZXkoa2V5OiBzdHJpbmcpIHtcclxuICAgICAgaWYgKGtleSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPj0gMCkge1xyXG4gICAgICAgIHJldHVybiBrZXkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc3QgZGVib3VuY2VWYWxpZGF0ZSA9IGRlYm91bmNlKGFzeW5jICgpID0+IHtcclxuICAgIC8vICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xyXG4gICAgLy8gICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9LCA1MDApO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNlbGxSZW5kZXIoaXRlbTogYW55KSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xyXG5cclxuICAgICAgYXN5bmMgZnVuY3Rpb24gX29uVXBkYXRlTW9kZWxWYWx1ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIC8vIGF3YWl0IGRlYm91bmNlVmFsaWRhdGUoKTtcclxuICAgICAgICBvblZhbHVlQ2hhbmdlZCgkZXZlbnQsIGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBfb25JbnB1dCgpIHtcclxuICAgICAgICBvbklucHV0KGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBvbktleXVwKGl0ZW06IGFueSwga2V5OiBhbnkpIHtcclxuICAgICAgICBpZiAoa2V5LmNvZGUgPT09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgIT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgZG9TZWFyY2goKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBkZWZhdWx0U2xvdDogYW55ID0gbnVsbDtcclxuICAgICAgaWYgKHByb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XSkge1xyXG4gICAgICAgIGRlZmF1bHRTbG90ID0gPGZzLXNsb3QtcmVuZGVyIHNsb3RzPXtwcm9wcy5zbG90c1tcInNlYXJjaF9cIiArIGtleV19IHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfSAvPjtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLnJlbmRlcikge1xyXG4gICAgICAgIGRlZmF1bHRTbG90ID0gPGZzLXJlbmRlciByZW5kZXItZnVuYz17aXRlbS5yZW5kZXJ9IHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfSAvPjtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLmNvbXBvbmVudCAmJiBpdGVtLmNvbXBvbmVudC5zaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGRlZmF1bHRTbG90ID0gKFxyXG4gICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcclxuICAgICAgICAgICAgcmVmPXsodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBtb2RlbC12YWx1ZT17Z2V0KGZvcm1EYXRhLCBrZXkpfVxyXG4gICAgICAgICAgICBvbktleXVwPXsoJGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBvbktleXVwKGl0ZW0sICRldmVudCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5pdGVtLmNvbXBvbmVudH1cclxuICAgICAgICAgICAgc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9XHJcbiAgICAgICAgICAgIG9uVXBkYXRlOm1vZGVsVmFsdWU9e19vblVwZGF0ZU1vZGVsVmFsdWV9XHJcbiAgICAgICAgICAgIG9uSW5wdXQ9e19vbklucHV0fVxyXG4gICAgICAgICAgICBvbkNvbXBvc2l0aW9uc3RhcnQ9eygpID0+IHtcclxuICAgICAgICAgICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb25lbmQ9eygpID0+IHtcclxuICAgICAgICAgICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzcGxpdGVkS2V5ID0gc3BsaXRLZXkoa2V5KTtcclxuXHJcbiAgICAgIHJldHVybiB1aS5mb3JtSXRlbS5yZW5kZXIoe1xyXG4gICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgbGFiZWw6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICBbdWkuZm9ybUl0ZW0ucHJvcF06IHNwbGl0ZWRLZXksXHJcbiAgICAgICAgICBwYXRoOiBrZXksXHJcbiAgICAgICAgICBydWxlUGF0aDoga2V5XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzbG90czoge1xyXG4gICAgICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRTbG90O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoRm9ybVJlZiA9IHJlZigpO1xyXG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWZzOiBSZWYgPSByZWYoe30pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRSZW5kZXJSZWYoa2V5KT8uZ2V0VGFyZ2V0UmVmKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q29udGV4dEZuKCk6IFNlYXJjaEV2ZW50Q29udGV4dCB7XHJcbiAgICAgIHJldHVybiB7IGZvcm06IGZvcm1EYXRhLCB2YWxpZGF0ZWRGb3JtOiBwcm9wcy52YWxpZGF0ZWRGb3JtLCBnZXRDb21wb25lbnRSZWYsIGRvU2VhcmNoLCBkb1Jlc2V0LCBkb1ZhbGlkYXRlIH07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYnVpbGRGaWVsZENvbnRleHQoa2V5OiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIHsgLi4uZ2V0Q29udGV4dEZuKCksIGtleSwgdmFsdWU6IGdldChmb3JtRGF0YSwga2V5KSB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvVmFsaWRhdGUoc2lsZW50OiBib29sZWFuID0gZmFsc2UsIHRyaWdnZXI6IHN0cmluZyA9IFwic2VhcmNoXCIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAocHJvcHMudmFsaWRhdGUpIHtcclxuICAgICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFzaWxlbnQpIHtcclxuICAgICAgICAgIGN0eC5lbWl0KFwidmFsaWRhdGUtZXJyb3JcIiwgeyAuLi5nZXRDb250ZXh0Rm4oKSwgZXJyb3I6IGUsIHRyaWdnZXIgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBkb1NlYXJjaCgpIHtcclxuICAgICAgaWYgKGF1dG9TZWFyY2gpIHtcclxuICAgICAgICAvLyDpmLLmipbmn6Xor6Llj5bmtohcclxuICAgICAgICBhdXRvU2VhcmNoLmNhbmNlbCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XHJcbiAgICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcclxuICAgICAgICBjdHguZW1pdChcIl9zZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VhcmNoXCIsIGdldENvbnRleHRGbigpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvUmVzZXQoKSB7XHJcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XHJcbiAgICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcclxuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybURhdGEpO1xyXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcclxuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgIHVuc2V0KGZvcm1EYXRhLCBlbnRyeVswXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldChmb3JtRGF0YSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XHJcbiAgICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcclxuICAgICAgICBpZiAocHJvcHMucmVzZXQpIHtcclxuICAgICAgICAgIHByb3BzLnJlc2V0KGdldENvbnRleHRGbigpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g6KGo5Y2V6YeN572u5LqL5Lu2XHJcbiAgICAgICAgY3R4LmVtaXQoXCJfcmVzZXRcIiwgZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICAgIGN0eC5lbWl0KFwicmVzZXRcIiwgZ2V0Q29udGV4dEZuKCkpO1xyXG4gICAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XHJcbiAgICAgICAgICBkb1NlYXJjaCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgYnRuczogYW55ID0gW107XHJcbiAgICAgIGNvbnN0IGRlZkJ0bk9wdGlvbnM6IEJ1dHRvbnNQcm9wczxTZWFyY2hFdmVudENvbnRleHQ+ID0ge1xyXG4gICAgICAgIHNlYXJjaDoge1xyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgZG9TZWFyY2goKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvcmRlcjogMSxcclxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2guc2VhcmNoLnRleHRcIikgLy8gJ+afpeivoicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldDoge1xyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIGRvUmVzZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxyXG4gICAgICAgICAgb3JkZXI6IDJcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIG1lcmdlKGRlZkJ0bk9wdGlvbnMsIHByb3BzLmJ1dHRvbnMpO1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGVmQnRuT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGJ0biA9IGRlZkJ0bk9wdGlvbnNba2V5XTtcclxuICAgICAgICBidG4uX2NsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgYnRuLmNsaWNrKGdldENvbnRleHRGbigpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJ0bnMucHVzaChidG4pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidG5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGJ0bnM7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBpbml0QXV0b1NlYXJjaCgpIHtcclxuICAgICAgaWYgKHByb3BzLmF1dG9TZWFyY2ggPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOaehOW7uumYsuaKluafpeivouWHveaVsFxyXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgbGV0IHdhaXQgPSBwcm9wcy5kZWJvdW5jZT8ud2FpdCB8fCA1MDA7XHJcbiAgICAgICAgYXV0b1NlYXJjaCA9IGRlYm91bmNlKGRvU2VhcmNoLCB3YWl0LCBwcm9wcy5kZWJvdW5jZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0QXV0b1NlYXJjaCgpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGdldEZvcm0oKSB7XHJcbiAgICAgIHJldHVybiBmb3JtRGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRWYWxpZGF0ZWRGb3JtKCkge1xyXG4gICAgICByZXR1cm4gcHJvcHMudmFsaWRhdGVkRm9ybTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiuvue9rmZvcm3lgLxcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gc2V0Rm9ybShuZXdGb3JtOiBhbnksIG1lcmdlID0gdHJ1ZSkge1xyXG4gICAgICBpZiAoIW1lcmdlKSB7XHJcbiAgICAgICAgZWFjaChrZXlzKGZvcm1EYXRhKSwgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBmb3JtRGF0YVtpdGVtXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkb01lcmdlKGZvcm1EYXRhLCBuZXdGb3JtKTtcclxuICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBkb0F1dG9TZWFyY2ggPSAoKSA9PiB7XHJcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcclxuICAgICAgaWYgKGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSAhPT0gdHJ1ZSAmJiBhdXRvU2VhcmNoKSB7XHJcbiAgICAgICAgLy8g6Ziy5oqW5p+l6K+iXHJcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uSW5wdXQgPSAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImlucHV0XCIpIHtcclxuICAgICAgICBkb0F1dG9TZWFyY2goKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIOi+k+WFpeazleebkeWQrFxyXG4gICAgY29uc3QgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkID0gKGRpc2FibGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSA9IGRpc2FibGVkO1xyXG4gICAgICBjb25zb2xlLmxvZyhcImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZDpcIiwgZGlzYWJsZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBhc3luYyBmdW5jdGlvbiBvblZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55LCBpdGVtOiBTZWFyY2hJdGVtUHJvcHMpIHtcclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XHJcbiAgICAgIHNldChmb3JtRGF0YSwga2V5LCB2YWx1ZSk7XHJcblxyXG4gICAgICBjb25zdCBzaWxlbnQgPSBwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlU2lsZW50O1xyXG4gICAgICAvLyBpZiAocHJvcHMudmFsaWRhdGVPbkNoYW5nZSAmJiAoYXdhaXQgZG9WYWxpZGF0ZShzaWxlbnQsIFwiY2hhbmdlXCIpKSkge1xyXG4gICAgICAvLyAgIG9uRm9ybVZhbGlkYXRlZCgpO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybURhdGFba2V5XTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBnZXRDb21wb25lbnRSZWYoa2V5KTtcclxuICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZTogVmFsdWVDaGFuZ2VIYW5kbGUgPVxyXG4gICAgICAgICAgaXRlbS52YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gaXRlbS52YWx1ZUNoYW5nZSA6IGl0ZW0udmFsdWVDaGFuZ2UuaGFuZGxlO1xyXG4gICAgICAgIGNvbnN0IHNjb3BlID0gZ2V0Q29udGV4dEZuKCk7XHJcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VDb250ZXh0OiBWYWx1ZUNoYW5nZUNvbnRleHQgPSB7XHJcbiAgICAgICAgICBpbmRleDogMCxcclxuICAgICAgICAgIHJvdzogc2NvcGUuZm9ybSxcclxuICAgICAgICAgIGZvcm06IHNjb3BlLmZvcm0sXHJcbiAgICAgICAgICAuLi5zY29wZSxcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgY29tcG9uZW50UmVmLFxyXG4gICAgICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcclxuICAgICAgICAgIGdldENvbXBvbmVudFJlZixcclxuICAgICAgICAgIG1vZGU6IFwic2VhcmNoXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhbHVlQ2hhbmdlKHZhbHVlQ2hhbmdlQ29udGV4dCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gVE9ETyDnlLHkuo52YWxpZGF0ZWRGb3JtIOWPkeWwhOWHuuWOu+WQju+8jOS8muabtOaWsGZvcm1EYXRh55qE5pWw5o2u77yM5omA5Lul6KaB5pS+5ZyodmFsdWVDaGFuZ2XlkI7pnaIs5LiN54S25Lya5q275b6q546vXHJcbiAgICAgIGlmIChwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlICYmIChhd2FpdCBkb1ZhbGlkYXRlKHNpbGVudCwgXCJjaGFuZ2VcIikpKSB7XHJcbiAgICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2coXCJpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyOlwiLCBpdGVtLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xyXG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PSBudWxsIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IHRydWUgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJjaGFuZ2VcIikge1xyXG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRSdWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9ucy5ydWxlcztcclxuICAgIH0pO1xyXG5cclxuICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZ2V0LFxyXG4gICAgICB1aSxcclxuICAgICAgb25WYWx1ZUNoYW5nZWQsXHJcbiAgICAgIGRvVmFsaWRhdGUsXHJcbiAgICAgIGRvU2VhcmNoLFxyXG4gICAgICBkb1Jlc2V0LFxyXG4gICAgICBmb3JtRGF0YSxcclxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmcyxcclxuICAgICAgZ2V0Q29tcG9uZW50UmVuZGVyUmVmLFxyXG4gICAgICBnZXRDb21wb25lbnRSZWYsXHJcbiAgICAgIGdldEZvcm0sXHJcbiAgICAgIGdldFZhbGlkYXRlZEZvcm0sXHJcbiAgICAgIHNldEZvcm0sXHJcbiAgICAgIHNlYXJjaEZvcm1SZWYsXHJcbiAgICAgIG9uSW5wdXQsXHJcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZCxcclxuICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkLFxyXG4gICAgICBjb21wdXRlZENvbHVtbnMsXHJcbiAgICAgIGNvbXB1dGVkQnV0dG9ucyxcclxuICAgICAgY29tcHV0ZWRSdWxlcyxcclxuICAgICAgYnVpbGRGaWVsZENvbnRleHQsXHJcbiAgICAgIGdldENvbnRleHRGblxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1zZWFyY2gge1xyXG4gICYuZnMtc2VhcmNoLXYyIHtcclxuICAgIC8vZGlzcGxheTogZmxleDtcclxuICAgIC8vZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICAuZnMtc2VhcmNoLWJ1dHRvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgfVxyXG4gICAgLnNlYXJjaC1sZWZ0IHtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXJpZ2h0IHtcclxuICAgICAgZmxleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAuYW50LWZvcm0taW5saW5lIHtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIC5mcy1zZWFyY2gtZm9ybSB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAgIC5hbnQtcGlja2VyLFxyXG4gICAgICAuYW50LXNlbGVjdCxcclxuICAgICAgLm4tZGF0ZS1waWNrZXIsXHJcbiAgICAgIC5lbC1zZWxlY3QsXHJcbiAgICAgIC5lbC1kYXRlLWVkaXRvciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5lbC1yYW5nZS1lZGl0b3IuZWwtaW5wdXRfX3dyYXBwZXIge1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5hbnQtYnRuLWxvYWRpbmctaWNvbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMnB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmVsLWZvcm0tLWxhYmVsLXRvcCB7XHJcbiAgICAgICAgLmVsLWZvcm0taXRlbSB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5lbC1mb3JtLWl0ZW0ge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmVsLWZvcm0tLWlubGluZSB7XHJcbiAgICAgICAgLmVsLWlucHV0IHtcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmZzLXNlYXJjaC1jb2wge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIC8vIGFudGR2XHJcbiAgICAgIC5hbnQtZm9ybS1pdGVtLWV4cGxhaW4sXHJcbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgYm90dG9tOiAzcHg7XHJcbiAgICAgICAgcmlnaHQ6IDhweDtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICB0b3A6IGF1dG87XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcclxuICAgICAgICBib3R0b206IDEwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIC5hbnQtZm9ybS1pdGVtLWV4cGxhaW4sXHJcbiAgICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xyXG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5uLWZvcm0taXRlbS1ibGFuayB7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcclxuICAuZnMtc2VhcmNoIHtcclxuICAgIC5mcy1zZWFyY2gtZm9ybSB7XHJcbiAgICAgIC5mcy1zZWFyY2gtY29sIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgZmxleDogMTAwJTtcclxuICAgICAgICAvL2FudGR2XHJcbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xyXG4gICAgICAgICAgd2lkdGg6IDEyMHB4O1xyXG4gICAgICAgICAgZmxleDogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XHJcbiAgICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2xsYXBzZVRyYW5zaXRpb24ubmFtZVwiPlxyXG4gICAgPGRpdiB2LWlmPVwic2hvdyAhPT0gZmFsc2VcIiBjbGFzcz1cImZzLXNlYXJjaFwiIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1tdWx0aS1saW5lJzogY29tcHV0ZWRJc011bHRpTGluZSB9XCI+XHJcbiAgICAgIDxjb21wb25lbnRcclxuICAgICAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxyXG4gICAgICAgIHJlZj1cInNlYXJjaEZvcm1SZWZcIlxyXG4gICAgICAgIDptb2RlbD1cImZvcm1cIlxyXG4gICAgICAgIHYtYmluZD1cIm9wdGlvbnNcIlxyXG4gICAgICAgIDpydWxlcz1cImNvbXB1dGVkUnVsZXNcIlxyXG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWZvcm1cIlxyXG4gICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKHRydWUpXCJcclxuICAgICAgICBAY29tcG9zaXRpb25lbmQ9XCJjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQoZmFsc2UpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLW1haW5cIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1jb2xsYXBzZSc6IGNvbGxhcHNlIH1cIlxyXG4gICAgICAgICAgICAgIDpzdHlsZT1cInsgaGVpZ2h0OiBjb21wdXRlZENvbHVtbkJveEhlaWdodCB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiByZWY9XCJjb2x1bW5zUm93UmVmXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgaW4gY29tcHV0ZWRDb2x1bW5zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cImNvbXB1dGVkQ29sTmFtZVwiIHYtaWY9XCJpdGVtLnNob3cgPT09IHRydWVcIiBjbGFzcz1cImZzLXNlYXJjaC1jb2xcIiB2LWJpbmQ9XCJpdGVtLmNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiIHYtYmluZD1cIml0ZW1cIiA6W3VpLmZvcm1JdGVtLnByb3BdPVwia2V5XCIgOmxhYmVsPVwiaXRlbS50aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoXycgKyBrZXldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoXycgKyBrZXldXCIgOnNjb3BlPVwieyAuLi5zZWFyY2hFdmVudENvbnRleHRSZWYsIGtleSB9XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZnMtY29tcG9uZW50LXJlbmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLmNvbXBvbmVudCAmJiBpdGVtLmNvbXBvbmVudC5zaG93ICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVuZGVyUmVmc1tpdGVtLmtleV0gPSBlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0KGZvcm0sIGtleSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uY29tcG9uZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9XCJvbklucHV0KGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGZzLXNlYXJjaC1idXR0b25zIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZnMtc2VhcmNoLWJ1dHRvbnMgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiA6YnV0dG9ucz1cImNvbXB1dGVkQnV0dG9uc1wiPjwvZnMtc2VhcmNoLWJ1dHRvbnM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgY2xhc3M9XCJmcy1zZWFyY2gtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxyXG4gICAgICAgICAgICAgIDxmcy1idXR0b24gOmljb249XCJjb2xsYXBzZSA/IHVpLmljb25zLmNhcmV0VXAgOiB1aS5pY29ucy5jYXJldERvd25cIiBAY2xpY2s9XCJ0b2dnbGVDb2xsYXBzZVwiIC8+XHJcbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgb25Nb3VudGVkLCByZWFjdGl2ZSwgcmVmLCBSZWYsIHVucmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBlYWNoLCBmb3JFYWNoLCBzb3J0QnksIGVudHJpZXMsIHVuc2V0LCBzZXQsIGtleXMsIGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcclxuaW1wb3J0IEZzU2VhcmNoQnV0dG9ucyBmcm9tIFwiLi9idXR0b25zLnZ1ZVwiO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQnV0dG9uc1Byb3BzLCBTZWFyY2hFdmVudENvbnRleHQsIFNlYXJjaEl0ZW1Qcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcclxuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xyXG5cclxuLyoqXHJcbiAqIOafpeivouahhue7hOS7tlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzU2VhcmNoVjFcIixcclxuICBjb21wb25lbnRzOiB7IEZzU2VhcmNoQnV0dG9ucyB9LFxyXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5Yid5aeL5p+l6K+i5p2h5Lu2XHJcbiAgICAgKiDngrnlh7vph43nva7vvIzkvJrph43nva7miJDor6XmnaHku7ZcclxuICAgICAqL1xyXG4gICAgaW5pdGlhbEZvcm06IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDooajljZXlj4LmlbBcclxuICAgICAqIOaUr+aMgWVsLWZvcm0gfCBhLWZvcm3nmoTlsZ7mgKdcclxuICAgICAqL1xyXG4gICAgb3B0aW9uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouWtl+autemFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICogdGFic1xyXG4gICAgICogeyBzaG93ICwgb3B0aW9ucyxrZXksIGRlZmF1bHR9XHJcbiAgICAgKi9cclxuICAgIHRhYnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmjInpkq7phY3nva4s5Y+v5Lul5qC55o2ub3JkZXLmjpLluo9cclxuICAgICAqIHtzZWFyY2g6ey4uLkZzQnV0dG9ufSxyZXNldDp7Li4uRnNCdXR0b259fVxyXG4gICAgICovXHJcbiAgICBidXR0b25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog54K55Ye76YeN572u5ZCO5piv5ZCm56uL5Y2z6Kem5Y+R5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaEFmdGVyUmVzZXQ6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5byA5ZCv6Ieq5Yqo5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIGF1dG9TZWFyY2g6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6Ieq5Yqo5p+l6K+i77yM6Ziy5oqW6K6+572uXHJcbiAgICAgKiDkvKBmYWxzZeWImeWFs+mXreiHquWKqOafpeivolxyXG4gICAgICovXHJcbiAgICBkZWJvdW5jZToge1xyXG4gICAgICB0eXBlOiBbQm9vbGVhbiwgT2JqZWN0XSxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5Lmp71cclxuICAgICAqL1xyXG4gICAgc2xvdHM6IHtcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuaYvuekuuafpeivouahhlxyXG4gICAgICovXHJcbiAgICBzaG93OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuWQr+eUqOagoemqjFxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZToge1xyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5biD5bGALCBzaW5nbGUtbGluZSDljZXooYzvvIwgbXVsdGktbGluZSDlpJrooYzvvIjmlK/mjIHlsZXlvIDmlLbotbfvvIlcclxuICAgICAqL1xyXG4gICAgbGF5b3V0OiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogXCJzaW5nbGUtbGluZVwiXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDliJfnmoTlrr3luqborr7nva7vvIxzcGFuPXh4XHJcbiAgICAgKi9cclxuICAgIGNvbDoge30sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbmipjlj6BcclxuICAgICAqL1xyXG4gICAgY29sbGFwc2U6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouS6i+S7tlxyXG4gICAgICoqL1xyXG4gICAgXCJzZWFyY2hcIixcclxuICAgIC8qKlxyXG4gICAgICog6YeN572u5LqL5Lu2XHJcbiAgICAgKiovXHJcbiAgICBcInJlc2V0XCIsXHJcbiAgICBcImNvbGxhcHNlXCIsXHJcbiAgICBcInVwZGF0ZTpjb2xsYXBzZVwiXHJcbiAgXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgLy8g5byC5q2lc2V0dXDpnIDopoHmlL7lnKjnrKzkuIDkuKphd2FpdOS5i+WJjVxyXG4gICAgLy8gb25Nb3VudGVkIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2UgdG8gYmUgYXNzb2NpYXRlZCB3aXRoLlxyXG4gICAgLy/kuLrllaXkvJrmnInov5nkuKrorablkYpcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlICYmIGNvbHVtbnNSb3dSZWYudmFsdWUpIHtcclxuICAgICAgICBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbnNMaXN0ID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwuY2hpbGRyZW47XHJcbiAgICAgICAgaWYgKGNvbHVtbnNMaXN0ICYmIGNvbHVtbnNMaXN0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc0xpc3RbMV0ub2Zmc2V0SGVpZ2h0ICsgMjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBhdXRvU2VhcmNoOiBhbnkgPSBudWxsO1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKSB7XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKHByb3BzLmluaXRpYWxGb3JtIHx8IHt9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZvcm0gPSByZWFjdGl2ZShjcmVhdGVJbml0aWFsRm9ybSgpKTtcclxuICAgIGNvbnN0IHsgZG9Db21wdXRlZCwgQXN5bmNDb21wdXRlVmFsdWUgfSA9IHVzZUNvbXB1dGUoKTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsICYmIGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSkge1xyXG4gICAgICAgIGxvZ2dlci53YXJuKFwic2VhcmNoLnZhbHVl6YWN572u5LiN5pSv5oyBQXN5bmNDb21wdXRl57G75Z6L55qE5Yqo5oCB6K6h566XXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbiAgICBjb25zdCBkb01lcmdlID0gbWVyZ2U7XHJcbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnMgPSBkb0NvbXB1dGVkKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XHJcbiAgICAgIH0sXHJcbiAgICAgIGdldENvbnRleHRGbixcclxuICAgICAgbnVsbCxcclxuICAgICAgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xyXG4gICAgICAgICAgLy/lpoLmnpzlhbPpl612YWxpZGF0ZeWImeWOu+aOiXJ1bGVzXHJcbiAgICAgICAgICBmb3JFYWNoKHZhbHVlLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlcztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlkIjlubZjb2xcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XHJcbiAgICAgICAgICBmb3JFYWNoKHZhbHVlLCAodikgPT4ge1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8v5a2X5q615o6S5bqPXHJcbiAgICAgICAgbGV0IHNvcnRBcnI6IFNlYXJjaEl0ZW1Qcm9wc1tdID0gW107XHJcbiAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKHYsIGtleSkgPT4ge1xyXG4gICAgICAgICAgdi5fa2V5ID0ga2V5O1xyXG4gICAgICAgICAgc29ydEFyci5wdXNoKHYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNvcnRlZENvbHVtbnM6IHtcclxuICAgICAgICAgIFtrZXk6IHN0cmluZ106IFNlYXJjaEl0ZW1Qcm9wcztcclxuICAgICAgICB9ID0ge307XHJcblxyXG4gICAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XHJcbiAgICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xyXG4gICAgICAgICAgc29ydGVkQ29sdW1uc1tfa2V5XSA9IGl0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHNvcnRlZENvbHVtbnM7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy/pu5jorqTlgLxcclxuICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAoY29sdW1uLCBrZXkpID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRlZlZhbHVlID0gdW5yZWYoY29sdW1uLnZhbHVlKTtcclxuICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnNob3cgIT09IGZhbHNlICYmIGNvbHVtbi5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgLy/pu5jorqTlgLxcclxuICAgICAgICBmb3JtW2tleV0gPSBkZWZWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtUmVmID0gcmVmKCk7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZnM6IFJlZiA9IHJlZih7fSk7XHJcbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZW5kZXJSZWYoa2V5OiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleSk/LiRyZWZzPy50YXJnZXRSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q29udGV4dEZuKCk6IFNlYXJjaEV2ZW50Q29udGV4dCB7XHJcbiAgICAgIHJldHVybiB7IGZvcm0sIHZhbGlkYXRlZEZvcm06IGZvcm0sIGdldENvbXBvbmVudFJlZiwgZG9WYWxpZGF0ZTogbnVsbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlYXJjaEV2ZW50Q29udGV4dFJlZjogUmVmPFNlYXJjaEV2ZW50Q29udGV4dD4gPSByZWYoZ2V0Q29udGV4dEZuKCkpO1xyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKCkge1xyXG4gICAgICBpZiAoYXV0b1NlYXJjaCkge1xyXG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxyXG4gICAgICAgIGF1dG9TZWFyY2guY2FuY2VsKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gYXdhaXQgdWkuZm9ybS52YWxpZGF0ZVdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSk7XHJcbiAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VhcmNoXCIsIHNlYXJjaEV2ZW50Q29udGV4dFJlZi52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdWkubWVzc2FnZS5lcnJvcih7XHJcbiAgICAgICAgICBtZXNzYWdlOiB0KFwiZnMuc2VhcmNoLmVycm9yLm1lc3NhZ2VcIilcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkb1Jlc2V0KCkge1xyXG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xyXG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XHJcbiAgICAgIGNvbnN0IGVudHJpZXNSZXQgPSBlbnRyaWVzKGZvcm0pO1xyXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcclxuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgIHVuc2V0KGZvcm0sIGVudHJ5WzBdKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0KGZvcm0sIGVudHJ5WzBdLCBpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgaWYgKHByb3BzLnJlc2V0KSB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgcHJvcHMucmVzZXQoc2VhcmNoRXZlbnRDb250ZXh0UmVmLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDooajljZXph43nva7kuovku7ZcclxuICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBpZiAocHJvcHMuc2VhcmNoQWZ0ZXJSZXNldCkge1xyXG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcclxuICAgICAgICAgIGRvU2VhcmNoKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgYnRuczogYW55ID0gW107XHJcbiAgICAgIGNvbnN0IGRlZkJ0bk9wdGlvbnM6IEJ1dHRvbnNQcm9wczxTZWFyY2hFdmVudENvbnRleHQ+ID0ge1xyXG4gICAgICAgIHNlYXJjaDoge1xyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgZG9TZWFyY2goKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvcmRlcjogMSxcclxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2guc2VhcmNoLnRleHRcIikgLy8gJ+afpeivoicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNldDoge1xyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIGRvUmVzZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxyXG4gICAgICAgICAgb3JkZXI6IDJcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBtZXJnZShkZWZCdG5PcHRpb25zLCBwcm9wcy5idXR0b25zKTtcclxuICAgICAgZm9yIChsZXQga2V5IGluIGRlZkJ0bk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBidG4gPSBkZWZCdG5PcHRpb25zW2tleV07XHJcbiAgICAgICAgYnRuLl9jbGljayA9ICgpID0+IHtcclxuICAgICAgICAgIGJ0bi5jbGljayhnZXRDb250ZXh0Rm4oKSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBidG5zLnB1c2goYnRuKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYnRucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBidG5zO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gaW5pdEF1dG9TZWFyY2goKSB7XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBpZiAocHJvcHMuYXV0b1NlYXJjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8g5p6E5bu66Ziy5oqW5p+l6K+i5Ye95pWwXHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgbGV0IHdhaXQgPSBwcm9wcy5kZWJvdW5jZT8ud2FpdCB8fCA1MDA7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgYXV0b1NlYXJjaCA9IGRlYm91bmNlKGRvU2VhcmNoLCB3YWl0LCBwcm9wcy5kZWJvdW5jZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbml0QXV0b1NlYXJjaCgpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGdldEZvcm0oKSB7XHJcbiAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K6+572uZm9ybeWAvFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBzZXRGb3JtKG5ld0Zvcm06IGFueSwgbWVyZ2UgPSB0cnVlKSB7XHJcbiAgICAgIGlmICghbWVyZ2UpIHtcclxuICAgICAgICBlYWNoKGtleXMoZm9ybSksIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBkZWxldGUgZm9ybVtpdGVtXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkb01lcmdlKGZvcm0sIG5ld0Zvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlucHV0RXZlbnREaXNhYmxlZCA9IHJlZihmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgZG9BdXRvU2VhcmNoID0gKCkgPT4ge1xyXG4gICAgICBsb2dnZXIuZGVidWcoXCJkbyBhdXRvIHNlYXJjaCxpbnB1dEV2ZW50RGlzYWJsZWQ6XCIsIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSk7XHJcbiAgICAgIGlmIChpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgIT09IHRydWUgJiYgYXV0b1NlYXJjaCkge1xyXG4gICAgICAgIC8vIOmYsuaKluafpeivolxyXG4gICAgICAgIGF1dG9TZWFyY2goKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbklucHV0ID0gKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJpbnB1dFwiKSB7XHJcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyDovpPlhaXms5Xnm5HlkKxcclxuICAgIGNvbnN0IGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCA9IChkaXNhYmxlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgPSBkaXNhYmxlZDtcclxuICAgICAgZG9BdXRvU2VhcmNoKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIG9uVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnksIGl0ZW06IFNlYXJjaEl0ZW1Qcm9wcykge1xyXG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcclxuICAgICAgc2V0KGZvcm0sIGtleSwgdmFsdWUpO1xyXG4gICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVtrZXldO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGdldENvbXBvbmVudFJlZihrZXkpO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlID0gaXRlbS52YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gaXRlbS52YWx1ZUNoYW5nZSA6IGl0ZW0udmFsdWVDaGFuZ2UuaGFuZGxlO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHZhbHVlQ2hhbmdlKHsga2V5LCB2YWx1ZSwgY29tcG9uZW50UmVmLCAuLi5nZXRDb250ZXh0Rm4oKSwgaW1taWRpYXRlOiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PSBudWxsIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IHRydWUgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJjaGFuZ2VcIikge1xyXG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRSdWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8tLS0tLeWkmuihjOaooeW8j+aKmOWPoFxyXG5cclxuICAgIGNvbnN0IGNvbHVtbnNSb3dSZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGNvbHVtbnNCb3hIZWlnaHRSZWYgPSByZWYoMCk7XHJcbiAgICBjb25zdCBjb2x1bW5zTGluZUhlaWdodFJlZiA9IHJlZigwKTtcclxuXHJcbiAgICBjb25zdCB0b2dnbGVDb2xsYXBzZSA9ICgpID0+IHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOmNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBjdHguZW1pdChcImNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQ29sTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmIChwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHVpLmNvbC5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBcImRpdlwiO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjb21wdXRlZElzTXVsdGlMaW5lID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCI7XHJcbiAgICAgIC8v5LiN6KaB6L+Z5Liq77yM5Lya5q275b6q546v77yMICYmIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gXCJhdXRvXCI7XHJcbiAgICAgIH1cclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmIChwcm9wcy5jb2xsYXBzZSkge1xyXG4gICAgICAgIHJldHVybiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlICsgXCJweFwiIDogXCJcIjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldChmb3JtLCBrZXkpO1xyXG4gICAgICB9LFxyXG4gICAgICB1aSxcclxuICAgICAgb25WYWx1ZUNoYW5nZWQsXHJcbiAgICAgIGRvU2VhcmNoLFxyXG4gICAgICBkb1Jlc2V0LFxyXG4gICAgICBmb3JtLFxyXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWZzLFxyXG4gICAgICBnZXRDb21wb25lbnRSZW5kZXJSZWYsXHJcbiAgICAgIGdldENvbXBvbmVudFJlZixcclxuICAgICAgZ2V0Rm9ybSxcclxuICAgICAgc2V0Rm9ybSxcclxuICAgICAgc2VhcmNoRm9ybVJlZixcclxuICAgICAgb25JbnB1dCxcclxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLFxyXG4gICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQsXHJcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcclxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxyXG4gICAgICBjb21wdXRlZFJ1bGVzLFxyXG4gICAgICBjb2x1bW5zUm93UmVmLFxyXG4gICAgICBjb21wdXRlZENvbHVtbkJveEhlaWdodCxcclxuICAgICAgY29tcHV0ZWRDb2xOYW1lLFxyXG4gICAgICBjb21wdXRlZElzTXVsdGlMaW5lLFxyXG4gICAgICB0b2dnbGVDb2xsYXBzZSxcclxuICAgICAgc2VhcmNoRXZlbnRDb250ZXh0UmVmXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXNlYXJjaCB7XHJcbiAgLy9kaXNwbGF5OiBmbGV4O1xyXG4gIC8vZmxleC13cmFwOiBub3dyYXA7XHJcbiAgLnNlYXJjaC1sZWZ0IHtcclxuICB9XHJcbiAgLnNlYXJjaC1yaWdodCB7XHJcbiAgICBmbGV4OiAxO1xyXG4gIH1cclxuICAuYW50LWZvcm0taW5saW5lIHtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICB9XHJcbiAgLmZzLXNlYXJjaC1mb3JtIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgLy8mID4gKiB7XHJcbiAgICAvLyAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gICAgLy8gIG1hcmdpbi10b3A6IDRweDtcclxuICAgIC8vICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAvL31cclxuXHJcbiAgICAuZnMtc2VhcmNoLWJveCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuZnMtc2VhcmNoLWNvbCB7XHJcbiAgICAgICYgPiAqIHtcclxuICAgICAgICBtYXJnaW46IDBweCA1cHg7XHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luOiAxcHggMDtcclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgLy8gbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZWwtZm9ybS1pdGVtIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmVsLWZvcm0tLWlubGluZSB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZnMtc2VhcmNoLWJ0bnMge1xyXG4gICAgLmZzLWJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5mcy1zZWFyY2gtbXVsdGktbGluZSB7XHJcbiAgICAuZnMtc2VhcmNoLWJveCB7XHJcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICAuZnMtc2VhcmNoLWNvbHVtbnMge1xyXG4gICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gICAgICAgICAgLy8gdHJhbnNpdGlvbjogYWxsIDAuM3MgbGluZWFyO1xyXG4gICAgICAgICAgLy8gd2lsbC1jaGFuZ2U6IGhlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmZzLXNlYXJjaC1idG5zIHtcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICAgICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5uLWZvcm0taXRlbS1ibGFuayB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmZzLXNlYXJjaC1hY3Rpb24ge1xyXG4gICAgICAuYW50LWZvcm0taXRlbSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5mcy1zZWFyY2gge1xyXG4gIC5uLWZvcm0taXRlbS1ibGFuayB7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50IDppcz1cInVpLmNvbGxhcHNlVHJhbnNpdGlvbi5uYW1lXCI+XHJcbiAgICA8ZGl2IHYtaWY9XCJzaG93ICE9PSBmYWxzZVwiIGNsYXNzPVwiZnMtc2VhcmNoXCIgOmNsYXNzPVwieyAnZnMtc2VhcmNoLW11bHRpLWxpbmUnOiBjb21wdXRlZElzTXVsdGlMaW5lIH1cIj5cclxuICAgICAgPGNvbXBvbmVudFxyXG4gICAgICAgIDppcz1cInVpLmZvcm0ubmFtZVwiXHJcbiAgICAgICAgcmVmPVwic2VhcmNoRm9ybVJlZlwiXHJcbiAgICAgICAgOm1vZGVsPVwiZm9ybVwiXHJcbiAgICAgICAgdi1iaW5kPVwib3B0aW9uc1wiXHJcbiAgICAgICAgOnJ1bGVzPVwiY29tcHV0ZWRSdWxlc1wiXHJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXHJcbiAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9XCJjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQodHJ1ZSlcIlxyXG4gICAgICAgIEBjb21wb3NpdGlvbmVuZD1cImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZChmYWxzZSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1ib3hcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtbWFpblwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgOmNsYXNzPVwieyAnZnMtc2VhcmNoLWNvbGxhcHNlJzogY29sbGFwc2UgfVwiXHJcbiAgICAgICAgICAgICAgOnN0eWxlPVwieyBoZWlnaHQ6IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0IH1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIHJlZj1cImNvbHVtbnNSb3dSZWZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBpbiBjb21wdXRlZENvbHVtbnNcIiA6a2V5PVwia2V5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwiY29tcHV0ZWRDb2xOYW1lXCIgdi1pZj1cIml0ZW0uc2hvdyA9PT0gdHJ1ZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIml0ZW0uY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCIgdi1iaW5kPVwiaXRlbVwiIDpbdWkuZm9ybUl0ZW0ucHJvcF09XCJrZXlcIiA6bGFiZWw9XCJpdGVtLnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2hfJyArIGtleV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2hfJyArIGtleV1cIiA6c2NvcGU9XCJ7IC4uLnNlYXJjaEV2ZW50Q29udGV4dFJlZiwga2V5IH1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uY29tcG9uZW50ICYmIGl0ZW0uY29tcG9uZW50LnNob3cgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6cmVmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZW5kZXJSZWZzW2l0ZW0ua2V5XSA9IGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwga2V5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1iaW5kPVwiaXRlbS5jb21wb25lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpbnB1dD1cIm9uSW5wdXQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZnMtc2VhcmNoLWJ1dHRvbnMgdi1pZj1cIiFjb21wdXRlZElzTXVsdGlMaW5lXCIgOmJ1dHRvbnM9XCJjb21wdXRlZEJ1dHRvbnNcIj48L2ZzLXNlYXJjaC1idXR0b25zPlxyXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxmcy1zZWFyY2gtYnV0dG9ucyB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiBjbGFzcz1cImZzLXNlYXJjaC1hY3Rpb25cIj5cclxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgPGZzLWJ1dHRvbiA6aWNvbj1cImNvbGxhcHNlID8gdWkuaWNvbnMuY2FyZXRVcCA6IHVpLmljb25zLmNhcmV0RG93blwiIEBjbGljaz1cInRvZ2dsZUNvbGxhcHNlXCIgLz5cclxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlYWN0aXZlLCByZWYsIFJlZiwgdW5yZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IGVhY2gsIGZvckVhY2gsIHNvcnRCeSwgZW50cmllcywgdW5zZXQsIHNldCwga2V5cywgZ2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xyXG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xyXG5pbXBvcnQgbG9nZ2VyIGZyb20gXCIuLi8uLi91dGlscy91dGlsLmxvZ1wiO1xyXG5pbXBvcnQgRnNTZWFyY2hCdXR0b25zIGZyb20gXCIuL2J1dHRvbnMudnVlXCI7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBCdXR0b25zUHJvcHMsIFNlYXJjaEV2ZW50Q29udGV4dCwgU2VhcmNoSXRlbVByb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xyXG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XHJcblxyXG4vKipcclxuICog5p+l6K+i5qGG57uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNTZWFyY2hWMVwiLFxyXG4gIGNvbXBvbmVudHM6IHsgRnNTZWFyY2hCdXR0b25zIH0sXHJcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDliJ3lp4vmn6Xor6LmnaHku7ZcclxuICAgICAqIOeCueWHu+mHjee9ru+8jOS8mumHjee9ruaIkOivpeadoeS7tlxyXG4gICAgICovXHJcbiAgICBpbml0aWFsRm9ybToge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOihqOWNleWPguaVsFxyXG4gICAgICog5pSv5oyBZWwtZm9ybSB8IGEtZm9ybeeahOWxnuaAp1xyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5p+l6K+i5a2X5q616YWN572uXHJcbiAgICAgKi9cclxuICAgIGNvbHVtbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiB0YWJzXHJcbiAgICAgKiB7IHNob3cgLCBvcHRpb25zLGtleSwgZGVmYXVsdH1cclxuICAgICAqL1xyXG4gICAgdGFiczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrumFjee9rizlj6/ku6XmoLnmja5vcmRlcuaOkuW6j1xyXG4gICAgICoge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19XHJcbiAgICAgKi9cclxuICAgIGJ1dHRvbnM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDngrnlh7vph43nva7lkI7mmK/lkKbnq4vljbPop6blj5Hmn6Xor6JcclxuICAgICAqL1xyXG4gICAgc2VhcmNoQWZ0ZXJSZXNldDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblvIDlkK/oh6rliqjmn6Xor6JcclxuICAgICAqL1xyXG4gICAgYXV0b1NlYXJjaDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDoh6rliqjmn6Xor6LvvIzpmLLmipborr7nva5cclxuICAgICAqIOS8oGZhbHNl5YiZ5YWz6Zet6Ieq5Yqo5p+l6K+iXHJcbiAgICAgKi9cclxuICAgIGRlYm91bmNlOiB7XHJcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaPkuanvVxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5pi+56S65p+l6K+i5qGGXHJcbiAgICAgKi9cclxuICAgIHNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5ZCv55So5qCh6aqMXHJcbiAgICAgKi9cclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDluIPlsYAsIHNpbmdsZS1saW5lIOWNleihjO+8jCBtdWx0aS1saW5lIOWkmuihjO+8iOaUr+aMgeWxleW8gOaUtui1t++8iVxyXG4gICAgICovXHJcbiAgICBsYXlvdXQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBcInNpbmdsZS1saW5lXCJcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWIl+eahOWuveW6puiuvue9ru+8jHNwYW49eHhcclxuICAgICAqL1xyXG4gICAgY29sOiB7fSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuaKmOWPoFxyXG4gICAgICovXHJcbiAgICBjb2xsYXBzZToge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5p+l6K+i5LqL5Lu2XHJcbiAgICAgKiovXHJcbiAgICBcInNlYXJjaFwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDph43nva7kuovku7ZcclxuICAgICAqKi9cclxuICAgIFwicmVzZXRcIixcclxuICAgIFwiY29sbGFwc2VcIixcclxuICAgIFwidXBkYXRlOmNvbGxhcHNlXCJcclxuICBdLFxyXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICAvLyDlvILmraVzZXR1cOmcgOimgeaUvuWcqOesrOS4gOS4qmF3YWl05LmL5YmNXHJcbiAgICAvLyBvbk1vdW50ZWQgaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBhc3NvY2lhdGVkIHdpdGguXHJcbiAgICAvL+S4uuWVpeS8muaciei/meS4quitpuWRilxyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgaWYgKGNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgJiYgY29sdW1uc1Jvd1JlZi52YWx1ZSkge1xyXG4gICAgICAgIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgY29sdW1uc0xpc3QgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5jaGlsZHJlbjtcclxuICAgICAgICBpZiAoY29sdW1uc0xpc3QgJiYgY29sdW1uc0xpc3QubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zTGlzdFsxXS5vZmZzZXRIZWlnaHQgKyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGF1dG9TZWFyY2g6IGFueSA9IG51bGw7XHJcbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiBjbG9uZURlZXAocHJvcHMuaW5pdGlhbEZvcm0gfHwge30pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZm9ybSA9IHJlYWN0aXZlKGNyZWF0ZUluaXRpYWxGb3JtKCkpO1xyXG4gICAgY29uc3QgeyBkb0NvbXB1dGVkLCBBc3luY0NvbXB1dGVWYWx1ZSB9ID0gdXNlQ29tcHV0ZSgpO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlKSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJzZWFyY2gudmFsdWXphY3nva7kuI3mlK/mjIFBc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuICAgIGNvbnN0IGRvTWVyZ2UgPSBtZXJnZTtcclxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1ucyA9IGRvQ29tcHV0ZWQoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcclxuICAgICAgfSxcclxuICAgICAgZ2V0Q29udGV4dEZuLFxyXG4gICAgICBudWxsLFxyXG4gICAgICAodmFsdWUpID0+IHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAvL+WmguaenOWFs+mXrXZhbGlkYXRl5YiZ5Y675o6JcnVsZXNcclxuICAgICAgICAgIGZvckVhY2godmFsdWUsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnJ1bGVzO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWQiOW5tmNvbFxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmIChwcm9wcy5jb2wpIHtcclxuICAgICAgICAgIGZvckVhY2godmFsdWUsICh2KSA9PiB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB2LmNvbCA9IG1lcmdlKHt9LCBwcm9wcy5jb2wsIHYuY29sKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy/lrZfmrrXmjpLluo9cclxuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcclxuICAgICAgICBmb3JFYWNoKHZhbHVlLCAodiwga2V5KSA9PiB7XHJcbiAgICAgICAgICB2Ll9rZXkgPSBrZXk7XHJcbiAgICAgICAgICBzb3J0QXJyLnB1c2godik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uczoge1xyXG4gICAgICAgICAgW2tleTogc3RyaW5nXTogU2VhcmNoSXRlbVByb3BzO1xyXG4gICAgICAgIH0gPSB7fTtcclxuXHJcbiAgICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcclxuICAgICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XHJcbiAgICAgICAgICBzb3J0ZWRDb2x1bW5zW19rZXldID0gaXRlbTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc29ydGVkQ29sdW1ucztcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvL+m7mOiupOWAvFxyXG4gICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsIChjb2x1bW4sIGtleSkgPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihjb2x1bW4udmFsdWUpO1xyXG4gICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uc2hvdyAhPT0gZmFsc2UgJiYgY29sdW1uLmNvbXBvbmVudD8uc2hvdyAhPT0gZmFsc2UpIHtcclxuICAgICAgICAvL+m7mOiupOWAvFxyXG4gICAgICAgIGZvcm1ba2V5XSA9IGRlZlZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1SZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVuZGVyUmVmczogUmVmID0gcmVmKHt9KTtcclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRSZW5kZXJSZWYoa2V5KT8uJHJlZnM/LnRhcmdldFJlZjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKTogU2VhcmNoRXZlbnRDb250ZXh0IHtcclxuICAgICAgcmV0dXJuIHsgZm9ybSwgdmFsaWRhdGVkRm9ybTogZm9ybSwgZ2V0Q29tcG9uZW50UmVmLCBkb1ZhbGlkYXRlOiBudWxsIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoRXZlbnRDb250ZXh0UmVmOiBSZWY8U2VhcmNoRXZlbnRDb250ZXh0PiA9IHJlZihnZXRDb250ZXh0Rm4oKSk7XHJcblxyXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9TZWFyY2goKSB7XHJcbiAgICAgIGlmIChhdXRvU2VhcmNoKSB7XHJcbiAgICAgICAgLy8g6Ziy5oqW5p+l6K+i5Y+W5raIXHJcbiAgICAgICAgYXV0b1NlYXJjaC5jYW5jZWwoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB1aS5mb3JtLnZhbGlkYXRlV3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlKTtcclxuICAgICAgaWYgKHZhbGlkKSB7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJzZWFyY2hcIiwgc2VhcmNoRXZlbnRDb250ZXh0UmVmLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1aS5tZXNzYWdlLmVycm9yKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHQoXCJmcy5zZWFyY2guZXJyb3IubWVzc2FnZVwiKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRvUmVzZXQoKSB7XHJcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XHJcbiAgICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcclxuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybSk7XHJcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllc1JldCkge1xyXG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xyXG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdW5zZXQoZm9ybSwgZW50cnlbMF0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXQoZm9ybSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICBpZiAocHJvcHMucmVzZXQpIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBwcm9wcy5yZXNldChzZWFyY2hFdmVudENvbnRleHRSZWYudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOihqOWNlemHjee9ruS6i+S7tlxyXG4gICAgICBjdHguZW1pdChcInJlc2V0XCIsIGdldENvbnRleHRGbigpKTtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XHJcbiAgICAgICAgbmV4dFRpY2soKCkgPT4ge1xyXG4gICAgICAgICAgZG9TZWFyY2goKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBidG5zOiBhbnkgPSBbXTtcclxuICAgICAgY29uc3QgZGVmQnRuT3B0aW9uczogQnV0dG9uc1Byb3BzPFNlYXJjaEV2ZW50Q29udGV4dD4gPSB7XHJcbiAgICAgICAgc2VhcmNoOiB7XHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBkb1NlYXJjaCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5zZWFyY2gudGV4dFwiKSAvLyAn5p+l6K+iJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0OiB7XHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgZG9SZXNldCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2gucmVzZXQudGV4dFwiKSwgLy8gJ+mHjee9ricsXHJcbiAgICAgICAgICBvcmRlcjogMlxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIG1lcmdlKGRlZkJ0bk9wdGlvbnMsIHByb3BzLmJ1dHRvbnMpO1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGVmQnRuT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGJ0biA9IGRlZkJ0bk9wdGlvbnNba2V5XTtcclxuICAgICAgICBidG4uX2NsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgYnRuLmNsaWNrKGdldENvbnRleHRGbigpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJ0bnMucHVzaChidG4pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidG5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGJ0bnM7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBpbml0QXV0b1NlYXJjaCgpIHtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmIChwcm9wcy5hdXRvU2VhcmNoID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyDmnoTlu7rpmLLmipbmn6Xor6Llh73mlbBcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGlmIChwcm9wcy5kZWJvdW5jZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBhdXRvU2VhcmNoID0gZGVib3VuY2UoZG9TZWFyY2gsIHdhaXQsIHByb3BzLmRlYm91bmNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXRBdXRvU2VhcmNoKCk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcclxuICAgICAgcmV0dXJuIGZvcm07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5mb3Jt5YC8XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHNldEZvcm0obmV3Rm9ybTogYW55LCBtZXJnZSA9IHRydWUpIHtcclxuICAgICAgaWYgKCFtZXJnZSkge1xyXG4gICAgICAgIGVhY2goa2V5cyhmb3JtKSwgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGRlbGV0ZSBmb3JtW2l0ZW1dO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRvTWVyZ2UoZm9ybSwgbmV3Rm9ybSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBkb0F1dG9TZWFyY2ggPSAoKSA9PiB7XHJcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcclxuICAgICAgaWYgKGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSAhPT0gdHJ1ZSAmJiBhdXRvU2VhcmNoKSB7XHJcbiAgICAgICAgLy8g6Ziy5oqW5p+l6K+iXHJcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uSW5wdXQgPSAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImlucHV0XCIpIHtcclxuICAgICAgICBkb0F1dG9TZWFyY2goKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIOi+k+WFpeazleebkeWQrFxyXG4gICAgY29uc3QgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkID0gKGRpc2FibGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSA9IGRpc2FibGVkO1xyXG4gICAgICBkb0F1dG9TZWFyY2goKTtcclxuICAgIH07XHJcblxyXG4gICAgZnVuY3Rpb24gb25WYWx1ZUNoYW5nZWQodmFsdWU6IGFueSwgaXRlbTogU2VhcmNoSXRlbVByb3BzKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xyXG4gICAgICBzZXQoZm9ybSwga2V5LCB2YWx1ZSk7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtW2tleV07XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gZ2V0Q29tcG9uZW50UmVmKGtleSk7XHJcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UgPSBpdGVtLnZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBpdGVtLnZhbHVlQ2hhbmdlIDogaXRlbS52YWx1ZUNoYW5nZS5oYW5kbGU7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgdmFsdWVDaGFuZ2UoeyBrZXksIHZhbHVlLCBjb21wb25lbnRSZWYsIC4uLmdldENvbnRleHRGbigpLCBpbW1pZGlhdGU6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09IG51bGwgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gdHJ1ZSB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImNoYW5nZVwiKSB7XHJcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wdXRlZFJ1bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHByb3BzLm9wdGlvbnMucnVsZXM7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLy0tLS0t5aSa6KGM5qih5byP5oqY5Y+gXHJcblxyXG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xyXG4gICAgY29uc3QgY29sdW1uc0JveEhlaWdodFJlZiA9IHJlZigwKTtcclxuICAgIGNvbnN0IGNvbHVtbnNMaW5lSGVpZ2h0UmVmID0gcmVmKDApO1xyXG5cclxuICAgIGNvbnN0IHRvZ2dsZUNvbGxhcHNlID0gKCkgPT4ge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcclxuICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgIGN0eC5lbWl0KFwiY29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRDb2xOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgaWYgKHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCIpIHtcclxuICAgICAgICByZXR1cm4gdWkuY29sLm5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiZGl2XCI7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gcHJvcHMubGF5b3V0ID09PSBcIm11bHRpLWxpbmVcIjtcclxuICAgICAgLy/kuI3opoHov5nkuKrvvIzkvJrmrbvlvqrnjq/vvIwgJiYgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA+IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmICghY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBcImF1dG9cIjtcclxuICAgICAgfVxyXG4gICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgaWYgKHByb3BzLmNvbGxhcHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldDogKGZvcm06IGFueSwga2V5OiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gZ2V0KGZvcm0sIGtleSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHVpLFxyXG4gICAgICBvblZhbHVlQ2hhbmdlZCxcclxuICAgICAgZG9TZWFyY2gsXHJcbiAgICAgIGRvUmVzZXQsXHJcbiAgICAgIGZvcm0sXHJcbiAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMsXHJcbiAgICAgIGdldENvbXBvbmVudFJlbmRlclJlZixcclxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxyXG4gICAgICBnZXRGb3JtLFxyXG4gICAgICBzZXRGb3JtLFxyXG4gICAgICBzZWFyY2hGb3JtUmVmLFxyXG4gICAgICBvbklucHV0LFxyXG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQsXHJcbiAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCxcclxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxyXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXHJcbiAgICAgIGNvbXB1dGVkUnVsZXMsXHJcbiAgICAgIGNvbHVtbnNSb3dSZWYsXHJcbiAgICAgIGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0LFxyXG4gICAgICBjb21wdXRlZENvbE5hbWUsXHJcbiAgICAgIGNvbXB1dGVkSXNNdWx0aUxpbmUsXHJcbiAgICAgIHRvZ2dsZUNvbGxhcHNlLFxyXG4gICAgICBzZWFyY2hFdmVudENvbnRleHRSZWZcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtc2VhcmNoIHtcclxuICAvL2Rpc3BsYXk6IGZsZXg7XHJcbiAgLy9mbGV4LXdyYXA6IG5vd3JhcDtcclxuICAuc2VhcmNoLWxlZnQge1xyXG4gIH1cclxuICAuc2VhcmNoLXJpZ2h0IHtcclxuICAgIGZsZXg6IDE7XHJcbiAgfVxyXG4gIC5hbnQtZm9ybS1pbmxpbmUge1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gIH1cclxuICAuZnMtc2VhcmNoLWZvcm0ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAvLyYgPiAqIHtcclxuICAgIC8vICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICAvLyAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgLy8gIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgIC8vfVxyXG5cclxuICAgIC5mcy1zZWFyY2gtYm94IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC5mcy1zZWFyY2gtY29sIHtcclxuICAgICAgJiA+ICoge1xyXG4gICAgICAgIG1hcmdpbjogMHB4IDVweDtcclxuICAgICAgfVxyXG4gICAgICBtYXJnaW46IDFweCAwO1xyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5lbC1mb3JtLWl0ZW0ge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuZWwtZm9ybS0taW5saW5lIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5mcy1zZWFyY2gtYnRucyB7XHJcbiAgICAuZnMtYnV0dG9uIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmZzLXNlYXJjaC1tdWx0aS1saW5lIHtcclxuICAgIC5mcy1zZWFyY2gtYm94IHtcclxuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIC5mcy1zZWFyY2gtY29sdW1ucyB7XHJcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgICAvLyB0cmFuc2l0aW9uOiBhbGwgMC4zcyBsaW5lYXI7XHJcbiAgICAgICAgICAvLyB3aWxsLWNoYW5nZTogaGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAuZnMtc2VhcmNoLWJ0bnMge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgICAgICAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcclxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuZnMtc2VhcmNoLWFjdGlvbiB7XHJcbiAgICAgIC5hbnQtZm9ybS1pdGVtIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmZzLXNlYXJjaCB7XHJcbiAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHRcIiA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtbXVsdGktbGluZSc6IGNvbXB1dGVkSXNNdWx0aUxpbmUgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1ib3hcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLW1haW5cIlxyXG4gICAgICAgIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1jb2xsYXBzZSc6IGNvbGxhcHNlIH1cIlxyXG4gICAgICAgIDpzdHlsZT1cInsgbWF4SGVpZ2h0OiBjb21wdXRlZENvbHVtbkJveEhlaWdodCB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiByZWY9XCJjb2x1bW5zUm93UmVmXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sdW1uc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1zbG90XCI+XHJcbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtbGVmdFwiPjwvc2xvdD5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwhLS0g5p+l6K+i5a2X5q61cmVuZGVy77yM6ZyA6KaB5a6a5LmJcHJvcHMuY29sdW1ucyAtLT5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIG9mIGNvbHVtbnNcIiA6a2V5PVwia2V5XCI+XHJcbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sLm5hbWVcIiB2LWlmPVwiaXRlbS5zaG93XCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCIgdi1iaW5kPVwibWVyZ2VDb2woaXRlbS5jb2wpXCI+XHJcbiAgICAgICAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJpdGVtLl9jZWxsUmVuZGVyXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxyXG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1taWRkbGVcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgIDppcz1cInVpLmNvbC5uYW1lXCJcclxuICAgICAgICAgICAgdi1pZj1cIiFjb21wdXRlZElzTXVsdGlMaW5lXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1idXR0b25zLWdyb3VwXCJcclxuICAgICAgICAgICAgdi1iaW5kPVwibWVyZ2VDb2woYWN0aW9uPy5jb2wpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCIgOlt1aS5mb3JtSXRlbS5sYWJlbF09XCJhY3Rpb24/LmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSDmn6Xor6LmjInpkq7mj5Lmp70tLT5cclxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWJ1dHRvbnNcIiB2LWJpbmQ9XCJnZXRDb250ZXh0Rm4oKVwiPjwvc2xvdD5cclxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLXJpZ2h0XCIgdi1iaW5kPVwiZ2V0Q29udGV4dEZuKClcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgY2xhc3M9XCJmcy1zZWFyY2gtYnV0dG9ucy1ncm91cCBmcy1zZWFyY2gtbXVsdGktbGluZS1idXR0b25zXCI+XHJcbiAgICAgICAgPCEtLSDlpJrooYzmqKHlvI/ml7bnmoTmn6Xor6LmjInpkq4tLT5cclxuICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWJ1dHRvbnNcIj48L3Nsb3Q+XHJcbiAgICAgICAgPGZzLWJ1dHRvblxyXG4gICAgICAgICAgdi1pZj1cImNvbGxhcHNlQnV0dG9uPy5zaG93ICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICA6aWNvbj1cImNvbGxhcHNlID8gdWkuaWNvbnMuY2FyZXREb3duIDogdWkuaWNvbnMuY2FyZXRVcFwiXHJcbiAgICAgICAgICA6dGV4dD1cIlxyXG4gICAgICAgICAgICBjb2xsYXBzZVxyXG4gICAgICAgICAgICAgID8gdCgnZnMuc2VhcmNoLmNvbnRhaW5lci5jb2xsYXBzZUJ1dHRvbi50ZXh0LmV4cGFuZCcpXHJcbiAgICAgICAgICAgICAgOiB0KCdmcy5zZWFyY2guY29udGFpbmVyLmNvbGxhcHNlQnV0dG9uLnRleHQuY29sbGFwc2UnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHYtYmluZD1cImNvbGxhcHNlQnV0dG9uXCJcclxuICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUNvbGxhcHNlXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgb25Nb3VudGVkLCByZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzU2VhcmNoTGF5b3V0RGVmYXVsdFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuaUtue8qVxyXG4gICAgICovXHJcbiAgICBjb2xsYXBzZToge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlsZXlvIDmjInpkq5cclxuICAgICAqL1xyXG4gICAgY29sbGFwc2VCdXR0b246IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG5cclxuICAgIGFjdGlvbjoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOW4g+WxgOaooeW8j1xyXG4gICAgICovXHJcbiAgICBsYXlvdXQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBcInNpbmdsZS1saW5lXCJcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOafpeivouWtl+auteWIl+ihqO+8jOWPr+S7peeyvue7huWMluiHquWumuS5ieafpeivouWtl+auteW4g+WxgFxyXG4gICAgICovXHJcbiAgICBjb2x1bW5zOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6buY6K6k55qEY29s6YWN572uXHJcbiAgICAgKi9cclxuICAgIGNvbDoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5bmn6Xor6LkuIrkuIvmlodcclxuICAgICAqL1xyXG4gICAgZ2V0Q29udGV4dEZuOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1widXBkYXRlOmNvbGxhcHNlXCIsIFwiY29sbGFwc2VcIl0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xyXG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRJc011bHRpTGluZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCI7XHJcbiAgICAgIC8v5LiN6KaB6L+Z5Liq77yM5Lya5q275b6q546v77yMICYmIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZTtcclxuICAgIH0pO1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgaWYgKGNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgJiYgY29sdW1uc1Jvd1JlZi52YWx1ZSkge1xyXG4gICAgICAgIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgfHwgIXByb3BzLmNvbGxhcHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiYXV0b1wiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjb2x1bW5zQm94SGVpZ2h0UmVmID0gcmVmKDApO1xyXG5cclxuICAgIGNvbnN0IHRvZ2dsZUNvbGxhcHNlID0gKCkgPT4ge1xyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTpjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xyXG4gICAgICBjdHguZW1pdChcImNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIG1lcmdlQ29sKGNvbDogYW55KSB7XHJcbiAgICAgIHJldHVybiBtZXJnZSh7fSwgcHJvcHMuY29sLCBjb2wpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBjb2x1bW5zUm93UmVmLFxyXG4gICAgICBjb21wdXRlZENvbHVtbkJveEhlaWdodCxcclxuICAgICAgY29tcHV0ZWRJc011bHRpTGluZSxcclxuICAgICAgdG9nZ2xlQ29sbGFwc2UsXHJcbiAgICAgIG1lcmdlQ29sLFxyXG4gICAgICB0XHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcblxyXG4gIC5mcy1zZWFyY2gtYm94IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgLmZzLXNlYXJjaC1tYWluIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuXHJcbiAgICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5mcy1zZWFyY2gtY29sdW1ucyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIHBhZGRpbmc6IDRweCAwIDRweCAwO1xyXG5cclxuICAgICAgICAuZnMtc2VhcmNoLWNvbCB7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xyXG4gICAgICAgICAgJi5mcy1zZWFyY2gtc2xvdCB7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICYgPiAqIHtcclxuICAgICAgICAgICAgbWFyZ2luOiAwcHggNHB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIG1hcmdpbjogNHB4IDA7XHJcblxyXG4gICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcclxuICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmFudC1pbnB1dC1udW1iZXIsXHJcbiAgICAgICAgICAuYW50LXBpY2tlcixcclxuICAgICAgICAgIC5lbC1pbnB1dC1udW1iZXIsXHJcbiAgICAgICAgICAuZWwtY2FzY2FkZXIsXHJcbiAgICAgICAgICAuZWwtZGF0ZS1lZGl0b3IsXHJcbiAgICAgICAgICAubi1zZWxlY3QsXHJcbiAgICAgICAgICAubi1kYXRlLXBpY2tlcixcclxuICAgICAgICAgIC5uLWlucHV0LW51bWJlciB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5mcy1zZWFyY2gtYnV0dG9ucy1ncm91cCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAuZnMtYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDJweCAwIDJweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuZnMtc2VhcmNoLW11bHRpLWxpbmUge1xyXG4gICAgLmZzLXNlYXJjaC1ib3gge1xyXG4gICAgICAuZnMtc2VhcmNoLW1haW4ge1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2U7XHJcbiAgICAgICAgJi5mcy1zZWFyY2gtY29sbGFwc2Uge1xyXG4gICAgICAgICAgbWF4LWhlaWdodDogNDJweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5hbnQtZm9ybS1pdGVtIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIC5hbnQtZm9ybS1yb3cge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICAgIC5hbnQtZm9ybS1pdGVtLXJvdyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XHJcbiAgICAgICAgZmxleDogMTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWxheW91dC1kZWZhdWx0XCIgOmNsYXNzPVwieyAnZnMtc2VhcmNoLW11bHRpLWxpbmUnOiBjb21wdXRlZElzTXVsdGlMaW5lIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1tYWluXCJcclxuICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtY29sbGFwc2UnOiBjb2xsYXBzZSB9XCJcclxuICAgICAgICA6c3R5bGU9XCJ7IG1heEhlaWdodDogY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgcmVmPVwiY29sdW1uc1Jvd1JlZlwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxyXG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWxlZnRcIj48L3Nsb3Q+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8IS0tIOafpeivouWtl+autXJlbmRlcu+8jOmcgOimgeWumuS5iXByb3BzLmNvbHVtbnMgLS0+XHJcbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBvZiBjb2x1bW5zXCIgOmtleT1cImtleVwiPlxyXG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbC5uYW1lXCIgdi1pZj1cIml0ZW0uc2hvd1wiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIm1lcmdlQ29sKGl0ZW0uY29sKVwiPlxyXG4gICAgICAgICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaXRlbS5fY2VsbFJlbmRlclwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cclxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1zbG90XCI+XHJcbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtbWlkZGxlXCI+PC9zbG90PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGNvbXBvbmVudFxyXG4gICAgICAgICAgICA6aXM9XCJ1aS5jb2wubmFtZVwiXHJcbiAgICAgICAgICAgIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtYnV0dG9ucy1ncm91cFwiXHJcbiAgICAgICAgICAgIHYtYmluZD1cIm1lcmdlQ29sKGFjdGlvbj8uY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiIDpbdWkuZm9ybUl0ZW0ubGFiZWxdPVwiYWN0aW9uPy5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDwhLS0g5p+l6K+i5oyJ6ZKu5o+S5qe9LS0+XHJcbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1idXR0b25zXCIgdi1iaW5kPVwiZ2V0Q29udGV4dEZuKClcIj48L3Nsb3Q+XHJcbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cclxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1yaWdodFwiIHYtYmluZD1cImdldENvbnRleHRGbigpXCI+PC9zbG90PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXAgZnMtc2VhcmNoLW11bHRpLWxpbmUtYnV0dG9uc1wiPlxyXG4gICAgICAgIDwhLS0g5aSa6KGM5qih5byP5pe255qE5p+l6K+i5oyJ6ZKuLS0+XHJcbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1idXR0b25zXCI+PC9zbG90PlxyXG4gICAgICAgIDxmcy1idXR0b25cclxuICAgICAgICAgIHYtaWY9XCJjb2xsYXBzZUJ1dHRvbj8uc2hvdyAhPT0gZmFsc2VcIlxyXG4gICAgICAgICAgOmljb249XCJjb2xsYXBzZSA/IHVpLmljb25zLmNhcmV0RG93biA6IHVpLmljb25zLmNhcmV0VXBcIlxyXG4gICAgICAgICAgOnRleHQ9XCJcclxuICAgICAgICAgICAgY29sbGFwc2VcclxuICAgICAgICAgICAgICA/IHQoJ2ZzLnNlYXJjaC5jb250YWluZXIuY29sbGFwc2VCdXR0b24udGV4dC5leHBhbmQnKVxyXG4gICAgICAgICAgICAgIDogdCgnZnMuc2VhcmNoLmNvbnRhaW5lci5jb2xsYXBzZUJ1dHRvbi50ZXh0LmNvbGxhcHNlJylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICB2LWJpbmQ9XCJjb2xsYXBzZUJ1dHRvblwiXHJcbiAgICAgICAgICBAY2xpY2s9XCJ0b2dnbGVDb2xsYXBzZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG9uTW91bnRlZCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1NlYXJjaExheW91dERlZmF1bHRcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbmlLbnvKlcclxuICAgICAqL1xyXG4gICAgY29sbGFwc2U6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5bGV5byA5oyJ6ZKuXHJcbiAgICAgKi9cclxuICAgIGNvbGxhcHNlQnV0dG9uOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdFxyXG4gICAgfSxcclxuXHJcbiAgICBhY3Rpb246IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDluIPlsYDmqKHlvI9cclxuICAgICAqL1xyXG4gICAgbGF5b3V0OiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogXCJzaW5nbGUtbGluZVwiXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmn6Xor6LlrZfmrrXliJfooajvvIzlj6/ku6Xnsr7nu4bljJboh6rlrprkuYnmn6Xor6LlrZfmrrXluIPlsYBcclxuICAgICAqL1xyXG4gICAgY29sdW1uczoge1xyXG4gICAgICB0eXBlOiBPYmplY3RcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOm7mOiupOeahGNvbOmFjee9rlxyXG4gICAgICovXHJcbiAgICBjb2w6IHtcclxuICAgICAgdHlwZTogT2JqZWN0XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+W5p+l6K+i5LiK5LiL5paHXHJcbiAgICAgKi9cclxuICAgIGdldENvbnRleHRGbjoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvblxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcInVwZGF0ZTpjb2xsYXBzZVwiLCBcImNvbGxhcHNlXCJdLFxyXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IGNvbHVtbnNSb3dSZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiO1xyXG4gICAgICAvL+S4jeimgei/meS4qu+8jOS8muatu+W+queOr++8jCAmJiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID4gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWU7XHJcbiAgICB9KTtcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlICYmIGNvbHVtbnNSb3dSZWYudmFsdWUpIHtcclxuICAgICAgICBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlZENvbHVtbkJveEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgaWYgKCFjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlIHx8ICFwcm9wcy5jb2xsYXBzZSkge1xyXG4gICAgICAgIHJldHVybiBcImF1dG9cIjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29sdW1uc0JveEhlaWdodFJlZiA9IHJlZigwKTtcclxuXHJcbiAgICBjb25zdCB0b2dnbGVDb2xsYXBzZSA9ICgpID0+IHtcclxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcclxuICAgICAgY3R4LmVtaXQoXCJjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICBmdW5jdGlvbiBtZXJnZUNvbChjb2w6IGFueSkge1xyXG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLmNvbCwgY29sKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1aSxcclxuICAgICAgY29sdW1uc1Jvd1JlZixcclxuICAgICAgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQsXHJcbiAgICAgIGNvbXB1dGVkSXNNdWx0aUxpbmUsXHJcbiAgICAgIHRvZ2dsZUNvbGxhcHNlLFxyXG4gICAgICBtZXJnZUNvbCxcclxuICAgICAgdFxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHQge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAuZnMtc2VhcmNoLWJveCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgIC5mcy1zZWFyY2gtbWFpbiB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgICAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZnMtc2VhcmNoLWNvbHVtbnMge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBwYWRkaW5nOiA0cHggMCA0cHggMDtcclxuXHJcbiAgICAgICAgLmZzLXNlYXJjaC1jb2wge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAxODBweDtcclxuICAgICAgICAgICYuZnMtc2VhcmNoLXNsb3Qge1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMHB4IDRweDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBtYXJnaW46IDRweCAwO1xyXG5cclxuICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5hbnQtaW5wdXQtbnVtYmVyLFxyXG4gICAgICAgICAgLmFudC1waWNrZXIsXHJcbiAgICAgICAgICAuZWwtaW5wdXQtbnVtYmVyLFxyXG4gICAgICAgICAgLmVsLWNhc2NhZGVyLFxyXG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yLFxyXG4gICAgICAgICAgLm4tc2VsZWN0LFxyXG4gICAgICAgICAgLm4tZGF0ZS1waWNrZXIsXHJcbiAgICAgICAgICAubi1pbnB1dC1udW1iZXIge1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2ljb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2Nsb3NlLWljb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgLmZzLWJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAycHggMCAycHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmZzLXNlYXJjaC1tdWx0aS1saW5lIHtcclxuICAgIC5mcy1zZWFyY2gtYm94IHtcclxuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlO1xyXG4gICAgICAgICYuZnMtc2VhcmNoLWNvbGxhcHNlIHtcclxuICAgICAgICAgIG1heC1oZWlnaHQ6IDQycHggIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYW50LWZvcm0taXRlbSB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAuYW50LWZvcm0tcm93IHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgICAuYW50LWZvcm0taXRlbS1yb3cge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzVGFic0ZpbHRlclwiLFxyXG4gIGluaGVyaXRBdHRyczogZmFsc2VcclxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtdGFicy1maWx0ZXJcIj5cclxuICAgIDxjb21wb25lbnQgOmlzPVwidWkudGFicy5uYW1lXCIgdi1iaW5kPVwiYmluZGluZ1wiPlxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkudGFiUGFuZS5uYW1lXCJcclxuICAgICAgICB2LWlmPVwiZGVmYXVsdE9wdGlvbi5zaG93XCJcclxuICAgICAgICA6W3VpLnRhYlBhbmUua2V5XT1cIl9fREVGQVVMVF9fXCJcclxuICAgICAgICA6W3VpLnRhYlBhbmUudGFiXT1cImRlZmF1bHRPcHRpb24ubGFiZWxcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgOmlzPVwidWkudGFiUGFuZS5uYW1lXCJcclxuICAgICAgICB2LWZvcj1cIihpdGVtLCBpbmRleCkgb2Ygb3B0aW9uc1wiXHJcbiAgICAgICAgOmtleT1cImluZGV4XCJcclxuICAgICAgICA6W3VpLnRhYlBhbmUua2V5XT1cImdldFZhbHVlKGl0ZW0pXCJcclxuICAgICAgICA6W3VpLnRhYlBhbmUudGFiXT1cImdldExhYmVsKGl0ZW0pXCJcclxuICAgICAgLz5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgdXNlQXR0cnMgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuO1xyXG5cclxudHlwZSBUYWJzRmlsdGVyRGVmYXVsdE9wdGlvbiA9IHsgc2hvdz86IGJvb2xlYW47IHZhbHVlPzogYW55OyBsYWJlbD86IHN0cmluZyB9O1xyXG50eXBlIFRhYnNGaWx0ZXJPcHRpb24gPSB7IHZhbHVlOiBhbnk7IGxhYmVsOiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG5pbnRlcmZhY2UgVGFic0ZpbHRlclByb3BzIHtcclxuICBuYW1lOiBzdHJpbmc7IC8v5p+l6K+i5a2X5q6155qEa2V5LHNlYXJjaOWPguaVsGtleVxyXG4gIHNob3c/OiBib29sZWFuO1xyXG4gIGRlZmF1bHRPcHRpb24/OiBUYWJzRmlsdGVyRGVmYXVsdE9wdGlvbjtcclxuICBvcHRpb25zOiBUYWJzRmlsdGVyT3B0aW9uW107XHJcbiAgbW9kZWxWYWx1ZTogYW55O1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG59XHJcblxyXG5jb25zdCBhdHRycyA9IHVzZUF0dHJzKCk7XHJcbmNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XHJcbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFRhYnNGaWx0ZXJQcm9wcz4oKSwge1xyXG4gIHNob3c6IGZhbHNlLFxyXG4gIHZhbHVlOiBcInZhbHVlXCIsXHJcbiAgbGFiZWw6IFwibGFiZWxcIixcclxuICBkZWZhdWx0T3B0aW9uOiB1bmRlZmluZWQsXHJcbiAgb3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxufSk7XHJcblxyXG5jb25zdCBkZWZhdWx0T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IGRlZiA9IHtcclxuICAgIHNob3c6IHRydWUsXHJcbiAgICB2YWx1ZTogbnVsbCxcclxuICAgIGxhYmVsOiB0KFwiZnMuc2VhcmNoLnRhYnMuYWxsXCIpXHJcbiAgfSBhcyBUYWJzRmlsdGVyRGVmYXVsdE9wdGlvbjtcclxuICByZXR1cm4gbWVyZ2UoZGVmLCBwcm9wcy5kZWZhdWx0T3B0aW9uIHx8IHt9KTtcclxufSk7XHJcblxyXG5jb25zdCBfX0RFRkFVTFRfXyA9IFwiX2RlZmF1bHRfa2V5X1wiO1xyXG5jb25zdCBiaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IHZhbHVlID1cclxuICAgIHByb3BzLm1vZGVsVmFsdWUgPT0gbnVsbCB8fCBwcm9wcy5tb2RlbFZhbHVlID09PSBkZWZhdWx0T3B0aW9uLnZhbHVlLnZhbHVlID8gX19ERUZBVUxUX18gOiBwcm9wcy5tb2RlbFZhbHVlO1xyXG4gIHJldHVybiB7XHJcbiAgICB0eXBlOiBcImNhcmRcIixcclxuICAgIC4uLmF0dHJzLFxyXG4gICAgW3VpLnRhYnMubW9kZWxWYWx1ZV06IHZhbHVlLFxyXG4gICAgW1wib25VcGRhdGU6XCIgKyB1aS50YWJzLm1vZGVsVmFsdWVdOiBvblVwZGF0ZUFjdGl2ZUtleVxyXG4gIH07XHJcbn0pO1xyXG5cclxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcInVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiY2hhbmdlXCJdKTtcclxuXHJcbmZ1bmN0aW9uIG9uVXBkYXRlQWN0aXZlS2V5KHZhbHVlOiBhbnkpIHtcclxuICBpZiAoX19ERUZBVUxUX18gPT09IHZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IGRlZmF1bHRPcHRpb24udmFsdWUudmFsdWU7XHJcbiAgfVxyXG4gIGNvbnN0IG9sZFZhbHVlID0gcHJvcHMubW9kZWxWYWx1ZTtcclxuICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xyXG4gIGlmIChvbGRWYWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgIGVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0VmFsdWUob3B0aW9uOiBUYWJzRmlsdGVyT3B0aW9uKSB7XHJcbiAgcmV0dXJuIG9wdGlvbltwcm9wcy52YWx1ZV07XHJcbn1cclxuZnVuY3Rpb24gZ2V0TGFiZWwob3B0aW9uOiBUYWJzRmlsdGVyT3B0aW9uKSB7XHJcbiAgcmV0dXJuIG9wdGlvbltwcm9wcy5sYWJlbF07XHJcbn1cclxuXHJcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbmNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG4uZnMtdGFicy1maWx0ZXIge1xyXG4gIG1hcmdpbjogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICAvL3dpZHRoOiAxMDAlO1xyXG4gIC5hbnQtdGFicyA+IC5hbnQtdGFicy1uYXYsXHJcbiAgLmFudC10YWJzID4gZGl2ID4gLmFudC10YWJzLW5hdiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxuXHJcbiAgLmVsLXRhYnMtLWNhcmQgPiAuZWwtdGFic19faGVhZGVyIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG5cclxuICAubi10YWItcGFuZSB7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNJY29uU2VsZWN0b3JcIlxyXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJmcy1pY29uLXNlbGVjdG9yXCI+XHJcbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmlucHV0Lm5hbWVcIiB2LWJpbmQ9XCJpbnB1dEJpbmRpbmdcIiBjbGFzcz1cImZzLWljb24tc2VsZWN0b3Itc2VhcmNoXCIgQGNsaWNrPVwiaGFuZGxlT3BlblwiPlxyXG4gICAgICA8dGVtcGxhdGUgI3ByZWZpeD5cclxuICAgICAgICA8ZnMtaWNvbiB2LWlmPVwibW9kZWxWYWx1ZVwiIGNsYXNzPVwiZnMtaWNvbi1zZWxlY3Rvci1pbnB1dC1wcmVmaXhcIiA6aWNvbj1cIm1vZGVsVmFsdWVcIj48L2ZzLWljb24+XHJcbiAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8L2NvbXBvbmVudD5cclxuXHJcbiAgICA8ZGl2IHYtaWY9XCJkaWFsb2dPcGVuZWRcIiBjbGFzcz1cImZzLWljb24tc2VsZWN0b3ItZGlhbG9nXCI+XHJcbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZGlhbG9nLm5hbWVcIiBwcmVzZXQ9XCJkaWFsb2dcIiB0aXRsZT1cIumAieaLqeWbvuagh1wiIHYtYmluZD1cImNvbXB1dGVkRGlhbG9nXCIgOmZvb3Rlcj1cIm51bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaWNvbi1zZWxlY3Rvci1kaWFsb2ctY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tdGFicy1ib3ggbXQtMTBcIj5cclxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS50YWJzLm5hbWVcIiB2LWJpbmQ9XCJjb21wdXRlVGFic1wiIHR5cGU9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS50YWJQYW5lLm5hbWVcIiBrZXk9XCJhbGxcIiA6W3VpLnRhYlBhbmUua2V5XT1cIidhbGwnXCIgOlt1aS50YWJQYW5lLnRhYl09XCIn5YWo6YOoJ1wiPlxyXG4gICAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgICAgICAgIDppcz1cInVpLnRhYlBhbmUubmFtZVwiXHJcbiAgICAgICAgICAgICAgICB2LWZvcj1cInNldCBvZiBpY29uU2V0c1wiXHJcbiAgICAgICAgICAgICAgICA6a2V5PVwic2V0XCJcclxuICAgICAgICAgICAgICAgIDpbdWkudGFiUGFuZS5rZXldPVwic2V0XCJcclxuICAgICAgICAgICAgICAgIDpbdWkudGFiUGFuZS50YWJdPVwic2V0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ib3hcIj5cclxuICAgICAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICA6aXM9XCJ1aS5pbnB1dC5uYW1lXCJcclxuICAgICAgICAgICAgICAgIHYtbW9kZWw6W3VpLmlucHV0Lm1vZGVsVmFsdWVdPVwic2VhcmNoS2V5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5pCc57Si5Zu+5qCHLCDlj4zlh7vpgInmi6lcIlxyXG4gICAgICAgICAgICAgICAgQGtleWRvd24uZW50ZXI9XCJoYW5kbGVTZWFyY2hcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjc3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICA8ZnMtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgc2l6ZT1cInNtYWxsXCIgOmljb249XCJ1aS5pY29ucy5zZWFyY2hcIiBAY2xpY2s9XCJoYW5kbGVTZWFyY2hcIj48L2ZzLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAg5Zu+5qCH6aKc6Imy77yaXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwiY29sb3JJdGVtIGluIGNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJjb2xvckl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7IGFjdGl2ZTogY29sb3JJdGVtID09PSBjdXJyZW50Q29sb3IgfVwiXHJcbiAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInsgYmFja2dyb3VuZENvbG9yOiBjb2xvckl0ZW0gfVwiXHJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNvbG9yQ2hhbmdlKGNvbG9ySXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBjb2xvckl0ZW0gPyBcIlwiIDogXCLml6BcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgIDppcz1cInVpLmlucHV0Lm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgIDppY29uPVwidWkuaWNvbnMuc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgOlt1aS5pbnB1dC5tb2RlbFZhbHVlXT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUNvbG9yQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29tcG9uZW50PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJpY29uIGluIHBhZ2VyLnJlY29yZHNcIlxyXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwieyBhY3RpdmU6IGljb24gPT09IGN1cnJlbnRJY29uIH1cIlxyXG4gICAgICAgICAgICAgICAgICA6dGl0bGU9XCJpY29uXCJcclxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlSWNvblNlbGVjdChpY29uLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICBAZGJsY2xpY2s9XCJoYW5kbGVJY29uU2VsZWN0KGljb24sIHRydWUpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJjdXJyZW50Q29sb3IgPyBgJHtpY29ufToke2N1cnJlbnRDb2xvcn1gIDogaWNvblwiIGNsYXNzPVwidGV4dC0yeGxcIj48L2ZzLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWQtbW9yZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZzLWxvYWRpbmcgdi1pZj1cInBhZ2VyLmxvYWRpbmdcIiA6bG9hZGluZz1cInBhZ2VyLmxvYWRpbmdcIiB0ZXh0PVwi5Yqg6L295LitXCIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwicGFnZXIudG90YWwgPT0gbnVsbCB8fCBwYWdlci50b3RhbCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+5pqC5peg5pWw5o2uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwicGFnZXIudG90YWwgPiBwYWdlci5zdGFydCArIHBhZ2VyLmxpbWl0XCIgQGNsaWNrPVwibG9hZE1vcmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj7liqDovb3mm7TlpJo8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxmcy1idXR0b24gdHlwZT1cInByaW1hcnlcIiBAY2xpY2s9XCJvbkNvbmZpcm1cIj7noa7lrpo8L2ZzLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9jb21wb25lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IHJlZiwgdXNlQXR0cnMsIFJlZiwgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XHJcblxyXG47XHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1widXBkYXRlOm1vZGVsVmFsdWVcIl0pO1xyXG5jb25zdCBkZWZhdWx0TGltaXQgPSAxMzY7XHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xyXG4gIG1vZGVsVmFsdWU6IHtcclxuICAgIHR5cGU6IFN0cmluZyxcclxuICAgIGRlZmF1bHQ6IFwiXCJcclxuICB9LFxyXG4gIGRpYWxvZzoge1xyXG4gICAgdHlwZTogT2JqZWN0LFxyXG4gICAgZGVmYXVsdDogKCkgPT4gKHt9KVxyXG4gIH0sXHJcbiAgdGFiczoge1xyXG4gICAgdHlwZTogT2JqZWN0LFxyXG4gICAgZGVmYXVsdDogKCkgPT4gKHt9KVxyXG4gIH0sXHJcbiAgLy8g6ZmQ5Yi25q+P6aG15pi+56S65pWw6YePXHJcbiAgbGltaXQ6IHtcclxuICAgIHR5cGU6IE51bWJlcixcclxuICAgIGRlZmF1bHQ6IDEzNlxyXG4gIH0sXHJcbiAgaWNvblNldHM6IHtcclxuICAgIHR5cGU6IEFycmF5PHN0cmluZz4sXHJcbiAgICBkZWZhdWx0OiAoKSA9PiBbXHJcbiAgICAgIFwibG9nb3NcIixcclxuICAgICAgXCJmYS1icmFuZHNcIixcclxuICAgICAgXCJmYS1zb2xpZFwiLFxyXG4gICAgICBcImZhLXJlZ3VsYXJcIixcclxuICAgICAgXCJjYXJib25cIixcclxuICAgICAgXCJpb25cIixcclxuICAgICAgXCJhbnQtZGVzaWduXCIsXHJcbiAgICAgIFwibWRpXCIsXHJcbiAgICAgIFwidHdlbW9qaVwiLFxyXG4gICAgICBcInN2Zy1zcGlubmVyc1wiXHJcbiAgICBdXHJcbiAgfSxcclxuICBhcGlQcm92aWRlcjoge1xyXG4gICAgdHlwZTogU3RyaW5nLFxyXG4gICAgZGVmYXVsdDogXCJodHRwczovL2FwaS5pY29uaWZ5LmRlc2lnblwiXHJcbiAgfSxcclxuICBjb2xvcnM6IHtcclxuICAgIHR5cGU6IEFycmF5PHN0cmluZz4sXHJcbiAgICBkZWZhdWx0OiAoKSA9PiBbXHJcbiAgICAgIFwiXCIsXHJcbiAgICAgIFwiIzAwN0FGRlwiLFxyXG4gICAgICBcIiMzNEM3NTlcIixcclxuICAgICAgXCIjRkY5NTAwXCIsXHJcbiAgICAgIFwiI0ZGM0IzMFwiLFxyXG4gICAgICBcIiNGRkNDMDBcIixcclxuICAgICAgXCIjNDI0MjQyXCIsXHJcbiAgICAgIFwiIzhFOEU5M1wiLFxyXG4gICAgICBcIiNBRjUyREVcIixcclxuICAgICAgXCIjNUFDOEZBXCIsXHJcbiAgICAgIFwiI0EyODQ1RVwiXHJcbiAgICBdXHJcbiAgfVxyXG59KTtcclxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuXHJcbmNvbnN0IGRpYWxvZ09wZW5lZCA9IHJlZihmYWxzZSk7XHJcbmNvbnN0IGNvbXB1dGVkRGlhbG9nID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICB3aWR0aDogMTAyNCxcclxuICAgIHN0eWxlOiB7XHJcbiAgICAgIHdpZHRoOiBcIjEwMjRweFwiXHJcbiAgICB9LFxyXG4gICAgLi4ucHJvcHMuZGlhbG9nLFxyXG4gICAgW3VpLmRpYWxvZy52aXNpYmxlXTogZGlhbG9nT3BlbmVkLnZhbHVlLFxyXG4gICAgW2BvblVwZGF0ZToke3VpLmRpYWxvZy52aXNpYmxlfWBdOiAodmFsOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGRpYWxvZ09wZW5lZC52YWx1ZSA9IHZhbDtcclxuICAgIH1cclxuICB9O1xyXG59KTtcclxuXHJcbmNvbnN0IGZvcm1JdGVtQ29udGV4dCA9IHVpLmZvcm1JdGVtLmluamVjdEZvcm1JdGVtQ29udGV4dCgpO1xyXG5jb25zdCBpbnB1dEJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIC4uLmF0dHJzLFxyXG4gICAgW3VpLmlucHV0Lm1vZGVsVmFsdWVdOiBwcm9wcy5tb2RlbFZhbHVlLFxyXG4gICAgW2BvblVwZGF0ZToke3VpLmlucHV0Lm1vZGVsVmFsdWV9YF06ICh2YWw6IHN0cmluZykgPT4ge1xyXG4gICAgICBlbWl0Q2hhbmdlKHZhbCk7XHJcbiAgICB9XHJcbiAgfTtcclxufSk7XHJcblxyXG5jb25zdCBlbWl0Q2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbCk7XHJcbiAgZm9ybUl0ZW1Db250ZXh0Py5vbkNoYW5nZSgpO1xyXG59O1xyXG5cclxuY29uc3QgaGFuZGxlT3BlbiA9ICgpID0+IHtcclxuICBkaWFsb2dPcGVuZWQudmFsdWUgPSB0cnVlO1xyXG4gIGlmIChwcm9wcy5pY29uU2V0cy5sZW5ndGggPiAwICYmIHBhZ2VyLnZhbHVlLnJlY29yZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICBvblRhYkNoYW5nZShwcm9wcy5pY29uU2V0c1swXSBhcyBzdHJpbmcpO1xyXG4gIH1cclxuICAvL+WIneWni+WMlnZhbHVlXHJcbiAgY29uc3QgYXJyID0gcHJvcHMubW9kZWxWYWx1ZT8uc3BsaXQoXCI6XCIpIHx8IFtdO1xyXG4gIGlmIChhcnIubGVuZ3RoID49IDIpIHtcclxuICAgIGN1cnJlbnRJY29uLnZhbHVlID0gYXJyWzBdICsgXCI6XCIgKyBhcnJbMV07XHJcbiAgICBjdXJyZW50Q29sb3IudmFsdWUgPSBhcnJbMl07XHJcbiAgfSBlbHNlIHtcclxuICAgIGN1cnJlbnRJY29uLnZhbHVlID0gcHJvcHMubW9kZWxWYWx1ZTtcclxuICAgIGN1cnJlbnRDb2xvci52YWx1ZSA9IFwiXCI7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgYXR0cnMgPSB1c2VBdHRycygpO1xyXG5cclxuY29uc3QgYXBpID0ge1xyXG4gIGFzeW5jIGdldENvbGxlY3Rpb25zKCkge1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYXBpUHJvdmlkZXJ9L2NvbGxlY3Rpb25zYCk7XHJcbiAgICByZXR1cm4gYXdhaXQgcmVzLmpzb24oKTtcclxuICB9LFxyXG4gIGFzeW5jIGdldEljb25zKHByZWZpeDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hcGlQcm92aWRlcn0vY29sbGVjdGlvbj9wcmVmaXg9JHtwcmVmaXh9YCk7XHJcbiAgICByZXR1cm4gYXdhaXQgcmVzLmpzb24oKTtcclxuICB9LFxyXG4gIGFzeW5jIHNlYXJjaChxdWVyeTogc3RyaW5nLCBwYWdlcjogYW55KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IHBhZ2VyLnN0YXJ0ID8/IDA7XHJcbiAgICBjb25zdCBsaW1pdCA9IHBhZ2VyLmxpbWl0ID8/IDUwO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYXBpUHJvdmlkZXJ9L3NlYXJjaD9xdWVyeT0ke3F1ZXJ5fSZzdGFydD0ke3N0YXJ0fSZsaW1pdD0ke2xpbWl0fWApO1xyXG4gICAgcmV0dXJuIGF3YWl0IHJlcy5qc29uKCk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgaWNvblN0b3JlOiBSZWYgPSByZWYoe30pO1xyXG5cclxuY29uc3QgbG9hZEljb25TZXQgPSBhc3luYyAocHJlZml4OiBzdHJpbmcpID0+IHtcclxuICBsZXQgc2V0cyA9IGljb25TdG9yZS52YWx1ZVtwcmVmaXhdO1xyXG4gIGlmICghc2V0cykge1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgYXBpLmdldEljb25zKHByZWZpeCk7XHJcbiAgICBjb25zdCB1bmNhdGVnb3JpZXMgPSByZXMudW5jYXRlZ29yaXplZCA/PyBbXTtcclxuICAgIGNvbnN0IGNhdGVnb3JpZXMgPSByZXMuY2F0ZWdvcmllcyA/PyBbXTtcclxuICAgIHNldHMgPSB1bmNhdGVnb3JpZXM7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjYXRlZ29yaWVzKSB7XHJcbiAgICAgIHNldHMgPSBzZXRzLmNvbmNhdChjYXRlZ29yaWVzW2tleV0pO1xyXG4gICAgfVxyXG4gICAgc2V0cyA9IHNldHMubWFwKChpdGVtOiBhbnkpID0+IGAke3ByZWZpeH06JHtpdGVtfWApO1xyXG4gICAgaWNvblN0b3JlLnZhbHVlW3ByZWZpeF0gPSBzZXRzO1xyXG4gIH1cclxuICByZXR1cm4gc2V0cztcclxufTtcclxuXHJcbmNvbnN0IHNlYXJjaEtleSA9IHJlZihcIlwiKTtcclxuY29uc3QgdGFiS2V5ID0gcmVmKFwiYWxsXCIpO1xyXG5jb25zdCBvblRhYkNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xyXG4gIHRhYktleS52YWx1ZSA9IGtleTtcclxuICBzZWFyY2hLZXkudmFsdWUgPSBcIlwiO1xyXG4gIHJlc2V0UGFnZXIoKTtcclxuICBoYW5kbGVTZWFyY2goKTtcclxufTtcclxuXHJcbmNvbnN0IHJlc2V0UGFnZXIgPSAoKSA9PiB7XHJcbiAgcGFnZXIudmFsdWUuc3RhcnQgPSAwO1xyXG4gIHBhZ2VyLnZhbHVlLnJlY29yZHMgPSBbXTtcclxuICBwYWdlci52YWx1ZS50b3RhbCA9IDA7XHJcbiAgcGFnZXIudmFsdWUubGltaXQgPSBwcm9wcy5saW1pdCA/PyBkZWZhdWx0TGltaXQ7XHJcbn07XHJcblxyXG5jb25zdCBwYWdlciA9IHJlZih7XHJcbiAgbG9hZGluZzogZmFsc2UsXHJcbiAgc3RhcnQ6IDAsXHJcbiAgbGltaXQ6IHByb3BzLmxpbWl0ID8/IGRlZmF1bHRMaW1pdCxcclxuICB0b3RhbDogbnVsbCxcclxuICBxdWVyeTogXCJcIixcclxuICByZWNvcmRzOiBbXVxyXG59KTtcclxuXHJcbmNvbnN0IGhhbmRsZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcclxuICBpZiAocGFnZXIudmFsdWUubG9hZGluZykge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBpZiAocGFnZXIudmFsdWUucXVlcnkgIT09IHNlYXJjaEtleS52YWx1ZSkge1xyXG4gICAgLy/ph43nva5zdGFydFxyXG4gICAgcmVzZXRQYWdlcigpO1xyXG4gIH1cclxuXHJcbiAgcGFnZXIudmFsdWUubG9hZGluZyA9IHRydWU7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRvU2VhcmNoKCk7XHJcbiAgICBwYWdlci52YWx1ZS5yZWNvcmRzID0gcGFnZXIudmFsdWUucmVjb3Jkcy5jb25jYXQocmVzLmljb25zKTtcclxuICAgIHBhZ2VyLnZhbHVlLnRvdGFsID0gcmVzLnRvdGFsO1xyXG4gICAgcGFnZXIudmFsdWUubGltaXQgPSByZXMubGltaXQ7XHJcbiAgICBwYWdlci52YWx1ZS5xdWVyeSA9IHNlYXJjaEtleS52YWx1ZTtcclxuICB9IGZpbmFsbHkge1xyXG4gICAgcGFnZXIudmFsdWUubG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxufTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKCkge1xyXG4gIGlmICh0YWJLZXkudmFsdWUgPT09IFwiYWxsXCIpIHtcclxuICAgIGlmICghc2VhcmNoS2V5LnZhbHVlKSB7XHJcbiAgICAgIHVpLm5vdGlmaWNhdGlvbi53YXJuKFwi6K+36L6T5YWl5pCc57Si5YWz6ZSu5a2XXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgYXBpLnNlYXJjaChzZWFyY2hLZXkudmFsdWUsIHBhZ2VyLnZhbHVlKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGF3YWl0IGdldFBhZ2VyRnJvbUljb25TZXQodGFiS2V5LnZhbHVlKTtcclxuICB9XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VyRnJvbUljb25TZXQocHJlZml4OiBzdHJpbmcpIHtcclxuICBjb25zdCBpY29ucyA9IGF3YWl0IGxvYWRJY29uU2V0KHByZWZpeCk7XHJcbiAgbGV0IGZpbHRlcnMgPSBpY29ucztcclxuICBpZiAoc2VhcmNoS2V5LnZhbHVlKSB7XHJcbiAgICBmaWx0ZXJzID0gaWNvbnMuZmlsdGVyKChpY29uOiBzdHJpbmcpID0+IGljb24uaW5jbHVkZXMoc2VhcmNoS2V5LnZhbHVlKSk7XHJcbiAgfVxyXG4gIGxldCBlbmQgPSBwYWdlci52YWx1ZS5zdGFydCArIHBhZ2VyLnZhbHVlLmxpbWl0O1xyXG4gIGlmIChlbmQgPiBmaWx0ZXJzLmxlbmd0aCkge1xyXG4gICAgZW5kID0gZmlsdGVycy5sZW5ndGg7XHJcbiAgfVxyXG4gIGNvbnN0IHBhZ2VySWNvbnMgPSBmaWx0ZXJzLnNsaWNlKHBhZ2VyLnZhbHVlLnN0YXJ0LCBlbmQpO1xyXG4gIHJldHVybiB7XHJcbiAgICBpY29uczogcGFnZXJJY29ucyxcclxuICAgIHRvdGFsOiBmaWx0ZXJzLmxlbmd0aCxcclxuICAgIGxpbWl0OiBwYWdlci52YWx1ZS5saW1pdCxcclxuICAgIHN0YXJ0OiBwYWdlci52YWx1ZS5zdGFydFxyXG4gIH07XHJcbn1cclxuXHJcbmNvbnN0IGN1cnJlbnRJY29uID0gcmVmKFwiXCIpO1xyXG5jb25zdCBjdXJyZW50Q29sb3IgPSByZWYoXCJcIik7XHJcbmNvbnN0IGhhbmRsZUljb25TZWxlY3QgPSAoaWNvbjogc3RyaW5nLCBjb25maXJtID0gZmFsc2UpID0+IHtcclxuICBjdXJyZW50SWNvbi52YWx1ZSA9IGljb247XHJcbiAgaWYgKGNvbmZpcm0pIHtcclxuICAgIG9uQ29uZmlybSgpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IG9uQ29uZmlybSA9ICgpID0+IHtcclxuICBkaWFsb2dPcGVuZWQudmFsdWUgPSBmYWxzZTtcclxuICBsZXQgdmFsdWUgPSBjdXJyZW50SWNvbi52YWx1ZTtcclxuICBpZiAoY3VycmVudENvbG9yLnZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHZhbHVlICsgXCI6XCIgKyBjdXJyZW50Q29sb3IudmFsdWU7XHJcbiAgfVxyXG4gIGVtaXRDaGFuZ2UodmFsdWUpO1xyXG59O1xyXG5cclxuY29uc3QgaGFuZGxlQ29sb3JDaGFuZ2UgPSAoY29sb3I6IHN0cmluZykgPT4ge1xyXG4gIGN1cnJlbnRDb2xvci52YWx1ZSA9IGNvbG9yO1xyXG59O1xyXG5cclxuY29uc3QgbG9hZE1vcmUgPSBhc3luYyAoKSA9PiB7XHJcbiAgcGFnZXIudmFsdWUuc3RhcnQgKz0gcGFnZXIudmFsdWUubGltaXQ7XHJcbiAgYXdhaXQgaGFuZGxlU2VhcmNoKCk7XHJcbn07XHJcblxyXG5jb25zdCBjb21wdXRlVGFicyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgLi4ucHJvcHMudGFicyxcclxuICAgIFt1aS50YWJzLm1vZGVsVmFsdWVdOiB0YWJLZXkudmFsdWUsXHJcbiAgICBbYG9uVXBkYXRlOiR7dWkudGFicy5tb2RlbFZhbHVlfWBdOiBvblRhYkNoYW5nZVxyXG4gIH07XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1pY29uLXNlbGVjdG9yIHtcclxuICAuZnMtaWNvbi1zZWxlY3Rvci1pbnB1dC1wcmVmaXgge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgfVxyXG59XHJcbi5mcy1pY29uLXNlbGVjdG9yLWRpYWxvZy1jb250ZW50IHtcclxuICAuaWNvbi10YWJzLWJveCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIG1pbi1oZWlnaHQ6IDUwMHB4O1xyXG4gICAgbWF4LWhlaWdodDogNjB2aDtcclxuXHJcbiAgICAuc2VhcmNoLWJveCB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiA1cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgLnNlYXJjaC1pbnB1dCB7XHJcbiAgICAgICAgd2lkdGg6IDIwMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY29sb3Itc2VsZWN0IHtcclxuICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZ2FwOiA1cHg7XHJcbiAgICAgICAgLmNvbG9yLWl0ZW0ge1xyXG4gICAgICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2EyZjdmZjtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDVweCAjYTJmN2ZmO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzQwOWVmZjtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDVweCAjNDA5ZWZmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sb2FkLW1vcmUge1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9vdGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBlbmQ7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB9XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgLmljb24tY29udGFpbmVyIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgZmxleDogMTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTRlN2VkO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIC5pY29uLWxpc3Qge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICAgICAgLmljb24taXRlbSB7XHJcbiAgICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIG1hcmdpbjogMnB4O1xyXG4gICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNDA5ZWZmO1xyXG4gICAgICAgICAgICAvL3NoYWRvd1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNXB4ICM0MDllZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzZjYjNmODtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLmZzLWljb24ge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiA5NiU7XHJcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA5NiU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50IDppcz1cInVpLnJhZGlvR3JvdXAubmFtZVwiIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCI+XHJcbiAgICA8Y29tcG9uZW50XHJcbiAgICAgIDppcz1cImNvbXB1dGVkUmFkaW9OYW1lXCJcclxuICAgICAgdi1mb3I9XCJpdGVtIG9mIGNvbXB1dGVkT3B0aW9uc1wiXHJcbiAgICAgIHJlZj1cInJhZGlvUmVmXCJcclxuICAgICAgOmtleT1cImdldFZhbHVlKGl0ZW0pXCJcclxuICAgICAgOlt1aS5yYWRpby52YWx1ZV09XCJnZXRWYWx1ZShpdGVtKVwiXHJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcclxuICAgID5cclxuICAgICAge3sgZ2V0TGFiZWwoaXRlbSkgfX1cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vdWlcIjtcclxuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuLyoqXHJcbiAqIOWtl+WFuOWNlemAieahhlxyXG4gKiDmlK/mjIFlbC1yYWRpby1ncm91cHxhLXJhZGlvLWdyb3Vw55qE5Y+C5pWwXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0UmFkaW9cIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDmlbDmja7lrZflhbjphY3nva5cclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByYWRpb+e7hOS7tuWQjeensFxyXG4gICAgICogYW50ZHbkvb/nlKhidXR0b27moLflvI/nmoTml7blgJnmnInnlKhcclxuICAgICAqIOWNs+WwhuW6n+W8gyzor7fkvb/nlKhvcHRpb25OYW1lXHJcbiAgICAgKi9cclxuICAgIHJhZGlvTmFtZToge30sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcclxuICAgICAqL1xyXG4gICAgb3B0aW9uTmFtZToge1xyXG4gICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpgInpobnnmoTlsZ7mgKdcclxuICAgICAqL1xyXG4gICAgb3B0aW9uUHJvcHM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6L2s5o2iRGljdERhdGFcclxuICAgICAqL1xyXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwiZGljdC1jaGFuZ2VcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxyXG4gICAgICovXHJcbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJjaGFuZ2VcIlxyXG4gIF0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcblxyXG4gICAgaWYgKHByb3BzLnJhZGlvTmFtZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCLlj4LmlbByYWRpb05hbWXljbPlsIblup/lvIPvvIzor7fmlLnmiJBvcHRpb25OYW1lXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcHV0ZWRSYWRpb05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25OYW1lID8/IHByb3BzLnJhZGlvTmFtZSA/PyB1aS5yYWRpby5uYW1lO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4LCB1aS5yYWRpb0dyb3VwLm1vZGVsVmFsdWUpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcblxyXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcclxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnRhcmdldCkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XHJcbiAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCAmJiBkaWN0LmRhdGFNYXBbdmFsdWVdKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW3ZhbHVlXTtcclxuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBvcHQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBjb21wdXRlZFJhZGlvTmFtZSxcclxuICAgICAgLi4udXNlZERpY3QsXHJcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcclxuICAgICAgb25TZWxlY3RlZENoYW5nZVxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnQgOmlzPVwidWkucmFkaW9Hcm91cC5uYW1lXCIgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIj5cclxuICAgIDxjb21wb25lbnRcclxuICAgICAgOmlzPVwiY29tcHV0ZWRSYWRpb05hbWVcIlxyXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcclxuICAgICAgcmVmPVwicmFkaW9SZWZcIlxyXG4gICAgICA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIlxyXG4gICAgICA6W3VpLnJhZGlvLnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcclxuICAgICAgdi1iaW5kPVwib3B0aW9uUHJvcHNcIlxyXG4gICAgPlxyXG4gICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxyXG4gICAgPC9jb21wb25lbnQ+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XHJcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xyXG5pbXBvcnQgeyByZWYsIGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG4vKipcclxuICog5a2X5YW45Y2V6YCJ5qGGXHJcbiAqIOaUr+aMgWVsLXJhZGlvLWdyb3VwfGEtcmFkaW8tZ3JvdXDnmoTlj4LmlbBcclxuICpcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0RpY3RSYWRpb1wiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaVsOaNruWtl+WFuOmFjee9rlxyXG4gICAgICovXHJcbiAgICBkaWN0OiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog5Y+v6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXHJcbiAgICAgKi9cclxuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJhZGlv57uE5Lu25ZCN56ewXHJcbiAgICAgKiBhbnRkduS9v+eUqGJ1dHRvbuagt+W8j+eahOaXtuWAmeacieeUqFxyXG4gICAgICog5Y2z5bCG5bqf5byDLOivt+S9v+eUqG9wdGlvbk5hbWVcclxuICAgICAqL1xyXG4gICAgcmFkaW9OYW1lOiB7fSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhueeahOe7hOS7tuWQjeensFxyXG4gICAgICovXHJcbiAgICBvcHRpb25OYW1lOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhueeahOWxnuaAp1xyXG4gICAgICovXHJcbiAgICBvcHRpb25Qcm9wczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDovazmjaJEaWN0RGF0YVxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXHJcbiAgICAgKi9cclxuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXHJcbiAgICAvKipcclxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxyXG4gICAgICovXHJcbiAgICBcImNoYW5nZVwiXHJcbiAgXSxcclxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuXHJcbiAgICBpZiAocHJvcHMucmFkaW9OYW1lKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIuWPguaVsHJhZGlvTmFtZeWNs+WwhuW6n+W8g++8jOivt+aUueaIkG9wdGlvbk5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wdXRlZFJhZGlvTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHByb3BzLm9wdGlvbk5hbWUgPz8gcHJvcHMucmFkaW9OYW1lID8/IHVpLnJhZGlvLm5hbWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgsIHVpLnJhZGlvR3JvdXAubW9kZWxWYWx1ZSk7XHJcbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcclxuXHJcbiAgICBjb25zdCBvblNlbGVjdGVkQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUudGFyZ2V0KSB7XHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcclxuICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwICYmIGRpY3QuZGF0YU1hcFt2YWx1ZV0pIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbdmFsdWVdO1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIGNvbXB1dGVkUmFkaW9OYW1lLFxyXG4gICAgICAuLi51c2VkRGljdCxcclxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxyXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLCI8c2NyaXB0IGxhbmc9XCJ0c3hcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0RpY3RTZWxlY3RcIlxyXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxyXG4gIDxyZW5kZXI+PC9yZW5kZXI+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzeFwiIHNldHVwPlxyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCByZWYsIHJlc29sdmVEeW5hbWljQ29tcG9uZW50LCB1c2VBdHRycyB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcblxyXG4vKipcclxuICog5a2X5YW46YCJ5oup5qGGXHJcbiAqIOaUr+aMgWVsLXNlbGVjdHxhLXNlbGVjdOeahOWxnuaAp+mFjee9rlxyXG4gKi9cclxuXHJcbjtcclxuXHJcbnR5cGUgUHJvcHNUeXBlID0ge1xyXG4gIC8qKlxyXG4gICAqIOWtl+WFuFxyXG4gICAqL1xyXG4gIGRpY3Q/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICog5Y+v6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXHJcbiAgICovXHJcbiAgb3B0aW9ucz86IGFueVtdO1xyXG5cclxuICAvKipcclxuICAgKiBzZWxlY3Tnu4Tku7bnmoTmj5Lmp71cclxuICAgKi9cclxuICBzbG90cz86IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICog6Ieq5a6a5LmJbGFiZWznmoRyZW5kZXLmlrnms5VcclxuICAgKi9cclxuICByZW5kZXJMYWJlbD86IChpdGVtOiBhbnkpID0+IGFueTtcclxuICAvKipcclxuICAgKiDovazmjaJEaWN0RGF0YVxyXG4gICAqL1xyXG4gIHRyYW5zZm9ybURpY3REYXRhPzogKGl0ZW06IGFueSkgPT4gYW55O1xyXG59O1xyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wc1R5cGU+KCk7XHJcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJkaWN0LWNoYW5nZVwiLCBcInNlbGVjdGVkLWNoYW5nZVwiLCBcImNoYW5nZVwiXSk7XHJcblxyXG5jb25zdCBzZWxlY3RSZWYgPSByZWYoKTtcclxuY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XHJcbmNvbnN0IGNvbXB1dGVkUGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHJldHVybiBwcm9wcy5wbGFjZWhvbGRlciB8fCB0KFwiZnMuY29tcG9uZW50LnNlbGVjdC5wbGFjZWhvbGRlclwiKTtcclxufSk7XHJcblxyXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG5jb25zdCBhdHRycyA9IHVzZUF0dHJzKCk7XHJcbmNvbnN0IGN0eCA9IHtcclxuICBlbWl0LFxyXG4gIGF0dHJzXHJcbn07XHJcbmNvbnN0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4LCB1aS5zZWxlY3QubW9kZWxWYWx1ZSk7XHJcbmNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xyXG5jb25zdCBmaWVsZE5hbWVzQmluZGVyID0gcmVmKCk7XHJcbmlmIChwcm9wcy5kaWN0KSB7XHJcbiAgZmllbGROYW1lc0JpbmRlci52YWx1ZSA9IHVpLnNlbGVjdC5maWVsZE5hbWVzKHtcclxuICAgIHZhbHVlOiBwcm9wcy5kaWN0LnZhbHVlLFxyXG4gICAgbGFiZWw6IHByb3BzLmRpY3QubGFiZWxcclxuICB9KTtcclxufVxyXG5cclxuY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XHJcbiAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcclxuICAvL+WmguaenOaYr+aVsOe7hFxyXG4gIGlmICh2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBvcHRzID0gW107XHJcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcclxuICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwICYmIGRpY3QuZGF0YU1hcFt2XSkge1xyXG4gICAgICAgIG9wdHMucHVzaChkaWN0LmRhdGFNYXBbdl0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdHMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwICYmIGRpY3QuZGF0YU1hcFt2YWx1ZV0pIHtcclxuICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFt2YWx1ZV07XHJcbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgdGVtcFNsb3RzID0gZGVmaW5lU2xvdHMoKTtcclxuXHJcbmRlZmluZUV4cG9zZSh7XHJcbiAgc2VsZWN0UmVmLFxyXG4gIGNvbXB1dGVkUGxhY2Vob2xkZXIsXHJcbiAgLi4udXNlZERpY3QsXHJcbiAgY29tcHV0ZWRPcHRpb25zLFxyXG4gIG9uU2VsZWN0ZWRDaGFuZ2VcclxufSk7XHJcblxyXG5jb25zdCByZW5kZXIgPSAoKSA9PiB7XHJcbiAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICBjb25zdCBzZWxlY3RDb21wID0gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodWkuc2VsZWN0Lm5hbWUpO1xyXG4gIGNvbnN0IHZNb2RlbCA9IHVpLnNlbGVjdC5tb2RlbFZhbHVlO1xyXG4gIGlmICh1aS5vcHRpb24ubmFtZSA9PSBudWxsKSB7XHJcbiAgICAvL25haXZlIHVpXHJcbiAgICAvL+S7pW9wdGlvbnPlj4LmlbDkvZzkuLpvcHRpb25zXHJcbiAgICBjb25zdCBvcHRpb25zID0gY29tcHV0ZWRPcHRpb25zLnZhbHVlIHx8IFtdO1xyXG4gICAgY29uc3QgYmluZGluZzogYW55ID0ge1xyXG4gICAgICBbYG9uVXBkYXRlOiR7dk1vZGVsfWBdOiAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXMuJGVtaXQoYG9uVXBkYXRlOiR7dk1vZGVsfWAsIHZhbHVlKTtcclxuICAgICAgICBvblNlbGVjdGVkQ2hhbmdlKHZhbHVlKTtcclxuICAgICAgfSxcclxuICAgICAgLi4uYXR0cnNcclxuICAgIH07XHJcbiAgICBjb25zdCB0aGlzU2xvdHMgPSB7XHJcbiAgICAgIC4uLnRlbXBTbG90cyxcclxuICAgICAgLi4ucHJvcHMuc2xvdHNcclxuICAgIH07XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8c2VsZWN0Q29tcFxyXG4gICAgICAgIHJlZj17XCJzZWxlY3RSZWZcIn1cclxuICAgICAgICBwbGFjZWhvbGRlcj17Y29tcHV0ZWRQbGFjZWhvbGRlci52YWx1ZX1cclxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxyXG4gICAgICAgIHsuLi5maWVsZE5hbWVzQmluZGVyLnZhbHVlfVxyXG4gICAgICAgIHJlbmRlckxhYmVsPXtwcm9wcy5yZW5kZXJMYWJlbH1cclxuICAgICAgICB2LXNsb3RzPXt0aGlzU2xvdHN9XHJcbiAgICAgICAgey4uLmJpbmRpbmd9XHJcbiAgICAgIC8+XHJcbiAgICApO1xyXG4gIH1cclxuICAvLyBvcHRpb25zIOS4uuWtkOe7hOS7tlxyXG4gIGNvbnN0IG9wdGlvbnMgPSBbXTtcclxuICBjb25zdCBvcHRpb25Db21wID0gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodWkub3B0aW9uLm5hbWUpO1xyXG4gIGNvbnN0IGNvcyA9IGNvbXB1dGVkT3B0aW9ucy52YWx1ZSB8fCBbXTtcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29zKSB7XHJcbiAgICBjb25zdCBvcHRpb24gPSAoXHJcbiAgICAgIDxvcHRpb25Db21wIHsuLi5pdGVtfSB2YWx1ZT17dXNlZERpY3QuZ2V0VmFsdWUoaXRlbSl9IGxhYmVsPXt1c2VkRGljdC5nZXRMYWJlbChpdGVtKX0+XHJcbiAgICAgICAge3Byb3BzLnJlbmRlckxhYmVsID8gcHJvcHMucmVuZGVyTGFiZWwoaXRlbSkgOiB1c2VkRGljdC5nZXRMYWJlbChpdGVtKX1cclxuICAgICAgPC9vcHRpb25Db21wPlxyXG4gICAgKTtcclxuICAgIG9wdGlvbnMucHVzaChvcHRpb24pO1xyXG4gIH1cclxuICBjb25zdCB0aGlzU2xvdHMgPSB7XHJcbiAgICBkZWZhdWx0OiAoKSA9PiBvcHRpb25zLFxyXG4gICAgLi4udGVtcFNsb3RzLFxyXG4gICAgLi4ucHJvcHMuc2xvdHNcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8c2VsZWN0Q29tcFxyXG4gICAgICByZWY9e1wic2VsZWN0UmVmXCJ9XHJcbiAgICAgIHBsYWNlaG9sZGVyPXtjb21wdXRlZFBsYWNlaG9sZGVyLnZhbHVlfVxyXG4gICAgICB2LXNsb3RzPXt0aGlzU2xvdHN9XHJcbiAgICAgIG9uQ2hhbmdlPXtvblNlbGVjdGVkQ2hhbmdlfVxyXG4gICAgICB7Li4uYXR0cnN9XHJcbiAgICAvPlxyXG4gICk7XHJcbn07XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmFudC1zZWxlY3QtbXVsdGlwbGUge1xyXG4gIG1pbi13aWR0aDogMTAwcHg7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwiZnMtdmFsdWVzLWZvcm1hdFwiPlxyXG4gICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtUmVuZGVyXCI+XHJcbiAgICAgIDxmcy1yZW5kZXIgdi1mb3I9XCJpdGVtIGluIHZpc2libGVWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCIgOnJlbmRlci1mdW5jPVwiaXRlbVJlbmRlclwiIDpzY29wZT1cIml0ZW1cIiAvPlxyXG4gICAgICA8c3BhbiB2LWlmPVwiaGlkZGVuVmFsdWVDb3VudCA+IDBcIj4re3sgaGlkZGVuVmFsdWVDb3VudCB9fTwvc3Bhbj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwidHlwZSA9PT0gJ3RleHQnXCI+XHJcbiAgICAgIDxzcGFuIHYtZm9yPVwiaXRlbSBpbiB2aXNpYmxlVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gdi1pZj1cImhpZGRlblZhbHVlQ291bnQgPiAwXCI+K3t7IGhpZGRlblZhbHVlQ291bnQgfX08L3NwYW4+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiB2aXNpYmxlVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiPlxyXG4gICAgICAgIDxjb21wb25lbnRcclxuICAgICAgICAgIDppcz1cInVpLnRhZy5uYW1lXCJcclxuICAgICAgICAgIGNsYXNzPVwiZnMtdGFnXCJcclxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICA6Y2xvc2FibGU9XCJjbG9zYWJsZVwiXHJcbiAgICAgICAgICB2LWJpbmQ9XCJpdGVtXCJcclxuICAgICAgICAgIDppY29uPVwibnVsbFwiXHJcbiAgICAgICAgICA6bmFtZT1cIm51bGxcIlxyXG4gICAgICAgICAgQGNsb3NlPVwiZG9DbG9zZShpbmRleCwgaXRlbSlcIlxyXG4gICAgICAgICAgQGNsaWNrPVwiZG9DbGljayhpdGVtKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLmljb25cIj5cclxuICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJpdGVtLmljb25cIiA6c3Bpbj1cIml0ZW0uaWNvblNwaW5cIiBjbGFzcz1cImZzLXRhZy1pY29uXCIgLz5cclxuICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxyXG4gICAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8Y29tcG9uZW50IHYtaWY9XCJoaWRkZW5WYWx1ZUNvdW50ID4gMFwiIDppcz1cInVpLnRhZy5uYW1lXCIgY2xhc3M9XCJmcy10YWdcIiBzaXplPVwic21hbGxcIiA6Y2xvc2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICt7eyBoaWRkZW5WYWx1ZUNvdW50IH19XHJcbiAgICAgIDwvY29tcG9uZW50PlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyBmb3JFYWNoLCBvbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBSZWYgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG5mdW5jdGlvbiBnZXRIYXNoQ29kZShzdHI6IHN0cmluZykge1xyXG4gIGlmIChzdHIgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG4gIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICBzdHIgPSBKU09OLnN0cmluZ2lmeShzdHIpO1xyXG4gIH1cclxuICBsZXQgaGFzaCA9IDA7XHJcbiAgbGV0IGk7XHJcbiAgbGV0IGNocjtcclxuICBsZXQgbGVuO1xyXG4gIGlmIChzdHIubGVuZ3RoID09PSAwKSByZXR1cm4gaGFzaDtcclxuICBmb3IgKGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIGNociA9IHN0ci5jaGFyQ29kZUF0KGkpO1xyXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNocjtcclxuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXHJcbiAgfVxyXG4gIHJldHVybiBNYXRoLmFicyhoYXNoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnVpbGRBcnJheVZhbHVlKHByb3BzOiBhbnkpIHtcclxuICBsZXQgdmFsdWVBcnIgPSBbXTtcclxuICBpZiAodHlwZW9mIHByb3BzLm1vZGVsVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcHJvcHMubXVsdGlwbGUgJiYgcHJvcHMuc2VwYXJhdG9yICE9IG51bGwgJiYgcHJvcHMuc2VwYXJhdG9yICE9PSBcIlwiKSB7XHJcbiAgICB2YWx1ZUFyciA9IHByb3BzLm1vZGVsVmFsdWUuc3BsaXQocHJvcHMuc2VwYXJhdG9yKTtcclxuICB9IGVsc2UgaWYgKHByb3BzLm1vZGVsVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgLy8g5pys5p2l5bCx5piv5pWw57uE55qEXHJcbiAgICB2YWx1ZUFyciA9IHByb3BzLm1vZGVsVmFsdWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhbHVlQXJyID0gW3Byb3BzLm1vZGVsVmFsdWVdO1xyXG4gIH1cclxuICByZXR1cm4gdmFsdWVBcnI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiB2YWx1ZeagvOW8j+WMluWxleekuue7hOS7tlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzVmFsdWVzRm9ybWF0XCIsXHJcbiAgcHJvcHM6IHtcclxuICAgIC8qKlxyXG4gICAgICog5YC8XHJcbiAgICAgKi9cclxuICAgIG1vZGVsVmFsdWU6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjphY3nva5cclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuWkmumAiVxyXG4gICAgICovXHJcbiAgICBtdWx0aXBsZTogeyBkZWZhdWx0OiB0cnVlIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWIhumalOespjxici8+XHJcbiAgICAgKiDlpJrpgInml7bvvIzlpoLmnpx2YWx1ZeS4unN0cmluZ++8jOWImeS7peivpeWIhumalOespuWIhuWJsuaIkOWkmuS4quWxleekujxici8+XHJcbiAgICAgKiDkvKDlhaXnqbrlrZfnrKbkuLLvvIzooajnpLrkuI3liIblibI8YnIvPlxyXG4gICAgICovXHJcbiAgICBzZXBhcmF0b3I6IHsgZGVmYXVsdDogXCIsXCIgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOminOiJslxyXG4gICAgICogZWxlbWVudD3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXIgLGluZm/jgJFcclxuICAgICAqIGFudGR2PeOAkGF1dG8sIHByaW1hcnksIHN1Y2Nlc3MsIGJsdWUscmVkLC4uLuOAkVxyXG4gICAgICog6YWN572uYXV0b++8jOWImeiHquWKqOagueaNrnZhbHVl5YC8aGFzaGNvZGXliIbphY3popzoibLlgLxcclxuICAgICAqL1xyXG4gICAgY29sb3I6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmlYjmnpzvvIjku4VlbGVtZW5077yJXHJcbiAgICAgKiovXHJcbiAgICBlZmZlY3Q6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDoh6rliqjmn5PoibLpopzoibLlgLzliJfooahcclxuICAgICAqL1xyXG4gICAgYXV0b0NvbG9yczoge1xyXG4gICAgICB0eXBlOiBBcnJheVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6Ieq5Yqo5Li76aKY5YiX6KGo77yI5LuFZWxlbWVudO+8iVxyXG4gICAgICog44CQIGxpZ2h0LCBwbGFpbiDjgJFcclxuICAgICAqL1xyXG4gICAgYXV0b0VmZmVjdHM6IHtcclxuICAgICAgdHlwZTogQXJyYXlcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaYvuekuuexu+Wei++8muOAkHRleHQsIHRhZ+OAkVxyXG4gICAgICovXHJcbiAgICB0eXBlOiB7XHJcbiAgICAgIGRlZmF1bHQ6IFwidGFnXCJcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOWAvOeahOexu+Wei++8jOOAkCB2YWx1ZSB8IG9iamVjdOOAkVxyXG4gICAgICovXHJcbiAgICB2YWx1ZVR5cGU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlvZN2YWx1ZeWAvOS4jeWcqOWtl+WFuOS4reaXtum7mOiupOaYvuekuueahOaWh+acrFxyXG4gICAgICovXHJcbiAgICBkZWZhdWx0TGFiZWw6IHt9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbGFiZWzoh6rlrprkuYlyZW5kZXJcclxuICAgICAqL1xyXG4gICAgbGFiZWxGb3JtYXR0ZXI6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb25cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOiHquWumuS5iemAiemhuXJlbmRlclxyXG4gICAgICovXHJcbiAgICBpdGVtUmVuZGVyOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXHJcbiAgICB9LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pyA5aSa5pi+56S655qE6YCJ6aG55pWw6YeP77yM6LaF5Ye66YOo5YiG5pi+56S65Li6ICtOXHJcbiAgICAgKi9cclxuICAgIG1heFZpc2libGU6IHtcclxuICAgICAgdHlwZTogTnVtYmVyXHJcbiAgICB9LFxyXG5cclxuICAgIGNsb3NhYmxlOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1wiY2xpY2tcIiwgXCJkaWN0LWNoYW5nZVwiLCBcImNsb3NlXCIsIFwidXBkYXRlOm1vZGVsVmFsdWVcIl0sXHJcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcclxuICAgIC8vIHRyYWNlLnRyYWNlKFwidmFsdWVzLWZvcm1hdFwiKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidmFsdWVzLWZvcm1hdCBpbml0XCIsIHByb3BzLm1vZGVsVmFsdWUpO1xyXG4gICAgLy9jb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCBDT0xPUl9MSVNUID0gdWkudGFnLmNvbG9ycztcclxuICAgIGNvbnN0IEVGRkVDVF9MSVNUID0gW1wicGxhaW5cIiwgXCJsaWdodFwiXTtcclxuXHJcbiAgICBjb25zdCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XHJcbiAgICBjb25zdCB7IGdldENvbG9yLCBnZXRWYWx1ZSwgcmVtb3ZlUHJvcFZhbHVlIH0gPSB1c2VkRGljdDtcclxuICAgIHVzZWREaWN0LndhdGNoVmFsdWUoKTtcclxuICAgIGZ1bmN0aW9uIHNldENvbG9yKHByb3BzOiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgICBpZiAoIWl0ZW0uZWZmZWN0ICYmIHByb3BzLmVmZmVjdCkge1xyXG4gICAgICAgIGl0ZW0uZWZmZWN0ID0gcHJvcHMuZWZmZWN0O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHR5cGVLZXkgPSB1aS50YWcudHlwZTtcclxuICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcihpdGVtKTtcclxuICAgICAgaWYgKGNvbG9yICE9IG51bGwpIHtcclxuICAgICAgICAvL+WmguaenOW3sue7j+mFjee9ruS6hmNvbG9yXHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb2xvciAhPSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v5bCG5Y6f5pyJ55qEY29sb3LlrZfmrrXliKDmjonvvIzpgb/lhY1uYWl2ZSBjb2xvcuaKpemUmVxyXG4gICAgICAgIHJlbW92ZVByb3BWYWx1ZShpdGVtLCBcImNvbG9yXCIpO1xyXG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcjtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb3BzLmNvbG9yID09PSBcImF1dG9cIikge1xyXG4gICAgICAgIGNvbnN0IGhhc2hjb2RlID0gZ2V0SGFzaENvZGUoZ2V0VmFsdWUoaXRlbSkpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGFzaGNvZGVcIiwgZ2V0VmFsdWUoaXRlbSksIGhhc2hjb2RlKTtcclxuICAgICAgICBjb25zdCBjb2xvcnMgPSBwcm9wcy5hdXRvQ29sb3JzID8gcHJvcHMuYXV0b0NvbG9ycyA6IENPTE9SX0xJU1Q7XHJcbiAgICAgICAgaXRlbVt0eXBlS2V5XSA9IGNvbG9yc1toYXNoY29kZSAlIGNvbG9ycy5sZW5ndGhdO1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBwcm9wcy5hdXRvRWZmZWN0cyA/IHByb3BzLmF1dG9FZmZlY3RzIDogRUZGRUNUX0xJU1Q7XHJcbiAgICAgICAgaXRlbS5lZmZlY3QgPSBlZmZlY3RzW01hdGguZmxvb3IoaGFzaGNvZGUgLyBjb2xvcnMubGVuZ3RoKSAlIGVmZmVjdHMubGVuZ3RoXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpdGVtW3R5cGVLZXldID0gcHJvcHMuY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb21wdXRlZFZhbHVlSXRlbXM6IFJlZjxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChwcm9wcy52YWx1ZVR5cGUgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSAmJiAhQXJyYXkuaXNBcnJheShwcm9wcy5tb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIFtwcm9wcy5tb2RlbFZhbHVlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLm1vZGVsVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XHJcbiAgICAgIGlmIChwcm9wcy5tb2RlbFZhbHVlID09IG51bGwgfHwgcHJvcHMubW9kZWxWYWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZUFyciA9IGJ1aWxkQXJyYXlWYWx1ZShwcm9wcyk7XHJcblxyXG4gICAgICBsZXQgb3B0aW9ucyA9IFtdO1xyXG5cclxuICAgICAgY29uc3QgdmFsdWVQcm9wID0gcHJvcHMuZGljdD8udmFsdWUgfHwgXCJ2YWx1ZVwiO1xyXG4gICAgICBjb25zdCBsYWJlbFByb3AgPSBwcm9wcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCI7XHJcblxyXG4gICAgICBpZiAoZGljdCkge1xyXG4gICAgICAgIG9wdGlvbnMgPSBkaWN0LmdldE5vZGVzRnJvbURhdGFNYXAodmFsdWVBcnIpO1xyXG4gICAgICAgIC8v6K6+572u6buY6K6kbGFiZWxcclxuICAgICAgICBmb3JFYWNoKG9wdGlvbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtsYWJlbFByb3BdID09IG51bGwpIHtcclxuICAgICAgICAgICAgaXRlbVtsYWJlbFByb3BdID0gcHJvcHMuZGVmYXVsdExhYmVsIHx8IGl0ZW1bdmFsdWVQcm9wXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zID0gW107XHJcbiAgICAgICAgZm9yRWFjaCh2YWx1ZUFyciwgKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgW3ZhbHVlUHJvcF06IGl0ZW0sXHJcbiAgICAgICAgICAgICAgW2xhYmVsUHJvcF06IGl0ZW1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbG9yZnVsT3B0aW9uczogYW55ID0gW107XHJcbiAgICAgIGZvckVhY2gob3B0aW9ucywgKGl0ZW0pID0+IHtcclxuICAgICAgICBjb2xvcmZ1bE9wdGlvbnMucHVzaChvbWl0KGl0ZW0sIFwiY2hpbGRyZW5cIikpO1xyXG4gICAgICB9KTtcclxuICAgICAgZm9yRWFjaChjb2xvcmZ1bE9wdGlvbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgc2V0Q29sb3IocHJvcHMsIGl0ZW0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGNvbG9yZnVsT3B0aW9ucztcclxuICAgIH0pO1xyXG4gICAgY29uc3QgdmlzaWJsZVZhbHVlSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGlmIChwcm9wcy5tYXhWaXNpYmxlID09IG51bGwgfHwgcHJvcHMubWF4VmlzaWJsZSA8IDApIHtcclxuICAgICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb21wdXRlZFZhbHVlSXRlbXMudmFsdWUuc2xpY2UoMCwgcHJvcHMubWF4VmlzaWJsZSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGhpZGRlblZhbHVlQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBjb21wdXRlZFZhbHVlSXRlbXMudmFsdWUubGVuZ3RoIC0gdmlzaWJsZVZhbHVlSXRlbXMudmFsdWUubGVuZ3RoO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZG9DbGljayhpdGVtOiBhbnkpIHtcclxuICAgICAgY3R4LmVtaXQoXCJjbGlja1wiLCB7IGl0ZW06IGl0ZW0gfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBkb0Nsb3NlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgICBjdHguZW1pdChcImNsb3NlXCIsIHsgaXRlbSwgaW5kZXggfSk7XHJcbiAgICAgIGNvbnN0IG5ld1ZhbHVlczogYW55W10gPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wdXRlZFZhbHVlSXRlbXMudmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcclxuICAgICAgICAgIG5ld1ZhbHVlcy5wdXNoKGdldFZhbHVlKGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZVtpXSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG5ld1ZhbHVlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIC4uLnVzZWREaWN0LFxyXG4gICAgICBkb0NsaWNrLFxyXG4gICAgICBjb21wdXRlZFZhbHVlSXRlbXMsXHJcbiAgICAgIHZpc2libGVWYWx1ZUl0ZW1zLFxyXG4gICAgICBoaWRkZW5WYWx1ZUNvdW50LFxyXG4gICAgICBkb0Nsb3NlXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuLmZzLXZhbHVlcy1mb3JtYXQgLmZzLXRhZyB7XHJcbiAgbWFyZ2luOiAycHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIC5mcy10YWctaWNvbiB7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8c3BhbiBjbGFzcz1cImZzLXZhbHVlcy1mb3JtYXRcIj5cclxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbVJlbmRlclwiPlxyXG4gICAgICA8ZnMtcmVuZGVyIHYtZm9yPVwiaXRlbSBpbiB2aXNpYmxlVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiIDpyZW5kZXItZnVuYz1cIml0ZW1SZW5kZXJcIiA6c2NvcGU9XCJpdGVtXCIgLz5cclxuICAgICAgPHNwYW4gdi1pZj1cImhpZGRlblZhbHVlQ291bnQgPiAwXCI+K3t7IGhpZGRlblZhbHVlQ291bnQgfX08L3NwYW4+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cInR5cGUgPT09ICd0ZXh0J1wiPlxyXG4gICAgICA8c3BhbiB2LWZvcj1cIml0ZW0gaW4gdmlzaWJsZVZhbHVlSXRlbXNcIiA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIiBAY2xpY2s9XCJkb0NsaWNrKGl0ZW0pXCI+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIHYtaWY9XCJoaWRkZW5WYWx1ZUNvdW50ID4gMFwiPit7eyBoaWRkZW5WYWx1ZUNvdW50IH19PC9zcGFuPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gdmlzaWJsZVZhbHVlSXRlbXNcIiA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIj5cclxuICAgICAgICA8Y29tcG9uZW50XHJcbiAgICAgICAgICA6aXM9XCJ1aS50YWcubmFtZVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZzLXRhZ1wiXHJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgOmNsb3NhYmxlPVwiY2xvc2FibGVcIlxyXG4gICAgICAgICAgdi1iaW5kPVwiaXRlbVwiXHJcbiAgICAgICAgICA6aWNvbj1cIm51bGxcIlxyXG4gICAgICAgICAgOm5hbWU9XCJudWxsXCJcclxuICAgICAgICAgIEBjbG9zZT1cImRvQ2xvc2UoaW5kZXgsIGl0ZW0pXCJcclxuICAgICAgICAgIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5pY29uXCI+XHJcbiAgICAgICAgICAgIDxmcy1pY29uIDppY29uPVwiaXRlbS5pY29uXCIgOnNwaW49XCJpdGVtLmljb25TcGluXCIgY2xhc3M9XCJmcy10YWctaWNvblwiIC8+XHJcbiAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAge3sgZ2V0TGFiZWwoaXRlbSkgfX1cclxuICAgICAgICA8L2NvbXBvbmVudD5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPGNvbXBvbmVudCB2LWlmPVwiaGlkZGVuVmFsdWVDb3VudCA+IDBcIiA6aXM9XCJ1aS50YWcubmFtZVwiIGNsYXNzPVwiZnMtdGFnXCIgc2l6ZT1cInNtYWxsXCIgOmNsb3NhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAre3sgaGlkZGVuVmFsdWVDb3VudCB9fVxyXG4gICAgICA8L2NvbXBvbmVudD5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9zcGFuPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgZm9yRWFjaCwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuZnVuY3Rpb24gZ2V0SGFzaENvZGUoc3RyOiBzdHJpbmcpIHtcclxuICBpZiAoc3RyID09IG51bGwpIHtcclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgc3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyKTtcclxuICB9XHJcbiAgbGV0IGhhc2ggPSAwO1xyXG4gIGxldCBpO1xyXG4gIGxldCBjaHI7XHJcbiAgbGV0IGxlbjtcclxuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2g7XHJcbiAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICBjaHIgPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XHJcbiAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxyXG4gIH1cclxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJ1aWxkQXJyYXlWYWx1ZShwcm9wczogYW55KSB7XHJcbiAgbGV0IHZhbHVlQXJyID0gW107XHJcbiAgaWYgKHR5cGVvZiBwcm9wcy5tb2RlbFZhbHVlID09PSBcInN0cmluZ1wiICYmIHByb3BzLm11bHRpcGxlICYmIHByb3BzLnNlcGFyYXRvciAhPSBudWxsICYmIHByb3BzLnNlcGFyYXRvciAhPT0gXCJcIikge1xyXG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlLnNwbGl0KHByb3BzLnNlcGFyYXRvcik7XHJcbiAgfSBlbHNlIGlmIChwcm9wcy5tb2RlbFZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgIC8vIOacrOadpeWwseaYr+aVsOe7hOeahFxyXG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB2YWx1ZUFyciA9IFtwcm9wcy5tb2RlbFZhbHVlXTtcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlQXJyO1xyXG59XHJcblxyXG4vKipcclxuICogdmFsdWXmoLzlvI/ljJblsZXnpLrnu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc1ZhbHVlc0Zvcm1hdFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOWAvFxyXG4gICAgICovXHJcbiAgICBtb2RlbFZhbHVlOiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog5a2X5YW46YWN572uXHJcbiAgICAgKi9cclxuICAgIGRpY3Q6IHt9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblpJrpgIlcclxuICAgICAqL1xyXG4gICAgbXVsdGlwbGU6IHsgZGVmYXVsdDogdHJ1ZSB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDliIbpmpTnrKY8YnIvPlxyXG4gICAgICog5aSa6YCJ5pe277yM5aaC5p6cdmFsdWXkuLpzdHJpbmfvvIzliJnku6Xor6XliIbpmpTnrKbliIblibLmiJDlpJrkuKrlsZXnpLo8YnIvPlxyXG4gICAgICog5Lyg5YWl56m65a2X56ym5Liy77yM6KGo56S65LiN5YiG5YmyPGJyLz5cclxuICAgICAqL1xyXG4gICAgc2VwYXJhdG9yOiB7IGRlZmF1bHQ6IFwiLFwiIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpopzoibJcclxuICAgICAqIGVsZW1lbnQ944CQYXV0bywgcHJpbWFyeSwgc3VjY2Vzcywgd2FybmluZywgZGFuZ2VyICxpbmZv44CRXHJcbiAgICAgKiBhbnRkdj3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCBibHVlLHJlZCwuLi7jgJFcclxuICAgICAqIOmFjee9rmF1dG/vvIzliJnoh6rliqjmoLnmja52YWx1ZeWAvGhhc2hjb2Rl5YiG6YWN6aKc6Imy5YC8XHJcbiAgICAgKi9cclxuICAgIGNvbG9yOiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog5pWI5p6c77yI5LuFZWxlbWVudO+8iVxyXG4gICAgICoqL1xyXG4gICAgZWZmZWN0OiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog6Ieq5Yqo5p+T6Imy6aKc6Imy5YC85YiX6KGoXHJcbiAgICAgKi9cclxuICAgIGF1dG9Db2xvcnM6IHtcclxuICAgICAgdHlwZTogQXJyYXlcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOiHquWKqOS4u+mimOWIl+ihqO+8iOS7hWVsZW1lbnTvvIlcclxuICAgICAqIOOAkCBsaWdodCwgcGxhaW4g44CRXHJcbiAgICAgKi9cclxuICAgIGF1dG9FZmZlY3RzOiB7XHJcbiAgICAgIHR5cGU6IEFycmF5XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmL7npLrnsbvlnovvvJrjgJB0ZXh0LCB0YWfjgJFcclxuICAgICAqL1xyXG4gICAgdHlwZToge1xyXG4gICAgICBkZWZhdWx0OiBcInRhZ1wiXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDlgLznmoTnsbvlnovvvIzjgJAgdmFsdWUgfCBvYmplY3TjgJFcclxuICAgICAqL1xyXG4gICAgdmFsdWVUeXBlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog5b2TdmFsdWXlgLzkuI3lnKjlrZflhbjkuK3ml7bpu5jorqTmmL7npLrnmoTmlofmnKxcclxuICAgICAqL1xyXG4gICAgZGVmYXVsdExhYmVsOiB7fSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIGxhYmVs6Ieq5a6a5LmJcmVuZGVyXHJcbiAgICAgKi9cclxuICAgIGxhYmVsRm9ybWF0dGVyOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDoh6rlrprkuYnpgInpoblyZW5kZXJcclxuICAgICAqL1xyXG4gICAgaXRlbVJlbmRlcjoge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvblxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOacgOWkmuaYvuekuueahOmAiemhueaVsOmHj++8jOi2heWHuumDqOWIhuaYvuekuuS4uiArTlxyXG4gICAgICovXHJcbiAgICBtYXhWaXNpYmxlOiB7XHJcbiAgICAgIHR5cGU6IE51bWJlclxyXG4gICAgfSxcclxuXHJcbiAgICBjbG9zYWJsZToge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcImNsaWNrXCIsIFwiZGljdC1jaGFuZ2VcIiwgXCJjbG9zZVwiLCBcInVwZGF0ZTptb2RlbFZhbHVlXCJdLFxyXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XHJcbiAgICAvLyB0cmFjZS50cmFjZShcInZhbHVlcy1mb3JtYXRcIik7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInZhbHVlcy1mb3JtYXQgaW5pdFwiLCBwcm9wcy5tb2RlbFZhbHVlKTtcclxuICAgIC8vY29uc3QgZGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgY29uc3QgQ09MT1JfTElTVCA9IHVpLnRhZy5jb2xvcnM7XHJcbiAgICBjb25zdCBFRkZFQ1RfTElTVCA9IFtcInBsYWluXCIsIFwibGlnaHRcIl07XHJcblxyXG4gICAgY29uc3QgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xyXG4gICAgY29uc3QgeyBnZXRDb2xvciwgZ2V0VmFsdWUsIHJlbW92ZVByb3BWYWx1ZSB9ID0gdXNlZERpY3Q7XHJcbiAgICB1c2VkRGljdC53YXRjaFZhbHVlKCk7XHJcbiAgICBmdW5jdGlvbiBzZXRDb2xvcihwcm9wczogYW55LCBpdGVtOiBhbnkpIHtcclxuICAgICAgaWYgKCFpdGVtLmVmZmVjdCAmJiBwcm9wcy5lZmZlY3QpIHtcclxuICAgICAgICBpdGVtLmVmZmVjdCA9IHByb3BzLmVmZmVjdDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0eXBlS2V5ID0gdWkudGFnLnR5cGU7XHJcbiAgICAgIGNvbnN0IGNvbG9yID0gZ2V0Q29sb3IoaXRlbSk7XHJcbiAgICAgIGlmIChjb2xvciAhPSBudWxsKSB7XHJcbiAgICAgICAgLy/lpoLmnpzlt7Lnu4/phY3nva7kuoZjb2xvclxyXG4gICAgICAgIGlmICh0eXBlb2YgY29sb3IgIT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+WwhuWOn+acieeahGNvbG9y5a2X5q615Yig5o6J77yM6YG/5YWNbmFpdmUgY29sb3LmiqXplJlcclxuICAgICAgICByZW1vdmVQcm9wVmFsdWUoaXRlbSwgXCJjb2xvclwiKTtcclxuICAgICAgICBpdGVtW3R5cGVLZXldID0gY29sb3I7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wcy5jb2xvciA9PT0gXCJhdXRvXCIpIHtcclxuICAgICAgICBjb25zdCBoYXNoY29kZSA9IGdldEhhc2hDb2RlKGdldFZhbHVlKGl0ZW0pKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImhhc2hjb2RlXCIsIGdldFZhbHVlKGl0ZW0pLCBoYXNoY29kZSk7XHJcbiAgICAgICAgY29uc3QgY29sb3JzID0gcHJvcHMuYXV0b0NvbG9ycyA/IHByb3BzLmF1dG9Db2xvcnMgOiBDT0xPUl9MSVNUO1xyXG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcnNbaGFzaGNvZGUgJSBjb2xvcnMubGVuZ3RoXTtcclxuICAgICAgICBjb25zdCBlZmZlY3RzID0gcHJvcHMuYXV0b0VmZmVjdHMgPyBwcm9wcy5hdXRvRWZmZWN0cyA6IEVGRkVDVF9MSVNUO1xyXG4gICAgICAgIGl0ZW0uZWZmZWN0ID0gZWZmZWN0c1tNYXRoLmZsb29yKGhhc2hjb2RlIC8gY29sb3JzLmxlbmd0aCkgJSBlZmZlY3RzLmxlbmd0aF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbVt0eXBlS2V5XSA9IHByb3BzLmNvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRWYWx1ZUl0ZW1zOiBSZWY8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgaWYgKHByb3BzLm1vZGVsVmFsdWUgJiYgIUFycmF5LmlzQXJyYXkocHJvcHMubW9kZWxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBbcHJvcHMubW9kZWxWYWx1ZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm9wcy5tb2RlbFZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xyXG4gICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSA9PSBudWxsIHx8IHByb3BzLm1vZGVsVmFsdWUgPT09IFwiXCIpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsdWVBcnIgPSBidWlsZEFycmF5VmFsdWUocHJvcHMpO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgIGNvbnN0IHZhbHVlUHJvcCA9IHByb3BzLmRpY3Q/LnZhbHVlIHx8IFwidmFsdWVcIjtcclxuICAgICAgY29uc3QgbGFiZWxQcm9wID0gcHJvcHMuZGljdD8ubGFiZWwgfHwgXCJsYWJlbFwiO1xyXG5cclxuICAgICAgaWYgKGRpY3QpIHtcclxuICAgICAgICBvcHRpb25zID0gZGljdC5nZXROb2Rlc0Zyb21EYXRhTWFwKHZhbHVlQXJyKTtcclxuICAgICAgICAvL+iuvue9rum7mOiupGxhYmVsXHJcbiAgICAgICAgZm9yRWFjaChvcHRpb25zLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bbGFiZWxQcm9wXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bbGFiZWxQcm9wXSA9IHByb3BzLmRlZmF1bHRMYWJlbCB8fCBpdGVtW3ZhbHVlUHJvcF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIGZvckVhY2godmFsdWVBcnIsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgICAgICBvcHRpb25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvcHRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIFt2YWx1ZVByb3BdOiBpdGVtLFxyXG4gICAgICAgICAgICAgIFtsYWJlbFByb3BdOiBpdGVtXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBjb2xvcmZ1bE9wdGlvbnM6IGFueSA9IFtdO1xyXG4gICAgICBmb3JFYWNoKG9wdGlvbnMsIChpdGVtKSA9PiB7XHJcbiAgICAgICAgY29sb3JmdWxPcHRpb25zLnB1c2gob21pdChpdGVtLCBcImNoaWxkcmVuXCIpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGZvckVhY2goY29sb3JmdWxPcHRpb25zLCAoaXRlbSkgPT4ge1xyXG4gICAgICAgIHNldENvbG9yKHByb3BzLCBpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBjb2xvcmZ1bE9wdGlvbnM7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHZpc2libGVWYWx1ZUl0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBpZiAocHJvcHMubWF4VmlzaWJsZSA9PSBudWxsIHx8IHByb3BzLm1heFZpc2libGUgPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlLnNsaWNlKDAsIHByb3BzLm1heFZpc2libGUpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBoaWRkZW5WYWx1ZUNvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlLmxlbmd0aCAtIHZpc2libGVWYWx1ZUl0ZW1zLnZhbHVlLmxlbmd0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGRvQ2xpY2soaXRlbTogYW55KSB7XHJcbiAgICAgIGN0eC5lbWl0KFwiY2xpY2tcIiwgeyBpdGVtOiBpdGVtIH0pO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZG9DbG9zZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgICAgY3R4LmVtaXQoXCJjbG9zZVwiLCB7IGl0ZW0sIGluZGV4IH0pO1xyXG4gICAgICBjb25zdCBuZXdWYWx1ZXM6IGFueVtdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGkgIT09IGluZGV4KSB7XHJcbiAgICAgICAgICBuZXdWYWx1ZXMucHVzaChnZXRWYWx1ZShjb21wdXRlZFZhbHVlSXRlbXMudmFsdWVbaV0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdWYWx1ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICAuLi51c2VkRGljdCxcclxuICAgICAgZG9DbGljayxcclxuICAgICAgY29tcHV0ZWRWYWx1ZUl0ZW1zLFxyXG4gICAgICB2aXNpYmxlVmFsdWVJdGVtcyxcclxuICAgICAgaGlkZGVuVmFsdWVDb3VudCxcclxuICAgICAgZG9DbG9zZVxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy12YWx1ZXMtZm9ybWF0IC5mcy10YWcge1xyXG4gIG1hcmdpbjogMnB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICAuZnMtdGFnLWljb24ge1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPHNwYW4+XHJcbiAgICA8dGVtcGxhdGUgdi1pZj1cImNvbXB1dGVkTXVsdGlwbGVcIj5cclxuICAgICAgPGRpdiB2LWZvcj1cIihMYWJlbHMsIEluZGV4KSBpbiBtdWx0aXBsZUxhYmVsc1wiIDprZXk9XCJJbmRleFwiPlxyXG4gICAgICAgIDxzcGFuIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBMYWJlbHNcIiA6a2V5PVwiaW5kZXhcIj5cclxuICAgICAgICAgIDxzcGFuIHYtaWY9XCJpbmRleCAhPT0gMFwiPiAvIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGxhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgIDxzcGFuIHYtaWY9XCJpbmRleCAhPT0gMFwiPiAvIDwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG4vKipcclxuICog57qn6IGU5pWw5o2u5qC85byP5YyW5bGV56S657uE5Lu2XHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJGb3JtYXRcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiAgIOWAvDxici8+XHJcbiAgICAgKiAgIOWNlemAieaXtiAnMSwyLDMnIOaIliBbMSwyLDNdPGJyLz5cclxuICAgICAqICAg5aSa6YCJW1sxLDIsM10sWzQsNSw2XV08YnIvPlxyXG4gICAgICovXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBtb2RlbFZhbHVlOiB7XHJcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxyXG4gICAgICByZXF1aXJlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiAgdmFsdWXnmoTliIbpmpTnrKY8YnIvPlxyXG4gICAgICogIOWkmumAieaXtu+8jOWmguaenHZhbHVl5Li6c3RyaW5n77yM5YiZ5Lul6K+l5YiG6ZqU56ym5YiG5Ymy5oiQ5aSa5Liq5bGV56S6PGJyLz5cclxuICAgICAqICDkvKDlhaXnqbrlrZfnrKbkuLLvvIzooajnpLrkuI3liIblibI8YnIvPlxyXG4gICAgICovXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBzZXBhcmF0b3I6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiBcIixcIiwgcmVxdWlyZTogZmFsc2UgfSxcclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5aSa6YCJXHJcbiAgICAgKi9cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIG11bHRpcGxlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXHJcbiAgICAvKipcclxuICAgICAqIOaVsOaNruWtl+WFuFxyXG4gICAgICovXHJcbiAgICBkaWN0OiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxyXG4gICAgICByZXF1aXJlOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0gYXMgYW55LFxyXG4gIGVtaXRzOiBbXCJkaWN0LWNoYW5nZVwiXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmIChwcm9wcy5kaWN0Py5nZXROb2Rlc0J5VmFsdWVzKSB7XHJcbiAgICAgIGRpY3Qud2F0Y2hWYWx1ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkTXVsdGlwbGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHByb3BzLm11bHRpcGxlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uZGljdCxcclxuICAgICAgY29tcHV0ZWRNdWx0aXBsZVxyXG4gICAgfTtcclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgbGFiZWxzKCkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkVmFsdWVJdGVtKHRoaXMubW9kZWxWYWx1ZSk7XHJcbiAgICB9LFxyXG4gICAgbXVsdGlwbGVMYWJlbHMoKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGFyciA9IFtdO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgYXJyLnB1c2godGhpcy5idWlsZFZhbHVlSXRlbShpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGdldFZhbHVlQXJyKHZhbHVlczogYW55KSB7XHJcbiAgICAgIGlmICh2YWx1ZXMgPT0gbnVsbCkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgdmFsdWVzID0gW107XHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5tb2RlbFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIGl0ZW0pIHtcclxuICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzdWIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgIHZhbHVlcyA9IHRoaXMubW9kZWxWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhcnIgPSBudWxsO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWVzID09PSBcInN0cmluZ1wiICYmICF0aGlzLm11bHRpcGxlICYmIHRoaXMuc2VwYXJhdG9yICE9IG51bGwgJiYgdGhpcy5zZXBhcmF0b3IgIT09IFwiXCIpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgYXJyID0gdmFsdWVzLnNwbGl0KHRoaXMuc2VwYXJhdG9yKTtcclxuICAgICAgfSBlbHNlIGlmICh2YWx1ZXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgIGFyciA9IHZhbHVlcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhcnIgPSBbdmFsdWVzXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXJyO1xyXG4gICAgfSxcclxuICAgIGJ1aWxkVmFsdWVJdGVtKHZhbHVlczogYW55KSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgY29uc3QgYXJyID0gdGhpcy5nZXRWYWx1ZUFycih2YWx1ZXMpO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBkaWN0ID0gdGhpcy5nZXREaWN0KCk7XHJcbiAgICAgIGlmIChkaWN0KSB7XHJcbiAgICAgICAgcmV0dXJuIGRpY3QuZ2V0Tm9kZXNGcm9tRGF0YU1hcChhcnIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8c3Bhbj5cclxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY29tcHV0ZWRNdWx0aXBsZVwiPlxyXG4gICAgICA8ZGl2IHYtZm9yPVwiKExhYmVscywgSW5kZXgpIGluIG11bHRpcGxlTGFiZWxzXCIgOmtleT1cIkluZGV4XCI+XHJcbiAgICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIExhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPHNwYW4gdi1pZj1cImluZGV4ICE9PSAwXCI+IC8gPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICA8c3BhbiB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gbGFiZWxzXCIgOmtleT1cImluZGV4XCI+XHJcbiAgICAgICAgPHNwYW4gdi1pZj1cImluZGV4ICE9PSAwXCI+IC8gPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gIDwvc3Bhbj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcbi8qKlxyXG4gKiDnuqfogZTmlbDmja7moLzlvI/ljJblsZXnpLrnu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0RpY3RDYXNjYWRlckZvcm1hdFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqICAg5YC8PGJyLz5cclxuICAgICAqICAg5Y2V6YCJ5pe2ICcxLDIsMycg5oiWIFsxLDIsM108YnIvPlxyXG4gICAgICogICDlpJrpgIlbWzEsMiwzXSxbNCw1LDZdXTxici8+XHJcbiAgICAgKi9cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIG1vZGVsVmFsdWU6IHtcclxuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXHJcbiAgICAgIHJlcXVpcmU6IHRydWVcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqICB2YWx1ZeeahOWIhumalOespjxici8+XHJcbiAgICAgKiAg5aSa6YCJ5pe277yM5aaC5p6cdmFsdWXkuLpzdHJpbmfvvIzliJnku6Xor6XliIbpmpTnrKbliIblibLmiJDlpJrkuKrlsZXnpLo8YnIvPlxyXG4gICAgICogIOS8oOWFpeepuuWtl+espuS4su+8jOihqOekuuS4jeWIhuWJsjxici8+XHJcbiAgICAgKi9cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHNlcGFyYXRvcjogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IFwiLFwiLCByZXF1aXJlOiBmYWxzZSB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKblpJrpgIlcclxuICAgICAqL1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgbXVsdGlwbGU6IHsgdHlwZTogQm9vbGVhbiwgZGVmYXVsdDogZmFsc2UgfSxcclxuICAgIC8qKlxyXG4gICAgICog5pWw5o2u5a2X5YW4XHJcbiAgICAgKi9cclxuICAgIGRpY3Q6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXHJcbiAgICAgIHJlcXVpcmU6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSBhcyBhbnksXHJcbiAgZW1pdHM6IFtcImRpY3QtY2hhbmdlXCJdLFxyXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcclxuICAgIGNvbnN0IGRpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgaWYgKHByb3BzLmRpY3Q/LmdldE5vZGVzQnlWYWx1ZXMpIHtcclxuICAgICAgZGljdC53YXRjaFZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRNdWx0aXBsZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gcHJvcHMubXVsdGlwbGU7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5kaWN0LFxyXG4gICAgICBjb21wdXRlZE11bHRpcGxlXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBsYWJlbHMoKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRWYWx1ZUl0ZW0odGhpcy5tb2RlbFZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBtdWx0aXBsZUxhYmVscygpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5tb2RlbFZhbHVlID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgYXJyID0gW107XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWxWYWx1ZSkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBhcnIucHVzaCh0aGlzLmJ1aWxkVmFsdWVJdGVtKGl0ZW0pKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXJyO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgZ2V0VmFsdWVBcnIodmFsdWVzOiBhbnkpIHtcclxuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgaXRlbSkge1xyXG4gICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN1Yik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgdmFsdWVzID0gdGhpcy5tb2RlbFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodmFsdWVzID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFyciA9IG51bGw7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZXMgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLnNlcGFyYXRvciAhPT0gXCJcIikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBhcnIgPSB2YWx1ZXMuc3BsaXQodGhpcy5zZXBhcmF0b3IpO1xyXG4gICAgICB9IGVsc2UgaWYgKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgYXJyID0gdmFsdWVzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFyciA9IFt2YWx1ZXNdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LFxyXG4gICAgYnVpbGRWYWx1ZUl0ZW0odmFsdWVzOiBhbnkpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLmdldFZhbHVlQXJyKHZhbHVlcyk7XHJcblxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGNvbnN0IGRpY3QgPSB0aGlzLmdldERpY3QoKTtcclxuICAgICAgaWYgKGRpY3QpIHtcclxuICAgICAgICByZXR1cm4gZGljdC5nZXROb2Rlc0Zyb21EYXRhTWFwKGFycik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnRcclxuICAgIDppcz1cInVpLmNhc2NhZGVyLm5hbWVcIlxyXG4gICAgcmVmPVwiY2FzY2FkZXJSZWZcIlxyXG4gICAgOm9wdGlvbnM9XCJjb21wdXRlZE9wdGlvbnNcIlxyXG4gICAgdi1iaW5kPVwiZmllbGROYW1lc0JpbmRlclwiXHJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RDaGFuZ2VcIlxyXG4gID5cclxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIih2YWx1ZSwga2V5KSBvZiBtZXJnZWRTbG90c1wiIDprZXk9XCJrZXlcIiAjW2tleV09XCJzY29wZVwiPlxyXG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwidmFsdWVcIiA6c2NvcGU9XCJzY29wZVwiIC8+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUHJvcFR5cGUsIHJlZiwgU2xvdCB9IGZyb20gXCJ2dWVcIjtcclxuLyoqXHJcbiAqIOWtl+WFuOe6p+iBlOe7hOS7tlxyXG4gKiDmlK/mjIFlbC1jYXNjYWRlcnxhLWNhc2NhZGVy57uE5Lu255qE5Y+C5pWwXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjphY3nva5cclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXHJcbiAgICAvKipcclxuICAgICAqIOi9rOaNokRpY3REYXRhXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOe6p+iBlOmAieaLqeWZqOaPkuanve+8jOaooeadv+aPkuanveWQjOWQjeaXtuS8mOWFiFxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8UmVjb3JkPHN0cmluZywgU2xvdD4+LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwiZGljdC1jaGFuZ2VcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxyXG4gICAgICovXHJcbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJjaGFuZ2VcIlxyXG4gIF0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgY2FzY2FkZXJSZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGRpY3RVc2VSZXQgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IGZpZWxkTmFtZXNCaW5kZXIgPSByZWYoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmIChwcm9wcy5kaWN0KSB7XHJcbiAgICAgIGZpZWxkTmFtZXNCaW5kZXIudmFsdWUgPSB1aS5jYXNjYWRlci5maWVsZE5hbWVzKHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdmFsdWU6IHByb3BzLmRpY3QudmFsdWUsXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGxhYmVsOiBwcm9wcy5kaWN0LmxhYmVsLFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBjaGlsZHJlbjogcHJvcHMuZGljdC5jaGlsZHJlblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IGRpY3RVc2VSZXQuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcbiAgICBjb25zdCBtZXJnZWRTbG90cyA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLnByb3BzLnNsb3RzLCAuLi5jdHguc2xvdHMgfSkpO1xyXG5cclxuICAgIGZ1bmN0aW9uIG9uU2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICAgICAgY29uc3QgZGljdCA9IGRpY3RVc2VSZXQuZ2V0RGljdCgpO1xyXG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XHJcbiAgICAgICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChvcHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBzZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIGNhc2NhZGVyUmVmLFxyXG4gICAgICAuLi5kaWN0VXNlUmV0LFxyXG4gICAgICBmaWVsZE5hbWVzQmluZGVyLFxyXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXHJcbiAgICAgIG1lcmdlZFNsb3RzLFxyXG4gICAgICBvblNlbGVjdENoYW5nZVxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnRcclxuICAgIDppcz1cInVpLmNhc2NhZGVyLm5hbWVcIlxyXG4gICAgcmVmPVwiY2FzY2FkZXJSZWZcIlxyXG4gICAgOm9wdGlvbnM9XCJjb21wdXRlZE9wdGlvbnNcIlxyXG4gICAgdi1iaW5kPVwiZmllbGROYW1lc0JpbmRlclwiXHJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RDaGFuZ2VcIlxyXG4gID5cclxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIih2YWx1ZSwga2V5KSBvZiBtZXJnZWRTbG90c1wiIDprZXk9XCJrZXlcIiAjW2tleV09XCJzY29wZVwiPlxyXG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwidmFsdWVcIiA6c2NvcGU9XCJzY29wZVwiIC8+XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUHJvcFR5cGUsIHJlZiwgU2xvdCB9IGZyb20gXCJ2dWVcIjtcclxuLyoqXHJcbiAqIOWtl+WFuOe6p+iBlOe7hOS7tlxyXG4gKiDmlK/mjIFlbC1jYXNjYWRlcnxhLWNhc2NhZGVy57uE5Lu255qE5Y+C5pWwXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjphY3nva5cclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXHJcbiAgICAvKipcclxuICAgICAqIOi9rOaNokRpY3REYXRhXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIOe6p+iBlOmAieaLqeWZqOaPkuanve+8jOaooeadv+aPkuanveWQjOWQjeaXtuS8mOWFiFxyXG4gICAgICovXHJcbiAgICBzbG90czoge1xyXG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8UmVjb3JkPHN0cmluZywgU2xvdD4+LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwiZGljdC1jaGFuZ2VcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxyXG4gICAgICovXHJcbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJjaGFuZ2VcIlxyXG4gIF0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgY2FzY2FkZXJSZWYgPSByZWYoKTtcclxuICAgIGNvbnN0IGRpY3RVc2VSZXQgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IGZpZWxkTmFtZXNCaW5kZXIgPSByZWYoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmIChwcm9wcy5kaWN0KSB7XHJcbiAgICAgIGZpZWxkTmFtZXNCaW5kZXIudmFsdWUgPSB1aS5jYXNjYWRlci5maWVsZE5hbWVzKHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdmFsdWU6IHByb3BzLmRpY3QudmFsdWUsXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGxhYmVsOiBwcm9wcy5kaWN0LmxhYmVsLFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBjaGlsZHJlbjogcHJvcHMuZGljdC5jaGlsZHJlblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IGRpY3RVc2VSZXQuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcbiAgICBjb25zdCBtZXJnZWRTbG90cyA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLnByb3BzLnNsb3RzLCAuLi5jdHguc2xvdHMgfSkpO1xyXG5cclxuICAgIGZ1bmN0aW9uIG9uU2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICAgICAgY29uc3QgZGljdCA9IGRpY3RVc2VSZXQuZ2V0RGljdCgpO1xyXG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XHJcbiAgICAgICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChvcHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBzZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIGNhc2NhZGVyUmVmLFxyXG4gICAgICAuLi5kaWN0VXNlUmV0LFxyXG4gICAgICBmaWVsZE5hbWVzQmluZGVyLFxyXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXHJcbiAgICAgIG1lcmdlZFNsb3RzLFxyXG4gICAgICBvblNlbGVjdENoYW5nZVxyXG4gICAgfTtcclxuICB9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnQgOmlzPVwidWkuY2hlY2tib3hHcm91cC5uYW1lXCIgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIj5cclxuICAgIDxjb21wb25lbnRcclxuICAgICAgOmlzPVwib3B0aW9uTmFtZSB8fCB1aS5jaGVja2JveC5uYW1lXCJcclxuICAgICAgdi1mb3I9XCJpdGVtIG9mIGNvbXB1dGVkT3B0aW9uc1wiXHJcbiAgICAgIHJlZj1cImNoZWNrYm94UmVmXCJcclxuICAgICAgOmtleT1cImdldFZhbHVlKGl0ZW0pXCJcclxuICAgICAgOlt1aS5jaGVja2JveC52YWx1ZV09XCJnZXRWYWx1ZShpdGVtKVwiXHJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcclxuICAgICAgPnt7IGdldExhYmVsKGl0ZW0pIH19PC9jb21wb25lbnRcclxuICAgID5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcclxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuXHJcbi8qKlxyXG4gKiDlrZflhbhjaGVja2JveFxyXG4gKiDmlK/mjIFlbC1jaGVja2JveHxhLWNoZWNrYm945Y+C5pWwXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0Q2hlY2tib3hcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbhcclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiB1bmRlZmluZWQsIHJlcXVpcmU6IGZhbHNlIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcclxuICAgICAqL1xyXG4gICAgb3B0aW9uTmFtZToge1xyXG4gICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpgInpobnnmoTlsZ7mgKdcclxuICAgICAqL1xyXG4gICAgb3B0aW9uUHJvcHM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8qKlxyXG4gICAgICog6L2s5o2iRGljdERhdGFcclxuICAgICAqL1xyXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcclxuICAgICAgdHlwZTogRnVuY3Rpb24sXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1pdHM6IFtcclxuICAgIC8qKlxyXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwiZGljdC1jaGFuZ2VcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxyXG4gICAgICovXHJcbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxyXG4gICAgLyoqXHJcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJjaGFuZ2VcIlxyXG4gIF0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuY2hlY2tib3hHcm91cC5tb2RlbFZhbHVlKTtcclxuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xyXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XHJcbiAgICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcclxuICAgICAgICAgICAgaWYgKG9wdCkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICAuLi51c2VkRGljdCxcclxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxyXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jaGVja2JveEdyb3VwLm5hbWVcIiBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiPlxyXG4gICAgPGNvbXBvbmVudFxyXG4gICAgICA6aXM9XCJvcHRpb25OYW1lIHx8IHVpLmNoZWNrYm94Lm5hbWVcIlxyXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcclxuICAgICAgcmVmPVwiY2hlY2tib3hSZWZcIlxyXG4gICAgICA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIlxyXG4gICAgICA6W3VpLmNoZWNrYm94LnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcclxuICAgICAgdi1iaW5kPVwib3B0aW9uUHJvcHNcIlxyXG4gICAgICA+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L2NvbXBvbmVudFxyXG4gICAgPlxyXG4gIDwvY29tcG9uZW50PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xyXG5cclxuLyoqXHJcbiAqIOWtl+WFuGNoZWNrYm94XHJcbiAqIOaUr+aMgWVsLWNoZWNrYm94fGEtY2hlY2tib3jlj4LmlbBcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0RpY3RDaGVja2JveFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOWtl+WFuFxyXG4gICAgICovXHJcbiAgICBkaWN0OiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXHJcbiAgICAgKi9cclxuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6IHVuZGVmaW5lZCwgcmVxdWlyZTogZmFsc2UgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhueeahOe7hOS7tuWQjeensFxyXG4gICAgICovXHJcbiAgICBvcHRpb25OYW1lOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIOmAiemhueeahOWxnuaAp1xyXG4gICAgICovXHJcbiAgICBvcHRpb25Qcm9wczoge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIGRlZmF1bHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDovazmjaJEaWN0RGF0YVxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXHJcbiAgICAgKi9cclxuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXHJcbiAgICAvKipcclxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxyXG4gICAgICovXHJcbiAgICBcImNoYW5nZVwiXHJcbiAgXSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xyXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4LCB1aS5jaGVja2JveEdyb3VwLm1vZGVsVmFsdWUpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcbiAgICBjb25zdCBvblNlbGVjdGVkQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcclxuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcclxuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xyXG4gICAgICAgICAgICBpZiAob3B0KSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgc2VsZWN0ZWRPcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIC4uLnVzZWREaWN0LFxyXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXHJcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2VcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8Y29tcG9uZW50IDppcz1cInVpLnN3aXRjaC5uYW1lXCIgcmVmPVwic3dpdGNoUmVmXCIgdi1iaW5kPVwiYmluZGluZ1wiIC8+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XHJcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIFByb3BUeXBlIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyBEaWN0T3B0aW9ucywgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcblxyXG4vKipcclxuICog5a2X5YW45byA5YWzXHJcbiAqIOaUr+aMgWVsLXN3aXRjaHxhLXN3aXRjaOeahOWxnuaAp1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRGljdFN3aXRjaFwiLFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOWtl+WFuOesrOS4gOS4quS4uuW8gOWQr1xyXG4gICAgICog56ys5LqM5Liq5Li65YWz6ZetXHJcbiAgICAgKi9cclxuICAgIGRpY3Q6IHtcclxuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPERpY3RPcHRpb25zPGFueT4+XHJcbiAgICB9LFxyXG4gICAgb3B0aW9uczoge30sXHJcbiAgICAvKipcclxuICAgICAqIOi9rOaNokRpY3REYXRhXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH1cclxuICB9IGFzIGFueSxcclxuICBlbWl0czogW1wiZGljdC1jaGFuZ2VcIl0sXHJcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuc3dpdGNoLm1vZGVsVmFsdWUpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1aSxcclxuICAgICAgLi4udXNlZERpY3QsXHJcbiAgICAgIGNvbXB1dGVkT3B0aW9uc1xyXG4gICAgfTtcclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBfYWN0aXZlKCkge1xyXG4gICAgICBpZiAodGhpcy5jb21wdXRlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkT3B0aW9uc1swXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9LFxyXG4gICAgX2luQWN0aXZlKCkge1xyXG4gICAgICBpZiAodGhpcy5jb21wdXRlZE9wdGlvbnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkT3B0aW9uc1sxXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9LFxyXG4gICAgYmluZGluZygpIHtcclxuICAgICAgY29uc3QgdWkgPSB1aUNvbnRleHQuZ2V0KCk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIFt1aS5zd2l0Y2guYWN0aXZlVGV4dF06IHRoaXMuX2FjdGl2ZVt0aGlzLmRpY3Q/LmxhYmVsIHx8IFwibGFiZWxcIl0sXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIFt1aS5zd2l0Y2guaW5hY3RpdmVUZXh0XTogdGhpcy5faW5BY3RpdmVbdGhpcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCJdLFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZUNvbG9yXTogdGhpcy5fYWN0aXZlW3RoaXMuZGljdD8uY29sb3IgfHwgXCJjb2xvclwiXSxcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgW3VpLnN3aXRjaC5pbmFjdGl2ZUNvbG9yXTogdGhpcy5faW5BY3RpdmVbdGhpcy5kaWN0Py5jb2xvciB8fCBcImNvbG9yXCJdLFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZVZhbHVlXTogdGhpcy5fYWN0aXZlW3RoaXMuZGljdD8udmFsdWUgfHwgXCJ2YWx1ZVwiXSxcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgW3VpLnN3aXRjaC5pbmFjdGl2ZVZhbHVlXTogdGhpcy5faW5BY3RpdmVbdGhpcy5kaWN0Py52YWx1ZSB8fCBcInZhbHVlXCJdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+IiwiPHRlbXBsYXRlPlxyXG4gIDxzcGFuPnt7IGRvRm9ybWF0IH19PC9zcGFuPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XHJcbi8qKlxyXG4gKiDml6XmnJ/moLzlvI/ljJblsZXnpLrnu4Tku7ZcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XHJcbiAgbmFtZTogXCJGc0RhdGVGb3JtYXRcIixcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDml6XmnJ/ml7bpl7TlgLzvvIzmlK/mjIFsb25nLHN0cmluZyxkYXRl562J77yM55SxZGF5anPovazljJZcclxuICAgICAqL1xyXG4gICAgbW9kZWxWYWx1ZTogeyByZXF1aXJlZDogZmFsc2UgfSxcclxuICAgIC8qKlxyXG4gICAgICogIOi+k+WFpeagvOW8j+WMlu+8jOS4jeS8oOWImeeUsWRheWpz6Ieq5Yqo6L2s5YyWXHJcbiAgICAgKi9cclxuICAgIHZhbHVlRm9ybWF0OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogdW5kZWZpbmVkLCByZXF1aXJlZDogZmFsc2UgfSxcclxuICAgIC8qKlxyXG4gICAgICogIOi+k+WHuuagvOW8j+WMllxyXG4gICAgICovXHJcbiAgICBmb3JtYXQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiBcIllZWVktTU0tREQgSEg6bW06c3NcIiwgcmVxdWlyZWQ6IGZhbHNlIH1cclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtOiB7fVxyXG4gICAgfTtcclxuICB9LFxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBkb0Zvcm1hdCgpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsIHx8IHRoaXMubW9kZWxWYWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkYXRlID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMudmFsdWVGb3JtYXQgIT0gbnVsbCkge1xyXG4gICAgICAgIGRhdGUgPSBkYXlqcyh0aGlzLm1vZGVsVmFsdWUsIHRoaXMudmFsdWVGb3JtYXQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGUgPSBkYXlqcyh0aGlzLm1vZGVsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkYXRlLmZvcm1hdCh0aGlzLmZvcm1hdCk7XHJcbiAgICB9XHJcbiAgfSBhcyBhbnksXHJcbiAgY3JlYXRlZCgpIHt9LFxyXG4gIG1ldGhvZHM6IHt9XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxjb21wb25lbnRcclxuICAgIDppcz1cInVpLnRyZWVTZWxlY3QubmFtZVwiXHJcbiAgICByZWY9XCJ0cmVlUmVmXCJcclxuICAgIDpbdWkudHJlZVNlbGVjdC5vcHRpb25zXT1cImNvbXB1dGVkT3B0aW9uc1wiXHJcbiAgICA6cGxhY2Vob2xkZXI9XCJjb21wdXRlZFBsYWNlaG9sZGVyXCJcclxuICAgIHYtYmluZD1cImNvbXB1dGVkQmluZGluZ1wiXHJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiXHJcbiAgPlxyXG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIG9mIHNsb3RzXCIgOmtleT1cImtleVwiICNba2V5XT1cInNjb3BlXCI+XHJcbiAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJ2YWx1ZVwiIDpzY29wZT1cInNjb3BlXCI+PC9mcy1zbG90LXJlbmRlcj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9jb21wb25lbnQ+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcclxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XHJcblxyXG4vKipcclxuICog5a2X5YW45qCR6YCJ5oup57uE5Lu2XHJcbiAqIOaUr+aMgSBhLXRyZWUtc2VsZWN0IOWPguaVsFxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcclxuICBuYW1lOiBcIkZzRGljdFRyZWVcIixcclxuICBjb21wb25lbnRzOiB7fSxcclxuICBwcm9wczoge1xyXG4gICAgLyoqXHJcbiAgICAgKiDmlbDmja7lrZflhbhcclxuICAgICAqL1xyXG4gICAgZGljdDoge30sXHJcbiAgICAvKipcclxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxyXG4gICAgICovXHJcbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXHJcbiAgICAvKipcclxuICAgICAqIHBsYWNlaG9sZGVyXHJcbiAgICAgKi9cclxuICAgIHBsYWNlaG9sZGVyOiB7IHR5cGU6IFN0cmluZyB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiDovazmjaJEaWN0RGF0YVxyXG4gICAgICovXHJcbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xyXG4gICAgICB0eXBlOiBGdW5jdGlvbixcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgfSxcclxuICBlbWl0czogW1xyXG4gICAgLyoqXHJcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcclxuICAgICAqL1xyXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXHJcbiAgICAgKi9cclxuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXHJcbiAgICAvKipcclxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxyXG4gICAgICovXHJcbiAgICBcImNoYW5nZVwiXHJcbiAgXSxcclxuICAvLyByZW5kZXIgKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucmVuZGVyRnVuYyh7IGRhdGE6IHRoaXMuZGF0YSwgZGF0YU1hcDogdGhpcy5kYXRhTWFwLCBzY29wZTogdGhpcy5zY29wZSwgYXR0cnM6IHRoaXMuJGF0dHJzIH0pXHJcbiAgLy8gfSxcclxuICBzZXR1cChwcm9wcywgY3R4KSB7XHJcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcclxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XHJcbiAgICBjb25zdCBjb21wdXRlZFBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gcHJvcHMucGxhY2Vob2xkZXIgfHwgdChcImZzLmNvbXBvbmVudC5zZWxlY3QucGxhY2Vob2xkZXJcIik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xyXG5cclxuICAgIGNvbnN0IHNsb3RzID0gY3R4LnNsb3RzO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcclxuICAgICAgcmV0dXJuIHVpLnRyZWVTZWxlY3QuYnVpbGRPcHRpb25LZXlzTmFtZUJpbmRpbmcoe1xyXG4gICAgICAgIGxhYmVsOiBkaWN0LmxhYmVsLFxyXG4gICAgICAgIHZhbHVlOiBkaWN0LnZhbHVlLFxyXG4gICAgICAgIGNoaWxkcmVuOiBkaWN0LmNoaWxkcmVuXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcclxuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcclxuICAgICAgICAgICAgICBpZiAob3B0KSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChvcHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBzZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgZGljdC5kYXRhTWFwW3ZhbHVlXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRyZWVSZWYgPSByZWYoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpLFxyXG4gICAgICBjb21wdXRlZEJpbmRpbmcsXHJcbiAgICAgIGNvbXB1dGVkUGxhY2Vob2xkZXIsXHJcbiAgICAgIC4uLnVzZWREaWN0LFxyXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXHJcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2UsXHJcbiAgICAgIHNsb3RzLFxyXG4gICAgICB0cmVlUmVmXHJcbiAgICB9O1xyXG4gIH1cclxufSk7XHJcbjwvc2NyaXB0PlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGNvbXBvbmVudFxyXG4gICAgOmlzPVwidWkudHJlZVNlbGVjdC5uYW1lXCJcclxuICAgIHJlZj1cInRyZWVSZWZcIlxyXG4gICAgOlt1aS50cmVlU2VsZWN0Lm9wdGlvbnNdPVwiY29tcHV0ZWRPcHRpb25zXCJcclxuICAgIDpwbGFjZWhvbGRlcj1cImNvbXB1dGVkUGxhY2Vob2xkZXJcIlxyXG4gICAgdi1iaW5kPVwiY29tcHV0ZWRCaW5kaW5nXCJcclxuICAgIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCJcclxuICA+XHJcbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIodmFsdWUsIGtleSkgb2Ygc2xvdHNcIiA6a2V5PVwia2V5XCIgI1trZXldPVwic2NvcGVcIj5cclxuICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInZhbHVlXCIgOnNjb3BlPVwic2NvcGVcIj48L2ZzLXNsb3QtcmVuZGVyPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICA8L2NvbXBvbmVudD5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xyXG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xyXG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuXHJcbi8qKlxyXG4gKiDlrZflhbjmoJHpgInmi6nnu4Tku7ZcclxuICog5pSv5oyBIGEtdHJlZS1zZWxlY3Qg5Y+C5pWwXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xyXG4gIG5hbWU6IFwiRnNEaWN0VHJlZVwiLFxyXG4gIGNvbXBvbmVudHM6IHt9LFxyXG4gIHByb3BzOiB7XHJcbiAgICAvKipcclxuICAgICAqIOaVsOaNruWtl+WFuFxyXG4gICAgICovXHJcbiAgICBkaWN0OiB7fSxcclxuICAgIC8qKlxyXG4gICAgICog5Y+v6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXHJcbiAgICAgKi9cclxuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcclxuICAgIC8qKlxyXG4gICAgICogcGxhY2Vob2xkZXJcclxuICAgICAqL1xyXG4gICAgcGxhY2Vob2xkZXI6IHsgdHlwZTogU3RyaW5nIH0sXHJcbiAgICAvKipcclxuICAgICAqIOi9rOaNokRpY3REYXRhXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XHJcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH1cclxuICB9LFxyXG4gIGVtaXRzOiBbXHJcbiAgICAvKipcclxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxyXG4gICAgICovXHJcbiAgICBcImRpY3QtY2hhbmdlXCIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDpgInkuK3lgLzlj5jljJbkuovku7bvvIzlj6/ku6Xojrflj5bliLDlvZPliY3pgInkuK3nmoRvcHRpb27lr7nosaFcclxuICAgICAqL1xyXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcclxuICAgIC8qKlxyXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XHJcbiAgICAgKi9cclxuICAgIFwiY2hhbmdlXCJcclxuICBdLFxyXG4gIC8vIHJlbmRlciAoKSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5yZW5kZXJGdW5jKHsgZGF0YTogdGhpcy5kYXRhLCBkYXRhTWFwOiB0aGlzLmRhdGFNYXAsIHNjb3BlOiB0aGlzLnNjb3BlLCBhdHRyczogdGhpcy4kYXR0cnMgfSlcclxuICAvLyB9LFxyXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcclxuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xyXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuICAgIGNvbnN0IGNvbXB1dGVkUGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBwcm9wcy5wbGFjZWhvbGRlciB8fCB0KFwiZnMuY29tcG9uZW50LnNlbGVjdC5wbGFjZWhvbGRlclwiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XHJcblxyXG4gICAgY29uc3Qgc2xvdHMgPSBjdHguc2xvdHM7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZWRCaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xyXG4gICAgICByZXR1cm4gdWkudHJlZVNlbGVjdC5idWlsZE9wdGlvbktleXNOYW1lQmluZGluZyh7XHJcbiAgICAgICAgbGFiZWw6IGRpY3QubGFiZWwsXHJcbiAgICAgICAgdmFsdWU6IGRpY3QudmFsdWUsXHJcbiAgICAgICAgY2hpbGRyZW46IGRpY3QuY2hpbGRyZW5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBvblNlbGVjdGVkQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xyXG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xyXG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xyXG4gICAgICAgICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBkaWN0LmRhdGFNYXBbdmFsdWVdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdHJlZVJlZiA9IHJlZigpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWksXHJcbiAgICAgIGNvbXB1dGVkQmluZGluZyxcclxuICAgICAgY29tcHV0ZWRQbGFjZWhvbGRlcixcclxuICAgICAgLi4udXNlZERpY3QsXHJcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcclxuICAgICAgb25TZWxlY3RlZENoYW5nZSxcclxuICAgICAgc2xvdHMsXHJcbiAgICAgIHRyZWVSZWZcclxuICAgIH07XHJcbiAgfVxyXG59KTtcclxuPC9zY3JpcHQ+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZnMtdGFibGUtc2VsZWN0XCI+XHJcbiAgICA8dGVtcGxhdGUgdi1pZj1cIiFzbG90cz8uZGVmYXVsdCAmJiAhdmlld01vZGVcIj5cclxuICAgICAgPGZzLWRpY3Qtc2VsZWN0XHJcbiAgICAgICAgcmVmPVwiZGljdFNlbGVjdFJlZlwiXHJcbiAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRTZWxlY3RcIlxyXG4gICAgICAgIDpvcGVuPVwiZmFsc2VcIlxyXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgICAgICA6cmVhZG9ubHk9XCJyZWFkb25seVwiXHJcbiAgICAgICAgOmRpY3Q9XCJkaWN0XCJcclxuICAgICAgICBAY2xpY2s9XCJvcGVuVGFibGVTZWxlY3RcIlxyXG4gICAgICAvPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDxzbG90IHYtYmluZD1cInNjb3BlUmVmXCI+PC9zbG90PlxyXG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5za2lwVmFsaWRhdGlvbldyYXBwZXJcIj5cclxuICAgICAgPGZzLWZvcm0td3JhcHBlciByZWY9XCJmb3JtV3JhcHBlclJlZlwiIHYtYmluZD1cImZvcm1XcmFwcGVyT3B0aW9uc1wiIEBjbG9zZWQ9XCJvbkNsb3NlXCIgQG9wZW49XCJvbk9wZW5cIj5cclxuICAgICAgICA8dGVtcGxhdGUgI2Zvcm0tYm9keS10b3A+XHJcbiAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWFsb2dPcGVuIHx8IGRlc3Ryb3lPbkNsb3NlID09PSBmYWxzZVwiIDpzdHlsZT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiBoZWlnaHQgfHwgJzcwdmgnIH1cIj5cclxuICAgICAgICAgICAgPGZzLWNydWQgcmVmPVwiY3J1ZFJlZlwiIHYtYmluZD1cImNydWRCaW5kaW5nXCI+XHJcbiAgICAgICAgICAgICAgPHRlbXBsYXRlICNoZWFkZXItdG9wPlxyXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2hvd0N1cnJlbnQgIT09IGZhbHNlICYmICF2aWV3TW9kZVwiIGNsYXNzPVwiZnMtdGFibGUtc2VsZWN0LWN1cnJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAge3sgdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3QuY3VycmVudFwiKSB9fe+8mlxyXG4gICAgICAgICAgICAgICAgICA8ZnMtdmFsdWVzLWZvcm1hdFxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj1cInZhbHVlc0Zvcm1hdFJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkUm93S2V5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgOmRpY3Q9XCJkaWN0XCJcclxuICAgICAgICAgICAgICAgICAgICA6Y2xvc2FibGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZFZhbHVlc0Zvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgID48L2ZzLXZhbHVlcy1mb3JtYXQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2ZzLWNydWQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICA8L2ZzLWZvcm0td3JhcHBlcj5cclxuICAgICAgPCEtLSAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZGlhbG9nLm5hbWVcIiB2LW1vZGVsOlt1aS5kaWFsb2cudmlzaWJsZV09XCJkaWFsb2dPcGVuXCIgdi1iaW5kPVwiY29tcHV0ZWREaWFsb2dCaW5kaW5nXCI+LS0+XHJcbiAgICAgIDwhLS0gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLmRpYWxvZy5mb290ZXJTbG90TmFtZV0+LS0+XHJcbiAgICAgIDwhLS0gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b24ubmFtZVwiIHYtaWY9XCIhdmlld01vZGVcIiBAY2xpY2s9XCJkaWFsb2dPcGVuID0gZmFsc2VcIj7lj5bmtog8L2NvbXBvbmVudD4tLT5cclxuICAgICAgPCEtLSAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmJ1dHRvbi5uYW1lXCIgdHlwZT1cInByaW1hcnlcIiBAY2xpY2s9XCJvbk9rXCI+56Gu6K6kPC9jb21wb25lbnQ+LS0+XHJcbiAgICAgIDwhLS0gICAgICAgIDwvdGVtcGxhdGU+LS0+XHJcbiAgICAgIDwhLS0gICAgICA8L2NvbXBvbmVudD4tLT5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0IGxhbmc9XCJ0c3hcIiBzZXR1cD5cclxuaW1wb3J0IHsgRGljdCwgdXNlQ29tcHV0ZSwgdXNlRnNBc3luYywgdXNlRnNSZWYsIHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcclxuaW1wb3J0IHsgY29tcHV0ZWQsIG5leHRUaWNrLCByZWYsIFJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IENyZWF0ZUNydWRPcHRpb25zLCBEeW5hbWljYWxseUNydWRPcHRpb25zIH0gZnJvbSBcIi4uLy4uL2RcIjtcclxuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcclxuXHJcbnR5cGUgRnNUYWJsZVNlbGVjdFByb3BzID0ge1xyXG4gIC8qKlxyXG4gICAqIG1vZGVsVmFsdWVcclxuICAgKi9cclxuICBtb2RlbFZhbHVlOiBhbnk7XHJcbiAgLyoqXHJcbiAgICogY3J1ZE9wdGlvbnPliJvlu7rmlrnms5VcclxuICAgKi9cclxuICBjcmVhdGVDcnVkT3B0aW9uczogQ3JlYXRlQ3J1ZE9wdGlvbnM7XHJcbiAgLyoqXHJcbiAgICogY3J1ZE9wdGlvbnMg6KaG55uW6YWN572uXHJcbiAgICovXHJcbiAgY3J1ZE9wdGlvbnNPdmVycmlkZT86IER5bmFtaWNhbGx5Q3J1ZE9wdGlvbnM7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJk+W8gOWvueivneahhuWJje+8jOWPr+S7peS/ruaUuemFjee9rlxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgYmVmb3JlT3Blbj86IChvcHRpb25zOiB7XHJcbiAgICBjcnVkT3B0aW9uczogRHluYW1pY2FsbHlDcnVkT3B0aW9ucztcclxuICAgIHNlbGVjdGVkUm93S2V5czogYW55O1xyXG4gICAgb3BlbjogYW55O1xyXG4gICAgb3BlbmVkOiBhbnk7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcclxuICAvKipcclxuICAgKiDmlbDmja7lrZflhbhcclxuICAgKiDlv4XpoIjphY3nva5gZ2V0Tm9kZXNCeVZhbHVlc2Dlj4LmlbAs5L2g6ZyA6KaB5a6e546w77ya5qC55o2uaWTliJfooajlkJHlkI7lj7Dor7fmsYLlpJrooYzmlbDmja7lubbov5Tlm55cclxuICAgKiBgZGljdC52YWx1ZeW/hemhu+S4jnRhYmxlLnJvd0tleeS4gOiHtGBcclxuICAgKi9cclxuICBkaWN0OiBEaWN0O1xyXG4gIC8qKlxyXG4gICAqIOmAieaLqeahhiBmcy1kaWN0LXNlbGVjdOmFjee9rlxyXG4gICAqL1xyXG4gIHNlbGVjdD86IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5pi+56S66YCJ5oup5qGGXHJcbiAgICog5pyJ5pe25YCZ5L2g5Y+q5piv5oOz6KaB6YKj5Liq6YCJ5oup55qERGlhbG9n77yM6YKj5LmI5L2g5Y+v5Lul6ZqQ6JePc2VsZWN077yM54S25ZCO6Ieq5a6a5LmJ5r+A5rS75pa55byPXHJcbiAgICovXHJcbiAgc2hvd1NlbGVjdD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICog5a+56K+d5qGG6YWN572uXHJcbiAgICovXHJcbiAgZGlhbG9nPzogYW55O1xyXG5cclxuICAvKipcclxuICAgKiDlr7nor53moYbkuK3mmK/lkKbmmL7npLrlvZPliY3pgInkuK3lgLxcclxuICAgKi9cclxuICBzaG93Q3VycmVudD86IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICog5b2T5YmN6YCJ5Lit5YC8IGZzLXZhbHVlcy1mb3JtYXTnu4Tku7Yg6YWN572uXHJcbiAgICovXHJcbiAgdmFsdWVzRm9ybWF0PzogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBjcnVk6auY5bqmXHJcbiAgICovXHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuWkmumAiVxyXG4gICAqL1xyXG4gIG11bHRpcGxlPzogYm9vbGVhbjsgLy/ljZXpgInov5jmmK/lpJrpgIlcclxuICAvKipcclxuICAgKiDot6jpobXpgInkuK1cclxuICAgKi9cclxuICBjcm9zc1BhZ2U/OiBib29sZWFuOyAvL+i3qOmhtemAieS4rVxyXG5cclxuICAvKipcclxuICAgKiDlj6/pgIksZWxlbWVudC1wbHVz5b+F5LygXHJcbiAgICovXHJcbiAgcm93S2V5Pzogc3RyaW5nO1xyXG5cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcblxyXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICog5YC857G75Z6LXHJcbiAgICovXHJcbiAgdmFsdWVUeXBlPzogXCJ2YWx1ZVwiIHwgXCJvYmplY3RcIjtcclxuXHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5p+l55yL5qih5byPXHJcbiAgICovXHJcbiAgdmlld01vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIOafpeeci+aooeW8j+S4i+aYr+WQpuinpuWPkWNoYW5nZeS6i+S7tlxyXG4gICAqL1xyXG4gIGVtaXRPblZpZXdNb2RlbD86IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIHRhYmxl5piv5ZCm6Lef6ZqP56qX5Y+j5YWz6Zet6ICM6ZSA5q+BXHJcbiAgICovXHJcbiAgZGVzdHJveU9uQ2xvc2U/OiBib29sZWFuO1xyXG59O1xyXG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxGc1RhYmxlU2VsZWN0UHJvcHM+KCksIHtcclxuICBjcm9zc1BhZ2U6IHRydWUsXHJcbiAgcm93S2V5OiB1bmRlZmluZWQsXHJcbiAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gIHJlYWRvbmx5OiBmYWxzZSxcclxuICBoZWlnaHQ6IHVuZGVmaW5lZCxcclxuICB2YWx1ZXNGb3JtYXQ6IHVuZGVmaW5lZCxcclxuICBkaWFsb2c6IHVuZGVmaW5lZCxcclxuICBzZWxlY3Q6IHVuZGVmaW5lZCxcclxuICBjcnVkT3B0aW9uc092ZXJyaWRlOiB1bmRlZmluZWQsXHJcbiAgdmFsdWVUeXBlOiBcInZhbHVlXCIsXHJcbiAgc2hvd1NlbGVjdDogdHJ1ZSxcclxuICBzaG93Q3VycmVudDogdHJ1ZSxcclxuICB2aWV3TW9kZTogZmFsc2UsXHJcbiAgZW1pdE9uVmlld01vZGVsOiB0cnVlLFxyXG4gIGRlc3Ryb3lPbkNsb3NlOiB0cnVlLFxyXG4gIC8qKlxyXG4gICAqIGNyZWF0ZUNydWRPcHRpb25z5pa55rOV5piv5ZCM5q2l6L+Y5piv5byC5q2lXHJcbiAgICovXHJcbiAgSXNTeW5jQ3JlYXRlOiBmYWxzZVxyXG59KTtcclxuXHJcbmNvbnN0IHNsb3RzID0gZGVmaW5lU2xvdHM8e1xyXG4gIC8qKmBcclxuICAgKiDpu5jorqTmj5Lmp71cclxuICAgKiBgYGBqc1xyXG4gICAqIHNjb3BlID0ge1xyXG4gICAqICAvL+aYr+WQpuW3suaJk+W8gFxyXG4gICAqICBvcGVuZWQ6Ym9vbGVhbixcclxuICAgKiAgLy/miZPlvIDmlrnms5VcclxuICAgKiAgb3BlbjooKT0+dm9pZFxyXG4gICAqIH1cclxuICAgKiBgYGBcclxuICAgKi9cclxuICBkZWZhdWx0OiBhbnk7XHJcbn0+KCk7XHJcblxyXG5jb25zdCBlbWl0cyA9IGRlZmluZUVtaXRzKFtcclxuICBcImNoYW5nZVwiLFxyXG4gIFwidXBkYXRlOm1vZGVsVmFsdWVcIixcclxuICAvKiDpgInkuK3ooYzlj5jljJbkuovku7YgKi9cclxuICBcInNlbGVjdGVkLWNoYW5nZVwiLFxyXG4gIC8q5a+56K+d5qGG5Y2z5bCG5YWz6ZetKi9cclxuICBcImRpYWxvZy1jbG9zZVwiLFxyXG4gIC8q5a+56K+d5qGG5bey5YWz6ZetKi9cclxuICBcImRpYWxvZy1jbG9zZWRcIixcclxuICAvKuWvueivneahhuWFs+mXrSovXHJcbiAgXCJjbG9zZVwiLFxyXG4gIC8q5a+56K+d5qGG5omT5byAKi9cclxuICBcIm9wZW5cIlxyXG5dKTtcclxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcclxuY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XHJcbmNvbnN0IGRpY3RTZWxlY3RSZWYgPSByZWYoKTtcclxuY29uc3QgdmFsdWVzRm9ybWF0UmVmID0gcmVmKCk7XHJcbmNvbnN0IGRpYWxvZ09wZW4gPSByZWYoZmFsc2UpO1xyXG5cclxuZnVuY3Rpb24gb25DbG9zZSgpIHtcclxuICBkaWFsb2dPcGVuLnZhbHVlID0gZmFsc2U7XHJcbiAgZW1pdHMoXCJjbG9zZVwiLCBnZXRTY29wZUNvbnRleHQoKSk7XHJcbn1cclxuZnVuY3Rpb24gb25PcGVuKCkge1xyXG4gIGRpYWxvZ09wZW4udmFsdWUgPSB0cnVlO1xyXG4gIGVtaXRzKFwib3BlblwiLCBnZXRTY29wZUNvbnRleHQoKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlKCkge1xyXG4gIG9uQ2xvc2UoKTtcclxufVxyXG5cclxuY29uc3QgeyBjcnVkUmVmLCBjcnVkQmluZGluZywgY3J1ZEV4cG9zZSB9ID0gdXNlRnNSZWYoKTtcclxuXHJcbmZ1bmN0aW9uIGluaXRTZWxlY3RlZEtleXMobW9kZWxWYWx1ZTogYW55KSB7XHJcbiAgaWYgKG1vZGVsVmFsdWUgPT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShtb2RlbFZhbHVlKSAmJiBtb2RlbFZhbHVlLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gW107XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBtb2RlbFZhbHVlIHx8IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gW21vZGVsVmFsdWVdO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLnZhbHVlVHlwZSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBzZWxlY3RlZFJvd0tleXMudmFsdWUubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLmRpY3QuZ2V0VmFsdWUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgZm9ybVdyYXBwZXJSZWYgPSByZWYoKTtcclxuY29uc3QgZm9ybVdyYXBwZXJPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICB3cmFwcGVyOiB7fVxyXG4gIH07XHJcbn0pO1xyXG5cclxuY29uc3Qgb3BlblRhYmxlU2VsZWN0ID0gYXN5bmMgKG9wZW5PcHRpb25zOiB7IGNydWRPcHRpb25zPzogRHluYW1pY2FsbHlDcnVkT3B0aW9uczsgY29udGV4dD86IGFueSB9ID0ge30pID0+IHtcclxuICBpZiAocHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMucmVhZG9ubHkgfHwgcHJvcHMuc2VsZWN0Py5kaXNhYmxlZCB8fCBwcm9wcy5zZWxlY3Q/LnJlYWRvbmx5KSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGlmIChwcm9wcy5kaWN0ID09IG51bGwpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIuW/hemhu+mFjee9rmRpY3TvvIzkuJTlv4XpobvphY3nva5kaWN0LmdldE5vZGVzQnlWYWx1ZXNcIik7XHJcbiAgfVxyXG5cclxuICBjb25zdCByZXQgPSBhd2FpdCB1c2VGc0FzeW5jKHtcclxuICAgIGNydWRCaW5kaW5nLFxyXG4gICAgY3J1ZFJlZixcclxuICAgIGNyZWF0ZUNydWRPcHRpb25zOiBwcm9wcy5jcmVhdGVDcnVkT3B0aW9ucyxcclxuICAgIGNydWRPcHRpb25zT3ZlcnJpZGU6IGJ1aWxkTWVyZ2VkQ3J1ZE9wdGlvbnMoKSxcclxuICAgIGNvbnRleHQ6IHtcclxuICAgICAgdCxcclxuICAgICAgdWksXHJcbiAgICAgIC4uLm9wZW5PcHRpb25zPy5jb250ZXh0XHJcbiAgICB9LFxyXG4gICAgY3J1ZEV4cG9zZVxyXG4gIH0pO1xyXG5cclxuICBpbml0U2VsZWN0ZWRLZXlzKHByb3BzLm1vZGVsVmFsdWUpO1xyXG4gIGlmIChwcm9wcy5iZWZvcmVPcGVuKSB7XHJcbiAgICBhd2FpdCBwcm9wcy5iZWZvcmVPcGVuKHtcclxuICAgICAgY3J1ZE9wdGlvbnM6IG9wZW5PcHRpb25zPy5jcnVkT3B0aW9ucyxcclxuICAgICAgLi4uZ2V0U2NvcGVDb250ZXh0KClcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAob3Blbk9wdGlvbnMpIHtcclxuICAgIHJldC5hcHBlbmRDcnVkT3B0aW9ucyhvcGVuT3B0aW9ucz8uY3J1ZE9wdGlvbnMpO1xyXG4gIH1cclxuICBjb25zdCB3cmFwcGVyT3B0aW9ucyA9IG1lcmdlKFxyXG4gICAge1xyXG4gICAgICB3cmFwcGVyOiB7XHJcbiAgICAgICAgdGl0bGU6IHByb3BzLnZpZXdNb2RlID8gdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3Qudmlld1wiKSA6IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0LnNlbGVjdFwiKSxcclxuICAgICAgICB3aWR0aDogXCI4MCVcIixcclxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXHJcbiAgICAgICAgaXM6IHVpLmRpYWxvZy5uYW1lLFxyXG4gICAgICAgIGZvb3RlcjogZmFsc2UsXHJcbiAgICAgICAgLi4udWkuZm9ybVdyYXBwZXIuYnVpbGRJbml0QmluZCh1aS5kaWFsb2cubmFtZSksXHJcbiAgICAgICAgYnV0dG9uczoge1xyXG4gICAgICAgICAgcmVzZXQ6IHtcclxuICAgICAgICAgICAgc2hvdzogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjYW5jZWw6IHtcclxuICAgICAgICAgICAgdGV4dDogdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3QuY2FuY2VsXCIpLFxyXG4gICAgICAgICAgICBhc3luYyBjbGljaygpIHtcclxuICAgICAgICAgICAgICBmb3JtV3JhcHBlclJlZi52YWx1ZS5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2s6IHtcclxuICAgICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXHJcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0Lm9rXCIpLFxyXG4gICAgICAgICAgICBhc3luYyBjbGljaygpIHtcclxuICAgICAgICAgICAgICBhd2FpdCBvbk9rKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHdyYXBwZXI6IHByb3BzLmRpYWxvZ1xyXG4gICAgfVxyXG4gICk7XHJcbiAgZm9ybVdyYXBwZXJSZWYudmFsdWUub3Blbih3cmFwcGVyT3B0aW9ucyk7XHJcblxyXG4gIGF3YWl0IG5leHRUaWNrKCk7XHJcbiAgYXdhaXQgY3J1ZEV4cG9zZS5kb1JlZnJlc2goKTtcclxuICByZXR1cm4gcmV0O1xyXG59O1xyXG5cclxuY29uc3QgY29tcHV0ZWRWYWx1ZXNGb3JtYXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG1heFZpc2libGU6IDMsXHJcbiAgICAuLi5wcm9wcy52YWx1ZXNGb3JtYXRcclxuICB9O1xyXG59KTtcclxuXHJcbmNvbnN0IGNvbXB1dGVkU2VsZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IHVwZGF0ZUtleSA9IGBvblVwZGF0ZToke3VpLnNlbGVjdC5tb2RlbFZhbHVlfWA7XHJcblxyXG4gIGxldCB2YWx1ZSA9IHByb3BzLm1vZGVsVmFsdWU7XHJcbiAgaWYgKHByb3BzLnZhbHVlVHlwZSA9PT0gXCJvYmplY3RcIiAmJiBwcm9wcy5tb2RlbFZhbHVlKSB7XHJcbiAgICBpZiAocHJvcHMubXVsdGlwbGUpIHtcclxuICAgICAgdmFsdWUgPSBwcm9wcy5tb2RlbFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BzLmRpY3QuZ2V0VmFsdWUoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsdWUgPSBwcm9wcy5kaWN0LmdldFZhbHVlKHByb3BzLm1vZGVsVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgW3VpLnNlbGVjdC5tb2RlbFZhbHVlXTogdmFsdWUsXHJcbiAgICBbdXBkYXRlS2V5XTogKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgZW1pdHMoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XHJcbiAgICB9LFxyXG4gICAgW3VpLnNlbGVjdC5jbGVhcmFibGVdOiB0cnVlLFxyXG4gICAgLi4udWkuc2VsZWN0LmJ1aWxkTXVsdGlCaW5kaW5nKHByb3BzLm11bHRpcGxlKSxcclxuICAgIHNob3c6IGZhbHNlLFxyXG4gICAgLi4ucHJvcHMuc2VsZWN0XHJcbiAgfTtcclxufSk7XHJcblxyXG53YXRjaChcclxuICAoKSA9PiB7XHJcbiAgICByZXR1cm4gcHJvcHMubW9kZWxWYWx1ZTtcclxuICB9LFxyXG4gIGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgaWYgKHZhbHVlID09PSBzZWxlY3RlZFJvd0tleXMudmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaW5pdFNlbGVjdGVkS2V5cyh2YWx1ZSk7XHJcbiAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgYXdhaXQgcHJvcHMuZGljdC5hcHBlbmRCeVZhbHVlcyhzZWxlY3RlZFJvd0tleXMudmFsdWUpO1xyXG4gICAgLy8gZGljdFNlbGVjdFJlZi52YWx1ZS5yZWxvYWREaWN0KCk7XHJcbiAgfVxyXG4pO1xyXG5jb25zdCBzZWxlY3RlZFJvd0tleXM6IFJlZjxhbnlbXT4gPSByZWYoW10pO1xyXG5cclxuZnVuY3Rpb24gZ2V0Um93S2V5KCkge1xyXG4gIHJldHVybiBwcm9wcy5yb3dLZXkgfHwgY3J1ZEJpbmRpbmcudmFsdWUudGFibGUucm93S2V5IHx8IFwiaWRcIjtcclxufVxyXG5jb25zdCByZWZyZXNoaW5nID0gcmVmKGZhbHNlKTtcclxuXHJcbmZ1bmN0aW9uIGJ1aWxkTWVyZ2VkQ3J1ZE9wdGlvbnMoKSB7XHJcbiAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcclxuICBpZiAoY3J1ZEJpbmRpbmcudmFsdWU/LnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xyXG4gICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XHJcbiAgfVxyXG4gIGxldCBzZWxlY3Rpb25PcHRpb25zID0gdGFibGVDSS5idWlsZFNlbGVjdGlvbkNydWRPcHRpb25zKHtcclxuICAgIGNyb3NzUGFnZTogcHJvcHMuY3Jvc3NQYWdlLFxyXG4gICAgc2VsZWN0T25DbGlja1JvdzogdHJ1ZSxcclxuICAgIGdldFJvd0tleSxcclxuICAgIGdldFBhZ2VEYXRhKCkge1xyXG4gICAgICByZXR1cm4gY3J1ZEJpbmRpbmcudmFsdWUuZGF0YTtcclxuICAgIH0sXHJcbiAgICB1c2VDb21wdXRlOiB1c2VDb21wdXRlLFxyXG4gICAgbXVsdGlwbGU6IHByb3BzLm11bHRpcGxlLFxyXG4gICAgc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgb25TZWxlY3RlZEtleXNDaGFuZ2VkOiBhc3luYyAoY2hhbmdlZCkgPT4ge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBbLi4uY2hhbmdlZF07XHJcbiAgICAgIGF3YWl0IG5leHRUaWNrKCk7XHJcbiAgICAgIGF3YWl0IHByb3BzLmRpY3QuYXBwZW5kQnlWYWx1ZXMoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlKTtcclxuICAgICAgLy8gaWYgKHZhbHVlc0Zvcm1hdFJlZi52YWx1ZSkge1xyXG4gICAgICAvLyAgIHZhbHVlc0Zvcm1hdFJlZi52YWx1ZS5yZWxvYWREaWN0KCk7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9KTtcclxuICBjb25zdCBjcnVkT3B0aW9ucyA9IHtcclxuICAgIHRhYmxlOiB7XHJcbiAgICAgIGFzeW5jIG9uUmVmcmVzaGVkKCkge1xyXG4gICAgICAgIGlmICh0YWJsZUNJLnNldFNlbGVjdGVkUm93cykge1xyXG4gICAgICAgICAgcmVmcmVzaGluZy52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xyXG4gICAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcclxuICAgICAgICAgIGNvbnN0IGJhc2VUYWJsZVJlZiA9IGNydWRFeHBvc2UuZ2V0QmFzZVRhYmxlUmVmKCk7XHJcbiAgICAgICAgICB0YWJsZUNJLnNldFNlbGVjdGVkUm93cyh7XHJcbiAgICAgICAgICAgIGdldFJvd0tleSxcclxuICAgICAgICAgICAgbXVsdGlwbGU6IHByb3BzLm11bHRpcGxlLFxyXG4gICAgICAgICAgICB0YWJsZVJlZjogYmFzZVRhYmxlUmVmLFxyXG4gICAgICAgICAgICBzZWxlY3RlZFJvd0tleXNcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmVmcmVzaGluZy52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmV0dXJuIG1lcmdlKGNydWRPcHRpb25zLCBzZWxlY3Rpb25PcHRpb25zLCBwcm9wcy5jcnVkT3B0aW9uc092ZXJyaWRlKTtcclxufVxyXG5cclxuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIG9uT2soKSB7XHJcbiAgaWYgKHByb3BzLmRpY3QubG9hZGluZykge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgdmFsdWUgPSBudWxsO1xyXG4gIGxldCByb3dzID0gbnVsbDtcclxuICBpZiAoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICB2YWx1ZSA9IFsuLi5zZWxlY3RlZFJvd0tleXMudmFsdWVdO1xyXG5cclxuICAgIHJvd3MgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIHByb3BzLmRpY3QuZ2V0RGljdE1hcCgpW2l0ZW1dO1xyXG4gICAgfSk7XHJcbiAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgIHZhbHVlID0gcm93cztcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvcHMubXVsdGlwbGUgIT09IHRydWUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKCFwcm9wcy52aWV3TW9kZSB8fCBwcm9wcy5lbWl0T25WaWV3TW9kZWwpIHtcclxuICAgIC8v6Z2edmlld+aooeW8j+S4i++8jOmcgOimgeabtOaWsHZhbHVlXHJcbiAgICBlbWl0cyhcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcclxuICAgIGVtaXRzKFwiY2hhbmdlXCIsIHZhbHVlKTtcclxuICAgIGVtaXRzKFwic2VsZWN0ZWQtY2hhbmdlXCIsIHJvd3MpO1xyXG4gIH1cclxuICBsZXQgc2NvcGUgPSB7XHJcbiAgICB2YWx1ZSxcclxuICAgIHJvd3MsXHJcbiAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cy52YWx1ZVxyXG4gIH07XHJcbiAgZW1pdHMoXCJkaWFsb2ctY2xvc2VcIiwgc2NvcGUpO1xyXG4gIGF3YWl0IG5leHRUaWNrKCk7XHJcbiAgYXdhaXQgZm9ybVdyYXBwZXJSZWYudmFsdWUuY2xvc2UoKTtcclxuICBlbWl0cyhcImRpYWxvZy1jbG9zZWRcIiwgc2NvcGUpO1xyXG59XHJcblxyXG5jb25zdCBnZXRTY29wZUNvbnRleHQgPSAoKSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG9wZW5lZDogZGlhbG9nT3BlbixcclxuICAgIG9wZW46IG9wZW5UYWJsZVNlbGVjdCxcclxuICAgIHNlbGVjdGVkUm93S2V5cyxcclxuICAgIGRpY3RTZWxlY3RSZWYsXHJcbiAgICB2YWx1ZXNGb3JtYXRSZWYsXHJcbiAgICBjcnVkUmVmLFxyXG4gICAgY3J1ZEJpbmRpbmcsXHJcbiAgICBjcnVkRXhwb3NlLFxyXG4gICAgY2xvc2VcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3Qgc2NvcGVSZWYgPSByZWYoZ2V0U2NvcGVDb250ZXh0KCkpO1xyXG5kZWZpbmVFeHBvc2Uoc2NvcGVSZWYudmFsdWUpO1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy10YWJsZS1zZWxlY3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIC5lbC1kaWFsb2dfX2JvZHkge1xyXG4gICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuLmZzLXRhYmxlLXNlbGVjdC1jdXJyZW50IHtcclxuICAvL2JvcmRlcjogMXB4IHNvbGlkICNlZWU7XHJcbiAgLy9ib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgcGFkZGluZzogMTBweCAwO1xyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xyXG4gIC8qKlxyXG4gICAqIOWPr+e8lui+kemAieaLqeWZqFxyXG4gICAqL1xyXG4gIG5hbWU6IFwiRnNFZGl0YWJsZVNlbGVjdFwiXHJcbn0pO1xuPC9zY3JpcHQ+XG48dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImZzLWVkaXRhYmxlLXNlbGVjdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxyXG4gICAgICA8ZnMtZGljdC1zZWxlY3QgOnZhbHVlPVwibW9kZWxWYWx1ZVwiIDpkaWN0PVwiZGljdFwiIHYtYmluZD1cImRpY3RTZWxlY3RcIiBAdXBkYXRlOnZhbHVlPVwiZG9VcGRhdGVcIj48L2ZzLWRpY3Qtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZzLXRhYmxlLXNlbGVjdFxyXG4gICAgICBjbGFzcz1cInRhYmxlLXNlbGVjdFwiXHJcbiAgICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxyXG4gICAgICA6ZGljdD1cImRpY3RcIlxyXG4gICAgICA6ZGVzdHJveS1vbi1jbG9zZT1cImZhbHNlXCJcclxuICAgICAgaGVpZ2h0PVwiNDAwcHhcIlxyXG4gICAgICB2LWJpbmQ9XCJ0YWJsZVNlbGVjdFwiXHJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJkb1VwZGF0ZVwiXHJcbiAgICAgIEBkaWFsb2ctY2xvc2VkPVwiZG9SZWZyZXNoXCJcclxuICAgID5cclxuICAgICAgPHRlbXBsYXRlICNkZWZhdWx0PVwic2NvcGVcIj5cclxuICAgICAgICA8ZnMtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgaWNvbj1cImFudC1kZXNpZ246ZWRpdC1vdXRsaW5lZFwiIHYtYmluZD1cImJ1dHRvblwiIEBjbGljaz1cInNjb3BlLm9wZW5cIj48L2ZzLWJ1dHRvbj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgIDwvZnMtdGFibGUtc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgLyoqXHJcbiAgICog5YC8XHJcbiAgICovXHJcbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcclxuICAvKipcclxuICAgKiDmlbDmja7lrZflhbhcclxuICAgKi9cclxuICBkaWN0OiBhbnk7XHJcbiAgLyoqXHJcbiAgICogdGFibGUtc2VsZWN05Y+C5pWwXHJcbiAgICovXHJcbiAgdGFibGVTZWxlY3Q6IGFueTtcclxuICAvKipcclxuICAgKiBkaWN0LXNlbGVjdOWPguaVsFxyXG4gICAqL1xyXG4gIGRpY3RTZWxlY3Q/OiBhbnk7XHJcbiAgLyoqXHJcbiAgICog5oyJ6ZKu5Y+C5pWwXHJcbiAgICovXHJcbiAgYnV0dG9uPzogYW55O1xyXG59PigpO1xyXG5cclxuO1xyXG5cclxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcclxuICAvKipcclxuICAgKiDlhbPpl63lr7nor53moYbml7bop6blj5FcclxuICAgKi9cclxuICBcInJlZnJlc2hcIixcclxuICBcInVwZGF0ZTptb2RlbFZhbHVlXCJcclxuXSk7XHJcbmZ1bmN0aW9uIGRvUmVmcmVzaCgpIHtcclxuICBlbWl0KFwicmVmcmVzaFwiKTtcclxuICBwcm9wcy5kaWN0Py5yZWxvYWREaWN0KCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvVXBkYXRlKHZhbHVlOiBhbnkpIHtcclxuICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcbi5mcy1lZGl0YWJsZS1zZWxlY3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gIC5zZWxlY3Qge1xyXG4gICAgZmxleDogMTtcclxuICB9XHJcbiAgLnRhYmxlLXNlbGVjdCB7XHJcbiAgICBmbGV4OiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIixudWxsLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG5cclxuLypcclxuICDmraTku6PnoIHmnaXmupDkuo5pdmlld+ihqOagvOe7hOS7tueahENTVuWvvOWHuumDqOWIhlxyXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9pdmlldy9pdmlld1xyXG4qL1xyXG5cclxuZnVuY3Rpb24gaGFzIChicm93c2VyKSB7XHJcbiAgICBjb25zdCB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICBpZiAoYnJvd3NlciA9PT0gJ2llJykge1xyXG4gICAgICAgIGNvbnN0IGlzSUUgPSB1YS5pbmRleE9mKCdjb21wYXRpYmxlJykgPiAtMSAmJiB1YS5pbmRleE9mKCdNU0lFJykgPiAtMTtcclxuICAgICAgICBpZiAoaXNJRSkge1xyXG4gICAgICAgICAgICBjb25zdCByZUlFID0gbmV3IFJlZ0V4cCgnTVNJRSAoXFxcXGQrXFxcXC5cXFxcZCspOycpO1xyXG4gICAgICAgICAgICByZUlFLnRlc3QodWEpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChSZWdFeHBbJyQxJ10pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1YS5pbmRleE9mKGJyb3dzZXIpID4gLTE7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGNzdiA9IHtcclxuICAgIF9pc0lFMTEgKCkge1xyXG4gICAgICAgIGxldCBpZXYgPSAwO1xyXG4gICAgICAgIGNvbnN0IGllb2xkID0gKC9NU0lFIChcXGQrXFwuXFxkKyk7Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKTtcclxuICAgICAgICBjb25zdCB0cmlkZW50ID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50XFwvNy4wLyk7XHJcbiAgICAgICAgY29uc3QgcnYgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ3J2OjExLjAnKTtcclxuXHJcbiAgICAgICAgaWYgKGllb2xkKSB7XHJcbiAgICAgICAgICAgIGlldiA9IE51bWJlcihSZWdFeHAuJDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignTVNJRSAxMCcpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBpZXYgPSAxMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRyaWRlbnQgJiYgcnYgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGlldiA9IDExO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlldiA9PT0gMTE7XHJcbiAgICB9LFxyXG5cclxuICAgIF9pc0VkZ2UgKCkge1xyXG4gICAgICAgIHJldHVybiAvRWRnZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuICAgIH0sXHJcblxyXG4gICAgX2dldERvd25sb2FkVXJsICh0ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgQk9NID0gJ1xcdUZFRkYnO1xyXG4gICAgICAgIC8vIEFkZCBCT00gdG8gdGV4dCBmb3Igb3BlbiBpbiBleGNlbCBjb3JyZWN0bHlcclxuICAgICAgICBpZiAod2luZG93LkJsb2IgJiYgd2luZG93LlVSTCAmJiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCkge1xyXG4gICAgICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IEJsb2IoW0JPTSArIHRleHRdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGNzdkRhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnZGF0YTphdHRhY2htZW50L2NzdjtjaGFyc2V0PXV0Zi04LCcgKyBCT00gKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBkb3dubG9hZCAoZmlsZW5hbWUsIHRleHQpIHtcclxuICAgICAgICBpZiAoaGFzKCdpZScpICYmIGhhcygnaWUnKSA8IDEwKSB7XHJcbiAgICAgICAgICAgIC8vIGhhcyBtb2R1bGUgdW5hYmxlIGlkZW50aWZ5IGllMTEgYW5kIEVkZ2VcclxuICAgICAgICAgICAgY29uc3Qgb1dpbiA9IHdpbmRvdy50b3Aub3BlbignYWJvdXQ6YmxhbmsnLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuY2hhcnNldCA9ICd1dGYtOCc7XHJcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQud3JpdGUodGV4dCk7XHJcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuY2xvc2UoKTtcclxuICAgICAgICAgICAgb1dpbi5kb2N1bWVudC5leGVjQ29tbWFuZCgnU2F2ZUFzJywgZmlsZW5hbWUgKyAnLmNzdicpO1xyXG4gICAgICAgICAgICBvV2luLmNsb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXMoJ2llJykgPT09IDEwIHx8IHRoaXMuX2lzSUUxMSgpIHx8IHRoaXMuX2lzRWRnZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IEJPTSA9ICdcXHVGRUZGJztcclxuICAgICAgICAgICAgY29uc3QgY3N2RGF0YSA9IG5ldyBCbG9iKFtCT00gKyB0ZXh0XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xyXG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihjc3ZEYXRhLCBmaWxlbmFtZSArICcuY3N2Jyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lICsgJy5jc3YnO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB0aGlzLl9nZXREb3dubG9hZFVybCh0ZXh0KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNzdjsiLCIvKlxyXG4gIGluc3BpcmVkIGJ5IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3JlYWN0LWNzdi1kb3dubG9hZGVyXHJcbiAgbm93IHJlbW92ZWQgZnJvbSBHaXRodWJcclxuICBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vaXZpZXcvaXZpZXdcclxuKi9cclxuXHJcbi8qIGVzbGludC1kaXNhYmxlICovXHJcblxyXG5jb25zdCBuZXdMaW5lID0gJ1xcclxcbic7XHJcbmNvbnN0IGFwcGVuZExpbmUgPSAoY29udGVudCwgcm93LCB7IHNlcGFyYXRvciwgcXVvdGVkIH0pID0+IHtcclxuICAgIGNvbnN0IGxpbmUgPSByb3cubWFwKGRhdGEgPT4ge1xyXG4gICAgICAgIGlmICghcXVvdGVkKSByZXR1cm4gZGF0YTtcclxuICAgICAgICAvLyBxdW90ZSBkYXRhXHJcbiAgICAgICAgZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGRhdGEucmVwbGFjZSgvXCIvZywgJ1wiJykgOiBkYXRhO1xyXG4gICAgICAgIHJldHVybiBgXCIke2RhdGF9XCJgO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZW50LnB1c2gobGluZS5qb2luKHNlcGFyYXRvcikpO1xyXG59O1xyXG5cclxuY29uc3QgZGVmYXVsdHMgPSB7XHJcbiAgICBzZXBhcmF0b3I6ICcsJyxcclxuICAgIHF1b3RlZDogZmFsc2VcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNzdihjb2x1bW5zLCBkYXRhcywgb3B0aW9ucywgbm9IZWFkZXIgPSBmYWxzZSkge1xyXG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcclxuICAgIGxldCBjb2x1bW5PcmRlcjtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBbXTtcclxuICAgIGNvbnN0IGNvbHVtbiA9IFtdO1xyXG5cclxuICAgIGlmIChjb2x1bW5zKSB7XHJcbiAgICAgICAgY29sdW1uT3JkZXIgPSBjb2x1bW5zLm1hcCh2ID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykgcmV0dXJuIHY7XHJcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5wdXNoKHR5cGVvZiB2LmxhYmVsICE9PSAndW5kZWZpbmVkJyA/IHYubGFiZWwgOiB2LnByb3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2LnByb3A7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5sZW5ndGggPiAwKSBhcHBlbmRMaW5lKGNvbnRlbnQsIGNvbHVtbiwgb3B0aW9ucyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbHVtbk9yZGVyID0gW107XHJcbiAgICAgICAgZGF0YXMuZm9yRWFjaCh2ID0+IHtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcmRlciA9IGNvbHVtbk9yZGVyLmNvbmNhdChPYmplY3Qua2V5cyh2KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoY29sdW1uT3JkZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb2x1bW5PcmRlciA9IGNvbHVtbk9yZGVyLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleCk7XHJcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIGFwcGVuZExpbmUoY29udGVudCwgY29sdW1uT3JkZXIsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICBkYXRhcy5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cpKSB7XHJcbiAgICAgICAgICAgICAgICByb3cgPSBjb2x1bW5PcmRlci5tYXAoayA9PiAodHlwZW9mIHJvd1trXSAhPT0gJ3VuZGVmaW5lZCcgPyByb3dba10gOiAnJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFwcGVuZExpbmUoY29udGVudCwgcm93LCBvcHRpb25zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZW50LmpvaW4obmV3TGluZSk7XHJcbn1cclxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cclxuLyogQmxvYi5qc1xyXG4gKiBBIEJsb2IgaW1wbGVtZW50YXRpb24uXHJcbiAqIDIwMTQtMDUtMjdcclxuICpcclxuICogQnkgRWxpIEdyZXksIGh0dHA6Ly9lbGlncmV5LmNvbVxyXG4gKiBCeSBEZXZpbiBTYW1hcmluLCBodHRwczovL2dpdGh1Yi5jb20vZWJveWpyXHJcbiAqIExpY2Vuc2U6IFgxMS9NSVRcclxuICogICBTZWUgTElDRU5TRS5tZFxyXG4gKi9cclxuXHJcbi8qZ2xvYmFsIHNlbGYsIHVuZXNjYXBlICovXHJcbi8qanNsaW50IGJpdHdpc2U6IHRydWUsIHJlZ2V4cDogdHJ1ZSwgY29uZnVzaW9uOiB0cnVlLCBlczU6IHRydWUsIHZhcnM6IHRydWUsIHdoaXRlOiB0cnVlLFxyXG4gcGx1c3BsdXM6IHRydWUgKi9cclxuXHJcbi8qISBAc291cmNlIGh0dHA6Ly9wdXJsLmVsaWdyZXkuY29tL2dpdGh1Yi9CbG9iLmpzL2Jsb2IvbWFzdGVyL0Jsb2IuanMgKi9cclxuXHJcbihmdW5jdGlvbiAodmlldykge1xyXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4gICAgdmlldy5VUkwgPSB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTDtcclxuXHJcbiAgICBpZiAodmlldy5CbG9iICYmIHZpZXcuVVJMKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbmV3IEJsb2I7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEludGVybmFsbHkgd2UgdXNlIGEgQmxvYkJ1aWxkZXIgaW1wbGVtZW50YXRpb24gdG8gYmFzZSBCbG9iIG9mZiBvZlxyXG4gICAgLy8gaW4gb3JkZXIgdG8gc3VwcG9ydCBvbGRlciBicm93c2VycyB0aGF0IG9ubHkgaGF2ZSBCbG9iQnVpbGRlclxyXG4gICAgdmFyIEJsb2JCdWlsZGVyID0gdmlldy5CbG9iQnVpbGRlciB8fCB2aWV3LldlYktpdEJsb2JCdWlsZGVyIHx8IHZpZXcuTW96QmxvYkJ1aWxkZXIgfHwgKGZ1bmN0aW9uKHZpZXcpIHtcclxuICAgICAgICAgICAgdmFyXHJcbiAgICAgICAgICAgICAgICBnZXRfY2xhc3MgPSBmdW5jdGlvbihvYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkubWF0Y2goL15cXFtvYmplY3RcXHMoLiopXFxdJC8pWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLCBGYWtlQmxvYkJ1aWxkZXIgPSBmdW5jdGlvbiBCbG9iQnVpbGRlcigpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICwgRmFrZUJsb2IgPSBmdW5jdGlvbiBCbG9iKGRhdGEsIHR5cGUsIGVuY29kaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICwgRkJCX3Byb3RvID0gRmFrZUJsb2JCdWlsZGVyLnByb3RvdHlwZVxyXG4gICAgICAgICAgICAgICAgLCBGQl9wcm90byA9IEZha2VCbG9iLnByb3RvdHlwZVxyXG4gICAgICAgICAgICAgICAgLCBGaWxlUmVhZGVyU3luYyA9IHZpZXcuRmlsZVJlYWRlclN5bmNcclxuICAgICAgICAgICAgICAgICwgRmlsZUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGUgPSB0aGlzW3RoaXMubmFtZSA9IHR5cGVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLCBmaWxlX2V4X2NvZGVzID0gKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiTk9UX0ZPVU5EX0VSUiBTRUNVUklUWV9FUlIgQUJPUlRfRVJSIE5PVF9SRUFEQUJMRV9FUlIgRU5DT0RJTkdfRVJSIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKyBcIk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiBJTlZBTElEX1NUQVRFX0VSUiBTWU5UQVhfRVJSXCJcclxuICAgICAgICAgICAgICAgICkuc3BsaXQoXCIgXCIpXHJcbiAgICAgICAgICAgICAgICAsIGZpbGVfZXhfY29kZSA9IGZpbGVfZXhfY29kZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAsIHJlYWxfVVJMID0gdmlldy5VUkwgfHwgdmlldy53ZWJraXRVUkwgfHwgdmlld1xyXG4gICAgICAgICAgICAgICAgLCByZWFsX2NyZWF0ZV9vYmplY3RfVVJMID0gcmVhbF9VUkwuY3JlYXRlT2JqZWN0VVJMXHJcbiAgICAgICAgICAgICAgICAsIHJlYWxfcmV2b2tlX29iamVjdF9VUkwgPSByZWFsX1VSTC5yZXZva2VPYmplY3RVUkxcclxuICAgICAgICAgICAgICAgICwgVVJMID0gcmVhbF9VUkxcclxuICAgICAgICAgICAgICAgICwgYnRvYSA9IHZpZXcuYnRvYVxyXG4gICAgICAgICAgICAgICAgLCBhdG9iID0gdmlldy5hdG9iXHJcblxyXG4gICAgICAgICAgICAgICAgLCBBcnJheUJ1ZmZlciA9IHZpZXcuQXJyYXlCdWZmZXJcclxuICAgICAgICAgICAgICAgICwgVWludDhBcnJheSA9IHZpZXcuVWludDhBcnJheVxyXG4gICAgICAgICAgICAgICAgO1xyXG4gICAgICAgICAgICBGYWtlQmxvYi5mYWtlID0gRkJfcHJvdG8uZmFrZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHdoaWxlIChmaWxlX2V4X2NvZGUtLSkge1xyXG4gICAgICAgICAgICAgICAgRmlsZUV4Y2VwdGlvbi5wcm90b3R5cGVbZmlsZV9leF9jb2Rlc1tmaWxlX2V4X2NvZGVdXSA9IGZpbGVfZXhfY29kZSArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFyZWFsX1VSTC5jcmVhdGVPYmplY3RVUkwpIHtcclxuICAgICAgICAgICAgICAgIFVSTCA9IHZpZXcuVVJMID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uKGJsb2IpIHtcclxuICAgICAgICAgICAgICAgIHZhclxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBibG9iLnR5cGVcclxuICAgICAgICAgICAgICAgICAgICAsIGRhdGFfVVJJX2hlYWRlclxyXG4gICAgICAgICAgICAgICAgICAgIDtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYmxvYiBpbnN0YW5jZW9mIEZha2VCbG9iKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9VUklfaGVhZGVyID0gXCJkYXRhOlwiICsgdHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYmxvYi5lbmNvZGluZyA9PT0gXCJiYXNlNjRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCI7YmFzZTY0LFwiICsgYmxvYi5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvYi5lbmNvZGluZyA9PT0gXCJVUklcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCIsXCIgKyBkZWNvZGVVUklDb21wb25lbnQoYmxvYi5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGlmIChidG9hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIjtiYXNlNjQsXCIgKyBidG9hKGJsb2IuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfVVJJX2hlYWRlciArIFwiLFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGJsb2IuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWFsX2NyZWF0ZV9vYmplY3RfVVJMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxfY3JlYXRlX29iamVjdF9VUkwuY2FsbChyZWFsX1VSTCwgYmxvYik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwgPSBmdW5jdGlvbihvYmplY3RfVVJMKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0X1VSTC5zdWJzdHJpbmcoMCwgNSkgIT09IFwiZGF0YTpcIiAmJiByZWFsX3Jldm9rZV9vYmplY3RfVVJMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhbF9yZXZva2Vfb2JqZWN0X1VSTC5jYWxsKHJlYWxfVVJMLCBvYmplY3RfVVJMKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgRkJCX3Byb3RvLmFwcGVuZCA9IGZ1bmN0aW9uKGRhdGEvKiwgZW5kaW5ncyovKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmIgPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAvLyBkZWNvZGUgZGF0YSB0byBhIGJpbmFyeSBzdHJpbmdcclxuICAgICAgICAgICAgICAgIGlmIChVaW50OEFycmF5ICYmIChkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLCBidWYgPSBuZXcgVWludDhBcnJheShkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGkgPSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICwgYnVmX2xlbiA9IGJ1Zi5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgYnVmX2xlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJiLnB1c2goc3RyKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2V0X2NsYXNzKGRhdGEpID09PSBcIkJsb2JcIiB8fCBnZXRfY2xhc3MoZGF0YSkgPT09IFwiRmlsZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKEZpbGVSZWFkZXJTeW5jKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmciA9IG5ldyBGaWxlUmVhZGVyU3luYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChmci5yZWFkQXNCaW5hcnlTdHJpbmcoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzeW5jIEZpbGVSZWFkZXIgd29uJ3Qgd29yayBhcyBCbG9iQnVpbGRlciBpcyBzeW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGaWxlRXhjZXB0aW9uKFwiTk9UX1JFQURBQkxFX0VSUlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBGYWtlQmxvYikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVuY29kaW5nID09PSBcImJhc2U2NFwiICYmIGF0b2IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChhdG9iKGRhdGEuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5lbmNvZGluZyA9PT0gXCJVUklcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChkYXRhLmRhdGEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZW5jb2RpbmcgPT09IFwicmF3XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChkYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gXCJcIjsgLy8gY29udmVydCB1bnN1cHBvcnRlZCB0eXBlcyB0byBzdHJpbmdzXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlY29kZSBVVEYtMTYgdG8gYmluYXJ5IHN0cmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIGJiLnB1c2godW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIEZCQl9wcm90by5nZXRCbG9iID0gZnVuY3Rpb24odHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VCbG9iKHRoaXMuZGF0YS5qb2luKFwiXCIpLCB0eXBlLCBcInJhd1wiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgRkJCX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJbb2JqZWN0IEJsb2JCdWlsZGVyXVwiO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBGQl9wcm90by5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGlmIChhcmdzIDwgMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlQmxvYihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGFyZ3MgPiAxID8gZW5kIDogdGhpcy5kYXRhLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICAsIHR5cGVcclxuICAgICAgICAgICAgICAgICAgICAsIHRoaXMuZW5jb2RpbmdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIEZCX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJbb2JqZWN0IEJsb2JdXCI7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIEZCX3Byb3RvLmNsb3NlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSB0aGlzLmRhdGEubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIEZha2VCbG9iQnVpbGRlcjtcclxuICAgICAgICB9KHZpZXcpKTtcclxuXHJcbiAgICB2aWV3LkJsb2IgPSBmdW5jdGlvbiBCbG9iKGJsb2JQYXJ0cywgb3B0aW9ucykge1xyXG4gICAgICAgIHZhciB0eXBlID0gb3B0aW9ucyA/IChvcHRpb25zLnR5cGUgfHwgXCJcIikgOiBcIlwiO1xyXG4gICAgICAgIHZhciBidWlsZGVyID0gbmV3IEJsb2JCdWlsZGVyKCk7XHJcbiAgICAgICAgaWYgKGJsb2JQYXJ0cykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYmxvYlBhcnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChibG9iUGFydHNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBidWlsZGVyLmdldEJsb2IodHlwZSk7XHJcbiAgICB9O1xyXG59KHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYgfHwgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cgfHwgdGhpcy5jb250ZW50IHx8IHRoaXMpKTtcclxuIiwiKGZ1bmN0aW9uKGEsYil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxiKTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBleHBvcnRzKWIoKTtlbHNle2IoKSxhLkZpbGVTYXZlcj17ZXhwb3J0czp7fX0uZXhwb3J0c319KSh0aGlzLGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYihhLGIpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBiP2I9e2F1dG9Cb206ITF9Olwib2JqZWN0XCIhPXR5cGVvZiBiJiYoY29uc29sZS53YXJuKFwiRGVwcmVjYXRlZDogRXhwZWN0ZWQgdGhpcmQgYXJndW1lbnQgdG8gYmUgYSBvYmplY3RcIiksYj17YXV0b0JvbTohYn0pLGIuYXV0b0JvbSYmL15cXHMqKD86dGV4dFxcL1xcUyp8YXBwbGljYXRpb25cXC94bWx8XFxTKlxcL1xcUypcXCt4bWwpXFxzKjsuKmNoYXJzZXRcXHMqPVxccyp1dGYtOC9pLnRlc3QoYS50eXBlKT9uZXcgQmxvYihbXCJcXHVGRUZGXCIsYV0se3R5cGU6YS50eXBlfSk6YX1mdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKFwiR0VUXCIsYSksZC5yZXNwb25zZVR5cGU9XCJibG9iXCIsZC5vbmxvYWQ9ZnVuY3Rpb24oKXtnKGQucmVzcG9uc2UsYixjKX0sZC5vbmVycm9yPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcihcImNvdWxkIG5vdCBkb3dubG9hZCBmaWxlXCIpfSxkLnNlbmQoKX1mdW5jdGlvbiBkKGEpe3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oXCJIRUFEXCIsYSwhMSk7dHJ5e2Iuc2VuZCgpfWNhdGNoKGEpe31yZXR1cm4gMjAwPD1iLnN0YXR1cyYmMjk5Pj1iLnN0YXR1c31mdW5jdGlvbiBlKGEpe3RyeXthLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSl9Y2F0Y2goYyl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJNb3VzZUV2ZW50c1wiKTtiLmluaXRNb3VzZUV2ZW50KFwiY2xpY2tcIiwhMCwhMCx3aW5kb3csMCwwLDAsODAsMjAsITEsITEsITEsITEsMCxudWxsKSxhLmRpc3BhdGNoRXZlbnQoYil9fXZhciBmPVwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy53aW5kb3c9PT13aW5kb3c/d2luZG93Olwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmLnNlbGY9PT1zZWxmP3NlbGY6XCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dm9pZCAwLGE9Zi5uYXZpZ2F0b3ImJi9NYWNpbnRvc2gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJi9BcHBsZVdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksZz1mLnNhdmVBc3x8KFwib2JqZWN0XCIhPXR5cGVvZiB3aW5kb3d8fHdpbmRvdyE9PWY/ZnVuY3Rpb24oKXt9OlwiZG93bmxvYWRcImluIEhUTUxBbmNob3JFbGVtZW50LnByb3RvdHlwZSYmIWE/ZnVuY3Rpb24oYixnLGgpe3ZhciBpPWYuVVJMfHxmLndlYmtpdFVSTCxqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2c9Z3x8Yi5uYW1lfHxcImRvd25sb2FkXCIsai5kb3dubG9hZD1nLGoucmVsPVwibm9vcGVuZXJcIixcInN0cmluZ1wiPT10eXBlb2YgYj8oai5ocmVmPWIsai5vcmlnaW49PT1sb2NhdGlvbi5vcmlnaW4/ZShqKTpkKGouaHJlZik/YyhiLGcsaCk6ZShqLGoudGFyZ2V0PVwiX2JsYW5rXCIpKTooai5ocmVmPWkuY3JlYXRlT2JqZWN0VVJMKGIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJldm9rZU9iamVjdFVSTChqLmhyZWYpfSw0RTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGopfSwwKSl9OlwibXNTYXZlT3JPcGVuQmxvYlwiaW4gbmF2aWdhdG9yP2Z1bmN0aW9uKGYsZyxoKXtpZihnPWd8fGYubmFtZXx8XCJkb3dubG9hZFwiLFwic3RyaW5nXCIhPXR5cGVvZiBmKW5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGIoZixoKSxnKTtlbHNlIGlmKGQoZikpYyhmLGcsaCk7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtpLmhyZWY9ZixpLnRhcmdldD1cIl9ibGFua1wiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGkpfSl9fTpmdW5jdGlvbihiLGQsZSxnKXtpZihnPWd8fG9wZW4oXCJcIixcIl9ibGFua1wiKSxnJiYoZy5kb2N1bWVudC50aXRsZT1nLmRvY3VtZW50LmJvZHkuaW5uZXJUZXh0PVwiZG93bmxvYWRpbmcuLi5cIiksXCJzdHJpbmdcIj09dHlwZW9mIGIpcmV0dXJuIGMoYixkLGUpO3ZhciBoPVwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI9PT1iLnR5cGUsaT0vY29uc3RydWN0b3IvaS50ZXN0KGYuSFRNTEVsZW1lbnQpfHxmLnNhZmFyaSxqPS9DcmlPU1xcL1tcXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigoanx8aCYmaXx8YSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBGaWxlUmVhZGVyKXt2YXIgaz1uZXcgRmlsZVJlYWRlcjtrLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciBhPWsucmVzdWx0O2E9aj9hOmEucmVwbGFjZSgvXmRhdGE6W147XSo7LyxcImRhdGE6YXR0YWNobWVudC9maWxlO1wiKSxnP2cubG9jYXRpb24uaHJlZj1hOmxvY2F0aW9uPWEsZz1udWxsfSxrLnJlYWRBc0RhdGFVUkwoYil9ZWxzZXt2YXIgbD1mLlVSTHx8Zi53ZWJraXRVUkwsbT1sLmNyZWF0ZU9iamVjdFVSTChiKTtnP2cubG9jYXRpb249bTpsb2NhdGlvbi5ocmVmPW0sZz1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLnJldm9rZU9iamVjdFVSTChtKX0sNEU0KX19KTtmLnNhdmVBcz1nLnNhdmVBcz1nLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJihtb2R1bGUuZXhwb3J0cz1nKX0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlU2F2ZXIubWluLmpzLm1hcCIsIi8qISB4bHN4LmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qIHZpbTogc2V0IHRzPTI6ICovXG4vKmV4cG9ydGVkIFhMU1ggKi9cbi8qZ2xvYmFsIHByb2Nlc3M6ZmFsc2UsIEJ1ZmZlcjpmYWxzZSwgQXJyYXlCdWZmZXI6ZmFsc2UsIERhdGFWaWV3OmZhbHNlLCBEZW5vOmZhbHNlICovXG52YXIgWExTWCA9IHt9O1xuWExTWC52ZXJzaW9uID0gJzAuMTguNSc7XG52YXIgY3VycmVudF9jb2RlcGFnZSA9IDEyMDAsIGN1cnJlbnRfYW5zaSA9IDEyNTI7XG5cbnZhciBWQUxJRF9BTlNJID0gWyA4NzQsIDkzMiwgOTM2LCA5NDksIDk1MCwgMTI1MCwgMTI1MSwgMTI1MiwgMTI1MywgMTI1NCwgMTI1NSwgMTI1NiwgMTI1NywgMTI1OCwgMTAwMDAgXTtcbi8qIEVDTUEtMzc2IFBhcnQgSSAxOC40LjEgY2hhcnNldCB0byBjb2RlcGFnZSBtYXBwaW5nICovXG52YXIgQ1MyQ1AgPSAoe1xuXHQvKjo6WyovMC8qOjpdKi86ICAgIDEyNTIsIC8qIEFOU0kgKi9cblx0Lyo6OlsqLzEvKjo6XSovOiAgIDY1MDAxLCAvKiBERUZBVUxUICovXG5cdC8qOjpbKi8yLyo6Ol0qLzogICA2NTAwMSwgLyogU1lNQk9MICovXG5cdC8qOjpbKi83Ny8qOjpdKi86ICAxMDAwMCwgLyogTUFDICovXG5cdC8qOjpbKi8xMjgvKjo6XSovOiAgIDkzMiwgLyogU0hJRlRKSVMgKi9cblx0Lyo6OlsqLzEyOS8qOjpdKi86ICAgOTQ5LCAvKiBIQU5HVUwgKi9cblx0Lyo6OlsqLzEzMC8qOjpdKi86ICAxMzYxLCAvKiBKT0hBQiAqL1xuXHQvKjo6WyovMTM0Lyo6Ol0qLzogICA5MzYsIC8qIEdCMjMxMiAqL1xuXHQvKjo6WyovMTM2Lyo6Ol0qLzogICA5NTAsIC8qIENISU5FU0VCSUc1ICovXG5cdC8qOjpbKi8xNjEvKjo6XSovOiAgMTI1MywgLyogR1JFRUsgKi9cblx0Lyo6OlsqLzE2Mi8qOjpdKi86ICAxMjU0LCAvKiBUVVJLSVNIICovXG5cdC8qOjpbKi8xNjMvKjo6XSovOiAgMTI1OCwgLyogVklFVE5BTUVTRSAqL1xuXHQvKjo6WyovMTc3Lyo6Ol0qLzogIDEyNTUsIC8qIEhFQlJFVyAqL1xuXHQvKjo6WyovMTc4Lyo6Ol0qLzogIDEyNTYsIC8qIEFSQUJJQyAqL1xuXHQvKjo6WyovMTg2Lyo6Ol0qLzogIDEyNTcsIC8qIEJBTFRJQyAqL1xuXHQvKjo6WyovMjA0Lyo6Ol0qLzogIDEyNTEsIC8qIFJVU1NJQU4gKi9cblx0Lyo6OlsqLzIyMi8qOjpdKi86ICAgODc0LCAvKiBUSEFJICovXG5cdC8qOjpbKi8yMzgvKjo6XSovOiAgMTI1MCwgLyogRUFTVEVVUk9QRSAqL1xuXHQvKjo6WyovMjU1Lyo6Ol0qLzogIDEyNTIsIC8qIE9FTSAqL1xuXHQvKjo6WyovNjkvKjo6XSovOiAgIDY5NjkgIC8qIE1JU0MgKi9cbn0vKjphbnkqLyk7XG5cbnZhciBzZXRfYW5zaSA9IGZ1bmN0aW9uKGNwLyo6bnVtYmVyKi8pIHsgaWYoVkFMSURfQU5TSS5pbmRleE9mKGNwKSA9PSAtMSkgcmV0dXJuOyBjdXJyZW50X2Fuc2kgPSBDUzJDUFswXSA9IGNwOyB9O1xuZnVuY3Rpb24gcmVzZXRfYW5zaSgpIHsgc2V0X2Fuc2koMTI1Mik7IH1cblxudmFyIHNldF9jcCA9IGZ1bmN0aW9uKGNwLyo6bnVtYmVyKi8pIHsgY3VycmVudF9jb2RlcGFnZSA9IGNwOyBzZXRfYW5zaShjcCk7IH07XG5mdW5jdGlvbiByZXNldF9jcCgpIHsgc2V0X2NwKDEyMDApOyByZXNldF9hbnNpKCk7IH1cblxuZnVuY3Rpb24gY2hhcl9jb2RlcyhkYXRhLyo6c3RyaW5nKi8pLyo6QXJyYXk8bnVtYmVyPiovIHsgdmFyIG8vKjpBcnJheTxudW1iZXI+Ki8gPSBbXTsgZm9yKHZhciBpID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7IGkgPCBsZW47ICsraSkgb1tpXSA9IGRhdGEuY2hhckNvZGVBdChpKTsgcmV0dXJuIG87IH1cblxuZnVuY3Rpb24gdXRmMTZsZXJlYWQoZGF0YS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IChkYXRhLmxlbmd0aD4+MSk7ICsraSkgb1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YS5jaGFyQ29kZUF0KDIqaSkgKyAoZGF0YS5jaGFyQ29kZUF0KDIqaSsxKTw8OCkpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gdXRmMTZiZXJlYWQoZGF0YS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IChkYXRhLmxlbmd0aD4+MSk7ICsraSkgb1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YS5jaGFyQ29kZUF0KDIqaSsxKSArIChkYXRhLmNoYXJDb2RlQXQoMippKTw8OCkpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG52YXIgZGVib20gPSBmdW5jdGlvbihkYXRhLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgYzEgPSBkYXRhLmNoYXJDb2RlQXQoMCksIGMyID0gZGF0YS5jaGFyQ29kZUF0KDEpO1xuXHRpZihjMSA9PSAweEZGICYmIGMyID09IDB4RkUpIHJldHVybiB1dGYxNmxlcmVhZChkYXRhLnNsaWNlKDIpKTtcblx0aWYoYzEgPT0gMHhGRSAmJiBjMiA9PSAweEZGKSByZXR1cm4gdXRmMTZiZXJlYWQoZGF0YS5zbGljZSgyKSk7XG5cdGlmKGMxID09IDB4RkVGRikgcmV0dXJuIGRhdGEuc2xpY2UoMSk7XG5cdHJldHVybiBkYXRhO1xufTtcblxudmFyIF9nZXRjaGFyID0gZnVuY3Rpb24gX2djMSh4Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh4KTsgfTtcbnZhciBfZ2V0YW5zaSA9IGZ1bmN0aW9uIF9nYTEoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoeCk7IH07XG5cbnZhciAkY3B0YWJsZTtcbmZ1bmN0aW9uIHNldF9jcHRhYmxlKGNwdGFibGUpIHtcblx0JGNwdGFibGUgPSBjcHRhYmxlO1xuXHRzZXRfY3AgPSBmdW5jdGlvbihjcC8qOm51bWJlciovKSB7IGN1cnJlbnRfY29kZXBhZ2UgPSBjcDsgc2V0X2Fuc2koY3ApOyB9O1xuXHRkZWJvbSA9IGZ1bmN0aW9uKGRhdGEvKjpzdHJpbmcqLykge1xuXHRcdGlmKGRhdGEuY2hhckNvZGVBdCgwKSA9PT0gMHhGRiAmJiBkYXRhLmNoYXJDb2RlQXQoMSkgPT09IDB4RkUpIHsgcmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBjaGFyX2NvZGVzKGRhdGEuc2xpY2UoMikpKTsgfVxuXHRcdHJldHVybiBkYXRhO1xuXHR9O1xuXHRfZ2V0Y2hhciA9IGZ1bmN0aW9uIF9nYzIoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0XHRpZihjdXJyZW50X2NvZGVwYWdlID09PSAxMjAwKSByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh4KTtcblx0XHRyZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIFt4JjI1NSx4Pj44XSlbMF07XG5cdH07XG5cdF9nZXRhbnNpID0gZnVuY3Rpb24gX2dhMih4Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9hbnNpLCBbeF0pWzBdO1xuXHR9O1xuXHRjcGRvaXQoKTtcbn1cbmV4cG9ydCB7IHNldF9jcHRhYmxlIH07XG52YXIgREVOU0UgPSBudWxsO1xudmFyIERJRl9YTCA9IHRydWU7XG52YXIgQmFzZTY0X21hcCA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIjtcbmZ1bmN0aW9uIEJhc2U2NF9lbmNvZGUoaW5wdXQpIHtcbiAgdmFyIG8gPSBcIlwiO1xuICB2YXIgYzEgPSAwLCBjMiA9IDAsIGMzID0gMCwgZTEgPSAwLCBlMiA9IDAsIGUzID0gMCwgZTQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgKSB7XG4gICAgYzEgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7XG4gICAgZTEgPSBjMSA+PiAyO1xuICAgIGMyID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuICAgIGUyID0gKGMxICYgMykgPDwgNCB8IGMyID4+IDQ7XG4gICAgYzMgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7XG4gICAgZTMgPSAoYzIgJiAxNSkgPDwgMiB8IGMzID4+IDY7XG4gICAgZTQgPSBjMyAmIDYzO1xuICAgIGlmIChpc05hTihjMikpIHtcbiAgICAgIGUzID0gZTQgPSA2NDtcbiAgICB9IGVsc2UgaWYgKGlzTmFOKGMzKSkge1xuICAgICAgZTQgPSA2NDtcbiAgICB9XG4gICAgbyArPSBCYXNlNjRfbWFwLmNoYXJBdChlMSkgKyBCYXNlNjRfbWFwLmNoYXJBdChlMikgKyBCYXNlNjRfbWFwLmNoYXJBdChlMykgKyBCYXNlNjRfbWFwLmNoYXJBdChlNCk7XG4gIH1cbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiBCYXNlNjRfZGVjb2RlKGlucHV0KSB7XG4gIHZhciBvID0gXCJcIjtcbiAgdmFyIGMxID0gMCwgYzIgPSAwLCBjMyA9IDAsIGUxID0gMCwgZTIgPSAwLCBlMyA9IDAsIGU0ID0gMDtcbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9bXlxcd1xcK1xcL1xcPV0vZywgXCJcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyApIHtcbiAgICBlMSA9IEJhc2U2NF9tYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG4gICAgZTIgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGMxID0gZTEgPDwgMiB8IGUyID4+IDQ7XG4gICAgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMxKTtcbiAgICBlMyA9IEJhc2U2NF9tYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG4gICAgYzIgPSAoZTIgJiAxNSkgPDwgNCB8IGUzID4+IDI7XG4gICAgaWYgKGUzICE9PSA2NCkge1xuICAgICAgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMyKTtcbiAgICB9XG4gICAgZTQgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGMzID0gKGUzICYgMykgPDwgNiB8IGU0O1xuICAgIGlmIChlNCAhPT0gNjQpIHtcbiAgICAgIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjMyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvO1xufVxudmFyIGhhc19idWYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkgeyByZXR1cm4gdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJyAmJiAhIXByb2Nlc3MudmVyc2lvbnMubm9kZTsgfSkoKTtcblxudmFyIEJ1ZmZlcl9mcm9tID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0aWYodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHR2YXIgbmJmcyA9ICFCdWZmZXIuZnJvbTtcblx0XHRpZighbmJmcykgdHJ5IHsgQnVmZmVyLmZyb20oXCJmb29cIiwgXCJ1dGY4XCIpOyB9IGNhdGNoKGUpIHsgbmJmcyA9IHRydWU7IH1cblx0XHRyZXR1cm4gbmJmcyA/IGZ1bmN0aW9uKGJ1ZiwgZW5jKSB7IHJldHVybiAoZW5jKSA/IG5ldyBCdWZmZXIoYnVmLCBlbmMpIDogbmV3IEJ1ZmZlcihidWYpOyB9IDogQnVmZmVyLmZyb20uYmluZChCdWZmZXIpO1xuXHR9XG5cdHJldHVybiBmdW5jdGlvbigpIHt9O1xufSkoKTtcblxuXG5mdW5jdGlvbiBuZXdfcmF3X2J1ZihsZW4vKjpudW1iZXIqLykge1xuXHQvKiBqc2hpbnQgLVcwNTYgKi9cblx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlci5hbGxvYyA/IEJ1ZmZlci5hbGxvYyhsZW4pIDogbmV3IEJ1ZmZlcihsZW4pO1xuXHRyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXkgIT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBVaW50OEFycmF5KGxlbikgOiBuZXcgQXJyYXkobGVuKTtcblx0LyoganNoaW50ICtXMDU2ICovXG59XG5cbmZ1bmN0aW9uIG5ld191bnNhZmVfYnVmKGxlbi8qOm51bWJlciovKSB7XG5cdC8qIGpzaGludCAtVzA1NiAqL1xuXHRpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyLmFsbG9jVW5zYWZlID8gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbikgOiBuZXcgQnVmZmVyKGxlbik7XG5cdHJldHVybiB0eXBlb2YgVWludDhBcnJheSAhPSBcInVuZGVmaW5lZFwiID8gbmV3IFVpbnQ4QXJyYXkobGVuKSA6IG5ldyBBcnJheShsZW4pO1xuXHQvKiBqc2hpbnQgK1cwNTYgKi9cbn1cblxudmFyIHMyYSA9IGZ1bmN0aW9uIHMyYShzLyo6c3RyaW5nKi8pLyo6YW55Ki8ge1xuXHRpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyX2Zyb20ocywgXCJiaW5hcnlcIik7XG5cdHJldHVybiBzLnNwbGl0KFwiXCIpLm1hcChmdW5jdGlvbih4Lyo6c3RyaW5nKi8pLyo6bnVtYmVyKi97IHJldHVybiB4LmNoYXJDb2RlQXQoMCkgJiAweGZmOyB9KTtcbn07XG5cbmZ1bmN0aW9uIHMyYWIocy8qOnN0cmluZyovKS8qOmFueSovIHtcblx0aWYodHlwZW9mIEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHMyYShzKTtcblx0dmFyIGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcihzLmxlbmd0aCksIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuXHRmb3IgKHZhciBpPTA7IGkhPXMubGVuZ3RoOyArK2kpIHZpZXdbaV0gPSBzLmNoYXJDb2RlQXQoaSkgJiAweEZGO1xuXHRyZXR1cm4gYnVmO1xufVxuXG5mdW5jdGlvbiBhMnMoZGF0YS8qOmFueSovKS8qOnN0cmluZyovIHtcblx0aWYoQXJyYXkuaXNBcnJheShkYXRhKSkgcmV0dXJuIGRhdGEubWFwKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7IH0pLmpvaW4oXCJcIik7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107IGZvcih2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBvW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW2ldKTsgcmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gYTJ1KGRhdGEvKjpBcnJheTxudW1iZXI+Ki8pLyo6VWludDhBcnJheSovIHtcblx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZFwiKTtcblx0cmV0dXJuIG5ldyBVaW50OEFycmF5KGRhdGEpO1xufVxuXG5mdW5jdGlvbiBhYjJhKGRhdGEvKjpBcnJheUJ1ZmZlcnxVaW50OEFycmF5Ki8pLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0aWYodHlwZW9mIEFycmF5QnVmZmVyID09ICd1bmRlZmluZWQnKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZFwiKTtcblx0aWYoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSByZXR1cm4gYWIyYShuZXcgVWludDhBcnJheShkYXRhKSk7XG5cdC8qOjogaWYoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0dmFyIG8gPSBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb1tpXSA9IGRhdGFbaV07XG5cdHJldHVybiBvO1xufVxuXG52YXIgYmNvbmNhdCA9IGhhc19idWYgPyBmdW5jdGlvbihidWZzKSB7IHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZnMubWFwKGZ1bmN0aW9uKGJ1ZikgeyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGJ1ZikgPyBidWYgOiBCdWZmZXJfZnJvbShidWYpOyB9KSk7IH0gOiBmdW5jdGlvbihidWZzKSB7XG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0dmFyIGkgPSAwLCBtYXhsZW4gPSAwO1xuXHRcdGZvcihpID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIG1heGxlbiArPSBidWZzW2ldLmxlbmd0aDtcblx0XHR2YXIgbyA9IG5ldyBVaW50OEFycmF5KG1heGxlbik7XG5cdFx0dmFyIGxlbiA9IDA7XG5cdFx0Zm9yKGkgPSAwLCBtYXhsZW4gPSAwOyBpIDwgYnVmcy5sZW5ndGg7IG1heGxlbiArPSBsZW4sICsraSkge1xuXHRcdFx0bGVuID0gYnVmc1tpXS5sZW5ndGg7XG5cdFx0XHRpZihidWZzW2ldIGluc3RhbmNlb2YgVWludDhBcnJheSkgby5zZXQoYnVmc1tpXSwgbWF4bGVuKTtcblx0XHRcdGVsc2UgaWYodHlwZW9mIGJ1ZnNbaV0gPT0gXCJzdHJpbmdcIikgeyB0aHJvdyBcInd0ZlwiOyB9XG5cdFx0XHRlbHNlIG8uc2V0KG5ldyBVaW50OEFycmF5KGJ1ZnNbaV0pLCBtYXhsZW4pO1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXHRyZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBidWZzLm1hcChmdW5jdGlvbihidWYpIHsgcmV0dXJuIEFycmF5LmlzQXJyYXkoYnVmKSA/IGJ1ZiA6IFtdLnNsaWNlLmNhbGwoYnVmKTsgfSkpO1xufTtcblxuZnVuY3Rpb24gdXRmOGRlY29kZShjb250ZW50Lyo6c3RyaW5nKi8pIHtcblx0dmFyIG91dCA9IFtdLCB3aWR4ID0gMCwgTCA9IGNvbnRlbnQubGVuZ3RoICsgMjUwO1xuXHR2YXIgbyA9IG5ld19yYXdfYnVmKGNvbnRlbnQubGVuZ3RoICsgMjU1KTtcblx0Zm9yKHZhciByaWR4ID0gMDsgcmlkeCA8IGNvbnRlbnQubGVuZ3RoOyArK3JpZHgpIHtcblx0XHR2YXIgYyA9IGNvbnRlbnQuY2hhckNvZGVBdChyaWR4KTtcblx0XHRpZihjIDwgMHg4MCkgb1t3aWR4KytdID0gYztcblx0XHRlbHNlIGlmKGMgPCAweDgwMCkge1xuXHRcdFx0b1t3aWR4KytdID0gKDE5MnwoKGM+PjYpJjMxKSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fChjJjYzKSk7XG5cdFx0fSBlbHNlIGlmKGMgPj0gMHhEODAwICYmIGMgPCAweEUwMDApIHtcblx0XHRcdGMgPSAoYyYxMDIzKSs2NDtcblx0XHRcdHZhciBkID0gY29udGVudC5jaGFyQ29kZUF0KCsrcmlkeCkmMTAyMztcblx0XHRcdG9bd2lkeCsrXSA9ICgyNDB8KChjPj44KSY3KSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fCgoYz4+MikmNjMpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KChkPj42KSYxNSl8KChjJjMpPDw0KSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fChkJjYzKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9bd2lkeCsrXSA9ICgyMjR8KChjPj4xMikmMTUpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KChjPj42KSY2MykpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoYyY2MykpO1xuXHRcdH1cblx0XHRpZih3aWR4ID4gTCkge1xuXHRcdFx0b3V0LnB1c2goby5zbGljZSgwLCB3aWR4KSk7XG5cdFx0XHR3aWR4ID0gMDtcblx0XHRcdG8gPSBuZXdfcmF3X2J1Zig2NTUzNSk7XG5cdFx0XHRMID0gNjU1MzA7XG5cdFx0fVxuXHR9XG5cdG91dC5wdXNoKG8uc2xpY2UoMCwgd2lkeCkpO1xuXHRyZXR1cm4gYmNvbmNhdChvdXQpO1xufVxuXG52YXIgY2hyMCA9IC9cXHUwMDAwL2csIGNocjEgPSAvW1xcdTAwMDEtXFx1MDAwNl0vZztcbi8qOjpcbmRlY2xhcmUgdHlwZSBCbG9jayA9IGFueTtcbmRlY2xhcmUgdHlwZSBCdWZBcnJheSA9IHtcblx0bmV3YmxrKHN6Om51bWJlcik6QmxvY2s7XG5cdG5leHQoc3o6bnVtYmVyKTpCbG9jaztcblx0ZW5kKCk6YW55O1xuXHRwdXNoKGJ1ZjpCbG9jayk6dm9pZDtcbn07XG5cbnR5cGUgUmVjb3JkSG9wcGVyQ0IgPSB7KGQ6YW55LCBSbjpzdHJpbmcsIFJUOm51bWJlcik6P2Jvb2xlYW47fTtcblxudHlwZSBFdmVydFR5cGUgPSB7W3N0cmluZ106c3RyaW5nfTtcbnR5cGUgRXZlcnROdW1UeXBlID0ge1tzdHJpbmddOm51bWJlcn07XG50eXBlIEV2ZXJ0QXJyVHlwZSA9IHtbc3RyaW5nXTpBcnJheTxzdHJpbmc+fTtcblxudHlwZSBTdHJpbmdDb252ID0geyhzdHJpbmcpOnN0cmluZ307XG5cbiovXG4vKiBzc2YuanMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLypqc2hpbnQgLVcwNDEgKi9cbmZ1bmN0aW9uIF9zdHJyZXYoeC8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgdmFyIG8gPSBcIlwiLCBpID0geC5sZW5ndGgtMTsgd2hpbGUoaT49MCkgbyArPSB4LmNoYXJBdChpLS0pOyByZXR1cm4gbzsgfVxuZnVuY3Rpb24gcGFkMCh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrdjsgcmV0dXJuIHQubGVuZ3RoPj1kP3Q6ZmlsbCgnMCcsZC10Lmxlbmd0aCkrdDt9XG5mdW5jdGlvbiBwYWRfKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIit2O3JldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJyAnLGQtdC5sZW5ndGgpK3Q7fVxuZnVuY3Rpb24gcnBhZF8odi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7IHJldHVybiB0Lmxlbmd0aD49ZD90OnQrZmlsbCgnICcsZC10Lmxlbmd0aCk7fVxuZnVuY3Rpb24gcGFkMHIxKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIitNYXRoLnJvdW5kKHYpOyByZXR1cm4gdC5sZW5ndGg+PWQ/dDpmaWxsKCcwJyxkLXQubGVuZ3RoKSt0O31cbmZ1bmN0aW9uIHBhZDByMih2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrdjsgcmV0dXJuIHQubGVuZ3RoPj1kP3Q6ZmlsbCgnMCcsZC10Lmxlbmd0aCkrdDt9XG52YXIgcDJfMzIgPSAvKiNfX1BVUkVfXyovTWF0aC5wb3coMiwzMik7XG5mdW5jdGlvbiBwYWQwcih2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove2lmKHY+cDJfMzJ8fHY8LXAyXzMyKSByZXR1cm4gcGFkMHIxKHYsZCk7IHZhciBpID0gTWF0aC5yb3VuZCh2KTsgcmV0dXJuIHBhZDByMihpLGQpOyB9XG4vKiB5ZXMsIGluIDIwMjIgdGhpcyBpcyBzdGlsbCBmYXN0ZXIgdGhhbiBzdHJpbmcgY29tcGFyZSAqL1xuZnVuY3Rpb24gU1NGX2lzZ2VuZXJhbChzLyo6c3RyaW5nKi8sIGkvKjo/bnVtYmVyKi8pLyo6Ym9vbGVhbiovIHsgaSA9IGkgfHwgMDsgcmV0dXJuIHMubGVuZ3RoID49IDcgKyBpICYmIChzLmNoYXJDb2RlQXQoaSl8MzIpID09PSAxMDMgJiYgKHMuY2hhckNvZGVBdChpKzEpfDMyKSA9PT0gMTAxICYmIChzLmNoYXJDb2RlQXQoaSsyKXwzMikgPT09IDExMCAmJiAocy5jaGFyQ29kZUF0KGkrMyl8MzIpID09PSAxMDEgJiYgKHMuY2hhckNvZGVBdChpKzQpfDMyKSA9PT0gMTE0ICYmIChzLmNoYXJDb2RlQXQoaSs1KXwzMikgPT09IDk3ICYmIChzLmNoYXJDb2RlQXQoaSs2KXwzMikgPT09IDEwODsgfVxudmFyIGRheXMvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtcblx0WydTdW4nLCAnU3VuZGF5J10sXG5cdFsnTW9uJywgJ01vbmRheSddLFxuXHRbJ1R1ZScsICdUdWVzZGF5J10sXG5cdFsnV2VkJywgJ1dlZG5lc2RheSddLFxuXHRbJ1RodScsICdUaHVyc2RheSddLFxuXHRbJ0ZyaScsICdGcmlkYXknXSxcblx0WydTYXQnLCAnU2F0dXJkYXknXVxuXTtcbnZhciBtb250aHMvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtcblx0WydKJywgJ0phbicsICdKYW51YXJ5J10sXG5cdFsnRicsICdGZWInLCAnRmVicnVhcnknXSxcblx0WydNJywgJ01hcicsICdNYXJjaCddLFxuXHRbJ0EnLCAnQXByJywgJ0FwcmlsJ10sXG5cdFsnTScsICdNYXknLCAnTWF5J10sXG5cdFsnSicsICdKdW4nLCAnSnVuZSddLFxuXHRbJ0onLCAnSnVsJywgJ0p1bHknXSxcblx0WydBJywgJ0F1ZycsICdBdWd1c3QnXSxcblx0WydTJywgJ1NlcCcsICdTZXB0ZW1iZXInXSxcblx0WydPJywgJ09jdCcsICdPY3RvYmVyJ10sXG5cdFsnTicsICdOb3YnLCAnTm92ZW1iZXInXSxcblx0WydEJywgJ0RlYycsICdEZWNlbWJlciddXG5dO1xuZnVuY3Rpb24gU1NGX2luaXRfdGFibGUodC8qOmFueSovKSB7XG5cdGlmKCF0KSB0ID0ge307XG5cdHRbMF09ICAnR2VuZXJhbCc7XG5cdHRbMV09ICAnMCc7XG5cdHRbMl09ICAnMC4wMCc7XG5cdHRbM109ICAnIywjIzAnO1xuXHR0WzRdPSAgJyMsIyMwLjAwJztcblx0dFs5XT0gICcwJSc7XG5cdHRbMTBdPSAnMC4wMCUnO1xuXHR0WzExXT0gJzAuMDBFKzAwJztcblx0dFsxMl09ICcjID8vPyc7XG5cdHRbMTNdPSAnIyA/Py8/Pyc7XG5cdHRbMTRdPSAnbS9kL3l5Jztcblx0dFsxNV09ICdkLW1tbS15eSc7XG5cdHRbMTZdPSAnZC1tbW0nO1xuXHR0WzE3XT0gJ21tbS15eSc7XG5cdHRbMThdPSAnaDptbSBBTS9QTSc7XG5cdHRbMTldPSAnaDptbTpzcyBBTS9QTSc7XG5cdHRbMjBdPSAnaDptbSc7XG5cdHRbMjFdPSAnaDptbTpzcyc7XG5cdHRbMjJdPSAnbS9kL3l5IGg6bW0nO1xuXHR0WzM3XT0gJyMsIyMwIDsoIywjIzApJztcblx0dFszOF09ICcjLCMjMCA7W1JlZF0oIywjIzApJztcblx0dFszOV09ICcjLCMjMC4wMDsoIywjIzAuMDApJztcblx0dFs0MF09ICcjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCknO1xuXHR0WzQ1XT0gJ21tOnNzJztcblx0dFs0Nl09ICdbaF06bW06c3MnO1xuXHR0WzQ3XT0gJ21tc3MuMCc7XG5cdHRbNDhdPSAnIyMwLjBFKzAnO1xuXHR0WzQ5XT0gJ0AnO1xuXHR0WzU2XT0gJ1wi5LiK5Y2IL+S4i+WNiCBcImhoXCLmmYJcIm1tXCLliIZcInNzXCLnp5IgXCInO1xuXHRyZXR1cm4gdDtcbn1cbi8qIHJlcGVhdGVkIHRvIHNhdGlhdGUgd2VicGFjayAqL1xudmFyIHRhYmxlX2ZtdCA9IHtcblx0MDogICdHZW5lcmFsJyxcblx0MTogICcwJyxcblx0MjogICcwLjAwJyxcblx0MzogICcjLCMjMCcsXG5cdDQ6ICAnIywjIzAuMDAnLFxuXHQ5OiAgJzAlJyxcblx0MTA6ICcwLjAwJScsXG5cdDExOiAnMC4wMEUrMDAnLFxuXHQxMjogJyMgPy8/Jyxcblx0MTM6ICcjID8/Lz8/Jyxcblx0MTQ6ICdtL2QveXknLFxuXHQxNTogJ2QtbW1tLXl5Jyxcblx0MTY6ICdkLW1tbScsXG5cdDE3OiAnbW1tLXl5Jyxcblx0MTg6ICdoOm1tIEFNL1BNJyxcblx0MTk6ICdoOm1tOnNzIEFNL1BNJyxcblx0MjA6ICdoOm1tJyxcblx0MjE6ICdoOm1tOnNzJyxcblx0MjI6ICdtL2QveXkgaDptbScsXG5cdDM3OiAnIywjIzAgOygjLCMjMCknLFxuXHQzODogJyMsIyMwIDtbUmVkXSgjLCMjMCknLFxuXHQzOTogJyMsIyMwLjAwOygjLCMjMC4wMCknLFxuXHQ0MDogJyMsIyMwLjAwO1tSZWRdKCMsIyMwLjAwKScsXG5cdDQ1OiAnbW06c3MnLFxuXHQ0NjogJ1toXTptbTpzcycsXG5cdDQ3OiAnbW1zcy4wJyxcblx0NDg6ICcjIzAuMEUrMCcsXG5cdDQ5OiAnQCcsXG5cdDU2OiAnXCLkuIrljYgv5LiL5Y2IIFwiaGhcIuaZglwibW1cIuWIhlwic3NcIuenkiBcIidcbn07XG5cbi8qIERlZmF1bHRzIGRldGVybWluZWQgYnkgc3lzdGVtYXRpY2FsbHkgdGVzdGluZyBpbiBFeGNlbCAyMDE5ICovXG5cbi8qIFRoZXNlIGZvcm1hdHMgYXBwZWFyIHRvIGRlZmF1bHQgdG8gb3RoZXIgZm9ybWF0cyBpbiB0aGUgdGFibGUgKi9cbnZhciBTU0ZfZGVmYXVsdF9tYXAgPSB7XG5cdDU6ICAzNywgNjogIDM4LCA3OiAgMzksIDg6ICA0MCwgICAgICAgICAvLyAgNSAtPiAzNyAuLi4gIDggLT4gNDBcblxuXHQyMzogIDAsIDI0OiAgMCwgMjU6ICAwLCAyNjogIDAsICAgICAgICAgLy8gMjMgLT4gIDAgLi4uIDI2IC0+ICAwXG5cblx0Mjc6IDE0LCAyODogMTQsIDI5OiAxNCwgMzA6IDE0LCAzMTogMTQsIC8vIDI3IC0+IDE0IC4uLiAzMSAtPiAxNFxuXG5cdDUwOiAxNCwgNTE6IDE0LCA1MjogMTQsIDUzOiAxNCwgNTQ6IDE0LCAvLyA1MCAtPiAxNCAuLi4gNTggLT4gMTRcblx0NTU6IDE0LCA1NjogMTQsIDU3OiAxNCwgNTg6IDE0LFxuXHQ1OTogIDEsIDYwOiAgMiwgNjE6ICAzLCA2MjogIDQsICAgICAgICAgLy8gNTkgLT4gIDEgLi4uIDYyIC0+ICA0XG5cblx0Njc6ICA5LCA2ODogMTAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDY3IC0+ICA5IC4uLiA2OCAtPiAxMFxuXHQ2OTogMTIsIDcwOiAxMywgNzE6IDE0LCAgICAgICAgICAgICAgICAgLy8gNjkgLT4gMTIgLi4uIDcxIC0+IDE0XG5cdDcyOiAxNCwgNzM6IDE1LCA3NDogMTYsIDc1OiAxNywgICAgICAgICAvLyA3MiAtPiAxNCAuLi4gNzUgLT4gMTdcblx0NzY6IDIwLCA3NzogMjEsIDc4OiAyMiwgICAgICAgICAgICAgICAgIC8vIDc2IC0+IDIwIC4uLiA3OCAtPiAyMlxuXHQ3OTogNDUsIDgwOiA0NiwgODE6IDQ3LCAgICAgICAgICAgICAgICAgLy8gNzkgLT4gNDUgLi4uIDgxIC0+IDQ3XG5cdDgyOiAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4MiAtPiAgMCAuLi4gNjU1MzYgLT4gMCAob21pdHRlZClcbn07XG5cblxuLyogVGhlc2UgZm9ybWF0cyB0ZWNobmljYWxseSByZWZlciB0byBBY2NvdW50aW5nIGZvcm1hdHMgd2l0aCBubyBlcXVpdmFsZW50ICovXG52YXIgU1NGX2RlZmF1bHRfc3RyID0ge1xuXHQvLyAgNSAtLSBDdXJyZW5jeSwgICAwIGRlY2ltYWwsIGJsYWNrIG5lZ2F0aXZlXG5cdDU6ICAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0NjM6ICdcIiRcIiMsIyMwXyk7XFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXG5cdC8vICA2IC0tIEN1cnJlbmN5LCAgIDAgZGVjaW1hbCwgcmVkICAgbmVnYXRpdmVcblx0NjogICdcIiRcIiMsIyMwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdDY0OiAnXCIkXCIjLCMjMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXG5cdC8vICA3IC0tIEN1cnJlbmN5LCAgIDIgZGVjaW1hbCwgYmxhY2sgbmVnYXRpdmVcblx0NzogICdcIiRcIiMsIyMwLjAwXyk7XFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHQ2NTogJ1wiJFwiIywjIzAuMDBfKTtcXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cblx0Ly8gIDggLS0gQ3VycmVuY3ksICAgMiBkZWNpbWFsLCByZWQgICBuZWdhdGl2ZVxuXHQ4OiAgJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0NjY6ICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cblx0Ly8gNDEgLS0gQWNjb3VudGluZywgMCBkZWNpbWFsLCBObyBTeW1ib2xcblx0NDE6ICdfKCogIywjIzBfKTtfKCogXFxcXCgjLCMjMFxcXFwpO18oKiBcIi1cIl8pO18oQF8pJyxcblxuXHQvLyA0MiAtLSBBY2NvdW50aW5nLCAwIGRlY2ltYWwsICQgIFN5bWJvbFxuXHQ0MjogJ18oXCIkXCIqICMsIyMwXyk7XyhcIiRcIiogXFxcXCgjLCMjMFxcXFwpO18oXCIkXCIqIFwiLVwiXyk7XyhAXyknLFxuXG5cdC8vIDQzIC0tIEFjY291bnRpbmcsIDIgZGVjaW1hbCwgTm8gU3ltYm9sXG5cdDQzOiAnXygqICMsIyMwLjAwXyk7XygqIFxcXFwoIywjIzAuMDBcXFxcKTtfKCogXCItXCI/P18pO18oQF8pJyxcblxuXHQvLyA0NCAtLSBBY2NvdW50aW5nLCAyIGRlY2ltYWwsICQgIFN5bWJvbFxuXHQ0NDogJ18oXCIkXCIqICMsIyMwLjAwXyk7XyhcIiRcIiogXFxcXCgjLCMjMC4wMFxcXFwpO18oXCIkXCIqIFwiLVwiPz9fKTtfKEBfKSdcbn07XG5cbmZ1bmN0aW9uIFNTRl9mcmFjKHgvKjpudW1iZXIqLywgRC8qOm51bWJlciovLCBtaXhlZC8qOj9ib29sZWFuKi8pLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0dmFyIHNnbiA9IHggPCAwID8gLTEgOiAxO1xuXHR2YXIgQiA9IHggKiBzZ247XG5cdHZhciBQXzIgPSAwLCBQXzEgPSAxLCBQID0gMDtcblx0dmFyIFFfMiA9IDEsIFFfMSA9IDAsIFEgPSAwO1xuXHR2YXIgQSA9IE1hdGguZmxvb3IoQik7XG5cdHdoaWxlKFFfMSA8IEQpIHtcblx0XHRBID0gTWF0aC5mbG9vcihCKTtcblx0XHRQID0gQSAqIFBfMSArIFBfMjtcblx0XHRRID0gQSAqIFFfMSArIFFfMjtcblx0XHRpZigoQiAtIEEpIDwgMC4wMDAwMDAwNSkgYnJlYWs7XG5cdFx0QiA9IDEgLyAoQiAtIEEpO1xuXHRcdFBfMiA9IFBfMTsgUF8xID0gUDtcblx0XHRRXzIgPSBRXzE7IFFfMSA9IFE7XG5cdH1cblx0aWYoUSA+IEQpIHsgaWYoUV8xID4gRCkgeyBRID0gUV8yOyBQID0gUF8yOyB9IGVsc2UgeyBRID0gUV8xOyBQID0gUF8xOyB9IH1cblx0aWYoIW1peGVkKSByZXR1cm4gWzAsIHNnbiAqIFAsIFFdO1xuXHR2YXIgcSA9IE1hdGguZmxvb3Ioc2duICogUC9RKTtcblx0cmV0dXJuIFtxLCBzZ24qUCAtIHEqUSwgUV07XG59XG5mdW5jdGlvbiBTU0ZfcGFyc2VfZGF0ZV9jb2RlKHYvKjpudW1iZXIqLyxvcHRzLyo6P2FueSovLGIyLyo6P2Jvb2xlYW4qLykge1xuXHRpZih2ID4gMjk1ODQ2NSB8fCB2IDwgMCkgcmV0dXJuIG51bGw7XG5cdHZhciBkYXRlID0gKHZ8MCksIHRpbWUgPSBNYXRoLmZsb29yKDg2NDAwICogKHYgLSBkYXRlKSksIGRvdz0wO1xuXHR2YXIgZG91dD1bXTtcblx0dmFyIG91dD17RDpkYXRlLCBUOnRpbWUsIHU6ODY0MDAqKHYtZGF0ZSktdGltZSx5OjAsbTowLGQ6MCxIOjAsTTowLFM6MCxxOjB9O1xuXHRpZihNYXRoLmFicyhvdXQudSkgPCAxZS02KSBvdXQudSA9IDA7XG5cdGlmKG9wdHMgJiYgb3B0cy5kYXRlMTkwNCkgZGF0ZSArPSAxNDYyO1xuXHRpZihvdXQudSA+IDAuOTk5OSkge1xuXHRcdG91dC51ID0gMDtcblx0XHRpZigrK3RpbWUgPT0gODY0MDApIHsgb3V0LlQgPSB0aW1lID0gMDsgKytkYXRlOyArK291dC5EOyB9XG5cdH1cblx0aWYoZGF0ZSA9PT0gNjApIHtkb3V0ID0gYjIgPyBbMTMxNywxMCwyOV0gOiBbMTkwMCwyLDI5XTsgZG93PTM7fVxuXHRlbHNlIGlmKGRhdGUgPT09IDApIHtkb3V0ID0gYjIgPyBbMTMxNyw4LDI5XSA6IFsxOTAwLDEsMF07IGRvdz02O31cblx0ZWxzZSB7XG5cdFx0aWYoZGF0ZSA+IDYwKSAtLWRhdGU7XG5cdFx0LyogMSA9IEphbiAxIDE5MDAgaW4gR3JlZ29yaWFuICovXG5cdFx0dmFyIGQgPSBuZXcgRGF0ZSgxOTAwLCAwLCAxKTtcblx0XHRkLnNldERhdGUoZC5nZXREYXRlKCkgKyBkYXRlIC0gMSk7XG5cdFx0ZG91dCA9IFtkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSsxLGQuZ2V0RGF0ZSgpXTtcblx0XHRkb3cgPSBkLmdldERheSgpO1xuXHRcdGlmKGRhdGUgPCA2MCkgZG93ID0gKGRvdyArIDYpICUgNztcblx0XHRpZihiMikgZG93ID0gU1NGX2ZpeF9oaWpyaShkLCBkb3V0KTtcblx0fVxuXHRvdXQueSA9IGRvdXRbMF07IG91dC5tID0gZG91dFsxXTsgb3V0LmQgPSBkb3V0WzJdO1xuXHRvdXQuUyA9IHRpbWUgJSA2MDsgdGltZSA9IE1hdGguZmxvb3IodGltZSAvIDYwKTtcblx0b3V0Lk0gPSB0aW1lICUgNjA7IHRpbWUgPSBNYXRoLmZsb29yKHRpbWUgLyA2MCk7XG5cdG91dC5IID0gdGltZTtcblx0b3V0LnEgPSBkb3c7XG5cdHJldHVybiBvdXQ7XG59XG52YXIgU1NGYmFzZWRhdGUgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoMTg5OSwgMTEsIDMxLCAwLCAwLCAwKTtcbnZhciBTU0ZkbnRocmVzaCA9IC8qI19fUFVSRV9fKi9TU0ZiYXNlZGF0ZS5nZXRUaW1lKCk7XG52YXIgU1NGYmFzZTE5MDQgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoMTkwMCwgMiwgMSwgMCwgMCwgMCk7XG5mdW5jdGlvbiBkYXRlbnVtX2xvY2FsKHYvKjpEYXRlKi8sIGRhdGUxOTA0Lyo6P2Jvb2xlYW4qLykvKjpudW1iZXIqLyB7XG5cdHZhciBlcG9jaCA9IC8qI19fUFVSRV9fKi92LmdldFRpbWUoKTtcblx0aWYoZGF0ZTE5MDQpIGVwb2NoIC09IDE0NjEqMjQqNjAqNjAqMTAwMDtcblx0ZWxzZSBpZih2ID49IFNTRmJhc2UxOTA0KSBlcG9jaCArPSAyNCo2MCo2MCoxMDAwO1xuXHRyZXR1cm4gKGVwb2NoIC0gKFNTRmRudGhyZXNoICsgKC8qI19fUFVSRV9fKi92LmdldFRpbWV6b25lT2Zmc2V0KCkgLSAvKiNfX1BVUkVfXyovU1NGYmFzZWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MDAwMCkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xufVxuLyogRUNNQS0zNzYgMTguOC4zMCBudW1GbXQqL1xuLyogTm90ZTogYHRvUHJlY2lzaW9uYCB1c2VzIHN0YW5kYXJkIGZvcm0gd2hlbiBwcmVjID4gRSBhbmQgRSA+PSAtNiAqL1xuLyogZXhwb25lbnQgPj0gLTkgYW5kIDw9IDkgKi9cbmZ1bmN0aW9uIFNTRl9zdHJpcF9kZWNpbWFsKG8vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiAoby5pbmRleE9mKFwiLlwiKSA9PSAtMSkgPyBvIDogby5yZXBsYWNlKC8oPzpcXC4wKnwoXFwuXFxkKlsxLTldKTArKSQvLCBcIiQxXCIpO1xufVxuXG4vKiBHZW5lcmFsIEV4cG9uZW50aWFsIGFsd2F5cyBzaG93cyAyIGRpZ2l0cyBleHAgYW5kIHRyaW1zIHRoZSBtYW50aXNzYSAqL1xuZnVuY3Rpb24gU1NGX25vcm1hbGl6ZV9leHAoby8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYoby5pbmRleE9mKFwiRVwiKSA9PSAtMSkgcmV0dXJuIG87XG5cdHJldHVybiBvLnJlcGxhY2UoLyg/OlxcLjAqfChcXC5cXGQqWzEtOV0pMCspW0VlXS8sXCIkMUVcIikucmVwbGFjZSgvKEVbKy1dKShcXGQpJC8sXCIkMTAkMlwiKTtcbn1cblxuLyogZXhwb25lbnQgPj0gLTkgYW5kIDw9IDkgKi9cbmZ1bmN0aW9uIFNTRl9zbWFsbF9leHAodi8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0dmFyIHcgPSAodjwwPzEyOjExKTtcblx0dmFyIG8gPSBTU0Zfc3RyaXBfZGVjaW1hbCh2LnRvRml4ZWQoMTIpKTsgaWYoby5sZW5ndGggPD0gdykgcmV0dXJuIG87XG5cdG8gPSB2LnRvUHJlY2lzaW9uKDEwKTsgaWYoby5sZW5ndGggPD0gdykgcmV0dXJuIG87XG5cdHJldHVybiB2LnRvRXhwb25lbnRpYWwoNSk7XG59XG5cbi8qIGV4cG9uZW50ID49IDExIG9yIDw9IC0xMCBsaWtlbHkgZXhwb25lbnRpYWwgKi9cbmZ1bmN0aW9uIFNTRl9sYXJnZV9leHAodi8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBTU0Zfc3RyaXBfZGVjaW1hbCh2LnRvRml4ZWQoMTEpKTtcblx0cmV0dXJuIChvLmxlbmd0aCA+ICh2PDA/MTI6MTEpIHx8IG8gPT09IFwiMFwiIHx8IG8gPT09IFwiLTBcIikgPyB2LnRvUHJlY2lzaW9uKDYpIDogbztcbn1cblxuZnVuY3Rpb24gU1NGX2dlbmVyYWxfbnVtKHYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBWID0gTWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyh2KSkqTWF0aC5MT0cxMEUpLCBvO1xuXG5cdGlmKFYgPj0gLTQgJiYgViA8PSAtMSkgbyA9IHYudG9QcmVjaXNpb24oMTArVik7XG5cdGVsc2UgaWYoTWF0aC5hYnMoVikgPD0gOSkgbyA9IFNTRl9zbWFsbF9leHAodik7XG5cdGVsc2UgaWYoViA9PT0gMTApIG8gPSB2LnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTtcblx0ZWxzZSBvID0gU1NGX2xhcmdlX2V4cCh2KTtcblxuXHRyZXR1cm4gU1NGX3N0cmlwX2RlY2ltYWwoU1NGX25vcm1hbGl6ZV9leHAoby50b1VwcGVyQ2FzZSgpKSk7XG59XG5cblxuLypcblx0XCJHZW5lcmFsXCIgcnVsZXM6XG5cdC0gdGV4dCBpcyBwYXNzZWQgdGhyb3VnaCAoXCJAXCIpXG5cdC0gYm9vbGVhbnMgYXJlIHJlbmRlcmVkIGFzIFRSVUUvRkFMU0Vcblx0LSBcInVwIHRvIDExIGNoYXJhY3RlcnNcIiBkaXNwbGF5ZWQgZm9yIG51bWJlcnNcblx0LSBEZWZhdWx0IGRhdGUgZm9ybWF0IChjb2RlIDE0KSB1c2VkIGZvciBEYXRlc1xuXG5cdFRoZSBsb25nZXN0IDMyLWJpdCBpbnRlZ2VyIHRleHQgaXMgXCItMjE0NzQ4MzY0OFwiLCBleGFjdGx5IDExIGNoYXJzXG5cdFRPRE86IHRlY2huaWNhbGx5IHRoZSBkaXNwbGF5IGRlcGVuZHMgb24gdGhlIHdpZHRoIG9mIHRoZSBjZWxsXG4qL1xuZnVuY3Rpb24gU1NGX2dlbmVyYWwodi8qOmFueSovLCBvcHRzLyo6YW55Ki8pIHtcblx0c3dpdGNoKHR5cGVvZiB2KSB7XG5cdFx0Y2FzZSAnc3RyaW5nJzogcmV0dXJuIHY7XG5cdFx0Y2FzZSAnYm9vbGVhbic6IHJldHVybiB2ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCI7XG5cdFx0Y2FzZSAnbnVtYmVyJzogcmV0dXJuICh2fDApID09PSB2ID8gdi50b1N0cmluZygxMCkgOiBTU0ZfZ2VuZXJhbF9udW0odik7XG5cdFx0Y2FzZSAndW5kZWZpbmVkJzogcmV0dXJuIFwiXCI7XG5cdFx0Y2FzZSAnb2JqZWN0Jzpcblx0XHRcdGlmKHYgPT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cdFx0XHRpZih2IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIFNTRl9mb3JtYXQoMTQsIGRhdGVudW1fbG9jYWwodiwgb3B0cyAmJiBvcHRzLmRhdGUxOTA0KSwgb3B0cyk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgdmFsdWUgaW4gR2VuZXJhbCBmb3JtYXQ6IFwiICsgdik7XG59XG5cbmZ1bmN0aW9uIFNTRl9maXhfaGlqcmkoZGF0ZS8qOkRhdGUqLywgby8qOltudW1iZXIsIG51bWJlciwgbnVtYmVyXSovKSB7XG4gIC8qIFRPRE86IHByb3Blcmx5IGFkanVzdCB5L20vZCBhbmQgICovXG4gIG9bMF0gLT0gNTgxO1xuICB2YXIgZG93ID0gZGF0ZS5nZXREYXkoKTtcbiAgaWYoZGF0ZSA8IDYwKSBkb3cgPSAoZG93ICsgNikgJSA3O1xuICByZXR1cm4gZG93O1xufVxuLy92YXIgVEhBSV9ESUdJVFMgPSBcIlxcdTBFNTBcXHUwRTUxXFx1MEU1MlxcdTBFNTNcXHUwRTU0XFx1MEU1NVxcdTBFNTZcXHUwRTU3XFx1MEU1OFxcdTBFNTlcIi5zcGxpdChcIlwiKTtcbmZ1bmN0aW9uIFNTRl93cml0ZV9kYXRlKHR5cGUvKjpudW1iZXIqLywgZm10Lyo6c3RyaW5nKi8sIHZhbCwgc3MwLyo6P251bWJlciovKS8qOnN0cmluZyovIHtcblx0dmFyIG89XCJcIiwgc3M9MCwgdHQ9MCwgeSA9IHZhbC55LCBvdXQsIG91dGwgPSAwO1xuXHRzd2l0Y2godHlwZSkge1xuXHRcdGNhc2UgOTg6IC8qICdiJyBidWRkaGlzdCB5ZWFyICovXG5cdFx0XHR5ID0gdmFsLnkgKyA1NDM7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAxMjE6IC8qICd5JyB5ZWFyICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB5ICUgMTAwOyBvdXRsID0gMjsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBvdXQgPSB5ICUgMTAwMDA7IG91dGwgPSA0OyBicmVhaztcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgMTA5OiAvKiAnbScgbW9udGggKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IHZhbC5tOyBvdXRsID0gZm10Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IHJldHVybiBtb250aHNbdmFsLm0tMV1bMV07XG5cdFx0XHRjYXNlIDU6IHJldHVybiBtb250aHNbdmFsLm0tMV1bMF07XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gbW9udGhzW3ZhbC5tLTFdWzJdO1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSAxMDA6IC8qICdkJyBkYXkgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IHZhbC5kOyBvdXRsID0gZm10Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IHJldHVybiBkYXlzW3ZhbC5xXVswXTtcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBkYXlzW3ZhbC5xXVsxXTtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgMTA0OiAvKiAnaCcgMTItaG91ciAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0gMSsodmFsLkgrMTEpJTEyOyBvdXRsID0gZm10Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyAnYmFkIGhvdXIgZm9ybWF0OiAnICsgZm10O1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSA3MjogLyogJ0gnIDI0LWhvdXIgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IHZhbC5IOyBvdXRsID0gZm10Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyAnYmFkIGhvdXIgZm9ybWF0OiAnICsgZm10O1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSA3NzogLyogJ00nIG1pbnV0ZXMgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IHZhbC5NOyBvdXRsID0gZm10Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyAnYmFkIG1pbnV0ZSBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDExNTogLyogJ3MnIHNlY29uZHMgKi9cblx0XHRcdGlmKGZtdCAhPSAncycgJiYgZm10ICE9ICdzcycgJiYgZm10ICE9ICcuMCcgJiYgZm10ICE9ICcuMDAnICYmIGZtdCAhPSAnLjAwMCcpIHRocm93ICdiYWQgc2Vjb25kIGZvcm1hdDogJyArIGZtdDtcblx0XHRcdGlmKHZhbC51ID09PSAwICYmIChmbXQgPT0gXCJzXCIgfHwgZm10ID09IFwic3NcIikpIHJldHVybiBwYWQwKHZhbC5TLCBmbXQubGVuZ3RoKTtcblx0XHRcdC8qOjppZighc3MwKSBzczAgPSAwOyAqL1xuXHRcdFx0aWYoc3MwID49IDIpIHR0ID0gc3MwID09PSAzID8gMTAwMCA6IDEwMDtcblx0XHRcdGVsc2UgdHQgPSBzczAgPT09IDEgPyAxMCA6IDE7XG5cdFx0XHRzcyA9IE1hdGgucm91bmQoKHR0KSoodmFsLlMgKyB2YWwudSkpO1xuXHRcdFx0aWYoc3MgPj0gNjAqdHQpIHNzID0gMDtcblx0XHRcdGlmKGZtdCA9PT0gJ3MnKSByZXR1cm4gc3MgPT09IDAgPyBcIjBcIiA6IFwiXCIrc3MvdHQ7XG5cdFx0XHRvID0gcGFkMChzcywyICsgc3MwKTtcblx0XHRcdGlmKGZtdCA9PT0gJ3NzJykgcmV0dXJuIG8uc3Vic3RyKDAsMik7XG5cdFx0XHRyZXR1cm4gXCIuXCIgKyBvLnN1YnN0cigyLGZtdC5sZW5ndGgtMSk7XG5cdFx0Y2FzZSA5MDogLyogJ1onIGFic29sdXRlIHRpbWUgKi9cblx0XHRzd2l0Y2goZm10KSB7XG5cdFx0XHRjYXNlICdbaF0nOiBjYXNlICdbaGhdJzogb3V0ID0gdmFsLkQqMjQrdmFsLkg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnW21dJzogY2FzZSAnW21tXSc6IG91dCA9ICh2YWwuRCoyNCt2YWwuSCkqNjArdmFsLk07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnW3NdJzogY2FzZSAnW3NzXSc6IG91dCA9ICgodmFsLkQqMjQrdmFsLkgpKjYwK3ZhbC5NKSo2MCtNYXRoLnJvdW5kKHZhbC5TK3ZhbC51KTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyAnYmFkIGFic3RpbWUgZm9ybWF0OiAnICsgZm10O1xuXHRcdH0gb3V0bCA9IGZtdC5sZW5ndGggPT09IDMgPyAxIDogMjsgYnJlYWs7XG5cdFx0Y2FzZSAxMDE6IC8qICdlJyBlcmEgKi9cblx0XHRcdG91dCA9IHk7IG91dGwgPSAxOyBicmVhaztcblx0fVxuXHR2YXIgb3V0c3RyID0gb3V0bCA+IDAgPyBwYWQwKG91dCwgb3V0bCkgOiBcIlwiO1xuXHRyZXR1cm4gb3V0c3RyO1xufVxuXG5cbi8qanNoaW50IC1XMDg2ICovXG4vKmpzaGludCArVzA4NiAqL1xuZnVuY3Rpb24gY29tbWFpZnkocy8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIHcgPSAzO1xuXHRpZihzLmxlbmd0aCA8PSB3KSByZXR1cm4gcztcblx0dmFyIGogPSAocy5sZW5ndGggJSB3KSwgbyA9IHMuc3Vic3RyKDAsaik7XG5cdGZvcig7IGohPXMubGVuZ3RoOyBqKz13KSBvKz0oby5sZW5ndGggPiAwID8gXCIsXCIgOiBcIlwiKSArIHMuc3Vic3RyKGosdyk7XG5cdHJldHVybiBvO1xufVxudmFyIHBjdDEgPSAvJS9nO1xuZnVuY3Rpb24gd3JpdGVfbnVtX3BjdCh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIHNmbXQgPSBmbXQucmVwbGFjZShwY3QxLFwiXCIpLCBtdWwgPSBmbXQubGVuZ3RoIC0gc2ZtdC5sZW5ndGg7XG5cdHJldHVybiB3cml0ZV9udW0odHlwZSwgc2ZtdCwgdmFsICogTWF0aC5wb3coMTAsMiptdWwpKSArIGZpbGwoXCIlXCIsbXVsKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfbnVtX2NtKHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgaWR4ID0gZm10Lmxlbmd0aCAtIDE7XG5cdHdoaWxlKGZtdC5jaGFyQ29kZUF0KGlkeC0xKSA9PT0gNDQpIC0taWR4O1xuXHRyZXR1cm4gd3JpdGVfbnVtKHR5cGUsIGZtdC5zdWJzdHIoMCxpZHgpLCB2YWwgLyBNYXRoLnBvdygxMCwzKihmbXQubGVuZ3RoLWlkeCkpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfbnVtX2V4cChmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBvLyo6c3RyaW5nKi87XG5cdHZhciBpZHggPSBmbXQuaW5kZXhPZihcIkVcIikgLSBmbXQuaW5kZXhPZihcIi5cIikgLSAxO1xuXHRpZihmbXQubWF0Y2goL14jKzAuMEVcXCswJC8pKSB7XG5cdFx0aWYodmFsID09IDApIHJldHVybiBcIjAuMEUrMFwiO1xuXHRcdGVsc2UgaWYodmFsIDwgMCkgcmV0dXJuIFwiLVwiICsgd3JpdGVfbnVtX2V4cChmbXQsIC12YWwpO1xuXHRcdHZhciBwZXJpb2QgPSBmbXQuaW5kZXhPZihcIi5cIik7IGlmKHBlcmlvZCA9PT0gLTEpIHBlcmlvZD1mbXQuaW5kZXhPZignRScpO1xuXHRcdHZhciBlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSklcGVyaW9kO1xuXHRcdGlmKGVlIDwgMCkgZWUgKz0gcGVyaW9kO1xuXHRcdG8gPSAodmFsL01hdGgucG93KDEwLGVlKSkudG9QcmVjaXNpb24oaWR4KzErKHBlcmlvZCtlZSklcGVyaW9kKTtcblx0XHRpZihvLmluZGV4T2YoXCJlXCIpID09PSAtMSkge1xuXHRcdFx0dmFyIGZha2VlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpKk1hdGguTE9HMTBFKTtcblx0XHRcdGlmKG8uaW5kZXhPZihcIi5cIikgPT09IC0xKSBvID0gby5jaGFyQXQoMCkgKyBcIi5cIiArIG8uc3Vic3RyKDEpICsgXCJFK1wiICsgKGZha2VlIC0gby5sZW5ndGgrZWUpO1xuXHRcdFx0ZWxzZSBvICs9IFwiRStcIiArIChmYWtlZSAtIGVlKTtcblx0XHRcdHdoaWxlKG8uc3Vic3RyKDAsMikgPT09IFwiMC5cIikge1xuXHRcdFx0XHRvID0gby5jaGFyQXQoMCkgKyBvLnN1YnN0cigyLHBlcmlvZCkgKyBcIi5cIiArIG8uc3Vic3RyKDIrcGVyaW9kKTtcblx0XHRcdFx0byA9IG8ucmVwbGFjZSgvXjArKFsxLTldKS8sXCIkMVwiKS5yZXBsYWNlKC9eMCtcXC4vLFwiMC5cIik7XG5cdFx0XHR9XG5cdFx0XHRvID0gby5yZXBsYWNlKC9cXCstLyxcIi1cIik7XG5cdFx0fVxuXHRcdG8gPSBvLnJlcGxhY2UoL14oWystXT8pKFxcZCopXFwuKFxcZCopW0VlXS8sZnVuY3Rpb24oJCQsJDEsJDIsJDMpIHsgcmV0dXJuICQxICsgJDIgKyAkMy5zdWJzdHIoMCwocGVyaW9kK2VlKSVwZXJpb2QpICsgXCIuXCIgKyAkMy5zdWJzdHIoZWUpICsgXCJFXCI7IH0pO1xuXHR9IGVsc2UgbyA9IHZhbC50b0V4cG9uZW50aWFsKGlkeCk7XG5cdGlmKGZtdC5tYXRjaCgvRVxcKzAwJC8pICYmIG8ubWF0Y2goL2VbKy1dXFxkJC8pKSBvID0gby5zdWJzdHIoMCxvLmxlbmd0aC0xKSArIFwiMFwiICsgby5jaGFyQXQoby5sZW5ndGgtMSk7XG5cdGlmKGZtdC5tYXRjaCgvRVxcLS8pICYmIG8ubWF0Y2goL2VcXCsvKSkgbyA9IG8ucmVwbGFjZSgvZVxcKy8sXCJlXCIpO1xuXHRyZXR1cm4gby5yZXBsYWNlKFwiZVwiLFwiRVwiKTtcbn1cbnZhciBmcmFjMSA9IC8jIChcXD8rKSggPylcXC8oID8pKFxcZCspLztcbmZ1bmN0aW9uIHdyaXRlX251bV9mMShyLyo6QXJyYXk8c3RyaW5nPiovLCBhdmFsLyo6bnVtYmVyKi8sIHNpZ24vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBkZW4gPSBwYXJzZUludChyWzRdLDEwKSwgcnIgPSBNYXRoLnJvdW5kKGF2YWwgKiBkZW4pLCBiYXNlID0gTWF0aC5mbG9vcihyci9kZW4pO1xuXHR2YXIgbXluID0gKHJyIC0gYmFzZSpkZW4pLCBteWQgPSBkZW47XG5cdHJldHVybiBzaWduICsgKGJhc2UgPT09IDAgPyBcIlwiIDogXCJcIitiYXNlKSArIFwiIFwiICsgKG15biA9PT0gMCA/IGZpbGwoXCIgXCIsIHJbMV0ubGVuZ3RoICsgMSArIHJbNF0ubGVuZ3RoKSA6IHBhZF8obXluLHJbMV0ubGVuZ3RoKSArIHJbMl0gKyBcIi9cIiArIHJbM10gKyBwYWQwKG15ZCxyWzRdLmxlbmd0aCkpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2YyKHIvKjpBcnJheTxzdHJpbmc+Ki8sIGF2YWwvKjpudW1iZXIqLywgc2lnbi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIHNpZ24gKyAoYXZhbCA9PT0gMCA/IFwiXCIgOiBcIlwiK2F2YWwpICsgZmlsbChcIiBcIiwgclsxXS5sZW5ndGggKyAyICsgcls0XS5sZW5ndGgpO1xufVxudmFyIGRlYzEgPSAvXiMqMCpcXC4oWzAjXSspLztcbnZhciBjbG9zZXBhcmVuID0gL1xcKS4qWzAjXS87XG52YXIgcGhvbmUgPSAvXFwoIyMjXFwpICMjI1xcXFw/LSMjIyMvO1xuZnVuY3Rpb24gaGFzaHEoc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFwiXCIsIGNjO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHN0ci5sZW5ndGg7ICsraSkgc3dpdGNoKChjYz1zdHIuY2hhckNvZGVBdChpKSkpIHtcblx0XHRjYXNlIDM1OiBicmVhaztcblx0XHRjYXNlIDYzOiBvKz0gXCIgXCI7IGJyZWFrO1xuXHRcdGNhc2UgNDg6IG8rPSBcIjBcIjsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogbys9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2MpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcm5kKHZhbC8qOm51bWJlciovLCBkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgZGQgPSBNYXRoLnBvdygxMCxkKTsgcmV0dXJuIFwiXCIrKE1hdGgucm91bmQodmFsICogZGQpL2RkKTsgfVxuZnVuY3Rpb24gZGVjKHZhbC8qOm51bWJlciovLCBkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgX2ZyYWMgPSB2YWwgLSBNYXRoLmZsb29yKHZhbCksIGRkID0gTWF0aC5wb3coMTAsZCk7XG5cdGlmIChkIDwgKCcnICsgTWF0aC5yb3VuZChfZnJhYyAqIGRkKSkubGVuZ3RoKSByZXR1cm4gMDtcblx0cmV0dXJuIE1hdGgucm91bmQoX2ZyYWMgKiBkZCk7XG59XG5mdW5jdGlvbiBjYXJyeSh2YWwvKjpudW1iZXIqLywgZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0aWYgKGQgPCAoJycgKyBNYXRoLnJvdW5kKCh2YWwtTWF0aC5mbG9vcih2YWwpKSpNYXRoLnBvdygxMCxkKSkpLmxlbmd0aCkge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cdHJldHVybiAwO1xufVxuZnVuY3Rpb24gZmxyKHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYodmFsIDwgMjE0NzQ4MzY0NyAmJiB2YWwgPiAtMjE0NzQ4MzY0OCkgcmV0dXJuIFwiXCIrKHZhbCA+PSAwID8gKHZhbHwwKSA6ICh2YWwtMXwwKSk7XG5cdHJldHVybiBcIlwiK01hdGguZmxvb3IodmFsKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9mbHQodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRpZih0eXBlLmNoYXJDb2RlQXQoMCkgPT09IDQwICYmICFmbXQubWF0Y2goY2xvc2VwYXJlbikpIHtcblx0XHR2YXIgZmZtdCA9IGZtdC5yZXBsYWNlKC9cXCggKi8sXCJcIikucmVwbGFjZSgvIFxcKS8sXCJcIikucmVwbGFjZSgvXFwpLyxcIlwiKTtcblx0XHRpZih2YWwgPj0gMCkgcmV0dXJuIHdyaXRlX251bV9mbHQoJ24nLCBmZm10LCB2YWwpO1xuXHRcdHJldHVybiAnKCcgKyB3cml0ZV9udW1fZmx0KCduJywgZmZtdCwgLXZhbCkgKyAnKSc7XG5cdH1cblx0aWYoZm10LmNoYXJDb2RlQXQoZm10Lmxlbmd0aCAtIDEpID09PSA0NCkgcmV0dXJuIHdyaXRlX251bV9jbSh0eXBlLCBmbXQsIHZhbCk7XG5cdGlmKGZtdC5pbmRleE9mKCclJykgIT09IC0xKSByZXR1cm4gd3JpdGVfbnVtX3BjdCh0eXBlLCBmbXQsIHZhbCk7XG5cdGlmKGZtdC5pbmRleE9mKCdFJykgIT09IC0xKSByZXR1cm4gd3JpdGVfbnVtX2V4cChmbXQsIHZhbCk7XG5cdGlmKGZtdC5jaGFyQ29kZUF0KDApID09PSAzNikgcmV0dXJuIFwiJFwiK3dyaXRlX251bV9mbHQodHlwZSxmbXQuc3Vic3RyKGZtdC5jaGFyQXQoMSk9PScgJz8yOjEpLHZhbCk7XG5cdHZhciBvO1xuXHR2YXIgci8qOj9BcnJheTxzdHJpbmc+Ki8sIHJpLCBmZiwgYXZhbCA9IE1hdGguYWJzKHZhbCksIHNpZ24gPSB2YWwgPCAwID8gXCItXCIgOiBcIlwiO1xuXHRpZihmbXQubWF0Y2goL14wMCskLykpIHJldHVybiBzaWduICsgcGFkMHIoYXZhbCxmbXQubGVuZ3RoKTtcblx0aWYoZm10Lm1hdGNoKC9eWyM/XSskLykpIHtcblx0XHRvID0gcGFkMHIodmFsLDApOyBpZihvID09PSBcIjBcIikgbyA9IFwiXCI7XG5cdFx0cmV0dXJuIG8ubGVuZ3RoID4gZm10Lmxlbmd0aCA/IG8gOiBoYXNocShmbXQuc3Vic3RyKDAsZm10Lmxlbmd0aC1vLmxlbmd0aCkpICsgbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaChmcmFjMSkpKSByZXR1cm4gd3JpdGVfbnVtX2YxKHIsIGF2YWwsIHNpZ24pO1xuXHRpZihmbXQubWF0Y2goL14jKzArJC8pKSByZXR1cm4gc2lnbiArIHBhZDByKGF2YWwsZm10Lmxlbmd0aCAtIGZtdC5pbmRleE9mKFwiMFwiKSk7XG5cdGlmKChyID0gZm10Lm1hdGNoKGRlYzEpKSkge1xuXHRcdG8gPSBybmQodmFsLCByWzFdLmxlbmd0aCkucmVwbGFjZSgvXihbXlxcLl0rKSQvLFwiJDEuXCIraGFzaHEoclsxXSkpLnJlcGxhY2UoL1xcLiQvLFwiLlwiK2hhc2hxKHJbMV0pKS5yZXBsYWNlKC9cXC4oXFxkKikkLyxmdW5jdGlvbigkJCwgJDEpIHsgcmV0dXJuIFwiLlwiICsgJDEgKyBmaWxsKFwiMFwiLCBoYXNocSgvKjo6KCovci8qOjp8fFtcIlwiXSkqL1sxXSkubGVuZ3RoLSQxLmxlbmd0aCk7IH0pO1xuXHRcdHJldHVybiBmbXQuaW5kZXhPZihcIjAuXCIpICE9PSAtMSA/IG8gOiBvLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdH1cblx0Zm10ID0gZm10LnJlcGxhY2UoL14jKyhbMC5dKS8sIFwiJDFcIik7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKDAqKVxcLigjKikkLykpKSB7XG5cdFx0cmV0dXJuIHNpZ24gKyBybmQoYXZhbCwgclsyXS5sZW5ndGgpLnJlcGxhY2UoL1xcLihcXGQqWzEtOV0pMCokLyxcIi4kMVwiKS5yZXBsYWNlKC9eKC0/XFxkKikkLyxcIiQxLlwiKS5yZXBsYWNlKC9eMFxcLi8sclsxXS5sZW5ndGg/XCIwLlwiOlwiLlwiKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiN7MSwzfSwjIzAoXFwuPykkLykpKSByZXR1cm4gc2lnbiArIGNvbW1haWZ5KHBhZDByKGF2YWwsMCkpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXiMsIyMwXFwuKFsjMF0qMCkkLykpKSB7XG5cdFx0cmV0dXJuIHZhbCA8IDAgPyBcIi1cIiArIHdyaXRlX251bV9mbHQodHlwZSwgZm10LCAtdmFsKSA6IGNvbW1haWZ5KFwiXCIrKE1hdGguZmxvb3IodmFsKSArIGNhcnJ5KHZhbCwgclsxXS5sZW5ndGgpKSkgKyBcIi5cIiArIHBhZDAoZGVjKHZhbCwgclsxXS5sZW5ndGgpLHJbMV0ubGVuZ3RoKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiMsIyosIzAvKSkpIHJldHVybiB3cml0ZV9udW1fZmx0KHR5cGUsZm10LnJlcGxhY2UoL14jLCMqLC8sXCJcIiksdmFsKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWzAjXSspKFxcXFw/LShbMCNdKykpKyQvKSkpIHtcblx0XHRvID0gX3N0cnJldih3cml0ZV9udW1fZmx0KHR5cGUsIGZtdC5yZXBsYWNlKC9bXFxcXC1dL2csXCJcIiksIHZhbCkpO1xuXHRcdHJpID0gMDtcblx0XHRyZXR1cm4gX3N0cnJldihfc3RycmV2KGZtdC5yZXBsYWNlKC9cXFxcL2csXCJcIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbih4KXtyZXR1cm4gcmk8by5sZW5ndGg/by5jaGFyQXQocmkrKyk6eD09PScwJz8nMCc6XCJcIjt9KSk7XG5cdH1cblx0aWYoZm10Lm1hdGNoKHBob25lKSkge1xuXHRcdG8gPSB3cml0ZV9udW1fZmx0KHR5cGUsIFwiIyMjIyMjIyMjI1wiLCB2YWwpO1xuXHRcdHJldHVybiBcIihcIiArIG8uc3Vic3RyKDAsMykgKyBcIikgXCIgKyBvLnN1YnN0cigzLCAzKSArIFwiLVwiICsgby5zdWJzdHIoNik7XG5cdH1cblx0dmFyIG9hID0gXCJcIjtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWyMwP10rKSggPylcXC8oID8pKFsjMD9dKykvKSkpIHtcblx0XHRyaSA9IE1hdGgubWluKC8qOjpTdHJpbmcoKi9yWzRdLyo6OikqLy5sZW5ndGgsNyk7XG5cdFx0ZmYgPSBTU0ZfZnJhYyhhdmFsLCBNYXRoLnBvdygxMCxyaSktMSwgZmFsc2UpO1xuXHRcdG8gPSBcIlwiICsgc2lnbjtcblx0XHRvYSA9IHdyaXRlX251bShcIm5cIiwgLyo6OlN0cmluZygqL3JbMV0vKjo6KSovLCBmZlsxXSk7XG5cdFx0aWYob2EuY2hhckF0KG9hLmxlbmd0aC0xKSA9PSBcIiBcIikgb2EgPSBvYS5zdWJzdHIoMCxvYS5sZW5ndGgtMSkgKyBcIjBcIjtcblx0XHRvICs9IG9hICsgLyo6OlN0cmluZygqL3JbMl0vKjo6KSovICsgXCIvXCIgKyAvKjo6U3RyaW5nKCovclszXS8qOjopKi87XG5cdFx0b2EgPSBycGFkXyhmZlsyXSxyaSk7XG5cdFx0aWYob2EubGVuZ3RoIDwgcls0XS5sZW5ndGgpIG9hID0gaGFzaHEocls0XS5zdWJzdHIocls0XS5sZW5ndGgtb2EubGVuZ3RoKSkgKyBvYTtcblx0XHRvICs9IG9hO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIyAoWyMwP10rKSggPylcXC8oID8pKFsjMD9dKykvKSkpIHtcblx0XHRyaSA9IE1hdGgubWluKE1hdGgubWF4KHJbMV0ubGVuZ3RoLCByWzRdLmxlbmd0aCksNyk7XG5cdFx0ZmYgPSBTU0ZfZnJhYyhhdmFsLCBNYXRoLnBvdygxMCxyaSktMSwgdHJ1ZSk7XG5cdFx0cmV0dXJuIHNpZ24gKyAoZmZbMF18fChmZlsxXSA/IFwiXCIgOiBcIjBcIikpICsgXCIgXCIgKyAoZmZbMV0gPyBwYWRfKGZmWzFdLHJpKSArIHJbMl0gKyBcIi9cIiArIHJbM10gKyBycGFkXyhmZlsyXSxyaSk6IGZpbGwoXCIgXCIsIDIqcmkrMSArIHJbMl0ubGVuZ3RoICsgclszXS5sZW5ndGgpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXlsjMD9dKyQvKSkpIHtcblx0XHRvID0gcGFkMHIodmFsLCAwKTtcblx0XHRpZihmbXQubGVuZ3RoIDw9IG8ubGVuZ3RoKSByZXR1cm4gbztcblx0XHRyZXR1cm4gaGFzaHEoZm10LnN1YnN0cigwLGZtdC5sZW5ndGgtby5sZW5ndGgpKSArIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWyMwP10rKVxcLihbIzBdKykkLykpKSB7XG5cdFx0byA9IFwiXCIgKyB2YWwudG9GaXhlZChNYXRoLm1pbihyWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sXCIkMVwiKTtcblx0XHRyaSA9IG8uaW5kZXhPZihcIi5cIik7XG5cdFx0dmFyIGxyZXMgPSBmbXQuaW5kZXhPZihcIi5cIikgLSByaSwgcnJlcyA9IGZtdC5sZW5ndGggLSBvLmxlbmd0aCAtIGxyZXM7XG5cdFx0cmV0dXJuIGhhc2hxKGZtdC5zdWJzdHIoMCxscmVzKSArIG8gKyBmbXQuc3Vic3RyKGZtdC5sZW5ndGgtcnJlcykpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eMDAsMDAwXFwuKFsjMF0qMCkkLykpKSB7XG5cdFx0cmkgPSBkZWModmFsLCByWzFdLmxlbmd0aCk7XG5cdFx0cmV0dXJuIHZhbCA8IDAgPyBcIi1cIiArIHdyaXRlX251bV9mbHQodHlwZSwgZm10LCAtdmFsKSA6IGNvbW1haWZ5KGZscih2YWwpKS5yZXBsYWNlKC9eXFxkLFxcZHszfSQvLFwiMCQmXCIpLnJlcGxhY2UoL15cXGQqJC8sZnVuY3Rpb24oJCQpIHsgcmV0dXJuIFwiMDAsXCIgKyAoJCQubGVuZ3RoIDwgMyA/IHBhZDAoMCwzLSQkLmxlbmd0aCkgOiBcIlwiKSArICQkOyB9KSArIFwiLlwiICsgcGFkMChyaSxyWzFdLmxlbmd0aCk7XG5cdH1cblx0c3dpdGNoKGZtdCkge1xuXHRcdGNhc2UgXCIjIyMsIyMwLjAwXCI6IHJldHVybiB3cml0ZV9udW1fZmx0KHR5cGUsIFwiIywjIzAuMDBcIiwgdmFsKTtcblx0XHRjYXNlIFwiIyMjLCMjI1wiOlxuXHRcdGNhc2UgXCIjIywjIyNcIjpcblx0XHRjYXNlIFwiIywjIyNcIjogdmFyIHggPSBjb21tYWlmeShwYWQwcihhdmFsLDApKTsgcmV0dXJuIHggIT09IFwiMFwiID8gc2lnbiArIHggOiBcIlwiO1xuXHRcdGNhc2UgXCIjIyMsIyMjLjAwXCI6IHJldHVybiB3cml0ZV9udW1fZmx0KHR5cGUsIFwiIyMjLCMjMC4wMFwiLHZhbCkucmVwbGFjZSgvXjBcXC4vLFwiLlwiKTtcblx0XHRjYXNlIFwiIywjIyMuMDBcIjogcmV0dXJuIHdyaXRlX251bV9mbHQodHlwZSwgXCIjLCMjMC4wMFwiLHZhbCkucmVwbGFjZSgvXjBcXC4vLFwiLlwiKTtcblx0XHRkZWZhdWx0OlxuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIGZvcm1hdCB8XCIgKyBmbXQgKyBcInxcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fY20yKHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgaWR4ID0gZm10Lmxlbmd0aCAtIDE7XG5cdHdoaWxlKGZtdC5jaGFyQ29kZUF0KGlkeC0xKSA9PT0gNDQpIC0taWR4O1xuXHRyZXR1cm4gd3JpdGVfbnVtKHR5cGUsIGZtdC5zdWJzdHIoMCxpZHgpLCB2YWwgLyBNYXRoLnBvdygxMCwzKihmbXQubGVuZ3RoLWlkeCkpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9wY3QyKHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgc2ZtdCA9IGZtdC5yZXBsYWNlKHBjdDEsXCJcIiksIG11bCA9IGZtdC5sZW5ndGggLSBzZm10Lmxlbmd0aDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBzZm10LCB2YWwgKiBNYXRoLnBvdygxMCwyKm11bCkpICsgZmlsbChcIiVcIixtdWwpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2V4cDIoZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgby8qOnN0cmluZyovO1xuXHR2YXIgaWR4ID0gZm10LmluZGV4T2YoXCJFXCIpIC0gZm10LmluZGV4T2YoXCIuXCIpIC0gMTtcblx0aWYoZm10Lm1hdGNoKC9eIyswLjBFXFwrMCQvKSkge1xuXHRcdGlmKHZhbCA9PSAwKSByZXR1cm4gXCIwLjBFKzBcIjtcblx0XHRlbHNlIGlmKHZhbCA8IDApIHJldHVybiBcIi1cIiArIHdyaXRlX251bV9leHAyKGZtdCwgLXZhbCk7XG5cdFx0dmFyIHBlcmlvZCA9IGZtdC5pbmRleE9mKFwiLlwiKTsgaWYocGVyaW9kID09PSAtMSkgcGVyaW9kPWZtdC5pbmRleE9mKCdFJyk7XG5cdFx0dmFyIGVlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpKk1hdGguTE9HMTBFKSVwZXJpb2Q7XG5cdFx0aWYoZWUgPCAwKSBlZSArPSBwZXJpb2Q7XG5cdFx0byA9ICh2YWwvTWF0aC5wb3coMTAsZWUpKS50b1ByZWNpc2lvbihpZHgrMSsocGVyaW9kK2VlKSVwZXJpb2QpO1xuXHRcdGlmKCFvLm1hdGNoKC9bRWVdLykpIHtcblx0XHRcdHZhciBmYWtlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSk7XG5cdFx0XHRpZihvLmluZGV4T2YoXCIuXCIpID09PSAtMSkgbyA9IG8uY2hhckF0KDApICsgXCIuXCIgKyBvLnN1YnN0cigxKSArIFwiRStcIiArIChmYWtlZSAtIG8ubGVuZ3RoK2VlKTtcblx0XHRcdGVsc2UgbyArPSBcIkUrXCIgKyAoZmFrZWUgLSBlZSk7XG5cdFx0XHRvID0gby5yZXBsYWNlKC9cXCstLyxcIi1cIik7XG5cdFx0fVxuXHRcdG8gPSBvLnJlcGxhY2UoL14oWystXT8pKFxcZCopXFwuKFxcZCopW0VlXS8sZnVuY3Rpb24oJCQsJDEsJDIsJDMpIHsgcmV0dXJuICQxICsgJDIgKyAkMy5zdWJzdHIoMCwocGVyaW9kK2VlKSVwZXJpb2QpICsgXCIuXCIgKyAkMy5zdWJzdHIoZWUpICsgXCJFXCI7IH0pO1xuXHR9IGVsc2UgbyA9IHZhbC50b0V4cG9uZW50aWFsKGlkeCk7XG5cdGlmKGZtdC5tYXRjaCgvRVxcKzAwJC8pICYmIG8ubWF0Y2goL2VbKy1dXFxkJC8pKSBvID0gby5zdWJzdHIoMCxvLmxlbmd0aC0xKSArIFwiMFwiICsgby5jaGFyQXQoby5sZW5ndGgtMSk7XG5cdGlmKGZtdC5tYXRjaCgvRVxcLS8pICYmIG8ubWF0Y2goL2VcXCsvKSkgbyA9IG8ucmVwbGFjZSgvZVxcKy8sXCJlXCIpO1xuXHRyZXR1cm4gby5yZXBsYWNlKFwiZVwiLFwiRVwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9pbnQodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRpZih0eXBlLmNoYXJDb2RlQXQoMCkgPT09IDQwICYmICFmbXQubWF0Y2goY2xvc2VwYXJlbikpIHtcblx0XHR2YXIgZmZtdCA9IGZtdC5yZXBsYWNlKC9cXCggKi8sXCJcIikucmVwbGFjZSgvIFxcKS8sXCJcIikucmVwbGFjZSgvXFwpLyxcIlwiKTtcblx0XHRpZih2YWwgPj0gMCkgcmV0dXJuIHdyaXRlX251bV9pbnQoJ24nLCBmZm10LCB2YWwpO1xuXHRcdHJldHVybiAnKCcgKyB3cml0ZV9udW1faW50KCduJywgZmZtdCwgLXZhbCkgKyAnKSc7XG5cdH1cblx0aWYoZm10LmNoYXJDb2RlQXQoZm10Lmxlbmd0aCAtIDEpID09PSA0NCkgcmV0dXJuIHdyaXRlX251bV9jbTIodHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignJScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9wY3QyKHR5cGUsIGZtdCwgdmFsKTtcblx0aWYoZm10LmluZGV4T2YoJ0UnKSAhPT0gLTEpIHJldHVybiB3cml0ZV9udW1fZXhwMihmbXQsIHZhbCk7XG5cdGlmKGZtdC5jaGFyQ29kZUF0KDApID09PSAzNikgcmV0dXJuIFwiJFwiK3dyaXRlX251bV9pbnQodHlwZSxmbXQuc3Vic3RyKGZtdC5jaGFyQXQoMSk9PScgJz8yOjEpLHZhbCk7XG5cdHZhciBvO1xuXHR2YXIgci8qOj9BcnJheTxzdHJpbmc+Ki8sIHJpLCBmZiwgYXZhbCA9IE1hdGguYWJzKHZhbCksIHNpZ24gPSB2YWwgPCAwID8gXCItXCIgOiBcIlwiO1xuXHRpZihmbXQubWF0Y2goL14wMCskLykpIHJldHVybiBzaWduICsgcGFkMChhdmFsLGZtdC5sZW5ndGgpO1xuXHRpZihmbXQubWF0Y2goL15bIz9dKyQvKSkge1xuXHRcdG8gPSAoXCJcIit2YWwpOyBpZih2YWwgPT09IDApIG8gPSBcIlwiO1xuXHRcdHJldHVybiBvLmxlbmd0aCA+IGZtdC5sZW5ndGggPyBvIDogaGFzaHEoZm10LnN1YnN0cigwLGZtdC5sZW5ndGgtby5sZW5ndGgpKSArIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goZnJhYzEpKSkgcmV0dXJuIHdyaXRlX251bV9mMihyLCBhdmFsLCBzaWduKTtcblx0aWYoZm10Lm1hdGNoKC9eIyswKyQvKSkgcmV0dXJuIHNpZ24gKyBwYWQwKGF2YWwsZm10Lmxlbmd0aCAtIGZtdC5pbmRleE9mKFwiMFwiKSk7XG5cdGlmKChyID0gZm10Lm1hdGNoKGRlYzEpKSkge1xuXHRcdC8qOjogaWYoIUFycmF5LmlzQXJyYXkocikpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdG8gPSAoXCJcIit2YWwpLnJlcGxhY2UoL14oW15cXC5dKykkLyxcIiQxLlwiK2hhc2hxKHJbMV0pKS5yZXBsYWNlKC9cXC4kLyxcIi5cIitoYXNocShyWzFdKSk7XG5cdFx0byA9IG8ucmVwbGFjZSgvXFwuKFxcZCopJC8sZnVuY3Rpb24oJCQsICQxKSB7XG5cdFx0Lyo6OiBpZighQXJyYXkuaXNBcnJheShyKSkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHRyZXR1cm4gXCIuXCIgKyAkMSArIGZpbGwoXCIwXCIsIGhhc2hxKHJbMV0pLmxlbmd0aC0kMS5sZW5ndGgpOyB9KTtcblx0XHRyZXR1cm4gZm10LmluZGV4T2YoXCIwLlwiKSAhPT0gLTEgPyBvIDogby5yZXBsYWNlKC9eMFxcLi8sXCIuXCIpO1xuXHR9XG5cdGZtdCA9IGZtdC5yZXBsYWNlKC9eIysoWzAuXSkvLCBcIiQxXCIpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXigwKilcXC4oIyopJC8pKSkge1xuXHRcdHJldHVybiBzaWduICsgKFwiXCIrYXZhbCkucmVwbGFjZSgvXFwuKFxcZCpbMS05XSkwKiQvLFwiLiQxXCIpLnJlcGxhY2UoL14oLT9cXGQqKSQvLFwiJDEuXCIpLnJlcGxhY2UoL14wXFwuLyxyWzFdLmxlbmd0aD9cIjAuXCI6XCIuXCIpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eI3sxLDN9LCMjMChcXC4/KSQvKSkpIHJldHVybiBzaWduICsgY29tbWFpZnkoKFwiXCIrYXZhbCkpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXiMsIyMwXFwuKFsjMF0qMCkkLykpKSB7XG5cdFx0cmV0dXJuIHZhbCA8IDAgPyBcIi1cIiArIHdyaXRlX251bV9pbnQodHlwZSwgZm10LCAtdmFsKSA6IGNvbW1haWZ5KChcIlwiK3ZhbCkpICsgXCIuXCIgKyBmaWxsKCcwJyxyWzFdLmxlbmd0aCk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMqLCMwLykpKSByZXR1cm4gd3JpdGVfbnVtX2ludCh0eXBlLGZtdC5yZXBsYWNlKC9eIywjKiwvLFwiXCIpLHZhbCk7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFswI10rKShcXFxcPy0oWzAjXSspKSskLykpKSB7XG5cdFx0byA9IF9zdHJyZXYod3JpdGVfbnVtX2ludCh0eXBlLCBmbXQucmVwbGFjZSgvW1xcXFwtXS9nLFwiXCIpLCB2YWwpKTtcblx0XHRyaSA9IDA7XG5cdFx0cmV0dXJuIF9zdHJyZXYoX3N0cnJldihmbXQucmVwbGFjZSgvXFxcXC9nLFwiXCIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rpb24oeCl7cmV0dXJuIHJpPG8ubGVuZ3RoP28uY2hhckF0KHJpKyspOng9PT0nMCc/JzAnOlwiXCI7fSkpO1xuXHR9XG5cdGlmKGZtdC5tYXRjaChwaG9uZSkpIHtcblx0XHRvID0gd3JpdGVfbnVtX2ludCh0eXBlLCBcIiMjIyMjIyMjIyNcIiwgdmFsKTtcblx0XHRyZXR1cm4gXCIoXCIgKyBvLnN1YnN0cigwLDMpICsgXCIpIFwiICsgby5zdWJzdHIoMywgMykgKyBcIi1cIiArIG8uc3Vic3RyKDYpO1xuXHR9XG5cdHZhciBvYSA9IFwiXCI7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbigvKjo6U3RyaW5nKCovcls0XS8qOjopKi8ubGVuZ3RoLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIGZhbHNlKTtcblx0XHRvID0gXCJcIiArIHNpZ247XG5cdFx0b2EgPSB3cml0ZV9udW0oXCJuXCIsIC8qOjpTdHJpbmcoKi9yWzFdLyo6OikqLywgZmZbMV0pO1xuXHRcdGlmKG9hLmNoYXJBdChvYS5sZW5ndGgtMSkgPT0gXCIgXCIpIG9hID0gb2Euc3Vic3RyKDAsb2EubGVuZ3RoLTEpICsgXCIwXCI7XG5cdFx0byArPSBvYSArIC8qOjpTdHJpbmcoKi9yWzJdLyo6OikqLyArIFwiL1wiICsgLyo6OlN0cmluZygqL3JbM10vKjo6KSovO1xuXHRcdG9hID0gcnBhZF8oZmZbMl0scmkpO1xuXHRcdGlmKG9hLmxlbmd0aCA8IHJbNF0ubGVuZ3RoKSBvYSA9IGhhc2hxKHJbNF0uc3Vic3RyKHJbNF0ubGVuZ3RoLW9hLmxlbmd0aCkpICsgb2E7XG5cdFx0byArPSBvYTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiMgKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbihNYXRoLm1heChyWzFdLmxlbmd0aCwgcls0XS5sZW5ndGgpLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIHRydWUpO1xuXHRcdHJldHVybiBzaWduICsgKGZmWzBdfHwoZmZbMV0gPyBcIlwiIDogXCIwXCIpKSArIFwiIFwiICsgKGZmWzFdID8gcGFkXyhmZlsxXSxyaSkgKyByWzJdICsgXCIvXCIgKyByWzNdICsgcnBhZF8oZmZbMl0scmkpOiBmaWxsKFwiIFwiLCAyKnJpKzEgKyByWzJdLmxlbmd0aCArIHJbM10ubGVuZ3RoKSk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL15bIzA/XSskLykpKSB7XG5cdFx0byA9IFwiXCIgKyB2YWw7XG5cdFx0aWYoZm10Lmxlbmd0aCA8PSBvLmxlbmd0aCkgcmV0dXJuIG87XG5cdFx0cmV0dXJuIGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMF0rKVxcLihbIzBdKykkLykpKSB7XG5cdFx0byA9IFwiXCIgKyB2YWwudG9GaXhlZChNYXRoLm1pbihyWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sXCIkMVwiKTtcblx0XHRyaSA9IG8uaW5kZXhPZihcIi5cIik7XG5cdFx0dmFyIGxyZXMgPSBmbXQuaW5kZXhPZihcIi5cIikgLSByaSwgcnJlcyA9IGZtdC5sZW5ndGggLSBvLmxlbmd0aCAtIGxyZXM7XG5cdFx0cmV0dXJuIGhhc2hxKGZtdC5zdWJzdHIoMCxscmVzKSArIG8gKyBmbXQuc3Vic3RyKGZtdC5sZW5ndGgtcnJlcykpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eMDAsMDAwXFwuKFsjMF0qMCkkLykpKSB7XG5cdFx0cmV0dXJuIHZhbCA8IDAgPyBcIi1cIiArIHdyaXRlX251bV9pbnQodHlwZSwgZm10LCAtdmFsKSA6IGNvbW1haWZ5KFwiXCIrdmFsKS5yZXBsYWNlKC9eXFxkLFxcZHszfSQvLFwiMCQmXCIpLnJlcGxhY2UoL15cXGQqJC8sZnVuY3Rpb24oJCQpIHsgcmV0dXJuIFwiMDAsXCIgKyAoJCQubGVuZ3RoIDwgMyA/IHBhZDAoMCwzLSQkLmxlbmd0aCkgOiBcIlwiKSArICQkOyB9KSArIFwiLlwiICsgcGFkMCgwLHJbMV0ubGVuZ3RoKTtcblx0fVxuXHRzd2l0Y2goZm10KSB7XG5cdFx0Y2FzZSBcIiMjIywjIyNcIjpcblx0XHRjYXNlIFwiIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMsIyMjXCI6IHZhciB4ID0gY29tbWFpZnkoXCJcIithdmFsKTsgcmV0dXJuIHggIT09IFwiMFwiID8gc2lnbiArIHggOiBcIlwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRpZihmbXQubWF0Y2goL1xcLlswIz9dKiQvKSkgcmV0dXJuIHdyaXRlX251bV9pbnQodHlwZSwgZm10LnNsaWNlKDAsZm10Lmxhc3RJbmRleE9mKFwiLlwiKSksIHZhbCkgKyBoYXNocShmbXQuc2xpY2UoZm10Lmxhc3RJbmRleE9mKFwiLlwiKSkpO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIGZvcm1hdCB8XCIgKyBmbXQgKyBcInxcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9udW0odHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gKHZhbHwwKSA9PT0gdmFsID8gd3JpdGVfbnVtX2ludCh0eXBlLCBmbXQsIHZhbCkgOiB3cml0ZV9udW1fZmx0KHR5cGUsIGZtdCwgdmFsKTtcbn1cbmZ1bmN0aW9uIFNTRl9zcGxpdF9mbXQoZm10Lyo6c3RyaW5nKi8pLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgaW5fc3RyID0gZmFsc2UvKiwgY2MqLztcblx0Zm9yKHZhciBpID0gMCwgaiA9IDA7IGkgPCBmbXQubGVuZ3RoOyArK2kpIHN3aXRjaCgoLypjYz0qL2ZtdC5jaGFyQ29kZUF0KGkpKSkge1xuXHRcdGNhc2UgMzQ6IC8qICdcIicgKi9cblx0XHRcdGluX3N0ciA9ICFpbl9zdHI7IGJyZWFrO1xuXHRcdGNhc2UgOTU6IGNhc2UgNDI6IGNhc2UgOTI6IC8qICdfJyAnKicgJ1xcXFwnICovXG5cdFx0XHQrK2k7IGJyZWFrO1xuXHRcdGNhc2UgNTk6IC8qICc7JyAqL1xuXHRcdFx0b3V0W291dC5sZW5ndGhdID0gZm10LnN1YnN0cihqLGktaik7XG5cdFx0XHRqID0gaSsxO1xuXHR9XG5cdG91dFtvdXQubGVuZ3RoXSA9IGZtdC5zdWJzdHIoaik7XG5cdGlmKGluX3N0ciA9PT0gdHJ1ZSkgdGhyb3cgbmV3IEVycm9yKFwiRm9ybWF0IHxcIiArIGZtdCArIFwifCB1bnRlcm1pbmF0ZWQgc3RyaW5nIFwiKTtcblx0cmV0dXJuIG91dDtcbn1cblxudmFyIFNTRl9hYnN0aW1lID0gL1xcW1tIaE1tU3NcXHUwRTBBXFx1MEUxOVxcdTBFMTddKlxcXS87XG5mdW5jdGlvbiBmbXRfaXNfZGF0ZShmbXQvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHR2YXIgaSA9IDAsIC8qY2MgPSAwLCovIGMgPSBcIlwiLCBvID0gXCJcIjtcblx0d2hpbGUoaSA8IGZtdC5sZW5ndGgpIHtcblx0XHRzd2l0Y2goKGMgPSBmbXQuY2hhckF0KGkpKSkge1xuXHRcdFx0Y2FzZSAnRyc6IGlmKFNTRl9pc2dlbmVyYWwoZm10LCBpKSkgaSs9IDY7IGkrKzsgYnJlYWs7XG5cdFx0XHRjYXNlICdcIic6IGZvcig7KC8qY2M9Ki9mbXQuY2hhckNvZGVBdCgrK2kpKSAhPT0gMzQgJiYgaSA8IGZtdC5sZW5ndGg7KXsvKmVtcHR5Ki99ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdcXFxcJzogaSs9MjsgYnJlYWs7XG5cdFx0XHRjYXNlICdfJzogaSs9MjsgYnJlYWs7XG5cdFx0XHRjYXNlICdAJzogKytpOyBicmVhaztcblx0XHRcdGNhc2UgJ0InOiBjYXNlICdiJzpcblx0XHRcdFx0aWYoZm10LmNoYXJBdChpKzEpID09PSBcIjFcIiB8fCBmbXQuY2hhckF0KGkrMSkgPT09IFwiMlwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnTSc6IGNhc2UgJ0QnOiBjYXNlICdZJzogY2FzZSAnSCc6IGNhc2UgJ1MnOiBjYXNlICdFJzpcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnbSc6IGNhc2UgJ2QnOiBjYXNlICd5JzogY2FzZSAnaCc6IGNhc2UgJ3MnOiBjYXNlICdlJzogY2FzZSAnZyc6IHJldHVybiB0cnVlO1xuXHRcdFx0Y2FzZSAnQSc6IGNhc2UgJ2EnOiBjYXNlICfkuIonOlxuXHRcdFx0XHRpZihmbXQuc3Vic3RyKGksIDMpLnRvVXBwZXJDYXNlKCkgPT09IFwiQS9QXCIpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRpZihmbXQuc3Vic3RyKGksIDUpLnRvVXBwZXJDYXNlKCkgPT09IFwiQU0vUE1cIikgcmV0dXJuIHRydWU7XG5cdFx0XHRcdGlmKGZtdC5zdWJzdHIoaSwgNSkudG9VcHBlckNhc2UoKSA9PT0gXCLkuIrljYgv5LiL5Y2IXCIpIHJldHVybiB0cnVlO1xuXHRcdFx0XHQrK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnWyc6XG5cdFx0XHRcdG8gPSBjO1xuXHRcdFx0XHR3aGlsZShmbXQuY2hhckF0KGkrKykgIT09ICddJyAmJiBpIDwgZm10Lmxlbmd0aCkgbyArPSBmbXQuY2hhckF0KGkpO1xuXHRcdFx0XHRpZihvLm1hdGNoKFNTRl9hYnN0aW1lKSkgcmV0dXJuIHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnLic6XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzAnOiBjYXNlICcjJzpcblx0XHRcdFx0d2hpbGUoaSA8IGZtdC5sZW5ndGggJiYgKFwiMCM/LixFKy0lXCIuaW5kZXhPZihjPWZtdC5jaGFyQXQoKytpKSkgPiAtMSB8fCAoYz09J1xcXFwnICYmIGZtdC5jaGFyQXQoaSsxKSA9PSBcIi1cIiAmJiBcIjAjXCIuaW5kZXhPZihmbXQuY2hhckF0KGkrMikpPi0xKSkpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJz8nOiB3aGlsZShmbXQuY2hhckF0KCsraSkgPT09IGMpey8qIGVtcHR5ICovfSBicmVhaztcblx0XHRcdGNhc2UgJyonOiArK2k7IGlmKGZtdC5jaGFyQXQoaSkgPT0gJyAnIHx8IGZtdC5jaGFyQXQoaSkgPT0gJyonKSArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnKCc6IGNhc2UgJyknOiArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5Jzpcblx0XHRcdFx0d2hpbGUoaSA8IGZtdC5sZW5ndGggJiYgXCIwMTIzNDU2Nzg5XCIuaW5kZXhPZihmbXQuY2hhckF0KCsraSkpID4gLTEpey8qIGVtcHR5ICovfSBicmVhaztcblx0XHRcdGNhc2UgJyAnOiArK2k7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogKytpOyBicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBldmFsX2ZtdChmbXQvKjpzdHJpbmcqLywgdi8qOmFueSovLCBvcHRzLyo6YW55Ki8sIGZsZW4vKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gW10sIG8gPSBcIlwiLCBpID0gMCwgYyA9IFwiXCIsIGxzdD0ndCcsIGR0LCBqLCBjYztcblx0dmFyIGhyPSdIJztcblx0LyogVG9rZW5pemUgKi9cblx0d2hpbGUoaSA8IGZtdC5sZW5ndGgpIHtcblx0XHRzd2l0Y2goKGMgPSBmbXQuY2hhckF0KGkpKSkge1xuXHRcdFx0Y2FzZSAnRyc6IC8qIEdlbmVyYWwgKi9cblx0XHRcdFx0aWYoIVNTRl9pc2dlbmVyYWwoZm10LCBpKSkgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgY2hhcmFjdGVyICcgKyBjICsgJyBpbiAnICtmbXQpO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonRycsIHY6J0dlbmVyYWwnfTsgaSs9NzsgYnJlYWs7XG5cdFx0XHRjYXNlICdcIic6IC8qIExpdGVyYWwgdGV4dCAqL1xuXHRcdFx0XHRmb3Iobz1cIlwiOyhjYz1mbXQuY2hhckNvZGVBdCgrK2kpKSAhPT0gMzQgJiYgaSA8IGZtdC5sZW5ndGg7KSBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2MpO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsIHY6b307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdcXFxcJzogdmFyIHcgPSBmbXQuY2hhckF0KCsraSksIHQgPSAodyA9PT0gXCIoXCIgfHwgdyA9PT0gXCIpXCIpID8gdyA6ICd0Jztcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6dCwgdjp3fTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJ18nOiBvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsIHY6XCIgXCJ9OyBpKz0yOyBicmVhaztcblx0XHRcdGNhc2UgJ0AnOiAvKiBUZXh0IFBsYWNlaG9sZGVyICovXG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidUJywgdjp2fTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJ0InOiBjYXNlICdiJzpcblx0XHRcdFx0aWYoZm10LmNoYXJBdChpKzEpID09PSBcIjFcIiB8fCBmbXQuY2hhckF0KGkrMSkgPT09IFwiMlwiKSB7XG5cdFx0XHRcdFx0aWYoZHQ9PW51bGwpIHsgZHQ9U1NGX3BhcnNlX2RhdGVfY29kZSh2LCBvcHRzLCBmbXQuY2hhckF0KGkrMSkgPT09IFwiMlwiKTsgaWYoZHQ9PW51bGwpIHJldHVybiBcIlwiOyB9XG5cdFx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J1gnLCB2OmZtdC5zdWJzdHIoaSwyKX07IGxzdCA9IGM7IGkrPTI7IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ00nOiBjYXNlICdEJzogY2FzZSAnWSc6IGNhc2UgJ0gnOiBjYXNlICdTJzogY2FzZSAnRSc6XG5cdFx0XHRcdGMgPSBjLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ20nOiBjYXNlICdkJzogY2FzZSAneSc6IGNhc2UgJ2gnOiBjYXNlICdzJzogY2FzZSAnZSc6IGNhc2UgJ2cnOlxuXHRcdFx0XHRpZih2IDwgMCkgcmV0dXJuIFwiXCI7XG5cdFx0XHRcdGlmKGR0PT1udWxsKSB7IGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cyk7IGlmKGR0PT1udWxsKSByZXR1cm4gXCJcIjsgfVxuXHRcdFx0XHRvID0gYzsgd2hpbGUoKytpIDwgZm10Lmxlbmd0aCAmJiBmbXQuY2hhckF0KGkpLnRvTG93ZXJDYXNlKCkgPT09IGMpIG8rPWM7XG5cdFx0XHRcdGlmKGMgPT09ICdtJyAmJiBsc3QudG9Mb3dlckNhc2UoKSA9PT0gJ2gnKSBjID0gJ00nO1xuXHRcdFx0XHRpZihjID09PSAnaCcpIGMgPSBocjtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6YywgdjpvfTsgbHN0ID0gYzsgYnJlYWs7XG5cdFx0XHRjYXNlICdBJzogY2FzZSAnYSc6IGNhc2UgJ+S4iic6XG5cdFx0XHRcdHZhciBxPXt0OmMsIHY6Y307XG5cdFx0XHRcdGlmKGR0PT1udWxsKSBkdD1TU0ZfcGFyc2VfZGF0ZV9jb2RlKHYsIG9wdHMpO1xuXHRcdFx0XHRpZihmbXQuc3Vic3RyKGksIDMpLnRvVXBwZXJDYXNlKCkgPT09IFwiQS9QXCIpIHsgaWYoZHQhPW51bGwpIHEudiA9IGR0LkggPj0gMTIgPyBcIlBcIiA6IFwiQVwiOyBxLnQgPSAnVCc7IGhyPSdoJztpKz0zO31cblx0XHRcdFx0ZWxzZSBpZihmbXQuc3Vic3RyKGksNSkudG9VcHBlckNhc2UoKSA9PT0gXCJBTS9QTVwiKSB7IGlmKGR0IT1udWxsKSBxLnYgPSBkdC5IID49IDEyID8gXCJQTVwiIDogXCJBTVwiOyBxLnQgPSAnVCc7IGkrPTU7IGhyPSdoJzsgfVxuXHRcdFx0XHRlbHNlIGlmKGZtdC5zdWJzdHIoaSw1KS50b1VwcGVyQ2FzZSgpID09PSBcIuS4iuWNiC/kuIvljYhcIikgeyBpZihkdCE9bnVsbCkgcS52ID0gZHQuSCA+PSAxMiA/IFwi5LiL5Y2IXCIgOiBcIuS4iuWNiFwiOyBxLnQgPSAnVCc7IGkrPTU7IGhyPSdoJzsgfVxuXHRcdFx0XHRlbHNlIHsgcS50ID0gXCJ0XCI7ICsraTsgfVxuXHRcdFx0XHRpZihkdD09bnVsbCAmJiBxLnQgPT09ICdUJykgcmV0dXJuIFwiXCI7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHE7IGxzdCA9IGM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnWyc6XG5cdFx0XHRcdG8gPSBjO1xuXHRcdFx0XHR3aGlsZShmbXQuY2hhckF0KGkrKykgIT09ICddJyAmJiBpIDwgZm10Lmxlbmd0aCkgbyArPSBmbXQuY2hhckF0KGkpO1xuXHRcdFx0XHRpZihvLnNsaWNlKC0xKSAhPT0gJ10nKSB0aHJvdyAndW50ZXJtaW5hdGVkIFwiW1wiIGJsb2NrOiB8JyArIG8gKyAnfCc7XG5cdFx0XHRcdGlmKG8ubWF0Y2goU1NGX2Fic3RpbWUpKSB7XG5cdFx0XHRcdFx0aWYoZHQ9PW51bGwpIHsgZHQ9U1NGX3BhcnNlX2RhdGVfY29kZSh2LCBvcHRzKTsgaWYoZHQ9PW51bGwpIHJldHVybiBcIlwiOyB9XG5cdFx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J1onLCB2Om8udG9Mb3dlckNhc2UoKX07XG5cdFx0XHRcdFx0bHN0ID0gby5jaGFyQXQoMSk7XG5cdFx0XHRcdH0gZWxzZSBpZihvLmluZGV4T2YoXCIkXCIpID4gLTEpIHtcblx0XHRcdFx0XHRvID0gKG8ubWF0Y2goL1xcJChbXi1cXFtcXF1dKikvKXx8W10pWzFdfHxcIiRcIjtcblx0XHRcdFx0XHRpZighZm10X2lzX2RhdGUoZm10KSkgb3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLHY6b307XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvKiBOdW1iZXJzICovXG5cdFx0XHRjYXNlICcuJzpcblx0XHRcdFx0aWYoZHQgIT0gbnVsbCkge1xuXHRcdFx0XHRcdG8gPSBjOyB3aGlsZSgrK2kgPCBmbXQubGVuZ3RoICYmIChjPWZtdC5jaGFyQXQoaSkpID09PSBcIjBcIikgbyArPSBjO1xuXHRcdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidzJywgdjpvfTsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnMCc6IGNhc2UgJyMnOlxuXHRcdFx0XHRvID0gYzsgd2hpbGUoKytpIDwgZm10Lmxlbmd0aCAmJiBcIjAjPy4sRSstJVwiLmluZGV4T2YoYz1mbXQuY2hhckF0KGkpKSA+IC0xKSBvICs9IGM7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OiduJywgdjpvfTsgYnJlYWs7XG5cdFx0XHRjYXNlICc/Jzpcblx0XHRcdFx0byA9IGM7IHdoaWxlKGZtdC5jaGFyQXQoKytpKSA9PT0gYykgbys9Yztcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6YywgdjpvfTsgbHN0ID0gYzsgYnJlYWs7XG5cdFx0XHRjYXNlICcqJzogKytpOyBpZihmbXQuY2hhckF0KGkpID09ICcgJyB8fCBmbXQuY2hhckF0KGkpID09ICcqJykgKytpOyBicmVhazsgLy8gKipcblx0XHRcdGNhc2UgJygnOiBjYXNlICcpJzogb3V0W291dC5sZW5ndGhdID0ge3Q6KGZsZW49PT0xPyd0JzpjKSwgdjpjfTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG5cdFx0XHRcdG8gPSBjOyB3aGlsZShpIDwgZm10Lmxlbmd0aCAmJiBcIjAxMjM0NTY3ODlcIi5pbmRleE9mKGZtdC5jaGFyQXQoKytpKSkgPiAtMSkgbys9Zm10LmNoYXJBdChpKTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J0QnLCB2Om99OyBicmVhaztcblx0XHRcdGNhc2UgJyAnOiBvdXRbb3V0Lmxlbmd0aF0gPSB7dDpjLCB2OmN9OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnJCc6IG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0JywgdjonJCd9OyArK2k7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoXCIsJC0rLygpOiFeJid+e308Pj3igqxhY2Zpamtsb3BxcnR1dnd4elBcIi5pbmRleE9mKGMpID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgY2hhcmFjdGVyICcgKyBjICsgJyBpbiAnICsgZm10KTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2OmN9OyArK2k7IGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNjYW4gZm9yIGRhdGUvdGltZSBwYXJ0cyAqL1xuXHR2YXIgYnQgPSAwLCBzczAgPSAwLCBzc207XG5cdGZvcihpPW91dC5sZW5ndGgtMSwgbHN0PSd0JzsgaSA+PSAwOyAtLWkpIHtcblx0XHRzd2l0Y2gob3V0W2ldLnQpIHtcblx0XHRcdGNhc2UgJ2gnOiBjYXNlICdIJzogb3V0W2ldLnQgPSBocjsgbHN0PSdoJzsgaWYoYnQgPCAxKSBidCA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAncyc6XG5cdFx0XHRcdGlmKChzc209b3V0W2ldLnYubWF0Y2goL1xcLjArJC8pKSkgc3MwPU1hdGgubWF4KHNzMCxzc21bMF0ubGVuZ3RoLTEpO1xuXHRcdFx0XHRpZihidCA8IDMpIGJ0ID0gMztcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ2QnOiBjYXNlICd5JzogY2FzZSAnTSc6IGNhc2UgJ2UnOiBsc3Q9b3V0W2ldLnQ7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbSc6IGlmKGxzdCA9PT0gJ3MnKSB7IG91dFtpXS50ID0gJ00nOyBpZihidCA8IDIpIGJ0ID0gMjsgfSBicmVhaztcblx0XHRcdGNhc2UgJ1gnOiAvKmlmKG91dFtpXS52ID09PSBcIkIyXCIpOyovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnWic6XG5cdFx0XHRcdGlmKGJ0IDwgMSAmJiBvdXRbaV0udi5tYXRjaCgvW0hoXS8pKSBidCA9IDE7XG5cdFx0XHRcdGlmKGJ0IDwgMiAmJiBvdXRbaV0udi5tYXRjaCgvW01tXS8pKSBidCA9IDI7XG5cdFx0XHRcdGlmKGJ0IDwgMyAmJiBvdXRbaV0udi5tYXRjaCgvW1NzXS8pKSBidCA9IDM7XG5cdFx0fVxuXHR9XG5cdC8qIHRpbWUgcm91bmRpbmcgZGVwZW5kcyBvbiBwcmVzZW5jZSBvZiBtaW51dGUgLyBzZWNvbmQgLyB1c2VjIGZpZWxkcyAqL1xuXHRzd2l0Y2goYnQpIHtcblx0XHRjYXNlIDA6IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdC8qOjppZighZHQpIGJyZWFrOyovXG5cdFx0XHRpZihkdC51ID49IDAuNSkgeyBkdC51ID0gMDsgKytkdC5TOyB9XG5cdFx0XHRpZihkdC5TID49ICA2MCkgeyBkdC5TID0gMDsgKytkdC5NOyB9XG5cdFx0XHRpZihkdC5NID49ICA2MCkgeyBkdC5NID0gMDsgKytkdC5IOyB9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHQvKjo6aWYoIWR0KSBicmVhazsqL1xuXHRcdFx0aWYoZHQudSA+PSAwLjUpIHsgZHQudSA9IDA7ICsrZHQuUzsgfVxuXHRcdFx0aWYoZHQuUyA+PSAgNjApIHsgZHQuUyA9IDA7ICsrZHQuTTsgfVxuXHRcdFx0YnJlYWs7XG5cdH1cblxuXHQvKiByZXBsYWNlIGZpZWxkcyAqL1xuXHR2YXIgbnN0ciA9IFwiXCIsIGpqO1xuXHRmb3IoaT0wOyBpIDwgb3V0Lmxlbmd0aDsgKytpKSB7XG5cdFx0c3dpdGNoKG91dFtpXS50KSB7XG5cdFx0XHRjYXNlICd0JzogY2FzZSAnVCc6IGNhc2UgJyAnOiBjYXNlICdEJzogYnJlYWs7XG5cdFx0XHRjYXNlICdYJzogb3V0W2ldLnYgPSBcIlwiOyBvdXRbaV0udCA9IFwiO1wiOyBicmVhaztcblx0XHRcdGNhc2UgJ2QnOiBjYXNlICdtJzogY2FzZSAneSc6IGNhc2UgJ2gnOiBjYXNlICdIJzogY2FzZSAnTSc6IGNhc2UgJ3MnOiBjYXNlICdlJzogY2FzZSAnYic6IGNhc2UgJ1onOlxuXHRcdFx0XHQvKjo6aWYoIWR0KSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRcdG91dFtpXS52ID0gU1NGX3dyaXRlX2RhdGUob3V0W2ldLnQuY2hhckNvZGVBdCgwKSwgb3V0W2ldLnYsIGR0LCBzczApO1xuXHRcdFx0XHRvdXRbaV0udCA9ICd0JzsgYnJlYWs7XG5cdFx0XHRjYXNlICduJzogY2FzZSAnPyc6XG5cdFx0XHRcdGpqID0gaSsxO1xuXHRcdFx0XHR3aGlsZShvdXRbampdICE9IG51bGwgJiYgKFxuXHRcdFx0XHRcdChjPW91dFtqal0udCkgPT09IFwiP1wiIHx8IGMgPT09IFwiRFwiIHx8XG5cdFx0XHRcdFx0KChjID09PSBcIiBcIiB8fCBjID09PSBcInRcIikgJiYgb3V0W2pqKzFdICE9IG51bGwgJiYgKG91dFtqaisxXS50ID09PSAnPycgfHwgb3V0W2pqKzFdLnQgPT09IFwidFwiICYmIG91dFtqaisxXS52ID09PSAnLycpKSB8fFxuXHRcdFx0XHRcdChvdXRbaV0udCA9PT0gJygnICYmIChjID09PSAnICcgfHwgYyA9PT0gJ24nIHx8IGMgPT09ICcpJykpIHx8XG5cdFx0XHRcdFx0KGMgPT09ICd0JyAmJiAob3V0W2pqXS52ID09PSAnLycgfHwgb3V0W2pqXS52ID09PSAnICcgJiYgb3V0W2pqKzFdICE9IG51bGwgJiYgb3V0W2pqKzFdLnQgPT0gJz8nKSlcblx0XHRcdFx0KSkge1xuXHRcdFx0XHRcdG91dFtpXS52ICs9IG91dFtqal0udjtcblx0XHRcdFx0XHRvdXRbampdID0ge3Y6XCJcIiwgdDpcIjtcIn07ICsramo7XG5cdFx0XHRcdH1cblx0XHRcdFx0bnN0ciArPSBvdXRbaV0udjtcblx0XHRcdFx0aSA9IGpqLTE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnRyc6IG91dFtpXS50ID0gJ3QnOyBvdXRbaV0udiA9IFNTRl9nZW5lcmFsKHYsb3B0cyk7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHR2YXIgdnYgPSBcIlwiLCBteXYsIG9zdHI7XG5cdGlmKG5zdHIubGVuZ3RoID4gMCkge1xuXHRcdGlmKG5zdHIuY2hhckNvZGVBdCgwKSA9PSA0MCkgLyogJygnICovIHtcblx0XHRcdG15diA9ICh2PDAmJm5zdHIuY2hhckNvZGVBdCgwKSA9PT0gNDUgPyAtdiA6IHYpO1xuXHRcdFx0b3N0ciA9IHdyaXRlX251bSgnbicsIG5zdHIsIG15dik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG15diA9ICh2PDAgJiYgZmxlbiA+IDEgPyAtdiA6IHYpO1xuXHRcdFx0b3N0ciA9IHdyaXRlX251bSgnbicsIG5zdHIsIG15dik7XG5cdFx0XHRpZihteXYgPCAwICYmIG91dFswXSAmJiBvdXRbMF0udCA9PSAndCcpIHtcblx0XHRcdFx0b3N0ciA9IG9zdHIuc3Vic3RyKDEpO1xuXHRcdFx0XHRvdXRbMF0udiA9IFwiLVwiICsgb3V0WzBdLnY7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGpqPW9zdHIubGVuZ3RoLTE7XG5cdFx0dmFyIGRlY3B0ID0gb3V0Lmxlbmd0aDtcblx0XHRmb3IoaT0wOyBpIDwgb3V0Lmxlbmd0aDsgKytpKSBpZihvdXRbaV0gIT0gbnVsbCAmJiBvdXRbaV0udCAhPSAndCcgJiYgb3V0W2ldLnYuaW5kZXhPZihcIi5cIikgPiAtMSkgeyBkZWNwdCA9IGk7IGJyZWFrOyB9XG5cdFx0dmFyIGxhc3RpPW91dC5sZW5ndGg7XG5cdFx0aWYoZGVjcHQgPT09IG91dC5sZW5ndGggJiYgb3N0ci5pbmRleE9mKFwiRVwiKSA9PT0gLTEpIHtcblx0XHRcdGZvcihpPW91dC5sZW5ndGgtMTsgaT49IDA7LS1pKSB7XG5cdFx0XHRcdGlmKG91dFtpXSA9PSBudWxsIHx8ICduPycuaW5kZXhPZihvdXRbaV0udCkgPT09IC0xKSBjb250aW51ZTtcblx0XHRcdFx0aWYoamo+PW91dFtpXS52Lmxlbmd0aC0xKSB7IGpqIC09IG91dFtpXS52Lmxlbmd0aDsgb3V0W2ldLnYgPSBvc3RyLnN1YnN0cihqaisxLCBvdXRbaV0udi5sZW5ndGgpOyB9XG5cdFx0XHRcdGVsc2UgaWYoamogPCAwKSBvdXRbaV0udiA9IFwiXCI7XG5cdFx0XHRcdGVsc2UgeyBvdXRbaV0udiA9IG9zdHIuc3Vic3RyKDAsIGpqKzEpOyBqaiA9IC0xOyB9XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnO1xuXHRcdFx0XHRsYXN0aSA9IGk7XG5cdFx0XHR9XG5cdFx0XHRpZihqaj49MCAmJiBsYXN0aTxvdXQubGVuZ3RoKSBvdXRbbGFzdGldLnYgPSBvc3RyLnN1YnN0cigwLGpqKzEpICsgb3V0W2xhc3RpXS52O1xuXHRcdH1cblx0XHRlbHNlIGlmKGRlY3B0ICE9PSBvdXQubGVuZ3RoICYmIG9zdHIuaW5kZXhPZihcIkVcIikgPT09IC0xKSB7XG5cdFx0XHRqaiA9IG9zdHIuaW5kZXhPZihcIi5cIiktMTtcblx0XHRcdGZvcihpPWRlY3B0OyBpPj0gMDsgLS1pKSB7XG5cdFx0XHRcdGlmKG91dFtpXSA9PSBudWxsIHx8ICduPycuaW5kZXhPZihvdXRbaV0udCkgPT09IC0xKSBjb250aW51ZTtcblx0XHRcdFx0aj1vdXRbaV0udi5pbmRleE9mKFwiLlwiKT4tMSYmaT09PWRlY3B0P291dFtpXS52LmluZGV4T2YoXCIuXCIpLTE6b3V0W2ldLnYubGVuZ3RoLTE7XG5cdFx0XHRcdHZ2ID0gb3V0W2ldLnYuc3Vic3RyKGorMSk7XG5cdFx0XHRcdGZvcig7IGo+PTA7IC0taikge1xuXHRcdFx0XHRcdGlmKGpqPj0wICYmIChvdXRbaV0udi5jaGFyQXQoaikgPT09IFwiMFwiIHx8IG91dFtpXS52LmNoYXJBdChqKSA9PT0gXCIjXCIpKSB2diA9IG9zdHIuY2hhckF0KGpqLS0pICsgdnY7XG5cdFx0XHRcdH1cblx0XHRcdFx0b3V0W2ldLnYgPSB2djtcblx0XHRcdFx0b3V0W2ldLnQgPSAndCc7XG5cdFx0XHRcdGxhc3RpID0gaTtcblx0XHRcdH1cblx0XHRcdGlmKGpqPj0wICYmIGxhc3RpPG91dC5sZW5ndGgpIG91dFtsYXN0aV0udiA9IG9zdHIuc3Vic3RyKDAsamorMSkgKyBvdXRbbGFzdGldLnY7XG5cdFx0XHRqaiA9IG9zdHIuaW5kZXhPZihcIi5cIikrMTtcblx0XHRcdGZvcihpPWRlY3B0OyBpPG91dC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRpZihvdXRbaV0gPT0gbnVsbCB8fCAoJ24/KCcuaW5kZXhPZihvdXRbaV0udCkgPT09IC0xICYmIGkgIT09IGRlY3B0KSkgY29udGludWU7XG5cdFx0XHRcdGo9b3V0W2ldLnYuaW5kZXhPZihcIi5cIik+LTEmJmk9PT1kZWNwdD9vdXRbaV0udi5pbmRleE9mKFwiLlwiKSsxOjA7XG5cdFx0XHRcdHZ2ID0gb3V0W2ldLnYuc3Vic3RyKDAsaik7XG5cdFx0XHRcdGZvcig7IGo8b3V0W2ldLnYubGVuZ3RoOyArK2opIHtcblx0XHRcdFx0XHRpZihqajxvc3RyLmxlbmd0aCkgdnYgKz0gb3N0ci5jaGFyQXQoamorKyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0b3V0W2ldLnYgPSB2djtcblx0XHRcdFx0b3V0W2ldLnQgPSAndCc7XG5cdFx0XHRcdGxhc3RpID0gaTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Zm9yKGk9MDsgaTxvdXQubGVuZ3RoOyArK2kpIGlmKG91dFtpXSAhPSBudWxsICYmICduPycuaW5kZXhPZihvdXRbaV0udCk+LTEpIHtcblx0XHRteXYgPSAoZmxlbiA+MSAmJiB2IDwgMCAmJiBpPjAgJiYgb3V0W2ktMV0udiA9PT0gXCItXCIgPyAtdjp2KTtcblx0XHRvdXRbaV0udiA9IHdyaXRlX251bShvdXRbaV0udCwgb3V0W2ldLnYsIG15dik7XG5cdFx0b3V0W2ldLnQgPSAndCc7XG5cdH1cblx0dmFyIHJldHZhbCA9IFwiXCI7XG5cdGZvcihpPTA7IGkgIT09IG91dC5sZW5ndGg7ICsraSkgaWYob3V0W2ldICE9IG51bGwpIHJldHZhbCArPSBvdXRbaV0udjtcblx0cmV0dXJuIHJldHZhbDtcbn1cblxudmFyIGNmcmVnZXgyID0gL1xcWyg9fD5bPV0/fDxbPj1dPykoLT9cXGQrKD86XFwuXFxkKik/KVxcXS87XG5mdW5jdGlvbiBjaGtjb25kKHYsIHJyKSB7XG5cdGlmKHJyID09IG51bGwpIHJldHVybiBmYWxzZTtcblx0dmFyIHRocmVzaCA9IHBhcnNlRmxvYXQocnJbMl0pO1xuXHRzd2l0Y2gocnJbMV0pIHtcblx0XHRjYXNlIFwiPVwiOiAgaWYodiA9PSB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0XHRjYXNlIFwiPlwiOiAgaWYodiA+ICB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0XHRjYXNlIFwiPFwiOiAgaWYodiA8ICB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0XHRjYXNlIFwiPD5cIjogaWYodiAhPSB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0XHRjYXNlIFwiPj1cIjogaWYodiA+PSB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0XHRjYXNlIFwiPD1cIjogaWYodiA8PSB0aHJlc2gpIHJldHVybiB0cnVlOyBicmVhaztcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjaG9vc2VfZm10KGYvKjpzdHJpbmcqLywgdi8qOmFueSovKSB7XG5cdHZhciBmbXQgPSBTU0Zfc3BsaXRfZm10KGYpO1xuXHR2YXIgbCA9IGZtdC5sZW5ndGgsIGxhdCA9IGZtdFtsLTFdLmluZGV4T2YoXCJAXCIpO1xuXHRpZihsPDQgJiYgbGF0Pi0xKSAtLWw7XG5cdGlmKGZtdC5sZW5ndGggPiA0KSB0aHJvdyBuZXcgRXJyb3IoXCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHxcIiArIGZtdC5qb2luKFwifFwiKSArIFwifFwiKTtcblx0aWYodHlwZW9mIHYgIT09IFwibnVtYmVyXCIpIHJldHVybiBbNCwgZm10Lmxlbmd0aCA9PT0gNCB8fCBsYXQ+LTE/Zm10W2ZtdC5sZW5ndGgtMV06XCJAXCJdO1xuXHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdGNhc2UgMTogZm10ID0gbGF0Pi0xID8gW1wiR2VuZXJhbFwiLCBcIkdlbmVyYWxcIiwgXCJHZW5lcmFsXCIsIGZtdFswXV0gOiBbZm10WzBdLCBmbXRbMF0sIGZtdFswXSwgXCJAXCJdOyBicmVhaztcblx0XHRjYXNlIDI6IGZtdCA9IGxhdD4tMSA/IFtmbXRbMF0sIGZtdFswXSwgZm10WzBdLCBmbXRbMV1dIDogW2ZtdFswXSwgZm10WzFdLCBmbXRbMF0sIFwiQFwiXTsgYnJlYWs7XG5cdFx0Y2FzZSAzOiBmbXQgPSBsYXQ+LTEgPyBbZm10WzBdLCBmbXRbMV0sIGZtdFswXSwgZm10WzJdXSA6IFtmbXRbMF0sIGZtdFsxXSwgZm10WzJdLCBcIkBcIl07IGJyZWFrO1xuXHRcdGNhc2UgNDogYnJlYWs7XG5cdH1cblx0dmFyIGZmID0gdiA+IDAgPyBmbXRbMF0gOiB2IDwgMCA/IGZtdFsxXSA6IGZtdFsyXTtcblx0aWYoZm10WzBdLmluZGV4T2YoXCJbXCIpID09PSAtMSAmJiBmbXRbMV0uaW5kZXhPZihcIltcIikgPT09IC0xKSByZXR1cm4gW2wsIGZmXTtcblx0aWYoZm10WzBdLm1hdGNoKC9cXFtbPTw+XS8pICE9IG51bGwgfHwgZm10WzFdLm1hdGNoKC9cXFtbPTw+XS8pICE9IG51bGwpIHtcblx0XHR2YXIgbTEgPSBmbXRbMF0ubWF0Y2goY2ZyZWdleDIpO1xuXHRcdHZhciBtMiA9IGZtdFsxXS5tYXRjaChjZnJlZ2V4Mik7XG5cdFx0cmV0dXJuIGNoa2NvbmQodiwgbTEpID8gW2wsIGZtdFswXV0gOiBjaGtjb25kKHYsIG0yKSA/IFtsLCBmbXRbMV1dIDogW2wsIGZtdFttMSAhPSBudWxsICYmIG0yICE9IG51bGwgPyAyIDogMV1dO1xuXHR9XG5cdHJldHVybiBbbCwgZmZdO1xufVxuZnVuY3Rpb24gU1NGX2Zvcm1hdChmbXQvKjpzdHJpbmd8bnVtYmVyKi8sdi8qOmFueSovLG8vKjo/YW55Ki8pIHtcblx0aWYobyA9PSBudWxsKSBvID0ge307XG5cdHZhciBzZm10ID0gXCJcIjtcblx0c3dpdGNoKHR5cGVvZiBmbXQpIHtcblx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0XHRpZihmbXQgPT0gXCJtL2QveXlcIiAmJiBvLmRhdGVORikgc2ZtdCA9IG8uZGF0ZU5GO1xuXHRcdFx0ZWxzZSBzZm10ID0gZm10O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0aWYoZm10ID09IDE0ICYmIG8uZGF0ZU5GKSBzZm10ID0gby5kYXRlTkY7XG5cdFx0XHRlbHNlIHNmbXQgPSAoby50YWJsZSAhPSBudWxsID8gKG8udGFibGUvKjphbnkqLykgOiB0YWJsZV9mbXQpW2ZtdF07XG5cdFx0XHRpZihzZm10ID09IG51bGwpIHNmbXQgPSAoby50YWJsZSAmJiBvLnRhYmxlW1NTRl9kZWZhdWx0X21hcFtmbXRdXSkgfHwgdGFibGVfZm10W1NTRl9kZWZhdWx0X21hcFtmbXRdXTtcblx0XHRcdGlmKHNmbXQgPT0gbnVsbCkgc2ZtdCA9IFNTRl9kZWZhdWx0X3N0cltmbXRdIHx8IFwiR2VuZXJhbFwiO1xuXHRcdFx0YnJlYWs7XG5cdH1cblx0aWYoU1NGX2lzZ2VuZXJhbChzZm10LDApKSByZXR1cm4gU1NGX2dlbmVyYWwodiwgbyk7XG5cdGlmKHYgaW5zdGFuY2VvZiBEYXRlKSB2ID0gZGF0ZW51bV9sb2NhbCh2LCBvLmRhdGUxOTA0KTtcblx0dmFyIGYgPSBjaG9vc2VfZm10KHNmbXQsIHYpO1xuXHRpZihTU0ZfaXNnZW5lcmFsKGZbMV0pKSByZXR1cm4gU1NGX2dlbmVyYWwodiwgbyk7XG5cdGlmKHYgPT09IHRydWUpIHYgPSBcIlRSVUVcIjsgZWxzZSBpZih2ID09PSBmYWxzZSkgdiA9IFwiRkFMU0VcIjtcblx0ZWxzZSBpZih2ID09PSBcIlwiIHx8IHYgPT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cdHJldHVybiBldmFsX2ZtdChmWzFdLCB2LCBvLCBmWzBdKTtcbn1cbmZ1bmN0aW9uIFNTRl9sb2FkKGZtdC8qOnN0cmluZyovLCBpZHgvKjo/bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHRpZih0eXBlb2YgaWR4ICE9ICdudW1iZXInKSB7XG5cdFx0aWR4ID0gK2lkeCB8fCAtMTtcbi8qOjppZih0eXBlb2YgaWR4ICE9ICdudW1iZXInKSByZXR1cm4gMHgxODg7ICovXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IDB4MDE4ODsgKytpKSB7XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHRcdFx0aWYodGFibGVfZm10W2ldID09IHVuZGVmaW5lZCkgeyBpZihpZHggPCAwKSBpZHggPSBpOyBjb250aW51ZTsgfVxuXHRcdFx0aWYodGFibGVfZm10W2ldID09IGZtdCkgeyBpZHggPSBpOyBicmVhazsgfVxuXHRcdH1cbi8qOjppZih0eXBlb2YgaWR4ICE9ICdudW1iZXInKSByZXR1cm4gMHgxODg7ICovXG5cdFx0aWYoaWR4IDwgMCkgaWR4ID0gMHgxODc7XG5cdH1cbi8qOjppZih0eXBlb2YgaWR4ICE9ICdudW1iZXInKSByZXR1cm4gMHgxODg7ICovXG5cdHRhYmxlX2ZtdFtpZHhdID0gZm10O1xuXHRyZXR1cm4gaWR4O1xufVxuZnVuY3Rpb24gU1NGX2xvYWRfdGFibGUodGJsLyo6U1NGVGFibGUqLykvKjp2b2lkKi8ge1xuXHRmb3IodmFyIGk9MDsgaSE9MHgwMTg4OyArK2kpXG5cdFx0aWYodGJsW2ldICE9PSB1bmRlZmluZWQpIFNTRl9sb2FkKHRibFtpXSwgaSk7XG59XG5cbmZ1bmN0aW9uIG1ha2Vfc3NmKCkge1xuXHR0YWJsZV9mbXQgPSBTU0ZfaW5pdF90YWJsZSgpO1xufVxuXG52YXIgU1NGID0ge1xuXHRmb3JtYXQ6IFNTRl9mb3JtYXQsXG5cdGxvYWQ6IFNTRl9sb2FkLFxuXHRfdGFibGU6IHRhYmxlX2ZtdCxcblx0bG9hZF90YWJsZTogU1NGX2xvYWRfdGFibGUsXG5cdHBhcnNlX2RhdGVfY29kZTogU1NGX3BhcnNlX2RhdGVfY29kZSxcblx0aXNfZGF0ZTogZm10X2lzX2RhdGUsXG5cdGdldF90YWJsZTogZnVuY3Rpb24gZ2V0X3RhYmxlKCkgeyByZXR1cm4gU1NGLl90YWJsZSA9IHRhYmxlX2ZtdDsgfVxufTtcblxudmFyIFNTRkltcGxpY2l0Lyp7W251bWJlcl06c3RyaW5nfSovID0gKHtcblx0XCI1XCI6ICdcIiRcIiMsIyMwXyk7XFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHRcIjZcIjogJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI3XCI6ICdcIiRcIiMsIyMwLjAwXyk7XFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcIjhcIjogJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCIyM1wiOiAnR2VuZXJhbCcsIFwiMjRcIjogJ0dlbmVyYWwnLCBcIjI1XCI6ICdHZW5lcmFsJywgXCIyNlwiOiAnR2VuZXJhbCcsXG5cdFwiMjdcIjogJ20vZC95eScsIFwiMjhcIjogJ20vZC95eScsIFwiMjlcIjogJ20vZC95eScsIFwiMzBcIjogJ20vZC95eScsIFwiMzFcIjogJ20vZC95eScsXG5cdFwiMzJcIjogJ2g6bW06c3MnLCBcIjMzXCI6ICdoOm1tOnNzJywgXCIzNFwiOiAnaDptbTpzcycsIFwiMzVcIjogJ2g6bW06c3MnLFxuXHRcIjM2XCI6ICdtL2QveXknLFxuXHRcIjQxXCI6ICdfKCogIywjIzBfKTtfKCogXFwoIywjIzBcXCk7XygqIFwiLVwiXyk7XyhAXyknLFxuXHRcIjQyXCI6ICdfKFwiJFwiKiAjLCMjMF8pO18oXCIkXCIqIFxcKCMsIyMwXFwpO18oXCIkXCIqIFwiLVwiXyk7XyhAXyknLFxuXHRcIjQzXCI6ICdfKCogIywjIzAuMDBfKTtfKCogXFwoIywjIzAuMDBcXCk7XygqIFwiLVwiPz9fKTtfKEBfKScsXG5cdFwiNDRcIjogJ18oXCIkXCIqICMsIyMwLjAwXyk7XyhcIiRcIiogXFwoIywjIzAuMDBcXCk7XyhcIiRcIiogXCItXCI/P18pO18oQF8pJyxcblx0XCI1MFwiOiAnbS9kL3l5JywgXCI1MVwiOiAnbS9kL3l5JywgXCI1MlwiOiAnbS9kL3l5JywgXCI1M1wiOiAnbS9kL3l5JywgXCI1NFwiOiAnbS9kL3l5Jyxcblx0XCI1NVwiOiAnbS9kL3l5JywgXCI1NlwiOiAnbS9kL3l5JywgXCI1N1wiOiAnbS9kL3l5JywgXCI1OFwiOiAnbS9kL3l5Jyxcblx0XCI1OVwiOiAnMCcsXG5cdFwiNjBcIjogJzAuMDAnLFxuXHRcIjYxXCI6ICcjLCMjMCcsXG5cdFwiNjJcIjogJyMsIyMwLjAwJyxcblx0XCI2M1wiOiAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI2NFwiOiAnXCIkXCIjLCMjMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHRcIjY1XCI6ICdcIiRcIiMsIyMwLjAwXyk7XFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcIjY2XCI6ICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFwiNjdcIjogJzAlJyxcblx0XCI2OFwiOiAnMC4wMCUnLFxuXHRcIjY5XCI6ICcjID8vPycsXG5cdFwiNzBcIjogJyMgPz8vPz8nLFxuXHRcIjcxXCI6ICdtL2QveXknLFxuXHRcIjcyXCI6ICdtL2QveXknLFxuXHRcIjczXCI6ICdkLW1tbS15eScsXG5cdFwiNzRcIjogJ2QtbW1tJyxcblx0XCI3NVwiOiAnbW1tLXl5Jyxcblx0XCI3NlwiOiAnaDptbScsXG5cdFwiNzdcIjogJ2g6bW06c3MnLFxuXHRcIjc4XCI6ICdtL2QveXkgaDptbScsXG5cdFwiNzlcIjogJ21tOnNzJyxcblx0XCI4MFwiOiAnW2hdOm1tOnNzJyxcblx0XCI4MVwiOiAnbW1zcy4wJ1xufS8qOmFueSovKTtcblxuLyogZGF0ZU5GIHBhcnNlIFRPRE86IG1vdmUgdG8gU1NGICovXG52YXIgZGF0ZU5GcmVnZXggPSAvW2REXSt8W21NXSt8W3lZZUVdK3xbSGhdK3xbU3NdKy9nO1xuZnVuY3Rpb24gZGF0ZU5GX3JlZ2V4KGRhdGVORi8qOnN0cmluZ3xudW1iZXIqLykvKjpSZWdFeHAqLyB7XG5cdHZhciBmbXQgPSB0eXBlb2YgZGF0ZU5GID09IFwibnVtYmVyXCIgPyB0YWJsZV9mbXRbZGF0ZU5GXSA6IGRhdGVORjtcblx0Zm10ID0gZm10LnJlcGxhY2UoZGF0ZU5GcmVnZXgsIFwiKFxcXFxkKylcIik7XG5cdHJldHVybiBuZXcgUmVnRXhwKFwiXlwiICsgZm10ICsgXCIkXCIpO1xufVxuZnVuY3Rpb24gZGF0ZU5GX2ZpeChzdHIvKjpzdHJpbmcqLywgZGF0ZU5GLyo6c3RyaW5nKi8sIG1hdGNoLyo6QXJyYXk8c3RyaW5nPiovKS8qOnN0cmluZyovIHtcblx0dmFyIFkgPSAtMSwgbSA9IC0xLCBkID0gLTEsIEggPSAtMSwgTSA9IC0xLCBTID0gLTE7XG5cdChkYXRlTkYubWF0Y2goZGF0ZU5GcmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuLCBpKSB7XG5cdFx0dmFyIHYgPSBwYXJzZUludChtYXRjaFtpKzFdLCAxMCk7XG5cdFx0c3dpdGNoKG4udG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkpIHtcblx0XHRcdGNhc2UgJ3knOiBZID0gdjsgYnJlYWs7IGNhc2UgJ2QnOiBkID0gdjsgYnJlYWs7XG5cdFx0XHRjYXNlICdoJzogSCA9IHY7IGJyZWFrOyBjYXNlICdzJzogUyA9IHY7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbSc6IGlmKEggPj0gMCkgTSA9IHY7IGVsc2UgbSA9IHY7IGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cdGlmKFMgPj0gMCAmJiBNID09IC0xICYmIG0gPj0gMCkgeyBNID0gbTsgbSA9IC0xOyB9XG5cdHZhciBkYXRlc3RyID0gKChcIlwiICsgKFk+PTA/WTogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKSkuc2xpY2UoLTQpICsgXCItXCIgKyAoXCIwMFwiICsgKG0+PTE/bToxKSkuc2xpY2UoLTIpICsgXCItXCIgKyAoXCIwMFwiICsgKGQ+PTE/ZDoxKSkuc2xpY2UoLTIpKTtcblx0aWYoZGF0ZXN0ci5sZW5ndGggPT0gNykgZGF0ZXN0ciA9IFwiMFwiICsgZGF0ZXN0cjtcblx0aWYoZGF0ZXN0ci5sZW5ndGggPT0gOCkgZGF0ZXN0ciA9IFwiMjBcIiArIGRhdGVzdHI7XG5cdHZhciB0aW1lc3RyID0gKChcIjAwXCIgKyAoSD49MD9IOjApKS5zbGljZSgtMikgKyBcIjpcIiArIChcIjAwXCIgKyAoTT49MD9NOjApKS5zbGljZSgtMikgKyBcIjpcIiArIChcIjAwXCIgKyAoUz49MD9TOjApKS5zbGljZSgtMikpO1xuXHRpZihIID09IC0xICYmIE0gPT0gLTEgJiYgUyA9PSAtMSkgcmV0dXJuIGRhdGVzdHI7XG5cdGlmKFkgPT0gLTEgJiYgbSA9PSAtMSAmJiBkID09IC0xKSByZXR1cm4gdGltZXN0cjtcblx0cmV0dXJuIGRhdGVzdHIgKyBcIlRcIiArIHRpbWVzdHI7XG59XG5cbi8qOjpcbmRlY2xhcmUgdmFyIFJlYWRTaGlmdDphbnk7XG5kZWNsYXJlIHZhciBDaGVja0ZpZWxkOmFueTtcbmRlY2xhcmUgdmFyIHByZXBfYmxvYjphbnk7XG5kZWNsYXJlIHZhciBfX3JlYWRVSW50MzJMRTphbnk7XG5kZWNsYXJlIHZhciBfX3JlYWRJbnQzMkxFOmFueTtcbmRlY2xhcmUgdmFyIF9fdG9CdWZmZXI6YW55O1xuZGVjbGFyZSB2YXIgX191dGYxNmxlOmFueTtcbmRlY2xhcmUgdmFyIGJjb25jYXQ6YW55O1xuZGVjbGFyZSB2YXIgczJhOmFueTtcbmRlY2xhcmUgdmFyIGNocjA6YW55O1xuZGVjbGFyZSB2YXIgY2hyMTphbnk7XG5kZWNsYXJlIHZhciBoYXNfYnVmOmJvb2xlYW47XG5kZWNsYXJlIHZhciBuZXdfYnVmOmFueTtcbmRlY2xhcmUgdmFyIG5ld19yYXdfYnVmOmFueTtcbmRlY2xhcmUgdmFyIG5ld191bnNhZmVfYnVmOmFueTtcbmRlY2xhcmUgdmFyIEJ1ZmZlcl9mcm9tOmFueTtcbiovXG4vKiBjZmIuanMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLyogdmltOiBzZXQgdHM9MjogKi9cbi8qanNoaW50IGVxbnVsbDp0cnVlICovXG4vKmV4cG9ydGVkIENGQiAqL1xuLypnbG9iYWwgVWludDhBcnJheTpmYWxzZSwgVWludDE2QXJyYXk6ZmFsc2UgKi9cblxuLyo6OlxudHlwZSBTZWN0b3JFbnRyeSA9IHtcblx0bmFtZT86c3RyaW5nO1xuXHRub2Rlcz86QXJyYXk8bnVtYmVyPjtcblx0ZGF0YTpSYXdCeXRlcztcbn07XG50eXBlIFNlY3Rvckxpc3QgPSB7XG5cdFtrOnN0cmluZ3xudW1iZXJdOlNlY3RvckVudHJ5O1xuXHRuYW1lOj9zdHJpbmc7XG5cdGZhdF9hZGRyczpBcnJheTxudW1iZXI+O1xuXHRzc3o6bnVtYmVyO1xufVxudHlwZSBDRkJGaWxlcyA9IHtbbjpzdHJpbmddOkNGQkVudHJ5fTtcbiovXG4vKiBjcmMzMi5qcyAoQykgMjAxNC1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKiB2aW06IHNldCB0cz0yOiAqL1xuLypleHBvcnRlZCBDUkMzMiAqL1xudmFyIENSQzMyID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcbnZhciBDUkMzMiA9IHt9O1xuQ1JDMzIudmVyc2lvbiA9ICcxLjIuMCc7XG4vKiBzZWUgcGVyZi9jcmMzMnRhYmxlLmpzICovXG4vKmdsb2JhbCBJbnQzMkFycmF5ICovXG5mdW5jdGlvbiBzaWduZWRfY3JjX3RhYmxlKCkvKjphbnkqLyB7XG5cdHZhciBjID0gMCwgdGFibGUvKjpBcnJheTxudW1iZXI+Ki8gPSBuZXcgQXJyYXkoMjU2KTtcblxuXHRmb3IodmFyIG4gPTA7IG4gIT0gMjU2OyArK24pe1xuXHRcdGMgPSBuO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdHRhYmxlW25dID0gYztcblx0fVxuXG5cdHJldHVybiB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgSW50MzJBcnJheSh0YWJsZSkgOiB0YWJsZTtcbn1cblxudmFyIFQwID0gc2lnbmVkX2NyY190YWJsZSgpO1xuZnVuY3Rpb24gc2xpY2VfYnlfMTZfdGFibGVzKFQpIHtcblx0dmFyIGMgPSAwLCB2ID0gMCwgbiA9IDAsIHRhYmxlLyo6QXJyYXk8bnVtYmVyPiovID0gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gbmV3IEludDMyQXJyYXkoNDA5NikgOiBuZXcgQXJyYXkoNDA5NikgO1xuXG5cdGZvcihuID0gMDsgbiAhPSAyNTY7ICsrbikgdGFibGVbbl0gPSBUW25dO1xuXHRmb3IobiA9IDA7IG4gIT0gMjU2OyArK24pIHtcblx0XHR2ID0gVFtuXTtcblx0XHRmb3IoYyA9IDI1NiArIG47IGMgPCA0MDk2OyBjICs9IDI1NikgdiA9IHRhYmxlW2NdID0gKHYgPj4+IDgpIF4gVFt2ICYgMHhGRl07XG5cdH1cblx0dmFyIG91dCA9IFtdO1xuXHRmb3IobiA9IDE7IG4gIT0gMTY7ICsrbikgb3V0W24gLSAxXSA9IHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IHRhYmxlLnN1YmFycmF5KG4gKiAyNTYsIG4gKiAyNTYgKyAyNTYpIDogdGFibGUuc2xpY2UobiAqIDI1NiwgbiAqIDI1NiArIDI1Nik7XG5cdHJldHVybiBvdXQ7XG59XG52YXIgVFQgPSBzbGljZV9ieV8xNl90YWJsZXMoVDApO1xudmFyIFQxID0gVFRbMF0sICBUMiA9IFRUWzFdLCAgVDMgPSBUVFsyXSwgIFQ0ID0gVFRbM10sICBUNSA9IFRUWzRdO1xudmFyIFQ2ID0gVFRbNV0sICBUNyA9IFRUWzZdLCAgVDggPSBUVFs3XSwgIFQ5ID0gVFRbOF0sICBUYSA9IFRUWzldO1xudmFyIFRiID0gVFRbMTBdLCBUYyA9IFRUWzExXSwgVGQgPSBUVFsxMl0sIFRlID0gVFRbMTNdLCBUZiA9IFRUWzE0XTtcbmZ1bmN0aW9uIGNyYzMyX2JzdHIoYnN0ci8qOnN0cmluZyovLCBzZWVkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgQyA9IHNlZWQvKjo6ID8gMCA6IDAgKi8gXiAtMTtcblx0Zm9yKHZhciBpID0gMCwgTCA9IGJzdHIubGVuZ3RoOyBpIDwgTDspIEMgPSAoQz4+PjgpIF4gVDBbKENeYnN0ci5jaGFyQ29kZUF0KGkrKykpJjB4RkZdO1xuXHRyZXR1cm4gfkM7XG59XG5cbmZ1bmN0aW9uIGNyYzMyX2J1ZihCLyo6VWludDhBcnJheXxBcnJheTxudW1iZXI+Ki8sIHNlZWQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBDID0gc2VlZC8qOjogPyAwIDogMCAqLyBeIC0xLCBMID0gQi5sZW5ndGggLSAxNSwgaSA9IDA7XG5cdGZvcig7IGkgPCBMOykgQyA9XG5cdFx0VGZbQltpKytdIF4gKEMgJiAyNTUpXSBeXG5cdFx0VGVbQltpKytdIF4gKChDID4+IDgpICYgMjU1KV0gXlxuXHRcdFRkW0JbaSsrXSBeICgoQyA+PiAxNikgJiAyNTUpXSBeXG5cdFx0VGNbQltpKytdIF4gKEMgPj4+IDI0KV0gXlxuXHRcdFRiW0JbaSsrXV0gXiBUYVtCW2krK11dIF4gVDlbQltpKytdXSBeIFQ4W0JbaSsrXV0gXlxuXHRcdFQ3W0JbaSsrXV0gXiBUNltCW2krK11dIF4gVDVbQltpKytdXSBeIFQ0W0JbaSsrXV0gXlxuXHRcdFQzW0JbaSsrXV0gXiBUMltCW2krK11dIF4gVDFbQltpKytdXSBeIFQwW0JbaSsrXV07XG5cdEwgKz0gMTU7XG5cdHdoaWxlKGkgPCBMKSBDID0gKEM+Pj44KSBeIFQwWyhDXkJbaSsrXSkmMHhGRl07XG5cdHJldHVybiB+Qztcbn1cblxuZnVuY3Rpb24gY3JjMzJfc3RyKHN0ci8qOnN0cmluZyovLCBzZWVkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgQyA9IHNlZWQgXiAtMTtcblx0Zm9yKHZhciBpID0gMCwgTCA9IHN0ci5sZW5ndGgsIGMgPSAwLCBkID0gMDsgaSA8IEw7KSB7XG5cdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYoYyA8IDB4ODApIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKENeYykmMHhGRl07XG5cdFx0fSBlbHNlIGlmKGMgPCAweDgwMCkge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxOTJ8KChjPj42KSYzMSkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChjJjYzKSkpJjB4RkZdO1xuXHRcdH0gZWxzZSBpZihjID49IDB4RDgwMCAmJiBjIDwgMHhFMDAwKSB7XG5cdFx0XHRjID0gKGMmMTAyMykrNjQ7IGQgPSBzdHIuY2hhckNvZGVBdChpKyspJjEwMjM7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDI0MHwoKGM+PjgpJjcpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGM+PjIpJjYzKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChkPj42KSYxNSl8KChjJjMpPDw0KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGQmNjMpKSkmMHhGRl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMjI0fCgoYz4+MTIpJjE1KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChjPj42KSY2MykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChjJjYzKSkpJjB4RkZdO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gfkM7XG59XG5DUkMzMi50YWJsZSA9IFQwO1xuQ1JDMzIuYnN0ciA9IGNyYzMyX2JzdHI7XG5DUkMzMi5idWYgPSBjcmMzMl9idWY7XG5DUkMzMi5zdHIgPSBjcmMzMl9zdHI7XG5yZXR1cm4gQ1JDMzI7XG59KSgpO1xuLyogW01TLUNGQl0gdjIwMTcxMjAxICovXG52YXIgQ0ZCID0gLyojX19QVVJFX18qLyhmdW5jdGlvbiBfQ0ZCKCl7XG52YXIgZXhwb3J0cyA9IHt9O1xuZXhwb3J0cy52ZXJzaW9uID0gJzEuMi4xJztcbi8qIFtNUy1DRkJdIDIuNi40ICovXG5mdW5jdGlvbiBuYW1lY21wKGwvKjpzdHJpbmcqLywgci8qOnN0cmluZyovKS8qOm51bWJlciovIHtcblx0dmFyIEwgPSBsLnNwbGl0KFwiL1wiKSwgUiA9IHIuc3BsaXQoXCIvXCIpO1xuXHRmb3IodmFyIGkgPSAwLCBjID0gMCwgWiA9IE1hdGgubWluKEwubGVuZ3RoLCBSLmxlbmd0aCk7IGkgPCBaOyArK2kpIHtcblx0XHRpZigoYyA9IExbaV0ubGVuZ3RoIC0gUltpXS5sZW5ndGgpKSByZXR1cm4gYztcblx0XHRpZihMW2ldICE9IFJbaV0pIHJldHVybiBMW2ldIDwgUltpXSA/IC0xIDogMTtcblx0fVxuXHRyZXR1cm4gTC5sZW5ndGggLSBSLmxlbmd0aDtcbn1cbmZ1bmN0aW9uIGRpcm5hbWUocC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYocC5jaGFyQXQocC5sZW5ndGggLSAxKSA9PSBcIi9cIikgcmV0dXJuIChwLnNsaWNlKDAsLTEpLmluZGV4T2YoXCIvXCIpID09PSAtMSkgPyBwIDogZGlybmFtZShwLnNsaWNlKDAsIC0xKSk7XG5cdHZhciBjID0gcC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdHJldHVybiAoYyA9PT0gLTEpID8gcCA6IHAuc2xpY2UoMCwgYysxKTtcbn1cblxuZnVuY3Rpb24gZmlsZW5hbWUocC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYocC5jaGFyQXQocC5sZW5ndGggLSAxKSA9PSBcIi9cIikgcmV0dXJuIGZpbGVuYW1lKHAuc2xpY2UoMCwgLTEpKTtcblx0dmFyIGMgPSBwLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0cmV0dXJuIChjID09PSAtMSkgPyBwIDogcC5zbGljZShjKzEpO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIERPUyBEYXRlIGZvcm1hdDpcbiAgIGhpZ2h8WVlZWVlZWW0ubW1tZGRkZGQuSEhISEhNTU0uTU1NU1NTU1N8bG93XG4gICBhZGQgMTk4MCB0byBzdG9yZWQgeWVhclxuICAgc3RvcmVkIHNlY29uZCBzaG91bGQgYmUgZG91YmxlZFxuKi9cblxuLyogd3JpdGUgSlMgZGF0ZSB0byBidWYgYXMgYSBET1MgZGF0ZSAqL1xuZnVuY3Rpb24gd3JpdGVfZG9zX2RhdGUoYnVmLyo6Q0ZCbG9iKi8sIGRhdGUvKjpEYXRlfHN0cmluZyovKSB7XG5cdGlmKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG5cdHZhciBobXMvKjpudW1iZXIqLyA9IGRhdGUuZ2V0SG91cnMoKTtcblx0aG1zID0gaG1zIDw8IDYgfCBkYXRlLmdldE1pbnV0ZXMoKTtcblx0aG1zID0gaG1zIDw8IDUgfCAoZGF0ZS5nZXRTZWNvbmRzKCk+Pj4xKTtcblx0YnVmLndyaXRlX3NoaWZ0KDIsIGhtcyk7XG5cdHZhciB5bWQvKjpudW1iZXIqLyA9IChkYXRlLmdldEZ1bGxZZWFyKCkgLSAxOTgwKTtcblx0eW1kID0geW1kIDw8IDQgfCAoZGF0ZS5nZXRNb250aCgpKzEpO1xuXHR5bWQgPSB5bWQgPDwgNSB8IGRhdGUuZ2V0RGF0ZSgpO1xuXHRidWYud3JpdGVfc2hpZnQoMiwgeW1kKTtcbn1cblxuLyogcmVhZCBmb3VyIGJ5dGVzIGZyb20gYnVmIGFuZCBpbnRlcnByZXQgYXMgYSBET1MgZGF0ZSAqL1xuZnVuY3Rpb24gcGFyc2VfZG9zX2RhdGUoYnVmLyo6Q0ZCbG9iKi8pLyo6RGF0ZSovIHtcblx0dmFyIGhtcyA9IGJ1Zi5yZWFkX3NoaWZ0KDIpICYgMHhGRkZGO1xuXHR2YXIgeW1kID0gYnVmLnJlYWRfc2hpZnQoMikgJiAweEZGRkY7XG5cdHZhciB2YWwgPSBuZXcgRGF0ZSgpO1xuXHR2YXIgZCA9IHltZCAmIDB4MUY7IHltZCA+Pj49IDU7XG5cdHZhciBtID0geW1kICYgMHgwRjsgeW1kID4+Pj0gNDtcblx0dmFsLnNldE1pbGxpc2Vjb25kcygwKTtcblx0dmFsLnNldEZ1bGxZZWFyKHltZCArIDE5ODApO1xuXHR2YWwuc2V0TW9udGgobS0xKTtcblx0dmFsLnNldERhdGUoZCk7XG5cdHZhciBTID0gaG1zICYgMHgxRjsgaG1zID4+Pj0gNTtcblx0dmFyIE0gPSBobXMgJiAweDNGOyBobXMgPj4+PSA2O1xuXHR2YWwuc2V0SG91cnMoaG1zKTtcblx0dmFsLnNldE1pbnV0ZXMoTSk7XG5cdHZhbC5zZXRTZWNvbmRzKFM8PDEpO1xuXHRyZXR1cm4gdmFsO1xufVxuZnVuY3Rpb24gcGFyc2VfZXh0cmFfZmllbGQoYmxvYi8qOkNGQmxvYiovKS8qOmFueSovIHtcblx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXHR2YXIgbyA9IC8qOjooKi97fS8qOjogOmFueSkqLztcblx0dmFyIGZsYWdzID0gMDtcblx0d2hpbGUoYmxvYi5sIDw9IGJsb2IubGVuZ3RoIC0gNCkge1xuXHRcdHZhciB0eXBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdHZhciBzeiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgdGd0ID0gYmxvYi5sICsgc3o7XG5cdFx0dmFyIHAgPSB7fTtcblx0XHRzd2l0Y2godHlwZSkge1xuXHRcdFx0LyogVU5JWC1zdHlsZSBUaW1lc3RhbXBzICovXG5cdFx0XHRjYXNlIDB4NTQ1NToge1xuXHRcdFx0XHRmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdFx0aWYoZmxhZ3MgJiAxKSBwLm10aW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFx0XHQvKiBmb3Igc29tZSByZWFzb24sIENEIGZsYWcgY29ycmVzcG9uZHMgdG8gTEZIICovXG5cdFx0XHRcdGlmKHN6ID4gNSkge1xuXHRcdFx0XHRcdGlmKGZsYWdzICYgMikgcC5hdGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRcdFx0XHRpZihmbGFncyAmIDQpIHAuY3RpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYocC5tdGltZSkgcC5tdCA9IG5ldyBEYXRlKHAubXRpbWUqMTAwMCk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0YmxvYi5sID0gdGd0O1xuXHRcdG9bdHlwZV0gPSBwO1xuXHR9XG5cdHJldHVybiBvO1xufVxudmFyIGZzLyo6OiA9IHJlcXVpcmUoJ2ZzJyk7ICovO1xuZnVuY3Rpb24gZ2V0X2ZzKCkgeyByZXR1cm4gZnMgfHwgKGZzID0ge30pOyB9XG5mdW5jdGlvbiBwYXJzZShmaWxlLyo6UmF3Qnl0ZXMqLywgb3B0aW9ucy8qOkNGQlJlYWRPcHRzKi8pLyo6Q0ZCQ29udGFpbmVyKi8ge1xuaWYoZmlsZVswXSA9PSAweDUwICYmIGZpbGVbMV0gPT0gMHg0YikgcmV0dXJuIHBhcnNlX3ppcChmaWxlLCBvcHRpb25zKTtcbmlmKChmaWxlWzBdIHwgMHgyMCkgPT0gMHg2ZCAmJiAoZmlsZVsxXXwweDIwKSA9PSAweDY5KSByZXR1cm4gcGFyc2VfbWFkKGZpbGUsIG9wdGlvbnMpO1xuaWYoZmlsZS5sZW5ndGggPCA1MTIpIHRocm93IG5ldyBFcnJvcihcIkNGQiBmaWxlIHNpemUgXCIgKyBmaWxlLmxlbmd0aCArIFwiIDwgNTEyXCIpO1xudmFyIG12ZXIgPSAzO1xudmFyIHNzeiA9IDUxMjtcbnZhciBubWZzID0gMDsgLy8gbnVtYmVyIG9mIG1pbmkgRkFUIHNlY3RvcnNcbnZhciBkaWZhdF9zZWNfY250ID0gMDtcbnZhciBkaXJfc3RhcnQgPSAwO1xudmFyIG1pbmlmYXRfc3RhcnQgPSAwO1xudmFyIGRpZmF0X3N0YXJ0ID0gMDtcblxudmFyIGZhdF9hZGRycy8qOkFycmF5PG51bWJlcj4qLyA9IFtdOyAvLyBsb2NhdGlvbnMgb2YgRkFUIHNlY3RvcnNcblxuLyogW01TLUNGQl0gMi4yIENvbXBvdW5kIEZpbGUgSGVhZGVyICovXG52YXIgYmxvYi8qOkNGQmxvYiovID0gLyo6OigqL2ZpbGUuc2xpY2UoMCw1MTIpLyo6OiA6YW55KSovO1xucHJlcF9ibG9iKGJsb2IsIDApO1xuXG4vKiBtYWpvciB2ZXJzaW9uICovXG52YXIgbXYgPSBjaGVja19nZXRfbXZlcihibG9iKTtcbm12ZXIgPSBtdlswXTtcbnN3aXRjaChtdmVyKSB7XG5cdGNhc2UgMzogc3N6ID0gNTEyOyBicmVhazsgY2FzZSA0OiBzc3ogPSA0MDk2OyBicmVhaztcblx0Y2FzZSAwOiBpZihtdlsxXSA9PSAwKSByZXR1cm4gcGFyc2VfemlwKGZpbGUsIG9wdGlvbnMpO1xuXHQvKiBmYWxscyB0aHJvdWdoICovXG5cdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIk1ham9yIFZlcnNpb246IEV4cGVjdGVkIDMgb3IgNCBzYXcgXCIgKyBtdmVyKTtcbn1cblxuLyogcmVwcm9jZXNzIGhlYWRlciAqL1xuaWYoc3N6ICE9PSA1MTIpIHsgYmxvYiA9IC8qOjooKi9maWxlLnNsaWNlKDAsc3N6KS8qOjogOmFueSkqLzsgcHJlcF9ibG9iKGJsb2IsIDI4IC8qIGJsb2IubCAqLyk7IH1cbi8qIFNhdmUgaGVhZGVyIGZvciBmaW5hbCBvYmplY3QgKi9cbnZhciBoZWFkZXIvKjpSYXdCeXRlcyovID0gZmlsZS5zbGljZSgwLHNzeik7XG5cbmNoZWNrX3NoaWZ0cyhibG9iLCBtdmVyKTtcblxuLy8gTnVtYmVyIG9mIERpcmVjdG9yeSBTZWN0b3JzXG52YXIgZGlyX2NudC8qOm51bWJlciovID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5pZihtdmVyID09PSAzICYmIGRpcl9jbnQgIT09IDApIHRocm93IG5ldyBFcnJvcignIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcgJyArIGRpcl9jbnQpO1xuXG4vLyBOdW1iZXIgb2YgRkFUIFNlY3RvcnNcbmJsb2IubCArPSA0O1xuXG4vLyBGaXJzdCBEaXJlY3RvcnkgU2VjdG9yIExvY2F0aW9uXG5kaXJfc3RhcnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gVHJhbnNhY3Rpb24gU2lnbmF0dXJlXG5ibG9iLmwgKz0gNDtcblxuLy8gTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemVcbmJsb2IuY2hrKCcwMDEwMDAwMCcsICdNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZTogJyk7XG5cbi8vIEZpcnN0IE1pbmkgRkFUIFNlY3RvciBMb2NhdGlvblxubWluaWZhdF9zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBOdW1iZXIgb2YgTWluaSBGQVQgU2VjdG9yc1xubm1mcyA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBGaXJzdCBESUZBVCBzZWN0b3IgbG9jYXRpb25cbmRpZmF0X3N0YXJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIE51bWJlciBvZiBESUZBVCBTZWN0b3JzXG5kaWZhdF9zZWNfY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIEdyYWIgRkFUIFNlY3RvciBMb2NhdGlvbnNcbmZvcih2YXIgcSA9IC0xLCBqID0gMDsgaiA8IDEwOTsgKytqKSB7IC8qIDEwOSA9ICg1MTIgLSBibG9iLmwpPj4+MjsgKi9cblx0cSA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXHRpZihxPDApIGJyZWFrO1xuXHRmYXRfYWRkcnNbal0gPSBxO1xufVxuXG4vKiogQnJlYWsgdGhlIGZpbGUgdXAgaW50byBzZWN0b3JzICovXG52YXIgc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovID0gc2VjdG9yaWZ5KGZpbGUsIHNzeik7XG5cbnNsZXV0aF9mYXQoZGlmYXRfc3RhcnQsIGRpZmF0X3NlY19jbnQsIHNlY3RvcnMsIHNzeiwgZmF0X2FkZHJzKTtcblxuLyoqIENoYWlucyAqL1xudmFyIHNlY3Rvcl9saXN0Lyo6U2VjdG9yTGlzdCovID0gbWFrZV9zZWN0b3JfbGlzdChzZWN0b3JzLCBkaXJfc3RhcnQsIGZhdF9hZGRycywgc3N6KTtcblxuc2VjdG9yX2xpc3RbZGlyX3N0YXJ0XS5uYW1lID0gXCIhRGlyZWN0b3J5XCI7XG5pZihubWZzID4gMCAmJiBtaW5pZmF0X3N0YXJ0ICE9PSBFTkRPRkNIQUlOKSBzZWN0b3JfbGlzdFttaW5pZmF0X3N0YXJ0XS5uYW1lID0gXCIhTWluaUZBVFwiO1xuc2VjdG9yX2xpc3RbZmF0X2FkZHJzWzBdXS5uYW1lID0gXCIhRkFUXCI7XG5zZWN0b3JfbGlzdC5mYXRfYWRkcnMgPSBmYXRfYWRkcnM7XG5zZWN0b3JfbGlzdC5zc3ogPSBzc3o7XG5cbi8qIFtNUy1DRkJdIDIuNi4xIENvbXBvdW5kIEZpbGUgRGlyZWN0b3J5IEVudHJ5ICovXG52YXIgZmlsZXMvKjpDRkJGaWxlcyovID0ge30sIFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIEZpbGVJbmRleC8qOkNGQkZpbGVJbmRleCovID0gW10sIEZ1bGxQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xucmVhZF9kaXJlY3RvcnkoZGlyX3N0YXJ0LCBzZWN0b3JfbGlzdCwgc2VjdG9ycywgUGF0aHMsIG5tZnMsIGZpbGVzLCBGaWxlSW5kZXgsIG1pbmlmYXRfc3RhcnQpO1xuXG5idWlsZF9mdWxsX3BhdGhzKEZpbGVJbmRleCwgRnVsbFBhdGhzLCBQYXRocyk7XG5QYXRocy5zaGlmdCgpO1xuXG52YXIgbyA9IHtcblx0RmlsZUluZGV4OiBGaWxlSW5kZXgsXG5cdEZ1bGxQYXRoczogRnVsbFBhdGhzXG59O1xuXG4vLyAkRmxvd0lnbm9yZVxuaWYob3B0aW9ucyAmJiBvcHRpb25zLnJhdykgby5yYXcgPSB7aGVhZGVyOiBoZWFkZXIsIHNlY3RvcnM6IHNlY3RvcnN9O1xucmV0dXJuIG87XG59IC8vIHBhcnNlXG5cbi8qIFtNUy1DRkJdIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAtLSByZWFkIHVwIHRvIG1ham9yIHZlcnNpb24gKi9cbmZ1bmN0aW9uIGNoZWNrX2dldF9tdmVyKGJsb2IvKjpDRkJsb2IqLykvKjpbbnVtYmVyLCBudW1iZXJdKi8ge1xuXHRpZihibG9iW2Jsb2IubF0gPT0gMHg1MCAmJiBibG9iW2Jsb2IubCArIDFdID09IDB4NGIpIHJldHVybiBbMCwgMF07XG5cdC8vIGhlYWRlciBzaWduYXR1cmUgOFxuXHRibG9iLmNoayhIRUFERVJfU0lHTkFUVVJFLCAnSGVhZGVyIFNpZ25hdHVyZTogJyk7XG5cblx0Ly8gY2xzaWQgMTZcblx0Ly9ibG9iLmNoayhIRUFERVJfQ0xTSUQsICdDTFNJRDogJyk7XG5cdGJsb2IubCArPSAxNjtcblxuXHQvLyBtaW5vciB2ZXJzaW9uIDJcblx0dmFyIG12ZXIvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCgyLCAndScpO1xuXG5cdHJldHVybiBbYmxvYi5yZWFkX3NoaWZ0KDIsJ3UnKSwgbXZlcl07XG59XG5mdW5jdGlvbiBjaGVja19zaGlmdHMoYmxvYi8qOkNGQmxvYiovLCBtdmVyLyo6bnVtYmVyKi8pLyo6dm9pZCovIHtcblx0dmFyIHNoaWZ0ID0gMHgwOTtcblxuXHQvLyBCeXRlIE9yZGVyXG5cdC8vYmxvYi5jaGsoJ2ZlZmYnLCAnQnl0ZSBPcmRlcjogJyk7IC8vIG5vdGU6IHNvbWUgd3JpdGVycyBwdXQgMHhmZmZmXG5cdGJsb2IubCArPSAyO1xuXG5cdC8vIFNlY3RvciBTaGlmdFxuXHRzd2l0Y2goKHNoaWZ0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpKSkge1xuXHRcdGNhc2UgMHgwOTogaWYobXZlciAhPSAzKSB0aHJvdyBuZXcgRXJyb3IoJ1NlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBzYXcgJyArIHNoaWZ0KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBjOiBpZihtdmVyICE9IDQpIHRocm93IG5ldyBFcnJvcignU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBzYXcgJyArIHNoaWZ0KTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgb3IgMTIgc2F3ICcgKyBzaGlmdCk7XG5cdH1cblxuXHQvLyBNaW5pIFNlY3RvciBTaGlmdFxuXHRibG9iLmNoaygnMDYwMCcsICdNaW5pIFNlY3RvciBTaGlmdDogJyk7XG5cblx0Ly8gUmVzZXJ2ZWRcblx0YmxvYi5jaGsoJzAwMDAwMDAwMDAwMCcsICdSZXNlcnZlZDogJyk7XG59XG5cbi8qKiBCcmVhayB0aGUgZmlsZSB1cCBpbnRvIHNlY3RvcnMgKi9cbmZ1bmN0aW9uIHNlY3RvcmlmeShmaWxlLyo6UmF3Qnl0ZXMqLywgc3N6Lyo6bnVtYmVyKi8pLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8ge1xuXHR2YXIgbnNlY3RvcnMgPSBNYXRoLmNlaWwoZmlsZS5sZW5ndGgvc3N6KS0xO1xuXHR2YXIgc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovID0gW107XG5cdGZvcih2YXIgaT0xOyBpIDwgbnNlY3RvcnM7ICsraSkgc2VjdG9yc1tpLTFdID0gZmlsZS5zbGljZShpKnNzeiwoaSsxKSpzc3opO1xuXHRzZWN0b3JzW25zZWN0b3JzLTFdID0gZmlsZS5zbGljZShuc2VjdG9ycypzc3opO1xuXHRyZXR1cm4gc2VjdG9ycztcbn1cblxuLyogW01TLUNGQl0gMi42LjQgUmVkLUJsYWNrIFRyZWUgKi9cbmZ1bmN0aW9uIGJ1aWxkX2Z1bGxfcGF0aHMoRkkvKjpDRkJGaWxlSW5kZXgqLywgRlAvKjpBcnJheTxzdHJpbmc+Ki8sIFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovKS8qOnZvaWQqLyB7XG5cdHZhciBpID0gMCwgTCA9IDAsIFIgPSAwLCBDID0gMCwgaiA9IDAsIHBsID0gUGF0aHMubGVuZ3RoO1xuXHR2YXIgZGFkLyo6QXJyYXk8bnVtYmVyPiovID0gW10sIHEvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblxuXHRmb3IoOyBpIDwgcGw7ICsraSkgeyBkYWRbaV09cVtpXT1pOyBGUFtpXT1QYXRoc1tpXTsgfVxuXG5cdGZvcig7IGogPCBxLmxlbmd0aDsgKytqKSB7XG5cdFx0aSA9IHFbal07XG5cdFx0TCA9IEZJW2ldLkw7IFIgPSBGSVtpXS5SOyBDID0gRklbaV0uQztcblx0XHRpZihkYWRbaV0gPT09IGkpIHtcblx0XHRcdGlmKEwgIT09IC0xIC8qTk9TVFJFQU0qLyAmJiBkYWRbTF0gIT09IEwpIGRhZFtpXSA9IGRhZFtMXTtcblx0XHRcdGlmKFIgIT09IC0xICYmIGRhZFtSXSAhPT0gUikgZGFkW2ldID0gZGFkW1JdO1xuXHRcdH1cblx0XHRpZihDICE9PSAtMSAvKk5PU1RSRUFNKi8pIGRhZFtDXSA9IGk7XG5cdFx0aWYoTCAhPT0gLTEgJiYgaSAhPSBkYWRbaV0pIHsgZGFkW0xdID0gZGFkW2ldOyBpZihxLmxhc3RJbmRleE9mKEwpIDwgaikgcS5wdXNoKEwpOyB9XG5cdFx0aWYoUiAhPT0gLTEgJiYgaSAhPSBkYWRbaV0pIHsgZGFkW1JdID0gZGFkW2ldOyBpZihxLmxhc3RJbmRleE9mKFIpIDwgaikgcS5wdXNoKFIpOyB9XG5cdH1cblx0Zm9yKGk9MTsgaSA8IHBsOyArK2kpIGlmKGRhZFtpXSA9PT0gaSkge1xuXHRcdGlmKFIgIT09IC0xIC8qTk9TVFJFQU0qLyAmJiBkYWRbUl0gIT09IFIpIGRhZFtpXSA9IGRhZFtSXTtcblx0XHRlbHNlIGlmKEwgIT09IC0xICYmIGRhZFtMXSAhPT0gTCkgZGFkW2ldID0gZGFkW0xdO1xuXHR9XG5cblx0Zm9yKGk9MTsgaSA8IHBsOyArK2kpIHtcblx0XHRpZihGSVtpXS50eXBlID09PSAwIC8qIHVua25vd24gKi8pIGNvbnRpbnVlO1xuXHRcdGogPSBpO1xuXHRcdGlmKGogIT0gZGFkW2pdKSBkbyB7XG5cdFx0XHRqID0gZGFkW2pdO1xuXHRcdFx0RlBbaV0gPSBGUFtqXSArIFwiL1wiICsgRlBbaV07XG5cdFx0fSB3aGlsZSAoaiAhPT0gMCAmJiAtMSAhPT0gZGFkW2pdICYmIGogIT0gZGFkW2pdKTtcblx0XHRkYWRbaV0gPSAtMTtcblx0fVxuXG5cdEZQWzBdICs9IFwiL1wiO1xuXHRmb3IoaT0xOyBpIDwgcGw7ICsraSkge1xuXHRcdGlmKEZJW2ldLnR5cGUgIT09IDIgLyogc3RyZWFtICovKSBGUFtpXSArPSBcIi9cIjtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRfbWZhdF9lbnRyeShlbnRyeS8qOkNGQkVudHJ5Ki8sIHBheWxvYWQvKjpSYXdCeXRlcyovLCBtaW5pLyo6P1Jhd0J5dGVzKi8pLyo6Q0ZCbG9iKi8ge1xuXHR2YXIgc3RhcnQgPSBlbnRyeS5zdGFydCwgc2l6ZSA9IGVudHJ5LnNpemU7XG5cdC8vcmV0dXJuIChwYXlsb2FkLnNsaWNlKHN0YXJ0Kk1TU1osIHN0YXJ0Kk1TU1ogKyBzaXplKS8qOmFueSovKTtcblx0dmFyIG8gPSBbXTtcblx0dmFyIGlkeCA9IHN0YXJ0O1xuXHR3aGlsZShtaW5pICYmIHNpemUgPiAwICYmIGlkeCA+PSAwKSB7XG5cdFx0by5wdXNoKHBheWxvYWQuc2xpY2UoaWR4ICogTVNTWiwgaWR4ICogTVNTWiArIE1TU1opKTtcblx0XHRzaXplIC09IE1TU1o7XG5cdFx0aWR4ID0gX19yZWFkSW50MzJMRShtaW5pLCBpZHggKiA0KTtcblx0fVxuXHRpZihvLmxlbmd0aCA9PT0gMCkgcmV0dXJuIChuZXdfYnVmKDApLyo6YW55Ki8pO1xuXHRyZXR1cm4gKGJjb25jYXQobykuc2xpY2UoMCwgZW50cnkuc2l6ZSkvKjphbnkqLyk7XG59XG5cbi8qKiBDaGFzZSBkb3duIHRoZSByZXN0IG9mIHRoZSBESUZBVCBjaGFpbiB0byBidWlsZCBhIGNvbXByZWhlbnNpdmUgbGlzdFxuICAgIERJRkFUIGNoYWlucyBieSBzdG9yaW5nIHRoZSBuZXh0IHNlY3RvciBudW1iZXIgYXMgdGhlIGxhc3QgMzIgYml0cyAqL1xuZnVuY3Rpb24gc2xldXRoX2ZhdChpZHgvKjpudW1iZXIqLywgY250Lyo6bnVtYmVyKi8sIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgc3N6Lyo6bnVtYmVyKi8sIGZhdF9hZGRycykvKjp2b2lkKi8ge1xuXHR2YXIgcS8qOm51bWJlciovID0gRU5ET0ZDSEFJTjtcblx0aWYoaWR4ID09PSBFTkRPRkNIQUlOKSB7XG5cdFx0aWYoY250ICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJESUZBVCBjaGFpbiBzaG9ydGVyIHRoYW4gZXhwZWN0ZWRcIik7XG5cdH0gZWxzZSBpZihpZHggIT09IC0xIC8qRlJFRVNFQ1QqLykge1xuXHRcdHZhciBzZWN0b3IgPSBzZWN0b3JzW2lkeF0sIG0gPSAoc3N6Pj4+MiktMTtcblx0XHRpZighc2VjdG9yKSByZXR1cm47XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG07ICsraSkge1xuXHRcdFx0aWYoKHEgPSBfX3JlYWRJbnQzMkxFKHNlY3RvcixpKjQpKSA9PT0gRU5ET0ZDSEFJTikgYnJlYWs7XG5cdFx0XHRmYXRfYWRkcnMucHVzaChxKTtcblx0XHR9XG5cdFx0c2xldXRoX2ZhdChfX3JlYWRJbnQzMkxFKHNlY3Rvcixzc3otNCksY250IC0gMSwgc2VjdG9ycywgc3N6LCBmYXRfYWRkcnMpO1xuXHR9XG59XG5cbi8qKiBGb2xsb3cgdGhlIGxpbmtlZCBsaXN0IG9mIHNlY3RvcnMgZm9yIGEgZ2l2ZW4gc3RhcnRpbmcgcG9pbnQgKi9cbmZ1bmN0aW9uIGdldF9zZWN0b3JfbGlzdChzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8sIHN0YXJ0Lyo6bnVtYmVyKi8sIGZhdF9hZGRycy8qOkFycmF5PG51bWJlcj4qLywgc3N6Lyo6bnVtYmVyKi8sIGNoa2QvKjo/QXJyYXk8Ym9vbGVhbj4qLykvKjpTZWN0b3JFbnRyeSovIHtcblx0dmFyIGJ1Zi8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBidWZfY2hhaW4vKjpBcnJheTxhbnk+Ki8gPSBbXTtcblx0aWYoIWNoa2QpIGNoa2QgPSBbXTtcblx0dmFyIG1vZHVsdXMgPSBzc3ogLSAxLCBqID0gMCwgamogPSAwO1xuXHRmb3Ioaj1zdGFydDsgaj49MDspIHtcblx0XHRjaGtkW2pdID0gdHJ1ZTtcblx0XHRidWZbYnVmLmxlbmd0aF0gPSBqO1xuXHRcdGJ1Zl9jaGFpbi5wdXNoKHNlY3RvcnNbal0pO1xuXHRcdHZhciBhZGRyID0gZmF0X2FkZHJzW01hdGguZmxvb3Ioaio0L3NzeildO1xuXHRcdGpqID0gKChqKjQpICYgbW9kdWx1cyk7XG5cdFx0aWYoc3N6IDwgNCArIGpqKSB0aHJvdyBuZXcgRXJyb3IoXCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogXCIgKyBqICsgXCIgNCBcIitzc3opO1xuXHRcdGlmKCFzZWN0b3JzW2FkZHJdKSBicmVhaztcblx0XHRqID0gX19yZWFkSW50MzJMRShzZWN0b3JzW2FkZHJdLCBqaik7XG5cdH1cblx0cmV0dXJuIHtub2RlczogYnVmLCBkYXRhOl9fdG9CdWZmZXIoW2J1Zl9jaGFpbl0pfTtcbn1cblxuLyoqIENoYXNlIGRvd24gdGhlIHNlY3RvciBsaW5rZWQgbGlzdHMgKi9cbmZ1bmN0aW9uIG1ha2Vfc2VjdG9yX2xpc3Qoc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovLCBkaXJfc3RhcnQvKjpudW1iZXIqLywgZmF0X2FkZHJzLyo6QXJyYXk8bnVtYmVyPiovLCBzc3ovKjpudW1iZXIqLykvKjpTZWN0b3JMaXN0Ki8ge1xuXHR2YXIgc2wgPSBzZWN0b3JzLmxlbmd0aCwgc2VjdG9yX2xpc3QvKjpTZWN0b3JMaXN0Ki8gPSAoW10vKjphbnkqLyk7XG5cdHZhciBjaGtkLyo6QXJyYXk8Ym9vbGVhbj4qLyA9IFtdLCBidWYvKjpBcnJheTxudW1iZXI+Ki8gPSBbXSwgYnVmX2NoYWluLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8gPSBbXTtcblx0dmFyIG1vZHVsdXMgPSBzc3ogLSAxLCBpPTAsIGo9MCwgaz0wLCBqaj0wO1xuXHRmb3IoaT0wOyBpIDwgc2w7ICsraSkge1xuXHRcdGJ1ZiA9IChbXS8qOkFycmF5PG51bWJlcj4qLyk7XG5cdFx0ayA9IChpICsgZGlyX3N0YXJ0KTsgaWYoayA+PSBzbCkgay09c2w7XG5cdFx0aWYoY2hrZFtrXSkgY29udGludWU7XG5cdFx0YnVmX2NoYWluID0gW107XG5cdFx0dmFyIHNlZW4gPSBbXTtcblx0XHRmb3Ioaj1rOyBqPj0wOykge1xuXHRcdFx0c2VlbltqXSA9IHRydWU7XG5cdFx0XHRjaGtkW2pdID0gdHJ1ZTtcblx0XHRcdGJ1ZltidWYubGVuZ3RoXSA9IGo7XG5cdFx0XHRidWZfY2hhaW4ucHVzaChzZWN0b3JzW2pdKTtcblx0XHRcdHZhciBhZGRyLyo6bnVtYmVyKi8gPSBmYXRfYWRkcnNbTWF0aC5mbG9vcihqKjQvc3N6KV07XG5cdFx0XHRqaiA9ICgoaio0KSAmIG1vZHVsdXMpO1xuXHRcdFx0aWYoc3N6IDwgNCArIGpqKSB0aHJvdyBuZXcgRXJyb3IoXCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogXCIgKyBqICsgXCIgNCBcIitzc3opO1xuXHRcdFx0aWYoIXNlY3RvcnNbYWRkcl0pIGJyZWFrO1xuXHRcdFx0aiA9IF9fcmVhZEludDMyTEUoc2VjdG9yc1thZGRyXSwgamopO1xuXHRcdFx0aWYoc2VlbltqXSkgYnJlYWs7XG5cdFx0fVxuXHRcdHNlY3Rvcl9saXN0W2tdID0gKHtub2RlczogYnVmLCBkYXRhOl9fdG9CdWZmZXIoW2J1Zl9jaGFpbl0pfS8qOlNlY3RvckVudHJ5Ki8pO1xuXHR9XG5cdHJldHVybiBzZWN0b3JfbGlzdDtcbn1cblxuLyogW01TLUNGQl0gMi42LjEgQ29tcG91bmQgRmlsZSBEaXJlY3RvcnkgRW50cnkgKi9cbmZ1bmN0aW9uIHJlYWRfZGlyZWN0b3J5KGRpcl9zdGFydC8qOm51bWJlciovLCBzZWN0b3JfbGlzdC8qOlNlY3Rvckxpc3QqLywgc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovLCBQYXRocy8qOkFycmF5PHN0cmluZz4qLywgbm1mcywgZmlsZXMsIEZpbGVJbmRleCwgbWluaSkge1xuXHR2YXIgbWluaWZhdF9zdG9yZSA9IDAsIHBsID0gKFBhdGhzLmxlbmd0aD8yOjApO1xuXHR2YXIgc2VjdG9yID0gc2VjdG9yX2xpc3RbZGlyX3N0YXJ0XS5kYXRhO1xuXHR2YXIgaSA9IDAsIG5hbWVsZW4gPSAwLCBuYW1lO1xuXHRmb3IoOyBpIDwgc2VjdG9yLmxlbmd0aDsgaSs9IDEyOCkge1xuXHRcdHZhciBibG9iLyo6Q0ZCbG9iKi8gPSAvKjo6KCovc2VjdG9yLnNsaWNlKGksIGkrMTI4KS8qOjogOmFueSkqLztcblx0XHRwcmVwX2Jsb2IoYmxvYiwgNjQpO1xuXHRcdG5hbWVsZW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0bmFtZSA9IF9fdXRmMTZsZShibG9iLDAsbmFtZWxlbi1wbCk7XG5cdFx0UGF0aHMucHVzaChuYW1lKTtcblx0XHR2YXIgby8qOkNGQkVudHJ5Ki8gPSAoe1xuXHRcdFx0bmFtZTogIG5hbWUsXG5cdFx0XHR0eXBlOiAgYmxvYi5yZWFkX3NoaWZ0KDEpLFxuXHRcdFx0Y29sb3I6IGJsb2IucmVhZF9zaGlmdCgxKSxcblx0XHRcdEw6ICAgICBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSxcblx0XHRcdFI6ICAgICBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSxcblx0XHRcdEM6ICAgICBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSxcblx0XHRcdGNsc2lkOiBibG9iLnJlYWRfc2hpZnQoMTYpLFxuXHRcdFx0c3RhdGU6IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpLFxuXHRcdFx0c3RhcnQ6IDAsXG5cdFx0XHRzaXplOiAwXG5cdFx0fSk7XG5cdFx0dmFyIGN0aW1lLyo6bnVtYmVyKi8gPSBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYoY3RpbWUgIT09IDApIG8uY3QgPSByZWFkX2RhdGUoYmxvYiwgYmxvYi5sLTgpO1xuXHRcdHZhciBtdGltZS8qOm51bWJlciovID0gYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKG10aW1lICE9PSAwKSBvLm10ID0gcmVhZF9kYXRlKGJsb2IsIGJsb2IubC04KTtcblx0XHRvLnN0YXJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cdFx0by5zaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cdFx0aWYoby5zaXplIDwgMCAmJiBvLnN0YXJ0IDwgMCkgeyBvLnNpemUgPSBvLnR5cGUgPSAwOyBvLnN0YXJ0ID0gRU5ET0ZDSEFJTjsgby5uYW1lID0gXCJcIjsgfVxuXHRcdGlmKG8udHlwZSA9PT0gNSkgeyAvKiByb290ICovXG5cdFx0XHRtaW5pZmF0X3N0b3JlID0gby5zdGFydDtcblx0XHRcdGlmKG5tZnMgPiAwICYmIG1pbmlmYXRfc3RvcmUgIT09IEVORE9GQ0hBSU4pIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RvcmVdLm5hbWUgPSBcIiFTdHJlYW1EYXRhXCI7XG5cdFx0XHQvKm1pbmlmYXRfc2l6ZSA9IG8uc2l6ZTsqL1xuXHRcdH0gZWxzZSBpZihvLnNpemUgPj0gNDA5NiAvKiBNU0NTWiAqLykge1xuXHRcdFx0by5zdG9yYWdlID0gJ2ZhdCc7XG5cdFx0XHRpZihzZWN0b3JfbGlzdFtvLnN0YXJ0XSA9PT0gdW5kZWZpbmVkKSBzZWN0b3JfbGlzdFtvLnN0YXJ0XSA9IGdldF9zZWN0b3JfbGlzdChzZWN0b3JzLCBvLnN0YXJ0LCBzZWN0b3JfbGlzdC5mYXRfYWRkcnMsIHNlY3Rvcl9saXN0LnNzeik7XG5cdFx0XHRzZWN0b3JfbGlzdFtvLnN0YXJ0XS5uYW1lID0gby5uYW1lO1xuXHRcdFx0by5jb250ZW50ID0gKHNlY3Rvcl9saXN0W28uc3RhcnRdLmRhdGEuc2xpY2UoMCxvLnNpemUpLyo6YW55Ki8pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvLnN0b3JhZ2UgPSAnbWluaWZhdCc7XG5cdFx0XHRpZihvLnNpemUgPCAwKSBvLnNpemUgPSAwO1xuXHRcdFx0ZWxzZSBpZihtaW5pZmF0X3N0b3JlICE9PSBFTkRPRkNIQUlOICYmIG8uc3RhcnQgIT09IEVORE9GQ0hBSU4gJiYgc2VjdG9yX2xpc3RbbWluaWZhdF9zdG9yZV0pIHtcblx0XHRcdFx0by5jb250ZW50ID0gZ2V0X21mYXRfZW50cnkobywgc2VjdG9yX2xpc3RbbWluaWZhdF9zdG9yZV0uZGF0YSwgKHNlY3Rvcl9saXN0W21pbmldfHx7fSkuZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKG8uY29udGVudCkgcHJlcF9ibG9iKG8uY29udGVudCwgMCk7XG5cdFx0ZmlsZXNbbmFtZV0gPSBvO1xuXHRcdEZpbGVJbmRleC5wdXNoKG8pO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlYWRfZGF0ZShibG9iLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIG9mZnNldC8qOm51bWJlciovKS8qOkRhdGUqLyB7XG5cdHJldHVybiBuZXcgRGF0ZSgoICggKF9fcmVhZFVJbnQzMkxFKGJsb2Isb2Zmc2V0KzQpLzFlNykqTWF0aC5wb3coMiwzMikrX19yZWFkVUludDMyTEUoYmxvYixvZmZzZXQpLzFlNyApIC0gMTE2NDQ0NzM2MDApKjEwMDApO1xufVxuXG5mdW5jdGlvbiByZWFkX2ZpbGUoZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0aW9ucy8qOkNGQlJlYWRPcHRzKi8pIHtcblx0Z2V0X2ZzKCk7XG5cdHJldHVybiBwYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUpLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVhZChibG9iLyo6UmF3Qnl0ZXN8c3RyaW5nKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKSB7XG5cdHZhciB0eXBlID0gb3B0aW9ucyAmJiBvcHRpb25zLnR5cGU7XG5cdGlmKCF0eXBlKSB7XG5cdFx0aWYoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoYmxvYikpIHR5cGUgPSBcImJ1ZmZlclwiO1xuXHR9XG5cdHN3aXRjaCh0eXBlIHx8IFwiYmFzZTY0XCIpIHtcblx0XHRjYXNlIFwiZmlsZVwiOiAvKjo6IGlmKHR5cGVvZiBibG9iICE9PSAnc3RyaW5nJykgdGhyb3cgXCJNdXN0IHBhc3MgYSBmaWxlbmFtZSB3aGVuIHR5cGU9J2ZpbGUnXCI7ICovcmV0dXJuIHJlYWRfZmlsZShibG9iLCBvcHRpb25zKTtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IC8qOjogaWYodHlwZW9mIGJsb2IgIT09ICdzdHJpbmcnKSB0aHJvdyBcIk11c3QgcGFzcyBhIGJhc2U2NC1lbmNvZGVkIGJpbmFyeSBzdHJpbmcgd2hlbiB0eXBlPSdmaWxlJ1wiOyAqL3JldHVybiBwYXJzZShzMmEoQmFzZTY0X2RlY29kZShibG9iKSksIG9wdGlvbnMpO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogLyo6OiBpZih0eXBlb2YgYmxvYiAhPT0gJ3N0cmluZycpIHRocm93IFwiTXVzdCBwYXNzIGEgYmluYXJ5IHN0cmluZyB3aGVuIHR5cGU9J2ZpbGUnXCI7ICovcmV0dXJuIHBhcnNlKHMyYShibG9iKSwgb3B0aW9ucyk7XG5cdH1cblx0cmV0dXJuIHBhcnNlKC8qOjp0eXBlb2YgYmxvYiA9PSAnc3RyaW5nJyA/IG5ldyBCdWZmZXIoYmxvYiwgJ3V0Zi04JykgOiAqL2Jsb2IsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBpbml0X2NmYihjZmIvKjpDRkJDb250YWluZXIqLywgb3B0cy8qOj9hbnkqLykvKjp2b2lkKi8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge30sIHJvb3QgPSBvLnJvb3QgfHwgXCJSb290IEVudHJ5XCI7XG5cdGlmKCFjZmIuRnVsbFBhdGhzKSBjZmIuRnVsbFBhdGhzID0gW107XG5cdGlmKCFjZmIuRmlsZUluZGV4KSBjZmIuRmlsZUluZGV4ID0gW107XG5cdGlmKGNmYi5GdWxsUGF0aHMubGVuZ3RoICE9PSBjZmIuRmlsZUluZGV4Lmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiaW5jb25zaXN0ZW50IENGQiBzdHJ1Y3R1cmVcIik7XG5cdGlmKGNmYi5GdWxsUGF0aHMubGVuZ3RoID09PSAwKSB7XG5cdFx0Y2ZiLkZ1bGxQYXRoc1swXSA9IHJvb3QgKyBcIi9cIjtcblx0XHRjZmIuRmlsZUluZGV4WzBdID0gKHsgbmFtZTogcm9vdCwgdHlwZTogNSB9Lyo6YW55Ki8pO1xuXHR9XG5cdGlmKG8uQ0xTSUQpIGNmYi5GaWxlSW5kZXhbMF0uY2xzaWQgPSBvLkNMU0lEO1xuXHRzZWVkX2NmYihjZmIpO1xufVxuZnVuY3Rpb24gc2VlZF9jZmIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8pLyo6dm9pZCovIHtcblx0dmFyIG5tID0gXCJcXHUwMDAxU2gzM3RKNVwiO1xuXHRpZihDRkIuZmluZChjZmIsIFwiL1wiICsgbm0pKSByZXR1cm47XG5cdHZhciBwID0gbmV3X2J1Zig0KTsgcFswXSA9IDU1OyBwWzFdID0gcFszXSA9IDUwOyBwWzJdID0gNTQ7XG5cdGNmYi5GaWxlSW5kZXgucHVzaCgoeyBuYW1lOiBubSwgdHlwZTogMiwgY29udGVudDpwLCBzaXplOjQsIEw6NjksIFI6NjksIEM6NjkgfS8qOmFueSovKSk7XG5cdGNmYi5GdWxsUGF0aHMucHVzaChjZmIuRnVsbFBhdGhzWzBdICsgbm0pO1xuXHRyZWJ1aWxkX2NmYihjZmIpO1xufVxuZnVuY3Rpb24gcmVidWlsZF9jZmIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIGYvKjo/Ym9vbGVhbiovKS8qOnZvaWQqLyB7XG5cdGluaXRfY2ZiKGNmYik7XG5cdHZhciBnYyA9IGZhbHNlLCBzID0gZmFsc2U7XG5cdGZvcih2YXIgaSA9IGNmYi5GdWxsUGF0aHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHR2YXIgX2ZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdHN3aXRjaChfZmlsZS50eXBlKSB7XG5cdFx0XHRjYXNlIDA6XG5cdFx0XHRcdGlmKHMpIGdjID0gdHJ1ZTtcblx0XHRcdFx0ZWxzZSB7IGNmYi5GaWxlSW5kZXgucG9wKCk7IGNmYi5GdWxsUGF0aHMucG9wKCk7IH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogY2FzZSA1OlxuXHRcdFx0XHRzID0gdHJ1ZTtcblx0XHRcdFx0aWYoaXNOYU4oX2ZpbGUuUiAqIF9maWxlLkwgKiBfZmlsZS5DKSkgZ2MgPSB0cnVlO1xuXHRcdFx0XHRpZihfZmlsZS5SID4gLTEgJiYgX2ZpbGUuTCA+IC0xICYmIF9maWxlLlIgPT0gX2ZpbGUuTCkgZ2MgPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6IGdjID0gdHJ1ZTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cdGlmKCFnYyAmJiAhZikgcmV0dXJuO1xuXG5cdHZhciBub3cgPSBuZXcgRGF0ZSgxOTg3LCAxLCAxOSksIGogPSAwO1xuXHQvLyBUcmFjayB3aGljaCBuYW1lcyBleGlzdFxuXHR2YXIgZnVsbFBhdGhzID0gT2JqZWN0LmNyZWF0ZSA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcblx0dmFyIGRhdGEvKjpBcnJheTxbc3RyaW5nLCBDRkJFbnRyeV0+Ki8gPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDwgY2ZiLkZ1bGxQYXRocy5sZW5ndGg7ICsraSkge1xuXHRcdGZ1bGxQYXRoc1tjZmIuRnVsbFBhdGhzW2ldXSA9IHRydWU7XG5cdFx0aWYoY2ZiLkZpbGVJbmRleFtpXS50eXBlID09PSAwKSBjb250aW51ZTtcblx0XHRkYXRhLnB1c2goW2NmYi5GdWxsUGF0aHNbaV0sIGNmYi5GaWxlSW5kZXhbaV1dKTtcblx0fVxuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGRhZCA9IGRpcm5hbWUoZGF0YVtpXVswXSk7XG5cdFx0cyA9IGZ1bGxQYXRoc1tkYWRdO1xuXHRcdGlmKCFzKSB7XG5cdFx0XHRkYXRhLnB1c2goW2RhZCwgKHtcblx0XHRcdFx0bmFtZTogZmlsZW5hbWUoZGFkKS5yZXBsYWNlKFwiL1wiLFwiXCIpLFxuXHRcdFx0XHR0eXBlOiAxLFxuXHRcdFx0XHRjbHNpZDogSEVBREVSX0NMU0lELFxuXHRcdFx0XHRjdDogbm93LCBtdDogbm93LFxuXHRcdFx0XHRjb250ZW50OiBudWxsXG5cdFx0XHR9Lyo6YW55Ki8pXSk7XG5cdFx0XHQvLyBBZGQgbmFtZSB0byBzZXRcblx0XHRcdGZ1bGxQYXRoc1tkYWRdID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRkYXRhLnNvcnQoZnVuY3Rpb24oeCx5KSB7IHJldHVybiBuYW1lY21wKHhbMF0sIHlbMF0pOyB9KTtcblx0Y2ZiLkZ1bGxQYXRocyA9IFtdOyBjZmIuRmlsZUluZGV4ID0gW107XG5cdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsgY2ZiLkZ1bGxQYXRoc1tpXSA9IGRhdGFbaV1bMF07IGNmYi5GaWxlSW5kZXhbaV0gPSBkYXRhW2ldWzFdOyB9XG5cdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZWx0ID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHR2YXIgbm0gPSBjZmIuRnVsbFBhdGhzW2ldO1xuXG5cdFx0ZWx0Lm5hbWUgPSAgZmlsZW5hbWUobm0pLnJlcGxhY2UoXCIvXCIsXCJcIik7XG5cdFx0ZWx0LkwgPSBlbHQuUiA9IGVsdC5DID0gLShlbHQuY29sb3IgPSAxKTtcblx0XHRlbHQuc2l6ZSA9IGVsdC5jb250ZW50ID8gZWx0LmNvbnRlbnQubGVuZ3RoIDogMDtcblx0XHRlbHQuc3RhcnQgPSAwO1xuXHRcdGVsdC5jbHNpZCA9IChlbHQuY2xzaWQgfHwgSEVBREVSX0NMU0lEKTtcblx0XHRpZihpID09PSAwKSB7XG5cdFx0XHRlbHQuQyA9IGRhdGEubGVuZ3RoID4gMSA/IDEgOiAtMTtcblx0XHRcdGVsdC5zaXplID0gMDtcblx0XHRcdGVsdC50eXBlID0gNTtcblx0XHR9IGVsc2UgaWYobm0uc2xpY2UoLTEpID09IFwiL1wiKSB7XG5cdFx0XHRmb3Ioaj1pKzE7aiA8IGRhdGEubGVuZ3RoOyArK2opIGlmKGRpcm5hbWUoY2ZiLkZ1bGxQYXRoc1tqXSk9PW5tKSBicmVhaztcblx0XHRcdGVsdC5DID0gaiA+PSBkYXRhLmxlbmd0aCA/IC0xIDogajtcblx0XHRcdGZvcihqPWkrMTtqIDwgZGF0YS5sZW5ndGg7ICsraikgaWYoZGlybmFtZShjZmIuRnVsbFBhdGhzW2pdKT09ZGlybmFtZShubSkpIGJyZWFrO1xuXHRcdFx0ZWx0LlIgPSBqID49IGRhdGEubGVuZ3RoID8gLTEgOiBqO1xuXHRcdFx0ZWx0LnR5cGUgPSAxO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZihkaXJuYW1lKGNmYi5GdWxsUGF0aHNbaSsxXXx8XCJcIikgPT0gZGlybmFtZShubSkpIGVsdC5SID0gaSArIDE7XG5cdFx0XHRlbHQudHlwZSA9IDI7XG5cdFx0fVxuXHR9XG5cbn1cblxuZnVuY3Rpb24gX3dyaXRlKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRpb25zLyo6Q0ZCV3JpdGVPcHRzKi8pLyo6UmF3Qnl0ZXN8c3RyaW5nKi8ge1xuXHR2YXIgX29wdHMgPSBvcHRpb25zIHx8IHt9O1xuXHQvKiBNQUQgaXMgb3JkZXItc2Vuc2l0aXZlLCBza2lwIHJlYnVpbGQgYW5kIHNvcnQgKi9cblx0aWYoX29wdHMuZmlsZVR5cGUgPT0gJ21hZCcpIHJldHVybiB3cml0ZV9tYWQoY2ZiLCBfb3B0cyk7XG5cdHJlYnVpbGRfY2ZiKGNmYik7XG5cdHN3aXRjaChfb3B0cy5maWxlVHlwZSkge1xuXHRcdGNhc2UgJ3ppcCc6IHJldHVybiB3cml0ZV96aXAoY2ZiLCBfb3B0cyk7XG5cdFx0Ly9jYXNlICdtYWQnOiByZXR1cm4gd3JpdGVfbWFkKGNmYiwgX29wdHMpO1xuXHR9XG5cdHZhciBMID0gKGZ1bmN0aW9uKGNmYi8qOkNGQkNvbnRhaW5lciovKS8qOkFycmF5PG51bWJlcj4qL3tcblx0XHR2YXIgbWluaV9zaXplID0gMCwgZmF0X3NpemUgPSAwO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0XHRpZighZmlsZS5jb250ZW50KSBjb250aW51ZTtcblx0XHRcdC8qOjogaWYoZmlsZS5jb250ZW50ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dmFyIGZsZW4gPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuXHRcdFx0aWYoZmxlbiA+IDApe1xuXHRcdFx0XHRpZihmbGVuIDwgMHgxMDAwKSBtaW5pX3NpemUgKz0gKGZsZW4gKyAweDNGKSA+PiA2O1xuXHRcdFx0XHRlbHNlIGZhdF9zaXplICs9IChmbGVuICsgMHgwMUZGKSA+PiA5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHR2YXIgZGlyX2NudCA9IChjZmIuRnVsbFBhdGhzLmxlbmd0aCArMykgPj4gMjtcblx0XHR2YXIgbWluaV9jbnQgPSAobWluaV9zaXplICsgNykgPj4gMztcblx0XHR2YXIgbWZhdF9jbnQgPSAobWluaV9zaXplICsgMHg3RikgPj4gNztcblx0XHR2YXIgZmF0X2Jhc2UgPSBtaW5pX2NudCArIGZhdF9zaXplICsgZGlyX2NudCArIG1mYXRfY250O1xuXHRcdHZhciBmYXRfY250ID0gKGZhdF9iYXNlICsgMHg3RikgPj4gNztcblx0XHR2YXIgZGlmYXRfY250ID0gZmF0X2NudCA8PSAxMDkgPyAwIDogTWF0aC5jZWlsKChmYXRfY250LTEwOSkvMHg3Rik7XG5cdFx0d2hpbGUoKChmYXRfYmFzZSArIGZhdF9jbnQgKyBkaWZhdF9jbnQgKyAweDdGKSA+PiA3KSA+IGZhdF9jbnQpIGRpZmF0X2NudCA9ICsrZmF0X2NudCA8PSAxMDkgPyAwIDogTWF0aC5jZWlsKChmYXRfY250LTEwOSkvMHg3Rik7XG5cdFx0dmFyIEwgPSAgWzEsIGRpZmF0X2NudCwgZmF0X2NudCwgbWZhdF9jbnQsIGRpcl9jbnQsIGZhdF9zaXplLCBtaW5pX3NpemUsIDBdO1xuXHRcdGNmYi5GaWxlSW5kZXhbMF0uc2l6ZSA9IG1pbmlfc2l6ZSA8PCA2O1xuXHRcdExbN10gPSAoY2ZiLkZpbGVJbmRleFswXS5zdGFydD1MWzBdK0xbMV0rTFsyXStMWzNdK0xbNF0rTFs1XSkrKChMWzZdKzcpID4+IDMpO1xuXHRcdHJldHVybiBMO1xuXHR9KShjZmIpO1xuXHR2YXIgbyA9IG5ld19idWYoTFs3XSA8PCA5KTtcblx0dmFyIGkgPSAwLCBUID0gMDtcblx0e1xuXHRcdGZvcihpID0gMDsgaSA8IDg7ICsraSkgby53cml0ZV9zaGlmdCgxLCBIRUFERVJfU0lHW2ldKTtcblx0XHRmb3IoaSA9IDA7IGkgPCA4OyArK2kpIG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweDAwM0UpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDAzKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4RkZGRSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweDAwMDkpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDA2KTtcblx0XHRmb3IoaSA9IDA7IGkgPCAzOyArK2kpIG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbMl0pO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFswXSArIExbMV0gKyBMWzJdICsgTFszXSAtIDEpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAxPDwxMik7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzNdID8gTFswXSArIExbMV0gKyBMWzJdIC0gMTogRU5ET0ZDSEFJTik7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzNdKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCBMWzFdID8gTFswXSAtIDE6IEVORE9GQ0hBSU4pO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFsxXSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgMTA5OyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGkgPCBMWzJdID8gTFsxXSArIGkgOiAtMSk7XG5cdH1cblx0aWYoTFsxXSkge1xuXHRcdGZvcihUID0gMDsgVCA8IExbMV07ICsrVCkge1xuXHRcdFx0Zm9yKDsgaSA8IDIzNiArIFQgKiAxMjc7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgaSA8IExbMl0gPyBMWzFdICsgaSA6IC0xKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoLTQsIFQgPT09IExbMV0gLSAxID8gRU5ET0ZDSEFJTiA6IFQgKyAxKTtcblx0XHR9XG5cdH1cblx0dmFyIGNoYWluaXQgPSBmdW5jdGlvbih3Lyo6bnVtYmVyKi8pLyo6dm9pZCovIHtcblx0XHRmb3IoVCArPSB3OyBpPFQtMTsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBpKzEpO1xuXHRcdGlmKHcpIHsgKytpOyBvLndyaXRlX3NoaWZ0KC00LCBFTkRPRkNIQUlOKTsgfVxuXHR9O1xuXHRUID0gaSA9IDA7XG5cdGZvcihUKz1MWzFdOyBpPFQ7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgY29uc3RzLkRJRlNFQ1QpO1xuXHRmb3IoVCs9TFsyXTsgaTxUOyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5GQVRTRUNUKTtcblx0Y2hhaW5pdChMWzNdKTtcblx0Y2hhaW5pdChMWzRdKTtcblx0dmFyIGovKjpudW1iZXIqLyA9IDAsIGZsZW4vKjpudW1iZXIqLyA9IDA7XG5cdHZhciBmaWxlLyo6Q0ZCRW50cnkqLyA9IGNmYi5GaWxlSW5kZXhbMF07XG5cdGZvcig7IGogPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytqKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbal07XG5cdFx0aWYoIWZpbGUuY29udGVudCkgY29udGludWU7XG5cdFx0Lyo6OiBpZihmaWxlLmNvbnRlbnQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0ZmxlbiA9IGZpbGUuY29udGVudC5sZW5ndGg7XG5cdFx0aWYoZmxlbiA8IDB4MTAwMCkgY29udGludWU7XG5cdFx0ZmlsZS5zdGFydCA9IFQ7XG5cdFx0Y2hhaW5pdCgoZmxlbiArIDB4MDFGRikgPj4gOSk7XG5cdH1cblx0Y2hhaW5pdCgoTFs2XSArIDcpID4+IDMpO1xuXHR3aGlsZShvLmwgJiAweDFGRikgby53cml0ZV9zaGlmdCgtNCwgY29uc3RzLkVORE9GQ0hBSU4pO1xuXHRUID0gaSA9IDA7XG5cdGZvcihqID0gMDsgaiA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2opIHtcblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtqXTtcblx0XHRpZighZmlsZS5jb250ZW50KSBjb250aW51ZTtcblx0XHQvKjo6IGlmKGZpbGUuY29udGVudCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRmbGVuID0gZmlsZS5jb250ZW50Lmxlbmd0aDtcblx0XHRpZighZmxlbiB8fCBmbGVuID49IDB4MTAwMCkgY29udGludWU7XG5cdFx0ZmlsZS5zdGFydCA9IFQ7XG5cdFx0Y2hhaW5pdCgoZmxlbiArIDB4M0YpID4+IDYpO1xuXHR9XG5cdHdoaWxlKG8ubCAmIDB4MUZGKSBvLndyaXRlX3NoaWZ0KC00LCBjb25zdHMuRU5ET0ZDSEFJTik7XG5cdGZvcihpID0gMDsgaSA8IExbNF08PDI7ICsraSkge1xuXHRcdHZhciBubSA9IGNmYi5GdWxsUGF0aHNbaV07XG5cdFx0aWYoIW5tIHx8IG5tLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Zm9yKGogPSAwOyBqIDwgMTc7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRcdGZvcihqID0gMDsgaiA8IDM7ICsraikgby53cml0ZV9zaGlmdCg0LCAtMSk7XG5cdFx0XHRmb3IoaiA9IDA7IGogPCAxMjsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdGlmKGkgPT09IDApIGZpbGUuc3RhcnQgPSBmaWxlLnNpemUgPyBmaWxlLnN0YXJ0IC0gMSA6IEVORE9GQ0hBSU47XG5cdFx0dmFyIF9ubS8qOnN0cmluZyovID0gKGkgPT09IDAgJiYgX29wdHMucm9vdCkgfHwgZmlsZS5uYW1lO1xuXHRcdGZsZW4gPSAyKihfbm0ubGVuZ3RoKzEpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNjQsIF9ubSwgXCJ1dGYxNmxlXCIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgZmxlbik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBmaWxlLnR5cGUpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgZmlsZS5jb2xvcik7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgZmlsZS5MKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCBmaWxlLlIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIGZpbGUuQyk7XG5cdFx0aWYoIWZpbGUuY2xzaWQpIGZvcihqID0gMDsgaiA8IDQ7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRlbHNlIG8ud3JpdGVfc2hpZnQoMTYsIGZpbGUuY2xzaWQsIFwiaGV4XCIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlsZS5zdGF0ZSB8fCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBmaWxlLnN0YXJ0KTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGZpbGUuc2l6ZSk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdH1cblx0Zm9yKGkgPSAxOyBpIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraSkge1xuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdC8qOjogaWYoIWZpbGUuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0aWYoZmlsZS5zaXplID49IDB4MTAwMCkge1xuXHRcdFx0by5sID0gKGZpbGUuc3RhcnQrMSkgPDwgOTtcblx0XHRcdGlmIChoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmNvbnRlbnQpKSB7XG5cdFx0XHRcdGZpbGUuY29udGVudC5jb3B5KG8sIG8ubCwgMCwgZmlsZS5zaXplKTtcblx0XHRcdFx0Ly8gbyBpcyBhIDAtZmlsbGVkIEJ1ZmZlciBzbyBqdXN0IHNldCBuZXh0IG9mZnNldFxuXHRcdFx0XHRvLmwgKz0gKGZpbGUuc2l6ZSArIDUxMSkgJiAtNTEyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yKGogPSAwOyBqIDwgZmlsZS5zaXplOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgZmlsZS5jb250ZW50W2pdKTtcblx0XHRcdFx0Zm9yKDsgaiAmIDB4MUZGOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGZvcihpID0gMTsgaSA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2kpIHtcblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHQvKjo6IGlmKCFmaWxlLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGlmKGZpbGUuc2l6ZSA+IDAgJiYgZmlsZS5zaXplIDwgMHgxMDAwKSB7XG5cdFx0XHRpZiAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZmlsZS5jb250ZW50KSkge1xuXHRcdFx0XHRmaWxlLmNvbnRlbnQuY29weShvLCBvLmwsIDAsIGZpbGUuc2l6ZSk7XG5cdFx0XHRcdC8vIG8gaXMgYSAwLWZpbGxlZCBCdWZmZXIgc28ganVzdCBzZXQgbmV4dCBvZmZzZXRcblx0XHRcdFx0by5sICs9IChmaWxlLnNpemUgKyA2MykgJiAtNjQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IoaiA9IDA7IGogPCBmaWxlLnNpemU7ICsraikgby53cml0ZV9zaGlmdCgxLCBmaWxlLmNvbnRlbnRbal0pO1xuXHRcdFx0XHRmb3IoOyBqICYgMHgzRjsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZiAoaGFzX2J1Zikge1xuXHRcdG8ubCA9IG8ubGVuZ3RoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFdoZW4gdXNpbmcgQnVmZmVyLCBhbHJlYWR5IDAtZmlsbGVkXG5cdFx0d2hpbGUoby5sIDwgby5sZW5ndGgpIG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdH1cblx0cmV0dXJuIG87XG59XG4vKiBbTVMtQ0ZCXSAyLjYuNCAoVW5pY29kZSAzLjAuMSBjYXNlIGNvbnZlcnNpb24pICovXG5mdW5jdGlvbiBmaW5kKGNmYi8qOkNGQkNvbnRhaW5lciovLCBwYXRoLyo6c3RyaW5nKi8pLyo6P0NGQkVudHJ5Ki8ge1xuXHR2YXIgVUNGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBjZmIuRnVsbFBhdGhzLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4LnRvVXBwZXJDYXNlKCk7IH0pO1xuXHR2YXIgVUNQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFVDRnVsbFBhdGhzLm1hcChmdW5jdGlvbih4KSB7IHZhciB5ID0geC5zcGxpdChcIi9cIik7IHJldHVybiB5W3kubGVuZ3RoIC0gKHguc2xpY2UoLTEpID09IFwiL1wiID8gMiA6IDEpXTsgfSk7XG5cdHZhciBrLyo6Ym9vbGVhbiovID0gZmFsc2U7XG5cdGlmKHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyogXCIvXCIgKi8pIHsgayA9IHRydWU7IHBhdGggPSBVQ0Z1bGxQYXRoc1swXS5zbGljZSgwLCAtMSkgKyBwYXRoOyB9XG5cdGVsc2UgayA9IHBhdGguaW5kZXhPZihcIi9cIikgIT09IC0xO1xuXHR2YXIgVUNQYXRoLyo6c3RyaW5nKi8gPSBwYXRoLnRvVXBwZXJDYXNlKCk7XG5cdHZhciB3Lyo6bnVtYmVyKi8gPSBrID09PSB0cnVlID8gVUNGdWxsUGF0aHMuaW5kZXhPZihVQ1BhdGgpIDogVUNQYXRocy5pbmRleE9mKFVDUGF0aCk7XG5cdGlmKHcgIT09IC0xKSByZXR1cm4gY2ZiLkZpbGVJbmRleFt3XTtcblxuXHR2YXIgbSA9ICFVQ1BhdGgubWF0Y2goY2hyMSk7XG5cdFVDUGF0aCA9IFVDUGF0aC5yZXBsYWNlKGNocjAsJycpO1xuXHRpZihtKSBVQ1BhdGggPSBVQ1BhdGgucmVwbGFjZShjaHIxLCchJyk7XG5cdGZvcih3ID0gMDsgdyA8IFVDRnVsbFBhdGhzLmxlbmd0aDsgKyt3KSB7XG5cdFx0aWYoKG0gPyBVQ0Z1bGxQYXRoc1t3XS5yZXBsYWNlKGNocjEsJyEnKSA6IFVDRnVsbFBhdGhzW3ddKS5yZXBsYWNlKGNocjAsJycpID09IFVDUGF0aCkgcmV0dXJuIGNmYi5GaWxlSW5kZXhbd107XG5cdFx0aWYoKG0gPyBVQ1BhdGhzW3ddLnJlcGxhY2UoY2hyMSwnIScpIDogVUNQYXRoc1t3XSkucmVwbGFjZShjaHIwLCcnKSA9PSBVQ1BhdGgpIHJldHVybiBjZmIuRmlsZUluZGV4W3ddO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuLyoqIENGQiBDb25zdGFudHMgKi9cbnZhciBNU1NaID0gNjQ7IC8qIE1pbmkgU2VjdG9yIFNpemUgPSAxPDw2ICovXG4vL3ZhciBNU0NTWiA9IDQwOTY7IC8qIE1pbmkgU3RyZWFtIEN1dG9mZiBTaXplICovXG4vKiAyLjEgQ29tcG91bmQgRmlsZSBTZWN0b3IgTnVtYmVycyBhbmQgVHlwZXMgKi9cbnZhciBFTkRPRkNIQUlOID0gLTI7XG4vKiAyLjIgQ29tcG91bmQgRmlsZSBIZWFkZXIgKi9cbnZhciBIRUFERVJfU0lHTkFUVVJFID0gJ2QwY2YxMWUwYTFiMTFhZTEnO1xudmFyIEhFQURFUl9TSUcgPSBbMHhEMCwgMHhDRiwgMHgxMSwgMHhFMCwgMHhBMSwgMHhCMSwgMHgxQSwgMHhFMV07XG52YXIgSEVBREVSX0NMU0lEID0gJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbnZhciBjb25zdHMgPSB7XG5cdC8qIDIuMSBDb21wdW5kIEZpbGUgU2VjdG9yIE51bWJlcnMgYW5kIFR5cGVzICovXG5cdE1BWFJFR1NFQ1Q6IC02LFxuXHRESUZTRUNUOiAtNCxcblx0RkFUU0VDVDogLTMsXG5cdEVORE9GQ0hBSU46IEVORE9GQ0hBSU4sXG5cdEZSRUVTRUNUOiAtMSxcblx0LyogMi4yIENvbXBvdW5kIEZpbGUgSGVhZGVyICovXG5cdEhFQURFUl9TSUdOQVRVUkU6IEhFQURFUl9TSUdOQVRVUkUsXG5cdEhFQURFUl9NSU5PUl9WRVJTSU9OOiAnM2UwMCcsXG5cdE1BWFJFR1NJRDogLTYsXG5cdE5PU1RSRUFNOiAtMSxcblx0SEVBREVSX0NMU0lEOiBIRUFERVJfQ0xTSUQsXG5cdC8qIDIuNi4xIENvbXBvdW5kIEZpbGUgRGlyZWN0b3J5IEVudHJ5ICovXG5cdEVudHJ5VHlwZXM6IFsndW5rbm93bicsJ3N0b3JhZ2UnLCdzdHJlYW0nLCdsb2NrYnl0ZXMnLCdwcm9wZXJ0eScsJ3Jvb3QnXVxufTtcblxuZnVuY3Rpb24gd3JpdGVfZmlsZShjZmIvKjpDRkJDb250YWluZXIqLywgZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOnZvaWQqLyB7XG5cdGdldF9mcygpO1xuXHR2YXIgbyA9IF93cml0ZShjZmIsIG9wdGlvbnMpO1xuXHQvKjo6IGlmKHR5cGVvZiBCdWZmZXIgPT0gJ3VuZGVmaW5lZCcgfHwgIUJ1ZmZlci5pc0J1ZmZlcihvKSB8fCAhKG8gaW5zdGFuY2VvZiBCdWZmZXIpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0ZnMud3JpdGVGaWxlU3luYyhmaWxlbmFtZSwgbyk7XG59XG5cbmZ1bmN0aW9uIGEycyhvLyo6UmF3Qnl0ZXMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvdXQgPSBuZXcgQXJyYXkoby5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgby5sZW5ndGg7ICsraSkgb3V0W2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShvW2ldKTtcblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiB3cml0ZShjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOlJhd0J5dGVzfHN0cmluZyovIHtcblx0dmFyIG8gPSBfd3JpdGUoY2ZiLCBvcHRpb25zKTtcblx0c3dpdGNoKG9wdGlvbnMgJiYgb3B0aW9ucy50eXBlIHx8IFwiYnVmZmVyXCIpIHtcblx0XHRjYXNlIFwiZmlsZVwiOiBnZXRfZnMoKTsgZnMud3JpdGVGaWxlU3luYyhvcHRpb25zLmZpbGVuYW1lLCAoby8qOmFueSovKSk7IHJldHVybiBvO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogcmV0dXJuIHR5cGVvZiBvID09IFwic3RyaW5nXCIgPyBvIDogYTJzKG8pO1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIEJhc2U2NF9lbmNvZGUodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IG8gOiBhMnMobykpO1xuXHRcdGNhc2UgXCJidWZmZXJcIjogaWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvKSA/IG8gOiBCdWZmZXJfZnJvbShvKTtcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIFwiYXJyYXlcIjogcmV0dXJuIHR5cGVvZiBvID09IFwic3RyaW5nXCIgPyBzMmEobykgOiBvO1xuXHR9XG5cdHJldHVybiBvO1xufVxuLyogbm9kZSA8IDguMSB6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWQsIHNvIGRlZmF1bHQgdG8gcHVyZSBKUyAqL1xudmFyIF96bGliO1xuZnVuY3Rpb24gdXNlX3psaWIoemxpYikgeyB0cnkge1xuXHR2YXIgSW5mbGF0ZVJhdyA9IHpsaWIuSW5mbGF0ZVJhdztcblx0dmFyIEluZmxSYXcgPSBuZXcgSW5mbGF0ZVJhdygpO1xuXHRJbmZsUmF3Ll9wcm9jZXNzQ2h1bmsobmV3IFVpbnQ4QXJyYXkoWzMsIDBdKSwgSW5mbFJhdy5fZmluaXNoRmx1c2hGbGFnKTtcblx0aWYoSW5mbFJhdy5ieXRlc1JlYWQpIF96bGliID0gemxpYjtcblx0ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWRcIik7XG59IGNhdGNoKGUpIHtjb25zb2xlLmVycm9yKFwiY2Fubm90IHVzZSBuYXRpdmUgemxpYjogXCIgKyAoZS5tZXNzYWdlIHx8IGUpKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmZsYXRlUmF3U3luYyhwYXlsb2FkLCB1c3opIHtcblx0aWYoIV96bGliKSByZXR1cm4gX2luZmxhdGUocGF5bG9hZCwgdXN6KTtcblx0dmFyIEluZmxhdGVSYXcgPSBfemxpYi5JbmZsYXRlUmF3O1xuXHR2YXIgSW5mbFJhdyA9IG5ldyBJbmZsYXRlUmF3KCk7XG5cdHZhciBvdXQgPSBJbmZsUmF3Ll9wcm9jZXNzQ2h1bmsocGF5bG9hZC5zbGljZShwYXlsb2FkLmwpLCBJbmZsUmF3Ll9maW5pc2hGbHVzaEZsYWcpO1xuXHRwYXlsb2FkLmwgKz0gSW5mbFJhdy5ieXRlc1JlYWQ7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIF9kZWZsYXRlUmF3U3luYyhwYXlsb2FkKSB7XG5cdHJldHVybiBfemxpYiA/IF96bGliLmRlZmxhdGVSYXdTeW5jKHBheWxvYWQpIDogX2RlZmxhdGUocGF5bG9hZCk7XG59XG52YXIgQ0xFTl9PUkRFUiA9IFsgMTYsIDE3LCAxOCwgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNSBdO1xuXG4vKiAgTEVOX0lEID0gWyAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MSwgMjYyLCAyNjMsIDI2NCwgMjY1LCAyNjYsIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSBdOyAqL1xudmFyIExFTl9MTiA9IFsgICAzLCAgIDQsICAgNSwgICA2LCAgIDcsICAgOCwgICA5LCAgMTAsICAxMSwgIDEzICwgMTUsICAxNywgIDE5LCAgMjMsICAyNywgIDMxLCAgMzUsICA0MywgIDUxLCAgNTksICA2NywgIDgzLCAgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTggXTtcblxuLyogIERTVF9JRCA9IFsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAgMTQsICAxNSwgIDE2LCAgMTcsICAxOCwgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5IF07ICovXG52YXIgRFNUX0xOID0gWyAgMSwgIDIsICAzLCAgNCwgIDUsICA3LCAgOSwgMTMsIDE3LCAyNSwgMzMsIDQ5LCA2NSwgOTcsIDEyOSwgMTkzLCAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1NzcgXTtcblxuZnVuY3Rpb24gYml0X3N3YXBfOChuKSB7IHZhciB0ID0gKCgoKChuPDwxKXwobjw8MTEpKSAmIDB4MjIxMTApIHwgKCgobjw8NSl8KG48PDE1KSkgJiAweDg4NDQwKSkpOyByZXR1cm4gKCh0Pj4xNikgfCAodD4+OCkgfHQpJjB4RkY7IH1cblxudmFyIHVzZV90eXBlZF9hcnJheXMgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCc7XG5cbnZhciBiaXRzd2FwOCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSgxPDw4KSA6IFtdO1xuZm9yKHZhciBxID0gMDsgcSA8ICgxPDw4KTsgKytxKSBiaXRzd2FwOFtxXSA9IGJpdF9zd2FwXzgocSk7XG5cbmZ1bmN0aW9uIGJpdF9zd2FwX24obiwgYikge1xuXHR2YXIgcmV2ID0gYml0c3dhcDhbbiAmIDB4RkZdO1xuXHRpZihiIDw9IDgpIHJldHVybiByZXYgPj4+ICg4LWIpO1xuXHRyZXYgPSAocmV2IDw8IDgpIHwgYml0c3dhcDhbKG4+PjgpJjB4RkZdO1xuXHRpZihiIDw9IDE2KSByZXR1cm4gcmV2ID4+PiAoMTYtYik7XG5cdHJldiA9IChyZXYgPDwgOCkgfCBiaXRzd2FwOFsobj4+MTYpJjB4RkZdO1xuXHRyZXR1cm4gcmV2ID4+PiAoMjQtYik7XG59XG5cbi8qIGhlbHBlcnMgZm9yIHVuYWxpZ25lZCBiaXQgcmVhZHMgKi9cbmZ1bmN0aW9uIHJlYWRfYml0c18yKGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDYgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDAzOyB9XG5mdW5jdGlvbiByZWFkX2JpdHNfMyhidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSA1ID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgwNzsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzQoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gNCA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4MEY7IH1cbmZ1bmN0aW9uIHJlYWRfYml0c181KGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDMgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDFGOyB9XG5mdW5jdGlvbiByZWFkX2JpdHNfNyhidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSAxID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHg3RjsgfVxuXG4vKiB3b3JrcyB1cCB0byBuID0gMyAqIDggKyAxID0gMjUgKi9cbmZ1bmN0aW9uIHJlYWRfYml0c19uKGJ1ZiwgYmwsIG4pIHtcblx0dmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKSwgZiA9ICgoMTw8biktMSk7XG5cdHZhciB2ID0gYnVmW2hdID4+PiB3O1xuXHRpZihuIDwgOCAtIHcpIHJldHVybiB2ICYgZjtcblx0diB8PSBidWZbaCsxXTw8KDgtdyk7XG5cdGlmKG4gPCAxNiAtIHcpIHJldHVybiB2ICYgZjtcblx0diB8PSBidWZbaCsyXTw8KDE2LXcpO1xuXHRpZihuIDwgMjQgLSB3KSByZXR1cm4gdiAmIGY7XG5cdHYgfD0gYnVmW2grM108PCgyNC13KTtcblx0cmV0dXJuIHYgJiBmO1xufVxuXG4vKiBoZWxwZXJzIGZvciB1bmFsaWduZWQgYml0IHdyaXRlcyAqL1xuZnVuY3Rpb24gd3JpdGVfYml0c18zKGJ1ZiwgYmwsIHYpIHsgdmFyIHcgPSBibCAmIDcsIGggPSBibCA+Pj4gMztcblx0aWYodyA8PSA1KSBidWZbaF0gfD0gKHYgJiA3KSA8PCB3O1xuXHRlbHNlIHtcblx0XHRidWZbaF0gfD0gKHYgPDwgdykgJiAweEZGO1xuXHRcdGJ1ZltoKzFdID0gKHYmNykgPj4gKDgtdyk7XG5cdH1cblx0cmV0dXJuIGJsICsgMztcbn1cblxuZnVuY3Rpb24gd3JpdGVfYml0c18xKGJ1ZiwgYmwsIHYpIHtcblx0dmFyIHcgPSBibCAmIDcsIGggPSBibCA+Pj4gMztcblx0diA9ICh2JjEpIDw8IHc7XG5cdGJ1ZltoXSB8PSB2O1xuXHRyZXR1cm4gYmwgKyAxO1xufVxuZnVuY3Rpb24gd3JpdGVfYml0c184KGJ1ZiwgYmwsIHYpIHtcblx0dmFyIHcgPSBibCAmIDcsIGggPSBibCA+Pj4gMztcblx0diA8PD0gdztcblx0YnVmW2hdIHw9ICB2ICYgMHhGRjsgdiA+Pj49IDg7XG5cdGJ1ZltoKzFdID0gdjtcblx0cmV0dXJuIGJsICsgODtcbn1cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfMTYoYnVmLCBibCwgdikge1xuXHR2YXIgdyA9IGJsICYgNywgaCA9IGJsID4+PiAzO1xuXHR2IDw8PSB3O1xuXHRidWZbaF0gfD0gIHYgJiAweEZGOyB2ID4+Pj0gODtcblx0YnVmW2grMV0gPSB2ICYgMHhGRjtcblx0YnVmW2grMl0gPSB2ID4+PiA4O1xuXHRyZXR1cm4gYmwgKyAxNjtcbn1cblxuLyogdW50aWwgQXJyYXlCdWZmZXIjcmVhbGxvYyBpcyBhIHRoaW5nLCBmYWtlIGEgcmVhbGxvYyAqL1xuZnVuY3Rpb24gcmVhbGxvYyhiLCBzei8qOm51bWJlciovKSB7XG5cdHZhciBMID0gYi5sZW5ndGgsIE0gPSAyKkwgPiBzeiA/IDIqTCA6IHN6ICsgNSwgaSA9IDA7XG5cdGlmKEwgPj0gc3opIHJldHVybiBiO1xuXHRpZihoYXNfYnVmKSB7XG5cdFx0dmFyIG8gPSBuZXdfdW5zYWZlX2J1ZihNKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGlmKGIuY29weSkgYi5jb3B5KG8pO1xuXHRcdGVsc2UgZm9yKDsgaSA8IGIubGVuZ3RoOyArK2kpIG9baV0gPSBiW2ldO1xuXHRcdHJldHVybiBvO1xuXHR9IGVsc2UgaWYodXNlX3R5cGVkX2FycmF5cykge1xuXHRcdHZhciBhID0gbmV3IFVpbnQ4QXJyYXkoTSk7XG5cdFx0aWYoYS5zZXQpIGEuc2V0KGIpO1xuXHRcdGVsc2UgZm9yKDsgaSA8IEw7ICsraSkgYVtpXSA9IGJbaV07XG5cdFx0cmV0dXJuIGE7XG5cdH1cblx0Yi5sZW5ndGggPSBNO1xuXHRyZXR1cm4gYjtcbn1cblxuLyogemVyby1maWxsZWQgYXJyYXlzIGZvciBvbGRlciBicm93c2VycyAqL1xuZnVuY3Rpb24gemVyb19maWxsX2FycmF5KG4pIHtcblx0dmFyIG8gPSBuZXcgQXJyYXkobik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuOyArK2kpIG9baV0gPSAwO1xuXHRyZXR1cm4gbztcbn1cblxuLyogYnVpbGQgdHJlZSAodXNlZCBmb3IgbGl0ZXJhbHMgYW5kIGxlbmd0aHMpICovXG5mdW5jdGlvbiBidWlsZF90cmVlKGNsZW5zLCBjbWFwLCBNQVgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBtYXhsZW4gPSAxLCB3ID0gMCwgaSA9IDAsIGogPSAwLCBjY29kZSA9IDAsIEwgPSBjbGVucy5sZW5ndGg7XG5cblx0dmFyIGJsX2NvdW50ICA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMzIpIDogemVyb19maWxsX2FycmF5KDMyKTtcblx0Zm9yKGkgPSAwOyBpIDwgMzI7ICsraSkgYmxfY291bnRbaV0gPSAwO1xuXG5cdGZvcihpID0gTDsgaSA8IE1BWDsgKytpKSBjbGVuc1tpXSA9IDA7XG5cdEwgPSBjbGVucy5sZW5ndGg7XG5cblx0dmFyIGN0cmVlID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheShMKSA6IHplcm9fZmlsbF9hcnJheShMKTsgLy8gW11cblxuXHQvKiBidWlsZCBjb2RlIHRyZWUgKi9cblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0YmxfY291bnRbKHcgPSBjbGVuc1tpXSldKys7XG5cdFx0aWYobWF4bGVuIDwgdykgbWF4bGVuID0gdztcblx0XHRjdHJlZVtpXSA9IDA7XG5cdH1cblx0YmxfY291bnRbMF0gPSAwO1xuXHRmb3IoaSA9IDE7IGkgPD0gbWF4bGVuOyArK2kpIGJsX2NvdW50W2krMTZdID0gKGNjb2RlID0gKGNjb2RlICsgYmxfY291bnRbaS0xXSk8PDEpO1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIHtcblx0XHRjY29kZSA9IGNsZW5zW2ldO1xuXHRcdGlmKGNjb2RlICE9IDApIGN0cmVlW2ldID0gYmxfY291bnRbY2NvZGUrMTZdKys7XG5cdH1cblxuXHQvKiBjbWFwW21heGxlbiArIDQgYml0c10gPSAob2ZmJjE1KSArIChsaXQ8PDQpIHJldmVyc2UgbWFwcGluZyAqL1xuXHR2YXIgY2xlbmkgPSAwO1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIHtcblx0XHRjbGVuaSA9IGNsZW5zW2ldO1xuXHRcdGlmKGNsZW5pICE9IDApIHtcblx0XHRcdGNjb2RlID0gYml0X3N3YXBfbihjdHJlZVtpXSwgbWF4bGVuKT4+KG1heGxlbi1jbGVuaSk7XG5cdFx0XHRmb3IoaiA9ICgxPDwobWF4bGVuICsgNCAtIGNsZW5pKSkgLSAxOyBqPj0wOyAtLWopXG5cdFx0XHRcdGNtYXBbY2NvZGV8KGo8PGNsZW5pKV0gPSAoY2xlbmkmMTUpIHwgKGk8PDQpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWF4bGVuO1xufVxuXG4vKiBGaXhlZCBIdWZmbWFuICovXG52YXIgZml4X2xtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDUxMikgOiB6ZXJvX2ZpbGxfYXJyYXkoNTEyKTtcbnZhciBmaXhfZG1hcCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMzIpICA6IHplcm9fZmlsbF9hcnJheSgzMik7XG5pZighdXNlX3R5cGVkX2FycmF5cykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgNTEyOyArK2kpIGZpeF9sbWFwW2ldID0gMDtcblx0Zm9yKGkgPSAwOyBpIDwgMzI7ICsraSkgZml4X2RtYXBbaV0gPSAwO1xufVxuKGZ1bmN0aW9uKCkge1xuXHR2YXIgZGxlbnMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0dmFyIGkgPSAwO1xuXHRmb3IoO2k8MzI7IGkrKykgZGxlbnMucHVzaCg1KTtcblx0YnVpbGRfdHJlZShkbGVucywgZml4X2RtYXAsIDMyKTtcblxuXHR2YXIgY2xlbnMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0aSA9IDA7XG5cdGZvcig7IGk8PTE0MzsgaSsrKSBjbGVucy5wdXNoKDgpO1xuXHRmb3IoOyBpPD0yNTU7IGkrKykgY2xlbnMucHVzaCg5KTtcblx0Zm9yKDsgaTw9Mjc5OyBpKyspIGNsZW5zLnB1c2goNyk7XG5cdGZvcig7IGk8PTI4NzsgaSsrKSBjbGVucy5wdXNoKDgpO1xuXHRidWlsZF90cmVlKGNsZW5zLCBmaXhfbG1hcCwgMjg4KTtcbn0pKCk7dmFyIF9kZWZsYXRlUmF3ID0gLyojX19QVVJFX18qLyhmdW5jdGlvbiBfZGVmbGF0ZVJhd0lJRkUoKSB7XG5cdHZhciBEU1RfTE5fUkUgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMHg4MDAwKSA6IFtdO1xuXHR2YXIgaiA9IDAsIGsgPSAwO1xuXHRmb3IoOyBqIDwgRFNUX0xOLmxlbmd0aCAtIDE7ICsraikge1xuXHRcdGZvcig7IGsgPCBEU1RfTE5baisxXTsgKytrKSBEU1RfTE5fUkVba10gPSBqO1xuXHR9XG5cdGZvcig7ayA8IDMyNzY4OyArK2spIERTVF9MTl9SRVtrXSA9IDI5O1xuXG5cdHZhciBMRU5fTE5fUkUgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMHgxMDMpIDogW107XG5cdGZvcihqID0gMCwgayA9IDA7IGogPCBMRU5fTE4ubGVuZ3RoIC0gMTsgKytqKSB7XG5cdFx0Zm9yKDsgayA8IExFTl9MTltqKzFdOyArK2spIExFTl9MTl9SRVtrXSA9IGo7XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV9zdG9yZWQoZGF0YSwgb3V0KSB7XG5cdFx0dmFyIGJvZmYgPSAwO1xuXHRcdHdoaWxlKGJvZmYgPCBkYXRhLmxlbmd0aCkge1xuXHRcdFx0dmFyIEwgPSBNYXRoLm1pbigweEZGRkYsIGRhdGEubGVuZ3RoIC0gYm9mZik7XG5cdFx0XHR2YXIgaCA9IGJvZmYgKyBMID09IGRhdGEubGVuZ3RoO1xuXHRcdFx0b3V0LndyaXRlX3NoaWZ0KDEsICtoKTtcblx0XHRcdG91dC53cml0ZV9zaGlmdCgyLCBMKTtcblx0XHRcdG91dC53cml0ZV9zaGlmdCgyLCAofkwpICYgMHhGRkZGKTtcblx0XHRcdHdoaWxlKEwtLSA+IDApIG91dFtvdXQubCsrXSA9IGRhdGFbYm9mZisrXTtcblx0XHR9XG5cdFx0cmV0dXJuIG91dC5sO1xuXHR9XG5cblx0LyogRml4ZWQgSHVmZm1hbiAqL1xuXHRmdW5jdGlvbiB3cml0ZV9odWZmX2ZpeGVkKGRhdGEsIG91dCkge1xuXHRcdHZhciBibCA9IDA7XG5cdFx0dmFyIGJvZmYgPSAwO1xuXHRcdHZhciBhZGRycyA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMHg4MDAwKSA6IFtdO1xuXHRcdHdoaWxlKGJvZmYgPCBkYXRhLmxlbmd0aCkge1xuXHRcdFx0dmFyIEwgPSAvKiBkYXRhLmxlbmd0aCAtIGJvZmY7ICovIE1hdGgubWluKDB4RkZGRiwgZGF0YS5sZW5ndGggLSBib2ZmKTtcblxuXHRcdFx0Lyogd3JpdGUgYSBzdG9yZWQgYmxvY2sgZm9yIHNob3J0IGRhdGEgKi9cblx0XHRcdGlmKEwgPCAxMCkge1xuXHRcdFx0XHRibCA9IHdyaXRlX2JpdHNfMyhvdXQsIGJsLCArISEoYm9mZiArIEwgPT0gZGF0YS5sZW5ndGgpKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cdFx0XHRcdGlmKGJsICYgNykgYmwgKz0gOCAtIChibCAmIDcpO1xuXHRcdFx0XHRvdXQubCA9IChibCAvIDgpIHwgMDtcblx0XHRcdFx0b3V0LndyaXRlX3NoaWZ0KDIsIEwpO1xuXHRcdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgKH5MKSAmIDB4RkZGRik7XG5cdFx0XHRcdHdoaWxlKEwtLSA+IDApIG91dFtvdXQubCsrXSA9IGRhdGFbYm9mZisrXTtcblx0XHRcdFx0YmwgPSBvdXQubCAqIDg7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRibCA9IHdyaXRlX2JpdHNfMyhvdXQsIGJsLCArISEoYm9mZiArIEwgPT0gZGF0YS5sZW5ndGgpICsgMik7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXHRcdFx0dmFyIGhhc2ggPSAwO1xuXHRcdFx0d2hpbGUoTC0tID4gMCkge1xuXHRcdFx0XHR2YXIgZCA9IGRhdGFbYm9mZl07XG5cdFx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgXiBkKSAmIDB4N0ZGRjtcblxuXHRcdFx0XHR2YXIgbWF0Y2ggPSAtMSwgbWxlbiA9IDA7XG5cblx0XHRcdFx0aWYoKG1hdGNoID0gYWRkcnNbaGFzaF0pKSB7XG5cdFx0XHRcdFx0bWF0Y2ggfD0gYm9mZiAmIH4weDdGRkY7XG5cdFx0XHRcdFx0aWYobWF0Y2ggPiBib2ZmKSBtYXRjaCAtPSAweDgwMDA7XG5cdFx0XHRcdFx0aWYobWF0Y2ggPCBib2ZmKSB3aGlsZShkYXRhW21hdGNoICsgbWxlbl0gPT0gZGF0YVtib2ZmICsgbWxlbl0gJiYgbWxlbiA8IDI1MCkgKyttbGVuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYobWxlbiA+IDIpIHtcblx0XHRcdFx0XHQvKiBDb3B5IFRva2VuICAqL1xuXHRcdFx0XHRcdGQgPSBMRU5fTE5fUkVbbWxlbl07XG5cdFx0XHRcdFx0aWYoZCA8PSAyMikgYmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZCsxXT4+MSkgLSAxO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0d3JpdGVfYml0c184KG91dCwgYmwsIDMpO1xuXHRcdFx0XHRcdFx0YmwgKz0gNTtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfOChvdXQsIGJsLCBiaXRzd2FwOFtkLTIzXT4+NSk7XG5cdFx0XHRcdFx0XHRibCArPSAzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgbGVuX2ViID0gKGQgPCA4KSA/IDAgOiAoKGQgLSA0KT4+Mik7XG5cdFx0XHRcdFx0aWYobGVuX2ViID4gMCkge1xuXHRcdFx0XHRcdFx0d3JpdGVfYml0c18xNihvdXQsIGJsLCBtbGVuIC0gTEVOX0xOW2RdKTtcblx0XHRcdFx0XHRcdGJsICs9IGxlbl9lYjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRkID0gRFNUX0xOX1JFW2JvZmYgLSBtYXRjaF07XG5cdFx0XHRcdFx0YmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZF0+PjMpO1xuXHRcdFx0XHRcdGJsIC09IDM7XG5cblx0XHRcdFx0XHR2YXIgZHN0X2ViID0gZCA8IDQgPyAwIDogKGQtMik+PjE7XG5cdFx0XHRcdFx0aWYoZHN0X2ViID4gMCkge1xuXHRcdFx0XHRcdFx0d3JpdGVfYml0c18xNihvdXQsIGJsLCBib2ZmIC0gbWF0Y2ggLSBEU1RfTE5bZF0pO1xuXHRcdFx0XHRcdFx0YmwgKz0gZHN0X2ViO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmb3IodmFyIHEgPSAwOyBxIDwgbWxlbjsgKytxKSB7XG5cdFx0XHRcdFx0XHRhZGRyc1toYXNoXSA9IGJvZmYgJiAweDdGRkY7XG5cdFx0XHRcdFx0XHRoYXNoID0gKChoYXNoIDw8IDUpIF4gZGF0YVtib2ZmXSkgJiAweDdGRkY7XG5cdFx0XHRcdFx0XHQrK2JvZmY7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEwtPSBtbGVuIC0gMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvKiBMaXRlcmFsIFRva2VuICovXG5cdFx0XHRcdFx0aWYoZCA8PSAxNDMpIGQgPSBkICsgNDg7XG5cdFx0XHRcdFx0ZWxzZSBibCA9IHdyaXRlX2JpdHNfMShvdXQsIGJsLCAxKTtcblx0XHRcdFx0XHRibCA9IHdyaXRlX2JpdHNfOChvdXQsIGJsLCBiaXRzd2FwOFtkXSk7XG5cdFx0XHRcdFx0YWRkcnNbaGFzaF0gPSBib2ZmICYgMHg3RkZGO1xuXHRcdFx0XHRcdCsrYm9mZjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRibCA9IHdyaXRlX2JpdHNfOChvdXQsIGJsLCAwKSAtIDE7XG5cdFx0fVxuXHRcdG91dC5sID0gKChibCArIDcpLzgpfDA7XG5cdFx0cmV0dXJuIG91dC5sO1xuXHR9XG5cdHJldHVybiBmdW5jdGlvbiBfZGVmbGF0ZVJhdyhkYXRhLCBvdXQpIHtcblx0XHRpZihkYXRhLmxlbmd0aCA8IDgpIHJldHVybiB3cml0ZV9zdG9yZWQoZGF0YSwgb3V0KTtcblx0XHRyZXR1cm4gd3JpdGVfaHVmZl9maXhlZChkYXRhLCBvdXQpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gX2RlZmxhdGUoZGF0YSkge1xuXHR2YXIgYnVmID0gbmV3X2J1Zig1MCtNYXRoLmZsb29yKGRhdGEubGVuZ3RoKjEuMSkpO1xuXHR2YXIgb2ZmID0gX2RlZmxhdGVSYXcoZGF0YSwgYnVmKTtcblx0cmV0dXJuIGJ1Zi5zbGljZSgwLCBvZmYpO1xufVxuLyogbW9kaWZpZWQgaW5mbGF0ZSBmdW5jdGlvbiBhbHNvIG1vdmVzIG9yaWdpbmFsIHJlYWQgaGVhZCAqL1xuXG52YXIgZHluX2xtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyNzY4KSA6IHplcm9fZmlsbF9hcnJheSgzMjc2OCk7XG52YXIgZHluX2RtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyNzY4KSA6IHplcm9fZmlsbF9hcnJheSgzMjc2OCk7XG52YXIgZHluX2NtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDEyOCkgICA6IHplcm9fZmlsbF9hcnJheSgxMjgpO1xudmFyIGR5bl9sZW5fMSA9IDEsIGR5bl9sZW5fMiA9IDE7XG5cbi8qIDUuNS4zIEV4cGFuZGluZyBIdWZmbWFuIENvZGVzICovXG5mdW5jdGlvbiBkeW4oZGF0YSwgYm9mZi8qOm51bWJlciovKSB7XG5cdC8qIG5vbWVuY2xhdHVyZSBmcm9tIFJGQzE5NTEgcmVmZXJzIHRvIGJpdCB2YWx1ZXM7IHRoZXNlIGFyZSBvZmZzZXQgYnkgdGhlIGltcGxpY2l0IGNvbnN0YW50ICovXG5cdHZhciBfSExJVCA9IHJlYWRfYml0c181KGRhdGEsIGJvZmYpICsgMjU3OyBib2ZmICs9IDU7XG5cdHZhciBfSERJU1QgPSByZWFkX2JpdHNfNShkYXRhLCBib2ZmKSArIDE7IGJvZmYgKz0gNTtcblx0dmFyIF9IQ0xFTiA9IHJlYWRfYml0c180KGRhdGEsIGJvZmYpICsgNDsgYm9mZiArPSA0O1xuXHR2YXIgdyA9IDA7XG5cblx0LyogZ3JhYiBhbmQgc3RvcmUgY29kZSBsZW5ndGhzICovXG5cdHZhciBjbGVucyA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSgxOSkgOiB6ZXJvX2ZpbGxfYXJyYXkoMTkpO1xuXHR2YXIgY3RyZWUgPSBbIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgXTtcblx0dmFyIG1heGxlbiA9IDE7XG5cdHZhciBibF9jb3VudCA9ICB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoOCkgOiB6ZXJvX2ZpbGxfYXJyYXkoOCk7XG5cdHZhciBuZXh0X2NvZGUgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoOCkgOiB6ZXJvX2ZpbGxfYXJyYXkoOCk7XG5cdHZhciBMID0gY2xlbnMubGVuZ3RoOyAvKiAxOSAqL1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgX0hDTEVOOyArK2kpIHtcblx0XHRjbGVuc1tDTEVOX09SREVSW2ldXSA9IHcgPSByZWFkX2JpdHNfMyhkYXRhLCBib2ZmKTtcblx0XHRpZihtYXhsZW4gPCB3KSBtYXhsZW4gPSB3O1xuXHRcdGJsX2NvdW50W3ddKys7XG5cdFx0Ym9mZiArPSAzO1xuXHR9XG5cblx0LyogYnVpbGQgY29kZSB0cmVlICovXG5cdHZhciBjY29kZSA9IDA7XG5cdGJsX2NvdW50WzBdID0gMDtcblx0Zm9yKGkgPSAxOyBpIDw9IG1heGxlbjsgKytpKSBuZXh0X2NvZGVbaV0gPSBjY29kZSA9IChjY29kZSArIGJsX2NvdW50W2ktMV0pPDwxO1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIGlmKChjY29kZSA9IGNsZW5zW2ldKSAhPSAwKSBjdHJlZVtpXSA9IG5leHRfY29kZVtjY29kZV0rKztcblx0LyogY21hcFs3IGJpdHMgZnJvbSBzdHJlYW1dID0gKG9mZiY3KSArIChsaXQ8PDMpICovXG5cdHZhciBjbGVuaSA9IDA7XG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkge1xuXHRcdGNsZW5pID0gY2xlbnNbaV07XG5cdFx0aWYoY2xlbmkgIT0gMCkge1xuXHRcdFx0Y2NvZGUgPSBiaXRzd2FwOFtjdHJlZVtpXV0+Pig4LWNsZW5pKTtcblx0XHRcdGZvcih2YXIgaiA9ICgxPDwoNy1jbGVuaSkpLTE7IGo+PTA7IC0taikgZHluX2NtYXBbY2NvZGV8KGo8PGNsZW5pKV0gPSAoY2xlbmkmNykgfCAoaTw8Myk7XG5cdFx0fVxuXHR9XG5cblx0LyogcmVhZCBsaXRlcmFsIGFuZCBkaXN0IGNvZGVzIGF0IG9uY2UgKi9cblx0dmFyIGhjb2Rlcy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHRtYXhsZW4gPSAxO1xuXHRmb3IoOyBoY29kZXMubGVuZ3RoIDwgX0hMSVQgKyBfSERJU1Q7KSB7XG5cdFx0Y2NvZGUgPSBkeW5fY21hcFtyZWFkX2JpdHNfNyhkYXRhLCBib2ZmKV07XG5cdFx0Ym9mZiArPSBjY29kZSAmIDc7XG5cdFx0c3dpdGNoKChjY29kZSA+Pj49IDMpKSB7XG5cdFx0XHRjYXNlIDE2OlxuXHRcdFx0XHR3ID0gMyArIHJlYWRfYml0c18yKGRhdGEsIGJvZmYpOyBib2ZmICs9IDI7XG5cdFx0XHRcdGNjb2RlID0gaGNvZGVzW2hjb2Rlcy5sZW5ndGggLSAxXTtcblx0XHRcdFx0d2hpbGUody0tID4gMCkgaGNvZGVzLnB1c2goY2NvZGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTc6XG5cdFx0XHRcdHcgPSAzICsgcmVhZF9iaXRzXzMoZGF0YSwgYm9mZik7IGJvZmYgKz0gMztcblx0XHRcdFx0d2hpbGUody0tID4gMCkgaGNvZGVzLnB1c2goMCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxODpcblx0XHRcdFx0dyA9IDExICsgcmVhZF9iaXRzXzcoZGF0YSwgYm9mZik7IGJvZmYgKz0gNztcblx0XHRcdFx0d2hpbGUodyAtLSA+IDApIGhjb2Rlcy5wdXNoKDApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGhjb2Rlcy5wdXNoKGNjb2RlKTtcblx0XHRcdFx0aWYobWF4bGVuIDwgY2NvZGUpIG1heGxlbiA9IGNjb2RlO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHQvKiBidWlsZCBsaXRlcmFsIC8gbGVuZ3RoIHRyZWVzICovXG5cdHZhciBoMSA9IGhjb2Rlcy5zbGljZSgwLCBfSExJVCksIGgyID0gaGNvZGVzLnNsaWNlKF9ITElUKTtcblx0Zm9yKGkgPSBfSExJVDsgaSA8IDI4NjsgKytpKSBoMVtpXSA9IDA7XG5cdGZvcihpID0gX0hESVNUOyBpIDwgMzA7ICsraSkgaDJbaV0gPSAwO1xuXHRkeW5fbGVuXzEgPSBidWlsZF90cmVlKGgxLCBkeW5fbG1hcCwgMjg2KTtcblx0ZHluX2xlbl8yID0gYnVpbGRfdHJlZShoMiwgZHluX2RtYXAsIDMwKTtcblx0cmV0dXJuIGJvZmY7XG59XG5cbi8qIHJldHVybiBbIGRhdGEsIGJ5dGVzUmVhZCBdICovXG5mdW5jdGlvbiBpbmZsYXRlKGRhdGEsIHVzei8qOm51bWJlciovKSB7XG5cdC8qIHNob3J0Y2lyY3VpdCBmb3IgZW1wdHkgYnVmZmVyIFsweDAzLCAweDAwXSAqL1xuXHRpZihkYXRhWzBdID09IDMgJiYgIShkYXRhWzFdICYgMHgzKSkgeyByZXR1cm4gW25ld19yYXdfYnVmKHVzeiksIDJdOyB9XG5cblx0LyogYml0IG9mZnNldCAqL1xuXHR2YXIgYm9mZiA9IDA7XG5cblx0LyogaGVhZGVyIGluY2x1ZGVzIGZpbmFsIGJpdCBhbmQgdHlwZSBiaXRzICovXG5cdHZhciBoZWFkZXIgPSAwO1xuXG5cdHZhciBvdXRidWYgPSBuZXdfdW5zYWZlX2J1Zih1c3ogPyB1c3ogOiAoMTw8MTgpKTtcblx0dmFyIHdvZmYgPSAwO1xuXHR2YXIgT0wgPSBvdXRidWYubGVuZ3RoPj4+MDtcblx0dmFyIG1heF9sZW5fMSA9IDAsIG1heF9sZW5fMiA9IDA7XG5cblx0d2hpbGUoKGhlYWRlciYxKSA9PSAwKSB7XG5cdFx0aGVhZGVyID0gcmVhZF9iaXRzXzMoZGF0YSwgYm9mZik7IGJvZmYgKz0gMztcblx0XHRpZigoaGVhZGVyID4+PiAxKSA9PSAwKSB7XG5cdFx0XHQvKiBTdG9yZWQgYmxvY2sgKi9cblx0XHRcdGlmKGJvZmYgJiA3KSBib2ZmICs9IDggLSAoYm9mZiY3KTtcblx0XHRcdC8qIDIgYnl0ZXMgc3osIDIgYnl0ZXMgYml0IGludmVyc2UgKi9cblx0XHRcdHZhciBzeiA9IGRhdGFbYm9mZj4+PjNdIHwgZGF0YVsoYm9mZj4+PjMpKzFdPDw4O1xuXHRcdFx0Ym9mZiArPSAzMjtcblx0XHRcdC8qIHB1c2ggc3ogYnl0ZXMgKi9cblx0XHRcdGlmKHN6ID4gMCkge1xuXHRcdFx0XHRpZighdXN6ICYmIE9MIDwgd29mZiArIHN6KSB7IG91dGJ1ZiA9IHJlYWxsb2Mob3V0YnVmLCB3b2ZmICsgc3opOyBPTCA9IG91dGJ1Zi5sZW5ndGg7IH1cblx0XHRcdFx0d2hpbGUoc3otLSA+IDApIHsgb3V0YnVmW3dvZmYrK10gPSBkYXRhW2JvZmY+Pj4zXTsgYm9mZiArPSA4OyB9XG5cdFx0XHR9XG5cdFx0XHRjb250aW51ZTtcblx0XHR9IGVsc2UgaWYoKGhlYWRlciA+PiAxKSA9PSAxKSB7XG5cdFx0XHQvKiBGaXhlZCBIdWZmbWFuICovXG5cdFx0XHRtYXhfbGVuXzEgPSA5OyBtYXhfbGVuXzIgPSA1O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvKiBEeW5hbWljIEh1ZmZtYW4gKi9cblx0XHRcdGJvZmYgPSBkeW4oZGF0YSwgYm9mZik7XG5cdFx0XHRtYXhfbGVuXzEgPSBkeW5fbGVuXzE7IG1heF9sZW5fMiA9IGR5bl9sZW5fMjtcblx0XHR9XG5cdFx0Zm9yKDs7KSB7IC8vIHdoaWxlKHRydWUpIGlzIGFwcGFyZW50bHkgb3V0IG9mIHZvZ3VlIGluIG1vZGVybiBKUyBjaXJjbGVzXG5cdFx0XHRpZighdXN6ICYmIChPTCA8IHdvZmYgKyAzMjc2NykpIHsgb3V0YnVmID0gcmVhbGxvYyhvdXRidWYsIHdvZmYgKyAzMjc2Nyk7IE9MID0gb3V0YnVmLmxlbmd0aDsgfVxuXHRcdFx0LyogaW5nZXN0IGNvZGUgYW5kIG1vdmUgcmVhZCBoZWFkICovXG5cdFx0XHR2YXIgYml0cyA9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIG1heF9sZW5fMSk7XG5cdFx0XHR2YXIgY29kZSA9IChoZWFkZXI+Pj4xKSA9PSAxID8gZml4X2xtYXBbYml0c10gOiBkeW5fbG1hcFtiaXRzXTtcblx0XHRcdGJvZmYgKz0gY29kZSAmIDE1OyBjb2RlID4+Pj0gNDtcblx0XHRcdC8qIDAtMjU1IGFyZSBsaXRlcmFscywgMjU2IGlzIGVuZCBvZiBibG9jayB0b2tlbiwgMjU3KyBhcmUgY29weSB0b2tlbnMgKi9cblx0XHRcdGlmKCgoY29kZT4+PjgpJjB4RkYpID09PSAwKSBvdXRidWZbd29mZisrXSA9IGNvZGU7XG5cdFx0XHRlbHNlIGlmKGNvZGUgPT0gMjU2KSBicmVhaztcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRjb2RlIC09IDI1Nztcblx0XHRcdFx0dmFyIGxlbl9lYiA9IChjb2RlIDwgOCkgPyAwIDogKChjb2RlLTQpPj4yKTsgaWYobGVuX2ViID4gNSkgbGVuX2ViID0gMDtcblx0XHRcdFx0dmFyIHRndCA9IHdvZmYgKyBMRU5fTE5bY29kZV07XG5cdFx0XHRcdC8qIGxlbmd0aCBleHRyYSBiaXRzICovXG5cdFx0XHRcdGlmKGxlbl9lYiA+IDApIHtcblx0XHRcdFx0XHR0Z3QgKz0gcmVhZF9iaXRzX24oZGF0YSwgYm9mZiwgbGVuX2ViKTtcblx0XHRcdFx0XHRib2ZmICs9IGxlbl9lYjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8qIGRpc3QgY29kZSAqL1xuXHRcdFx0XHRiaXRzID0gcmVhZF9iaXRzX24oZGF0YSwgYm9mZiwgbWF4X2xlbl8yKTtcblx0XHRcdFx0Y29kZSA9IChoZWFkZXI+Pj4xKSA9PSAxID8gZml4X2RtYXBbYml0c10gOiBkeW5fZG1hcFtiaXRzXTtcblx0XHRcdFx0Ym9mZiArPSBjb2RlICYgMTU7IGNvZGUgPj4+PSA0O1xuXHRcdFx0XHR2YXIgZHN0X2ViID0gKGNvZGUgPCA0ID8gMCA6IChjb2RlLTIpPj4xKTtcblx0XHRcdFx0dmFyIGRzdCA9IERTVF9MTltjb2RlXTtcblx0XHRcdFx0LyogZGlzdCBleHRyYSBiaXRzICovXG5cdFx0XHRcdGlmKGRzdF9lYiA+IDApIHtcblx0XHRcdFx0XHRkc3QgKz0gcmVhZF9iaXRzX24oZGF0YSwgYm9mZiwgZHN0X2ViKTtcblx0XHRcdFx0XHRib2ZmICs9IGRzdF9lYjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8qIGluIHRoZSBjb21tb24gY2FzZSwgbWFudWFsIGJ5dGUgY29weSBpcyBmYXN0ZXIgdGhhbiBUQSBzZXQgLyBCdWZmZXIgY29weSAqL1xuXHRcdFx0XHRpZighdXN6ICYmIE9MIDwgdGd0KSB7IG91dGJ1ZiA9IHJlYWxsb2Mob3V0YnVmLCB0Z3QgKyAxMDApOyBPTCA9IG91dGJ1Zi5sZW5ndGg7IH1cblx0XHRcdFx0d2hpbGUod29mZiA8IHRndCkgeyBvdXRidWZbd29mZl0gPSBvdXRidWZbd29mZiAtIGRzdF07ICsrd29mZjsgfVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZih1c3opIHJldHVybiBbb3V0YnVmLCAoYm9mZis3KT4+PjNdO1xuXHRyZXR1cm4gW291dGJ1Zi5zbGljZSgwLCB3b2ZmKSwgKGJvZmYrNyk+Pj4zXTtcbn1cblxuZnVuY3Rpb24gX2luZmxhdGUocGF5bG9hZCwgdXN6KSB7XG5cdHZhciBkYXRhID0gcGF5bG9hZC5zbGljZShwYXlsb2FkLmx8fDApO1xuXHR2YXIgb3V0ID0gaW5mbGF0ZShkYXRhLCB1c3opO1xuXHRwYXlsb2FkLmwgKz0gb3V0WzFdO1xuXHRyZXR1cm4gb3V0WzBdO1xufVxuXG5mdW5jdGlvbiB3YXJuX29yX3Rocm93KHdybiwgbXNnKSB7XG5cdGlmKHdybikgeyBpZih0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIGNvbnNvbGUuZXJyb3IobXNnKTsgfVxuXHRlbHNlIHRocm93IG5ldyBFcnJvcihtc2cpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV96aXAoZmlsZS8qOlJhd0J5dGVzKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKS8qOkNGQkNvbnRhaW5lciovIHtcblx0dmFyIGJsb2IvKjpDRkJsb2IqLyA9IC8qOjooKi9maWxlLyo6OiA6YW55KSovO1xuXHRwcmVwX2Jsb2IoYmxvYiwgMCk7XG5cblx0dmFyIEZpbGVJbmRleC8qOkNGQkZpbGVJbmRleCovID0gW10sIEZ1bGxQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbyA9IHtcblx0XHRGaWxlSW5kZXg6IEZpbGVJbmRleCxcblx0XHRGdWxsUGF0aHM6IEZ1bGxQYXRoc1xuXHR9O1xuXHRpbml0X2NmYihvLCB7IHJvb3Q6IG9wdGlvbnMucm9vdCB9KTtcblxuXHQvKiBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSwgc3RhcnQganVzdCBhZnRlciBzaWduYXR1cmUgKi9cblx0dmFyIGkgPSBibG9iLmxlbmd0aCAtIDQ7XG5cdHdoaWxlKChibG9iW2ldICE9IDB4NTAgfHwgYmxvYltpKzFdICE9IDB4NGIgfHwgYmxvYltpKzJdICE9IDB4MDUgfHwgYmxvYltpKzNdICE9IDB4MDYpICYmIGkgPj0gMCkgLS1pO1xuXHRibG9iLmwgPSBpICsgNDtcblxuXHQvKiBwYXJzZSBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgKi9cblx0YmxvYi5sICs9IDQ7XG5cdHZhciBmY250ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNjtcblx0dmFyIHN0YXJ0X2NkID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXG5cdC8qIHBhcnNlIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdGJsb2IubCA9IHN0YXJ0X2NkO1xuXG5cdGZvcihpID0gMDsgaSA8IGZjbnQ7ICsraSkge1xuXHRcdC8qIHRydXN0IGxvY2FsIGZpbGUgaGVhZGVyIGluc3RlYWQgb2YgQ0QgZW50cnkgKi9cblx0XHRibG9iLmwgKz0gMjA7XG5cdFx0dmFyIGNzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgdXN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBuYW1lbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdHZhciBlZnN6ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdHZhciBmY3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGJsb2IubCArPSA4O1xuXHRcdHZhciBvZmZzZXQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIEVGID0gcGFyc2VfZXh0cmFfZmllbGQoLyo6OigqL2Jsb2Iuc2xpY2UoYmxvYi5sK25hbWVsZW4sIGJsb2IubCtuYW1lbGVuK2Vmc3opLyo6OiA6YW55KSovKTtcblx0XHRibG9iLmwgKz0gbmFtZWxlbiArIGVmc3ogKyBmY3N6O1xuXG5cdFx0dmFyIEwgPSBibG9iLmw7XG5cdFx0YmxvYi5sID0gb2Zmc2V0ICsgNDtcblx0XHRwYXJzZV9sb2NhbF9maWxlKGJsb2IsIGNzeiwgdXN6LCBvLCBFRik7XG5cdFx0YmxvYi5sID0gTDtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxuXG4vKiBoZWFkIHN0YXJ0cyBqdXN0IGFmdGVyIGxvY2FsIGZpbGUgaGVhZGVyIHNpZ25hdHVyZSAqL1xuZnVuY3Rpb24gcGFyc2VfbG9jYWxfZmlsZShibG9iLyo6Q0ZCbG9iKi8sIGNzei8qOm51bWJlciovLCB1c3ovKjpudW1iZXIqLywgby8qOkNGQkNvbnRhaW5lciovLCBFRikge1xuXHQvKiBbbG9jYWwgZmlsZSBoZWFkZXJdICovXG5cdGJsb2IubCArPSAyO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBtZXRoID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZGF0ZSA9IHBhcnNlX2Rvc19kYXRlKGJsb2IpO1xuXG5cdGlmKGZsYWdzICYgMHgyMDQxKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBaSVAgZW5jcnlwdGlvblwiKTtcblx0dmFyIGNyYzMyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgX2NzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIF91c3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cblx0dmFyIG5hbWVsZW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBlZnN6ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXG5cdC8vIFRPRE86IGZsYWdzICYgKDE8PDExKSAvLyBVVEY4XG5cdHZhciBuYW1lID0gXCJcIjsgZm9yKHZhciBpID0gMDsgaSA8IG5hbWVsZW47ICsraSkgbmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJsb2JbYmxvYi5sKytdKTtcblx0aWYoZWZzeikge1xuXHRcdHZhciBlZiA9IHBhcnNlX2V4dHJhX2ZpZWxkKC8qOjooKi9ibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgZWZzeikvKjo6IDphbnkpKi8pO1xuXHRcdGlmKChlZlsweDU0NTVdfHx7fSkubXQpIGRhdGUgPSBlZlsweDU0NTVdLm10O1xuXHRcdGlmKCgoRUZ8fHt9KVsweDU0NTVdfHx7fSkubXQpIGRhdGUgPSBFRlsweDU0NTVdLm10O1xuXHR9XG5cdGJsb2IubCArPSBlZnN6O1xuXG5cdC8qIFtlbmNyeXB0aW9uIGhlYWRlcl0gKi9cblxuXHQvKiBbZmlsZSBkYXRhXSAqL1xuXHR2YXIgZGF0YSA9IGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwgKyBfY3N6KTtcblx0c3dpdGNoKG1ldGgpIHtcblx0XHRjYXNlIDg6IGRhdGEgPSBfaW5mbGF0ZVJhd1N5bmMoYmxvYiwgX3Vzeik7IGJyZWFrO1xuXHRcdGNhc2UgMDogYnJlYWs7IC8vIFRPRE86IHNjYW4gZm9yIG1hZ2ljIG51bWJlclxuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFpJUCBDb21wcmVzc2lvbiBtZXRob2QgXCIgKyBtZXRoKTtcblx0fVxuXG5cdC8qIFtkYXRhIGRlc2NyaXB0b3JdICovXG5cdHZhciB3cm4gPSBmYWxzZTtcblx0aWYoZmxhZ3MgJiA4KSB7XG5cdFx0Y3JjMzIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0aWYoY3JjMzIgPT0gMHgwODA3NGI1MCkgeyBjcmMzMiA9IGJsb2IucmVhZF9zaGlmdCg0KTsgd3JuID0gdHJ1ZTsgfVxuXHRcdF9jc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0X3VzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0fVxuXG5cdGlmKF9jc3ogIT0gY3N6KSB3YXJuX29yX3Rocm93KHdybiwgXCJCYWQgY29tcHJlc3NlZCBzaXplOiBcIiArIGNzeiArIFwiICE9IFwiICsgX2Nzeik7XG5cdGlmKF91c3ogIT0gdXN6KSB3YXJuX29yX3Rocm93KHdybiwgXCJCYWQgdW5jb21wcmVzc2VkIHNpemU6IFwiICsgdXN6ICsgXCIgIT0gXCIgKyBfdXN6KTtcblx0Ly92YXIgX2NyYzMyID0gQ1JDMzIuYnVmKGRhdGEsIDApO1xuXHQvL2lmKChjcmMzMj4+MCkgIT0gKF9jcmMzMj4+MCkpIHdhcm5fb3JfdGhyb3cod3JuLCBcIkJhZCBDUkMzMiBjaGVja3N1bTogXCIgKyBjcmMzMiArIFwiICE9IFwiICsgX2NyYzMyKTtcblx0Y2ZiX2FkZChvLCBuYW1lLCBkYXRhLCB7dW5zYWZlOiB0cnVlLCBtdDogZGF0ZX0pO1xufVxuZnVuY3Rpb24gd3JpdGVfemlwKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRpb25zLyo6Q0ZCV3JpdGVPcHRzKi8pLyo6UmF3Qnl0ZXMqLyB7XG5cdHZhciBfb3B0cyA9IG9wdGlvbnMgfHwge307XG5cdHZhciBvdXQgPSBbXSwgY2RpcnMgPSBbXTtcblx0dmFyIG8vKjpDRkJsb2IqLyA9IG5ld19idWYoMSk7XG5cdHZhciBtZXRob2QgPSAoX29wdHMuY29tcHJlc3Npb24gPyA4IDogMCksIGZsYWdzID0gMDtcblx0dmFyIGRlc2MgPSBmYWxzZTtcblx0aWYoZGVzYykgZmxhZ3MgfD0gODtcblx0dmFyIGkgPSAwLCBqID0gMDtcblxuXHR2YXIgc3RhcnRfY2QgPSAwLCBmY250ID0gMDtcblx0dmFyIHJvb3QgPSBjZmIuRnVsbFBhdGhzWzBdLCBmcCA9IHJvb3QsIGZpID0gY2ZiLkZpbGVJbmRleFswXTtcblx0dmFyIGNyY3MgPSBbXTtcblx0dmFyIHN6X2NkID0gMDtcblxuXHRmb3IoaSA9IDE7IGkgPCBjZmIuRnVsbFBhdGhzLmxlbmd0aDsgKytpKSB7XG5cdFx0ZnAgPSBjZmIuRnVsbFBhdGhzW2ldLnNsaWNlKHJvb3QubGVuZ3RoKTsgZmkgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdGlmKCFmaS5zaXplIHx8ICFmaS5jb250ZW50IHx8IGZwID09IFwiXFx1MDAwMVNoMzN0SjVcIikgY29udGludWU7XG5cdFx0dmFyIHN0YXJ0ID0gc3RhcnRfY2Q7XG5cblx0XHQvKiBUT0RPOiBDUDQzNyBmaWxlbmFtZSAqL1xuXHRcdHZhciBuYW1lYnVmID0gbmV3X2J1ZihmcC5sZW5ndGgpO1xuXHRcdGZvcihqID0gMDsgaiA8IGZwLmxlbmd0aDsgKytqKSBuYW1lYnVmLndyaXRlX3NoaWZ0KDEsIGZwLmNoYXJDb2RlQXQoaikgJiAweDdGKTtcblx0XHRuYW1lYnVmID0gbmFtZWJ1Zi5zbGljZSgwLCBuYW1lYnVmLmwpO1xuXHRcdGNyY3NbZmNudF0gPSBDUkMzMi5idWYoLyo6OigoKi9maS5jb250ZW50Lyo6Onx8W10pOmFueSkqLywgMCk7XG5cblx0XHR2YXIgb3V0YnVmID0gZmkuY29udGVudC8qOjp8fFtdKi87XG5cdFx0aWYobWV0aG9kID09IDgpIG91dGJ1ZiA9IF9kZWZsYXRlUmF3U3luYyhvdXRidWYpO1xuXG5cdFx0LyogbG9jYWwgZmlsZSBoZWFkZXIgKi9cblx0XHRvID0gbmV3X2J1ZigzMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAweDA0MDM0YjUwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDIwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIGZsYWdzKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIG1ldGhvZCk7XG5cdFx0LyogVE9ETzogbGFzdCBtb2QgZmlsZSB0aW1lL2RhdGUgKi9cblx0XHRpZihmaS5tdCkgd3JpdGVfZG9zX2RhdGUobywgZmkubXQpO1xuXHRcdGVsc2Ugby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCAoZmxhZ3MgJiA4KSA/IDAgOiBjcmNzW2ZjbnRdKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsICAoZmxhZ3MgJiA4KSA/IDAgOiBvdXRidWYubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsICAoZmxhZ3MgJiA4KSA/IDAgOiAvKjo6KCovZmkuY29udGVudC8qOjp8fFtdKSovLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBuYW1lYnVmLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblxuXHRcdHN0YXJ0X2NkICs9IG8ubGVuZ3RoO1xuXHRcdG91dC5wdXNoKG8pO1xuXHRcdHN0YXJ0X2NkICs9IG5hbWVidWYubGVuZ3RoO1xuXHRcdG91dC5wdXNoKG5hbWVidWYpO1xuXG5cdFx0LyogVE9ETzogZXh0cmEgZmllbGRzPyAqL1xuXG5cdFx0LyogVE9ETzogZW5jcnlwdGlvbiBoZWFkZXIgPyAqL1xuXG5cdFx0c3RhcnRfY2QgKz0gb3V0YnVmLmxlbmd0aDtcblx0XHRvdXQucHVzaChvdXRidWYpO1xuXG5cdFx0LyogZGF0YSBkZXNjcmlwdG9yICovXG5cdFx0aWYoZmxhZ3MgJiA4KSB7XG5cdFx0XHRvID0gbmV3X2J1ZigxMik7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KC00LCBjcmNzW2ZjbnRdKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoNCwgb3V0YnVmLmxlbmd0aCk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIC8qOjooKi9maS5jb250ZW50Lyo6Onx8W10pKi8ubGVuZ3RoKTtcblx0XHRcdHN0YXJ0X2NkICs9IG8ubDtcblx0XHRcdG91dC5wdXNoKG8pO1xuXHRcdH1cblxuXHRcdC8qIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdFx0byA9IG5ld19idWYoNDYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMHgwMjAxNGI1MCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDIwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIGZsYWdzKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIG1ldGhvZCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTsgLyogVE9ETzogbGFzdCBtb2QgZmlsZSB0aW1lL2RhdGUgKi9cblx0XHRvLndyaXRlX3NoaWZ0KC00LCBjcmNzW2ZjbnRdKTtcblxuXHRcdG8ud3JpdGVfc2hpZnQoNCwgb3V0YnVmLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAvKjo6KCovZmkuY29udGVudC8qOjp8fFtdKSovLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBuYW1lYnVmLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgc3RhcnQpO1xuXG5cdFx0c3pfY2QgKz0gby5sO1xuXHRcdGNkaXJzLnB1c2gobyk7XG5cdFx0c3pfY2QgKz0gbmFtZWJ1Zi5sZW5ndGg7XG5cdFx0Y2RpcnMucHVzaChuYW1lYnVmKTtcblx0XHQrK2ZjbnQ7XG5cdH1cblxuXHQvKiBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgKi9cblx0byA9IG5ld19idWYoMjIpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4MDYwNTRiNTApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZjbnQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZjbnQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHN6X2NkKTtcblx0by53cml0ZV9zaGlmdCg0LCBzdGFydF9jZCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cblx0cmV0dXJuIGJjb25jYXQoKFtiY29uY2F0KChvdXQvKjphbnkqLykpLCBiY29uY2F0KGNkaXJzKSwgb10vKjphbnkqLykpO1xufVxudmFyIENvbnRlbnRUeXBlTWFwID0gKHtcblx0XCJodG1cIjogXCJ0ZXh0L2h0bWxcIixcblx0XCJ4bWxcIjogXCJ0ZXh0L3htbFwiLFxuXG5cdFwiZ2lmXCI6IFwiaW1hZ2UvZ2lmXCIsXG5cdFwianBnXCI6IFwiaW1hZ2UvanBlZ1wiLFxuXHRcInBuZ1wiOiBcImltYWdlL3BuZ1wiLFxuXG5cdFwibXNvXCI6IFwiYXBwbGljYXRpb24veC1tc29cIixcblx0XCJ0aG14XCI6IFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lXCIsXG5cdFwic2gzM3RqNVwiOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG59Lyo6YW55Ki8pO1xuXG5mdW5jdGlvbiBnZXRfY29udGVudF90eXBlKGZpLyo6Q0ZCRW50cnkqLywgZnAvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKGZpLmN0eXBlKSByZXR1cm4gZmkuY3R5cGU7XG5cblx0dmFyIGV4dCA9IGZpLm5hbWUgfHwgXCJcIiwgbSA9IGV4dC5tYXRjaCgvXFwuKFteXFwuXSspJC8pO1xuXHRpZihtICYmIENvbnRlbnRUeXBlTWFwW21bMV1dKSByZXR1cm4gQ29udGVudFR5cGVNYXBbbVsxXV07XG5cblx0aWYoZnApIHtcblx0XHRtID0gKGV4dCA9IGZwKS5tYXRjaCgvW1xcLlxcXFxdKFteXFwuXFxcXF0pKyQvKTtcblx0XHRpZihtICYmIENvbnRlbnRUeXBlTWFwW21bMV1dKSByZXR1cm4gQ29udGVudFR5cGVNYXBbbVsxXV07XG5cdH1cblxuXHRyZXR1cm4gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbn1cblxuLyogNzYgY2hhcmFjdGVyIGNodW5rcyBUT0RPOiBpbnRlcnR3aW5lIGVuY29kaW5nICovXG5mdW5jdGlvbiB3cml0ZV9iYXNlNjRfNzYoYnN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGRhdGEgPSBCYXNlNjRfZW5jb2RlKGJzdHIpO1xuXHR2YXIgbyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrPSA3Nikgby5wdXNoKGRhdGEuc2xpY2UoaSwgaSs3NikpO1xuXHRyZXR1cm4gby5qb2luKFwiXFxyXFxuXCIpICsgXCJcXHJcXG5cIjtcbn1cblxuLypcblJ1bGVzIGZvciBRUDpcblx0LSBlc2NhcGUgPSMjIGFwcGxpZXMgZm9yIGFsbCBub24tZGlzcGxheSBjaGFyYWN0ZXJzIGFuZCBsaXRlcmFsIFwiPVwiXG5cdC0gc3BhY2Ugb3IgdGFiIGF0IGVuZCBvZiBsaW5lIG11c3QgYmUgZW5jb2RlZFxuXHQtIFxcclxcbiBuZXdsaW5lcyBjYW4gYmUgcHJlc2VydmVkLCBidXQgYmFyZSBcXHIgYW5kIFxcbiBtdXN0IGJlIGVzY2FwZWRcblx0LSBsaW5lcyBtdXN0IG5vdCBleGNlZWQgNzYgY2hhcmFjdGVycywgdXNlIHNvZnQgYnJlYWtzID1cXHJcXG5cblxuVE9ETzogU29tZSBmaWxlcyBmcm9tIHdvcmQgYXBwZWFyIHRvIHdyaXRlIGxpbmUgZXh0ZW5zaW9ucyB3aXRoIGJhcmUgZXF1YWxzOlxuXG5gYGBcbjx0YWJsZSBjbGFzcz0zRE1zb1RhYmxlR3JpZCBib3JkZXI9M0QxIGNlbGxzcGFjaW5nPTNEMCBjZWxscGFkZGluZz0zRDAgd2lkdGg9XG49XCI3MCVcIlxuYGBgXG4qL1xuZnVuY3Rpb24gd3JpdGVfcXVvdGVkX3ByaW50YWJsZSh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgZW5jb2RlZCA9IHRleHQucmVwbGFjZSgvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0UtXFx4RkY9XS9nLCBmdW5jdGlvbihjKSB7XG5cdFx0dmFyIHcgPSBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdFx0cmV0dXJuIFwiPVwiICsgKHcubGVuZ3RoID09IDEgPyBcIjBcIiArIHcgOiB3KTtcblx0fSk7XG5cblx0ZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZSgvICQvbWcsIFwiPTIwXCIpLnJlcGxhY2UoL1xcdCQvbWcsIFwiPTA5XCIpO1xuXG5cdGlmKGVuY29kZWQuY2hhckF0KDApID09IFwiXFxuXCIpIGVuY29kZWQgPSBcIj0wRFwiICsgZW5jb2RlZC5zbGljZSgxKTtcblx0ZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZSgvXFxyKD8hXFxuKS9tZywgXCI9MERcIikucmVwbGFjZSgvXFxuXFxuL21nLCBcIlxcbj0wQVwiKS5yZXBsYWNlKC8oW15cXHJcXG5dKVxcbi9tZywgXCIkMT0wQVwiKTtcblxuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBzcGxpdCA9IGVuY29kZWQuc3BsaXQoXCJcXHJcXG5cIik7XG5cdGZvcih2YXIgc2kgPSAwOyBzaSA8IHNwbGl0Lmxlbmd0aDsgKytzaSkge1xuXHRcdHZhciBzdHIgPSBzcGxpdFtzaV07XG5cdFx0aWYoc3RyLmxlbmd0aCA9PSAwKSB7IG8ucHVzaChcIlwiKTsgY29udGludWU7IH1cblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDspIHtcblx0XHRcdHZhciBlbmQgPSA3Njtcblx0XHRcdHZhciB0bXAgPSBzdHIuc2xpY2UoaSwgaSArIGVuZCk7XG5cdFx0XHRpZih0bXAuY2hhckF0KGVuZCAtIDEpID09IFwiPVwiKSBlbmQgLS07XG5cdFx0XHRlbHNlIGlmKHRtcC5jaGFyQXQoZW5kIC0gMikgPT0gXCI9XCIpIGVuZCAtPSAyO1xuXHRcdFx0ZWxzZSBpZih0bXAuY2hhckF0KGVuZCAtIDMpID09IFwiPVwiKSBlbmQgLT0gMztcblx0XHRcdHRtcCA9IHN0ci5zbGljZShpLCBpICsgZW5kKTtcblx0XHRcdGkgKz0gZW5kO1xuXHRcdFx0aWYoaSA8IHN0ci5sZW5ndGgpIHRtcCArPSBcIj1cIjtcblx0XHRcdG8ucHVzaCh0bXApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvLmpvaW4oXCJcXHJcXG5cIik7XG59XG5mdW5jdGlvbiBwYXJzZV9xdW90ZWRfcHJpbnRhYmxlKGRhdGEvKjpBcnJheTxzdHJpbmc+Ki8pLyo6UmF3Qnl0ZXMqLyB7XG5cdHZhciBvID0gW107XG5cblx0LyogdW5pZnkgbG9uZyBsaW5lcyAqL1xuXHRmb3IodmFyIGRpID0gMDsgZGkgPCBkYXRhLmxlbmd0aDsgKytkaSkge1xuXHRcdHZhciBsaW5lID0gZGF0YVtkaV07XG5cdFx0d2hpbGUoZGkgPD0gZGF0YS5sZW5ndGggJiYgbGluZS5jaGFyQXQobGluZS5sZW5ndGggLSAxKSA9PSBcIj1cIikgbGluZSA9IGxpbmUuc2xpY2UoMCwgbGluZS5sZW5ndGggLSAxKSArIGRhdGFbKytkaV07XG5cdFx0by5wdXNoKGxpbmUpO1xuXHR9XG5cblx0LyogZGVjb2RlICovXG5cdGZvcih2YXIgb2kgPSAwOyBvaSA8IG8ubGVuZ3RoOyArK29pKSBvW29pXSA9IG9bb2ldLnJlcGxhY2UoL1s9XVswLTlBLUZhLWZdezJ9L2csIGZ1bmN0aW9uKCQkKSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KCQkLnNsaWNlKDEpLCAxNikpOyB9KTtcblx0cmV0dXJuIHMyYShvLmpvaW4oXCJcXHJcXG5cIikpO1xufVxuXG5cbmZ1bmN0aW9uIHBhcnNlX21pbWUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIGRhdGEvKjpBcnJheTxzdHJpbmc+Ki8sIHJvb3QvKjpzdHJpbmcqLykvKjp2b2lkKi8ge1xuXHR2YXIgZm5hbWUgPSBcIlwiLCBjdGUgPSBcIlwiLCBjdHlwZSA9IFwiXCIsIGZkYXRhO1xuXHR2YXIgZGkgPSAwO1xuXHRmb3IoO2RpIDwgMTA7ICsrZGkpIHtcblx0XHR2YXIgbGluZSA9IGRhdGFbZGldO1xuXHRcdGlmKCFsaW5lIHx8IGxpbmUubWF0Y2goL15cXHMqJC8pKSBicmVhaztcblx0XHR2YXIgbSA9IGxpbmUubWF0Y2goL14oLio/KTpcXHMqKFteXFxzXS4qKSQvKTtcblx0XHRpZihtKSBzd2l0Y2gobVsxXS50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRjYXNlIFwiY29udGVudC1sb2NhdGlvblwiOiBmbmFtZSA9IG1bMl0udHJpbSgpOyBicmVhaztcblx0XHRcdGNhc2UgXCJjb250ZW50LXR5cGVcIjogY3R5cGUgPSBtWzJdLnRyaW0oKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiY29udGVudC10cmFuc2Zlci1lbmNvZGluZ1wiOiBjdGUgPSBtWzJdLnRyaW0oKTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cdCsrZGk7XG5cdHN3aXRjaChjdGUudG9Mb3dlckNhc2UoKSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IGZkYXRhID0gczJhKEJhc2U2NF9kZWNvZGUoZGF0YS5zbGljZShkaSkuam9pbihcIlwiKSkpOyBicmVhaztcblx0XHRjYXNlICdxdW90ZWQtcHJpbnRhYmxlJzogZmRhdGEgPSBwYXJzZV9xdW90ZWRfcHJpbnRhYmxlKGRhdGEuc2xpY2UoZGkpKTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBcIiArIGN0ZSk7XG5cdH1cblx0dmFyIGZpbGUgPSBjZmJfYWRkKGNmYiwgZm5hbWUuc2xpY2Uocm9vdC5sZW5ndGgpLCBmZGF0YSwge3Vuc2FmZTogdHJ1ZX0pO1xuXHRpZihjdHlwZSkgZmlsZS5jdHlwZSA9IGN0eXBlO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9tYWQoZmlsZS8qOlJhd0J5dGVzKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKS8qOkNGQkNvbnRhaW5lciovIHtcblx0aWYoYTJzKGZpbGUuc2xpY2UoMCwxMykpLnRvTG93ZXJDYXNlKCkgIT0gXCJtaW1lLXZlcnNpb246XCIpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIE1BRCBoZWFkZXJcIik7XG5cdHZhciByb290ID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5yb290IHx8IFwiXCIpO1xuXHQvLyAkRmxvd0lnbm9yZVxuXHR2YXIgZGF0YSA9IChoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihmaWxlKSA/IGZpbGUudG9TdHJpbmcoXCJiaW5hcnlcIikgOiBhMnMoZmlsZSkpLnNwbGl0KFwiXFxyXFxuXCIpO1xuXHR2YXIgZGkgPSAwLCByb3cgPSBcIlwiO1xuXG5cdC8qIGlmIHJvb3QgaXMgbm90IHNwZWNpZmllZCwgc2NhbiBmb3IgdGhlIGNvbW1vbiBwcmVmaXggKi9cblx0Zm9yKGRpID0gMDsgZGkgPCBkYXRhLmxlbmd0aDsgKytkaSkge1xuXHRcdHJvdyA9IGRhdGFbZGldO1xuXHRcdGlmKCEvXkNvbnRlbnQtTG9jYXRpb246L2kudGVzdChyb3cpKSBjb250aW51ZTtcblx0XHRyb3cgPSByb3cuc2xpY2Uocm93LmluZGV4T2YoXCJmaWxlXCIpKTtcblx0XHRpZighcm9vdCkgcm9vdCA9IHJvdy5zbGljZSgwLCByb3cubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0aWYocm93LnNsaWNlKDAsIHJvb3QubGVuZ3RoKSA9PSByb290KSBjb250aW51ZTtcblx0XHR3aGlsZShyb290Lmxlbmd0aCA+IDApIHtcblx0XHRcdHJvb3QgPSByb290LnNsaWNlKDAsIHJvb3QubGVuZ3RoIC0gMSk7XG5cdFx0XHRyb290ID0gcm9vdC5zbGljZSgwLCByb290Lmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuXHRcdFx0aWYocm93LnNsaWNlKDAscm9vdC5sZW5ndGgpID09IHJvb3QpIGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHZhciBtYm91bmRhcnkgPSAoZGF0YVsxXSB8fCBcIlwiKS5tYXRjaCgvYm91bmRhcnk9XCIoLio/KVwiLyk7XG5cdGlmKCFtYm91bmRhcnkpIHRocm93IG5ldyBFcnJvcihcIk1BRCBjYW5ub3QgZmluZCBib3VuZGFyeVwiKTtcblx0dmFyIGJvdW5kYXJ5ID0gXCItLVwiICsgKG1ib3VuZGFyeVsxXSB8fCBcIlwiKTtcblxuXHR2YXIgRmlsZUluZGV4Lyo6Q0ZCRmlsZUluZGV4Ki8gPSBbXSwgRnVsbFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBvID0ge1xuXHRcdEZpbGVJbmRleDogRmlsZUluZGV4LFxuXHRcdEZ1bGxQYXRoczogRnVsbFBhdGhzXG5cdH07XG5cdGluaXRfY2ZiKG8pO1xuXHR2YXIgc3RhcnRfZGksIGZjbnQgPSAwO1xuXHRmb3IoZGkgPSAwOyBkaSA8IGRhdGEubGVuZ3RoOyArK2RpKSB7XG5cdFx0dmFyIGxpbmUgPSBkYXRhW2RpXTtcblx0XHRpZihsaW5lICE9PSBib3VuZGFyeSAmJiBsaW5lICE9PSBib3VuZGFyeSArIFwiLS1cIikgY29udGludWU7XG5cdFx0aWYoZmNudCsrKSBwYXJzZV9taW1lKG8sIGRhdGEuc2xpY2Uoc3RhcnRfZGksIGRpKSwgcm9vdCk7XG5cdFx0c3RhcnRfZGkgPSBkaTtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gd3JpdGVfbWFkKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRpb25zLyo6Q0ZCV3JpdGVPcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cdHZhciBib3VuZGFyeSA9IG9wdHMuYm91bmRhcnkgfHwgXCJTaGVldEpTXCI7XG5cdGJvdW5kYXJ5ID0gJy0tLS0tLT0nICsgYm91bmRhcnk7XG5cblx0dmFyIG91dCA9IFtcblx0XHQnTUlNRS1WZXJzaW9uOiAxLjAnLFxuXHRcdCdDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZWxhdGVkOyBib3VuZGFyeT1cIicgKyBib3VuZGFyeS5zbGljZSgyKSArICdcIicsXG5cdFx0JycsXG5cdFx0JycsXG5cdFx0Jydcblx0XTtcblxuXHR2YXIgcm9vdCA9IGNmYi5GdWxsUGF0aHNbMF0sIGZwID0gcm9vdCwgZmkgPSBjZmIuRmlsZUluZGV4WzBdO1xuXHRmb3IodmFyIGkgPSAxOyBpIDwgY2ZiLkZ1bGxQYXRocy5sZW5ndGg7ICsraSkge1xuXHRcdGZwID0gY2ZiLkZ1bGxQYXRoc1tpXS5zbGljZShyb290Lmxlbmd0aCk7XG5cdFx0ZmkgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdGlmKCFmaS5zaXplIHx8ICFmaS5jb250ZW50IHx8IGZwID09IFwiXFx1MDAwMVNoMzN0SjVcIikgY29udGludWU7XG5cblx0XHQvKiBOb3JtYWxpemUgZmlsZW5hbWUgKi9cblx0XHRmcCA9IGZwLnJlcGxhY2UoL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdFLVxceEZGXS9nLCBmdW5jdGlvbihjKSB7XG5cdFx0XHRyZXR1cm4gXCJfeFwiICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSArIFwiX1wiO1xuXHRcdH0pLnJlcGxhY2UoL1tcXHUwMDgwLVxcdUZGRkZdL2csIGZ1bmN0aW9uKHUpIHtcblx0XHRcdHJldHVybiBcIl91XCIgKyB1LmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpICsgXCJfXCI7XG5cdFx0fSk7XG5cblx0XHQvKiBFeHRyYWN0IGNvbnRlbnQgYXMgYmluYXJ5IHN0cmluZyAqL1xuXHRcdHZhciBjYSA9IGZpLmNvbnRlbnQ7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHR2YXIgY3N0ciA9IGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGNhKSA/IGNhLnRvU3RyaW5nKFwiYmluYXJ5XCIpIDogYTJzKGNhKTtcblxuXHRcdC8qIDQvNSBvZiBmaXJzdCAxMDI0IGNoYXJzIGFzY2lpIC0+IHF1b3RlZCBwcmludGFibGUsIGVsc2UgYmFzZTY0ICovXG5cdFx0dmFyIGRpc3BjbnQgPSAwLCBMID0gTWF0aC5taW4oMTAyNCwgY3N0ci5sZW5ndGgpLCBjYyA9IDA7XG5cdFx0Zm9yKHZhciBjc2wgPSAwOyBjc2wgPD0gTDsgKytjc2wpIGlmKChjYz1jc3RyLmNoYXJDb2RlQXQoY3NsKSkgPj0gMHgyMCAmJiBjYyA8IDB4ODApICsrZGlzcGNudDtcblx0XHR2YXIgcXAgPSBkaXNwY250ID49IEwgKiA0IC8gNTtcblxuXHRcdG91dC5wdXNoKGJvdW5kYXJ5KTtcblx0XHRvdXQucHVzaCgnQ29udGVudC1Mb2NhdGlvbjogJyArIChvcHRzLnJvb3QgfHwgJ2ZpbGU6Ly8vQzovU2hlZXRKUy8nKSArIGZwKTtcblx0XHRvdXQucHVzaCgnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogJyArIChxcCA/ICdxdW90ZWQtcHJpbnRhYmxlJyA6ICdiYXNlNjQnKSk7XG5cdFx0b3V0LnB1c2goJ0NvbnRlbnQtVHlwZTogJyArIGdldF9jb250ZW50X3R5cGUoZmksIGZwKSk7XG5cdFx0b3V0LnB1c2goJycpO1xuXG5cdFx0b3V0LnB1c2gocXAgPyB3cml0ZV9xdW90ZWRfcHJpbnRhYmxlKGNzdHIpIDogd3JpdGVfYmFzZTY0Xzc2KGNzdHIpKTtcblx0fVxuXHRvdXQucHVzaChib3VuZGFyeSArICctLVxcclxcbicpO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcXHJcXG5cIik7XG59XG5mdW5jdGlvbiBjZmJfbmV3KG9wdHMvKjo/YW55Ki8pLyo6Q0ZCQ29udGFpbmVyKi8ge1xuXHR2YXIgby8qOkNGQkNvbnRhaW5lciovID0gKHt9Lyo6YW55Ki8pO1xuXHRpbml0X2NmYihvLCBvcHRzKTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIGNmYl9hZGQoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG5hbWUvKjpzdHJpbmcqLywgY29udGVudC8qOj9SYXdCeXRlcyovLCBvcHRzLyo6P2FueSovKS8qOkNGQkVudHJ5Ki8ge1xuXHR2YXIgdW5zYWZlID0gb3B0cyAmJiBvcHRzLnVuc2FmZTtcblx0aWYoIXVuc2FmZSkgaW5pdF9jZmIoY2ZiKTtcblx0dmFyIGZpbGUgPSAhdW5zYWZlICYmIENGQi5maW5kKGNmYiwgbmFtZSk7XG5cdGlmKCFmaWxlKSB7XG5cdFx0dmFyIGZwYXRoLyo6c3RyaW5nKi8gPSBjZmIuRnVsbFBhdGhzWzBdO1xuXHRcdGlmKG5hbWUuc2xpY2UoMCwgZnBhdGgubGVuZ3RoKSA9PSBmcGF0aCkgZnBhdGggPSBuYW1lO1xuXHRcdGVsc2Uge1xuXHRcdFx0aWYoZnBhdGguc2xpY2UoLTEpICE9IFwiL1wiKSBmcGF0aCArPSBcIi9cIjtcblx0XHRcdGZwYXRoID0gKGZwYXRoICsgbmFtZSkucmVwbGFjZShcIi8vXCIsXCIvXCIpO1xuXHRcdH1cblx0XHRmaWxlID0gKHtuYW1lOiBmaWxlbmFtZShuYW1lKSwgdHlwZTogMn0vKjphbnkqLyk7XG5cdFx0Y2ZiLkZpbGVJbmRleC5wdXNoKGZpbGUpO1xuXHRcdGNmYi5GdWxsUGF0aHMucHVzaChmcGF0aCk7XG5cdFx0aWYoIXVuc2FmZSkgQ0ZCLnV0aWxzLmNmYl9nYyhjZmIpO1xuXHR9XG5cdC8qOjogaWYoIWZpbGUpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRmaWxlLmNvbnRlbnQgPSAoY29udGVudC8qOmFueSovKTtcblx0ZmlsZS5zaXplID0gY29udGVudCA/IGNvbnRlbnQubGVuZ3RoIDogMDtcblx0aWYob3B0cykge1xuXHRcdGlmKG9wdHMuQ0xTSUQpIGZpbGUuY2xzaWQgPSBvcHRzLkNMU0lEO1xuXHRcdGlmKG9wdHMubXQpIGZpbGUubXQgPSBvcHRzLm10O1xuXHRcdGlmKG9wdHMuY3QpIGZpbGUuY3QgPSBvcHRzLmN0O1xuXHR9XG5cdHJldHVybiBmaWxlO1xufVxuXG5mdW5jdGlvbiBjZmJfZGVsKGNmYi8qOkNGQkNvbnRhaW5lciovLCBuYW1lLyo6c3RyaW5nKi8pLyo6Ym9vbGVhbiovIHtcblx0aW5pdF9jZmIoY2ZiKTtcblx0dmFyIGZpbGUgPSBDRkIuZmluZChjZmIsIG5hbWUpO1xuXHRpZihmaWxlKSBmb3IodmFyIGogPSAwOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikgaWYoY2ZiLkZpbGVJbmRleFtqXSA9PSBmaWxlKSB7XG5cdFx0Y2ZiLkZpbGVJbmRleC5zcGxpY2UoaiwgMSk7XG5cdFx0Y2ZiLkZ1bGxQYXRocy5zcGxpY2UoaiwgMSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjZmJfbW92KGNmYi8qOkNGQkNvbnRhaW5lciovLCBvbGRfbmFtZS8qOnN0cmluZyovLCBuZXdfbmFtZS8qOnN0cmluZyovKS8qOmJvb2xlYW4qLyB7XG5cdGluaXRfY2ZiKGNmYik7XG5cdHZhciBmaWxlID0gQ0ZCLmZpbmQoY2ZiLCBvbGRfbmFtZSk7XG5cdGlmKGZpbGUpIGZvcih2YXIgaiA9IDA7IGogPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytqKSBpZihjZmIuRmlsZUluZGV4W2pdID09IGZpbGUpIHtcblx0XHRjZmIuRmlsZUluZGV4W2pdLm5hbWUgPSBmaWxlbmFtZShuZXdfbmFtZSk7XG5cdFx0Y2ZiLkZ1bGxQYXRoc1tqXSA9IG5ld19uYW1lO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2ZiX2djKGNmYi8qOkNGQkNvbnRhaW5lciovKS8qOnZvaWQqLyB7IHJlYnVpbGRfY2ZiKGNmYiwgdHJ1ZSk7IH1cblxuZXhwb3J0cy5maW5kID0gZmluZDtcbmV4cG9ydHMucmVhZCA9IHJlYWQ7XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLndyaXRlID0gd3JpdGU7XG5leHBvcnRzLndyaXRlRmlsZSA9IHdyaXRlX2ZpbGU7XG5leHBvcnRzLnV0aWxzID0ge1xuXHRjZmJfbmV3OiBjZmJfbmV3LFxuXHRjZmJfYWRkOiBjZmJfYWRkLFxuXHRjZmJfZGVsOiBjZmJfZGVsLFxuXHRjZmJfbW92OiBjZmJfbW92LFxuXHRjZmJfZ2M6IGNmYl9nYyxcblx0UmVhZFNoaWZ0OiBSZWFkU2hpZnQsXG5cdENoZWNrRmllbGQ6IENoZWNrRmllbGQsXG5cdHByZXBfYmxvYjogcHJlcF9ibG9iLFxuXHRiY29uY2F0OiBiY29uY2F0LFxuXHR1c2VfemxpYjogdXNlX3psaWIsXG5cdF9kZWZsYXRlUmF3OiBfZGVmbGF0ZSxcblx0X2luZmxhdGVSYXc6IF9pbmZsYXRlLFxuXHRjb25zdHM6IGNvbnN0c1xufTtcblxucmV0dXJuIGV4cG9ydHM7XG59KSgpO1xuXG5sZXQgX2ZzID0gdm9pZCAwO1xuZnVuY3Rpb24gc2V0X2ZzKGZzKSB7IF9mcyA9IGZzOyB9XG5leHBvcnQgeyBzZXRfZnMgfTtcblxuLyogbm9ybWFsaXplIGRhdGEgZm9yIGJsb2IgY3RvciAqL1xuZnVuY3Rpb24gYmxvYmlmeShkYXRhKSB7XG5cdGlmKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSByZXR1cm4gczJhYihkYXRhKTtcblx0aWYoQXJyYXkuaXNBcnJheShkYXRhKSkgcmV0dXJuIGEydShkYXRhKTtcblx0cmV0dXJuIGRhdGE7XG59XG4vKiB3cml0ZSBvciBkb3dubG9hZCBmaWxlICovXG5mdW5jdGlvbiB3cml0ZV9kbChmbmFtZS8qOnN0cmluZyovLCBwYXlsb2FkLyo6YW55Ki8sIGVuYy8qOj9zdHJpbmcqLykge1xuXHQvKmdsb2JhbCBJRV9TYXZlRmlsZSwgQmxvYiwgbmF2aWdhdG9yLCBzYXZlQXMsIGRvY3VtZW50LCBGaWxlLCBjaHJvbWUgKi9cblx0aWYodHlwZW9mIF9mcyAhPT0gJ3VuZGVmaW5lZCcgJiYgX2ZzLndyaXRlRmlsZVN5bmMpIHJldHVybiBlbmMgPyBfZnMud3JpdGVGaWxlU3luYyhmbmFtZSwgcGF5bG9hZCwgZW5jKSA6IF9mcy53cml0ZUZpbGVTeW5jKGZuYW1lLCBwYXlsb2FkKTtcblx0aWYodHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0LyogaW4gdGhpcyBzcG90LCBpdCdzIHNhZmUgdG8gYXNzdW1lIHR5cGVkIGFycmF5cyBhbmQgVGV4dEVuY29kZXIvVGV4dERlY29kZXIgZXhpc3QgKi9cblx0XHRpZihlbmMgJiYgdHlwZW9mIHBheWxvYWQgPT0gXCJzdHJpbmdcIikgc3dpdGNoKGVuYykge1xuXHRcdFx0Y2FzZSBcInV0ZjhcIjogcGF5bG9hZCA9IG5ldyBUZXh0RW5jb2RlcihlbmMpLmVuY29kZShwYXlsb2FkKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiYmluYXJ5XCI6IHBheWxvYWQgPSBzMmFiKHBheWxvYWQpOyBicmVhaztcblx0XHRcdC8qIFRPRE86IGJpbmFyeSBlcXVpdmFsZW50ICovXG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBlbmNvZGluZyBcIiArIGVuYyk7XG5cdFx0fVxuXHRcdHJldHVybiBEZW5vLndyaXRlRmlsZVN5bmMoZm5hbWUsIHBheWxvYWQpO1xuXHR9XG5cdHZhciBkYXRhID0gKGVuYyA9PSBcInV0ZjhcIikgPyB1dGY4d3JpdGUocGF5bG9hZCkgOiBwYXlsb2FkO1xuXHQvKjo6IGRlY2xhcmUgdmFyIElFX1NhdmVGaWxlOiBhbnk7ICovXG5cdGlmKHR5cGVvZiBJRV9TYXZlRmlsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBJRV9TYXZlRmlsZShkYXRhLCBmbmFtZSk7XG5cdGlmKHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJykge1xuXHRcdHZhciBibG9iID0gbmV3IEJsb2IoW2Jsb2JpZnkoZGF0YSldLCB7dHlwZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSk7XG5cdFx0Lyo6OiBkZWNsYXJlIHZhciBuYXZpZ2F0b3I6IGFueTsgKi9cblx0XHRpZih0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IubXNTYXZlQmxvYikgcmV0dXJuIG5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGZuYW1lKTtcblx0XHQvKjo6IGRlY2xhcmUgdmFyIHNhdmVBczogYW55OyAqL1xuXHRcdGlmKHR5cGVvZiBzYXZlQXMgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gc2F2ZUFzKGJsb2IsIGZuYW1lKTtcblx0XHRpZih0eXBlb2YgVVJMICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgJiYgVVJMLmNyZWF0ZU9iamVjdFVSTCkge1xuXHRcdFx0dmFyIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cdFx0XHQvKjo6IGRlY2xhcmUgdmFyIGNocm9tZTogYW55OyAqL1xuXHRcdFx0aWYodHlwZW9mIGNocm9tZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIChjaHJvbWUuZG93bmxvYWRzfHx7fSkuZG93bmxvYWQgPT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdGlmKFVSTC5yZXZva2VPYmplY3RVUkwgJiYgdHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7IH0sIDYwMDAwKTtcblx0XHRcdFx0cmV0dXJuIGNocm9tZS5kb3dubG9hZHMuZG93bmxvYWQoeyB1cmw6IHVybCwgZmlsZW5hbWU6IGZuYW1lLCBzYXZlQXM6IHRydWV9KTtcblx0XHRcdH1cblx0XHRcdHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG5cdFx0XHRpZihhLmRvd25sb2FkICE9IG51bGwpIHtcblx0XHRcdFx0Lyo6OiBpZihkb2N1bWVudC5ib2R5ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0XHRhLmRvd25sb2FkID0gZm5hbWU7IGEuaHJlZiA9IHVybDsgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsgYS5jbGljaygpO1xuXHRcdFx0XHQvKjo6IGlmKGRvY3VtZW50LmJvZHkgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG5cdFx0XHRcdGlmKFVSTC5yZXZva2VPYmplY3RVUkwgJiYgdHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7IH0sIDYwMDAwKTtcblx0XHRcdFx0cmV0dXJuIHVybDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Ly8gJEZsb3dJZ25vcmVcblx0aWYodHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBGaWxlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRm9sZGVyICE9PSAndW5kZWZpbmVkJykgdHJ5IHsgLy8gZXh0ZW5kc2NyaXB0XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHR2YXIgb3V0ID0gRmlsZShmbmFtZSk7IG91dC5vcGVuKFwid1wiKTsgb3V0LmVuY29kaW5nID0gXCJiaW5hcnlcIjtcblx0XHRpZihBcnJheS5pc0FycmF5KHBheWxvYWQpKSBwYXlsb2FkID0gYTJzKHBheWxvYWQpO1xuXHRcdG91dC53cml0ZShwYXlsb2FkKTsgb3V0LmNsb3NlKCk7IHJldHVybiBwYXlsb2FkO1xuXHR9IGNhdGNoKGUpIHsgaWYoIWUubWVzc2FnZSB8fCAhZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKSB0aHJvdyBlOyB9XG5cdHRocm93IG5ldyBFcnJvcihcImNhbm5vdCBzYXZlIGZpbGUgXCIgKyBmbmFtZSk7XG59XG5cbi8qIHJlYWQgYmluYXJ5IGRhdGEgZnJvbSBmaWxlICovXG5mdW5jdGlvbiByZWFkX2JpbmFyeShwYXRoLyo6c3RyaW5nKi8pIHtcblx0aWYodHlwZW9mIF9mcyAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBfZnMucmVhZEZpbGVTeW5jKHBhdGgpO1xuXHRpZih0eXBlb2YgRGVubyAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBEZW5vLnJlYWRGaWxlU3luYyhwYXRoKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0aWYodHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBGaWxlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRm9sZGVyICE9PSAndW5kZWZpbmVkJykgdHJ5IHsgLy8gZXh0ZW5kc2NyaXB0XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHR2YXIgaW5maWxlID0gRmlsZShwYXRoKTsgaW5maWxlLm9wZW4oXCJyXCIpOyBpbmZpbGUuZW5jb2RpbmcgPSBcImJpbmFyeVwiO1xuXHRcdHZhciBkYXRhID0gaW5maWxlLnJlYWQoKTsgaW5maWxlLmNsb3NlKCk7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH0gY2F0Y2goZSkgeyBpZighZS5tZXNzYWdlIHx8ICFlLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpIHRocm93IGU7IH1cblx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGFjY2VzcyBmaWxlIFwiICsgcGF0aCk7XG59XG5mdW5jdGlvbiBrZXlzKG8vKjphbnkqLykvKjpBcnJheTxhbnk+Ki8ge1xuXHR2YXIga3MgPSBPYmplY3Qua2V5cyhvKSwgbzIgPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGtzLmxlbmd0aDsgKytpKSBpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywga3NbaV0pKSBvMi5wdXNoKGtzW2ldKTtcblx0cmV0dXJuIG8yO1xufVxuXG5mdW5jdGlvbiBldmVydF9rZXkob2JqLyo6YW55Ki8sIGtleS8qOnN0cmluZyovKS8qOkV2ZXJ0VHlwZSovIHtcblx0dmFyIG8gPSAoW10vKjphbnkqLyksIEsgPSBrZXlzKG9iaik7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IEsubGVuZ3RoOyArK2kpIGlmKG9bb2JqW0tbaV1dW2tleV1dID09IG51bGwpIG9bb2JqW0tbaV1dW2tleV1dID0gS1tpXTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIGV2ZXJ0KG9iai8qOmFueSovKS8qOkV2ZXJ0VHlwZSovIHtcblx0dmFyIG8gPSAoW10vKjphbnkqLyksIEsgPSBrZXlzKG9iaik7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IEsubGVuZ3RoOyArK2kpIG9bb2JqW0tbaV1dXSA9IEtbaV07XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBldmVydF9udW0ob2JqLyo6YW55Ki8pLyo6RXZlcnROdW1UeXBlKi8ge1xuXHR2YXIgbyA9IChbXS8qOmFueSovKSwgSyA9IGtleXMob2JqKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gSy5sZW5ndGg7ICsraSkgb1tvYmpbS1tpXV1dID0gcGFyc2VJbnQoS1tpXSwxMCk7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBldmVydF9hcnIob2JqLyo6YW55Ki8pLyo6RXZlcnRBcnJUeXBlKi8ge1xuXHR2YXIgby8qOkV2ZXJ0QXJyVHlwZSovID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYob1tvYmpbS1tpXV1dID09IG51bGwpIG9bb2JqW0tbaV1dXSA9IFtdO1xuXHRcdG9bb2JqW0tbaV1dXS5wdXNoKEtbaV0pO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG52YXIgYmFzZWRhdGUgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoMTg5OSwgMTEsIDMwLCAwLCAwLCAwKTsgLy8gMjIwOTE2MTYwMDAwMFxuZnVuY3Rpb24gZGF0ZW51bSh2Lyo6RGF0ZSovLCBkYXRlMTkwNC8qOj9ib29sZWFuKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgZXBvY2ggPSAvKiNfX1BVUkVfXyovdi5nZXRUaW1lKCk7XG5cdGlmKGRhdGUxOTA0KSBlcG9jaCAtPSAxNDYyKjI0KjYwKjYwKjEwMDA7XG5cdHZhciBkbnRocmVzaCA9IC8qI19fUFVSRV9fKi9iYXNlZGF0ZS5nZXRUaW1lKCkgKyAoLyojX19QVVJFX18qL3YuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIC8qI19fUFVSRV9fKi9iYXNlZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKSAqIDYwMDAwO1xuXHRyZXR1cm4gKGVwb2NoIC0gZG50aHJlc2gpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xufVxudmFyIHJlZmRhdGUgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoKTtcbnZhciBkbnRocmVzaCA9IC8qI19fUFVSRV9fKi9iYXNlZGF0ZS5nZXRUaW1lKCkgKyAoLyojX19QVVJFX18qL3JlZmRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIC8qI19fUFVSRV9fKi9iYXNlZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKSAqIDYwMDAwO1xudmFyIHJlZm9mZnNldCA9IC8qI19fUFVSRV9fKi9yZWZkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5mdW5jdGlvbiBudW1kYXRlKHYvKjpudW1iZXIqLykvKjpEYXRlKi8ge1xuXHR2YXIgb3V0ID0gbmV3IERhdGUoKTtcblx0b3V0LnNldFRpbWUodiAqIDI0ICogNjAgKiA2MCAqIDEwMDAgKyBkbnRocmVzaCk7XG5cdGlmIChvdXQuZ2V0VGltZXpvbmVPZmZzZXQoKSAhPT0gcmVmb2Zmc2V0KSB7XG5cdFx0b3V0LnNldFRpbWUob3V0LmdldFRpbWUoKSArIChvdXQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHJlZm9mZnNldCkgKiA2MDAwMCk7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuLyogSVNPIDg2MDEgRHVyYXRpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX2lzb2R1cihzKSB7XG5cdHZhciBzZWMgPSAwLCBtdCA9IDAsIHRpbWUgPSBmYWxzZTtcblx0dmFyIG0gPSBzLm1hdGNoKC9QKFswLTlcXC5dK1kpPyhbMC05XFwuXStNKT8oWzAtOVxcLl0rRCk/VChbMC05XFwuXStIKT8oWzAtOVxcLl0rTSk/KFswLTlcXC5dK1MpPy8pO1xuXHRpZighbSkgdGhyb3cgbmV3IEVycm9yKFwifFwiICsgcyArIFwifCBpcyBub3QgYW4gSVNPODYwMSBEdXJhdGlvblwiKTtcblx0Zm9yKHZhciBpID0gMTsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoIW1baV0pIGNvbnRpbnVlO1xuXHRcdG10ID0gMTtcblx0XHRpZihpID4gMykgdGltZSA9IHRydWU7XG5cdFx0c3dpdGNoKG1baV0uc2xpY2UobVtpXS5sZW5ndGgtMSkpIHtcblx0XHRcdGNhc2UgJ1knOlxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IFwiICsgbVtpXS5zbGljZShtW2ldLmxlbmd0aC0xKSk7XG5cdFx0XHRjYXNlICdEJzogbXQgKj0gMjQ7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ0gnOiBtdCAqPSA2MDtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnTSc6XG5cdFx0XHRcdGlmKCF0aW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE1cIik7XG5cdFx0XHRcdGVsc2UgbXQgKj0gNjA7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ1MnOiBicmVhaztcblx0XHR9XG5cdFx0c2VjICs9IG10ICogcGFyc2VJbnQobVtpXSwgMTApO1xuXHR9XG5cdHJldHVybiBzZWM7XG59XG5cbnZhciBnb29kX3BkX2RhdGVfMSA9IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgnMjAxNy0wMi0xOVQxOTowNjowOS4wMDBaJyk7XG52YXIgZ29vZF9wZF9kYXRlID0gLyojX19QVVJFX18qL2lzTmFOKC8qI19fUFVSRV9fKi9nb29kX3BkX2RhdGVfMS5nZXRGdWxsWWVhcigpKSA/IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgnMi8xOS8xNycpIDogZ29vZF9wZF9kYXRlXzE7XG52YXIgZ29vZF9wZCA9IC8qI19fUFVSRV9fKi9nb29kX3BkX2RhdGUuZ2V0RnVsbFllYXIoKSA9PSAyMDE3O1xuLyogcGFyc2VzIGEgZGF0ZSBhcyBhIGxvY2FsIGRhdGUgKi9cbmZ1bmN0aW9uIHBhcnNlRGF0ZShzdHIvKjpzdHJpbmd8RGF0ZSovLCBmaXhkYXRlLyo6P251bWJlciovKS8qOkRhdGUqLyB7XG5cdHZhciBkID0gbmV3IERhdGUoc3RyKTtcblx0aWYoZ29vZF9wZCkge1xuXHRcdC8qOjogaWYoZml4ZGF0ZSA9PSBudWxsKSBmaXhkYXRlID0gMDsgKi9cblx0XHRpZihmaXhkYXRlID4gMCkgZC5zZXRUaW1lKGQuZ2V0VGltZSgpICsgZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKTtcblx0XHRlbHNlIGlmKGZpeGRhdGUgPCAwKSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgLSBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCAqIDEwMDApO1xuXHRcdHJldHVybiBkO1xuXHR9XG5cdGlmKHN0ciBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBzdHI7XG5cdGlmKGdvb2RfcGRfZGF0ZS5nZXRGdWxsWWVhcigpID09IDE5MTcgJiYgIWlzTmFOKGQuZ2V0RnVsbFllYXIoKSkpIHtcblx0XHR2YXIgcyA9IGQuZ2V0RnVsbFllYXIoKTtcblx0XHRpZihzdHIuaW5kZXhPZihcIlwiICsgcykgPiAtMSkgcmV0dXJuIGQ7XG5cdFx0ZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyAxMDApOyByZXR1cm4gZDtcblx0fVxuXHR2YXIgbiA9IHN0ci5tYXRjaCgvXFxkKy9nKXx8W1wiMjAxN1wiLFwiMlwiLFwiMTlcIixcIjBcIixcIjBcIixcIjBcIl07XG5cdHZhciBvdXQgPSBuZXcgRGF0ZSgrblswXSwgK25bMV0gLSAxLCArblsyXSwgKCtuWzNdfHwwKSwgKCtuWzRdfHwwKSwgKCtuWzVdfHwwKSk7XG5cdGlmKHN0ci5pbmRleE9mKFwiWlwiKSA+IC0xKSBvdXQgPSBuZXcgRGF0ZShvdXQuZ2V0VGltZSgpIC0gb3V0LmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCAqIDEwMDApO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBjYzJzdHIoYXJyLyo6QXJyYXk8bnVtYmVyPiovLCBkZWJvbWl0KS8qOnN0cmluZyovIHtcblx0aWYoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoYXJyKSkge1xuXHRcdGlmKGRlYm9taXQpIHtcblx0XHRcdGlmKGFyclswXSA9PSAweEZGICYmIGFyclsxXSA9PSAweEZFKSByZXR1cm4gdXRmOHdyaXRlKGFyci5zbGljZSgyKS50b1N0cmluZyhcInV0ZjE2bGVcIikpO1xuXHRcdFx0aWYoYXJyWzFdID09IDB4RkUgJiYgYXJyWzJdID09IDB4RkYpIHJldHVybiB1dGY4d3JpdGUodXRmMTZiZXJlYWQoYXJyLnNsaWNlKDIpLnRvU3RyaW5nKFwiYmluYXJ5XCIpKSk7XG5cdFx0fVxuXHRcdHJldHVybiBhcnIudG9TdHJpbmcoXCJiaW5hcnlcIik7XG5cdH1cblxuXHRpZih0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHRyeSB7XG5cdFx0aWYoZGVib21pdCkge1xuXHRcdFx0aWYoYXJyWzBdID09IDB4RkYgJiYgYXJyWzFdID09IDB4RkUpIHJldHVybiB1dGY4d3JpdGUobmV3IFRleHREZWNvZGVyKFwidXRmLTE2bGVcIikuZGVjb2RlKGFyci5zbGljZSgyKSkpO1xuXHRcdFx0aWYoYXJyWzBdID09IDB4RkUgJiYgYXJyWzFdID09IDB4RkYpIHJldHVybiB1dGY4d3JpdGUobmV3IFRleHREZWNvZGVyKFwidXRmLTE2YmVcIikuZGVjb2RlKGFyci5zbGljZSgyKSkpO1xuXHRcdH1cblx0XHR2YXIgcmV2ID0ge1xuXHRcdFx0XCJcXHUyMGFjXCI6IFwiXFx4ODBcIiwgXCJcXHUyMDFhXCI6IFwiXFx4ODJcIiwgXCJcXHUwMTkyXCI6IFwiXFx4ODNcIiwgXCJcXHUyMDFlXCI6IFwiXFx4ODRcIixcblx0XHRcdFwiXFx1MjAyNlwiOiBcIlxceDg1XCIsIFwiXFx1MjAyMFwiOiBcIlxceDg2XCIsIFwiXFx1MjAyMVwiOiBcIlxceDg3XCIsIFwiXFx1MDJjNlwiOiBcIlxceDg4XCIsXG5cdFx0XHRcIlxcdTIwMzBcIjogXCJcXHg4OVwiLCBcIlxcdTAxNjBcIjogXCJcXHg4YVwiLCBcIlxcdTIwMzlcIjogXCJcXHg4YlwiLCBcIlxcdTAxNTJcIjogXCJcXHg4Y1wiLFxuXHRcdFx0XCJcXHUwMTdkXCI6IFwiXFx4OGVcIiwgXCJcXHUyMDE4XCI6IFwiXFx4OTFcIiwgXCJcXHUyMDE5XCI6IFwiXFx4OTJcIiwgXCJcXHUyMDFjXCI6IFwiXFx4OTNcIixcblx0XHRcdFwiXFx1MjAxZFwiOiBcIlxceDk0XCIsIFwiXFx1MjAyMlwiOiBcIlxceDk1XCIsIFwiXFx1MjAxM1wiOiBcIlxceDk2XCIsIFwiXFx1MjAxNFwiOiBcIlxceDk3XCIsXG5cdFx0XHRcIlxcdTAyZGNcIjogXCJcXHg5OFwiLCBcIlxcdTIxMjJcIjogXCJcXHg5OVwiLCBcIlxcdTAxNjFcIjogXCJcXHg5YVwiLCBcIlxcdTIwM2FcIjogXCJcXHg5YlwiLFxuXHRcdFx0XCJcXHUwMTUzXCI6IFwiXFx4OWNcIiwgXCJcXHUwMTdlXCI6IFwiXFx4OWVcIiwgXCJcXHUwMTc4XCI6IFwiXFx4OWZcIlxuXHRcdH07XG5cdFx0aWYoQXJyYXkuaXNBcnJheShhcnIpKSBhcnIgPSBuZXcgVWludDhBcnJheShhcnIpO1xuXHRcdHJldHVybiBuZXcgVGV4dERlY29kZXIoXCJsYXRpbjFcIikuZGVjb2RlKGFycikucmVwbGFjZSgvW+KCrOKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSxb3igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPFvsW4XS9nLCBmdW5jdGlvbihjKSB7IHJldHVybiByZXZbY10gfHwgYzsgfSk7XG5cdH0gY2F0Y2goZSkge31cblxuXHR2YXIgbyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGFyci5sZW5ndGg7ICsraSkgby5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYXJyW2ldKSk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIGR1cChvLyo6YW55Ki8pLyo6YW55Ki8ge1xuXHRpZih0eXBlb2YgSlNPTiAhPSAndW5kZWZpbmVkJyAmJiAhQXJyYXkuaXNBcnJheShvKSkgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpO1xuXHRpZih0eXBlb2YgbyAhPSAnb2JqZWN0JyB8fCBvID09IG51bGwpIHJldHVybiBvO1xuXHRpZihvIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIG5ldyBEYXRlKG8uZ2V0VGltZSgpKTtcblx0dmFyIG91dCA9IHt9O1xuXHRmb3IodmFyIGsgaW4gbykgaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspKSBvdXRba10gPSBkdXAob1trXSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGZpbGwoYy8qOnN0cmluZyovLGwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHZhciBvID0gXCJcIjsgd2hpbGUoby5sZW5ndGggPCBsKSBvKz1jOyByZXR1cm4gbzsgfVxuXG4vKiBUT0RPOiBzdHJlc3MgdGVzdCAqL1xuZnVuY3Rpb24gZnV6enludW0ocy8qOnN0cmluZyovKS8qOm51bWJlciovIHtcblx0dmFyIHYvKjpudW1iZXIqLyA9IE51bWJlcihzKTtcblx0aWYoIWlzTmFOKHYpKSByZXR1cm4gaXNGaW5pdGUodikgPyB2IDogTmFOO1xuXHRpZighL1xcZC8udGVzdChzKSkgcmV0dXJuIHY7XG5cdHZhciB3dCA9IDE7XG5cdHZhciBzcyA9IHMucmVwbGFjZSgvKFtcXGRdKSwoW1xcZF0pL2csXCIkMSQyXCIpLnJlcGxhY2UoL1skXS9nLFwiXCIpLnJlcGxhY2UoL1slXS9nLCBmdW5jdGlvbigpIHsgd3QgKj0gMTAwOyByZXR1cm4gXCJcIjt9KTtcblx0aWYoIWlzTmFOKHYgPSBOdW1iZXIoc3MpKSkgcmV0dXJuIHYgLyB3dDtcblx0c3MgPSBzcy5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbigkJCwgJDEpIHsgd3QgPSAtd3Q7IHJldHVybiAkMTt9KTtcblx0aWYoIWlzTmFOKHYgPSBOdW1iZXIoc3MpKSkgcmV0dXJuIHYgLyB3dDtcblx0cmV0dXJuIHY7XG59XG52YXIgbG93ZXJfbW9udGhzID0gWydqYW51YXJ5JywgJ2ZlYnJ1YXJ5JywgJ21hcmNoJywgJ2FwcmlsJywgJ21heScsICdqdW5lJywgJ2p1bHknLCAnYXVndXN0JywgJ3NlcHRlbWJlcicsICdvY3RvYmVyJywgJ25vdmVtYmVyJywgJ2RlY2VtYmVyJ107XG5mdW5jdGlvbiBmdXp6eWRhdGUocy8qOnN0cmluZyovKS8qOkRhdGUqLyB7XG5cdHZhciBvID0gbmV3IERhdGUocyksIG4gPSBuZXcgRGF0ZShOYU4pO1xuXHR2YXIgeSA9IG8uZ2V0WWVhcigpLCBtID0gby5nZXRNb250aCgpLCBkID0gby5nZXREYXRlKCk7XG5cdGlmKGlzTmFOKGQpKSByZXR1cm4gbjtcblx0dmFyIGxvd2VyID0gcy50b0xvd2VyQ2FzZSgpO1xuXHRpZihsb3dlci5tYXRjaCgvamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKSkge1xuXHRcdGxvd2VyID0gbG93ZXIucmVwbGFjZSgvW15hLXpdL2csXCJcIikucmVwbGFjZSgvKFteYS16XXxeKVthcF1tPyhbXmEtel18JCkvLFwiXCIpO1xuXHRcdGlmKGxvd2VyLmxlbmd0aCA+IDMgJiYgbG93ZXJfbW9udGhzLmluZGV4T2YobG93ZXIpID09IC0xKSByZXR1cm4gbjtcblx0fSBlbHNlIGlmKGxvd2VyLm1hdGNoKC9bYS16XS8pKSByZXR1cm4gbjtcblx0aWYoeSA8IDAgfHwgeSA+IDgwOTkpIHJldHVybiBuO1xuXHRpZigobSA+IDAgfHwgZCA+IDEpICYmIHkgIT0gMTAxKSByZXR1cm4gbztcblx0aWYocy5tYXRjaCgvW14tMC05OixcXC9cXFxcXS8pKSByZXR1cm4gbjtcblx0cmV0dXJuIG87XG59XG5cbnZhciBzcGxpdF9yZWdleCA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBzYWZlX3NwbGl0X3JlZ2V4ID0gXCJhYmFjYWJhXCIuc3BsaXQoLyg6P2IpL2kpLmxlbmd0aCA9PSA1O1xuXHRyZXR1cm4gZnVuY3Rpb24gc3BsaXRfcmVnZXgoc3RyLyo6c3RyaW5nKi8sIHJlLCBkZWYvKjpzdHJpbmcqLykvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHRcdGlmKHNhZmVfc3BsaXRfcmVnZXggfHwgdHlwZW9mIHJlID09IFwic3RyaW5nXCIpIHJldHVybiBzdHIuc3BsaXQocmUpO1xuXHRcdHZhciBwID0gc3RyLnNwbGl0KHJlKSwgbyA9IFtwWzBdXTtcblx0XHRmb3IodmFyIGkgPSAxOyBpIDwgcC5sZW5ndGg7ICsraSkgeyBvLnB1c2goZGVmKTsgby5wdXNoKHBbaV0pOyB9XG5cdFx0cmV0dXJuIG87XG5cdH07XG59KSgpO1xuZnVuY3Rpb24gZ2V0ZGF0YXN0cihkYXRhKS8qOj9zdHJpbmcqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gbnVsbDtcblx0aWYoZGF0YS5jb250ZW50ICYmIGRhdGEudHlwZSkgcmV0dXJuIGNjMnN0cihkYXRhLmNvbnRlbnQsIHRydWUpO1xuXHRpZihkYXRhLmRhdGEpIHJldHVybiBkZWJvbShkYXRhLmRhdGEpO1xuXHRpZihkYXRhLmFzTm9kZUJ1ZmZlciAmJiBoYXNfYnVmKSByZXR1cm4gZGVib20oZGF0YS5hc05vZGVCdWZmZXIoKS50b1N0cmluZygnYmluYXJ5JykpO1xuXHRpZihkYXRhLmFzQmluYXJ5KSByZXR1cm4gZGVib20oZGF0YS5hc0JpbmFyeSgpKTtcblx0aWYoZGF0YS5fZGF0YSAmJiBkYXRhLl9kYXRhLmdldENvbnRlbnQpIHJldHVybiBkZWJvbShjYzJzdHIoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGF0YS5fZGF0YS5nZXRDb250ZW50KCksMCkpKTtcblx0cmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldGRhdGFiaW4oZGF0YSkge1xuXHRpZighZGF0YSkgcmV0dXJuIG51bGw7XG5cdGlmKGRhdGEuZGF0YSkgcmV0dXJuIGNoYXJfY29kZXMoZGF0YS5kYXRhKTtcblx0aWYoZGF0YS5hc05vZGVCdWZmZXIgJiYgaGFzX2J1ZikgcmV0dXJuIGRhdGEuYXNOb2RlQnVmZmVyKCk7XG5cdGlmKGRhdGEuX2RhdGEgJiYgZGF0YS5fZGF0YS5nZXRDb250ZW50KSB7XG5cdFx0dmFyIG8gPSBkYXRhLl9kYXRhLmdldENvbnRlbnQoKTtcblx0XHRpZih0eXBlb2YgbyA9PSBcInN0cmluZ1wiKSByZXR1cm4gY2hhcl9jb2RlcyhvKTtcblx0XHRyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobyk7XG5cdH1cblx0aWYoZGF0YS5jb250ZW50ICYmIGRhdGEudHlwZSkgcmV0dXJuIGRhdGEuY29udGVudDtcblx0cmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldGRhdGEoZGF0YSkgeyByZXR1cm4gKGRhdGEgJiYgZGF0YS5uYW1lLnNsaWNlKC00KSA9PT0gXCIuYmluXCIpID8gZ2V0ZGF0YWJpbihkYXRhKSA6IGdldGRhdGFzdHIoZGF0YSk7IH1cblxuLyogUGFydCAyIFNlY3Rpb24gMTAuMS4yIFwiTWFwcGluZyBDb250ZW50IFR5cGVzXCIgTmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgKi9cbi8qIE9BU0lTIGRvZXMgbm90IGNvbW1lbnQgb24gZmlsZW5hbWUgY2FzZSBzZW5zaXRpdml0eSAqL1xuZnVuY3Rpb24gc2FmZWdldHppcGZpbGUoemlwLCBmaWxlLyo6c3RyaW5nKi8pIHtcblx0dmFyIGsgPSB6aXAuRnVsbFBhdGhzIHx8IGtleXMoemlwLmZpbGVzKTtcblx0dmFyIGYgPSBmaWxlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1xcL10vZywgJ1xcXFwnKSwgZyA9IGYucmVwbGFjZSgvXFxcXC9nLCdcXC8nKTtcblx0Zm9yKHZhciBpPTA7IGk8ay5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuID0ga1tpXS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcXC9dLyxcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmKGYgPT0gbiB8fCBnID09IG4pIHJldHVybiB6aXAuZmlsZXMgPyB6aXAuZmlsZXNba1tpXV0gOiB6aXAuRmlsZUluZGV4W2ldO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXR6aXBmaWxlKHppcCwgZmlsZS8qOnN0cmluZyovKSB7XG5cdHZhciBvID0gc2FmZWdldHppcGZpbGUoemlwLCBmaWxlKTtcblx0aWYobyA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBmaWxlIFwiICsgZmlsZSArIFwiIGluIHppcFwiKTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIGdldHppcGRhdGEoemlwLCBmaWxlLyo6c3RyaW5nKi8sIHNhZmUvKjo/Ym9vbGVhbiovKS8qOmFueSovIHtcblx0aWYoIXNhZmUpIHJldHVybiBnZXRkYXRhKGdldHppcGZpbGUoemlwLCBmaWxlKSk7XG5cdGlmKCFmaWxlKSByZXR1cm4gbnVsbDtcblx0dHJ5IHsgcmV0dXJuIGdldHppcGRhdGEoemlwLCBmaWxlKTsgfSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG59XG5cbmZ1bmN0aW9uIGdldHppcHN0cih6aXAsIGZpbGUvKjpzdHJpbmcqLywgc2FmZS8qOj9ib29sZWFuKi8pLyo6P3N0cmluZyovIHtcblx0aWYoIXNhZmUpIHJldHVybiBnZXRkYXRhc3RyKGdldHppcGZpbGUoemlwLCBmaWxlKSk7XG5cdGlmKCFmaWxlKSByZXR1cm4gbnVsbDtcblx0dHJ5IHsgcmV0dXJuIGdldHppcHN0cih6aXAsIGZpbGUpOyB9IGNhdGNoKGUpIHsgcmV0dXJuIG51bGw7IH1cbn1cblxuZnVuY3Rpb24gZ2V0emlwYmluKHppcCwgZmlsZS8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjphbnkqLyB7XG5cdGlmKCFzYWZlKSByZXR1cm4gZ2V0ZGF0YWJpbihnZXR6aXBmaWxlKHppcCwgZmlsZSkpO1xuXHRpZighZmlsZSkgcmV0dXJuIG51bGw7XG5cdHRyeSB7IHJldHVybiBnZXR6aXBiaW4oemlwLCBmaWxlKTsgfSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG59XG5cbmZ1bmN0aW9uIHppcGVudHJpZXMoemlwKSB7XG5cdHZhciBrID0gemlwLkZ1bGxQYXRocyB8fCBrZXlzKHppcC5maWxlcyksIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGsubGVuZ3RoOyArK2kpIGlmKGtbaV0uc2xpY2UoLTEpICE9ICcvJykgby5wdXNoKGtbaV0ucmVwbGFjZSgvXlJvb3QgRW50cnlbXFwvXS8sIFwiXCIpKTtcblx0cmV0dXJuIG8uc29ydCgpO1xufVxuXG5mdW5jdGlvbiB6aXBfYWRkX2ZpbGUoemlwLCBwYXRoLCBjb250ZW50KSB7XG5cdGlmKHppcC5GdWxsUGF0aHMpIHtcblx0XHRpZih0eXBlb2YgY29udGVudCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR2YXIgcmVzO1xuXHRcdFx0aWYoaGFzX2J1ZikgcmVzID0gQnVmZmVyX2Zyb20oY29udGVudCk7XG5cdFx0XHQvKiBUT0RPOiBpbnZlc3RpZ2F0ZSBwZXJmb3JtYW5jZSBpbiBFZGdlIDEzICovXG5cdFx0XHQvL2Vsc2UgaWYodHlwZW9mIFRleHRFbmNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSByZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoY29udGVudCk7XG5cdFx0XHRlbHNlIHJlcyA9IHV0ZjhkZWNvZGUoY29udGVudCk7XG5cdFx0XHRyZXR1cm4gQ0ZCLnV0aWxzLmNmYl9hZGQoemlwLCBwYXRoLCByZXMpO1xuXHRcdH1cblx0XHRDRkIudXRpbHMuY2ZiX2FkZCh6aXAsIHBhdGgsIGNvbnRlbnQpO1xuXHR9XG5cdGVsc2UgemlwLmZpbGUocGF0aCwgY29udGVudCk7XG59XG5cbmZ1bmN0aW9uIHppcF9uZXcoKSB7IHJldHVybiBDRkIudXRpbHMuY2ZiX25ldygpOyB9XG5cbmZ1bmN0aW9uIHppcF9yZWFkKGQsIG8pIHtcblx0c3dpdGNoKG8udHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIENGQi5yZWFkKGQsIHsgdHlwZTogXCJiYXNlNjRcIiB9KTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiBDRkIucmVhZChkLCB7IHR5cGU6IFwiYmluYXJ5XCIgfSk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiBjYXNlIFwiYXJyYXlcIjogcmV0dXJuIENGQi5yZWFkKGQsIHsgdHlwZTogXCJidWZmZXJcIiB9KTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG8udHlwZSk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVfcGF0aChwYXRoLyo6c3RyaW5nKi8sIGJhc2UvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHBhdGguY2hhckF0KDApID09IFwiL1wiKSByZXR1cm4gcGF0aC5zbGljZSgxKTtcblx0dmFyIHJlc3VsdCA9IGJhc2Uuc3BsaXQoJy8nKTtcblx0aWYoYmFzZS5zbGljZSgtMSkgIT0gXCIvXCIpIHJlc3VsdC5wb3AoKTsgLy8gZm9sZGVyIHBhdGhcblx0dmFyIHRhcmdldCA9IHBhdGguc3BsaXQoJy8nKTtcblx0d2hpbGUgKHRhcmdldC5sZW5ndGggIT09IDApIHtcblx0XHR2YXIgc3RlcCA9IHRhcmdldC5zaGlmdCgpO1xuXHRcdGlmIChzdGVwID09PSAnLi4nKSByZXN1bHQucG9wKCk7XG5cdFx0ZWxzZSBpZiAoc3RlcCAhPT0gJy4nKSByZXN1bHQucHVzaChzdGVwKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0LmpvaW4oJy8nKTtcbn1cbnZhciBYTUxfSEVBREVSID0gJzw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCIgc3RhbmRhbG9uZT1cInllc1wiPz5cXHJcXG4nO1xudmFyIGF0dHJlZ2V4Zz0vKFteXCJcXHM/PlxcL10rKVxccyo9XFxzKigoPzpcIikoW15cIl0qKSg/OlwiKXwoPzonKShbXiddKikoPzonKXwoW14nXCI+XFxzXSspKS9nO1xudmFyIHRhZ3JlZ2V4MT0vPFtcXC9cXD9dP1thLXpBLVowLTk6Xy1dKyg/OlxccytbXlwiXFxzPz5cXC9dK1xccyo9XFxzKig/OlwiW15cIl0qXCJ8J1teJ10qJ3xbXidcIj5cXHM9XSspKSpcXHMqW1xcL1xcP10/Pi9tZywgdGFncmVnZXgyID0gLzxbXj5dKj4vZztcbnZhciB0YWdyZWdleCA9IC8qI19fUFVSRV9fKi9YTUxfSEVBREVSLm1hdGNoKHRhZ3JlZ2V4MSkgPyB0YWdyZWdleDEgOiB0YWdyZWdleDI7XG52YXIgbnNyZWdleD0vPFxcdyo6LywgbnNyZWdleDIgPSAvPChcXC8/KVxcdys6LztcbmZ1bmN0aW9uIHBhcnNleG1sdGFnKHRhZy8qOnN0cmluZyovLCBza2lwX3Jvb3QvKjo/Ym9vbGVhbiovLCBza2lwX0xDLyo6P2Jvb2xlYW4qLykvKjphbnkqLyB7XG5cdHZhciB6ID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgZXEgPSAwLCBjID0gMDtcblx0Zm9yKDsgZXEgIT09IHRhZy5sZW5ndGg7ICsrZXEpIGlmKChjID0gdGFnLmNoYXJDb2RlQXQoZXEpKSA9PT0gMzIgfHwgYyA9PT0gMTAgfHwgYyA9PT0gMTMpIGJyZWFrO1xuXHRpZighc2tpcF9yb290KSB6WzBdID0gdGFnLnNsaWNlKDAsIGVxKTtcblx0aWYoZXEgPT09IHRhZy5sZW5ndGgpIHJldHVybiB6O1xuXHR2YXIgbSA9IHRhZy5tYXRjaChhdHRyZWdleGcpLCBqPTAsIHY9XCJcIiwgaT0wLCBxPVwiXCIsIGNjPVwiXCIsIHF1b3QgPSAxO1xuXHRpZihtKSBmb3IoaSA9IDA7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdGNjID0gbVtpXTtcblx0XHRmb3IoYz0wOyBjICE9IGNjLmxlbmd0aDsgKytjKSBpZihjYy5jaGFyQ29kZUF0KGMpID09PSA2MSkgYnJlYWs7XG5cdFx0cSA9IGNjLnNsaWNlKDAsYykudHJpbSgpO1xuXHRcdHdoaWxlKGNjLmNoYXJDb2RlQXQoYysxKSA9PSAzMikgKytjO1xuXHRcdHF1b3QgPSAoKGVxPWNjLmNoYXJDb2RlQXQoYysxKSkgPT0gMzQgfHwgZXEgPT0gMzkpID8gMSA6IDA7XG5cdFx0diA9IGNjLnNsaWNlKGMrMStxdW90LCBjYy5sZW5ndGgtcXVvdCk7XG5cdFx0Zm9yKGo9MDtqIT1xLmxlbmd0aDsrK2opIGlmKHEuY2hhckNvZGVBdChqKSA9PT0gNTgpIGJyZWFrO1xuXHRcdGlmKGo9PT1xLmxlbmd0aCkge1xuXHRcdFx0aWYocS5pbmRleE9mKFwiX1wiKSA+IDApIHEgPSBxLnNsaWNlKDAsIHEuaW5kZXhPZihcIl9cIikpOyAvLyBmcm9tIG9kc1xuXHRcdFx0eltxXSA9IHY7XG5cdFx0XHRpZighc2tpcF9MQykgeltxLnRvTG93ZXJDYXNlKCldID0gdjtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgayA9IChqPT09NSAmJiBxLnNsaWNlKDAsNSk9PT1cInhtbG5zXCI/XCJ4bWxuc1wiOlwiXCIpK3Euc2xpY2UoaisxKTtcblx0XHRcdGlmKHpba10gJiYgcS5zbGljZShqLTMsaikgPT0gXCJleHRcIikgY29udGludWU7IC8vIGZyb20gb2RzXG5cdFx0XHR6W2tdID0gdjtcblx0XHRcdGlmKCFza2lwX0xDKSB6W2sudG9Mb3dlckNhc2UoKV0gPSB2O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHN0cmlwX25zKHgvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiB4LnJlcGxhY2UobnNyZWdleDIsIFwiPCQxXCIpOyB9XG5cbnZhciBlbmNvZGluZ3MgPSB7XG5cdCcmcXVvdDsnOiAnXCInLFxuXHQnJmFwb3M7JzogXCInXCIsXG5cdCcmZ3Q7JzogJz4nLFxuXHQnJmx0Oyc6ICc8Jyxcblx0JyZhbXA7JzogJyYnXG59O1xudmFyIHJlbmNvZGluZyA9IC8qI19fUFVSRV9fKi9ldmVydChlbmNvZGluZ3MpO1xuLy92YXIgcmVuY3N0ciA9IFwiJjw+J1xcXCJcIi5zcGxpdChcIlwiKTtcblxuLy8gVE9ETzogQ1AgcmVtYXAgKG5lZWQgdG8gcmVhZCBmaWxlIHZlcnNpb24gdG8gZGV0ZXJtaW5lIE9TKVxudmFyIHVuZXNjYXBleG1sLyo6U3RyaW5nQ29udiovID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0LyogMjIuNC4yLjQgYnN0ciAoQmFzaWMgU3RyaW5nKSAqL1xuXHR2YXIgZW5jcmVnZXggPSAvJig/OnF1b3R8YXBvc3xndHxsdHxhbXB8I3g/KFtcXGRhLWZBLUZdKykpOy9pZywgY29kZXJlZ2V4ID0gL194KFtcXGRhLWZBLUZdezR9KV8vaWc7XG5cdHJldHVybiBmdW5jdGlvbiB1bmVzY2FwZXhtbCh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBzID0gdGV4dCArICcnLCBpID0gcy5pbmRleE9mKFwiPCFbQ0RBVEFbXCIpO1xuXHRcdGlmKGkgPT0gLTEpIHJldHVybiBzLnJlcGxhY2UoZW5jcmVnZXgsIGZ1bmN0aW9uKCQkLCAkMSkgeyByZXR1cm4gZW5jb2RpbmdzWyQkXXx8U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCgkMSwkJC5pbmRleE9mKFwieFwiKT4tMT8xNjoxMCkpfHwkJDsgfSkucmVwbGFjZShjb2RlcmVnZXgsZnVuY3Rpb24obSxjKSB7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYywxNikpO30pO1xuXHRcdHZhciBqID0gcy5pbmRleE9mKFwiXV0+XCIpO1xuXHRcdHJldHVybiB1bmVzY2FwZXhtbChzLnNsaWNlKDAsIGkpKSArIHMuc2xpY2UoaSs5LGopICsgdW5lc2NhcGV4bWwocy5zbGljZShqKzMpKTtcblx0fTtcbn0pKCk7XG5cbnZhciBkZWNyZWdleD0vWyY8PidcIl0vZywgY2hhcmVnZXggPSAvW1xcdTAwMDAtXFx1MDAwOFxcdTAwMGItXFx1MDAxZl0vZztcbmZ1bmN0aW9uIGVzY2FwZXhtbCh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzID0gdGV4dCArICcnO1xuXHRyZXR1cm4gcy5yZXBsYWNlKGRlY3JlZ2V4LCBmdW5jdGlvbih5KSB7IHJldHVybiByZW5jb2RpbmdbeV07IH0pLnJlcGxhY2UoY2hhcmVnZXgsZnVuY3Rpb24ocykgeyByZXR1cm4gXCJfeFwiICsgKFwiMDAwXCIrcy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpICsgXCJfXCI7fSk7XG59XG5mdW5jdGlvbiBlc2NhcGV4bWx0YWcodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyoveyByZXR1cm4gZXNjYXBleG1sKHRleHQpLnJlcGxhY2UoLyAvZyxcIl94MDAyMF9cIik7IH1cblxudmFyIGh0bWxjaGFyZWdleCA9IC9bXFx1MDAwMC1cXHUwMDFmXS9nO1xuZnVuY3Rpb24gZXNjYXBlaHRtbCh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzID0gdGV4dCArICcnO1xuXHRyZXR1cm4gcy5yZXBsYWNlKGRlY3JlZ2V4LCBmdW5jdGlvbih5KSB7IHJldHVybiByZW5jb2RpbmdbeV07IH0pLnJlcGxhY2UoL1xcbi9nLCBcIjxici8+XCIpLnJlcGxhY2UoaHRtbGNoYXJlZ2V4LGZ1bmN0aW9uKHMpIHsgcmV0dXJuIFwiJiN4XCIgKyAoXCIwMDBcIitzLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkgKyBcIjtcIjsgfSk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZXhsbWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyove1xuXHR2YXIgcyA9IHRleHQgKyAnJztcblx0cmV0dXJuIHMucmVwbGFjZShkZWNyZWdleCwgZnVuY3Rpb24oeSkgeyByZXR1cm4gcmVuY29kaW5nW3ldOyB9KS5yZXBsYWNlKGh0bWxjaGFyZWdleCxmdW5jdGlvbihzKSB7IHJldHVybiBcIiYjeFwiICsgKHMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCkgKyBcIjtcIjsgfSk7XG59XG5cbi8qIFRPRE86IGhhbmRsZSBjb2RlcGFnZXMgKi9cbnZhciB4bG1sX2ZpeHN0ci8qOlN0cmluZ0NvbnYqLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBlbnRyZWdleCA9IC8mIyhcXGQrKTsvZztcblx0ZnVuY3Rpb24gZW50cmVwbCgkJC8qOnN0cmluZyovLCQxLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCgkMSwxMCkpOyB9XG5cdHJldHVybiBmdW5jdGlvbiB4bG1sX2ZpeHN0cihzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBzdHIucmVwbGFjZShlbnRyZWdleCxlbnRyZXBsKTsgfTtcbn0pKCk7XG5mdW5jdGlvbiB4bG1sX3VuZml4c3RyKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHN0ci5yZXBsYWNlKC8oXFxyXFxufFtcXHJcXG5dKS9nLFwiXFwmIzEwO1wiKTsgfVxuXG5mdW5jdGlvbiBwYXJzZXhtbGJvb2wodmFsdWUvKjphbnkqLykvKjpib29sZWFuKi8ge1xuXHRzd2l0Y2godmFsdWUpIHtcblx0XHRjYXNlIDE6IGNhc2UgdHJ1ZTogY2FzZSAnMSc6IGNhc2UgJ3RydWUnOiBjYXNlICdUUlVFJzogcmV0dXJuIHRydWU7XG5cdFx0LyogY2FzZSAnMCc6IGNhc2UgJ2ZhbHNlJzogY2FzZSAnRkFMU0UnOiovXG5cdFx0ZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHV0ZjhyZWFkYShvcmlnLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0ID0gXCJcIiwgaSA9IDAsIGMgPSAwLCBkID0gMCwgZSA9IDAsIGYgPSAwLCB3ID0gMDtcblx0d2hpbGUgKGkgPCBvcmlnLmxlbmd0aCkge1xuXHRcdGMgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRpZiAoYyA8IDEyOCkgeyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTsgY29udGludWU7IH1cblx0XHRkID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYgKGM+MTkxICYmIGM8MjI0KSB7IGYgPSAoKGMgJiAzMSkgPDwgNik7IGYgfD0gKGQgJiA2Myk7IG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGYpOyBjb250aW51ZTsgfVxuXHRcdGUgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRpZiAoYyA8IDI0MCkgeyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAxNSkgPDwgMTIpIHwgKChkICYgNjMpIDw8IDYpIHwgKGUgJiA2MykpOyBjb250aW51ZTsgfVxuXHRcdGYgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKTtcblx0XHR3ID0gKCgoYyAmIDcpIDw8IDE4KSB8ICgoZCAmIDYzKSA8PCAxMikgfCAoKGUgJiA2MykgPDwgNikgfCAoZiAmIDYzKSktNjU1MzY7XG5cdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODAwICsgKCh3Pj4+MTApJjEwMjMpKTtcblx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweERDMDAgKyAodyYxMDIzKSk7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gdXRmOHJlYWRiKGRhdGEpIHtcblx0dmFyIG91dCA9IG5ld19yYXdfYnVmKDIqZGF0YS5sZW5ndGgpLCB3LCBpLCBqID0gMSwgayA9IDAsIHd3PTAsIGM7XG5cdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKz1qKSB7XG5cdFx0aiA9IDE7XG5cdFx0aWYoKGM9ZGF0YS5jaGFyQ29kZUF0KGkpKSA8IDEyOCkgdyA9IGM7XG5cdFx0ZWxzZSBpZihjIDwgMjI0KSB7IHcgPSAoYyYzMSkqNjQrKGRhdGEuY2hhckNvZGVBdChpKzEpJjYzKTsgaj0yOyB9XG5cdFx0ZWxzZSBpZihjIDwgMjQwKSB7IHc9KGMmMTUpKjQwOTYrKGRhdGEuY2hhckNvZGVBdChpKzEpJjYzKSo2NCsoZGF0YS5jaGFyQ29kZUF0KGkrMikmNjMpOyBqPTM7IH1cblx0XHRlbHNlIHsgaiA9IDQ7XG5cdFx0XHR3ID0gKGMgJiA3KSoyNjIxNDQrKGRhdGEuY2hhckNvZGVBdChpKzEpJjYzKSo0MDk2KyhkYXRhLmNoYXJDb2RlQXQoaSsyKSY2MykqNjQrKGRhdGEuY2hhckNvZGVBdChpKzMpJjYzKTtcblx0XHRcdHcgLT0gNjU1MzY7IHd3ID0gMHhEODAwICsgKCh3Pj4+MTApJjEwMjMpOyB3ID0gMHhEQzAwICsgKHcmMTAyMyk7XG5cdFx0fVxuXHRcdGlmKHd3ICE9PSAwKSB7IG91dFtrKytdID0gd3cmMjU1OyBvdXRbaysrXSA9IHd3Pj4+ODsgd3cgPSAwOyB9XG5cdFx0b3V0W2srK10gPSB3JTI1Njsgb3V0W2srK10gPSB3Pj4+ODtcblx0fVxuXHRyZXR1cm4gb3V0LnNsaWNlKDAsaykudG9TdHJpbmcoJ3VjczInKTtcbn1cblxuZnVuY3Rpb24gdXRmOHJlYWRjKGRhdGEpIHsgcmV0dXJuIEJ1ZmZlcl9mcm9tKGRhdGEsICdiaW5hcnknKS50b1N0cmluZygndXRmOCcpOyB9XG5cbnZhciB1dGY4Y29ycHVzID0gXCJmb28gYmFyIGJhelxcdTAwZTJcXHUwMDk4XFx1MDA4M1xcdTAwZjBcXHUwMDlmXFx1MDA4ZFxcdTAwYTNcIjtcbnZhciB1dGY4cmVhZCA9IGhhc19idWYgJiYgKC8qI19fUFVSRV9fKi91dGY4cmVhZGModXRmOGNvcnB1cykgPT0gLyojX19QVVJFX18qL3V0ZjhyZWFkYSh1dGY4Y29ycHVzKSAmJiB1dGY4cmVhZGMgfHwgLyojX19QVVJFX18qL3V0ZjhyZWFkYih1dGY4Y29ycHVzKSA9PSAvKiNfX1BVUkVfXyovdXRmOHJlYWRhKHV0Zjhjb3JwdXMpICYmIHV0ZjhyZWFkYikgfHwgdXRmOHJlYWRhO1xuXG52YXIgdXRmOHdyaXRlLyo6U3RyaW5nQ29udiovID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGRhdGEpIHsgcmV0dXJuIEJ1ZmZlcl9mcm9tKGRhdGEsICd1dGY4JykudG9TdHJpbmcoXCJiaW5hcnlcIik7IH0gOiBmdW5jdGlvbihvcmlnLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGkgPSAwLCBjID0gMCwgZCA9IDA7XG5cdHdoaWxlKGkgPCBvcmlnLmxlbmd0aCkge1xuXHRcdGMgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRzd2l0Y2godHJ1ZSkge1xuXHRcdFx0Y2FzZSBjIDwgMTI4OiBvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTsgYnJlYWs7XG5cdFx0XHRjYXNlIGMgPCAyMDQ4OlxuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5MiArIChjID4+IDYpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKGMgJiA2MykpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIGMgPj0gNTUyOTYgJiYgYyA8IDU3MzQ0OlxuXHRcdFx0XHRjIC09IDU1Mjk2OyBkID0gb3JpZy5jaGFyQ29kZUF0KGkrKykgLSA1NjMyMCArIChjPDwxMCk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjQwICsgKChkID4+MTgpICYgNykpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQgKyAoKGQgPj4xMikgJiA2MykpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggKyAoKGQgPj4gNikgJiA2MykpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggKyAoZCAmIDYzKSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjI0ICsgKGMgPj4gMTIpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKChjID4+IDYpICYgNjMpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKGMgJiA2MykpKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufTtcblxuLy8gbWF0Y2hlcyA8Zm9vPi4uLjwvZm9vPiBleHRyYWN0cyBjb250ZW50XG52YXIgbWF0Y2h0YWcgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgbXRjYWNoZS8qOntbazpzdHJpbmddOlJlZ0V4cH0qLyA9ICh7fS8qOmFueSovKTtcblx0cmV0dXJuIGZ1bmN0aW9uIG1hdGNodGFnKGYvKjpzdHJpbmcqLyxnLyo6P3N0cmluZyovKS8qOlJlZ0V4cCovIHtcblx0XHR2YXIgdCA9IGYrXCJ8XCIrKGd8fFwiXCIpO1xuXHRcdGlmKG10Y2FjaGVbdF0pIHJldHVybiBtdGNhY2hlW3RdO1xuXHRcdHJldHVybiAobXRjYWNoZVt0XSA9IG5ldyBSZWdFeHAoJzwoPzpcXFxcdys6KT8nK2YrJyg/OiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiKT8oPzpbXj5dKik+KFtcXFxcc1xcXFxTXSo/KTwvKD86XFxcXHcrOik/JytmKyc+JywoKGd8fFwiXCIpLyo6YW55Ki8pKSk7XG5cdH07XG59KSgpO1xuXG52YXIgaHRtbGRlY29kZS8qOnsoczpzdHJpbmcpOnN0cmluZ30qLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBlbnRpdGllcy8qOkFycmF5PFtSZWdFeHAsIHN0cmluZ10+Ki8gPSBbXG5cdFx0WyduYnNwJywgJyAnXSwgWydtaWRkb3QnLCAnwrcnXSxcblx0XHRbJ3F1b3QnLCAnXCInXSwgWydhcG9zJywgXCInXCJdLCBbJ2d0JywgICAnPiddLCBbJ2x0JywgICAnPCddLCBbJ2FtcCcsICAnJiddXG5cdF0ubWFwKGZ1bmN0aW9uKHgvKjpbc3RyaW5nLCBzdHJpbmddKi8pIHsgcmV0dXJuIFtuZXcgUmVnRXhwKCcmJyArIHhbMF0gKyAnOycsIFwiaWdcIiksIHhbMV1dOyB9KTtcblx0cmV0dXJuIGZ1bmN0aW9uIGh0bWxkZWNvZGUoc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBvID0gc3RyXG5cdFx0XHRcdC8vIFJlbW92ZSBuZXcgbGluZXMgYW5kIHNwYWNlcyBmcm9tIHN0YXJ0IG9mIGNvbnRlbnRcblx0XHRcdFx0LnJlcGxhY2UoL15bXFx0XFxuXFxyIF0rLywgXCJcIilcblx0XHRcdFx0Ly8gUmVtb3ZlIG5ldyBsaW5lcyBhbmQgc3BhY2VzIGZyb20gZW5kIG9mIGNvbnRlbnRcblx0XHRcdFx0LnJlcGxhY2UoL1tcXHRcXG5cXHIgXSskLyxcIlwiKVxuXHRcdFx0XHQvLyBBZGRlZCBsaW5lIHdoaWNoIHJlbW92ZXMgYW55IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgYW5kIGJlZm9yZSBodG1sIHRhZ3Ncblx0XHRcdFx0LnJlcGxhY2UoLz5cXHMrL2csXCI+XCIpLnJlcGxhY2UoL1xccys8L2csXCI8XCIpXG5cdFx0XHRcdC8vIFJlcGxhY2UgcmVtYWluaW5nIG5ldyBsaW5lcyBhbmQgc3BhY2VzIHdpdGggc3BhY2Vcblx0XHRcdFx0LnJlcGxhY2UoL1tcXHRcXG5cXHIgXSsvZywgXCIgXCIpXG5cdFx0XHRcdC8vIFJlcGxhY2UgPGJyPiB0YWdzIHdpdGggbmV3IGxpbmVzXG5cdFx0XHRcdC5yZXBsYWNlKC88XFxzKltiQl1bclJdXFxzKlxcLz8+L2csXCJcXG5cIilcblx0XHRcdFx0Ly8gU3RyaXAgSFRNTCBlbGVtZW50c1xuXHRcdFx0XHQucmVwbGFjZSgvPFtePl0qPi9nLFwiXCIpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBlbnRpdGllcy5sZW5ndGg7ICsraSkgbyA9IG8ucmVwbGFjZShlbnRpdGllc1tpXVswXSwgZW50aXRpZXNbaV1bMV0pO1xuXHRcdHJldHVybiBvO1xuXHR9O1xufSkoKTtcblxudmFyIHZ0cmVnZXggPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCl7IHZhciB2dF9jYWNoZSA9IHt9O1xuXHRyZXR1cm4gZnVuY3Rpb24gdnRfcmVnZXgoYnQpIHtcblx0XHRpZih2dF9jYWNoZVtidF0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHZ0X2NhY2hlW2J0XTtcblx0XHRyZXR1cm4gKHZ0X2NhY2hlW2J0XSA9IG5ldyBSZWdFeHAoXCI8KD86dnQ6KT9cIiArIGJ0ICsgXCI+KFtcXFxcc1xcXFxTXSo/KTwvKD86dnQ6KT9cIiArIGJ0ICsgXCI+XCIsICdnJykgKTtcbn07fSkoKTtcbnZhciB2dHZyZWdleCA9IC88XFwvPyg/OnZ0Oik/dmFyaWFudD4vZywgdnRtcmVnZXggPSAvPCg/OnZ0OikoW14+XSopPihbXFxzXFxTXSopPC87XG5mdW5jdGlvbiBwYXJzZVZlY3RvcihkYXRhLyo6c3RyaW5nKi8sIG9wdHMpLyo6QXJyYXk8e3Y6c3RyaW5nLHQ6c3RyaW5nfT4qLyB7XG5cdHZhciBoID0gcGFyc2V4bWx0YWcoZGF0YSk7XG5cblx0dmFyIG1hdGNoZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBkYXRhLm1hdGNoKHZ0cmVnZXgoaC5iYXNlVHlwZSkpfHxbXTtcblx0dmFyIHJlcy8qOkFycmF5PGFueT4qLyA9IFtdO1xuXHRpZihtYXRjaGVzLmxlbmd0aCAhPSBoLnNpemUpIHtcblx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwidW5leHBlY3RlZCB2ZWN0b3IgbGVuZ3RoIFwiICsgbWF0Y2hlcy5sZW5ndGggKyBcIiAhPSBcIiArIGguc2l6ZSk7XG5cdFx0cmV0dXJuIHJlcztcblx0fVxuXHRtYXRjaGVzLmZvckVhY2goZnVuY3Rpb24oeC8qOnN0cmluZyovKSB7XG5cdFx0dmFyIHYgPSB4LnJlcGxhY2UodnR2cmVnZXgsXCJcIikubWF0Y2godnRtcmVnZXgpO1xuXHRcdGlmKHYpIHJlcy5wdXNoKHt2OnV0ZjhyZWFkKHZbMl0pLCB0OnZbMV19KTtcblx0fSk7XG5cdHJldHVybiByZXM7XG59XG5cbnZhciB3dHJlZ2V4ID0gLyheXFxzfFxccyR8XFxuKS87XG5mdW5jdGlvbiB3cml0ZXRhZyhmLyo6c3RyaW5nKi8sZy8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuICc8JyArIGYgKyAoZy5tYXRjaCh3dHJlZ2V4KT8nIHhtbDpzcGFjZT1cInByZXNlcnZlXCInIDogXCJcIikgKyAnPicgKyBnICsgJzwvJyArIGYgKyAnPic7IH1cblxuZnVuY3Rpb24gd3h0X2hlbHBlcihoKS8qOnN0cmluZyovIHsgcmV0dXJuIGtleXMoaCkubWFwKGZ1bmN0aW9uKGspIHsgcmV0dXJuIFwiIFwiICsgayArICc9XCInICsgaFtrXSArICdcIic7fSkuam9pbihcIlwiKTsgfVxuZnVuY3Rpb24gd3JpdGV4dGFnKGYvKjpzdHJpbmcqLyxnLyo6P3N0cmluZyovLGgpIHsgcmV0dXJuICc8JyArIGYgKyAoKGggIT0gbnVsbCkgPyB3eHRfaGVscGVyKGgpIDogXCJcIikgKyAoKGcgIT0gbnVsbCkgPyAoZy5tYXRjaCh3dHJlZ2V4KT8nIHhtbDpzcGFjZT1cInByZXNlcnZlXCInIDogXCJcIikgKyAnPicgKyBnICsgJzwvJyArIGYgOiBcIi9cIikgKyAnPic7fVxuXG5mdW5jdGlvbiB3cml0ZV93M2NkdGYoZC8qOkRhdGUqLywgdC8qOj9ib29sZWFuKi8pLyo6c3RyaW5nKi8geyB0cnkgeyByZXR1cm4gZC50b0lTT1N0cmluZygpLnJlcGxhY2UoL1xcLlxcZCovLFwiXCIpOyB9IGNhdGNoKGUpIHsgaWYodCkgdGhyb3cgZTsgfSByZXR1cm4gXCJcIjsgfVxuXG5mdW5jdGlvbiB3cml0ZV92dChzLCB4bHN4Lyo6P2Jvb2xlYW4qLykvKjpzdHJpbmcqLyB7XG5cdHN3aXRjaCh0eXBlb2Ygcykge1xuXHRcdGNhc2UgJ3N0cmluZyc6XG5cdFx0XHR2YXIgbyA9IHdyaXRleHRhZygndnQ6bHB3c3RyJywgZXNjYXBleG1sKHMpKTtcblx0XHRcdGlmKHhsc3gpIG8gPSBvLnJlcGxhY2UoLyZxdW90Oy9nLCBcIl94MDAyMl9cIik7XG5cdFx0XHRyZXR1cm4gbztcblx0XHRjYXNlICdudW1iZXInOiByZXR1cm4gd3JpdGV4dGFnKChzfDApPT1zPyd2dDppNCc6J3Z0OnI4JywgZXNjYXBleG1sKFN0cmluZyhzKSkpO1xuXHRcdGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gd3JpdGV4dGFnKCd2dDpib29sJyxzPyd0cnVlJzonZmFsc2UnKTtcblx0fVxuXHRpZihzIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHdyaXRleHRhZygndnQ6ZmlsZXRpbWUnLCB3cml0ZV93M2NkdGYocykpO1xuXHR0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gc2VyaWFsaXplIFwiICsgcyk7XG59XG5cbmZ1bmN0aW9uIHhsbWxfbm9ybWFsaXplKGQpLyo6c3RyaW5nKi8ge1xuXHRpZihoYXNfYnVmICYmLyo6OnR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgZCAhPSBudWxsICYmIGQgaW5zdGFuY2VvZiBCdWZmZXIgJiYqLyBCdWZmZXIuaXNCdWZmZXIoZCkpIHJldHVybiBkLnRvU3RyaW5nKCd1dGY4Jyk7XG5cdGlmKHR5cGVvZiBkID09PSAnc3RyaW5nJykgcmV0dXJuIGQ7XG5cdC8qIGR1a3RhcGUgKi9cblx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gdXRmOHJlYWQoYTJzKGFiMmEoZCkpKTtcblx0dGhyb3cgbmV3IEVycm9yKFwiQmFkIGlucHV0IGZvcm1hdDogZXhwZWN0ZWQgQnVmZmVyIG9yIHN0cmluZ1wiKTtcbn1cbi8qIFVPUyB1c2VzIENKSyBpbiB0YWdzICovXG52YXIgeGxtbHJlZ2V4ID0gLzwoXFwvPykoW15cXHM/PjwhXFwvOl0qOnwpKFteXFxzPzw+OlxcL10rKSg/OltcXHM/OlxcL11bXj5dKik/Pi9tZztcbi8vdmFyIHhsbWxyZWdleCA9IC88KFxcLz8pKFthLXowLTldKjp8KShcXHcrKVtePl0qPi9tZztcblxudmFyIFhNTE5TID0gKHtcblx0Q09SRV9QUk9QUzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzJyxcblx0Q1VTVF9QUk9QUzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9jdXN0b20tcHJvcGVydGllc1wiLFxuXHRFWFRfUFJPUFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZXh0ZW5kZWQtcHJvcGVydGllc1wiLFxuXHRDVDogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcycsXG5cdFJFTFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMnLFxuXHRUQ01OVDogJ2h0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxOC90aHJlYWRlZGNvbW1lbnRzJyxcblx0J2RjJzogJ2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJyxcblx0J2RjdGVybXMnOiAnaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycsXG5cdCdkY21pdHlwZSc6ICdodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvJyxcblx0J214JzogJ2h0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL21hYy9leGNlbC8yMDA4L21haW4nLFxuXHQncic6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzJyxcblx0J3Nqcyc6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3NoZWV0anMvY29yZS1wcm9wZXJ0aWVzJyxcblx0J3Z0JzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzJyxcblx0J3hzaSc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZScsXG5cdCd4c2QnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEnXG59Lyo6YW55Ki8pO1xuXG52YXIgWE1MTlNfbWFpbiA9IFtcblx0J2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbicsXG5cdCdodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4nLFxuXHQnaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvZXhjZWwvMjAwNi9tYWluJyxcblx0J2h0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvMidcbl07XG5cbnZhciBYTE1MTlMgPSAoe1xuXHQnbyc6ICAgICd1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UnLFxuXHQneCc6ICAgICd1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCcsXG5cdCdzcyc6ICAgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnNwcmVhZHNoZWV0Jyxcblx0J2R0JzogICAndXVpZDpDMkY0MTAxMC02NUIzLTExZDEtQTI5Ri0wMEFBMDBDMTQ4ODInLFxuXHQnbXYnOiAgICdodHRwOi8vbWFjVm1sU2NoZW1hVXJpJyxcblx0J3YnOiAgICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwnLFxuXHQnaHRtbCc6ICdodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwJ1xufS8qOmFueSovKTtcbmZ1bmN0aW9uIHJlYWRfZG91YmxlX2xlKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgcyA9IDEgLSAyICogKGJbaWR4ICsgN10gPj4+IDcpO1xuXHR2YXIgZSA9ICgoYltpZHggKyA3XSAmIDB4N2YpIDw8IDQpICsgKChiW2lkeCArIDZdID4+PiA0KSAmIDB4MGYpO1xuXHR2YXIgbSA9IChiW2lkeCs2XSYweDBmKTtcblx0Zm9yKHZhciBpID0gNTsgaSA+PSAwOyAtLWkpIG0gPSBtICogMjU2ICsgYltpZHggKyBpXTtcblx0aWYoZSA9PSAweDdmZikgcmV0dXJuIG0gPT0gMCA/IChzICogSW5maW5pdHkpIDogTmFOO1xuXHRpZihlID09IDApIGUgPSAtMTAyMjtcblx0ZWxzZSB7IGUgLT0gMTAyMzsgbSArPSBNYXRoLnBvdygyLDUyKTsgfVxuXHRyZXR1cm4gcyAqIE1hdGgucG93KDIsIGUgLSA1MikgKiBtO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9kb3VibGVfbGUoYi8qOlJhd0J5dGVzfENGQmxvYiovLCB2Lyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKSB7XG5cdHZhciBicyA9ICgoKCh2IDwgMCkgfHwgKDEvdiA9PSAtSW5maW5pdHkpKSA/IDEgOiAwKSA8PCA3KSwgZSA9IDAsIG0gPSAwO1xuXHR2YXIgYXYgPSBicyA/ICgtdikgOiB2O1xuXHRpZighaXNGaW5pdGUoYXYpKSB7IGUgPSAweDdmZjsgbSA9IGlzTmFOKHYpID8gMHg2OTY5IDogMDsgfVxuXHRlbHNlIGlmKGF2ID09IDApIGUgPSBtID0gMDtcblx0ZWxzZSB7XG5cdFx0ZSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYXYpIC8gTWF0aC5MTjIpO1xuXHRcdG0gPSBhdiAqIE1hdGgucG93KDIsIDUyIC0gZSk7XG5cdFx0aWYoKGUgPD0gLTEwMjMpICYmICghaXNGaW5pdGUobSkgfHwgKG0gPCBNYXRoLnBvdygyLDUyKSkpKSB7IGUgPSAtMTAyMjsgfVxuXHRcdGVsc2UgeyBtIC09IE1hdGgucG93KDIsNTIpOyBlKz0xMDIzOyB9XG5cdH1cblx0Zm9yKHZhciBpID0gMDsgaSA8PSA1OyArK2ksIG0vPTI1NikgYltpZHggKyBpXSA9IG0gJiAweGZmO1xuXHRiW2lkeCArIDZdID0gKChlICYgMHgwZikgPDwgNCkgfCAobSAmIDB4Zik7XG5cdGJbaWR4ICsgN10gPSAoZSA+PiA0KSB8IGJzO1xufVxuXG52YXIgX19fdG9CdWZmZXIgPSBmdW5jdGlvbihidWZzLyo6QXJyYXk8QXJyYXk8UmF3Qnl0ZXM+ID4qLykvKjpSYXdCeXRlcyovIHsgdmFyIHg9W10sdz0xMDI0MDsgZm9yKHZhciBpPTA7aTxidWZzWzBdLmxlbmd0aDsrK2kpIGlmKGJ1ZnNbMF1baV0pIGZvcih2YXIgaj0wLEw9YnVmc1swXVtpXS5sZW5ndGg7ajxMO2orPXcpIHgucHVzaC5hcHBseSh4LCBidWZzWzBdW2ldLnNsaWNlKGosait3KSk7IHJldHVybiB4OyB9O1xudmFyIF9fdG9CdWZmZXIgPSBoYXNfYnVmID8gZnVuY3Rpb24oYnVmcykgeyByZXR1cm4gKGJ1ZnNbMF0ubGVuZ3RoID4gMCAmJiBCdWZmZXIuaXNCdWZmZXIoYnVmc1swXVswXSkpID8gQnVmZmVyLmNvbmNhdChidWZzWzBdLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoeCkgPyB4IDogQnVmZmVyX2Zyb20oeCk7IH0pKSA6IF9fX3RvQnVmZmVyKGJ1ZnMpO30gOiBfX190b0J1ZmZlcjtcblxudmFyIF9fX3V0ZjE2bGUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHZhciBzcy8qOkFycmF5PHN0cmluZz4qLz1bXTsgZm9yKHZhciBpPXM7IGk8ZTsgaSs9Mikgc3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKF9fcmVhZFVJbnQxNkxFKGIsaSkpKTsgcmV0dXJuIHNzLmpvaW4oXCJcIikucmVwbGFjZShjaHIwLCcnKTsgfTtcbnZhciBfX3V0ZjE2bGUgPSBoYXNfYnVmID8gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX191dGYxNmxlKGIscyxlKTsgcmV0dXJuIGIudG9TdHJpbmcoJ3V0ZjE2bGUnLHMsZSkucmVwbGFjZShjaHIwLCcnKS8qLnJlcGxhY2UoY2hyMSwnIScpKi87IH0gOiBfX191dGYxNmxlO1xuXG52YXIgX19faGV4bGlmeSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sbC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgdmFyIHNzLyo6QXJyYXk8c3RyaW5nPiovPVtdOyBmb3IodmFyIGk9czsgaTxzK2w7ICsraSkgc3MucHVzaCgoXCIwXCIgKyBiW2ldLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKTsgcmV0dXJuIHNzLmpvaW4oXCJcIik7IH07XG52YXIgX19oZXhsaWZ5ID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sbC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogJiYgYiBpbnN0YW5jZW9mIEJ1ZmZlciovID8gYi50b1N0cmluZygnaGV4JyxzLHMrbCkgOiBfX19oZXhsaWZ5KGIscyxsKTsgfSA6IF9fX2hleGxpZnk7XG5cbnZhciBfX191dGY4ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pIHsgdmFyIHNzPVtdOyBmb3IodmFyIGk9czsgaTxlOyBpKyspIHNzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShfX3JlYWRVSW50OChiLGkpKSk7IHJldHVybiBzcy5qb2luKFwiXCIpOyB9O1xudmFyIF9fdXRmOCA9IGhhc19idWYgPyBmdW5jdGlvbiB1dGY4X2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBzLyo6bnVtYmVyKi8sIGUvKjpudW1iZXIqLykgeyByZXR1cm4gKEJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogJiYgKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pID8gYi50b1N0cmluZygndXRmOCcscyxlKSA6IF9fX3V0ZjgoYixzLGUpOyB9IDogX19fdXRmODtcblxudmFyIF9fX2xwc3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG52YXIgX19scHN0ciA9IF9fX2xwc3RyO1xuXG52YXIgX19fY3BzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmOChiLCBpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcbnZhciBfX2Nwc3RyID0gX19fY3BzdHI7XG5cbnZhciBfX19scHdzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSAyKl9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGY4KGIsIGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xudmFyIF9fbHB3c3RyID0gX19fbHB3c3RyO1xuXG52YXIgX19fbHBwNCA9IGZ1bmN0aW9uIGxwcDRfKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGYxNmxlKGIsIGkrNCxpKzQrbGVuKSA6IFwiXCI7fTtcbnZhciBfX2xwcDQgPSBfX19scHA0O1xuXG52YXIgX19fOGxwcDQgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmOChiLCBpKzQsaSs0K2xlbikgOiBcIlwiO307XG52YXIgX184bHBwNCA9IF9fXzhscHA0O1xuXG52YXIgX19fZG91YmxlID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykgeyByZXR1cm4gcmVhZF9kb3VibGVfbGUoYiwgaWR4KTt9O1xudmFyIF9fZG91YmxlID0gX19fZG91YmxlO1xuXG52YXIgaXNfYnVmID0gZnVuY3Rpb24gaXNfYnVmX2EoYSkgeyByZXR1cm4gQXJyYXkuaXNBcnJheShhKSB8fCAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpOyB9O1xuXG5pZihoYXNfYnVmLyo6OiAmJiB0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyovKSB7XG5cdF9fbHBzdHIgPSBmdW5jdGlvbiBscHN0cl9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX2xwc3RyKGIsIGkpOyB2YXIgbGVuID0gYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBsZW4gPiAwID8gYi50b1N0cmluZygndXRmOCcsaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG5cdF9fY3BzdHIgPSBmdW5jdGlvbiBjcHN0cl9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX2Nwc3RyKGIsIGkpOyB2YXIgbGVuID0gYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBsZW4gPiAwID8gYi50b1N0cmluZygndXRmOCcsaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG5cdF9fbHB3c3RyID0gZnVuY3Rpb24gbHB3c3RyX2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fbHB3c3RyKGIsIGkpOyB2YXIgbGVuID0gMipiLnJlYWRVSW50MzJMRShpKTsgcmV0dXJuIGIudG9TdHJpbmcoJ3V0ZjE2bGUnLGkrNCxpKzQrbGVuLTEpO307XG5cdF9fbHBwNCA9IGZ1bmN0aW9uIGxwcDRfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19scHA0KGIsIGkpOyB2YXIgbGVuID0gYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGYxNmxlJyxpKzQsaSs0K2xlbik7fTtcblx0X184bHBwNCA9IGZ1bmN0aW9uIGxwcDRfOGIoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fOGxwcDQoYiwgaSk7IHZhciBsZW4gPSBiLnJlYWRVSW50MzJMRShpKTsgcmV0dXJuIGIudG9TdHJpbmcoJ3V0ZjgnLGkrNCxpKzQrbGVuKTt9O1xuXHRfX2RvdWJsZSA9IGZ1bmN0aW9uIGRvdWJsZV8oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiYmIGIgaW5zdGFuY2VvZiBCdWZmZXIqLykgcmV0dXJuIGIucmVhZERvdWJsZUxFKGkpOyByZXR1cm4gX19fZG91YmxlKGIsaSk7IH07XG5cdGlzX2J1ZiA9IGZ1bmN0aW9uIGlzX2J1Zl9iKGEpIHsgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKSB8fCBBcnJheS5pc0FycmF5KGEpIHx8ICh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhIGluc3RhbmNlb2YgVWludDhBcnJheSk7IH07XG59XG5cbi8qIGZyb20ganMteGxzICovXG5mdW5jdGlvbiBjcGRvaXQoKSB7XG5cdF9fdXRmMTZsZSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKSB7IHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgYi5zbGljZShzLGUpKS5yZXBsYWNlKGNocjAsICcnKTsgfTtcblx0X191dGY4ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pIHsgcmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSwgYi5zbGljZShzLGUpKTsgfTtcblx0X19scHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfYW5zaSwgYi5zbGljZShpKzQsIGkrNCtsZW4tMSkpIDogXCJcIjt9O1xuXHRfX2Nwc3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jb2RlcGFnZSwgYi5zbGljZShpKzQsIGkrNCtsZW4tMSkpIDogXCJcIjt9O1xuXHRfX2xwd3N0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IDIqX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgYi5zbGljZShpKzQsaSs0K2xlbi0xKSkgOiBcIlwiO307XG5cdF9fbHBwNCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGIuc2xpY2UoaSs0LGkrNCtsZW4pKSA6IFwiXCI7fTtcblx0X184bHBwNCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLCBiLnNsaWNlKGkrNCxpKzQrbGVuKSkgOiBcIlwiO307XG59XG5pZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSBjcGRvaXQoKTtcblxudmFyIF9fcmVhZFVJbnQ4ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiBiW2lkeF07IH07XG52YXIgX19yZWFkVUludDE2TEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgcmV0dXJuIChiW2lkeCsxXSooMTw8OCkpK2JbaWR4XTsgfTtcbnZhciBfX3JlYWRJbnQxNkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHZhciB1ID0gKGJbaWR4KzFdKigxPDw4KSkrYltpZHhdOyByZXR1cm4gKHUgPCAweDgwMDApID8gdSA6ICgoMHhmZmZmIC0gdSArIDEpICogLTEpOyB9O1xudmFyIF9fcmVhZFVJbnQzMkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiBiW2lkeCszXSooMTw8MjQpKyhiW2lkeCsyXTw8MTYpKyhiW2lkeCsxXTw8OCkrYltpZHhdOyB9O1xudmFyIF9fcmVhZEludDMyTEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgcmV0dXJuIChiW2lkeCszXTw8MjQpfChiW2lkeCsyXTw8MTYpfChiW2lkeCsxXTw8OCl8YltpZHhdOyB9O1xudmFyIF9fcmVhZEludDMyQkUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgcmV0dXJuIChiW2lkeF08PDI0KXwoYltpZHgrMV08PDE2KXwoYltpZHgrMl08PDgpfGJbaWR4KzNdOyB9O1xuXG5mdW5jdGlvbiBSZWFkU2hpZnQoc2l6ZS8qOm51bWJlciovLCB0Lyo6P3N0cmluZyovKS8qOm51bWJlcnxzdHJpbmcqLyB7XG5cdHZhciBvPVwiXCIsIG9JLyo6OiA6bnVtYmVyID0gMCovLCBvUiwgb289W10sIHcsIHZ2LCBpLCBsb2M7XG5cdHN3aXRjaCh0KSB7XG5cdFx0Y2FzZSAnZGJjcyc6XG5cdFx0XHRsb2MgPSB0aGlzLmw7XG5cdFx0XHRpZihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgbyA9IHRoaXMuc2xpY2UodGhpcy5sLCB0aGlzLmwrMipzaXplKS50b1N0cmluZyhcInV0ZjE2bGVcIik7XG5cdFx0XHRlbHNlIGZvcihpID0gMDsgaSA8IHNpemU7ICsraSkgeyBvKz1TdHJpbmcuZnJvbUNoYXJDb2RlKF9fcmVhZFVJbnQxNkxFKHRoaXMsIGxvYykpOyBsb2MrPTI7IH1cblx0XHRcdHNpemUgKj0gMjtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAndXRmOCc6IG8gPSBfX3V0ZjgodGhpcywgdGhpcy5sLCB0aGlzLmwgKyBzaXplKTsgYnJlYWs7XG5cdFx0Y2FzZSAndXRmMTZsZSc6IHNpemUgKj0gMjsgbyA9IF9fdXRmMTZsZSh0aGlzLCB0aGlzLmwsIHRoaXMubCArIHNpemUpOyBicmVhaztcblxuXHRcdGNhc2UgJ3dzdHInOlxuXHRcdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgbyA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NvZGVwYWdlLCB0aGlzLnNsaWNlKHRoaXMubCwgdGhpcy5sKzIqc2l6ZSkpO1xuXHRcdFx0ZWxzZSByZXR1cm4gUmVhZFNoaWZ0LmNhbGwodGhpcywgc2l6ZSwgJ2RiY3MnKTtcblx0XHRcdHNpemUgPSAyICogc2l6ZTsgYnJlYWs7XG5cblx0XHQvKiBbTVMtT0xFRFNdIDIuMS40IExlbmd0aFByZWZpeGVkQW5zaVN0cmluZyAqL1xuXHRcdGNhc2UgJ2xwc3RyLWFuc2knOiBvID0gX19scHN0cih0aGlzLCB0aGlzLmwpOyBzaXplID0gNCArIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IGJyZWFrO1xuXHRcdGNhc2UgJ2xwc3RyLWNwJzogbyA9IF9fY3BzdHIodGhpcywgdGhpcy5sKTsgc2l6ZSA9IDQgKyBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBicmVhaztcblx0XHQvKiBbTVMtT0xFRFNdIDIuMS41IExlbmd0aFByZWZpeGVkVW5pY29kZVN0cmluZyAqL1xuXHRcdGNhc2UgJ2xwd3N0cic6IG8gPSBfX2xwd3N0cih0aGlzLCB0aGlzLmwpOyBzaXplID0gNCArIDIgKiBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBicmVhaztcblx0XHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuMiBMZW5ndGgtUHJlZml4ZWQgUGFkZGVkIFVuaWNvZGUgU3RyaW5nIChVTklDT0RFLUxQLVA0KSAqL1xuXHRcdGNhc2UgJ2xwcDQnOiBzaXplID0gNCArICBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBvID0gX19scHA0KHRoaXMsIHRoaXMubCk7IGlmKHNpemUgJiAweDAyKSBzaXplICs9IDI7IGJyZWFrO1xuXHRcdC8qIFtNUy1PRkZDUllQVE9dIDIuMS4zIExlbmd0aC1QcmVmaXhlZCBVVEYtOCBTdHJpbmcgKFVURi04LUxQLVA0KSAqL1xuXHRcdGNhc2UgJzhscHA0Jzogc2l6ZSA9IDQgKyAgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgbyA9IF9fOGxwcDQodGhpcywgdGhpcy5sKTsgaWYoc2l6ZSAmIDB4MDMpIHNpemUgKz0gNCAtIChzaXplICYgMHgwMyk7IGJyZWFrO1xuXG5cdFx0Y2FzZSAnY3N0cic6IHNpemUgPSAwOyBvID0gXCJcIjtcblx0XHRcdHdoaWxlKCh3PV9fcmVhZFVJbnQ4KHRoaXMsIHRoaXMubCArIHNpemUrKykpIT09MCkgb28ucHVzaChfZ2V0Y2hhcih3KSk7XG5cdFx0XHRvID0gb28uam9pbihcIlwiKTsgYnJlYWs7XG5cdFx0Y2FzZSAnX3dzdHInOiBzaXplID0gMDsgbyA9IFwiXCI7XG5cdFx0XHR3aGlsZSgodz1fX3JlYWRVSW50MTZMRSh0aGlzLHRoaXMubCArc2l6ZSkpIT09MCl7b28ucHVzaChfZ2V0Y2hhcih3KSk7c2l6ZSs9Mjt9XG5cdFx0XHRzaXplKz0yOyBvID0gb28uam9pbihcIlwiKTsgYnJlYWs7XG5cblx0XHQvKiBzYmNzIGFuZCBkYmNzIHN1cHBvcnQgY29udGludWUgcmVjb3JkcyBpbiB0aGUgU1NUIHdheSBUT0RPIGNvZGVwYWdlcyAqL1xuXHRcdGNhc2UgJ2RiY3MtY29udCc6IG8gPSBcIlwiOyBsb2MgPSB0aGlzLmw7XG5cdFx0XHRmb3IoaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcblx0XHRcdFx0aWYodGhpcy5sZW5zICYmIHRoaXMubGVucy5pbmRleE9mKGxvYykgIT09IC0xKSB7XG5cdFx0XHRcdFx0dyA9IF9fcmVhZFVJbnQ4KHRoaXMsIGxvYyk7XG5cdFx0XHRcdFx0dGhpcy5sID0gbG9jICsgMTtcblx0XHRcdFx0XHR2diA9IFJlYWRTaGlmdC5jYWxsKHRoaXMsIHNpemUtaSwgdyA/ICdkYmNzLWNvbnQnIDogJ3NiY3MtY29udCcpO1xuXHRcdFx0XHRcdHJldHVybiBvby5qb2luKFwiXCIpICsgdnY7XG5cdFx0XHRcdH1cblx0XHRcdFx0b28ucHVzaChfZ2V0Y2hhcihfX3JlYWRVSW50MTZMRSh0aGlzLCBsb2MpKSk7XG5cdFx0XHRcdGxvYys9Mjtcblx0XHRcdH0gbyA9IG9vLmpvaW4oXCJcIik7IHNpemUgKj0gMjsgYnJlYWs7XG5cblx0XHRjYXNlICdjcHN0cic6XG5cdFx0XHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdG8gPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jb2RlcGFnZSwgdGhpcy5zbGljZSh0aGlzLmwsIHRoaXMubCArIHNpemUpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ3NiY3MtY29udCc6IG8gPSBcIlwiOyBsb2MgPSB0aGlzLmw7XG5cdFx0XHRmb3IoaSA9IDA7IGkgIT0gc2l6ZTsgKytpKSB7XG5cdFx0XHRcdGlmKHRoaXMubGVucyAmJiB0aGlzLmxlbnMuaW5kZXhPZihsb2MpICE9PSAtMSkge1xuXHRcdFx0XHRcdHcgPSBfX3JlYWRVSW50OCh0aGlzLCBsb2MpO1xuXHRcdFx0XHRcdHRoaXMubCA9IGxvYyArIDE7XG5cdFx0XHRcdFx0dnYgPSBSZWFkU2hpZnQuY2FsbCh0aGlzLCBzaXplLWksIHcgPyAnZGJjcy1jb250JyA6ICdzYmNzLWNvbnQnKTtcblx0XHRcdFx0XHRyZXR1cm4gb28uam9pbihcIlwiKSArIHZ2O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9vLnB1c2goX2dldGNoYXIoX19yZWFkVUludDgodGhpcywgbG9jKSkpO1xuXHRcdFx0XHRsb2MrPTE7XG5cdFx0XHR9IG8gPSBvby5qb2luKFwiXCIpOyBicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdHN3aXRjaChzaXplKSB7XG5cdFx0Y2FzZSAxOiBvSSA9IF9fcmVhZFVJbnQ4KHRoaXMsIHRoaXMubCk7IHRoaXMubCsrOyByZXR1cm4gb0k7XG5cdFx0Y2FzZSAyOiBvSSA9ICh0ID09PSAnaScgPyBfX3JlYWRJbnQxNkxFIDogX19yZWFkVUludDE2TEUpKHRoaXMsIHRoaXMubCk7IHRoaXMubCArPSAyOyByZXR1cm4gb0k7XG5cdFx0Y2FzZSA0OiBjYXNlIC00OlxuXHRcdFx0aWYodCA9PT0gJ2knIHx8ICgodGhpc1t0aGlzLmwrM10gJiAweDgwKT09PTApKSB7IG9JID0gKChzaXplID4gMCkgPyBfX3JlYWRJbnQzMkxFIDogX19yZWFkSW50MzJCRSkodGhpcywgdGhpcy5sKTsgdGhpcy5sICs9IDQ7IHJldHVybiBvSTsgfVxuXHRcdFx0ZWxzZSB7IG9SID0gX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgdGhpcy5sICs9IDQ7IH0gcmV0dXJuIG9SO1xuXHRcdGNhc2UgODogY2FzZSAtODpcblx0XHRcdGlmKHQgPT09ICdmJykge1xuXHRcdFx0XHRpZihzaXplID09IDgpIG9SID0gX19kb3VibGUodGhpcywgdGhpcy5sKTtcblx0XHRcdFx0ZWxzZSBvUiA9IF9fZG91YmxlKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3RoaXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3RoaXMubCswXV0sIDApO1xuXHRcdFx0XHR0aGlzLmwgKz0gODsgcmV0dXJuIG9SO1xuXHRcdFx0fSBlbHNlIHNpemUgPSA4O1xuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIDE2OiBvID0gX19oZXhsaWZ5KHRoaXMsIHRoaXMubCwgc2l6ZSk7IGJyZWFrO1xuXHR9fVxuXHR0aGlzLmwrPXNpemU7IHJldHVybiBvO1xufVxuXG52YXIgX193cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCB2YWwvKjpudW1iZXIqLywgaWR4Lyo6bnVtYmVyKi8pLyo6dm9pZCovIHsgYltpZHhdID0gKHZhbCAmIDB4RkYpOyBiW2lkeCsxXSA9ICgodmFsID4+PiA4KSAmIDB4RkYpOyBiW2lkeCsyXSA9ICgodmFsID4+PiAxNikgJiAweEZGKTsgYltpZHgrM10gPSAoKHZhbCA+Pj4gMjQpICYgMHhGRik7IH07XG52YXIgX193cml0ZUludDMyTEUgID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCB2YWwvKjpudW1iZXIqLywgaWR4Lyo6bnVtYmVyKi8pLyo6dm9pZCovIHsgYltpZHhdID0gKHZhbCAmIDB4RkYpOyBiW2lkeCsxXSA9ICgodmFsID4+IDgpICYgMHhGRik7IGJbaWR4KzJdID0gKCh2YWwgPj4gMTYpICYgMHhGRik7IGJbaWR4KzNdID0gKCh2YWwgPj4gMjQpICYgMHhGRik7IH07XG52YXIgX193cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCB2YWwvKjpudW1iZXIqLywgaWR4Lyo6bnVtYmVyKi8pLyo6dm9pZCovIHsgYltpZHhdID0gKHZhbCAmIDB4RkYpOyBiW2lkeCsxXSA9ICgodmFsID4+PiA4KSAmIDB4RkYpOyB9O1xuXG5mdW5jdGlvbiBXcml0ZVNoaWZ0KHQvKjpudW1iZXIqLywgdmFsLyo6c3RyaW5nfG51bWJlciovLCBmLyo6P3N0cmluZyovKS8qOmFueSovIHtcblx0dmFyIHNpemUgPSAwLCBpID0gMDtcblx0aWYoZiA9PT0gJ2RiY3MnKSB7XG5cdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0Zm9yKGkgPSAwOyBpICE9IHZhbC5sZW5ndGg7ICsraSkgX193cml0ZVVJbnQxNkxFKHRoaXMsIHZhbC5jaGFyQ29kZUF0KGkpLCB0aGlzLmwgKyAyICogaSk7XG5cdFx0c2l6ZSA9IDIgKiB2YWwubGVuZ3RoO1xuXHR9IGVsc2UgaWYoZiA9PT0gJ3NiY3MnKSB7XG5cdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJyAmJiBjdXJyZW50X2Fuc2kgPT0gODc0KSB7XG5cdFx0XHQvKiBUT0RPOiB1c2UgdGFibGVzIGRpcmVjdGx5LCBkb24ndCBlbmNvZGUgKi9cblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHRmb3IoaSA9IDA7IGkgIT0gdmFsLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdHZhciBjcHBheWxvYWQgPSAkY3B0YWJsZS51dGlscy5lbmNvZGUoY3VycmVudF9hbnNpLCB2YWwuY2hhckF0KGkpKTtcblx0XHRcdFx0dGhpc1t0aGlzLmwgKyBpXSA9IGNwcGF5bG9hZFswXTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHR2YWwgPSB2YWwucmVwbGFjZSgvW15cXHgwMC1cXHg3Rl0vZywgXCJfXCIpO1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHRmb3IoaSA9IDA7IGkgIT0gdmFsLmxlbmd0aDsgKytpKSB0aGlzW3RoaXMubCArIGldID0gKHZhbC5jaGFyQ29kZUF0KGkpICYgMHhGRik7XG5cdFx0fVxuXHRcdHNpemUgPSB2YWwubGVuZ3RoO1xuXHR9IGVsc2UgaWYoZiA9PT0gJ2hleCcpIHtcblx0XHRmb3IoOyBpIDwgdDsgKytpKSB7XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dGhpc1t0aGlzLmwrK10gPSAocGFyc2VJbnQodmFsLnNsaWNlKDIqaSwgMippKzIpLCAxNil8fDApO1xuXHRcdH0gcmV0dXJuIHRoaXM7XG5cdH0gZWxzZSBpZihmID09PSAndXRmMTZsZScpIHtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHR2YXIgZW5kLyo6bnVtYmVyKi8gPSBNYXRoLm1pbih0aGlzLmwgKyB0LCB0aGlzLmxlbmd0aCk7XG5cdFx0XHRmb3IoaSA9IDA7IGkgPCBNYXRoLm1pbih2YWwubGVuZ3RoLCB0KTsgKytpKSB7XG5cdFx0XHRcdHZhciBjYyA9IHZhbC5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0XHR0aGlzW3RoaXMubCsrXSA9IChjYyAmIDB4ZmYpO1xuXHRcdFx0XHR0aGlzW3RoaXMubCsrXSA9IChjYyA+PiA4KTtcblx0XHRcdH1cblx0XHRcdHdoaWxlKHRoaXMubCA8IGVuZCkgdGhpc1t0aGlzLmwrK10gPSAwO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdH0gZWxzZSAvKjo6IGlmKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAqLyBzd2l0Y2godCkge1xuXHRcdGNhc2UgIDE6IHNpemUgPSAxOyB0aGlzW3RoaXMubF0gPSB2YWwmMHhGRjsgYnJlYWs7XG5cdFx0Y2FzZSAgMjogc2l6ZSA9IDI7IHRoaXNbdGhpcy5sXSA9IHZhbCYweEZGOyB2YWwgPj4+PSA4OyB0aGlzW3RoaXMubCsxXSA9IHZhbCYweEZGOyBicmVhaztcblx0XHRjYXNlICAzOiBzaXplID0gMzsgdGhpc1t0aGlzLmxdID0gdmFsJjB4RkY7IHZhbCA+Pj49IDg7IHRoaXNbdGhpcy5sKzFdID0gdmFsJjB4RkY7IHZhbCA+Pj49IDg7IHRoaXNbdGhpcy5sKzJdID0gdmFsJjB4RkY7IGJyZWFrO1xuXHRcdGNhc2UgIDQ6IHNpemUgPSA0OyBfX3dyaXRlVUludDMyTEUodGhpcywgdmFsLCB0aGlzLmwpOyBicmVhaztcblx0XHRjYXNlICA4OiBzaXplID0gODsgaWYoZiA9PT0gJ2YnKSB7IHdyaXRlX2RvdWJsZV9sZSh0aGlzLCB2YWwsIHRoaXMubCk7IGJyZWFrOyB9XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgMTY6IGJyZWFrO1xuXHRcdGNhc2UgLTQ6IHNpemUgPSA0OyBfX3dyaXRlSW50MzJMRSh0aGlzLCB2YWwsIHRoaXMubCk7IGJyZWFrO1xuXHR9XG5cdHRoaXMubCArPSBzaXplOyByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gQ2hlY2tGaWVsZChoZXhzdHIvKjpzdHJpbmcqLywgZmxkLyo6c3RyaW5nKi8pLyo6dm9pZCovIHtcblx0dmFyIG0gPSBfX2hleGxpZnkodGhpcyx0aGlzLmwsaGV4c3RyLmxlbmd0aD4+MSk7XG5cdGlmKG0gIT09IGhleHN0cikgdGhyb3cgbmV3IEVycm9yKGZsZCArICdFeHBlY3RlZCAnICsgaGV4c3RyICsgJyBzYXcgJyArIG0pO1xuXHR0aGlzLmwgKz0gaGV4c3RyLmxlbmd0aD4+MTtcbn1cblxuZnVuY3Rpb24gcHJlcF9ibG9iKGJsb2IsIHBvcy8qOm51bWJlciovKS8qOnZvaWQqLyB7XG5cdGJsb2IubCA9IHBvcztcblx0YmxvYi5yZWFkX3NoaWZ0ID0gLyo6OigqL1JlYWRTaGlmdC8qOjogOmFueSkqLztcblx0YmxvYi5jaGsgPSBDaGVja0ZpZWxkO1xuXHRibG9iLndyaXRlX3NoaWZ0ID0gV3JpdGVTaGlmdDtcbn1cblxuZnVuY3Rpb24gcGFyc2Vub29wKGJsb2IsIGxlbmd0aC8qOjogOm51bWJlciwgb3B0cz86YW55ICovKSB7IGJsb2IubCArPSBsZW5ndGg7IH1cblxuZnVuY3Rpb24gbmV3X2J1Zihzei8qOm51bWJlciovKS8qOkJsb2NrKi8ge1xuXHR2YXIgbyA9IG5ld19yYXdfYnVmKHN6KTtcblx0cHJlcF9ibG9iKG8sIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuMS40IFJlY29yZCAqL1xuZnVuY3Rpb24gcmVjb3JkaG9wcGVyKGRhdGEsIGNiLyo6UmVjb3JkSG9wcGVyQ0IqLywgb3B0cy8qOj9hbnkqLykge1xuXHRpZighZGF0YSkgcmV0dXJuO1xuXHR2YXIgdG1wYnl0ZSwgY250Ynl0ZSwgbGVuZ3RoO1xuXHRwcmVwX2Jsb2IoZGF0YSwgZGF0YS5sIHx8IDApO1xuXHR2YXIgTCA9IGRhdGEubGVuZ3RoLCBSVCA9IDAsIHRndCA9IDA7XG5cdHdoaWxlKGRhdGEubCA8IEwpIHtcblx0XHRSVCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0XHRpZihSVCAmIDB4ODApIFJUID0gKFJUICYgMHg3RikgKyAoKGRhdGEucmVhZF9zaGlmdCgxKSAmIDB4N0YpPDw3KTtcblx0XHR2YXIgUiA9IFhMU0JSZWNvcmRFbnVtW1JUXSB8fCBYTFNCUmVjb3JkRW51bVsweEZGRkZdO1xuXHRcdHRtcGJ5dGUgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdFx0bGVuZ3RoID0gdG1wYnl0ZSAmIDB4N0Y7XG5cdFx0Zm9yKGNudGJ5dGUgPSAxOyBjbnRieXRlIDw0ICYmICh0bXBieXRlICYgMHg4MCk7ICsrY250Ynl0ZSkgbGVuZ3RoICs9ICgodG1wYnl0ZSA9IGRhdGEucmVhZF9zaGlmdCgxKSkgJiAweDdGKTw8KDcqY250Ynl0ZSk7XG5cdFx0dGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHRcdHZhciBkID0gUi5mICYmIFIuZihkYXRhLCBsZW5ndGgsIG9wdHMpO1xuXHRcdGRhdGEubCA9IHRndDtcblx0XHRpZihjYihkLCBSLCBSVCkpIHJldHVybjtcblx0fVxufVxuXG4vKiBjb250cm9sIGJ1ZmZlciB1c2FnZSBmb3IgZml4ZWQtbGVuZ3RoIGJ1ZmZlcnMgKi9cbmZ1bmN0aW9uIGJ1Zl9hcnJheSgpLyo6QnVmQXJyYXkqLyB7XG5cdHZhciBidWZzLyo6QXJyYXk8QmxvY2s+Ki8gPSBbXSwgYmxrc3ogPSBoYXNfYnVmID8gMjU2IDogMjA0ODtcblx0dmFyIG5ld2JsayA9IGZ1bmN0aW9uIGJhX25ld2Jsayhzei8qOm51bWJlciovKS8qOkJsb2NrKi8ge1xuXHRcdHZhciBvLyo6QmxvY2sqLyA9IChuZXdfYnVmKHN6KS8qOmFueSovKTtcblx0XHRwcmVwX2Jsb2IobywgMCk7XG5cdFx0cmV0dXJuIG87XG5cdH07XG5cblx0dmFyIGN1cmJ1Zi8qOkJsb2NrKi8gPSBuZXdibGsoYmxrc3opO1xuXG5cdHZhciBlbmRidWYgPSBmdW5jdGlvbiBiYV9lbmRidWYoKSB7XG5cdFx0aWYoIWN1cmJ1ZikgcmV0dXJuO1xuXHRcdGlmKGN1cmJ1Zi5sZW5ndGggPiBjdXJidWYubCkgeyBjdXJidWYgPSBjdXJidWYuc2xpY2UoMCwgY3VyYnVmLmwpOyBjdXJidWYubCA9IGN1cmJ1Zi5sZW5ndGg7IH1cblx0XHRpZihjdXJidWYubGVuZ3RoID4gMCkgYnVmcy5wdXNoKGN1cmJ1Zik7XG5cdFx0Y3VyYnVmID0gbnVsbDtcblx0fTtcblxuXHR2YXIgbmV4dCA9IGZ1bmN0aW9uIGJhX25leHQoc3ovKjpudW1iZXIqLykvKjpCbG9jayovIHtcblx0XHRpZihjdXJidWYgJiYgKHN6IDwgKGN1cmJ1Zi5sZW5ndGggLSBjdXJidWYubCkpKSByZXR1cm4gY3VyYnVmO1xuXHRcdGVuZGJ1ZigpO1xuXHRcdHJldHVybiAoY3VyYnVmID0gbmV3YmxrKE1hdGgubWF4KHN6KzEsIGJsa3N6KSkpO1xuXHR9O1xuXG5cdHZhciBlbmQgPSBmdW5jdGlvbiBiYV9lbmQoKSB7XG5cdFx0ZW5kYnVmKCk7XG5cdFx0cmV0dXJuIGJjb25jYXQoYnVmcyk7XG5cdH07XG5cblx0dmFyIHB1c2ggPSBmdW5jdGlvbiBiYV9wdXNoKGJ1ZikgeyBlbmRidWYoKTsgY3VyYnVmID0gYnVmOyBpZihjdXJidWYubCA9PSBudWxsKSBjdXJidWYubCA9IGN1cmJ1Zi5sZW5ndGg7IG5leHQoYmxrc3opOyB9O1xuXG5cdHJldHVybiAoeyBuZXh0Om5leHQsIHB1c2g6cHVzaCwgZW5kOmVuZCwgX2J1ZnM6YnVmcyB9Lyo6YW55Ki8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9yZWNvcmQoYmEvKjpCdWZBcnJheSovLCB0eXBlLyo6bnVtYmVyKi8sIHBheWxvYWQsIGxlbmd0aC8qOj9udW1iZXIqLykge1xuXHR2YXIgdC8qOm51bWJlciovID0gK3R5cGUsIGw7XG5cdGlmKGlzTmFOKHQpKSByZXR1cm47IC8vIFRPRE86IHRocm93IHNvbWV0aGluZyBoZXJlP1xuXHRpZighbGVuZ3RoKSBsZW5ndGggPSBYTFNCUmVjb3JkRW51bVt0XS5wIHx8IChwYXlsb2FkfHxbXSkubGVuZ3RoIHx8IDA7XG5cdGwgPSAxICsgKHQgPj0gMHg4MCA/IDEgOiAwKSArIDEvKiArIGxlbmd0aCovO1xuXHRpZihsZW5ndGggPj0gMHg4MCkgKytsOyBpZihsZW5ndGggPj0gMHg0MDAwKSArK2w7IGlmKGxlbmd0aCA+PSAweDIwMDAwMCkgKytsO1xuXHR2YXIgbyA9IGJhLm5leHQobCk7XG5cdGlmKHQgPD0gMHg3Rikgby53cml0ZV9zaGlmdCgxLCB0KTtcblx0ZWxzZSB7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAodCAmIDB4N0YpICsgMHg4MCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAodCA+PiA3KSk7XG5cdH1cblx0Zm9yKHZhciBpID0gMDsgaSAhPSA0OyArK2kpIHtcblx0XHRpZihsZW5ndGggPj0gMHg4MCkgeyBvLndyaXRlX3NoaWZ0KDEsIChsZW5ndGggJiAweDdGKSsweDgwKTsgbGVuZ3RoID4+PSA3OyB9XG5cdFx0ZWxzZSB7IG8ud3JpdGVfc2hpZnQoMSwgbGVuZ3RoKTsgYnJlYWs7IH1cblx0fVxuXHRpZigvKjo6IGxlbmd0aCAhPSBudWxsICYmKi9sZW5ndGggPiAwICYmIGlzX2J1ZihwYXlsb2FkKSkgYmEucHVzaChwYXlsb2FkKTtcbn1cbi8qIFhMUyByYW5nZXMgZW5mb3JjZWQgKi9cbmZ1bmN0aW9uIHNoaWZ0X2NlbGxfeGxzKGNlbGwvKjpDZWxsQWRkcmVzcyovLCB0Z3QvKjphbnkqLywgb3B0cy8qOj9hbnkqLykvKjpDZWxsQWRkcmVzcyovIHtcblx0dmFyIG91dCA9IGR1cChjZWxsKTtcblx0aWYodGd0LnMpIHtcblx0XHRpZihvdXQuY1JlbCkgb3V0LmMgKz0gdGd0LnMuYztcblx0XHRpZihvdXQuclJlbCkgb3V0LnIgKz0gdGd0LnMucjtcblx0fSBlbHNlIHtcblx0XHRpZihvdXQuY1JlbCkgb3V0LmMgKz0gdGd0LmM7XG5cdFx0aWYob3V0LnJSZWwpIG91dC5yICs9IHRndC5yO1xuXHR9XG5cdGlmKCFvcHRzIHx8IG9wdHMuYmlmZiA8IDEyKSB7XG5cdFx0d2hpbGUob3V0LmMgPj0gMHgxMDApIG91dC5jIC09IDB4MTAwO1xuXHRcdHdoaWxlKG91dC5yID49IDB4MTAwMDApIG91dC5yIC09IDB4MTAwMDA7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gc2hpZnRfcmFuZ2VfeGxzKGNlbGwsIHJhbmdlLCBvcHRzKSB7XG5cdHZhciBvdXQgPSBkdXAoY2VsbCk7XG5cdG91dC5zID0gc2hpZnRfY2VsbF94bHMob3V0LnMsIHJhbmdlLnMsIG9wdHMpO1xuXHRvdXQuZSA9IHNoaWZ0X2NlbGxfeGxzKG91dC5lLCByYW5nZS5zLCBvcHRzKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlX2NlbGxfeGxzKGMvKjpDZWxsQWRkcmVzcyovLCBiaWZmLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihjLmNSZWwgJiYgYy5jIDwgMCkgeyBjID0gZHVwKGMpOyB3aGlsZShjLmMgPCAwKSBjLmMgKz0gKGJpZmYgPiA4KSA/IDB4NDAwMCA6IDB4MTAwOyB9XG5cdGlmKGMuclJlbCAmJiBjLnIgPCAwKSB7IGMgPSBkdXAoYyk7IHdoaWxlKGMuciA8IDApIGMuciArPSAoYmlmZiA+IDgpID8gMHgxMDAwMDAgOiAoKGJpZmYgPiA1KSA/IDB4MTAwMDAgOiAweDQwMDApOyB9XG5cdHZhciBzID0gZW5jb2RlX2NlbGwoYyk7XG5cdGlmKCFjLmNSZWwgJiYgYy5jUmVsICE9IG51bGwpIHMgPSBmaXhfY29sKHMpO1xuXHRpZighYy5yUmVsICYmIGMuclJlbCAhPSBudWxsKSBzID0gZml4X3JvdyhzKTtcblx0cmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIGVuY29kZV9yYW5nZV94bHMociwgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKHIucy5yID09IDAgJiYgIXIucy5yUmVsKSB7XG5cdFx0aWYoci5lLnIgPT0gKG9wdHMuYmlmZiA+PSAxMiA/IDB4RkZGRkYgOiAob3B0cy5iaWZmID49IDggPyAweDEwMDAwIDogMHg0MDAwKSkgJiYgIXIuZS5yUmVsKSB7XG5cdFx0XHRyZXR1cm4gKHIucy5jUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9jb2woci5zLmMpICsgXCI6XCIgKyAoci5lLmNSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX2NvbChyLmUuYyk7XG5cdFx0fVxuXHR9XG5cdGlmKHIucy5jID09IDAgJiYgIXIucy5jUmVsKSB7XG5cdFx0aWYoci5lLmMgPT0gKG9wdHMuYmlmZiA+PSAxMiA/IDB4M0ZGRiA6IDB4RkYpICYmICFyLmUuY1JlbCkge1xuXHRcdFx0cmV0dXJuIChyLnMuclJlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfcm93KHIucy5yKSArIFwiOlwiICsgKHIuZS5yUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9yb3coci5lLnIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZW5jb2RlX2NlbGxfeGxzKHIucywgb3B0cy5iaWZmKSArIFwiOlwiICsgZW5jb2RlX2NlbGxfeGxzKHIuZSwgb3B0cy5iaWZmKTtcbn1cbmZ1bmN0aW9uIGRlY29kZV9yb3cocm93c3RyLyo6c3RyaW5nKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gcGFyc2VJbnQodW5maXhfcm93KHJvd3N0ciksMTApIC0gMTsgfVxuZnVuY3Rpb24gZW5jb2RlX3Jvdyhyb3cvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBcIlwiICsgKHJvdyArIDEpOyB9XG5mdW5jdGlvbiBmaXhfcm93KGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoLyhbQS1aXXxeKShcXGQrKSQvLFwiJDEkJCQyXCIpOyB9XG5mdW5jdGlvbiB1bmZpeF9yb3coY3N0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGNzdHIucmVwbGFjZSgvXFwkKFxcZCspJC8sXCIkMVwiKTsgfVxuXG5mdW5jdGlvbiBkZWNvZGVfY29sKGNvbHN0ci8qOnN0cmluZyovKS8qOm51bWJlciovIHsgdmFyIGMgPSB1bmZpeF9jb2woY29sc3RyKSwgZCA9IDAsIGkgPSAwOyBmb3IoOyBpICE9PSBjLmxlbmd0aDsgKytpKSBkID0gMjYqZCArIGMuY2hhckNvZGVBdChpKSAtIDY0OyByZXR1cm4gZCAtIDE7IH1cbmZ1bmN0aW9uIGVuY29kZV9jb2woY29sLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyBpZihjb2wgPCAwKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNvbHVtbiBcIiArIGNvbCk7IHZhciBzPVwiXCI7IGZvcigrK2NvbDsgY29sOyBjb2w9TWF0aC5mbG9vcigoY29sLTEpLzI2KSkgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjb2wtMSklMjYpICsgNjUpICsgczsgcmV0dXJuIHM7IH1cbmZ1bmN0aW9uIGZpeF9jb2woY3N0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGNzdHIucmVwbGFjZSgvXihbQS1aXSkvLFwiJCQkMVwiKTsgfVxuZnVuY3Rpb24gdW5maXhfY29sKGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoL15cXCQoW0EtWl0pLyxcIiQxXCIpOyB9XG5cbmZ1bmN0aW9uIHNwbGl0X2NlbGwoY3N0ci8qOnN0cmluZyovKS8qOkFycmF5PHN0cmluZz4qLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoLyhcXCQ/W0EtWl0qKShcXCQ/XFxkKikvLFwiJDEsJDJcIikuc3BsaXQoXCIsXCIpOyB9XG4vL2Z1bmN0aW9uIGRlY29kZV9jZWxsKGNzdHIvKjpzdHJpbmcqLykvKjpDZWxsQWRkcmVzcyovIHsgdmFyIHNwbHQgPSBzcGxpdF9jZWxsKGNzdHIpOyByZXR1cm4geyBjOmRlY29kZV9jb2woc3BsdFswXSksIHI6ZGVjb2RlX3JvdyhzcGx0WzFdKSB9OyB9XG5mdW5jdGlvbiBkZWNvZGVfY2VsbChjc3RyLyo6c3RyaW5nKi8pLyo6Q2VsbEFkZHJlc3MqLyB7XG5cdHZhciBSID0gMCwgQyA9IDA7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBjc3RyLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGNjID0gY3N0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGlmKGNjID49IDQ4ICYmIGNjIDw9IDU3KSBSID0gMTAgKiBSICsgKGNjIC0gNDgpO1xuXHRcdGVsc2UgaWYoY2MgPj0gNjUgJiYgY2MgPD0gOTApIEMgPSAyNiAqIEMgKyAoY2MgLSA2NCk7XG5cdH1cblx0cmV0dXJuIHsgYzogQyAtIDEsIHI6UiAtIDEgfTtcbn1cbi8vZnVuY3Rpb24gZW5jb2RlX2NlbGwoY2VsbC8qOkNlbGxBZGRyZXNzKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gZW5jb2RlX2NvbChjZWxsLmMpICsgZW5jb2RlX3JvdyhjZWxsLnIpOyB9XG5mdW5jdGlvbiBlbmNvZGVfY2VsbChjZWxsLyo6Q2VsbEFkZHJlc3MqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBjb2wgPSBjZWxsLmMgKyAxO1xuXHR2YXIgcz1cIlwiO1xuXHRmb3IoOyBjb2w7IGNvbD0oKGNvbC0xKS8yNil8MCkgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjb2wtMSklMjYpICsgNjUpICsgcztcblx0cmV0dXJuIHMgKyAoY2VsbC5yICsgMSk7XG59XG5mdW5jdGlvbiBkZWNvZGVfcmFuZ2UocmFuZ2UvKjpzdHJpbmcqLykvKjpSYW5nZSovIHtcblx0dmFyIGlkeCA9IHJhbmdlLmluZGV4T2YoXCI6XCIpO1xuXHRpZihpZHggPT0gLTEpIHJldHVybiB7IHM6IGRlY29kZV9jZWxsKHJhbmdlKSwgZTogZGVjb2RlX2NlbGwocmFuZ2UpIH07XG5cdHJldHVybiB7IHM6IGRlY29kZV9jZWxsKHJhbmdlLnNsaWNlKDAsIGlkeCkpLCBlOiBkZWNvZGVfY2VsbChyYW5nZS5zbGljZShpZHggKyAxKSkgfTtcbn1cbi8qIyBpZiBvbmx5IG9uZSBhcmcsIGl0IGlzIGFzc3VtZWQgdG8gYmUgYSBSYW5nZS4gIElmIDIgYXJncywgYm90aCBhcmUgY2VsbCBhZGRyZXNzZXMgKi9cbmZ1bmN0aW9uIGVuY29kZV9yYW5nZShjcy8qOkNlbGxBZGRyU3BlY3xSYW5nZSovLGNlLyo6P0NlbGxBZGRyU3BlYyovKS8qOnN0cmluZyovIHtcblx0aWYodHlwZW9mIGNlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgY2UgPT09ICdudW1iZXInKSB7XG4vKjo6IGlmKCEoY3MgaW5zdGFuY2VvZiBSYW5nZSkpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRyZXR1cm4gZW5jb2RlX3JhbmdlKGNzLnMsIGNzLmUpO1xuXHR9XG4vKjo6IGlmKChjcyBpbnN0YW5jZW9mIFJhbmdlKSkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRpZih0eXBlb2YgY3MgIT09ICdzdHJpbmcnKSBjcyA9IGVuY29kZV9jZWxsKChjcy8qOmFueSovKSk7XG5cdGlmKHR5cGVvZiBjZSAhPT0gJ3N0cmluZycpIGNlID0gZW5jb2RlX2NlbGwoKGNlLyo6YW55Ki8pKTtcbi8qOjogaWYodHlwZW9mIGNzICE9PSAnc3RyaW5nJykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuLyo6OiBpZih0eXBlb2YgY2UgIT09ICdzdHJpbmcnKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdHJldHVybiBjcyA9PSBjZSA/IGNzIDogY3MgKyBcIjpcIiArIGNlO1xufVxuXG5mdW5jdGlvbiBzYWZlX2RlY29kZV9yYW5nZShyYW5nZS8qOnN0cmluZyovKS8qOlJhbmdlKi8ge1xuXHR2YXIgbyA9IHtzOntjOjAscjowfSxlOntjOjAscjowfX07XG5cdHZhciBpZHggPSAwLCBpID0gMCwgY2MgPSAwO1xuXHR2YXIgbGVuID0gcmFuZ2UubGVuZ3RoO1xuXHRmb3IoaWR4ID0gMDsgaSA8IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNjQpIDwgMSB8fCBjYyA+IDI2KSBicmVhaztcblx0XHRpZHggPSAyNippZHggKyBjYztcblx0fVxuXHRvLnMuYyA9IC0taWR4O1xuXG5cdGZvcihpZHggPSAwOyBpIDwgbGVuOyArK2kpIHtcblx0XHRpZigoY2M9cmFuZ2UuY2hhckNvZGVBdChpKS00OCkgPCAwIHx8IGNjID4gOSkgYnJlYWs7XG5cdFx0aWR4ID0gMTAqaWR4ICsgY2M7XG5cdH1cblx0by5zLnIgPSAtLWlkeDtcblxuXHRpZihpID09PSBsZW4gfHwgY2MgIT0gMTApIHsgby5lLmM9by5zLmM7IG8uZS5yPW8ucy5yOyByZXR1cm4gbzsgfVxuXHQrK2k7XG5cblx0Zm9yKGlkeCA9IDA7IGkgIT0gbGVuOyArK2kpIHtcblx0XHRpZigoY2M9cmFuZ2UuY2hhckNvZGVBdChpKS02NCkgPCAxIHx8IGNjID4gMjYpIGJyZWFrO1xuXHRcdGlkeCA9IDI2KmlkeCArIGNjO1xuXHR9XG5cdG8uZS5jID0gLS1pZHg7XG5cblx0Zm9yKGlkeCA9IDA7IGkgIT0gbGVuOyArK2kpIHtcblx0XHRpZigoY2M9cmFuZ2UuY2hhckNvZGVBdChpKS00OCkgPCAwIHx8IGNjID4gOSkgYnJlYWs7XG5cdFx0aWR4ID0gMTAqaWR4ICsgY2M7XG5cdH1cblx0by5lLnIgPSAtLWlkeDtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0X2NlbGwoY2VsbC8qOkNlbGwqLywgdi8qOmFueSovKSB7XG5cdHZhciBxID0gKGNlbGwudCA9PSAnZCcgJiYgdiBpbnN0YW5jZW9mIERhdGUpO1xuXHRpZihjZWxsLnogIT0gbnVsbCkgdHJ5IHsgcmV0dXJuIChjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiwgcSA/IGRhdGVudW0odikgOiB2KSk7IH0gY2F0Y2goZSkgeyB9XG5cdHRyeSB7IHJldHVybiAoY2VsbC53ID0gU1NGX2Zvcm1hdCgoY2VsbC5YRnx8e30pLm51bUZtdElkfHwocSA/IDE0IDogMCksICBxID8gZGF0ZW51bSh2KSA6IHYpKTsgfSBjYXRjaChlKSB7IHJldHVybiAnJyt2OyB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdF9jZWxsKGNlbGwvKjpDZWxsKi8sIHYvKjphbnkqLywgby8qOmFueSovKSB7XG5cdGlmKGNlbGwgPT0gbnVsbCB8fCBjZWxsLnQgPT0gbnVsbCB8fCBjZWxsLnQgPT0gJ3onKSByZXR1cm4gXCJcIjtcblx0aWYoY2VsbC53ICE9PSB1bmRlZmluZWQpIHJldHVybiBjZWxsLnc7XG5cdGlmKGNlbGwudCA9PSAnZCcgJiYgIWNlbGwueiAmJiBvICYmIG8uZGF0ZU5GKSBjZWxsLnogPSBvLmRhdGVORjtcblx0aWYoY2VsbC50ID09IFwiZVwiKSByZXR1cm4gQkVycltjZWxsLnZdIHx8IGNlbGwudjtcblx0aWYodiA9PSB1bmRlZmluZWQpIHJldHVybiBzYWZlX2Zvcm1hdF9jZWxsKGNlbGwsIGNlbGwudik7XG5cdHJldHVybiBzYWZlX2Zvcm1hdF9jZWxsKGNlbGwsIHYpO1xufVxuXG5mdW5jdGlvbiBzaGVldF90b193b3JrYm9vayhzaGVldC8qOldvcmtzaGVldCovLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgbiA9IG9wdHMgJiYgb3B0cy5zaGVldCA/IG9wdHMuc2hlZXQgOiBcIlNoZWV0MVwiO1xuXHR2YXIgc2hlZXRzID0ge307IHNoZWV0c1tuXSA9IHNoZWV0O1xuXHRyZXR1cm4geyBTaGVldE5hbWVzOiBbbl0sIFNoZWV0czogc2hlZXRzIH07XG59XG5cbmZ1bmN0aW9uIHNoZWV0X2FkZF9hb2EoX3dzLyo6P1dvcmtzaGVldCovLCBkYXRhLyo6QU9BKi8sIG9wdHMvKjo/YW55Ki8pLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBkZW5zZSA9IF93cyA/IEFycmF5LmlzQXJyYXkoX3dzKSA6IG8uZGVuc2U7XG5cdGlmKERFTlNFICE9IG51bGwgJiYgZGVuc2UgPT0gbnVsbCkgZGVuc2UgPSBERU5TRTtcblx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBfd3MgfHwgKGRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pKTtcblx0dmFyIF9SID0gMCwgX0MgPSAwO1xuXHRpZih3cyAmJiBvLm9yaWdpbiAhPSBudWxsKSB7XG5cdFx0aWYodHlwZW9mIG8ub3JpZ2luID09ICdudW1iZXInKSBfUiA9IG8ub3JpZ2luO1xuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIF9vcmlnaW4vKjpDZWxsQWRkcmVzcyovID0gdHlwZW9mIG8ub3JpZ2luID09IFwic3RyaW5nXCIgPyBkZWNvZGVfY2VsbChvLm9yaWdpbikgOiBvLm9yaWdpbjtcblx0XHRcdF9SID0gX29yaWdpbi5yOyBfQyA9IF9vcmlnaW4uYztcblx0XHR9XG5cdFx0aWYoIXdzW1wiIXJlZlwiXSkgd3NbXCIhcmVmXCJdID0gXCJBMTpBMVwiO1xuXHR9XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjEwMDAwMDAwLCByOjEwMDAwMDAwfSwgZToge2M6MCwgcjowfX0vKjphbnkqLyk7XG5cdGlmKHdzWychcmVmJ10pIHtcblx0XHR2YXIgX3JhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdFx0cmFuZ2Uucy5jID0gX3JhbmdlLnMuYztcblx0XHRyYW5nZS5zLnIgPSBfcmFuZ2Uucy5yO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX3JhbmdlLmUuYyk7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBfcmFuZ2UuZS5yKTtcblx0XHRpZihfUiA9PSAtMSkgcmFuZ2UuZS5yID0gX1IgPSBfcmFuZ2UuZS5yICsgMTtcblx0fVxuXHRmb3IodmFyIFIgPSAwOyBSICE9IGRhdGEubGVuZ3RoOyArK1IpIHtcblx0XHRpZighZGF0YVtSXSkgY29udGludWU7XG5cdFx0aWYoIUFycmF5LmlzQXJyYXkoZGF0YVtSXSkpIHRocm93IG5ldyBFcnJvcihcImFvYV90b19zaGVldCBleHBlY3RzIGFuIGFycmF5IG9mIGFycmF5c1wiKTtcblx0XHRmb3IodmFyIEMgPSAwOyBDICE9IGRhdGFbUl0ubGVuZ3RoOyArK0MpIHtcblx0XHRcdGlmKHR5cGVvZiBkYXRhW1JdW0NdID09PSAndW5kZWZpbmVkJykgY29udGludWU7XG5cdFx0XHR2YXIgY2VsbC8qOkNlbGwqLyA9ICh7djogZGF0YVtSXVtDXSB9Lyo6YW55Ki8pO1xuXHRcdFx0dmFyIF9fUiA9IF9SICsgUiwgX19DID0gX0MgKyBDO1xuXHRcdFx0aWYocmFuZ2Uucy5yID4gX19SKSByYW5nZS5zLnIgPSBfX1I7XG5cdFx0XHRpZihyYW5nZS5zLmMgPiBfX0MpIHJhbmdlLnMuYyA9IF9fQztcblx0XHRcdGlmKHJhbmdlLmUuciA8IF9fUikgcmFuZ2UuZS5yID0gX19SO1xuXHRcdFx0aWYocmFuZ2UuZS5jIDwgX19DKSByYW5nZS5lLmMgPSBfX0M7XG5cdFx0XHRpZihkYXRhW1JdW0NdICYmIHR5cGVvZiBkYXRhW1JdW0NdID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShkYXRhW1JdW0NdKSAmJiAhKGRhdGFbUl1bQ10gaW5zdGFuY2VvZiBEYXRlKSkgY2VsbCA9IGRhdGFbUl1bQ107XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheShjZWxsLnYpKSB7IGNlbGwuZiA9IGRhdGFbUl1bQ11bMV07IGNlbGwudiA9IGNlbGwudlswXTsgfVxuXHRcdFx0XHRpZihjZWxsLnYgPT09IG51bGwpIHtcblx0XHRcdFx0XHRpZihjZWxsLmYpIGNlbGwudCA9ICduJztcblx0XHRcdFx0XHRlbHNlIGlmKG8ubnVsbEVycm9yKSB7IGNlbGwudCA9ICdlJzsgY2VsbC52ID0gMDsgfVxuXHRcdFx0XHRcdGVsc2UgaWYoIW8uc2hlZXRTdHVicykgY29udGludWU7XG5cdFx0XHRcdFx0ZWxzZSBjZWxsLnQgPSAneic7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgY2VsbC52ID09PSAnbnVtYmVyJykgY2VsbC50ID0gJ24nO1xuXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiBjZWxsLnYgPT09ICdib29sZWFuJykgY2VsbC50ID0gJ2InO1xuXHRcdFx0XHRlbHNlIGlmKGNlbGwudiBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0XHRjZWxsLnogPSBvLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0XHRcdGlmKG8uY2VsbERhdGVzKSB7IGNlbGwudCA9ICdkJzsgY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIGRhdGVudW0oY2VsbC52KSk7IH1cblx0XHRcdFx0XHRlbHNlIHsgY2VsbC50ID0gJ24nOyBjZWxsLnYgPSBkYXRlbnVtKGNlbGwudik7IGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56LCBjZWxsLnYpOyB9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBjZWxsLnQgPSAncyc7XG5cdFx0XHR9XG5cdFx0XHRpZihkZW5zZSkge1xuXHRcdFx0XHRpZighd3NbX19SXSkgd3NbX19SXSA9IFtdO1xuXHRcdFx0XHRpZih3c1tfX1JdW19fQ10gJiYgd3NbX19SXVtfX0NdLnopIGNlbGwueiA9IHdzW19fUl1bX19DXS56O1xuXHRcdFx0XHR3c1tfX1JdW19fQ10gPSBjZWxsO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIGNlbGxfcmVmID0gZW5jb2RlX2NlbGwoKHtjOl9fQyxyOl9fUn0vKjphbnkqLykpO1xuXHRcdFx0XHRpZih3c1tjZWxsX3JlZl0gJiYgd3NbY2VsbF9yZWZdLnopIGNlbGwueiA9IHdzW2NlbGxfcmVmXS56O1xuXHRcdFx0XHR3c1tjZWxsX3JlZl0gPSBjZWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZihyYW5nZS5zLmMgPCAxMDAwMDAwMCkgd3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdHJldHVybiB3cztcbn1cbmZ1bmN0aW9uIGFvYV90b19zaGVldChkYXRhLyo6QU9BKi8sIG9wdHMvKjo/YW55Ki8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gc2hlZXRfYWRkX2FvYShudWxsLCBkYXRhLCBvcHRzKTsgfVxuXG5mdW5jdGlvbiBwYXJzZV9JbnQzMkxFKGRhdGEpIHtcblx0cmV0dXJuIGRhdGEucmVhZF9zaGlmdCg0LCAnaScpO1xufVxuZnVuY3Rpb24gd3JpdGVfVUludDMyTEUoeC8qOm51bWJlciovLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgeCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjE2OCAqL1xuZnVuY3Rpb24gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEvKjo6LCBsZW5ndGgqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBjY2hDaGFyYWN0ZXJzID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gY2NoQ2hhcmFjdGVycyA9PT0gMCA/IFwiXCIgOiBkYXRhLnJlYWRfc2hpZnQoY2NoQ2hhcmFjdGVycywgJ2RiY3MnKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMV2lkZVN0cmluZyhkYXRhLyo6c3RyaW5nKi8sIG8pIHtcblx0dmFyIF9udWxsID0gZmFsc2U7IGlmIChvID09IG51bGwpIHsgX251bGwgPSB0cnVlOyBvID0gbmV3X2J1Zig0ICsgMiAqIGRhdGEubGVuZ3RoKTsgfVxuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEubGVuZ3RoKTtcblx0aWYgKGRhdGEubGVuZ3RoID4gMCkgby53cml0ZV9zaGlmdCgwLCBkYXRhLCAnZGJjcycpO1xuXHRyZXR1cm4gX251bGwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjkxICovXG4vL2Z1bmN0aW9uIHBhcnNlX0xQV2lkZVN0cmluZyhkYXRhLyo6OiwgbGVuZ3RoKi8pLyo6c3RyaW5nKi8ge1xuLy9cdHZhciBjY2hDaGFyYWN0ZXJzID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuLy9cdHJldHVybiBjY2hDaGFyYWN0ZXJzID09PSAwID8gXCJcIiA6IGRhdGEucmVhZF9zaGlmdChjY2hDaGFyYWN0ZXJzLCBcInV0ZjE2bGVcIik7XG4vL31cblxuLyogW01TLVhMU0JdIDIuNS4xNDMgKi9cbmZ1bmN0aW9uIHBhcnNlX1N0clJ1bihkYXRhKSB7XG5cdHJldHVybiB7IGljaDogZGF0YS5yZWFkX3NoaWZ0KDIpLCBpZm50OiBkYXRhLnJlYWRfc2hpZnQoMikgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1N0clJ1bihydW4sIG8pIHtcblx0aWYgKCFvKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCgyLCBydW4uaWNoIHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHJ1bi5pZm50IHx8IDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1JpY2hTdHIoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pLyo6WExTdHJpbmcqLyB7XG5cdHZhciBzdGFydCA9IGRhdGEubDtcblx0dmFyIGZsYWdzID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgc3RyID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgcmdzU3RyUnVuID0gW107XG5cdHZhciB6ID0gKHsgdDogc3RyLCBoOiBzdHIgfS8qOmFueSovKTtcblx0aWYgKChmbGFncyAmIDEpICE9PSAwKSB7IC8qIGZSaWNoU3RyICovXG5cdFx0LyogVE9ETzogZm9ybWF0dGVkIHN0cmluZyAqL1xuXHRcdHZhciBkd1NpemVTdHJSdW4gPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgIT0gZHdTaXplU3RyUnVuOyArK2kpIHJnc1N0clJ1bi5wdXNoKHBhcnNlX1N0clJ1bihkYXRhKSk7XG5cdFx0ei5yID0gcmdzU3RyUnVuO1xuXHR9XG5cdGVsc2Ugei5yID0gW3sgaWNoOiAwLCBpZm50OiAwIH1dO1xuXHQvL2lmKChmbGFncyAmIDIpICE9PSAwKSB7IC8qIGZFeHRTdHIgKi9cblx0Ly9cdC8qIFRPRE86IHBob25ldGljIHN0cmluZyAqL1xuXHQvL31cblx0ZGF0YS5sID0gc3RhcnQgKyBsZW5ndGg7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfUmljaFN0cihzdHIvKjpYTFN0cmluZyovLCBvLyo6P0Jsb2NrKi8pLyo6QmxvY2sqLyB7XG5cdC8qIFRPRE86IGZvcm1hdHRlZCBzdHJpbmcgKi9cblx0dmFyIF9udWxsID0gZmFsc2U7IGlmIChvID09IG51bGwpIHsgX251bGwgPSB0cnVlOyBvID0gbmV3X2J1ZigxNSArIDQgKiBzdHIudC5sZW5ndGgpOyB9XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhzdHIudCwgbyk7XG5cdHJldHVybiBfbnVsbCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG4vKiBbTVMtWExTQl0gMi40LjMyOCBCcnRDb21tZW50VGV4dCAoUmljaFN0ciB3LzEgcnVuKSAqL1xudmFyIHBhcnNlX0JydENvbW1lbnRUZXh0ID0gcGFyc2VfUmljaFN0cjtcbmZ1bmN0aW9uIHdyaXRlX0JydENvbW1lbnRUZXh0KHN0ci8qOlhMU3RyaW5nKi8sIG8vKjo/QmxvY2sqLykvKjpCbG9jayovIHtcblx0LyogVE9ETzogZm9ybWF0dGVkIHN0cmluZyAqL1xuXHR2YXIgX251bGwgPSBmYWxzZTsgaWYgKG8gPT0gbnVsbCkgeyBfbnVsbCA9IHRydWU7IG8gPSBuZXdfYnVmKDIzICsgNCAqIHN0ci50Lmxlbmd0aCk7IH1cblx0by53cml0ZV9zaGlmdCgxLCAxKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKHN0ci50LCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCAxKTtcblx0d3JpdGVfU3RyUnVuKHsgaWNoOiAwLCBpZm50OiAwIH0sIG8pO1xuXHRyZXR1cm4gX251bGwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjkgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMU0JDZWxsKGRhdGEpLyo6YW55Ki8ge1xuXHR2YXIgY29sID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgaVN0eWxlUmVmID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRpU3R5bGVSZWYgKz0gZGF0YS5yZWFkX3NoaWZ0KDEpIDw8IDE2O1xuXHRkYXRhLmwrKzsgLy92YXIgZlBoU2hvdyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHsgYzogY29sLCBpU3R5bGVSZWY6IGlTdHlsZVJlZiB9O1xufVxuZnVuY3Rpb24gd3JpdGVfWExTQkNlbGwoY2VsbC8qOmFueSovLCBvLyo6P0Jsb2NrKi8pIHtcblx0aWYgKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIGNlbGwuYyk7XG5cdG8ud3JpdGVfc2hpZnQoMywgY2VsbC5pU3R5bGVSZWYgfHwgY2VsbC5zKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogZlBoU2hvdyAqL1xuXHRyZXR1cm4gbztcbn1cblxuLyogU2hvcnQgWExTQiBDZWxsIGRvZXMgbm90IGluY2x1ZGUgY29sdW1uICovXG5mdW5jdGlvbiBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpLyo6YW55Ki8ge1xuXHR2YXIgaVN0eWxlUmVmID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRpU3R5bGVSZWYgKz0gZGF0YS5yZWFkX3NoaWZ0KDEpIDw8MTY7XG5cdGRhdGEubCsrOyAvL3ZhciBmUGhTaG93ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4geyBjOi0xLCBpU3R5bGVSZWY6IGlTdHlsZVJlZiB9O1xufVxuZnVuY3Rpb24gd3JpdGVfWExTQlNob3J0Q2VsbChjZWxsLyo6YW55Ki8sIG8vKjo/QmxvY2sqLykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDMsIGNlbGwuaVN0eWxlUmVmIHx8IGNlbGwucyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGZQaFNob3cgKi9cblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMjEgKi9cbnZhciBwYXJzZV9YTFNCQ29kZU5hbWUgPSBwYXJzZV9YTFdpZGVTdHJpbmc7XG52YXIgd3JpdGVfWExTQkNvZGVOYW1lID0gd3JpdGVfWExXaWRlU3RyaW5nO1xuXG4vKiBbTVMtWExTQl0gMi41LjE2NiAqL1xuZnVuY3Rpb24gcGFyc2VfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGF0YS8qOjosIGxlbmd0aCovKS8qOnN0cmluZyovIHtcblx0dmFyIGNjaENoYXJhY3RlcnMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBjY2hDaGFyYWN0ZXJzID09PSAwIHx8IGNjaENoYXJhY3RlcnMgPT09IDB4RkZGRkZGRkYgPyBcIlwiIDogZGF0YS5yZWFkX3NoaWZ0KGNjaENoYXJhY3RlcnMsICdkYmNzJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkYXRhLyo6c3RyaW5nKi8sIG8pIHtcblx0dmFyIF9udWxsID0gZmFsc2U7IGlmIChvID09IG51bGwpIHsgX251bGwgPSB0cnVlOyBvID0gbmV3X2J1ZigxMjcpOyB9XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5sZW5ndGggPiAwID8gZGF0YS5sZW5ndGggOiAweEZGRkZGRkZGKTtcblx0aWYgKGRhdGEubGVuZ3RoID4gMCkgby53cml0ZV9zaGlmdCgwLCBkYXRhLCAnZGJjcycpO1xuXHRyZXR1cm4gX251bGwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjE2NSAqL1xudmFyIHBhcnNlX1hMTmFtZVdpZGVTdHJpbmcgPSBwYXJzZV9YTFdpZGVTdHJpbmc7XG4vL3ZhciB3cml0ZV9YTE5hbWVXaWRlU3RyaW5nID0gd3JpdGVfWExXaWRlU3RyaW5nO1xuXG4vKiBbTVMtWExTQl0gMi41LjExNCAqL1xudmFyIHBhcnNlX1JlbElEID0gcGFyc2VfWExOdWxsYWJsZVdpZGVTdHJpbmc7XG52YXIgd3JpdGVfUmVsSUQgPSB3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZztcblxuXG4vKiBbTVMtWExTXSAyLjUuMjE3IDsgW01TLVhMU0JdIDIuNS4xMjIgKi9cbmZ1bmN0aW9uIHBhcnNlX1JrTnVtYmVyKGRhdGEpLyo6bnVtYmVyKi8ge1xuXHR2YXIgYiA9IGRhdGEuc2xpY2UoZGF0YS5sLCBkYXRhLmwgKyA0KTtcblx0dmFyIGZYMTAwID0gKGJbMF0gJiAxKSwgZkludCA9IChiWzBdICYgMik7XG5cdGRhdGEubCArPSA0O1xuXHR2YXIgUksgPSBmSW50ID09PSAwID8gX19kb3VibGUoWzAsIDAsIDAsIDAsIChiWzBdICYgMHhGQyksIGJbMV0sIGJbMl0sIGJbM11dLCAwKSA6IF9fcmVhZEludDMyTEUoYiwgMCkgPj4gMjtcblx0cmV0dXJuIGZYMTAwID8gKFJLIC8gMTAwKSA6IFJLO1xufVxuZnVuY3Rpb24gd3JpdGVfUmtOdW1iZXIoZGF0YS8qOm51bWJlciovLCBvKSB7XG5cdGlmIChvID09IG51bGwpIG8gPSBuZXdfYnVmKDQpO1xuXHR2YXIgZlgxMDAgPSAwLCBmSW50ID0gMCwgZDEwMCA9IGRhdGEgKiAxMDA7XG5cdGlmICgoZGF0YSA9PSAoZGF0YSB8IDApKSAmJiAoZGF0YSA+PSAtKDEgPDwgMjkpKSAmJiAoZGF0YSA8ICgxIDw8IDI5KSkpIHsgZkludCA9IDE7IH1cblx0ZWxzZSBpZiAoKGQxMDAgPT0gKGQxMDAgfCAwKSkgJiYgKGQxMDAgPj0gLSgxIDw8IDI5KSkgJiYgKGQxMDAgPCAoMSA8PCAyOSkpKSB7IGZJbnQgPSAxOyBmWDEwMCA9IDE7IH1cblx0aWYgKGZJbnQpIG8ud3JpdGVfc2hpZnQoLTQsICgoZlgxMDAgPyBkMTAwIDogZGF0YSkgPDwgMikgKyAoZlgxMDAgKyAyKSk7XG5cdGVsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgUmtOdW1iZXIgXCIgKyBkYXRhKTsgLy8gVE9ET1xufVxuXG5cbi8qIFtNUy1YTFNCXSAyLjUuMTE3IFJmWCAqL1xuZnVuY3Rpb24gcGFyc2VfUmZYKGRhdGEgLyo6OiwgbGVuZ3RoKi8pLyo6UmFuZ2UqLyB7XG5cdHZhciBjZWxsLyo6UmFuZ2UqLyA9ICh7IHM6IHt9LCBlOiB7fSB9Lyo6YW55Ki8pO1xuXHRjZWxsLnMuciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0Y2VsbC5lLnIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGNlbGwucy5jID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLmUuYyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9SZlgoci8qOlJhbmdlKi8sIG8pIHtcblx0aWYgKCFvKSBvID0gbmV3X2J1ZigxNik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgci5zLnIpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIuZS5yKTtcblx0by53cml0ZV9zaGlmdCg0LCByLnMuYyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgci5lLmMpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xNTMgVW5jaGVja2VkUmZYICovXG52YXIgcGFyc2VfVW5jaGVja2VkUmZYID0gcGFyc2VfUmZYO1xudmFyIHdyaXRlX1VuY2hlY2tlZFJmWCA9IHdyaXRlX1JmWDtcblxuLyogW01TLVhMU0JdIDIuNS4xNTUgVW5jaGVja2VkU3FSZlggKi9cbi8vZnVuY3Rpb24gcGFyc2VfVW5jaGVja2VkU3FSZlgoZGF0YSkge1xuLy9cdHZhciBjbnQgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG4vL1x0dmFyIG91dCA9IFtdO1xuLy9cdGZvcih2YXIgaSA9IDA7IGkgPCBjbnQ7ICsraSkge1xuLy9cdFx0dmFyIHJuZyA9IHBhcnNlX1VuY2hlY2tlZFJmWChkYXRhKTtcbi8vXHRcdG91dC5wdXNoKGVuY29kZV9yYW5nZShybmcpKTtcbi8vXHR9XG4vL1x0cmV0dXJuIG91dC5qb2luKFwiLFwiKTtcbi8vfVxuLy9mdW5jdGlvbiB3cml0ZV9VbmNoZWNrZWRTcVJmWChzcXJmeC8qOnN0cmluZyovKSB7XG4vL1x0dmFyIHBhcnRzID0gc3FyZnguc3BsaXQoL1xccyosXFxzKi8pO1xuLy9cdHZhciBvID0gbmV3X2J1Zig0KTsgby53cml0ZV9zaGlmdCg0LCBwYXJ0cy5sZW5ndGgpO1xuLy9cdHZhciBvdXQgPSBbb107XG4vL1x0cGFydHMuZm9yRWFjaChmdW5jdGlvbihybmcpIHtcbi8vXHRcdG91dC5wdXNoKHdyaXRlX1VuY2hlY2tlZFJmWChzYWZlX2RlY29kZV9yYW5nZShybmcpKSk7XG4vL1x0fSk7XG4vL1x0cmV0dXJuIGJjb25jYXQob3V0KTtcbi8vfVxuXG4vKiBbTVMtWExTXSAyLjUuMzQyIDsgW01TLVhMU0JdIDIuNS4xNzEgKi9cbi8qIFRPRE86IGVycm9yIGNoZWNraW5nLCBOYU4gYW5kIEluZmluaXR5IHZhbHVlcyBhcmUgbm90IHZhbGlkIFhudW0gKi9cbmZ1bmN0aW9uIHBhcnNlX1hudW0oZGF0YS8qOjosIGxlbmd0aCovKSB7XG5cdGlmKGRhdGEubGVuZ3RoIC0gZGF0YS5sIDwgOCkgdGhyb3cgXCJYTFMgWG51bSBCdWZmZXIgdW5kZXJmbG93XCI7XG5cdHJldHVybiBkYXRhLnJlYWRfc2hpZnQoOCwgJ2YnKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hudW0oZGF0YSwgbykgeyByZXR1cm4gKG8gfHwgbmV3X2J1Zig4KSkud3JpdGVfc2hpZnQoOCwgZGF0YSwgJ2YnKTsgfVxuXG4vKiBbTVMtWExTQl0gMi40LjMyNCBCcnRDb2xvciAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q29sb3IoZGF0YS8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0dmFyIGQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cblx0Ly92YXIgZlZhbGlkUkdCID0gZCAmIDE7XG5cdHZhciB4Q29sb3JUeXBlID0gZCA+Pj4gMTtcblxuXHR2YXIgaW5kZXggPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBuVFMgPSBkYXRhLnJlYWRfc2hpZnQoMiwgJ2knKTtcblx0dmFyIGJSID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgYkcgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBiQiA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0ZGF0YS5sKys7IC8vdmFyIGJBbHBoYSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblxuXHRzd2l0Y2ggKHhDb2xvclR5cGUpIHtcblx0XHRjYXNlIDA6IG91dC5hdXRvID0gMTsgYnJlYWs7XG5cdFx0Y2FzZSAxOlxuXHRcdFx0b3V0LmluZGV4ID0gaW5kZXg7XG5cdFx0XHR2YXIgaWN2ID0gWExTSWN2W2luZGV4XTtcblx0XHRcdC8qIGF1dG9tYXRpYyBwc2V1ZG8gaW5kZXggODEgKi9cblx0XHRcdGlmIChpY3YpIG91dC5yZ2IgPSByZ2IySGV4KGljdik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHQvKiBpZighZlZhbGlkUkdCKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkXCIpOyAqL1xuXHRcdFx0b3V0LnJnYiA9IHJnYjJIZXgoW2JSLCBiRywgYkJdKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMzogb3V0LnRoZW1lID0gaW5kZXg7IGJyZWFrO1xuXHR9XG5cdGlmIChuVFMgIT0gMCkgb3V0LnRpbnQgPSBuVFMgPiAwID8gblRTIC8gMzI3NjcgOiBuVFMgLyAzMjc2ODtcblxuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q29sb3IoY29sb3IsIG8pIHtcblx0aWYgKCFvKSBvID0gbmV3X2J1Zig4KTtcblx0aWYgKCFjb2xvciB8fCBjb2xvci5hdXRvKSB7IG8ud3JpdGVfc2hpZnQoNCwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7IHJldHVybiBvOyB9XG5cdGlmIChjb2xvci5pbmRleCAhPSBudWxsKSB7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDAyKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIGNvbG9yLmluZGV4KTtcblx0fSBlbHNlIGlmIChjb2xvci50aGVtZSAhPSBudWxsKSB7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDA2KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIGNvbG9yLnRoZW1lKTtcblx0fSBlbHNlIHtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MDUpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdH1cblx0dmFyIG5UUyA9IGNvbG9yLnRpbnQgfHwgMDtcblx0aWYgKG5UUyA+IDApIG5UUyAqPSAzMjc2Nztcblx0ZWxzZSBpZiAoblRTIDwgMCkgblRTICo9IDMyNzY4O1xuXHRvLndyaXRlX3NoaWZ0KDIsIG5UUyk7XG5cdGlmICghY29sb3IucmdiIHx8IGNvbG9yLnRoZW1lICE9IG51bGwpIHtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0fSBlbHNlIHtcblx0XHR2YXIgcmdiID0gKGNvbG9yLnJnYiB8fCAnRkZGRkZGJyk7XG5cdFx0aWYgKHR5cGVvZiByZ2IgPT0gJ251bWJlcicpIHJnYiA9IChcIjAwMDAwMFwiICsgcmdiLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQocmdiLnNsaWNlKDAsIDIpLCAxNikpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQocmdiLnNsaWNlKDIsIDQpLCAxNikpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQocmdiLnNsaWNlKDQsIDYpLCAxNikpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuNTIgKi9cbmZ1bmN0aW9uIHBhcnNlX0ZvbnRGbGFncyhkYXRhLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIGQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGRhdGEubCsrO1xuXHR2YXIgb3V0ID0ge1xuXHRcdGZCb2xkOiBkICYgMHgwMSxcblx0XHRmSXRhbGljOiBkICYgMHgwMixcblx0XHRmVW5kZXJsaW5lOiBkICYgMHgwNCxcblx0XHRmU3RyaWtlb3V0OiBkICYgMHgwOCxcblx0XHRmT3V0bGluZTogZCAmIDB4MTAsXG5cdFx0ZlNoYWRvdzogZCAmIDB4MjAsXG5cdFx0ZkNvbmRlbnNlOiBkICYgMHg0MCxcblx0XHRmRXh0ZW5kOiBkICYgMHg4MFxuXHR9O1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfRm9udEZsYWdzKGZvbnQsIG8pIHtcblx0aWYgKCFvKSBvID0gbmV3X2J1ZigyKTtcblx0dmFyIGdyYml0ID1cblx0XHQoZm9udC5pdGFsaWMgPyAweDAyIDogMCkgfFxuXHRcdChmb250LnN0cmlrZSA/IDB4MDggOiAwKSB8XG5cdFx0KGZvbnQub3V0bGluZSA/IDB4MTAgOiAwKSB8XG5cdFx0KGZvbnQuc2hhZG93ID8gMHgyMCA6IDApIHxcblx0XHQoZm9udC5jb25kZW5zZSA/IDB4NDAgOiAwKSB8XG5cdFx0KGZvbnQuZXh0ZW5kID8gMHg4MCA6IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGdyYml0KTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PTEVEU10gMi4zLjEgYW5kIDIuMy4yICovXG5mdW5jdGlvbiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclN0cmluZyhvLCB3Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHQvLyAkRmxvd0lnbm9yZVxuXHR2YXIgQ2xpcEZtdCA9IHsgMjogXCJCSVRNQVBcIiwgMzogXCJNRVRBRklMRVBJQ1RcIiwgODogXCJESUJcIiwgMTQ6IFwiRU5ITUVUQUZJTEVcIiB9O1xuXHR2YXIgbS8qOm51bWJlciovID0gby5yZWFkX3NoaWZ0KDQpO1xuXHRzd2l0Y2ggKG0pIHtcblx0XHRjYXNlIDB4MDAwMDAwMDA6IHJldHVybiBcIlwiO1xuXHRcdGNhc2UgMHhmZmZmZmZmZjogY2FzZSAweGZmZmZmZmZlOiByZXR1cm4gQ2xpcEZtdFtvLnJlYWRfc2hpZnQoNCldIHx8IFwiXCI7XG5cdH1cblx0aWYgKG0gPiAweDE5MCkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ2xpcGJvYXJkOiBcIiArIG0udG9TdHJpbmcoMTYpKTtcblx0by5sIC09IDQ7XG5cdHJldHVybiBvLnJlYWRfc2hpZnQoMCwgdyA9PSAxID8gXCJscHN0clwiIDogXCJscHdzdHJcIik7XG59XG5mdW5jdGlvbiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPckFuc2lTdHJpbmcobykgeyByZXR1cm4gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmcobywgMSk7IH1cbmZ1bmN0aW9uIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yVW5pY29kZVN0cmluZyhvKSB7IHJldHVybiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclN0cmluZyhvLCAyKTsgfVxuXG4vKiBbTVMtT0xFUFNdIDIuMiBQcm9wZXJ0eVR5cGUgKi9cbi8vIE5vdGU6IHNvbWUgdHJlZSBzaGFrZXJzIGNhbm5vdCBoYW5kbGUgVlRfVkVDVE9SIHwgJENPTlNULCBoZW5jZSBleHRyYSB2YXJzXG4vL3ZhciBWVF9FTVBUWSAgICA9IDB4MDAwMDtcbi8vdmFyIFZUX05VTEwgICAgID0gMHgwMDAxO1xudmFyIFZUX0kyICAgICAgID0gMHgwMDAyO1xudmFyIFZUX0k0ICAgICAgID0gMHgwMDAzO1xuLy92YXIgVlRfUjQgICAgICAgPSAweDAwMDQ7XG4vL3ZhciBWVF9SOCAgICAgICA9IDB4MDAwNTtcbi8vdmFyIFZUX0NZICAgICAgID0gMHgwMDA2O1xuLy92YXIgVlRfREFURSAgICAgPSAweDAwMDc7XG4vL3ZhciBWVF9CU1RSICAgICA9IDB4MDAwODtcbi8vdmFyIFZUX0VSUk9SICAgID0gMHgwMDBBO1xudmFyIFZUX0JPT0wgICAgID0gMHgwMDBCO1xudmFyIFZUX1ZBUklBTlQgID0gMHgwMDBDO1xuLy92YXIgVlRfREVDSU1BTCAgPSAweDAwMEU7XG4vL3ZhciBWVF9JMSAgICAgICA9IDB4MDAxMDtcbi8vdmFyIFZUX1VJMSAgICAgID0gMHgwMDExO1xuLy92YXIgVlRfVUkyICAgICAgPSAweDAwMTI7XG52YXIgVlRfVUk0ICAgICAgPSAweDAwMTM7XG4vL3ZhciBWVF9JOCAgICAgICA9IDB4MDAxNDtcbi8vdmFyIFZUX1VJOCAgICAgID0gMHgwMDE1O1xuLy92YXIgVlRfSU5UICAgICAgPSAweDAwMTY7XG4vL3ZhciBWVF9VSU5UICAgICA9IDB4MDAxNztcbnZhciBWVF9MUFNUUiAgICA9IDB4MDAxRTtcbi8vdmFyIFZUX0xQV1NUUiAgID0gMHgwMDFGO1xudmFyIFZUX0ZJTEVUSU1FID0gMHgwMDQwO1xudmFyIFZUX0JMT0IgICAgID0gMHgwMDQxO1xuLy92YXIgVlRfU1RSRUFNICAgPSAweDAwNDI7XG4vL3ZhciBWVF9TVE9SQUdFICA9IDB4MDA0Mztcbi8vdmFyIFZUX1NUUkVBTUVEX09iamVjdCAgPSAweDAwNDQ7XG4vL3ZhciBWVF9TVE9SRURfT2JqZWN0ICAgID0gMHgwMDQ1O1xuLy92YXIgVlRfQkxPQl9PYmplY3QgICAgICA9IDB4MDA0NjtcbnZhciBWVF9DRiAgICAgICA9IDB4MDA0Nztcbi8vdmFyIFZUX0NMU0lEICAgID0gMHgwMDQ4O1xuLy92YXIgVlRfVkVSU0lPTkVEX1NUUkVBTSA9IDB4MDA0OTtcbnZhciBWVF9WRUNUT1IgICA9IDB4MTAwMDtcbnZhciBWVF9WRUNUT1JfVkFSSUFOVCA9IDB4MTAwQztcbnZhciBWVF9WRUNUT1JfTFBTVFIgICA9IDB4MTAxRTtcbi8vdmFyIFZUX0FSUkFZICAgID0gMHgyMDAwO1xuXG52YXIgVlRfU1RSSU5HICAgPSAweDAwNTA7IC8vIDIuMy4zLjEuMTEgVnRTdHJpbmdcbnZhciBWVF9VU1RSICAgICA9IDB4MDA1MTsgLy8gMi4zLjMuMS4xMiBWdFVuYWxpZ25lZFN0cmluZ1xudmFyIFZUX0NVU1RPTSAgID0gW1ZUX1NUUklORywgVlRfVVNUUl07XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjIuMSBEb2N1bWVudCBTdW1tYXJ5IEluZm9ybWF0aW9uIFBJRERTSSAqL1xudmFyIERvY1N1bW1hcnlQSUREU0kgPSB7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOiAnQ29kZVBhZ2UnLCB0OiBWVF9JMiB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjogJ0NhdGVnb3J5JywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOiAnUHJlc2VudGF0aW9uRm9ybWF0JywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOiAnQnl0ZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDUvKjo6XSovOiB7IG46ICdMaW5lQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwNi8qOjpdKi86IHsgbjogJ1BhcmFncmFwaENvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46ICdTbGlkZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDgvKjo6XSovOiB7IG46ICdOb3RlQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwOS8qOjpdKi86IHsgbjogJ0hpZGRlbkNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MGEvKjo6XSovOiB7IG46ICdNdWx0aW1lZGlhQ2xpcENvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MGIvKjo6XSovOiB7IG46ICdTY2FsZUNyb3AnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDBjLyo6Ol0qLzogeyBuOiAnSGVhZGluZ1BhaXJzJywgdDogVlRfVkVDVE9SX1ZBUklBTlQgLyogVlRfVkVDVE9SIHwgVlRfVkFSSUFOVCAqLyB9LFxuXHQvKjo6WyovMHgwZC8qOjpdKi86IHsgbjogJ1RpdGxlc09mUGFydHMnLCB0OiBWVF9WRUNUT1JfTFBTVFIgLyogVlRfVkVDVE9SIHwgVlRfTFBTVFIgKi8gfSxcblx0Lyo6OlsqLzB4MGUvKjo6XSovOiB7IG46ICdNYW5hZ2VyJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDBmLyo6Ol0qLzogeyBuOiAnQ29tcGFueScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjogJ0xpbmtzVXBUb0RhdGUnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDExLyo6Ol0qLzogeyBuOiAnQ2hhcmFjdGVyQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgxMy8qOjpdKi86IHsgbjogJ1NoYXJlZERvYycsIHQ6IFZUX0JPT0wgfSxcblx0Lyo6OlsqLzB4MTYvKjo6XSovOiB7IG46ICdIeXBlcmxpbmtzQ2hhbmdlZCcsIHQ6IFZUX0JPT0wgfSxcblx0Lyo6OlsqLzB4MTcvKjo6XSovOiB7IG46ICdBcHBWZXJzaW9uJywgdDogVlRfSTQsIHA6ICd2ZXJzaW9uJyB9LFxuXHQvKjo6WyovMHgxOC8qOjpdKi86IHsgbjogJ0RpZ1NpZycsIHQ6IFZUX0JMT0IgfSxcblx0Lyo6OlsqLzB4MUEvKjo6XSovOiB7IG46ICdDb250ZW50VHlwZScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxQi8qOjpdKi86IHsgbjogJ0NvbnRlbnRTdGF0dXMnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MUMvKjo6XSovOiB7IG46ICdMYW5ndWFnZScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxRC8qOjpdKi86IHsgbjogJ1ZlcnNpb24nLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fSxcblx0LyogW01TLU9MRVBTXSAyLjE4ICovXG5cdC8qOjpbKi8weDgwMDAwMDAwLyo6Ol0qLzogeyBuOiAnTG9jYWxlJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDgwMDAwMDAzLyo6Ol0qLzogeyBuOiAnQmVoYXZpb3InLCB0OiBWVF9VSTQgfSxcblx0Lyo6OlsqLzB4NzI2MjcyNjIvKjo6XSovOiB7fVxufTtcblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjIuMS4xIFN1bW1hcnkgSW5mb3JtYXRpb24gUHJvcGVydHkgU2V0IFBJRFNJICovXG52YXIgU3VtbWFyeVBJRFNJID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjogJ0NvZGVQYWdlJywgdDogVlRfSTIgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46ICdUaXRsZScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwMy8qOjpdKi86IHsgbjogJ1N1YmplY3QnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDQvKjo6XSovOiB7IG46ICdBdXRob3InLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDUvKjo6XSovOiB7IG46ICdLZXl3b3JkcycsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNi8qOjpdKi86IHsgbjogJ0NvbW1lbnRzJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogeyBuOiAnVGVtcGxhdGUnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDgvKjo6XSovOiB7IG46ICdMYXN0QXV0aG9yJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA5Lyo6Ol0qLzogeyBuOiAnUmV2TnVtYmVyJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogeyBuOiAnRWRpdFRpbWUnLCB0OiBWVF9GSUxFVElNRSB9LFxuXHQvKjo6WyovMHgwQi8qOjpdKi86IHsgbjogJ0xhc3RQcmludGVkJywgdDogVlRfRklMRVRJTUUgfSxcblx0Lyo6OlsqLzB4MEMvKjo6XSovOiB7IG46ICdDcmVhdGVkRGF0ZScsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBELyo6Ol0qLzogeyBuOiAnTW9kaWZpZWREYXRlJywgdDogVlRfRklMRVRJTUUgfSxcblx0Lyo6OlsqLzB4MEUvKjo6XSovOiB7IG46ICdQYWdlQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwRi8qOjpdKi86IHsgbjogJ1dvcmRDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOiAnQ2hhckNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MTEvKjo6XSovOiB7IG46ICdUaHVtYm5haWwnLCB0OiBWVF9DRiB9LFxuXHQvKjo6WyovMHgxMi8qOjpdKi86IHsgbjogJ0FwcGxpY2F0aW9uJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDEzLyo6Ol0qLzogeyBuOiAnRG9jU2VjdXJpdHknLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9LFxuXHQvKiBbTVMtT0xFUFNdIDIuMTggKi9cblx0Lyo6OlsqLzB4ODAwMDAwMDAvKjo6XSovOiB7IG46ICdMb2NhbGUnLCB0OiBWVF9VSTQgfSxcblx0Lyo6OlsqLzB4ODAwMDAwMDMvKjo6XSovOiB7IG46ICdCZWhhdmlvcicsIHQ6IFZUX1VJNCB9LFxuXHQvKjo6WyovMHg3MjYyNzI2Mi8qOjpdKi86IHt9XG59O1xuXG4vKiBbTVMtWExTXSAyLjQuNjMgQ291bnRyeS9SZWdpb24gY29kZXMgKi9cbnZhciBDb3VudHJ5RW51bSA9IHtcblx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IFwiVVNcIiwgLy8gVW5pdGVkIFN0YXRlc1xuXHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogXCJDQVwiLCAvLyBDYW5hZGFcblx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IFwiXCIsIC8vIExhdGluIEFtZXJpY2EgKGV4Y2VwdCBCcmF6aWwpXG5cdC8qOjpbKi8weDAwMDcvKjo6XSovOiBcIlJVXCIsIC8vIFJ1c3NpYVxuXHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogXCJFR1wiLCAvLyBFZ3lwdFxuXHQvKjo6WyovMHgwMDFFLyo6Ol0qLzogXCJHUlwiLCAvLyBHcmVlY2Vcblx0Lyo6OlsqLzB4MDAxRi8qOjpdKi86IFwiTkxcIiwgLy8gTmV0aGVybGFuZHNcblx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IFwiQkVcIiwgLy8gQmVsZ2l1bVxuXHQvKjo6WyovMHgwMDIxLyo6Ol0qLzogXCJGUlwiLCAvLyBGcmFuY2Vcblx0Lyo6OlsqLzB4MDAyMi8qOjpdKi86IFwiRVNcIiwgLy8gU3BhaW5cblx0Lyo6OlsqLzB4MDAyNC8qOjpdKi86IFwiSFVcIiwgLy8gSHVuZ2FyeVxuXHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogXCJJVFwiLCAvLyBJdGFseVxuXHQvKjo6WyovMHgwMDI5Lyo6Ol0qLzogXCJDSFwiLCAvLyBTd2l0emVybGFuZFxuXHQvKjo6WyovMHgwMDJCLyo6Ol0qLzogXCJBVFwiLCAvLyBBdXN0cmlhXG5cdC8qOjpbKi8weDAwMkMvKjo6XSovOiBcIkdCXCIsIC8vIFVuaXRlZCBLaW5nZG9tXG5cdC8qOjpbKi8weDAwMkQvKjo6XSovOiBcIkRLXCIsIC8vIERlbm1hcmtcblx0Lyo6OlsqLzB4MDAyRS8qOjpdKi86IFwiU0VcIiwgLy8gU3dlZGVuXG5cdC8qOjpbKi8weDAwMkYvKjo6XSovOiBcIk5PXCIsIC8vIE5vcndheVxuXHQvKjo6WyovMHgwMDMwLyo6Ol0qLzogXCJQTFwiLCAvLyBQb2xhbmRcblx0Lyo6OlsqLzB4MDAzMS8qOjpdKi86IFwiREVcIiwgLy8gR2VybWFueVxuXHQvKjo6WyovMHgwMDM0Lyo6Ol0qLzogXCJNWFwiLCAvLyBNZXhpY29cblx0Lyo6OlsqLzB4MDAzNy8qOjpdKi86IFwiQlJcIiwgLy8gQnJhemlsXG5cdC8qOjpbKi8weDAwM2QvKjo6XSovOiBcIkFVXCIsIC8vIEF1c3RyYWxpYVxuXHQvKjo6WyovMHgwMDQwLyo6Ol0qLzogXCJOWlwiLCAvLyBOZXcgWmVhbGFuZFxuXHQvKjo6WyovMHgwMDQyLyo6Ol0qLzogXCJUSFwiLCAvLyBUaGFpbGFuZFxuXHQvKjo6WyovMHgwMDUxLyo6Ol0qLzogXCJKUFwiLCAvLyBKYXBhblxuXHQvKjo6WyovMHgwMDUyLyo6Ol0qLzogXCJLUlwiLCAvLyBLb3JlYVxuXHQvKjo6WyovMHgwMDU0Lyo6Ol0qLzogXCJWTlwiLCAvLyBWaWV0IE5hbVxuXHQvKjo6WyovMHgwMDU2Lyo6Ol0qLzogXCJDTlwiLCAvLyBDaGluYVxuXHQvKjo6WyovMHgwMDVBLyo6Ol0qLzogXCJUUlwiLCAvLyBUdXJrZXlcblx0Lyo6OlsqLzB4MDA2OS8qOjpdKi86IFwiSlNcIiwgLy8gUmFtYXN0YW5cblx0Lyo6OlsqLzB4MDBENS8qOjpdKi86IFwiRFpcIiwgLy8gQWxnZXJpYVxuXHQvKjo6WyovMHgwMEQ4Lyo6Ol0qLzogXCJNQVwiLCAvLyBNb3JvY2NvXG5cdC8qOjpbKi8weDAwREEvKjo6XSovOiBcIkxZXCIsIC8vIExpYnlhXG5cdC8qOjpbKi8weDAxNUYvKjo6XSovOiBcIlBUXCIsIC8vIFBvcnR1Z2FsXG5cdC8qOjpbKi8weDAxNjIvKjo6XSovOiBcIklTXCIsIC8vIEljZWxhbmRcblx0Lyo6OlsqLzB4MDE2Ni8qOjpdKi86IFwiRklcIiwgLy8gRmlubGFuZFxuXHQvKjo6WyovMHgwMUE0Lyo6Ol0qLzogXCJDWlwiLCAvLyBDemVjaCBSZXB1YmxpY1xuXHQvKjo6WyovMHgwMzc2Lyo6Ol0qLzogXCJUV1wiLCAvLyBUYWl3YW5cblx0Lyo6OlsqLzB4MDNDMS8qOjpdKi86IFwiTEJcIiwgLy8gTGViYW5vblxuXHQvKjo6WyovMHgwM0MyLyo6Ol0qLzogXCJKT1wiLCAvLyBKb3JkYW5cblx0Lyo6OlsqLzB4MDNDMy8qOjpdKi86IFwiU1lcIiwgLy8gU3lyaWFcblx0Lyo6OlsqLzB4MDNDNC8qOjpdKi86IFwiSVFcIiwgLy8gSXJhcVxuXHQvKjo6WyovMHgwM0M1Lyo6Ol0qLzogXCJLV1wiLCAvLyBLdXdhaXRcblx0Lyo6OlsqLzB4MDNDNi8qOjpdKi86IFwiU0FcIiwgLy8gU2F1ZGkgQXJhYmlhXG5cdC8qOjpbKi8weDAzQ0IvKjo6XSovOiBcIkFFXCIsIC8vIFVuaXRlZCBBcmFiIEVtaXJhdGVzXG5cdC8qOjpbKi8weDAzQ0MvKjo6XSovOiBcIklMXCIsIC8vIElzcmFlbFxuXHQvKjo6WyovMHgwM0NFLyo6Ol0qLzogXCJRQVwiLCAvLyBRYXRhclxuXHQvKjo6WyovMHgwM0Q1Lyo6Ol0qLzogXCJJUlwiLCAvLyBJcmFuXG5cdC8qOjpbKi8weEZGRkYvKjo6XSovOiBcIlVTXCIgIC8vIFVuaXRlZCBTdGF0ZXNcbn07XG5cbi8qIFtNUy1YTFNdIDIuNS4xMjcgKi9cbnZhciBYTFNGaWxsUGF0dGVybiA9IFtcblx0bnVsbCxcblx0J3NvbGlkJyxcblx0J21lZGl1bUdyYXknLFxuXHQnZGFya0dyYXknLFxuXHQnbGlnaHRHcmF5Jyxcblx0J2RhcmtIb3Jpem9udGFsJyxcblx0J2RhcmtWZXJ0aWNhbCcsXG5cdCdkYXJrRG93bicsXG5cdCdkYXJrVXAnLFxuXHQnZGFya0dyaWQnLFxuXHQnZGFya1RyZWxsaXMnLFxuXHQnbGlnaHRIb3Jpem9udGFsJyxcblx0J2xpZ2h0VmVydGljYWwnLFxuXHQnbGlnaHREb3duJyxcblx0J2xpZ2h0VXAnLFxuXHQnbGlnaHRHcmlkJyxcblx0J2xpZ2h0VHJlbGxpcycsXG5cdCdncmF5MTI1Jyxcblx0J2dyYXkwNjI1J1xuXTtcblxuZnVuY3Rpb24gcmdiaWZ5KGFyci8qOkFycmF5PG51bWJlcj4qLykvKjpBcnJheTxbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+Ki8geyByZXR1cm4gYXJyLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiBbKHg+PjE2KSYyNTUsKHg+PjgpJjI1NSx4JjI1NV07IH0pOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xNjEgKi9cbi8qIFtNUy1YTFNCXSAyLjUuNzUgSWN2ICovXG52YXIgX1hMU0ljdiA9IC8qI19fUFVSRV9fKi8gcmdiaWZ5KFtcblx0LyogQ29sb3IgQ29uc3RhbnRzICovXG5cdDB4MDAwMDAwLFxuXHQweEZGRkZGRixcblx0MHhGRjAwMDAsXG5cdDB4MDBGRjAwLFxuXHQweDAwMDBGRixcblx0MHhGRkZGMDAsXG5cdDB4RkYwMEZGLFxuXHQweDAwRkZGRixcblxuXHQvKiBPdmVycmlkYWJsZSBEZWZhdWx0cyAqL1xuXHQweDAwMDAwMCxcblx0MHhGRkZGRkYsXG5cdDB4RkYwMDAwLFxuXHQweDAwRkYwMCxcblx0MHgwMDAwRkYsXG5cdDB4RkZGRjAwLFxuXHQweEZGMDBGRixcblx0MHgwMEZGRkYsXG5cblx0MHg4MDAwMDAsXG5cdDB4MDA4MDAwLFxuXHQweDAwMDA4MCxcblx0MHg4MDgwMDAsXG5cdDB4ODAwMDgwLFxuXHQweDAwODA4MCxcblx0MHhDMEMwQzAsXG5cdDB4ODA4MDgwLFxuXHQweDk5OTlGRixcblx0MHg5OTMzNjYsXG5cdDB4RkZGRkNDLFxuXHQweENDRkZGRixcblx0MHg2NjAwNjYsXG5cdDB4RkY4MDgwLFxuXHQweDAwNjZDQyxcblx0MHhDQ0NDRkYsXG5cblx0MHgwMDAwODAsXG5cdDB4RkYwMEZGLFxuXHQweEZGRkYwMCxcblx0MHgwMEZGRkYsXG5cdDB4ODAwMDgwLFxuXHQweDgwMDAwMCxcblx0MHgwMDgwODAsXG5cdDB4MDAwMEZGLFxuXHQweDAwQ0NGRixcblx0MHhDQ0ZGRkYsXG5cdDB4Q0NGRkNDLFxuXHQweEZGRkY5OSxcblx0MHg5OUNDRkYsXG5cdDB4RkY5OUNDLFxuXHQweENDOTlGRixcblx0MHhGRkNDOTksXG5cblx0MHgzMzY2RkYsXG5cdDB4MzNDQ0NDLFxuXHQweDk5Q0MwMCxcblx0MHhGRkNDMDAsXG5cdDB4RkY5OTAwLFxuXHQweEZGNjYwMCxcblx0MHg2NjY2OTksXG5cdDB4OTY5Njk2LFxuXHQweDAwMzM2Nixcblx0MHgzMzk5NjYsXG5cdDB4MDAzMzAwLFxuXHQweDMzMzMwMCxcblx0MHg5OTMzMDAsXG5cdDB4OTkzMzY2LFxuXHQweDMzMzM5OSxcblx0MHgzMzMzMzMsXG5cblx0LyogT3RoZXIgZW50cmllcyB0byBhcHBlYXNlIEJJRkY4LzEyICovXG5cdDB4RkZGRkZGLCAvKiAweDQwIGljdkZvcmVncm91bmQgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDEgaWN2QmFja2dyb3VuZCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0MiBpY3ZGcmFtZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0MyBpY3YzRCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0NCBpY3YzRFRleHQgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDUgaWN2M0RIaWxpdGUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDYgaWN2M0RTaGFkb3cgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDcgaWN2SGlsaXRlID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ4IGljdkN0bFRleHQgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDkgaWN2Q3RsU2NybCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0QSBpY3ZDdGxJbnYgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEIgaWN2Q3RsQm9keSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0QyBpY3ZDdGxGcmFtZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0RCBpY3ZDdGxGb3JlID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRFIGljdkN0bEJhY2sgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEYgaWN2Q3RsTmV1dHJhbCAqL1xuXHQweDAwMDAwMCwgLyogMHg1MCBpY3ZJbmZvQmsgPz8gKi9cblx0MHgwMDAwMDAgLyogMHg1MSBpY3ZJbmZvVGV4dCA/PyAqL1xuXSk7XG52YXIgWExTSWN2ID0gLyojX19QVVJFX18qL2R1cChfWExTSWN2KTtcblxuLyogW01TLVhMU0JdIDIuNS45Ny4yICovXG52YXIgQkVyciA9IHtcblx0Lyo6OlsqLzB4MDAvKjo6XSovOiBcIiNOVUxMIVwiLFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IFwiI0RJVi8wIVwiLFxuXHQvKjo6WyovMHgwRi8qOjpdKi86IFwiI1ZBTFVFIVwiLFxuXHQvKjo6WyovMHgxNy8qOjpdKi86IFwiI1JFRiFcIixcblx0Lyo6OlsqLzB4MUQvKjo6XSovOiBcIiNOQU1FP1wiLFxuXHQvKjo6WyovMHgyNC8qOjpdKi86IFwiI05VTSFcIixcblx0Lyo6OlsqLzB4MkEvKjo6XSovOiBcIiNOL0FcIixcblx0Lyo6OlsqLzB4MkIvKjo6XSovOiBcIiNHRVRUSU5HX0RBVEFcIixcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiBcIiNXVEY/XCJcbn07XG4vL3ZhciBSQkVyciA9IGV2ZXJ0X251bShCRXJyKTtcbnZhciBSQkVyciA9IHtcblx0XCIjTlVMTCFcIjogICAgICAgIDB4MDAsXG5cdFwiI0RJVi8wIVwiOiAgICAgICAweDA3LFxuXHRcIiNWQUxVRSFcIjogICAgICAgMHgwRixcblx0XCIjUkVGIVwiOiAgICAgICAgIDB4MTcsXG5cdFwiI05BTUU/XCI6ICAgICAgICAweDFELFxuXHRcIiNOVU0hXCI6ICAgICAgICAgMHgyNCxcblx0XCIjTi9BXCI6ICAgICAgICAgIDB4MkEsXG5cdFwiI0dFVFRJTkdfREFUQVwiOiAweDJCLFxuXHRcIiNXVEY/XCI6ICAgICAgICAgMHhGRlxufTtcblxuLyogUGFydHMgZW51bWVyYXRlZCBpbiBPUEMgc3BlYywgTVMtWExTQiBhbmQgTVMtWExTWCAqL1xuLyogMTIuMyBQYXJ0IFN1bW1hcnkgPFNwcmVhZHNoZWV0TUw+ICovXG4vKiAxNC4yIFBhcnQgU3VtbWFyeSA8RHJhd2luZ01MPiAqL1xuLyogW01TLVhMU1hdIDIuMSBQYXJ0IEVudW1lcmF0aW9ucyA7IFtNUy1YTFNCXSAyLjEuNyBQYXJ0IEVudW1lcmF0aW9uICovXG52YXIgY3QydHlwZS8qe1tzdHJpbmddOnN0cmluZ30qLyA9ICh7XG5cdC8qIFdvcmtib29rICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWxcIjogXCJ3b3JrYm9va3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpblwiOiBcIndvcmtib29rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWxcIjogXCJ3b3JrYm9va3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiBcIndvcmtib29rc1wiLFxuXG5cdC8qIFdvcmtzaGVldCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWxcIjogXCJzaGVldHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0XCI6IFwic2hlZXRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3NcIjogXCJUT0RPXCIsIC8qIEJpbmFyeSBJbmRleCAqL1xuXG5cdC8qIENoYXJ0c2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiOiBcImNoYXJ0c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jaGFydHNoZWV0XCI6IFwiY2hhcnRzXCIsXG5cblx0LyogTWFjcm9zaGVldCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0K3htbFwiOiBcIm1hY3Jvc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0XCI6IFwibWFjcm9zXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0XCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zXCI6IFwiVE9ET1wiLCAvKiBCaW5hcnkgSW5kZXggKi9cblxuXHQvKiBEaWFsb2dzaGVldCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbFwiOiBcImRpYWxvZ3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZGlhbG9nc2hlZXRcIjogXCJkaWFsb2dzXCIsXG5cblx0LyogU2hhcmVkIFN0cmluZ3MgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRTdHJpbmdzK3htbFwiOiBcInN0cnNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hhcmVkU3RyaW5nc1wiOiBcInN0cnNcIixcblxuXHQvKiBTdHlsZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sXCI6IFwic3R5bGVzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxlc1wiOiBcInN0eWxlc1wiLFxuXG5cdC8qIEZpbGUgUHJvcGVydGllcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIjogXCJjb3JlcHJvcHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sXCI6IFwiY3VzdHByb3BzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sXCI6IFwiZXh0cHJvcHNcIixcblxuXHQvKiBDdXN0b20gRGF0YSBQcm9wZXJ0aWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbVhtbFByb3BlcnRpZXMreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5XCI6IFwiVE9ET1wiLFxuXG5cdC8qIENvbW1lbnRzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sXCI6IFwiY29tbWVudHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHNcIjogXCJjb21tZW50c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50aHJlYWRlZGNvbW1lbnRzK3htbFwiOiBcInRocmVhZGVkY29tbWVudHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGVyc29uK3htbFwiOiBcInBlb3BsZVwiLFxuXG5cdC8qIE1ldGFkYXRhIChTdG9jay9HZW9ncmFwaHkgYW5kIER5bmFtaWMgQXJyYXkpICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWxcIjogXCJtZXRhZGF0YVwiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldE1ldGFkYXRhXCI6IFwibWV0YWRhdGFcIixcblxuXHQvKiBQaXZvdFRhYmxlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90VGFibGVcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2hhcnQgT2JqZWN0cyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IENvbG9ycyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDaGFydCBTdHlsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRzdHlsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2hhcnQgQWR2YW5jZWQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0ZXgreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENhbGN1bGF0aW9uIENoYWluICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpblwiOiBcImNhbGNjaGFpbnNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sXCI6IFwiY2FsY2NoYWluc1wiLFxuXG5cdC8qIFByaW50ZXIgU2V0dGluZ3MgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5wcmludGVyU2V0dGluZ3NcIjogXCJUT0RPXCIsXG5cblx0LyogQWN0aXZlWCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZlWFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIEN1c3RvbSBUb29sYmFycyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hdHRhY2hlZFRvb2xiYXJzXCI6IFwiVE9ET1wiLFxuXG5cdC8qIEV4dGVybmFsIERhdGEgQ29ubmVjdGlvbnMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIEV4dGVybmFsIExpbmtzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGlua1wiOiBcImxpbmtzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbFwiOiBcImxpbmtzXCIsXG5cblx0LyogUGl2b3RDYWNoZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvblwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZURlZmluaXRpb24reG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBRdWVyeSBUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5xdWVyeVRhYmxlXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5VGFibGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFNoYXJlZCBXb3JrYm9vayAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC51c2VyTmFtZXNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uSGVhZGVyc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25Mb2dcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25IZWFkZXJzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkxvZyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlck5hbWVzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTaW5nbGUgQ2VsbCBUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZVNpbmdsZUNlbGxzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlU2luZ2xlQ2VsbHMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFNsaWNlciAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXIreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogU29ydCBNYXAgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud3NTb3J0TWFwXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFRhYmxlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBUaGVtZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sXCI6IFwidGhlbWVzXCIsXG5cblx0LyogVGhlbWUgT3ZlcnJpZGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWVPdmVycmlkZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogVGltZWxpbmUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sXCI6IFwiVE9ET1wiLCAvKiB2ZXJpZnkgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmVDYWNoZSt4bWxcIjogXCJUT0RPXCIsIC8qIHZlcmlmeSAqL1xuXG5cdC8qIFZCQSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdFwiOiBcInZiYVwiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdFNpZ25hdHVyZVwiOiBcIlRPRE9cIixcblxuXHQvKiBWb2xhdGlsZSBEZXBlbmRlbmNpZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZvbGF0aWxlRGVwZW5kZW5jaWVzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlRGVwZW5kZW5jaWVzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDb250cm9sIFByb3BlcnRpZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29udHJvbHByb3BlcnRpZXMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIERhdGEgTW9kZWwgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YVwiOiBcIlRPRE9cIixcblxuXHQvKiBTdXJ2ZXkgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuU3VydmV5K3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBEcmF3aW5nICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmcreG1sXCI6IFwiZHJhd2luZ3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1Db2xvcnMreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbURhdGEreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUxheW91dCt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtU3R5bGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFZNTCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nXCI6IFwiVE9ET1wiLFxuXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIjogXCJyZWxzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm9sZU9iamVjdFwiOiBcIlRPRE9cIixcblxuXHQvKiBJbWFnZSAqL1xuXHRcImltYWdlL3BuZ1wiOiBcIlRPRE9cIixcblxuXHRcInNoZWV0XCI6IFwianNcIlxufS8qOmFueSovKTtcblxudmFyIENUX0xJU1QgPSB7XG5cdFx0d29ya2Jvb2tzOiB7XG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCIsXG5cdFx0XHR4bHNtOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpblwiLFxuXHRcdFx0eGxhbTogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9FbmFibGVkLm1haW4reG1sXCIsXG5cdFx0XHR4bHR4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sXCJcblx0XHR9LFxuXHRcdHN0cnM6IHsgLyogU2hhcmVkIFN0cmluZ3MgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3NcIlxuXHRcdH0sXG5cdFx0Y29tbWVudHM6IHsgLyogQ29tbWVudHMgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb21tZW50c1wiXG5cdFx0fSxcblx0XHRzaGVldHM6IHsgLyogV29ya3NoZWV0ICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndvcmtzaGVldFwiXG5cdFx0fSxcblx0XHRjaGFydHM6IHsgLyogQ2hhcnRzaGVldCAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldFwiXG5cdFx0fSxcblx0XHRkaWFsb2dzOiB7IC8qIERpYWxvZ3NoZWV0ICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZGlhbG9nc2hlZXRcIlxuXHRcdH0sXG5cdFx0bWFjcm9zOiB7IC8qIE1hY3Jvc2hlZXQgKEV4Y2VsIDQuMCBNYWNyb3MpICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0K3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldFwiXG5cdFx0fSxcblx0XHRtZXRhZGF0YTogeyAvKiBNZXRhZGF0YSAoU3RvY2svR2VvZ3JhcGh5IGFuZCBEeW5hbWljIEFycmF5KSAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YVwiXG5cdFx0fSxcblx0XHRzdHlsZXM6IHsgLyogU3R5bGVzICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxlc1wiXG5cdFx0fVxufTtcblxuZnVuY3Rpb24gbmV3X2N0KCkvKjphbnkqLyB7XG5cdHJldHVybiAoe1xuXHRcdHdvcmtib29rczpbXSwgc2hlZXRzOltdLCBjaGFydHM6W10sIGRpYWxvZ3M6W10sIG1hY3JvczpbXSxcblx0XHRyZWxzOltdLCBzdHJzOltdLCBjb21tZW50czpbXSwgdGhyZWFkZWRjb21tZW50czpbXSwgbGlua3M6W10sXG5cdFx0Y29yZXByb3BzOltdLCBleHRwcm9wczpbXSwgY3VzdHByb3BzOltdLCB0aGVtZXM6W10sIHN0eWxlczpbXSxcblx0XHRjYWxjY2hhaW5zOltdLCB2YmE6IFtdLCBkcmF3aW5nczogW10sIG1ldGFkYXRhOiBbXSwgcGVvcGxlOltdLFxuXHRcdFRPRE86W10sIHhtbG5zOiBcIlwiIH0vKjphbnkqLyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2N0KGRhdGEvKjo/c3RyaW5nKi8pIHtcblx0dmFyIGN0ID0gbmV3X2N0KCk7XG5cdGlmKCFkYXRhIHx8ICFkYXRhLm1hdGNoKSByZXR1cm4gY3Q7XG5cdHZhciBjdGV4dCA9IHt9O1xuXHQoZGF0YS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaCh5WzBdLnJlcGxhY2UobnNyZWdleCxcIjxcIikpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8VHlwZXMnOiBjdC54bWxucyA9IHlbJ3htbG5zJyArICh5WzBdLm1hdGNoKC88KFxcdyspOi8pfHxbXCJcIixcIlwiXSlbMV0gXTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8RGVmYXVsdCc6IGN0ZXh0W3kuRXh0ZW5zaW9uXSA9IHkuQ29udGVudFR5cGU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPE92ZXJyaWRlJzpcblx0XHRcdFx0aWYoY3RbY3QydHlwZVt5LkNvbnRlbnRUeXBlXV0gIT09IHVuZGVmaW5lZCkgY3RbY3QydHlwZVt5LkNvbnRlbnRUeXBlXV0ucHVzaCh5LlBhcnROYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9KTtcblx0aWYoY3QueG1sbnMgIT09IFhNTE5TLkNUKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIE5hbWVzcGFjZTogXCIgKyBjdC54bWxucyk7XG5cdGN0LmNhbGNjaGFpbiA9IGN0LmNhbGNjaGFpbnMubGVuZ3RoID4gMCA/IGN0LmNhbGNjaGFpbnNbMF0gOiBcIlwiO1xuXHRjdC5zc3QgPSBjdC5zdHJzLmxlbmd0aCA+IDAgPyBjdC5zdHJzWzBdIDogXCJcIjtcblx0Y3Quc3R5bGUgPSBjdC5zdHlsZXMubGVuZ3RoID4gMCA/IGN0LnN0eWxlc1swXSA6IFwiXCI7XG5cdGN0LmRlZmF1bHRzID0gY3RleHQ7XG5cdGRlbGV0ZSBjdC5jYWxjY2hhaW5zO1xuXHRyZXR1cm4gY3Q7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2N0KGN0LCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIHR5cGUyY3QvKntbc3RyaW5nXTpBcnJheTxzdHJpbmc+fSovID0gZXZlcnRfYXJyKGN0MnR5cGUpO1xuXG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHY7XG5cdG9bby5sZW5ndGhdID0gKFhNTF9IRUFERVIpO1xuXHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZygnVHlwZXMnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuQ1QsXG5cdFx0J3htbG5zOnhzZCc6IFhNTE5TLnhzZCxcblx0XHQneG1sbnM6eHNpJzogWE1MTlMueHNpXG5cdH0pO1xuXG5cdG8gPSBvLmNvbmNhdChbXG5cdFx0Wyd4bWwnLCAnYXBwbGljYXRpb24veG1sJ10sXG5cdFx0WydiaW4nLCAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiddLFxuXHRcdFsndm1sJywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nJ10sXG5cdFx0WydkYXRhJywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhJ10sXG5cdFx0LyogZnJvbSB0ZXN0IGZpbGVzICovXG5cdFx0WydibXAnLCAnaW1hZ2UvYm1wJ10sXG5cdFx0WydwbmcnLCAnaW1hZ2UvcG5nJ10sXG5cdFx0WydnaWYnLCAnaW1hZ2UvZ2lmJ10sXG5cdFx0WydlbWYnLCAnaW1hZ2UveC1lbWYnXSxcblx0XHRbJ3dtZicsICdpbWFnZS94LXdtZiddLFxuXHRcdFsnanBnJywgJ2ltYWdlL2pwZWcnXSwgWydqcGVnJywgJ2ltYWdlL2pwZWcnXSxcblx0XHRbJ3RpZicsICdpbWFnZS90aWZmJ10sIFsndGlmZicsICdpbWFnZS90aWZmJ10sXG5cdFx0WydwZGYnLCAnYXBwbGljYXRpb24vcGRmJ10sXG5cdFx0WydyZWxzJywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sJ11cblx0XS5tYXAoZnVuY3Rpb24oeCkge1xuXHRcdHJldHVybiB3cml0ZXh0YWcoJ0RlZmF1bHQnLCBudWxsLCB7J0V4dGVuc2lvbic6eFswXSwgJ0NvbnRlbnRUeXBlJzogeFsxXX0pO1xuXHR9KSk7XG5cblx0Lyogb25seSB3cml0ZSBmaXJzdCBpbnN0YW5jZSAqL1xuXHR2YXIgZjEgPSBmdW5jdGlvbih3KSB7XG5cdFx0aWYoY3Rbd10gJiYgY3Rbd10ubGVuZ3RoID4gMCkge1xuXHRcdFx0diA9IGN0W3ddWzBdO1xuXHRcdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdPdmVycmlkZScsIG51bGwsIHtcblx0XHRcdFx0J1BhcnROYW1lJzogKHZbMF0gPT0gJy8nID8gXCJcIjpcIi9cIikgKyB2LFxuXHRcdFx0XHQnQ29udGVudFR5cGUnOiBDVF9MSVNUW3ddW29wdHMuYm9va1R5cGVdIHx8IENUX0xJU1Rbd11bJ3hsc3gnXVxuXHRcdFx0fSkpO1xuXHRcdH1cblx0fTtcblxuXHQvKiBib29rIHR5cGUtc3BlY2lmaWMgKi9cblx0dmFyIGYyID0gZnVuY3Rpb24odykge1xuXHRcdChjdFt3XXx8W10pLmZvckVhY2goZnVuY3Rpb24odikge1xuXHRcdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdPdmVycmlkZScsIG51bGwsIHtcblx0XHRcdFx0J1BhcnROYW1lJzogKHZbMF0gPT0gJy8nID8gXCJcIjpcIi9cIikgKyB2LFxuXHRcdFx0XHQnQ29udGVudFR5cGUnOiBDVF9MSVNUW3ddW29wdHMuYm9va1R5cGVdIHx8IENUX0xJU1Rbd11bJ3hsc3gnXVxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qIHN0YW5kYXJkIHR5cGUgKi9cblx0dmFyIGYzID0gZnVuY3Rpb24odCkge1xuXHRcdChjdFt0XXx8W10pLmZvckVhY2goZnVuY3Rpb24odikge1xuXHRcdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdPdmVycmlkZScsIG51bGwsIHtcblx0XHRcdFx0J1BhcnROYW1lJzogKHZbMF0gPT0gJy8nID8gXCJcIjpcIi9cIikgKyB2LFxuXHRcdFx0XHQnQ29udGVudFR5cGUnOiB0eXBlMmN0W3RdWzBdXG5cdFx0XHR9KSk7XG5cdFx0fSk7XG5cdH07XG5cblx0ZjEoJ3dvcmtib29rcycpO1xuXHRmMignc2hlZXRzJyk7XG5cdGYyKCdjaGFydHMnKTtcblx0ZjMoJ3RoZW1lcycpO1xuXHRbJ3N0cnMnLCAnc3R5bGVzJ10uZm9yRWFjaChmMSk7XG5cdFsnY29yZXByb3BzJywgJ2V4dHByb3BzJywgJ2N1c3Rwcm9wcyddLmZvckVhY2goZjMpO1xuXHRmMygndmJhJyk7XG5cdGYzKCdjb21tZW50cycpO1xuXHRmMygndGhyZWFkZWRjb21tZW50cycpO1xuXHRmMygnZHJhd2luZ3MnKTtcblx0ZjIoJ21ldGFkYXRhJyk7XG5cdGYzKCdwZW9wbGUnKTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L1R5cGVzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiA5LjMgUmVsYXRpb25zaGlwcyAqL1xudmFyIFJFTFMgPSAoe1xuXHRXQjogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50XCIsXG5cdFNIRUVUOiBcImh0dHA6Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnRcIixcblx0SExJTks6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9oeXBlcmxpbmtcIixcblx0Vk1MOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdm1sRHJhd2luZ1wiLFxuXHRYUEFUSDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1BhdGhcIixcblx0WE1JU1M6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsRXh0ZXJuYWxMaW5rUGF0aC94bFBhdGhNaXNzaW5nXCIsXG5cdFhMSU5LOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZXJuYWxMaW5rXCIsXG5cdENYTUw6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWxcIixcblx0Q1hNTFA6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWxQcm9wc1wiLFxuXHRDTU5UOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY29tbWVudHNcIixcblx0Q09SRV9QUk9QUzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzXCIsXG5cdEVYVF9QUk9QUzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcycsXG5cdENVU1RfUFJPUFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbS1wcm9wZXJ0aWVzJyxcblx0U1NUOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc2hhcmVkU3RyaW5nc1wiLFxuXHRTVFk6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXNcIixcblx0VEhFTUU6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy90aGVtZVwiLFxuXHRDSEFSVDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0XCIsXG5cdENIQVJURVg6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNC9yZWxhdGlvbnNoaXBzL2NoYXJ0RXhcIixcblx0Q1M6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydHNoZWV0XCIsXG5cdFdTOiBbXG5cdFx0XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldFwiLFxuXHRcdFwiaHR0cDovL3B1cmwub2NsYy5vcmcvb294bWwvb2ZmaWNlRG9jdW1lbnQvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXRcIlxuXHRdLFxuXHREUzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RpYWxvZ3NoZWV0XCIsXG5cdE1TOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bE1hY3Jvc2hlZXRcIixcblx0SU1HOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaW1hZ2VcIixcblx0RFJBVzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmdcIixcblx0WExNRVRBOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc2hlZXRNZXRhZGF0YVwiLFxuXHRUQ01OVDogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvdGhyZWFkZWRDb21tZW50XCIsXG5cdFBFT1BMRTogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvcGVyc29uXCIsXG5cdFZCQTogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMvdmJhUHJvamVjdFwiXG59Lyo6YW55Ki8pO1xuXG5cbi8qIDkuMy4zIFJlcHJlc2VudGluZyBSZWxhdGlvbnNoaXBzICovXG5mdW5jdGlvbiBnZXRfcmVsc19wYXRoKGZpbGUvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBuID0gZmlsZS5sYXN0SW5kZXhPZihcIi9cIik7XG5cdHJldHVybiBmaWxlLnNsaWNlKDAsbisxKSArICdfcmVscy8nICsgZmlsZS5zbGljZShuKzEpICsgXCIucmVsc1wiO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9yZWxzKGRhdGEvKjo/c3RyaW5nKi8sIGN1cnJlbnRGaWxlUGF0aC8qOnN0cmluZyovKSB7XG5cdHZhciByZWxzID0ge1wiIWlkXCI6e319O1xuXHRpZiAoIWRhdGEpIHJldHVybiByZWxzO1xuXHRpZiAoY3VycmVudEZpbGVQYXRoLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG5cdFx0Y3VycmVudEZpbGVQYXRoID0gJy8nK2N1cnJlbnRGaWxlUGF0aDtcblx0fVxuXHR2YXIgaGFzaCA9IHt9O1xuXG5cdChkYXRhLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0LyogOS4zLjIuMiBPUENfUmVsYXRpb25zaGlwcyAqL1xuXHRcdGlmICh5WzBdID09PSAnPFJlbGF0aW9uc2hpcCcpIHtcblx0XHRcdHZhciByZWwgPSB7fTsgcmVsLlR5cGUgPSB5LlR5cGU7IHJlbC5UYXJnZXQgPSB5LlRhcmdldDsgcmVsLklkID0geS5JZDsgaWYoeS5UYXJnZXRNb2RlKSByZWwuVGFyZ2V0TW9kZSA9IHkuVGFyZ2V0TW9kZTtcblx0XHRcdHZhciBjYW5vbmljdGFyZ2V0ID0geS5UYXJnZXRNb2RlID09PSAnRXh0ZXJuYWwnID8geS5UYXJnZXQgOiByZXNvbHZlX3BhdGgoeS5UYXJnZXQsIGN1cnJlbnRGaWxlUGF0aCk7XG5cdFx0XHRyZWxzW2Nhbm9uaWN0YXJnZXRdID0gcmVsO1xuXHRcdFx0aGFzaFt5LklkXSA9IHJlbDtcblx0XHR9XG5cdH0pO1xuXHRyZWxzW1wiIWlkXCJdID0gaGFzaDtcblx0cmV0dXJuIHJlbHM7XG59XG5cblxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfcmVscyhyZWxzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdSZWxhdGlvbnNoaXBzJywgbnVsbCwge1xuXHRcdC8vJ3htbG5zOm5zMCc6IFhNTE5TLlJFTFMsXG5cdFx0J3htbG5zJzogWE1MTlMuUkVMU1xuXHR9KV07XG5cdGtleXMocmVsc1snIWlkJ10pLmZvckVhY2goZnVuY3Rpb24ocmlkKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdSZWxhdGlvbnNoaXAnLCBudWxsLCByZWxzWychaWQnXVtyaWRdKSk7XG5cdH0pO1xuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvUmVsYXRpb25zaGlwcz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBhZGRfcmVscyhyZWxzLCBySWQvKjpudW1iZXIqLywgZiwgdHlwZSwgcmVsb2JqLCB0YXJnZXRtb2RlLyo6P3N0cmluZyovKS8qOm51bWJlciovIHtcblx0aWYoIXJlbG9iaikgcmVsb2JqID0ge307XG5cdGlmKCFyZWxzWychaWQnXSkgcmVsc1snIWlkJ10gPSB7fTtcblx0aWYoIXJlbHNbJyFpZHgnXSkgcmVsc1snIWlkeCddID0gMTtcblx0aWYocklkIDwgMCkgZm9yKHJJZCA9IHJlbHNbJyFpZHgnXTsgcmVsc1snIWlkJ11bJ3JJZCcgKyBySWRdOyArK3JJZCl7LyogZW1wdHkgKi99XG5cdHJlbHNbJyFpZHgnXSA9IHJJZCArIDE7XG5cdHJlbG9iai5JZCA9ICdySWQnICsgcklkO1xuXHRyZWxvYmouVHlwZSA9IHR5cGU7XG5cdHJlbG9iai5UYXJnZXQgPSBmO1xuXHRpZih0YXJnZXRtb2RlKSByZWxvYmouVGFyZ2V0TW9kZSA9IHRhcmdldG1vZGU7XG5cdGVsc2UgaWYoW1JFTFMuSExJTkssIFJFTFMuWFBBVEgsIFJFTFMuWE1JU1NdLmluZGV4T2YocmVsb2JqLlR5cGUpID4gLTEpIHJlbG9iai5UYXJnZXRNb2RlID0gXCJFeHRlcm5hbFwiO1xuXHRpZihyZWxzWychaWQnXVtyZWxvYmouSWRdKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmV3cml0ZSBySWQgXCIgKyBySWQpO1xuXHRyZWxzWychaWQnXVtyZWxvYmouSWRdID0gcmVsb2JqO1xuXHRyZWxzWygnLycgKyByZWxvYmouVGFyZ2V0KS5yZXBsYWNlKFwiLy9cIixcIi9cIildID0gcmVsb2JqO1xuXHRyZXR1cm4gcklkO1xufVxuLyogT3BlbiBEb2N1bWVudCBGb3JtYXQgZm9yIE9mZmljZSBBcHBsaWNhdGlvbnMgKE9wZW5Eb2N1bWVudCkgVmVyc2lvbiAxLjIgKi9cbi8qIFBhcnQgMyBTZWN0aW9uIDQgTWFuaWZlc3QgRmlsZSAqL1xudmFyIENUX09EUyA9IFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiO1xuZnVuY3Rpb24gcGFyc2VfbWFuaWZlc3QoZCwgb3B0cykge1xuXHR2YXIgc3RyID0geGxtbF9ub3JtYWxpemUoZCk7XG5cdHZhciBSbjtcblx0dmFyIEZFdGFnO1xuXHR3aGlsZSgoUm4gPSB4bG1scmVnZXguZXhlYyhzdHIpKSkgc3dpdGNoKFJuWzNdKSB7XG5cdFx0Y2FzZSAnbWFuaWZlc3QnOiBicmVhazsgLy8gNC4yIDxtYW5pZmVzdDptYW5pZmVzdD5cblx0XHRjYXNlICdmaWxlLWVudHJ5JzogLy8gNC4zIDxtYW5pZmVzdDpmaWxlLWVudHJ5PlxuXHRcdFx0RkV0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0aWYoRkV0YWcucGF0aCA9PSAnLycgJiYgRkV0YWcudHlwZSAhPT0gQ1RfT0RTKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIE9wZW5Eb2N1bWVudCBpcyBub3QgYSBzcHJlYWRzaGVldFwiKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2VuY3J5cHRpb24tZGF0YSc6IC8vIDQuNCA8bWFuaWZlc3Q6ZW5jcnlwdGlvbi1kYXRhPlxuXHRcdGNhc2UgJ2FsZ29yaXRobSc6IC8vIDQuNSA8bWFuaWZlc3Q6YWxnb3JpdGhtPlxuXHRcdGNhc2UgJ3N0YXJ0LWtleS1nZW5lcmF0aW9uJzogLy8gNC42IDxtYW5pZmVzdDpzdGFydC1rZXktZ2VuZXJhdGlvbj5cblx0XHRjYXNlICdrZXktZGVyaXZhdGlvbic6IC8vIDQuNyA8bWFuaWZlc3Q6a2V5LWRlcml2YXRpb24+XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBPRFMgRW5jcnlwdGlvblwiKTtcblx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBSbjtcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZV9tYW5pZmVzdChtYW5pZmVzdC8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG8ucHVzaCgnPG1hbmlmZXN0Om1hbmlmZXN0IHhtbG5zOm1hbmlmZXN0PVwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptYW5pZmVzdDoxLjBcIiBtYW5pZmVzdDp2ZXJzaW9uPVwiMS4yXCI+XFxuJyk7XG5cdG8ucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9XCIvXCIgbWFuaWZlc3Q6dmVyc2lvbj1cIjEuMlwiIG1hbmlmZXN0Om1lZGlhLXR5cGU9XCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCIvPlxcbicpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbWFuaWZlc3QubGVuZ3RoOyArK2kpIG8ucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9XCInICsgbWFuaWZlc3RbaV1bMF0gKyAnXCIgbWFuaWZlc3Q6bWVkaWEtdHlwZT1cIicgKyBtYW5pZmVzdFtpXVsxXSArICdcIi8+XFxuJyk7XG5cdG8ucHVzaCgnPC9tYW5pZmVzdDptYW5pZmVzdD4nKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogUGFydCAzIFNlY3Rpb24gNiBNZXRhZGF0YSBNYW5pZmVzdCBGaWxlICovXG5mdW5jdGlvbiB3cml0ZV9yZGZfdHlwZShmaWxlLyo6c3RyaW5nKi8sIHJlcy8qOnN0cmluZyovLCB0YWcvKjo/c3RyaW5nKi8pIHtcblx0cmV0dXJuIFtcblx0XHQnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD1cIicgKyBmaWxlICsgJ1wiPlxcbicsXG5cdFx0JyAgICA8cmRmOnR5cGUgcmRmOnJlc291cmNlPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhLycgKyAodGFnIHx8IFwib2RmXCIpICsgJyMnICsgcmVzICsgJ1wiLz5cXG4nLFxuXHRcdCcgIDwvcmRmOkRlc2NyaXB0aW9uPlxcbidcblx0XS5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfcmRmX2hhcyhiYXNlLyo6c3RyaW5nKi8sIGZpbGUvKjpzdHJpbmcqLykge1xuXHRyZXR1cm4gW1xuXHRcdCcgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PVwiJyArIGJhc2UgKyAnXCI+XFxuJyxcblx0XHQnICAgIDxuczA6aGFzUGFydCB4bWxuczpuczA9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvcGtnI1wiIHJkZjpyZXNvdXJjZT1cIicgKyBmaWxlICsgJ1wiLz5cXG4nLFxuXHRcdCcgIDwvcmRmOkRlc2NyaXB0aW9uPlxcbidcblx0XS5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfcmRmKHJkZikge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0by5wdXNoKCc8cmRmOlJERiB4bWxuczpyZGY9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjXCI+XFxuJyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gcmRmLmxlbmd0aDsgKytpKSB7XG5cdFx0by5wdXNoKHdyaXRlX3JkZl90eXBlKHJkZltpXVswXSwgcmRmW2ldWzFdKSk7XG5cdFx0by5wdXNoKHdyaXRlX3JkZl9oYXMoXCJcIixyZGZbaV1bMF0pKTtcblx0fVxuXHRvLnB1c2god3JpdGVfcmRmX3R5cGUoXCJcIixcIkRvY3VtZW50XCIsIFwicGtnXCIpKTtcblx0by5wdXNoKCc8L3JkZjpSREY+Jyk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBUT0RPOiBwdWxsIHByb3BlcnRpZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX21ldGFfb2RzKC8qOjogd2I6IFdvcmtib29rLCBvcHRzOiBhbnkqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiAnPG9mZmljZTpkb2N1bWVudC1tZXRhIHhtbG5zOm9mZmljZT1cInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMFwiIHhtbG5zOm1ldGE9XCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wXCIgeG1sbnM6ZGM9XCJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIG9mZmljZTp2ZXJzaW9uPVwiMS4yXCI+PG9mZmljZTptZXRhPjxtZXRhOmdlbmVyYXRvcj5TaGVldCcgKyAnSlMgJyArIFhMU1gudmVyc2lvbiArICc8L21ldGE6Z2VuZXJhdG9yPjwvb2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT4nO1xufVxuXG4vKiBFQ01BLTM3NiBQYXJ0IElJIDExLjEgQ29yZSBQcm9wZXJ0aWVzIFBhcnQgKi9cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLlsxLTJdLjEgKFBJRFNJL1BJRERTSSkgKi9cbnZhciBDT1JFX1BST1BTLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFtcImNwOmNhdGVnb3J5XCIsIFwiQ2F0ZWdvcnlcIl0sXG5cdFtcImNwOmNvbnRlbnRTdGF0dXNcIiwgXCJDb250ZW50U3RhdHVzXCJdLFxuXHRbXCJjcDprZXl3b3Jkc1wiLCBcIktleXdvcmRzXCJdLFxuXHRbXCJjcDpsYXN0TW9kaWZpZWRCeVwiLCBcIkxhc3RBdXRob3JcIl0sXG5cdFtcImNwOmxhc3RQcmludGVkXCIsIFwiTGFzdFByaW50ZWRcIl0sXG5cdFtcImNwOnJldmlzaW9uXCIsIFwiUmV2TnVtYmVyXCJdLFxuXHRbXCJjcDp2ZXJzaW9uXCIsIFwiVmVyc2lvblwiXSxcblx0W1wiZGM6Y3JlYXRvclwiLCBcIkF1dGhvclwiXSxcblx0W1wiZGM6ZGVzY3JpcHRpb25cIiwgXCJDb21tZW50c1wiXSxcblx0W1wiZGM6aWRlbnRpZmllclwiLCBcIklkZW50aWZpZXJcIl0sXG5cdFtcImRjOmxhbmd1YWdlXCIsIFwiTGFuZ3VhZ2VcIl0sXG5cdFtcImRjOnN1YmplY3RcIiwgXCJTdWJqZWN0XCJdLFxuXHRbXCJkYzp0aXRsZVwiLCBcIlRpdGxlXCJdLFxuXHRbXCJkY3Rlcm1zOmNyZWF0ZWRcIiwgXCJDcmVhdGVkRGF0ZVwiLCAnZGF0ZSddLFxuXHRbXCJkY3Rlcm1zOm1vZGlmaWVkXCIsIFwiTW9kaWZpZWREYXRlXCIsICdkYXRlJ11cbl07XG5cbnZhciBDT1JFX1BST1BTX1JFR0VYLyo6QXJyYXk8UmVnRXhwPiovID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIHIgPSBuZXcgQXJyYXkoQ09SRV9QUk9QUy5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgQ09SRV9QUk9QUy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBmID0gQ09SRV9QUk9QU1tpXTtcblx0XHR2YXIgZyA9IFwiKD86XCIrIGZbMF0uc2xpY2UoMCxmWzBdLmluZGV4T2YoXCI6XCIpKSArXCI6KVwiKyBmWzBdLnNsaWNlKGZbMF0uaW5kZXhPZihcIjpcIikrMSk7XG5cdFx0cltpXSA9IG5ldyBSZWdFeHAoXCI8XCIgKyBnICsgXCJbXj5dKj4oW1xcXFxzXFxcXFNdKj8pPFxcL1wiICsgZyArIFwiPlwiKTtcblx0fVxuXHRyZXR1cm4gcjtcbn0pKCk7XG5cbmZ1bmN0aW9uIHBhcnNlX2NvcmVfcHJvcHMoZGF0YSkge1xuXHR2YXIgcCA9IHt9O1xuXHRkYXRhID0gdXRmOHJlYWQoZGF0YSk7XG5cblx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZiA9IENPUkVfUFJPUFNbaV0sIGN1ciA9IGRhdGEubWF0Y2goQ09SRV9QUk9QU19SRUdFWFtpXSk7XG5cdFx0aWYoY3VyICE9IG51bGwgJiYgY3VyLmxlbmd0aCA+IDApIHBbZlsxXV0gPSB1bmVzY2FwZXhtbChjdXJbMV0pO1xuXHRcdGlmKGZbMl0gPT09ICdkYXRlJyAmJiBwW2ZbMV1dKSBwW2ZbMV1dID0gcGFyc2VEYXRlKHBbZlsxXV0pO1xuXHR9XG5cblx0cmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIGNwX2RvaXQoZiwgZywgaCwgbywgcCkge1xuXHRpZihwW2ZdICE9IG51bGwgfHwgZyA9PSBudWxsIHx8IGcgPT09IFwiXCIpIHJldHVybjtcblx0cFtmXSA9IGc7XG5cdGcgPSBlc2NhcGV4bWwoZyk7XG5cdG9bby5sZW5ndGhdID0gKGggPyB3cml0ZXh0YWcoZixnLGgpIDogd3JpdGV0YWcoZixnKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NvcmVfcHJvcHMoY3AsIF9vcHRzKSB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnY3A6Y29yZVByb3BlcnRpZXMnLCBudWxsLCB7XG5cdFx0Ly8neG1sbnMnOiBYTUxOUy5DT1JFX1BST1BTLFxuXHRcdCd4bWxuczpjcCc6IFhNTE5TLkNPUkVfUFJPUFMsXG5cdFx0J3htbG5zOmRjJzogWE1MTlMuZGMsXG5cdFx0J3htbG5zOmRjdGVybXMnOiBYTUxOUy5kY3Rlcm1zLFxuXHRcdCd4bWxuczpkY21pdHlwZSc6IFhNTE5TLmRjbWl0eXBlLFxuXHRcdCd4bWxuczp4c2knOiBYTUxOUy54c2lcblx0fSldLCBwID0ge307XG5cdGlmKCFjcCAmJiAhb3B0cy5Qcm9wcykgcmV0dXJuIG8uam9pbihcIlwiKTtcblxuXHRpZihjcCkge1xuXHRcdGlmKGNwLkNyZWF0ZWREYXRlICE9IG51bGwpIGNwX2RvaXQoXCJkY3Rlcm1zOmNyZWF0ZWRcIiwgdHlwZW9mIGNwLkNyZWF0ZWREYXRlID09PSBcInN0cmluZ1wiID8gY3AuQ3JlYXRlZERhdGUgOiB3cml0ZV93M2NkdGYoY3AuQ3JlYXRlZERhdGUsIG9wdHMuV1RGKSwge1wieHNpOnR5cGVcIjpcImRjdGVybXM6VzNDRFRGXCJ9LCBvLCBwKTtcblx0XHRpZihjcC5Nb2RpZmllZERhdGUgIT0gbnVsbCkgY3BfZG9pdChcImRjdGVybXM6bW9kaWZpZWRcIiwgdHlwZW9mIGNwLk1vZGlmaWVkRGF0ZSA9PT0gXCJzdHJpbmdcIiA/IGNwLk1vZGlmaWVkRGF0ZSA6IHdyaXRlX3czY2R0ZihjcC5Nb2RpZmllZERhdGUsIG9wdHMuV1RGKSwge1wieHNpOnR5cGVcIjpcImRjdGVybXM6VzNDRFRGXCJ9LCBvLCBwKTtcblx0fVxuXG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gQ09SRV9QUk9QUy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBmID0gQ09SRV9QUk9QU1tpXTtcblx0XHR2YXIgdiA9IG9wdHMuUHJvcHMgJiYgb3B0cy5Qcm9wc1tmWzFdXSAhPSBudWxsID8gb3B0cy5Qcm9wc1tmWzFdXSA6IGNwID8gY3BbZlsxXV0gOiBudWxsO1xuXHRcdGlmKHYgPT09IHRydWUpIHYgPSBcIjFcIjtcblx0XHRlbHNlIGlmKHYgPT09IGZhbHNlKSB2ID0gXCIwXCI7XG5cdFx0ZWxzZSBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKSB2ID0gU3RyaW5nKHYpO1xuXHRcdGlmKHYgIT0gbnVsbCkgY3BfZG9pdChmWzBdLCB2LCBudWxsLCBvLCBwKTtcblx0fVxuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvY3A6Y29yZVByb3BlcnRpZXM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIDE1LjIuMTIuMyBFeHRlbmRlZCBGaWxlIFByb3BlcnRpZXMgUGFydCAqL1xuLyogW01TLU9TSEFSRURdIDIuMy4zLjIuWzEtMl0uMSAoUElEU0kvUElERFNJKSAqL1xudmFyIEVYVF9QUk9QUy8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW1xuXHRbXCJBcHBsaWNhdGlvblwiLCBcIkFwcGxpY2F0aW9uXCIsIFwic3RyaW5nXCJdLFxuXHRbXCJBcHBWZXJzaW9uXCIsIFwiQXBwVmVyc2lvblwiLCBcInN0cmluZ1wiXSxcblx0W1wiQ29tcGFueVwiLCBcIkNvbXBhbnlcIiwgXCJzdHJpbmdcIl0sXG5cdFtcIkRvY1NlY3VyaXR5XCIsIFwiRG9jU2VjdXJpdHlcIiwgXCJzdHJpbmdcIl0sXG5cdFtcIk1hbmFnZXJcIiwgXCJNYW5hZ2VyXCIsIFwic3RyaW5nXCJdLFxuXHRbXCJIeXBlcmxpbmtzQ2hhbmdlZFwiLCBcIkh5cGVybGlua3NDaGFuZ2VkXCIsIFwiYm9vbFwiXSxcblx0W1wiU2hhcmVkRG9jXCIsIFwiU2hhcmVkRG9jXCIsIFwiYm9vbFwiXSxcblx0W1wiTGlua3NVcFRvRGF0ZVwiLCBcIkxpbmtzVXBUb0RhdGVcIiwgXCJib29sXCJdLFxuXHRbXCJTY2FsZUNyb3BcIiwgXCJTY2FsZUNyb3BcIiwgXCJib29sXCJdLFxuXHRbXCJIZWFkaW5nUGFpcnNcIiwgXCJIZWFkaW5nUGFpcnNcIiwgXCJyYXdcIl0sXG5cdFtcIlRpdGxlc09mUGFydHNcIiwgXCJUaXRsZXNPZlBhcnRzXCIsIFwicmF3XCJdXG5dO1xuXG52YXIgUHNldWRvUHJvcHNQYWlycyA9IFtcblx0XCJXb3Jrc2hlZXRzXCIsICBcIlNoZWV0TmFtZXNcIixcblx0XCJOYW1lZFJhbmdlc1wiLCBcIkRlZmluZWROYW1lc1wiLFxuXHRcIkNoYXJ0c2hlZXRzXCIsIFwiQ2hhcnROYW1lc1wiXG5dO1xuZnVuY3Rpb24gbG9hZF9wcm9wc19wYWlycyhIUC8qOnN0cmluZ3xBcnJheTxBcnJheTxhbnk+PiovLCBUT1AsIHByb3BzLCBvcHRzKSB7XG5cdHZhciB2ID0gW107XG5cdGlmKHR5cGVvZiBIUCA9PSBcInN0cmluZ1wiKSB2ID0gcGFyc2VWZWN0b3IoSFAsIG9wdHMpO1xuXHRlbHNlIGZvcih2YXIgaiA9IDA7IGogPCBIUC5sZW5ndGg7ICsraikgdiA9IHYuY29uY2F0KEhQW2pdLm1hcChmdW5jdGlvbihocCkgeyByZXR1cm4ge3Y6aHB9OyB9KSk7XG5cdHZhciBwYXJ0cyA9ICh0eXBlb2YgVE9QID09IFwic3RyaW5nXCIpID8gcGFyc2VWZWN0b3IoVE9QLCBvcHRzKS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHgudjsgfSkgOiBUT1A7XG5cdHZhciBpZHggPSAwLCBsZW4gPSAwO1xuXHRpZihwYXJ0cy5sZW5ndGggPiAwKSBmb3IodmFyIGkgPSAwOyBpICE9PSB2Lmxlbmd0aDsgaSArPSAyKSB7XG5cdFx0bGVuID0gKyh2W2krMV0udik7XG5cdFx0c3dpdGNoKHZbaV0udikge1xuXHRcdFx0Y2FzZSBcIldvcmtzaGVldHNcIjpcblx0XHRcdGNhc2UgXCLlt6XkvZzooahcIjpcblx0XHRcdGNhc2UgXCLQm9C40YHRgtGLXCI6XG5cdFx0XHRjYXNlIFwi2KPZiNix2KfZgiDYp9mE2LnZhdmEXCI6XG5cdFx0XHRjYXNlIFwi44Ov44O844Kv44K344O844OIXCI6XG5cdFx0XHRjYXNlIFwi15LXnNeZ15XXoNeV16og16LXkdeV15PXlFwiOlxuXHRcdFx0Y2FzZSBcIkFyYmVpdHNibMOkdHRlclwiOlxuXHRcdFx0Y2FzZSBcIsOHYWzEscWfbWEgU2F5ZmFsYXLEsVwiOlxuXHRcdFx0Y2FzZSBcIkZldWlsbGVzIGRlIGNhbGN1bFwiOlxuXHRcdFx0Y2FzZSBcIkZvZ2xpIGRpIGxhdm9yb1wiOlxuXHRcdFx0Y2FzZSBcIkZvbGhhcyBkZSBjw6FsY3Vsb1wiOlxuXHRcdFx0Y2FzZSBcIlBsYW5pbGhhc1wiOlxuXHRcdFx0Y2FzZSBcIlJlZ25lYXJrXCI6XG5cdFx0XHRjYXNlIFwiSG9qYXMgZGUgY8OhbGN1bG9cIjpcblx0XHRcdGNhc2UgXCJXZXJrYmxhZGVuXCI6XG5cdFx0XHRcdHByb3BzLldvcmtzaGVldHMgPSBsZW47XG5cdFx0XHRcdHByb3BzLlNoZWV0TmFtZXMgPSBwYXJ0cy5zbGljZShpZHgsIGlkeCArIGxlbik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiTmFtZWQgUmFuZ2VzXCI6XG5cdFx0XHRjYXNlIFwiUmFuZ29zIGNvbiBub21icmVcIjpcblx0XHRcdGNhc2UgXCLlkI3liY3ku5jjgY3kuIDopqdcIjpcblx0XHRcdGNhc2UgXCJCZW5hbm50ZSBCZXJlaWNoZVwiOlxuXHRcdFx0Y2FzZSBcIk5hdm5naXZuZSBvbXLDpWRlclwiOlxuXHRcdFx0XHRwcm9wcy5OYW1lZFJhbmdlcyA9IGxlbjtcblx0XHRcdFx0cHJvcHMuRGVmaW5lZE5hbWVzID0gcGFydHMuc2xpY2UoaWR4LCBpZHggKyBsZW4pO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIkNoYXJ0c1wiOlxuXHRcdFx0Y2FzZSBcIkRpYWdyYW1tZVwiOlxuXHRcdFx0XHRwcm9wcy5DaGFydHNoZWV0cyA9IGxlbjtcblx0XHRcdFx0cHJvcHMuQ2hhcnROYW1lcyA9IHBhcnRzLnNsaWNlKGlkeCwgaWR4ICsgbGVuKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlkeCArPSBsZW47XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VfZXh0X3Byb3BzKGRhdGEsIHAsIG9wdHMpIHtcblx0dmFyIHEgPSB7fTsgaWYoIXApIHAgPSB7fTtcblx0ZGF0YSA9IHV0ZjhyZWFkKGRhdGEpO1xuXG5cdEVYVF9QUk9QUy5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcblx0XHR2YXIgeG1sID0gKGRhdGEubWF0Y2gobWF0Y2h0YWcoZlswXSkpfHxbXSlbMV07XG5cdFx0c3dpdGNoKGZbMl0pIHtcblx0XHRcdGNhc2UgXCJzdHJpbmdcIjogaWYoeG1sKSBwW2ZbMV1dID0gdW5lc2NhcGV4bWwoeG1sKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiYm9vbFwiOiBwW2ZbMV1dID0geG1sID09PSBcInRydWVcIjsgYnJlYWs7XG5cdFx0XHRjYXNlIFwicmF3XCI6XG5cdFx0XHRcdHZhciBjdXIgPSBkYXRhLm1hdGNoKG5ldyBSZWdFeHAoXCI8XCIgKyBmWzBdICsgXCJbXj5dKj4oW1xcXFxzXFxcXFNdKj8pPFxcL1wiICsgZlswXSArIFwiPlwiKSk7XG5cdFx0XHRcdGlmKGN1ciAmJiBjdXIubGVuZ3RoID4gMCkgcVtmWzFdXSA9IGN1clsxXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9KTtcblxuXHRpZihxLkhlYWRpbmdQYWlycyAmJiBxLlRpdGxlc09mUGFydHMpIGxvYWRfcHJvcHNfcGFpcnMocS5IZWFkaW5nUGFpcnMsIHEuVGl0bGVzT2ZQYXJ0cywgcCwgb3B0cyk7XG5cblx0cmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2V4dF9wcm9wcyhjcC8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIFcgPSB3cml0ZXh0YWc7XG5cdGlmKCFjcCkgY3AgPSB7fTtcblx0Y3AuQXBwbGljYXRpb24gPSBcIlNoZWV0SlNcIjtcblx0b1tvLmxlbmd0aF0gPSAoWE1MX0hFQURFUik7XG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnUHJvcGVydGllcycsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOUy5FWFRfUFJPUFMsXG5cdFx0J3htbG5zOnZ0JzogWE1MTlMudnRcblx0fSkpO1xuXG5cdEVYVF9QUk9QUy5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcblx0XHRpZihjcFtmWzFdXSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cdFx0dmFyIHY7XG5cdFx0c3dpdGNoKGZbMl0pIHtcblx0XHRcdGNhc2UgJ3N0cmluZyc6IHYgPSBlc2NhcGV4bWwoU3RyaW5nKGNwW2ZbMV1dKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYm9vbCc6IHYgPSBjcFtmWzFdXSA/ICd0cnVlJyA6ICdmYWxzZSc7IGJyZWFrO1xuXHRcdH1cblx0XHRpZih2ICE9PSB1bmRlZmluZWQpIG9bby5sZW5ndGhdID0gKFcoZlswXSwgdikpO1xuXHR9KTtcblxuXHQvKiBUT0RPOiBIZWFkaW5nUGFpcnMsIFRpdGxlc09mUGFydHMgKi9cblx0b1tvLmxlbmd0aF0gPSAoVygnSGVhZGluZ1BhaXJzJywgVygndnQ6dmVjdG9yJywgVygndnQ6dmFyaWFudCcsICc8dnQ6bHBzdHI+V29ya3NoZWV0czwvdnQ6bHBzdHI+JykrVygndnQ6dmFyaWFudCcsIFcoJ3Z0Omk0JywgU3RyaW5nKGNwLldvcmtzaGVldHMpKSksIHtzaXplOjIsIGJhc2VUeXBlOlwidmFyaWFudFwifSkpKTtcblx0b1tvLmxlbmd0aF0gPSAoVygnVGl0bGVzT2ZQYXJ0cycsIFcoJ3Z0OnZlY3RvcicsIGNwLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIFwiPHZ0Omxwc3RyPlwiICsgZXNjYXBleG1sKHMpICsgXCI8L3Z0Omxwc3RyPlwiOyB9KS5qb2luKFwiXCIpLCB7c2l6ZTogY3AuV29ya3NoZWV0cywgYmFzZVR5cGU6XCJscHN0clwifSkpKTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L1Byb3BlcnRpZXM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIDE1LjIuMTIuMiBDdXN0b20gRmlsZSBQcm9wZXJ0aWVzIFBhcnQgKi9cbnZhciBjdXN0cmVnZXggPSAvPFtePl0rPltePF0qL2c7XG5mdW5jdGlvbiBwYXJzZV9jdXN0X3Byb3BzKGRhdGEvKjpzdHJpbmcqLywgb3B0cykge1xuXHR2YXIgcCA9IHt9LCBuYW1lID0gXCJcIjtcblx0dmFyIG0gPSBkYXRhLm1hdGNoKGN1c3RyZWdleCk7XG5cdGlmKG0pIGZvcih2YXIgaSA9IDA7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB4ID0gbVtpXSwgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaCh5WzBdKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPFByb3BlcnRpZXMnOiBicmVhaztcblx0XHRcdGNhc2UgJzxwcm9wZXJ0eSc6IG5hbWUgPSB1bmVzY2FwZXhtbCh5Lm5hbWUpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvcHJvcGVydHk+JzogbmFtZSA9IG51bGw7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYgKHguaW5kZXhPZignPHZ0OicpID09PSAwKSB7XG5cdFx0XHRcdHZhciB0b2tzID0geC5zcGxpdCgnPicpO1xuXHRcdFx0XHR2YXIgdHlwZSA9IHRva3NbMF0uc2xpY2UoNCksIHRleHQgPSB0b2tzWzFdO1xuXHRcdFx0XHQvKiAyMi40LjIuMzIgKENUX1ZhcmlhbnQpLiBPbWl0IHRoZSBiaW5hcnkgdHlwZXMgZnJvbSAyMi40IChWYXJpYW50IFR5cGVzKSAqL1xuXHRcdFx0XHRzd2l0Y2godHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgJ2xwc3RyJzogY2FzZSAnYnN0cic6IGNhc2UgJ2xwd3N0cic6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gdW5lc2NhcGV4bWwodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdib29sJzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSBwYXJzZXhtbGJvb2wodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdpMSc6IGNhc2UgJ2kyJzogY2FzZSAnaTQnOiBjYXNlICdpOCc6IGNhc2UgJ2ludCc6IGNhc2UgJ3VpbnQnOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHBhcnNlSW50KHRleHQsIDEwKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3I0JzogY2FzZSAncjgnOiBjYXNlICdkZWNpbWFsJzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSBwYXJzZUZsb2F0KHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlsZXRpbWUnOiBjYXNlICdkYXRlJzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSBwYXJzZURhdGUodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdjeSc6IGNhc2UgJ2Vycm9yJzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSB1bmVzY2FwZXhtbCh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRpZih0eXBlLnNsaWNlKC0xKSA9PSAnLycpIGJyZWFrO1xuXHRcdFx0XHRcdFx0aWYob3B0cy5XVEYgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSBjb25zb2xlLndhcm4oJ1VuZXhwZWN0ZWQnLCB4LCB0eXBlLCB0b2tzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmKHguc2xpY2UoMCwyKSA9PT0gXCI8L1wiKSB7LyogZW1wdHkgKi9cblx0XHRcdH0gZWxzZSBpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKHgpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY3VzdF9wcm9wcyhjcC8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnUHJvcGVydGllcycsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOUy5DVVNUX1BST1BTLFxuXHRcdCd4bWxuczp2dCc6IFhNTE5TLnZ0XG5cdH0pXTtcblx0aWYoIWNwKSByZXR1cm4gby5qb2luKFwiXCIpO1xuXHR2YXIgcGlkID0gMTtcblx0a2V5cyhjcCkuZm9yRWFjaChmdW5jdGlvbiBjdXN0cHJvcChrKSB7ICsrcGlkO1xuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygncHJvcGVydHknLCB3cml0ZV92dChjcFtrXSwgdHJ1ZSksIHtcblx0XHRcdCdmbXRpZCc6ICd7RDVDREQ1MDUtMkU5Qy0xMDFCLTkzOTctMDgwMDJCMkNGOUFFfScsXG5cdFx0XHQncGlkJzogcGlkLFxuXHRcdFx0J25hbWUnOiBlc2NhcGV4bWwoaylcblx0XHR9KSk7XG5cdH0pO1xuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAnPC9Qcm9wZXJ0aWVzPic7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIENvbW1vbiBOYW1lIC0+IFhMTUwgTmFtZSAqL1xudmFyIFhMTUxEb2NQcm9wc01hcCA9IHtcblx0VGl0bGU6ICdUaXRsZScsXG5cdFN1YmplY3Q6ICdTdWJqZWN0Jyxcblx0QXV0aG9yOiAnQXV0aG9yJyxcblx0S2V5d29yZHM6ICdLZXl3b3JkcycsXG5cdENvbW1lbnRzOiAnRGVzY3JpcHRpb24nLFxuXHRMYXN0QXV0aG9yOiAnTGFzdEF1dGhvcicsXG5cdFJldk51bWJlcjogJ1JldmlzaW9uJyxcblx0QXBwbGljYXRpb246ICdBcHBOYW1lJyxcblx0LyogVG90YWxUaW1lOiAnVG90YWxUaW1lJywgKi9cblx0TGFzdFByaW50ZWQ6ICdMYXN0UHJpbnRlZCcsXG5cdENyZWF0ZWREYXRlOiAnQ3JlYXRlZCcsXG5cdE1vZGlmaWVkRGF0ZTogJ0xhc3RTYXZlZCcsXG5cdC8qIFBhZ2VzICovXG5cdC8qIFdvcmRzICovXG5cdC8qIENoYXJhY3RlcnMgKi9cblx0Q2F0ZWdvcnk6ICdDYXRlZ29yeScsXG5cdC8qIFByZXNlbnRhdGlvbkZvcm1hdCAqL1xuXHRNYW5hZ2VyOiAnTWFuYWdlcicsXG5cdENvbXBhbnk6ICdDb21wYW55Jyxcblx0LyogR3VpZCAqL1xuXHQvKiBIeXBlcmxpbmtCYXNlICovXG5cdC8qIEJ5dGVzICovXG5cdC8qIExpbmVzICovXG5cdC8qIFBhcmFncmFwaHMgKi9cblx0LyogQ2hhcmFjdGVyc1dpdGhTcGFjZXMgKi9cblx0QXBwVmVyc2lvbjogJ1ZlcnNpb24nLFxuXG5cdENvbnRlbnRTdGF0dXM6ICdDb250ZW50U3RhdHVzJywgLyogTk9URTogbWlzc2luZyBmcm9tIHNjaGVtYSAqL1xuXHRJZGVudGlmaWVyOiAnSWRlbnRpZmllcicsIC8qIE5PVEU6IG1pc3NpbmcgZnJvbSBzY2hlbWEgKi9cblx0TGFuZ3VhZ2U6ICdMYW5ndWFnZScgLyogTk9URTogbWlzc2luZyBmcm9tIHNjaGVtYSAqL1xufTtcbnZhciBldmVydF9YTE1MRFBNO1xuXG5mdW5jdGlvbiB4bG1sX3NldF9wcm9wKFByb3BzLCB0YWcvKjpzdHJpbmcqLywgdmFsKSB7XG5cdGlmKCFldmVydF9YTE1MRFBNKSBldmVydF9YTE1MRFBNID0gZXZlcnQoWExNTERvY1Byb3BzTWFwKTtcblx0dGFnID0gZXZlcnRfWExNTERQTVt0YWddIHx8IHRhZztcblx0UHJvcHNbdGFnXSA9IHZhbDtcbn1cblxuZnVuY3Rpb24geGxtbF93cml0ZV9kb2Nwcm9wcyhQcm9wcywgb3B0cykge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRrZXlzKFhMTUxEb2NQcm9wc01hcCkubWFwKGZ1bmN0aW9uKG0pIHtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgQ09SRV9QUk9QUy5sZW5ndGg7ICsraSkgaWYoQ09SRV9QUk9QU1tpXVsxXSA9PSBtKSByZXR1cm4gQ09SRV9QUk9QU1tpXTtcblx0XHRmb3IoaSA9IDA7IGkgPCBFWFRfUFJPUFMubGVuZ3RoOyArK2kpIGlmKEVYVF9QUk9QU1tpXVsxXSA9PSBtKSByZXR1cm4gRVhUX1BST1BTW2ldO1xuXHRcdHRocm93IG07XG5cdH0pLmZvckVhY2goZnVuY3Rpb24ocCkge1xuXHRcdGlmKFByb3BzW3BbMV1dID09IG51bGwpIHJldHVybjtcblx0XHR2YXIgbSA9IG9wdHMgJiYgb3B0cy5Qcm9wcyAmJiBvcHRzLlByb3BzW3BbMV1dICE9IG51bGwgPyBvcHRzLlByb3BzW3BbMV1dIDogUHJvcHNbcFsxXV07XG5cdFx0c3dpdGNoKHBbMl0pIHtcblx0XHRcdGNhc2UgJ2RhdGUnOiBtID0gbmV3IERhdGUobSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQqWi8sXCJaXCIpOyBicmVhaztcblx0XHR9XG5cdFx0aWYodHlwZW9mIG0gPT0gJ251bWJlcicpIG0gPSBTdHJpbmcobSk7XG5cdFx0ZWxzZSBpZihtID09PSB0cnVlIHx8IG0gPT09IGZhbHNlKSB7IG0gPSBtID8gXCIxXCIgOiBcIjBcIjsgfVxuXHRcdGVsc2UgaWYobSBpbnN0YW5jZW9mIERhdGUpIG0gPSBuZXcgRGF0ZShtKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1xcLlxcZCpaLyxcIlwiKTtcblx0XHRvLnB1c2god3JpdGV0YWcoWExNTERvY1Byb3BzTWFwW3BbMV1dIHx8IHBbMV0sIG0pKTtcblx0fSk7XG5cdHJldHVybiB3cml0ZXh0YWcoJ0RvY3VtZW50UHJvcGVydGllcycsIG8uam9pbihcIlwiKSwge3htbG5zOlhMTUxOUy5vIH0pO1xufVxuZnVuY3Rpb24geGxtbF93cml0ZV9jdXN0cHJvcHMoUHJvcHMsIEN1c3Rwcm9wcy8qOjosIG9wdHMqLykge1xuXHR2YXIgQkxBQ0tMSVNUID0gW1wiV29ya3NoZWV0c1wiLFwiU2hlZXROYW1lc1wiXTtcblx0dmFyIFQgPSAnQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzJztcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0aWYoUHJvcHMpIGtleXMoUHJvcHMpLmZvckVhY2goZnVuY3Rpb24oaykge1xuXHRcdC8qOjogaWYoIVByb3BzKSByZXR1cm47ICovXG5cdFx0aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChQcm9wcywgaykpIHJldHVybjtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgQ09SRV9QUk9QUy5sZW5ndGg7ICsraSkgaWYoayA9PSBDT1JFX1BST1BTW2ldWzFdKSByZXR1cm47XG5cdFx0Zm9yKGkgPSAwOyBpIDwgRVhUX1BST1BTLmxlbmd0aDsgKytpKSBpZihrID09IEVYVF9QUk9QU1tpXVsxXSkgcmV0dXJuO1xuXHRcdGZvcihpID0gMDsgaSA8IEJMQUNLTElTVC5sZW5ndGg7ICsraSkgaWYoayA9PSBCTEFDS0xJU1RbaV0pIHJldHVybjtcblxuXHRcdHZhciBtID0gUHJvcHNba107XG5cdFx0dmFyIHQgPSBcInN0cmluZ1wiO1xuXHRcdGlmKHR5cGVvZiBtID09ICdudW1iZXInKSB7IHQgPSBcImZsb2F0XCI7IG0gPSBTdHJpbmcobSk7IH1cblx0XHRlbHNlIGlmKG0gPT09IHRydWUgfHwgbSA9PT0gZmFsc2UpIHsgdCA9IFwiYm9vbGVhblwiOyBtID0gbSA/IFwiMVwiIDogXCIwXCI7IH1cblx0XHRlbHNlIG0gPSBTdHJpbmcobSk7XG5cdFx0by5wdXNoKHdyaXRleHRhZyhlc2NhcGV4bWx0YWcoayksIG0sIHtcImR0OmR0XCI6dH0pKTtcblx0fSk7XG5cdGlmKEN1c3Rwcm9wcykga2V5cyhDdXN0cHJvcHMpLmZvckVhY2goZnVuY3Rpb24oaykge1xuXHRcdC8qOjogaWYoIUN1c3Rwcm9wcykgcmV0dXJuOyAqL1xuXHRcdGlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoQ3VzdHByb3BzLCBrKSkgcmV0dXJuO1xuXHRcdGlmKFByb3BzICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChQcm9wcywgaykpIHJldHVybjtcblx0XHR2YXIgbSA9IEN1c3Rwcm9wc1trXTtcblx0XHR2YXIgdCA9IFwic3RyaW5nXCI7XG5cdFx0aWYodHlwZW9mIG0gPT0gJ251bWJlcicpIHsgdCA9IFwiZmxvYXRcIjsgbSA9IFN0cmluZyhtKTsgfVxuXHRcdGVsc2UgaWYobSA9PT0gdHJ1ZSB8fCBtID09PSBmYWxzZSkgeyB0ID0gXCJib29sZWFuXCI7IG0gPSBtID8gXCIxXCIgOiBcIjBcIjsgfVxuXHRcdGVsc2UgaWYobSBpbnN0YW5jZW9mIERhdGUpIHsgdCA9IFwiZGF0ZVRpbWUudHpcIjsgbSA9IG0udG9JU09TdHJpbmcoKTsgfVxuXHRcdGVsc2UgbSA9IFN0cmluZyhtKTtcblx0XHRvLnB1c2god3JpdGV4dGFnKGVzY2FwZXhtbHRhZyhrKSwgbSwge1wiZHQ6ZHRcIjp0fSkpO1xuXHR9KTtcblx0cmV0dXJuICc8JyArIFQgKyAnIHhtbG5zPVwiJyArIFhMTUxOUy5vICsgJ1wiPicgKyBvLmpvaW4oXCJcIikgKyAnPC8nICsgVCArICc+Jztcbn1cbi8qIFtNUy1EVFlQXSAyLjMuMyBGSUxFVElNRSAqL1xuLyogW01TLU9MRURTXSAyLjEuMyBGSUxFVElNRSAoUGFja2V0IFZlcnNpb24pICovXG4vKiBbTVMtT0xFUFNdIDIuOCBGSUxFVElNRSAoUGFja2V0IFZlcnNpb24pICovXG5mdW5jdGlvbiBwYXJzZV9GSUxFVElNRShibG9iKSB7XG5cdHZhciBkd0xvd0RhdGVUaW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpLCBkd0hpZ2hEYXRlVGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIG5ldyBEYXRlKCgoZHdIaWdoRGF0ZVRpbWUvMWU3Kk1hdGgucG93KDIsMzIpICsgZHdMb3dEYXRlVGltZS8xZTcpIC0gMTE2NDQ0NzM2MDApKjEwMDApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuMDAwLyxcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0ZJTEVUSU1FKHRpbWUvKjpzdHJpbmd8RGF0ZSovKSB7XG5cdHZhciBkYXRlID0gKHR5cGVvZiB0aW1lID09IFwic3RyaW5nXCIpID8gbmV3IERhdGUoRGF0ZS5wYXJzZSh0aW1lKSkgOiB0aW1lO1xuXHR2YXIgdCA9IGRhdGUuZ2V0VGltZSgpIC8gMTAwMCArIDExNjQ0NDczNjAwO1xuXHR2YXIgbCA9IHQgJSBNYXRoLnBvdygyLDMyKSwgaCA9ICh0IC0gbCkgLyBNYXRoLnBvdygyLDMyKTtcblx0bCAqPSAxZTc7IGggKj0gMWU3O1xuXHR2YXIgdyA9IChsIC8gTWF0aC5wb3coMiwzMikpIHwgMDtcblx0aWYodyA+IDApIHsgbCA9IGwgJSBNYXRoLnBvdygyLDMyKTsgaCArPSB3OyB9XG5cdHZhciBvID0gbmV3X2J1Zig4KTsgby53cml0ZV9zaGlmdCg0LCBsKTsgby53cml0ZV9zaGlmdCg0LCBoKTsgcmV0dXJuIG87XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjQgTHBzdHIgKi9cbmZ1bmN0aW9uIHBhcnNlX2xwc3RyKGJsb2IsIHR5cGUsIHBhZC8qOj9udW1iZXIqLykge1xuXHR2YXIgc3RhcnQgPSBibG9iLmw7XG5cdHZhciBzdHIgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwc3RyLWNwJyk7XG5cdGlmKHBhZCkgd2hpbGUoKGJsb2IubCAtIHN0YXJ0KSAmIDMpICsrYmxvYi5sO1xuXHRyZXR1cm4gc3RyO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS42IExwd3N0ciAqL1xuZnVuY3Rpb24gcGFyc2VfbHB3c3RyKGJsb2IsIHR5cGUsIHBhZCkge1xuXHR2YXIgc3RyID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHdzdHInKTtcblx0aWYocGFkKSBibG9iLmwgKz0gKDQgLSAoKHN0ci5sZW5ndGgrMSkgJiAzKSkgJiAzO1xuXHRyZXR1cm4gc3RyO1xufVxuXG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjExIFZ0U3RyaW5nICovXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xMiBWdFVuYWxpZ25lZFN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfVnRTdHJpbmdCYXNlKGJsb2IsIHN0cmluZ1R5cGUsIHBhZCkge1xuXHRpZihzdHJpbmdUeXBlID09PSAweDFGIC8qVlRfTFBXU1RSKi8pIHJldHVybiBwYXJzZV9scHdzdHIoYmxvYik7XG5cdHJldHVybiBwYXJzZV9scHN0cihibG9iLCBzdHJpbmdUeXBlLCBwYWQpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9WdFN0cmluZyhibG9iLCB0Lyo6bnVtYmVyKi8sIHBhZC8qOj9ib29sZWFuKi8pIHsgcmV0dXJuIHBhcnNlX1Z0U3RyaW5nQmFzZShibG9iLCB0LCBwYWQgPT09IGZhbHNlID8gMDogNCk7IH1cbmZ1bmN0aW9uIHBhcnNlX1Z0VW5hbGlnbmVkU3RyaW5nKGJsb2IsIHQvKjpudW1iZXIqLykgeyBpZighdCkgdGhyb3cgbmV3IEVycm9yKFwiVnRVbmFsaWduZWRTdHJpbmcgbXVzdCBoYXZlIHBvc2l0aXZlIGxlbmd0aFwiKTsgcmV0dXJuIHBhcnNlX1Z0U3RyaW5nQmFzZShibG9iLCB0LCAwKTsgfVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS43IFZ0VmVjTHB3c3RyVmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0VmVjTHB3c3RyVmFsdWUoYmxvYikvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgbGVuZ3RoID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgcmV0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgc3RhcnQgPSBibG9iLmw7XG5cdFx0cmV0W2ldID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHdzdHInKS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGlmKChibG9iLmwgLSBzdGFydCkgJiAweDAyKSBibG9iLmwgKz0gMjtcblx0fVxuXHRyZXR1cm4gcmV0O1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS45IFZ0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZSAqL1xuZnVuY3Rpb24gcGFyc2VfVnRWZWNVbmFsaWduZWRMcHN0clZhbHVlKGJsb2IpLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIGxlbmd0aCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJldC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSByZXRbaV0gPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwc3RyLWNwJykucmVwbGFjZShjaHIwLCcnKTtcblx0cmV0dXJuIHJldDtcbn1cblxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xMyBWdEhlYWRpbmdQYWlyICovXG5mdW5jdGlvbiBwYXJzZV9WdEhlYWRpbmdQYWlyKGJsb2IpIHtcblx0dmFyIHN0YXJ0ID0gYmxvYi5sO1xuXHR2YXIgaGVhZGluZ1N0cmluZyA9IHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCBWVF9VU1RSKTtcblx0aWYoYmxvYltibG9iLmxdID09IDB4MDAgJiYgYmxvYltibG9iLmwrMV0gPT0gMHgwMCAmJiAoKGJsb2IubCAtIHN0YXJ0KSAmIDB4MDIpKSBibG9iLmwgKz0gMjtcblx0dmFyIGhlYWRlclBhcnRzID0gcGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIFZUX0k0KTtcblx0cmV0dXJuIFtoZWFkaW5nU3RyaW5nLCBoZWFkZXJQYXJ0c107XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjE0IFZ0VmVjSGVhZGluZ1BhaXJWYWx1ZSAqL1xuZnVuY3Rpb24gcGFyc2VfVnRWZWNIZWFkaW5nUGFpclZhbHVlKGJsb2IpIHtcblx0dmFyIGNFbGVtZW50cyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIG91dCA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgY0VsZW1lbnRzIC8gMjsgKytpKSBvdXQucHVzaChwYXJzZV9WdEhlYWRpbmdQYWlyKGJsb2IpKTtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLU9MRVBTXSAyLjE4LjEgRGljdGlvbmFyeSAodXNlcyAyLjE3LCAyLjE2KSAqL1xuZnVuY3Rpb24gcGFyc2VfZGljdGlvbmFyeShibG9iLENvZGVQYWdlKSB7XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBkaWN0Lyo6e1tudW1iZXJdOnN0cmluZ30qLyA9ICh7fS8qOmFueSovKTtcblx0Zm9yKHZhciBqID0gMDsgaiAhPSBjbnQ7ICsraikge1xuXHRcdHZhciBwaWQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRkaWN0W3BpZF0gPSBibG9iLnJlYWRfc2hpZnQobGVuLCAoQ29kZVBhZ2UgPT09IDB4NEIwID8ndXRmMTZsZSc6J3V0ZjgnKSkucmVwbGFjZShjaHIwLCcnKS5yZXBsYWNlKGNocjEsJyEnKTtcblx0XHRpZihDb2RlUGFnZSA9PT0gMHg0QjAgJiYgKGxlbiAlIDIpKSBibG9iLmwgKz0gMjtcblx0fVxuXHRpZihibG9iLmwgJiAzKSBibG9iLmwgPSAoYmxvYi5sPj4yKzEpPDwyO1xuXHRyZXR1cm4gZGljdDtcbn1cblxuLyogW01TLU9MRVBTXSAyLjkgQkxPQiAqL1xuZnVuY3Rpb24gcGFyc2VfQkxPQihibG9iKSB7XG5cdHZhciBzaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgYnl0ZXMgPSBibG9iLnNsaWNlKGJsb2IubCxibG9iLmwrc2l6ZSk7XG5cdGJsb2IubCArPSBzaXplO1xuXHRpZigoc2l6ZSAmIDMpID4gMCkgYmxvYi5sICs9ICg0IC0gKHNpemUgJiAzKSkgJiAzO1xuXHRyZXR1cm4gYnl0ZXM7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4xMSBDbGlwYm9hcmREYXRhICovXG5mdW5jdGlvbiBwYXJzZV9DbGlwYm9hcmREYXRhKGJsb2IpIHtcblx0Ly8gVE9ET1xuXHR2YXIgbyA9IHt9O1xuXHRvLlNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdC8vby5Gb3JtYXQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGJsb2IubCArPSBvLlNpemUgKyAzIC0gKG8uU2l6ZSAtIDEpICUgNDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PTEVQU10gMi4xNSBUeXBlZFByb3BlcnR5VmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCB0eXBlLyo6bnVtYmVyKi8sIF9vcHRzKS8qOmFueSovIHtcblx0dmFyIHQgPSBibG9iLnJlYWRfc2hpZnQoMiksIHJldCwgb3B0cyA9IF9vcHRzfHx7fTtcblx0YmxvYi5sICs9IDI7XG5cdGlmKHR5cGUgIT09IFZUX1ZBUklBTlQpXG5cdGlmKHQgIT09IHR5cGUgJiYgVlRfQ1VTVE9NLmluZGV4T2YodHlwZSk9PT0tMSAmJiAhKCh0eXBlICYgMHhGRkZFKSA9PSAweDEwMUUgJiYgKHQgJiAweEZGRkUpID09IDB4MTAxRSkpIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdHlwZSAnICsgdHlwZSArICcgc2F3ICcgKyB0KTtcblx0c3dpdGNoKHR5cGUgPT09IFZUX1ZBUklBTlQgPyB0IDogdHlwZSkge1xuXHRcdGNhc2UgMHgwMiAvKlZUX0kyKi86IHJldCA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpOyBpZighb3B0cy5yYXcpIGJsb2IubCArPSAyOyByZXR1cm4gcmV0O1xuXHRcdGNhc2UgMHgwMyAvKlZUX0k0Ki86IHJldCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpOyByZXR1cm4gcmV0O1xuXHRcdGNhc2UgMHgwQiAvKlZUX0JPT0wqLzogcmV0dXJuIGJsb2IucmVhZF9zaGlmdCg0KSAhPT0gMHgwO1xuXHRcdGNhc2UgMHgxMyAvKlZUX1VJNCovOiByZXQgPSBibG9iLnJlYWRfc2hpZnQoNCk7IHJldHVybiByZXQ7XG5cdFx0Y2FzZSAweDFFIC8qVlRfTFBTVFIqLzogcmV0dXJuIHBhcnNlX2xwc3RyKGJsb2IsIHQsIDQpLnJlcGxhY2UoY2hyMCwnJyk7XG5cdFx0Y2FzZSAweDFGIC8qVlRfTFBXU1RSKi86IHJldHVybiBwYXJzZV9scHdzdHIoYmxvYik7XG5cdFx0Y2FzZSAweDQwIC8qVlRfRklMRVRJTUUqLzogcmV0dXJuIHBhcnNlX0ZJTEVUSU1FKGJsb2IpO1xuXHRcdGNhc2UgMHg0MSAvKlZUX0JMT0IqLzogcmV0dXJuIHBhcnNlX0JMT0IoYmxvYik7XG5cdFx0Y2FzZSAweDQ3IC8qVlRfQ0YqLzogcmV0dXJuIHBhcnNlX0NsaXBib2FyZERhdGEoYmxvYik7XG5cdFx0Y2FzZSAweDUwIC8qVlRfU1RSSU5HKi86IHJldHVybiBwYXJzZV9WdFN0cmluZyhibG9iLCB0LCAhb3B0cy5yYXcpLnJlcGxhY2UoY2hyMCwnJyk7XG5cdFx0Y2FzZSAweDUxIC8qVlRfVVNUUiovOiByZXR1cm4gcGFyc2VfVnRVbmFsaWduZWRTdHJpbmcoYmxvYiwgdC8qLCA0Ki8pLnJlcGxhY2UoY2hyMCwnJyk7XG5cdFx0Y2FzZSAweDEwMEMgLypWVF9WRUNUT1J8VlRfVkFSSUFOVCovOiByZXR1cm4gcGFyc2VfVnRWZWNIZWFkaW5nUGFpclZhbHVlKGJsb2IpO1xuXHRcdGNhc2UgMHgxMDFFIC8qVlRfVkVDVE9SfFZUX0xQU1RSKi86XG5cdFx0Y2FzZSAweDEwMUYgLypWVF9WRUNUT1J8VlRfTFBXU1RSKi86XG5cdFx0XHRyZXR1cm4gdCA9PSAweDEwMUYgPyBwYXJzZV9WdFZlY0xwd3N0clZhbHVlKGJsb2IpIDogcGFyc2VfVnRWZWNVbmFsaWduZWRMcHN0clZhbHVlKGJsb2IpO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSBcIiArIHR5cGUgKyBcIiBcIiArIHQpO1xuXHR9XG59XG5mdW5jdGlvbiB3cml0ZV9UeXBlZFByb3BlcnR5VmFsdWUodHlwZS8qOm51bWJlciovLCB2YWx1ZSkge1xuXHR2YXIgbyA9IG5ld19idWYoNCksIHAgPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHR5cGUgPT0gMHg1MCA/IDB4MUYgOiB0eXBlKTtcblx0c3dpdGNoKHR5cGUpIHtcblx0XHRjYXNlIDB4MDMgLypWVF9JNCovOiBwLndyaXRlX3NoaWZ0KC00LCB2YWx1ZSk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwNSAvKlZUX0k0Ki86IHAgPSBuZXdfYnVmKDgpOyBwLndyaXRlX3NoaWZ0KDgsIHZhbHVlLCAnZicpOyBicmVhaztcblx0XHRjYXNlIDB4MEIgLypWVF9CT09MKi86IHAud3JpdGVfc2hpZnQoNCwgdmFsdWUgPyAweDAxIDogMHgwMCk7IGJyZWFrO1xuXHRcdGNhc2UgMHg0MCAvKlZUX0ZJTEVUSU1FKi86IC8qOjogaWYodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqLyBwID0gd3JpdGVfRklMRVRJTUUodmFsdWUpOyBicmVhaztcblx0XHRjYXNlIDB4MUYgLypWVF9MUFdTVFIqLzpcblx0XHRjYXNlIDB4NTAgLypWVF9TVFJJTkcqLzpcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRwID0gbmV3X2J1Zig0ICsgMiAqICh2YWx1ZS5sZW5ndGggKyAxKSArICh2YWx1ZS5sZW5ndGggJSAyID8gMCA6IDIpKTtcblx0XHRcdHAud3JpdGVfc2hpZnQoNCwgdmFsdWUubGVuZ3RoICsgMSk7XG5cdFx0XHRwLndyaXRlX3NoaWZ0KDAsIHZhbHVlLCBcImRiY3NcIik7XG5cdFx0XHR3aGlsZShwLmwgIT0gcC5sZW5ndGgpIHAud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgXCIgKyB0eXBlICsgXCIgXCIgKyB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGJjb25jYXQoW28sIHBdKTtcbn1cblxuLyogW01TLU9MRVBTXSAyLjIwIFByb3BlcnR5U2V0ICovXG5mdW5jdGlvbiBwYXJzZV9Qcm9wZXJ0eVNldChibG9iLCBQSURTSSkge1xuXHR2YXIgc3RhcnRfYWRkciA9IGJsb2IubDtcblx0dmFyIHNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBOdW1Qcm9wcyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIFByb3BzID0gW10sIGkgPSAwO1xuXHR2YXIgQ29kZVBhZ2UgPSAwO1xuXHR2YXIgRGljdGlvbmFyeSA9IC0xLCBEaWN0T2JqLyo6e1tudW1iZXJdOnN0cmluZ30qLyA9ICh7fS8qOmFueSovKTtcblx0Zm9yKGkgPSAwOyBpICE9IE51bVByb3BzOyArK2kpIHtcblx0XHR2YXIgUHJvcElEID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBPZmZzZXQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0UHJvcHNbaV0gPSBbUHJvcElELCBPZmZzZXQgKyBzdGFydF9hZGRyXTtcblx0fVxuXHRQcm9wcy5zb3J0KGZ1bmN0aW9uKHgseSkgeyByZXR1cm4geFsxXSAtIHlbMV07IH0pO1xuXHR2YXIgUHJvcEggPSB7fTtcblx0Zm9yKGkgPSAwOyBpICE9IE51bVByb3BzOyArK2kpIHtcblx0XHRpZihibG9iLmwgIT09IFByb3BzW2ldWzFdKSB7XG5cdFx0XHR2YXIgZmFpbCA9IHRydWU7XG5cdFx0XHRpZihpPjAgJiYgUElEU0kpIHN3aXRjaChQSURTSVtQcm9wc1tpLTFdWzBdXS50KSB7XG5cdFx0XHRcdGNhc2UgMHgwMiAvKlZUX0kyKi86IGlmKGJsb2IubCsyID09PSBQcm9wc1tpXVsxXSkgeyBibG9iLmwrPTI7IGZhaWwgPSBmYWxzZTsgfSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDUwIC8qVlRfU1RSSU5HKi86IGlmKGJsb2IubCA8PSBQcm9wc1tpXVsxXSkgeyBibG9iLmw9UHJvcHNbaV1bMV07IGZhaWwgPSBmYWxzZTsgfSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDEwMEMgLypWVF9WRUNUT1J8VlRfVkFSSUFOVCovOiBpZihibG9iLmwgPD0gUHJvcHNbaV1bMV0pIHsgYmxvYi5sPVByb3BzW2ldWzFdOyBmYWlsID0gZmFsc2U7IH0gYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZigoIVBJRFNJfHxpPT0wKSAmJiBibG9iLmwgPD0gUHJvcHNbaV1bMV0pIHsgZmFpbD1mYWxzZTsgYmxvYi5sID0gUHJvcHNbaV1bMV07IH1cblx0XHRcdGlmKGZhaWwpIHRocm93IG5ldyBFcnJvcihcIlJlYWQgRXJyb3I6IEV4cGVjdGVkIGFkZHJlc3MgXCIgKyBQcm9wc1tpXVsxXSArICcgYXQgJyArIGJsb2IubCArICcgOicgKyBpKTtcblx0XHR9XG5cdFx0aWYoUElEU0kpIHtcblx0XHRcdHZhciBwaWRkc2kgPSBQSURTSVtQcm9wc1tpXVswXV07XG5cdFx0XHRQcm9wSFtwaWRkc2kubl0gPSBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgcGlkZHNpLnQsIHtyYXc6dHJ1ZX0pO1xuXHRcdFx0aWYocGlkZHNpLnAgPT09ICd2ZXJzaW9uJykgUHJvcEhbcGlkZHNpLm5dID0gU3RyaW5nKFByb3BIW3BpZGRzaS5uXSA+PiAxNikgKyBcIi5cIiArIChcIjAwMDBcIiArIFN0cmluZyhQcm9wSFtwaWRkc2kubl0gJiAweEZGRkYpKS5zbGljZSgtNCk7XG5cdFx0XHRpZihwaWRkc2kubiA9PSBcIkNvZGVQYWdlXCIpIHN3aXRjaChQcm9wSFtwaWRkc2kubl0pIHtcblx0XHRcdFx0Y2FzZSAwOiBQcm9wSFtwaWRkc2kubl0gPSAxMjUyO1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSA4NzQ6XG5cdFx0XHRcdGNhc2UgOTMyOlxuXHRcdFx0XHRjYXNlIDkzNjpcblx0XHRcdFx0Y2FzZSA5NDk6XG5cdFx0XHRcdGNhc2UgOTUwOlxuXHRcdFx0XHRjYXNlIDEyNTA6XG5cdFx0XHRcdGNhc2UgMTI1MTpcblx0XHRcdFx0Y2FzZSAxMjUzOlxuXHRcdFx0XHRjYXNlIDEyNTQ6XG5cdFx0XHRcdGNhc2UgMTI1NTpcblx0XHRcdFx0Y2FzZSAxMjU2OlxuXHRcdFx0XHRjYXNlIDEyNTc6XG5cdFx0XHRcdGNhc2UgMTI1ODpcblx0XHRcdFx0Y2FzZSAxMDAwMDpcblx0XHRcdFx0Y2FzZSAxMjAwOlxuXHRcdFx0XHRjYXNlIDEyMDE6XG5cdFx0XHRcdGNhc2UgMTI1Mjpcblx0XHRcdFx0Y2FzZSA2NTAwMDogY2FzZSAtNTM2OlxuXHRcdFx0XHRjYXNlIDY1MDAxOiBjYXNlIC01MzU6XG5cdFx0XHRcdFx0c2V0X2NwKENvZGVQYWdlID0gKFByb3BIW3BpZGRzaS5uXT4+PjApICYgMHhGRkZGKTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIENvZGVQYWdlOiBcIiArIFByb3BIW3BpZGRzaS5uXSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmKFByb3BzW2ldWzBdID09PSAweDEpIHtcblx0XHRcdFx0Q29kZVBhZ2UgPSBQcm9wSC5Db2RlUGFnZSA9IChwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgVlRfSTIpLyo6bnVtYmVyKi8pO1xuXHRcdFx0XHRzZXRfY3AoQ29kZVBhZ2UpO1xuXHRcdFx0XHRpZihEaWN0aW9uYXJ5ICE9PSAtMSkge1xuXHRcdFx0XHRcdHZhciBvbGRwb3MgPSBibG9iLmw7XG5cdFx0XHRcdFx0YmxvYi5sID0gUHJvcHNbRGljdGlvbmFyeV1bMV07XG5cdFx0XHRcdFx0RGljdE9iaiA9IHBhcnNlX2RpY3Rpb25hcnkoYmxvYixDb2RlUGFnZSk7XG5cdFx0XHRcdFx0YmxvYi5sID0gb2xkcG9zO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYoUHJvcHNbaV1bMF0gPT09IDApIHtcblx0XHRcdFx0aWYoQ29kZVBhZ2UgPT09IDApIHsgRGljdGlvbmFyeSA9IGk7IGJsb2IubCA9IFByb3BzW2krMV1bMV07IGNvbnRpbnVlOyB9XG5cdFx0XHRcdERpY3RPYmogPSBwYXJzZV9kaWN0aW9uYXJ5KGJsb2IsQ29kZVBhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIG5hbWUgPSBEaWN0T2JqW1Byb3BzW2ldWzBdXTtcblx0XHRcdFx0dmFyIHZhbDtcblx0XHRcdFx0LyogW01TLU9TSEFSRURdIDIuMy4zLjIuMy4xLjIgKyBQUk9QVkFSSUFOVCAqL1xuXHRcdFx0XHRzd2l0Y2goYmxvYltibG9iLmxdKSB7XG5cdFx0XHRcdFx0Y2FzZSAweDQxIC8qVlRfQkxPQiovOiBibG9iLmwgKz0gNDsgdmFsID0gcGFyc2VfQkxPQihibG9iKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDFFIC8qVlRfTFBTVFIqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlX1Z0U3RyaW5nKGJsb2IsIGJsb2JbYmxvYi5sLTRdKS5yZXBsYWNlKC9cXHUwMDAwKyQvLFwiXCIpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MUYgLypWVF9MUFdTVFIqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlX1Z0U3RyaW5nKGJsb2IsIGJsb2JbYmxvYi5sLTRdKS5yZXBsYWNlKC9cXHUwMDAwKyQvLFwiXCIpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MDMgLypWVF9JNCovOiBibG9iLmwgKz0gNDsgdmFsID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgxMyAvKlZUX1VJNCovOiBibG9iLmwgKz0gNDsgdmFsID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MDUgLypWVF9SOCovOiBibG9iLmwgKz0gNDsgdmFsID0gYmxvYi5yZWFkX3NoaWZ0KDgsICdmJyk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgwQiAvKlZUX0JPT0wqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlYm9vbChibG9iLCA0KTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDQwIC8qVlRfRklMRVRJTUUqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlRGF0ZShwYXJzZV9GSUxFVElNRShibG9iKSk7IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcInVucGFyc2VkIHZhbHVlOiBcIiArIGJsb2JbYmxvYi5sXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0UHJvcEhbbmFtZV0gPSB2YWw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGJsb2IubCA9IHN0YXJ0X2FkZHIgKyBzaXplOyAvKiBzdGVwIGFoZWFkIHRvIHNraXAgcGFkZGluZyAqL1xuXHRyZXR1cm4gUHJvcEg7XG59XG52YXIgWExTUFNTa2lwID0gWyBcIkNvZGVQYWdlXCIsIFwiVGh1bWJuYWlsXCIsIFwiX1BJRF9MSU5LQkFTRVwiLCBcIl9QSURfSExJTktTXCIsIFwiU3lzdGVtSWRlbnRpZmllclwiLCBcIkZNVElEXCIgXTsgLy8uY29uY2F0KFBzZXVkb1Byb3BzUGFpcnMpO1xuZnVuY3Rpb24gZ3Vlc3NfcHJvcGVydHlfdHlwZSh2YWwvKjphbnkqLykvKjpudW1iZXIqLyB7XG5cdHN3aXRjaCh0eXBlb2YgdmFsKSB7XG5cdFx0Y2FzZSBcImJvb2xlYW5cIjogcmV0dXJuIDB4MEI7XG5cdFx0Y2FzZSBcIm51bWJlclwiOiByZXR1cm4gKCh2YWx8MCk9PXZhbCkgPyAweDAzIDogMHgwNTtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHJldHVybiAweDFGO1xuXHRcdGNhc2UgXCJvYmplY3RcIjogaWYodmFsIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIDB4NDA7IGJyZWFrO1xuXHR9XG5cdHJldHVybiAtMTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1Byb3BlcnR5U2V0KGVudHJpZXMsIFJFLCBQSURTSSkge1xuXHR2YXIgaGRyID0gbmV3X2J1Zig4KSwgcGlhbyA9IFtdLCBwcm9wID0gW107XG5cdHZhciBzeiA9IDgsIGkgPSAwO1xuXG5cdHZhciBwciA9IG5ld19idWYoOCksIHBpbyA9IG5ld19idWYoOCk7XG5cdHByLndyaXRlX3NoaWZ0KDQsIDB4MDAwMik7XG5cdHByLndyaXRlX3NoaWZ0KDQsIDB4MDRCMCk7XG5cdHBpby53cml0ZV9zaGlmdCg0LCAweDAwMDEpO1xuXHRwcm9wLnB1c2gocHIpOyBwaWFvLnB1c2gocGlvKTtcblx0c3ogKz0gOCArIHByLmxlbmd0aDtcblxuXHRpZighUkUpIHtcblx0XHRwaW8gPSBuZXdfYnVmKDgpO1xuXHRcdHBpby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRwaWFvLnVuc2hpZnQocGlvKTtcblxuXHRcdHZhciBidWZzID0gW25ld19idWYoNCldO1xuXHRcdGJ1ZnNbMF0ud3JpdGVfc2hpZnQoNCwgZW50cmllcy5sZW5ndGgpO1xuXHRcdGZvcihpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciB2YWx1ZSA9IGVudHJpZXNbaV1bMF07XG5cdFx0XHRwciA9IG5ld19idWYoNCArIDQgKyAyICogKHZhbHVlLmxlbmd0aCArIDEpICsgKHZhbHVlLmxlbmd0aCAlIDIgPyAwIDogMikpO1xuXHRcdFx0cHIud3JpdGVfc2hpZnQoNCwgaSsyKTtcblx0XHRcdHByLndyaXRlX3NoaWZ0KDQsIHZhbHVlLmxlbmd0aCArIDEpO1xuXHRcdFx0cHIud3JpdGVfc2hpZnQoMCwgdmFsdWUsIFwiZGJjc1wiKTtcblx0XHRcdHdoaWxlKHByLmwgIT0gcHIubGVuZ3RoKSBwci53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRcdGJ1ZnMucHVzaChwcik7XG5cdFx0fVxuXHRcdHByID0gYmNvbmNhdChidWZzKTtcblx0XHRwcm9wLnVuc2hpZnQocHIpO1xuXHRcdHN6ICs9IDggKyBwci5sZW5ndGg7XG5cdH1cblxuXHRmb3IoaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoUkUgJiYgIVJFW2VudHJpZXNbaV1bMF1dKSBjb250aW51ZTtcblx0XHRpZihYTFNQU1NraXAuaW5kZXhPZihlbnRyaWVzW2ldWzBdKSA+IC0xIHx8IFBzZXVkb1Byb3BzUGFpcnMuaW5kZXhPZihlbnRyaWVzW2ldWzBdKSA+IC0xKSBjb250aW51ZTtcblx0XHRpZihlbnRyaWVzW2ldWzFdID09IG51bGwpIGNvbnRpbnVlO1xuXG5cdFx0dmFyIHZhbCA9IGVudHJpZXNbaV1bMV0sIGlkeCA9IDA7XG5cdFx0aWYoUkUpIHtcblx0XHRcdGlkeCA9ICtSRVtlbnRyaWVzW2ldWzBdXTtcblx0XHRcdHZhciBwaW5mbyA9IChQSURTSS8qOjogfHwge30qLylbaWR4XS8qOjogfHwge30gKi87XG5cdFx0XHRpZihwaW5mby5wID09IFwidmVyc2lvblwiICYmIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdFx0dmFyIGFyciA9IHZhbC5zcGxpdChcIi5cIik7XG5cdFx0XHRcdHZhbCA9ICgoK2FyclswXSk8PDE2KSArICgoK2FyclsxXSl8fDApO1xuXHRcdFx0fVxuXHRcdFx0cHIgPSB3cml0ZV9UeXBlZFByb3BlcnR5VmFsdWUocGluZm8udCwgdmFsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFyIFQgPSBndWVzc19wcm9wZXJ0eV90eXBlKHZhbCk7XG5cdFx0XHRpZihUID09IC0xKSB7IFQgPSAweDFGOyB2YWwgPSBTdHJpbmcodmFsKTsgfVxuXHRcdFx0cHIgPSB3cml0ZV9UeXBlZFByb3BlcnR5VmFsdWUoVCwgdmFsKTtcblx0XHR9XG5cdFx0cHJvcC5wdXNoKHByKTtcblxuXHRcdHBpbyA9IG5ld19idWYoOCk7XG5cdFx0cGlvLndyaXRlX3NoaWZ0KDQsICFSRSA/IDIraSA6IGlkeCk7XG5cdFx0cGlhby5wdXNoKHBpbyk7XG5cblx0XHRzeiArPSA4ICsgcHIubGVuZ3RoO1xuXHR9XG5cblx0dmFyIHcgPSA4ICogKHByb3AubGVuZ3RoICsgMSk7XG5cdGZvcihpID0gMDsgaSA8IHByb3AubGVuZ3RoOyArK2kpIHsgcGlhb1tpXS53cml0ZV9zaGlmdCg0LCB3KTsgdyArPSBwcm9wW2ldLmxlbmd0aDsgfVxuXHRoZHIud3JpdGVfc2hpZnQoNCwgc3opO1xuXHRoZHIud3JpdGVfc2hpZnQoNCwgcHJvcC5sZW5ndGgpO1xuXHRyZXR1cm4gYmNvbmNhdChbaGRyXS5jb25jYXQocGlhbykuY29uY2F0KHByb3ApKTtcbn1cblxuLyogW01TLU9MRVBTXSAyLjIxIFByb3BlcnR5U2V0U3RyZWFtICovXG5mdW5jdGlvbiBwYXJzZV9Qcm9wZXJ0eVNldFN0cmVhbShmaWxlLCBQSURTSSwgY2xzaWQpIHtcblx0dmFyIGJsb2IgPSBmaWxlLmNvbnRlbnQ7XG5cdGlmKCFibG9iKSByZXR1cm4gKHt9Lyo6YW55Ki8pO1xuXHRwcmVwX2Jsb2IoYmxvYiwgMCk7XG5cblx0dmFyIE51bVNldHMsIEZNVElEMCwgRk1USUQxLCBPZmZzZXQwLCBPZmZzZXQxID0gMDtcblx0YmxvYi5jaGsoJ2ZlZmYnLCAnQnl0ZSBPcmRlcjogJyk7XG5cblx0Lyp2YXIgdmVycyA9ICovYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyBUT0RPOiBjaGVjayB2ZXJzaW9uXG5cdHZhciBTeXN0ZW1JZGVudGlmaWVyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgQ0xTSUQgPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRpZihDTFNJRCAhPT0gQ0ZCLnV0aWxzLmNvbnN0cy5IRUFERVJfQ0xTSUQgJiYgQ0xTSUQgIT09IGNsc2lkKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgUHJvcGVydHlTZXQgQ0xTSUQgXCIgKyBDTFNJRCk7XG5cdE51bVNldHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKE51bVNldHMgIT09IDEgJiYgTnVtU2V0cyAhPT0gMikgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkICNTZXRzOiBcIiArIE51bVNldHMpO1xuXHRGTVRJRDAgPSBibG9iLnJlYWRfc2hpZnQoMTYpOyBPZmZzZXQwID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXG5cdGlmKE51bVNldHMgPT09IDEgJiYgT2Zmc2V0MCAhPT0gYmxvYi5sKSB0aHJvdyBuZXcgRXJyb3IoXCJMZW5ndGggbWlzbWF0Y2g6IFwiICsgT2Zmc2V0MCArIFwiICE9PSBcIiArIGJsb2IubCk7XG5cdGVsc2UgaWYoTnVtU2V0cyA9PT0gMikgeyBGTVRJRDEgPSBibG9iLnJlYWRfc2hpZnQoMTYpOyBPZmZzZXQxID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyB9XG5cdHZhciBQU2V0MCA9IHBhcnNlX1Byb3BlcnR5U2V0KGJsb2IsIFBJRFNJKTtcblxuXHR2YXIgcnZhbCA9ICh7IFN5c3RlbUlkZW50aWZpZXI6IFN5c3RlbUlkZW50aWZpZXIgfS8qOmFueSovKTtcblx0Zm9yKHZhciB5IGluIFBTZXQwKSBydmFsW3ldID0gUFNldDBbeV07XG5cdC8vcnZhbC5ibG9iID0gYmxvYjtcblx0cnZhbC5GTVRJRCA9IEZNVElEMDtcblx0Ly9ydmFsLlBTZXQwID0gUFNldDA7XG5cdGlmKE51bVNldHMgPT09IDEpIHJldHVybiBydmFsO1xuXHRpZihPZmZzZXQxIC0gYmxvYi5sID09IDIpIGJsb2IubCArPSAyO1xuXHRpZihibG9iLmwgIT09IE9mZnNldDEpIHRocm93IG5ldyBFcnJvcihcIkxlbmd0aCBtaXNtYXRjaCAyOiBcIiArIGJsb2IubCArIFwiICE9PSBcIiArIE9mZnNldDEpO1xuXHR2YXIgUFNldDE7XG5cdHRyeSB7IFBTZXQxID0gcGFyc2VfUHJvcGVydHlTZXQoYmxvYiwgbnVsbCk7IH0gY2F0Y2goZSkgey8qIGVtcHR5ICovfVxuXHRmb3IoeSBpbiBQU2V0MSkgcnZhbFt5XSA9IFBTZXQxW3ldO1xuXHRydmFsLkZNVElEID0gW0ZNVElEMCwgRk1USUQxXTsgLy8gVE9ETzogdmVyaWZ5IEZNVElEMC8xXG5cdHJldHVybiBydmFsO1xufVxuZnVuY3Rpb24gd3JpdGVfUHJvcGVydHlTZXRTdHJlYW0oZW50cmllcywgY2xzaWQsIFJFLCBQSURTSS8qOntba2V5OnN0cmluZ3xudW1iZXJdOmFueX0qLywgZW50cmllczIvKjo/YW55Ki8sIGNsc2lkMi8qOj9hbnkqLykge1xuXHR2YXIgaGRyID0gbmV3X2J1ZihlbnRyaWVzMiA/IDY4IDogNDgpO1xuXHR2YXIgYnVmcyA9IFtoZHJdO1xuXHRoZHIud3JpdGVfc2hpZnQoMiwgMHhGRkZFKTtcblx0aGRyLndyaXRlX3NoaWZ0KDIsIDB4MDAwMCk7IC8qIFRPRE86IHR5cGUgMSBwcm9wcyAqL1xuXHRoZHIud3JpdGVfc2hpZnQoNCwgMHgzMjM2MzIzNyk7XG5cdGhkci53cml0ZV9zaGlmdCgxNiwgQ0ZCLnV0aWxzLmNvbnN0cy5IRUFERVJfQ0xTSUQsIFwiaGV4XCIpO1xuXHRoZHIud3JpdGVfc2hpZnQoNCwgKGVudHJpZXMyID8gMiA6IDEpKTtcblx0aGRyLndyaXRlX3NoaWZ0KDE2LCBjbHNpZCwgXCJoZXhcIik7XG5cdGhkci53cml0ZV9zaGlmdCg0LCAoZW50cmllczIgPyA2OCA6IDQ4KSk7XG5cdHZhciBwczAgPSB3cml0ZV9Qcm9wZXJ0eVNldChlbnRyaWVzLCBSRSwgUElEU0kpO1xuXHRidWZzLnB1c2gocHMwKTtcblxuXHRpZihlbnRyaWVzMikge1xuXHRcdHZhciBwczEgPSB3cml0ZV9Qcm9wZXJ0eVNldChlbnRyaWVzMiwgbnVsbCwgbnVsbCk7XG5cdFx0aGRyLndyaXRlX3NoaWZ0KDE2LCBjbHNpZDIsIFwiaGV4XCIpO1xuXHRcdGhkci53cml0ZV9zaGlmdCg0LCA2OCArIHBzMC5sZW5ndGgpO1xuXHRcdGJ1ZnMucHVzaChwczEpO1xuXHR9XG5cdHJldHVybiBiY29uY2F0KGJ1ZnMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZW5vb3AyKGJsb2IsIGxlbmd0aCkgeyBibG9iLnJlYWRfc2hpZnQobGVuZ3RoKTsgcmV0dXJuIG51bGw7IH1cbmZ1bmN0aW9uIHdyaXRlemVyb2VzKG4sIG8pIHsgaWYoIW8pIG89bmV3X2J1ZihuKTsgZm9yKHZhciBqPTA7IGo8bjsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIDApOyByZXR1cm4gbzsgfVxuXG5mdW5jdGlvbiBwYXJzbHVycChibG9iLCBsZW5ndGgsIGNiKSB7XG5cdHZhciBhcnIgPSBbXSwgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR3aGlsZShibG9iLmwgPCB0YXJnZXQpIGFyci5wdXNoKGNiKGJsb2IsIHRhcmdldCAtIGJsb2IubCkpO1xuXHRpZih0YXJnZXQgIT09IGJsb2IubCkgdGhyb3cgbmV3IEVycm9yKFwiU2x1cnAgZXJyb3JcIik7XG5cdHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlYm9vbChibG9iLCBsZW5ndGgvKjpudW1iZXIqLykgeyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCkgPT09IDB4MTsgfVxuZnVuY3Rpb24gd3JpdGVib29sKHYvKjphbnkqLywgbykgeyBpZighbykgbz1uZXdfYnVmKDIpOyBvLndyaXRlX3NoaWZ0KDIsICshIXYpOyByZXR1cm4gbzsgfVxuXG5mdW5jdGlvbiBwYXJzZXVpbnQxNihibG9iLyo6OiwgbGVuZ3RoOj9udW1iZXIsIG9wdHM6P2FueSovKSB7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoMiwgJ3UnKTsgfVxuZnVuY3Rpb24gd3JpdGV1aW50MTYodi8qOm51bWJlciovLCBvKSB7IGlmKCFvKSBvPW5ld19idWYoMik7IG8ud3JpdGVfc2hpZnQoMiwgdik7IHJldHVybiBvOyB9XG5mdW5jdGlvbiBwYXJzZXVpbnQxNmEoYmxvYiwgbGVuZ3RoLyo6OiA6P251bWJlciwgb3B0czo/YW55Ki8pIHsgcmV0dXJuIHBhcnNsdXJwKGJsb2IsbGVuZ3RoLHBhcnNldWludDE2KTt9XG5cbi8qIC0tLSAyLjUgU3RydWN0dXJlcyAtLS0gKi9cblxuLyogW01TLVhMU10gMi41LjEwIEJlcyAoYm9vbGVhbiBvciBlcnJvcikgKi9cbmZ1bmN0aW9uIHBhcnNlX0JlcyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHYgPSBibG9iLnJlYWRfc2hpZnQoMSksIHQgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB0ID09PSAweDAxID8gdiA6IHYgPT09IDB4MDE7XG59XG5mdW5jdGlvbiB3cml0ZV9CZXModiwgdC8qOnN0cmluZyovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigyKTtcblx0by53cml0ZV9zaGlmdCgxLCAoKHQgPT0gJ2UnKSA/ICt2IDogKyEhdikpO1xuXHRvLndyaXRlX3NoaWZ0KDEsICgodCA9PSAnZScpID8gMSA6IDApKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yNDAgU2hvcnRYTFVuaWNvZGVTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID49IDEyID8gMiA6IDEpO1xuXHR2YXIgZW5jb2RpbmcgPSAnc2Jjcy1jb250Jztcblx0dmFyIGNwID0gY3VycmVudF9jb2RlcGFnZTtcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPj0gOCkgY3VycmVudF9jb2RlcGFnZSA9IDEyMDA7XG5cdGlmKCFvcHRzIHx8IG9wdHMuYmlmZiA9PSA4ICkge1xuXHRcdHZhciBmSGlnaEJ5dGUgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYoZkhpZ2hCeXRlKSB7IGVuY29kaW5nID0gJ2RiY3MtY29udCc7IH1cblx0fSBlbHNlIGlmKG9wdHMuYmlmZiA9PSAxMikge1xuXHRcdGVuY29kaW5nID0gJ3dzdHInO1xuXHR9XG5cdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1KSBlbmNvZGluZyA9ICdjcHN0cic7XG5cdHZhciBvID0gY2NoID8gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgZW5jb2RpbmcpIDogXCJcIjtcblx0Y3VycmVudF9jb2RlcGFnZSA9IGNwO1xuXHRyZXR1cm4gbztcbn1cblxuLyogMi41LjI5MyBYTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyhibG9iKSB7XG5cdHZhciBjcCA9IGN1cnJlbnRfY29kZXBhZ2U7XG5cdGN1cnJlbnRfY29kZXBhZ2UgPSAxMjAwO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIC8qZkhpZ2hCeXRlID0gZmxhZ3MgJiAweDEsKi8gZkV4dFN0ID0gZmxhZ3MgJiAweDQsIGZSaWNoU3QgPSBmbGFncyAmIDB4ODtcblx0dmFyIHdpZHRoID0gMSArIChmbGFncyAmIDB4MSk7IC8vIDB4MCAtPiB1dGY4LCAweDEgLT4gZGJjc1xuXHR2YXIgY1J1biA9IDAsIGNiRXh0UnN0O1xuXHR2YXIgeiA9IHt9O1xuXHRpZihmUmljaFN0KSBjUnVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZihmRXh0U3QpIGNiRXh0UnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgZW5jb2RpbmcgPSB3aWR0aCA9PSAyID8gJ2RiY3MtY29udCcgOiAnc2Jjcy1jb250Jztcblx0dmFyIG1zZyA9IGNjaCA9PT0gMCA/IFwiXCIgOiBibG9iLnJlYWRfc2hpZnQoY2NoLCBlbmNvZGluZyk7XG5cdGlmKGZSaWNoU3QpIGJsb2IubCArPSA0ICogY1J1bjsgLy9UT0RPOiBwYXJzZSB0aGlzXG5cdGlmKGZFeHRTdCkgYmxvYi5sICs9IGNiRXh0UnN0OyAvL1RPRE86IHBhcnNlIHRoaXNcblx0ei50ID0gbXNnO1xuXHRpZighZlJpY2hTdCkgeyB6LnJhdyA9IFwiPHQ+XCIgKyB6LnQgKyBcIjwvdD5cIjsgei5yID0gei50OyB9XG5cdGN1cnJlbnRfY29kZXBhZ2UgPSBjcDtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcoeGxzdHIvKjo6IDpYTFN0cmluZywgb3B0cyovKSB7XG5cdHZhciBzdHIgPSAoeGxzdHIudHx8XCJcIiksIG5mbXRzID0gMTtcblxuXHR2YXIgaGRyID0gbmV3X2J1ZigzICsgKG5mbXRzID4gMSA/IDIgOiAwKSk7XG5cdGhkci53cml0ZV9zaGlmdCgyLCBzdHIubGVuZ3RoKTtcblx0aGRyLndyaXRlX3NoaWZ0KDEsIChuZm10cyA+IDEgPyAweDA4IDogMHgwMCkgfCAweDAxKTtcblx0aWYobmZtdHMgPiAxKSBoZHIud3JpdGVfc2hpZnQoMiwgbmZtdHMpO1xuXG5cdHZhciBvdGV4dCA9IG5ld19idWYoMiAqIHN0ci5sZW5ndGgpO1xuXHRvdGV4dC53cml0ZV9zaGlmdCgyICogc3RyLmxlbmd0aCwgc3RyLCAndXRmMTZsZScpO1xuXG5cdHZhciBvdXQgPSBbaGRyLCBvdGV4dF07XG5cblx0cmV0dXJuIGJjb25jYXQob3V0KTtcbn1cblxuLyogMi41LjI5NiBYTFVuaWNvZGVTdHJpbmdOb0NjaCAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoLCBvcHRzKSB7XG5cdHZhciByZXR2YWw7XG5cdGlmKG9wdHMpIHtcblx0XHRpZihvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgcmV0dXJuIGJsb2IucmVhZF9zaGlmdChjY2gsICdjcHN0cicpO1xuXHRcdGlmKG9wdHMuYmlmZiA+PSAxMikgcmV0dXJuIGJsb2IucmVhZF9zaGlmdChjY2gsICdkYmNzLWNvbnQnKTtcblx0fVxuXHR2YXIgZkhpZ2hCeXRlID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihmSGlnaEJ5dGU9PT0wKSB7IHJldHZhbCA9IGJsb2IucmVhZF9zaGlmdChjY2gsICdzYmNzLWNvbnQnKTsgfVxuXHRlbHNlIHsgcmV0dmFsID0gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ2RiY3MtY29udCcpOyB9XG5cdHJldHVybiByZXR2YWw7XG59XG5cbi8qIDIuNS4yOTQgWExVbmljb2RlU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9YTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0aWYoY2NoID09PSAwKSB7IGJsb2IubCsrOyByZXR1cm4gXCJcIjsgfVxuXHRyZXR1cm4gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoLCBvcHRzKTtcbn1cbi8qIEJJRkY1IG92ZXJyaWRlICovXG5mdW5jdGlvbiBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPiA1KSByZXR1cm4gcGFyc2VfWExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGNjaCA9PT0gMCkgeyBibG9iLmwrKzsgcmV0dXJuIFwiXCI7IH1cblx0cmV0dXJuIGJsb2IucmVhZF9zaGlmdChjY2gsIChvcHRzLmJpZmYgPD0gNCB8fCAhYmxvYi5sZW5zICkgPyAnY3BzdHInIDogJ3NiY3MtY29udCcpO1xufVxuLyogVE9ETzogQklGRjUgYW5kIGxvd2VyLCBjb2RlcGFnZSBhd2FyZW5lc3MgKi9cbmZ1bmN0aW9uIHdyaXRlX1hMVW5pY29kZVN0cmluZyhzdHIsIG9wdHMsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDMgKyAyICogc3RyLmxlbmd0aCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgc3RyLmxlbmd0aCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMzEsIHN0ciwgJ3V0ZjE2bGUnKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS42MSBDb250cm9sSW5mbyAqL1xuZnVuY3Rpb24gcGFyc2VfQ29udHJvbEluZm8oYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0YmxvYi5sKys7XG5cdHZhciBhY2NlbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbZmxhZ3MsIGFjY2VsXTtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjYgVVJMTW9uaWtlciBUT0RPOiBmbGFncyAqL1xuZnVuY3Rpb24gcGFyc2VfVVJMTW9uaWtlcihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCg0KSwgc3RhcnQgPSBibG9iLmw7XG5cdHZhciBleHRyYSA9IGZhbHNlO1xuXHRpZihsZW4gPiAyNCkge1xuXHRcdC8qIGxvb2sgYWhlYWQgKi9cblx0XHRibG9iLmwgKz0gbGVuIC0gMjQ7XG5cdFx0aWYoYmxvYi5yZWFkX3NoaWZ0KDE2KSA9PT0gXCI3OTU4ODFmNDNiMWQ3ZjQ4YWYyYzgyNWRjNDg1Mjc2M1wiKSBleHRyYSA9IHRydWU7XG5cdFx0YmxvYi5sID0gc3RhcnQ7XG5cdH1cblx0dmFyIHVybCA9IGJsb2IucmVhZF9zaGlmdCgoZXh0cmE/bGVuLTI0Omxlbik+PjEsICd1dGYxNmxlJykucmVwbGFjZShjaHIwLFwiXCIpO1xuXHRpZihleHRyYSkgYmxvYi5sICs9IDI0O1xuXHRyZXR1cm4gdXJsO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuOCBGaWxlTW9uaWtlciBUT0RPOiBhbGwgZmllbGRzICovXG5mdW5jdGlvbiBwYXJzZV9GaWxlTW9uaWtlcihibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIGNBbnRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcHJlYW1ibGUgPSBcIlwiOyB3aGlsZShjQW50aS0tID4gMCkgcHJlYW1ibGUgKz0gXCIuLi9cIjtcblx0dmFyIGFuc2lQYXRoID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHN0ci1hbnNpJyk7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBlbmRTZXJ2ZXIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKGJsb2IucmVhZF9zaGlmdCgyKSAhPSAweERFQUQpIHRocm93IG5ldyBFcnJvcihcIkJhZCBGaWxlTW9uaWtlclwiKTtcblx0dmFyIHN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihzeiA9PT0gMCkgcmV0dXJuIHByZWFtYmxlICsgYW5zaVBhdGgucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTtcblx0dmFyIGJ5dGVzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihibG9iLnJlYWRfc2hpZnQoMikgIT0gMykgdGhyb3cgbmV3IEVycm9yKFwiQmFkIEZpbGVNb25pa2VyXCIpO1xuXHR2YXIgdW5pY29kZVBhdGggPSBibG9iLnJlYWRfc2hpZnQoYnl0ZXM+PjEsICd1dGYxNmxlJykucmVwbGFjZShjaHIwLFwiXCIpO1xuXHRyZXR1cm4gcHJlYW1ibGUgKyB1bmljb2RlUGF0aDtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjIgSHlwZXJsaW5rTW9uaWtlciBUT0RPOiBhbGwgdGhlIG1vbmlrZXJzICovXG5mdW5jdGlvbiBwYXJzZV9IeXBlcmxpbmtNb25pa2VyKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgY2xzaWQgPSBibG9iLnJlYWRfc2hpZnQoMTYpOyBsZW5ndGggLT0gMTY7XG5cdHN3aXRjaChjbHNpZCkge1xuXHRcdGNhc2UgXCJlMGM5ZWE3OWY5YmFjZTExOGM4MjAwYWEwMDRiYTkwYlwiOiByZXR1cm4gcGFyc2VfVVJMTW9uaWtlcihibG9iLCBsZW5ndGgpO1xuXHRcdGNhc2UgXCIwMzAzMDAwMDAwMDAwMDAwYzAwMDAwMDAwMDAwMDA0NlwiOiByZXR1cm4gcGFyc2VfRmlsZU1vbmlrZXIoYmxvYiwgbGVuZ3RoKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBNb25pa2VyIFwiICsgY2xzaWQpO1xuXHR9XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy45IEh5cGVybGlua1N0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgbyA9IGxlbiA+IDAgPyBibG9iLnJlYWRfc2hpZnQobGVuLCAndXRmMTZsZScpLnJlcGxhY2UoY2hyMCwgXCJcIikgOiBcIlwiO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0h5cGVybGlua1N0cmluZyhzdHIvKjpzdHJpbmcqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNiArIHN0ci5sZW5ndGggKiAyKTtcblx0by53cml0ZV9zaGlmdCg0LCAxICsgc3RyLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIG8ud3JpdGVfc2hpZnQoMiwgc3RyLmNoYXJDb2RlQXQoaSkpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjEgSHlwZXJsaW5rIE9iamVjdCAqL1xuZnVuY3Rpb24gcGFyc2VfSHlwZXJsaW5rKGJsb2IsIGxlbmd0aCkvKjpIeXBlcmxpbmsqLyB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBzVmVyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihzVmVyICE9PSAyKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgc3RyZWFtVmVyc2lvbjogXCIgKyBzVmVyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGRpc3BsYXlOYW1lLCB0YXJnZXRGcmFtZU5hbWUsIG1vbmlrZXIsIG9sZU1vbmlrZXIsIExvYz1cIlwiLCBndWlkLCBmaWxlVGltZTtcblx0aWYoZmxhZ3MgJiAweDAwMTApIGRpc3BsYXlOYW1lID0gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKGZsYWdzICYgMHgwMDgwKSB0YXJnZXRGcmFtZU5hbWUgPSBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoKGZsYWdzICYgMHgwMTAxKSA9PT0gMHgwMTAxKSBtb25pa2VyID0gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKChmbGFncyAmIDB4MDEwMSkgPT09IDB4MDAwMSkgb2xlTW9uaWtlciA9IHBhcnNlX0h5cGVybGlua01vbmlrZXIoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoZmxhZ3MgJiAweDAwMDgpIExvYyA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZihmbGFncyAmIDB4MDAyMCkgZ3VpZCA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdGlmKGZsYWdzICYgMHgwMDQwKSBmaWxlVGltZSA9IHBhcnNlX0ZJTEVUSU1FKGJsb2IvKiwgOCovKTtcblx0YmxvYi5sID0gZW5kO1xuXHR2YXIgdGFyZ2V0ID0gdGFyZ2V0RnJhbWVOYW1lfHxtb25pa2VyfHxvbGVNb25pa2VyfHxcIlwiO1xuXHRpZih0YXJnZXQgJiYgTG9jKSB0YXJnZXQrPVwiI1wiK0xvYztcblx0aWYoIXRhcmdldCkgdGFyZ2V0ID0gXCIjXCIgKyBMb2M7XG5cdGlmKChmbGFncyAmIDB4MDAwMikgJiYgdGFyZ2V0LmNoYXJBdCgwKSA9PSBcIi9cIiAmJiB0YXJnZXQuY2hhckF0KDEpICE9IFwiL1wiKSB0YXJnZXQgPSBcImZpbGU6Ly9cIiArIHRhcmdldDtcblx0dmFyIG91dCA9ICh7VGFyZ2V0OnRhcmdldH0vKjphbnkqLyk7XG5cdGlmKGd1aWQpIG91dC5ndWlkID0gZ3VpZDtcblx0aWYoZmlsZVRpbWUpIG91dC50aW1lID0gZmlsZVRpbWU7XG5cdGlmKGRpc3BsYXlOYW1lKSBvdXQuVG9vbHRpcCA9IGRpc3BsYXlOYW1lO1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfSHlwZXJsaW5rKGhsKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDUxMiksIGkgPSAwO1xuXHR2YXIgVGFyZ2V0ID0gaGwuVGFyZ2V0O1xuXHRpZihUYXJnZXQuc2xpY2UoMCw3KSA9PSBcImZpbGU6Ly9cIikgVGFyZ2V0ID0gVGFyZ2V0LnNsaWNlKDcpO1xuXHR2YXIgaGFzaGlkeCA9IFRhcmdldC5pbmRleE9mKFwiI1wiKTtcblx0dmFyIEYgPSBoYXNoaWR4ID4gLTEgPyAweDFmIDogMHgxNztcblx0c3dpdGNoKFRhcmdldC5jaGFyQXQoMCkpIHsgY2FzZSBcIiNcIjogRj0weDFjOyBicmVhazsgY2FzZSBcIi5cIjogRiY9fjI7IGJyZWFrOyB9XG5cdG91dC53cml0ZV9zaGlmdCg0LDIpOyBvdXQud3JpdGVfc2hpZnQoNCwgRik7XG5cdHZhciBkYXRhID0gWzgsNjgxNTgyNyw2NjE5MjM3LDQ4NDk3ODAsODNdOyBmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBvdXQud3JpdGVfc2hpZnQoNCwgZGF0YVtpXSk7XG5cdGlmKEYgPT0gMHgxQykge1xuXHRcdFRhcmdldCA9IFRhcmdldC5zbGljZSgxKTtcblx0XHR3cml0ZV9IeXBlcmxpbmtTdHJpbmcoVGFyZ2V0LCBvdXQpO1xuXHR9IGVsc2UgaWYoRiAmIDB4MDIpIHtcblx0XHRkYXRhID0gXCJlMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAwMCBhYSAwMCA0YiBhOSAwYlwiLnNwbGl0KFwiIFwiKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBvdXQud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQoZGF0YVtpXSwgMTYpKTtcblx0XHR2YXIgUHJldGFyZ2V0ID0gaGFzaGlkeCA+IC0xID8gVGFyZ2V0LnNsaWNlKDAsIGhhc2hpZHgpIDogVGFyZ2V0O1xuXHRcdG91dC53cml0ZV9zaGlmdCg0LCAyKihQcmV0YXJnZXQubGVuZ3RoICsgMSkpO1xuXHRcdGZvcihpID0gMDsgaSA8IFByZXRhcmdldC5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDIsIFByZXRhcmdldC5jaGFyQ29kZUF0KGkpKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0aWYoRiAmIDB4MDgpIHdyaXRlX0h5cGVybGlua1N0cmluZyhoYXNoaWR4ID4gLTEgPyBUYXJnZXQuc2xpY2UoaGFzaGlkeCsxKTogXCJcIiwgb3V0KTtcblx0fSBlbHNlIHtcblx0XHRkYXRhID0gXCIwMyAwMyAwMCAwMCAwMCAwMCAwMCAwMCBjMCAwMCAwMCAwMCAwMCAwMCAwMCA0NlwiLnNwbGl0KFwiIFwiKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBvdXQud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQoZGF0YVtpXSwgMTYpKTtcblx0XHR2YXIgUCA9IDA7XG5cdFx0d2hpbGUoVGFyZ2V0LnNsaWNlKFAqMyxQKjMrMyk9PVwiLi4vXCJ8fFRhcmdldC5zbGljZShQKjMsUCozKzMpPT1cIi4uXFxcXFwiKSArK1A7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIFApO1xuXHRcdG91dC53cml0ZV9zaGlmdCg0LCBUYXJnZXQubGVuZ3RoIC0gMyAqIFAgKyAxKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBUYXJnZXQubGVuZ3RoIC0gMyAqIFA7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDEsIFRhcmdldC5jaGFyQ29kZUF0KGkgKyAzICogUCkgJiAweEZGKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4RkZGRik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4REVBRCk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgNjsgKytpKSBvdXQud3JpdGVfc2hpZnQoNCwgMCk7XG5cdH1cblx0cmV0dXJuIG91dC5zbGljZSgwLCBvdXQubCk7XG59XG5cbi8qIDIuNS4xNzggTG9uZ1JHQkEgKi9cbmZ1bmN0aW9uIHBhcnNlX0xvbmdSR0JBKGJsb2IvKjo6LCBsZW5ndGgqLykgeyB2YXIgciA9IGJsb2IucmVhZF9zaGlmdCgxKSwgZyA9IGJsb2IucmVhZF9zaGlmdCgxKSwgYiA9IGJsb2IucmVhZF9zaGlmdCgxKSwgYSA9IGJsb2IucmVhZF9zaGlmdCgxKTsgcmV0dXJuIFtyLGcsYixhXTsgfVxuXG4vKiAyLjUuMTc3IExvbmdSR0IgKi9cbmZ1bmN0aW9uIHBhcnNlX0xvbmdSR0IoYmxvYiwgbGVuZ3RoKSB7IHZhciB4ID0gcGFyc2VfTG9uZ1JHQkEoYmxvYiwgbGVuZ3RoKTsgeFszXSA9IDA7IHJldHVybiB4OyB9XG5cblxuLyogW01TLVhMU10gMi41LjE5ICovXG5mdW5jdGlvbiBwYXJzZV9YTFNDZWxsKGJsb2IvKjo6LCBsZW5ndGgqLykvKjpDZWxsKi8ge1xuXHR2YXIgcncgPSBibG9iLnJlYWRfc2hpZnQoMik7IC8vIDAtaW5kZXhlZFxuXHR2YXIgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuICh7cjpydywgYzpjb2wsIGl4ZmU6aXhmZX0vKjphbnkqLyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YTFNDZWxsKFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCBpeGZlLyo6P251bWJlciovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig2KTtcblx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0by53cml0ZV9zaGlmdCgyLCBpeGZlfHwwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xMzQgKi9cbmZ1bmN0aW9uIHBhcnNlX2ZydEhlYWRlcihibG9iKSB7XG5cdHZhciBydCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyBUT0RPOiBwYXJzZSB0aGVzZSBmbGFnc1xuXHRibG9iLmwgKz0gODtcblx0cmV0dXJuIHt0eXBlOiBydCwgZmxhZ3M6IGZsYWdzfTtcbn1cblxuXG5cbmZ1bmN0aW9uIHBhcnNlX09wdFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHsgcmV0dXJuIGxlbmd0aCA9PT0gMCA/IFwiXCIgOiBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIGxlbmd0aCwgb3B0cyk7IH1cblxuLyogW01TLVhMU10gMi41LjM0NCAqL1xuZnVuY3Rpb24gcGFyc2VfWFRJKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdyA9IG9wdHMuYmlmZiA+IDggPyA0IDogMjtcblx0dmFyIGlTdXBCb29rID0gYmxvYi5yZWFkX3NoaWZ0KHcpLCBpdGFiRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQodywnaScpLCBpdGFiTGFzdCA9IGJsb2IucmVhZF9zaGlmdCh3LCdpJyk7XG5cdHJldHVybiBbaVN1cEJvb2ssIGl0YWJGaXJzdCwgaXRhYkxhc3RdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjE4ICovXG5mdW5jdGlvbiBwYXJzZV9Sa1JlYyhibG9iKSB7XG5cdHZhciBpeGZlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgUksgPSBwYXJzZV9Sa051bWJlcihibG9iKTtcblx0cmV0dXJuIFtpeGZlLCBSS107XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xICovXG5mdW5jdGlvbiBwYXJzZV9BZGRpblVkZihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IDQ7IGxlbmd0aCAtPSA0O1xuXHR2YXIgbCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHVkZk5hbWUgPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgY2IgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGwgLT0gYmxvYi5sO1xuXHRpZihjYiAhPT0gbCkgdGhyb3cgbmV3IEVycm9yKFwiTWFsZm9ybWVkIEFkZGluVWRmOiBwYWRkaW5nID0gXCIgKyBsICsgXCIgIT0gXCIgKyBjYik7XG5cdGJsb2IubCArPSBjYjtcblx0cmV0dXJuIHVkZk5hbWU7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMDkgVE9ETzogQ2hlY2sgc2l6ZXMgKi9cbmZ1bmN0aW9uIHBhcnNlX1JlZjhVKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgcndGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJ3TGFzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNvbEZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY29sTGFzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHtzOntjOmNvbEZpcnN0LCByOnJ3Rmlyc3R9LCBlOntjOmNvbExhc3Qscjpyd0xhc3R9fTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1JlZjhVKHIvKjpSYW5nZSovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig4KTtcblx0by53cml0ZV9zaGlmdCgyLCByLnMucik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5lLnIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHIucy5jKTtcblx0by53cml0ZV9zaGlmdCgyLCByLmUuYyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjExICovXG5mdW5jdGlvbiBwYXJzZV9SZWZVKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgcndGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJ3TGFzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNvbEZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgY29sTGFzdCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHtzOntjOmNvbEZpcnN0LCByOnJ3Rmlyc3R9LCBlOntjOmNvbExhc3Qscjpyd0xhc3R9fTtcbn1cblxuLyogW01TLVhMU10gMi41LjIwNyAqL1xudmFyIHBhcnNlX1JlZiA9IHBhcnNlX1JlZlU7XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDMgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z0Q21vKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHRibG9iLmwgKz0gNDtcblx0dmFyIG90ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaWQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sKz0xMjtcblx0cmV0dXJuIFtpZCwgb3QsIGZsYWdzXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE0OSAqL1xuZnVuY3Rpb24gcGFyc2VfRnROdHMoYmxvYikge1xuXHR2YXIgb3V0ID0ge307XG5cdGJsb2IubCArPSA0O1xuXHRibG9iLmwgKz0gMTY7IC8vIEdVSUQgVE9ET1xuXHRvdXQuZlNoYXJlZE5vdGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0O1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTQyICovXG5mdW5jdGlvbiBwYXJzZV9GdENmKGJsb2IpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRibG9iLmwgKz0gNDtcblx0YmxvYi5jZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU10gMi41LjE0MCAtIDIuNS4xNTQgYW5kIGZyaWVuZHMgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z0U2tpcChibG9iKSB7IGJsb2IubCArPSAyOyBibG9iLmwgKz0gYmxvYi5yZWFkX3NoaWZ0KDIpOyB9XG52YXIgRnRUYWIgPSB7XG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0RW5kICovXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0TWFjcm8gKi9cblx0Lyo6OlsqLzB4MDUvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRCdXR0b24gKi9cblx0Lyo6OlsqLzB4MDYvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRHbW8gKi9cblx0Lyo6OlsqLzB4MDcvKjo6XSovOiBwYXJzZV9GdENmLCAgICAgICAgLyogRnRDZiAqL1xuXHQvKjo6WyovMHgwOC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFBpb0dyYml0ICovXG5cdC8qOjpbKi8weDA5Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0UGljdEZtbGEgKi9cblx0Lyo6OlsqLzB4MEEvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRDYmxzICovXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0UmJvICovXG5cdC8qOjpbKi8weDBDLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0U2JzICovXG5cdC8qOjpbKi8weDBELyo6Ol0qLzogcGFyc2VfRnROdHMsICAgICAgIC8qIEZ0TnRzICovXG5cdC8qOjpbKi8weDBFLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0U2JzRm1sYSAqL1xuXHQvKjo6WyovMHgwRi8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEdib0RhdGEgKi9cblx0Lyo6OlsqLzB4MTAvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRFZG9EYXRhICovXG5cdC8qOjpbKi8weDExLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0UmJvRGF0YSAqL1xuXHQvKjo6WyovMHgxMi8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdENibHNEYXRhICovXG5cdC8qOjpbKi8weDEzLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0TGJzRGF0YSAqL1xuXHQvKjo6WyovMHgxNC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdENibHNGbWxhICovXG5cdC8qOjpbKi8weDE1Lyo6Ol0qLzogcGFyc2VfRnRDbW9cbn07XG5mdW5jdGlvbiBwYXJzZV9GdEFycmF5KGJsb2IsIGxlbmd0aC8qOjosIG90Ki8pIHtcblx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGZ0cyA9IFtdO1xuXHR3aGlsZShibG9iLmwgPCB0Z3QpIHtcblx0XHR2YXIgZnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0YmxvYi5sLT0yO1xuXHRcdHRyeSB7XG5cdFx0XHRmdHMucHVzaChGdFRhYltmdF0oYmxvYiwgdGd0IC0gYmxvYi5sKSk7XG5cdFx0fSBjYXRjaChlKSB7IGJsb2IubCA9IHRndDsgcmV0dXJuIGZ0czsgfVxuXHR9XG5cdGlmKGJsb2IubCAhPSB0Z3QpIGJsb2IubCA9IHRndDsgLy90aHJvdyBuZXcgRXJyb3IoXCJiYWQgT2JqZWN0IEZ0LXNlcXVlbmNlXCIpO1xuXHRyZXR1cm4gZnRzO1xufVxuXG4vKiAtLS0gMi40IFJlY29yZHMgLS0tICovXG5cbi8qIFtNUy1YTFNdIDIuNC4yMSAqL1xuZnVuY3Rpb24gcGFyc2VfQk9GKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgbyA9IHtCSUZGVmVyOjAsIGR0OjB9O1xuXHRvLkJJRkZWZXIgPSBibG9iLnJlYWRfc2hpZnQoMik7IGxlbmd0aCAtPSAyO1xuXHRpZihsZW5ndGggPj0gMikgeyBvLmR0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBibG9iLmwgLT0gMjsgfVxuXHRzd2l0Y2goby5CSUZGVmVyKSB7XG5cdFx0Y2FzZSAweDA2MDA6IC8qIEJJRkY4ICovXG5cdFx0Y2FzZSAweDA1MDA6IC8qIEJJRkY1ICovXG5cdFx0Y2FzZSAweDA0MDA6IC8qIEJJRkY0ICovXG5cdFx0Y2FzZSAweDAzMDA6IC8qIEJJRkYzICovXG5cdFx0Y2FzZSAweDAyMDA6IC8qIEJJRkYyICovXG5cdFx0Y2FzZSAweDAwMDI6IGNhc2UgMHgwMDA3OiAvKiBCSUZGMiAqL1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDogaWYobGVuZ3RoID4gNikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBCSUZGIFZlciBcIiArIG8uQklGRlZlcik7XG5cdH1cblxuXHRibG9iLnJlYWRfc2hpZnQobGVuZ3RoKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9CT0Yod2IvKjpXb3JrYm9vayovLCB0Lyo6bnVtYmVyKi8sIG8pIHtcblx0dmFyIGggPSAweDA2MDAsIHcgPSAxNjtcblx0c3dpdGNoKG8uYm9va1R5cGUpIHtcblx0XHRjYXNlICdiaWZmOCc6IGJyZWFrO1xuXHRcdGNhc2UgJ2JpZmY1JzogaCA9IDB4MDUwMDsgdyA9IDg7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpZmY0JzogaCA9IDB4MDAwNDsgdyA9IDY7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpZmYzJzogaCA9IDB4MDAwMzsgdyA9IDY7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpZmYyJzogaCA9IDB4MDAwMjsgdyA9IDQ7IGJyZWFrO1xuXHRcdGNhc2UgJ3hsYSc6IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIEJJRkYgdmVyc2lvblwiKTtcblx0fVxuXHR2YXIgb3V0ID0gbmV3X2J1Zih3KTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIGgpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgdCk7XG5cdGlmKHcgPiA0KSBvdXQud3JpdGVfc2hpZnQoMiwgMHg3MjYyKTtcblx0aWYodyA+IDYpIG91dC53cml0ZV9zaGlmdCgyLCAweDA3Q0QpO1xuXHRpZih3ID4gOCkge1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweEMwMDkpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwMDEpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDA3MDYpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwMDApO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cblxuLyogW01TLVhMU10gMi40LjE0NiAqL1xuZnVuY3Rpb24gcGFyc2VfSW50ZXJmYWNlSGRyKGJsb2IsIGxlbmd0aCkge1xuXHRpZihsZW5ndGggPT09IDApIHJldHVybiAweDA0YjA7XG5cdGlmKChibG9iLnJlYWRfc2hpZnQoMikpIT09MHgwNGIwKXsvKiBlbXB0eSAqL31cblx0cmV0dXJuIDB4MDRiMDtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMzQ5ICovXG5mdW5jdGlvbiBwYXJzZV9Xcml0ZUFjY2VzcyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5lbmMpIHsgYmxvYi5sICs9IGxlbmd0aDsgcmV0dXJuIFwiXCI7IH1cblx0dmFyIGwgPSBibG9iLmw7XG5cdC8vIFRPRE86IG1ha2Ugc3VyZSBYTFVuaWNvZGVTdHJpbmcgZG9lc250IG92ZXJydW5cblx0dmFyIFVzZXJOYW1lID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCBvcHRzKTtcblx0YmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCArIGwgLSBibG9iLmwpO1xuXHRyZXR1cm4gVXNlck5hbWU7XG59XG5mdW5jdGlvbiB3cml0ZV9Xcml0ZUFjY2VzcyhzLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0dmFyIGI4ID0gIW9wdHMgfHwgb3B0cy5iaWZmID09IDg7XG5cdHZhciBvID0gbmV3X2J1ZihiOCA/IDExMiA6IDU0KTtcblx0by53cml0ZV9zaGlmdChvcHRzLmJpZmYgPT0gOCA/IDIgOiAxLCA3KTtcblx0aWYoYjgpIG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMHgzMzMzNjg1Myk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgKDB4MDA1MzRBNzQgfCAoYjggPyAwIDogMHgyMDAwMDAwMCkpKTtcblx0d2hpbGUoby5sIDwgby5sZW5ndGgpIG8ud3JpdGVfc2hpZnQoMSwgKGI4ID8gMCA6IDMyKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMzUxICovXG5mdW5jdGlvbiBwYXJzZV9Xc0Jvb2woYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBmbGFncyA9IG9wdHMgJiYgb3B0cy5iaWZmID09IDggfHwgbGVuZ3RoID09IDIgPyBibG9iLnJlYWRfc2hpZnQoMikgOiAoYmxvYi5sICs9IGxlbmd0aCwgMCk7XG5cdHJldHVybiB7IGZEaWFsb2c6IGZsYWdzICYgMHgxMCwgZkJlbG93OiBmbGFncyAmIDB4NDAsIGZSaWdodDogZmxhZ3MgJiAweDgwIH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yOCAqL1xuZnVuY3Rpb24gcGFyc2VfQm91bmRTaGVldDgoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBwb3MgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBoaWRkZW4gPSBibG9iLnJlYWRfc2hpZnQoMSkgJiAweDAzO1xuXHR2YXIgZHQgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHN3aXRjaChkdCkge1xuXHRcdGNhc2UgMDogZHQgPSAnV29ya3NoZWV0JzsgYnJlYWs7XG5cdFx0Y2FzZSAxOiBkdCA9ICdNYWNyb3NoZWV0JzsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBkdCA9ICdDaGFydHNoZWV0JzsgYnJlYWs7XG5cdFx0Y2FzZSA2OiBkdCA9ICdWQkFNb2R1bGUnOyBicmVhaztcblx0fVxuXHR2YXIgbmFtZSA9IHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIDAsIG9wdHMpO1xuXHRpZihuYW1lLmxlbmd0aCA9PT0gMCkgbmFtZSA9IFwiU2hlZXQxXCI7XG5cdHJldHVybiB7IHBvczpwb3MsIGhzOmhpZGRlbiwgZHQ6ZHQsIG5hbWU6bmFtZSB9O1xufVxuZnVuY3Rpb24gd3JpdGVfQm91bmRTaGVldDgoZGF0YSwgb3B0cykge1xuXHR2YXIgdyA9ICghb3B0cyB8fCBvcHRzLmJpZmYgPj0gOCA/IDIgOiAxKTtcblx0dmFyIG8gPSBuZXdfYnVmKDggKyB3ICogZGF0YS5uYW1lLmxlbmd0aCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5wb3MpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGRhdGEuaHMgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZGF0YS5kdCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZGF0YS5uYW1lLmxlbmd0aCk7XG5cdGlmKG9wdHMuYmlmZiA+PSA4KSBvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KHcgKiBkYXRhLm5hbWUubGVuZ3RoLCBkYXRhLm5hbWUsIG9wdHMuYmlmZiA8IDggPyAnc2JjcycgOiAndXRmMTZsZScpO1xuXHR2YXIgb3V0ID0gby5zbGljZSgwLCBvLmwpO1xuXHRvdXQubCA9IG8ubDsgcmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU10gMi40LjI2NSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9TU1QoYmxvYiwgbGVuZ3RoKS8qOlNTVCovIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHVjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBzdHJzLyo6U1NUKi8gPSAoW10vKjphbnkqLyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gdWNudCAmJiBibG9iLmwgPCBlbmQ7ICsraSkge1xuXHRcdHN0cnMucHVzaChwYXJzZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcoYmxvYikpO1xuXHR9XG5cdHN0cnMuQ291bnQgPSBjbnQ7IHN0cnMuVW5pcXVlID0gdWNudDtcblx0cmV0dXJuIHN0cnM7XG59XG5mdW5jdGlvbiB3cml0ZV9TU1Qoc3N0LCBvcHRzKSB7XG5cdHZhciBoZWFkZXIgPSBuZXdfYnVmKDgpO1xuXHRoZWFkZXIud3JpdGVfc2hpZnQoNCwgc3N0LkNvdW50KTtcblx0aGVhZGVyLndyaXRlX3NoaWZ0KDQsIHNzdC5VbmlxdWUpO1xuXHR2YXIgc3RycyA9IFtdO1xuXHRmb3IodmFyIGogPSAwOyBqIDwgc3N0Lmxlbmd0aDsgKytqKSBzdHJzW2pdID0gd3JpdGVfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKHNzdFtqXSwgb3B0cyk7XG5cdHZhciBvID0gYmNvbmNhdChbaGVhZGVyXS5jb25jYXQoc3RycykpO1xuXHQvKjo6KCovby8qOjogOmFueSkqLy5wYXJ0cyA9IFtoZWFkZXIubGVuZ3RoXS5jb25jYXQoc3Rycy5tYXAoZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIubGVuZ3RoOyB9KSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTA3ICovXG5mdW5jdGlvbiBwYXJzZV9FeHRTU1QoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBleHRzc3QgPSB7fTtcblx0ZXh0c3N0LmRzc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSBsZW5ndGgtMjtcblx0cmV0dXJuIGV4dHNzdDtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMjIxIFRPRE86IGNoZWNrIEJJRkYyLTQgKi9cbmZ1bmN0aW9uIHBhcnNlX1JvdyhibG9iKSB7XG5cdHZhciB6ID0gKHt9Lyo6YW55Ki8pO1xuXHR6LnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHouYyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0ei5jbnQgPSBibG9iLnJlYWRfc2hpZnQoMikgLSB6LmM7XG5cdHZhciBtaXlSdyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDQ7IC8vIHJlc2VydmVkKDIpLCB1bnVzZWQoMilcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpOyAvLyB2YXJpb3VzIGZsYWdzXG5cdGJsb2IubCArPSAzOyAvLyByZXNlcnZlZCg4KSwgaXhmZSgxMiksIGZsYWdzKDQpXG5cdGlmKGZsYWdzICYgMHgwNykgei5sZXZlbCA9IGZsYWdzICYgMHgwNztcblx0Ly8gY29sbGFwc2VkOiBmbGFncyAmIDB4MTBcblx0aWYoZmxhZ3MgJiAweDIwKSB6LmhpZGRlbiA9IHRydWU7XG5cdGlmKGZsYWdzICYgMHg0MCkgei5ocHQgPSBtaXlSdyAvIDIwO1xuXHRyZXR1cm4gejtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMTI1ICovXG5mdW5jdGlvbiBwYXJzZV9Gb3JjZUZ1bGxDYWxjdWxhdGlvbihibG9iKSB7XG5cdHZhciBoZWFkZXIgPSBwYXJzZV9mcnRIZWFkZXIoYmxvYik7XG5cdGlmKGhlYWRlci50eXBlICE9IDB4MDhBMykgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGdXR1cmUgUmVjb3JkIFwiICsgaGVhZGVyLnR5cGUpO1xuXHR2YXIgZnVsbGNhbGMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBmdWxsY2FsYyAhPT0gMHgwO1xufVxuXG5cblxuXG5cbi8qIFtNUy1YTFNdIDIuNC4yMTUgcnQgKi9cbmZ1bmN0aW9uIHBhcnNlX1JlY2FsY0lkKGJsb2IpIHtcblx0YmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDQpO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuODcgKi9cbmZ1bmN0aW9uIHBhcnNlX0RlZmF1bHRSb3dIZWlnaHQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBmID0gMDtcblx0aWYoIShvcHRzICYmIG9wdHMuYmlmZiA9PSAyKSkge1xuXHRcdGYgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdH1cblx0dmFyIG1peVJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZigob3B0cyAmJiBvcHRzLmJpZmYgPT0gMikpIHtcblx0XHRmID0gMSAtIChtaXlSdyA+PiAxNSk7IG1peVJ3ICY9IDB4N2ZmZjtcblx0fVxuXHR2YXIgZmwgPSB7VW5zeW5jZWQ6ZiYxLER5WmVybzooZiYyKT4+MSxFeEFzYzooZiY0KT4+MixFeERzYzooZiY4KT4+M307XG5cdHJldHVybiBbZmwsIG1peVJ3XTtcbn1cblxuLyogW01TLVhMU10gMi40LjM0NSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9XaW5kb3cxKGJsb2IpIHtcblx0dmFyIHhXbiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgeVduID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBkeFduID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBkeVduID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMiksIGlUYWJDdXIgPSBibG9iLnJlYWRfc2hpZnQoMiksIGlUYWJGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGN0YWJTZWwgPSBibG9iLnJlYWRfc2hpZnQoMiksIHdUYWJSYXRpbyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHsgUG9zOiBbeFduLCB5V25dLCBEaW06IFtkeFduLCBkeVduXSwgRmxhZ3M6IGZsYWdzLCBDdXJUYWI6IGlUYWJDdXIsXG5cdFx0Rmlyc3RUYWI6IGlUYWJGaXJzdCwgU2VsZWN0ZWQ6IGN0YWJTZWwsIFRhYlJhdGlvOiB3VGFiUmF0aW8gfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1dpbmRvdzEoLyo6Om9wdHMqLykge1xuXHR2YXIgbyA9IG5ld19idWYoMTgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4NzI2MCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHg0NGMwKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDM4KTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAxKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDAxZjQpO1xuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1YTFNdIDIuNC4zNDYgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfV2luZG93MihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPCA1KSByZXR1cm4ge307XG5cdHZhciBmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4geyBSVEw6IGYgJiAweDQwIH07XG59XG5mdW5jdGlvbiB3cml0ZV9XaW5kb3cyKHZpZXcpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE4KSwgZiA9IDB4NmI2O1xuXHRpZih2aWV3ICYmIHZpZXcuUlRMKSBmIHw9IDB4NDA7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgNjQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE4OSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QYW5lKC8qYmxvYiwgbGVuZ3RoLCBvcHRzKi8pIHtcbn1cblxuLyogW01TLVhMU10gMi40LjEyMiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9Gb250KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgby8qOmFueSovID0ge1xuXHRcdGR5SGVpZ2h0OiBibG9iLnJlYWRfc2hpZnQoMiksXG5cdFx0Zmw6IGJsb2IucmVhZF9zaGlmdCgyKVxuXHR9O1xuXHRzd2l0Y2goKG9wdHMgJiYgb3B0cy5iaWZmKSB8fCA4KSB7XG5cdFx0Y2FzZSAyOiBicmVhaztcblx0XHRjYXNlIDM6IGNhc2UgNDogYmxvYi5sICs9IDI7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGJsb2IubCArPSAxMDsgYnJlYWs7XG5cdH1cblx0by5uYW1lID0gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgMCwgb3B0cyk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfRm9udChkYXRhLCBvcHRzKSB7XG5cdHZhciBuYW1lID0gZGF0YS5uYW1lIHx8IFwiQXJpYWxcIjtcblx0dmFyIGI1ID0gKG9wdHMgJiYgKG9wdHMuYmlmZiA9PSA1KSksIHcgPSAoYjUgPyAoMTUgKyBuYW1lLmxlbmd0aCkgOiAoMTYgKyAyICogbmFtZS5sZW5ndGgpKTtcblx0dmFyIG8gPSBuZXdfYnVmKHcpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIChkYXRhLnN6IHx8IDEyKSAqIDIwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCA0MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIG5hbWUubGVuZ3RoKTtcblx0aWYoIWI1KSBvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KChiNSA/IDEgOiAyKSAqIG5hbWUubGVuZ3RoLCBuYW1lLCAoYjUgPyBcInNiY3NcIiA6IFwidXRmMTZsZVwiKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTQ5ICovXG5mdW5jdGlvbiBwYXJzZV9MYWJlbFNzdChibG9iKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iKTtcblx0Y2VsbC5pc3N0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0xhYmVsU3N0KFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCB2Lyo6bnVtYmVyKi8sIG9zLyo6bnVtYmVyKi8gLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBvID0gbmV3X2J1ZigxMCk7XG5cdHdyaXRlX1hMU0NlbGwoUiwgQywgb3MsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHYpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE0OCAqL1xuZnVuY3Rpb24gcGFyc2VfTGFiZWwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZmd1ZXNzICYmIG9wdHMuYmlmZiA9PSAyKSBvcHRzLmJpZmYgPSA1O1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdGlmKG9wdHMuYmlmZiA9PSAyKSBibG9iLmwrKztcblx0dmFyIHN0ciA9IHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iLCB0YXJnZXQgLSBibG9iLmwsIG9wdHMpO1xuXHRjZWxsLnZhbCA9IHN0cjtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9MYWJlbChSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgdi8qOnN0cmluZyovLCBvcy8qOm51bWJlciovLCBvcHRzKSB7XG5cdHZhciBiOCA9ICFvcHRzIHx8IG9wdHMuYmlmZiA9PSA4O1xuXHR2YXIgbyA9IG5ld19idWYoNiArIDIgKyAoK2I4KSArICgxICsgYjgpICogdi5sZW5ndGgpO1xuXHR3cml0ZV9YTFNDZWxsKFIsIEMsIG9zLCBvKTtcblx0by53cml0ZV9zaGlmdCgyLCB2Lmxlbmd0aCk7XG5cdGlmKGI4KSBvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KCgxICsgYjgpICogdi5sZW5ndGgsIHYsIGI4ID8gJ3V0ZjE2bGUnIDogJ3NiY3MnKTtcblx0cmV0dXJuIG87XG59XG5cblxuLyogW01TLVhMU10gMi40LjEyNiBOdW1iZXIgRm9ybWF0cyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9ybWF0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgbnVtRm10SWQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbXRzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIDAsIG9wdHMpO1xuXHRyZXR1cm4gW251bUZtdElkLCBmbXRzdHJdO1xufVxuZnVuY3Rpb24gd3JpdGVfRm9ybWF0KGkvKjpudW1iZXIqLywgZi8qOnN0cmluZyovLCBvcHRzLCBvKSB7XG5cdHZhciBiNSA9IChvcHRzICYmIChvcHRzLmJpZmYgPT0gNSkpO1xuXHRpZighbykgbyA9IG5ld19idWYoYjUgPyAoMyArIGYubGVuZ3RoKSA6ICg1ICsgMiAqIGYubGVuZ3RoKSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaSk7XG5cdG8ud3JpdGVfc2hpZnQoKGI1ID8gMSA6IDIpLCBmLmxlbmd0aCk7XG5cdGlmKCFiNSkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgoYjUgPyAxIDogMikgKiBmLmxlbmd0aCwgZiwgKGI1ID8gJ3NiY3MnIDogJ3V0ZjE2bGUnKSk7XG5cdHZhciBvdXQgPSAoby5sZW5ndGggPiBvLmwpID8gby5zbGljZSgwLCBvLmwpIDogbztcblx0aWYob3V0LmwgPT0gbnVsbCkgb3V0LmwgPSBvdXQubGVuZ3RoO1xuXHRyZXR1cm4gb3V0O1xufVxudmFyIHBhcnNlX0JJRkYyRm9ybWF0ID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMjtcblxuLyogW01TLVhMU10gMi40LjkwICovXG5mdW5jdGlvbiBwYXJzZV9EaW1lbnNpb25zKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgdyA9IG9wdHMuYmlmZiA9PSA4IHx8ICFvcHRzLmJpZmYgPyA0IDogMjtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQodyksIFIgPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBDID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgPSBlbmQ7XG5cdHJldHVybiB7czoge3I6ciwgYzpjfSwgZToge3I6UiwgYzpDfX07XG59XG5mdW5jdGlvbiB3cml0ZV9EaW1lbnNpb25zKHJhbmdlLCBvcHRzKSB7XG5cdHZhciB3ID0gb3B0cy5iaWZmID09IDggfHwgIW9wdHMuYmlmZiA/IDQgOiAyO1xuXHR2YXIgbyA9IG5ld19idWYoMip3ICsgNik7XG5cdG8ud3JpdGVfc2hpZnQodywgcmFuZ2Uucy5yKTtcblx0by53cml0ZV9zaGlmdCh3LCByYW5nZS5lLnIgKyAxKTtcblx0by53cml0ZV9zaGlmdCgyLCByYW5nZS5zLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHJhbmdlLmUuYyArIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjIyMCAqL1xuZnVuY3Rpb24gcGFyc2VfUksoYmxvYikge1xuXHR2YXIgcncgPSBibG9iLnJlYWRfc2hpZnQoMiksIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJrcmVjID0gcGFyc2VfUmtSZWMoYmxvYik7XG5cdHJldHVybiB7cjpydywgYzpjb2wsIGl4ZmU6cmtyZWNbMF0sIHJrbnVtOnJrcmVjWzFdfTtcbn1cblxuLyogW01TLVhMU10gMi40LjE3NSAqL1xuZnVuY3Rpb24gcGFyc2VfTXVsUmsoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGggLSAyO1xuXHR2YXIgcncgPSBibG9iLnJlYWRfc2hpZnQoMiksIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJrcmVjcyA9IFtdO1xuXHR3aGlsZShibG9iLmwgPCB0YXJnZXQpIHJrcmVjcy5wdXNoKHBhcnNlX1JrUmVjKGJsb2IpKTtcblx0aWYoYmxvYi5sICE9PSB0YXJnZXQpIHRocm93IG5ldyBFcnJvcihcIk11bFJLIHJlYWQgZXJyb3JcIik7XG5cdHZhciBsYXN0Y29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZihya3JlY3MubGVuZ3RoICE9IGxhc3Rjb2wgLSBjb2wgKyAxKSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxSSyBsZW5ndGggbWlzbWF0Y2hcIik7XG5cdHJldHVybiB7cjpydywgYzpjb2wsIEM6bGFzdGNvbCwgcmtyZWM6cmtyZWNzfTtcbn1cbi8qIFtNUy1YTFNdIDIuNC4xNzQgKi9cbmZ1bmN0aW9uIHBhcnNlX011bEJsYW5rKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoIC0gMjtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpeGZlcyA9IFtdO1xuXHR3aGlsZShibG9iLmwgPCB0YXJnZXQpIGl4ZmVzLnB1c2goYmxvYi5yZWFkX3NoaWZ0KDIpKTtcblx0aWYoYmxvYi5sICE9PSB0YXJnZXQpIHRocm93IG5ldyBFcnJvcihcIk11bEJsYW5rIHJlYWQgZXJyb3JcIik7XG5cdHZhciBsYXN0Y29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZihpeGZlcy5sZW5ndGggIT0gbGFzdGNvbCAtIGNvbCArIDEpIHRocm93IG5ldyBFcnJvcihcIk11bEJsYW5rIGxlbmd0aCBtaXNtYXRjaFwiKTtcblx0cmV0dXJuIHtyOnJ3LCBjOmNvbCwgQzpsYXN0Y29sLCBpeGZlOml4ZmVzfTtcbn1cblxuLyogW01TLVhMU10gMi41LjIwIDIuNS4yNDkgVE9ETzogaW50ZXJwcmV0IHZhbHVlcyBoZXJlICovXG5mdW5jdGlvbiBwYXJzZV9DZWxsU3R5bGVYRihibG9iLCBsZW5ndGgsIHN0eWxlLCBvcHRzKSB7XG5cdHZhciBvID0ge307XG5cdHZhciBhID0gYmxvYi5yZWFkX3NoaWZ0KDQpLCBiID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCg0KSwgZCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5wYXR0ZXJuVHlwZSA9IFhMU0ZpbGxQYXR0ZXJuW2MgPj4gMjZdO1xuXG5cdGlmKCFvcHRzLmNlbGxTdHlsZXMpIHJldHVybiBvO1xuXHRvLmFsYyA9IGEgJiAweDA3O1xuXHRvLmZXcmFwID0gKGEgPj4gMykgJiAweDAxO1xuXHRvLmFsY1YgPSAoYSA+PiA0KSAmIDB4MDc7XG5cdG8uZkp1c3RMYXN0ID0gKGEgPj4gNykgJiAweDAxO1xuXHRvLnRyb3QgPSAoYSA+PiA4KSAmIDB4RkY7XG5cdG8uY0luZGVudCA9IChhID4+IDE2KSAmIDB4MEY7XG5cdG8uZlNocmlua1RvRml0ID0gKGEgPj4gMjApICYgMHgwMTtcblx0by5pUmVhZE9yZGVyID0gKGEgPj4gMjIpICYgMHgwMjtcblx0by5mQXRyTnVtID0gKGEgPj4gMjYpICYgMHgwMTtcblx0by5mQXRyRm50ID0gKGEgPj4gMjcpICYgMHgwMTtcblx0by5mQXRyQWxjID0gKGEgPj4gMjgpICYgMHgwMTtcblx0by5mQXRyQmRyID0gKGEgPj4gMjkpICYgMHgwMTtcblx0by5mQXRyUGF0ID0gKGEgPj4gMzApICYgMHgwMTtcblx0by5mQXRyUHJvdCA9IChhID4+IDMxKSAmIDB4MDE7XG5cblx0by5kZ0xlZnQgPSBiICYgMHgwRjtcblx0by5kZ1JpZ2h0ID0gKGIgPj4gNCkgJiAweDBGO1xuXHRvLmRnVG9wID0gKGIgPj4gOCkgJiAweDBGO1xuXHRvLmRnQm90dG9tID0gKGIgPj4gMTIpICYgMHgwRjtcblx0by5pY3ZMZWZ0ID0gKGIgPj4gMTYpICYgMHg3Rjtcblx0by5pY3ZSaWdodCA9IChiID4+IDIzKSAmIDB4N0Y7XG5cdG8uZ3JiaXREaWFnID0gKGIgPj4gMzApICYgMHgwMztcblxuXHRvLmljdlRvcCA9IGMgJiAweDdGO1xuXHRvLmljdkJvdHRvbSA9IChjID4+IDcpICYgMHg3Rjtcblx0by5pY3ZEaWFnID0gKGMgPj4gMTQpICYgMHg3Rjtcblx0by5kZ0RpYWcgPSAoYyA+PiAyMSkgJiAweDBGO1xuXG5cdG8uaWN2Rm9yZSA9IGQgJiAweDdGO1xuXHRvLmljdkJhY2sgPSAoZCA+PiA3KSAmIDB4N0Y7XG5cdG8uZnN4QnV0dG9uID0gKGQgPj4gMTQpICYgMHgwMTtcblx0cmV0dXJuIG87XG59XG4vL2Z1bmN0aW9uIHBhcnNlX0NlbGxYRihibG9iLCBsZW5ndGgsIG9wdHMpIHtyZXR1cm4gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYixsZW5ndGgsMCwgb3B0cyk7fVxuLy9mdW5jdGlvbiBwYXJzZV9TdHlsZVhGKGJsb2IsIGxlbmd0aCwgb3B0cykge3JldHVybiBwYXJzZV9DZWxsU3R5bGVYRihibG9iLGxlbmd0aCwxLCBvcHRzKTt9XG5cbi8qIFtNUy1YTFNdIDIuNC4zNTMgVE9ETzogYWN0dWFsbHkgZG8gdGhpcyByaWdodCAqL1xuZnVuY3Rpb24gcGFyc2VfWEYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBvID0ge307XG5cdG8uaWZudCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgby5udW1GbXRJZCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgby5mbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5mU3R5bGUgPSAoby5mbGFncyA+PiAyKSAmIDB4MDE7XG5cdGxlbmd0aCAtPSA2O1xuXHRvLmRhdGEgPSBwYXJzZV9DZWxsU3R5bGVYRihibG9iLCBsZW5ndGgsIG8uZlN0eWxlLCBvcHRzKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9YRihkYXRhLCBpeGZlUCwgb3B0cywgbykge1xuXHR2YXIgYjUgPSAob3B0cyAmJiAob3B0cy5iaWZmID09IDUpKTtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKGI1ID8gMTYgOiAyMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdGlmKGRhdGEuc3R5bGUpIHtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIChkYXRhLm51bUZtdElkfHwwKSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRjQpO1xuXHR9IGVsc2Uge1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgKGRhdGEubnVtRm10SWR8fDApKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIChpeGZlUDw8NCkpO1xuXHR9XG5cdHZhciBmID0gMDtcblx0aWYoZGF0YS5udW1GbXRJZCA+IDAgJiYgYjUpIGYgfD0gMHgwNDAwO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRpZighYjUpIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTM0ICovXG5mdW5jdGlvbiBwYXJzZV9HdXRzKGJsb2IpIHtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBvdXQgPSBbYmxvYi5yZWFkX3NoaWZ0KDIpLCBibG9iLnJlYWRfc2hpZnQoMildO1xuXHRpZihvdXRbMF0gIT09IDApIG91dFswXS0tO1xuXHRpZihvdXRbMV0gIT09IDApIG91dFsxXS0tO1xuXHRpZihvdXRbMF0gPiA3IHx8IG91dFsxXSA+IDcpIHRocm93IG5ldyBFcnJvcihcIkJhZCBHdXR0ZXJzOiBcIiArIG91dC5qb2luKFwifFwiKSk7XG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9HdXRzKGd1dHMvKjpBcnJheTxudW1iZXI+Ki8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGd1dHNbMF0gPyBndXRzWzBdICsgMSA6IDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGd1dHNbMV0gPyBndXRzWzFdICsgMSA6IDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjI0ICovXG5mdW5jdGlvbiBwYXJzZV9Cb29sRXJyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdGlmKG9wdHMuYmlmZiA9PSAyIHx8IGxlbmd0aCA9PSA5KSArK2Jsb2IubDtcblx0dmFyIHZhbCA9IHBhcnNlX0JlcyhibG9iLCAyKTtcblx0Y2VsbC52YWwgPSB2YWw7XG5cdGNlbGwudCA9ICh2YWwgPT09IHRydWUgfHwgdmFsID09PSBmYWxzZSkgPyAnYicgOiAnZSc7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfQm9vbEVycihSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgdiwgb3MvKjpudW1iZXIqLywgb3B0cywgdC8qOnN0cmluZyovKSB7XG5cdHZhciBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdHdyaXRlX0Jlcyh2LCB0LCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODAgTnVtYmVyICovXG5mdW5jdGlvbiBwYXJzZV9OdW1iZXIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZmd1ZXNzICYmIG9wdHMuYmlmZiA9PSAyKSBvcHRzLmJpZmYgPSA1O1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdHZhciB4bnVtID0gcGFyc2VfWG51bShibG9iLCA4KTtcblx0Y2VsbC52YWwgPSB4bnVtO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX051bWJlcihSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgdiwgb3MvKjo6IDpudW1iZXIsIG9wdHMqLykge1xuXHR2YXIgbyA9IG5ld19idWYoMTQpO1xuXHR3cml0ZV9YTFNDZWxsKFIsIEMsIG9zLCBvKTtcblx0d3JpdGVfWG51bSh2LCBvKTtcblx0cmV0dXJuIG87XG59XG5cbnZhciBwYXJzZV9YTEhlYWRlckZvb3RlciA9IHBhcnNlX09wdFhMVW5pY29kZVN0cmluZzsgLy8gVE9ETzogcGFyc2UgMi40LjEzNlxuXG4vKiBbTVMtWExTXSAyLjQuMjcxICovXG5mdW5jdGlvbiBwYXJzZV9TdXBCb29rKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgY3RhYiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0b3B0cy5zYmNjaCA9IGNjaDtcblx0aWYoY2NoID09IDB4MDQwMSB8fCBjY2ggPT0gMHgzQTAxKSByZXR1cm4gW2NjaCwgY3RhYl07XG5cdGlmKGNjaCA8IDB4MDEgfHwgY2NoID4weGZmKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFN1cEJvb2sgdHlwZTogXCIrY2NoKTtcblx0dmFyIHZpcnRQYXRoID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoKTtcblx0LyogVE9ETzogMi41LjI3NyBWaXJ0dWFsIFBhdGggKi9cblx0dmFyIHJnc3QgPSBbXTtcblx0d2hpbGUoZW5kID4gYmxvYi5sKSByZ3N0LnB1c2gocGFyc2VfWExVbmljb2RlU3RyaW5nKGJsb2IpKTtcblx0cmV0dXJuIFtjY2gsIGN0YWIsIHZpcnRQYXRoLCByZ3N0XTtcbn1cblxuLyogW01TLVhMU10gMi40LjEwNSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9FeHRlcm5OYW1lKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBib2R5O1xuXHR2YXIgbyA9ICh7XG5cdFx0ZkJ1aWx0SW46IGZsYWdzICYgMHgwMSxcblx0XHRmV2FudEFkdmlzZTogKGZsYWdzID4+PiAxKSAmIDB4MDEsXG5cdFx0ZldhbnRQaWN0OiAoZmxhZ3MgPj4+IDIpICYgMHgwMSxcblx0XHRmT2xlOiAoZmxhZ3MgPj4+IDMpICYgMHgwMSxcblx0XHRmT2xlTGluazogKGZsYWdzID4+PiA0KSAmIDB4MDEsXG5cdFx0Y2Y6IChmbGFncyA+Pj4gNSkgJiAweDNGRixcblx0XHRmSWNvbjogZmxhZ3MgPj4+IDE1ICYgMHgwMVxuXHR9Lyo6YW55Ki8pO1xuXHRpZihvcHRzLnNiY2NoID09PSAweDNBMDEpIGJvZHkgPSBwYXJzZV9BZGRpblVkZihibG9iLCBsZW5ndGgtMiwgb3B0cyk7XG5cdC8vZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBTdXBCb29rIGNjaDogXCIgKyBvcHRzLnNiY2NoKTtcblx0by5ib2R5ID0gYm9keSB8fCBibG9iLnJlYWRfc2hpZnQobGVuZ3RoLTIpO1xuXHRpZih0eXBlb2YgYm9keSA9PT0gXCJzdHJpbmdcIikgby5OYW1lID0gYm9keTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNTAgVE9ETyAqL1xudmFyIFhMU0xibEJ1aWx0SW4gPSBbXG5cdFwiX3hsbm0uQ29uc29saWRhdGVfQXJlYVwiLFxuXHRcIl94bG5tLkF1dG9fT3BlblwiLFxuXHRcIl94bG5tLkF1dG9fQ2xvc2VcIixcblx0XCJfeGxubS5FeHRyYWN0XCIsXG5cdFwiX3hsbm0uRGF0YWJhc2VcIixcblx0XCJfeGxubS5Dcml0ZXJpYVwiLFxuXHRcIl94bG5tLlByaW50X0FyZWFcIixcblx0XCJfeGxubS5QcmludF9UaXRsZXNcIixcblx0XCJfeGxubS5SZWNvcmRlclwiLFxuXHRcIl94bG5tLkRhdGFfRm9ybVwiLFxuXHRcIl94bG5tLkF1dG9fQWN0aXZhdGVcIixcblx0XCJfeGxubS5BdXRvX0RlYWN0aXZhdGVcIixcblx0XCJfeGxubS5TaGVldF9UaXRsZVwiLFxuXHRcIl94bG5tLl9GaWx0ZXJEYXRhYmFzZVwiXG5dO1xuZnVuY3Rpb24gcGFyc2VfTGJsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjaEtleSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHR2YXIgaXRhYiA9IDA7XG5cdGlmKCFvcHRzIHx8IG9wdHMuYmlmZiA+PSA1KSB7XG5cdFx0aWYob3B0cy5iaWZmICE9IDUpIGJsb2IubCArPSAyO1xuXHRcdGl0YWIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYob3B0cy5iaWZmID09IDUpIGJsb2IubCArPSAyO1xuXHRcdGJsb2IubCArPSA0O1xuXHR9XG5cdHZhciBuYW1lID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoLCBvcHRzKTtcblx0aWYoZmxhZ3MgJiAweDIwKSBuYW1lID0gWExTTGJsQnVpbHRJbltuYW1lLmNoYXJDb2RlQXQoMCldO1xuXHR2YXIgbnBmbGVuID0gdGFyZ2V0IC0gYmxvYi5sOyBpZihvcHRzICYmIG9wdHMuYmlmZiA9PSAyKSAtLW5wZmxlbjtcblx0Lypqc2hpbnQgLVcwMTggKi9cblx0dmFyIHJnY2UgPSAodGFyZ2V0ID09IGJsb2IubCB8fCBjY2UgPT09IDAgfHwgIShucGZsZW4gPiAwKSkgPyBbXSA6IHBhcnNlX05hbWVQYXJzZWRGb3JtdWxhKGJsb2IsIG5wZmxlbiwgb3B0cywgY2NlKTtcblx0Lypqc2hpbnQgK1cwMTggKi9cblx0cmV0dXJuIHtcblx0XHRjaEtleTogY2hLZXksXG5cdFx0TmFtZTogbmFtZSxcblx0XHRpdGFiOiBpdGFiLFxuXHRcdHJnY2U6IHJnY2Vcblx0fTtcbn1cblxuLyogW01TLVhMU10gMi40LjEwNiBUT0RPOiB2ZXJpZnkgZmlsZW5hbWUgZW5jb2RpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX0V4dGVyblNoZWV0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm4gcGFyc2VfQklGRjVFeHRlcm5TaGVldChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgbyA9IFtdLCB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGgsIGxlbiA9IGJsb2IucmVhZF9zaGlmdChvcHRzLmJpZmYgPiA4ID8gNCA6IDIpO1xuXHR3aGlsZShsZW4tLSAhPT0gMCkgby5wdXNoKHBhcnNlX1hUSShibG9iLCBvcHRzLmJpZmYgPiA4ID8gMTIgOiA2LCBvcHRzKSk7XG5cdFx0Ly8gW2lTdXBCb29rLCBpdGFiRmlyc3QsIGl0YWJMYXN0XTtcblx0aWYoYmxvYi5sICE9IHRhcmdldCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIEV4dGVyblNoZWV0OiBcIiArIGJsb2IubCArIFwiICE9IFwiICsgdGFyZ2V0KTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CSUZGNUV4dGVyblNoZWV0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihibG9iW2Jsb2IubCArIDFdID09IDB4MDMpIGJsb2JbYmxvYi5sXSsrO1xuXHR2YXIgbyA9IHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHJldHVybiBvLmNoYXJDb2RlQXQoMCkgPT0gMHgwMyA/IG8uc2xpY2UoMSkgOiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTc2IFRPRE86IGNoZWNrIG9sZGVyIGJpZmYgKi9cbmZ1bmN0aW9uIHBhcnNlX05hbWVDbXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHsgYmxvYi5sICs9IGxlbmd0aDsgcmV0dXJuOyB9XG5cdHZhciBjY2hOYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY2NoQ29tbWVudCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIG5hbWUgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2hOYW1lLCBvcHRzKTtcblx0dmFyIGNvbW1lbnQgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2hDb21tZW50LCBvcHRzKTtcblx0cmV0dXJuIFtuYW1lLCBjb21tZW50XTtcbn1cblxuLyogW01TLVhMU10gMi40LjI2MCAqL1xuZnVuY3Rpb24gcGFyc2VfU2hyRm1sYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHJlZiA9IHBhcnNlX1JlZlUoYmxvYiwgNik7XG5cdGJsb2IubCsrO1xuXHR2YXIgY1VzZSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0bGVuZ3RoIC09IDg7XG5cdHJldHVybiBbcGFyc2VfU2hhcmVkUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpLCBjVXNlLCByZWZdO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNCBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9BcnJheShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHJlZiA9IHBhcnNlX1JlZihibG9iLCA2KTtcblx0LyogVE9ETzogZkFsd2F5c0NhbGMgKi9cblx0c3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgMjogYmxvYi5sICsrOyBsZW5ndGggLT0gNzsgYnJlYWs7XG5cdFx0Y2FzZSAzOiBjYXNlIDQ6IGJsb2IubCArPSAyOyBsZW5ndGggLT0gODsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogYmxvYi5sICs9IDY7IGxlbmd0aCAtPSAxMjtcblx0fVxuXHRyZXR1cm4gW3JlZiwgcGFyc2VfQXJyYXlQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cywgcmVmKV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNzMgKi9cbmZ1bmN0aW9uIHBhcnNlX01UUlNldHRpbmdzKGJsb2IpIHtcblx0dmFyIGZNVFJFbmFibGVkID0gYmxvYi5yZWFkX3NoaWZ0KDQpICE9PSAweDAwO1xuXHR2YXIgZlVzZXJTZXRUaHJlYWRDb3VudCA9IGJsb2IucmVhZF9zaGlmdCg0KSAhPT0gMHgwMDtcblx0dmFyIGNVc2VyVGhyZWFkQ291bnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBbZk1UUkVuYWJsZWQsIGZVc2VyU2V0VGhyZWFkQ291bnQsIGNVc2VyVGhyZWFkQ291bnRdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTg2IFRPRE86IEJJRkY1ICovXG5mdW5jdGlvbiBwYXJzZV9Ob3RlU2goYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHJldHVybjtcblx0dmFyIHJvdyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMiksIGlkT2JqID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgc3RBdXRob3IgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIDAsIG9wdHMpO1xuXHRpZihvcHRzLmJpZmYgPCA4KSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbe3I6cm93LGM6Y29sfSwgc3RBdXRob3IsIGlkT2JqLCBmbGFnc107XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNzkgKi9cbmZ1bmN0aW9uIHBhcnNlX05vdGUoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdC8qIFRPRE86IFN1cHBvcnQgcmV2aXNpb25zICovXG5cdHJldHVybiBwYXJzZV9Ob3RlU2goYmxvYiwgbGVuZ3RoLCBvcHRzKTtcbn1cblxuLyogW01TLVhMU10gMi40LjE2OCAqL1xuZnVuY3Rpb24gcGFyc2VfTWVyZ2VDZWxscyhibG9iLCBsZW5ndGgpLyo6QXJyYXk8UmFuZ2U+Ki8ge1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIGNtY3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHdoaWxlIChjbWNzLS0pIG1lcmdlcy5wdXNoKHBhcnNlX1JlZjhVKGJsb2IsbGVuZ3RoKSk7XG5cdHJldHVybiBtZXJnZXM7XG59XG5mdW5jdGlvbiB3cml0ZV9NZXJnZUNlbGxzKG1lcmdlcy8qOkFycmF5PFJhbmdlPiovKSB7XG5cdHZhciBvID0gbmV3X2J1ZigyICsgbWVyZ2VzLmxlbmd0aCAqIDgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIG1lcmdlcy5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbWVyZ2VzLmxlbmd0aDsgKytpKSB3cml0ZV9SZWY4VShtZXJnZXNbaV0sIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE4MSBUT0RPOiBwYXJzZSBhbGwgdGhlIHRoaW5ncyEgKi9cbmZ1bmN0aW9uIHBhcnNlX09iaihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPCA4KSByZXR1cm4gcGFyc2VfQklGRjVPYmooYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIGNtbyA9IHBhcnNlX0Z0Q21vKGJsb2IsIDIyKTsgLy8gaWQsIG90LCBmbGFnc1xuXHR2YXIgZnRzID0gcGFyc2VfRnRBcnJheShibG9iLCBsZW5ndGgtMjIsIGNtb1sxXSk7XG5cdHJldHVybiB7IGNtbzogY21vLCBmdDpmdHMgfTtcbn1cbi8qIGZyb20gb2xkZXIgc3BlYyAqL1xudmFyIHBhcnNlX0JJRkY1T1QgPSB7XG4weDA4OiBmdW5jdGlvbihibG9iLCBsZW5ndGgpIHtcblx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0YmxvYi5sICs9IDEwOyAvLyB0b2RvXG5cdHZhciBjZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDQ7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBjYlBpY3RGbWxhID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGdyYml0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNDtcblx0dmFyIGNjaE5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGJsb2IubCArPSBjY2hOYW1lOyAvLyBUT0RPOiBzdE5hbWVcblx0YmxvYi5sID0gdGd0OyAvLyBUT0RPOiBmbWxhXG5cdHJldHVybiB7IGZtdDpjZiB9O1xufVxufTtcblxuZnVuY3Rpb24gcGFyc2VfQklGRjVPYmooYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSA0OyAvL3ZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBvdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZ3JiaXQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBjb2xMID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZHhMID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgcndUID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZHlUID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY29sUiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR4UiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIHJ3QiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR5QiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGNiTWFjcm8gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA2O1xuXHRsZW5ndGggLT0gMzY7XG5cdHZhciBmdHMgPSBbXTtcblx0ZnRzLnB1c2goKHBhcnNlX0JJRkY1T1Rbb3RdfHxwYXJzZW5vb3ApKGJsb2IsIGxlbmd0aCwgb3B0cykpO1xuXHRyZXR1cm4geyBjbW86IFtpZCwgb3QsIGdyYml0XSwgZnQ6ZnRzIH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4zMjkgVE9ETzogcGFyc2UgcHJvcGVybHkgKi9cbmZ1bmN0aW9uIHBhcnNlX1R4TyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHMgPSBibG9iLmw7XG5cdHZhciB0ZXh0cyA9IFwiXCI7XG50cnkge1xuXHRibG9iLmwgKz0gNDtcblx0dmFyIG90ID0gKG9wdHMubGFzdG9ianx8e2NtbzpbMCwwXX0pLmNtb1sxXTtcblx0dmFyIGNvbnRyb2xJbmZvOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdGlmKFswLDUsNywxMSwxMiwxNF0uaW5kZXhPZihvdCkgPT0gLTEpIGJsb2IubCArPSA2O1xuXHRlbHNlIGNvbnRyb2xJbmZvID0gcGFyc2VfQ29udHJvbEluZm8oYmxvYiwgNiwgb3B0cyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0dmFyIGNjaFRleHQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdC8qdmFyIGNiUnVucyA9ICovYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHQvKnZhciBpZm50RW1wdHkgPSAqL3BhcnNldWludDE2KGJsb2IsIDIpO1xuXHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gbGVuO1xuXHQvL3ZhciBmbWxhID0gcGFyc2VfT2JqRm1sYShibG9iLCBzICsgbGVuZ3RoIC0gYmxvYi5sKTtcblxuXHRmb3IodmFyIGkgPSAxOyBpIDwgYmxvYi5sZW5zLmxlbmd0aC0xOyArK2kpIHtcblx0XHRpZihibG9iLmwtcyAhPSBibG9iLmxlbnNbaV0pIHRocm93IG5ldyBFcnJvcihcIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZFwiKTtcblx0XHR2YXIgaGRyID0gYmxvYltibG9iLmxdO1xuXHRcdHZhciB0ID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgYmxvYi5sZW5zW2krMV0tYmxvYi5sZW5zW2ldLTEpO1xuXHRcdHRleHRzICs9IHQ7XG5cdFx0aWYodGV4dHMubGVuZ3RoID49IChoZHIgPyBjY2hUZXh0IDogMipjY2hUZXh0KSkgYnJlYWs7XG5cdH1cblx0aWYodGV4dHMubGVuZ3RoICE9PSBjY2hUZXh0ICYmIHRleHRzLmxlbmd0aCAhPT0gY2NoVGV4dCoyKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiY2NoVGV4dDogXCIgKyBjY2hUZXh0ICsgXCIgIT0gXCIgKyB0ZXh0cy5sZW5ndGgpO1xuXHR9XG5cblx0YmxvYi5sID0gcyArIGxlbmd0aDtcblx0LyogW01TLVhMU10gMi41LjI3MiBUeE9SdW5zICovXG4vL1x0dmFyIHJnVHhvUnVucyA9IFtdO1xuLy9cdGZvcih2YXIgaiA9IDA7IGogIT0gY2JSdW5zLzgtMTsgKytqKSBibG9iLmwgKz0gODtcbi8vXHR2YXIgY2NoVGV4dDIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG4vL1x0aWYoY2NoVGV4dDIgIT09IGNjaFRleHQpIHRocm93IG5ldyBFcnJvcihcIlR4T0xhc3RSdW4gbWlzbWF0Y2g6IFwiICsgY2NoVGV4dDIgKyBcIiBcIiArIGNjaFRleHQpO1xuLy9cdGJsb2IubCArPSA2O1xuLy9cdGlmKHMgKyBsZW5ndGggIT0gYmxvYi5sKSB0aHJvdyBuZXcgRXJyb3IoXCJUeE8gXCIgKyAocyArIGxlbmd0aCkgKyBcIiwgYXQgXCIgKyBibG9iLmwpO1xuXHRyZXR1cm4geyB0OiB0ZXh0cyB9O1xufSBjYXRjaChlKSB7IGJsb2IubCA9IHMgKyBsZW5ndGg7IHJldHVybiB7IHQ6IHRleHRzIH07IH1cbn1cblxuLyogW01TLVhMU10gMi40LjE0MCAqL1xuZnVuY3Rpb24gcGFyc2VfSExpbmsoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciByZWYgPSBwYXJzZV9SZWY4VShibG9iLCA4KTtcblx0YmxvYi5sICs9IDE2OyAvKiBDTFNJRCAqL1xuXHR2YXIgaGxpbmsgPSBwYXJzZV9IeXBlcmxpbmsoYmxvYiwgbGVuZ3RoLTI0KTtcblx0cmV0dXJuIFtyZWYsIGhsaW5rXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0hMaW5rKGhsKSB7XG5cdHZhciBPID0gbmV3X2J1ZigyNCk7XG5cdHZhciByZWYgPSBkZWNvZGVfY2VsbChobFswXSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLnIpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTtcblx0Ty53cml0ZV9zaGlmdCgyLCByZWYuYyk7IE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpO1xuXHR2YXIgY2xzaWQgPSBcImQwIGM5IGVhIDc5IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiXCIuc3BsaXQoXCIgXCIpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgTy53cml0ZV9zaGlmdCgxLCBwYXJzZUludChjbHNpZFtpXSwgMTYpKTtcblx0cmV0dXJuIGJjb25jYXQoW08sIHdyaXRlX0h5cGVybGluayhobFsxXSldKTtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMTQxICovXG5mdW5jdGlvbiBwYXJzZV9ITGlua1Rvb2x0aXAoYmxvYiwgbGVuZ3RoKSB7XG5cdGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJlZiA9IHBhcnNlX1JlZjhVKGJsb2IsIDgpO1xuXHR2YXIgd3pUb29sdGlwID0gYmxvYi5yZWFkX3NoaWZ0KChsZW5ndGgtMTApLzIsICdkYmNzLWNvbnQnKTtcblx0d3pUb29sdGlwID0gd3pUb29sdGlwLnJlcGxhY2UoY2hyMCxcIlwiKTtcblx0cmV0dXJuIFtyZWYsIHd6VG9vbHRpcF07XG59XG5mdW5jdGlvbiB3cml0ZV9ITGlua1Rvb2x0aXAoaGwpIHtcblx0dmFyIFRUID0gaGxbMV0uVG9vbHRpcDtcblx0dmFyIE8gPSBuZXdfYnVmKDEwICsgMiAqIChUVC5sZW5ndGggKyAxKSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgMHgwODAwKTtcblx0dmFyIHJlZiA9IGRlY29kZV9jZWxsKGhsWzBdKTtcblx0Ty53cml0ZV9zaGlmdCgyLCByZWYucik7IE8ud3JpdGVfc2hpZnQoMiwgcmVmLnIpO1xuXHRPLndyaXRlX3NoaWZ0KDIsIHJlZi5jKTsgTy53cml0ZV9zaGlmdCgyLCByZWYuYyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBUVC5sZW5ndGg7ICsraSkgTy53cml0ZV9zaGlmdCgyLCBUVC5jaGFyQ29kZUF0KGkpKTtcblx0Ty53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIE87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC42MyAqL1xuZnVuY3Rpb24gcGFyc2VfQ291bnRyeShibG9iKS8qOltzdHJpbmd8bnVtYmVyLCBzdHJpbmd8bnVtYmVyXSovIHtcblx0dmFyIG8gPSBbMCwwXSwgZDtcblx0ZCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1swXSA9IENvdW50cnlFbnVtW2RdIHx8IGQ7XG5cdGQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG9bMV0gPSBDb3VudHJ5RW51bVtkXSB8fCBkO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0NvdW50cnkobykge1xuXHRpZighbykgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgwMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgwMSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNTAgQ2xydENsaWVudCAqL1xuZnVuY3Rpb24gcGFyc2VfQ2xydENsaWVudChibG9iKSB7XG5cdHZhciBjY3YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBvID0gW107XG5cdHdoaWxlKGNjdi0tPjApIG8ucHVzaChwYXJzZV9Mb25nUkdCKGJsb2IsIDgpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODggKi9cbmZ1bmN0aW9uIHBhcnNlX1BhbGV0dGUoYmxvYikge1xuXHR2YXIgY2N2ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbyA9IFtdO1xuXHR3aGlsZShjY3YtLT4wKSBvLnB1c2gocGFyc2VfTG9uZ1JHQihibG9iLCA4KSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMzU0ICovXG5mdW5jdGlvbiBwYXJzZV9YRkNSQyhibG9iKSB7XG5cdGJsb2IubCArPSAyO1xuXHR2YXIgbyA9IHtjeGZzOjAsIGNyYzowfTtcblx0by5jeGZzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLmNyYyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC41MyBUT0RPOiBwYXJzZSBmbGFncyAqL1xuLyogW01TLVhMU0JdIDIuNC4zMjMgVE9ETzogcGFyc2UgZmxhZ3MgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbEluZm8oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKCFvcHRzLmNlbGxTdHlsZXMpIHJldHVybiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKTtcblx0dmFyIHcgPSBvcHRzICYmIG9wdHMuYmlmZiA+PSAxMiA/IDQgOiAyO1xuXHR2YXIgY29sRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBjb2xMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgY29sZHggPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBpeGZlID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKHcgPT0gMikgYmxvYi5sICs9IDI7XG5cdHZhciBvID0gKHtzOmNvbEZpcnN0LCBlOmNvbExhc3QsIHc6Y29sZHgsIGl4ZmU6aXhmZSwgZmxhZ3M6ZmxhZ3N9Lyo6YW55Ki8pO1xuXHRpZihvcHRzLmJpZmYgPj0gNSB8fCAhb3B0cy5iaWZmKSBvLmxldmVsID0gKGZsYWdzID4+IDgpICYgMHg3O1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0NvbEluZm8oY29sLCBpZHgpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDEyKTtcblx0by53cml0ZV9zaGlmdCgyLCBpZHgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGlkeCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgY29sLndpZHRoICogMjU2KTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0dmFyIGYgPSAwO1xuXHRpZihjb2wuaGlkZGVuKSBmIHw9IDE7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZik7XG5cdGYgPSBjb2wubGV2ZWwgfHwgMDtcblx0by53cml0ZV9zaGlmdCgxLCBmKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNTcgKi9cbmZ1bmN0aW9uIHBhcnNlX1NldHVwKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgbyA9IHt9O1xuXHRpZihsZW5ndGggPCAzMikgcmV0dXJuIG87XG5cdGJsb2IubCArPSAxNjtcblx0by5oZWFkZXIgPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRvLmZvb3RlciA9IHBhcnNlX1hudW0oYmxvYiwgOCk7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjI2MSAqL1xuZnVuY3Rpb24gcGFyc2VfU2h0UHJvcHMoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBkZWYgPSB7YXJlYTpmYWxzZX07XG5cdGlmKG9wdHMuYmlmZiAhPSA1KSB7IGJsb2IubCArPSBsZW5ndGg7IHJldHVybiBkZWY7IH1cblx0dmFyIGQgPSBibG9iLnJlYWRfc2hpZnQoMSk7IGJsb2IubCArPSAzO1xuXHRpZigoZCAmIDB4MTApKSBkZWYuYXJlYSA9IHRydWU7XG5cdHJldHVybiBkZWY7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNDEgKi9cbmZ1bmN0aW9uIHdyaXRlX1JSVGFiSWQobi8qOm51bWJlciovKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDIgKiBuKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG47ICsraSkgb3V0LndyaXRlX3NoaWZ0KDIsIGkrMSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbnZhciBwYXJzZV9CbGFuayA9IHBhcnNlX1hMU0NlbGw7IC8qIFtNUy1YTFNdIDIuNC4yMCBKdXN0IHRoZSBjZWxsICovXG52YXIgcGFyc2VfU2NsID0gcGFyc2V1aW50MTZhOyAvKiBbTVMtWExTXSAyLjQuMjQ3IG51bSwgZGVuICovXG52YXIgcGFyc2VfU3RyaW5nID0gcGFyc2VfWExVbmljb2RlU3RyaW5nOyAvKiBbTVMtWExTXSAyLjQuMjY4ICovXG5cbi8qIC0tLSBTcGVjaWZpYyB0byB2ZXJzaW9ucyBiZWZvcmUgQklGRjggLS0tICovXG5mdW5jdGlvbiBwYXJzZV9JbURhdGEoYmxvYikge1xuXHR2YXIgY2YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBlbnYgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBsY2IgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBvID0ge2ZtdDpjZiwgZW52OmVudiwgbGVuOmxjYiwgZGF0YTpibG9iLnNsaWNlKGJsb2IubCxibG9iLmwrbGNiKX07XG5cdGJsb2IubCArPSBsY2I7XG5cdHJldHVybiBvO1xufVxuXG4vKiBCSUZGMl8/Pz8gd2hlcmUgPz8/IGlzIHRoZSBuYW1lIGZyb20gW1hMU10gKi9cbmZ1bmN0aW9uIHBhcnNlX0JJRkYyU1RSKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmZndWVzcyAmJiBvcHRzLmJpZmYgPT0gNSkgb3B0cy5iaWZmID0gMjtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHQrK2Jsb2IubDtcblx0dmFyIHN0ciA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgbGVuZ3RoLTcsIG9wdHMpO1xuXHRjZWxsLnQgPSAnc3RyJztcblx0Y2VsbC52YWwgPSBzdHI7XG5cdHJldHVybiBjZWxsO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CSUZGMk5VTShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHQrK2Jsb2IubDtcblx0dmFyIG51bSA9IHBhcnNlX1hudW0oYmxvYiwgOCk7XG5cdGNlbGwudCA9ICduJztcblx0Y2VsbC52YWwgPSBudW07XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfQklGRjJOVU0oci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbC8qOm51bWJlciovKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDE1KTtcblx0d3JpdGVfQklGRjJDZWxsKG91dCwgciwgYyk7XG5cdG91dC53cml0ZV9zaGlmdCg4LCB2YWwsICdmJyk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkYySU5UKGJsb2IpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHQrK2Jsb2IubDtcblx0dmFyIG51bSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0Y2VsbC50ID0gJ24nO1xuXHRjZWxsLnZhbCA9IG51bTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9CSUZGMklOVChyLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLywgdmFsLyo6bnVtYmVyKi8pIHtcblx0dmFyIG91dCA9IG5ld19idWYoOSk7XG5cdHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIsIGMpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgdmFsKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQklGRjJTVFJJTkcoYmxvYikge1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihjY2ggPT09IDApIHsgYmxvYi5sKys7IHJldHVybiBcIlwiOyB9XG5cdHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAnc2Jjcy1jb250Jyk7XG59XG5cbi8qIFRPRE86IGNvbnZlcnQgdG8gQklGRjggZm9udCBzdHJ1Y3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0JJRkYyRk9OVFhUUkEoYmxvYiwgbGVuZ3RoKSB7XG5cdGJsb2IubCArPSA2OyAvLyB1bmtub3duXG5cdGJsb2IubCArPSAyOyAvLyBmb250IHdlaWdodCBcImJsc1wiXG5cdGJsb2IubCArPSAxOyAvLyBjaGFyc2V0XG5cdGJsb2IubCArPSAzOyAvLyB1bmtub3duXG5cdGJsb2IubCArPSAxOyAvLyBmb250IGZhbWlseVxuXHRibG9iLmwgKz0gbGVuZ3RoIC0gMTM7XG59XG5cbi8qIFRPRE86IHBhcnNlIHJpY2ggdGV4dCBydW5zICovXG5mdW5jdGlvbiBwYXJzZV9SU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2gsIG9wdHMpO1xuXHRibG9iLmwgPSBlbmQ7XG5cdGNlbGwudCA9ICdzdHInO1xuXHRjZWxsLnZhbCA9IHN0cjtcblx0cmV0dXJuIGNlbGw7XG59XG4vKiBmcm9tIGpzLWhhcmIgKEMpIDIwMTQtcHJlc2VudCAgU2hlZXRKUyAqL1xudmFyIERCRl9TVVBQT1JURURfVkVSU0lPTlMgPSBbMHgwMiwgMHgwMywgMHgzMCwgMHgzMSwgMHg4MywgMHg4QiwgMHg4QywgMHhGNV07XG52YXIgREJGID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcbnZhciBkYmZfY29kZXBhZ2VfbWFwID0ge1xuXHQvKiBDb2RlIFBhZ2VzIFN1cHBvcnRlZCBieSBWaXN1YWwgRm94UHJvICovXG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgwMi8qOjpdKi86ICAgODUwLFxuXHQvKjo6WyovMHgwMy8qOjpdKi86ICAxMjUyLCAgICAgICAgICAgLyo6OlsqLzB4MDQvKjo6XSovOiAxMDAwMCxcblx0Lyo6OlsqLzB4NjQvKjo6XSovOiAgIDg1MiwgICAgICAgICAgIC8qOjpbKi8weDY1Lyo6Ol0qLzogICA4NjYsXG5cdC8qOjpbKi8weDY2Lyo6Ol0qLzogICA4NjUsICAgICAgICAgICAvKjo6WyovMHg2Ny8qOjpdKi86ICAgODYxLFxuXHQvKjo6WyovMHg2OC8qOjpdKi86ICAgODk1LCAgICAgICAgICAgLyo6OlsqLzB4NjkvKjo6XSovOiAgIDYyMCxcblx0Lyo6OlsqLzB4NkEvKjo6XSovOiAgIDczNywgICAgICAgICAgIC8qOjpbKi8weDZCLyo6Ol0qLzogICA4NTcsXG5cdC8qOjpbKi8weDc4Lyo6Ol0qLzogICA5NTAsICAgICAgICAgICAvKjo6WyovMHg3OS8qOjpdKi86ICAgOTQ5LFxuXHQvKjo6WyovMHg3QS8qOjpdKi86ICAgOTM2LCAgICAgICAgICAgLyo6OlsqLzB4N0IvKjo6XSovOiAgIDkzMixcblx0Lyo6OlsqLzB4N0MvKjo6XSovOiAgIDg3NCwgICAgICAgICAgIC8qOjpbKi8weDdELyo6Ol0qLzogIDEyNTUsXG5cdC8qOjpbKi8weDdFLyo6Ol0qLzogIDEyNTYsICAgICAgICAgICAvKjo6WyovMHg5Ni8qOjpdKi86IDEwMDA3LFxuXHQvKjo6WyovMHg5Ny8qOjpdKi86IDEwMDI5LCAgICAgICAgICAgLyo6OlsqLzB4OTgvKjo6XSovOiAxMDAwNixcblx0Lyo6OlsqLzB4QzgvKjo6XSovOiAgMTI1MCwgICAgICAgICAgIC8qOjpbKi8weEM5Lyo6Ol0qLzogIDEyNTEsXG5cdC8qOjpbKi8weENBLyo6Ol0qLzogIDEyNTQsICAgICAgICAgICAvKjo6WyovMHhDQi8qOjpdKi86ICAxMjUzLFxuXG5cdC8qIHNoYXBlZmlsZSBEQkYgZXh0ZW5zaW9uICovXG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogMjAxMjcsICAgICAgICAgICAvKjo6WyovMHgwOC8qOjpdKi86ICAgODY1LFxuXHQvKjo6WyovMHgwOS8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MEEvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDBELyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDBFLyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgwRi8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MTEvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MTIvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDEzLyo6Ol0qLzogICA5MzIsXG5cdC8qOjpbKi8weDE0Lyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxNS8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxNi8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MTcvKjo6XSovOiAgIDg2NSxcblx0Lyo6OlsqLzB4MTgvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDE5Lyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDFBLyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxQi8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxQy8qOjpdKi86ICAgODYzLCAgICAgICAgICAgLyo6OlsqLzB4MUQvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MUYvKjo6XSovOiAgIDg1MiwgICAgICAgICAgIC8qOjpbKi8weDIyLyo6Ol0qLzogICA4NTIsXG5cdC8qOjpbKi8weDIzLyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHgyNC8qOjpdKi86ICAgODYwLFxuXHQvKjo6WyovMHgyNS8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MjYvKjo6XSovOiAgIDg2Nixcblx0Lyo6OlsqLzB4MzcvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDQwLyo6Ol0qLzogICA4NTIsXG5cdC8qOjpbKi8weDRELyo6Ol0qLzogICA5MzYsICAgICAgICAgICAvKjo6WyovMHg0RS8qOjpdKi86ICAgOTQ5LFxuXHQvKjo6WyovMHg0Ri8qOjpdKi86ICAgOTUwLCAgICAgICAgICAgLyo6OlsqLzB4NTAvKjo6XSovOiAgIDg3NCxcblx0Lyo6OlsqLzB4NTcvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDU4Lyo6Ol0qLzogIDEyNTIsXG5cdC8qOjpbKi8weDU5Lyo6Ol0qLzogIDEyNTIsICAgICAgICAgICAvKjo6WyovMHg2Qy8qOjpdKi86ICAgODYzLFxuXHQvKjo6WyovMHg4Ni8qOjpdKi86ICAgNzM3LCAgICAgICAgICAgLyo6OlsqLzB4ODcvKjo6XSovOiAgIDg1Mixcblx0Lyo6OlsqLzB4ODgvKjo6XSovOiAgIDg1NywgICAgICAgICAgIC8qOjpbKi8weENDLyo6Ol0qLzogIDEyNTcsXG5cblx0Lyo6OlsqLzB4RkYvKjo6XSovOiAxNjk2OVxufTtcbnZhciBkYmZfcmV2ZXJzZV9tYXAgPSBldmVydCh7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgwMi8qOjpdKi86ICAgODUwLFxuXHQvKjo6WyovMHgwMy8qOjpdKi86ICAxMjUyLCAgICAgICAgICAgLyo6OlsqLzB4MDQvKjo6XSovOiAxMDAwMCxcblx0Lyo6OlsqLzB4NjQvKjo6XSovOiAgIDg1MiwgICAgICAgICAgIC8qOjpbKi8weDY1Lyo6Ol0qLzogICA4NjYsXG5cdC8qOjpbKi8weDY2Lyo6Ol0qLzogICA4NjUsICAgICAgICAgICAvKjo6WyovMHg2Ny8qOjpdKi86ICAgODYxLFxuXHQvKjo6WyovMHg2OC8qOjpdKi86ICAgODk1LCAgICAgICAgICAgLyo6OlsqLzB4NjkvKjo6XSovOiAgIDYyMCxcblx0Lyo6OlsqLzB4NkEvKjo6XSovOiAgIDczNywgICAgICAgICAgIC8qOjpbKi8weDZCLyo6Ol0qLzogICA4NTcsXG5cdC8qOjpbKi8weDc4Lyo6Ol0qLzogICA5NTAsICAgICAgICAgICAvKjo6WyovMHg3OS8qOjpdKi86ICAgOTQ5LFxuXHQvKjo6WyovMHg3QS8qOjpdKi86ICAgOTM2LCAgICAgICAgICAgLyo6OlsqLzB4N0IvKjo6XSovOiAgIDkzMixcblx0Lyo6OlsqLzB4N0MvKjo6XSovOiAgIDg3NCwgICAgICAgICAgIC8qOjpbKi8weDdELyo6Ol0qLzogIDEyNTUsXG5cdC8qOjpbKi8weDdFLyo6Ol0qLzogIDEyNTYsICAgICAgICAgICAvKjo6WyovMHg5Ni8qOjpdKi86IDEwMDA3LFxuXHQvKjo6WyovMHg5Ny8qOjpdKi86IDEwMDI5LCAgICAgICAgICAgLyo6OlsqLzB4OTgvKjo6XSovOiAxMDAwNixcblx0Lyo6OlsqLzB4QzgvKjo6XSovOiAgMTI1MCwgICAgICAgICAgIC8qOjpbKi8weEM5Lyo6Ol0qLzogIDEyNTEsXG5cdC8qOjpbKi8weENBLyo6Ol0qLzogIDEyNTQsICAgICAgICAgICAvKjo6WyovMHhDQi8qOjpdKi86ICAxMjUzLFxuXHQvKjo6WyovMHgwMC8qOjpdKi86IDIwMTI3XG59KTtcbi8qIFRPRE86IGZpbmQgYW4gYWN0dWFsIHNwZWNpZmljYXRpb24gKi9cbmZ1bmN0aW9uIGRiZl90b19hb2EoYnVmLCBvcHRzKS8qOkFPQSovIHtcblx0dmFyIG91dC8qOkFPQSovID0gW107XG5cdHZhciBkLyo6QmxvY2sqLyA9IChuZXdfcmF3X2J1ZigxKS8qOmFueSovKTtcblx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IGQgPSBzMmEoQmFzZTY0X2RlY29kZShidWYpKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYmluYXJ5JzogZCA9IHMyYShidWYpOyBicmVhaztcblx0XHRjYXNlICdidWZmZXInOlxuXHRcdGNhc2UgJ2FycmF5JzogZCA9IGJ1ZjsgYnJlYWs7XG5cdH1cblx0cHJlcF9ibG9iKGQsIDApO1xuXG5cdC8qIGhlYWRlciAqL1xuXHR2YXIgZnQgPSBkLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBtZW1vID0gISEoZnQgJiAweDg4KTtcblx0dmFyIHZmcCA9IGZhbHNlLCBsNyA9IGZhbHNlO1xuXHRzd2l0Y2goZnQpIHtcblx0XHRjYXNlIDB4MDI6IGJyZWFrOyAvLyBkQkFTRSBJSVxuXHRcdGNhc2UgMHgwMzogYnJlYWs7IC8vIGRCQVNFIElJSVxuXHRcdGNhc2UgMHgzMDogdmZwID0gdHJ1ZTsgbWVtbyA9IHRydWU7IGJyZWFrOyAvLyBWRlBcblx0XHRjYXNlIDB4MzE6IHZmcCA9IHRydWU7IG1lbW8gPSB0cnVlOyBicmVhazsgLy8gVkZQIHdpdGggYXV0b2luY3JlbWVudFxuXHRcdC8vIDB4NDMgZEJBU0UgSVYgU1FMIHRhYmxlIGZpbGVzXG5cdFx0Ly8gMHg2MyBkQkFTRSBJViBTUUwgc3lzdGVtIGZpbGVzXG5cdFx0Y2FzZSAweDgzOiBicmVhazsgLy8gZEJBU0UgSUlJIHdpdGggbWVtb1xuXHRcdGNhc2UgMHg4QjogYnJlYWs7IC8vIGRCQVNFIElWIHdpdGggbWVtb1xuXHRcdGNhc2UgMHg4QzogbDcgPSB0cnVlOyBicmVhazsgLy8gZEJBU0UgTGV2ZWwgNyB3aXRoIG1lbW9cblx0XHQvLyBjYXNlIDB4Q0IgZEJBU0UgSVYgU1FMIHRhYmxlIGZpbGVzIHdpdGggbWVtb1xuXHRcdGNhc2UgMHhGNTogYnJlYWs7IC8vIEZveFBybyAyLnggd2l0aCBtZW1vXG5cdFx0Ly8gY2FzZSAweEZCIEZveEJBU0Vcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogXCIgKyBmdC50b1N0cmluZygxNikpO1xuXHR9XG5cblx0dmFyIG5yb3cgPSAwLCBmcG9zID0gMHgwMjA5O1xuXHRpZihmdCA9PSAweDAyKSBucm93ID0gZC5yZWFkX3NoaWZ0KDIpO1xuXHRkLmwgKz0gMzsgLy8gZEJBU0UgSUkgc3RvcmVzIERETU1ZWSBkYXRlLCBvdGhlcnMgdXNlIFlZTU1ERFxuXHRpZihmdCAhPSAweDAyKSBucm93ID0gZC5yZWFkX3NoaWZ0KDQpO1xuXHRpZihucm93ID4gMTA0ODU3NikgbnJvdyA9IDFlNjtcblxuXHRpZihmdCAhPSAweDAyKSBmcG9zID0gZC5yZWFkX3NoaWZ0KDIpOyAvLyBoZWFkZXIgbGVuZ3RoXG5cdHZhciBybGVuID0gZC5yZWFkX3NoaWZ0KDIpOyAvLyByZWNvcmQgbGVuZ3RoXG5cblx0dmFyIC8qZmxhZ3MgPSAwLCovIGN1cnJlbnRfY3AgPSBvcHRzLmNvZGVwYWdlIHx8IDEyNTI7XG5cdGlmKGZ0ICE9IDB4MDIpIHsgLy8gMjAgcmVzZXJ2ZWQgYnl0ZXNcblx0XHRkLmwrPTE2O1xuXHRcdC8qZmxhZ3MgPSAqL2QucmVhZF9zaGlmdCgxKTtcblx0XHQvL2lmKG1lbW8gJiYgKChmbGFncyAmIDB4MDIpID09PSAwKSkgdGhyb3cgbmV3IEVycm9yKFwiREJGIEZsYWdzIFwiICsgZmxhZ3MudG9TdHJpbmcoMTYpICsgXCIgZnQgXCIgKyBmdC50b1N0cmluZygxNikpO1xuXG5cdFx0LyogY29kZXBhZ2UgcHJlc2VudCBpbiBGb3hQcm8gYW5kIGRCQVNFIExldmVsIDcgKi9cblx0XHRpZihkW2QubF0gIT09IDApIGN1cnJlbnRfY3AgPSBkYmZfY29kZXBhZ2VfbWFwW2RbZC5sXV07XG5cdFx0ZC5sKz0xO1xuXG5cdFx0ZC5sKz0yO1xuXHR9XG5cdGlmKGw3KSBkLmwgKz0gMzY7IC8vIExldmVsIDc6IDMyIGJ5dGUgXCJMYW5ndWFnZSBkcml2ZXIgbmFtZVwiLCA0IGJ5dGUgcmVzZXJ2ZWRcblxuLyo6OiB0eXBlIERCRkZpZWxkID0geyBuYW1lOnN0cmluZzsgbGVuOm51bWJlcjsgdHlwZTpzdHJpbmc7IH0gKi9cblx0dmFyIGZpZWxkcy8qOkFycmF5PERCRkZpZWxkPiovID0gW10sIGZpZWxkLyo6REJGRmllbGQqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGhlbmQgPSBNYXRoLm1pbihkLmxlbmd0aCwgKGZ0ID09IDB4MDIgPyAweDIwOSA6IChmcG9zIC0gMTAgLSAodmZwID8gMjY0IDogMCkpKSk7XG5cdHZhciB3dyA9IGw3ID8gMzIgOiAxMTtcblx0d2hpbGUoZC5sIDwgaGVuZCAmJiBkW2QubF0gIT0gMHgwZCkge1xuXHRcdGZpZWxkID0gKHt9Lyo6YW55Ki8pO1xuXHRcdGZpZWxkLm5hbWUgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jcCwgZC5zbGljZShkLmwsIGQubCt3dykpLnJlcGxhY2UoL1tcXHUwMDAwXFxyXFxuXS4qJC9nLFwiXCIpO1xuXHRcdGQubCArPSB3dztcblx0XHRmaWVsZC50eXBlID0gU3RyaW5nLmZyb21DaGFyQ29kZShkLnJlYWRfc2hpZnQoMSkpO1xuXHRcdGlmKGZ0ICE9IDB4MDIgJiYgIWw3KSBmaWVsZC5vZmZzZXQgPSBkLnJlYWRfc2hpZnQoNCk7XG5cdFx0ZmllbGQubGVuID0gZC5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKGZ0ID09IDB4MDIpIGZpZWxkLm9mZnNldCA9IGQucmVhZF9zaGlmdCgyKTtcblx0XHRmaWVsZC5kZWMgPSBkLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYoZmllbGQubmFtZS5sZW5ndGgpIGZpZWxkcy5wdXNoKGZpZWxkKTtcblx0XHRpZihmdCAhPSAweDAyKSBkLmwgKz0gbDcgPyAxMyA6IDE0O1xuXHRcdHN3aXRjaChmaWVsZC50eXBlKSB7XG5cdFx0XHRjYXNlICdCJzogLy8gRG91YmxlIChWRlApIC8gQmluYXJ5IChkQkFTRSBMNylcblx0XHRcdFx0aWYoKCF2ZnAgfHwgZmllbGQubGVuICE9IDgpICYmIG9wdHMuV1RGKSBjb25zb2xlLmxvZygnU2tpcHBpbmcgJyArIGZpZWxkLm5hbWUgKyAnOicgKyBmaWVsZC50eXBlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdHJzogLy8gR2VuZXJhbCAoRm94UHJvIGFuZCBkQkFTRSBMNylcblx0XHRcdGNhc2UgJ1AnOiAvLyBQaWN0dXJlIChGb3hQcm8gYW5kIGRCQVNFIEw3KVxuXHRcdFx0XHRpZihvcHRzLldURikgY29uc29sZS5sb2coJ1NraXBwaW5nICcgKyBmaWVsZC5uYW1lICsgJzonICsgZmllbGQudHlwZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnKyc6IC8vIEF1dG9pbmNyZW1lbnQgKGRCQVNFIEw3IG9ubHkpXG5cdFx0XHRjYXNlICcwJzogLy8gX051bGxGbGFncyAoVkZQIG9ubHkpXG5cdFx0XHRjYXNlICdAJzogLy8gVGltZXN0YW1wIChkQkFTRSBMNyBvbmx5KVxuXHRcdFx0Y2FzZSAnQyc6IC8vIENoYXJhY3RlciAoZEJBU0UgSUkpXG5cdFx0XHRjYXNlICdEJzogLy8gRGF0ZSAoZEJBU0UgSUlJKVxuXHRcdFx0Y2FzZSAnRic6IC8vIEZsb2F0IChkQkFTRSBJVilcblx0XHRcdGNhc2UgJ0knOiAvLyBMb25nIChWRlAgYW5kIGRCQVNFIEw3KVxuXHRcdFx0Y2FzZSAnTCc6IC8vIExvZ2ljYWwgKGRCQVNFIElJKVxuXHRcdFx0Y2FzZSAnTSc6IC8vIE1lbW8gKGRCQVNFIElJSSlcblx0XHRcdGNhc2UgJ04nOiAvLyBOdW1iZXIgKGRCQVNFIElJKVxuXHRcdFx0Y2FzZSAnTyc6IC8vIERvdWJsZSAoZEJBU0UgTDcgb25seSlcblx0XHRcdGNhc2UgJ1QnOiAvLyBEYXRldGltZSAoVkZQIG9ubHkpXG5cdFx0XHRjYXNlICdZJzogLy8gQ3VycmVuY3kgKFZGUCBvbmx5KVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5rbm93biBGaWVsZCBUeXBlOiAnICsgZmllbGQudHlwZSk7XG5cdFx0fVxuXHR9XG5cblx0aWYoZFtkLmxdICE9PSAweDBEKSBkLmwgPSBmcG9zLTE7XG5cdGlmKGQucmVhZF9zaGlmdCgxKSAhPT0gMHgwRCkgdGhyb3cgbmV3IEVycm9yKFwiREJGIFRlcm1pbmF0b3Igbm90IGZvdW5kIFwiICsgZC5sICsgXCIgXCIgKyBkW2QubF0pO1xuXHRkLmwgPSBmcG9zO1xuXG5cdC8qIGRhdGEgKi9cblx0dmFyIFIgPSAwLCBDID0gMDtcblx0b3V0WzBdID0gW107XG5cdGZvcihDID0gMDsgQyAhPSBmaWVsZHMubGVuZ3RoOyArK0MpIG91dFswXVtDXSA9IGZpZWxkc1tDXS5uYW1lO1xuXHR3aGlsZShucm93LS0gPiAwKSB7XG5cdFx0aWYoZFtkLmxdID09PSAweDJBKSB7XG5cdFx0XHQvLyBUT0RPOiByZWNvcmQgbWFya2VkIGFzIGRlbGV0ZWQgLS0gY3JlYXRlIGEgaGlkZGVuIHJvdz9cblx0XHRcdGQubCs9cmxlbjtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHQrK2QubDtcblx0XHRvdXRbKytSXSA9IFtdOyBDID0gMDtcblx0XHRmb3IoQyA9IDA7IEMgIT0gZmllbGRzLmxlbmd0aDsgKytDKSB7XG5cdFx0XHR2YXIgZGQgPSBkLnNsaWNlKGQubCwgZC5sK2ZpZWxkc1tDXS5sZW4pOyBkLmwrPWZpZWxkc1tDXS5sZW47XG5cdFx0XHRwcmVwX2Jsb2IoZGQsIDApO1xuXHRcdFx0dmFyIHMgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jcCwgZGQpO1xuXHRcdFx0c3dpdGNoKGZpZWxkc1tDXS50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ0MnOlxuXHRcdFx0XHRcdC8vIE5PVEU6IGl0IGlzIGNvbnZlbnRpb25hbCB0byB3cml0ZSAnICAvICAvICAnIGZvciBlbXB0eSBkYXRlc1xuXHRcdFx0XHRcdGlmKHMudHJpbSgpLmxlbmd0aCkgb3V0W1JdW0NdID0gcy5yZXBsYWNlKC9cXHMrJC8sXCJcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0QnOlxuXHRcdFx0XHRcdGlmKHMubGVuZ3RoID09PSA4KSBvdXRbUl1bQ10gPSBuZXcgRGF0ZSgrcy5zbGljZSgwLDQpLCArcy5zbGljZSg0LDYpLTEsICtzLnNsaWNlKDYsOCkpO1xuXHRcdFx0XHRcdGVsc2Ugb3V0W1JdW0NdID0gcztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnRic6IG91dFtSXVtDXSA9IHBhcnNlRmxvYXQocy50cmltKCkpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnKyc6IGNhc2UgJ0knOiBvdXRbUl1bQ10gPSBsNyA/IGRkLnJlYWRfc2hpZnQoLTQsICdpJykgXiAweDgwMDAwMDAwIDogZGQucmVhZF9zaGlmdCg0LCAnaScpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnTCc6IHN3aXRjaChzLnRyaW0oKS50b1VwcGVyQ2FzZSgpKSB7XG5cdFx0XHRcdFx0Y2FzZSAnWSc6IGNhc2UgJ1QnOiBvdXRbUl1bQ10gPSB0cnVlOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdOJzogY2FzZSAnRic6IG91dFtSXVtDXSA9IGZhbHNlOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICcnOiBjYXNlICc/JzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiREJGIFVucmVjb2duaXplZCBMOnxcIiArIHMgKyBcInxcIik7XG5cdFx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAnTSc6IC8qIFRPRE86IGhhbmRsZSBtZW1vIGZpbGVzICovXG5cdFx0XHRcdFx0aWYoIW1lbW8pIHRocm93IG5ldyBFcnJvcihcIkRCRiBVbmV4cGVjdGVkIE1FTU8gZm9yIHR5cGUgXCIgKyBmdC50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdG91dFtSXVtDXSA9IFwiIyNNRU1PIyNcIiArIChsNyA/IHBhcnNlSW50KHMudHJpbSgpLCAxMCk6IGRkLnJlYWRfc2hpZnQoNCkpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdOJzpcblx0XHRcdFx0XHRzID0gcy5yZXBsYWNlKC9cXHUwMDAwL2csXCJcIikudHJpbSgpO1xuXHRcdFx0XHRcdC8vIE5PVEU6IGRCQVNFIElJIGludGVycHJldHMgXCIgIC4gIFwiIGFzIDBcblx0XHRcdFx0XHRpZihzICYmIHMgIT0gXCIuXCIpIG91dFtSXVtDXSA9ICtzIHx8IDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdAJzpcblx0XHRcdFx0XHQvLyBOT1RFOiBkQkFTRSBzcGVjcyBhcHBlYXIgdG8gYmUgaW5jb3JyZWN0XG5cdFx0XHRcdFx0b3V0W1JdW0NdID0gbmV3IERhdGUoZGQucmVhZF9zaGlmdCgtOCwgJ2YnKSAtIDB4Mzg4MzE3NTMzNDAwKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnVCc6IG91dFtSXVtDXSA9IG5ldyBEYXRlKChkZC5yZWFkX3NoaWZ0KDQpIC0gMHgyNTNEOEMpICogMHg1MjY1QzAwICsgZGQucmVhZF9zaGlmdCg0KSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdZJzogb3V0W1JdW0NdID0gZGQucmVhZF9zaGlmdCg0LCdpJykvMWU0ICsgKGRkLnJlYWRfc2hpZnQoNCwgJ2knKS8xZTQpKk1hdGgucG93KDIsMzIpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnTyc6IG91dFtSXVtDXSA9IC1kZC5yZWFkX3NoaWZ0KC04LCAnZicpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQic6IGlmKHZmcCAmJiBmaWVsZHNbQ10ubGVuID09IDgpIHsgb3V0W1JdW0NdID0gZGQucmVhZF9zaGlmdCg4LCdmJyk7IGJyZWFrOyB9XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlICdHJzogY2FzZSAnUCc6IGRkLmwgKz0gZmllbGRzW0NdLmxlbjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJzAnOlxuXHRcdFx0XHRcdGlmKGZpZWxkc1tDXS5uYW1lID09PSAnX051bGxGbGFncycpIGJyZWFrO1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiREJGIFVuc3VwcG9ydGVkIGRhdGEgdHlwZSBcIiArIGZpZWxkc1tDXS50eXBlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYoZnQgIT0gMHgwMikgaWYoZC5sIDwgZC5sZW5ndGggJiYgZFtkLmwrK10gIT0gMHgxQSkgdGhyb3cgbmV3IEVycm9yKFwiREJGIEVPRiBNYXJrZXIgbWlzc2luZyBcIiArIChkLmwtMSkgKyBcIiBvZiBcIiArIGQubGVuZ3RoICsgXCIgXCIgKyBkW2QubC0xXS50b1N0cmluZygxNikpO1xuXHRpZihvcHRzICYmIG9wdHMuc2hlZXRSb3dzKSBvdXQgPSBvdXQuc2xpY2UoMCwgb3B0cy5zaGVldFJvd3MpO1xuXHRvcHRzLkRCRiA9IGZpZWxkcztcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gZGJmX3RvX3NoZWV0KGJ1Ziwgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0aWYoIW8uZGF0ZU5GKSBvLmRhdGVORiA9IFwieXl5eW1tZGRcIjtcblx0dmFyIHdzID0gYW9hX3RvX3NoZWV0KGRiZl90b19hb2EoYnVmLCBvKSwgbyk7XG5cdHdzW1wiIWNvbHNcIl0gPSBvLkRCRi5tYXAoZnVuY3Rpb24oZmllbGQpIHsgcmV0dXJuIHtcblx0XHR3Y2g6IGZpZWxkLmxlbixcblx0XHREQkY6IGZpZWxkXG5cdH07fSk7XG5cdGRlbGV0ZSBvLkRCRjtcblx0cmV0dXJuIHdzO1xufVxuXG5mdW5jdGlvbiBkYmZfdG9fd29ya2Jvb2soYnVmLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHR0cnkgeyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soZGJmX3RvX3NoZWV0KGJ1Ziwgb3B0cyksIG9wdHMpOyB9XG5cdGNhdGNoKGUpIHsgaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgZTsgfVxuXHRyZXR1cm4gKHtTaGVldE5hbWVzOltdLFNoZWV0czp7fX0pO1xufVxuXG52YXIgX1JMRU4gPSB7ICdCJzogOCwgJ0MnOiAyNTAsICdMJzogMSwgJ0QnOiA4LCAnPyc6IDAsICcnOiAwIH07XG5mdW5jdGlvbiBzaGVldF90b19kYmYod3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0aWYoK28uY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvLmNvZGVwYWdlKTtcblx0aWYoby50eXBlID09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB3cml0ZSBEQkYgdG8gSlMgc3RyaW5nXCIpO1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIGFvYS8qOkFPQSovID0gc2hlZXRfdG9fanNvbih3cywge2hlYWRlcjoxLCByYXc6dHJ1ZSwgY2VsbERhdGVzOnRydWV9KTtcblx0dmFyIGhlYWRlcnMgPSBhb2FbMF0sIGRhdGEgPSBhb2Euc2xpY2UoMSksIGNvbHMgPSB3c1tcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgaSA9IDAsIGogPSAwLCBoY250ID0gMCwgcmxlbiA9IDE7XG5cdGZvcihpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyArK2kpIHtcblx0XHRpZigoKGNvbHNbaV18fHt9KS5EQkZ8fHt9KS5uYW1lKSB7IGhlYWRlcnNbaV0gPSBjb2xzW2ldLkRCRi5uYW1lOyArK2hjbnQ7IGNvbnRpbnVlOyB9XG5cdFx0aWYoaGVhZGVyc1tpXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHQrK2hjbnQ7XG5cdFx0aWYodHlwZW9mIGhlYWRlcnNbaV0gPT09ICdudW1iZXInKSBoZWFkZXJzW2ldID0gaGVhZGVyc1tpXS50b1N0cmluZygxMCk7XG5cdFx0aWYodHlwZW9mIGhlYWRlcnNbaV0gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgSW52YWxpZCBjb2x1bW4gbmFtZSBcIiArIGhlYWRlcnNbaV0gKyBcIiB8XCIgKyAodHlwZW9mIGhlYWRlcnNbaV0pICsgXCJ8XCIpO1xuXHRcdGlmKGhlYWRlcnMuaW5kZXhPZihoZWFkZXJzW2ldKSAhPT0gaSkgZm9yKGo9MDsgajwxMDI0Oysrailcblx0XHRcdGlmKGhlYWRlcnMuaW5kZXhPZihoZWFkZXJzW2ldICsgXCJfXCIgKyBqKSA9PSAtMSkgeyBoZWFkZXJzW2ldICs9IFwiX1wiICsgajsgYnJlYWs7IH1cblx0fVxuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0dmFyIGNvbHR5cGVzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBjb2x3aWR0aHMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0dmFyIGNvbGRlY2ltYWxzLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdGZvcihpID0gMDsgaSA8PSByYW5nZS5lLmMgLSByYW5nZS5zLmM7ICsraSkge1xuXHRcdHZhciBndWVzcyA9ICcnLCBfZ3Vlc3MgPSAnJywgbWF4bGVuID0gMDtcblx0XHR2YXIgY29sLyo6QXJyYXk8YW55PiovID0gW107XG5cdFx0Zm9yKGo9MDsgaiA8IGRhdGEubGVuZ3RoOyArK2opIHtcblx0XHRcdGlmKGRhdGFbal1baV0gIT0gbnVsbCkgY29sLnB1c2goZGF0YVtqXVtpXSk7XG5cdFx0fVxuXHRcdGlmKGNvbC5sZW5ndGggPT0gMCB8fCBoZWFkZXJzW2ldID09IG51bGwpIHsgY29sdHlwZXNbaV0gPSAnPyc7IGNvbnRpbnVlOyB9XG5cdFx0Zm9yKGogPSAwOyBqIDwgY29sLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRzd2l0Y2godHlwZW9mIGNvbFtqXSkge1xuXHRcdFx0XHQvKiBUT0RPOiBjaGVjayBpZiBMMiBjb21wYXQgaXMgZGVzaXJlZCAqL1xuXHRcdFx0XHRjYXNlICdudW1iZXInOiBfZ3Vlc3MgPSAnQic7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdHJpbmcnOiBfZ3Vlc3MgPSAnQyc7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdib29sZWFuJzogX2d1ZXNzID0gJ0wnOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnb2JqZWN0JzogX2d1ZXNzID0gY29sW2pdIGluc3RhbmNlb2YgRGF0ZSA/ICdEJyA6ICdDJzsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IF9ndWVzcyA9ICdDJztcblx0XHRcdH1cblx0XHRcdG1heGxlbiA9IE1hdGgubWF4KG1heGxlbiwgU3RyaW5nKGNvbFtqXSkubGVuZ3RoKTtcblx0XHRcdGd1ZXNzID0gZ3Vlc3MgJiYgZ3Vlc3MgIT0gX2d1ZXNzID8gJ0MnIDogX2d1ZXNzO1xuXHRcdFx0Ly9pZihndWVzcyA9PSAnQycpIGJyZWFrO1xuXHRcdH1cblx0XHRpZihtYXhsZW4gPiAyNTApIG1heGxlbiA9IDI1MDtcblx0XHRfZ3Vlc3MgPSAoKGNvbHNbaV18fHt9KS5EQkZ8fHt9KS50eXBlO1xuXHRcdC8qIFRPRE86IG1vcmUgZmluZSBncmFpbmVkIGNvbnRyb2wgb3ZlciBEQkYgdHlwZSByZXNvbHV0aW9uICovXG5cdFx0aWYoX2d1ZXNzID09ICdDJykge1xuXHRcdFx0aWYoY29sc1tpXS5EQkYubGVuID4gbWF4bGVuKSBtYXhsZW4gPSBjb2xzW2ldLkRCRi5sZW47XG5cdFx0fVxuXHRcdGlmKGd1ZXNzID09ICdCJyAmJiBfZ3Vlc3MgPT0gJ04nKSB7XG5cdFx0XHRndWVzcyA9ICdOJztcblx0XHRcdGNvbGRlY2ltYWxzW2ldID0gY29sc1tpXS5EQkYuZGVjO1xuXHRcdFx0bWF4bGVuID0gY29sc1tpXS5EQkYubGVuO1xuXHRcdH1cblx0XHRjb2x3aWR0aHNbaV0gPSBndWVzcyA9PSAnQycgfHwgX2d1ZXNzID09ICdOJyA/IG1heGxlbiA6IChfUkxFTltndWVzc10gfHwgMCk7XG5cdFx0cmxlbiArPSBjb2x3aWR0aHNbaV07XG5cdFx0Y29sdHlwZXNbaV0gPSBndWVzcztcblx0fVxuXG5cdHZhciBoID0gYmEubmV4dCgzMik7XG5cdGgud3JpdGVfc2hpZnQoNCwgMHgxMzAyMTEzMCk7XG5cdGgud3JpdGVfc2hpZnQoNCwgZGF0YS5sZW5ndGgpO1xuXHRoLndyaXRlX3NoaWZ0KDIsIDI5NiArIDMyICogaGNudCk7XG5cdGgud3JpdGVfc2hpZnQoMiwgcmxlbik7XG5cdGZvcihpPTA7IGkgPCA0OyArK2kpIGgud3JpdGVfc2hpZnQoNCwgMCk7XG5cdGgud3JpdGVfc2hpZnQoNCwgMHgwMDAwMDAwMCB8ICgoK2RiZl9yZXZlcnNlX21hcFsvKjo6U3RyaW5nKCovY3VycmVudF9hbnNpLyo6OikqL10gfHwgMHgwMyk8PDgpKTtcblxuXHRmb3IoaSA9IDAsIGogPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKGhlYWRlcnNbaV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0dmFyIGhmID0gYmEubmV4dCgzMik7XG5cdFx0dmFyIF9mID0gKGhlYWRlcnNbaV0uc2xpY2UoLTEwKSArIFwiXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFwiKS5zbGljZSgwLCAxMSk7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgX2YsIFwic2Jjc1wiKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCBjb2x0eXBlc1tpXSA9PSAnPycgPyAnQycgOiBjb2x0eXBlc1tpXSwgXCJzYmNzXCIpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIGopO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIGNvbHdpZHRoc1tpXSB8fCBfUkxFTltjb2x0eXBlc1tpXV0gfHwgMCk7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgY29sZGVjaW1hbHNbaV0gfHwgMCk7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgMHgwMik7XG5cdFx0aGYud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0aGYud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0aGYud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0aiArPSAoY29sd2lkdGhzW2ldIHx8IF9STEVOW2NvbHR5cGVzW2ldXSB8fCAwKTtcblx0fVxuXG5cdHZhciBoYiA9IGJhLm5leHQoMjY0KTtcblx0aGIud3JpdGVfc2hpZnQoNCwgMHgwMDAwMDAwRCk7XG5cdGZvcihpPTA7IGkgPCA2NTsrK2kpIGhiLndyaXRlX3NoaWZ0KDQsIDB4MDAwMDAwMDApO1xuXHRmb3IoaT0wOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciByb3V0ID0gYmEubmV4dChybGVuKTtcblx0XHRyb3V0LndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdGZvcihqPTA7IGo8aGVhZGVycy5sZW5ndGg7ICsraikge1xuXHRcdFx0aWYoaGVhZGVyc1tqXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHRcdHN3aXRjaChjb2x0eXBlc1tqXSkge1xuXHRcdFx0XHRjYXNlICdMJzogcm91dC53cml0ZV9zaGlmdCgxLCBkYXRhW2ldW2pdID09IG51bGwgPyAweDNGIDogZGF0YVtpXVtqXSA/IDB4NTQgOiAweDQ2KTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0InOiByb3V0LndyaXRlX3NoaWZ0KDgsIGRhdGFbaV1bal18fDAsICdmJyk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdOJzpcblx0XHRcdFx0XHR2YXIgX24gPSBcIjBcIjtcblx0XHRcdFx0XHRpZih0eXBlb2YgZGF0YVtpXVtqXSA9PSBcIm51bWJlclwiKSBfbiA9IGRhdGFbaV1bal0udG9GaXhlZChjb2xkZWNpbWFsc1tqXXx8MCk7XG5cdFx0XHRcdFx0Zm9yKGhjbnQ9MDsgaGNudCA8IGNvbHdpZHRoc1tqXS1fbi5sZW5ndGg7ICsraGNudCkgcm91dC53cml0ZV9zaGlmdCgxLCAweDIwKTtcblx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDEsIF9uLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0QnOlxuXHRcdFx0XHRcdGlmKCFkYXRhW2ldW2pdKSByb3V0LndyaXRlX3NoaWZ0KDgsIFwiMDAwMDAwMDBcIiwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCg0LCAoXCIwMDAwXCIrZGF0YVtpXVtqXS5nZXRGdWxsWWVhcigpKS5zbGljZSgtNCksIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoMiwgKFwiMDBcIisoZGF0YVtpXVtqXS5nZXRNb250aCgpKzEpKS5zbGljZSgtMiksIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoMiwgKFwiMDBcIitkYXRhW2ldW2pdLmdldERhdGUoKSkuc2xpY2UoLTIpLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAnQyc6XG5cdFx0XHRcdFx0dmFyIF9zID0gU3RyaW5nKGRhdGFbaV1bal0gIT0gbnVsbCA/IGRhdGFbaV1bal0gOiBcIlwiKS5zbGljZSgwLCBjb2x3aWR0aHNbal0pO1xuXHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoMSwgX3MsIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRmb3IoaGNudD0wOyBoY250IDwgY29sd2lkdGhzW2pdLV9zLmxlbmd0aDsgKytoY250KSByb3V0LndyaXRlX3NoaWZ0KDEsIDB4MjApOyBicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gZGF0YVxuXHR9XG5cdGJhLm5leHQoMSkud3JpdGVfc2hpZnQoMSwgMHgxQSk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogZGJmX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBkYmZfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fZGJmXG5cdH07XG59KSgpO1xuXG52YXIgU1lMSyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdC8qIFRPRE86IHN0cmVzcyB0ZXN0IHNlcXVlbmNlcyAqL1xuXHR2YXIgc3lsa19lc2NhcGVzID0gKHtcblx0XHRBQTonw4AnLCBCQTonw4EnLCBDQTonw4InLCBEQToxOTUsIEhBOifDhCcsIEpBOjE5Nyxcblx0XHRBRTonw4gnLCBCRTonw4knLCBDRTonw4onLCAgICAgICAgIEhFOifDiycsXG5cdFx0QUk6J8OMJywgQkk6J8ONJywgQ0k6J8OOJywgICAgICAgICBISTonw48nLFxuXHRcdEFPOifDkicsIEJPOifDkycsIENPOifDlCcsIERPOjIxMywgSE86J8OWJyxcblx0XHRBVTonw5knLCBCVTonw5onLCBDVTonw5snLCAgICAgICAgIEhVOifDnCcsXG5cdFx0QWE6J8OgJywgQmE6J8OhJywgQ2E6J8OiJywgRGE6MjI3LCBIYTonw6QnLCBKYToyMjksXG5cdFx0QWU6J8OoJywgQmU6J8OpJywgQ2U6J8OqJywgICAgICAgICBIZTonw6snLFxuXHRcdEFpOifDrCcsIEJpOifDrScsIENpOifDricsICAgICAgICAgSGk6J8OvJyxcblx0XHRBbzonw7InLCBCbzonw7MnLCBDbzonw7QnLCBEbzoyNDUsIEhvOifDticsXG5cdFx0QXU6J8O5JywgQnU6J8O6JywgQ3U6J8O7JywgICAgICAgICBIdTonw7wnLFxuXHRcdEtDOifDhycsIEtjOifDpycsIHE6J8OmJywgIHo6J8WTJywgIGE6J8OGJywgIGo6J8WSJyxcblx0XHRETjoyMDksIERuOjI0MSwgSHk6MjU1LFxuXHRcdFM6MTY5LCAgYzoxNzAsICBSOjE3NCwgIFwiQiBcIjoxODAsXG5cdFx0Lyo6OlsqLzAvKjo6XSovOjE3NiwgICAgLyo6OlsqLzEvKjo6XSovOjE3NywgIC8qOjpbKi8yLyo6Ol0qLzoxNzgsXG5cdFx0Lyo6OlsqLzMvKjo6XSovOjE3OSwgICAgLyo6OlsqLzUvKjo6XSovOjE4MSwgIC8qOjpbKi82Lyo6Ol0qLzoxODIsXG5cdFx0Lyo6OlsqLzcvKjo6XSovOjE4MywgICAgUToxODUsICBrOjE4NiwgIGI6MjA4LCAgaToyMTYsICBsOjIyMiwgIHM6MjQwLCAgeToyNDgsXG5cdFx0XCIhXCI6MTYxLCAnXCInOjE2MiwgXCIjXCI6MTYzLCBcIihcIjoxNjQsIFwiJVwiOjE2NSwgXCInXCI6MTY3LCBcIkggXCI6MTY4LFxuXHRcdFwiK1wiOjE3MSwgXCI7XCI6MTg3LCBcIjxcIjoxODgsIFwiPVwiOjE4OSwgXCI+XCI6MTkwLCBcIj9cIjoxOTEsIFwie1wiOjIyM1xuXHR9Lyo6YW55Ki8pO1xuXHR2YXIgc3lsa19jaGFyX3JlZ2V4ID0gbmV3IFJlZ0V4cChcIlxcdTAwMUJOKFwiICsga2V5cyhzeWxrX2VzY2FwZXMpLmpvaW4oXCJ8XCIpLnJlcGxhY2UoL1xcfFxcfFxcfC8sIFwifFxcXFx8fFwiKS5yZXBsYWNlKC8oWz8oKStdKS9nLFwiXFxcXCQxXCIpICsgXCJ8XFxcXHwpXCIsIFwiZ21cIik7XG5cdHZhciBzeWxrX2NoYXJfZm4gPSBmdW5jdGlvbihfLCAkMSl7IHZhciBvID0gc3lsa19lc2NhcGVzWyQxXTsgcmV0dXJuIHR5cGVvZiBvID09IFwibnVtYmVyXCIgPyBfZ2V0YW5zaShvKSA6IG87IH07XG5cdHZhciBkZWNvZGVfc3lsa19jaGFyID0gZnVuY3Rpb24oJCQsICQxLCAkMikgeyB2YXIgbmV3Y2MgPSAoKCQxLmNoYXJDb2RlQXQoMCkgLSAweDIwKTw8NCkgfCAoJDIuY2hhckNvZGVBdCgwKSAtIDB4MzApOyByZXR1cm4gbmV3Y2MgPT0gNTkgPyAkJCA6IF9nZXRhbnNpKG5ld2NjKTsgfTtcblx0c3lsa19lc2NhcGVzW1wifFwiXSA9IDI1NDtcblx0LyogVE9ETzogZmluZCBhbiBhY3R1YWwgc3BlY2lmaWNhdGlvbiAqL1xuXHRmdW5jdGlvbiBzeWxrX3RvX2FvYShkLyo6UmF3RGF0YSovLCBvcHRzKS8qOltBT0EsIFdvcmtzaGVldF0qLyB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihCYXNlNjRfZGVjb2RlKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2JpbmFyeSc6IHJldHVybiBzeWxrX3RvX2FvYV9zdHIoZCwgb3B0cyk7XG5cdFx0XHRjYXNlICdidWZmZXInOiByZXR1cm4gc3lsa190b19hb2Ffc3RyKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiByZXR1cm4gc3lsa190b19hb2Ffc3RyKGNjMnN0cihkKSwgb3B0cyk7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0fVxuXHRmdW5jdGlvbiBzeWxrX3RvX2FvYV9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6W0FPQSwgV29ya3NoZWV0XSovIHtcblx0XHR2YXIgcmVjb3JkcyA9IHN0ci5zcGxpdCgvW1xcblxccl0rLyksIFIgPSAtMSwgQyA9IC0xLCByaSA9IDAsIHJqID0gMCwgYXJyLyo6QU9BKi8gPSBbXTtcblx0XHR2YXIgZm9ybWF0cy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciBuZXh0X2NlbGxfZm9ybWF0Lyo6c3RyaW5nfG51bGwqLyA9IG51bGw7XG5cdFx0dmFyIHNodCA9IHt9LCByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdLCBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IFtdLCBjdy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciBNdmFsID0gMCwgajtcblx0XHRpZigrb3B0cy5jb2RlcGFnZSA+PSAwKSBzZXRfY3AoK29wdHMuY29kZXBhZ2UpO1xuXHRcdGZvciAoOyByaSAhPT0gcmVjb3Jkcy5sZW5ndGg7ICsrcmkpIHtcblx0XHRcdE12YWwgPSAwO1xuXHRcdFx0dmFyIHJzdHI9cmVjb3Jkc1tyaV0udHJpbSgpLnJlcGxhY2UoL1xceDFCKFtcXHgyMC1cXHgyRl0pKFtcXHgzMC1cXHgzRl0pL2csIGRlY29kZV9zeWxrX2NoYXIpLnJlcGxhY2Uoc3lsa19jaGFyX3JlZ2V4LCBzeWxrX2NoYXJfZm4pO1xuXHRcdFx0dmFyIHJlY29yZD1yc3RyLnJlcGxhY2UoLzs7L2csIFwiXFx1MDAwMFwiKS5zcGxpdChcIjtcIikubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgucmVwbGFjZSgvXFx1MDAwMC9nLCBcIjtcIik7IH0pO1xuXHRcdFx0dmFyIFJUPXJlY29yZFswXSwgdmFsO1xuXHRcdFx0aWYocnN0ci5sZW5ndGggPiAwKSBzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgJ0lEJzogYnJlYWs7IC8qIGhlYWRlciAqL1xuXHRcdFx0Y2FzZSAnRSc6IGJyZWFrOyAvKiBFT0YgKi9cblx0XHRcdGNhc2UgJ0InOiBicmVhazsgLyogZGltZW5zaW9ucyAqL1xuXHRcdFx0Y2FzZSAnTyc6IGJyZWFrOyAvKiBvcHRpb25zPyAqL1xuXHRcdFx0Y2FzZSAnVyc6IGJyZWFrOyAvKiB3aW5kb3c/ICovXG5cdFx0XHRjYXNlICdQJzpcblx0XHRcdFx0aWYocmVjb3JkWzFdLmNoYXJBdCgwKSA9PSAnUCcpXG5cdFx0XHRcdFx0Zm9ybWF0cy5wdXNoKHJzdHIuc2xpY2UoMykucmVwbGFjZSgvOzsvZywgXCI7XCIpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdDJzpcblx0XHRcdHZhciBDX3NlZW5fSyA9IGZhbHNlLCBDX3NlZW5fWCA9IGZhbHNlLCBDX3NlZW5fUyA9IGZhbHNlLCBDX3NlZW5fRSA9IGZhbHNlLCBfUiA9IC0xLCBfQyA9IC0xO1xuXHRcdFx0Zm9yKHJqPTE7IHJqPHJlY29yZC5sZW5ndGg7ICsrcmopIHN3aXRjaChyZWNvcmRbcmpdLmNoYXJBdCgwKSkge1xuXHRcdFx0XHRjYXNlICdBJzogYnJlYWs7IC8vIFRPRE86IGNvbW1lbnRcblx0XHRcdFx0Y2FzZSAnWCc6IEMgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyBDX3NlZW5fWCA9IHRydWU7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdZJzpcblx0XHRcdFx0XHRSID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgaWYoIUNfc2Vlbl9YKSBDID0gMDtcblx0XHRcdFx0XHRmb3IoaiA9IGFyci5sZW5ndGg7IGogPD0gUjsgKytqKSBhcnJbal0gPSBbXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnSyc6XG5cdFx0XHRcdFx0dmFsID0gcmVjb3JkW3JqXS5zbGljZSgxKTtcblx0XHRcdFx0XHRpZih2YWwuY2hhckF0KDApID09PSAnXCInKSB2YWwgPSB2YWwuc2xpY2UoMSx2YWwubGVuZ3RoIC0gMSk7XG5cdFx0XHRcdFx0ZWxzZSBpZih2YWwgPT09ICdUUlVFJykgdmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRlbHNlIGlmKHZhbCA9PT0gJ0ZBTFNFJykgdmFsID0gZmFsc2U7XG5cdFx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0odmFsKSkpIHtcblx0XHRcdFx0XHRcdHZhbCA9IGZ1enp5bnVtKHZhbCk7XG5cdFx0XHRcdFx0XHRpZihuZXh0X2NlbGxfZm9ybWF0ICE9PSBudWxsICYmIGZtdF9pc19kYXRlKG5leHRfY2VsbF9mb3JtYXQpKSB2YWwgPSBudW1kYXRlKHZhbCk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUodmFsKS5nZXREYXRlKCkpKSB7XG5cdFx0XHRcdFx0XHR2YWwgPSBwYXJzZURhdGUodmFsKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIgJiYgKChvcHRzfHx7fSkudHlwZSAhPSBcInN0cmluZ1wiKSAmJiAob3B0c3x8e30pLmNvZGVwYWdlKSB2YWwgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUob3B0cy5jb2RlcGFnZSwgdmFsKTtcblx0XHRcdFx0XHRDX3NlZW5fSyA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0UnOlxuXHRcdFx0XHRcdENfc2Vlbl9FID0gdHJ1ZTtcblx0XHRcdFx0XHR2YXIgZm9ybXVsYSA9IHJjX3RvX2ExKHJlY29yZFtyal0uc2xpY2UoMSksIHtyOlIsYzpDfSk7XG5cdFx0XHRcdFx0YXJyW1JdW0NdID0gW2FycltSXVtDXSwgZm9ybXVsYV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1MnOlxuXHRcdFx0XHRcdENfc2Vlbl9TID0gdHJ1ZTtcblx0XHRcdFx0XHRhcnJbUl1bQ10gPSBbYXJyW1JdW0NdLCBcIlM1U1wiXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnRyc6IGJyZWFrOyAvLyB1bmtub3duXG5cdFx0XHRcdGNhc2UgJ1InOiBfUiA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdDJzogX0MgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBiYWQgcmVjb3JkIFwiICsgcnN0cik7XG5cdFx0XHR9XG5cdFx0XHRpZihDX3NlZW5fSykge1xuXHRcdFx0XHRpZihhcnJbUl1bQ10gJiYgYXJyW1JdW0NdLmxlbmd0aCA9PSAyKSBhcnJbUl1bQ11bMF0gPSB2YWw7XG5cdFx0XHRcdGVsc2UgYXJyW1JdW0NdID0gdmFsO1xuXHRcdFx0XHRuZXh0X2NlbGxfZm9ybWF0ID0gbnVsbDtcblx0XHRcdH1cblx0XHRcdGlmKENfc2Vlbl9TKSB7XG5cdFx0XHRcdGlmKENfc2Vlbl9FKSB0aHJvdyBuZXcgRXJyb3IoXCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhXCIpO1xuXHRcdFx0XHR2YXIgc2hyYmFzZSA9IF9SID4gLTEgJiYgYXJyW19SXVtfQ107XG5cdFx0XHRcdGlmKCFzaHJiYXNlIHx8ICFzaHJiYXNlWzFdKSB0aHJvdyBuZXcgRXJyb3IoXCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBmaW5kIGJhc2VcIik7XG5cdFx0XHRcdGFycltSXVtDXVsxXSA9IHNoaWZ0X2Zvcm11bGFfc3RyKHNocmJhc2VbMV0sIHtyOiBSIC0gX1IsIGM6IEMgLSBfQ30pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdGJzpcblx0XHRcdHZhciBGX3NlZW4gPSAwO1xuXHRcdFx0Zm9yKHJqPTE7IHJqPHJlY29yZC5sZW5ndGg7ICsrcmopIHN3aXRjaChyZWNvcmRbcmpdLmNoYXJBdCgwKSkge1xuXHRcdFx0XHRjYXNlICdYJzogQyA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7ICsrRl9zZWVuOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnWSc6XG5cdFx0XHRcdFx0UiA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IC8qQyA9IDA7Ki9cblx0XHRcdFx0XHRmb3IoaiA9IGFyci5sZW5ndGg7IGogPD0gUjsgKytqKSBhcnJbal0gPSBbXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnTSc6IE12YWwgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKSAvIDIwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnRic6IGJyZWFrOyAvKiA/Pz8gKi9cblx0XHRcdFx0Y2FzZSAnRyc6IGJyZWFrOyAvKiBoaWRlIGdyaWQgKi9cblx0XHRcdFx0Y2FzZSAnUCc6XG5cdFx0XHRcdFx0bmV4dF9jZWxsX2Zvcm1hdCA9IGZvcm1hdHNbcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSldO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdTJzogYnJlYWs7IC8qIGNlbGwgc3R5bGUgKi9cblx0XHRcdFx0Y2FzZSAnRCc6IGJyZWFrOyAvKiBjb2x1bW4gKi9cblx0XHRcdFx0Y2FzZSAnTic6IGJyZWFrOyAvKiBmb250ICovXG5cdFx0XHRcdGNhc2UgJ1cnOlxuXHRcdFx0XHRcdGN3ID0gcmVjb3JkW3JqXS5zbGljZSgxKS5zcGxpdChcIiBcIik7XG5cdFx0XHRcdFx0Zm9yKGogPSBwYXJzZUludChjd1swXSwgMTApOyBqIDw9IHBhcnNlSW50KGN3WzFdLCAxMCk7ICsraikge1xuXHRcdFx0XHRcdFx0TXZhbCA9IHBhcnNlSW50KGN3WzJdLCAxMCk7XG5cdFx0XHRcdFx0XHRjb2xpbmZvW2otMV0gPSBNdmFsID09PSAwID8ge2hpZGRlbjp0cnVlfToge3djaDpNdmFsfTsgcHJvY2Vzc19jb2woY29saW5mb1tqLTFdKTtcblx0XHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdDJzogLyogZGVmYXVsdCBjb2x1bW4gZm9ybWF0ICovXG5cdFx0XHRcdFx0QyA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7XG5cdFx0XHRcdFx0aWYoIWNvbGluZm9bQ10pIGNvbGluZm9bQ10gPSB7fTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUic6IC8qIHJvdyBwcm9wZXJ0aWVzICovXG5cdFx0XHRcdFx0UiA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7XG5cdFx0XHRcdFx0aWYoIXJvd2luZm9bUl0pIHJvd2luZm9bUl0gPSB7fTtcblx0XHRcdFx0XHRpZihNdmFsID4gMCkgeyByb3dpbmZvW1JdLmhwdCA9IE12YWw7IHJvd2luZm9bUl0uaHB4ID0gcHQycHgoTXZhbCk7IH1cblx0XHRcdFx0XHRlbHNlIGlmKE12YWwgPT09IDApIHJvd2luZm9bUl0uaGlkZGVuID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBiYWQgcmVjb3JkIFwiICsgcnN0cik7XG5cdFx0XHR9XG5cdFx0XHRpZihGX3NlZW4gPCAxKSBuZXh0X2NlbGxfZm9ybWF0ID0gbnVsbDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJTWUxLIGJhZCByZWNvcmQgXCIgKyByc3RyKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYocm93aW5mby5sZW5ndGggPiAwKSBzaHRbJyFyb3dzJ10gPSByb3dpbmZvO1xuXHRcdGlmKGNvbGluZm8ubGVuZ3RoID4gMCkgc2h0WychY29scyddID0gY29saW5mbztcblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgb3B0cy5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBbYXJyLCBzaHRdO1xuXHR9XG5cblx0ZnVuY3Rpb24gc3lsa190b19zaGVldChkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHR2YXIgYW9hc2h0ID0gc3lsa190b19hb2EoZCwgb3B0cyk7XG5cdFx0dmFyIGFvYSA9IGFvYXNodFswXSwgd3MgPSBhb2FzaHRbMV07XG5cdFx0dmFyIG8gPSBhb2FfdG9fc2hlZXQoYW9hLCBvcHRzKTtcblx0XHRrZXlzKHdzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgb1trXSA9IHdzW2tdOyB9KTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHN5bGtfdG9fd29ya2Jvb2soZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHN5bGtfdG9fc2hlZXQoZCwgb3B0cyksIG9wdHMpOyB9XG5cblx0ZnVuY3Rpb24gd3JpdGVfd3NfY2VsbF9zeWxrKGNlbGwvKjpDZWxsKi8sIHdzLyo6V29ya3NoZWV0Ki8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgbyA9IFwiQztZXCIgKyAoUisxKSArIFwiO1hcIiArIChDKzEpICsgXCI7S1wiO1xuXHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRvICs9IChjZWxsLnZ8fDApO1xuXHRcdFx0XHRpZihjZWxsLmYgJiYgIWNlbGwuRikgbyArPSBcIjtFXCIgKyBhMV90b19yYyhjZWxsLmYsIHtyOlIsIGM6Q30pOyBicmVhaztcblx0XHRcdGNhc2UgJ2InOiBvICs9IGNlbGwudiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiOyBicmVhaztcblx0XHRcdGNhc2UgJ2UnOiBvICs9IGNlbGwudyB8fCBjZWxsLnY7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZCc6IG8gKz0gJ1wiJyArIChjZWxsLncgfHwgY2VsbC52KSArICdcIic7IGJyZWFrO1xuXHRcdFx0Y2FzZSAncyc6IG8gKz0gJ1wiJyArIGNlbGwudi5yZXBsYWNlKC9cIi9nLFwiXCIpLnJlcGxhY2UoLzsvZywgXCI7O1wiKSArICdcIic7IGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3dzX2NvbHNfc3lsayhvdXQsIGNvbHMpIHtcblx0XHRjb2xzLmZvckVhY2goZnVuY3Rpb24oY29sLCBpKSB7XG5cdFx0XHR2YXIgcmVjID0gXCJGO1dcIiArIChpKzEpICsgXCIgXCIgKyAoaSsxKSArIFwiIFwiO1xuXHRcdFx0aWYoY29sLmhpZGRlbikgcmVjICs9IFwiMFwiO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmKHR5cGVvZiBjb2wud2lkdGggPT0gJ251bWJlcicgJiYgIWNvbC53cHgpIGNvbC53cHggPSB3aWR0aDJweChjb2wud2lkdGgpO1xuXHRcdFx0XHRpZih0eXBlb2YgY29sLndweCA9PSAnbnVtYmVyJyAmJiAhY29sLndjaCkgY29sLndjaCA9IHB4MmNoYXIoY29sLndweCk7XG5cdFx0XHRcdGlmKHR5cGVvZiBjb2wud2NoID09ICdudW1iZXInKSByZWMgKz0gTWF0aC5yb3VuZChjb2wud2NoKTtcblx0XHRcdH1cblx0XHRcdGlmKHJlYy5jaGFyQXQocmVjLmxlbmd0aCAtIDEpICE9IFwiIFwiKSBvdXQucHVzaChyZWMpO1xuXHRcdH0pO1xuXHR9XG5cblx0ZnVuY3Rpb24gd3JpdGVfd3Nfcm93c19zeWxrKG91dC8qOkFycmF5PHN0cmluZz4qLywgcm93cy8qOkFycmF5PFJvd0luZm8+Ki8pIHtcblx0XHRyb3dzLmZvckVhY2goZnVuY3Rpb24ocm93LCBpKSB7XG5cdFx0XHR2YXIgcmVjID0gXCJGO1wiO1xuXHRcdFx0aWYocm93LmhpZGRlbikgcmVjICs9IFwiTTA7XCI7XG5cdFx0XHRlbHNlIGlmKHJvdy5ocHQpIHJlYyArPSBcIk1cIiArIDIwICogcm93LmhwdCArIFwiO1wiO1xuXHRcdFx0ZWxzZSBpZihyb3cuaHB4KSByZWMgKz0gXCJNXCIgKyAyMCAqIHB4MnB0KHJvdy5ocHgpICsgXCI7XCI7XG5cdFx0XHRpZihyZWMubGVuZ3RoID4gMikgb3V0LnB1c2gocmVjICsgXCJSXCIgKyAoaSsxKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRmdW5jdGlvbiBzaGVldF90b19zeWxrKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBwcmVhbWJsZS8qOkFycmF5PHN0cmluZz4qLyA9IFtcIklEO1BXWEw7TjtFXCJdLCBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbC8qOkNlbGwqLztcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHR2YXIgUlMgPSBcIlxcclxcblwiO1xuXG5cdFx0cHJlYW1ibGUucHVzaChcIlA7UEdlbmVyYWxcIik7XG5cdFx0cHJlYW1ibGUucHVzaChcIkY7UDA7REcwRzg7TTI1NVwiKTtcblx0XHRpZih3c1snIWNvbHMnXSkgd3JpdGVfd3NfY29sc19zeWxrKHByZWFtYmxlLCB3c1snIWNvbHMnXSk7XG5cdFx0aWYod3NbJyFyb3dzJ10pIHdyaXRlX3dzX3Jvd3Nfc3lsayhwcmVhbWJsZSwgd3NbJyFyb3dzJ10pO1xuXG5cdFx0cHJlYW1ibGUucHVzaChcIkI7WVwiICsgKHIuZS5yIC0gci5zLnIgKyAxKSArIFwiO1hcIiArIChyLmUuYyAtIHIucy5jICsgMSkgKyBcIjtEXCIgKyBbci5zLmMsci5zLnIsci5lLmMsci5lLnJdLmpvaW4oXCIgXCIpKTtcblx0XHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0XHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdOiB3c1tjb29yZF07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IChjZWxsLnYgPT0gbnVsbCAmJiAoIWNlbGwuZiB8fCBjZWxsLkYpKSkgY29udGludWU7XG5cdFx0XHRcdG8ucHVzaCh3cml0ZV93c19jZWxsX3N5bGsoY2VsbCwgd3MsIFIsIEMsIG9wdHMpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHByZWFtYmxlLmpvaW4oUlMpICsgUlMgKyBvLmpvaW4oUlMpICsgUlMgKyBcIkVcIiArIFJTO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogc3lsa190b193b3JrYm9vayxcblx0XHR0b19zaGVldDogc3lsa190b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19zeWxrXG5cdH07XG59KSgpO1xuXG52YXIgRElGID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0ZnVuY3Rpb24gZGlmX3RvX2FvYShkLyo6UmF3RGF0YSovLCBvcHRzKS8qOkFPQSovIHtcblx0XHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0XHRjYXNlICdiYXNlNjQnOiByZXR1cm4gZGlmX3RvX2FvYV9zdHIoQmFzZTY0X2RlY29kZShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gZGlmX3RvX2FvYV9zdHIoZCwgb3B0cyk7XG5cdFx0XHRjYXNlICdidWZmZXInOiByZXR1cm4gZGlmX3RvX2FvYV9zdHIoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZCkgPyBkLnRvU3RyaW5nKCdiaW5hcnknKSA6IGEycyhkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdhcnJheSc6IHJldHVybiBkaWZfdG9fYW9hX3N0cihjYzJzdHIoZCksIG9wdHMpO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdH1cblx0ZnVuY3Rpb24gZGlmX3RvX2FvYV9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6QU9BKi8ge1xuXHRcdHZhciByZWNvcmRzID0gc3RyLnNwbGl0KCdcXG4nKSwgUiA9IC0xLCBDID0gLTEsIHJpID0gMCwgYXJyLyo6QU9BKi8gPSBbXTtcblx0XHRmb3IgKDsgcmkgIT09IHJlY29yZHMubGVuZ3RoOyArK3JpKSB7XG5cdFx0XHRpZiAocmVjb3Jkc1tyaV0udHJpbSgpID09PSAnQk9UJykgeyBhcnJbKytSXSA9IFtdOyBDID0gMDsgY29udGludWU7IH1cblx0XHRcdGlmIChSIDwgMCkgY29udGludWU7XG5cdFx0XHR2YXIgbWV0YWRhdGEgPSByZWNvcmRzW3JpXS50cmltKCkuc3BsaXQoXCIsXCIpO1xuXHRcdFx0dmFyIHR5cGUgPSBtZXRhZGF0YVswXSwgdmFsdWUgPSBtZXRhZGF0YVsxXTtcblx0XHRcdCsrcmk7XG5cdFx0XHR2YXIgZGF0YSA9IHJlY29yZHNbcmldIHx8IFwiXCI7XG5cdFx0XHR3aGlsZSgoKGRhdGEubWF0Y2goL1tcIl0vZyl8fFtdKS5sZW5ndGggJiAxKSAmJiByaSA8IHJlY29yZHMubGVuZ3RoIC0gMSkgZGF0YSArPSBcIlxcblwiICsgcmVjb3Jkc1srK3JpXTtcblx0XHRcdGRhdGEgPSBkYXRhLnRyaW0oKTtcblx0XHRcdHN3aXRjaCAoK3R5cGUpIHtcblx0XHRcdFx0Y2FzZSAtMTpcblx0XHRcdFx0XHRpZiAoZGF0YSA9PT0gJ0JPVCcpIHsgYXJyWysrUl0gPSBbXTsgQyA9IDA7IGNvbnRpbnVlOyB9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoZGF0YSAhPT0gJ0VPRCcpIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBESUYgc3BlY2lhbCBjb21tYW5kIFwiICsgZGF0YSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRpZihkYXRhID09PSAnVFJVRScpIGFycltSXVtDXSA9IHRydWU7XG5cdFx0XHRcdFx0ZWxzZSBpZihkYXRhID09PSAnRkFMU0UnKSBhcnJbUl1bQ10gPSBmYWxzZTtcblx0XHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bSh2YWx1ZSkpKSBhcnJbUl1bQ10gPSBmdXp6eW51bSh2YWx1ZSk7XG5cdFx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKHZhbHVlKS5nZXREYXRlKCkpKSBhcnJbUl1bQ10gPSBwYXJzZURhdGUodmFsdWUpO1xuXHRcdFx0XHRcdGVsc2UgYXJyW1JdW0NdID0gdmFsdWU7XG5cdFx0XHRcdFx0KytDOyBicmVhaztcblx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdGRhdGEgPSBkYXRhLnNsaWNlKDEsZGF0YS5sZW5ndGgtMSk7XG5cdFx0XHRcdFx0ZGF0YSA9IGRhdGEucmVwbGFjZSgvXCJcIi9nLCAnXCInKTtcblx0XHRcdFx0XHRpZihESUZfWEwgJiYgZGF0YSAmJiBkYXRhLm1hdGNoKC9ePVwiLipcIiQvKSkgZGF0YSA9IGRhdGEuc2xpY2UoMiwgLTEpO1xuXHRcdFx0XHRcdGFycltSXVtDKytdID0gZGF0YSAhPT0gJycgPyBkYXRhIDogbnVsbDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmIChkYXRhID09PSAnRU9EJykgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKG9wdHMgJiYgb3B0cy5zaGVldFJvd3MpIGFyciA9IGFyci5zbGljZSgwLCBvcHRzLnNoZWV0Um93cyk7XG5cdFx0cmV0dXJuIGFycjtcblx0fVxuXG5cdGZ1bmN0aW9uIGRpZl90b19zaGVldChzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiBhb2FfdG9fc2hlZXQoZGlmX3RvX2FvYShzdHIsIG9wdHMpLCBvcHRzKTsgfVxuXHRmdW5jdGlvbiBkaWZfdG9fd29ya2Jvb2soc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhkaWZfdG9fc2hlZXQoc3RyLCBvcHRzKSwgb3B0cyk7IH1cblxuXHR2YXIgc2hlZXRfdG9fZGlmID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0XHR2YXIgcHVzaF9maWVsZCA9IGZ1bmN0aW9uIHBmKG8vKjpBcnJheTxzdHJpbmc+Ki8sIHRvcGljLyo6c3RyaW5nKi8sIHYvKjpudW1iZXIqLywgbi8qOm51bWJlciovLCBzLyo6c3RyaW5nKi8pIHtcblx0XHRcdG8ucHVzaCh0b3BpYyk7XG5cdFx0XHRvLnB1c2godiArIFwiLFwiICsgbik7XG5cdFx0XHRvLnB1c2goJ1wiJyArIHMucmVwbGFjZSgvXCIvZywnXCJcIicpICsgJ1wiJyk7XG5cdFx0fTtcblx0XHR2YXIgcHVzaF92YWx1ZSA9IGZ1bmN0aW9uIHBvKG8vKjpBcnJheTxzdHJpbmc+Ki8sIHR5cGUvKjpudW1iZXIqLywgdi8qOmFueSovLCBzLyo6c3RyaW5nKi8pIHtcblx0XHRcdG8ucHVzaCh0eXBlICsgXCIsXCIgKyB2KTtcblx0XHRcdG8ucHVzaCh0eXBlID09IDEgPyAnXCInICsgcy5yZXBsYWNlKC9cIi9nLCdcIlwiJykgKyAnXCInIDogcyk7XG5cdFx0fTtcblx0XHRyZXR1cm4gZnVuY3Rpb24gc2hlZXRfdG9fZGlmKHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBvcHRzOj9hbnkqLykvKjpzdHJpbmcqLyB7XG5cdFx0XHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdFx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbC8qOkNlbGwqLztcblx0XHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdFx0cHVzaF9maWVsZChvLCBcIlRBQkxFXCIsIDAsIDEsIFwic2hlZXRqc1wiKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJWRUNUT1JTXCIsIDAsIHIuZS5yIC0gci5zLnIgKyAxLFwiXCIpO1xuXHRcdFx0cHVzaF9maWVsZChvLCBcIlRVUExFU1wiLCAwLCByLmUuYyAtIHIucy5jICsgMSxcIlwiKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJEQVRBXCIsIDAsIDAsXCJcIik7XG5cdFx0XHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0XHRcdHB1c2hfdmFsdWUobywgLTEsIDAsIFwiQk9UXCIpO1xuXHRcdFx0XHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHRcdFx0dmFyIGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHRcdFx0XHRpZighY2VsbCkgeyBwdXNoX3ZhbHVlKG8sIDEsIDAsIFwiXCIpOyBjb250aW51ZTt9XG5cdFx0XHRcdFx0c3dpdGNoKGNlbGwudCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0XHRcdHZhciB2YWwgPSBESUZfWEwgPyBjZWxsLncgOiBjZWxsLnY7XG5cdFx0XHRcdFx0XHRcdGlmKCF2YWwgJiYgY2VsbC52ICE9IG51bGwpIHZhbCA9IGNlbGwudjtcblx0XHRcdFx0XHRcdFx0aWYodmFsID09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0XHRpZihESUZfWEwgJiYgY2VsbC5mICYmICFjZWxsLkYpIHB1c2hfdmFsdWUobywgMSwgMCwgXCI9XCIgKyBjZWxsLmYpO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgcHVzaF92YWx1ZShvLCAxLCAwLCBcIlwiKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHB1c2hfdmFsdWUobywgMCwgdmFsLCBcIlZcIik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnYic6XG5cdFx0XHRcdFx0XHRcdHB1c2hfdmFsdWUobywgMCwgY2VsbC52ID8gMSA6IDAsIGNlbGwudiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdzJzpcblx0XHRcdFx0XHRcdFx0cHVzaF92YWx1ZShvLCAxLCAwLCAoIURJRl9YTCB8fCBpc05hTihjZWxsLnYpKSA/IGNlbGwudiA6ICc9XCInICsgY2VsbC52ICsgJ1wiJyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0XHRcdGlmKCFjZWxsLncpIGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56IHx8IHRhYmxlX2ZtdFsxNF0sIGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpKTtcblx0XHRcdFx0XHRcdFx0aWYoRElGX1hMKSBwdXNoX3ZhbHVlKG8sIDAsIGNlbGwudywgXCJWXCIpO1xuXHRcdFx0XHRcdFx0XHRlbHNlIHB1c2hfdmFsdWUobywgMSwgMCwgY2VsbC53KTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OiBwdXNoX3ZhbHVlKG8sIDEsIDAsIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cHVzaF92YWx1ZShvLCAtMSwgMCwgXCJFT0RcIik7XG5cdFx0XHR2YXIgUlMgPSBcIlxcclxcblwiO1xuXHRcdFx0dmFyIG9vID0gby5qb2luKFJTKTtcblx0XHRcdC8vd2hpbGUoKG9vLmxlbmd0aCAmIDB4N0YpICE9IDApIG9vICs9IFwiXFwwXCI7XG5cdFx0XHRyZXR1cm4gb287XG5cdFx0fTtcblx0fSkoKTtcblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogZGlmX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBkaWZfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fZGlmXG5cdH07XG59KSgpO1xuXG52YXIgRVRIID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0ZnVuY3Rpb24gZGVjb2RlKHMvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBzLnJlcGxhY2UoL1xcXFxiL2csXCJcXFxcXCIpLnJlcGxhY2UoL1xcXFxjL2csXCI6XCIpLnJlcGxhY2UoL1xcXFxuL2csXCJcXG5cIik7IH1cblx0ZnVuY3Rpb24gZW5jb2RlKHMvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBzLnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcYlwiKS5yZXBsYWNlKC86L2csIFwiXFxcXGNcIikucmVwbGFjZSgvXFxuL2csXCJcXFxcblwiKTsgfVxuXG5cdGZ1bmN0aW9uIGV0aF90b19hb2Eoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6QU9BKi8ge1xuXHRcdHZhciByZWNvcmRzID0gc3RyLnNwbGl0KCdcXG4nKSwgUiA9IC0xLCBDID0gLTEsIHJpID0gMCwgYXJyLyo6QU9BKi8gPSBbXTtcblx0XHRmb3IgKDsgcmkgIT09IHJlY29yZHMubGVuZ3RoOyArK3JpKSB7XG5cdFx0XHR2YXIgcmVjb3JkID0gcmVjb3Jkc1tyaV0udHJpbSgpLnNwbGl0KFwiOlwiKTtcblx0XHRcdGlmKHJlY29yZFswXSAhPT0gJ2NlbGwnKSBjb250aW51ZTtcblx0XHRcdHZhciBhZGRyID0gZGVjb2RlX2NlbGwocmVjb3JkWzFdKTtcblx0XHRcdGlmKGFyci5sZW5ndGggPD0gYWRkci5yKSBmb3IoUiA9IGFyci5sZW5ndGg7IFIgPD0gYWRkci5yOyArK1IpIGlmKCFhcnJbUl0pIGFycltSXSA9IFtdO1xuXHRcdFx0UiA9IGFkZHIucjsgQyA9IGFkZHIuYztcblx0XHRcdHN3aXRjaChyZWNvcmRbMl0pIHtcblx0XHRcdFx0Y2FzZSAndCc6IGFycltSXVtDXSA9IGRlY29kZShyZWNvcmRbM10pOyBicmVhaztcblx0XHRcdFx0Y2FzZSAndic6IGFycltSXVtDXSA9ICtyZWNvcmRbM107IGJyZWFrO1xuXHRcdFx0XHRjYXNlICd2dGYnOiB2YXIgX2YgPSByZWNvcmRbcmVjb3JkLmxlbmd0aCAtIDFdO1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAndnRjJzpcblx0XHRcdFx0XHRzd2l0Y2gocmVjb3JkWzNdKSB7XG5cdFx0XHRcdFx0XHRjYXNlICdubCc6IGFycltSXVtDXSA9ICtyZWNvcmRbNF0gPyB0cnVlIDogZmFsc2U7IGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDogYXJyW1JdW0NdID0gK3JlY29yZFs0XTsgYnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHJlY29yZFsyXSA9PSAndnRmJykgYXJyW1JdW0NdID0gW2FycltSXVtDXSwgX2ZdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgb3B0cy5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBhcnI7XG5cdH1cblxuXHRmdW5jdGlvbiBldGhfdG9fc2hlZXQoZC8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIGFvYV90b19zaGVldChldGhfdG9fYW9hKGQsIG9wdHMpLCBvcHRzKTsgfVxuXHRmdW5jdGlvbiBldGhfdG9fd29ya2Jvb2soZC8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soZXRoX3RvX3NoZWV0KGQsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdHZhciBoZWFkZXIgPSBbXG5cdFx0XCJzb2NpYWxjYWxjOnZlcnNpb246MS41XCIsXG5cdFx0XCJNSU1FLVZlcnNpb246IDEuMFwiLFxuXHRcdFwiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlXCJcblx0XS5qb2luKFwiXFxuXCIpO1xuXG5cdHZhciBzZXAgPSBbXG5cdFx0XCItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlXCIsXG5cdFx0XCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIlxuXHRdLmpvaW4oXCJcXG5cIikgKyBcIlxcblwiO1xuXG5cdC8qIFRPRE86IHRoZSBvdGhlciBwYXJ0cyAqL1xuXHR2YXIgbWV0YSA9IFtcblx0XHRcIiMgU29jaWFsQ2FsYyBTcHJlYWRzaGVldCBDb250cm9sIFNhdmVcIixcblx0XHRcInBhcnQ6c2hlZXRcIlxuXHRdLmpvaW4oXCJcXG5cIik7XG5cblx0dmFyIGVuZCA9IFwiLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZS0tXCI7XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fZXRoX2RhdGEod3MvKjpXb3Jrc2hlZXQqLykvKjpzdHJpbmcqLyB7XG5cdFx0aWYoIXdzIHx8ICF3c1snIXJlZiddKSByZXR1cm4gXCJcIjtcblx0XHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBvby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBjZWxsLCBjb29yZCA9IFwiXCI7XG5cdFx0dmFyIHIgPSBkZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHRjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnYgPT0gbnVsbCB8fCBjZWxsLnQgPT09ICd6JykgY29udGludWU7XG5cdFx0XHRcdG9vID0gW1wiY2VsbFwiLCBjb29yZCwgJ3QnXTtcblx0XHRcdFx0c3dpdGNoKGNlbGwudCkge1xuXHRcdFx0XHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOiBvby5wdXNoKGVuY29kZShjZWxsLnYpKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0XHRpZighY2VsbC5mKSB7IG9vWzJdPSd2Jzsgb29bM109Y2VsbC52OyB9XG5cdFx0XHRcdFx0XHRlbHNlIHsgb29bMl09J3Z0Zic7IG9vWzNdPSduJzsgb29bNF09Y2VsbC52OyBvb1s1XT1lbmNvZGUoY2VsbC5mKTsgfVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYic6XG5cdFx0XHRcdFx0XHRvb1syXSA9ICd2dCcrKGNlbGwuZj8nZic6J2MnKTsgb29bM109J25sJzsgb29bNF09Y2VsbC52P1wiMVwiOlwiMFwiO1xuXHRcdFx0XHRcdFx0b29bNV0gPSBlbmNvZGUoY2VsbC5mfHwoY2VsbC52PydUUlVFJzonRkFMU0UnKSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdkJzpcblx0XHRcdFx0XHRcdHZhciB0ID0gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSk7XG5cdFx0XHRcdFx0XHRvb1syXSA9ICd2dGMnOyBvb1szXSA9ICduZCc7IG9vWzRdID0gXCJcIit0O1xuXHRcdFx0XHRcdFx0b29bNV0gPSBjZWxsLncgfHwgU1NGX2Zvcm1hdChjZWxsLnogfHwgdGFibGVfZm10WzE0XSwgdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdlJzogY29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0by5wdXNoKG9vLmpvaW4oXCI6XCIpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0by5wdXNoKFwic2hlZXQ6YzpcIiArIChyLmUuYy1yLnMuYysxKSArIFwiOnI6XCIgKyAoci5lLnItci5zLnIrMSkgKyBcIjp0dmY6MVwiKTtcblx0XHRvLnB1c2goXCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraVwiKTtcblx0XHQvL28ucHVzaChcImNvcGllZGZyb206XCIgKyB3c1snIXJlZiddKTsgLy8gY2xpcGJvYXJkIG9ubHlcblx0XHRyZXR1cm4gby5qb2luKFwiXFxuXCIpO1xuXHR9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fZXRoKHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBvcHRzOj9hbnkqLykvKjpzdHJpbmcqLyB7XG5cdFx0cmV0dXJuIFtoZWFkZXIsIHNlcCwgbWV0YSwgc2VwLCBzaGVldF90b19ldGhfZGF0YSh3cyksIGVuZF0uam9pbihcIlxcblwiKTtcblx0XHQvLyByZXR1cm4gW1widmVyc2lvbjoxLjVcIiwgc2hlZXRfdG9fZXRoX2RhdGEod3MpXS5qb2luKFwiXFxuXCIpOyAvLyBjbGlwYm9hcmQgZm9ybVxuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogZXRoX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBldGhfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fZXRoXG5cdH07XG59KSgpO1xuXG52YXIgUFJOID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0ZnVuY3Rpb24gc2V0X3RleHRfYXJyKGRhdGEvKjpzdHJpbmcqLywgYXJyLyo6QU9BKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCBvLyo6YW55Ki8pIHtcblx0XHRpZihvLnJhdykgYXJyW1JdW0NdID0gZGF0YTtcblx0XHRlbHNlIGlmKGRhdGEgPT09IFwiXCIpey8qIGVtcHR5ICovfVxuXHRcdGVsc2UgaWYoZGF0YSA9PT0gJ1RSVUUnKSBhcnJbUl1bQ10gPSB0cnVlO1xuXHRcdGVsc2UgaWYoZGF0YSA9PT0gJ0ZBTFNFJykgYXJyW1JdW0NdID0gZmFsc2U7XG5cdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0oZGF0YSkpKSBhcnJbUl1bQ10gPSBmdXp6eW51bShkYXRhKTtcblx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUoZGF0YSkuZ2V0RGF0ZSgpKSkgYXJyW1JdW0NdID0gcGFyc2VEYXRlKGRhdGEpO1xuXHRcdGVsc2UgYXJyW1JdW0NdID0gZGF0YTtcblx0fVxuXG5cdGZ1bmN0aW9uIHBybl90b19hb2Ffc3RyKGYvKjpzdHJpbmcqLywgb3B0cykvKjpBT0EqLyB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdHZhciBhcnIvKjpBT0EqLyA9IChbXS8qOmFueSovKTtcblx0XHRpZighZiB8fCBmLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycjtcblx0XHR2YXIgbGluZXMgPSBmLnNwbGl0KC9bXFxyXFxuXS8pO1xuXHRcdHZhciBMID0gbGluZXMubGVuZ3RoIC0gMTtcblx0XHR3aGlsZShMID49IDAgJiYgbGluZXNbTF0ubGVuZ3RoID09PSAwKSAtLUw7XG5cdFx0dmFyIHN0YXJ0ID0gMTAsIGlkeCA9IDA7XG5cdFx0dmFyIFIgPSAwO1xuXHRcdGZvcig7IFIgPD0gTDsgKytSKSB7XG5cdFx0XHRpZHggPSBsaW5lc1tSXS5pbmRleE9mKFwiIFwiKTtcblx0XHRcdGlmKGlkeCA9PSAtMSkgaWR4ID0gbGluZXNbUl0ubGVuZ3RoOyBlbHNlIGlkeCsrO1xuXHRcdFx0c3RhcnQgPSBNYXRoLm1heChzdGFydCwgaWR4KTtcblx0XHR9XG5cdFx0Zm9yKFIgPSAwOyBSIDw9IEw7ICsrUikge1xuXHRcdFx0YXJyW1JdID0gW107XG5cdFx0XHQvKiBUT0RPOiBjb25maXJtIHRoYXQgd2lkdGhzIGFyZSBhbHdheXMgMTAgKi9cblx0XHRcdHZhciBDID0gMDtcblx0XHRcdHNldF90ZXh0X2FycihsaW5lc1tSXS5zbGljZSgwLCBzdGFydCkudHJpbSgpLCBhcnIsIFIsIEMsIG8pO1xuXHRcdFx0Zm9yKEMgPSAxOyBDIDw9IChsaW5lc1tSXS5sZW5ndGggLSBzdGFydCkvMTAgKyAxOyArK0MpXG5cdFx0XHRcdHNldF90ZXh0X2FycihsaW5lc1tSXS5zbGljZShzdGFydCsoQy0xKSoxMCxzdGFydCtDKjEwKS50cmltKCksYXJyLFIsQyxvKTtcblx0XHR9XG5cdFx0aWYoby5zaGVldFJvd3MpIGFyciA9IGFyci5zbGljZSgwLCBvLnNoZWV0Um93cyk7XG5cdFx0cmV0dXJuIGFycjtcblx0fVxuXG5cdC8vIExpc3Qgb2YgYWNjZXB0ZWQgQ1NWIHNlcGFyYXRvcnNcblx0dmFyIGd1ZXNzX3NlcHMgPSB7XG5cdFx0Lyo6OlsqLzB4MkMvKjo6XSovOiAnLCcsXG5cdFx0Lyo6OlsqLzB4MDkvKjo6XSovOiBcIlxcdFwiLFxuXHRcdC8qOjpbKi8weDNCLyo6Ol0qLzogJzsnLFxuXHRcdC8qOjpbKi8weDdDLyo6Ol0qLzogJ3wnXG5cdH07XG5cblx0Ly8gQ1NWIHNlcGFyYXRvciB3ZWlnaHRzIHRvIGJlIHVzZWQgaW4gY2FzZSBvZiBlcXVhbCBudW1iZXJzXG5cdHZhciBndWVzc19zZXBfd2VpZ2h0cyA9IHtcblx0XHQvKjo6WyovMHgyQy8qOjpdKi86IDMsXG5cdFx0Lyo6OlsqLzB4MDkvKjo6XSovOiAyLFxuXHRcdC8qOjpbKi8weDNCLyo6Ol0qLzogMSxcblx0XHQvKjo6WyovMHg3Qy8qOjpdKi86IDBcblx0fTtcblxuXHRmdW5jdGlvbiBndWVzc19zZXAoc3RyKSB7XG5cdFx0dmFyIGNudCA9IHt9LCBpbnN0ciA9IGZhbHNlLCBlbmQgPSAwLCBjYyA9IDA7XG5cdFx0Zm9yKDtlbmQgPCBzdHIubGVuZ3RoOysrZW5kKSB7XG5cdFx0XHRpZigoY2M9c3RyLmNoYXJDb2RlQXQoZW5kKSkgPT0gMHgyMikgaW5zdHIgPSAhaW5zdHI7XG5cdFx0XHRlbHNlIGlmKCFpbnN0ciAmJiBjYyBpbiBndWVzc19zZXBzKSBjbnRbY2NdID0gKGNudFtjY118fDApKzE7XG5cdFx0fVxuXG5cdFx0Y2MgPSBbXTtcblx0XHRmb3IoZW5kIGluIGNudCkgaWYgKCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY250LCBlbmQpICkge1xuXHRcdFx0Y2MucHVzaChbIGNudFtlbmRdLCBlbmQgXSk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhY2MubGVuZ3RoICkge1xuXHRcdFx0Y250ID0gZ3Vlc3Nfc2VwX3dlaWdodHM7XG5cdFx0XHRmb3IoZW5kIGluIGNudCkgaWYgKCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY250LCBlbmQpICkge1xuXHRcdFx0XHRjYy5wdXNoKFsgY250W2VuZF0sIGVuZCBdKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjYy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGFbMF0gLSBiWzBdIHx8IGd1ZXNzX3NlcF93ZWlnaHRzW2FbMV1dIC0gZ3Vlc3Nfc2VwX3dlaWdodHNbYlsxXV07IH0pO1xuXG5cdFx0cmV0dXJuIGd1ZXNzX3NlcHNbY2MucG9wKClbMV1dIHx8IDB4MkM7XG5cdH1cblxuXHRmdW5jdGlvbiBkc3ZfdG9fc2hlZXRfc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0dmFyIHNlcCA9IFwiXCI7XG5cdFx0aWYoREVOU0UgIT0gbnVsbCAmJiBvLmRlbnNlID09IG51bGwpIG8uZGVuc2UgPSBERU5TRTtcblx0XHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG8uZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdFx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7czoge2M6MCwgcjowfSwgZToge2M6MCwgcjowfX0vKjphbnkqLyk7XG5cblx0XHRpZihzdHIuc2xpY2UoMCw0KSA9PSBcInNlcD1cIikge1xuXHRcdFx0Ly8gSWYgdGhlIGxpbmUgZW5kcyBpbiBcXHJcXG5cblx0XHRcdGlmKHN0ci5jaGFyQ29kZUF0KDUpID09IDEzICYmIHN0ci5jaGFyQ29kZUF0KDYpID09IDEwICkge1xuXHRcdFx0XHRzZXAgPSBzdHIuY2hhckF0KDQpOyBzdHIgPSBzdHIuc2xpY2UoNyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBJZiBsaW5lIGVuZHMgaW4gXFxyIE9SIFxcblxuXHRcdFx0ZWxzZSBpZihzdHIuY2hhckNvZGVBdCg1KSA9PSAxMyB8fCBzdHIuY2hhckNvZGVBdCg1KSA9PSAxMCApIHtcblx0XHRcdFx0c2VwID0gc3RyLmNoYXJBdCg0KTsgc3RyID0gc3RyLnNsaWNlKDYpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBzZXAgPSBndWVzc19zZXAoc3RyLnNsaWNlKDAsMTAyNCkpO1xuXHRcdH1cblx0XHRlbHNlIGlmKG8gJiYgby5GUykgc2VwID0gby5GUztcblx0XHRlbHNlIHNlcCA9IGd1ZXNzX3NlcChzdHIuc2xpY2UoMCwxMDI0KSk7XG5cdFx0dmFyIFIgPSAwLCBDID0gMCwgdiA9IDA7XG5cdFx0dmFyIHN0YXJ0ID0gMCwgZW5kID0gMCwgc2VwY2MgPSBzZXAuY2hhckNvZGVBdCgwKSwgaW5zdHIgPSBmYWxzZSwgY2M9MCwgc3RhcnRjYz1zdHIuY2hhckNvZGVBdCgwKTtcblx0XHRzdHIgPSBzdHIucmVwbGFjZSgvXFxyXFxuL21nLCBcIlxcblwiKTtcblx0XHR2YXIgX3JlLyo6P1JlZ0V4cCovID0gby5kYXRlTkYgIT0gbnVsbCA/IGRhdGVORl9yZWdleChvLmRhdGVORikgOiBudWxsO1xuXHRcdGZ1bmN0aW9uIGZpbmlzaF9jZWxsKCkge1xuXHRcdFx0dmFyIHMgPSBzdHIuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cdFx0XHR2YXIgY2VsbCA9ICh7fS8qOmFueSovKTtcblx0XHRcdGlmKHMuY2hhckF0KDApID09ICdcIicgJiYgcy5jaGFyQXQocy5sZW5ndGggLSAxKSA9PSAnXCInKSBzID0gcy5zbGljZSgxLC0xKS5yZXBsYWNlKC9cIlwiL2csJ1wiJyk7XG5cdFx0XHRpZihzLmxlbmd0aCA9PT0gMCkgY2VsbC50ID0gJ3onO1xuXHRcdFx0ZWxzZSBpZihvLnJhdykgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHM7IH1cblx0XHRcdGVsc2UgaWYocy50cmltKCkubGVuZ3RoID09PSAwKSB7IGNlbGwudCA9ICdzJzsgY2VsbC52ID0gczsgfVxuXHRcdFx0ZWxzZSBpZihzLmNoYXJDb2RlQXQoMCkgPT0gMHgzRCkge1xuXHRcdFx0XHRpZihzLmNoYXJDb2RlQXQoMSkgPT0gMHgyMiAmJiBzLmNoYXJDb2RlQXQocy5sZW5ndGggLSAxKSA9PSAweDIyKSB7IGNlbGwudCA9ICdzJzsgY2VsbC52ID0gcy5zbGljZSgyLC0xKS5yZXBsYWNlKC9cIlwiL2csJ1wiJyk7IH1cblx0XHRcdFx0ZWxzZSBpZihmdXp6eWZtbGEocykpIHsgY2VsbC50ID0gJ24nOyBjZWxsLmYgPSBzLnNsaWNlKDEpOyB9XG5cdFx0XHRcdGVsc2UgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHM7IH0gfVxuXHRcdFx0ZWxzZSBpZihzID09IFwiVFJVRVwiKSB7IGNlbGwudCA9ICdiJzsgY2VsbC52ID0gdHJ1ZTsgfVxuXHRcdFx0ZWxzZSBpZihzID09IFwiRkFMU0VcIikgeyBjZWxsLnQgPSAnYic7IGNlbGwudiA9IGZhbHNlOyB9XG5cdFx0XHRlbHNlIGlmKCFpc05hTih2ID0gZnV6enludW0ocykpKSB7IGNlbGwudCA9ICduJzsgaWYoby5jZWxsVGV4dCAhPT0gZmFsc2UpIGNlbGwudyA9IHM7IGNlbGwudiA9IHY7IH1cblx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZShzKS5nZXREYXRlKCkpIHx8IF9yZSAmJiBzLm1hdGNoKF9yZSkpIHtcblx0XHRcdFx0Y2VsbC56ID0gby5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdFx0dmFyIGsgPSAwO1xuXHRcdFx0XHRpZihfcmUgJiYgcy5tYXRjaChfcmUpKXsgcz1kYXRlTkZfZml4KHMsIG8uZGF0ZU5GLCAocy5tYXRjaChfcmUpfHxbXSkpOyBrPTE7IH1cblx0XHRcdFx0aWYoby5jZWxsRGF0ZXMpIHsgY2VsbC50ID0gJ2QnOyBjZWxsLnYgPSBwYXJzZURhdGUocywgayk7IH1cblx0XHRcdFx0ZWxzZSB7IGNlbGwudCA9ICduJzsgY2VsbC52ID0gZGF0ZW51bShwYXJzZURhdGUocywgaykpOyB9XG5cdFx0XHRcdGlmKG8uY2VsbFRleHQgIT09IGZhbHNlKSBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiwgY2VsbC52IGluc3RhbmNlb2YgRGF0ZSA/IGRhdGVudW0oY2VsbC52KTpjZWxsLnYpO1xuXHRcdFx0XHRpZighby5jZWxsTkYpIGRlbGV0ZSBjZWxsLno7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjZWxsLnQgPSAncyc7XG5cdFx0XHRcdGNlbGwudiA9IHM7XG5cdFx0XHR9XG5cdFx0XHRpZihjZWxsLnQgPT0gJ3onKXt9XG5cdFx0XHRlbHNlIGlmKG8uZGVuc2UpIHsgaWYoIXdzW1JdKSB3c1tSXSA9IFtdOyB3c1tSXVtDXSA9IGNlbGw7IH1cblx0XHRcdGVsc2Ugd3NbZW5jb2RlX2NlbGwoe2M6QyxyOlJ9KV0gPSBjZWxsO1xuXHRcdFx0c3RhcnQgPSBlbmQrMTsgc3RhcnRjYyA9IHN0ci5jaGFyQ29kZUF0KHN0YXJ0KTtcblx0XHRcdGlmKHJhbmdlLmUuYyA8IEMpIHJhbmdlLmUuYyA9IEM7XG5cdFx0XHRpZihyYW5nZS5lLnIgPCBSKSByYW5nZS5lLnIgPSBSO1xuXHRcdFx0aWYoY2MgPT0gc2VwY2MpICsrQzsgZWxzZSB7IEMgPSAwOyArK1I7IGlmKG8uc2hlZXRSb3dzICYmIG8uc2hlZXRSb3dzIDw9IFIpIHJldHVybiB0cnVlOyB9XG5cdFx0fVxuXHRcdG91dGVyOiBmb3IoO2VuZCA8IHN0ci5sZW5ndGg7KytlbmQpIHN3aXRjaCgoY2M9c3RyLmNoYXJDb2RlQXQoZW5kKSkpIHtcblx0XHRcdGNhc2UgMHgyMjogaWYoc3RhcnRjYyA9PT0gMHgyMikgaW5zdHIgPSAhaW5zdHI7IGJyZWFrO1xuXHRcdFx0Y2FzZSBzZXBjYzogY2FzZSAweDBhOiBjYXNlIDB4MGQ6IGlmKCFpbnN0ciAmJiBmaW5pc2hfY2VsbCgpKSBicmVhayBvdXRlcjsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBicmVhaztcblx0XHR9XG5cdFx0aWYoZW5kIC0gc3RhcnQgPiAwKSBmaW5pc2hfY2VsbCgpO1xuXG5cdFx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0cmV0dXJuIHdzO1xuXHR9XG5cblx0ZnVuY3Rpb24gcHJuX3RvX3NoZWV0X3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0aWYoIShvcHRzICYmIG9wdHMuUFJOKSkgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRpZihvcHRzLkZTKSByZXR1cm4gZHN2X3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHRcdGlmKHN0ci5zbGljZSgwLDQpID09IFwic2VwPVwiKSByZXR1cm4gZHN2X3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHRcdGlmKHN0ci5pbmRleE9mKFwiXFx0XCIpID49IDAgfHwgc3RyLmluZGV4T2YoXCIsXCIpID49IDAgfHwgc3RyLmluZGV4T2YoXCI7XCIpID49IDApIHJldHVybiBkc3ZfdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdFx0cmV0dXJuIGFvYV90b19zaGVldChwcm5fdG9fYW9hX3N0cihzdHIsIG9wdHMpLCBvcHRzKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHBybl90b19zaGVldChkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHR2YXIgc3RyID0gXCJcIiwgYnl0ZXMgPSBvcHRzLnR5cGUgPT0gJ3N0cmluZycgPyBbMCwwLDAsMF0gOiBmaXJzdGJ5dGUoZCwgb3B0cyk7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0Jzogc3RyID0gQmFzZTY0X2RlY29kZShkKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdiaW5hcnknOiBzdHIgPSBkOyBicmVhaztcblx0XHRcdGNhc2UgJ2J1ZmZlcic6XG5cdFx0XHRcdGlmKG9wdHMuY29kZXBhZ2UgPT0gNjUwMDEpIHN0ciA9IGQudG9TdHJpbmcoJ3V0ZjgnKTsgLy8gVE9ETzogdGVzdCBpZiBidWZcblx0XHRcdFx0ZWxzZSBpZihvcHRzLmNvZGVwYWdlICYmIHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHN0ciA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShvcHRzLmNvZGVwYWdlLCBkKTtcblx0XHRcdFx0ZWxzZSBzdHIgPSBoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkKSA/IGQudG9TdHJpbmcoJ2JpbmFyeScpIDogYTJzKGQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2FycmF5Jzogc3RyID0gY2Myc3RyKGQpOyBicmVhaztcblx0XHRcdGNhc2UgJ3N0cmluZyc6IHN0ciA9IGQ7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHRcdH1cblx0XHRpZihieXRlc1swXSA9PSAweEVGICYmIGJ5dGVzWzFdID09IDB4QkIgJiYgYnl0ZXNbMl0gPT0gMHhCRikgc3RyID0gdXRmOHJlYWQoc3RyLnNsaWNlKDMpKTtcblx0XHRlbHNlIGlmKG9wdHMudHlwZSAhPSAnc3RyaW5nJyAmJiBvcHRzLnR5cGUgIT0gJ2J1ZmZlcicgJiYgb3B0cy5jb2RlcGFnZSA9PSA2NTAwMSkgc3RyID0gdXRmOHJlYWQoc3RyKTtcblx0XHRlbHNlIGlmKChvcHRzLnR5cGUgPT0gJ2JpbmFyeScpICYmIHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0cy5jb2RlcGFnZSkgIHN0ciA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShvcHRzLmNvZGVwYWdlLCAkY3B0YWJsZS51dGlscy5lbmNvZGUoMjg1OTEsc3RyKSk7XG5cdFx0aWYoc3RyLnNsaWNlKDAsMTkpID09IFwic29jaWFsY2FsYzp2ZXJzaW9uOlwiKSByZXR1cm4gRVRILnRvX3NoZWV0KG9wdHMudHlwZSA9PSAnc3RyaW5nJyA/IHN0ciA6IHV0ZjhyZWFkKHN0ciksIG9wdHMpO1xuXHRcdHJldHVybiBwcm5fdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fd29ya2Jvb2soZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHBybl90b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHRmdW5jdGlvbiBzaGVldF90b19wcm4od3MvKjpXb3Jrc2hlZXQqLy8qOjosIG9wdHM6P2FueSovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0dmFyIG9vLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0XHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnYgPT0gbnVsbCkgeyBvby5wdXNoKFwiICAgICAgICAgIFwiKTsgY29udGludWU7IH1cblx0XHRcdFx0dmFyIHcgPSAoY2VsbC53IHx8IChmb3JtYXRfY2VsbChjZWxsKSwgY2VsbC53KSB8fCBcIlwiKS5zbGljZSgwLDEwKTtcblx0XHRcdFx0d2hpbGUody5sZW5ndGggPCAxMCkgdyArPSBcIiBcIjtcblx0XHRcdFx0b28ucHVzaCh3ICsgKEMgPT09IDAgPyBcIiBcIiA6IFwiXCIpKTtcblx0XHRcdH1cblx0XHRcdG8ucHVzaChvby5qb2luKFwiXCIpKTtcblx0XHR9XG5cdFx0cmV0dXJuIG8uam9pbihcIlxcblwiKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IHBybl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogcHJuX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX3ByblxuXHR9O1xufSkoKTtcblxuLyogRXhjZWwgZGVmYXVsdHMgdG8gU1lMSyBidXQgd2FybnMgaWYgZGF0YSBpcyBub3QgdmFsaWQgKi9cbmZ1bmN0aW9uIHJlYWRfd2JfSUQoZCwgb3B0cykge1xuXHR2YXIgbyA9IG9wdHMgfHwge30sIE9MRF9XVEYgPSAhIW8uV1RGOyBvLldURiA9IHRydWU7XG5cdHRyeSB7XG5cdFx0dmFyIG91dCA9IFNZTEsudG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0by5XVEYgPSBPTERfV1RGO1xuXHRcdHJldHVybiBvdXQ7XG5cdH0gY2F0Y2goZSkge1xuXHRcdG8uV1RGID0gT0xEX1dURjtcblx0XHRpZighZS5tZXNzYWdlLm1hdGNoKC9TWUxLIGJhZCByZWNvcmQgSUQvKSAmJiBPTERfV1RGKSB0aHJvdyBlO1xuXHRcdHJldHVybiBQUk4udG9fd29ya2Jvb2soZCwgb3B0cyk7XG5cdH1cbn1cblxudmFyIFdLXyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGxvdHVzaG9wcGVyKGRhdGEsIGNiLyo6UmVjb3JkSG9wcGVyQ0IqLywgb3B0cy8qOmFueSovKSB7XG5cdFx0aWYoIWRhdGEpIHJldHVybjtcblx0XHRwcmVwX2Jsb2IoZGF0YSwgZGF0YS5sIHx8IDApO1xuXHRcdHZhciBFbnVtID0gb3B0cy5FbnVtIHx8IFdLMUVudW07XG5cdFx0d2hpbGUoZGF0YS5sIDwgZGF0YS5sZW5ndGgpIHtcblx0XHRcdHZhciBSVCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0XHRcdHZhciBSID0gRW51bVtSVF0gfHwgRW51bVsweEZGRkZdO1xuXHRcdFx0dmFyIGxlbmd0aCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0XHRcdHZhciB0Z3QgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdFx0XHR2YXIgZCA9IFIuZiAmJiBSLmYoZGF0YSwgbGVuZ3RoLCBvcHRzKTtcblx0XHRcdGRhdGEubCA9IHRndDtcblx0XHRcdGlmKGNiKGQsIFIsIFJUKSkgcmV0dXJuO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGxvdHVzX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpIHtcblx0XHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0XHRjYXNlICdiYXNlNjQnOiByZXR1cm4gbG90dXNfdG9fd29ya2Jvb2tfYnVmKHMyYShCYXNlNjRfZGVjb2RlKGQpKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gbG90dXNfdG9fd29ya2Jvb2tfYnVmKHMyYShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdidWZmZXInOlxuXHRcdFx0Y2FzZSAnYXJyYXknOiByZXR1cm4gbG90dXNfdG9fd29ya2Jvb2tfYnVmKGQsIG9wdHMpO1xuXHRcdH1cblx0XHR0aHJvdyBcIlVuc3VwcG9ydGVkIHR5cGUgXCIgKyBvcHRzLnR5cGU7XG5cdH1cblxuXHRmdW5jdGlvbiBsb3R1c190b193b3JrYm9va19idWYoZCwgb3B0cykvKjpXb3JrYm9vayovIHtcblx0XHRpZighZCkgcmV0dXJuIGQ7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdGlmKERFTlNFICE9IG51bGwgJiYgby5kZW5zZSA9PSBudWxsKSBvLmRlbnNlID0gREVOU0U7XG5cdFx0dmFyIHMvKjpXb3Jrc2hlZXQqLyA9ICgoby5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pLCBuID0gXCJTaGVldDFcIiwgbmV4dF9uID0gXCJcIiwgc2lkeCA9IDA7XG5cdFx0dmFyIHNoZWV0cyA9IHt9LCBzbmFtZXMgPSBbXSwgcmVhbG5hbWVzID0gW107XG5cblx0XHR2YXIgcmVmZ3Vlc3MgPSB7czoge3I6MCwgYzowfSwgZToge3I6MCwgYzowfSB9O1xuXHRcdHZhciBzaGVldFJvd3MgPSBvLnNoZWV0Um93cyB8fCAwO1xuXG5cdFx0aWYoZFsyXSA9PSAweDAwKSB7XG5cdFx0XHRpZihkWzNdID09IDB4MDggfHwgZFszXSA9PSAweDA5KSB7XG5cdFx0XHRcdGlmKGQubGVuZ3RoID49IDE2ICYmIGRbMTRdID09IDB4MDUgJiYgZFsxNV0gPT09IDB4NmMpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFdvcmtzIDMgZm9yIE1hYyBmaWxlXCIpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmKGRbMl0gPT0gMHgwMikge1xuXHRcdFx0by5FbnVtID0gV0sxRW51bTtcblx0XHRcdGxvdHVzaG9wcGVyKGQsIGZ1bmN0aW9uKHZhbCwgUiwgUlQpIHsgc3dpdGNoKFJUKSB7XG5cdFx0XHRcdGNhc2UgMHgwMDogLyogQk9GICovXG5cdFx0XHRcdFx0by52ZXJzID0gdmFsO1xuXHRcdFx0XHRcdGlmKHZhbCA+PSAweDEwMDApIG8ucXBybyA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNjogcmVmZ3Vlc3MgPSB2YWw7IGJyZWFrOyAvKiBSQU5HRSAqL1xuXHRcdFx0XHRjYXNlIDB4Q0M6IGlmKHZhbCkgbmV4dF9uID0gdmFsOyBicmVhazsgLyogU0hFRVROQU1FQ1MgKi9cblx0XHRcdFx0Y2FzZSAweERFOiBuZXh0X24gPSB2YWw7IGJyZWFrOyAvKiBTSEVFVE5BTUVMUCAqL1xuXHRcdFx0XHRjYXNlIDB4MEY6IC8qIExBQkVMICovXG5cdFx0XHRcdGNhc2UgMHgzMzogLyogU1RSSU5HICovXG5cdFx0XHRcdFx0aWYoIW8ucXBybykgdmFsWzFdLnYgPSB2YWxbMV0udi5zbGljZSgxKTtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMHgwRDogLyogSU5URUdFUiAqL1xuXHRcdFx0XHRjYXNlIDB4MEU6IC8qIE5VTUJFUiAqL1xuXHRcdFx0XHRjYXNlIDB4MTA6IC8qIEZPUk1VTEEgKi9cblx0XHRcdFx0XHQvKiBUT0RPOiBhY3R1YWwgdHJhbnNsYXRpb24gb2YgdGhlIGZvcm1hdCBjb2RlICovXG5cdFx0XHRcdFx0aWYoUlQgPT0gMHgwRSAmJiAodmFsWzJdICYgMHg3MCkgPT0gMHg3MCAmJiAodmFsWzJdICYgMHgwRikgPiAxICYmICh2YWxbMl0gJiAweDBGKSA8IDE1KSB7XG5cdFx0XHRcdFx0XHR2YWxbMV0ueiA9IG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdFx0XHRpZihvLmNlbGxEYXRlcykgeyB2YWxbMV0udCA9ICdkJzsgdmFsWzFdLnYgPSBudW1kYXRlKHZhbFsxXS52KTsgfVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmKG8ucXBybykge1xuXHRcdFx0XHRcdFx0aWYodmFsWzNdID4gc2lkeCkge1xuXHRcdFx0XHRcdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0XHRcdHNoZWV0c1tuXSA9IHM7XG5cdFx0XHRcdFx0XHRcdHNuYW1lcy5wdXNoKG4pO1xuXHRcdFx0XHRcdFx0XHRzID0gKG8uZGVuc2UgPyBbXSA6IHt9KTtcblx0XHRcdFx0XHRcdFx0cmVmZ3Vlc3MgPSB7czoge3I6MCwgYzowfSwgZToge3I6MCwgYzowfSB9O1xuXHRcdFx0XHRcdFx0XHRzaWR4ID0gdmFsWzNdOyBuID0gbmV4dF9uIHx8IFwiU2hlZXRcIiArIChzaWR4ICsgMSk7IG5leHRfbiA9IFwiXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dmFyIHRtcGNlbGwgPSBvLmRlbnNlID8gKHNbdmFsWzBdLnJdfHxbXSlbdmFsWzBdLmNdIDogc1tlbmNvZGVfY2VsbCh2YWxbMF0pXTtcblx0XHRcdFx0XHRpZih0bXBjZWxsKSB7XG5cdFx0XHRcdFx0XHR0bXBjZWxsLnQgPSB2YWxbMV0udDsgdG1wY2VsbC52ID0gdmFsWzFdLnY7XG5cdFx0XHRcdFx0XHRpZih2YWxbMV0ueiAhPSBudWxsKSB0bXBjZWxsLnogPSB2YWxbMV0uejtcblx0XHRcdFx0XHRcdGlmKHZhbFsxXS5mICE9IG51bGwpIHRtcGNlbGwuZiA9IHZhbFsxXS5mO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKG8uZGVuc2UpIHtcblx0XHRcdFx0XHRcdGlmKCFzW3ZhbFswXS5yXSkgc1t2YWxbMF0ucl0gPSBbXTtcblx0XHRcdFx0XHRcdHNbdmFsWzBdLnJdW3ZhbFswXS5jXSA9IHZhbFsxXTtcblx0XHRcdFx0XHR9IGVsc2Ugc1tlbmNvZGVfY2VsbCh2YWxbMF0pXSA9IHZhbFsxXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdH19LCBvKTtcblx0XHR9IGVsc2UgaWYoZFsyXSA9PSAweDFBIHx8IGRbMl0gPT0gMHgwRSkge1xuXHRcdFx0by5FbnVtID0gV0szRW51bTtcblx0XHRcdGlmKGRbMl0gPT0gMHgwRSkgeyBvLnFwcm8gPSB0cnVlOyBkLmwgPSAwOyB9XG5cdFx0XHRsb3R1c2hvcHBlcihkLCBmdW5jdGlvbih2YWwsIFIsIFJUKSB7IHN3aXRjaChSVCkge1xuXHRcdFx0XHRjYXNlIDB4Q0M6IG4gPSB2YWw7IGJyZWFrOyAvKiBTSEVFVE5BTUVDUyAqL1xuXHRcdFx0XHRjYXNlIDB4MTY6IC8qIExBQkVMMTYgKi9cblx0XHRcdFx0XHR2YWxbMV0udiA9IHZhbFsxXS52LnNsaWNlKDEpO1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAweDE3OiAvKiBOVU1CRVIxNyAqL1xuXHRcdFx0XHRjYXNlIDB4MTg6IC8qIE5VTUJFUjE4ICovXG5cdFx0XHRcdGNhc2UgMHgxOTogLyogRk9STVVMQTE5ICovXG5cdFx0XHRcdGNhc2UgMHgyNTogLyogTlVNQkVSMjUgKi9cblx0XHRcdFx0Y2FzZSAweDI3OiAvKiBOVU1CRVIyNyAqL1xuXHRcdFx0XHRjYXNlIDB4Mjg6IC8qIEZPUk1VTEEyOCAqL1xuXHRcdFx0XHRcdGlmKHZhbFszXSA+IHNpZHgpIHtcblx0XHRcdFx0XHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRcdFx0XHRcdHNoZWV0c1tuXSA9IHM7XG5cdFx0XHRcdFx0XHRzbmFtZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdHMgPSAoby5kZW5zZSA/IFtdIDoge30pO1xuXHRcdFx0XHRcdFx0cmVmZ3Vlc3MgPSB7czoge3I6MCwgYzowfSwgZToge3I6MCwgYzowfSB9O1xuXHRcdFx0XHRcdFx0c2lkeCA9IHZhbFszXTsgbiA9IFwiU2hlZXRcIiArIChzaWR4ICsgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHNoZWV0Um93cyA+IDAgJiYgdmFsWzBdLnIgPj0gc2hlZXRSb3dzKSBicmVhaztcblx0XHRcdFx0XHRpZihvLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRpZighc1t2YWxbMF0ucl0pIHNbdmFsWzBdLnJdID0gW107XG5cdFx0XHRcdFx0XHRzW3ZhbFswXS5yXVt2YWxbMF0uY10gPSB2YWxbMV07XG5cdFx0XHRcdFx0fSBlbHNlIHNbZW5jb2RlX2NlbGwodmFsWzBdKV0gPSB2YWxbMV07XG5cdFx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5jIDwgdmFsWzBdLmMpIHJlZmd1ZXNzLmUuYyA9IHZhbFswXS5jO1xuXHRcdFx0XHRcdGlmKHJlZmd1ZXNzLmUuciA8IHZhbFswXS5yKSByZWZndWVzcy5lLnIgPSB2YWxbMF0ucjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDFCOiAvKiBYRk9STUFUICovXG5cdFx0XHRcdFx0aWYodmFsWzB4MzZiMF0pIHJlYWxuYW1lc1t2YWxbMHgzNmIwXVswXV0gPSB2YWxbMHgzNmIwXVsxXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDA2MDE6IC8qIFNIRUVUSU5GT1FQICovXG5cdFx0XHRcdFx0cmVhbG5hbWVzW3ZhbFswXV0gPSB2YWxbMV07IGlmKHZhbFswXSA9PSBzaWR4KSBuID0gdmFsWzFdOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogYnJlYWs7XG5cdFx0XHR9fSwgbyk7XG5cdFx0fSBlbHNlIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBMT1RVUyBCT0YgXCIgKyBkWzJdKTtcblx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0c2hlZXRzW25leHRfbiB8fCBuXSA9IHM7XG5cdFx0c25hbWVzLnB1c2gobmV4dF9uIHx8IG4pO1xuXHRcdGlmKCFyZWFsbmFtZXMubGVuZ3RoKSByZXR1cm4geyBTaGVldE5hbWVzOiBzbmFtZXMsIFNoZWV0czogc2hlZXRzIH07XG5cdFx0dmFyIG9zaGVldHMgPSB7fSwgcm5hbWVzID0gW107XG5cdFx0LyogVE9ETzogdmVyaWZ5IG5vIGNvbGxpc2lvbnMgKi9cblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgcmVhbG5hbWVzLmxlbmd0aDsgKytpKSBpZihzaGVldHNbc25hbWVzW2ldXSkge1xuXHRcdFx0cm5hbWVzLnB1c2gocmVhbG5hbWVzW2ldIHx8IHNuYW1lc1tpXSk7XG5cdFx0XHRvc2hlZXRzW3JlYWxuYW1lc1tpXV0gPSBzaGVldHNbcmVhbG5hbWVzW2ldXSB8fCBzaGVldHNbc25hbWVzW2ldXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cm5hbWVzLnB1c2gocmVhbG5hbWVzW2ldKTtcblx0XHRcdG9zaGVldHNbcmVhbG5hbWVzW2ldXSA9ICh7IFwiIXJlZlwiOiBcIkExXCIgfSk7XG5cdFx0fVxuXHRcdHJldHVybiB7IFNoZWV0TmFtZXM6IHJuYW1lcywgU2hlZXRzOiBvc2hlZXRzIH07XG5cdH1cblxuXHRmdW5jdGlvbiBzaGVldF90b193azEod3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdGlmKCtvLmNvZGVwYWdlID49IDApIHNldF9jcCgrby5jb2RlcGFnZSk7XG5cdFx0aWYoby50eXBlID09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB3cml0ZSBXSzEgdG8gSlMgc3RyaW5nXCIpO1xuXHRcdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0dmFyIGNvbHMgPSBbXTtcblxuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwLCB3cml0ZV9CT0ZfV0sxKDB4MDQwNikpO1xuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDA2LCB3cml0ZV9SQU5HRShyYW5nZSkpO1xuXHRcdHZhciBtYXhfUiA9IE1hdGgubWluKHJhbmdlLmUuciwgODE5MSk7XG5cdFx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IG1heF9SOyArK1IpIHtcblx0XHRcdHZhciByciA9IGVuY29kZV9yb3coUik7XG5cdFx0XHRmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdFx0dmFyIHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC50ID09IFwielwiKSBjb250aW51ZTtcblx0XHRcdFx0LyogVE9ETzogZm9ybXVsYSByZWNvcmRzICovXG5cdFx0XHRcdGlmKGNlbGwudCA9PSBcIm5cIikge1xuXHRcdFx0XHRcdGlmKChjZWxsLnZ8MCk9PWNlbGwudiAmJiBjZWxsLnYgPj0gLTMyNzY4ICYmIGNlbGwudiA8PSAzMjc2Nykgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MGQsIHdyaXRlX0lOVEVHRVIoUiwgQywgY2VsbC52KSk7XG5cdFx0XHRcdFx0ZWxzZSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwZSwgd3JpdGVfTlVNQkVSKFIsIEMsIGNlbGwudikpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhciBzdHIgPSBmb3JtYXRfY2VsbChjZWxsKTtcblx0XHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwRiwgd3JpdGVfTEFCRUwoUiwgQywgc3RyLnNsaWNlKDAsIDIzOSkpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxKTtcblx0XHRyZXR1cm4gYmEuZW5kKCk7XG5cdH1cblxuXHRmdW5jdGlvbiBib29rX3RvX3drMyh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHRpZigrby5jb2RlcGFnZSA+PSAwKSBzZXRfY3AoK28uY29kZXBhZ2UpO1xuXHRcdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgV0szIHRvIEpTIHN0cmluZ1wiKTtcblx0XHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblxuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwLCB3cml0ZV9CT0ZfV0szKHdiKSk7XG5cblx0XHRmb3IodmFyIGkgPSAwLCBjbnQgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkgaWYoKHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXSB8fCB7fSlbXCIhcmVmXCJdKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgxYiwgd3JpdGVfWEZPUk1BVF9TSEVFVE5BTUUod2IuU2hlZXROYW1lc1tpXSwgY250KyspKTtcblxuXHRcdHZhciB3c2lkeCA9IDA7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dO1xuXHRcdFx0aWYoIXdzIHx8ICF3c1tcIiFyZWZcIl0pIGNvbnRpbnVlO1xuXHRcdFx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdFx0dmFyIGNvbHMgPSBbXTtcblx0XHRcdHZhciBtYXhfUiA9IE1hdGgubWluKHJhbmdlLmUuciwgODE5MSk7XG5cdFx0XHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gbWF4X1I7ICsrUikge1xuXHRcdFx0XHR2YXIgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdFx0XHRmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0XHRcdHZhciByZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnQgPT0gXCJ6XCIpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdC8qIFRPRE86IEZPUk1VTEExOSBOVU1CRVIxOCByZWNvcmRzICovXG5cdFx0XHRcdFx0aWYoY2VsbC50ID09IFwiblwiKSB7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgxNywgd3JpdGVfTlVNQkVSXzE3KFIsIEMsIHdzaWR4LCBjZWxsLnYpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dmFyIHN0ciA9IGZvcm1hdF9jZWxsKGNlbGwpO1xuXHRcdFx0XHRcdFx0LyogVE9ETzogbWF4IGxlbj8gKi9cblx0XHRcdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDE2LCB3cml0ZV9MQUJFTF8xNihSLCBDLCB3c2lkeCwgc3RyLnNsaWNlKDAsIDIzOSkpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdCsrd3NpZHg7XG5cdFx0fVxuXG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDEpO1xuXHRcdHJldHVybiBiYS5lbmQoKTtcblx0fVxuXG5cblx0ZnVuY3Rpb24gd3JpdGVfQk9GX1dLMSh2Lyo6bnVtYmVyKi8pIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1ZigyKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgdik7XG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHdyaXRlX0JPRl9XSzMod2IvKjpXb3JrYm9vayovKSB7XG5cdFx0dmFyIG91dCA9IG5ld19idWYoMjYpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDEwMDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwMDQpO1xuXHRcdG91dC53cml0ZV9zaGlmdCg0LCAweDAwMDApO1xuXHRcdHZhciByb3dzID0gMCwgY29scyA9IDAsIHdzY250ID0gMDtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIG5hbWUgPSB3Yi5TaGVldE5hbWVzW2ldO1xuXHRcdFx0dmFyIHdzID0gd2IuU2hlZXRzW25hbWVdO1xuXHRcdFx0aWYoIXdzIHx8ICF3c1tcIiFyZWZcIl0pIGNvbnRpbnVlO1xuXHRcdFx0Kyt3c2NudDtcblx0XHRcdHZhciByYW5nZSA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdFx0aWYocm93cyA8IHJhbmdlLmUucikgcm93cyA9IHJhbmdlLmUucjtcblx0XHRcdGlmKGNvbHMgPCByYW5nZS5lLmMpIGNvbHMgPSByYW5nZS5lLmM7XG5cdFx0fVxuXHRcdGlmKHJvd3MgPiA4MTkxKSByb3dzID0gODE5MTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcm93cyk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIHdzY250KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMSwgY29scyk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMSwgMHgwMSk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIDB4MDIpO1xuXHRcdG91dC53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1JBTkdFKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciBvID0ge3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtcblx0XHRpZihsZW5ndGggPT0gOCAmJiBvcHRzLnFwcm8pIHtcblx0XHRcdG8ucy5jID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0YmxvYi5sKys7XG5cdFx0XHRvLnMuciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdG8uZS5jID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0YmxvYi5sKys7XG5cdFx0XHRvLmUuciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHRvLnMuYyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRvLnMuciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihsZW5ndGggPT0gMTIgJiYgb3B0cy5xcHJvKSBibG9iLmwgKz0gMjtcblx0XHRvLmUuYyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRvLmUuciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihsZW5ndGggPT0gMTIgJiYgb3B0cy5xcHJvKSBibG9iLmwgKz0gMjtcblx0XHRpZihvLnMuYyA9PSAweEZGRkYpIG8ucy5jID0gby5lLmMgPSBvLnMuciA9IG8uZS5yID0gMDtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9SQU5HRShyYW5nZSkge1xuXHRcdHZhciBvdXQgPSBuZXdfYnVmKDgpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCByYW5nZS5zLmMpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCByYW5nZS5zLnIpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCByYW5nZS5lLmMpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCByYW5nZS5lLnIpO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciBvID0gW3tjOjAscjowfSwge3Q6J24nLHY6MH0sIDAsIDBdO1xuXHRcdGlmKG9wdHMucXBybyAmJiBvcHRzLnZlcnMgIT0gMHg1MTIwKSB7XG5cdFx0XHRvWzBdLmMgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRvWzNdID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0b1swXS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0YmxvYi5sKz0yO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvWzJdID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0b1swXS5jID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvWzBdLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTEFCRUwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHRvWzFdLnQgPSAncyc7XG5cdFx0aWYob3B0cy52ZXJzID09IDB4NTEyMCkge1xuXHRcdFx0YmxvYi5sKys7XG5cdFx0XHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KGxlbiwgJ3V0ZjgnKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHRpZihvcHRzLnFwcm8pIGJsb2IubCsrO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCh0Z3QgLSBibG9iLmwsICdjc3RyJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfTEFCRUwoUiwgQywgcykge1xuXHRcdC8qIFRPRE86IGVuY29kaW5nICovXG5cdFx0dmFyIG8gPSBuZXdfYnVmKDcgKyBzLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweEZGKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIEMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDI3KTsgLy8gPz9cblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgby5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGNjID0gcy5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgxLCBjYyA+PSAweDgwID8gMHg1RiA6IGNjKTtcblx0XHR9XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0lOVEVHRVIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDIsICdpJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfSU5URUdFUihSLCBDLCB2KSB7XG5cdFx0dmFyIG8gPSBuZXdfYnVmKDcpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgdiwgJ2knKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQoOCwgJ2YnKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9OVU1CRVIoUiwgQywgdikge1xuXHRcdHZhciBvID0gbmV3X2J1ZigxMyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweEZGKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIEMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCg4LCB2LCAnZicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfRk9STVVMQShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdC8qIFRPRE86IGZvcm11bGEgKi9cblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQoOCwgJ2YnKTtcblx0XHRpZihvcHRzLnFwcm8pIGJsb2IubCA9IHRndDtcblx0XHRlbHNlIHtcblx0XHRcdHZhciBmbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0d2sxX2ZtbGFfdG9fY3NmKGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwgKyBmbGVuKSwgbyk7XG5cdFx0XHRibG9iLmwgKz0gZmxlbjtcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiB3azFfcGFyc2VfcmMoQiwgViwgY29sKSB7XG5cdFx0dmFyIHJlbCA9IFYgJiAweDgwMDA7XG5cdFx0ViAmPSB+MHg4MDAwO1xuXHRcdFYgPSAocmVsID8gQiA6IDApICsgKChWID49IDB4MjAwMCkgPyBWIC0gMHg0MDAwIDogVik7XG5cdFx0cmV0dXJuIChyZWwgPyBcIlwiIDogXCIkXCIpICsgKGNvbCA/IGVuY29kZV9jb2woVikgOiBlbmNvZGVfcm93KFYpKTtcblx0fVxuXHQvKiB2YXIgb3ByZWMgPSBbXG5cdFx0OCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgNiwgNCwgNCwgNSwgNSwgNywgMywgMyxcblx0XHQzLCAzLCAzLCAzLCAxLCAxLCAyLCA2LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4XG5cdF07ICovXG5cdC8qIFRPRE86IGZsZXNoIG91dCAqL1xuXHR2YXIgRnVuY1RhYiA9IHtcblx0XHQweDMzOiBbXCJGQUxTRVwiLCAwXSxcblx0XHQweDM0OiBbXCJUUlVFXCIsIDBdLFxuXHRcdDB4NDY6IFtcIkxFTlwiLCAxXSxcblx0XHQweDUwOiBbXCJTVU1cIiwgNjldLFxuXHRcdDB4NTE6IFtcIkFWRVJBR0VBXCIsIDY5XSxcblx0XHQweDUyOiBbXCJDT1VOVEFcIiwgNjldLFxuXHRcdDB4NTM6IFtcIk1JTkFcIiwgNjldLFxuXHRcdDB4NTQ6IFtcIk1BWEFcIiwgNjldLFxuXHRcdDB4NkY6IFtcIlRcIiwgMV1cblx0fTtcblx0dmFyIEJpbk9wVGFiID0gW1xuXHRcdCAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW1peGVkLXNwYWNlcy1hbmQtdGFic1xuXHRcdCAgXCJcIiwgIFwiK1wiLCAgXCItXCIsICBcIipcIiwgIFwiL1wiLCAgXCJeXCIsICBcIj1cIiwgXCI8PlwiLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW1peGVkLXNwYWNlcy1hbmQtdGFic1xuXHRcdFwiPD1cIiwgXCI+PVwiLCAgXCI8XCIsICBcIj5cIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW1peGVkLXNwYWNlcy1hbmQtdGFic1xuXHRcdCBcIiZcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW1peGVkLXNwYWNlcy1hbmQtdGFic1xuXHRdO1xuXG5cdGZ1bmN0aW9uIHdrMV9mbWxhX3RvX2NzZihibG9iLCBvKSB7XG5cdFx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXHRcdHZhciBvdXQgPSBbXSwgYXJnYyA9IDAsIFIgPSBcIlwiLCBDID0gXCJcIiwgYXJnTCA9IFwiXCIsIGFyZ1IgPSBcIlwiO1xuXHRcdHdoaWxlKGJsb2IubCA8IGJsb2IubGVuZ3RoKSB7XG5cdFx0XHR2YXIgY2MgPSBibG9iW2Jsb2IubCsrXTtcblx0XHRcdHN3aXRjaChjYykge1xuXHRcdFx0XHRjYXNlIDB4MDA6IG91dC5wdXNoKGJsb2IucmVhZF9zaGlmdCg4LCAnZicpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMToge1xuXHRcdFx0XHRcdEMgPSB3azFfcGFyc2VfcmMob1swXS5jLCBibG9iLnJlYWRfc2hpZnQoMiksIHRydWUpO1xuXHRcdFx0XHRcdFIgPSB3azFfcGFyc2VfcmMob1swXS5yLCBibG9iLnJlYWRfc2hpZnQoMiksIGZhbHNlKTtcblx0XHRcdFx0XHRvdXQucHVzaChDICsgUik7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjoge1xuXHRcdFx0XHRcdHZhciBjID0gd2sxX3BhcnNlX3JjKG9bMF0uYywgYmxvYi5yZWFkX3NoaWZ0KDIpLCB0cnVlKTtcblx0XHRcdFx0XHR2YXIgciA9IHdrMV9wYXJzZV9yYyhvWzBdLnIsIGJsb2IucmVhZF9zaGlmdCgyKSwgZmFsc2UpO1xuXHRcdFx0XHRcdEMgPSB3azFfcGFyc2VfcmMob1swXS5jLCBibG9iLnJlYWRfc2hpZnQoMiksIHRydWUpO1xuXHRcdFx0XHRcdFIgPSB3azFfcGFyc2VfcmMob1swXS5yLCBibG9iLnJlYWRfc2hpZnQoMiksIGZhbHNlKTtcblx0XHRcdFx0XHRvdXQucHVzaChjICsgciArIFwiOlwiICsgQyArIFIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDM6XG5cdFx0XHRcdFx0aWYoYmxvYi5sIDwgYmxvYi5sZW5ndGgpIHsgY29uc29sZS5lcnJvcihcIldLMSBwcmVtYXR1cmUgZm9ybXVsYSBlbmRcIik7IHJldHVybjsgfVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDQ6IG91dC5wdXNoKFwiKFwiICsgb3V0LnBvcCgpICsgXCIpXCIpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA1OiBvdXQucHVzaChibG9iLnJlYWRfc2hpZnQoMikpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA2OiB7XG5cdFx0XHRcdFx0LyogVE9ETzogdGV4dCBlbmNvZGluZyAqL1xuXHRcdFx0XHRcdHZhciBaID0gXCJcIjsgd2hpbGUoKGNjID0gYmxvYltibG9iLmwrK10pKSBaICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2MpO1xuXHRcdFx0XHRcdG91dC5wdXNoKCdcIicgKyBaLnJlcGxhY2UoL1wiL2csICdcIlwiJykgKyAnXCInKTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDg6IG91dC5wdXNoKFwiLVwiICsgb3V0LnBvcCgpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxNzogb3V0LnB1c2goXCIrXCIgKyBvdXQucG9wKCkpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDE2OiBvdXQucHVzaChcIk5PVChcIiArIG91dC5wb3AoKSArIFwiKVwiKTsgYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDE0OiBjYXNlIDB4MTU6IHtcblx0XHRcdFx0XHRhcmdSID0gb3V0LnBvcCgpOyBhcmdMID0gb3V0LnBvcCgpO1xuXHRcdFx0XHRcdG91dC5wdXNoKFtcIkFORFwiLCBcIk9SXCJdW2NjIC0gMHgxNF0gKyBcIihcIiArIGFyZ0wgKyBcIixcIiArIGFyZ1IgKyBcIilcIik7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRpZihjYyA8IDB4MjAgJiYgQmluT3BUYWJbY2NdKSB7XG5cdFx0XHRcdFx0XHRhcmdSID0gb3V0LnBvcCgpOyBhcmdMID0gb3V0LnBvcCgpO1xuXHRcdFx0XHRcdFx0b3V0LnB1c2goYXJnTCArIEJpbk9wVGFiW2NjXSArIGFyZ1IpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZihGdW5jVGFiW2NjXSkge1xuXHRcdFx0XHRcdFx0YXJnYyA9IEZ1bmNUYWJbY2NdWzFdO1xuXHRcdFx0XHRcdFx0aWYoYXJnYyA9PSA2OSkgYXJnYyA9IGJsb2JbYmxvYi5sKytdO1xuXHRcdFx0XHRcdFx0aWYoYXJnYyA+IG91dC5sZW5ndGgpIHsgY29uc29sZS5lcnJvcihcIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweFwiICsgY2MudG9TdHJpbmcoMTYpICsgXCI6fFwiICsgb3V0LmpvaW4oXCJ8XCIpICsgXCJ8XCIpOyByZXR1cm47IH1cblx0XHRcdFx0XHRcdHZhciBhcmdzID0gb3V0LnNsaWNlKC1hcmdjKTtcblx0XHRcdFx0XHRcdG91dC5sZW5ndGggLT0gYXJnYztcblx0XHRcdFx0XHRcdG91dC5wdXNoKEZ1bmNUYWJbY2NdWzBdICsgXCIoXCIgKyBhcmdzLmpvaW4oXCIsXCIpICsgXCIpXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGlmKGNjIDw9IDB4MDcpIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIGludmFsaWQgb3Bjb2RlIFwiICsgY2MudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHRlbHNlIGlmKGNjIDw9IDB4MTgpIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIHVuc3VwcG9ydGVkIG9wIFwiICsgY2MudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHRlbHNlIGlmKGNjIDw9IDB4MUUpIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIGludmFsaWQgb3Bjb2RlIFwiICsgY2MudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHRlbHNlIGlmKGNjIDw9IDB4NzMpIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIHVuc3VwcG9ydGVkIGZ1bmN0aW9uIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0Ly8gcG9zc2libGUgZnV0dXJlIGZ1bmN0aW9ucyA/P1xuXHRcdFx0XHRcdGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJXSzEgdW5yZWNvZ25pemVkIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKG91dC5sZW5ndGggPT0gMSkgb1sxXS5mID0gXCJcIiArIG91dFswXTtcblx0XHRlbHNlIGNvbnNvbGUuZXJyb3IoXCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgfFwiICsgb3V0LmpvaW4oXCJ8XCIpICsgXCJ8XCIpO1xuXHR9XG5cblxuXHRmdW5jdGlvbiBwYXJzZV9jZWxsXzMoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdFx0dmFyIG8gPSBbe2M6MCxyOjB9LCB7dDonbicsdjowfSwgMF07XG5cdFx0b1swXS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvWzNdID0gYmxvYltibG9iLmwrK107IG9bMF0uYyA9IGJsb2JbYmxvYi5sKytdO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTEFCRUxfMTYoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsXzMoYmxvYiwgbGVuZ3RoKTtcblx0XHRvWzFdLnQgPSAncyc7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCAtIDQsICdjc3RyJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfTEFCRUxfMTYoUiwgQywgd3NpZHgsIHMpIHtcblx0XHQvKiBUT0RPOiBlbmNvZGluZyAqL1xuXHRcdHZhciBvID0gbmV3X2J1Zig2ICsgcy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCB3c2lkeCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MjcpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgY2MgPSBzLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDEsIGNjID49IDB4ODAgPyAweDVGIDogY2MpO1xuXHRcdH1cblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSXzE4KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdHZhciB2ID0gb1sxXS52ID4+IDE7XG5cdFx0aWYob1sxXS52ICYgMHgxKSB7XG5cdFx0XHRzd2l0Y2godiAmIDB4MDcpIHtcblx0XHRcdFx0Y2FzZSAwOiB2ID0gKHYgPj4gMykgKiA1MDAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAxOiB2ID0gKHYgPj4gMykgKiA1MDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDI6IHYgPSAodiA+PiAzKSAvIDIwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAzOiB2ID0gKHYgPj4gMykgLyAyMDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDQ6IHYgPSAodiA+PiAzKSAvIDIwMDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDU6IHYgPSAodiA+PiAzKSAvIDIwMDAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSA2OiB2ID0gKHYgPj4gMykgLyAxNjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNzogdiA9ICh2ID4+IDMpIC8gNjQ7IGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvWzFdLnYgPSB2O1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSXzE3KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0dmFyIHYxID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciB2MiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihlID09IDB4RkZGRikge1xuXHRcdFx0aWYodjEgPT09IDAgJiYgdjIgPT09IDB4QzAwMDAwMDApIHsgb1sxXS50ID0gXCJlXCI7IG9bMV0udiA9IDB4MEY7IH0gLy8gRVJSIC0+ICNWQUxVRSFcblx0XHRcdGVsc2UgaWYodjEgPT09IDAgJiYgdjIgPT09IDB4RDAwMDAwMDApIHsgb1sxXS50ID0gXCJlXCI7IG9bMV0udiA9IDB4MkE7IH0gLy8gTkEgLT4gI04vQVxuXHRcdFx0ZWxzZSBvWzFdLnYgPSAwO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHRcdHZhciBzID0gZSAmIDB4ODAwMDsgZSA9IChlJjB4N0ZGRikgLSAxNjQ0Njtcblx0XHRvWzFdLnYgPSAoMSAtIHMqMikgKiAodjIgKiBNYXRoLnBvdygyLCBlKzMyKSArIHYxICogTWF0aC5wb3coMiwgZSkpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX05VTUJFUl8xNyhSLCBDLCB3c2lkeCwgdikge1xuXHRcdHZhciBvID0gbmV3X2J1ZigxNCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHdzaWR4KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIEMpO1xuXHRcdGlmKHYgPT0gMCkge1xuXHRcdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4RkZGRik7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0dmFyIHMgPSAwLCBlID0gMCwgdjEgPSAwLCB2MiA9IDA7XG5cdFx0aWYodiA8IDApIHsgcyA9IDE7IHYgPSAtdjsgfVxuXHRcdGUgPSBNYXRoLmxvZzIodikgfCAwO1xuXHRcdHYgLz0gTWF0aC5wb3coMiwgZS0zMSk7XG5cdFx0djIgPSAodik+Pj4wO1xuXHRcdGlmKCh2MiYweDgwMDAwMDAwKSA9PSAwKSB7IHYvPTI7ICsrZTsgdjIgPSB2ID4+PiAwOyB9XG5cdFx0diAtPSB2Mjtcblx0XHR2MiB8PSAweDgwMDAwMDAwO1xuXHRcdHYyID4+Pj0gMDtcblx0XHR2ICo9IE1hdGgucG93KDIsIDMyKTtcblx0XHR2MSA9IHY+Pj4wO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgdjEpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgdjIpO1xuXHRcdGUgKz0gMHgzRkZGICsgKHMgPyAweDgwMDAgOiAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIGUpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfRk9STVVMQV8xOShibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX05VTUJFUl8xNyhibG9iLCAxNCk7XG5cdFx0YmxvYi5sICs9IGxlbmd0aCAtIDE0OyAvKiBUT0RPOiBXSzMgZm9ybXVsYSAqL1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSXzI1KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0dmFyIHYxID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdG9bMV0udiA9IHYxID4+IDY7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVJfMjcoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsXzMoYmxvYiwgbGVuZ3RoKTtcblx0XHR2YXIgdjEgPSBibG9iLnJlYWRfc2hpZnQoOCwnZicpO1xuXHRcdG9bMV0udiA9IHYxO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfRk9STVVMQV8yOChibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX05VTUJFUl8yNyhibG9iLCAxNCk7XG5cdFx0YmxvYi5sICs9IGxlbmd0aCAtIDEwOyAvKiBUT0RPOiBmb3JtdWxhICovXG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9TSEVFVE5BTUVDUyhibG9iLCBsZW5ndGgpIHtcblx0XHRyZXR1cm4gYmxvYltibG9iLmwgKyBsZW5ndGggLSAxXSA9PSAwID8gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCwgJ2NzdHInKSA6IFwiXCI7XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9TSEVFVE5BTUVMUChibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbGVuID0gYmxvYltibG9iLmwrK107XG5cdFx0aWYobGVuID4gbGVuZ3RoIC0gMSkgbGVuID0gbGVuZ3RoIC0gMTtcblx0XHR2YXIgbyA9IFwiXCI7IHdoaWxlKG8ubGVuZ3RoIDwgbGVuKSBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYmxvYltibG9iLmwrK10pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfU0hFRVRJTkZPUVAoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0aWYoIW9wdHMucXBybyB8fCBsZW5ndGggPCAyMSkgcmV0dXJuO1xuXHRcdHZhciBpZCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRibG9iLmwgKz0gMTc7XG5cdFx0YmxvYi5sICs9IDE7IC8vdmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRibG9iLmwgKz0gMjtcblx0XHR2YXIgbm0gPSBibG9iLnJlYWRfc2hpZnQobGVuZ3RoIC0gMjEsICdjc3RyJyk7XG5cdFx0cmV0dXJuIFtpZCwgbm1dO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfWEZPUk1BVChibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHt9LCB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdFx0d2hpbGUoYmxvYi5sIDwgdGd0KSB7XG5cdFx0XHR2YXIgZHQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRpZihkdCA9PSAweDM2YjApIHtcblx0XHRcdFx0b1tkdF0gPSBbMCwgXCJcIl07XG5cdFx0XHRcdG9bZHRdWzBdID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0XHR3aGlsZShibG9iW2Jsb2IubF0pIHsgb1tkdF1bMV0gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShibG9iW2Jsb2IubF0pOyBibG9iLmwrKzsgfSBibG9iLmwrKztcblx0XHRcdH1cblx0XHRcdC8vIFRPRE86IDB4M2E5OSA/P1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9YRk9STUFUX1NIRUVUTkFNRShuYW1lLCB3c2lkeCkge1xuXHRcdHZhciBvdXQgPSBuZXdfYnVmKDUgKyBuYW1lLmxlbmd0aCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MzZiMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHdzaWR4KTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGNjID0gbmFtZS5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0b3V0W291dC5sKytdID0gY2MgPiAweDdGID8gMHg1RiA6IGNjO1xuXHRcdH1cblx0XHRvdXRbb3V0LmwrK10gPSAwO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHR2YXIgV0sxRW51bSA9IHtcblx0XHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyBuOlwiQk9GXCIsIGY6cGFyc2V1aW50MTYgfSxcblx0XHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogeyBuOlwiRU9GXCIgfSxcblx0XHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyBuOlwiQ0FMQ01PREVcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IG46XCJDQUxDT1JERVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDQvKjo6XSovOiB7IG46XCJTUExJVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgbjpcIlNZTkNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDYvKjo6XSovOiB7IG46XCJSQU5HRVwiLCBmOnBhcnNlX1JBTkdFIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86IHsgbjpcIldJTkRPVzFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDgvKjo6XSovOiB7IG46XCJDT0xXMVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgbjpcIldJTlRXT1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQS8qOjpdKi86IHsgbjpcIkNPTFcyXCIgfSxcblx0XHQvKjo6WyovMHgwMDBCLyo6Ol0qLzogeyBuOlwiTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQy8qOjpdKi86IHsgbjpcIkJMQU5LXCIgfSxcblx0XHQvKjo6WyovMHgwMDBELyo6Ol0qLzogeyBuOlwiSU5URUdFUlwiLCBmOnBhcnNlX0lOVEVHRVIgfSxcblx0XHQvKjo6WyovMHgwMDBFLyo6Ol0qLzogeyBuOlwiTlVNQkVSXCIsIGY6cGFyc2VfTlVNQkVSIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRi8qOjpdKi86IHsgbjpcIkxBQkVMXCIsIGY6cGFyc2VfTEFCRUwgfSxcblx0XHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyBuOlwiRk9STVVMQVwiLCBmOnBhcnNlX0ZPUk1VTEEgfSxcblx0XHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyBuOlwiVEFCTEVcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IG46XCJPUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUEvKjo6XSovOiB7IG46XCJQUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUIvKjo6XSovOiB7IG46XCJTUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUMvKjo6XSovOiB7IG46XCJGUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUQvKjo6XSovOiB7IG46XCJLUkFOR0UxXCIgfSxcblx0XHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogeyBuOlwiSFJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDIzLyo6Ol0qLzogeyBuOlwiS1JBTkdFMlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNC8qOjpdKi86IHsgbjpcIlBST1RFQ1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNS8qOjpdKi86IHsgbjpcIkZPT1RFUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNi8qOjpdKi86IHsgbjpcIkhFQURFUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IHsgbjpcIlNFVFVQXCIgfSxcblx0XHQvKjo6WyovMHgwMDI4Lyo6Ol0qLzogeyBuOlwiTUFSR0lOU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyOS8qOjpdKi86IHsgbjpcIkxBQkVMRk1UXCIgfSxcblx0XHQvKjo6WyovMHgwMDJBLyo6Ol0qLzogeyBuOlwiVElUTEVTXCIgfSxcblx0XHQvKjo6WyovMHgwMDJCLyo6Ol0qLzogeyBuOlwiU0hFRVRKU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyRC8qOjpdKi86IHsgbjpcIkdSQVBIXCIgfSxcblx0XHQvKjo6WyovMHgwMDJFLyo6Ol0qLzogeyBuOlwiTkdSQVBIXCIgfSxcblx0XHQvKjo6WyovMHgwMDJGLyo6Ol0qLzogeyBuOlwiQ0FMQ0NPVU5UXCIgfSxcblx0XHQvKjo6WyovMHgwMDMwLyo6Ol0qLzogeyBuOlwiVU5GT1JNQVRURURcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzEvKjo6XSovOiB7IG46XCJDVVJTT1JXMTJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzIvKjo6XSovOiB7IG46XCJXSU5ET1dcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzMvKjo6XSovOiB7IG46XCJTVFJJTkdcIiwgZjpwYXJzZV9MQUJFTCB9LFxuXHRcdC8qOjpbKi8weDAwMzcvKjo6XSovOiB7IG46XCJQQVNTV09SRFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzOC8qOjpdKi86IHsgbjpcIkxPQ0tFRFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzQy8qOjpdKi86IHsgbjpcIlFVRVJZXCIgfSxcblx0XHQvKjo6WyovMHgwMDNELyo6Ol0qLzogeyBuOlwiUVVFUllOQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDNFLyo6Ol0qLzogeyBuOlwiUFJJTlRcIiB9LFxuXHRcdC8qOjpbKi8weDAwM0YvKjo6XSovOiB7IG46XCJQUklOVE5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDAvKjo6XSovOiB7IG46XCJHUkFQSDJcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDEvKjo6XSovOiB7IG46XCJHUkFQSE5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDIvKjo6XSovOiB7IG46XCJaT09NXCIgfSxcblx0XHQvKjo6WyovMHgwMDQzLyo6Ol0qLzogeyBuOlwiU1lNU1BMSVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDQvKjo6XSovOiB7IG46XCJOU1JPV1NcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDUvKjo6XSovOiB7IG46XCJOU0NPTFNcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDYvKjo6XSovOiB7IG46XCJSVUxFUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0Ny8qOjpdKi86IHsgbjpcIk5OQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ4Lyo6Ol0qLzogeyBuOlwiQUNPTU1cIiB9LFxuXHRcdC8qOjpbKi8weDAwNDkvKjo6XSovOiB7IG46XCJBTUFDUk9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNEEvKjo6XSovOiB7IG46XCJQQVJTRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA2Ni8qOjpdKi86IHsgbjpcIlBSQU5HRVM/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA2Ny8qOjpdKi86IHsgbjpcIlJSQU5HRVM/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA2OC8qOjpdKi86IHsgbjpcIkZOQU1FPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNjkvKjo6XSovOiB7IG46XCJNUkFOR0VTPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQ0MvKjo6XSovOiB7IG46XCJTSEVFVE5BTUVDU1wiLCBmOnBhcnNlX1NIRUVUTkFNRUNTIH0sXG5cdFx0Lyo6OlsqLzB4MDBERS8qOjpdKi86IHsgbjpcIlNIRUVUTkFNRUxQXCIsIGY6cGFyc2VfU0hFRVROQU1FTFAgfSxcblx0XHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogeyBuOlwiXCIgfVxuXHR9O1xuXG5cdHZhciBXSzNFbnVtID0ge1xuXHRcdC8qOjpbKi8weDAwMDAvKjo6XSovOiB7IG46XCJCT0ZcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDEvKjo6XSovOiB7IG46XCJFT0ZcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDIvKjo6XSovOiB7IG46XCJQQVNTV09SRFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IHsgbjpcIkNBTENTRVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDQvKjo6XSovOiB7IG46XCJXSU5ET1dTRVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDUvKjo6XSovOiB7IG46XCJTSEVFVENFTExQVFJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDYvKjo6XSovOiB7IG46XCJTSEVFVExBWU9VVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86IHsgbjpcIkNPTFVNTldJRFRIXCIgfSxcblx0XHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyBuOlwiSElEREVOQ09MVU1OXCIgfSxcblx0XHQvKjo6WyovMHgwMDA5Lyo6Ol0qLzogeyBuOlwiVVNFUlJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDBBLyo6Ol0qLzogeyBuOlwiU1lTVEVNUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEIvKjo6XSovOiB7IG46XCJaRVJPRk9SQ0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEMvKjo6XSovOiB7IG46XCJTT1JUS0VZRElSXCIgfSxcblx0XHQvKjo6WyovMHgwMDBELyo6Ol0qLzogeyBuOlwiRklMRVNFQUxcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEUvKjo6XSovOiB7IG46XCJEQVRBRklMTE5VTVNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEYvKjo6XSovOiB7IG46XCJQUklOVE1BSU5cIiB9LFxuXHRcdC8qOjpbKi8weDAwMTAvKjo6XSovOiB7IG46XCJQUklOVFNUUklOR1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMS8qOjpdKi86IHsgbjpcIkdSQVBITUFJTlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMi8qOjpdKi86IHsgbjpcIkdSQVBIU1RSSU5HXCIgfSxcblx0XHQvKjo6WyovMHgwMDEzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwMTQvKjo6XSovOiB7IG46XCJFUlJDRUxMXCIgfSxcblx0XHQvKjo6WyovMHgwMDE1Lyo6Ol0qLzogeyBuOlwiTkFDRUxMXCIgfSxcblx0XHQvKjo6WyovMHgwMDE2Lyo6Ol0qLzogeyBuOlwiTEFCRUwxNlwiLCBmOnBhcnNlX0xBQkVMXzE2fSxcblx0XHQvKjo6WyovMHgwMDE3Lyo6Ol0qLzogeyBuOlwiTlVNQkVSMTdcIiwgZjpwYXJzZV9OVU1CRVJfMTcgfSxcblx0XHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyBuOlwiTlVNQkVSMThcIiwgZjpwYXJzZV9OVU1CRVJfMTggfSxcblx0XHQvKjo6WyovMHgwMDE5Lyo6Ol0qLzogeyBuOlwiRk9STVVMQTE5XCIsIGY6cGFyc2VfRk9STVVMQV8xOX0sXG5cdFx0Lyo6OlsqLzB4MDAxQS8qOjpdKi86IHsgbjpcIkZPUk1VTEExQVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxQi8qOjpdKi86IHsgbjpcIlhGT1JNQVRcIiwgZjpwYXJzZV9YRk9STUFUIH0sXG5cdFx0Lyo6OlsqLzB4MDAxQy8qOjpdKi86IHsgbjpcIkRUTEFCRUxNSVNDXCIgfSxcblx0XHQvKjo6WyovMHgwMDFELyo6Ol0qLzogeyBuOlwiRFRMQUJFTENFTExcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUUvKjo6XSovOiB7IG46XCJHUkFQSFdJTkRPV1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxRi8qOjpdKi86IHsgbjpcIkNQQVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IHsgbjpcIkxQTEFVVE9cIiB9LFxuXHRcdC8qOjpbKi8weDAwMjEvKjo6XSovOiB7IG46XCJRVUVSWVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMi8qOjpdKi86IHsgbjpcIkhJRERFTlNIRUVUXCIgfSxcblx0XHQvKjo6WyovMHgwMDIzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IG46XCJOVU1CRVIyNVwiLCBmOnBhcnNlX05VTUJFUl8yNSB9LFxuXHRcdC8qOjpbKi8weDAwMjYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IHsgbjpcIk5VTUJFUjI3XCIsIGY6cGFyc2VfTlVNQkVSXzI3IH0sXG5cdFx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgbjpcIkZPUk1VTEEyOFwiLCBmOnBhcnNlX0ZPUk1VTEFfMjggfSxcblx0XHQvKjo6WyovMHgwMDhFLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5Ni8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDk3Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTgvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5OS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDlBLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOUIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5Qy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEEzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQUUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBBRi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEIwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQjEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCOC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEI5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQkEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCQi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEJDLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQzMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDOS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMENDLyo6Ol0qLzogeyBuOlwiU0hFRVROQU1FQ1NcIiwgZjpwYXJzZV9TSEVFVE5BTUVDUyB9LFxuXHRcdC8qOjpbKi8weDAwQ0QvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDRS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMENGLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwRDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTAzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwNS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDcvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwOS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBBLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwQy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBFLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTg1Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4OS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMThDLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwMi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjAxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwNS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjgwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4Mi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjgzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4NS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODcvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4OC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjkyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5NC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjk1Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5OS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjlBLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAzMDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDMwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNjAxLyo6Ol0qLzogeyBuOlwiU0hFRVRJTkZPUVBcIiwgZjpwYXJzZV9TSEVFVElORk9RUCB9LFxuXHRcdC8qOjpbKi8weDA2NDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDY0Mi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzAxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3MDIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3ODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDgwMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwODAxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA4MDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MEE4MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgyQUY2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDMyMzEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4NkU0OS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHg2RjQ0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weEZGRkYvKjo6XSovOiB7IG46XCJcIiB9XG5cdH07XG5cdHJldHVybiB7XG5cdFx0c2hlZXRfdG9fd2sxOiBzaGVldF90b193azEsXG5cdFx0Ym9va190b193azM6IGJvb2tfdG9fd2szLFxuXHRcdHRvX3dvcmtib29rOiBsb3R1c190b193b3JrYm9va1xuXHR9O1xufSkoKTtcbi8qIDE4LjQuNyByUHIgQ1RfUlByRWx0ICovXG5mdW5jdGlvbiBwYXJzZV9ycHIocnByKSB7XG5cdHZhciBmb250ID0ge30sIG0gPSBycHIubWF0Y2godGFncmVnZXgpLCBpID0gMDtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0aWYobSkgZm9yKDtpIT1tLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyhtW2ldKTtcblx0XHRzd2l0Y2goeVswXS5yZXBsYWNlKC9cXHcqOi9nLFwiXCIpKSB7XG5cdFx0XHQvKiAxOC44LjEyIGNvbmRlbnNlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0LyogKiogbm90IHJlcXVpcmVkIC4gKi9cblx0XHRcdGNhc2UgJzxjb25kZW5zZSc6IGJyZWFrO1xuXHRcdFx0LyogMTguOC4xNyBleHRlbmQgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHQvKiAqKiBub3QgcmVxdWlyZWQgLiAqL1xuXHRcdFx0Y2FzZSAnPGV4dGVuZCc6IGJyZWFrO1xuXHRcdFx0LyogMTguOC4zNiBzaGFkb3cgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHQvKiAqKiBub3QgcmVxdWlyZWQgLiAqL1xuXHRcdFx0Y2FzZSAnPHNoYWRvdyc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxzaGFkb3c+Jzpcblx0XHRcdGNhc2UgJzxzaGFkb3cvPic6IGZvbnQuc2hhZG93ID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3NoYWRvdz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xIGNoYXJzZXQgQ1RfSW50UHJvcGVydHkgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPGNoYXJzZXQnOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMScpIGJyZWFrO1xuXHRcdFx0XHRmb250LmNwID0gQ1MyQ1BbcGFyc2VJbnQoeS52YWwsIDEwKV07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjIgb3V0bGluZSBDVF9Cb29sZWFuUHJvcGVydHkgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPG91dGxpbmUnOlxuXHRcdFx0XHRpZigheS52YWwpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8b3V0bGluZT4nOlxuXHRcdFx0Y2FzZSAnPG91dGxpbmUvPic6IGZvbnQub3V0bGluZSA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9vdXRsaW5lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjUgckZvbnQgQ1RfRm9udE5hbWUgKi9cblx0XHRcdGNhc2UgJzxyRm9udCc6IGZvbnQubmFtZSA9IHkudmFsOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMSBzeiBDVF9Gb250U2l6ZSAqL1xuXHRcdFx0Y2FzZSAnPHN6JzogZm9udC5zeiA9IHkudmFsOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMCBzdHJpa2UgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8c3RyaWtlJzpcblx0XHRcdFx0aWYoIXkudmFsKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPHN0cmlrZT4nOlxuXHRcdFx0Y2FzZSAnPHN0cmlrZS8+JzogZm9udC5zdHJpa2UgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvc3RyaWtlPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEzIHUgQ1RfVW5kZXJsaW5lUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzx1Jzpcblx0XHRcdFx0aWYoIXkudmFsKSBicmVhaztcblx0XHRcdFx0c3dpdGNoKHkudmFsKSB7XG5cdFx0XHRcdFx0Y2FzZSAnZG91YmxlJzogZm9udC51dmFsID0gXCJkb3VibGVcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2luZ2xlQWNjb3VudGluZyc6IGZvbnQudXZhbCA9IFwic2luZ2xlLWFjY291bnRpbmdcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG91YmxlQWNjb3VudGluZyc6IGZvbnQudXZhbCA9IFwiZG91YmxlLWFjY291bnRpbmdcIjsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPHU+Jzpcblx0XHRcdGNhc2UgJzx1Lz4nOiBmb250LnUgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvdT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yIGIgKi9cblx0XHRcdGNhc2UgJzxiJzpcblx0XHRcdFx0aWYoeS52YWwgPT0gJzAnKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPGI+Jzpcblx0XHRcdGNhc2UgJzxiLz4nOiBmb250LmIgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvYj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yNiBpICovXG5cdFx0XHRjYXNlICc8aSc6XG5cdFx0XHRcdGlmKHkudmFsID09ICcwJykgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxpPic6XG5cdFx0XHRjYXNlICc8aS8+JzogZm9udC5pID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2k+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjMuMS4xNSBjb2xvciBDVF9Db2xvciBUT0RPOiB0aW50LCB0aGVtZSwgYXV0bywgaW5kZXhlZCAqL1xuXHRcdFx0Y2FzZSAnPGNvbG9yJzpcblx0XHRcdFx0aWYoeS5yZ2IpIGZvbnQuY29sb3IgPSB5LnJnYi5zbGljZSgyLDgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxjb2xvcj4nOiBjYXNlICc8Y29sb3IvPic6IGNhc2UgJzwvY29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTggZmFtaWx5IFNUX0ZvbnRGYW1pbHkgKi9cblx0XHRcdGNhc2UgJzxmYW1pbHknOiBmb250LmZhbWlseSA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzxmYW1pbHk+JzogY2FzZSAnPGZhbWlseS8+JzogY2FzZSAnPC9mYW1pbHk+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTQgdmVydEFsaWduIENUX1ZlcnRpY2FsQWxpZ25Gb250UHJvcGVydHkgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPHZlcnRBbGlnbic6IGZvbnQudmFsaWduID0geS52YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHZlcnRBbGlnbj4nOiBjYXNlICc8dmVydEFsaWduLz4nOiBjYXNlICc8L3ZlcnRBbGlnbj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zNSBzY2hlbWUgQ1RfRm9udFNjaGVtZSBUT0RPICovXG5cdFx0XHRjYXNlICc8c2NoZW1lJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8c2NoZW1lPic6IGNhc2UgJzxzY2hlbWUvPic6IGNhc2UgJzwvc2NoZW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZih5WzBdLmNoYXJDb2RlQXQoMSkgIT09IDQ3ICYmICFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCByaWNoIGZvcm1hdCAnICsgeVswXSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmb250O1xufVxuXG52YXIgcGFyc2VfcnMgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgdHJlZ2V4ID0gbWF0Y2h0YWcoXCJ0XCIpLCBycHJlZ2V4ID0gbWF0Y2h0YWcoXCJyUHJcIik7XG5cdC8qIDE4LjQuNCByIENUX1JFbHQgKi9cblx0ZnVuY3Rpb24gcGFyc2VfcihyKSB7XG5cdFx0LyogMTguNC4xMiB0IFNUX1hzdHJpbmcgKi9cblx0XHR2YXIgdCA9IHIubWF0Y2godHJlZ2V4KS8qLCBjcCA9IDY1MDAxKi87XG5cdFx0aWYoIXQpIHJldHVybiB7dDpcInNcIiwgdjpcIlwifTtcblxuXHRcdHZhciBvLyo6Q2VsbCovID0gKHt0OidzJywgdjp1bmVzY2FwZXhtbCh0WzFdKX0vKjphbnkqLyk7XG5cdFx0dmFyIHJwciA9IHIubWF0Y2gocnByZWdleCk7XG5cdFx0aWYocnByKSBvLnMgPSBwYXJzZV9ycHIocnByWzFdKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHR2YXIgcnJlZ2V4ID0gLzwoPzpcXHcrOik/cj4vZywgcmVuZCA9IC88XFwvKD86XFx3KzopP3I+Lztcblx0cmV0dXJuIGZ1bmN0aW9uIHBhcnNlX3JzKHJzKSB7XG5cdFx0cmV0dXJuIHJzLnJlcGxhY2UocnJlZ2V4LFwiXCIpLnNwbGl0KHJlbmQpLm1hcChwYXJzZV9yKS5maWx0ZXIoZnVuY3Rpb24ocikgeyByZXR1cm4gci52OyB9KTtcblx0fTtcbn0pKCk7XG5cblxuLyogUGFyc2UgYSBsaXN0IG9mIDxyPiB0YWdzICovXG52YXIgcnNfdG9faHRtbCA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gcGFyc2VfcnNfZmFjdG9yeSgpIHtcblx0dmFyIG5scmVnZXggPSAvKFxcclxcbnxcXG4pL2c7XG5cdGZ1bmN0aW9uIHBhcnNlX3JwcjIoZm9udCwgaW50cm8sIG91dHJvKSB7XG5cdFx0dmFyIHN0eWxlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cblx0XHRpZihmb250LnUpIHN0eWxlLnB1c2goXCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcIik7XG5cdFx0aWYoZm9udC51dmFsKSBzdHlsZS5wdXNoKFwidGV4dC11bmRlcmxpbmUtc3R5bGU6XCIgKyBmb250LnV2YWwgKyBcIjtcIik7XG5cdFx0aWYoZm9udC5zeikgc3R5bGUucHVzaChcImZvbnQtc2l6ZTpcIiArIGZvbnQuc3ogKyBcInB0O1wiKTtcblx0XHRpZihmb250Lm91dGxpbmUpIHN0eWxlLnB1c2goXCJ0ZXh0LWVmZmVjdDogb3V0bGluZTtcIik7XG5cdFx0aWYoZm9udC5zaGFkb3cpIHN0eWxlLnB1c2goXCJ0ZXh0LXNoYWRvdzogYXV0bztcIik7XG5cdFx0aW50cm8ucHVzaCgnPHNwYW4gc3R5bGU9XCInICsgc3R5bGUuam9pbihcIlwiKSArICdcIj4nKTtcblxuXHRcdGlmKGZvbnQuYikgeyBpbnRyby5wdXNoKFwiPGI+XCIpOyBvdXRyby5wdXNoKFwiPC9iPlwiKTsgfVxuXHRcdGlmKGZvbnQuaSkgeyBpbnRyby5wdXNoKFwiPGk+XCIpOyBvdXRyby5wdXNoKFwiPC9pPlwiKTsgfVxuXHRcdGlmKGZvbnQuc3RyaWtlKSB7IGludHJvLnB1c2goXCI8cz5cIik7IG91dHJvLnB1c2goXCI8L3M+XCIpOyB9XG5cblx0XHR2YXIgYWxpZ24gPSBmb250LnZhbGlnbiB8fCBcIlwiO1xuXHRcdGlmKGFsaWduID09IFwic3VwZXJzY3JpcHRcIiB8fCBhbGlnbiA9PSBcInN1cGVyXCIpIGFsaWduID0gXCJzdXBcIjtcblx0XHRlbHNlIGlmKGFsaWduID09IFwic3Vic2NyaXB0XCIpIGFsaWduID0gXCJzdWJcIjtcblx0XHRpZihhbGlnbiAhPSBcIlwiKSB7IGludHJvLnB1c2goXCI8XCIgKyBhbGlnbiArIFwiPlwiKTsgb3V0cm8ucHVzaChcIjwvXCIgKyBhbGlnbiArIFwiPlwiKTsgfVxuXG5cdFx0b3V0cm8ucHVzaChcIjwvc3Bhbj5cIik7XG5cdFx0cmV0dXJuIGZvbnQ7XG5cdH1cblxuXHQvKiAxOC40LjQgciBDVF9SRWx0ICovXG5cdGZ1bmN0aW9uIHJfdG9faHRtbChyKSB7XG5cdFx0dmFyIHRlcm1zLyo6W0FycmF5PHN0cmluZz4sIHN0cmluZywgQXJyYXk8c3RyaW5nPl0qLyA9IFtbXSxyLnYsW11dO1xuXHRcdGlmKCFyLnYpIHJldHVybiBcIlwiO1xuXG5cdFx0aWYoci5zKSBwYXJzZV9ycHIyKHIucywgdGVybXNbMF0sIHRlcm1zWzJdKTtcblxuXHRcdHJldHVybiB0ZXJtc1swXS5qb2luKFwiXCIpICsgdGVybXNbMV0ucmVwbGFjZShubHJlZ2V4LCc8YnIvPicpICsgdGVybXNbMl0uam9pbihcIlwiKTtcblx0fVxuXG5cdHJldHVybiBmdW5jdGlvbiBwYXJzZV9ycyhycykge1xuXHRcdHJldHVybiBycy5tYXAocl90b19odG1sKS5qb2luKFwiXCIpO1xuXHR9O1xufSkoKTtcblxuLyogMTguNC44IHNpIENUX1JzdCAqL1xudmFyIHNpdHJlZ2V4ID0gLzwoPzpcXHcrOik/dFtePl0qPihbXjxdKik8XFwvKD86XFx3KzopP3Q+L2csIHNpcnJlZ2V4ID0gLzwoPzpcXHcrOik/cj4vO1xudmFyIHNpcnBocmVnZXggPSAvPCg/Olxcdys6KT9yUGguKj8+KFtcXHNcXFNdKj8pPFxcLyg/Olxcdys6KT9yUGg+L2c7XG5mdW5jdGlvbiBwYXJzZV9zaSh4LCBvcHRzKSB7XG5cdHZhciBodG1sID0gb3B0cyA/IG9wdHMuY2VsbEhUTUwgOiB0cnVlO1xuXHR2YXIgeiA9IHt9O1xuXHRpZigheCkgcmV0dXJuIHsgdDogXCJcIiB9O1xuXHQvL3ZhciB5O1xuXHQvKiAxOC40LjEyIHQgU1RfWHN0cmluZyAoUGxhaW50ZXh0IFN0cmluZykgKi9cblx0Ly8gVE9ETzogaXMgd2hpdGVzcGFjZSBhY3R1YWxseSB2YWxpZCBoZXJlP1xuXHRpZih4Lm1hdGNoKC9eXFxzKjwoPzpcXHcrOik/dFtePl0qPi8pKSB7XG5cdFx0ei50ID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoeC5zbGljZSh4LmluZGV4T2YoXCI+XCIpKzEpLnNwbGl0KC88XFwvKD86XFx3KzopP3Q+LylbMF18fFwiXCIpKTtcblx0XHR6LnIgPSB1dGY4cmVhZCh4KTtcblx0XHRpZihodG1sKSB6LmggPSBlc2NhcGVodG1sKHoudCk7XG5cdH1cblx0LyogMTguNC40IHIgQ1RfUkVsdCAoUmljaCBUZXh0IFJ1bikgKi9cblx0ZWxzZSBpZigoLyp5ID0gKi94Lm1hdGNoKHNpcnJlZ2V4KSkpIHtcblx0XHR6LnIgPSB1dGY4cmVhZCh4KTtcblx0XHR6LnQgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZCgoeC5yZXBsYWNlKHNpcnBocmVnZXgsICcnKS5tYXRjaChzaXRyZWdleCl8fFtdKS5qb2luKFwiXCIpLnJlcGxhY2UodGFncmVnZXgsXCJcIikpKTtcblx0XHRpZihodG1sKSB6LmggPSByc190b19odG1sKHBhcnNlX3JzKHoucikpO1xuXHR9XG5cdC8qIDE4LjQuMyBwaG9uZXRpY1ByIENUX1Bob25ldGljUHIgKFRPRE86IG5lZWRlZCBmb3IgQXNpYW4gc3VwcG9ydCkgKi9cblx0LyogMTguNC42IHJQaCBDVF9QaG9uZXRpY1J1biAoVE9ETzogbmVlZGVkIGZvciBBc2lhbiBzdXBwb3J0KSAqL1xuXHRyZXR1cm4gejtcbn1cblxuLyogMTguNCBTaGFyZWQgU3RyaW5nIFRhYmxlICovXG52YXIgc3N0cjAgPSAvPCg/Olxcdys6KT9zc3QoW14+XSopPihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9zc3Q+LztcbnZhciBzc3RyMSA9IC88KD86XFx3KzopPyg/OnNpfHNzdEl0ZW0pPi9nO1xudmFyIHNzdHIyID0gLzxcXC8oPzpcXHcrOik/KD86c2l8c3N0SXRlbSk+LztcbmZ1bmN0aW9uIHBhcnNlX3NzdF94bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOlNTVCovIHtcblx0dmFyIHMvKjpTU1QqLyA9IChbXS8qOmFueSovKSwgc3MgPSBcIlwiO1xuXHRpZighZGF0YSkgcmV0dXJuIHM7XG5cdC8qIDE4LjQuOSBzc3QgQ1RfU3N0ICovXG5cdHZhciBzc3QgPSBkYXRhLm1hdGNoKHNzdHIwKTtcblx0aWYoc3N0KSB7XG5cdFx0c3MgPSBzc3RbMl0ucmVwbGFjZShzc3RyMSxcIlwiKS5zcGxpdChzc3RyMik7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSBzcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIG8gPSBwYXJzZV9zaShzc1tpXS50cmltKCksIG9wdHMpO1xuXHRcdFx0aWYobyAhPSBudWxsKSBzW3MubGVuZ3RoXSA9IG87XG5cdFx0fVxuXHRcdHNzdCA9IHBhcnNleG1sdGFnKHNzdFsxXSk7IHMuQ291bnQgPSBzc3QuY291bnQ7IHMuVW5pcXVlID0gc3N0LnVuaXF1ZUNvdW50O1xuXHR9XG5cdHJldHVybiBzO1xufVxuXG52YXIgc3RyYXl3c3JlZ2V4ID0gL15cXHN8XFxzJHxbXFx0XFxuXFxyXS87XG5mdW5jdGlvbiB3cml0ZV9zc3RfeG1sKHNzdC8qOlNTVCovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYoIW9wdHMuYm9va1NTVCkgcmV0dXJuIFwiXCI7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3NzdCcsIG51bGwsIHtcblx0XHR4bWxuczogWE1MTlNfbWFpblswXSxcblx0XHRjb3VudDogc3N0LkNvdW50LFxuXHRcdHVuaXF1ZUNvdW50OiBzc3QuVW5pcXVlXG5cdH0pKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBzc3QubGVuZ3RoOyArK2kpIHsgaWYoc3N0W2ldID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdHZhciBzLyo6WExTdHJpbmcqLyA9IHNzdFtpXTtcblx0XHR2YXIgc2l0YWcgPSBcIjxzaT5cIjtcblx0XHRpZihzLnIpIHNpdGFnICs9IHMucjtcblx0XHRlbHNlIHtcblx0XHRcdHNpdGFnICs9IFwiPHRcIjtcblx0XHRcdGlmKCFzLnQpIHMudCA9IFwiXCI7XG5cdFx0XHRpZihzLnQubWF0Y2goc3RyYXl3c3JlZ2V4KSkgc2l0YWcgKz0gJyB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiJztcblx0XHRcdHNpdGFnICs9IFwiPlwiICsgZXNjYXBleG1sKHMudCkgKyBcIjwvdD5cIjtcblx0XHR9XG5cdFx0c2l0YWcgKz0gXCI8L3NpPlwiO1xuXHRcdG9bby5sZW5ndGhdID0gKHNpdGFnKTtcblx0fVxuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvc3N0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjIyMSBCcnRCZWdpblNzdCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QmVnaW5Tc3QoZGF0YSkge1xuXHRyZXR1cm4gW2RhdGEucmVhZF9zaGlmdCg0KSwgZGF0YS5yZWFkX3NoaWZ0KDQpXTtcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjQ1IFNoYXJlZCBTdHJpbmdzICovXG5mdW5jdGlvbiBwYXJzZV9zc3RfYmluKGRhdGEsIG9wdHMpLyo6U1NUKi8ge1xuXHR2YXIgcy8qOlNTVCovID0gKFtdLyo6YW55Ki8pO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX3NzdCh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDA5RjogLyogQnJ0QmVnaW5Tc3QgKi9cblx0XHRcdFx0cy5Db3VudCA9IHZhbFswXTsgcy5VbmlxdWUgPSB2YWxbMV07IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMTM6IC8qIEJydFNTVEl0ZW0gKi9cblx0XHRcdFx0cy5wdXNoKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwQTA6IC8qIEJydEVuZFNzdCAqL1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qIEJydEZSVEJlZ2luICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiBCcnRGUlRFbmQgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXt9XG5cdFx0XHRcdGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5Tc3Qoc3N0LCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig4KTtcblx0by53cml0ZV9zaGlmdCg0LCBzc3QuQ291bnQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHNzdC5VbmlxdWUpO1xuXHRyZXR1cm4gbztcbn1cblxudmFyIHdyaXRlX0JydFNTVEl0ZW0gPSB3cml0ZV9SaWNoU3RyO1xuXG5mdW5jdGlvbiB3cml0ZV9zc3RfYmluKHNzdC8qOjosIG9wdHMqLykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOUYgLyogQnJ0QmVnaW5Tc3QgKi8sIHdyaXRlX0JydEJlZ2luU3N0KHNzdCkpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgc3N0Lmxlbmd0aDsgKytpKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAxMyAvKiBCcnRTU1RJdGVtICovLCB3cml0ZV9CcnRTU1RJdGVtKHNzdFtpXSkpO1xuXHQvKiBGUlRTU1QgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwQTAgLyogQnJ0RW5kU3N0ICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuZnVuY3Rpb24gX0pTMkFOU0koc3RyLyo6c3RyaW5nKi8pLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuICRjcHRhYmxlLnV0aWxzLmVuY29kZShjdXJyZW50X2Fuc2ksIHN0cik7XG5cdHZhciBvLyo6QXJyYXk8bnVtYmVyPiovID0gW10sIG9vID0gc3RyLnNwbGl0KFwiXCIpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgb28ubGVuZ3RoOyArK2kpIG9baV0gPSBvb1tpXS5jaGFyQ29kZUF0KDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjQgVmVyc2lvbiAqL1xuZnVuY3Rpb24gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCBsZW5ndGgvKjo/bnVtYmVyKi8pIHtcblx0dmFyIG8vKjphbnkqLyA9IHt9O1xuXHRvLk1ham9yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLk1pbm9yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHQvKjo6IGlmKGxlbmd0aCA9PSBudWxsKSByZXR1cm4gbzsgKi9cblx0aWYobGVuZ3RoID49IDQpIGJsb2IubCArPSBsZW5ndGggLSA0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjUgRGF0YVNwYWNlVmVyc2lvbkluZm8gKi9cbmZ1bmN0aW9uIHBhcnNlX0RhdGFTcGFjZVZlcnNpb25JbmZvKGJsb2IpIHtcblx0dmFyIG8gPSB7fTtcblx0by5pZCA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpO1xuXHRvLlIgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRvLlUgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRvLlcgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjYuMSBEYXRhU3BhY2VNYXBFbnRyeSBTdHJ1Y3R1cmUgKi9cbmZ1bmN0aW9uIHBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5KGJsb2IpIHtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbiAtIDQ7XG5cdHZhciBvID0ge307XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBjb21wcy8qOkFycmF5PHt0Om51bWJlciwgdjpzdHJpbmd9PiovID0gW107XG5cdC8qIFtNUy1PRkZDUllQVE9dIDIuMS42LjIgRGF0YVNwYWNlUmVmZXJlbmNlQ29tcG9uZW50IFN0cnVjdHVyZSAqL1xuXHR3aGlsZShjbnQtLSA+IDApIGNvbXBzLnB1c2goeyB0OiBibG9iLnJlYWRfc2hpZnQoNCksIHY6IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpIH0pO1xuXHRvLm5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5jb21wcyA9IGNvbXBzO1xuXHRpZihibG9iLmwgIT0gZW5kKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgRGF0YVNwYWNlTWFwRW50cnk6IFwiICsgYmxvYi5sICsgXCIgIT0gXCIgKyBlbmQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjYgRGF0YVNwYWNlTWFwICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VNYXAoYmxvYikge1xuXHR2YXIgbyA9IFtdO1xuXHRibG9iLmwgKz0gNDsgLy8gbXVzdCBiZSAweDhcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0d2hpbGUoY250LS0gPiAwKSBvLnB1c2gocGFyc2VfRGF0YVNwYWNlTWFwRW50cnkoYmxvYikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjcgRGF0YVNwYWNlRGVmaW5pdGlvbiAqL1xuZnVuY3Rpb24gcGFyc2VfRGF0YVNwYWNlRGVmaW5pdGlvbihibG9iKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGJsb2IubCArPSA0OyAvLyBtdXN0IGJlIDB4OFxuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR3aGlsZShjbnQtLSA+IDApIG8ucHVzaChibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuOCBEYXRhU3BhY2VEZWZpbml0aW9uICovXG5mdW5jdGlvbiBwYXJzZV9UcmFuc2Zvcm1JbmZvSGVhZGVyKGJsb2IpIHtcblx0dmFyIG8gPSB7fTtcblx0Lyp2YXIgbGVuID0gKi9ibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGJsb2IubCArPSA0OyAvLyBtdXN0IGJlIDB4MVxuXHRvLmlkID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0Jyk7XG5cdG8ubmFtZSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpO1xuXHRvLlIgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRvLlUgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRvLlcgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gcGFyc2VfUHJpbWFyeShibG9iKSB7XG5cdC8qIFtNUy1PRkZDUllQVE9dIDIuMi42IElSTURTVHJhbnNmb3JtSW5mbyAqL1xuXHR2YXIgaGRyID0gcGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlcihibG9iKTtcblx0LyogW01TLU9GRkNSWVBUT10gMi4xLjkgRW5jcnlwdGlvblRyYW5zZm9ybUluZm8gKi9cblx0aGRyLmVuYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDAsICc4bHBwNCcpO1xuXHRoZHIuYmxrc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGhkci5jbW9kZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoYmxvYi5yZWFkX3NoaWZ0KDQpICE9IDB4MDQpIHRocm93IG5ldyBFcnJvcihcIkJhZCAhUHJpbWFyeSByZWNvcmRcIik7XG5cdHJldHVybiBoZHI7XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy4yIEVuY3J5cHRpb24gSGVhZGVyICovXG5mdW5jdGlvbiBwYXJzZV9FbmNyeXB0aW9uSGVhZGVyKGJsb2IsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBvID0ge307XG5cdG8uRmxhZ3MgPSAoYmxvYi5yZWFkX3NoaWZ0KDQpICYgMHgzRik7XG5cdGJsb2IubCArPSA0O1xuXHRvLkFsZ0lEID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgdmFsaWQgPSBmYWxzZTtcblx0c3dpdGNoKG8uQWxnSUQpIHtcblx0XHRjYXNlIDB4NjYwRTogY2FzZSAweDY2MEY6IGNhc2UgMHg2NjEwOiB2YWxpZCA9IChvLkZsYWdzID09IDB4MjQpOyBicmVhaztcblx0XHRjYXNlIDB4NjgwMTogdmFsaWQgPSAoby5GbGFncyA9PSAweDA0KTsgYnJlYWs7XG5cdFx0Y2FzZSAwOiB2YWxpZCA9IChvLkZsYWdzID09IDB4MTAgfHwgby5GbGFncyA9PSAweDA0IHx8IG8uRmxhZ3MgPT0gMHgyNCk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93ICdVbnJlY29nbml6ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG06ICcgKyBvLkFsZ0lEO1xuXHR9XG5cdGlmKCF2YWxpZCkgdGhyb3cgbmV3IEVycm9yKFwiRW5jcnlwdGlvbiBGbGFncy9BbGdJRCBtaXNtYXRjaFwiKTtcblx0by5BbGdJREhhc2ggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdG8uS2V5U2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0by5Qcm92aWRlclR5cGUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGJsb2IubCArPSA4O1xuXHRvLkNTUE5hbWUgPSBibG9iLnJlYWRfc2hpZnQoKHRndC1ibG9iLmwpPj4xLCAndXRmMTZsZScpO1xuXHRibG9iLmwgPSB0Z3Q7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuMyBFbmNyeXB0aW9uIFZlcmlmaWVyICovXG5mdW5jdGlvbiBwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIG8gPSB7fSwgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRibG9iLmwgKz0gNDsgLy8gU2FsdFNpemUgbXVzdCBiZSAweDEwXG5cdG8uU2FsdCA9IGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwrMTYpOyBibG9iLmwgKz0gMTY7XG5cdG8uVmVyaWZpZXIgPSBibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sKzE2KTsgYmxvYi5sICs9IDE2O1xuXHQvKnZhciBzeiA9ICovYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRvLlZlcmlmaWVySGFzaCA9IGJsb2Iuc2xpY2UoYmxvYi5sLCB0Z3QpOyBibG9iLmwgPSB0Z3Q7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC4qIEVuY3J5cHRpb25JbmZvIFN0cmVhbSAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jcnlwdGlvbkluZm8oYmxvYikge1xuXHR2YXIgdmVycyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYik7XG5cdHN3aXRjaCh2ZXJzLk1pbm9yKSB7XG5cdFx0Y2FzZSAweDAyOiByZXR1cm4gW3ZlcnMuTWlub3IsIHBhcnNlX0VuY0luZm9TdGQoYmxvYiwgdmVycyldO1xuXHRcdGNhc2UgMHgwMzogcmV0dXJuIFt2ZXJzLk1pbm9yLCBwYXJzZV9FbmNJbmZvRXh0KGJsb2IsIHZlcnMpXTtcblx0XHRjYXNlIDB4MDQ6IHJldHVybiBbdmVycy5NaW5vciwgcGFyc2VfRW5jSW5mb0FnbChibG9iLCB2ZXJzKV07XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgdW5yZWNvZ25pemVkIFZlcnNpb246IFwiICsgdmVycy5NaW5vcik7XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy40LjUgIEVuY3J5cHRpb25JbmZvIFN0cmVhbSAoU3RhbmRhcmQgRW5jcnlwdGlvbikgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY0luZm9TdGQoYmxvYi8qOjosIHZlcnMqLykge1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKChmbGFncyAmIDB4M0YpICE9IDB4MjQpIHRocm93IG5ldyBFcnJvcihcIkVuY3J5cHRpb25JbmZvIG1pc21hdGNoXCIpO1xuXHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdC8vdmFyIHRndCA9IGJsb2IubCArIHN6O1xuXHR2YXIgaGRyID0gcGFyc2VfRW5jcnlwdGlvbkhlYWRlcihibG9iLCBzeik7XG5cdHZhciB2ZXJpZmllciA9IHBhcnNlX0VuY3J5cHRpb25WZXJpZmllcihibG9iLCBibG9iLmxlbmd0aCAtIGJsb2IubCk7XG5cdHJldHVybiB7IHQ6XCJTdGRcIiwgaDpoZHIsIHY6dmVyaWZpZXIgfTtcbn1cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy40LjYgIEVuY3J5cHRpb25JbmZvIFN0cmVhbSAoRXh0ZW5zaWJsZSBFbmNyeXB0aW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jSW5mb0V4dCgvKjo6YmxvYiwgdmVycyovKSB7IHRocm93IG5ldyBFcnJvcihcIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkOiBFQ01BLTM3NiBFeHRlbnNpYmxlXCIpOyB9XG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC4xMCBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKEFnaWxlIEVuY3J5cHRpb24pICovXG5mdW5jdGlvbiBwYXJzZV9FbmNJbmZvQWdsKGJsb2IvKjo6LCB2ZXJzKi8pIHtcblx0dmFyIEtleURhdGEgPSBbXCJzYWx0U2l6ZVwiLFwiYmxvY2tTaXplXCIsXCJrZXlCaXRzXCIsXCJoYXNoU2l6ZVwiLFwiY2lwaGVyQWxnb3JpdGhtXCIsXCJjaXBoZXJDaGFpbmluZ1wiLFwiaGFzaEFsZ29yaXRobVwiLFwic2FsdFZhbHVlXCJdO1xuXHRibG9iLmwrPTQ7XG5cdHZhciB4bWwgPSBibG9iLnJlYWRfc2hpZnQoYmxvYi5sZW5ndGggLSBibG9iLmwsICd1dGY4Jyk7XG5cdHZhciBvID0ge307XG5cdHhtbC5yZXBsYWNlKHRhZ3JlZ2V4LCBmdW5jdGlvbiB4bWxfYWdpbGUoeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZW5jcnlwdGlvbic6IGNhc2UgJzwvZW5jcnlwdGlvbj4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxrZXlEYXRhJzogS2V5RGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgb1trXSA9IHlba107IH0pOyBicmVhaztcblx0XHRcdGNhc2UgJzxkYXRhSW50ZWdyaXR5Jzogby5lbmNyeXB0ZWRIbWFjS2V5ID0geS5lbmNyeXB0ZWRIbWFjS2V5OyBvLmVuY3J5cHRlZEhtYWNWYWx1ZSA9IHkuZW5jcnlwdGVkSG1hY1ZhbHVlOyBicmVhaztcblx0XHRcdGNhc2UgJzxrZXlFbmNyeXB0b3JzPic6IGNhc2UgJzxrZXlFbmNyeXB0b3JzJzogby5lbmNzID0gW107IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9rZXlFbmNyeXB0b3JzPic6IGJyZWFrO1xuXG5cdFx0XHRjYXNlICc8a2V5RW5jcnlwdG9yJzogby51cmkgPSB5LnVyaTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2tleUVuY3J5cHRvcj4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxlbmNyeXB0ZWRLZXknOiBvLmVuY3MucHVzaCh5KTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyB5WzBdO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNS4xIFJDNCBDcnlwdG9BUEkgRW5jcnlwdGlvbiBIZWFkZXIgKi9cbmZ1bmN0aW9uIHBhcnNlX1JDNENyeXB0b0hlYWRlcihibG9iLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgdmVycyA9IG8uRW5jcnlwdGlvblZlcnNpb25JbmZvID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTsgbGVuZ3RoIC09IDQ7XG5cdGlmKHZlcnMuTWlub3IgIT0gMikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgbWlub3IgdmVyc2lvbiBjb2RlOiAnICsgdmVycy5NaW5vcik7XG5cdGlmKHZlcnMuTWFqb3IgPiA0IHx8IHZlcnMuTWFqb3IgPCAyKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICcgKyB2ZXJzLk1ham9yKTtcblx0by5GbGFncyA9IGJsb2IucmVhZF9zaGlmdCg0KTsgbGVuZ3RoIC09IDQ7XG5cdHZhciBzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTsgbGVuZ3RoIC09IDQ7XG5cdG8uRW5jcnlwdGlvbkhlYWRlciA9IHBhcnNlX0VuY3J5cHRpb25IZWFkZXIoYmxvYiwgc3opOyBsZW5ndGggLT0gc3o7XG5cdG8uRW5jcnlwdGlvblZlcmlmaWVyID0gcGFyc2VfRW5jcnlwdGlvblZlcmlmaWVyKGJsb2IsIGxlbmd0aCk7XG5cdHJldHVybiBvO1xufVxuLyogW01TLU9GRkNSWVBUT10gMi4zLjYuMSBSQzQgRW5jcnlwdGlvbiBIZWFkZXIgKi9cbmZ1bmN0aW9uIHBhcnNlX1JDNEhlYWRlcihibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIG8gPSB7fTtcblx0dmFyIHZlcnMgPSBvLkVuY3J5cHRpb25WZXJzaW9uSW5mbyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdGlmKHZlcnMuTWFqb3IgIT0gMSB8fCB2ZXJzLk1pbm9yICE9IDEpIHRocm93ICd1bnJlY29nbml6ZWQgdmVyc2lvbiBjb2RlICcgKyB2ZXJzLk1ham9yICsgJyA6ICcgKyB2ZXJzLk1pbm9yO1xuXHRvLlNhbHQgPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRvLkVuY3J5cHRlZFZlcmlmaWVyID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0by5FbmNyeXB0ZWRWZXJpZmllckhhc2ggPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjcuMSBCaW5hcnkgRG9jdW1lbnQgUGFzc3dvcmQgVmVyaWZpZXIgRGVyaXZhdGlvbiAqL1xuZnVuY3Rpb24gY3J5cHRvX0NyZWF0ZVBhc3N3b3JkVmVyaWZpZXJfTWV0aG9kMShQYXNzd29yZC8qOnN0cmluZyovKSB7XG5cdHZhciBWZXJpZmllciA9IDB4MDAwMCwgUGFzc3dvcmRBcnJheTtcblx0dmFyIFBhc3N3b3JkRGVjb2RlZCA9IF9KUzJBTlNJKFBhc3N3b3JkKTtcblx0dmFyIGxlbiA9IFBhc3N3b3JkRGVjb2RlZC5sZW5ndGggKyAxLCBpLCBQYXNzd29yZEJ5dGU7XG5cdHZhciBJbnRlcm1lZGlhdGUxLCBJbnRlcm1lZGlhdGUyLCBJbnRlcm1lZGlhdGUzO1xuXHRQYXNzd29yZEFycmF5ID0gbmV3X3Jhd19idWYobGVuKTtcblx0UGFzc3dvcmRBcnJheVswXSA9IFBhc3N3b3JkRGVjb2RlZC5sZW5ndGg7XG5cdGZvcihpID0gMTsgaSAhPSBsZW47ICsraSkgUGFzc3dvcmRBcnJheVtpXSA9IFBhc3N3b3JkRGVjb2RlZFtpLTFdO1xuXHRmb3IoaSA9IGxlbi0xOyBpID49IDA7IC0taSkge1xuXHRcdFBhc3N3b3JkQnl0ZSA9IFBhc3N3b3JkQXJyYXlbaV07XG5cdFx0SW50ZXJtZWRpYXRlMSA9ICgoVmVyaWZpZXIgJiAweDQwMDApID09PSAweDAwMDApID8gMCA6IDE7XG5cdFx0SW50ZXJtZWRpYXRlMiA9IChWZXJpZmllciA8PCAxKSAmIDB4N0ZGRjtcblx0XHRJbnRlcm1lZGlhdGUzID0gSW50ZXJtZWRpYXRlMSB8IEludGVybWVkaWF0ZTI7XG5cdFx0VmVyaWZpZXIgPSBJbnRlcm1lZGlhdGUzIF4gUGFzc3dvcmRCeXRlO1xuXHR9XG5cdHJldHVybiBWZXJpZmllciBeIDB4Q0U0Qjtcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjcuMiBCaW5hcnkgRG9jdW1lbnQgWE9SIEFycmF5IEluaXRpYWxpemF0aW9uICovXG52YXIgY3J5cHRvX0NyZWF0ZVhvckFycmF5X01ldGhvZDEgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgUGFkQXJyYXkgPSBbMHhCQiwgMHhGRiwgMHhGRiwgMHhCQSwgMHhGRiwgMHhGRiwgMHhCOSwgMHg4MCwgMHgwMCwgMHhCRSwgMHgwRiwgMHgwMCwgMHhCRiwgMHgwRiwgMHgwMF07XG5cdHZhciBJbml0aWFsQ29kZSA9IFsweEUxRjAsIDB4MUQwRiwgMHhDQzlDLCAweDg0QzAsIDB4MTEwQywgMHgwRTEwLCAweEYxQ0UsIDB4MzEzRSwgMHgxODcyLCAweEUxMzksIDB4RDQwRiwgMHg4NEY5LCAweDI4MEMsIDB4QTk2QSwgMHg0RUMzXTtcblx0dmFyIFhvck1hdHJpeCA9IFsweEFFRkMsIDB4NEREOSwgMHg5QkIyLCAweDI3NDUsIDB4NEU4QSwgMHg5RDE0LCAweDJBMDksIDB4N0I2MSwgMHhGNkMyLCAweEZEQTUsIDB4RUI2QiwgMHhDNkY3LCAweDlEQ0YsIDB4MkJCRiwgMHg0NTYzLCAweDhBQzYsIDB4MDVBRCwgMHgwQjVBLCAweDE2QjQsIDB4MkQ2OCwgMHg1QUQwLCAweDAzNzUsIDB4MDZFQSwgMHgwREQ0LCAweDFCQTgsIDB4Mzc1MCwgMHg2RUEwLCAweERENDAsIDB4RDg0OSwgMHhBMEIzLCAweDUxNDcsIDB4QTI4RSwgMHg1NTNELCAweEFBN0EsIDB4NDRENSwgMHg2RjQ1LCAweERFOEEsIDB4QUQzNSwgMHg0QTRCLCAweDk0OTYsIDB4MzkwRCwgMHg3MjFBLCAweEVCMjMsIDB4QzY2NywgMHg5Q0VGLCAweDI5RkYsIDB4NTNGRSwgMHhBN0ZDLCAweDVGRDksIDB4NDdEMywgMHg4RkE2LCAweDBGNkQsIDB4MUVEQSwgMHgzREI0LCAweDdCNjgsIDB4RjZEMCwgMHhCODYxLCAweDYwRTMsIDB4QzFDNiwgMHg5M0FELCAweDM3N0IsIDB4NkVGNiwgMHhEREVDLCAweDQ1QTAsIDB4OEI0MCwgMHgwNkExLCAweDBENDIsIDB4MUE4NCwgMHgzNTA4LCAweDZBMTAsIDB4QUE1MSwgMHg0NDgzLCAweDg5MDYsIDB4MDIyRCwgMHgwNDVBLCAweDA4QjQsIDB4MTE2OCwgMHg3NkI0LCAweEVENjgsIDB4Q0FGMSwgMHg4NUMzLCAweDFCQTcsIDB4Mzc0RSwgMHg2RTlDLCAweDM3MzAsIDB4NkU2MCwgMHhEQ0MwLCAweEE5QTEsIDB4NDM2MywgMHg4NkM2LCAweDFEQUQsIDB4MzMzMSwgMHg2NjYyLCAweENDQzQsIDB4ODlBOSwgMHgwMzczLCAweDA2RTYsIDB4MERDQywgMHgxMDIxLCAweDIwNDIsIDB4NDA4NCwgMHg4MTA4LCAweDEyMzEsIDB4MjQ2MiwgMHg0OEM0XTtcblx0dmFyIFJvciA9IGZ1bmN0aW9uKEJ5dGUpIHsgcmV0dXJuICgoQnl0ZS8yKSB8IChCeXRlKjEyOCkpICYgMHhGRjsgfTtcblx0dmFyIFhvclJvciA9IGZ1bmN0aW9uKGJ5dGUxLCBieXRlMikgeyByZXR1cm4gUm9yKGJ5dGUxIF4gYnl0ZTIpOyB9O1xuXHR2YXIgQ3JlYXRlWG9yS2V5X01ldGhvZDEgPSBmdW5jdGlvbihQYXNzd29yZCkge1xuXHRcdHZhciBYb3JLZXkgPSBJbml0aWFsQ29kZVtQYXNzd29yZC5sZW5ndGggLSAxXTtcblx0XHR2YXIgQ3VycmVudEVsZW1lbnQgPSAweDY4O1xuXHRcdGZvcih2YXIgaSA9IFBhc3N3b3JkLmxlbmd0aC0xOyBpID49IDA7IC0taSkge1xuXHRcdFx0dmFyIENoYXIgPSBQYXNzd29yZFtpXTtcblx0XHRcdGZvcih2YXIgaiA9IDA7IGogIT0gNzsgKytqKSB7XG5cdFx0XHRcdGlmKENoYXIgJiAweDQwKSBYb3JLZXkgXj0gWG9yTWF0cml4W0N1cnJlbnRFbGVtZW50XTtcblx0XHRcdFx0Q2hhciAqPSAyOyAtLUN1cnJlbnRFbGVtZW50O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gWG9yS2V5O1xuXHR9O1xuXHRyZXR1cm4gZnVuY3Rpb24ocGFzc3dvcmQvKjpzdHJpbmcqLykge1xuXHRcdHZhciBQYXNzd29yZCA9IF9KUzJBTlNJKHBhc3N3b3JkKTtcblx0XHR2YXIgWG9yS2V5ID0gQ3JlYXRlWG9yS2V5X01ldGhvZDEoUGFzc3dvcmQpO1xuXHRcdHZhciBJbmRleCA9IFBhc3N3b3JkLmxlbmd0aDtcblx0XHR2YXIgT2JmdXNjYXRpb25BcnJheSA9IG5ld19yYXdfYnVmKDE2KTtcblx0XHRmb3IodmFyIGkgPSAwOyBpICE9IDE2OyArK2kpIE9iZnVzY2F0aW9uQXJyYXlbaV0gPSAweDAwO1xuXHRcdHZhciBUZW1wLCBQYXNzd29yZExhc3RDaGFyLCBQYWRJbmRleDtcblx0XHRpZigoSW5kZXggJiAxKSA9PT0gMSkge1xuXHRcdFx0VGVtcCA9IFhvcktleSA+PiA4O1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFkQXJyYXlbMF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdFRlbXAgPSBYb3JLZXkgJiAweEZGO1xuXHRcdFx0UGFzc3dvcmRMYXN0Q2hhciA9IFBhc3N3b3JkW1Bhc3N3b3JkLmxlbmd0aCAtIDFdO1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFzc3dvcmRMYXN0Q2hhciwgVGVtcCk7XG5cdFx0fVxuXHRcdHdoaWxlKEluZGV4ID4gMCkge1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdFRlbXAgPSBYb3JLZXkgPj4gODtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhc3N3b3JkW0luZGV4XSwgVGVtcCk7XG5cdFx0XHQtLUluZGV4O1xuXHRcdFx0VGVtcCA9IFhvcktleSAmIDB4RkY7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZFtJbmRleF0sIFRlbXApO1xuXHRcdH1cblx0XHRJbmRleCA9IDE1O1xuXHRcdFBhZEluZGV4ID0gMTUgLSBQYXNzd29yZC5sZW5ndGg7XG5cdFx0d2hpbGUoUGFkSW5kZXggPiAwKSB7XG5cdFx0XHRUZW1wID0gWG9yS2V5ID4+IDg7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYWRBcnJheVtQYWRJbmRleF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdC0tUGFkSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ICYgMHhGRjtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhc3N3b3JkW0luZGV4XSwgVGVtcCk7XG5cdFx0XHQtLUluZGV4O1xuXHRcdFx0LS1QYWRJbmRleDtcblx0XHR9XG5cdFx0cmV0dXJuIE9iZnVzY2F0aW9uQXJyYXk7XG5cdH07XG59KSgpO1xuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNy4zIEJpbmFyeSBEb2N1bWVudCBYT1IgRGF0YSBUcmFuc2Zvcm1hdGlvbiBNZXRob2QgMSAqL1xudmFyIGNyeXB0b19EZWNyeXB0RGF0YV9NZXRob2QxID0gZnVuY3Rpb24ocGFzc3dvcmQvKjpzdHJpbmcqLywgRGF0YSwgWG9yQXJyYXlJbmRleCwgWG9yQXJyYXksIE8pIHtcblx0LyogSWYgWG9yQXJyYXkgaXMgc2V0LCB1c2UgaXQ7IGlmIE8gaXMgbm90IHNldCwgbWFrZSBjaGFuZ2VzIGluLXBsYWNlICovXG5cdGlmKCFPKSBPID0gRGF0YTtcblx0aWYoIVhvckFycmF5KSBYb3JBcnJheSA9IGNyeXB0b19DcmVhdGVYb3JBcnJheV9NZXRob2QxKHBhc3N3b3JkKTtcblx0dmFyIEluZGV4LCBWYWx1ZTtcblx0Zm9yKEluZGV4ID0gMDsgSW5kZXggIT0gRGF0YS5sZW5ndGg7ICsrSW5kZXgpIHtcblx0XHRWYWx1ZSA9IERhdGFbSW5kZXhdO1xuXHRcdFZhbHVlIF49IFhvckFycmF5W1hvckFycmF5SW5kZXhdO1xuXHRcdFZhbHVlID0gKChWYWx1ZT4+NSkgfCAoVmFsdWU8PDMpKSAmIDB4RkY7XG5cdFx0T1tJbmRleF0gPSBWYWx1ZTtcblx0XHQrK1hvckFycmF5SW5kZXg7XG5cdH1cblx0cmV0dXJuIFtPLCBYb3JBcnJheUluZGV4LCBYb3JBcnJheV07XG59O1xuXG52YXIgY3J5cHRvX01ha2VYb3JEZWNyeXB0b3IgPSBmdW5jdGlvbihwYXNzd29yZC8qOnN0cmluZyovKSB7XG5cdHZhciBYb3JBcnJheUluZGV4ID0gMCwgWG9yQXJyYXkgPSBjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMShwYXNzd29yZCk7XG5cdHJldHVybiBmdW5jdGlvbihEYXRhKSB7XG5cdFx0dmFyIE8gPSBjcnlwdG9fRGVjcnlwdERhdGFfTWV0aG9kMShcIlwiLCBEYXRhLCBYb3JBcnJheUluZGV4LCBYb3JBcnJheSk7XG5cdFx0WG9yQXJyYXlJbmRleCA9IE9bMV07XG5cdFx0cmV0dXJuIE9bMF07XG5cdH07XG59O1xuXG4vKiAyLjUuMzQzICovXG5mdW5jdGlvbiBwYXJzZV9YT1JPYmZ1c2NhdGlvbihibG9iLCBsZW5ndGgsIG9wdHMsIG91dCkge1xuXHR2YXIgbyA9ICh7IGtleTogcGFyc2V1aW50MTYoYmxvYiksIHZlcmlmaWNhdGlvbkJ5dGVzOiBwYXJzZXVpbnQxNihibG9iKSB9Lyo6YW55Ki8pO1xuXHRpZihvcHRzLnBhc3N3b3JkKSBvLnZlcmlmaWVyID0gY3J5cHRvX0NyZWF0ZVBhc3N3b3JkVmVyaWZpZXJfTWV0aG9kMShvcHRzLnBhc3N3b3JkKTtcblx0b3V0LnZhbGlkID0gby52ZXJpZmljYXRpb25CeXRlcyA9PT0gby52ZXJpZmllcjtcblx0aWYob3V0LnZhbGlkKSBvdXQuaW5zaXR1ID0gY3J5cHRvX01ha2VYb3JEZWNyeXB0b3Iob3B0cy5wYXNzd29yZCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiAyLjQuMTE3ICovXG5mdW5jdGlvbiBwYXJzZV9GaWxlUGFzc0hlYWRlcihibG9iLCBsZW5ndGgvKjpudW1iZXIqLywgb28pIHtcblx0dmFyIG8gPSBvbyB8fCB7fTsgby5JbmZvID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBibG9iLmwgLT0gMjtcblx0aWYoby5JbmZvID09PSAxKSBvLkRhdGEgPSBwYXJzZV9SQzRIZWFkZXIoYmxvYiwgbGVuZ3RoKTtcblx0ZWxzZSBvLkRhdGEgPSBwYXJzZV9SQzRDcnlwdG9IZWFkZXIoYmxvYiwgbGVuZ3RoKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9GaWxlUGFzcyhibG9iLCBsZW5ndGgvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgbyA9ICh7IFR5cGU6IG9wdHMuYmlmZiA+PSA4ID8gYmxvYi5yZWFkX3NoaWZ0KDIpIDogMCB9Lyo6YW55Ki8pOyAvKiB3RW5jcnlwdGlvblR5cGUgKi9cblx0aWYoby5UeXBlKSBwYXJzZV9GaWxlUGFzc0hlYWRlcihibG9iLCBsZW5ndGgtMiwgbyk7XG5cdGVsc2UgcGFyc2VfWE9ST2JmdXNjYXRpb24oYmxvYiwgb3B0cy5iaWZmID49IDggPyBsZW5ndGggOiBsZW5ndGggLSAyLCBvcHRzLCBvKTtcblx0cmV0dXJuIG87XG59XG5cblxudmFyIFJURiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIHJ0Zl90b19zaGVldChkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0XHRjYXNlICdiYXNlNjQnOiByZXR1cm4gcnRmX3RvX3NoZWV0X3N0cihCYXNlNjRfZGVjb2RlKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2JpbmFyeSc6IHJldHVybiBydGZfdG9fc2hlZXRfc3RyKGQsIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZCkgPyBkLnRvU3RyaW5nKCdiaW5hcnknKSA6IGEycyhkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdhcnJheSc6ICByZXR1cm4gcnRmX3RvX3NoZWV0X3N0cihjYzJzdHIoZCksIG9wdHMpO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdH1cblxuXHQvKiBUT0RPOiB0aGlzIGlzIGEgc3R1YiAqL1xuXHRmdW5jdGlvbiBydGZfdG9fc2hlZXRfc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBvLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXG5cdFx0dmFyIHJvd3MgPSBzdHIubWF0Y2goL1xcXFx0cm93ZC4qP1xcXFxyb3dcXGIvZyk7XG5cdFx0aWYoIXJvd3MubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoXCJSVEYgbWlzc2luZyB0YWJsZVwiKTtcblx0XHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHtzOiB7YzowLCByOjB9LCBlOiB7YzowLCByOnJvd3MubGVuZ3RoIC0gMX19Lyo6YW55Ki8pO1xuXHRcdHJvd3MuZm9yRWFjaChmdW5jdGlvbihyb3d0ZiwgUikge1xuXHRcdFx0aWYoQXJyYXkuaXNBcnJheSh3cykpIHdzW1JdID0gW107XG5cdFx0XHR2YXIgcnRmcmUgPSAvXFxcXFxcdytcXGIvZztcblx0XHRcdHZhciBsYXN0X2luZGV4ID0gMDtcblx0XHRcdHZhciByZXM7XG5cdFx0XHR2YXIgQyA9IC0xO1xuXHRcdFx0d2hpbGUoKHJlcyA9IHJ0ZnJlLmV4ZWMocm93dGYpKSkge1xuXHRcdFx0XHRzd2l0Y2gocmVzWzBdKSB7XG5cdFx0XHRcdFx0Y2FzZSBcIlxcXFxjZWxsXCI6XG5cdFx0XHRcdFx0XHR2YXIgZGF0YSA9IHJvd3RmLnNsaWNlKGxhc3RfaW5kZXgsIHJ0ZnJlLmxhc3RJbmRleCAtIHJlc1swXS5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYoZGF0YVswXSA9PSBcIiBcIikgZGF0YSA9IGRhdGEuc2xpY2UoMSk7XG5cdFx0XHRcdFx0XHQrK0M7XG5cdFx0XHRcdFx0XHRpZihkYXRhLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiB2YWx1ZSBwYXJzaW5nLCBpbmNsdWRpbmcgY29kZXBhZ2UgYWRqdXN0bWVudHNcblx0XHRcdFx0XHRcdFx0dmFyIGNlbGwgPSB7djogZGF0YSwgdDpcInNcIn07XG5cdFx0XHRcdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkod3MpKSB3c1tSXVtDXSA9IGNlbGw7XG5cdFx0XHRcdFx0XHRcdGVsc2Ugd3NbZW5jb2RlX2NlbGwoe3I6UiwgYzpDfSldID0gY2VsbDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxhc3RfaW5kZXggPSBydGZyZS5sYXN0SW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRpZihDID4gcmFuZ2UuZS5jKSByYW5nZS5lLmMgPSBDO1xuXHRcdH0pO1xuXHRcdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdHJldHVybiB3cztcblx0fVxuXG5cdGZ1bmN0aW9uIHJ0Zl90b193b3JrYm9vayhkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2socnRmX3RvX3NoZWV0KGQsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdC8qIFRPRE86IHRoaXMgaXMgYSBzdHViICovXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX3J0Zih3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgbyA9IFtcIntcXFxccnRmMVxcXFxhbnNpXCJdO1xuXHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0by5wdXNoKFwiXFxcXHRyb3dkXFxcXHRyYXV0b2ZpdDFcIik7XG5cdFx0XHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSBvLnB1c2goXCJcXFxcY2VsbHhcIiArIChDKzEpKTtcblx0XHRcdG8ucHVzaChcIlxcXFxwYXJkXFxcXGludGJsXCIpO1xuXHRcdFx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdOiB3c1tjb29yZF07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudiA9PSBudWxsICYmICghY2VsbC5mIHx8IGNlbGwuRikpIGNvbnRpbnVlO1xuXHRcdFx0XHRvLnB1c2goXCIgXCIgKyAoY2VsbC53IHx8IChmb3JtYXRfY2VsbChjZWxsKSwgY2VsbC53KSkpO1xuXHRcdFx0XHRvLnB1c2goXCJcXFxcY2VsbFwiKTtcblx0XHRcdH1cblx0XHRcdG8ucHVzaChcIlxcXFxwYXJkXFxcXGludGJsXFxcXHJvd1wiKTtcblx0XHR9XG5cdFx0cmV0dXJuIG8uam9pbihcIlwiKSArIFwifVwiO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogcnRmX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBydGZfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fcnRmXG5cdH07XG59KSgpO1xuZnVuY3Rpb24gaGV4MlJHQihoKSB7XG5cdHZhciBvID0gaC5zbGljZShoWzBdPT09XCIjXCI/MTowKS5zbGljZSgwLDYpO1xuXHRyZXR1cm4gW3BhcnNlSW50KG8uc2xpY2UoMCwyKSwxNikscGFyc2VJbnQoby5zbGljZSgyLDQpLDE2KSxwYXJzZUludChvLnNsaWNlKDQsNiksMTYpXTtcbn1cbmZ1bmN0aW9uIHJnYjJIZXgocmdiKSB7XG5cdGZvcih2YXIgaT0wLG89MTsgaSE9MzsgKytpKSBvID0gbyoyNTYgKyAocmdiW2ldPjI1NT8yNTU6cmdiW2ldPDA/MDpyZ2JbaV0pO1xuXHRyZXR1cm4gby50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKTtcbn1cblxuZnVuY3Rpb24gcmdiMkhTTChyZ2IpIHtcblx0dmFyIFIgPSByZ2JbMF0vMjU1LCBHID0gcmdiWzFdLzI1NSwgQj1yZ2JbMl0vMjU1O1xuXHR2YXIgTSA9IE1hdGgubWF4KFIsIEcsIEIpLCBtID0gTWF0aC5taW4oUiwgRywgQiksIEMgPSBNIC0gbTtcblx0aWYoQyA9PT0gMCkgcmV0dXJuIFswLCAwLCBSXTtcblxuXHR2YXIgSDYgPSAwLCBTID0gMCwgTDIgPSAoTSArIG0pO1xuXHRTID0gQyAvIChMMiA+IDEgPyAyIC0gTDIgOiBMMik7XG5cdHN3aXRjaChNKXtcblx0XHRjYXNlIFI6IEg2ID0gKChHIC0gQikgLyBDICsgNiklNjsgYnJlYWs7XG5cdFx0Y2FzZSBHOiBINiA9ICgoQiAtIFIpIC8gQyArIDIpOyBicmVhaztcblx0XHRjYXNlIEI6IEg2ID0gKChSIC0gRykgLyBDICsgNCk7IGJyZWFrO1xuXHR9XG5cdHJldHVybiBbSDYgLyA2LCBTLCBMMiAvIDJdO1xufVxuXG5mdW5jdGlvbiBoc2wyUkdCKGhzbCl7XG5cdHZhciBIID0gaHNsWzBdLCBTID0gaHNsWzFdLCBMID0gaHNsWzJdO1xuXHR2YXIgQyA9IFMgKiAyICogKEwgPCAwLjUgPyBMIDogMSAtIEwpLCBtID0gTCAtIEMvMjtcblx0dmFyIHJnYiA9IFttLG0sbV0sIGg2ID0gNipIO1xuXG5cdHZhciBYO1xuXHRpZihTICE9PSAwKSBzd2l0Y2goaDZ8MCkge1xuXHRcdGNhc2UgMDogY2FzZSA2OiBYID0gQyAqIGg2OyByZ2JbMF0gKz0gQzsgcmdiWzFdICs9IFg7IGJyZWFrO1xuXHRcdGNhc2UgMTogWCA9IEMgKiAoMiAtIGg2KTsgICByZ2JbMF0gKz0gWDsgcmdiWzFdICs9IEM7IGJyZWFrO1xuXHRcdGNhc2UgMjogWCA9IEMgKiAoaDYgLSAyKTsgICByZ2JbMV0gKz0gQzsgcmdiWzJdICs9IFg7IGJyZWFrO1xuXHRcdGNhc2UgMzogWCA9IEMgKiAoNCAtIGg2KTsgICByZ2JbMV0gKz0gWDsgcmdiWzJdICs9IEM7IGJyZWFrO1xuXHRcdGNhc2UgNDogWCA9IEMgKiAoaDYgLSA0KTsgICByZ2JbMl0gKz0gQzsgcmdiWzBdICs9IFg7IGJyZWFrO1xuXHRcdGNhc2UgNTogWCA9IEMgKiAoNiAtIGg2KTsgICByZ2JbMl0gKz0gWDsgcmdiWzBdICs9IEM7IGJyZWFrO1xuXHR9XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gMzsgKytpKSByZ2JbaV0gPSBNYXRoLnJvdW5kKHJnYltpXSoyNTUpO1xuXHRyZXR1cm4gcmdiO1xufVxuXG4vKiAxOC44LjMgYmdDb2xvciB0aW50IGFsZ29yaXRobSAqL1xuZnVuY3Rpb24gcmdiX3RpbnQoaGV4LCB0aW50KSB7XG5cdGlmKHRpbnQgPT09IDApIHJldHVybiBoZXg7XG5cdHZhciBoc2wgPSByZ2IySFNMKGhleDJSR0IoaGV4KSk7XG5cdGlmICh0aW50IDwgMCkgaHNsWzJdID0gaHNsWzJdICogKDEgKyB0aW50KTtcblx0ZWxzZSBoc2xbMl0gPSAxIC0gKDEgLSBoc2xbMl0pICogKDEgLSB0aW50KTtcblx0cmV0dXJuIHJnYjJIZXgoaHNsMlJHQihoc2wpKTtcbn1cblxuLyogMTguMy4xLjEzIHdpZHRoIGNhbGN1bGF0aW9ucyAqL1xuLyogW01TLU9JMjk1MDBdIDIuMS41OTUgQ29sdW1uIFdpZHRoICYgRm9ybWF0dGluZyAqL1xudmFyIERFRl9NRFcgPSA2LCBNQVhfTURXID0gMTUsIE1JTl9NRFcgPSAxLCBNRFcgPSBERUZfTURXO1xuZnVuY3Rpb24gd2lkdGgycHgod2lkdGgpIHsgcmV0dXJuIE1hdGguZmxvb3IoKCB3aWR0aCArIChNYXRoLnJvdW5kKDEyOC9NRFcpKS8yNTYgKSogTURXICk7IH1cbmZ1bmN0aW9uIHB4MmNoYXIocHgpIHsgcmV0dXJuIChNYXRoLmZsb29yKChweCAtIDUpL01EVyAqIDEwMCArIDAuNSkpLzEwMDsgfVxuZnVuY3Rpb24gY2hhcjJ3aWR0aChjaHIpIHsgcmV0dXJuIChNYXRoLnJvdW5kKChjaHIgKiBNRFcgKyA1KS9NRFcqMjU2KSkvMjU2OyB9XG4vL2Z1bmN0aW9uIHB4MmNoYXJfKHB4KSB7IHJldHVybiAoKChweCAtIDUpL01EVyAqIDEwMCArIDAuNSkpLzEwMDsgfVxuLy9mdW5jdGlvbiBjaGFyMndpZHRoXyhjaHIpIHsgcmV0dXJuICgoKGNociAqIE1EVyArIDUpL01EVyoyNTYpKS8yNTY7IH1cbmZ1bmN0aW9uIGN5Y2xlX3dpZHRoKGNvbGx3KSB7IHJldHVybiBjaGFyMndpZHRoKHB4MmNoYXIod2lkdGgycHgoY29sbHcpKSk7IH1cbi8qIFhMU1gvWExTQi9YTFMgc3BlY2lmeSB3aWR0aCBpbiB1bml0cyBvZiBNRFcgKi9cbmZ1bmN0aW9uIGZpbmRfbWR3X2NvbHcoY29sbHcpIHtcblx0dmFyIGRlbHRhID0gTWF0aC5hYnMoY29sbHcgLSBjeWNsZV93aWR0aChjb2xsdykpLCBfTURXID0gTURXO1xuXHRpZihkZWx0YSA+IDAuMDA1KSBmb3IoTURXPU1JTl9NRFc7IE1EVzxNQVhfTURXOyArK01EVykgaWYoTWF0aC5hYnMoY29sbHcgLSBjeWNsZV93aWR0aChjb2xsdykpIDw9IGRlbHRhKSB7IGRlbHRhID0gTWF0aC5hYnMoY29sbHcgLSBjeWNsZV93aWR0aChjb2xsdykpOyBfTURXID0gTURXOyB9XG5cdE1EVyA9IF9NRFc7XG59XG4vKiBYTE1MIHNwZWNpZmllcyB3aWR0aCBpbiB0ZXJtcyBvZiBwaXhlbHMgKi9cbi8qZnVuY3Rpb24gZmluZF9tZHdfd3B4KHdweCkge1xuXHR2YXIgZGVsdGEgPSBJbmZpbml0eSwgZ3Vlc3MgPSAwLCBfTURXID0gTUlOX01EVztcblx0Zm9yKE1EVz1NSU5fTURXOyBNRFc8TUFYX01EVzsgKytNRFcpIHtcblx0XHRndWVzcyA9IGNoYXIyd2lkdGhfKHB4MmNoYXJfKHdweCkpKjI1Njtcblx0XHRndWVzcyA9IChndWVzcykgJSAxO1xuXHRcdGlmKGd1ZXNzID4gMC41KSBndWVzcy0tO1xuXHRcdGlmKE1hdGguYWJzKGd1ZXNzKSA8IGRlbHRhKSB7IGRlbHRhID0gTWF0aC5hYnMoZ3Vlc3MpOyBfTURXID0gTURXOyB9XG5cdH1cblx0TURXID0gX01EVztcbn0qL1xuXG5mdW5jdGlvbiBwcm9jZXNzX2NvbChjb2xsLyo6Q29sSW5mbyovKSB7XG5cdGlmKGNvbGwud2lkdGgpIHtcblx0XHRjb2xsLndweCA9IHdpZHRoMnB4KGNvbGwud2lkdGgpO1xuXHRcdGNvbGwud2NoID0gcHgyY2hhcihjb2xsLndweCk7XG5cdFx0Y29sbC5NRFcgPSBNRFc7XG5cdH0gZWxzZSBpZihjb2xsLndweCkge1xuXHRcdGNvbGwud2NoID0gcHgyY2hhcihjb2xsLndweCk7XG5cdFx0Y29sbC53aWR0aCA9IGNoYXIyd2lkdGgoY29sbC53Y2gpO1xuXHRcdGNvbGwuTURXID0gTURXO1xuXHR9IGVsc2UgaWYodHlwZW9mIGNvbGwud2NoID09ICdudW1iZXInKSB7XG5cdFx0Y29sbC53aWR0aCA9IGNoYXIyd2lkdGgoY29sbC53Y2gpO1xuXHRcdGNvbGwud3B4ID0gd2lkdGgycHgoY29sbC53aWR0aCk7XG5cdFx0Y29sbC5NRFcgPSBNRFc7XG5cdH1cblx0aWYoY29sbC5jdXN0b21XaWR0aCkgZGVsZXRlIGNvbGwuY3VzdG9tV2lkdGg7XG59XG5cbnZhciBERUZfUFBJID0gOTYsIFBQSSA9IERFRl9QUEk7XG5mdW5jdGlvbiBweDJwdChweCkgeyByZXR1cm4gcHggKiA5NiAvIFBQSTsgfVxuZnVuY3Rpb24gcHQycHgocHQpIHsgcmV0dXJuIHB0ICogUFBJIC8gOTY7IH1cblxuLyogW01TLUVYU1BYTUwzXSAyLjQuNTQgU1RfZW5tUGF0dGVybiAqL1xudmFyIFhMTUxQYXR0ZXJuVHlwZU1hcCA9IHtcblx0XCJOb25lXCI6IFwibm9uZVwiLFxuXHRcIlNvbGlkXCI6IFwic29saWRcIixcblx0XCJHcmF5NTBcIjogXCJtZWRpdW1HcmF5XCIsXG5cdFwiR3JheTc1XCI6IFwiZGFya0dyYXlcIixcblx0XCJHcmF5MjVcIjogXCJsaWdodEdyYXlcIixcblx0XCJIb3J6U3RyaXBlXCI6IFwiZGFya0hvcml6b250YWxcIixcblx0XCJWZXJ0U3RyaXBlXCI6IFwiZGFya1ZlcnRpY2FsXCIsXG5cdFwiUmV2ZXJzZURpYWdTdHJpcGVcIjogXCJkYXJrRG93blwiLFxuXHRcIkRpYWdTdHJpcGVcIjogXCJkYXJrVXBcIixcblx0XCJEaWFnQ3Jvc3NcIjogXCJkYXJrR3JpZFwiLFxuXHRcIlRoaWNrRGlhZ0Nyb3NzXCI6IFwiZGFya1RyZWxsaXNcIixcblx0XCJUaGluSG9yelN0cmlwZVwiOiBcImxpZ2h0SG9yaXpvbnRhbFwiLFxuXHRcIlRoaW5WZXJ0U3RyaXBlXCI6IFwibGlnaHRWZXJ0aWNhbFwiLFxuXHRcIlRoaW5SZXZlcnNlRGlhZ1N0cmlwZVwiOiBcImxpZ2h0RG93blwiLFxuXHRcIlRoaW5Ib3J6Q3Jvc3NcIjogXCJsaWdodEdyaWRcIlxufTtcblxuLyogMTguOC41IGJvcmRlcnMgQ1RfQm9yZGVycyAqL1xuZnVuY3Rpb24gcGFyc2VfYm9yZGVycyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cykge1xuXHRzdHlsZXMuQm9yZGVycyA9IFtdO1xuXHR2YXIgYm9yZGVyID0ge307XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8Ym9yZGVycyc6IGNhc2UgJzxib3JkZXJzPic6IGNhc2UgJzwvYm9yZGVycz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC40IGJvcmRlciBDVF9Cb3JkZXIgKi9cblx0XHRcdGNhc2UgJzxib3JkZXInOiBjYXNlICc8Ym9yZGVyPic6IGNhc2UgJzxib3JkZXIvPic6XG5cdFx0XHRcdGJvcmRlciA9IC8qOjooKi97fS8qOjogOmFueSkqLztcblx0XHRcdFx0aWYoeS5kaWFnb25hbFVwKSBib3JkZXIuZGlhZ29uYWxVcCA9IHBhcnNleG1sYm9vbCh5LmRpYWdvbmFsVXApO1xuXHRcdFx0XHRpZih5LmRpYWdvbmFsRG93bikgYm9yZGVyLmRpYWdvbmFsRG93biA9IHBhcnNleG1sYm9vbCh5LmRpYWdvbmFsRG93bik7XG5cdFx0XHRcdHN0eWxlcy5Cb3JkZXJzLnB1c2goYm9yZGVyKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L2JvcmRlcj4nOiBicmVhaztcblxuXHRcdFx0Lyogbm90ZTogbm90IGluIHNwZWMsIGFwcGVhcnMgdG8gYmUgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxsZWZ0Lz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxsZWZ0JzogY2FzZSAnPGxlZnQ+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2xlZnQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIG5vdGU6IG5vdCBpbiBzcGVjLCBhcHBlYXJzIHRvIGJlIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8cmlnaHQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHJpZ2h0JzogY2FzZSAnPHJpZ2h0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9yaWdodD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC40MyB0b3AgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzx0b3AvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHRvcCc6IGNhc2UgJzx0b3A+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3RvcD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC42IGJvdHRvbSBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGJvdHRvbS8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8Ym90dG9tJzogY2FzZSAnPGJvdHRvbT4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvYm90dG9tPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjEzIGRpYWdvbmFsIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8ZGlhZ29uYWwnOiBjYXNlICc8ZGlhZ29uYWw+JzogY2FzZSAnPGRpYWdvbmFsLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvZGlhZ29uYWw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjUgaG9yaXpvbnRhbCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGhvcml6b250YWwnOiBjYXNlICc8aG9yaXpvbnRhbD4nOiBjYXNlICc8aG9yaXpvbnRhbC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2hvcml6b250YWw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNDQgdmVydGljYWwgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzx2ZXJ0aWNhbCc6IGNhc2UgJzx2ZXJ0aWNhbD4nOiBjYXNlICc8dmVydGljYWwvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC92ZXJ0aWNhbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zNyBzdGFydCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPHN0YXJ0JzogY2FzZSAnPHN0YXJ0Pic6IGNhc2UgJzxzdGFydC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3N0YXJ0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE2IGVuZCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGVuZCc6IGNhc2UgJzxlbmQ+JzogY2FzZSAnPGVuZC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2VuZD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4/IGNvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8Y29sb3InOiBjYXNlICc8Y29sb3I+Jzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8Y29sb3IvPic6IGNhc2UgJzwvY29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHtcblx0XHRcdFx0aWYoIXBhc3MpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBib3JkZXJzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMTguOC4yMSBmaWxscyBDVF9GaWxscyAqL1xuZnVuY3Rpb24gcGFyc2VfZmlsbHModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpIHtcblx0c3R5bGVzLkZpbGxzID0gW107XG5cdHZhciBmaWxsID0ge307XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8ZmlsbHMnOiBjYXNlICc8ZmlsbHM+JzogY2FzZSAnPC9maWxscz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yMCBmaWxsIENUX0ZpbGwgKi9cblx0XHRcdGNhc2UgJzxmaWxsPic6IGNhc2UgJzxmaWxsJzogY2FzZSAnPGZpbGwvPic6XG5cdFx0XHRcdGZpbGwgPSB7fTsgc3R5bGVzLkZpbGxzLnB1c2goZmlsbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9maWxsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI0IGdyYWRpZW50RmlsbCBDVF9HcmFkaWVudEZpbGwgKi9cblx0XHRcdGNhc2UgJzxncmFkaWVudEZpbGw+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8Z3JhZGllbnRGaWxsJzpcblx0XHRcdGNhc2UgJzwvZ3JhZGllbnRGaWxsPic6IHN0eWxlcy5GaWxscy5wdXNoKGZpbGwpOyBmaWxsID0ge307IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjMyIHBhdHRlcm5GaWxsIENUX1BhdHRlcm5GaWxsICovXG5cdFx0XHRjYXNlICc8cGF0dGVybkZpbGwnOiBjYXNlICc8cGF0dGVybkZpbGw+Jzpcblx0XHRcdFx0aWYoeS5wYXR0ZXJuVHlwZSkgZmlsbC5wYXR0ZXJuVHlwZSA9IHkucGF0dGVyblR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHBhdHRlcm5GaWxsLz4nOiBjYXNlICc8L3BhdHRlcm5GaWxsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjMgYmdDb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGJnQ29sb3InOlxuXHRcdFx0XHRpZighZmlsbC5iZ0NvbG9yKSBmaWxsLmJnQ29sb3IgPSB7fTtcblx0XHRcdFx0aWYoeS5pbmRleGVkKSBmaWxsLmJnQ29sb3IuaW5kZXhlZCA9IHBhcnNlSW50KHkuaW5kZXhlZCwgMTApO1xuXHRcdFx0XHRpZih5LnRoZW1lKSBmaWxsLmJnQ29sb3IudGhlbWUgPSBwYXJzZUludCh5LnRoZW1lLCAxMCk7XG5cdFx0XHRcdGlmKHkudGludCkgZmlsbC5iZ0NvbG9yLnRpbnQgPSBwYXJzZUZsb2F0KHkudGludCk7XG5cdFx0XHRcdC8qIEV4Y2VsIHVzZXMgQVJHQiBzdHJpbmdzICovXG5cdFx0XHRcdGlmKHkucmdiKSBmaWxsLmJnQ29sb3IucmdiID0geS5yZ2Iuc2xpY2UoLTYpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxiZ0NvbG9yLz4nOiBjYXNlICc8L2JnQ29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTkgZmdDb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGZnQ29sb3InOlxuXHRcdFx0XHRpZighZmlsbC5mZ0NvbG9yKSBmaWxsLmZnQ29sb3IgPSB7fTtcblx0XHRcdFx0aWYoeS50aGVtZSkgZmlsbC5mZ0NvbG9yLnRoZW1lID0gcGFyc2VJbnQoeS50aGVtZSwgMTApO1xuXHRcdFx0XHRpZih5LnRpbnQpIGZpbGwuZmdDb2xvci50aW50ID0gcGFyc2VGbG9hdCh5LnRpbnQpO1xuXHRcdFx0XHQvKiBFeGNlbCB1c2VzIEFSR0Igc3RyaW5ncyAqL1xuXHRcdFx0XHRpZih5LnJnYiAhPSBudWxsKSBmaWxsLmZnQ29sb3IucmdiID0geS5yZ2Iuc2xpY2UoLTYpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxmZ0NvbG9yLz4nOiBjYXNlICc8L2ZnQ29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzggc3RvcCBDVF9HcmFkaWVudFN0b3AgKi9cblx0XHRcdGNhc2UgJzxzdG9wJzogY2FzZSAnPHN0b3AvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zdG9wPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44Lj8gY29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6IGNhc2UgJzxjb2xvci8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gZmlsbHMnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKiAxOC44LjIzIGZvbnRzIENUX0ZvbnRzICovXG5mdW5jdGlvbiBwYXJzZV9mb250cyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cykge1xuXHRzdHlsZXMuRm9udHMgPSBbXTtcblx0dmFyIGZvbnQgPSB7fTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzxmb250cyc6IGNhc2UgJzxmb250cz4nOiBjYXNlICc8L2ZvbnRzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjIyIGZvbnQgQ1RfRm9udCAqL1xuXHRcdFx0Y2FzZSAnPGZvbnQnOiBjYXNlICc8Zm9udD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvZm9udD4nOiBjYXNlICc8Zm9udC8+Jzpcblx0XHRcdFx0c3R5bGVzLkZvbnRzLnB1c2goZm9udCk7XG5cdFx0XHRcdGZvbnQgPSB7fTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjkgbmFtZSBDVF9Gb250TmFtZSAqL1xuXHRcdFx0Y2FzZSAnPG5hbWUnOiBpZih5LnZhbCkgZm9udC5uYW1lID0gdXRmOHJlYWQoeS52YWwpOyBicmVhaztcblx0XHRcdGNhc2UgJzxuYW1lLz4nOiBjYXNlICc8L25hbWU+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMiAgYiBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxiJzogZm9udC5ib2xkID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8Yi8+JzogZm9udC5ib2xkID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjYgaSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxpJzogZm9udC5pdGFsaWMgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxpLz4nOiBmb250Lml0YWxpYyA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEzIHUgQ1RfVW5kZXJsaW5lUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzx1Jzpcblx0XHRcdFx0c3dpdGNoKHkudmFsKSB7XG5cdFx0XHRcdFx0Y2FzZSBcIm5vbmVcIjogZm9udC51bmRlcmxpbmUgPSAweDAwOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwic2luZ2xlXCI6IGZvbnQudW5kZXJsaW5lID0gMHgwMTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcImRvdWJsZVwiOiBmb250LnVuZGVybGluZSA9IDB4MDI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJzaW5nbGVBY2NvdW50aW5nXCI6IGZvbnQudW5kZXJsaW5lID0gMHgyMTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcImRvdWJsZUFjY291bnRpbmdcIjogZm9udC51bmRlcmxpbmUgPSAweDIyOyBicmVhaztcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdGNhc2UgJzx1Lz4nOiBmb250LnVuZGVybGluZSA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEwIHN0cmlrZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxzdHJpa2UnOiBmb250LnN0cmlrZSA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHN0cmlrZS8+JzogZm9udC5zdHJpa2UgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4yICBvdXRsaW5lIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPG91dGxpbmUnOiBmb250Lm91dGxpbmUgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxvdXRsaW5lLz4nOiBmb250Lm91dGxpbmUgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguOC4zNiBzaGFkb3cgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8c2hhZG93JzogZm9udC5zaGFkb3cgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxzaGFkb3cvPic6IGZvbnQuc2hhZG93ID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTIgY29uZGVuc2UgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8Y29uZGVuc2UnOiBmb250LmNvbmRlbnNlID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8Y29uZGVuc2UvPic6IGZvbnQuY29uZGVuc2UgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguOC4xNyBleHRlbmQgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8ZXh0ZW5kJzogZm9udC5leHRlbmQgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxleHRlbmQvPic6IGZvbnQuZXh0ZW5kID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTEgc3ogQ1RfRm9udFNpemUgKi9cblx0XHRcdGNhc2UgJzxzeic6IGlmKHkudmFsKSBmb250LnN6ID0gK3kudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzxzei8+JzogY2FzZSAnPC9zej4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xNCB2ZXJ0QWxpZ24gQ1RfVmVydGljYWxBbGlnbkZvbnRQcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHZlcnRBbGlnbic6IGlmKHkudmFsKSBmb250LnZlcnRBbGlnbiA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24vPic6IGNhc2UgJzwvdmVydEFsaWduPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE4IGZhbWlseSBDVF9Gb250RmFtaWx5ICovXG5cdFx0XHRjYXNlICc8ZmFtaWx5JzogaWYoeS52YWwpIGZvbnQuZmFtaWx5ID0gcGFyc2VJbnQoeS52YWwsMTApOyBicmVhaztcblx0XHRcdGNhc2UgJzxmYW1pbHkvPic6IGNhc2UgJzwvZmFtaWx5Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM1IHNjaGVtZSBDVF9Gb250U2NoZW1lICovXG5cdFx0XHRjYXNlICc8c2NoZW1lJzogaWYoeS52YWwpIGZvbnQuc2NoZW1lID0geS52YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHNjaGVtZS8+JzogY2FzZSAnPC9zY2hlbWU+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMSBjaGFyc2V0IENUX0ludFByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8Y2hhcnNldCc6XG5cdFx0XHRcdGlmKHkudmFsID09ICcxJykgYnJlYWs7XG5cdFx0XHRcdHkuY29kZXBhZ2UgPSBDUzJDUFtwYXJzZUludCh5LnZhbCwgMTApXTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIDE4Lj8uPyBjb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGNvbG9yJzpcblx0XHRcdFx0aWYoIWZvbnQuY29sb3IpIGZvbnQuY29sb3IgPSB7fTtcblx0XHRcdFx0aWYoeS5hdXRvKSBmb250LmNvbG9yLmF1dG8gPSBwYXJzZXhtbGJvb2woeS5hdXRvKTtcblxuXHRcdFx0XHRpZih5LnJnYikgZm9udC5jb2xvci5yZ2IgPSB5LnJnYi5zbGljZSgtNik7XG5cdFx0XHRcdGVsc2UgaWYoeS5pbmRleGVkKSB7XG5cdFx0XHRcdFx0Zm9udC5jb2xvci5pbmRleCA9IHBhcnNlSW50KHkuaW5kZXhlZCwgMTApO1xuXHRcdFx0XHRcdHZhciBpY3YgPSBYTFNJY3ZbZm9udC5jb2xvci5pbmRleF07XG5cdFx0XHRcdFx0aWYoZm9udC5jb2xvci5pbmRleCA9PSA4MSkgaWN2ID0gWExTSWN2WzFdO1xuXHRcdFx0XHRcdGlmKCFpY3YpIGljdiA9IFhMU0ljdlsxXTsgLy90aHJvdyBuZXcgRXJyb3IoeCk7IC8vIG5vdGU6IDIwNiBpcyB2YWxpZFxuXHRcdFx0XHRcdGZvbnQuY29sb3IucmdiID0gaWN2WzBdLnRvU3RyaW5nKDE2KSArIGljdlsxXS50b1N0cmluZygxNikgKyBpY3ZbMl0udG9TdHJpbmcoMTYpO1xuXHRcdFx0XHR9IGVsc2UgaWYoeS50aGVtZSkge1xuXHRcdFx0XHRcdGZvbnQuY29sb3IudGhlbWUgPSBwYXJzZUludCh5LnRoZW1lLCAxMCk7XG5cdFx0XHRcdFx0aWYoeS50aW50KSBmb250LmNvbG9yLnRpbnQgPSBwYXJzZUZsb2F0KHkudGludCk7XG5cdFx0XHRcdFx0aWYoeS50aGVtZSAmJiB0aGVtZXMudGhlbWVFbGVtZW50cyAmJiB0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUpIHtcblx0XHRcdFx0XHRcdGZvbnQuY29sb3IucmdiID0gcmdiX3RpbnQodGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW2ZvbnQuY29sb3IudGhlbWVdLnJnYiwgZm9udC5jb2xvci50aW50IHx8IDApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbG9yLz4nOiBjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBzb21ldGltZXMgbWM6QWx0ZXJuYXRlQ29udGVudCBhcHBlYXJzIGJhcmUgKi9cblx0XHRcdGNhc2UgJzxBbHRlcm5hdGVDb250ZW50JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9BbHRlcm5hdGVDb250ZW50Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHtcblx0XHRcdFx0aWYoIXBhc3MpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBmb250cycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qIDE4LjguMzEgbnVtRm10cyBDVF9OdW1GbXRzICovXG5mdW5jdGlvbiBwYXJzZV9udW1GbXRzKHQsIHN0eWxlcywgb3B0cykge1xuXHRzdHlsZXMuTnVtYmVyRm10ID0gW107XG5cdHZhciBrLypBcnJheTxudW1iZXI+Ki8gPSAoa2V5cyh0YWJsZV9mbXQpLyo6YW55Ki8pO1xuXHRmb3IodmFyIGk9MDsgaSA8IGsubGVuZ3RoOyArK2kpIHN0eWxlcy5OdW1iZXJGbXRba1tpXV0gPSB0YWJsZV9mbXRba1tpXV07XG5cdHZhciBtID0gdFswXS5tYXRjaCh0YWdyZWdleCk7XG5cdGlmKCFtKSByZXR1cm47XG5cdGZvcihpPTA7IGkgPCBtLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyhtW2ldKTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzxudW1GbXRzJzogY2FzZSAnPC9udW1GbXRzPic6IGNhc2UgJzxudW1GbXRzLz4nOiBjYXNlICc8bnVtRm10cz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxudW1GbXQnOiB7XG5cdFx0XHRcdHZhciBmPXVuZXNjYXBleG1sKHV0ZjhyZWFkKHkuZm9ybWF0Q29kZSkpLCBqPXBhcnNlSW50KHkubnVtRm10SWQsMTApO1xuXHRcdFx0XHRzdHlsZXMuTnVtYmVyRm10W2pdID0gZjtcblx0XHRcdFx0aWYoaj4wKSB7XG5cdFx0XHRcdFx0aWYoaiA+IDB4MTg4KSB7XG5cdFx0XHRcdFx0XHRmb3IoaiA9IDB4MTg4OyBqID4gMHgzYzsgLS1qKSBpZihzdHlsZXMuTnVtYmVyRm10W2pdID09IG51bGwpIGJyZWFrO1xuXHRcdFx0XHRcdFx0c3R5bGVzLk51bWJlckZtdFtqXSA9IGY7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFNTRl9sb2FkKGYsaik7XG5cdFx0XHRcdH1cblx0XHRcdH0gYnJlYWs7XG5cdFx0XHRjYXNlICc8L251bUZtdD4nOiBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gbnVtRm10cycpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZV9udW1GbXRzKE5GLyo6e1tuOm51bWJlcnxzdHJpbmddOnN0cmluZ30qLy8qOjosIG9wdHMqLykge1xuXHR2YXIgbyA9IFtcIjxudW1GbXRzPlwiXTtcblx0W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbLyo2MyovNTAsLyo2Nl0sWzE2NCwqLzM5Ml1dLmZvckVhY2goZnVuY3Rpb24ocikge1xuXHRcdGZvcih2YXIgaSA9IHJbMF07IGkgPD0gclsxXTsgKytpKSBpZihORltpXSAhPSBudWxsKSBvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ251bUZtdCcsbnVsbCx7bnVtRm10SWQ6aSxmb3JtYXRDb2RlOmVzY2FwZXhtbChORltpXSl9KSk7XG5cdH0pO1xuXHRpZihvLmxlbmd0aCA9PT0gMSkgcmV0dXJuIFwiXCI7XG5cdG9bby5sZW5ndGhdID0gKFwiPC9udW1GbXRzPlwiKTtcblx0b1swXSA9IHdyaXRleHRhZygnbnVtRm10cycsIG51bGwsIHsgY291bnQ6by5sZW5ndGgtMiB9KS5yZXBsYWNlKFwiLz5cIiwgXCI+XCIpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiAxOC44LjEwIGNlbGxYZnMgQ1RfQ2VsbFhmcyAqL1xudmFyIGNlbGxYRl91aW50ID0gWyBcIm51bUZtdElkXCIsIFwiZmlsbElkXCIsIFwiZm9udElkXCIsIFwiYm9yZGVySWRcIiwgXCJ4ZklkXCIgXTtcbnZhciBjZWxsWEZfYm9vbCA9IFsgXCJhcHBseUFsaWdubWVudFwiLCBcImFwcGx5Qm9yZGVyXCIsIFwiYXBwbHlGaWxsXCIsIFwiYXBwbHlGb250XCIsIFwiYXBwbHlOdW1iZXJGb3JtYXRcIiwgXCJhcHBseVByb3RlY3Rpb25cIiwgXCJwaXZvdEJ1dHRvblwiLCBcInF1b3RlUHJlZml4XCIgXTtcbmZ1bmN0aW9uIHBhcnNlX2NlbGxYZnModCwgc3R5bGVzLCBvcHRzKSB7XG5cdHN0eWxlcy5DZWxsWGYgPSBbXTtcblx0dmFyIHhmO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpLCBpID0gMDtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzxjZWxsWGZzJzogY2FzZSAnPGNlbGxYZnM+JzogY2FzZSAnPGNlbGxYZnMvPic6IGNhc2UgJzwvY2VsbFhmcz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC40NSB4ZiBDVF9YZiAqL1xuXHRcdFx0Y2FzZSAnPHhmJzogY2FzZSAnPHhmLz4nOlxuXHRcdFx0XHR4ZiA9IHk7XG5cdFx0XHRcdGRlbGV0ZSB4ZlswXTtcblx0XHRcdFx0Zm9yKGkgPSAwOyBpIDwgY2VsbFhGX3VpbnQubGVuZ3RoOyArK2kpIGlmKHhmW2NlbGxYRl91aW50W2ldXSlcblx0XHRcdFx0XHR4ZltjZWxsWEZfdWludFtpXV0gPSBwYXJzZUludCh4ZltjZWxsWEZfdWludFtpXV0sIDEwKTtcblx0XHRcdFx0Zm9yKGkgPSAwOyBpIDwgY2VsbFhGX2Jvb2wubGVuZ3RoOyArK2kpIGlmKHhmW2NlbGxYRl9ib29sW2ldXSlcblx0XHRcdFx0XHR4ZltjZWxsWEZfYm9vbFtpXV0gPSBwYXJzZXhtbGJvb2woeGZbY2VsbFhGX2Jvb2xbaV1dKTtcblx0XHRcdFx0aWYoc3R5bGVzLk51bWJlckZtdCAmJiB4Zi5udW1GbXRJZCA+IDB4MTg4KSB7XG5cdFx0XHRcdFx0Zm9yKGkgPSAweDE4ODsgaSA+IDB4M2M7IC0taSkgaWYoc3R5bGVzLk51bWJlckZtdFt4Zi5udW1GbXRJZF0gPT0gc3R5bGVzLk51bWJlckZtdFtpXSkgeyB4Zi5udW1GbXRJZCA9IGk7IGJyZWFrOyB9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3R5bGVzLkNlbGxYZi5wdXNoKHhmKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3hmPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjEgYWxpZ25tZW50IENUX0NlbGxBbGlnbm1lbnQgKi9cblx0XHRcdGNhc2UgJzxhbGlnbm1lbnQnOiBjYXNlICc8YWxpZ25tZW50Lz4nOlxuXHRcdFx0XHR2YXIgYWxpZ25tZW50ID0ge307XG5cdFx0XHRcdGlmKHkudmVydGljYWwpIGFsaWdubWVudC52ZXJ0aWNhbCA9IHkudmVydGljYWw7XG5cdFx0XHRcdGlmKHkuaG9yaXpvbnRhbCkgYWxpZ25tZW50Lmhvcml6b250YWwgPSB5Lmhvcml6b250YWw7XG5cdFx0XHRcdGlmKHkudGV4dFJvdGF0aW9uICE9IG51bGwpIGFsaWdubWVudC50ZXh0Um90YXRpb24gPSB5LnRleHRSb3RhdGlvbjtcblx0XHRcdFx0aWYoeS5pbmRlbnQpIGFsaWdubWVudC5pbmRlbnQgPSB5LmluZGVudDtcblx0XHRcdFx0aWYoeS53cmFwVGV4dCkgYWxpZ25tZW50LndyYXBUZXh0ID0gcGFyc2V4bWxib29sKHkud3JhcFRleHQpO1xuXHRcdFx0XHR4Zi5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9hbGlnbm1lbnQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzMgcHJvdGVjdGlvbiBDVF9DZWxsUHJvdGVjdGlvbiAqL1xuXHRcdFx0Y2FzZSAnPHByb3RlY3Rpb24nOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvcHJvdGVjdGlvbj4nOiBjYXNlICc8cHJvdGVjdGlvbi8+JzogYnJlYWs7XG5cblx0XHRcdC8qIG5vdGU6IHNvbWV0aW1lcyBtYzpBbHRlcm5hdGVDb250ZW50IGFwcGVhcnMgYmFyZSAqL1xuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L0FsdGVybmF0ZUNvbnRlbnQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikge1xuXHRcdFx0XHRpZighcGFzcykgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGNlbGxYZnMnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jZWxsWGZzKGNlbGxYZnMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ2NlbGxYZnMnLG51bGwpKTtcblx0Y2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3hmJywgbnVsbCwgYykpO1xuXHR9KTtcblx0b1tvLmxlbmd0aF0gPSAoXCI8L2NlbGxYZnM+XCIpO1xuXHRpZihvLmxlbmd0aCA9PT0gMikgcmV0dXJuIFwiXCI7XG5cdG9bMF0gPSB3cml0ZXh0YWcoJ2NlbGxYZnMnLG51bGwsIHtjb3VudDpvLmxlbmd0aC0yfSkucmVwbGFjZShcIi8+XCIsXCI+XCIpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiAxOC44IFN0eWxlcyBDVF9TdHlsZXNoZWV0Ki9cbnZhciBwYXJzZV9zdHlfeG1sPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uIG1ha2VfcHN0eXgoKSB7XG52YXIgbnVtRm10UmVnZXggPSAvPCg/Olxcdys6KT9udW1GbXRzKFtePl0qKT5bXFxTXFxzXSo/PFxcLyg/Olxcdys6KT9udW1GbXRzPi87XG52YXIgY2VsbFhmUmVnZXggPSAvPCg/Olxcdys6KT9jZWxsWGZzKFtePl0qKT5bXFxTXFxzXSo/PFxcLyg/Olxcdys6KT9jZWxsWGZzPi87XG52YXIgZmlsbHNSZWdleCA9IC88KD86XFx3KzopP2ZpbGxzKFtePl0qKT5bXFxTXFxzXSo/PFxcLyg/Olxcdys6KT9maWxscz4vO1xudmFyIGZvbnRzUmVnZXggPSAvPCg/Olxcdys6KT9mb250cyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/Zm9udHM+LztcbnZhciBib3JkZXJzUmVnZXggPSAvPCg/Olxcdys6KT9ib3JkZXJzKFtePl0qKT5bXFxTXFxzXSo/PFxcLyg/Olxcdys6KT9ib3JkZXJzPi87XG5cbnJldHVybiBmdW5jdGlvbiBwYXJzZV9zdHlfeG1sKGRhdGEsIHRoZW1lcywgb3B0cykge1xuXHR2YXIgc3R5bGVzID0ge307XG5cdGlmKCFkYXRhKSByZXR1cm4gc3R5bGVzO1xuXHRkYXRhID0gZGF0YS5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L21nLFwiXCIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFxbXSpcXFtbXlxcXV0qXFxdPi9nbSxcIlwiKTtcblx0LyogMTguOC4zOSBzdHlsZVNoZWV0IENUX1N0eWxlc2hlZXQgKi9cblx0dmFyIHQ7XG5cblx0LyogMTguOC4zMSBudW1GbXRzIENUX051bUZtdHMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKG51bUZtdFJlZ2V4KSkpIHBhcnNlX251bUZtdHModCwgc3R5bGVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjIzIGZvbnRzIENUX0ZvbnRzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChmb250c1JlZ2V4KSkpIHBhcnNlX2ZvbnRzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjIxIGZpbGxzIENUX0ZpbGxzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChmaWxsc1JlZ2V4KSkpIHBhcnNlX2ZpbGxzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjUgIGJvcmRlcnMgQ1RfQm9yZGVycyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goYm9yZGVyc1JlZ2V4KSkpIHBhcnNlX2JvcmRlcnModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpO1xuXG5cdC8qIDE4LjguOSAgY2VsbFN0eWxlWGZzIENUX0NlbGxTdHlsZVhmcyA/ICovXG5cdC8qIDE4LjguOCAgY2VsbFN0eWxlcyBDVF9DZWxsU3R5bGVzID8gKi9cblxuXHQvKiAxOC44LjEwIGNlbGxYZnMgQ1RfQ2VsbFhmcyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goY2VsbFhmUmVnZXgpKSkgcGFyc2VfY2VsbFhmcyh0LCBzdHlsZXMsIG9wdHMpO1xuXG5cdC8qIDE4LjguMTUgZHhmcyBDVF9EeGZzID8gKi9cblx0LyogMTguOC40MiB0YWJsZVN0eWxlcyBDVF9UYWJsZVN0eWxlcyA/ICovXG5cdC8qIDE4LjguMTEgY29sb3JzIENUX0NvbG9ycyA/ICovXG5cdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXG5cdHJldHVybiBzdHlsZXM7XG59O1xufSkoKTtcblxuZnVuY3Rpb24gd3JpdGVfc3R5X3htbCh3Yi8qOldvcmtib29rKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ3N0eWxlU2hlZXQnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQneG1sbnM6dnQnOiBYTUxOUy52dFxuXHR9KV0sIHc7XG5cdGlmKHdiLlNTRiAmJiAodyA9IHdyaXRlX251bUZtdHMod2IuU1NGKSkgIT0gbnVsbCkgb1tvLmxlbmd0aF0gPSB3O1xuXHRvW28ubGVuZ3RoXSA9ICgnPGZvbnRzIGNvdW50PVwiMVwiPjxmb250PjxzeiB2YWw9XCIxMlwiLz48Y29sb3IgdGhlbWU9XCIxXCIvPjxuYW1lIHZhbD1cIkNhbGlicmlcIi8+PGZhbWlseSB2YWw9XCIyXCIvPjxzY2hlbWUgdmFsPVwibWlub3JcIi8+PC9mb250PjwvZm9udHM+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8ZmlsbHMgY291bnQ9XCIyXCI+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPVwibm9uZVwiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPVwiZ3JheTEyNVwiLz48L2ZpbGw+PC9maWxscz4nKTtcblx0b1tvLmxlbmd0aF0gPSAoJzxib3JkZXJzIGNvdW50PVwiMVwiPjxib3JkZXI+PGxlZnQvPjxyaWdodC8+PHRvcC8+PGJvdHRvbS8+PGRpYWdvbmFsLz48L2JvcmRlcj48L2JvcmRlcnM+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8Y2VsbFN0eWxlWGZzIGNvdW50PVwiMVwiPjx4ZiBudW1GbXRJZD1cIjBcIiBmb250SWQ9XCIwXCIgZmlsbElkPVwiMFwiIGJvcmRlcklkPVwiMFwiLz48L2NlbGxTdHlsZVhmcz4nKTtcblx0aWYoKHcgPSB3cml0ZV9jZWxsWGZzKG9wdHMuY2VsbFhmcykpKSBvW28ubGVuZ3RoXSA9ICh3KTtcblx0b1tvLmxlbmd0aF0gPSAoJzxjZWxsU3R5bGVzIGNvdW50PVwiMVwiPjxjZWxsU3R5bGUgbmFtZT1cIk5vcm1hbFwiIHhmSWQ9XCIwXCIgYnVpbHRpbklkPVwiMFwiLz48L2NlbGxTdHlsZXM+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8ZHhmcyBjb3VudD1cIjBcIi8+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8dGFibGVTdHlsZXMgY291bnQ9XCIwXCIgZGVmYXVsdFRhYmxlU3R5bGU9XCJUYWJsZVN0eWxlTWVkaXVtOVwiIGRlZmF1bHRQaXZvdFN0eWxlPVwiUGl2b3RTdHlsZU1lZGl1bTRcIi8+Jyk7XG5cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L3N0eWxlU2hlZXQ+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNCXSAyLjQuNjU3IEJydEZtdCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm10KGRhdGEsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciBudW1GbXRJZCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0dmFyIHN0Rm10Q29kZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLGxlbmd0aC0yKTtcblx0cmV0dXJuIFtudW1GbXRJZCwgc3RGbXRDb2RlXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEZtdChpLyo6bnVtYmVyKi8sIGYvKjpzdHJpbmcqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNiArIDQgKiBmLmxlbmd0aCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhmLCBvKTtcblx0dmFyIG91dCA9IChvLmxlbmd0aCA+IG8ubCkgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xuXHRpZihvLmwgPT0gbnVsbCkgby5sID0gby5sZW5ndGg7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjU5IEJydEZvbnQgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm9udChkYXRhLCBsZW5ndGgvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgb3V0ID0gKHt9Lyo6YW55Ki8pO1xuXG5cdG91dC5zeiA9IGRhdGEucmVhZF9zaGlmdCgyKSAvIDIwO1xuXG5cdHZhciBncmJpdCA9IHBhcnNlX0ZvbnRGbGFncyhkYXRhLCAyLCBvcHRzKTtcblx0aWYoZ3JiaXQuZkl0YWxpYykgb3V0Lml0YWxpYyA9IDE7XG5cdGlmKGdyYml0LmZDb25kZW5zZSkgb3V0LmNvbmRlbnNlID0gMTtcblx0aWYoZ3JiaXQuZkV4dGVuZCkgb3V0LmV4dGVuZCA9IDE7XG5cdGlmKGdyYml0LmZTaGFkb3cpIG91dC5zaGFkb3cgPSAxO1xuXHRpZihncmJpdC5mT3V0bGluZSkgb3V0Lm91dGxpbmUgPSAxO1xuXHRpZihncmJpdC5mU3RyaWtlb3V0KSBvdXQuc3RyaWtlID0gMTtcblxuXHR2YXIgYmxzID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRpZihibHMgPT09IDB4MDJCQykgb3V0LmJvbGQgPSAxO1xuXG5cdHN3aXRjaChkYXRhLnJlYWRfc2hpZnQoMikpIHtcblx0XHQvKiBjYXNlIDA6IG91dC52ZXJ0QWxpZ24gPSBcImJhc2VsaW5lXCI7IGJyZWFrOyAqL1xuXHRcdGNhc2UgMTogb3V0LnZlcnRBbGlnbiA9IFwic3VwZXJzY3JpcHRcIjsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBvdXQudmVydEFsaWduID0gXCJzdWJzY3JpcHRcIjsgYnJlYWs7XG5cdH1cblxuXHR2YXIgdW5kZXJsaW5lID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRpZih1bmRlcmxpbmUgIT0gMCkgb3V0LnVuZGVybGluZSA9IHVuZGVybGluZTtcblxuXHR2YXIgZmFtaWx5ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRpZihmYW1pbHkgPiAwKSBvdXQuZmFtaWx5ID0gZmFtaWx5O1xuXG5cdHZhciBiQ2hhclNldCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYoYkNoYXJTZXQgPiAwKSBvdXQuY2hhcnNldCA9IGJDaGFyU2V0O1xuXG5cdGRhdGEubCsrO1xuXHRvdXQuY29sb3IgPSBwYXJzZV9CcnRDb2xvcihkYXRhLCA4KTtcblxuXHRzd2l0Y2goZGF0YS5yZWFkX3NoaWZ0KDEpKSB7XG5cdFx0LyogY2FzZSAwOiBvdXQuc2NoZW1lID0gXCJub25lXCI6IGJyZWFrOyAqL1xuXHRcdGNhc2UgMTogb3V0LnNjaGVtZSA9IFwibWFqb3JcIjsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBvdXQuc2NoZW1lID0gXCJtaW5vclwiOyBicmVhaztcblx0fVxuXG5cdG91dC5uYW1lID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEsIGxlbmd0aCAtIDIxKTtcblxuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Rm9udChmb250Lyo6YW55Ki8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDI1KzQqMzIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZvbnQuc3ogKiAyMCk7XG5cdHdyaXRlX0ZvbnRGbGFncyhmb250LCBvKTtcblx0by53cml0ZV9zaGlmdCgyLCBmb250LmJvbGQgPyAweDAyQkMgOiAweDAxOTApO1xuXHR2YXIgc3NzID0gMDtcblx0aWYoZm9udC52ZXJ0QWxpZ24gPT0gXCJzdXBlcnNjcmlwdFwiKSBzc3MgPSAxO1xuXHRlbHNlIGlmKGZvbnQudmVydEFsaWduID09IFwic3Vic2NyaXB0XCIpIHNzcyA9IDI7XG5cdG8ud3JpdGVfc2hpZnQoMiwgc3NzKTtcblx0by53cml0ZV9zaGlmdCgxLCBmb250LnVuZGVybGluZSB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBmb250LmZhbWlseSB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBmb250LmNoYXJzZXQgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHdyaXRlX0JydENvbG9yKGZvbnQuY29sb3IsIG8pO1xuXHR2YXIgc2NoZW1lID0gMDtcblx0aWYoZm9udC5zY2hlbWUgPT0gXCJtYWpvclwiKSBzY2hlbWUgPSAxO1xuXHRpZihmb250LnNjaGVtZSA9PSBcIm1pbm9yXCIpIHNjaGVtZSA9IDI7XG5cdG8ud3JpdGVfc2hpZnQoMSwgc2NoZW1lKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGZvbnQubmFtZSwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjUwIEJydEZpbGwgKi9cbnZhciBYTFNCRmlsbFBUTmFtZXMgPSBbXG5cdFwibm9uZVwiLFxuXHRcInNvbGlkXCIsXG5cdFwibWVkaXVtR3JheVwiLFxuXHRcImRhcmtHcmF5XCIsXG5cdFwibGlnaHRHcmF5XCIsXG5cdFwiZGFya0hvcml6b250YWxcIixcblx0XCJkYXJrVmVydGljYWxcIixcblx0XCJkYXJrRG93blwiLFxuXHRcImRhcmtVcFwiLFxuXHRcImRhcmtHcmlkXCIsXG5cdFwiZGFya1RyZWxsaXNcIixcblx0XCJsaWdodEhvcml6b250YWxcIixcblx0XCJsaWdodFZlcnRpY2FsXCIsXG5cdFwibGlnaHREb3duXCIsXG5cdFwibGlnaHRVcFwiLFxuXHRcImxpZ2h0R3JpZFwiLFxuXHRcImxpZ2h0VHJlbGxpc1wiLFxuXHRcImdyYXkxMjVcIixcblx0XCJncmF5MDYyNVwiXG5dO1xudmFyIHJldl9YTFNCRmlsbFBUTmFtZXMvKjpFdmVydE51bVR5cGUqLztcbi8qIFRPRE86IGdyYWRpZW50IGZpbGwgcmVwcmVzZW50YXRpb24gKi9cbnZhciBwYXJzZV9CcnRGaWxsID0gcGFyc2Vub29wO1xuZnVuY3Rpb24gd3JpdGVfQnJ0RmlsbChmaWxsLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig0KjMgKyA4KjcgKyAxNioxKTtcblx0aWYoIXJldl9YTFNCRmlsbFBUTmFtZXMpIHJldl9YTFNCRmlsbFBUTmFtZXMgPSAoZXZlcnQoWExTQkZpbGxQVE5hbWVzKS8qOmFueSovKTtcblx0dmFyIGZscy8qOm51bWJlciovID0gcmV2X1hMU0JGaWxsUFROYW1lc1tmaWxsLnBhdHRlcm5UeXBlXTtcblx0aWYoZmxzID09IG51bGwpIGZscyA9IDB4Mjg7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZmxzKTtcblx0dmFyIGogPSAwO1xuXHRpZihmbHMgIT0gMHgyOCkge1xuXHRcdC8qIFRPRE86IGN1c3RvbSBGRyBDb2xvciAqL1xuXHRcdHdyaXRlX0JydENvbG9yKHthdXRvOjF9LCBvKTtcblx0XHQvKiBUT0RPOiBjdXN0b20gQkcgQ29sb3IgKi9cblx0XHR3cml0ZV9CcnRDb2xvcih7YXV0bzoxfSwgbyk7XG5cblx0XHRmb3IoOyBqIDwgMTI7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0fSBlbHNlIHtcblx0XHRmb3IoOyBqIDwgNDsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXG5cdFx0Zm9yKDsgaiA8IDEyOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIFRPRE8gKi9cblx0XHQvKiBpR3JhZGllbnRUeXBlICovXG5cdFx0LyogeG51bURlZ3JlZSAqL1xuXHRcdC8qIHhudW1GaWxsVG9MZWZ0ICovXG5cdFx0LyogeG51bUZpbGxUb1JpZ2h0ICovXG5cdFx0LyogeG51bUZpbGxUb1RvcCAqL1xuXHRcdC8qIHhudW1GaWxsVG9Cb3R0b20gKi9cblx0XHQvKiBjTnVtU3RvcCAqL1xuXHRcdC8qIHhmaWxsR3JhZGllbnRTdG9wICovXG5cdH1cblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC44MjQgQnJ0WEYgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFhGKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciB0Z3QgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBpeGZlUGFyZW50ID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaWZtdCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0ZGF0YS5sID0gdGd0O1xuXHRyZXR1cm4ge2l4ZmU6aXhmZVBhcmVudCwgbnVtRm10SWQ6aWZtdCB9O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0WEYoZGF0YSwgaXhmZVAsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDE2KTtcblx0by53cml0ZV9zaGlmdCgyLCBpeGZlUHx8MCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZGF0YS5udW1GbXRJZHx8MCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7IC8qIGlGb250ICovXG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7IC8qIGlGaWxsICovXG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7IC8qIGl4Qm9yZGVyICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIHRyb3QgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogaW5kZW50ICovXG5cdHZhciBmbG93ID0gMDtcblx0by53cml0ZV9zaGlmdCgxLCBmbG93KTsgLyogZmxhZ3MgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogZmxhZ3MgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogeGZHcmJpdEF0ciAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS40IEJseGYgVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfQmx4ZihkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGRnICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIGNvbG9yICovXG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIGNvbG9yICovXG5cdHJldHVybiBvO1xufVxuLyogW01TLVhMU0JdIDIuNC4zMDIgQnJ0Qm9yZGVyIFRPRE8gKi9cbnZhciBwYXJzZV9CcnRCb3JkZXIgPSBwYXJzZW5vb3A7XG5mdW5jdGlvbiB3cml0ZV9CcnRCb3JkZXIoYm9yZGVyLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig1MSk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGRpYWdvbmFsICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIHRvcCAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiBib3R0b20gKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogbGVmdCAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiByaWdodCAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiBkaWFnICovXG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNzYzIEJydFN0eWxlIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX0JydFN0eWxlKHN0eWxlLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxMis0KjEwKTtcblx0by53cml0ZV9zaGlmdCg0LCBzdHlsZS54ZklkKTtcblx0by53cml0ZV9zaGlmdCgyLCAxKTtcblx0by53cml0ZV9zaGlmdCgxLCArc3R5bGUuYnVpbHRpbklkKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogaUxldmVsICovXG5cdHdyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nKHN0eWxlLm5hbWUgfHwgXCJcIiwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMjcyIEJydEJlZ2luVGFibGVTdHlsZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luVGFibGVTdHlsZXMoY250LCBkZWZUYWJsZVN0eWxlLCBkZWZQaXZvdFN0eWxlKSB7XG5cdHZhciBvID0gbmV3X2J1Zig0KzI1NioyKjQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGNudCk7XG5cdHdyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRlZlRhYmxlU3R5bGUsIG8pO1xuXHR3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkZWZQaXZvdFN0eWxlLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjUwIFN0eWxlcyAqL1xuZnVuY3Rpb24gcGFyc2Vfc3R5X2JpbihkYXRhLCB0aGVtZXMsIG9wdHMpIHtcblx0dmFyIHN0eWxlcyA9IHt9O1xuXHRzdHlsZXMuTnVtYmVyRm10ID0gKFtdLyo6YW55Ki8pO1xuXHRmb3IodmFyIHkgaW4gdGFibGVfZm10KSBzdHlsZXMuTnVtYmVyRm10W3ldID0gdGFibGVfZm10W3ldO1xuXG5cdHN0eWxlcy5DZWxsWGYgPSBbXTtcblx0c3R5bGVzLkZvbnRzID0gW107XG5cdHZhciBzdGF0ZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX3N0eSh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDAyQzogLyogQnJ0Rm10ICovXG5cdFx0XHRcdHN0eWxlcy5OdW1iZXJGbXRbdmFsWzBdXSA9IHZhbFsxXTsgU1NGX2xvYWQodmFsWzFdLCB2YWxbMF0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDJCOiAvKiBCcnRGb250ICovXG5cdFx0XHRcdHN0eWxlcy5Gb250cy5wdXNoKHZhbCk7XG5cdFx0XHRcdGlmKHZhbC5jb2xvci50aGVtZSAhPSBudWxsICYmIHRoZW1lcyAmJiB0aGVtZXMudGhlbWVFbGVtZW50cyAmJiB0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUpIHtcblx0XHRcdFx0XHR2YWwuY29sb3IucmdiID0gcmdiX3RpbnQodGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3ZhbC5jb2xvci50aGVtZV0ucmdiLCB2YWwuY29sb3IudGludCB8fCAwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwNDAxOiAvKiBCcnRLbm93bkZvbnRzICovIGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMkQ6IC8qIEJydEZpbGwgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyRTogLyogQnJ0Qm9yZGVyICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMkY6IC8qIEJydFhGICovXG5cdFx0XHRcdGlmKHN0YXRlW3N0YXRlLmxlbmd0aCAtIDFdID09IDB4MDI2OSAvKiBCcnRCZWdpbkNlbGxYRnMgKi8pIHtcblx0XHRcdFx0XHRzdHlsZXMuQ2VsbFhmLnB1c2godmFsKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDMwOiAvKiBCcnRTdHlsZSAqL1xuXHRcdFx0Y2FzZSAweDAxRkI6IC8qIEJydERYRiAqL1xuXHRcdFx0Y2FzZSAweDAyM0M6IC8qIEJydE1SVUNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDFEQjogLyogQnJ0SW5kZXhlZENvbG9yICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDQ5MzogLyogQnJ0RFhGMTQgKi9cblx0XHRcdGNhc2UgMHgwODM2OiAvKiBCcnREWEYxNSAqL1xuXHRcdFx0Y2FzZSAweDA0NkE6IC8qIEJydFNsaWNlclN0eWxlRWxlbWVudCAqL1xuXHRcdFx0Y2FzZSAweDAyMDA6IC8qIEJydFRhYmxlU3R5bGVFbGVtZW50ICovXG5cdFx0XHRjYXNlIDB4MDgyRjogLyogQnJ0VGltZWxpbmVTdHlsZUVsZW1lbnQgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiBCcnRVaWQgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiBCcnRGUlRCZWdpbiAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogQnJ0RlJURW5kICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogQnJ0QUNCZWdpbiAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qIEJydEFDRW5kICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQgPiAwKSBzdGF0ZS5wdXNoKFJUKTtcblx0XHRcdFx0ZWxzZSBpZihSLlQgPCAwKSBzdGF0ZS5wb3AoKTtcblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCAob3B0cy5XVEYgJiYgc3RhdGVbc3RhdGUubGVuZ3RoLTFdICE9IDB4MDAyNSAvKiBCcnRBQ0JlZ2luICovKSkgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfRk1UU19iaW4oYmEsIE5GLyo6P1NTRlRhYmxlKi8pIHtcblx0aWYoIU5GKSByZXR1cm47XG5cdHZhciBjbnQgPSAwO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Lyo6OiBpZighTkYpIHJldHVybjsgKi9cblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgKytjbnQ7XG5cdH0pO1xuXG5cdGlmKGNudCA9PSAwKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY3IC8qIEJydEJlZ2luRm10cyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWy8qNjMqLzUwLC8qNjZdLFsxNjQsKi8zOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcblx0XHQvKjo6IGlmKCFORikgcmV0dXJuOyAqL1xuXHRcdGZvcih2YXIgaSA9IHJbMF07IGkgPD0gclsxXTsgKytpKSBpZihORltpXSAhPSBudWxsKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAyQyAvKiBCcnRGbXQgKi8sIHdyaXRlX0JydEZtdChpLCBORltpXSkpO1xuXHR9KTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjggLyogQnJ0RW5kRm10cyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZPTlRTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblxuXHRpZihjbnQgPT0gMCkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2MyAvKiBCcnRCZWdpbkZvbnRzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkIgLyogQnJ0Rm9udCAqLywgd3JpdGVfQnJ0Rm9udCh7XG5cdFx0c3o6MTIsXG5cdFx0Y29sb3I6IHt0aGVtZToxfSxcblx0XHRuYW1lOiBcIkNhbGlicmlcIixcblx0XHRmYW1pbHk6IDIsXG5cdFx0c2NoZW1lOiBcIm1pbm9yXCJcblx0fSkpO1xuXHQvKiAxKjY1NDkxQnJ0Rm9udCBbQUNGT05UU10gKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjQgLyogQnJ0RW5kRm9udHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GSUxMU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDI7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNUIgLyogQnJ0QmVnaW5GaWxscyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJEIC8qIEJydEZpbGwgKi8sIHdyaXRlX0JydEZpbGwoe3BhdHRlcm5UeXBlOlwibm9uZVwifSkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRCAvKiBCcnRGaWxsICovLCB3cml0ZV9CcnRGaWxsKHtwYXR0ZXJuVHlwZTpcImdyYXkxMjVcIn0pKTtcblx0LyogMSo2NTQzMUJydEZpbGwgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNUMgLyogQnJ0RW5kRmlsbHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CT1JERVJTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblxuXHRpZihjbnQgPT0gMCkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NSAvKiBCcnRCZWdpbkJvcmRlcnMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRSAvKiBCcnRCb3JkZXIgKi8sIHdyaXRlX0JydEJvcmRlcih7fSkpO1xuXHQvKiAxKjY1NDMwQnJ0Qm9yZGVyICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY2IC8qIEJydEVuZEJvcmRlcnMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DRUxMU1RZTEVYRlNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAxO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3MiAvKiBCcnRCZWdpbkNlbGxTdHlsZVhGcyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJGIC8qIEJydFhGICovLCB3cml0ZV9CcnRYRih7XG5cdFx0bnVtRm10SWQ6IDAsXG5cdFx0Zm9udElkOiAgIDAsXG5cdFx0ZmlsbElkOiAgIDAsXG5cdFx0Ym9yZGVySWQ6IDBcblx0fSwgMHhGRkZGKSk7XG5cdC8qIDEqNjU0MzAoQnJ0WEYgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzMgLyogQnJ0RW5kQ2VsbFN0eWxlWEZzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFhGU19iaW4oYmEsIGRhdGEpIHtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjkgLyogQnJ0QmVnaW5DZWxsWEZzICovLCB3cml0ZV9VSW50MzJMRShkYXRhLmxlbmd0aCkpO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oYykgeyB3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRiAvKiBCcnRYRiAqLywgd3JpdGVfQnJ0WEYoYywwKSk7IH0pO1xuXHQvKiAxKjY1NDMwKEJydFhGICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjZBIC8qIEJydEVuZENlbGxYRnMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9TVFlMRVNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAxO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjZCIC8qIEJydEJlZ2luU3R5bGVzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMzAgLyogQnJ0U3R5bGUgKi8sIHdyaXRlX0JydFN0eWxlKHtcblx0XHR4ZklkOjAsXG5cdFx0YnVpbHRpbklkOjAsXG5cdFx0bmFtZTpcIk5vcm1hbFwiXG5cdH0pKTtcblx0LyogMSo2NTQzMChCcnRTdHlsZSAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2QyAvKiBCcnRFbmRTdHlsZXMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9EWEZTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMDtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFGOSAvKiBCcnRCZWdpbkRYRnMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHQvKiAqMjE0NzQ4MzY0NyhCcnREWEYgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRkEgLyogQnJ0RW5kRFhGcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1RBQkxFU1RZTEVTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMDtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFGQyAvKiBCcnRCZWdpblRhYmxlU3R5bGVzICovLCB3cml0ZV9CcnRCZWdpblRhYmxlU3R5bGVzKGNudCwgXCJUYWJsZVN0eWxlTWVkaXVtOVwiLCBcIlBpdm90U3R5bGVNZWRpdW00XCIpKTtcblx0LyogKlRBQkxFU1RZTEUgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRkQgLyogQnJ0RW5kVGFibGVTdHlsZXMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DT0xPUlBBTEVUVEVfYmluKC8qOjpiYSwgZGF0YSovKSB7XG5cdHJldHVybjtcblx0LyogQnJ0QmVnaW5Db2xvclBhbGV0dGUgW0lOREVYRURDT0xPUlNdIFtNUlVDT0xPUlNdIEJydEVuZENvbG9yUGFsZXR0ZSAqL1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuNTAgU3R5bGVzICovXG5mdW5jdGlvbiB3cml0ZV9zdHlfYmluKHdiLCBvcHRzKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDExNiAvKiBCcnRCZWdpblN0eWxlU2hlZXQgKi8pO1xuXHR3cml0ZV9GTVRTX2JpbihiYSwgd2IuU1NGKTtcblx0d3JpdGVfRk9OVFNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0ZJTExTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9CT1JERVJTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9DRUxMU1RZTEVYRlNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0NFTExYRlNfYmluKGJhLCBvcHRzLmNlbGxYZnMpO1xuXHR3cml0ZV9TVFlMRVNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0RYRlNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX1RBQkxFU1RZTEVTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9DT0xPUlBBTEVUVEVfYmluKGJhLCB3Yik7XG5cdC8qIEZSVFNUWUxFU0hFRVQqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDExNyAvKiBCcnRFbmRTdHlsZVNoZWV0ICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuLyogRXZlbiB0aG91Z2ggdGhlbWUgbGF5b3V0IGlzIGRrMSBsdDEgZGsyIGx0MiwgdHJ1ZSBvcmRlciBpcyBsdDEgZGsxIGx0MiBkazIgKi9cbnZhciBYTFNYVGhlbWVDbHJTY2hlbWUgPSBbXG5cdCc8L2E6bHQxPicsICc8L2E6ZGsxPicsICc8L2E6bHQyPicsICc8L2E6ZGsyPicsXG5cdCc8L2E6YWNjZW50MT4nLCAnPC9hOmFjY2VudDI+JywgJzwvYTphY2NlbnQzPicsXG5cdCc8L2E6YWNjZW50ND4nLCAnPC9hOmFjY2VudDU+JywgJzwvYTphY2NlbnQ2PicsXG5cdCc8L2E6aGxpbms+JywgJzwvYTpmb2xIbGluaz4nXG5dO1xuLyogMjAuMS42LjIgY2xyU2NoZW1lIENUX0NvbG9yU2NoZW1lICovXG5mdW5jdGlvbiBwYXJzZV9jbHJTY2hlbWUodCwgdGhlbWVzLCBvcHRzKSB7XG5cdHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSA9IFtdO1xuXHR2YXIgY29sb3IgPSB7fTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXSkge1xuXHRcdFx0LyogMjAuMS42LjIgY2xyU2NoZW1lIChDb2xvciBTY2hlbWUpIENUX0NvbG9yU2NoZW1lICovXG5cdFx0XHRjYXNlICc8YTpjbHJTY2hlbWUnOiBjYXNlICc8L2E6Y2xyU2NoZW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAyMC4xLjIuMy4zMiBzcmdiQ2xyIENUX1NSZ2JDb2xvciAqL1xuXHRcdFx0Y2FzZSAnPGE6c3JnYkNscic6XG5cdFx0XHRcdGNvbG9yLnJnYiA9IHkudmFsOyBicmVhaztcblxuXHRcdFx0LyogMjAuMS4yLjMuMzMgc3lzQ2xyIENUX1N5c3RlbUNvbG9yICovXG5cdFx0XHRjYXNlICc8YTpzeXNDbHInOlxuXHRcdFx0XHRjb2xvci5yZ2IgPSB5Lmxhc3RDbHI7IGJyZWFrO1xuXG5cdFx0XHQvKiAyMC4xLjQuMS4xIGFjY2VudDEgKEFjY2VudCAxKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMiBhY2NlbnQyIChBY2NlbnQgMikgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjMgYWNjZW50MyAoQWNjZW50IDMpICovXG5cdFx0XHQvKiAyMC4xLjQuMS40IGFjY2VudDQgKEFjY2VudCA0KSAqL1xuXHRcdFx0LyogMjAuMS40LjEuNSBhY2NlbnQ1IChBY2NlbnQgNSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjYgYWNjZW50NiAoQWNjZW50IDYpICovXG5cdFx0XHQvKiAyMC4xLjQuMS45IGRrMSAoRGFyayAxKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMTAgZGsyIChEYXJrIDIpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4xNSBmb2xIbGluayAoRm9sbG93ZWQgSHlwZXJsaW5rKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMTkgaGxpbmsgKEh5cGVybGluaykgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjIyIGx0MSAoTGlnaHQgMSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjIzIGx0MiAoTGlnaHQgMikgKi9cblx0XHRcdGNhc2UgJzxhOmRrMT4nOiBjYXNlICc8L2E6ZGsxPic6XG5cdFx0XHRjYXNlICc8YTpsdDE+JzogY2FzZSAnPC9hOmx0MT4nOlxuXHRcdFx0Y2FzZSAnPGE6ZGsyPic6IGNhc2UgJzwvYTpkazI+Jzpcblx0XHRcdGNhc2UgJzxhOmx0Mj4nOiBjYXNlICc8L2E6bHQyPic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQxPic6IGNhc2UgJzwvYTphY2NlbnQxPic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQyPic6IGNhc2UgJzwvYTphY2NlbnQyPic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQzPic6IGNhc2UgJzwvYTphY2NlbnQzPic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQ0Pic6IGNhc2UgJzwvYTphY2NlbnQ0Pic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQ1Pic6IGNhc2UgJzwvYTphY2NlbnQ1Pic6XG5cdFx0XHRjYXNlICc8YTphY2NlbnQ2Pic6IGNhc2UgJzwvYTphY2NlbnQ2Pic6XG5cdFx0XHRjYXNlICc8YTpobGluaz4nOiBjYXNlICc8L2E6aGxpbms+Jzpcblx0XHRcdGNhc2UgJzxhOmZvbEhsaW5rPic6IGNhc2UgJzwvYTpmb2xIbGluaz4nOlxuXHRcdFx0XHRpZiAoeVswXS5jaGFyQXQoMSkgPT09ICcvJykge1xuXHRcdFx0XHRcdHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtYTFNYVGhlbWVDbHJTY2hlbWUuaW5kZXhPZih5WzBdKV0gPSBjb2xvcjtcblx0XHRcdFx0XHRjb2xvciA9IHt9O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbG9yLm5hbWUgPSB5WzBdLnNsaWNlKDMsIHlbMF0ubGVuZ3RoIC0gMSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBjbHJTY2hlbWUnKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKiAyMC4xLjQuMS4xOCBmb250U2NoZW1lIENUX0ZvbnRTY2hlbWUgKi9cbmZ1bmN0aW9uIHBhcnNlX2ZvbnRTY2hlbWUoLyo6OnQsIHRoZW1lcywgb3B0cyovKSB7IH1cblxuLyogMjAuMS40LjEuMTUgZm10U2NoZW1lIENUX1N0eWxlTWF0cml4ICovXG5mdW5jdGlvbiBwYXJzZV9mbXRTY2hlbWUoLyo6OnQsIHRoZW1lcywgb3B0cyovKSB7IH1cblxudmFyIGNscnNyZWdleCA9IC88YTpjbHJTY2hlbWUoW14+XSopPltcXHNcXFNdKjxcXC9hOmNsclNjaGVtZT4vO1xudmFyIGZudHNyZWdleCA9IC88YTpmb250U2NoZW1lKFtePl0qKT5bXFxzXFxTXSo8XFwvYTpmb250U2NoZW1lPi87XG52YXIgZm10c3JlZ2V4ID0gLzxhOmZtdFNjaGVtZShbXj5dKik+W1xcc1xcU10qPFxcL2E6Zm10U2NoZW1lPi87XG5cbi8qIDIwLjEuNi4xMCB0aGVtZUVsZW1lbnRzIENUX0Jhc2VTdHlsZXMgKi9cbmZ1bmN0aW9uIHBhcnNlX3RoZW1lRWxlbWVudHMoZGF0YSwgdGhlbWVzLCBvcHRzKSB7XG5cdHRoZW1lcy50aGVtZUVsZW1lbnRzID0ge307XG5cblx0dmFyIHQ7XG5cblx0W1xuXHRcdC8qIGNsclNjaGVtZSBDVF9Db2xvclNjaGVtZSAqL1xuXHRcdFsnY2xyU2NoZW1lJywgY2xyc3JlZ2V4LCBwYXJzZV9jbHJTY2hlbWVdLFxuXHRcdC8qIGZvbnRTY2hlbWUgQ1RfRm9udFNjaGVtZSAqL1xuXHRcdFsnZm9udFNjaGVtZScsIGZudHNyZWdleCwgcGFyc2VfZm9udFNjaGVtZV0sXG5cdFx0LyogZm10U2NoZW1lIENUX1N0eWxlTWF0cml4ICovXG5cdFx0WydmbXRTY2hlbWUnLCBmbXRzcmVnZXgsIHBhcnNlX2ZtdFNjaGVtZV1cblx0XS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcblx0XHRpZighKHQ9ZGF0YS5tYXRjaChtWzFdKSkpIHRocm93IG5ldyBFcnJvcihtWzBdICsgJyBub3QgZm91bmQgaW4gdGhlbWVFbGVtZW50cycpO1xuXHRcdG1bMl0odCwgdGhlbWVzLCBvcHRzKTtcblx0fSk7XG59XG5cbnZhciB0aGVtZWx0cmVnZXggPSAvPGE6dGhlbWVFbGVtZW50cyhbXj5dKik+W1xcc1xcU10qPFxcL2E6dGhlbWVFbGVtZW50cz4vO1xuXG4vKiAxNC4yLjcgVGhlbWUgUGFydCAqL1xuZnVuY3Rpb24gcGFyc2VfdGhlbWVfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykge1xuXHQvKiAyMC4xLjYuOSB0aGVtZSBDVF9PZmZpY2VTdHlsZVNoZWV0ICovXG5cdGlmKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSBkYXRhID0gd3JpdGVfdGhlbWUoKTtcblxuXHR2YXIgdDtcblx0dmFyIHRoZW1lcyA9IHt9O1xuXG5cdC8qIHRoZW1lRWxlbWVudHMgQ1RfQmFzZVN0eWxlcyAqL1xuXHRpZighKHQ9ZGF0YS5tYXRjaCh0aGVtZWx0cmVnZXgpKSkgdGhyb3cgbmV3IEVycm9yKCd0aGVtZUVsZW1lbnRzIG5vdCBmb3VuZCBpbiB0aGVtZScpO1xuXHRwYXJzZV90aGVtZUVsZW1lbnRzKHRbMF0sIHRoZW1lcywgb3B0cyk7XG5cdHRoZW1lcy5yYXcgPSBkYXRhO1xuXHRyZXR1cm4gdGhlbWVzO1xufVxuXG5mdW5jdGlvbiB3cml0ZV90aGVtZShUaGVtZXMsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZihvcHRzICYmIG9wdHMudGhlbWVYTFNYKSByZXR1cm4gb3B0cy50aGVtZVhMU1g7XG5cdGlmKFRoZW1lcyAmJiB0eXBlb2YgVGhlbWVzLnJhdyA9PSBcInN0cmluZ1wiKSByZXR1cm4gVGhlbWVzLnJhdztcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG9bby5sZW5ndGhdID0gJzxhOnRoZW1lIHhtbG5zOmE9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpblwiIG5hbWU9XCJPZmZpY2UgVGhlbWVcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAnPGE6dGhlbWVFbGVtZW50cz4nO1xuXG5cdG9bby5sZW5ndGhdID0gICAnPGE6Y2xyU2NoZW1lIG5hbWU9XCJPZmZpY2VcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpkazE+PGE6c3lzQ2xyIHZhbD1cIndpbmRvd1RleHRcIiBsYXN0Q2xyPVwiMDAwMDAwXCIvPjwvYTpkazE+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6bHQxPjxhOnN5c0NsciB2YWw9XCJ3aW5kb3dcIiBsYXN0Q2xyPVwiRkZGRkZGXCIvPjwvYTpsdDE+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZGsyPjxhOnNyZ2JDbHIgdmFsPVwiMUY0OTdEXCIvPjwvYTpkazI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6bHQyPjxhOnNyZ2JDbHIgdmFsPVwiRUVFQ0UxXCIvPjwvYTpsdDI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD1cIjRGODFCRFwiLz48L2E6YWNjZW50MT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQyPjxhOnNyZ2JDbHIgdmFsPVwiQzA1MDREXCIvPjwvYTphY2NlbnQyPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9XCI5QkJCNTlcIi8+PC9hOmFjY2VudDM+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD1cIjgwNjRBMlwiLz48L2E6YWNjZW50ND4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQ1PjxhOnNyZ2JDbHIgdmFsPVwiNEJBQ0M2XCIvPjwvYTphY2NlbnQ1Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9XCJGNzk2NDZcIi8+PC9hOmFjY2VudDY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6aGxpbms+PGE6c3JnYkNsciB2YWw9XCIwMDAwRkZcIi8+PC9hOmhsaW5rPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmZvbEhsaW5rPjxhOnNyZ2JDbHIgdmFsPVwiODAwMDgwXCIvPjwvYTpmb2xIbGluaz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpjbHJTY2hlbWU+JztcblxuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOmZvbnRTY2hlbWUgbmFtZT1cIk9mZmljZVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOm1ham9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bGF0aW4gdHlwZWZhY2U9XCJDYW1icmlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplYSB0eXBlZmFjZT1cIlwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Y3MgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSnBhblwiIHR5cGVmYWNlPVwi77yt77yzIO+8sOOCtOOCt+ODg+OCr1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5nXCIgdHlwZWZhY2U9XCLrp5HsnYAg6rOg65SVXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbnNcIiB0eXBlZmFjZT1cIuWui+S9k1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQXJhYlwiIHR5cGVmYWNlPVwiVGltZXMgTmV3IFJvbWFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhlYnJcIiB0eXBlZmFjZT1cIlRpbWVzIE5ldyBSb21hblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaGFpXCIgdHlwZWZhY2U9XCJUYWhvbWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiRXRoaVwiIHR5cGVmYWNlPVwiTnlhbGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQmVuZ1wiIHR5cGVmYWNlPVwiVnJpbmRhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkd1anJcIiB0eXBlZmFjZT1cIlNocnV0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJLaG1yXCIgdHlwZWZhY2U9XCJNb29sQm9yYW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS25kYVwiIHR5cGVmYWNlPVwiVHVuZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2Fuc1wiIHR5cGVmYWNlPVwiRXVwaGVtaWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2hlclwiIHR5cGVmYWNlPVwiUGxhbnRhZ2VuZXQgQ2hlcm9rZWVcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRpYnRcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBIaW1hbGF5YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaGFhXCIgdHlwZWZhY2U9XCJNViBCb2xpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUZWx1XCIgdHlwZWZhY2U9XCJHYXV0YW1pXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRhbWxcIiB0eXBlZmFjZT1cIkxhdGhhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk9yeWFcIiB0eXBlZmFjZT1cIkthbGluZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTWx5bVwiIHR5cGVmYWNlPVwiS2FydGlrYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiU2luaFwiIHR5cGVmYWNlPVwiSXNrb29sYSBQb3RhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1vbmdcIiB0eXBlZmFjZT1cIk1vbmdvbGlhbiBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVWlnaFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFVpZ2h1clwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHZW9yXCIgdHlwZWZhY2U9XCJTeWxmYWVuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTptYWpvckZvbnQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6bWlub3JGb250Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsYXRpbiB0eXBlZmFjZT1cIkNhbGlicmlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVhIHR5cGVmYWNlPVwiXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpjcyB0eXBlZmFjZT1cIlwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJKcGFuXCIgdHlwZWZhY2U9XCLvvK3vvLMg77yw44K044K344OD44KvXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFuc1wiIHR5cGVmYWNlPVwi5a6L5L2TXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbnRcIiB0eXBlZmFjZT1cIuaWsOe0sOaYjumrlFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJBcmlhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIZWJyXCIgdHlwZWZhY2U9XCJBcmlhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaGFpXCIgdHlwZWZhY2U9XCJUYWhvbWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiRXRoaVwiIHR5cGVmYWNlPVwiTnlhbGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQmVuZ1wiIHR5cGVmYWNlPVwiVnJpbmRhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkd1anJcIiB0eXBlZmFjZT1cIlNocnV0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJLaG1yXCIgdHlwZWZhY2U9XCJEYXVuUGVuaFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJLbmRhXCIgdHlwZWZhY2U9XCJUdW5nYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdXJ1XCIgdHlwZWZhY2U9XCJSYWF2aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJDaGVyXCIgdHlwZWZhY2U9XCJQbGFudGFnZW5ldCBDaGVyb2tlZVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJZaWlpXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgWWkgQmFpdGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRoYWFcIiB0eXBlZmFjZT1cIk1WIEJvbGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiRGV2YVwiIHR5cGVmYWNlPVwiTWFuZ2FsXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGFtbFwiIHR5cGVmYWNlPVwiTGF0aGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiU3lyY1wiIHR5cGVmYWNlPVwiRXN0cmFuZ2VsbyBFZGVzc2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJNbHltXCIgdHlwZWZhY2U9XCJLYXJ0aWthXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkxhb29cIiB0eXBlZmFjZT1cIkRva0NoYW1wYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTW9uZ1wiIHR5cGVmYWNlPVwiTW9uZ29saWFuIEJhaXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlZpZXRcIiB0eXBlZmFjZT1cIkFyaWFsXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlVpZ2hcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBVaWdodXJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR2VvclwiIHR5cGVmYWNlPVwiU3lsZmFlblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6bWlub3JGb250Pic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOmZvbnRTY2hlbWU+JztcblxuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOmZtdFNjaGVtZSBuYW1lPVwiT2ZmaWNlXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZmlsbFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjUwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzMDAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMzUwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjM3MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzMDAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMTAwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCIxNTAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzUwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6bGluIGFuZz1cIjE2MjAwMDAwXCIgc2NhbGVkPVwiMVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCIxMDAwMDBcIi8+PGE6c2hhZGUgdmFsPVwiMTAwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMzAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMTAwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI1MDAwMFwiLz48YTpzaGFkZSB2YWw9XCIxMDAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmxpbiBhbmc9XCIxNjIwMDAwMFwiIHNjYWxlZD1cIjBcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTpncmFkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6ZmlsbFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmxuU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxuIHc9XCI5NTI1XCIgY2FwPVwiZmxhdFwiIGNtcGQ9XCJzbmdcIiBhbGduPVwiY3RyXCI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNoYWRlIHZhbD1cIjk1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMDUwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD1cInNvbGlkXCIvPjwvYTpsbj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bG4gdz1cIjI1NDAwXCIgY2FwPVwiZmxhdFwiIGNtcGQ9XCJzbmdcIiBhbGduPVwiY3RyXCI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD1cInNvbGlkXCIvPjwvYTpsbj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bG4gdz1cIjM4MTAwXCIgY2FwPVwiZmxhdFwiIGNtcGQ9XCJzbmdcIiBhbGduPVwiY3RyXCI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD1cInNvbGlkXCIvPjwvYTpsbj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6bG5TdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTplZmZlY3RTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI0MDAwMFwiIGRpc3Q9XCIyMDAwMFwiIGRpcj1cIjU0MDAwMDBcIiByb3RXaXRoU2hhcGU9XCIwXCI+PGE6c3JnYkNsciB2YWw9XCIwMDAwMDBcIj48YTphbHBoYSB2YWw9XCIzODAwMFwiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpvdXRlclNoZHcgYmx1clJhZD1cIjQwMDAwXCIgZGlzdD1cIjIzMDAwXCIgZGlyPVwiNTQwMDAwMFwiIHJvdFdpdGhTaGFwZT1cIjBcIj48YTpzcmdiQ2xyIHZhbD1cIjAwMDAwMFwiPjxhOmFscGhhIHZhbD1cIjM1MDAwXCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOm91dGVyU2hkdyBibHVyUmFkPVwiNDAwMDBcIiBkaXN0PVwiMjMwMDBcIiBkaXI9XCI1NDAwMDAwXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiMzUwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpzY2VuZTNkPjxhOmNhbWVyYSBwcnN0PVwib3J0aG9ncmFwaGljRnJvbnRcIj48YTpyb3QgbGF0PVwiMFwiIGxvbj1cIjBcIiByZXY9XCIwXCIvPjwvYTpjYW1lcmE+PGE6bGlnaHRSaWcgcmlnPVwidGhyZWVQdFwiIGRpcj1cInRcIj48YTpyb3QgbGF0PVwiMFwiIGxvbj1cIjBcIiByZXY9XCIxMjAwMDAwXCIvPjwvYTpsaWdodFJpZz48L2E6c2NlbmUzZD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOnNwM2Q+PGE6YmV2ZWxUIHc9XCI2MzUwMFwiIGg9XCIyNTQwMFwiLz48L2E6c3AzZD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTplZmZlY3RTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpiZ0ZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI0MDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzUwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjQwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI0NTAwMFwiLz48YTpzaGFkZSB2YWw9XCI5OTAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzUwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNoYWRlIHZhbD1cIjIwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIyNTUwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpwYXRoIHBhdGg9XCJjaXJjbGVcIj48YTpmaWxsVG9SZWN0IGw9XCI1MDAwMFwiIHQ9XCItODAwMDBcIiByPVwiNTAwMDBcIiBiPVwiMTgwMDAwXCIvPjwvYTpwYXRoPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6Z3JhZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjgwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzMDAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMTAwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6c2hhZGUgdmFsPVwiMzAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjIwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOnBhdGggcGF0aD1cImNpcmNsZVwiPjxhOmZpbGxUb1JlY3QgbD1cIjUwMDAwXCIgdD1cIjUwMDAwXCIgcj1cIjUwMDAwXCIgYj1cIjUwMDAwXCIvPjwvYTpwYXRoPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6Z3JhZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmJnRmlsbFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOmZtdFNjaGVtZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAnPC9hOnRoZW1lRWxlbWVudHM+JztcblxuXHRvW28ubGVuZ3RoXSA9ICAnPGE6b2JqZWN0RGVmYXVsdHM+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8YTpzcERlZj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9XCIxXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PVwiM1wiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9XCIyXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD1cIm1pbm9yXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImx0MVwiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6c3BEZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8YTpsbkRlZj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9XCIyXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9XCIxXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD1cIm1pbm9yXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInR4MVwiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6bG5EZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzwvYTpvYmplY3REZWZhdWx0cz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAnPGE6ZXh0cmFDbHJTY2hlbWVMc3QvPic7XG5cdG9bby5sZW5ndGhdID0gJzwvYTp0aGVtZT4nO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU10gMi40LjMyNiBUT0RPOiBwYXlsb2FkIGlzIGEgemlwIGZpbGUgKi9cbmZ1bmN0aW9uIHBhcnNlX1RoZW1lKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgZHdUaGVtZVZlcnNpb24gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKGR3VGhlbWVWZXJzaW9uID09PSAxMjQyMjYpIHJldHVybjtcblx0aWYoIW9wdHMuY2VsbFN0eWxlcykgeyBibG9iLmwgPSBlbmQ7IHJldHVybjsgfVxuXHR2YXIgZGF0YSA9IGJsb2Iuc2xpY2UoYmxvYi5sKTtcblx0YmxvYi5sID0gZW5kO1xuXHR2YXIgemlwOyB0cnkgeyB6aXAgPSB6aXBfcmVhZChkYXRhLCB7dHlwZTogXCJhcnJheVwifSk7IH0gY2F0Y2goZSkgeyByZXR1cm47IH1cblx0dmFyIHRoZW1lWE1MID0gZ2V0emlwc3RyKHppcCwgXCJ0aGVtZS90aGVtZS90aGVtZTEueG1sXCIsIHRydWUpO1xuXHRpZighdGhlbWVYTUwpIHJldHVybjtcblx0cmV0dXJuIHBhcnNlX3RoZW1lX3htbCh0aGVtZVhNTCwgb3B0cyk7XG59XG5cbi8qIDIuNS40OSAqL1xuZnVuY3Rpb24gcGFyc2VfQ29sb3JUaGVtZShibG9iLyo6OiwgbGVuZ3RoKi8pIHsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdCg0KTsgfVxuXG4vKiAyLjUuMTU1ICovXG5mdW5jdGlvbiBwYXJzZV9GdWxsQ29sb3JFeHQoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBvID0ge307XG5cdG8ueGNsclR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8ublRpbnRTaGFkZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0c3dpdGNoKG8ueGNsclR5cGUpIHtcblx0XHRjYXNlIDA6IGJsb2IubCArPSA0OyBicmVhaztcblx0XHRjYXNlIDE6IG8ueGNsclZhbHVlID0gcGFyc2VfSWN2WEYoYmxvYiwgNCk7IGJyZWFrO1xuXHRcdGNhc2UgMjogby54Y2xyVmFsdWUgPSBwYXJzZV9Mb25nUkdCQShibG9iLCA0KTsgYnJlYWs7XG5cdFx0Y2FzZSAzOiBvLnhjbHJWYWx1ZSA9IHBhcnNlX0NvbG9yVGhlbWUoYmxvYiwgNCk7IGJyZWFrO1xuXHRcdGNhc2UgNDogYmxvYi5sICs9IDQ7IGJyZWFrO1xuXHR9XG5cdGJsb2IubCArPSA4O1xuXHRyZXR1cm4gbztcbn1cblxuLyogMi41LjE2NCBUT0RPOiByZWFkIDcgYml0cyovXG5mdW5jdGlvbiBwYXJzZV9JY3ZYRihibG9iLCBsZW5ndGgpIHtcblx0cmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xufVxuXG4vKiAyLjUuMjgwICovXG5mdW5jdGlvbiBwYXJzZV9YRkV4dEdyYWRpZW50KGJsb2IsIGxlbmd0aCkge1xuXHRyZXR1cm4gcGFyc2Vub29wKGJsb2IsIGxlbmd0aCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xMDggKi9cbmZ1bmN0aW9uIHBhcnNlX0V4dFByb3AoYmxvYi8qOjosIGxlbmd0aCovKS8qOkFycmF5PGFueT4qLyB7XG5cdHZhciBleHRUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY2IgPSBibG9iLnJlYWRfc2hpZnQoMikgLSA0O1xuXHR2YXIgbyA9IFtleHRUeXBlXTtcblx0c3dpdGNoKGV4dFR5cGUpIHtcblx0XHRjYXNlIDB4MDQ6IGNhc2UgMHgwNTogY2FzZSAweDA3OiBjYXNlIDB4MDg6XG5cdFx0Y2FzZSAweDA5OiBjYXNlIDB4MEE6IGNhc2UgMHgwQjogY2FzZSAweDBEOlxuXHRcdFx0b1sxXSA9IHBhcnNlX0Z1bGxDb2xvckV4dChibG9iLCBjYik7IGJyZWFrO1xuXHRcdGNhc2UgMHgwNjogb1sxXSA9IHBhcnNlX1hGRXh0R3JhZGllbnQoYmxvYiwgY2IpOyBicmVhaztcblx0XHRjYXNlIDB4MEU6IGNhc2UgMHgwRjogb1sxXSA9IGJsb2IucmVhZF9zaGlmdChjYiA9PT0gMSA/IDEgOiAyKTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIEV4dFByb3AgdHlwZTogXCIgKyBleHRUeXBlICsgXCIgXCIgKyBjYik7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNC4zNTUgKi9cbmZ1bmN0aW9uIHBhcnNlX1hGRXh0KGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGl4ZmUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyO1xuXHR2YXIgY2V4dHMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBleHQvKjpBT0EqLyA9IFtdO1xuXHR3aGlsZShjZXh0cy0tID4gMCkgZXh0LnB1c2gocGFyc2VfRXh0UHJvcChibG9iLCBlbmQtYmxvYi5sKSk7XG5cdHJldHVybiB7aXhmZTppeGZlLCBleHQ6ZXh0fTtcbn1cblxuLyogeGYgaXMgYW4gWEYsIHNlZSBwYXJzZV9YRkV4dCBmb3IgeGZleHQgKi9cbmZ1bmN0aW9uIHVwZGF0ZV94ZmV4dCh4ZiwgeGZleHQpIHtcblx0eGZleHQuZm9yRWFjaChmdW5jdGlvbih4ZmUpIHtcblx0XHRzd2l0Y2goeGZlWzBdKSB7IC8qIDIuNS4xMDggZXh0UHJvcERhdGEgKi9cblx0XHRcdGNhc2UgMHgwNDogYnJlYWs7IC8qIGZvcmVncm91bmQgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwNTogYnJlYWs7IC8qIGJhY2tncm91bmQgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwNjogYnJlYWs7IC8qIGdyYWRpZW50IGZpbGwgKi9cblx0XHRcdGNhc2UgMHgwNzogYnJlYWs7IC8qIHRvcCBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDA4OiBicmVhazsgLyogYm90dG9tIGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDk6IGJyZWFrOyAvKiBsZWZ0IGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MGE6IGJyZWFrOyAvKiByaWdodCBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDBiOiBicmVhazsgLyogZGlhZ29uYWwgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwZDogLyogdGV4dCBjb2xvciAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwZTogYnJlYWs7IC8qIGZvbnQgc2NoZW1lICovXG5cdFx0XHRjYXNlIDB4MGY6IGJyZWFrOyAvKiBpbmRlbnRhdGlvbiBsZXZlbCAqL1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JydE1kdGluZm8oZGF0YSwgbGVuZ3RoKSB7XG4gIHJldHVybiB7XG4gICAgZmxhZ3M6IGRhdGEucmVhZF9zaGlmdCg0KSxcbiAgICB2ZXJzaW9uOiBkYXRhLnJlYWRfc2hpZnQoNCksXG4gICAgbmFtZTogcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEsIGxlbmd0aCAtIDgpXG4gIH07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRNZHRpbmZvKGRhdGEpIHtcbiAgdmFyIG8gPSBuZXdfYnVmKDEyICsgMiAqIGRhdGEubmFtZS5sZW5ndGgpO1xuICBvLndyaXRlX3NoaWZ0KDQsIGRhdGEuZmxhZ3MpO1xuICBvLndyaXRlX3NoaWZ0KDQsIGRhdGEudmVyc2lvbik7XG4gIHdyaXRlX1hMV2lkZVN0cmluZyhkYXRhLm5hbWUsIG8pO1xuICByZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0TWRiKGRhdGEpIHtcbiAgdmFyIG91dCA9IFtdO1xuICB2YXIgY250ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuICB3aGlsZSAoY250LS0gPiAwKVxuICAgIG91dC5wdXNoKFtkYXRhLnJlYWRfc2hpZnQoNCksIGRhdGEucmVhZF9zaGlmdCg0KV0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0TWRiKG1kYikge1xuICB2YXIgbyA9IG5ld19idWYoNCArIDggKiBtZGIubGVuZ3RoKTtcbiAgby53cml0ZV9zaGlmdCg0LCBtZGIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZGIubGVuZ3RoOyArK2kpIHtcbiAgICBvLndyaXRlX3NoaWZ0KDQsIG1kYltpXVswXSk7XG4gICAgby53cml0ZV9zaGlmdCg0LCBtZGJbaV1bMV0pO1xuICB9XG4gIHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5Fc2ZtZChjbnQsIG5hbWUpIHtcbiAgdmFyIG8gPSBuZXdfYnVmKDggKyAyICogbmFtZS5sZW5ndGgpO1xuICBvLndyaXRlX3NoaWZ0KDQsIGNudCk7XG4gIHdyaXRlX1hMV2lkZVN0cmluZyhuYW1lLCBvKTtcbiAgcmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luRXNtZGIoZGF0YSkge1xuICBkYXRhLmwgKz0gNDtcbiAgcmV0dXJuIGRhdGEucmVhZF9zaGlmdCg0KSAhPSAwO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5Fc21kYihjbnQsIGNtKSB7XG4gIHZhciBvID0gbmV3X2J1Zig4KTtcbiAgby53cml0ZV9zaGlmdCg0LCBjbnQpO1xuICBvLndyaXRlX3NoaWZ0KDQsIGNtID8gMSA6IDApO1xuICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX3hsbWV0YV9iaW4oZGF0YSwgbmFtZSwgX29wdHMpIHtcbiAgdmFyIG91dCA9IHsgVHlwZXM6IFtdLCBDZWxsOiBbXSwgVmFsdWU6IFtdIH07XG4gIHZhciBvcHRzID0gX29wdHMgfHwge307XG4gIHZhciBzdGF0ZSA9IFtdO1xuICB2YXIgcGFzcyA9IGZhbHNlO1xuICB2YXIgbWV0YXR5cGUgPSAyO1xuICByZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24odmFsLCBSLCBSVCkge1xuICAgIHN3aXRjaCAoUlQpIHtcbiAgICAgIGNhc2UgMzM1OlxuICAgICAgICBvdXQuVHlwZXMucHVzaCh7IG5hbWU6IHZhbC5uYW1lIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTE6XG4gICAgICAgIHZhbC5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcbiAgICAgICAgICBpZiAobWV0YXR5cGUgPT0gMSlcbiAgICAgICAgICAgIG91dC5DZWxsLnB1c2goeyB0eXBlOiBvdXQuVHlwZXNbclswXSAtIDFdLm5hbWUsIGluZGV4OiByWzFdIH0pO1xuICAgICAgICAgIGVsc2UgaWYgKG1ldGF0eXBlID09IDApXG4gICAgICAgICAgICBvdXQuVmFsdWUucHVzaCh7IHR5cGU6IG91dC5UeXBlc1tyWzBdIC0gMV0ubmFtZSwgaW5kZXg6IHJbMV0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzM3OlxuICAgICAgICBtZXRhdHlwZSA9IHZhbCA/IDEgOiAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzM4OlxuICAgICAgICBtZXRhdHlwZSA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzNTpcbiAgICAgICAgc3RhdGUucHVzaChSVCk7XG4gICAgICAgIHBhc3MgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzY6XG4gICAgICAgIHN0YXRlLnBvcCgpO1xuICAgICAgICBwYXNzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKFIuVCkge1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzIHx8IG9wdHMuV1RGICYmIHN0YXRlW3N0YXRlLmxlbmd0aCAtIDFdICE9IDM1KVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV94bG1ldGFfYmluKCkge1xuICB2YXIgYmEgPSBidWZfYXJyYXkoKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzIpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzNCwgd3JpdGVfVUludDMyTEUoMSkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzNSwgd3JpdGVfQnJ0TWR0aW5mbyh7XG4gICAgbmFtZTogXCJYTERBUFJcIixcbiAgICB2ZXJzaW9uOiAxMmU0LFxuICAgIGZsYWdzOiAzNDk2NjU3MDcyXG4gIH0pKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzYpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzOSwgd3JpdGVfQnJ0QmVnaW5Fc2ZtZCgxLCBcIlhMREFQUlwiKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgNTIpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDM1LCB3cml0ZV9VSW50MzJMRSg1MTQpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA0MDk2LCB3cml0ZV9VSW50MzJMRSgwKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgNDA5Nywgd3JpdGV1aW50MTYoMSkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDM2KTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA1Myk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzQwKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzcsIHdyaXRlX0JydEJlZ2luRXNtZGIoMSwgdHJ1ZSkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDUxLCB3cml0ZV9CcnRNZGIoW1sxLCAwXV0pKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzgpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzMyk7XG4gIHJldHVybiBiYS5lbmQoKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX3hsbWV0YV94bWwoZGF0YSwgbmFtZSwgb3B0cykge1xuICB2YXIgb3V0ID0geyBUeXBlczogW10sIENlbGw6IFtdLCBWYWx1ZTogW10gfTtcbiAgaWYgKCFkYXRhKVxuICAgIHJldHVybiBvdXQ7XG4gIHZhciBwYXNzID0gZmFsc2U7XG4gIHZhciBtZXRhdHlwZSA9IDI7XG4gIHZhciBsYXN0bWV0YTtcbiAgZGF0YS5yZXBsYWNlKHRhZ3JlZ2V4LCBmdW5jdGlvbih4KSB7XG4gICAgdmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcbiAgICBzd2l0Y2ggKHN0cmlwX25zKHlbMF0pKSB7XG4gICAgICBjYXNlIFwiPD94bWxcIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPG1ldGFkYXRhXCI6XG4gICAgICBjYXNlIFwiPC9tZXRhZGF0YT5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPG1ldGFkYXRhVHlwZXNcIjpcbiAgICAgIGNhc2UgXCI8L21ldGFkYXRhVHlwZXM+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxtZXRhZGF0YVR5cGVcIjpcbiAgICAgICAgb3V0LlR5cGVzLnB1c2goeyBuYW1lOiB5Lm5hbWUgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvbWV0YWRhdGFUeXBlPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8ZnV0dXJlTWV0YWRhdGFcIjpcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvdXQuVHlwZXMubGVuZ3RoOyArK2opXG4gICAgICAgICAgaWYgKG91dC5UeXBlc1tqXS5uYW1lID09IHkubmFtZSlcbiAgICAgICAgICAgIGxhc3RtZXRhID0gb3V0LlR5cGVzW2pdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2Z1dHVyZU1ldGFkYXRhPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8Yms+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvYms+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxyY1wiOlxuICAgICAgICBpZiAobWV0YXR5cGUgPT0gMSlcbiAgICAgICAgICBvdXQuQ2VsbC5wdXNoKHsgdHlwZTogb3V0LlR5cGVzW3kudCAtIDFdLm5hbWUsIGluZGV4OiAreS52IH0pO1xuICAgICAgICBlbHNlIGlmIChtZXRhdHlwZSA9PSAwKVxuICAgICAgICAgIG91dC5WYWx1ZS5wdXNoKHsgdHlwZTogb3V0LlR5cGVzW3kudCAtIDFdLm5hbWUsIGluZGV4OiAreS52IH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L3JjPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8Y2VsbE1ldGFkYXRhXCI6XG4gICAgICAgIG1ldGF0eXBlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9jZWxsTWV0YWRhdGE+XCI6XG4gICAgICAgIG1ldGF0eXBlID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPHZhbHVlTWV0YWRhdGFcIjpcbiAgICAgICAgbWV0YXR5cGUgPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L3ZhbHVlTWV0YWRhdGE+XCI6XG4gICAgICAgIG1ldGF0eXBlID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGV4dExzdFwiOlxuICAgICAgY2FzZSBcIjxleHRMc3Q+XCI6XG4gICAgICBjYXNlIFwiPC9leHRMc3Q+XCI6XG4gICAgICBjYXNlIFwiPGV4dExzdC8+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxleHRcIjpcbiAgICAgICAgcGFzcyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvZXh0PlwiOlxuICAgICAgICBwYXNzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxydmJcIjpcbiAgICAgICAgaWYgKCFsYXN0bWV0YSlcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKCFsYXN0bWV0YS5vZmZzZXRzKVxuICAgICAgICAgIGxhc3RtZXRhLm9mZnNldHMgPSBbXTtcbiAgICAgICAgbGFzdG1ldGEub2Zmc2V0cy5wdXNoKCt5LmkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICghcGFzcyAmJiBvcHRzLldURilcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlY29nbml6ZWQgXCIgKyB5WzBdICsgXCIgaW4gbWV0YWRhdGFcIik7XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX3hsbWV0YV94bWwoKSB7XG4gIHZhciBvID0gW1hNTF9IRUFERVJdO1xuICBvLnB1c2goJzxtZXRhZGF0YSB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpblwiIHhtbG5zOnhscmQ9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTcvcmljaGRhdGFcIiB4bWxuczp4ZGE9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTcvZHluYW1pY2FycmF5XCI+XFxuICA8bWV0YWRhdGFUeXBlcyBjb3VudD1cIjFcIj5cXG4gICAgPG1ldGFkYXRhVHlwZSBuYW1lPVwiWExEQVBSXCIgbWluU3VwcG9ydGVkVmVyc2lvbj1cIjEyMDAwMFwiIGNvcHk9XCIxXCIgcGFzdGVBbGw9XCIxXCIgcGFzdGVWYWx1ZXM9XCIxXCIgbWVyZ2U9XCIxXCIgc3BsaXRGaXJzdD1cIjFcIiByb3dDb2xTaGlmdD1cIjFcIiBjbGVhckZvcm1hdHM9XCIxXCIgY2xlYXJDb21tZW50cz1cIjFcIiBhc3NpZ249XCIxXCIgY29lcmNlPVwiMVwiIGNlbGxNZXRhPVwiMVwiLz5cXG4gIDwvbWV0YWRhdGFUeXBlcz5cXG4gIDxmdXR1cmVNZXRhZGF0YSBuYW1lPVwiWExEQVBSXCIgY291bnQ9XCIxXCI+XFxuICAgIDxiaz5cXG4gICAgICA8ZXh0THN0PlxcbiAgICAgICAgPGV4dCB1cmk9XCJ7YmRiYjhjZGMtZmExZS00OTZlLWE4NTctM2MzZjMwYzAyOWMzfVwiPlxcbiAgICAgICAgICA8eGRhOmR5bmFtaWNBcnJheVByb3BlcnRpZXMgZkR5bmFtaWM9XCIxXCIgZkNvbGxhcHNlZD1cIjBcIi8+XFxuICAgICAgICA8L2V4dD5cXG4gICAgICA8L2V4dExzdD5cXG4gICAgPC9iaz5cXG4gIDwvZnV0dXJlTWV0YWRhdGE+XFxuICA8Y2VsbE1ldGFkYXRhIGNvdW50PVwiMVwiPlxcbiAgICA8Yms+XFxuICAgICAgPHJjIHQ9XCIxXCIgdj1cIjBcIi8+XFxuICAgIDwvYms+XFxuICA8L2NlbGxNZXRhZGF0YT5cXG48L21ldGFkYXRhPicpO1xuICByZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogMTguNiBDYWxjdWxhdGlvbiBDaGFpbiAqL1xuZnVuY3Rpb24gcGFyc2VfY2NfeG1sKGRhdGEvKjo6LCBuYW1lLCBvcHRzKi8pLyo6QXJyYXk8YW55PiovIHtcblx0dmFyIGQgPSBbXTtcblx0aWYoIWRhdGEpIHJldHVybiBkO1xuXHR2YXIgaSA9IDE7XG5cdChkYXRhLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHlbMF0pIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cdFx0XHQvKiAxOC42LjIgIGNhbGNDaGFpbiBDVF9DYWxjQ2hhaW4gMSAqL1xuXHRcdFx0Y2FzZSAnPGNhbGNDaGFpbic6IGNhc2UgJzxjYWxjQ2hhaW4+JzogY2FzZSAnPC9jYWxjQ2hhaW4+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC42LjEgIGMgQ1RfQ2FsY0NlbGwgMSAqL1xuXHRcdFx0Y2FzZSAnPGMnOiBkZWxldGUgeVswXTsgaWYoeS5pKSBpID0geS5pOyBlbHNlIHkuaSA9IGk7IGQucHVzaCh5KTsgYnJlYWs7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGQ7XG59XG5cbi8vZnVuY3Rpb24gd3JpdGVfY2NfeG1sKGRhdGEsIG9wdHMpIHsgfVxuXG4vKiBbTVMtWExTQl0gMi42LjQuMSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2FsY0NoYWluSXRlbSQoZGF0YSkge1xuXHR2YXIgb3V0ID0ge307XG5cdG91dC5pID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgY2VsbCA9IHt9O1xuXHRjZWxsLnIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGNlbGwuYyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0b3V0LnIgPSBlbmNvZGVfY2VsbChjZWxsKTtcblx0dmFyIGZsYWdzID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRpZihmbGFncyAmIDB4Mikgb3V0LmwgPSAnMSc7XG5cdGlmKGZsYWdzICYgMHg4KSBvdXQuYSA9ICcxJztcblx0cmV0dXJuIG91dDtcbn1cblxuLyogMTguNiBDYWxjdWxhdGlvbiBDaGFpbiAqL1xuZnVuY3Rpb24gcGFyc2VfY2NfYmluKGRhdGEsIG5hbWUsIG9wdHMpIHtcblx0dmFyIG91dCA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX2NjKHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMDNGOiAvKiAnQnJ0Q2FsY0NoYWluSXRlbSQnICovXG5cdFx0XHRcdG91dC5wdXNoKHZhbCk7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vL2Z1bmN0aW9uIHdyaXRlX2NjX2JpbihkYXRhLCBvcHRzKSB7IH1cbi8qIDE4LjE0IFN1cHBsZW1lbnRhcnkgV29ya2Jvb2sgRGF0YSAqL1xuZnVuY3Rpb24gcGFyc2VfeGxpbmtfeG1sKC8qOjpkYXRhLCByZWwsIG5hbWU6c3RyaW5nLCBfb3B0cyovKSB7XG5cdC8vdmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0Ly9pZihvcHRzLldURikgdGhyb3cgXCJYTFNYIEV4dGVybmFsIExpbmtcIjtcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjI1IEV4dGVybmFsIExpbmsgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsaW5rX2JpbihkYXRhLCByZWwsIG5hbWUvKjpzdHJpbmcqLywgX29wdHMpIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXG5cdHZhciBwYXNzID0gZmFsc2UsIGVuZCA9IGZhbHNlO1xuXG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiB4bGlua19wYXJzZSh2YWwsIFIsIFJUKSB7XG5cdFx0aWYoZW5kKSByZXR1cm47XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDE2NzogLyogJ0JydFN1cFRhYnMnICovXG5cdFx0XHRjYXNlIDB4MDE2QjogLyogJ0JydEV4dGVyblRhYmxlU3RhcnQnICovXG5cdFx0XHRjYXNlIDB4MDE2QzogLyogJ0JydEV4dGVyblRhYmxlRW5kJyAqL1xuXHRcdFx0Y2FzZSAweDAxNkU6IC8qICdCcnRFeHRlcm5Sb3dIZHInICovXG5cdFx0XHRjYXNlIDB4MDE2RjogLyogJ0JydEV4dGVybkNlbGxCbGFuaycgKi9cblx0XHRcdGNhc2UgMHgwMTcwOiAvKiAnQnJ0RXh0ZXJuQ2VsbFJlYWwnICovXG5cdFx0XHRjYXNlIDB4MDE3MTogLyogJ0JydEV4dGVybkNlbGxCb29sJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzI6IC8qICdCcnRFeHRlcm5DZWxsRXJyb3InICovXG5cdFx0XHRjYXNlIDB4MDE3MzogLyogJ0JydEV4dGVybkNlbGxTdHJpbmcnICovXG5cdFx0XHRjYXNlIDB4MDFEODogLyogJ0JydEV4dGVyblZhbHVlTWV0YScgKi9cblx0XHRcdGNhc2UgMHgwMjQxOiAvKiAnQnJ0U3VwTmFtZVN0YXJ0JyAqL1xuXHRcdFx0Y2FzZSAweDAyNDI6IC8qICdCcnRTdXBOYW1lVmFsdWVTdGFydCcgKi9cblx0XHRcdGNhc2UgMHgwMjQzOiAvKiAnQnJ0U3VwTmFtZVZhbHVlRW5kJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDQ6IC8qICdCcnRTdXBOYW1lTnVtJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDU6IC8qICdCcnRTdXBOYW1lRXJyJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDY6IC8qICdCcnRTdXBOYW1lU3QnICovXG5cdFx0XHRjYXNlIDB4MDI0NzogLyogJ0JydFN1cE5hbWVOaWwnICovXG5cdFx0XHRjYXNlIDB4MDI0ODogLyogJ0JydFN1cE5hbWVCb29sJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDk6IC8qICdCcnRTdXBOYW1lRm1sYScgKi9cblx0XHRcdGNhc2UgMHgwMjRBOiAvKiAnQnJ0U3VwTmFtZUJpdHMnICovXG5cdFx0XHRjYXNlIDB4MDI0QjogLyogJ0JydFN1cE5hbWVFbmQnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogJ0JydEZSVEVuZCcgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9LCBvcHRzKTtcbn1cbi8qIDIwLjUgRHJhd2luZ01MIC0gU3ByZWFkc2hlZXRNTCBEcmF3aW5nICovXG4vKiAyMC41LjIuMzUgd3NEciBDVF9EcmF3aW5nICovXG5mdW5jdGlvbiBwYXJzZV9kcmF3aW5nKGRhdGEsIHJlbHMvKjphbnkqLykge1xuXHRpZighZGF0YSkgcmV0dXJuIFwiPz9cIjtcblx0Lypcblx0ICBDaGFydHNoZWV0IERyYXdpbmc6XG5cdCAgIC0gMjAuNS4yLjM1IHdzRHIgQ1RfRHJhd2luZ1xuXHQgICAgLSAyMC41LjIuMSAgYWJzb2x1dGVBbmNob3IgQ1RfQWJzb2x1dGVBbmNob3Jcblx0ICAgICAtIDIwLjUuMi4xNiBncmFwaGljRnJhbWUgQ1RfR3JhcGhpY2FsT2JqZWN0RnJhbWVcblx0ICAgICAgLSAyMC4xLjIuMi4xNiBncmFwaGljIENUX0dyYXBoaWNhbE9iamVjdFxuXHQgICAgICAgLSAyMC4xLjIuMi4xNyBncmFwaGljRGF0YSBDVF9HcmFwaGljYWxPYmplY3REYXRhXG4gICAgICAgICAgLSBjaGFydCByZWZlcmVuY2Vcblx0ICAgdGhlIGFjdHVhbCB0eXBlIGlzIGJhc2VkIG9uIHRoZSBVUkkgb2YgdGhlIGdyYXBoaWNEYXRhXG5cdFx0VE9ETzogaGFuZGxlIGVtYmVkZGVkIGNoYXJ0cyBhbmQgb3RoZXIgdHlwZXMgb2YgZ3JhcGhpY3Ncblx0Ki9cblx0dmFyIGlkID0gKGRhdGEubWF0Y2goLzxjOmNoYXJ0IFtePl0qcjppZD1cIihbXlwiXSopXCIvKXx8W1wiXCIsXCJcIl0pWzFdO1xuXG5cdHJldHVybiByZWxzWychaWQnXVtpZF0uVGFyZ2V0O1xufVxuXG4vKiBMLjUuNS4yIFNwcmVhZHNoZWV0TUwgQ29tbWVudHMgKyBWTUwgU2NoZW1hICovXG52YXIgX3NoYXBlaWQgPSAxMDI0O1xuZnVuY3Rpb24gd3JpdGVfY29tbWVudHNfdm1sKHJJZC8qOm51bWJlciovLCBjb21tZW50cykge1xuXHR2YXIgY3NpemUgPSBbMjE2MDAsIDIxNjAwXTtcblx0LyogTC41LjIuMS4yIFBhdGggQXR0cmlidXRlICovXG5cdHZhciBiYm94ID0gW1wibTAsMGwwXCIsY3NpemVbMV0sY3NpemVbMF0sY3NpemVbMV0sY3NpemVbMF0sXCIweGVcIl0uam9pbihcIixcIik7XG5cdHZhciBvID0gW1xuXHRcdHdyaXRleHRhZyhcInhtbFwiLCBudWxsLCB7ICd4bWxuczp2JzogWExNTE5TLnYsICd4bWxuczpvJzogWExNTE5TLm8sICd4bWxuczp4JzogWExNTE5TLngsICd4bWxuczptdic6IFhMTUxOUy5tdiB9KS5yZXBsYWNlKC9cXC8+LyxcIj5cIiksXG5cdFx0d3JpdGV4dGFnKFwibzpzaGFwZWxheW91dFwiLCB3cml0ZXh0YWcoXCJvOmlkbWFwXCIsIG51bGwsIHsndjpleHQnOlwiZWRpdFwiLCAnZGF0YSc6cklkfSksIHsndjpleHQnOlwiZWRpdFwifSksXG5cdFx0d3JpdGV4dGFnKFwidjpzaGFwZXR5cGVcIiwgW1xuXHRcdFx0d3JpdGV4dGFnKFwidjpzdHJva2VcIiwgbnVsbCwge2pvaW5zdHlsZTpcIm1pdGVyXCJ9KSxcblx0XHRcdHdyaXRleHRhZyhcInY6cGF0aFwiLCBudWxsLCB7Z3JhZGllbnRzaGFwZW9rOlwidFwiLCAnbzpjb25uZWN0dHlwZSc6XCJyZWN0XCJ9KVxuXHRcdF0uam9pbihcIlwiKSwge2lkOlwiX3gwMDAwX3QyMDJcIiwgJ286c3B0JzoyMDIsIGNvb3Jkc2l6ZTpjc2l6ZS5qb2luKFwiLFwiKSxwYXRoOmJib3h9KVxuXHRdO1xuXHR3aGlsZShfc2hhcGVpZCA8IHJJZCAqIDEwMDApIF9zaGFwZWlkICs9IDEwMDA7XG5cblx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdHZhciBjID0gZGVjb2RlX2NlbGwoeFswXSk7XG5cdHZhciBmaWxsb3B0cyA9IC8qOjooKi97J2NvbG9yMic6XCIjQkVGRjgyXCIsICd0eXBlJzpcImdyYWRpZW50XCJ9Lyo6OiA6YW55KSovO1xuXHRpZihmaWxsb3B0cy50eXBlID09IFwiZ3JhZGllbnRcIikgZmlsbG9wdHMuYW5nbGUgPSBcIi0xODBcIjtcblx0dmFyIGZpbGxwYXJtID0gZmlsbG9wdHMudHlwZSA9PSBcImdyYWRpZW50XCIgPyB3cml0ZXh0YWcoXCJvOmZpbGxcIiwgbnVsbCwge3R5cGU6XCJncmFkaWVudFVuc2NhbGVkXCIsICd2OmV4dCc6XCJ2aWV3XCJ9KSA6IG51bGw7XG5cdHZhciBmaWxseG1sID0gd3JpdGV4dGFnKCd2OmZpbGwnLCBmaWxscGFybSwgZmlsbG9wdHMpO1xuXG5cdHZhciBzaGFkYXRhID0gKHtvbjpcInRcIiwgJ29ic2N1cmVkJzpcInRcIn0vKjphbnkqLyk7XG5cdCsrX3NoYXBlaWQ7XG5cblx0byA9IG8uY29uY2F0KFtcblx0Jzx2OnNoYXBlJyArIHd4dF9oZWxwZXIoe1xuXHRcdGlkOidfeDAwMDBfcycgKyBfc2hhcGVpZCxcblx0XHR0eXBlOlwiI194MDAwMF90MjAyXCIsXG5cdFx0c3R5bGU6XCJwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLWxlZnQ6ODBwdDttYXJnaW4tdG9wOjVwdDt3aWR0aDoxMDRwdDtoZWlnaHQ6NjRwdDt6LWluZGV4OjEwXCIgKyAoeFsxXS5oaWRkZW4gPyBcIjt2aXNpYmlsaXR5OmhpZGRlblwiIDogXCJcIikgLFxuXHRcdGZpbGxjb2xvcjpcIiNFQ0ZBRDRcIixcblx0XHRzdHJva2Vjb2xvcjpcIiNlZGVhYTFcIlxuXHR9KSArICc+Jyxcblx0XHRmaWxseG1sLFxuXHRcdHdyaXRleHRhZyhcInY6c2hhZG93XCIsIG51bGwsIHNoYWRhdGEpLFxuXHRcdHdyaXRleHRhZyhcInY6cGF0aFwiLCBudWxsLCB7J286Y29ubmVjdHR5cGUnOlwibm9uZVwifSksXG5cdFx0Jzx2OnRleHRib3g+PGRpdiBzdHlsZT1cInRleHQtYWxpZ246bGVmdFwiPjwvZGl2Pjwvdjp0ZXh0Ym94PicsXG5cdFx0Jzx4OkNsaWVudERhdGEgT2JqZWN0VHlwZT1cIk5vdGVcIj4nLFxuXHRcdFx0Jzx4Ok1vdmVXaXRoQ2VsbHMvPicsXG5cdFx0XHQnPHg6U2l6ZVdpdGhDZWxscy8+Jyxcblx0XHRcdC8qIFBhcnQgNCAxOS40LjIuMyBBbmNob3IgKEFuY2hvcikgKi9cblx0XHRcdHdyaXRldGFnKCd4OkFuY2hvcicsIFtjLmMrMSwgMCwgYy5yKzEsIDAsIGMuYyszLCAyMCwgYy5yKzUsIDIwXS5qb2luKFwiLFwiKSksXG5cdFx0XHR3cml0ZXRhZygneDpBdXRvRmlsbCcsIFwiRmFsc2VcIiksXG5cdFx0XHR3cml0ZXRhZygneDpSb3cnLCBTdHJpbmcoYy5yKSksXG5cdFx0XHR3cml0ZXRhZygneDpDb2x1bW4nLCBTdHJpbmcoYy5jKSksXG5cdFx0XHR4WzFdLmhpZGRlbiA/ICcnIDogJzx4OlZpc2libGUvPicsXG5cdFx0JzwveDpDbGllbnREYXRhPicsXG5cdCc8L3Y6c2hhcGU+J1xuXHRdKTsgfSk7XG5cdG8ucHVzaCgnPC94bWw+Jyk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiBzaGVldF9pbnNlcnRfY29tbWVudHMoc2hlZXQsIGNvbW1lbnRzLyo6QXJyYXk8UmF3Q29tbWVudD4qLywgdGhyZWFkZWQvKjpib29sZWFuKi8sIHBlb3BsZS8qOj9BcnJheTxhbnk+Ki8pIHtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBjZWxsLyo6Q2VsbCovO1xuXHRjb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGNvbW1lbnQpIHtcblx0XHR2YXIgciA9IGRlY29kZV9jZWxsKGNvbW1lbnQucmVmKTtcblx0XHRpZihkZW5zZSkge1xuXHRcdFx0aWYoIXNoZWV0W3Iucl0pIHNoZWV0W3Iucl0gPSBbXTtcblx0XHRcdGNlbGwgPSBzaGVldFtyLnJdW3IuY107XG5cdFx0fSBlbHNlIGNlbGwgPSBzaGVldFtjb21tZW50LnJlZl07XG5cdFx0aWYgKCFjZWxsKSB7XG5cdFx0XHRjZWxsID0gKHt0OlwielwifS8qOmFueSovKTtcblx0XHRcdGlmKGRlbnNlKSBzaGVldFtyLnJdW3IuY10gPSBjZWxsO1xuXHRcdFx0ZWxzZSBzaGVldFtjb21tZW50LnJlZl0gPSBjZWxsO1xuXHRcdFx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdfHxcIkJEV0dPMTAwMDAwMTpBMVwiKTtcblx0XHRcdGlmKHJhbmdlLnMuciA+IHIucikgcmFuZ2Uucy5yID0gci5yO1xuXHRcdFx0aWYocmFuZ2UuZS5yIDwgci5yKSByYW5nZS5lLnIgPSByLnI7XG5cdFx0XHRpZihyYW5nZS5zLmMgPiByLmMpIHJhbmdlLnMuYyA9IHIuYztcblx0XHRcdGlmKHJhbmdlLmUuYyA8IHIuYykgcmFuZ2UuZS5jID0gci5jO1xuXHRcdFx0dmFyIGVuY29kZWQgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0aWYgKGVuY29kZWQgIT09IHNoZWV0W1wiIXJlZlwiXSkgc2hlZXRbXCIhcmVmXCJdID0gZW5jb2RlZDtcblx0XHR9XG5cblx0XHRpZiAoIWNlbGwuYykgY2VsbC5jID0gW107XG5cdFx0dmFyIG8vKjpDb21tZW50Ki8gPSAoe2E6IGNvbW1lbnQuYXV0aG9yLCB0OiBjb21tZW50LnQsIHI6IGNvbW1lbnQuciwgVDogdGhyZWFkZWR9KTtcblx0XHRpZihjb21tZW50LmgpIG8uaCA9IGNvbW1lbnQuaDtcblxuXHRcdC8qIHRocmVhZGVkIGNvbW1lbnRzIGFsd2F5cyBvdmVycmlkZSAqL1xuXHRcdGZvcih2YXIgaSA9IGNlbGwuYy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdFx0aWYoIXRocmVhZGVkICYmIGNlbGwuY1tpXS5UKSByZXR1cm47XG5cdFx0XHRpZih0aHJlYWRlZCAmJiAhY2VsbC5jW2ldLlQpIGNlbGwuYy5zcGxpY2UoaSwgMSk7XG5cdFx0fVxuXHRcdGlmKHRocmVhZGVkICYmIHBlb3BsZSkgZm9yKGkgPSAwOyBpIDwgcGVvcGxlLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRpZihvLmEgPT0gcGVvcGxlW2ldLmlkKSB7IG8uYSA9IHBlb3BsZVtpXS5uYW1lIHx8IG8uYTsgYnJlYWs7IH1cblx0XHR9XG5cdFx0Y2VsbC5jLnB1c2gobyk7XG5cdH0pO1xufVxuXG4vKiAxOC43IENvbW1lbnRzICovXG5mdW5jdGlvbiBwYXJzZV9jb21tZW50c194bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHQvKiAxOC43LjYgQ1RfQ29tbWVudHMgKi9cblx0aWYoZGF0YS5tYXRjaCgvPCg/Olxcdys6KT9jb21tZW50cyAqXFwvPi8pKSByZXR1cm4gW107XG5cdHZhciBhdXRob3JzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBjb21tZW50TGlzdC8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8gPSBbXTtcblx0dmFyIGF1dGh0YWcgPSBkYXRhLm1hdGNoKC88KD86XFx3KzopP2F1dGhvcnM+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP2F1dGhvcnM+Lyk7XG5cdGlmKGF1dGh0YWcgJiYgYXV0aHRhZ1sxXSkgYXV0aHRhZ1sxXS5zcGxpdCgvPFxcL1xcdyo6P2F1dGhvcj4vKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRpZih4ID09PSBcIlwiIHx8IHgudHJpbSgpID09PSBcIlwiKSByZXR1cm47XG5cdFx0dmFyIGEgPSB4Lm1hdGNoKC88KD86XFx3KzopP2F1dGhvcltePl0qPiguKikvKTtcblx0XHRpZihhKSBhdXRob3JzLnB1c2goYVsxXSk7XG5cdH0pO1xuXHR2YXIgY21udHRhZyA9IGRhdGEubWF0Y2goLzwoPzpcXHcrOik/Y29tbWVudExpc3Q+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP2NvbW1lbnRMaXN0Pi8pO1xuXHRpZihjbW50dGFnICYmIGNtbnR0YWdbMV0pIGNtbnR0YWdbMV0uc3BsaXQoLzxcXC9cXHcqOj9jb21tZW50Pi8pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdGlmKHggPT09IFwiXCIgfHwgeC50cmltKCkgPT09IFwiXCIpIHJldHVybjtcblx0XHR2YXIgY20gPSB4Lm1hdGNoKC88KD86XFx3KzopP2NvbW1lbnRbXj5dKj4vKTtcblx0XHRpZighY20pIHJldHVybjtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKGNtWzBdKTtcblx0XHR2YXIgY29tbWVudC8qOlJhd0NvbW1lbnQqLyA9ICh7IGF1dGhvcjogeS5hdXRob3JJZCAmJiBhdXRob3JzW3kuYXV0aG9ySWRdIHx8IFwic2hlZXRqc2dob3N0XCIsIHJlZjogeS5yZWYsIGd1aWQ6IHkuZ3VpZCB9Lyo6YW55Ki8pO1xuXHRcdHZhciBjZWxsID0gZGVjb2RlX2NlbGwoeS5yZWYpO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IGNlbGwucikgcmV0dXJuO1xuXHRcdHZhciB0ZXh0TWF0Y2ggPSB4Lm1hdGNoKC88KD86XFx3KzopP3RleHQ+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP3RleHQ+Lyk7XG5cdFx0dmFyIHJ0ID0gISF0ZXh0TWF0Y2ggJiYgISF0ZXh0TWF0Y2hbMV0gJiYgcGFyc2Vfc2kodGV4dE1hdGNoWzFdKSB8fCB7cjpcIlwiLHQ6XCJcIixoOlwiXCJ9O1xuXHRcdGNvbW1lbnQuciA9IHJ0LnI7XG5cdFx0aWYocnQuciA9PSBcIjx0PjwvdD5cIikgcnQudCA9IHJ0LmggPSBcIlwiO1xuXHRcdGNvbW1lbnQudCA9IChydC50fHxcIlwiKS5yZXBsYWNlKC9cXHJcXG4vZyxcIlxcblwiKS5yZXBsYWNlKC9cXHIvZyxcIlxcblwiKTtcblx0XHRpZihvcHRzLmNlbGxIVE1MKSBjb21tZW50LmggPSBydC5oO1xuXHRcdGNvbW1lbnRMaXN0LnB1c2goY29tbWVudCk7XG5cdH0pO1xuXHRyZXR1cm4gY29tbWVudExpc3Q7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NvbW1lbnRzX3htbChkYXRhLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnY29tbWVudHMnLCBudWxsLCB7ICd4bWxucyc6IFhNTE5TX21haW5bMF0gfSldO1xuXG5cdHZhciBpYXV0aG9yLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdG8ucHVzaChcIjxhdXRob3JzPlwiKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHsgeFsxXS5mb3JFYWNoKGZ1bmN0aW9uKHcpIHsgdmFyIGEgPSBlc2NhcGV4bWwody5hKTtcblx0XHRpZihpYXV0aG9yLmluZGV4T2YoYSkgPT0gLTEpIHtcblx0XHRcdGlhdXRob3IucHVzaChhKTtcblx0XHRcdG8ucHVzaChcIjxhdXRob3I+XCIgKyBhICsgXCI8L2F1dGhvcj5cIik7XG5cdFx0fVxuXHRcdGlmKHcuVCAmJiB3LklEICYmIGlhdXRob3IuaW5kZXhPZihcInRjPVwiICsgdy5JRCkgPT0gLTEpIHtcblx0XHRcdGlhdXRob3IucHVzaChcInRjPVwiICsgdy5JRCk7XG5cdFx0XHRvLnB1c2goXCI8YXV0aG9yPlwiICsgXCJ0Yz1cIiArIHcuSUQgKyBcIjwvYXV0aG9yPlwiKTtcblx0XHR9XG5cdH0pOyB9KTtcblx0aWYoaWF1dGhvci5sZW5ndGggPT0gMCkgeyBpYXV0aG9yLnB1c2goXCJTaGVldEo1XCIpOyBvLnB1c2goXCI8YXV0aG9yPlNoZWV0SjU8L2F1dGhvcj5cIik7IH1cblx0by5wdXNoKFwiPC9hdXRob3JzPlwiKTtcblx0by5wdXNoKFwiPGNvbW1lbnRMaXN0PlwiKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHtcblx0XHQvKiAxOC43LjMgQ1RfQ29tbWVudCAqL1xuXHRcdHZhciBsYXN0YXV0aG9yID0gMCwgdHMgPSBbXTtcblx0XHRpZihkWzFdWzBdICYmIGRbMV1bMF0uVCAmJiBkWzFdWzBdLklEKSBsYXN0YXV0aG9yID0gaWF1dGhvci5pbmRleE9mKFwidGM9XCIgKyBkWzFdWzBdLklEKTtcblx0XHRlbHNlIGRbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0XHRpZihjLmEpIGxhc3RhdXRob3IgPSBpYXV0aG9yLmluZGV4T2YoZXNjYXBleG1sKGMuYSkpO1xuXHRcdFx0dHMucHVzaChjLnR8fFwiXCIpO1xuXHRcdH0pO1xuXHRcdG8ucHVzaCgnPGNvbW1lbnQgcmVmPVwiJyArIGRbMF0gKyAnXCIgYXV0aG9ySWQ9XCInICsgbGFzdGF1dGhvciArICdcIj48dGV4dD4nKTtcblx0XHRpZih0cy5sZW5ndGggPD0gMSkgby5wdXNoKHdyaXRldGFnKFwidFwiLCBlc2NhcGV4bWwodHNbMF18fFwiXCIpKSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHQvKiBiYXNlZCBvbiBUaHJlYWRlZCBDb21tZW50cyAtPiBDb21tZW50cyBwcm9qZWN0aW9uICovXG5cdFx0XHR2YXIgdCA9IFwiQ29tbWVudDpcXG4gICAgXCIgKyAodHNbMF0pICsgXCJcXG5cIjtcblx0XHRcdGZvcih2YXIgaSA9IDE7IGkgPCB0cy5sZW5ndGg7ICsraSkgdCArPSBcIlJlcGx5OlxcbiAgICBcIiArIHRzW2ldICsgXCJcXG5cIjtcblx0XHRcdG8ucHVzaCh3cml0ZXRhZyhcInRcIiwgZXNjYXBleG1sKHQpKSk7XG5cdFx0fVxuXHRcdG8ucHVzaCgnPC90ZXh0PjwvY29tbWVudD4nKTtcblx0fSk7XG5cdG8ucHVzaChcIjwvY29tbWVudExpc3Q+XCIpO1xuXHRpZihvLmxlbmd0aD4yKSB7IG9bby5sZW5ndGhdID0gKCc8L2NvbW1lbnRzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFtNUy1YTFNYXSAyLjEuMTcgKi9cbmZ1bmN0aW9uIHBhcnNlX3RjbW50X3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpLyo6QXJyYXk8UmF3Q29tbWVudD4qLyB7XG5cdHZhciBvdXQgPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZSwgY29tbWVudCA9IHt9LCB0aWR4ID0gMDtcblx0ZGF0YS5yZXBsYWNlKHRhZ3JlZ2V4LCBmdW5jdGlvbiB4bWxfdGNtbnQoeCwgaWR4KSB7XG5cdFx0dmFyIHkvKjphbnkqLyA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblxuXHRcdFx0LyogMi42LjIwNyBUaHJlYWRlZENvbW1lbnRzIENUX1RocmVhZGVkQ29tbWVudHMgKi9cblx0XHRcdGNhc2UgJzxUaHJlYWRlZENvbW1lbnRzJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L1RocmVhZGVkQ29tbWVudHM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDUgdGhyZWFkZWRDb21tZW50IENUX1RocmVhZGVkQ29tbWVudCAqL1xuXHRcdFx0Y2FzZSAnPHRocmVhZGVkQ29tbWVudCc6IGNvbW1lbnQgPSB7YXV0aG9yOiB5LnBlcnNvbklkLCBndWlkOiB5LmlkLCByZWY6IHkucmVmLCBUOiAxfTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3RocmVhZGVkQ29tbWVudD4nOiBpZihjb21tZW50LnQgIT0gbnVsbCkgb3V0LnB1c2goY29tbWVudCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICc8dGV4dD4nOiBjYXNlICc8dGV4dCc6IHRpZHggPSBpZHggKyB4Lmxlbmd0aDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3RleHQ+JzogY29tbWVudC50ID0gZGF0YS5zbGljZSh0aWR4LCBpZHgpLnJlcGxhY2UoL1xcclxcbi9nLCBcIlxcblwiKS5yZXBsYWNlKC9cXHIvZywgXCJcXG5cIik7IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjA2IG1lbnRpb25zIENUX1RocmVhZGVkQ29tbWVudE1lbnRpb25zIFRPRE8gKi9cblx0XHRcdGNhc2UgJzxtZW50aW9ucyc6IGNhc2UgJzxtZW50aW9ucz4nOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L21lbnRpb25zPic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDIgbWVudGlvbiBDVF9NZW50aW9uIFRPRE8gKi9cblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBjYXNlICc8ZXh0THN0Lz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuNyAgZXh0IENUX0V4dGVuc2lvbiArICovXG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcz10cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3M9ZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OiBpZighcGFzcyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIHRocmVhZGVkIGNvbW1lbnRzJyk7XG5cdFx0fVxuXHRcdHJldHVybiB4O1xuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfdGNtbnRfeG1sKGNvbW1lbnRzLCBwZW9wbGUsIG9wdHMpIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdUaHJlYWRlZENvbW1lbnRzJywgbnVsbCwgeyAneG1sbnMnOiBYTUxOUy5UQ01OVCB9KS5yZXBsYWNlKC9bXFwvXT4vLCBcIj5cIildO1xuXHRjb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGNhcnIpIHtcblx0XHR2YXIgcm9vdGlkID0gXCJcIjtcblx0XHQoY2FyclsxXSB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihjLCBpZHgpIHtcblx0XHRcdGlmKCFjLlQpIHsgZGVsZXRlIGMuSUQ7IHJldHVybjsgfVxuXHRcdFx0aWYoYy5hICYmIHBlb3BsZS5pbmRleE9mKGMuYSkgPT0gLTEpIHBlb3BsZS5wdXNoKGMuYSk7XG5cdFx0XHR2YXIgdGNvcHRzID0ge1xuXHRcdFx0XHRyZWY6IGNhcnJbMF0sXG5cdFx0XHRcdGlkOiBcIns1NEVFNzk1MS03MjYyLTQyMDAtNjk2OS1cIiArIChcIjAwMDAwMDAwMDAwMFwiICsgb3B0cy50Y2lkKyspLnNsaWNlKC0xMikgKyBcIn1cIlxuXHRcdFx0fTtcblx0XHRcdGlmKGlkeCA9PSAwKSByb290aWQgPSB0Y29wdHMuaWQ7XG5cdFx0XHRlbHNlIHRjb3B0cy5wYXJlbnRJZCA9IHJvb3RpZDtcblx0XHRcdGMuSUQgPSB0Y29wdHMuaWQ7XG5cdFx0XHRpZihjLmEpIHRjb3B0cy5wZXJzb25JZCA9IFwiezU0RUU3OTUwLTcyNjItNDIwMC02OTY5LVwiICsgKFwiMDAwMDAwMDAwMDAwXCIgKyBwZW9wbGUuaW5kZXhPZihjLmEpKS5zbGljZSgtMTIpICsgXCJ9XCI7XG5cdFx0XHRvLnB1c2god3JpdGV4dGFnKCd0aHJlYWRlZENvbW1lbnQnLCB3cml0ZXRhZygndGV4dCcsIGMudHx8XCJcIiksIHRjb3B0cykpO1xuXHRcdH0pO1xuXHR9KTtcblx0by5wdXNoKCc8L1RocmVhZGVkQ29tbWVudHM+Jyk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFtNUy1YTFNYXSAyLjEuMTggKi9cbmZ1bmN0aW9uIHBhcnNlX3Blb3BsZV94bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHZhciBvdXQgPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0ZGF0YS5yZXBsYWNlKHRhZ3JlZ2V4LCBmdW5jdGlvbiB4bWxfdGNtbnQoeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cblx0XHRcdC8qIDIuNC44NSBwZXJzb25MaXN0IENUX1BlcnNvbkxpc3QgKi9cblx0XHRcdGNhc2UgJzxwZXJzb25MaXN0JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3BlcnNvbkxpc3Q+JzogYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDMgcGVyc29uIENUX1BlcnNvbiBUT0RPOiBwcm92aWRlcnMgKi9cblx0XHRcdGNhc2UgJzxwZXJzb24nOiBvdXQucHVzaCh7bmFtZTogeS5kaXNwbGF5bmFtZSwgaWQ6IHkuaWQgfSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9wZXJzb24+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogY2FzZSAnPGV4dExzdC8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjcgIGV4dCBDVF9FeHRlbnNpb24gKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3M9dHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDogaWYoIXBhc3MgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiB0aHJlYWRlZCBjb21tZW50cycpO1xuXHRcdH1cblx0XHRyZXR1cm4geDtcblx0fSk7XG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9wZW9wbGVfeG1sKHBlb3BsZS8qLCBvcHRzKi8pIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdwZXJzb25MaXN0JywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TLlRDTU5ULFxuXHRcdCd4bWxuczp4JzogWE1MTlNfbWFpblswXVxuXHR9KS5yZXBsYWNlKC9bXFwvXT4vLCBcIj5cIildO1xuXHRwZW9wbGUuZm9yRWFjaChmdW5jdGlvbihwZXJzb24sIGlkeCkge1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoJ3BlcnNvbicsIG51bGwsIHtcblx0XHRcdGRpc3BsYXlOYW1lOiBwZXJzb24sXG5cdFx0XHRpZDogXCJ7NTRFRTc5NTAtNzI2Mi00MjAwLTY5NjktXCIgKyAoXCIwMDAwMDAwMDAwMDBcIiArIGlkeCkuc2xpY2UoLTEyKSArIFwifVwiLFxuXHRcdFx0dXNlcklkOiBwZXJzb24sXG5cdFx0XHRwcm92aWRlcklkOiBcIk5vbmVcIlxuXHRcdH0pKTtcblx0fSk7XG5cdG8ucHVzaChcIjwvcGVyc29uTGlzdD5cIik7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjI4IEJydEJlZ2luQ29tbWVudCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QmVnaW5Db21tZW50KGRhdGEpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRvdXQuaWF1dGhvciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJmeCA9IHBhcnNlX1VuY2hlY2tlZFJmWChkYXRhLCAxNik7XG5cdG91dC5yZnggPSByZngucztcblx0b3V0LnJlZiA9IGVuY29kZV9jZWxsKHJmeC5zKTtcblx0ZGF0YS5sICs9IDE2OyAvKnZhciBndWlkID0gcGFyc2VfR1VJRChkYXRhKTsgKi9cblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luQ29tbWVudChkYXRhLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMzYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGFbMV0uaWF1dGhvcik7XG5cdHdyaXRlX1VuY2hlY2tlZFJmWCgoZGF0YVswXS8qOmFueSovKSwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMyNyBCcnRDb21tZW50QXV0aG9yICovXG52YXIgcGFyc2VfQnJ0Q29tbWVudEF1dGhvciA9IHBhcnNlX1hMV2lkZVN0cmluZztcbmZ1bmN0aW9uIHdyaXRlX0JydENvbW1lbnRBdXRob3IoZGF0YSkgeyByZXR1cm4gd3JpdGVfWExXaWRlU3RyaW5nKGRhdGEuc2xpY2UoMCwgNTQpKTsgfVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuOCBDb21tZW50cyAqL1xuZnVuY3Rpb24gcGFyc2VfY29tbWVudHNfYmluKGRhdGEsIG9wdHMpLyo6QXJyYXk8UmF3Q29tbWVudD4qLyB7XG5cdHZhciBvdXQvKjpBcnJheTxSYXdDb21tZW50PiovID0gW107XG5cdHZhciBhdXRob3JzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBjID0ge307XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfY21udCh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDI3ODogLyogJ0JydENvbW1lbnRBdXRob3InICovXG5cdFx0XHRcdGF1dGhvcnMucHVzaCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMjdCOiAvKiAnQnJ0QmVnaW5Db21tZW50JyAqL1xuXHRcdFx0XHRjID0gdmFsOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMjdEOiAvKiAnQnJ0Q29tbWVudFRleHQnICovXG5cdFx0XHRcdGMudCA9IHZhbC50OyBjLmggPSB2YWwuaDsgYy5yID0gdmFsLnI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAyN0M6IC8qICdCcnRFbmRDb21tZW50JyAqL1xuXHRcdFx0XHRjLmF1dGhvciA9IGF1dGhvcnNbYy5pYXV0aG9yXTtcblx0XHRcdFx0ZGVsZXRlIChjLyo6YW55Ki8pLmlhdXRob3I7XG5cdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIGMucmZ4ICYmIG9wdHMuc2hlZXRSb3dzIDw9IGMucmZ4LnIpIGJyZWFrO1xuXHRcdFx0XHRpZighYy50KSBjLnQgPSBcIlwiO1xuXHRcdFx0XHRkZWxldGUgYy5yZng7IG91dC5wdXNoKGMpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDBDMDA6IC8qICdCcnRVaWQnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogJ0JydEZSVEVuZCcgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI1OiAvKiAnQnJ0QUNCZWdpbicgKi8gYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNjogLyogJ0JydEFDRW5kJyAqLyBicmVhaztcblxuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jb21tZW50c19iaW4oZGF0YS8qOjosIG9wdHMqLykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIGlhdXRob3IvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzQgLyogQnJ0QmVnaW5Db21tZW50cyAqLyk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzYgLyogQnJ0QmVnaW5Db21tZW50QXV0aG9ycyAqLyk7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihjb21tZW50KSB7XG5cdFx0Y29tbWVudFsxXS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRcdGlmKGlhdXRob3IuaW5kZXhPZihjLmEpID4gLTEpIHJldHVybjtcblx0XHRcdGlhdXRob3IucHVzaChjLmEuc2xpY2UoMCw1NCkpO1xuXHRcdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzggLyogQnJ0Q29tbWVudEF1dGhvciAqLywgd3JpdGVfQnJ0Q29tbWVudEF1dGhvcihjLmEpKTtcblx0XHR9KTtcblx0fSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc3IC8qIEJydEVuZENvbW1lbnRBdXRob3JzICovKTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3OSAvKiBCcnRCZWdpbkNvbW1lbnRMaXN0ICovKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGNvbW1lbnQpIHtcblx0XHRjb21tZW50WzFdLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdFx0Yy5pYXV0aG9yID0gaWF1dGhvci5pbmRleE9mKGMuYSk7XG5cdFx0XHR2YXIgcmFuZ2UgPSB7czpkZWNvZGVfY2VsbChjb21tZW50WzBdKSxlOmRlY29kZV9jZWxsKGNvbW1lbnRbMF0pfTtcblx0XHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjdCIC8qIEJydEJlZ2luQ29tbWVudCAqLywgd3JpdGVfQnJ0QmVnaW5Db21tZW50KFtyYW5nZSwgY10pKTtcblx0XHRcdGlmKGMudCAmJiBjLnQubGVuZ3RoID4gMCkgd3JpdGVfcmVjb3JkKGJhLCAweDAyN0QgLyogQnJ0Q29tbWVudFRleHQgKi8sIHdyaXRlX0JydENvbW1lbnRUZXh0KGMpKTtcblx0XHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjdDIC8qIEJydEVuZENvbW1lbnQgKi8pO1xuXHRcdFx0ZGVsZXRlIGMuaWF1dGhvcjtcblx0XHR9KTtcblx0fSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjdBIC8qIEJydEVuZENvbW1lbnRMaXN0ICovKTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3NSAvKiBCcnRFbmRDb21tZW50cyAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbnZhciBDVF9WQkEgPSBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdFwiO1xuZnVuY3Rpb24gbWFrZV92YmFfeGxzKGNmYikge1xuICB2YXIgbmV3Y2ZiID0gQ0ZCLnV0aWxzLmNmYl9uZXcoeyByb290OiBcIlJcIiB9KTtcbiAgY2ZiLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGkpIHtcbiAgICBpZiAocC5zbGljZSgtMSkgPT09IFwiL1wiIHx8ICFwLm1hdGNoKC9fVkJBX1BST0pFQ1RfQ1VSLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIG5ld3BhdGggPSBwLnJlcGxhY2UoL15bXlxcL10qLywgXCJSXCIpLnJlcGxhY2UoL1xcL19WQkFfUFJPSkVDVF9DVVJcXHUwMDAwKi8sIFwiXCIpO1xuICAgIENGQi51dGlscy5jZmJfYWRkKG5ld2NmYiwgbmV3cGF0aCwgY2ZiLkZpbGVJbmRleFtpXS5jb250ZW50KTtcbiAgfSk7XG4gIHJldHVybiBDRkIud3JpdGUobmV3Y2ZiKTtcbn1cbmZ1bmN0aW9uIGZpbGxfdmJhX3hscyhjZmIsIHZiYSkge1xuICB2YmEuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocCwgaSkge1xuICAgIGlmIChpID09IDApXG4gICAgICByZXR1cm47XG4gICAgdmFyIG5ld3BhdGggPSBwLnJlcGxhY2UoL1teXFwvXSpbXFwvXS8sIFwiL19WQkFfUFJPSkVDVF9DVVIvXCIpO1xuICAgIGlmIChuZXdwYXRoLnNsaWNlKC0xKSAhPT0gXCIvXCIpXG4gICAgICBDRkIudXRpbHMuY2ZiX2FkZChjZmIsIG5ld3BhdGgsIHZiYS5GaWxlSW5kZXhbaV0uY29udGVudCk7XG4gIH0pO1xufVxudmFyIFZCQUZNVFMgPSBbXCJ4bHNiXCIsIFwieGxzbVwiLCBcInhsYW1cIiwgXCJiaWZmOFwiLCBcInhsYVwiXTtcbi8qIG1hY3JvIGFuZCBkaWFsb2cgc2hlZXQgc3R1YnMgKi9cbmZ1bmN0aW9uIHBhcnNlX2RzX2JpbigvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidkaWFsb2cnfTsgfVxuZnVuY3Rpb24gcGFyc2VfZHNfeG1sKC8qOjpkYXRhOmFueSwgb3B0cywgaWR4Om51bWJlciwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4geychdHlwZSc6J2RpYWxvZyd9OyB9XG5mdW5jdGlvbiBwYXJzZV9tc19iaW4oLyo6OmRhdGE6YW55LCBvcHRzLCBpZHg6bnVtYmVyLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiB7JyF0eXBlJzonbWFjcm8nfTsgfVxuZnVuY3Rpb24gcGFyc2VfbXNfeG1sKC8qOjpkYXRhOmFueSwgb3B0cywgaWR4Om51bWJlciwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4geychdHlwZSc6J21hY3JvJ307IH1cbi8qIFRPRE86IGl0IHdpbGwgYmUgdXNlZnVsIHRvIHBhcnNlIHRoZSBmdW5jdGlvbiBzdHIgKi9cbnZhciByY190b19hMSA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKXtcblx0dmFyIHJjcmVnZXggPSAvKF58W15BLVphLXpfXSlSKFxcWz8tP1xcZCtcXF18WzEtOV1cXGQqfClDKFxcWz8tP1xcZCtcXF18WzEtOV1cXGQqfCkoPyFbQS1aYS16MC05X10pL2c7XG5cdHZhciByY2Jhc2UvKjpDZWxsKi8gPSAoe3I6MCxjOjB9Lyo6YW55Ki8pO1xuXHRmdW5jdGlvbiByY2Z1bmMoJCQsJDEsJDIsJDMpIHtcblx0XHR2YXIgY1JlbCA9IGZhbHNlLCByUmVsID0gZmFsc2U7XG5cblx0XHRpZigkMi5sZW5ndGggPT0gMCkgclJlbCA9IHRydWU7XG5cdFx0ZWxzZSBpZigkMi5jaGFyQXQoMCkgPT0gXCJbXCIpIHsgclJlbCA9IHRydWU7ICQyID0gJDIuc2xpY2UoMSwgLTEpOyB9XG5cblx0XHRpZigkMy5sZW5ndGggPT0gMCkgY1JlbCA9IHRydWU7XG5cdFx0ZWxzZSBpZigkMy5jaGFyQXQoMCkgPT0gXCJbXCIpIHsgY1JlbCA9IHRydWU7ICQzID0gJDMuc2xpY2UoMSwgLTEpOyB9XG5cblx0XHR2YXIgUiA9ICQyLmxlbmd0aD4wP3BhcnNlSW50KCQyLDEwKXwwOjAsIEMgPSAkMy5sZW5ndGg+MD9wYXJzZUludCgkMywxMCl8MDowO1xuXG5cdFx0aWYoY1JlbCkgQyArPSByY2Jhc2UuYzsgZWxzZSAtLUM7XG5cdFx0aWYoclJlbCkgUiArPSByY2Jhc2UucjsgZWxzZSAtLVI7XG5cdFx0cmV0dXJuICQxICsgKGNSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX2NvbChDKSArIChyUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9yb3coUik7XG5cdH1cblx0cmV0dXJuIGZ1bmN0aW9uIHJjX3RvX2ExKGZzdHIvKjpzdHJpbmcqLywgYmFzZS8qOkNlbGwqLykvKjpzdHJpbmcqLyB7XG5cdFx0cmNiYXNlID0gYmFzZTtcblx0XHRyZXR1cm4gZnN0ci5yZXBsYWNlKHJjcmVnZXgsIHJjZnVuYyk7XG5cdH07XG59KSgpO1xuXG52YXIgY3JlZnJlZ2V4ID0gLyhefFteLl9BLVowLTldKShbJF0/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxcZHs0fXwxMDRbMC03XVxcZHszfXwxMDQ4WzAtNF1cXGR7Mn18MTA0ODVbMC02XVxcZHwxMDQ4NTdbMC02XXxbMS05XVxcZHswLDV9KSg/IVtfLlxcKEEtWmEtejAtOV0pL2c7XG52YXIgYTFfdG9fcmMgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCl7XG5cdHJldHVybiBmdW5jdGlvbiBhMV90b19yYyhmc3RyLyo6c3RyaW5nKi8sIGJhc2UvKjpDZWxsQWRkcmVzcyovKSB7XG5cdFx0cmV0dXJuIGZzdHIucmVwbGFjZShjcmVmcmVnZXgsIGZ1bmN0aW9uKCQwLCAkMSwgJDIsICQzLCAkNCwgJDUpIHtcblx0XHRcdHZhciBjID0gZGVjb2RlX2NvbCgkMykgLSAoJDIgPyAwIDogYmFzZS5jKTtcblx0XHRcdHZhciByID0gZGVjb2RlX3JvdygkNSkgLSAoJDQgPyAwIDogYmFzZS5yKTtcblx0XHRcdHZhciBSID0gKHIgPT0gMCA/IFwiXCIgOiAhJDQgPyBcIltcIiArIHIgKyBcIl1cIiA6IChyKzEpKTtcblx0XHRcdHZhciBDID0gKGMgPT0gMCA/IFwiXCIgOiAhJDIgPyBcIltcIiArIGMgKyBcIl1cIiA6IChjKzEpKTtcblx0XHRcdHJldHVybiAkMSArIFwiUlwiICsgUiArIFwiQ1wiICsgQztcblx0XHR9KTtcblx0fTtcbn0pKCk7XG5cbi8qIG5vIGRlZmluZWQgbmFtZSBjYW4gY29sbGlkZSB3aXRoIGEgdmFsaWQgY2VsbCBhZGRyZXNzIEExOlhGRDEwNDg1NzYgLi4uIGV4Y2VwdCBMT0cxMCEgKi9cbmZ1bmN0aW9uIHNoaWZ0X2Zvcm11bGFfc3RyKGYvKjpzdHJpbmcqLywgZGVsdGEvKjpDZWxsKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gZi5yZXBsYWNlKGNyZWZyZWdleCwgZnVuY3Rpb24oJDAsICQxLCAkMiwgJDMsICQ0LCAkNSkge1xuXHRcdHJldHVybiAkMSsoJDI9PVwiJFwiID8gJDIrJDMgOiBlbmNvZGVfY29sKGRlY29kZV9jb2woJDMpK2RlbHRhLmMpKSsoJDQ9PVwiJFwiID8gJDQrJDUgOiBlbmNvZGVfcm93KGRlY29kZV9yb3coJDUpICsgZGVsdGEucikpO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gc2hpZnRfZm9ybXVsYV94bHN4KGYvKjpzdHJpbmcqLywgcmFuZ2UvKjpzdHJpbmcqLywgY2VsbC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIHIgPSBkZWNvZGVfcmFuZ2UocmFuZ2UpLCBzID0gci5zLCBjID0gZGVjb2RlX2NlbGwoY2VsbCk7XG5cdHZhciBkZWx0YSA9IHtyOmMuciAtIHMuciwgYzpjLmMgLSBzLmN9O1xuXHRyZXR1cm4gc2hpZnRfZm9ybXVsYV9zdHIoZiwgZGVsdGEpO1xufVxuXG4vKiBUT0RPOiBwYXJzZSBmb3JtdWxhICovXG5mdW5jdGlvbiBmdXp6eWZtbGEoZi8qOnN0cmluZyovKS8qOmJvb2xlYW4qLyB7XG5cdGlmKGYubGVuZ3RoID09IDEpIHJldHVybiBmYWxzZTtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIF94bGZuKGYvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiBmLnJlcGxhY2UoL194bGZuXFwuL2csXCJcIik7XG59XG5mdW5jdGlvbiBwYXJzZXJlYWQxKGJsb2IpIHsgYmxvYi5sKz0xOyByZXR1cm47IH1cblxuLyogW01TLVhMU10gMi41LjUxICovXG5mdW5jdGlvbiBwYXJzZV9Db2xSZWxVKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdChsZW5ndGggPT0gMSA/IDEgOiAyKTtcblx0cmV0dXJuIFtjICYgMHgzRkZGLCAoYyA+PiAxNCkgJiAxLCAoYyA+PiAxNSkgJiAxXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDUgOyBbTVMtWExTQl0gMi41Ljk3Ljg5ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlQXJlYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHcgPSAyO1xuXHRpZihvcHRzKSB7XG5cdFx0aWYob3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUpIHJldHVybiBwYXJzZV9SZ2NlQXJlYV9CSUZGMihibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdGVsc2UgaWYob3B0cy5iaWZmID09IDEyKSB3ID0gNDtcblx0fVxuXHR2YXIgcj1ibG9iLnJlYWRfc2hpZnQodyksIFI9YmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgYz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgQz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHRyZXR1cm4geyBzOntyOnIsIGM6Y1swXSwgY1JlbDpjWzFdLCByUmVsOmNbMl19LCBlOntyOlIsIGM6Q1swXSwgY1JlbDpDWzFdLCByUmVsOkNbMl19IH07XG59XG4vKiBCSUZGIDItNSBlbmNvZGVzIGZsYWdzIGluIHRoZSByb3cgZmllbGQgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VBcmVhX0JJRkYyKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgcj1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpLCBSPXBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHZhciBjPWJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIEM9YmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4geyBzOntyOnJbMF0sIGM6YywgY1JlbDpyWzFdLCByUmVsOnJbMl19LCBlOntyOlJbMF0sIGM6QywgY1JlbDpSWzFdLCByUmVsOlJbMl19IH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA1IDsgW01TLVhMU0JdIDIuNS45Ny45MCAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUFyZWFSZWwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHJldHVybiBwYXJzZV9SZ2NlQXJlYV9CSUZGMihibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgcj1ibG9iLnJlYWRfc2hpZnQob3B0cy5iaWZmID09IDEyID8gNCA6IDIpLCBSPWJsb2IucmVhZF9zaGlmdChvcHRzLmJpZmYgPT0gMTIgPyA0IDogMik7XG5cdHZhciBjPXBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHZhciBDPXBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHJldHVybiB7IHM6e3I6ciwgYzpjWzBdLCBjUmVsOmNbMV0sIHJSZWw6Y1syXX0sIGU6e3I6UiwgYzpDWzBdLCBjUmVsOkNbMV0sIHJSZWw6Q1syXX0gfTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDkgOyBbTVMtWExTQl0gMi41Ljk3LjkxICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1KSByZXR1cm4gcGFyc2VfUmdjZUxvY19CSUZGMihibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgciA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAxMiA/IDQgOiAyKTtcblx0dmFyIGMgPSBwYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHRyZXR1cm4ge3I6ciwgYzpjWzBdLCBjUmVsOmNbMV0sIHJSZWw6Y1syXX07XG59XG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jX0JJRkYyKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgciA9IHBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4ge3I6clswXSwgYzpjLCBjUmVsOnJbMV0sIHJSZWw6clsyXX07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA3LCAyLjUuNDcgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VFbGZMb2MoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHtyOnIsIGM6YyAmIDB4RkYsIGZRdW90ZWQ6ISEoYyAmIDB4NDAwMCksIGNSZWw6Yz4+MTUsIHJSZWw6Yz4+MTUgfTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMTEgOyBbTVMtWExTQl0gMi41Ljk3LjkyIFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VMb2NSZWwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBiaWZmID0gb3B0cyAmJiBvcHRzLmJpZmYgPyBvcHRzLmJpZmYgOiA4O1xuXHRpZihiaWZmID49IDIgJiYgYmlmZiA8PSA1KSByZXR1cm4gcGFyc2VfUmdjZUxvY1JlbF9CSUZGMihibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgciA9IGJsb2IucmVhZF9zaGlmdChiaWZmID49IDEyID8gNCA6IDIpO1xuXHR2YXIgY2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjUmVsID0gKGNsICYgMHg0MDAwKSA+PiAxNCwgclJlbCA9IChjbCAmIDB4ODAwMCkgPj4gMTU7XG5cdGNsICY9IDB4M0ZGRjtcblx0aWYoclJlbCA9PSAxKSB3aGlsZShyID4gMHg3RkZGRikgciAtPSAweDEwMDAwMDtcblx0aWYoY1JlbCA9PSAxKSB3aGlsZShjbCA+IDB4MUZGRikgY2wgPSBjbCAtIDB4NDAwMDtcblx0cmV0dXJuIHtyOnIsYzpjbCxjUmVsOmNSZWwsclJlbDpyUmVsfTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1JnY2VMb2NSZWxfQklGRjIoYmxvYi8qOjosIGxlbmd0aDpudW1iZXIsIG9wdHMqLykge1xuXHR2YXIgcmwgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgclJlbCA9IChybCAmIDB4ODAwMCkgPj4gMTUsIGNSZWwgPSAocmwgJiAweDQwMDApID4+IDE0O1xuXHRybCAmPSAweDNGRkY7XG5cdGlmKHJSZWwgPT0gMSAmJiBybCA+PSAweDIwMDApIHJsID0gcmwgLSAweDQwMDA7XG5cdGlmKGNSZWwgPT0gMSAmJiBjID49IDB4ODApIGMgPSBjIC0gMHgxMDA7XG5cdHJldHVybiB7cjpybCxjOmMsY1JlbDpjUmVsLHJSZWw6clJlbH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMjcgOyBbTVMtWExTQl0gMi41Ljk3LjE4ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcmVhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBhcmVhID0gcGFyc2VfUmdjZUFyZWEoYmxvYiwgb3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUgPyA2IDogOCwgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgYXJlYV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMjggOyBbTVMtWExTQl0gMi41Ljk3LjE5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcmVhM2QoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMiwgJ2knKTtcblx0dmFyIHcgPSA4O1xuXHRpZihvcHRzKSBzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSA1OiBibG9iLmwgKz0gMTI7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlIDEyOiB3ID0gMTI7IGJyZWFrO1xuXHR9XG5cdHZhciBhcmVhID0gcGFyc2VfUmdjZUFyZWEoYmxvYiwgdywgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgaXh0aSwgYXJlYV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMjkgOyBbTVMtWExTQl0gMi41Ljk3LjIwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcmVhRXJyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdGJsb2IubCArPSBvcHRzICYmIChvcHRzLmJpZmYgPiA4KSA/IDEyIDogKG9wdHMuYmlmZiA8IDggPyA2IDogOCk7XG5cdHJldHVybiBbdHlwZV07XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjMwIDsgW01TLVhMU0JdIDIuNS45Ny4yMSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYUVycjNkKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgdyA9IDg7XG5cdGlmKG9wdHMpIHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDU6IGJsb2IubCArPSAxMjsgdyA9IDY7IGJyZWFrO1xuXHRcdGNhc2UgMTI6IHcgPSAxMjsgYnJlYWs7XG5cdH1cblx0YmxvYi5sICs9IHc7XG5cdHJldHVybiBbdHlwZSwgaXh0aV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzEgOyBbTVMtWExTQl0gMi41Ljk3LjIyICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcmVhTihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgYXJlYSA9IHBhcnNlX1JnY2VBcmVhUmVsKGJsb2IsIGxlbmd0aCAtIDEsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGFyZWFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMyIDsgW01TLVhMU0JdIDIuNS45Ny4yMyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJyYXkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0YmxvYi5sICs9IG9wdHMuYmlmZiA9PSAyID8gNiA6IG9wdHMuYmlmZiA9PSAxMiA/IDE0IDogNztcblx0cmV0dXJuIFt0eXBlXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zMyA7IFtNUy1YTFNCXSAyLjUuOTcuMjQgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJCYXhjZWwoYmxvYikge1xuXHR2YXIgYml0U2VtaSA9IGJsb2JbYmxvYi5sKzFdICYgMHgwMTsgLyogMSA9IHZvbGF0aWxlICovXG5cdHZhciBiaXRCYXhjZWwgPSAxO1xuXHRibG9iLmwgKz0gNDtcblx0cmV0dXJuIFtiaXRTZW1pLCBiaXRCYXhjZWxdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM0IDsgW01TLVhMU0JdIDIuNS45Ny4yNSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0ckNob29zZShibG9iLCBsZW5ndGgsIG9wdHMpLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0YmxvYi5sICs9Mjtcblx0dmFyIG9mZnNldCA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHR2YXIgby8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHQvKiBvZmZzZXQgaXMgMSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyAqL1xuXHRmb3IodmFyIGkgPSAwOyBpIDw9IG9mZnNldDsgKytpKSBvLnB1c2goYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zNSA7IFtNUy1YTFNCXSAyLjUuOTcuMjYgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJHb3RvKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgYml0R290byA9IChibG9iW2Jsb2IubCsxXSAmIDB4RkYpID8gMSA6IDA7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2JpdEdvdG8sIGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zNiA7IFtNUy1YTFNCXSAyLjUuOTcuMjcgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJJZihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpdElmID0gKGJsb2JbYmxvYi5sKzFdICYgMHhGRikgPyAxIDogMDtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbYml0SWYsIGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpXTtcbn1cblxuLyogW01TLVhMU0JdIDIuNS45Ny4yOCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0cklmRXJyb3IoYmxvYikge1xuXHR2YXIgYml0SWYgPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtiaXRJZiwgYmxvYi5yZWFkX3NoaWZ0KDIpXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zNyA7IFtNUy1YTFNCXSAyLjUuOTcuMjkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTZW1pKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgYml0U2VtaSA9IChibG9iW2Jsb2IubCsxXSAmIDB4RkYpID8gMSA6IDA7XG5cdGJsb2IubCArPSBvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMyA6IDQ7XG5cdHJldHVybiBbYml0U2VtaV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDAgOyBbTVMtWExTQl0gMi41Ljk3LjMyICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU3BhY2VUeXBlKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgdHlwZSA9IGJsb2IucmVhZF9zaGlmdCgxKSwgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW3R5cGUsIGNjaF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzggOyBbTVMtWExTQl0gMi41Ljk3LjMwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU3BhY2UoYmxvYikge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBwYXJzZV9QdGdBdHRyU3BhY2VUeXBlKGJsb2IsIDIpO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM5IDsgW01TLVhMU0JdIDIuNS45Ny4zMSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNwYWNlU2VtaShibG9iKSB7XG5cdGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHBhcnNlX1B0Z0F0dHJTcGFjZVR5cGUoYmxvYiwgMik7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODQgOyBbTVMtWExTQl0gMi41Ljk3LjY4IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1JlZihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0Ly92YXIgcHRnID0gYmxvYltibG9iLmxdICYgMHgxRjtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgbG9jID0gcGFyc2VfUmdjZUxvYyhibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBsb2NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg4IDsgW01TLVhMU0JdIDIuNS45Ny43MiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWZOKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubF0gJiAweDYwKT4+NTtcblx0YmxvYi5sICs9IDE7XG5cdHZhciBsb2MgPSBwYXJzZV9SZ2NlTG9jUmVsKGJsb2IsIDAsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGxvY107XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODUgOyBbTVMtWExTQl0gMi41Ljk3LjY5IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1JlZjNkKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubF0gJiAweDYwKT4+NTtcblx0YmxvYi5sICs9IDE7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyBYdGlJbmRleFxuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA9PSA1KSBibG9iLmwgKz0gMTI7XG5cdHZhciBsb2MgPSBwYXJzZV9SZ2NlTG9jKGJsb2IsIDAsIG9wdHMpOyAvLyBUT0RPOiBvciBSZ2NlTG9jUmVsXG5cdHJldHVybiBbdHlwZSwgaXh0aSwgbG9jXTtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjYyIDsgW01TLVhMU0JdIDIuNS45Ny40NSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdGdW5jKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHQvL3ZhciBwdGcgPSBibG9iW2Jsb2IubF0gJiAweDFGO1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubF0gJiAweDYwKT4+NTtcblx0YmxvYi5sICs9IDE7XG5cdHZhciBpZnRhYiA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA8PSAzID8gMSA6IDIpO1xuXHRyZXR1cm4gW0Z0YWJBcmdjW2lmdGFiXSwgRnRhYltpZnRhYl0sIHR5cGVdO1xufVxuLyogW01TLVhMU10gMi41LjE5OC42MyA7IFtNUy1YTFNCXSAyLjUuOTcuNDYgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRnVuY1ZhcihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSBibG9iW2Jsb2IubCsrXTtcblx0dmFyIGNwYXJhbXMgPSBibG9iLnJlYWRfc2hpZnQoMSksIHRhYiA9IG9wdHMgJiYgb3B0cy5iaWZmIDw9IDMgPyBbKHR5cGUgPT0gMHg1OCA/IC0xIDogMCksIGJsb2IucmVhZF9zaGlmdCgxKV06IHBhcnNldGFiKGJsb2IpO1xuXHRyZXR1cm4gW2NwYXJhbXMsICh0YWJbMF0gPT09IDAgPyBGdGFiIDogQ2V0YWIpW3RhYlsxXV1dO1xufVxuXG5mdW5jdGlvbiBwYXJzZXRhYihibG9iKSB7XG5cdHJldHVybiBbYmxvYltibG9iLmwrMV0+PjcsIGJsb2IucmVhZF9zaGlmdCgyKSAmIDB4N0ZGRl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDEgOyBbTVMtWExTQl0gMi41Ljk3LjMzICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU3VtKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gb3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDMgOiA0OyByZXR1cm47XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNTggOyBbTVMtWExTQl0gMi41Ljk3LjQwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFeHAoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCsrO1xuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA9PSAxMikgcmV0dXJuIFtibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSwgMF07XG5cdHZhciByb3cgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2wgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0cmV0dXJuIFtyb3csIGNvbF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNTcgOyBbTVMtWExTQl0gMi41Ljk3LjM5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFcnIoYmxvYikgeyBibG9iLmwrKzsgcmV0dXJuIEJFcnJbYmxvYi5yZWFkX3NoaWZ0KDEpXTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjY2IDsgW01TLVhMU0JdIDIuNS45Ny40OSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnSW50KGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoMik7IH1cblxuLyogW01TLVhMU10gMi41LjE5OC40MiA7IFtNUy1YTFNCXSAyLjUuOTcuMzQgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0Jvb2woYmxvYikgeyBibG9iLmwrKzsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdCgxKSE9PTA7fVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljc5IDsgW01TLVhMU0JdIDIuNS45Ny42MyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnTnVtKGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBwYXJzZV9YbnVtKGJsb2IsIDgpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODkgOyBbTVMtWExTQl0gMi41Ljk3Ljc0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdTdHIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7IGJsb2IubCsrOyByZXR1cm4gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLTEsIG9wdHMpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTIuMTEyICsgMi41LjE5Mi4xMXszLDQsNSw2LDd9ICovXG4vKiBbTVMtWExTQl0gMi41Ljk3LjkzICsgMi41Ljk3Ljl7NCw1LDYsN30gKi9cbmZ1bmN0aW9uIHBhcnNlX1NlckFyKGJsb2IsIGJpZmYvKjpudW1iZXIqLykge1xuXHR2YXIgdmFsID0gW2Jsb2IucmVhZF9zaGlmdCgxKV07XG5cdGlmKGJpZmYgPT0gMTIpIHN3aXRjaCh2YWxbMF0pIHtcblx0XHRjYXNlIDB4MDI6IHZhbFswXSA9IDB4MDQ7IGJyZWFrOyAvKiBTZXJCb29sICovXG5cdFx0Y2FzZSAweDA0OiB2YWxbMF0gPSAweDEwOyBicmVhazsgLyogU2VyRXJyICovXG5cdFx0Y2FzZSAweDAwOiB2YWxbMF0gPSAweDAxOyBicmVhazsgLyogU2VyTnVtICovXG5cdFx0Y2FzZSAweDAxOiB2YWxbMF0gPSAweDAyOyBicmVhazsgLyogU2VyU3RyICovXG5cdH1cblx0c3dpdGNoKHZhbFswXSkge1xuXHRcdGNhc2UgMHgwNDogLyogU2VyQm9vbCAtLSBib29sZWFuICovXG5cdFx0XHR2YWxbMV0gPSBwYXJzZWJvb2woYmxvYiwgMSkgPyAnVFJVRScgOiAnRkFMU0UnO1xuXHRcdFx0aWYoYmlmZiAhPSAxMikgYmxvYi5sICs9IDc7IGJyZWFrO1xuXHRcdGNhc2UgMHgyNTogLyogYXBwZWFycyB0byBiZSBhbiBhbGlhcyAqL1xuXHRcdGNhc2UgMHgxMDogLyogU2VyRXJyIC0tIGVycm9yICovXG5cdFx0XHR2YWxbMV0gPSBCRXJyW2Jsb2JbYmxvYi5sXV07XG5cdFx0XHRibG9iLmwgKz0gKChiaWZmID09IDEyKSA/IDQgOiA4KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDAwOiAvKiBTZXJOaWwgLS0gaG9uZXN0bHksIEknbSBub3Qgc3VyZSBob3cgdG8gcmVwcm9kdWNlIHRoaXMgKi9cblx0XHRcdGJsb2IubCArPSA4OyBicmVhaztcblx0XHRjYXNlIDB4MDE6IC8qIFNlck51bSAtLSBYbnVtICovXG5cdFx0XHR2YWxbMV0gPSBwYXJzZV9YbnVtKGJsb2IsIDgpOyBicmVhaztcblx0XHRjYXNlIDB4MDI6IC8qIFNlclN0ciAtLSBYTFVuaWNvZGVTdHJpbmcgKDwyNTYgY2hhcnMpICovXG5cdFx0XHR2YWxbMV0gPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIDAsIHtiaWZmOmJpZmYgPiAwICYmIGJpZmYgPCA4ID8gMiA6IGJpZmZ9KTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiQmFkIFNlckFyOiBcIiArIHZhbFswXSk7IC8qIFVucmVhY2hhYmxlICovXG5cdH1cblx0cmV0dXJuIHZhbDtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC42MSA7IFtNUy1YTFNCXSAyLjUuOTcuNDQgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0V4dHJhTWVtKGJsb2IsIGNjZSwgb3B0cykge1xuXHR2YXIgY291bnQgPSBibG9iLnJlYWRfc2hpZnQoKG9wdHMuYmlmZiA9PSAxMikgPyA0IDogMik7XG5cdHZhciBvdXQvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGNvdW50OyArK2kpIG91dC5wdXNoKCgob3B0cy5iaWZmID09IDEyKSA/IHBhcnNlX1VuY2hlY2tlZFJmWCA6IHBhcnNlX1JlZjhVKShibG9iLCA4KSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNTkgOyBbTVMtWExTQl0gMi41Ljk3LjQxICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFeHRyYUFycmF5KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcm93cyA9IDAsIGNvbHMgPSAwO1xuXHRpZihvcHRzLmJpZmYgPT0gMTIpIHtcblx0XHRyb3dzID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyAvLyBEUndcblx0XHRjb2xzID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyAvLyBEQ29sXG5cdH0gZWxzZSB7XG5cdFx0Y29scyA9IDEgKyBibG9iLnJlYWRfc2hpZnQoMSk7IC8vRENvbEJ5dGVVXG5cdFx0cm93cyA9IDEgKyBibG9iLnJlYWRfc2hpZnQoMik7IC8vRFJ3XG5cdH1cblx0aWYob3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDwgOCkgeyAtLXJvd3M7IGlmKC0tY29scyA9PSAwKSBjb2xzID0gMHgxMDA7IH1cblx0Ly8gJEZsb3dJZ25vcmVcblx0Zm9yKHZhciBpID0gMCwgby8qOkFycmF5PEFycmF5PGFueT4+Ki8gPSBbXTsgaSAhPSByb3dzICYmIChvW2ldID0gW10pOyArK2kpXG5cdFx0Zm9yKHZhciBqID0gMDsgaiAhPSBjb2xzOyArK2opIG9baV1bal0gPSBwYXJzZV9TZXJBcihibG9iLCBvcHRzLmJpZmYpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43NiA7IFtNUy1YTFNCXSAyLjUuOTcuNjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z05hbWUoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgdyA9ICghb3B0cyB8fCAob3B0cy5iaWZmID49IDgpKSA/IDQgOiAyO1xuXHR2YXIgbmFtZWluZGV4ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHRzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSAyOiBibG9iLmwgKz0gNTsgYnJlYWs7XG5cdFx0Y2FzZSAzOiBjYXNlIDQ6IGJsb2IubCArPSA4OyBicmVhaztcblx0XHRjYXNlIDU6IGJsb2IubCArPSAxMjsgYnJlYWs7XG5cdH1cblx0cmV0dXJuIFt0eXBlLCAwLCBuYW1laW5kZXhdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljc3IDsgW01TLVhMU0JdIDIuNS45Ny42MSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnTmFtZVgoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA9PSA1KSByZXR1cm4gcGFyc2VfUHRnTmFtZVhfQklGRjUoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyBYdGlJbmRleFxuXHR2YXIgbmFtZWluZGV4ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW3R5cGUsIGl4dGksIG5hbWVpbmRleF07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdOYW1lWF9CSUZGNShibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIsICdpJyk7IC8vIFh0aUluZGV4XG5cdGJsb2IubCArPSA4O1xuXHR2YXIgbmFtZWluZGV4ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMTI7XG5cdHJldHVybiBbdHlwZSwgaXh0aSwgbmFtZWluZGV4XTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43MCA7IFtNUy1YTFNCXSAyLjUuOTcuNTQgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbUFyZWEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHRibG9iLmwgKz0gKG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAzIDogNCk7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjcyIDsgW01TLVhMU0JdIDIuNS45Ny41NiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnTWVtRnVuYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODYgOyBbTVMtWExTQl0gMi41Ljk3LjY5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWZFcnIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHRibG9iLmwgKz0gNDtcblx0aWYob3B0cy5iaWZmIDwgOCkgYmxvYi5sLS07XG5cdGlmKG9wdHMuYmlmZiA9PSAxMikgYmxvYi5sICs9IDI7XG5cdHJldHVybiBbdHlwZV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODcgOyBbTVMtWExTQl0gMi41Ljk3LjcxICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWZFcnIzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHcgPSA0O1xuXHRpZihvcHRzKSBzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSA1OiB3ID0gMTU7IGJyZWFrO1xuXHRcdGNhc2UgMTI6IHcgPSA2OyBicmVhaztcblx0fVxuXHRibG9iLmwgKz0gdztcblx0cmV0dXJuIFt0eXBlLCBpeHRpXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43MSA7IFtNUy1YTFNCXSAyLjUuOTcuNTUgKi9cbnZhciBwYXJzZV9QdGdNZW1FcnIgPSBwYXJzZW5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjczICA7IFtNUy1YTFNCXSAyLjUuOTcuNTcgKi9cbnZhciBwYXJzZV9QdGdNZW1Ob01lbSA9IHBhcnNlbm9vcDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguOTIgKi9cbnZhciBwYXJzZV9QdGdUYmwgPSBwYXJzZW5vb3A7XG5cbmZ1bmN0aW9uIHBhcnNlX1B0Z0VsZkxvYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbcGFyc2VfUmdjZUVsZkxvYyhibG9iLCA0LCBvcHRzKV07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdFbGZOb29wKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gNjtcblx0cmV0dXJuIFtdO1xufVxuLyogW01TLVhMU10gMi41LjE5OC40NiAqL1xudmFyIHBhcnNlX1B0Z0VsZkNvbCA9IHBhcnNlX1B0Z0VsZkxvYztcbi8qIFtNUy1YTFNdIDIuNS4xOTguNDcgKi9cbnZhciBwYXJzZV9QdGdFbGZDb2xTID0gcGFyc2VfUHRnRWxmTm9vcDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguNDggKi9cbnZhciBwYXJzZV9QdGdFbGZDb2xTViA9IHBhcnNlX1B0Z0VsZk5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ5ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sViA9IHBhcnNlX1B0Z0VsZkxvYztcbi8qIFtNUy1YTFNdIDIuNS4xOTguNTAgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0VsZkxlbChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbcGFyc2V1aW50MTYoYmxvYiksIGJsb2IucmVhZF9zaGlmdCgyKSAmIDB4MDFdO1xufVxuLyogW01TLVhMU10gMi41LjE5OC41MSAqL1xudmFyIHBhcnNlX1B0Z0VsZlJhZGljYWwgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUyICovXG52YXIgcGFyc2VfUHRnRWxmUmFkaWNhbExlbCA9IHBhcnNlX1B0Z0VsZkxlbDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguNTMgKi9cbnZhciBwYXJzZV9QdGdFbGZSYWRpY2FsUyA9IHBhcnNlX1B0Z0VsZk5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjU0ICovXG52YXIgcGFyc2VfUHRnRWxmUncgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjU1ICovXG52YXIgcGFyc2VfUHRnRWxmUndWID0gcGFyc2VfUHRnRWxmTG9jO1xuXG4vKiBbTVMtWExTQl0gMi41Ljk3LjUyIFRPRE8gKi9cbnZhciBQdGdMaXN0UlQgPSBbXG5cdFwiRGF0YVwiLFxuXHRcIkFsbFwiLFxuXHRcIkhlYWRlcnNcIixcblx0XCI/P1wiLFxuXHRcIj9EYXRhMlwiLFxuXHRcIj8/XCIsXG5cdFwiP0RhdGFIZWFkZXJzXCIsXG5cdFwiPz9cIixcblx0XCJUb3RhbHNcIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiPz9cIixcblx0XCI/RGF0YVRvdGFsc1wiLFxuXHRcIj8/XCIsXG5cdFwiPz9cIixcblx0XCI/P1wiLFxuXHRcIj9DdXJyZW50XCJcbl07XG5mdW5jdGlvbiBwYXJzZV9QdGdMaXN0KGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlkeCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBDID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcnQgPSBQdGdMaXN0UlRbKGZsYWdzID4+IDIpICYgMHgxRl07XG5cdHJldHVybiB7aXh0aTogaXh0aSwgY29sdHlwZTooZmxhZ3MmMHgzKSwgcnQ6cnQsIGlkeDppZHgsIGM6YywgQzpDfTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguOTEgOyBbTVMtWExTQl0gMi41Ljk3Ljc2ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdTeE5hbWUoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2Jsb2IucmVhZF9zaGlmdCg0KV07XG59XG5cbi8qIFtYTFNdIG9sZCBzcGVjICovXG5mdW5jdGlvbiBwYXJzZV9QdGdTaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IDU7XG5cdGJsb2IubCArPSAyO1xuXHRibG9iLmwgKz0gKG9wdHMuYmlmZiA9PSAyID8gMSA6IDQpO1xuXHRyZXR1cm4gW1wiUFRHU0hFRVRcIl07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdFbmRTaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IChvcHRzLmJpZmYgPT0gMiA/IDQgOiA1KTtcblx0cmV0dXJuIFtcIlBUR0VORFNIRUVUXCJdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnTWVtQXJlYU4oYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gW3R5cGUsIGNjZV07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdNZW1Ob01lbU4oYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gW3R5cGUsIGNjZV07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyTm9vcChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDQ7XG5cdHJldHVybiBbMCwgMF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMjUgOyBbTVMtWExTQl0gMi41Ljk3LjE2ICovXG52YXIgUHRnVHlwZXMgPSB7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOidQdGdFeHAnLCBmOnBhcnNlX1B0Z0V4cCB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjonUHRnVGJsJywgZjpwYXJzZV9QdGdUYmwgfSxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiB7IG46J1B0Z0FkZCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwNC8qOjpdKi86IHsgbjonUHRnU3ViJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogeyBuOidQdGdNdWwnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46J1B0Z0RpdicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IHsgbjonUHRnUG93ZXInLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDgvKjo6XSovOiB7IG46J1B0Z0NvbmNhdCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwOS8qOjpdKi86IHsgbjonUHRnTHQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEEvKjo6XSovOiB7IG46J1B0Z0xlJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogeyBuOidQdGdFcScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwQy8qOjpdKi86IHsgbjonUHRnR2UnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEQvKjo6XSovOiB7IG46J1B0Z0d0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBFLyo6Ol0qLzogeyBuOidQdGdOZScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwRi8qOjpdKi86IHsgbjonUHRnSXNlY3QnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46J1B0Z1VuaW9uJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDExLyo6Ol0qLzogeyBuOidQdGdSYW5nZScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxMi8qOjpdKi86IHsgbjonUHRnVXBsdXMnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTMvKjo6XSovOiB7IG46J1B0Z1VtaW51cycsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxNC8qOjpdKi86IHsgbjonUHRnUGVyY2VudCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxNS8qOjpdKi86IHsgbjonUHRnUGFyZW4nLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTYvKjo6XSovOiB7IG46J1B0Z01pc3NBcmcnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTcvKjo6XSovOiB7IG46J1B0Z1N0cicsIGY6cGFyc2VfUHRnU3RyIH0sXG5cdC8qOjpbKi8weDFBLyo6Ol0qLzogeyBuOidQdGdTaGVldCcsIGY6cGFyc2VfUHRnU2hlZXQgfSxcblx0Lyo6OlsqLzB4MUIvKjo6XSovOiB7IG46J1B0Z0VuZFNoZWV0JywgZjpwYXJzZV9QdGdFbmRTaGVldCB9LFxuXHQvKjo6WyovMHgxQy8qOjpdKi86IHsgbjonUHRnRXJyJywgZjpwYXJzZV9QdGdFcnIgfSxcblx0Lyo6OlsqLzB4MUQvKjo6XSovOiB7IG46J1B0Z0Jvb2wnLCBmOnBhcnNlX1B0Z0Jvb2wgfSxcblx0Lyo6OlsqLzB4MUUvKjo6XSovOiB7IG46J1B0Z0ludCcsIGY6cGFyc2VfUHRnSW50IH0sXG5cdC8qOjpbKi8weDFGLyo6Ol0qLzogeyBuOidQdGdOdW0nLCBmOnBhcnNlX1B0Z051bSB9LFxuXHQvKjo6WyovMHgyMC8qOjpdKi86IHsgbjonUHRnQXJyYXknLCBmOnBhcnNlX1B0Z0FycmF5IH0sXG5cdC8qOjpbKi8weDIxLyo6Ol0qLzogeyBuOidQdGdGdW5jJywgZjpwYXJzZV9QdGdGdW5jIH0sXG5cdC8qOjpbKi8weDIyLyo6Ol0qLzogeyBuOidQdGdGdW5jVmFyJywgZjpwYXJzZV9QdGdGdW5jVmFyIH0sXG5cdC8qOjpbKi8weDIzLyo6Ol0qLzogeyBuOidQdGdOYW1lJywgZjpwYXJzZV9QdGdOYW1lIH0sXG5cdC8qOjpbKi8weDI0Lyo6Ol0qLzogeyBuOidQdGdSZWYnLCBmOnBhcnNlX1B0Z1JlZiB9LFxuXHQvKjo6WyovMHgyNS8qOjpdKi86IHsgbjonUHRnQXJlYScsIGY6cGFyc2VfUHRnQXJlYSB9LFxuXHQvKjo6WyovMHgyNi8qOjpdKi86IHsgbjonUHRnTWVtQXJlYScsIGY6cGFyc2VfUHRnTWVtQXJlYSB9LFxuXHQvKjo6WyovMHgyNy8qOjpdKi86IHsgbjonUHRnTWVtRXJyJywgZjpwYXJzZV9QdGdNZW1FcnIgfSxcblx0Lyo6OlsqLzB4MjgvKjo6XSovOiB7IG46J1B0Z01lbU5vTWVtJywgZjpwYXJzZV9QdGdNZW1Ob01lbSB9LFxuXHQvKjo6WyovMHgyOS8qOjpdKi86IHsgbjonUHRnTWVtRnVuYycsIGY6cGFyc2VfUHRnTWVtRnVuYyB9LFxuXHQvKjo6WyovMHgyQS8qOjpdKi86IHsgbjonUHRnUmVmRXJyJywgZjpwYXJzZV9QdGdSZWZFcnIgfSxcblx0Lyo6OlsqLzB4MkIvKjo6XSovOiB7IG46J1B0Z0FyZWFFcnInLCBmOnBhcnNlX1B0Z0FyZWFFcnIgfSxcblx0Lyo6OlsqLzB4MkMvKjo6XSovOiB7IG46J1B0Z1JlZk4nLCBmOnBhcnNlX1B0Z1JlZk4gfSxcblx0Lyo6OlsqLzB4MkQvKjo6XSovOiB7IG46J1B0Z0FyZWFOJywgZjpwYXJzZV9QdGdBcmVhTiB9LFxuXHQvKjo6WyovMHgyRS8qOjpdKi86IHsgbjonUHRnTWVtQXJlYU4nLCBmOnBhcnNlX1B0Z01lbUFyZWFOIH0sXG5cdC8qOjpbKi8weDJGLyo6Ol0qLzogeyBuOidQdGdNZW1Ob01lbU4nLCBmOnBhcnNlX1B0Z01lbU5vTWVtTiB9LFxuXHQvKjo6WyovMHgzOS8qOjpdKi86IHsgbjonUHRnTmFtZVgnLCBmOnBhcnNlX1B0Z05hbWVYIH0sXG5cdC8qOjpbKi8weDNBLyo6Ol0qLzogeyBuOidQdGdSZWYzZCcsIGY6cGFyc2VfUHRnUmVmM2QgfSxcblx0Lyo6OlsqLzB4M0IvKjo6XSovOiB7IG46J1B0Z0FyZWEzZCcsIGY6cGFyc2VfUHRnQXJlYTNkIH0sXG5cdC8qOjpbKi8weDNDLyo6Ol0qLzogeyBuOidQdGdSZWZFcnIzZCcsIGY6cGFyc2VfUHRnUmVmRXJyM2QgfSxcblx0Lyo6OlsqLzB4M0QvKjo6XSovOiB7IG46J1B0Z0FyZWFFcnIzZCcsIGY6cGFyc2VfUHRnQXJlYUVycjNkIH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge31cbn07XG4vKiBUaGVzZSBhcmUgZHVwbGljYXRlZCBpbiB0aGUgUHRnVHlwZXMgdGFibGUgKi9cbnZhciBQdGdEdXBlcyA9IHtcblx0Lyo6OlsqLzB4NDAvKjo6XSovOiAweDIwLCAvKjo6WyovMHg2MC8qOjpdKi86IDB4MjAsXG5cdC8qOjpbKi8weDQxLyo6Ol0qLzogMHgyMSwgLyo6OlsqLzB4NjEvKjo6XSovOiAweDIxLFxuXHQvKjo6WyovMHg0Mi8qOjpdKi86IDB4MjIsIC8qOjpbKi8weDYyLyo6Ol0qLzogMHgyMixcblx0Lyo6OlsqLzB4NDMvKjo6XSovOiAweDIzLCAvKjo6WyovMHg2My8qOjpdKi86IDB4MjMsXG5cdC8qOjpbKi8weDQ0Lyo6Ol0qLzogMHgyNCwgLyo6OlsqLzB4NjQvKjo6XSovOiAweDI0LFxuXHQvKjo6WyovMHg0NS8qOjpdKi86IDB4MjUsIC8qOjpbKi8weDY1Lyo6Ol0qLzogMHgyNSxcblx0Lyo6OlsqLzB4NDYvKjo6XSovOiAweDI2LCAvKjo6WyovMHg2Ni8qOjpdKi86IDB4MjYsXG5cdC8qOjpbKi8weDQ3Lyo6Ol0qLzogMHgyNywgLyo6OlsqLzB4NjcvKjo6XSovOiAweDI3LFxuXHQvKjo6WyovMHg0OC8qOjpdKi86IDB4MjgsIC8qOjpbKi8weDY4Lyo6Ol0qLzogMHgyOCxcblx0Lyo6OlsqLzB4NDkvKjo6XSovOiAweDI5LCAvKjo6WyovMHg2OS8qOjpdKi86IDB4MjksXG5cdC8qOjpbKi8weDRBLyo6Ol0qLzogMHgyQSwgLyo6OlsqLzB4NkEvKjo6XSovOiAweDJBLFxuXHQvKjo6WyovMHg0Qi8qOjpdKi86IDB4MkIsIC8qOjpbKi8weDZCLyo6Ol0qLzogMHgyQixcblx0Lyo6OlsqLzB4NEMvKjo6XSovOiAweDJDLCAvKjo6WyovMHg2Qy8qOjpdKi86IDB4MkMsXG5cdC8qOjpbKi8weDRELyo6Ol0qLzogMHgyRCwgLyo6OlsqLzB4NkQvKjo6XSovOiAweDJELFxuXHQvKjo6WyovMHg0RS8qOjpdKi86IDB4MkUsIC8qOjpbKi8weDZFLyo6Ol0qLzogMHgyRSxcblx0Lyo6OlsqLzB4NEYvKjo6XSovOiAweDJGLCAvKjo6WyovMHg2Ri8qOjpdKi86IDB4MkYsXG5cdC8qOjpbKi8weDU4Lyo6Ol0qLzogMHgyMiwgLyo6OlsqLzB4NzgvKjo6XSovOiAweDIyLFxuXHQvKjo6WyovMHg1OS8qOjpdKi86IDB4MzksIC8qOjpbKi8weDc5Lyo6Ol0qLzogMHgzOSxcblx0Lyo6OlsqLzB4NUEvKjo6XSovOiAweDNBLCAvKjo6WyovMHg3QS8qOjpdKi86IDB4M0EsXG5cdC8qOjpbKi8weDVCLyo6Ol0qLzogMHgzQiwgLyo6OlsqLzB4N0IvKjo6XSovOiAweDNCLFxuXHQvKjo6WyovMHg1Qy8qOjpdKi86IDB4M0MsIC8qOjpbKi8weDdDLyo6Ol0qLzogMHgzQyxcblx0Lyo6OlsqLzB4NUQvKjo6XSovOiAweDNELCAvKjo6WyovMHg3RC8qOjpdKi86IDB4M0Rcbn07XG5cbnZhciBQdGcxOCA9IHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46J1B0Z0VsZkxlbCcsIGY6cGFyc2VfUHRnRWxmTGVsIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOidQdGdFbGZSdycsIGY6cGFyc2VfUHRnRWxmUncgfSxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiB7IG46J1B0Z0VsZkNvbCcsIGY6cGFyc2VfUHRnRWxmQ29sIH0sXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogeyBuOidQdGdFbGZSd1YnLCBmOnBhcnNlX1B0Z0VsZlJ3ViB9LFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IHsgbjonUHRnRWxmQ29sVicsIGY6cGFyc2VfUHRnRWxmQ29sViB9LFxuXHQvKjo6WyovMHgwQS8qOjpdKi86IHsgbjonUHRnRWxmUmFkaWNhbCcsIGY6cGFyc2VfUHRnRWxmUmFkaWNhbCB9LFxuXHQvKjo6WyovMHgwQi8qOjpdKi86IHsgbjonUHRnRWxmUmFkaWNhbFMnLCBmOnBhcnNlX1B0Z0VsZlJhZGljYWxTIH0sXG5cdC8qOjpbKi8weDBELyo6Ol0qLzogeyBuOidQdGdFbGZDb2xTJywgZjpwYXJzZV9QdGdFbGZDb2xTIH0sXG5cdC8qOjpbKi8weDBGLyo6Ol0qLzogeyBuOidQdGdFbGZDb2xTVicsIGY6cGFyc2VfUHRnRWxmQ29sU1YgfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46J1B0Z0VsZlJhZGljYWxMZWwnLCBmOnBhcnNlX1B0Z0VsZlJhZGljYWxMZWwgfSxcblx0Lyo6OlsqLzB4MTkvKjo6XSovOiB7IG46J1B0Z0xpc3QnLCBmOnBhcnNlX1B0Z0xpc3QgfSxcblx0Lyo6OlsqLzB4MUQvKjo6XSovOiB7IG46J1B0Z1N4TmFtZScsIGY6cGFyc2VfUHRnU3hOYW1lIH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge31cbn07XG52YXIgUHRnMTkgPSB7XG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogeyBuOidQdGdBdHRyTm9vcCcsIGY6cGFyc2VfUHRnQXR0ck5vb3AgfSxcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46J1B0Z0F0dHJTZW1pJywgZjpwYXJzZV9QdGdBdHRyU2VtaSB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjonUHRnQXR0cklmJywgZjpwYXJzZV9QdGdBdHRySWYgfSxcblx0Lyo6OlsqLzB4MDQvKjo6XSovOiB7IG46J1B0Z0F0dHJDaG9vc2UnLCBmOnBhcnNlX1B0Z0F0dHJDaG9vc2UgfSxcblx0Lyo6OlsqLzB4MDgvKjo6XSovOiB7IG46J1B0Z0F0dHJHb3RvJywgZjpwYXJzZV9QdGdBdHRyR290byB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjonUHRnQXR0clN1bScsIGY6cGFyc2VfUHRnQXR0clN1bSB9LFxuXHQvKjo6WyovMHgyMC8qOjpdKi86IHsgbjonUHRnQXR0ckJheGNlbCcsIGY6cGFyc2VfUHRnQXR0ckJheGNlbCB9LFxuXHQvKjo6WyovMHgyMS8qOjpdKi86IHsgbjonUHRnQXR0ckJheGNlbCcsIGY6cGFyc2VfUHRnQXR0ckJheGNlbCB9LFxuXHQvKjo6WyovMHg0MC8qOjpdKi86IHsgbjonUHRnQXR0clNwYWNlJywgZjpwYXJzZV9QdGdBdHRyU3BhY2UgfSxcblx0Lyo6OlsqLzB4NDEvKjo6XSovOiB7IG46J1B0Z0F0dHJTcGFjZVNlbWknLCBmOnBhcnNlX1B0Z0F0dHJTcGFjZVNlbWkgfSxcblx0Lyo6OlsqLzB4ODAvKjo6XSovOiB7IG46J1B0Z0F0dHJJZkVycm9yJywgZjpwYXJzZV9QdGdBdHRySWZFcnJvciB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9XG59O1xuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwMyA7IFtNUy1YTFNCXSAyLjUuOTcuODcgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnYkV4dHJhKGJsb2IsIGxlbmd0aCwgcmdjZSwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm4gcGFyc2Vub29wKGJsb2IsIGxlbmd0aCk7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBvID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IHJnY2UubGVuZ3RoOyArK2kpIHtcblx0XHRzd2l0Y2gocmdjZVtpXVswXSkge1xuXHRcdFx0Y2FzZSAnUHRnQXJyYXknOiAvKiBQdGdBcnJheSAtPiBQdGdFeHRyYUFycmF5ICovXG5cdFx0XHRcdHJnY2VbaV1bMV0gPSBwYXJzZV9QdGdFeHRyYUFycmF5KGJsb2IsIDAsIG9wdHMpO1xuXHRcdFx0XHRvLnB1c2gocmdjZVtpXVsxXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnTWVtQXJlYSc6IC8qIFB0Z01lbUFyZWEgLT4gUHRnRXh0cmFNZW0gKi9cblx0XHRcdFx0cmdjZVtpXVsyXSA9IHBhcnNlX1B0Z0V4dHJhTWVtKGJsb2IsIHJnY2VbaV1bMV0sIG9wdHMpO1xuXHRcdFx0XHRvLnB1c2gocmdjZVtpXVsyXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnRXhwJzogLyogUHRnRXhwIC0+IFB0Z0V4dHJhQ29sICovXG5cdFx0XHRcdGlmKG9wdHMgJiYgb3B0cy5iaWZmID09IDEyKSB7XG5cdFx0XHRcdFx0cmdjZVtpXVsxXVsxXSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRcdFx0XHRvLnB1c2gocmdjZVtpXVsxXSk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdMaXN0JzogLyogVE9ETzogUHRnTGlzdCAtPiBQdGdFeHRyYUxpc3QgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJhZGljYWxTJzogLyogVE9ETzogUHRnRWxmUmFkaWNhbFMgLT4gUHRnRXh0cmFFbGYgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbFMnOiAvKiBUT0RPOiBQdGdFbGZDb2xTIC0+IFB0Z0V4dHJhRWxmICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTVic6IC8qIFRPRE86IFB0Z0VsZkNvbFNWIC0+IFB0Z0V4dHJhRWxmICovXG5cdFx0XHRcdHRocm93IFwiVW5zdXBwb3J0ZWQgXCIgKyByZ2NlW2ldWzBdO1xuXHRcdFx0ZGVmYXVsdDogYnJlYWs7XG5cdFx0fVxuXHR9XG5cdGxlbmd0aCA9IHRhcmdldCAtIGJsb2IubDtcblx0Lyogbm90ZTogdGhpcyBpcyB0ZWNobmljYWxseSBhbiBlcnJvciBidXQgRXhjZWwgZGlzcmVnYXJkcyAqL1xuXHQvL2lmKHRhcmdldCAhPT0gYmxvYi5sICYmIGJsb2IubCAhPT0gdGFyZ2V0IC0gbGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IodGFyZ2V0ICsgXCIgIT0gXCIgKyBibG9iLmwpO1xuXHRpZihsZW5ndGggIT09IDApIG8ucHVzaChwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNCA7IFtNUy1YTFNCXSAyLjUuOTcuODggKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2UoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBSLCBpZCwgcHRncyA9IFtdO1xuXHR3aGlsZSh0YXJnZXQgIT0gYmxvYi5sKSB7XG5cdFx0bGVuZ3RoID0gdGFyZ2V0IC0gYmxvYi5sO1xuXHRcdGlkID0gYmxvYltibG9iLmxdO1xuXHRcdFIgPSBQdGdUeXBlc1tpZF0gfHwgUHRnVHlwZXNbUHRnRHVwZXNbaWRdXTtcblx0XHRpZihpZCA9PT0gMHgxOCB8fCBpZCA9PT0gMHgxOSkgUiA9IChpZCA9PT0gMHgxOCA/IFB0ZzE4IDogUHRnMTkpW2Jsb2JbYmxvYi5sICsgMV1dO1xuXHRcdGlmKCFSIHx8ICFSLmYpIHsgLypwdGdzLnB1c2gqLyhwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKSk7IH1cblx0XHRlbHNlIHsgcHRncy5wdXNoKFtSLm4sIFIuZihibG9iLCBsZW5ndGgsIG9wdHMpXSk7IH1cblx0fVxuXHRyZXR1cm4gcHRncztcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5X2FycmF5KGYvKjpBcnJheTxBcnJheTxzdHJpbmc+PiovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGYubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgeCA9IGZbaV0sIHIvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRmb3IodmFyIGogPSAwOyBqIDwgeC5sZW5ndGg7ICsraikge1xuXHRcdFx0dmFyIHkgPSB4W2pdO1xuXHRcdFx0aWYoeSkgc3dpdGNoKHlbMF0pIHtcblx0XHRcdFx0Ly8gVE9ETzogaGFuZGxlIGVtYmVkZGVkIHF1b3Rlc1xuXHRcdFx0XHRjYXNlIDB4MDI6XG5cdFx0XHRcdFx0Lyo6OiBpZih0eXBlb2YgeVsxXSAhPSAnc3RyaW5nJykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0XHRcdHIucHVzaCgnXCInICsgeVsxXS5yZXBsYWNlKC9cIi9nLCdcIlwiJykgKyAnXCInKTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IHIucHVzaCh5WzFdKTtcblx0XHRcdH0gZWxzZSByLnB1c2goXCJcIik7XG5cdFx0fVxuXHRcdG8ucHVzaChyLmpvaW4oXCIsXCIpKTtcblx0fVxuXHRyZXR1cm4gby5qb2luKFwiO1wiKTtcbn1cblxuLyogW01TLVhMU10gMi4yLjIgOyBbTVMtWExTQl0gMi4yLjIgVE9ETyAqL1xudmFyIFB0Z0Jpbk9wID0ge1xuXHRQdGdBZGQ6IFwiK1wiLFxuXHRQdGdDb25jYXQ6IFwiJlwiLFxuXHRQdGdEaXY6IFwiL1wiLFxuXHRQdGdFcTogXCI9XCIsXG5cdFB0Z0dlOiBcIj49XCIsXG5cdFB0Z0d0OiBcIj5cIixcblx0UHRnTGU6IFwiPD1cIixcblx0UHRnTHQ6IFwiPFwiLFxuXHRQdGdNdWw6IFwiKlwiLFxuXHRQdGdOZTogXCI8PlwiLFxuXHRQdGdQb3dlcjogXCJeXCIsXG5cdFB0Z1N1YjogXCItXCJcbn07XG5cbi8vIExpc3Qgb2YgaW52YWxpZCBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIHRlc3RlZCBmdXJ0aGVyXG5mdW5jdGlvbiBmb3JtdWxhX3F1b3RlX3NoZWV0X25hbWUoc25hbWUvKjpzdHJpbmcqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFzbmFtZSAmJiAhKG9wdHMgJiYgb3B0cy5iaWZmIDw9IDUgJiYgb3B0cy5iaWZmID49IDIpKSB0aHJvdyBuZXcgRXJyb3IoXCJlbXB0eSBzaGVldCBuYW1lXCIpO1xuXHRpZiAoL1teXFx3XFx1NEUwMC1cXHU5RkZGXFx1MzA0MC1cXHUzMEZGXS8udGVzdChzbmFtZSkpIHJldHVybiBcIidcIiArIHNuYW1lICsgXCInXCI7XG5cdHJldHVybiBzbmFtZTtcbn1cbmZ1bmN0aW9uIGdldF9peHRpX3JhdyhzdXBib29rcywgaXh0aS8qOm51bWJlciovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYoIXN1cGJvb2tzKSByZXR1cm4gXCJTSDMzVEpTRVJSMFwiO1xuXHRpZihvcHRzLmJpZmYgPiA4ICYmICghc3VwYm9va3MuWFRJIHx8ICFzdXBib29rcy5YVElbaXh0aV0pKSByZXR1cm4gc3VwYm9va3MuU2hlZXROYW1lc1tpeHRpXTtcblx0aWYoIXN1cGJvb2tzLlhUSSkgcmV0dXJuIFwiU0gzM1RKU0VSUjZcIjtcblx0dmFyIFhUSSA9IHN1cGJvb2tzLlhUSVtpeHRpXTtcblx0aWYob3B0cy5iaWZmIDwgOCkge1xuXHRcdGlmKGl4dGkgPiAxMDAwMCkgaXh0aS09IDY1NTM2O1xuXHRcdGlmKGl4dGkgPCAwKSBpeHRpID0gLWl4dGk7XG5cdFx0cmV0dXJuIGl4dGkgPT0gMCA/IFwiXCIgOiBzdXBib29rcy5YVElbaXh0aSAtIDFdO1xuXHR9XG5cdGlmKCFYVEkpIHJldHVybiBcIlNIMzNUSlNFUlIxXCI7XG5cdHZhciBvID0gXCJcIjtcblx0aWYob3B0cy5iaWZmID4gOCkgc3dpdGNoKHN1cGJvb2tzW1hUSVswXV1bMF0pIHtcblx0XHRjYXNlIDB4MDE2NTogLyogJ0JydFN1cFNlbGYnICovXG5cdFx0XHRvID0gWFRJWzFdID09IC0xID8gXCIjUkVGXCIgOiBzdXBib29rcy5TaGVldE5hbWVzW1hUSVsxXV07XG5cdFx0XHRyZXR1cm4gWFRJWzFdID09IFhUSVsyXSA/IG8gOiBvICsgXCI6XCIgKyBzdXBib29rcy5TaGVldE5hbWVzW1hUSVsyXV07XG5cdFx0Y2FzZSAweDAxNjY6IC8qICdCcnRTdXBTYW1lJyAqL1xuXHRcdFx0aWYob3B0cy5TSUQgIT0gbnVsbCkgcmV0dXJuIHN1cGJvb2tzLlNoZWV0TmFtZXNbb3B0cy5TSURdO1xuXHRcdFx0cmV0dXJuIFwiU0gzM1RKU1NBTUVcIiArIHN1cGJvb2tzW1hUSVswXV1bMF07XG5cdFx0Y2FzZSAweDAxNjM6IC8qICdCcnRTdXBCb29rU3JjJyAqL1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGRlZmF1bHQ6IHJldHVybiBcIlNIMzNUSlNTUkNcIiArIHN1cGJvb2tzW1hUSVswXV1bMF07XG5cdH1cblx0c3dpdGNoKHN1cGJvb2tzW1hUSVswXV1bMF1bMF0pIHtcblx0XHRjYXNlIDB4MDQwMTpcblx0XHRcdG8gPSBYVElbMV0gPT0gLTEgPyBcIiNSRUZcIiA6IChzdXBib29rcy5TaGVldE5hbWVzW1hUSVsxXV0gfHwgXCJTSDMzVEpTRVJSM1wiKTtcblx0XHRcdHJldHVybiBYVElbMV0gPT0gWFRJWzJdID8gbyA6IG8gKyBcIjpcIiArIHN1cGJvb2tzLlNoZWV0TmFtZXNbWFRJWzJdXTtcblx0XHRjYXNlIDB4M0EwMTogcmV0dXJuIHN1cGJvb2tzW1hUSVswXV0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIG5hbWUuTmFtZTsgfSkuam9pbihcIjs7XCIpOyAvL3JldHVybiBcIlNIMzNUSlNFUlI4XCI7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGlmKCFzdXBib29rc1tYVElbMF1dWzBdWzNdKSByZXR1cm4gXCJTSDMzVEpTRVJSMlwiO1xuXHRcdFx0byA9IFhUSVsxXSA9PSAtMSA/IFwiI1JFRlwiIDogKHN1cGJvb2tzW1hUSVswXV1bMF1bM11bWFRJWzFdXSB8fCBcIlNIMzNUSlNFUlI0XCIpO1xuXHRcdFx0cmV0dXJuIFhUSVsxXSA9PSBYVElbMl0gPyBvIDogbyArIFwiOlwiICsgc3VwYm9va3NbWFRJWzBdXVswXVszXVtYVElbMl1dO1xuXHR9XG59XG5mdW5jdGlvbiBnZXRfaXh0aShzdXBib29rcywgaXh0aS8qOm51bWJlciovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIGl4dGlyYXcgPSBnZXRfaXh0aV9yYXcoc3VwYm9va3MsIGl4dGksIG9wdHMpO1xuXHRyZXR1cm4gaXh0aXJhdyA9PSBcIiNSRUZcIiA/IGl4dGlyYXcgOiBmb3JtdWxhX3F1b3RlX3NoZWV0X25hbWUoaXh0aXJhdywgb3B0cyk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLypBcnJheTxhbnk+Ki8sIHJhbmdlLCBjZWxsLyo6YW55Ki8sIHN1cGJvb2tzLCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIGJpZmYgPSAob3B0cyAmJiBvcHRzLmJpZmYpIHx8IDg7XG5cdHZhciBfcmFuZ2UgPSAvKnJhbmdlICE9IG51bGwgPyByYW5nZSA6Ki8ge3M6e2M6MCwgcjowfSxlOntjOjAsIHI6MH19O1xuXHR2YXIgc3RhY2svKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgZTEsIGUyLCAvKjo6dHlwZSwqLyBjLyo6Q2VsbEFkZHJlc3MqLywgaXh0aT0wLCBuYW1laWR4PTAsIHIsIHNuYW1lPVwiXCI7XG5cdGlmKCFmb3JtdWxhWzBdIHx8ICFmb3JtdWxhWzBdWzBdKSByZXR1cm4gXCJcIjtcblx0dmFyIGxhc3Rfc3AgPSAtMSwgc3AgPSBcIlwiO1xuXHRmb3IodmFyIGZmID0gMCwgZmZsZW4gPSBmb3JtdWxhWzBdLmxlbmd0aDsgZmYgPCBmZmxlbjsgKytmZikge1xuXHRcdHZhciBmID0gZm9ybXVsYVswXVtmZl07XG5cdFx0c3dpdGNoKGZbMF0pIHtcblx0XHRcdGNhc2UgJ1B0Z1VtaW51cyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTMgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIi1cIiArIHN0YWNrLnBvcCgpKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdVcGx1cyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTUgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIitcIiArIHN0YWNrLnBvcCgpKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdQZXJjZW50JzogLyogW01TLVhMU10gMi41LjE5OC44MSAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKHN0YWNrLnBvcCgpICsgXCIlXCIpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQWRkJzogICAgLyogW01TLVhMU10gMi41LjE5OC4yNiAqL1xuXHRcdFx0Y2FzZSAnUHRnQ29uY2F0JzogLyogW01TLVhMU10gMi41LjE5OC40MyAqL1xuXHRcdFx0Y2FzZSAnUHRnRGl2JzogICAgLyogW01TLVhMU10gMi41LjE5OC40NSAqL1xuXHRcdFx0Y2FzZSAnUHRnRXEnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC41NiAqL1xuXHRcdFx0Y2FzZSAnUHRnR2UnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC42NCAqL1xuXHRcdFx0Y2FzZSAnUHRnR3QnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC42NSAqL1xuXHRcdFx0Y2FzZSAnUHRnTGUnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC42OCAqL1xuXHRcdFx0Y2FzZSAnUHRnTHQnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC42OSAqL1xuXHRcdFx0Y2FzZSAnUHRnTXVsJzogICAgLyogW01TLVhMU10gMi41LjE5OC43NSAqL1xuXHRcdFx0Y2FzZSAnUHRnTmUnOiAgICAgLyogW01TLVhMU10gMi41LjE5OC43OCAqL1xuXHRcdFx0Y2FzZSAnUHRnUG93ZXInOiAgLyogW01TLVhMU10gMi41LjE5OC44MiAqL1xuXHRcdFx0Y2FzZSAnUHRnU3ViJzogICAgLyogW01TLVhMU10gMi41LjE5OC45MCAqL1xuXHRcdFx0XHRlMSA9IHN0YWNrLnBvcCgpOyBlMiA9IHN0YWNrLnBvcCgpO1xuXHRcdFx0XHRpZihsYXN0X3NwID49IDApIHtcblx0XHRcdFx0XHRzd2l0Y2goZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0XHRzcCA9IGZpbGwoXCIgXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdFx0c3AgPSBmaWxsKFwiXFxyXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHNwID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSBcIiArIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlMiA9IGUyICsgc3A7XG5cdFx0XHRcdFx0bGFzdF9zcCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0YWNrLnB1c2goZTIrUHRnQmluT3BbZlswXV0rZTEpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnSXNlY3QnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjY3ICovXG5cdFx0XHRcdGUxID0gc3RhY2sucG9wKCk7IGUyID0gc3RhY2sucG9wKCk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZTIrXCIgXCIrZTEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1VuaW9uJzogLyogW01TLVhMU10gMi41LjE5OC45NCAqL1xuXHRcdFx0XHRlMSA9IHN0YWNrLnBvcCgpOyBlMiA9IHN0YWNrLnBvcCgpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1wiLFwiK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdSYW5nZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODMgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0c3RhY2sucHVzaChlMitcIjpcIitlMSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBdHRyQ2hvb3NlJzogLyogW01TLVhMU10gMi41LjE5OC4zNCAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0F0dHJHb3RvJzogLyogW01TLVhMU10gMi41LjE5OC4zNSAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0F0dHJJZic6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzYgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRySWZFcnJvcic6IC8qIFtNUy1YTFNCXSAyLjUuOTcuMjggKi9cblx0XHRcdFx0YnJlYWs7XG5cblxuXHRcdFx0Y2FzZSAnUHRnUmVmJzogLyogW01TLVhMU10gMi41LjE5OC44NCAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovYyA9IHNoaWZ0X2NlbGxfeGxzKChmWzFdWzFdLyo6YW55Ki8pLCBfcmFuZ2UsIG9wdHMpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9jZWxsX3hscyhjLCBiaWZmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUmVmTic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODggKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL2MgPSBjZWxsID8gc2hpZnRfY2VsbF94bHMoKGZbMV1bMV0vKjphbnkqLyksIGNlbGwsIG9wdHMpIDogKGZbMV1bMV0vKjphbnkqLyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZW5jb2RlX2NlbGxfeGxzKGMsIGJpZmYpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdSZWYzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODUgKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL2l4dGkgPSAvKjo6TnVtYmVyKCovZlsxXVsxXS8qOjopKi87IGMgPSBzaGlmdF9jZWxsX3hscygoZlsxXVsyXS8qOmFueSovKSwgX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c25hbWUgPSBnZXRfaXh0aShzdXBib29rcywgaXh0aSwgb3B0cyk7XG5cdFx0XHRcdHZhciB3ID0gc25hbWU7IC8qIElFOSBmYWlscyBvbiBkZWZpbmVkIG5hbWVzICovIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRcdFx0c3RhY2sucHVzaChzbmFtZSArIFwiIVwiICsgZW5jb2RlX2NlbGxfeGxzKGMsIGJpZmYpKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0Z1bmMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjYyICovXG5cdFx0XHRjYXNlICdQdGdGdW5jVmFyJzogLyogW01TLVhMU10gMi41LjE5OC42MyAqL1xuXHRcdFx0XHQvKiBmWzFdID0gW2FyZ2MsIGZ1bmMsIHR5cGVdICovXG5cdFx0XHRcdHZhciBhcmdjLyo6bnVtYmVyKi8gPSAoZlsxXVswXS8qOmFueSovKSwgZnVuYy8qOnN0cmluZyovID0gKGZbMV1bMV0vKjphbnkqLyk7XG5cdFx0XHRcdGlmKCFhcmdjKSBhcmdjID0gMDtcblx0XHRcdFx0YXJnYyAmPSAweDdGO1xuXHRcdFx0XHR2YXIgYXJncyA9IGFyZ2MgPT0gMCA/IFtdIDogc3RhY2suc2xpY2UoLWFyZ2MpO1xuXHRcdFx0XHRzdGFjay5sZW5ndGggLT0gYXJnYztcblx0XHRcdFx0aWYoZnVuYyA9PT0gJ1VzZXInKSBmdW5jID0gYXJncy5zaGlmdCgpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGZ1bmMgKyBcIihcIiArIGFyZ3Muam9pbihcIixcIikgKyBcIilcIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdCb29sJzogLyogW01TLVhMU10gMi41LjE5OC40MiAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKGZbMV0gPyBcIlRSVUVcIiA6IFwiRkFMU0VcIik7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnSW50JzogLyogW01TLVhMU10gMi41LjE5OC42NiAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKC8qOjpTdHJpbmcoKi9mWzFdLyo6OikqLyk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnTnVtJzogLyogW01TLVhMU10gMi41LjE5OC43OSBUT0RPOiBwcmVjaXNpb24/ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goU3RyaW5nKGZbMV0pKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdTdHInOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg5ICovXG5cdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdHN0YWNrLnB1c2goJ1wiJyArIGZbMV0ucmVwbGFjZSgvXCIvZywgJ1wiXCInKSArICdcIicpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0Vycic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTcgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgvKjo6U3RyaW5nKCovZlsxXS8qOjopKi8pOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0FyZWFOJzogLyogW01TLVhMU10gMi41LjE5OC4zMSBUT0RPICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9yID0gc2hpZnRfcmFuZ2VfeGxzKGZbMV1bMV0sIGNlbGwgPyB7czpjZWxsfSA6IF9yYW5nZSwgb3B0cyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZW5jb2RlX3JhbmdlX3hscygoci8qOmFueSovKSwgb3B0cykpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0FyZWEnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjI3IFRPRE86IGZpeGVkIHBvaW50cyAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovciA9IHNoaWZ0X3JhbmdlX3hscyhmWzFdWzFdLCBfcmFuZ2UsIG9wdHMpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9yYW5nZV94bHMoKHIvKjphbnkqLyksIG9wdHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBcmVhM2QnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjI4IFRPRE8gKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL2l4dGkgPSAvKjo6TnVtYmVyKCovZlsxXVsxXS8qOjopKi87IHIgPSBmWzFdWzJdO1xuXHRcdFx0XHRzbmFtZSA9IGdldF9peHRpKHN1cGJvb2tzLCBpeHRpLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChzbmFtZSArIFwiIVwiICsgZW5jb2RlX3JhbmdlX3hscygoci8qOmFueSovKSwgb3B0cykpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0F0dHJTdW0nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQxICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCJTVU0oXCIgKyBzdGFjay5wb3AoKSArIFwiKVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0F0dHJCYXhjZWwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjMzICovXG5cdFx0XHRjYXNlICdQdGdBdHRyU2VtaSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z05hbWUnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljc2IDsgW01TLVhMU0JdIDIuNS45Ny42MCBUT0RPOiByZXZpc2lvbnMgKi9cblx0XHRcdFx0LyogZlsxXSA9IHR5cGUsIDAsIG5hbWVpbmRleCAqL1xuXHRcdFx0XHRuYW1laWR4ID0gKGZbMV1bMl0vKjphbnkqLyk7XG5cdFx0XHRcdHZhciBsYmwgPSAoc3VwYm9va3MubmFtZXN8fFtdKVtuYW1laWR4LTFdIHx8IChzdXBib29rc1swXXx8W10pW25hbWVpZHhdO1xuXHRcdFx0XHR2YXIgbmFtZSA9IGxibCA/IGxibC5OYW1lIDogXCJTSDMzVEpTTkFNRVwiICsgU3RyaW5nKG5hbWVpZHgpO1xuXHRcdFx0XHQvKiBbTVMtWExTQl0gMi41Ljk3LjEwIEZ0YWIgLS0gbGFzdCB2ZXJpZmllZCAyMDIyMDIwNCAqL1xuXHRcdFx0XHRpZihuYW1lICYmIG5hbWUuc2xpY2UoMCw2KSA9PSBcIl94bGZuLlwiICYmICFvcHRzLnhsZm4pIG5hbWUgPSBuYW1lLnNsaWNlKDYpO1xuXHRcdFx0XHRzdGFjay5wdXNoKG5hbWUpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTmFtZVgnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljc3IDsgW01TLVhMU0JdIDIuNS45Ny42MSBUT0RPOiByZXZpc2lvbnMgKi9cblx0XHRcdFx0LyogZlsxXSA9IHR5cGUsIGl4dGksIG5hbWVpbmRleCAqL1xuXHRcdFx0XHR2YXIgYm9va2lkeC8qOm51bWJlciovID0gKGZbMV1bMV0vKjphbnkqLyk7IG5hbWVpZHggPSAoZlsxXVsyXS8qOmFueSovKTsgdmFyIGV4dGVybmJvb2s7XG5cdFx0XHRcdC8qIFRPRE86IFByb3Blcmx5IGhhbmRsZSBtaXNzaW5nIHZhbHVlcyAtLSB0aGlzIHNob3VsZCBiZSB1c2luZyBnZXRfaXh0aV9yYXcgcHJpbWFyaWx5ICovXG5cdFx0XHRcdGlmKG9wdHMuYmlmZiA8PSA1KSB7XG5cdFx0XHRcdFx0aWYoYm9va2lkeCA8IDApIGJvb2tpZHggPSAtYm9va2lkeDtcblx0XHRcdFx0XHRpZihzdXBib29rc1tib29raWR4XSkgZXh0ZXJuYm9vayA9IHN1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhciBvID0gXCJcIjtcblx0XHRcdFx0XHRpZigoKHN1cGJvb2tzW2Jvb2tpZHhdfHxbXSlbMF18fFtdKVswXSA9PSAweDNBMDEpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRcdGVsc2UgaWYoKChzdXBib29rc1tib29raWR4XXx8W10pWzBdfHxbXSlbMF0gPT0gMHgwNDAxKXtcblx0XHRcdFx0XHRcdGlmKHN1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdICYmIHN1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdLml0YWIgPiAwKSB7XG5cdFx0XHRcdFx0XHRcdG8gPSBzdXBib29rcy5TaGVldE5hbWVzW3N1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdLml0YWItMV0gKyBcIiFcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBvID0gc3VwYm9va3MuU2hlZXROYW1lc1tuYW1laWR4LTFdKyBcIiFcIjtcblx0XHRcdFx0XHRpZihzdXBib29rc1tib29raWR4XSAmJiBzdXBib29rc1tib29raWR4XVtuYW1laWR4XSkgbyArPSBzdXBib29rc1tib29raWR4XVtuYW1laWR4XS5OYW1lO1xuXHRcdFx0XHRcdGVsc2UgaWYoc3VwYm9va3NbMF0gJiYgc3VwYm9va3NbMF1bbmFtZWlkeF0pIG8gKz0gc3VwYm9va3NbMF1bbmFtZWlkeF0uTmFtZTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHZhciBpeHRpZGF0YSA9IChnZXRfaXh0aV9yYXcoc3VwYm9va3MsIGJvb2tpZHgsIG9wdHMpfHxcIlwiKS5zcGxpdChcIjs7XCIpO1xuXHRcdFx0XHRcdFx0aWYoaXh0aWRhdGFbbmFtZWlkeCAtIDFdKSBvID0gaXh0aWRhdGFbbmFtZWlkeCAtIDFdOyAvLyBUT0RPOiBjb25maXJtIHRoaXMgaXMgY29ycmVjdFxuXHRcdFx0XHRcdFx0ZWxzZSBvICs9IFwiU0gzM1RKU0VSUlhcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c3RhY2sucHVzaChvKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighZXh0ZXJuYm9vaykgZXh0ZXJuYm9vayA9IHtOYW1lOiBcIlNIMzNUSlNFUlJZXCJ9O1xuXHRcdFx0XHRzdGFjay5wdXNoKGV4dGVybmJvb2suTmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdQYXJlbic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODAgKi9cblx0XHRcdFx0dmFyIGxwID0gJygnLCBycCA9ICcpJztcblx0XHRcdFx0aWYobGFzdF9zcCA+PSAwKSB7XG5cdFx0XHRcdFx0c3AgPSBcIlwiO1xuXHRcdFx0XHRcdHN3aXRjaChmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzBdKSB7XG5cdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0Y2FzZSAyOiBscCA9IGZpbGwoXCIgXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pICsgbHA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdGNhc2UgMzogbHAgPSBmaWxsKFwiXFxyXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pICsgbHA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdGNhc2UgNDogcnAgPSBmaWxsKFwiIFwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIHJwOyBicmVhaztcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDU6IHJwID0gZmlsbChcIlxcclwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIHJwOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgXCIgKyBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGFzdF9zcCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0YWNrLnB1c2gobHAgKyBzdGFjay5wb3AoKSArIHJwKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z1JlZkVycic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODYgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgnI1JFRiEnKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z1JlZkVycjNkJzogLyogW01TLVhMU10gMi41LjE5OC44NyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKCcjUkVGIScpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnRXhwJzogLyogW01TLVhMU10gMi41LjE5OC41OCBUT0RPICovXG5cdFx0XHRcdGMgPSB7YzooZlsxXVsxXS8qOmFueSovKSxyOihmWzFdWzBdLyo6YW55Ki8pfTtcblx0XHRcdFx0dmFyIHEgPSAoe2M6IGNlbGwuYywgcjpjZWxsLnJ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRpZihzdXBib29rcy5zaGFyZWRmW2VuY29kZV9jZWxsKGMpXSkge1xuXHRcdFx0XHRcdHZhciBwYXJzZWRmID0gKHN1cGJvb2tzLnNoYXJlZGZbZW5jb2RlX2NlbGwoYyldKTtcblx0XHRcdFx0XHRzdGFjay5wdXNoKHN0cmluZ2lmeV9mb3JtdWxhKHBhcnNlZGYsIF9yYW5nZSwgcSwgc3VwYm9va3MsIG9wdHMpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgZm5kID0gZmFsc2U7XG5cdFx0XHRcdFx0Zm9yKGUxPTA7ZTEhPXN1cGJvb2tzLmFycmF5Zi5sZW5ndGg7ICsrZTEpIHtcblx0XHRcdFx0XHRcdC8qIFRPRE86IHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSByYW5nZV9oYXMgKi9cblx0XHRcdFx0XHRcdGUyID0gc3VwYm9va3MuYXJyYXlmW2UxXTtcblx0XHRcdFx0XHRcdGlmKGMuYyA8IGUyWzBdLnMuYyB8fCBjLmMgPiBlMlswXS5lLmMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0aWYoYy5yIDwgZTJbMF0ucy5yIHx8IGMuciA+IGUyWzBdLmUucikgY29udGludWU7XG5cdFx0XHRcdFx0XHRzdGFjay5wdXNoKHN0cmluZ2lmeV9mb3JtdWxhKGUyWzFdLCBfcmFuZ2UsIHEsIHN1cGJvb2tzLCBvcHRzKSk7XG5cdFx0XHRcdFx0XHRmbmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKCFmbmQpIHN0YWNrLnB1c2goLyo6OlN0cmluZygqL2ZbMV0vKjo6KSovKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXJyYXknOiAvKiBbTVMtWExTXSAyLjUuMTk4LjMyIFRPRE8gKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIntcIiArIHN0cmluZ2lmeV9hcnJheSgvKjo6KCovZlsxXS8qOjogOmFueSkqLykgKyBcIn1cIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNZW1BcmVhJzogLyogW01TLVhMU10gMi41LjE5OC43MCBUT0RPOiBjb25maXJtIHRoaXMgaXMgYSBub24tZGlzcGxheSAqL1xuXHRcdFx0XHQvL3N0YWNrLnB1c2goXCIoXCIgKyBmWzJdLm1hcChlbmNvZGVfcmFuZ2UpLmpvaW4oXCIsXCIpICsgXCIpXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXR0clNwYWNlJzogLyogW01TLVhMU10gMi41LjE5OC4zOCAqL1xuXHRcdFx0Y2FzZSAnUHRnQXR0clNwYWNlU2VtaSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzkgKi9cblx0XHRcdFx0bGFzdF9zcCA9IGZmO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnVGJsJzogLyogW01TLVhMU10gMi41LjE5OC45MiBUT0RPICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNZW1FcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjcxICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNaXNzQXJnJzogLyogW01TLVhMU10gMi41LjE5OC43NCAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXJlYUVycic6IC8qIFtNUy1YTFNdIDIuNS4xOTguMjkgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIiNSRUYhXCIpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXJlYUVycjNkJzogLyogW01TLVhMU10gMi41LjE5OC4zMCAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiI1JFRiFcIik7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdMaXN0JzogLyogW01TLVhMU0JdIDIuNS45Ny41MiAqL1xuXHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRzdGFjay5wdXNoKFwiVGFibGVcIiArIGZbMV0uaWR4ICsgXCJbI1wiICsgZlsxXS5ydCArIFwiXVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z01lbUFyZWFOJzpcblx0XHRcdGNhc2UgJ1B0Z01lbU5vTWVtTic6XG5cdFx0XHRjYXNlICdQdGdBdHRyTm9vcCc6XG5cdFx0XHRjYXNlICdQdGdTaGVldCc6XG5cdFx0XHRjYXNlICdQdGdFbmRTaGVldCc6XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNZW1GdW5jJzogLyogW01TLVhMU10gMi41LjE5OC43MiBUT0RPICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnTWVtTm9NZW0nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjczIFRPRE8gKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDYgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbFMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ3ICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTVic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDggKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbFYnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ5ICovXG5cdFx0XHRjYXNlICdQdGdFbGZMZWwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjUwICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsJzogLyogW01TLVhMU10gMi41LjE5OC41MSAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUmFkaWNhbExlbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTIgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJhZGljYWxTJzogLyogW01TLVhMU10gMi41LjE5OC41MyAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUncnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjU0ICovXG5cdFx0XHRjYXNlICdQdGdFbGZSd1YnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjU1ICovXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIEVMRnNcIik7XG5cblx0XHRcdGNhc2UgJ1B0Z1N4TmFtZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTEgVE9ETyAtLSBmaW5kIGEgdGVzdCBjYXNlICovXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIEZvcm11bGEgVG9rZW46ICcgKyBTdHJpbmcoZikpO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogJyArIFN0cmluZyhmKSk7XG5cdFx0fVxuXHRcdHZhciBQdGdOb25EaXNwID0gWydQdGdBdHRyU3BhY2UnLCAnUHRnQXR0clNwYWNlU2VtaScsICdQdGdBdHRyR290byddO1xuXHRcdGlmKG9wdHMuYmlmZiAhPSAzKSBpZihsYXN0X3NwID49IDAgJiYgUHRnTm9uRGlzcC5pbmRleE9mKGZvcm11bGFbMF1bZmZdWzBdKSA9PSAtMSkge1xuXHRcdFx0ZiA9IGZvcm11bGFbMF1bbGFzdF9zcF07XG5cdFx0XHR2YXIgX2xlZnQgPSB0cnVlO1xuXHRcdFx0c3dpdGNoKGZbMV1bMF0pIHtcblx0XHRcdFx0Lyogbm90ZTogc29tZSBiYWQgWExTQiBmaWxlcyBvbWl0IHRoZSBQdGdQYXJlbiAqL1xuXHRcdFx0XHRjYXNlIDQ6IF9sZWZ0ID0gZmFsc2U7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0c3AgPSBmaWxsKFwiIFwiLCBmWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNTogX2xlZnQgPSBmYWxzZTtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRzcCA9IGZpbGwoXCJcXHJcIiwgZlsxXVsxXSk7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHNwID0gXCJcIjtcblx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgXCIgKyBmWzFdWzBdKTtcblx0XHRcdH1cblx0XHRcdHN0YWNrLnB1c2goKF9sZWZ0ID8gc3AgOiBcIlwiKSArIHN0YWNrLnBvcCgpICsgKF9sZWZ0ID8gXCJcIiA6IHNwKSk7XG5cdFx0XHRsYXN0X3NwID0gLTE7XG5cdFx0fVxuXHR9XG5cdGlmKHN0YWNrLmxlbmd0aCA+IDEgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcImJhZCBmb3JtdWxhIHN0YWNrXCIpO1xuXHRyZXR1cm4gc3RhY2tbMF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9BcnJheVBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzLyo6OiwgcmVmKi8pIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCwgbGVuID0gb3B0cy5iaWZmID09IDIgPyAxIDogMjtcblx0dmFyIHJnY2IsIGNjZSA9IGJsb2IucmVhZF9zaGlmdChsZW4pOyAvLyBsZW5ndGggb2YgcmdjZVxuXHRpZihjY2UgPT0gMHhGRkZGKSByZXR1cm4gW1tdLHBhcnNlbm9vcChibG9iLCBsZW5ndGgtMildO1xuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoYmxvYiwgY2NlLCBvcHRzKTtcblx0aWYobGVuZ3RoICE9PSBjY2UgKyBsZW4pIHJnY2IgPSBwYXJzZV9SZ2JFeHRyYShibG9iLCBsZW5ndGggLSBjY2UgLSBsZW4sIHJnY2UsIG9wdHMpO1xuXHRibG9iLmwgPSB0YXJnZXQ7XG5cdHJldHVybiBbcmdjZSwgcmdjYl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMyBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9YTFNDZWxsUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCwgbGVuID0gb3B0cy5iaWZmID09IDIgPyAxIDogMjtcblx0dmFyIHJnY2IsIGNjZSA9IGJsb2IucmVhZF9zaGlmdChsZW4pOyAvLyBsZW5ndGggb2YgcmdjZVxuXHRpZihjY2UgPT0gMHhGRkZGKSByZXR1cm4gW1tdLHBhcnNlbm9vcChibG9iLCBsZW5ndGgtMildO1xuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoYmxvYiwgY2NlLCBvcHRzKTtcblx0aWYobGVuZ3RoICE9PSBjY2UgKyBsZW4pIHJnY2IgPSBwYXJzZV9SZ2JFeHRyYShibG9iLCBsZW5ndGggLSBjY2UgLSBsZW4sIHJnY2UsIG9wdHMpO1xuXHRibG9iLmwgPSB0YXJnZXQ7XG5cdHJldHVybiBbcmdjZSwgcmdjYl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX05hbWVQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cywgY2NlKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShibG9iLCBjY2UsIG9wdHMpO1xuXHR2YXIgcmdjYjtcblx0aWYodGFyZ2V0ICE9PSBibG9iLmwpIHJnY2IgPSBwYXJzZV9SZ2JFeHRyYShibG9iLCB0YXJnZXQgLSBibG9iLmwsIHJnY2UsIG9wdHMpO1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjExOCBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9TaGFyZWRQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgcmdjYiwgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyBsZW5ndGggb2YgcmdjZVxuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoYmxvYiwgY2NlLCBvcHRzKTtcblx0aWYoY2NlID09IDB4RkZGRikgcmV0dXJuIFtbXSxwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLTIpXTtcblx0aWYobGVuZ3RoICE9PSBjY2UgKyAyKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgdGFyZ2V0IC0gY2NlIC0gMiwgcmdjZSwgb3B0cyk7XG5cdHJldHVybiBbcmdjZSwgcmdjYl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xMzMgVE9ETzogaG93IHRvIGVtaXQgZW1wdHkgc3RyaW5ncz8gKi9cbmZ1bmN0aW9uIHBhcnNlX0Zvcm11bGFWYWx1ZShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIGI7XG5cdGlmKF9fcmVhZFVJbnQxNkxFKGJsb2IsYmxvYi5sICsgNikgIT09IDB4RkZGRikgcmV0dXJuIFtwYXJzZV9YbnVtKGJsb2IpLCduJ107XG5cdHN3aXRjaChibG9iW2Jsb2IubF0pIHtcblx0XHRjYXNlIDB4MDA6IGJsb2IubCArPSA4OyByZXR1cm4gW1wiU3RyaW5nXCIsICdzJ107XG5cdFx0Y2FzZSAweDAxOiBiID0gYmxvYltibG9iLmwrMl0gPT09IDB4MTsgYmxvYi5sICs9IDg7IHJldHVybiBbYiwnYiddO1xuXHRcdGNhc2UgMHgwMjogYiA9IGJsb2JbYmxvYi5sKzJdOyBibG9iLmwgKz0gODsgcmV0dXJuIFtiLCdlJ107XG5cdFx0Y2FzZSAweDAzOiBibG9iLmwgKz0gODsgcmV0dXJuIFtcIlwiLCdzJ107XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gd3JpdGVfRm9ybXVsYVZhbHVlKHZhbHVlKSB7XG5cdGlmKHZhbHVlID09IG51bGwpIHtcblx0XHQvLyBCbGFuayBTdHJpbmcgVmFsdWVcblx0XHR2YXIgbyA9IG5ld19idWYoOCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDAzKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4RkZGRik7XG5cdFx0cmV0dXJuIG87XG5cdH0gZWxzZSBpZih0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIikgcmV0dXJuIHdyaXRlX1hudW0odmFsdWUpO1xuXHRyZXR1cm4gd3JpdGVfWG51bSgwKTtcbn1cblxuLyogW01TLVhMU10gMi40LjEyNyBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9Gb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdGlmKG9wdHMuYmlmZiA9PSAyKSArK2Jsb2IubDtcblx0dmFyIHZhbCA9IHBhcnNlX0Zvcm11bGFWYWx1ZShibG9iLDgpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGlmKG9wdHMuYmlmZiAhPSAyKSB7XG5cdFx0YmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKG9wdHMuYmlmZiA+PSA1KSB7XG5cdFx0XHQvKnZhciBjaG4gPSAqL2Jsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR9XG5cdH1cblx0dmFyIGNiZiA9IHBhcnNlX1hMU0NlbGxQYXJzZWRGb3JtdWxhKGJsb2IsIGVuZCAtIGJsb2IubCwgb3B0cyk7XG5cdHJldHVybiB7Y2VsbDpjZWxsLCB2YWw6dmFsWzBdLCBmb3JtdWxhOmNiZiwgc2hhcmVkOiAoZmxhZ3MgPj4gMykgJiAxLCB0dDp2YWxbMV19O1xufVxuZnVuY3Rpb24gd3JpdGVfRm9ybXVsYShjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgb3B0cywgb3MvKjpudW1iZXIqLykge1xuXHQvLyBDZWxsXG5cdHZhciBvMSA9IHdyaXRlX1hMU0NlbGwoUiwgQywgb3MpO1xuXG5cdC8vIEZvcm11bGFWYWx1ZVxuXHR2YXIgbzIgPSB3cml0ZV9Gb3JtdWxhVmFsdWUoY2VsbC52KTtcblxuXHQvLyBmbGFncyArIGNhY2hlXG5cdHZhciBvMyA9IG5ld19idWYoNik7XG5cdHZhciBmbGFncyA9IDB4MDEgfCAweDIwO1xuXHRvMy53cml0ZV9zaGlmdCgyLCBmbGFncyk7XG5cdG8zLndyaXRlX3NoaWZ0KDQsIDApO1xuXG5cdC8vIENlbGxQYXJzZWRGb3JtdWxhXG5cdHZhciBiZiA9IG5ld19idWYoY2VsbC5iZi5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgY2VsbC5iZi5sZW5ndGg7ICsraSkgYmZbaV0gPSBjZWxsLmJmW2ldO1xuXG5cdHZhciBvdXQgPSBiY29uY2F0KFtvMSwgbzIsIG8zLCBiZl0pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5cbi8qIFhMU0IgUGFyc2VkIEZvcm11bGEgcmVjb3JkcyBoYXZlIHRoZSBzYW1lIHNoYXBlICovXG5mdW5jdGlvbiBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNjZSA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGRhdGEsIGNjZSwgb3B0cyk7XG5cdHZhciBjYiA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJnY2IgPSBjYiA+IDAgPyBwYXJzZV9SZ2JFeHRyYShkYXRhLCBjYiwgcmdjZSwgb3B0cykgOiBudWxsO1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTQl0gMi41Ljk3LjEgQXJyYXlQYXJzZWRGb3JtdWxhICovXG52YXIgcGFyc2VfWExTQkFycmF5UGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny40IENlbGxQYXJzZWRGb3JtdWxhICovXG52YXIgcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGE7XG4vKiBbTVMtWExTQl0gMi41Ljk3LjggRFZQYXJzZWRGb3JtdWxhICovXG4vL3ZhciBwYXJzZV9YTFNCRFZQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGE7XG4vKiBbTVMtWExTQl0gMi41Ljk3LjkgRlJUUGFyc2VkRm9ybXVsYSAqL1xuLy92YXIgcGFyc2VfWExTQkZSVFBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTI7XG4vKiBbTVMtWExTQl0gMi41Ljk3LjEyIE5hbWVQYXJzZWRGb3JtdWxhICovXG52YXIgcGFyc2VfWExTQk5hbWVQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGE7XG4vKiBbTVMtWExTQl0gMi41Ljk3Ljk4IFNoYXJlZFBhcnNlZEZvcm11bGEgKi9cbnZhciBwYXJzZV9YTFNCU2hhcmVkUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xudmFyIENldGFiID0ge1xuICAwOiBcIkJFRVBcIixcbiAgMTogXCJPUEVOXCIsXG4gIDI6IFwiT1BFTi5MSU5LU1wiLFxuICAzOiBcIkNMT1NFLkFMTFwiLFxuICA0OiBcIlNBVkVcIixcbiAgNTogXCJTQVZFLkFTXCIsXG4gIDY6IFwiRklMRS5ERUxFVEVcIixcbiAgNzogXCJQQUdFLlNFVFVQXCIsXG4gIDg6IFwiUFJJTlRcIixcbiAgOTogXCJQUklOVEVSLlNFVFVQXCIsXG4gIDEwOiBcIlFVSVRcIixcbiAgMTE6IFwiTkVXLldJTkRPV1wiLFxuICAxMjogXCJBUlJBTkdFLkFMTFwiLFxuICAxMzogXCJXSU5ET1cuU0laRVwiLFxuICAxNDogXCJXSU5ET1cuTU9WRVwiLFxuICAxNTogXCJGVUxMXCIsXG4gIDE2OiBcIkNMT1NFXCIsXG4gIDE3OiBcIlJVTlwiLFxuICAyMjogXCJTRVQuUFJJTlQuQVJFQVwiLFxuICAyMzogXCJTRVQuUFJJTlQuVElUTEVTXCIsXG4gIDI0OiBcIlNFVC5QQUdFLkJSRUFLXCIsXG4gIDI1OiBcIlJFTU9WRS5QQUdFLkJSRUFLXCIsXG4gIDI2OiBcIkZPTlRcIixcbiAgMjc6IFwiRElTUExBWVwiLFxuICAyODogXCJQUk9URUNULkRPQ1VNRU5UXCIsXG4gIDI5OiBcIlBSRUNJU0lPTlwiLFxuICAzMDogXCJBMS5SMUMxXCIsXG4gIDMxOiBcIkNBTENVTEFURS5OT1dcIixcbiAgMzI6IFwiQ0FMQ1VMQVRJT05cIixcbiAgMzQ6IFwiREFUQS5GSU5EXCIsXG4gIDM1OiBcIkVYVFJBQ1RcIixcbiAgMzY6IFwiREFUQS5ERUxFVEVcIixcbiAgMzc6IFwiU0VULkRBVEFCQVNFXCIsXG4gIDM4OiBcIlNFVC5DUklURVJJQVwiLFxuICAzOTogXCJTT1JUXCIsXG4gIDQwOiBcIkRBVEEuU0VSSUVTXCIsXG4gIDQxOiBcIlRBQkxFXCIsXG4gIDQyOiBcIkZPUk1BVC5OVU1CRVJcIixcbiAgNDM6IFwiQUxJR05NRU5UXCIsXG4gIDQ0OiBcIlNUWUxFXCIsXG4gIDQ1OiBcIkJPUkRFUlwiLFxuICA0NjogXCJDRUxMLlBST1RFQ1RJT05cIixcbiAgNDc6IFwiQ09MVU1OLldJRFRIXCIsXG4gIDQ4OiBcIlVORE9cIixcbiAgNDk6IFwiQ1VUXCIsXG4gIDUwOiBcIkNPUFlcIixcbiAgNTE6IFwiUEFTVEVcIixcbiAgNTI6IFwiQ0xFQVJcIixcbiAgNTM6IFwiUEFTVEUuU1BFQ0lBTFwiLFxuICA1NDogXCJFRElULkRFTEVURVwiLFxuICA1NTogXCJJTlNFUlRcIixcbiAgNTY6IFwiRklMTC5SSUdIVFwiLFxuICA1NzogXCJGSUxMLkRPV05cIixcbiAgNjE6IFwiREVGSU5FLk5BTUVcIixcbiAgNjI6IFwiQ1JFQVRFLk5BTUVTXCIsXG4gIDYzOiBcIkZPUk1VTEEuR09UT1wiLFxuICA2NDogXCJGT1JNVUxBLkZJTkRcIixcbiAgNjU6IFwiU0VMRUNULkxBU1QuQ0VMTFwiLFxuICA2NjogXCJTSE9XLkFDVElWRS5DRUxMXCIsXG4gIDY3OiBcIkdBTExFUlkuQVJFQVwiLFxuICA2ODogXCJHQUxMRVJZLkJBUlwiLFxuICA2OTogXCJHQUxMRVJZLkNPTFVNTlwiLFxuICA3MDogXCJHQUxMRVJZLkxJTkVcIixcbiAgNzE6IFwiR0FMTEVSWS5QSUVcIixcbiAgNzI6IFwiR0FMTEVSWS5TQ0FUVEVSXCIsXG4gIDczOiBcIkNPTUJJTkFUSU9OXCIsXG4gIDc0OiBcIlBSRUZFUlJFRFwiLFxuICA3NTogXCJBREQuT1ZFUkxBWVwiLFxuICA3NjogXCJHUklETElORVNcIixcbiAgNzc6IFwiU0VULlBSRUZFUlJFRFwiLFxuICA3ODogXCJBWEVTXCIsXG4gIDc5OiBcIkxFR0VORFwiLFxuICA4MDogXCJBVFRBQ0guVEVYVFwiLFxuICA4MTogXCJBREQuQVJST1dcIixcbiAgODI6IFwiU0VMRUNULkNIQVJUXCIsXG4gIDgzOiBcIlNFTEVDVC5QTE9ULkFSRUFcIixcbiAgODQ6IFwiUEFUVEVSTlNcIixcbiAgODU6IFwiTUFJTi5DSEFSVFwiLFxuICA4NjogXCJPVkVSTEFZXCIsXG4gIDg3OiBcIlNDQUxFXCIsXG4gIDg4OiBcIkZPUk1BVC5MRUdFTkRcIixcbiAgODk6IFwiRk9STUFULlRFWFRcIixcbiAgOTA6IFwiRURJVC5SRVBFQVRcIixcbiAgOTE6IFwiUEFSU0VcIixcbiAgOTI6IFwiSlVTVElGWVwiLFxuICA5MzogXCJISURFXCIsXG4gIDk0OiBcIlVOSElERVwiLFxuICA5NTogXCJXT1JLU1BBQ0VcIixcbiAgOTY6IFwiRk9STVVMQVwiLFxuICA5NzogXCJGT1JNVUxBLkZJTExcIixcbiAgOTg6IFwiRk9STVVMQS5BUlJBWVwiLFxuICA5OTogXCJEQVRBLkZJTkQuTkVYVFwiLFxuICAxMDA6IFwiREFUQS5GSU5ELlBSRVZcIixcbiAgMTAxOiBcIkZPUk1VTEEuRklORC5ORVhUXCIsXG4gIDEwMjogXCJGT1JNVUxBLkZJTkQuUFJFVlwiLFxuICAxMDM6IFwiQUNUSVZBVEVcIixcbiAgMTA0OiBcIkFDVElWQVRFLk5FWFRcIixcbiAgMTA1OiBcIkFDVElWQVRFLlBSRVZcIixcbiAgMTA2OiBcIlVOTE9DS0VELk5FWFRcIixcbiAgMTA3OiBcIlVOTE9DS0VELlBSRVZcIixcbiAgMTA4OiBcIkNPUFkuUElDVFVSRVwiLFxuICAxMDk6IFwiU0VMRUNUXCIsXG4gIDExMDogXCJERUxFVEUuTkFNRVwiLFxuICAxMTE6IFwiREVMRVRFLkZPUk1BVFwiLFxuICAxMTI6IFwiVkxJTkVcIixcbiAgMTEzOiBcIkhMSU5FXCIsXG4gIDExNDogXCJWUEFHRVwiLFxuICAxMTU6IFwiSFBBR0VcIixcbiAgMTE2OiBcIlZTQ1JPTExcIixcbiAgMTE3OiBcIkhTQ1JPTExcIixcbiAgMTE4OiBcIkFMRVJUXCIsXG4gIDExOTogXCJORVdcIixcbiAgMTIwOiBcIkNBTkNFTC5DT1BZXCIsXG4gIDEyMTogXCJTSE9XLkNMSVBCT0FSRFwiLFxuICAxMjI6IFwiTUVTU0FHRVwiLFxuICAxMjQ6IFwiUEFTVEUuTElOS1wiLFxuICAxMjU6IFwiQVBQLkFDVElWQVRFXCIsXG4gIDEyNjogXCJERUxFVEUuQVJST1dcIixcbiAgMTI3OiBcIlJPVy5IRUlHSFRcIixcbiAgMTI4OiBcIkZPUk1BVC5NT1ZFXCIsXG4gIDEyOTogXCJGT1JNQVQuU0laRVwiLFxuICAxMzA6IFwiRk9STVVMQS5SRVBMQUNFXCIsXG4gIDEzMTogXCJTRU5ELktFWVNcIixcbiAgMTMyOiBcIlNFTEVDVC5TUEVDSUFMXCIsXG4gIDEzMzogXCJBUFBMWS5OQU1FU1wiLFxuICAxMzQ6IFwiUkVQTEFDRS5GT05UXCIsXG4gIDEzNTogXCJGUkVFWkUuUEFORVNcIixcbiAgMTM2OiBcIlNIT1cuSU5GT1wiLFxuICAxMzc6IFwiU1BMSVRcIixcbiAgMTM4OiBcIk9OLldJTkRPV1wiLFxuICAxMzk6IFwiT04uREFUQVwiLFxuICAxNDA6IFwiRElTQUJMRS5JTlBVVFwiLFxuICAxNDI6IFwiT1VUTElORVwiLFxuICAxNDM6IFwiTElTVC5OQU1FU1wiLFxuICAxNDQ6IFwiRklMRS5DTE9TRVwiLFxuICAxNDU6IFwiU0FWRS5XT1JLQk9PS1wiLFxuICAxNDY6IFwiREFUQS5GT1JNXCIsXG4gIDE0NzogXCJDT1BZLkNIQVJUXCIsXG4gIDE0ODogXCJPTi5USU1FXCIsXG4gIDE0OTogXCJXQUlUXCIsXG4gIDE1MDogXCJGT1JNQVQuRk9OVFwiLFxuICAxNTE6IFwiRklMTC5VUFwiLFxuICAxNTI6IFwiRklMTC5MRUZUXCIsXG4gIDE1MzogXCJERUxFVEUuT1ZFUkxBWVwiLFxuICAxNTU6IFwiU0hPUlQuTUVOVVNcIixcbiAgMTU5OiBcIlNFVC5VUERBVEUuU1RBVFVTXCIsXG4gIDE2MTogXCJDT0xPUi5QQUxFVFRFXCIsXG4gIDE2MjogXCJERUxFVEUuU1RZTEVcIixcbiAgMTYzOiBcIldJTkRPVy5SRVNUT1JFXCIsXG4gIDE2NDogXCJXSU5ET1cuTUFYSU1JWkVcIixcbiAgMTY2OiBcIkNIQU5HRS5MSU5LXCIsXG4gIDE2NzogXCJDQUxDVUxBVEUuRE9DVU1FTlRcIixcbiAgMTY4OiBcIk9OLktFWVwiLFxuICAxNjk6IFwiQVBQLlJFU1RPUkVcIixcbiAgMTcwOiBcIkFQUC5NT1ZFXCIsXG4gIDE3MTogXCJBUFAuU0laRVwiLFxuICAxNzI6IFwiQVBQLk1JTklNSVpFXCIsXG4gIDE3MzogXCJBUFAuTUFYSU1JWkVcIixcbiAgMTc0OiBcIkJSSU5HLlRPLkZST05UXCIsXG4gIDE3NTogXCJTRU5ELlRPLkJBQ0tcIixcbiAgMTg1OiBcIk1BSU4uQ0hBUlQuVFlQRVwiLFxuICAxODY6IFwiT1ZFUkxBWS5DSEFSVC5UWVBFXCIsXG4gIDE4NzogXCJTRUxFQ1QuRU5EXCIsXG4gIDE4ODogXCJPUEVOLk1BSUxcIixcbiAgMTg5OiBcIlNFTkQuTUFJTFwiLFxuICAxOTA6IFwiU1RBTkRBUkQuRk9OVFwiLFxuICAxOTE6IFwiQ09OU09MSURBVEVcIixcbiAgMTkyOiBcIlNPUlQuU1BFQ0lBTFwiLFxuICAxOTM6IFwiR0FMTEVSWS4zRC5BUkVBXCIsXG4gIDE5NDogXCJHQUxMRVJZLjNELkNPTFVNTlwiLFxuICAxOTU6IFwiR0FMTEVSWS4zRC5MSU5FXCIsXG4gIDE5NjogXCJHQUxMRVJZLjNELlBJRVwiLFxuICAxOTc6IFwiVklFVy4zRFwiLFxuICAxOTg6IFwiR09BTC5TRUVLXCIsXG4gIDE5OTogXCJXT1JLR1JPVVBcIixcbiAgMjAwOiBcIkZJTEwuR1JPVVBcIixcbiAgMjAxOiBcIlVQREFURS5MSU5LXCIsXG4gIDIwMjogXCJQUk9NT1RFXCIsXG4gIDIwMzogXCJERU1PVEVcIixcbiAgMjA0OiBcIlNIT1cuREVUQUlMXCIsXG4gIDIwNjogXCJVTkdST1VQXCIsXG4gIDIwNzogXCJPQkpFQ1QuUFJPUEVSVElFU1wiLFxuICAyMDg6IFwiU0FWRS5ORVcuT0JKRUNUXCIsXG4gIDIwOTogXCJTSEFSRVwiLFxuICAyMTA6IFwiU0hBUkUuTkFNRVwiLFxuICAyMTE6IFwiRFVQTElDQVRFXCIsXG4gIDIxMjogXCJBUFBMWS5TVFlMRVwiLFxuICAyMTM6IFwiQVNTSUdOLlRPLk9CSkVDVFwiLFxuICAyMTQ6IFwiT0JKRUNULlBST1RFQ1RJT05cIixcbiAgMjE1OiBcIkhJREUuT0JKRUNUXCIsXG4gIDIxNjogXCJTRVQuRVhUUkFDVFwiLFxuICAyMTc6IFwiQ1JFQVRFLlBVQkxJU0hFUlwiLFxuICAyMTg6IFwiU1VCU0NSSUJFLlRPXCIsXG4gIDIxOTogXCJBVFRSSUJVVEVTXCIsXG4gIDIyMDogXCJTSE9XLlRPT0xCQVJcIixcbiAgMjIyOiBcIlBSSU5ULlBSRVZJRVdcIixcbiAgMjIzOiBcIkVESVQuQ09MT1JcIixcbiAgMjI0OiBcIlNIT1cuTEVWRUxTXCIsXG4gIDIyNTogXCJGT1JNQVQuTUFJTlwiLFxuICAyMjY6IFwiRk9STUFULk9WRVJMQVlcIixcbiAgMjI3OiBcIk9OLlJFQ0FMQ1wiLFxuICAyMjg6IFwiRURJVC5TRVJJRVNcIixcbiAgMjI5OiBcIkRFRklORS5TVFlMRVwiLFxuICAyNDA6IFwiTElORS5QUklOVFwiLFxuICAyNDM6IFwiRU5URVIuREFUQVwiLFxuICAyNDk6IFwiR0FMTEVSWS5SQURBUlwiLFxuICAyNTA6IFwiTUVSR0UuU1RZTEVTXCIsXG4gIDI1MTogXCJFRElUSU9OLk9QVElPTlNcIixcbiAgMjUyOiBcIlBBU1RFLlBJQ1RVUkVcIixcbiAgMjUzOiBcIlBBU1RFLlBJQ1RVUkUuTElOS1wiLFxuICAyNTQ6IFwiU1BFTExJTkdcIixcbiAgMjU2OiBcIlpPT01cIixcbiAgMjU5OiBcIklOU0VSVC5PQkpFQ1RcIixcbiAgMjYwOiBcIldJTkRPVy5NSU5JTUlaRVwiLFxuICAyNjU6IFwiU09VTkQuTk9URVwiLFxuICAyNjY6IFwiU09VTkQuUExBWVwiLFxuICAyNjc6IFwiRk9STUFULlNIQVBFXCIsXG4gIDI2ODogXCJFWFRFTkQuUE9MWUdPTlwiLFxuICAyNjk6IFwiRk9STUFULkFVVE9cIixcbiAgMjcyOiBcIkdBTExFUlkuM0QuQkFSXCIsXG4gIDI3MzogXCJHQUxMRVJZLjNELlNVUkZBQ0VcIixcbiAgMjc0OiBcIkZJTEwuQVVUT1wiLFxuICAyNzY6IFwiQ1VTVE9NSVpFLlRPT0xCQVJcIixcbiAgMjc3OiBcIkFERC5UT09MXCIsXG4gIDI3ODogXCJFRElULk9CSkVDVFwiLFxuICAyNzk6IFwiT04uRE9VQkxFQ0xJQ0tcIixcbiAgMjgwOiBcIk9OLkVOVFJZXCIsXG4gIDI4MTogXCJXT1JLQk9PSy5BRERcIixcbiAgMjgyOiBcIldPUktCT09LLk1PVkVcIixcbiAgMjgzOiBcIldPUktCT09LLkNPUFlcIixcbiAgMjg0OiBcIldPUktCT09LLk9QVElPTlNcIixcbiAgMjg1OiBcIlNBVkUuV09SS1NQQUNFXCIsXG4gIDI4ODogXCJDSEFSVC5XSVpBUkRcIixcbiAgMjg5OiBcIkRFTEVURS5UT09MXCIsXG4gIDI5MDogXCJNT1ZFLlRPT0xcIixcbiAgMjkxOiBcIldPUktCT09LLlNFTEVDVFwiLFxuICAyOTI6IFwiV09SS0JPT0suQUNUSVZBVEVcIixcbiAgMjkzOiBcIkFTU0lHTi5UTy5UT09MXCIsXG4gIDI5NTogXCJDT1BZLlRPT0xcIixcbiAgMjk2OiBcIlJFU0VULlRPT0xcIixcbiAgMjk3OiBcIkNPTlNUUkFJTi5OVU1FUklDXCIsXG4gIDI5ODogXCJQQVNURS5UT09MXCIsXG4gIDMwMjogXCJXT1JLQk9PSy5ORVdcIixcbiAgMzA1OiBcIlNDRU5BUklPLkNFTExTXCIsXG4gIDMwNjogXCJTQ0VOQVJJTy5ERUxFVEVcIixcbiAgMzA3OiBcIlNDRU5BUklPLkFERFwiLFxuICAzMDg6IFwiU0NFTkFSSU8uRURJVFwiLFxuICAzMDk6IFwiU0NFTkFSSU8uU0hPV1wiLFxuICAzMTA6IFwiU0NFTkFSSU8uU0hPVy5ORVhUXCIsXG4gIDMxMTogXCJTQ0VOQVJJTy5TVU1NQVJZXCIsXG4gIDMxMjogXCJQSVZPVC5UQUJMRS5XSVpBUkRcIixcbiAgMzEzOiBcIlBJVk9ULkZJRUxELlBST1BFUlRJRVNcIixcbiAgMzE0OiBcIlBJVk9ULkZJRUxEXCIsXG4gIDMxNTogXCJQSVZPVC5JVEVNXCIsXG4gIDMxNjogXCJQSVZPVC5BREQuRklFTERTXCIsXG4gIDMxODogXCJPUFRJT05TLkNBTENVTEFUSU9OXCIsXG4gIDMxOTogXCJPUFRJT05TLkVESVRcIixcbiAgMzIwOiBcIk9QVElPTlMuVklFV1wiLFxuICAzMjE6IFwiQURESU4uTUFOQUdFUlwiLFxuICAzMjI6IFwiTUVOVS5FRElUT1JcIixcbiAgMzIzOiBcIkFUVEFDSC5UT09MQkFSU1wiLFxuICAzMjQ6IFwiVkJBQWN0aXZhdGVcIixcbiAgMzI1OiBcIk9QVElPTlMuQ0hBUlRcIixcbiAgMzI4OiBcIlZCQS5JTlNFUlQuRklMRVwiLFxuICAzMzA6IFwiVkJBLlBST0NFRFVSRS5ERUZJTklUSU9OXCIsXG4gIDMzNjogXCJST1VUSU5HLlNMSVBcIixcbiAgMzM4OiBcIlJPVVRFLkRPQ1VNRU5UXCIsXG4gIDMzOTogXCJNQUlMLkxPR09OXCIsXG4gIDM0MjogXCJJTlNFUlQuUElDVFVSRVwiLFxuICAzNDM6IFwiRURJVC5UT09MXCIsXG4gIDM0NDogXCJHQUxMRVJZLkRPVUdITlVUXCIsXG4gIDM1MDogXCJDSEFSVC5UUkVORFwiLFxuICAzNTI6IFwiUElWT1QuSVRFTS5QUk9QRVJUSUVTXCIsXG4gIDM1NDogXCJXT1JLQk9PSy5JTlNFUlRcIixcbiAgMzU1OiBcIk9QVElPTlMuVFJBTlNJVElPTlwiLFxuICAzNTY6IFwiT1BUSU9OUy5HRU5FUkFMXCIsXG4gIDM3MDogXCJGSUxURVIuQURWQU5DRURcIixcbiAgMzczOiBcIk1BSUwuQURELk1BSUxFUlwiLFxuICAzNzQ6IFwiTUFJTC5ERUxFVEUuTUFJTEVSXCIsXG4gIDM3NTogXCJNQUlMLlJFUExZXCIsXG4gIDM3NjogXCJNQUlMLlJFUExZLkFMTFwiLFxuICAzNzc6IFwiTUFJTC5GT1JXQVJEXCIsXG4gIDM3ODogXCJNQUlMLk5FWFQuTEVUVEVSXCIsXG4gIDM3OTogXCJEQVRBLkxBQkVMXCIsXG4gIDM4MDogXCJJTlNFUlQuVElUTEVcIixcbiAgMzgxOiBcIkZPTlQuUFJPUEVSVElFU1wiLFxuICAzODI6IFwiTUFDUk8uT1BUSU9OU1wiLFxuICAzODM6IFwiV09SS0JPT0suSElERVwiLFxuICAzODQ6IFwiV09SS0JPT0suVU5ISURFXCIsXG4gIDM4NTogXCJXT1JLQk9PSy5ERUxFVEVcIixcbiAgMzg2OiBcIldPUktCT09LLk5BTUVcIixcbiAgMzg4OiBcIkdBTExFUlkuQ1VTVE9NXCIsXG4gIDM5MDogXCJBREQuQ0hBUlQuQVVUT0ZPUk1BVFwiLFxuICAzOTE6IFwiREVMRVRFLkNIQVJULkFVVE9GT1JNQVRcIixcbiAgMzkyOiBcIkNIQVJULkFERC5EQVRBXCIsXG4gIDM5MzogXCJBVVRPLk9VVExJTkVcIixcbiAgMzk0OiBcIlRBQi5PUkRFUlwiLFxuICAzOTU6IFwiU0hPVy5ESUFMT0dcIixcbiAgMzk2OiBcIlNFTEVDVC5BTExcIixcbiAgMzk3OiBcIlVOR1JPVVAuU0hFRVRTXCIsXG4gIDM5ODogXCJTVUJUT1RBTC5DUkVBVEVcIixcbiAgMzk5OiBcIlNVQlRPVEFMLlJFTU9WRVwiLFxuICA0MDA6IFwiUkVOQU1FLk9CSkVDVFwiLFxuICA0MTI6IFwiV09SS0JPT0suU0NST0xMXCIsXG4gIDQxMzogXCJXT1JLQk9PSy5ORVhUXCIsXG4gIDQxNDogXCJXT1JLQk9PSy5QUkVWXCIsXG4gIDQxNTogXCJXT1JLQk9PSy5UQUIuU1BMSVRcIixcbiAgNDE2OiBcIkZVTEwuU0NSRUVOXCIsXG4gIDQxNzogXCJXT1JLQk9PSy5QUk9URUNUXCIsXG4gIDQyMDogXCJTQ1JPTExCQVIuUFJPUEVSVElFU1wiLFxuICA0MjE6IFwiUElWT1QuU0hPVy5QQUdFU1wiLFxuICA0MjI6IFwiVEVYVC5UTy5DT0xVTU5TXCIsXG4gIDQyMzogXCJGT1JNQVQuQ0hBUlRUWVBFXCIsXG4gIDQyNDogXCJMSU5LLkZPUk1BVFwiLFxuICA0MjU6IFwiVFJBQ0VSLkRJU1BMQVlcIixcbiAgNDMwOiBcIlRSQUNFUi5OQVZJR0FURVwiLFxuICA0MzE6IFwiVFJBQ0VSLkNMRUFSXCIsXG4gIDQzMjogXCJUUkFDRVIuRVJST1JcIixcbiAgNDMzOiBcIlBJVk9ULkZJRUxELkdST1VQXCIsXG4gIDQzNDogXCJQSVZPVC5GSUVMRC5VTkdST1VQXCIsXG4gIDQzNTogXCJDSEVDS0JPWC5QUk9QRVJUSUVTXCIsXG4gIDQzNjogXCJMQUJFTC5QUk9QRVJUSUVTXCIsXG4gIDQzNzogXCJMSVNUQk9YLlBST1BFUlRJRVNcIixcbiAgNDM4OiBcIkVESVRCT1guUFJPUEVSVElFU1wiLFxuICA0Mzk6IFwiUElWT1QuUkVGUkVTSFwiLFxuICA0NDA6IFwiTElOSy5DT01CT1wiLFxuICA0NDE6IFwiT1BFTi5URVhUXCIsXG4gIDQ0MjogXCJISURFLkRJQUxPR1wiLFxuICA0NDM6IFwiU0VULkRJQUxPRy5GT0NVU1wiLFxuICA0NDQ6IFwiRU5BQkxFLk9CSkVDVFwiLFxuICA0NDU6IFwiUFVTSEJVVFRPTi5QUk9QRVJUSUVTXCIsXG4gIDQ0NjogXCJTRVQuRElBTE9HLkRFRkFVTFRcIixcbiAgNDQ3OiBcIkZJTFRFUlwiLFxuICA0NDg6IFwiRklMVEVSLlNIT1cuQUxMXCIsXG4gIDQ0OTogXCJDTEVBUi5PVVRMSU5FXCIsXG4gIDQ1MDogXCJGVU5DVElPTi5XSVpBUkRcIixcbiAgNDUxOiBcIkFERC5MSVNULklURU1cIixcbiAgNDUyOiBcIlNFVC5MSVNULklURU1cIixcbiAgNDUzOiBcIlJFTU9WRS5MSVNULklURU1cIixcbiAgNDU0OiBcIlNFTEVDVC5MSVNULklURU1cIixcbiAgNDU1OiBcIlNFVC5DT05UUk9MLlZBTFVFXCIsXG4gIDQ1NjogXCJTQVZFLkNPUFkuQVNcIixcbiAgNDU4OiBcIk9QVElPTlMuTElTVFMuQUREXCIsXG4gIDQ1OTogXCJPUFRJT05TLkxJU1RTLkRFTEVURVwiLFxuICA0NjA6IFwiU0VSSUVTLkFYRVNcIixcbiAgNDYxOiBcIlNFUklFUy5YXCIsXG4gIDQ2MjogXCJTRVJJRVMuWVwiLFxuICA0NjM6IFwiRVJST1JCQVIuWFwiLFxuICA0NjQ6IFwiRVJST1JCQVIuWVwiLFxuICA0NjU6IFwiRk9STUFULkNIQVJUXCIsXG4gIDQ2NjogXCJTRVJJRVMuT1JERVJcIixcbiAgNDY3OiBcIk1BSUwuTE9HT0ZGXCIsXG4gIDQ2ODogXCJDTEVBUi5ST1VUSU5HLlNMSVBcIixcbiAgNDY5OiBcIkFQUC5BQ1RJVkFURS5NSUNST1NPRlRcIixcbiAgNDcwOiBcIk1BSUwuRURJVC5NQUlMRVJcIixcbiAgNDcxOiBcIk9OLlNIRUVUXCIsXG4gIDQ3MjogXCJTVEFOREFSRC5XSURUSFwiLFxuICA0NzM6IFwiU0NFTkFSSU8uTUVSR0VcIixcbiAgNDc0OiBcIlNVTU1BUlkuSU5GT1wiLFxuICA0NzU6IFwiRklORC5GSUxFXCIsXG4gIDQ3NjogXCJBQ1RJVkUuQ0VMTC5GT05UXCIsXG4gIDQ3NzogXCJFTkFCTEUuVElQV0laQVJEXCIsXG4gIDQ3ODogXCJWQkEuTUFLRS5BRERJTlwiLFxuICA0ODA6IFwiSU5TRVJUREFUQVRBQkxFXCIsXG4gIDQ4MTogXCJXT1JLR1JPVVAuT1BUSU9OU1wiLFxuICA0ODI6IFwiTUFJTC5TRU5ELk1BSUxFUlwiLFxuICA0ODU6IFwiQVVUT0NPUlJFQ1RcIixcbiAgNDg5OiBcIlBPU1QuRE9DVU1FTlRcIixcbiAgNDkxOiBcIlBJQ0tMSVNUXCIsXG4gIDQ5MzogXCJWSUVXLlNIT1dcIixcbiAgNDk0OiBcIlZJRVcuREVGSU5FXCIsXG4gIDQ5NTogXCJWSUVXLkRFTEVURVwiLFxuICA1MDk6IFwiU0hFRVQuQkFDS0dST1VORFwiLFxuICA1MTA6IFwiSU5TRVJULk1BUC5PQkpFQ1RcIixcbiAgNTExOiBcIk9QVElPTlMuTUVOT05PXCIsXG4gIDUxNzogXCJNU09DSEVDS1NcIixcbiAgNTE4OiBcIk5PUk1BTFwiLFxuICA1MTk6IFwiTEFZT1VUXCIsXG4gIDUyMDogXCJSTS5QUklOVC5BUkVBXCIsXG4gIDUyMTogXCJDTEVBUi5QUklOVC5BUkVBXCIsXG4gIDUyMjogXCJBREQuUFJJTlQuQVJFQVwiLFxuICA1MjM6IFwiTU9WRS5CUktcIixcbiAgNTQ1OiBcIkhJREVDVVJSLk5PVEVcIixcbiAgNTQ2OiBcIkhJREVBTEwuTk9URVNcIixcbiAgNTQ3OiBcIkRFTEVURS5OT1RFXCIsXG4gIDU0ODogXCJUUkFWRVJTRS5OT1RFU1wiLFxuICA1NDk6IFwiQUNUSVZBVEUuTk9URVNcIixcbiAgNjIwOiBcIlBST1RFQ1QuUkVWSVNJT05TXCIsXG4gIDYyMTogXCJVTlBST1RFQ1QuUkVWSVNJT05TXCIsXG4gIDY0NzogXCJPUFRJT05TLk1FXCIsXG4gIDY1MzogXCJXRUIuUFVCTElTSFwiLFxuICA2Njc6IFwiTkVXV0VCUVVFUllcIixcbiAgNjczOiBcIlBJVk9ULlRBQkxFLkNIQVJUXCIsXG4gIDc1MzogXCJPUFRJT05TLlNBVkVcIixcbiAgNzU1OiBcIk9QVElPTlMuU1BFTExcIixcbiAgODA4OiBcIkhJREVBTEwuSU5LQU5OT1RTXCJcbn07XG52YXIgRnRhYiA9IHtcbiAgMDogXCJDT1VOVFwiLFxuICAxOiBcIklGXCIsXG4gIDI6IFwiSVNOQVwiLFxuICAzOiBcIklTRVJST1JcIixcbiAgNDogXCJTVU1cIixcbiAgNTogXCJBVkVSQUdFXCIsXG4gIDY6IFwiTUlOXCIsXG4gIDc6IFwiTUFYXCIsXG4gIDg6IFwiUk9XXCIsXG4gIDk6IFwiQ09MVU1OXCIsXG4gIDEwOiBcIk5BXCIsXG4gIDExOiBcIk5QVlwiLFxuICAxMjogXCJTVERFVlwiLFxuICAxMzogXCJET0xMQVJcIixcbiAgMTQ6IFwiRklYRURcIixcbiAgMTU6IFwiU0lOXCIsXG4gIDE2OiBcIkNPU1wiLFxuICAxNzogXCJUQU5cIixcbiAgMTg6IFwiQVRBTlwiLFxuICAxOTogXCJQSVwiLFxuICAyMDogXCJTUVJUXCIsXG4gIDIxOiBcIkVYUFwiLFxuICAyMjogXCJMTlwiLFxuICAyMzogXCJMT0cxMFwiLFxuICAyNDogXCJBQlNcIixcbiAgMjU6IFwiSU5UXCIsXG4gIDI2OiBcIlNJR05cIixcbiAgMjc6IFwiUk9VTkRcIixcbiAgMjg6IFwiTE9PS1VQXCIsXG4gIDI5OiBcIklOREVYXCIsXG4gIDMwOiBcIlJFUFRcIixcbiAgMzE6IFwiTUlEXCIsXG4gIDMyOiBcIkxFTlwiLFxuICAzMzogXCJWQUxVRVwiLFxuICAzNDogXCJUUlVFXCIsXG4gIDM1OiBcIkZBTFNFXCIsXG4gIDM2OiBcIkFORFwiLFxuICAzNzogXCJPUlwiLFxuICAzODogXCJOT1RcIixcbiAgMzk6IFwiTU9EXCIsXG4gIDQwOiBcIkRDT1VOVFwiLFxuICA0MTogXCJEU1VNXCIsXG4gIDQyOiBcIkRBVkVSQUdFXCIsXG4gIDQzOiBcIkRNSU5cIixcbiAgNDQ6IFwiRE1BWFwiLFxuICA0NTogXCJEU1RERVZcIixcbiAgNDY6IFwiVkFSXCIsXG4gIDQ3OiBcIkRWQVJcIixcbiAgNDg6IFwiVEVYVFwiLFxuICA0OTogXCJMSU5FU1RcIixcbiAgNTA6IFwiVFJFTkRcIixcbiAgNTE6IFwiTE9HRVNUXCIsXG4gIDUyOiBcIkdST1dUSFwiLFxuICA1MzogXCJHT1RPXCIsXG4gIDU0OiBcIkhBTFRcIixcbiAgNTU6IFwiUkVUVVJOXCIsXG4gIDU2OiBcIlBWXCIsXG4gIDU3OiBcIkZWXCIsXG4gIDU4OiBcIk5QRVJcIixcbiAgNTk6IFwiUE1UXCIsXG4gIDYwOiBcIlJBVEVcIixcbiAgNjE6IFwiTUlSUlwiLFxuICA2MjogXCJJUlJcIixcbiAgNjM6IFwiUkFORFwiLFxuICA2NDogXCJNQVRDSFwiLFxuICA2NTogXCJEQVRFXCIsXG4gIDY2OiBcIlRJTUVcIixcbiAgNjc6IFwiREFZXCIsXG4gIDY4OiBcIk1PTlRIXCIsXG4gIDY5OiBcIllFQVJcIixcbiAgNzA6IFwiV0VFS0RBWVwiLFxuICA3MTogXCJIT1VSXCIsXG4gIDcyOiBcIk1JTlVURVwiLFxuICA3MzogXCJTRUNPTkRcIixcbiAgNzQ6IFwiTk9XXCIsXG4gIDc1OiBcIkFSRUFTXCIsXG4gIDc2OiBcIlJPV1NcIixcbiAgNzc6IFwiQ09MVU1OU1wiLFxuICA3ODogXCJPRkZTRVRcIixcbiAgNzk6IFwiQUJTUkVGXCIsXG4gIDgwOiBcIlJFTFJFRlwiLFxuICA4MTogXCJBUkdVTUVOVFwiLFxuICA4MjogXCJTRUFSQ0hcIixcbiAgODM6IFwiVFJBTlNQT1NFXCIsXG4gIDg0OiBcIkVSUk9SXCIsXG4gIDg1OiBcIlNURVBcIixcbiAgODY6IFwiVFlQRVwiLFxuICA4NzogXCJFQ0hPXCIsXG4gIDg4OiBcIlNFVC5OQU1FXCIsXG4gIDg5OiBcIkNBTExFUlwiLFxuICA5MDogXCJERVJFRlwiLFxuICA5MTogXCJXSU5ET1dTXCIsXG4gIDkyOiBcIlNFUklFU1wiLFxuICA5MzogXCJET0NVTUVOVFNcIixcbiAgOTQ6IFwiQUNUSVZFLkNFTExcIixcbiAgOTU6IFwiU0VMRUNUSU9OXCIsXG4gIDk2OiBcIlJFU1VMVFwiLFxuICA5NzogXCJBVEFOMlwiLFxuICA5ODogXCJBU0lOXCIsXG4gIDk5OiBcIkFDT1NcIixcbiAgMTAwOiBcIkNIT09TRVwiLFxuICAxMDE6IFwiSExPT0tVUFwiLFxuICAxMDI6IFwiVkxPT0tVUFwiLFxuICAxMDM6IFwiTElOS1NcIixcbiAgMTA0OiBcIklOUFVUXCIsXG4gIDEwNTogXCJJU1JFRlwiLFxuICAxMDY6IFwiR0VULkZPUk1VTEFcIixcbiAgMTA3OiBcIkdFVC5OQU1FXCIsXG4gIDEwODogXCJTRVQuVkFMVUVcIixcbiAgMTA5OiBcIkxPR1wiLFxuICAxMTA6IFwiRVhFQ1wiLFxuICAxMTE6IFwiQ0hBUlwiLFxuICAxMTI6IFwiTE9XRVJcIixcbiAgMTEzOiBcIlVQUEVSXCIsXG4gIDExNDogXCJQUk9QRVJcIixcbiAgMTE1OiBcIkxFRlRcIixcbiAgMTE2OiBcIlJJR0hUXCIsXG4gIDExNzogXCJFWEFDVFwiLFxuICAxMTg6IFwiVFJJTVwiLFxuICAxMTk6IFwiUkVQTEFDRVwiLFxuICAxMjA6IFwiU1VCU1RJVFVURVwiLFxuICAxMjE6IFwiQ09ERVwiLFxuICAxMjI6IFwiTkFNRVNcIixcbiAgMTIzOiBcIkRJUkVDVE9SWVwiLFxuICAxMjQ6IFwiRklORFwiLFxuICAxMjU6IFwiQ0VMTFwiLFxuICAxMjY6IFwiSVNFUlJcIixcbiAgMTI3OiBcIklTVEVYVFwiLFxuICAxMjg6IFwiSVNOVU1CRVJcIixcbiAgMTI5OiBcIklTQkxBTktcIixcbiAgMTMwOiBcIlRcIixcbiAgMTMxOiBcIk5cIixcbiAgMTMyOiBcIkZPUEVOXCIsXG4gIDEzMzogXCJGQ0xPU0VcIixcbiAgMTM0OiBcIkZTSVpFXCIsXG4gIDEzNTogXCJGUkVBRExOXCIsXG4gIDEzNjogXCJGUkVBRFwiLFxuICAxMzc6IFwiRldSSVRFTE5cIixcbiAgMTM4OiBcIkZXUklURVwiLFxuICAxMzk6IFwiRlBPU1wiLFxuICAxNDA6IFwiREFURVZBTFVFXCIsXG4gIDE0MTogXCJUSU1FVkFMVUVcIixcbiAgMTQyOiBcIlNMTlwiLFxuICAxNDM6IFwiU1lEXCIsXG4gIDE0NDogXCJEREJcIixcbiAgMTQ1OiBcIkdFVC5ERUZcIixcbiAgMTQ2OiBcIlJFRlRFWFRcIixcbiAgMTQ3OiBcIlRFWFRSRUZcIixcbiAgMTQ4OiBcIklORElSRUNUXCIsXG4gIDE0OTogXCJSRUdJU1RFUlwiLFxuICAxNTA6IFwiQ0FMTFwiLFxuICAxNTE6IFwiQURELkJBUlwiLFxuICAxNTI6IFwiQURELk1FTlVcIixcbiAgMTUzOiBcIkFERC5DT01NQU5EXCIsXG4gIDE1NDogXCJFTkFCTEUuQ09NTUFORFwiLFxuICAxNTU6IFwiQ0hFQ0suQ09NTUFORFwiLFxuICAxNTY6IFwiUkVOQU1FLkNPTU1BTkRcIixcbiAgMTU3OiBcIlNIT1cuQkFSXCIsXG4gIDE1ODogXCJERUxFVEUuTUVOVVwiLFxuICAxNTk6IFwiREVMRVRFLkNPTU1BTkRcIixcbiAgMTYwOiBcIkdFVC5DSEFSVC5JVEVNXCIsXG4gIDE2MTogXCJESUFMT0cuQk9YXCIsXG4gIDE2MjogXCJDTEVBTlwiLFxuICAxNjM6IFwiTURFVEVSTVwiLFxuICAxNjQ6IFwiTUlOVkVSU0VcIixcbiAgMTY1OiBcIk1NVUxUXCIsXG4gIDE2NjogXCJGSUxFU1wiLFxuICAxNjc6IFwiSVBNVFwiLFxuICAxNjg6IFwiUFBNVFwiLFxuICAxNjk6IFwiQ09VTlRBXCIsXG4gIDE3MDogXCJDQU5DRUwuS0VZXCIsXG4gIDE3MTogXCJGT1JcIixcbiAgMTcyOiBcIldISUxFXCIsXG4gIDE3MzogXCJCUkVBS1wiLFxuICAxNzQ6IFwiTkVYVFwiLFxuICAxNzU6IFwiSU5JVElBVEVcIixcbiAgMTc2OiBcIlJFUVVFU1RcIixcbiAgMTc3OiBcIlBPS0VcIixcbiAgMTc4OiBcIkVYRUNVVEVcIixcbiAgMTc5OiBcIlRFUk1JTkFURVwiLFxuICAxODA6IFwiUkVTVEFSVFwiLFxuICAxODE6IFwiSEVMUFwiLFxuICAxODI6IFwiR0VULkJBUlwiLFxuICAxODM6IFwiUFJPRFVDVFwiLFxuICAxODQ6IFwiRkFDVFwiLFxuICAxODU6IFwiR0VULkNFTExcIixcbiAgMTg2OiBcIkdFVC5XT1JLU1BBQ0VcIixcbiAgMTg3OiBcIkdFVC5XSU5ET1dcIixcbiAgMTg4OiBcIkdFVC5ET0NVTUVOVFwiLFxuICAxODk6IFwiRFBST0RVQ1RcIixcbiAgMTkwOiBcIklTTk9OVEVYVFwiLFxuICAxOTE6IFwiR0VULk5PVEVcIixcbiAgMTkyOiBcIk5PVEVcIixcbiAgMTkzOiBcIlNUREVWUFwiLFxuICAxOTQ6IFwiVkFSUFwiLFxuICAxOTU6IFwiRFNUREVWUFwiLFxuICAxOTY6IFwiRFZBUlBcIixcbiAgMTk3OiBcIlRSVU5DXCIsXG4gIDE5ODogXCJJU0xPR0lDQUxcIixcbiAgMTk5OiBcIkRDT1VOVEFcIixcbiAgMjAwOiBcIkRFTEVURS5CQVJcIixcbiAgMjAxOiBcIlVOUkVHSVNURVJcIixcbiAgMjA0OiBcIlVTRE9MTEFSXCIsXG4gIDIwNTogXCJGSU5EQlwiLFxuICAyMDY6IFwiU0VBUkNIQlwiLFxuICAyMDc6IFwiUkVQTEFDRUJcIixcbiAgMjA4OiBcIkxFRlRCXCIsXG4gIDIwOTogXCJSSUdIVEJcIixcbiAgMjEwOiBcIk1JREJcIixcbiAgMjExOiBcIkxFTkJcIixcbiAgMjEyOiBcIlJPVU5EVVBcIixcbiAgMjEzOiBcIlJPVU5ERE9XTlwiLFxuICAyMTQ6IFwiQVNDXCIsXG4gIDIxNTogXCJEQkNTXCIsXG4gIDIxNjogXCJSQU5LXCIsXG4gIDIxOTogXCJBRERSRVNTXCIsXG4gIDIyMDogXCJEQVlTMzYwXCIsXG4gIDIyMTogXCJUT0RBWVwiLFxuICAyMjI6IFwiVkRCXCIsXG4gIDIyMzogXCJFTFNFXCIsXG4gIDIyNDogXCJFTFNFLklGXCIsXG4gIDIyNTogXCJFTkQuSUZcIixcbiAgMjI2OiBcIkZPUi5DRUxMXCIsXG4gIDIyNzogXCJNRURJQU5cIixcbiAgMjI4OiBcIlNVTVBST0RVQ1RcIixcbiAgMjI5OiBcIlNJTkhcIixcbiAgMjMwOiBcIkNPU0hcIixcbiAgMjMxOiBcIlRBTkhcIixcbiAgMjMyOiBcIkFTSU5IXCIsXG4gIDIzMzogXCJBQ09TSFwiLFxuICAyMzQ6IFwiQVRBTkhcIixcbiAgMjM1OiBcIkRHRVRcIixcbiAgMjM2OiBcIkNSRUFURS5PQkpFQ1RcIixcbiAgMjM3OiBcIlZPTEFUSUxFXCIsXG4gIDIzODogXCJMQVNULkVSUk9SXCIsXG4gIDIzOTogXCJDVVNUT00uVU5ET1wiLFxuICAyNDA6IFwiQ1VTVE9NLlJFUEVBVFwiLFxuICAyNDE6IFwiRk9STVVMQS5DT05WRVJUXCIsXG4gIDI0MjogXCJHRVQuTElOSy5JTkZPXCIsXG4gIDI0MzogXCJURVhULkJPWFwiLFxuICAyNDQ6IFwiSU5GT1wiLFxuICAyNDU6IFwiR1JPVVBcIixcbiAgMjQ2OiBcIkdFVC5PQkpFQ1RcIixcbiAgMjQ3OiBcIkRCXCIsXG4gIDI0ODogXCJQQVVTRVwiLFxuICAyNTE6IFwiUkVTVU1FXCIsXG4gIDI1MjogXCJGUkVRVUVOQ1lcIixcbiAgMjUzOiBcIkFERC5UT09MQkFSXCIsXG4gIDI1NDogXCJERUxFVEUuVE9PTEJBUlwiLFxuICAyNTU6IFwiVXNlclwiLFxuICAyNTY6IFwiUkVTRVQuVE9PTEJBUlwiLFxuICAyNTc6IFwiRVZBTFVBVEVcIixcbiAgMjU4OiBcIkdFVC5UT09MQkFSXCIsXG4gIDI1OTogXCJHRVQuVE9PTFwiLFxuICAyNjA6IFwiU1BFTExJTkcuQ0hFQ0tcIixcbiAgMjYxOiBcIkVSUk9SLlRZUEVcIixcbiAgMjYyOiBcIkFQUC5USVRMRVwiLFxuICAyNjM6IFwiV0lORE9XLlRJVExFXCIsXG4gIDI2NDogXCJTQVZFLlRPT0xCQVJcIixcbiAgMjY1OiBcIkVOQUJMRS5UT09MXCIsXG4gIDI2NjogXCJQUkVTUy5UT09MXCIsXG4gIDI2NzogXCJSRUdJU1RFUi5JRFwiLFxuICAyNjg6IFwiR0VULldPUktCT09LXCIsXG4gIDI2OTogXCJBVkVERVZcIixcbiAgMjcwOiBcIkJFVEFESVNUXCIsXG4gIDI3MTogXCJHQU1NQUxOXCIsXG4gIDI3MjogXCJCRVRBSU5WXCIsXG4gIDI3MzogXCJCSU5PTURJU1RcIixcbiAgMjc0OiBcIkNISURJU1RcIixcbiAgMjc1OiBcIkNISUlOVlwiLFxuICAyNzY6IFwiQ09NQklOXCIsXG4gIDI3NzogXCJDT05GSURFTkNFXCIsXG4gIDI3ODogXCJDUklUQklOT01cIixcbiAgMjc5OiBcIkVWRU5cIixcbiAgMjgwOiBcIkVYUE9ORElTVFwiLFxuICAyODE6IFwiRkRJU1RcIixcbiAgMjgyOiBcIkZJTlZcIixcbiAgMjgzOiBcIkZJU0hFUlwiLFxuICAyODQ6IFwiRklTSEVSSU5WXCIsXG4gIDI4NTogXCJGTE9PUlwiLFxuICAyODY6IFwiR0FNTUFESVNUXCIsXG4gIDI4NzogXCJHQU1NQUlOVlwiLFxuICAyODg6IFwiQ0VJTElOR1wiLFxuICAyODk6IFwiSFlQR0VPTURJU1RcIixcbiAgMjkwOiBcIkxPR05PUk1ESVNUXCIsXG4gIDI5MTogXCJMT0dJTlZcIixcbiAgMjkyOiBcIk5FR0JJTk9NRElTVFwiLFxuICAyOTM6IFwiTk9STURJU1RcIixcbiAgMjk0OiBcIk5PUk1TRElTVFwiLFxuICAyOTU6IFwiTk9STUlOVlwiLFxuICAyOTY6IFwiTk9STVNJTlZcIixcbiAgMjk3OiBcIlNUQU5EQVJESVpFXCIsXG4gIDI5ODogXCJPRERcIixcbiAgMjk5OiBcIlBFUk1VVFwiLFxuICAzMDA6IFwiUE9JU1NPTlwiLFxuICAzMDE6IFwiVERJU1RcIixcbiAgMzAyOiBcIldFSUJVTExcIixcbiAgMzAzOiBcIlNVTVhNWTJcIixcbiAgMzA0OiBcIlNVTVgyTVkyXCIsXG4gIDMwNTogXCJTVU1YMlBZMlwiLFxuICAzMDY6IFwiQ0hJVEVTVFwiLFxuICAzMDc6IFwiQ09SUkVMXCIsXG4gIDMwODogXCJDT1ZBUlwiLFxuICAzMDk6IFwiRk9SRUNBU1RcIixcbiAgMzEwOiBcIkZURVNUXCIsXG4gIDMxMTogXCJJTlRFUkNFUFRcIixcbiAgMzEyOiBcIlBFQVJTT05cIixcbiAgMzEzOiBcIlJTUVwiLFxuICAzMTQ6IFwiU1RFWVhcIixcbiAgMzE1OiBcIlNMT1BFXCIsXG4gIDMxNjogXCJUVEVTVFwiLFxuICAzMTc6IFwiUFJPQlwiLFxuICAzMTg6IFwiREVWU1FcIixcbiAgMzE5OiBcIkdFT01FQU5cIixcbiAgMzIwOiBcIkhBUk1FQU5cIixcbiAgMzIxOiBcIlNVTVNRXCIsXG4gIDMyMjogXCJLVVJUXCIsXG4gIDMyMzogXCJTS0VXXCIsXG4gIDMyNDogXCJaVEVTVFwiLFxuICAzMjU6IFwiTEFSR0VcIixcbiAgMzI2OiBcIlNNQUxMXCIsXG4gIDMyNzogXCJRVUFSVElMRVwiLFxuICAzMjg6IFwiUEVSQ0VOVElMRVwiLFxuICAzMjk6IFwiUEVSQ0VOVFJBTktcIixcbiAgMzMwOiBcIk1PREVcIixcbiAgMzMxOiBcIlRSSU1NRUFOXCIsXG4gIDMzMjogXCJUSU5WXCIsXG4gIDMzNDogXCJNT1ZJRS5DT01NQU5EXCIsXG4gIDMzNTogXCJHRVQuTU9WSUVcIixcbiAgMzM2OiBcIkNPTkNBVEVOQVRFXCIsXG4gIDMzNzogXCJQT1dFUlwiLFxuICAzMzg6IFwiUElWT1QuQURELkRBVEFcIixcbiAgMzM5OiBcIkdFVC5QSVZPVC5UQUJMRVwiLFxuICAzNDA6IFwiR0VULlBJVk9ULkZJRUxEXCIsXG4gIDM0MTogXCJHRVQuUElWT1QuSVRFTVwiLFxuICAzNDI6IFwiUkFESUFOU1wiLFxuICAzNDM6IFwiREVHUkVFU1wiLFxuICAzNDQ6IFwiU1VCVE9UQUxcIixcbiAgMzQ1OiBcIlNVTUlGXCIsXG4gIDM0NjogXCJDT1VOVElGXCIsXG4gIDM0NzogXCJDT1VOVEJMQU5LXCIsXG4gIDM0ODogXCJTQ0VOQVJJTy5HRVRcIixcbiAgMzQ5OiBcIk9QVElPTlMuTElTVFMuR0VUXCIsXG4gIDM1MDogXCJJU1BNVFwiLFxuICAzNTE6IFwiREFURURJRlwiLFxuICAzNTI6IFwiREFURVNUUklOR1wiLFxuICAzNTM6IFwiTlVNQkVSU1RSSU5HXCIsXG4gIDM1NDogXCJST01BTlwiLFxuICAzNTU6IFwiT1BFTi5ESUFMT0dcIixcbiAgMzU2OiBcIlNBVkUuRElBTE9HXCIsXG4gIDM1NzogXCJWSUVXLkdFVFwiLFxuICAzNTg6IFwiR0VUUElWT1REQVRBXCIsXG4gIDM1OTogXCJIWVBFUkxJTktcIixcbiAgMzYwOiBcIlBIT05FVElDXCIsXG4gIDM2MTogXCJBVkVSQUdFQVwiLFxuICAzNjI6IFwiTUFYQVwiLFxuICAzNjM6IFwiTUlOQVwiLFxuICAzNjQ6IFwiU1RERVZQQVwiLFxuICAzNjU6IFwiVkFSUEFcIixcbiAgMzY2OiBcIlNUREVWQVwiLFxuICAzNjc6IFwiVkFSQVwiLFxuICAzNjg6IFwiQkFIVFRFWFRcIixcbiAgMzY5OiBcIlRIQUlEQVlPRldFRUtcIixcbiAgMzcwOiBcIlRIQUlESUdJVFwiLFxuICAzNzE6IFwiVEhBSU1PTlRIT0ZZRUFSXCIsXG4gIDM3MjogXCJUSEFJTlVNU09VTkRcIixcbiAgMzczOiBcIlRIQUlOVU1TVFJJTkdcIixcbiAgMzc0OiBcIlRIQUlTVFJJTkdMRU5HVEhcIixcbiAgMzc1OiBcIklTVEhBSURJR0lUXCIsXG4gIDM3NjogXCJST1VOREJBSFRET1dOXCIsXG4gIDM3NzogXCJST1VOREJBSFRVUFwiLFxuICAzNzg6IFwiVEhBSVlFQVJcIixcbiAgMzc5OiBcIlJURFwiLFxuICAzODA6IFwiQ1VCRVZBTFVFXCIsXG4gIDM4MTogXCJDVUJFTUVNQkVSXCIsXG4gIDM4MjogXCJDVUJFTUVNQkVSUFJPUEVSVFlcIixcbiAgMzgzOiBcIkNVQkVSQU5LRURNRU1CRVJcIixcbiAgMzg0OiBcIkhFWDJCSU5cIixcbiAgMzg1OiBcIkhFWDJERUNcIixcbiAgMzg2OiBcIkhFWDJPQ1RcIixcbiAgMzg3OiBcIkRFQzJCSU5cIixcbiAgMzg4OiBcIkRFQzJIRVhcIixcbiAgMzg5OiBcIkRFQzJPQ1RcIixcbiAgMzkwOiBcIk9DVDJCSU5cIixcbiAgMzkxOiBcIk9DVDJIRVhcIixcbiAgMzkyOiBcIk9DVDJERUNcIixcbiAgMzkzOiBcIkJJTjJERUNcIixcbiAgMzk0OiBcIkJJTjJPQ1RcIixcbiAgMzk1OiBcIkJJTjJIRVhcIixcbiAgMzk2OiBcIklNU1VCXCIsXG4gIDM5NzogXCJJTURJVlwiLFxuICAzOTg6IFwiSU1QT1dFUlwiLFxuICAzOTk6IFwiSU1BQlNcIixcbiAgNDAwOiBcIklNU1FSVFwiLFxuICA0MDE6IFwiSU1MTlwiLFxuICA0MDI6IFwiSU1MT0cyXCIsXG4gIDQwMzogXCJJTUxPRzEwXCIsXG4gIDQwNDogXCJJTVNJTlwiLFxuICA0MDU6IFwiSU1DT1NcIixcbiAgNDA2OiBcIklNRVhQXCIsXG4gIDQwNzogXCJJTUFSR1VNRU5UXCIsXG4gIDQwODogXCJJTUNPTkpVR0FURVwiLFxuICA0MDk6IFwiSU1BR0lOQVJZXCIsXG4gIDQxMDogXCJJTVJFQUxcIixcbiAgNDExOiBcIkNPTVBMRVhcIixcbiAgNDEyOiBcIklNU1VNXCIsXG4gIDQxMzogXCJJTVBST0RVQ1RcIixcbiAgNDE0OiBcIlNFUklFU1NVTVwiLFxuICA0MTU6IFwiRkFDVERPVUJMRVwiLFxuICA0MTY6IFwiU1FSVFBJXCIsXG4gIDQxNzogXCJRVU9USUVOVFwiLFxuICA0MTg6IFwiREVMVEFcIixcbiAgNDE5OiBcIkdFU1RFUFwiLFxuICA0MjA6IFwiSVNFVkVOXCIsXG4gIDQyMTogXCJJU09ERFwiLFxuICA0MjI6IFwiTVJPVU5EXCIsXG4gIDQyMzogXCJFUkZcIixcbiAgNDI0OiBcIkVSRkNcIixcbiAgNDI1OiBcIkJFU1NFTEpcIixcbiAgNDI2OiBcIkJFU1NFTEtcIixcbiAgNDI3OiBcIkJFU1NFTFlcIixcbiAgNDI4OiBcIkJFU1NFTElcIixcbiAgNDI5OiBcIlhJUlJcIixcbiAgNDMwOiBcIlhOUFZcIixcbiAgNDMxOiBcIlBSSUNFTUFUXCIsXG4gIDQzMjogXCJZSUVMRE1BVFwiLFxuICA0MzM6IFwiSU5UUkFURVwiLFxuICA0MzQ6IFwiUkVDRUlWRURcIixcbiAgNDM1OiBcIkRJU0NcIixcbiAgNDM2OiBcIlBSSUNFRElTQ1wiLFxuICA0Mzc6IFwiWUlFTERESVNDXCIsXG4gIDQzODogXCJUQklMTEVRXCIsXG4gIDQzOTogXCJUQklMTFBSSUNFXCIsXG4gIDQ0MDogXCJUQklMTFlJRUxEXCIsXG4gIDQ0MTogXCJQUklDRVwiLFxuICA0NDI6IFwiWUlFTERcIixcbiAgNDQzOiBcIkRPTExBUkRFXCIsXG4gIDQ0NDogXCJET0xMQVJGUlwiLFxuICA0NDU6IFwiTk9NSU5BTFwiLFxuICA0NDY6IFwiRUZGRUNUXCIsXG4gIDQ0NzogXCJDVU1QUklOQ1wiLFxuICA0NDg6IFwiQ1VNSVBNVFwiLFxuICA0NDk6IFwiRURBVEVcIixcbiAgNDUwOiBcIkVPTU9OVEhcIixcbiAgNDUxOiBcIllFQVJGUkFDXCIsXG4gIDQ1MjogXCJDT1VQREFZQlNcIixcbiAgNDUzOiBcIkNPVVBEQVlTXCIsXG4gIDQ1NDogXCJDT1VQREFZU05DXCIsXG4gIDQ1NTogXCJDT1VQTkNEXCIsXG4gIDQ1NjogXCJDT1VQTlVNXCIsXG4gIDQ1NzogXCJDT1VQUENEXCIsXG4gIDQ1ODogXCJEVVJBVElPTlwiLFxuICA0NTk6IFwiTURVUkFUSU9OXCIsXG4gIDQ2MDogXCJPRERMUFJJQ0VcIixcbiAgNDYxOiBcIk9ERExZSUVMRFwiLFxuICA0NjI6IFwiT0RERlBSSUNFXCIsXG4gIDQ2MzogXCJPRERGWUlFTERcIixcbiAgNDY0OiBcIlJBTkRCRVRXRUVOXCIsXG4gIDQ2NTogXCJXRUVLTlVNXCIsXG4gIDQ2NjogXCJBTU9SREVHUkNcIixcbiAgNDY3OiBcIkFNT1JMSU5DXCIsXG4gIDQ2ODogXCJDT05WRVJUXCIsXG4gIDcyNDogXCJTSEVFVEpTXCIsXG4gIDQ2OTogXCJBQ0NSSU5UXCIsXG4gIDQ3MDogXCJBQ0NSSU5UTVwiLFxuICA0NzE6IFwiV09SS0RBWVwiLFxuICA0NzI6IFwiTkVUV09SS0RBWVNcIixcbiAgNDczOiBcIkdDRFwiLFxuICA0NzQ6IFwiTVVMVElOT01JQUxcIixcbiAgNDc1OiBcIkxDTVwiLFxuICA0NzY6IFwiRlZTQ0hFRFVMRVwiLFxuICA0Nzc6IFwiQ1VCRUtQSU1FTUJFUlwiLFxuICA0Nzg6IFwiQ1VCRVNFVFwiLFxuICA0Nzk6IFwiQ1VCRVNFVENPVU5UXCIsXG4gIDQ4MDogXCJJRkVSUk9SXCIsXG4gIDQ4MTogXCJDT1VOVElGU1wiLFxuICA0ODI6IFwiU1VNSUZTXCIsXG4gIDQ4MzogXCJBVkVSQUdFSUZcIixcbiAgNDg0OiBcIkFWRVJBR0VJRlNcIlxufTtcbnZhciBGdGFiQXJnYyA9IHtcbiAgMjogMSxcbiAgMzogMSxcbiAgMTA6IDAsXG4gIDE1OiAxLFxuICAxNjogMSxcbiAgMTc6IDEsXG4gIDE4OiAxLFxuICAxOTogMCxcbiAgMjA6IDEsXG4gIDIxOiAxLFxuICAyMjogMSxcbiAgMjM6IDEsXG4gIDI0OiAxLFxuICAyNTogMSxcbiAgMjY6IDEsXG4gIDI3OiAyLFxuICAzMDogMixcbiAgMzE6IDMsXG4gIDMyOiAxLFxuICAzMzogMSxcbiAgMzQ6IDAsXG4gIDM1OiAwLFxuICAzODogMSxcbiAgMzk6IDIsXG4gIDQwOiAzLFxuICA0MTogMyxcbiAgNDI6IDMsXG4gIDQzOiAzLFxuICA0NDogMyxcbiAgNDU6IDMsXG4gIDQ3OiAzLFxuICA0ODogMixcbiAgNTM6IDEsXG4gIDYxOiAzLFxuICA2MzogMCxcbiAgNjU6IDMsXG4gIDY2OiAzLFxuICA2NzogMSxcbiAgNjg6IDEsXG4gIDY5OiAxLFxuICA3MDogMSxcbiAgNzE6IDEsXG4gIDcyOiAxLFxuICA3MzogMSxcbiAgNzQ6IDAsXG4gIDc1OiAxLFxuICA3NjogMSxcbiAgNzc6IDEsXG4gIDc5OiAyLFxuICA4MDogMixcbiAgODM6IDEsXG4gIDg1OiAwLFxuICA4NjogMSxcbiAgODk6IDAsXG4gIDkwOiAxLFxuICA5NDogMCxcbiAgOTU6IDAsXG4gIDk3OiAyLFxuICA5ODogMSxcbiAgOTk6IDEsXG4gIDEwMTogMyxcbiAgMTAyOiAzLFxuICAxMDU6IDEsXG4gIDEwNjogMSxcbiAgMTA4OiAyLFxuICAxMTE6IDEsXG4gIDExMjogMSxcbiAgMTEzOiAxLFxuICAxMTQ6IDEsXG4gIDExNzogMixcbiAgMTE4OiAxLFxuICAxMTk6IDQsXG4gIDEyMTogMSxcbiAgMTI2OiAxLFxuICAxMjc6IDEsXG4gIDEyODogMSxcbiAgMTI5OiAxLFxuICAxMzA6IDEsXG4gIDEzMTogMSxcbiAgMTMzOiAxLFxuICAxMzQ6IDEsXG4gIDEzNTogMSxcbiAgMTM2OiAyLFxuICAxMzc6IDIsXG4gIDEzODogMixcbiAgMTQwOiAxLFxuICAxNDE6IDEsXG4gIDE0MjogMyxcbiAgMTQzOiA0LFxuICAxNDQ6IDQsXG4gIDE2MTogMSxcbiAgMTYyOiAxLFxuICAxNjM6IDEsXG4gIDE2NDogMSxcbiAgMTY1OiAyLFxuICAxNzI6IDEsXG4gIDE3NTogMixcbiAgMTc2OiAyLFxuICAxNzc6IDMsXG4gIDE3ODogMixcbiAgMTc5OiAxLFxuICAxODQ6IDEsXG4gIDE4NjogMSxcbiAgMTg5OiAzLFxuICAxOTA6IDEsXG4gIDE5NTogMyxcbiAgMTk2OiAzLFxuICAxOTc6IDEsXG4gIDE5ODogMSxcbiAgMTk5OiAzLFxuICAyMDE6IDEsXG4gIDIwNzogNCxcbiAgMjEwOiAzLFxuICAyMTE6IDEsXG4gIDIxMjogMixcbiAgMjEzOiAyLFxuICAyMTQ6IDEsXG4gIDIxNTogMSxcbiAgMjI1OiAwLFxuICAyMjk6IDEsXG4gIDIzMDogMSxcbiAgMjMxOiAxLFxuICAyMzI6IDEsXG4gIDIzMzogMSxcbiAgMjM0OiAxLFxuICAyMzU6IDMsXG4gIDI0NDogMSxcbiAgMjQ3OiA0LFxuICAyNTI6IDIsXG4gIDI1NzogMSxcbiAgMjYxOiAxLFxuICAyNzE6IDEsXG4gIDI3MzogNCxcbiAgMjc0OiAyLFxuICAyNzU6IDIsXG4gIDI3NjogMixcbiAgMjc3OiAzLFxuICAyNzg6IDMsXG4gIDI3OTogMSxcbiAgMjgwOiAzLFxuICAyODE6IDMsXG4gIDI4MjogMyxcbiAgMjgzOiAxLFxuICAyODQ6IDEsXG4gIDI4NTogMixcbiAgMjg2OiA0LFxuICAyODc6IDMsXG4gIDI4ODogMixcbiAgMjg5OiA0LFxuICAyOTA6IDMsXG4gIDI5MTogMyxcbiAgMjkyOiAzLFxuICAyOTM6IDQsXG4gIDI5NDogMSxcbiAgMjk1OiAzLFxuICAyOTY6IDEsXG4gIDI5NzogMyxcbiAgMjk4OiAxLFxuICAyOTk6IDIsXG4gIDMwMDogMyxcbiAgMzAxOiAzLFxuICAzMDI6IDQsXG4gIDMwMzogMixcbiAgMzA0OiAyLFxuICAzMDU6IDIsXG4gIDMwNjogMixcbiAgMzA3OiAyLFxuICAzMDg6IDIsXG4gIDMwOTogMyxcbiAgMzEwOiAyLFxuICAzMTE6IDIsXG4gIDMxMjogMixcbiAgMzEzOiAyLFxuICAzMTQ6IDIsXG4gIDMxNTogMixcbiAgMzE2OiA0LFxuICAzMjU6IDIsXG4gIDMyNjogMixcbiAgMzI3OiAyLFxuICAzMjg6IDIsXG4gIDMzMTogMixcbiAgMzMyOiAyLFxuICAzMzc6IDIsXG4gIDM0MjogMSxcbiAgMzQzOiAxLFxuICAzNDY6IDIsXG4gIDM0NzogMSxcbiAgMzUwOiA0LFxuICAzNTE6IDMsXG4gIDM1MjogMSxcbiAgMzUzOiAyLFxuICAzNjA6IDEsXG4gIDM2ODogMSxcbiAgMzY5OiAxLFxuICAzNzA6IDEsXG4gIDM3MTogMSxcbiAgMzcyOiAxLFxuICAzNzM6IDEsXG4gIDM3NDogMSxcbiAgMzc1OiAxLFxuICAzNzY6IDEsXG4gIDM3NzogMSxcbiAgMzc4OiAxLFxuICAzODI6IDMsXG4gIDM4NTogMSxcbiAgMzkyOiAxLFxuICAzOTM6IDEsXG4gIDM5NjogMixcbiAgMzk3OiAyLFxuICAzOTg6IDIsXG4gIDM5OTogMSxcbiAgNDAwOiAxLFxuICA0MDE6IDEsXG4gIDQwMjogMSxcbiAgNDAzOiAxLFxuICA0MDQ6IDEsXG4gIDQwNTogMSxcbiAgNDA2OiAxLFxuICA0MDc6IDEsXG4gIDQwODogMSxcbiAgNDA5OiAxLFxuICA0MTA6IDEsXG4gIDQxNDogNCxcbiAgNDE1OiAxLFxuICA0MTY6IDEsXG4gIDQxNzogMixcbiAgNDIwOiAxLFxuICA0MjE6IDEsXG4gIDQyMjogMixcbiAgNDI0OiAxLFxuICA0MjU6IDIsXG4gIDQyNjogMixcbiAgNDI3OiAyLFxuICA0Mjg6IDIsXG4gIDQzMDogMyxcbiAgNDM4OiAzLFxuICA0Mzk6IDMsXG4gIDQ0MDogMyxcbiAgNDQzOiAyLFxuICA0NDQ6IDIsXG4gIDQ0NTogMixcbiAgNDQ2OiAyLFxuICA0NDc6IDYsXG4gIDQ0ODogNixcbiAgNDQ5OiAyLFxuICA0NTA6IDIsXG4gIDQ2NDogMixcbiAgNDY4OiAzLFxuICA0NzY6IDIsXG4gIDQ3OTogMSxcbiAgNDgwOiAyLFxuICA2NTUzNTogMFxufTtcbi8qIFBhcnQgMyBUT0RPOiBhY3R1YWxseSBwYXJzZSBmb3JtdWxhZSAqL1xuZnVuY3Rpb24gb2RzX3RvX2NzZl9mb3JtdWxhKGYvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKGYuc2xpY2UoMCwzKSA9PSBcIm9mOlwiKSBmID0gZi5zbGljZSgzKTtcblx0LyogNS4yIEJhc2ljIEV4cHJlc3Npb25zICovXG5cdGlmKGYuY2hhckNvZGVBdCgwKSA9PSA2MSkge1xuXHRcdGYgPSBmLnNsaWNlKDEpO1xuXHRcdGlmKGYuY2hhckNvZGVBdCgwKSA9PSA2MSkgZiA9IGYuc2xpY2UoMSk7XG5cdH1cblx0ZiA9IGYucmVwbGFjZSgvQ09NXFwuTUlDUk9TT0ZUXFwuL2csIFwiXCIpO1xuXHQvKiBQYXJ0IDMgU2VjdGlvbiA1LjggUmVmZXJlbmNlcyAqL1xuXHRmID0gZi5yZXBsYWNlKC9cXFsoKD86XFwuW0EtWl0rWzAtOV0rKSg/OjpcXC5bQS1aXStbMC05XSspPylcXF0vZywgZnVuY3Rpb24oJCQsICQxKSB7IHJldHVybiAkMS5yZXBsYWNlKC9cXC4vZyxcIlwiKTsgfSk7XG5cdC8qIFRPRE86IHNvbWV0aGluZyBvdGhlciB0aGFuIHRoaXMgKi9cblx0ZiA9IGYucmVwbGFjZSgvXFxbLigjW0EtWl0qWz8hXSlcXF0vZywgXCIkMVwiKTtcblx0cmV0dXJuIGYucmVwbGFjZSgvWzt+XS9nLFwiLFwiKS5yZXBsYWNlKC9cXHwvZyxcIjtcIik7XG59XG5cbmZ1bmN0aW9uIGNzZl90b19vZHNfZm9ybXVsYShmLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFwib2Y6PVwiICsgZi5yZXBsYWNlKGNyZWZyZWdleCwgXCIkMVsuJDIkMyQ0JDVdXCIpLnJlcGxhY2UoL1xcXTpcXFsvZyxcIjpcIik7XG5cdC8qIFRPRE86IHNvbWV0aGluZyBvdGhlciB0aGFuIHRoaXMgKi9cblx0cmV0dXJuIG8ucmVwbGFjZSgvOy9nLCBcInxcIikucmVwbGFjZSgvLC9nLFwiO1wiKTtcbn1cblxuZnVuY3Rpb24gb2RzX3RvX2NzZl8zRChyLyo6c3RyaW5nKi8pLyo6W3N0cmluZywgc3RyaW5nXSovIHtcblx0dmFyIGEgPSByLnNwbGl0KFwiOlwiKTtcblx0dmFyIHMgPSBhWzBdLnNwbGl0KFwiLlwiKVswXTtcblx0cmV0dXJuIFtzLCBhWzBdLnNwbGl0KFwiLlwiKVsxXSArIChhLmxlbmd0aCA+IDEgPyAoXCI6XCIgKyAoYVsxXS5zcGxpdChcIi5cIilbMV0gfHwgYVsxXS5zcGxpdChcIi5cIilbMF0pKSA6IFwiXCIpXTtcbn1cblxuZnVuY3Rpb24gY3NmX3RvX29kc18zRChyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gci5yZXBsYWNlKC9cXC4vLFwiIVwiKTtcbn1cblxudmFyIHN0cnMgPSB7fTsgLy8gc2hhcmVkIHN0cmluZ3NcbnZhciBfc3Nmb3B0cyA9IHt9OyAvLyBzcHJlYWRzaGVldCBmb3JtYXR0aW5nIG9wdGlvbnNcblxuXG4vKmdsb2JhbCBNYXAgKi9cbnZhciBicm93c2VyX2hhc19NYXAgPSB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJztcblxuZnVuY3Rpb24gZ2V0X3NzdF9pZChzc3QvKjpTU1QqLywgc3RyLyo6c3RyaW5nKi8sIHJldikvKjpudW1iZXIqLyB7XG5cdHZhciBpID0gMCwgbGVuID0gc3N0Lmxlbmd0aDtcblx0aWYocmV2KSB7XG5cdFx0aWYoYnJvd3Nlcl9oYXNfTWFwID8gcmV2LmhhcyhzdHIpIDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJldiwgc3RyKSkge1xuXHRcdFx0dmFyIHJldmFyciA9IGJyb3dzZXJfaGFzX01hcCA/IHJldi5nZXQoc3RyKSA6IHJldltzdHJdO1xuXHRcdFx0Zm9yKDsgaSA8IHJldmFyci5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRpZihzc3RbcmV2YXJyW2ldXS50ID09PSBzdHIpIHsgc3N0LkNvdW50ICsrOyByZXR1cm4gcmV2YXJyW2ldOyB9XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgZm9yKDsgaSA8IGxlbjsgKytpKSB7XG5cdFx0aWYoc3N0W2ldLnQgPT09IHN0cikgeyBzc3QuQ291bnQgKys7IHJldHVybiBpOyB9XG5cdH1cblx0c3N0W2xlbl0gPSAoe3Q6c3RyfS8qOmFueSovKTsgc3N0LkNvdW50ICsrOyBzc3QuVW5pcXVlICsrO1xuXHRpZihyZXYpIHtcblx0XHRpZihicm93c2VyX2hhc19NYXApIHtcblx0XHRcdGlmKCFyZXYuaGFzKHN0cikpIHJldi5zZXQoc3RyLCBbXSk7XG5cdFx0XHRyZXYuZ2V0KHN0cikucHVzaChsZW4pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJldiwgc3RyKSkgcmV2W3N0cl0gPSBbXTtcblx0XHRcdHJldltzdHJdLnB1c2gobGVuKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGxlbjtcbn1cblxuZnVuY3Rpb24gY29sX29ial93KEMvKjpudW1iZXIqLywgY29sKSB7XG5cdHZhciBwID0gKHttaW46QysxLG1heDpDKzF9Lyo6YW55Ki8pO1xuXHQvKiB3Y2ggKGNoYXJzKSwgd3B4IChwaXhlbHMpICovXG5cdHZhciB3Y2ggPSAtMTtcblx0aWYoY29sLk1EVykgTURXID0gY29sLk1EVztcblx0aWYoY29sLndpZHRoICE9IG51bGwpIHAuY3VzdG9tV2lkdGggPSAxO1xuXHRlbHNlIGlmKGNvbC53cHggIT0gbnVsbCkgd2NoID0gcHgyY2hhcihjb2wud3B4KTtcblx0ZWxzZSBpZihjb2wud2NoICE9IG51bGwpIHdjaCA9IGNvbC53Y2g7XG5cdGlmKHdjaCA+IC0xKSB7IHAud2lkdGggPSBjaGFyMndpZHRoKHdjaCk7IHAuY3VzdG9tV2lkdGggPSAxOyB9XG5cdGVsc2UgaWYoY29sLndpZHRoICE9IG51bGwpIHAud2lkdGggPSBjb2wud2lkdGg7XG5cdGlmKGNvbC5oaWRkZW4pIHAuaGlkZGVuID0gdHJ1ZTtcblx0aWYoY29sLmxldmVsICE9IG51bGwpIHsgcC5vdXRsaW5lTGV2ZWwgPSBwLmxldmVsID0gY29sLmxldmVsOyB9XG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0X21hcmdpbnMobWFyZ2lucy8qOk1hcmdpbnMqLywgbW9kZS8qOj9zdHJpbmcqLykge1xuXHRpZighbWFyZ2lucykgcmV0dXJuO1xuXHR2YXIgZGVmcyA9IFswLjcsIDAuNywgMC43NSwgMC43NSwgMC4zLCAwLjNdO1xuXHRpZihtb2RlID09ICd4bG1sJykgZGVmcyA9IFsxLCAxLCAxLCAxLCAwLjUsIDAuNV07XG5cdGlmKG1hcmdpbnMubGVmdCAgID09IG51bGwpIG1hcmdpbnMubGVmdCAgID0gZGVmc1swXTtcblx0aWYobWFyZ2lucy5yaWdodCAgPT0gbnVsbCkgbWFyZ2lucy5yaWdodCAgPSBkZWZzWzFdO1xuXHRpZihtYXJnaW5zLnRvcCAgICA9PSBudWxsKSBtYXJnaW5zLnRvcCAgICA9IGRlZnNbMl07XG5cdGlmKG1hcmdpbnMuYm90dG9tID09IG51bGwpIG1hcmdpbnMuYm90dG9tID0gZGVmc1szXTtcblx0aWYobWFyZ2lucy5oZWFkZXIgPT0gbnVsbCkgbWFyZ2lucy5oZWFkZXIgPSBkZWZzWzRdO1xuXHRpZihtYXJnaW5zLmZvb3RlciA9PSBudWxsKSBtYXJnaW5zLmZvb3RlciA9IGRlZnNbNV07XG59XG5cbmZ1bmN0aW9uIGdldF9jZWxsX3N0eWxlKHN0eWxlcy8qOkFycmF5PGFueT4qLywgY2VsbC8qOkNlbGwqLywgb3B0cykge1xuXHR2YXIgeiA9IG9wdHMucmV2c3NmW2NlbGwueiAhPSBudWxsID8gY2VsbC56IDogXCJHZW5lcmFsXCJdO1xuXHR2YXIgaSA9IDB4M2MsIGxlbiA9IHN0eWxlcy5sZW5ndGg7XG5cdGlmKHogPT0gbnVsbCAmJiBvcHRzLnNzZikge1xuXHRcdGZvcig7IGkgPCAweDE4ODsgKytpKSBpZihvcHRzLnNzZltpXSA9PSBudWxsKSB7XG5cdFx0XHRTU0ZfbG9hZChjZWxsLnosIGkpO1xuXHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdG9wdHMuc3NmW2ldID0gY2VsbC56O1xuXHRcdFx0b3B0cy5yZXZzc2ZbY2VsbC56XSA9IHogPSBpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdGZvcihpID0gMDsgaSAhPSBsZW47ICsraSkgaWYoc3R5bGVzW2ldLm51bUZtdElkID09PSB6KSByZXR1cm4gaTtcblx0c3R5bGVzW2xlbl0gPSB7XG5cdFx0bnVtRm10SWQ6eixcblx0XHRmb250SWQ6MCxcblx0XHRmaWxsSWQ6MCxcblx0XHRib3JkZXJJZDowLFxuXHRcdHhmSWQ6MCxcblx0XHRhcHBseU51bWJlckZvcm1hdDoxXG5cdH07XG5cdHJldHVybiBsZW47XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0KHAvKjpDZWxsKi8sIGZtdGlkLyo6bnVtYmVyKi8sIGZpbGxpZC8qOj9udW1iZXIqLywgb3B0cywgdGhlbWVzLCBzdHlsZXMpIHtcblx0dHJ5IHtcblx0XHRpZihvcHRzLmNlbGxORikgcC56ID0gdGFibGVfZm10W2ZtdGlkXTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cdGlmKHAudCA9PT0gJ3onICYmICFvcHRzLmNlbGxTdHlsZXMpIHJldHVybjtcblx0aWYocC50ID09PSAnZCcgJiYgdHlwZW9mIHAudiA9PT0gJ3N0cmluZycpIHAudiA9IHBhcnNlRGF0ZShwLnYpO1xuXHRpZigoIW9wdHMgfHwgb3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpICYmIHAudCAhPT0gJ3onKSB0cnkge1xuXHRcdGlmKHRhYmxlX2ZtdFtmbXRpZF0gPT0gbnVsbCkgU1NGX2xvYWQoU1NGSW1wbGljaXRbZm10aWRdIHx8IFwiR2VuZXJhbFwiLCBmbXRpZCk7XG5cdFx0aWYocC50ID09PSAnZScpIHAudyA9IHAudyB8fCBCRXJyW3Audl07XG5cdFx0ZWxzZSBpZihmbXRpZCA9PT0gMCkge1xuXHRcdFx0aWYocC50ID09PSAnbicpIHtcblx0XHRcdFx0aWYoKHAudnwwKSA9PT0gcC52KSBwLncgPSBwLnYudG9TdHJpbmcoMTApO1xuXHRcdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsX251bShwLnYpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZihwLnQgPT09ICdkJykge1xuXHRcdFx0XHR2YXIgZGQgPSBkYXRlbnVtKHAudik7XG5cdFx0XHRcdGlmKChkZHwwKSA9PT0gZGQpIHAudyA9IGRkLnRvU3RyaW5nKDEwKTtcblx0XHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbF9udW0oZGQpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZihwLnYgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwiXCI7XG5cdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsKHAudixfc3Nmb3B0cyk7XG5cdFx0fVxuXHRcdGVsc2UgaWYocC50ID09PSAnZCcpIHAudyA9IFNTRl9mb3JtYXQoZm10aWQsZGF0ZW51bShwLnYpLF9zc2ZvcHRzKTtcblx0XHRlbHNlIHAudyA9IFNTRl9mb3JtYXQoZm10aWQscC52LF9zc2ZvcHRzKTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cdGlmKCFvcHRzLmNlbGxTdHlsZXMpIHJldHVybjtcblx0aWYoZmlsbGlkICE9IG51bGwpIHRyeSB7XG5cdFx0cC5zID0gc3R5bGVzLkZpbGxzW2ZpbGxpZF07XG5cdFx0aWYgKHAucy5mZ0NvbG9yICYmIHAucy5mZ0NvbG9yLnRoZW1lICYmICFwLnMuZmdDb2xvci5yZ2IpIHtcblx0XHRcdHAucy5mZ0NvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtwLnMuZmdDb2xvci50aGVtZV0ucmdiLCBwLnMuZmdDb2xvci50aW50IHx8IDApO1xuXHRcdFx0aWYob3B0cy5XVEYpIHAucy5mZ0NvbG9yLnJhd19yZ2IgPSB0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbcC5zLmZnQ29sb3IudGhlbWVdLnJnYjtcblx0XHR9XG5cdFx0aWYgKHAucy5iZ0NvbG9yICYmIHAucy5iZ0NvbG9yLnRoZW1lKSB7XG5cdFx0XHRwLnMuYmdDb2xvci5yZ2IgPSByZ2JfdGludCh0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbcC5zLmJnQ29sb3IudGhlbWVdLnJnYiwgcC5zLmJnQ29sb3IudGludCB8fCAwKTtcblx0XHRcdGlmKG9wdHMuV1RGKSBwLnMuYmdDb2xvci5yYXdfcmdiID0gdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5iZ0NvbG9yLnRoZW1lXS5yZ2I7XG5cdFx0fVxuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYgJiYgc3R5bGVzLkZpbGxzKSB0aHJvdyBlOyB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrX3dzKHdzLyo6V29ya3NoZWV0Ki8sIHNuYW1lLyo6c3RyaW5nKi8sIGkvKjpudW1iZXIqLykge1xuXHRpZih3cyAmJiB3c1snIXJlZiddKSB7XG5cdFx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdFx0aWYocmFuZ2UuZS5jIDwgcmFuZ2Uucy5jIHx8IHJhbmdlLmUuciA8IHJhbmdlLnMucikgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHJhbmdlIChcIiArIGkgKyBcIik6IFwiICsgd3NbJyFyZWYnXSk7XG5cdH1cbn1cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9kaW0od3MvKjpXb3Jrc2hlZXQqLywgcy8qOnN0cmluZyovKSB7XG5cdHZhciBkID0gc2FmZV9kZWNvZGVfcmFuZ2Uocyk7XG5cdGlmKGQucy5yPD1kLmUuciAmJiBkLnMuYzw9ZC5lLmMgJiYgZC5zLnI+PTAgJiYgZC5zLmM+PTApIHdzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShkKTtcbn1cbnZhciBtZXJnZWNyZWdleCA9IC88KD86XFx3Oik/bWVyZ2VDZWxsIHJlZj1cIltBLVowLTk6XStcIlxccypbXFwvXT8+L2c7XG52YXIgc2hlZXRkYXRhcmVnZXggPSAvPCg/Olxcdys6KT9zaGVldERhdGFbXj5dKj4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/c2hlZXREYXRhPi87XG52YXIgaGxpbmtyZWdleCA9IC88KD86XFx3Oik/aHlwZXJsaW5rIFtePl0qPi9tZztcbnZhciBkaW1yZWdleCA9IC9cIihcXHcqOlxcdyopXCIvO1xudmFyIGNvbHJlZ2V4ID0gLzwoPzpcXHc6KT9jb2xcXGJbXj5dKltcXC9dPz4vZztcbnZhciBhZnJlZ2V4ID0gLzwoPzpcXHc6KT9hdXRvRmlsdGVyW14+XSooW1xcL118PihbXFxzXFxTXSopPFxcLyg/OlxcdzopP2F1dG9GaWx0ZXIpPi9nO1xudmFyIG1hcmdpbnJlZ2V4PSAvPCg/OlxcdzopP3BhZ2VNYXJnaW5zW14+XSpcXC8+L2c7XG52YXIgc2hlZXRwcnJlZ2V4ID0gLzwoPzpcXHc6KT9zaGVldFByXFxiKD86W14+YS16XVtePl0qKT9cXC8+LztcbnZhciBzaGVldHBycmVnZXgyPSAvPCg/OlxcdzopP3NoZWV0UHJbXj5dKig/OltcXC9dfD4oW1xcc1xcU10qKTxcXC8oPzpcXHc6KT9zaGVldFByKT4vO1xudmFyIHN2c3JlZ2V4ID0gLzwoPzpcXHc6KT9zaGVldFZpZXdzW14+XSooPzpbXFwvXXw+KFtcXHNcXFNdKik8XFwvKD86XFx3Oik/c2hlZXRWaWV3cyk+LztcblxuLyogMTguMyBXb3Jrc2hlZXRzICovXG5mdW5jdGlvbiBwYXJzZV93c194bWwoZGF0YS8qOj9zdHJpbmcqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMsIHdiLyo6V0JXQlByb3BzKi8sIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHRpZighcmVscykgcmVscyA9IHsnIWlkJzp7fX07XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cblx0LyogMTguMy4xLjk5IHdvcmtzaGVldCBDVF9Xb3Jrc2hlZXQgKi9cblx0dmFyIHMgPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHR2YXIgcmVmZ3Vlc3MvKjpSYW5nZSovID0gKHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH0vKjphbnkqLyk7XG5cblx0dmFyIGRhdGExID0gXCJcIiwgZGF0YTIgPSBcIlwiO1xuXHR2YXIgbXRjaC8qOj9hbnkqLyA9IGRhdGEubWF0Y2goc2hlZXRkYXRhcmVnZXgpO1xuXHRpZihtdGNoKSB7XG5cdFx0ZGF0YTEgPSBkYXRhLnNsaWNlKDAsIG10Y2guaW5kZXgpO1xuXHRcdGRhdGEyID0gZGF0YS5zbGljZShtdGNoLmluZGV4ICsgbXRjaFswXS5sZW5ndGgpO1xuXHR9IGVsc2UgZGF0YTEgPSBkYXRhMiA9IGRhdGE7XG5cblx0LyogMTguMy4xLjgyIHNoZWV0UHIgQ1RfU2hlZXRQciAqL1xuXHR2YXIgc2hlZXRQciA9IGRhdGExLm1hdGNoKHNoZWV0cHJyZWdleCk7XG5cdGlmKHNoZWV0UHIpIHBhcnNlX3dzX3htbF9zaGVldHByKHNoZWV0UHJbMF0sIHMsIHdiLCBpZHgpO1xuXHRlbHNlIGlmKChzaGVldFByID0gZGF0YTEubWF0Y2goc2hlZXRwcnJlZ2V4MikpKSBwYXJzZV93c194bWxfc2hlZXRwcjIoc2hlZXRQclswXSwgc2hlZXRQclsxXXx8XCJcIiwgcywgd2IsIGlkeCwgc3R5bGVzLCB0aGVtZXMpO1xuXG5cdC8qIDE4LjMuMS4zNSBkaW1lbnNpb24gQ1RfU2hlZXREaW1lbnNpb24gKi9cblx0dmFyIHJpZHggPSAoZGF0YTEubWF0Y2goLzwoPzpcXHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O1xuXHRpZihyaWR4ID4gMCkge1xuXHRcdHZhciByZWYgPSBkYXRhMS5zbGljZShyaWR4LHJpZHgrNTApLm1hdGNoKGRpbXJlZ2V4KTtcblx0XHRpZihyZWYpIHBhcnNlX3dzX3htbF9kaW0ocywgcmVmWzFdKTtcblx0fVxuXG5cdC8qIDE4LjMuMS44OCBzaGVldFZpZXdzIENUX1NoZWV0Vmlld3MgKi9cblx0dmFyIHN2cyA9IGRhdGExLm1hdGNoKHN2c3JlZ2V4KTtcblx0aWYoc3ZzICYmIHN2c1sxXSkgcGFyc2Vfd3NfeG1sX3NoZWV0dmlld3Moc3ZzWzFdLCB3Yik7XG5cblx0LyogMTguMy4xLjE3IGNvbHMgQ1RfQ29scyAqL1xuXHR2YXIgY29sdW1ucy8qOkFycmF5PENvbEluZm8+Ki8gPSBbXTtcblx0aWYob3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0LyogMTguMy4xLjEzIGNvbCBDVF9Db2wgKi9cblx0XHR2YXIgY29scyA9IGRhdGExLm1hdGNoKGNvbHJlZ2V4KTtcblx0XHRpZihjb2xzKSBwYXJzZV93c194bWxfY29scyhjb2x1bW5zLCBjb2xzKTtcblx0fVxuXG5cdC8qIDE4LjMuMS44MCBzaGVldERhdGEgQ1RfU2hlZXREYXRhID8gKi9cblx0aWYobXRjaCkgcGFyc2Vfd3NfeG1sX2RhdGEobXRjaFsxXSwgcywgb3B0cywgcmVmZ3Vlc3MsIHRoZW1lcywgc3R5bGVzKTtcblxuXHQvKiAxOC4zLjEuMiAgYXV0b0ZpbHRlciBDVF9BdXRvRmlsdGVyICovXG5cdHZhciBhZmlsdGVyID0gZGF0YTIubWF0Y2goYWZyZWdleCk7XG5cdGlmKGFmaWx0ZXIpIHNbJyFhdXRvZmlsdGVyJ10gPSBwYXJzZV93c194bWxfYXV0b2ZpbHRlcihhZmlsdGVyWzBdKTtcblxuXHQvKiAxOC4zLjEuNTUgbWVyZ2VDZWxscyBDVF9NZXJnZUNlbGxzICovXG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHR2YXIgX21lcmdlID0gZGF0YTIubWF0Y2gobWVyZ2VjcmVnZXgpO1xuXHRpZihfbWVyZ2UpIGZvcihyaWR4ID0gMDsgcmlkeCAhPSBfbWVyZ2UubGVuZ3RoOyArK3JpZHgpXG5cdFx0bWVyZ2VzW3JpZHhdID0gc2FmZV9kZWNvZGVfcmFuZ2UoX21lcmdlW3JpZHhdLnNsaWNlKF9tZXJnZVtyaWR4XS5pbmRleE9mKFwiXFxcIlwiKSsxKSk7XG5cblx0LyogMTguMy4xLjQ4IGh5cGVybGlua3MgQ1RfSHlwZXJsaW5rcyAqL1xuXHR2YXIgaGxpbmsgPSBkYXRhMi5tYXRjaChobGlua3JlZ2V4KTtcblx0aWYoaGxpbmspIHBhcnNlX3dzX3htbF9obGlua3MocywgaGxpbmssIHJlbHMpO1xuXG5cdC8qIDE4LjMuMS42MiBwYWdlTWFyZ2lucyBDVF9QYWdlTWFyZ2lucyAqL1xuXHR2YXIgbWFyZ2lucyA9IGRhdGEyLm1hdGNoKG1hcmdpbnJlZ2V4KTtcblx0aWYobWFyZ2lucykgc1snIW1hcmdpbnMnXSA9IHBhcnNlX3dzX3htbF9tYXJnaW5zKHBhcnNleG1sdGFnKG1hcmdpbnNbMF0pKTtcblxuXHRpZighc1tcIiFyZWZcIl0gJiYgcmVmZ3Vlc3MuZS5jID49IHJlZmd1ZXNzLnMuYyAmJiByZWZndWVzcy5lLnIgPj0gcmVmZ3Vlc3Mucy5yKSBzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdGlmKG9wdHMuc2hlZXRSb3dzID4gMCAmJiBzW1wiIXJlZlwiXSkge1xuXHRcdHZhciB0bXByZWYgPSBzYWZlX2RlY29kZV9yYW5nZShzW1wiIXJlZlwiXSk7XG5cdFx0aWYob3B0cy5zaGVldFJvd3MgPD0gK3RtcHJlZi5lLnIpIHtcblx0XHRcdHRtcHJlZi5lLnIgPSBvcHRzLnNoZWV0Um93cyAtIDE7XG5cdFx0XHRpZih0bXByZWYuZS5yID4gcmVmZ3Vlc3MuZS5yKSB0bXByZWYuZS5yID0gcmVmZ3Vlc3MuZS5yO1xuXHRcdFx0aWYodG1wcmVmLmUuciA8IHRtcHJlZi5zLnIpIHRtcHJlZi5zLnIgPSB0bXByZWYuZS5yO1xuXHRcdFx0aWYodG1wcmVmLmUuYyA+IHJlZmd1ZXNzLmUuYykgdG1wcmVmLmUuYyA9IHJlZmd1ZXNzLmUuYztcblx0XHRcdGlmKHRtcHJlZi5lLmMgPCB0bXByZWYucy5jKSB0bXByZWYucy5jID0gdG1wcmVmLmUuYztcblx0XHRcdHNbXCIhZnVsbHJlZlwiXSA9IHNbXCIhcmVmXCJdO1xuXHRcdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UodG1wcmVmKTtcblx0XHR9XG5cdH1cblx0aWYoY29sdW1ucy5sZW5ndGggPiAwKSBzW1wiIWNvbHNcIl0gPSBjb2x1bW5zO1xuXHRpZihtZXJnZXMubGVuZ3RoID4gMCkgc1tcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c194bWxfbWVyZ2VzKG1lcmdlcy8qOkFycmF5PFJhbmdlPiovKS8qOnN0cmluZyovIHtcblx0aWYobWVyZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCI7XG5cdHZhciBvID0gJzxtZXJnZUNlbGxzIGNvdW50PVwiJyArIG1lcmdlcy5sZW5ndGggKyAnXCI+Jztcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBtZXJnZXMubGVuZ3RoOyArK2kpIG8gKz0gJzxtZXJnZUNlbGwgcmVmPVwiJyArIGVuY29kZV9yYW5nZShtZXJnZXNbaV0pICsgJ1wiLz4nO1xuXHRyZXR1cm4gbyArICc8L21lcmdlQ2VsbHM+Jztcbn1cblxuLyogMTguMy4xLjgyLTMgc2hlZXRQciBDVF9DaGFydHNoZWV0UHIgLyBDVF9TaGVldFByICovXG5mdW5jdGlvbiBwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByLyo6c3RyaW5nKi8sIHMsIHdiLyo6V0JXQlByb3BzKi8sIGlkeC8qOm51bWJlciovKSB7XG5cdHZhciBkYXRhID0gcGFyc2V4bWx0YWcoc2hlZXRQcik7XG5cdGlmKCF3Yi5TaGVldHNbaWR4XSkgd2IuU2hlZXRzW2lkeF0gPSB7fTtcblx0aWYoZGF0YS5jb2RlTmFtZSkgd2IuU2hlZXRzW2lkeF0uQ29kZU5hbWUgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZChkYXRhLmNvZGVOYW1lKSk7XG59XG5mdW5jdGlvbiBwYXJzZV93c194bWxfc2hlZXRwcjIoc2hlZXRQci8qOnN0cmluZyovLCBib2R5Lyo6c3RyaW5nKi8sIHMsIHdiLyo6V0JXQlByb3BzKi8sIGlkeC8qOm51bWJlciovKSB7XG5cdHBhcnNlX3dzX3htbF9zaGVldHByKHNoZWV0UHIuc2xpY2UoMCwgc2hlZXRQci5pbmRleE9mKFwiPlwiKSksIHMsIHdiLCBpZHgpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX3NoZWV0cHIod3MsIHdiLCBpZHgsIG9wdHMsIG8pIHtcblx0dmFyIG5lZWRlZCA9IGZhbHNlO1xuXHR2YXIgcHJvcHMgPSB7fSwgcGF5bG9hZCA9IG51bGw7XG5cdGlmKG9wdHMuYm9va1R5cGUgIT09ICd4bHN4JyAmJiB3Yi52YmFyYXcpIHtcblx0XHR2YXIgY25hbWUgPSB3Yi5TaGVldE5hbWVzW2lkeF07XG5cdFx0dHJ5IHsgaWYod2IuV29ya2Jvb2spIGNuYW1lID0gd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uQ29kZU5hbWUgfHwgY25hbWU7IH0gY2F0Y2goZSkge31cblx0XHRuZWVkZWQgPSB0cnVlO1xuXHRcdHByb3BzLmNvZGVOYW1lID0gdXRmOHdyaXRlKGVzY2FwZXhtbChjbmFtZSkpO1xuXHR9XG5cblx0aWYod3MgJiYgd3NbXCIhb3V0bGluZVwiXSkge1xuXHRcdHZhciBvdXRsaW5lcHJvcHMgPSB7c3VtbWFyeUJlbG93OjEsIHN1bW1hcnlSaWdodDoxfTtcblx0XHRpZih3c1tcIiFvdXRsaW5lXCJdLmFib3ZlKSBvdXRsaW5lcHJvcHMuc3VtbWFyeUJlbG93ID0gMDtcblx0XHRpZih3c1tcIiFvdXRsaW5lXCJdLmxlZnQpIG91dGxpbmVwcm9wcy5zdW1tYXJ5UmlnaHQgPSAwO1xuXHRcdHBheWxvYWQgPSAocGF5bG9hZHx8XCJcIikgKyB3cml0ZXh0YWcoJ291dGxpbmVQcicsIG51bGwsIG91dGxpbmVwcm9wcyk7XG5cdH1cblxuXHRpZighbmVlZGVkICYmICFwYXlsb2FkKSByZXR1cm47XG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc2hlZXRQcicsIHBheWxvYWQsIHByb3BzKSk7XG59XG5cbi8qIDE4LjMuMS44NSBzaGVldFByb3RlY3Rpb24gQ1RfU2hlZXRQcm90ZWN0aW9uICovXG52YXIgc2hlZXRwcm90X2RlZmZhbHNlID0gW1wib2JqZWN0c1wiLCBcInNjZW5hcmlvc1wiLCBcInNlbGVjdExvY2tlZENlbGxzXCIsIFwic2VsZWN0VW5sb2NrZWRDZWxsc1wiXTtcbnZhciBzaGVldHByb3RfZGVmdHJ1ZSA9IFtcblx0XCJmb3JtYXRDb2x1bW5zXCIsIFwiZm9ybWF0Um93c1wiLCBcImZvcm1hdENlbGxzXCIsXG5cdFwiaW5zZXJ0Q29sdW1uc1wiLCBcImluc2VydFJvd3NcIiwgXCJpbnNlcnRIeXBlcmxpbmtzXCIsXG5cdFwiZGVsZXRlQ29sdW1uc1wiLCBcImRlbGV0ZVJvd3NcIixcblx0XCJzb3J0XCIsIFwiYXV0b0ZpbHRlclwiLCBcInBpdm90VGFibGVzXCJcbl07XG5mdW5jdGlvbiB3cml0ZV93c194bWxfcHJvdGVjdGlvbihzcCkvKjpzdHJpbmcqLyB7XG5cdC8vIGFsZ29yaXRobU5hbWUsIGhhc2hWYWx1ZSwgc2FsdFZhbHVlLCBzcGluQ291bnRcblx0dmFyIG8gPSAoe3NoZWV0OjF9Lyo6YW55Ki8pO1xuXHRzaGVldHByb3RfZGVmZmFsc2UuZm9yRWFjaChmdW5jdGlvbihuKSB7IGlmKHNwW25dICE9IG51bGwgJiYgc3Bbbl0pIG9bbl0gPSBcIjFcIjsgfSk7XG5cdHNoZWV0cHJvdF9kZWZ0cnVlLmZvckVhY2goZnVuY3Rpb24obikgeyBpZihzcFtuXSAhPSBudWxsICYmICFzcFtuXSkgb1tuXSA9IFwiMFwiOyB9KTtcblx0LyogVE9ETzogYWxnb3JpdGhtICovXG5cdGlmKHNwLnBhc3N3b3JkKSBvLnBhc3N3b3JkID0gY3J5cHRvX0NyZWF0ZVBhc3N3b3JkVmVyaWZpZXJfTWV0aG9kMShzcC5wYXNzd29yZCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiB3cml0ZXh0YWcoJ3NoZWV0UHJvdGVjdGlvbicsIG51bGwsIG8pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV93c194bWxfaGxpbmtzKHMsIGRhdGEvKjpBcnJheTxzdHJpbmc+Ki8sIHJlbHMpIHtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBkYXRhLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHZhbCA9IHBhcnNleG1sdGFnKHV0ZjhyZWFkKGRhdGFbaV0pLCB0cnVlKTtcblx0XHRpZighdmFsLnJlZikgcmV0dXJuO1xuXHRcdHZhciByZWwgPSAoKHJlbHMgfHwge30pWychaWQnXXx8W10pW3ZhbC5pZF07XG5cdFx0aWYocmVsKSB7XG5cdFx0XHR2YWwuVGFyZ2V0ID0gcmVsLlRhcmdldDtcblx0XHRcdGlmKHZhbC5sb2NhdGlvbikgdmFsLlRhcmdldCArPSBcIiNcIit1bmVzY2FwZXhtbCh2YWwubG9jYXRpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWwuVGFyZ2V0ID0gXCIjXCIgKyB1bmVzY2FwZXhtbCh2YWwubG9jYXRpb24pO1xuXHRcdFx0cmVsID0ge1RhcmdldDogdmFsLlRhcmdldCwgVGFyZ2V0TW9kZTogJ0ludGVybmFsJ307XG5cdFx0fVxuXHRcdHZhbC5SZWwgPSByZWw7XG5cdFx0aWYodmFsLnRvb2x0aXApIHsgdmFsLlRvb2x0aXAgPSB2YWwudG9vbHRpcDsgZGVsZXRlIHZhbC50b29sdGlwOyB9XG5cdFx0dmFyIHJuZyA9IHNhZmVfZGVjb2RlX3JhbmdlKHZhbC5yZWYpO1xuXHRcdGZvcih2YXIgUj1ybmcucy5yO1I8PXJuZy5lLnI7KytSKSBmb3IodmFyIEM9cm5nLnMuYztDPD1ybmcuZS5jOysrQykge1xuXHRcdFx0dmFyIGFkZHIgPSBlbmNvZGVfY2VsbCh7YzpDLHI6Un0pO1xuXHRcdFx0aWYoZGVuc2UpIHtcblx0XHRcdFx0aWYoIXNbUl0pIHNbUl0gPSBbXTtcblx0XHRcdFx0aWYoIXNbUl1bQ10pIHNbUl1bQ10gPSB7dDpcInpcIix2OnVuZGVmaW5lZH07XG5cdFx0XHRcdHNbUl1bQ10ubCA9IHZhbDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmKCFzW2FkZHJdKSBzW2FkZHJdID0ge3Q6XCJ6XCIsdjp1bmRlZmluZWR9O1xuXHRcdFx0XHRzW2FkZHJdLmwgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9tYXJnaW5zKG1hcmdpbikge1xuXHR2YXIgbyA9IHt9O1xuXHRbXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJ0b3BcIiwgXCJib3R0b21cIiwgXCJoZWFkZXJcIiwgXCJmb290ZXJcIl0uZm9yRWFjaChmdW5jdGlvbihrKSB7XG5cdFx0aWYobWFyZ2luW2tdKSBvW2tdID0gcGFyc2VGbG9hdChtYXJnaW5ba10pO1xuXHR9KTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV93c194bWxfbWFyZ2lucyhtYXJnaW4pLyo6c3RyaW5nKi8ge1xuXHRkZWZhdWx0X21hcmdpbnMobWFyZ2luKTtcblx0cmV0dXJuIHdyaXRleHRhZygncGFnZU1hcmdpbnMnLCBudWxsLCBtYXJnaW4pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV93c194bWxfY29scyhjb2x1bW5zLCBjb2xzKSB7XG5cdHZhciBzZWVuY29sID0gZmFsc2U7XG5cdGZvcih2YXIgY29saSA9IDA7IGNvbGkgIT0gY29scy5sZW5ndGg7ICsrY29saSkge1xuXHRcdHZhciBjb2xsID0gcGFyc2V4bWx0YWcoY29sc1tjb2xpXSwgdHJ1ZSk7XG5cdFx0aWYoY29sbC5oaWRkZW4pIGNvbGwuaGlkZGVuID0gcGFyc2V4bWxib29sKGNvbGwuaGlkZGVuKTtcblx0XHR2YXIgY29sbT1wYXJzZUludChjb2xsLm1pbiwgMTApLTEsIGNvbE09cGFyc2VJbnQoY29sbC5tYXgsMTApLTE7XG5cdFx0aWYoY29sbC5vdXRsaW5lTGV2ZWwpIGNvbGwubGV2ZWwgPSAoK2NvbGwub3V0bGluZUxldmVsIHx8IDApO1xuXHRcdGRlbGV0ZSBjb2xsLm1pbjsgZGVsZXRlIGNvbGwubWF4OyBjb2xsLndpZHRoID0gK2NvbGwud2lkdGg7XG5cdFx0aWYoIXNlZW5jb2wgJiYgY29sbC53aWR0aCkgeyBzZWVuY29sID0gdHJ1ZTsgZmluZF9tZHdfY29sdyhjb2xsLndpZHRoKTsgfVxuXHRcdHByb2Nlc3NfY29sKGNvbGwpO1xuXHRcdHdoaWxlKGNvbG0gPD0gY29sTSkgY29sdW1uc1tjb2xtKytdID0gZHVwKGNvbGwpO1xuXHR9XG59XG5mdW5jdGlvbiB3cml0ZV93c194bWxfY29scyh3cywgY29scykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1wiPGNvbHM+XCJdLCBjb2w7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gY29scy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCEoY29sID0gY29sc1tpXSkpIGNvbnRpbnVlO1xuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnY29sJywgbnVsbCwgY29sX29ial93KGksIGNvbCkpKTtcblx0fVxuXHRvW28ubGVuZ3RoXSA9IFwiPC9jb2xzPlwiO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV93c194bWxfYXV0b2ZpbHRlcihkYXRhLyo6c3RyaW5nKi8pIHtcblx0dmFyIG8gPSB7IHJlZjogKGRhdGEubWF0Y2goL3JlZj1cIihbXlwiXSopXCIvKXx8W10pWzFdfTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV93c194bWxfYXV0b2ZpbHRlcihkYXRhLCB3cywgd2IsIGlkeCkvKjpzdHJpbmcqLyB7XG5cdHZhciByZWYgPSB0eXBlb2YgZGF0YS5yZWYgPT0gXCJzdHJpbmdcIiA/IGRhdGEucmVmIDogZW5jb2RlX3JhbmdlKGRhdGEucmVmKTtcblx0aWYoIXdiLldvcmtib29rKSB3Yi5Xb3JrYm9vayA9ICh7U2hlZXRzOltdfS8qOmFueSovKTtcblx0aWYoIXdiLldvcmtib29rLk5hbWVzKSB3Yi5Xb3JrYm9vay5OYW1lcyA9IFtdO1xuXHR2YXIgbmFtZXMvKjogQXJyYXk8YW55PiAqLyA9IHdiLldvcmtib29rLk5hbWVzO1xuXHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2UocmVmKTtcblx0aWYocmFuZ2Uucy5yID09IHJhbmdlLmUucikgeyByYW5nZS5lLnIgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKS5lLnI7IHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7IH1cblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG5hbWUgPSBuYW1lc1tpXTtcblx0XHRpZihuYW1lLk5hbWUgIT0gJ194bG5tLl9GaWx0ZXJEYXRhYmFzZScpIGNvbnRpbnVlO1xuXHRcdGlmKG5hbWUuU2hlZXQgIT0gaWR4KSBjb250aW51ZTtcblx0XHRuYW1lLlJlZiA9IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmOyBicmVhaztcblx0fVxuXHRpZihpID09IG5hbWVzLmxlbmd0aCkgbmFtZXMucHVzaCh7IE5hbWU6ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnLCBTaGVldDogaWR4LCBSZWY6IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmICB9KTtcblx0cmV0dXJuIHdyaXRleHRhZyhcImF1dG9GaWx0ZXJcIiwgbnVsbCwge3JlZjpyZWZ9KTtcbn1cblxuLyogMTguMy4xLjg4IHNoZWV0Vmlld3MgQ1RfU2hlZXRWaWV3cyAqL1xuLyogMTguMy4xLjg3IHNoZWV0VmlldyBDVF9TaGVldFZpZXcgKi9cbnZhciBzdmlld3JlZ2V4ID0gLzwoPzpcXHc6KT9zaGVldFZpZXcoPzpbXj5hLXpdW14+XSopP1xcLz8+LztcbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9zaGVldHZpZXdzKGRhdGEsIHdiLyo6V0JXQlByb3BzKi8pIHtcblx0aWYoIXdiLlZpZXdzKSB3Yi5WaWV3cyA9IFt7fV07XG5cdChkYXRhLm1hdGNoKHN2aWV3cmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihyLyo6c3RyaW5nKi8sIGkvKjpudW1iZXIqLykge1xuXHRcdHZhciB0YWcgPSBwYXJzZXhtbHRhZyhyKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGlmKCF3Yi5WaWV3c1tpXSkgd2IuVmlld3NbaV0gPSB7fTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGlmKCt0YWcuem9vbVNjYWxlKSB3Yi5WaWV3c1tpXS56b29tID0gK3RhZy56b29tU2NhbGU7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZihwYXJzZXhtbGJvb2wodGFnLnJpZ2h0VG9MZWZ0KSkgd2IuVmlld3NbaV0uUlRMID0gdHJ1ZTtcblx0fSk7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bWxfc2hlZXR2aWV3cyh3cywgb3B0cywgaWR4LCB3YikvKjpzdHJpbmcqLyB7XG5cdHZhciBzdmlldyA9ICh7d29ya2Jvb2tWaWV3SWQ6XCIwXCJ9Lyo6YW55Ki8pO1xuXHQvLyAkRmxvd0lnbm9yZVxuXHRpZigoKCh3Ynx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKVswXSkgc3ZpZXcucmlnaHRUb0xlZnQgPSB3Yi5Xb3JrYm9vay5WaWV3c1swXS5SVEwgPyBcIjFcIiA6IFwiMFwiO1xuXHRyZXR1cm4gd3JpdGV4dGFnKFwic2hlZXRWaWV3c1wiLCB3cml0ZXh0YWcoXCJzaGVldFZpZXdcIiwgbnVsbCwgc3ZpZXcpLCB7fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9jZWxsKGNlbGwvKjpDZWxsKi8sIHJlZiwgd3MsIG9wdHMvKjo6LCBpZHgsIHdiKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihjZWxsLmMpIHdzWychY29tbWVudHMnXS5wdXNoKFtyZWYsIGNlbGwuY10pO1xuXHRpZihjZWxsLnYgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY2VsbC5mICE9PSBcInN0cmluZ1wiIHx8IGNlbGwudCA9PT0gJ3onICYmICFjZWxsLmYpIHJldHVybiBcIlwiO1xuXHR2YXIgdnYgPSBcIlwiO1xuXHR2YXIgb2xkdCA9IGNlbGwudCwgb2xkdiA9IGNlbGwudjtcblx0aWYoY2VsbC50ICE9PSBcInpcIikgc3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ2InOiB2diA9IGNlbGwudiA/IFwiMVwiIDogXCIwXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ24nOiB2diA9ICcnK2NlbGwudjsgYnJlYWs7XG5cdFx0Y2FzZSAnZSc6IHZ2ID0gQkVycltjZWxsLnZdOyBicmVhaztcblx0XHRjYXNlICdkJzpcblx0XHRcdGlmKG9wdHMgJiYgb3B0cy5jZWxsRGF0ZXMpIHZ2ID0gcGFyc2VEYXRlKGNlbGwudiwgLTEpLnRvSVNPU3RyaW5nKCk7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y2VsbCA9IGR1cChjZWxsKTtcblx0XHRcdFx0Y2VsbC50ID0gJ24nO1xuXHRcdFx0XHR2diA9ICcnKyhjZWxsLnYgPSBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKSk7XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2YgY2VsbC56ID09PSAndW5kZWZpbmVkJykgY2VsbC56ID0gdGFibGVfZm10WzE0XTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHZ2ID0gY2VsbC52OyBicmVhaztcblx0fVxuXHR2YXIgdiA9IHdyaXRldGFnKCd2JywgZXNjYXBleG1sKHZ2KSksIG8gPSAoe3I6cmVmfS8qOmFueSovKTtcblx0LyogVE9ETzogY2VsbCBzdHlsZSAqL1xuXHR2YXIgb3MgPSBnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIGNlbGwsIG9wdHMpO1xuXHRpZihvcyAhPT0gMCkgby5zID0gb3M7XG5cdHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICduJzogYnJlYWs7XG5cdFx0Y2FzZSAnZCc6IG8udCA9IFwiZFwiOyBicmVhaztcblx0XHRjYXNlICdiJzogby50ID0gXCJiXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ2UnOiBvLnQgPSBcImVcIjsgYnJlYWs7XG5cdFx0Y2FzZSAneic6IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGlmKGNlbGwudiA9PSBudWxsKSB7IGRlbGV0ZSBjZWxsLnQ7IGJyZWFrOyB9XG5cdFx0XHRpZihjZWxsLnYubGVuZ3RoID4gMzI3NjcpIHRocm93IG5ldyBFcnJvcihcIlRleHQgbGVuZ3RoIG11c3Qgbm90IGV4Y2VlZCAzMjc2NyBjaGFyYWN0ZXJzXCIpO1xuXHRcdFx0aWYob3B0cyAmJiBvcHRzLmJvb2tTU1QpIHtcblx0XHRcdFx0diA9IHdyaXRldGFnKCd2JywgJycrZ2V0X3NzdF9pZChvcHRzLlN0cmluZ3MsIGNlbGwudiwgb3B0cy5yZXZTdHJpbmdzKSk7XG5cdFx0XHRcdG8udCA9IFwic1wiOyBicmVhaztcblx0XHRcdH1cblx0XHRcdG8udCA9IFwic3RyXCI7IGJyZWFrO1xuXHR9XG5cdGlmKGNlbGwudCAhPSBvbGR0KSB7IGNlbGwudCA9IG9sZHQ7IGNlbGwudiA9IG9sZHY7IH1cblx0aWYodHlwZW9mIGNlbGwuZiA9PSBcInN0cmluZ1wiICYmIGNlbGwuZikge1xuXHRcdHZhciBmZiA9IGNlbGwuRiAmJiBjZWxsLkYuc2xpY2UoMCwgcmVmLmxlbmd0aCkgPT0gcmVmID8ge3Q6XCJhcnJheVwiLCByZWY6Y2VsbC5GfSA6IG51bGw7XG5cdFx0diA9IHdyaXRleHRhZygnZicsIGVzY2FwZXhtbChjZWxsLmYpLCBmZikgKyAoY2VsbC52ICE9IG51bGwgPyB2IDogXCJcIik7XG5cdH1cblx0aWYoY2VsbC5sKSB3c1snIWxpbmtzJ10ucHVzaChbcmVmLCBjZWxsLmxdKTtcblx0aWYoY2VsbC5EKSBvLmNtID0gMTtcblx0cmV0dXJuIHdyaXRleHRhZygnYycsIHYsIG8pO1xufVxuXG52YXIgcGFyc2Vfd3NfeG1sX2RhdGEgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgY2VsbHJlZ2V4ID0gLzwoPzpcXHcrOik/Y1sgXFwvPl0vLCByb3dyZWdleCA9IC88XFwvKD86XFx3KzopP3Jvdz4vO1xuXHR2YXIgcnJlZ2V4ID0gL3I9W1wiJ10oW15cIiddKilbXCInXS8sIGlzcmVnZXggPSAvPCg/Olxcdys6KT9pcz4oW1xcU1xcc10qPyk8XFwvKD86XFx3KzopP2lzPi87XG5cdHZhciByZWZyZWdleCA9IC9yZWY9W1wiJ10oW15cIiddKilbXCInXS87XG5cdHZhciBtYXRjaF92ID0gbWF0Y2h0YWcoXCJ2XCIpLCBtYXRjaF9mID0gbWF0Y2h0YWcoXCJmXCIpO1xuXG5yZXR1cm4gZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2RhdGEoc2RhdGEvKjpzdHJpbmcqLywgcywgb3B0cywgZ3Vlc3MvKjpSYW5nZSovLCB0aGVtZXMsIHN0eWxlcykge1xuXHR2YXIgcmkgPSAwLCB4ID0gXCJcIiwgY2VsbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgY3JlZi8qOj9BcnJheTxzdHJpbmc+Ki8gPSBbXSwgaWR4PTAsIGk9MCwgY2M9MCwgZD1cIlwiLCBwLyo6YW55Ki87XG5cdHZhciB0YWcsIHRhZ3IgPSAwLCB0YWdjID0gMDtcblx0dmFyIHNzdHIsIGZ0YWc7XG5cdHZhciBmbXRpZCA9IDAsIGZpbGxpZCA9IDA7XG5cdHZhciBkb19mb3JtYXQgPSBBcnJheS5pc0FycmF5KHN0eWxlcy5DZWxsWGYpLCBjZjtcblx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHR2YXIgc2hhcmVkZiA9IFtdO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHMpO1xuXHR2YXIgcm93cy8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgcm93b2JqID0ge30sIHJvd3JpdGUgPSBmYWxzZTtcblx0dmFyIHNoZWV0U3R1YnMgPSAhIW9wdHMuc2hlZXRTdHVicztcblx0Zm9yKHZhciBtYXJyID0gc2RhdGEuc3BsaXQocm93cmVnZXgpLCBtdCA9IDAsIG1hcnJsZW4gPSBtYXJyLmxlbmd0aDsgbXQgIT0gbWFycmxlbjsgKyttdCkge1xuXHRcdHggPSBtYXJyW210XS50cmltKCk7XG5cdFx0dmFyIHhsZW4gPSB4Lmxlbmd0aDtcblx0XHRpZih4bGVuID09PSAwKSBjb250aW51ZTtcblxuXHRcdC8qIDE4LjMuMS43MyByb3cgQ1RfUm93ICovXG5cdFx0dmFyIHJzdGFydGkgPSAwO1xuXHRcdG91dGE6IGZvcihyaSA9IDA7IHJpIDwgeGxlbjsgKytyaSkgc3dpdGNoKC8qeC5jaGFyQ29kZUF0KHJpKSoveFtyaV0pIHtcblx0XHRcdGNhc2UgXCI+XCIgLyo2MiovOlxuXHRcdFx0XHRpZigvKnguY2hhckNvZGVBdChyaS0xKSAhPSA0NyoveFtyaS0xXSAhPSBcIi9cIikgeyArK3JpOyBicmVhayBvdXRhOyB9XG5cdFx0XHRcdGlmKG9wdHMgJiYgb3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0XHRcdFx0Ly8gVE9ETzogYXZvaWQgZHVwbGljYXRpb25cblx0XHRcdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyh4LnNsaWNlKHJzdGFydGkscmkpLCB0cnVlKTtcblx0XHRcdFx0XHR0YWdyID0gdGFnLnIgIT0gbnVsbCA/IHBhcnNlSW50KHRhZy5yLCAxMCkgOiB0YWdyKzE7IHRhZ2MgPSAtMTtcblx0XHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8IHRhZ3IpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdHJvd29iaiA9IHt9OyByb3dyaXRlID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYodGFnLmh0KSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmouaHB0ID0gcGFyc2VGbG9hdCh0YWcuaHQpOyByb3dvYmouaHB4ID0gcHQycHgocm93b2JqLmhwdCk7IH1cblx0XHRcdFx0XHRpZih0YWcuaGlkZGVuID09IFwiMVwiKSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgfVxuXHRcdFx0XHRcdGlmKHRhZy5vdXRsaW5lTGV2ZWwgIT0gbnVsbCkgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmxldmVsID0gK3RhZy5vdXRsaW5lTGV2ZWw7IH1cblx0XHRcdFx0XHRpZihyb3dyaXRlKSByb3dzW3RhZ3ItMV0gPSByb3dvYmo7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiPFwiIC8qNjAqLzogcnN0YXJ0aSA9IHJpOyBicmVhaztcblx0XHR9XG5cdFx0aWYocnN0YXJ0aSA+PSByaSkgYnJlYWs7XG5cdFx0dGFnID0gcGFyc2V4bWx0YWcoeC5zbGljZShyc3RhcnRpLHJpKSwgdHJ1ZSk7XG5cdFx0dGFnciA9IHRhZy5yICE9IG51bGwgPyBwYXJzZUludCh0YWcuciwgMTApIDogdGFncisxOyB0YWdjID0gLTE7XG5cdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPCB0YWdyKSBjb250aW51ZTtcblx0XHRpZihndWVzcy5zLnIgPiB0YWdyIC0gMSkgZ3Vlc3Mucy5yID0gdGFnciAtIDE7XG5cdFx0aWYoZ3Vlc3MuZS5yIDwgdGFnciAtIDEpIGd1ZXNzLmUuciA9IHRhZ3IgLSAxO1xuXG5cdFx0aWYob3B0cyAmJiBvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRcdHJvd29iaiA9IHt9OyByb3dyaXRlID0gZmFsc2U7XG5cdFx0XHRpZih0YWcuaHQpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5ocHQgPSBwYXJzZUZsb2F0KHRhZy5odCk7IHJvd29iai5ocHggPSBwdDJweChyb3dvYmouaHB0KTsgfVxuXHRcdFx0aWYodGFnLmhpZGRlbiA9PSBcIjFcIikgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhpZGRlbiA9IHRydWU7IH1cblx0XHRcdGlmKHRhZy5vdXRsaW5lTGV2ZWwgIT0gbnVsbCkgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmxldmVsID0gK3RhZy5vdXRsaW5lTGV2ZWw7IH1cblx0XHRcdGlmKHJvd3JpdGUpIHJvd3NbdGFnci0xXSA9IHJvd29iajtcblx0XHR9XG5cblx0XHQvKiAxOC4zLjEuNCBjIENUX0NlbGwgKi9cblx0XHRjZWxscyA9IHguc2xpY2UocmkpLnNwbGl0KGNlbGxyZWdleCk7XG5cdFx0Zm9yKHZhciByc2xpY2UgPSAwOyByc2xpY2UgIT0gY2VsbHMubGVuZ3RoOyArK3JzbGljZSkgaWYoY2VsbHNbcnNsaWNlXS50cmltKCkuY2hhckF0KDApICE9IFwiPFwiKSBicmVhaztcblx0XHRjZWxscyA9IGNlbGxzLnNsaWNlKHJzbGljZSk7XG5cdFx0Zm9yKHJpID0gMDsgcmkgIT0gY2VsbHMubGVuZ3RoOyArK3JpKSB7XG5cdFx0XHR4ID0gY2VsbHNbcmldLnRyaW0oKTtcblx0XHRcdGlmKHgubGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdGNyZWYgPSB4Lm1hdGNoKHJyZWdleCk7IGlkeCA9IHJpOyBpPTA7IGNjPTA7XG5cdFx0XHR4ID0gXCI8YyBcIiArICh4LnNsaWNlKDAsMSk9PVwiPFwiP1wiPlwiOlwiXCIpICsgeDtcblx0XHRcdGlmKGNyZWYgIT0gbnVsbCAmJiBjcmVmLmxlbmd0aCA9PT0gMikge1xuXHRcdFx0XHRpZHggPSAwOyBkPWNyZWZbMV07XG5cdFx0XHRcdGZvcihpPTA7IGkgIT0gZC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHRcdGlmKChjYz1kLmNoYXJDb2RlQXQoaSktNjQpIDwgMSB8fCBjYyA+IDI2KSBicmVhaztcblx0XHRcdFx0XHRpZHggPSAyNippZHggKyBjYztcblx0XHRcdFx0fVxuXHRcdFx0XHQtLWlkeDtcblx0XHRcdFx0dGFnYyA9IGlkeDtcblx0XHRcdH0gZWxzZSArK3RhZ2M7XG5cdFx0XHRmb3IoaSA9IDA7IGkgIT0geC5sZW5ndGg7ICsraSkgaWYoeC5jaGFyQ29kZUF0KGkpID09PSA2MikgYnJlYWs7ICsraTtcblx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKHguc2xpY2UoMCxpKSwgdHJ1ZSk7XG5cdFx0XHRpZighdGFnLnIpIHRhZy5yID0gZW5jb2RlX2NlbGwoe3I6dGFnci0xLCBjOnRhZ2N9KTtcblx0XHRcdGQgPSB4LnNsaWNlKGkpO1xuXHRcdFx0cCA9ICh7dDpcIlwifS8qOmFueSovKTtcblxuXHRcdFx0aWYoKGNyZWY9ZC5tYXRjaChtYXRjaF92KSkhPSBudWxsICYmIC8qOjpjcmVmICE9IG51bGwgJiYgKi9jcmVmWzFdICE9PSAnJykgcC52PXVuZXNjYXBleG1sKGNyZWZbMV0pO1xuXHRcdFx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdFx0XHRpZigoY3JlZj1kLm1hdGNoKG1hdGNoX2YpKSE9IG51bGwgJiYgLyo6OmNyZWYgIT0gbnVsbCAmJiAqL2NyZWZbMV0gIT09ICcnKSB7XG5cdFx0XHRcdFx0LyogVE9ETzogbWF0Y2ggYWdhaW5zdCBYTFNYRnV0dXJlRnVuY3Rpb25zICovXG5cdFx0XHRcdFx0cC5mPXVuZXNjYXBleG1sKHV0ZjhyZWFkKGNyZWZbMV0pKS5yZXBsYWNlKC9cXHJcXG4vZywgXCJcXG5cIik7XG5cdFx0XHRcdFx0aWYoIW9wdHMueGxmbikgcC5mID0gX3hsZm4ocC5mKTtcblx0XHRcdFx0XHRpZigvKjo6Y3JlZiAhPSBudWxsICYmIGNyZWZbMF0gIT0gbnVsbCAmJiAqL2NyZWZbMF0uaW5kZXhPZigndD1cImFycmF5XCInKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRwLkYgPSAoZC5tYXRjaChyZWZyZWdleCl8fFtdKVsxXTtcblx0XHRcdFx0XHRcdGlmKHAuRi5pbmRleE9mKFwiOlwiKSA+IC0xKSBhcnJheWYucHVzaChbc2FmZV9kZWNvZGVfcmFuZ2UocC5GKSwgcC5GXSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmKC8qOjpjcmVmICE9IG51bGwgJiYgY3JlZlswXSAhPSBudWxsICYmICovY3JlZlswXS5pbmRleE9mKCd0PVwic2hhcmVkXCInKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBwYXJzZSBmb3JtdWxhXG5cdFx0XHRcdFx0XHRmdGFnID0gcGFyc2V4bWx0YWcoY3JlZlswXSk7XG5cdFx0XHRcdFx0XHR2YXIgX19fZiA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKGNyZWZbMV0pKTtcblx0XHRcdFx0XHRcdGlmKCFvcHRzLnhsZm4pIF9fX2YgPSBfeGxmbihfX19mKTtcblx0XHRcdFx0XHRcdHNoYXJlZGZbcGFyc2VJbnQoZnRhZy5zaSwgMTApXSA9IFtmdGFnLCBfX19mLCB0YWcucl07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYoKGNyZWY9ZC5tYXRjaCgvPGZbXj5dKlxcLz4vKSkpIHtcblx0XHRcdFx0XHRmdGFnID0gcGFyc2V4bWx0YWcoY3JlZlswXSk7XG5cdFx0XHRcdFx0aWYoc2hhcmVkZltmdGFnLnNpXSkgcC5mID0gc2hpZnRfZm9ybXVsYV94bHN4KHNoYXJlZGZbZnRhZy5zaV1bMV0sIHNoYXJlZGZbZnRhZy5zaV1bMl0vKlswXS5yZWYqLywgdGFnLnIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIFRPRE86IGZhY3RvciBvdXQgY29udGFpbnMgbG9naWMgKi9cblx0XHRcdFx0dmFyIF90YWcgPSBkZWNvZGVfY2VsbCh0YWcucik7XG5cdFx0XHRcdGZvcihpID0gMDsgaSA8IGFycmF5Zi5sZW5ndGg7ICsraSlcblx0XHRcdFx0XHRpZihfdGFnLnIgPj0gYXJyYXlmW2ldWzBdLnMuciAmJiBfdGFnLnIgPD0gYXJyYXlmW2ldWzBdLmUucilcblx0XHRcdFx0XHRcdGlmKF90YWcuYyA+PSBhcnJheWZbaV1bMF0ucy5jICYmIF90YWcuYyA8PSBhcnJheWZbaV1bMF0uZS5jKVxuXHRcdFx0XHRcdFx0XHRwLkYgPSBhcnJheWZbaV1bMV07XG5cdFx0XHR9XG5cblx0XHRcdGlmKHRhZy50ID09IG51bGwgJiYgcC52ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYocC5mIHx8IHAuRikge1xuXHRcdFx0XHRcdHAudiA9IDA7IHAudCA9IFwiblwiO1xuXHRcdFx0XHR9IGVsc2UgaWYoIXNoZWV0U3R1YnMpIGNvbnRpbnVlO1xuXHRcdFx0XHRlbHNlIHAudCA9IFwielwiO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBwLnQgPSB0YWcudCB8fCBcIm5cIjtcblx0XHRcdGlmKGd1ZXNzLnMuYyA+IHRhZ2MpIGd1ZXNzLnMuYyA9IHRhZ2M7XG5cdFx0XHRpZihndWVzcy5lLmMgPCB0YWdjKSBndWVzcy5lLmMgPSB0YWdjO1xuXHRcdFx0LyogMTguMTguMTEgdCBTVF9DZWxsVHlwZSAqL1xuXHRcdFx0c3dpdGNoKHAudCkge1xuXHRcdFx0XHRjYXNlICduJzpcblx0XHRcdFx0XHRpZihwLnYgPT0gXCJcIiB8fCBwLnYgPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0aWYoIXNoZWV0U3R1YnMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0cC50ID0gJ3onO1xuXHRcdFx0XHRcdH0gZWxzZSBwLnYgPSBwYXJzZUZsb2F0KHAudik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3MnOlxuXHRcdFx0XHRcdGlmKHR5cGVvZiBwLnYgPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0XHRcdGlmKCFzaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdHAudCA9ICd6Jztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c3N0ciA9IHN0cnNbcGFyc2VJbnQocC52LCAxMCldO1xuXHRcdFx0XHRcdFx0cC52ID0gc3N0ci50O1xuXHRcdFx0XHRcdFx0cC5yID0gc3N0ci5yO1xuXHRcdFx0XHRcdFx0aWYob3B0cy5jZWxsSFRNTCkgcC5oID0gc3N0ci5oO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnc3RyJzpcblx0XHRcdFx0XHRwLnQgPSBcInNcIjtcblx0XHRcdFx0XHRwLnYgPSAocC52IT1udWxsKSA/IHV0ZjhyZWFkKHAudikgOiAnJztcblx0XHRcdFx0XHRpZihvcHRzLmNlbGxIVE1MKSBwLmggPSBlc2NhcGVodG1sKHAudik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2lubGluZVN0cic6XG5cdFx0XHRcdFx0Y3JlZiA9IGQubWF0Y2goaXNyZWdleCk7XG5cdFx0XHRcdFx0cC50ID0gJ3MnO1xuXHRcdFx0XHRcdGlmKGNyZWYgIT0gbnVsbCAmJiAoc3N0ciA9IHBhcnNlX3NpKGNyZWZbMV0pKSkge1xuXHRcdFx0XHRcdFx0cC52ID0gc3N0ci50O1xuXHRcdFx0XHRcdFx0aWYob3B0cy5jZWxsSFRNTCkgcC5oID0gc3N0ci5oO1xuXHRcdFx0XHRcdH0gZWxzZSBwLnYgPSBcIlwiO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdiJzogcC52ID0gcGFyc2V4bWxib29sKHAudik7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdkJzpcblx0XHRcdFx0XHRpZihvcHRzLmNlbGxEYXRlcykgcC52ID0gcGFyc2VEYXRlKHAudiwgMSk7XG5cdFx0XHRcdFx0ZWxzZSB7IHAudiA9IGRhdGVudW0ocGFyc2VEYXRlKHAudiwgMSkpOyBwLnQgPSAnbic7IH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0LyogZXJyb3Igc3RyaW5nIGluIC53LCBudW1iZXIgaW4gLnYgKi9cblx0XHRcdFx0Y2FzZSAnZSc6XG5cdFx0XHRcdFx0aWYoIW9wdHMgfHwgb3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpIHAudyA9IHAudjtcblx0XHRcdFx0XHRwLnYgPSBSQkVycltwLnZdOyBicmVhaztcblx0XHRcdH1cblx0XHRcdC8qIGZvcm1hdHRpbmcgKi9cblx0XHRcdGZtdGlkID0gZmlsbGlkID0gMDtcblx0XHRcdGNmID0gbnVsbDtcblx0XHRcdGlmKGRvX2Zvcm1hdCAmJiB0YWcucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNmID0gc3R5bGVzLkNlbGxYZlt0YWcuc107XG5cdFx0XHRcdGlmKGNmICE9IG51bGwpIHtcblx0XHRcdFx0XHRpZihjZi5udW1GbXRJZCAhPSBudWxsKSBmbXRpZCA9IGNmLm51bUZtdElkO1xuXHRcdFx0XHRcdGlmKG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdFx0XHRcdFx0aWYoY2YuZmlsbElkICE9IG51bGwpIGZpbGxpZCA9IGNmLmZpbGxJZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNhZmVfZm9ybWF0KHAsIGZtdGlkLCBmaWxsaWQsIG9wdHMsIHRoZW1lcywgc3R5bGVzKTtcblx0XHRcdGlmKG9wdHMuY2VsbERhdGVzICYmIGRvX2Zvcm1hdCAmJiBwLnQgPT0gJ24nICYmIGZtdF9pc19kYXRlKHRhYmxlX2ZtdFtmbXRpZF0pKSB7IHAudCA9ICdkJzsgcC52ID0gbnVtZGF0ZShwLnYpOyB9XG5cdFx0XHRpZih0YWcuY20gJiYgb3B0cy54bG1ldGEpIHtcblx0XHRcdFx0dmFyIGNtID0gKG9wdHMueGxtZXRhLkNlbGx8fFtdKVsrdGFnLmNtLTFdO1xuXHRcdFx0XHRpZihjbSAmJiBjbS50eXBlID09ICdYTERBUFInKSBwLkQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYoZGVuc2UpIHtcblx0XHRcdFx0dmFyIF9yID0gZGVjb2RlX2NlbGwodGFnLnIpO1xuXHRcdFx0XHRpZighc1tfci5yXSkgc1tfci5yXSA9IFtdO1xuXHRcdFx0XHRzW19yLnJdW19yLmNdID0gcDtcblx0XHRcdH0gZWxzZSBzW3RhZy5yXSA9IHA7XG5cdFx0fVxuXHR9XG5cdGlmKHJvd3MubGVuZ3RoID4gMCkgc1snIXJvd3MnXSA9IHJvd3M7XG59OyB9KSgpO1xuXG5mdW5jdGlvbiB3cml0ZV93c194bWxfZGF0YSh3cy8qOldvcmtzaGVldCovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IvKjpXb3JrYm9vayovLyo6OiwgcmVscyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgci8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsPVwiXCIsIHJlZiwgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIFI9MCwgQz0wLCByb3dzID0gd3NbJyFyb3dzJ107XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHR2YXIgcGFyYW1zID0gKHtyOnJyfS8qOmFueSovKSwgcm93Lyo6Um93SW5mbyovLCBoZWlnaHQgPSAtMTtcblx0Zm9yKEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRmb3IoUiA9IHJhbmdlLnMucjsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuXHRcdHIgPSBbXTtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0Zm9yKEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHZhciBfY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ106IHdzW3JlZl07XG5cdFx0XHRpZihfY2VsbCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblx0XHRcdGlmKChjZWxsID0gd3JpdGVfd3NfeG1sX2NlbGwoX2NlbGwsIHJlZiwgd3MsIG9wdHMsIGlkeCwgd2IpKSAhPSBudWxsKSByLnB1c2goY2VsbCk7XG5cdFx0fVxuXHRcdGlmKHIubGVuZ3RoID4gMCB8fCAocm93cyAmJiByb3dzW1JdKSkge1xuXHRcdFx0cGFyYW1zID0gKHtyOnJyfS8qOmFueSovKTtcblx0XHRcdGlmKHJvd3MgJiYgcm93c1tSXSkge1xuXHRcdFx0XHRyb3cgPSByb3dzW1JdO1xuXHRcdFx0XHRpZihyb3cuaGlkZGVuKSBwYXJhbXMuaGlkZGVuID0gMTtcblx0XHRcdFx0aGVpZ2h0ID0gLTE7XG5cdFx0XHRcdGlmKHJvdy5ocHgpIGhlaWdodCA9IHB4MnB0KHJvdy5ocHgpO1xuXHRcdFx0XHRlbHNlIGlmKHJvdy5ocHQpIGhlaWdodCA9IHJvdy5ocHQ7XG5cdFx0XHRcdGlmKGhlaWdodCA+IC0xKSB7IHBhcmFtcy5odCA9IGhlaWdodDsgcGFyYW1zLmN1c3RvbUhlaWdodCA9IDE7IH1cblx0XHRcdFx0aWYocm93LmxldmVsKSB7IHBhcmFtcy5vdXRsaW5lTGV2ZWwgPSByb3cubGV2ZWw7IH1cblx0XHRcdH1cblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygncm93Jywgci5qb2luKFwiXCIpLCBwYXJhbXMpKTtcblx0XHR9XG5cdH1cblx0aWYocm93cykgZm9yKDsgUiA8IHJvd3MubGVuZ3RoOyArK1IpIHtcblx0XHRpZihyb3dzICYmIHJvd3NbUl0pIHtcblx0XHRcdHBhcmFtcyA9ICh7cjpSKzF9Lyo6YW55Ki8pO1xuXHRcdFx0cm93ID0gcm93c1tSXTtcblx0XHRcdGlmKHJvdy5oaWRkZW4pIHBhcmFtcy5oaWRkZW4gPSAxO1xuXHRcdFx0aGVpZ2h0ID0gLTE7XG5cdFx0XHRpZiAocm93LmhweCkgaGVpZ2h0ID0gcHgycHQocm93LmhweCk7XG5cdFx0XHRlbHNlIGlmIChyb3cuaHB0KSBoZWlnaHQgPSByb3cuaHB0O1xuXHRcdFx0aWYgKGhlaWdodCA+IC0xKSB7IHBhcmFtcy5odCA9IGhlaWdodDsgcGFyYW1zLmN1c3RvbUhlaWdodCA9IDE7IH1cblx0XHRcdGlmIChyb3cubGV2ZWwpIHsgcGFyYW1zLm91dGxpbmVMZXZlbCA9IHJvdy5sZXZlbDsgfVxuXHRcdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdyb3cnLCBcIlwiLCBwYXJhbXMpKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sKGlkeC8qOm51bWJlciovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ3dvcmtzaGVldCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczpyJzogWE1MTlMuclxuXHR9KV07XG5cdHZhciBzID0gd2IuU2hlZXROYW1lc1tpZHhdLCBzaWR4ID0gMCwgcmRhdGEgPSBcIlwiO1xuXHR2YXIgd3MgPSB3Yi5TaGVldHNbc107XG5cdGlmKHdzID09IG51bGwpIHdzID0ge307XG5cdHZhciByZWYgPSB3c1snIXJlZiddIHx8ICdBMSc7XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHJlZik7XG5cdGlmKHJhbmdlLmUuYyA+IDB4M0ZGRiB8fCByYW5nZS5lLnIgPiAweEZGRkZGKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlJhbmdlIFwiICsgcmVmICsgXCIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6WEZEMTA0ODU3NlwiKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1pbihyYW5nZS5lLmMsIDB4M0ZGRik7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweEZGRkZGKTtcblx0XHRyZWYgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHR9XG5cdGlmKCFyZWxzKSByZWxzID0ge307XG5cdHdzWychY29tbWVudHMnXSA9IFtdO1xuXHR2YXIgX2RyYXdpbmcgPSBbXTtcblxuXHR3cml0ZV93c194bWxfc2hlZXRwcih3cywgd2IsIGlkeCwgb3B0cywgbyk7XG5cblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdkaW1lbnNpb24nLCBudWxsLCB7J3JlZic6IHJlZn0pKTtcblxuXHRvW28ubGVuZ3RoXSA9IHdyaXRlX3dzX3htbF9zaGVldHZpZXdzKHdzLCBvcHRzLCBpZHgsIHdiKTtcblxuXHQvKiBUT0RPOiBzdG9yZSBpbiBXQiwgcHJvY2VzcyBzdHlsZXMgKi9cblx0aWYob3B0cy5zaGVldEZvcm1hdCkgb1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdzaGVldEZvcm1hdFByJywgbnVsbCwge1xuXHRcdGRlZmF1bHRSb3dIZWlnaHQ6b3B0cy5zaGVldEZvcm1hdC5kZWZhdWx0Um93SGVpZ2h0fHwnMTYnLFxuXHRcdGJhc2VDb2xXaWR0aDpvcHRzLnNoZWV0Rm9ybWF0LmJhc2VDb2xXaWR0aHx8JzEwJyxcblx0XHRvdXRsaW5lTGV2ZWxSb3c6b3B0cy5zaGVldEZvcm1hdC5vdXRsaW5lTGV2ZWxSb3d8fCc3J1xuXHR9KSk7XG5cblx0aWYod3NbJyFjb2xzJ10gIT0gbnVsbCAmJiB3c1snIWNvbHMnXS5sZW5ndGggPiAwKSBvW28ubGVuZ3RoXSA9ICh3cml0ZV93c194bWxfY29scyh3cywgd3NbJyFjb2xzJ10pKTtcblxuXHRvW3NpZHggPSBvLmxlbmd0aF0gPSAnPHNoZWV0RGF0YS8+Jztcblx0d3NbJyFsaW5rcyddID0gW107XG5cdGlmKHdzWychcmVmJ10gIT0gbnVsbCkge1xuXHRcdHJkYXRhID0gd3JpdGVfd3NfeG1sX2RhdGEod3MsIG9wdHMsIGlkeCwgd2IsIHJlbHMpO1xuXHRcdGlmKHJkYXRhLmxlbmd0aCA+IDApIG9bby5sZW5ndGhdID0gKHJkYXRhKTtcblx0fVxuXHRpZihvLmxlbmd0aD5zaWR4KzEpIHsgb1tvLmxlbmd0aF0gPSAoJzwvc2hlZXREYXRhPicpOyBvW3NpZHhdPW9bc2lkeF0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cblx0Lyogc2hlZXRDYWxjUHIgKi9cblxuXHRpZih3c1snIXByb3RlY3QnXSkgb1tvLmxlbmd0aF0gPSB3cml0ZV93c194bWxfcHJvdGVjdGlvbih3c1snIXByb3RlY3QnXSk7XG5cblx0LyogcHJvdGVjdGVkUmFuZ2VzICovXG5cdC8qIHNjZW5hcmlvcyAqL1xuXG5cdGlmKHdzWychYXV0b2ZpbHRlciddICE9IG51bGwpIG9bby5sZW5ndGhdID0gd3JpdGVfd3NfeG1sX2F1dG9maWx0ZXIod3NbJyFhdXRvZmlsdGVyJ10sIHdzLCB3YiwgaWR4KTtcblxuXHQvKiBzb3J0U3RhdGUgKi9cblx0LyogZGF0YUNvbnNvbGlkYXRlICovXG5cdC8qIGN1c3RvbVNoZWV0Vmlld3MgKi9cblxuXHRpZih3c1snIW1lcmdlcyddICE9IG51bGwgJiYgd3NbJyFtZXJnZXMnXS5sZW5ndGggPiAwKSBvW28ubGVuZ3RoXSA9ICh3cml0ZV93c194bWxfbWVyZ2VzKHdzWychbWVyZ2VzJ10pKTtcblxuXHQvKiBwaG9uZXRpY1ByICovXG5cdC8qIGNvbmRpdGlvbmFsRm9ybWF0dGluZyAqL1xuXHQvKiBkYXRhVmFsaWRhdGlvbnMgKi9cblxuXHR2YXIgcmVsYyA9IC0xLCByZWwsIHJJZCA9IC0xO1xuXHRpZigvKjo6KCovd3NbJyFsaW5rcyddLyo6Onx8W10pKi8ubGVuZ3RoID4gMCkge1xuXHRcdG9bby5sZW5ndGhdID0gXCI8aHlwZXJsaW5rcz5cIjtcblx0XHQvKjo6KCovd3NbJyFsaW5rcyddLyo6Onx8W10pKi8uZm9yRWFjaChmdW5jdGlvbihsKSB7XG5cdFx0XHRpZighbFsxXS5UYXJnZXQpIHJldHVybjtcblx0XHRcdHJlbCA9ICh7XCJyZWZcIjpsWzBdfS8qOmFueSovKTtcblx0XHRcdGlmKGxbMV0uVGFyZ2V0LmNoYXJBdCgwKSAhPSBcIiNcIikge1xuXHRcdFx0XHRySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgZXNjYXBleG1sKGxbMV0uVGFyZ2V0KS5yZXBsYWNlKC8jLiokLywgXCJcIiksIFJFTFMuSExJTkspO1xuXHRcdFx0XHRyZWxbXCJyOmlkXCJdID0gXCJySWRcIitySWQ7XG5cdFx0XHR9XG5cdFx0XHRpZigocmVsYyA9IGxbMV0uVGFyZ2V0LmluZGV4T2YoXCIjXCIpKSA+IC0xKSByZWwubG9jYXRpb24gPSBlc2NhcGV4bWwobFsxXS5UYXJnZXQuc2xpY2UocmVsYysxKSk7XG5cdFx0XHRpZihsWzFdLlRvb2x0aXApIHJlbC50b29sdGlwID0gZXNjYXBleG1sKGxbMV0uVG9vbHRpcCk7XG5cdFx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImh5cGVybGlua1wiLG51bGwscmVsKTtcblx0XHR9KTtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPC9oeXBlcmxpbmtzPlwiO1xuXHR9XG5cdGRlbGV0ZSB3c1snIWxpbmtzJ107XG5cblx0LyogcHJpbnRPcHRpb25zICovXG5cblx0aWYod3NbJyFtYXJnaW5zJ10gIT0gbnVsbCkgb1tvLmxlbmd0aF0gPSAgd3JpdGVfd3NfeG1sX21hcmdpbnMod3NbJyFtYXJnaW5zJ10pO1xuXG5cdC8qIHBhZ2VTZXR1cCAqL1xuXHQvKiBoZWFkZXJGb290ZXIgKi9cblx0Lyogcm93QnJlYWtzICovXG5cdC8qIGNvbEJyZWFrcyAqL1xuXHQvKiBjdXN0b21Qcm9wZXJ0aWVzICovXG5cdC8qIGNlbGxXYXRjaGVzICovXG5cblx0aWYoIW9wdHMgfHwgb3B0cy5pZ25vcmVFQyB8fCAob3B0cy5pZ25vcmVFQyA9PSAodm9pZCAwKSkpIG9bby5sZW5ndGhdID0gd3JpdGV0YWcoXCJpZ25vcmVkRXJyb3JzXCIsIHdyaXRleHRhZyhcImlnbm9yZWRFcnJvclwiLCBudWxsLCB7bnVtYmVyU3RvcmVkQXNUZXh0OjEsIHNxcmVmOnJlZn0pKTtcblxuXHQvKiBzbWFydFRhZ3MgKi9cblxuXHRpZihfZHJhd2luZy5sZW5ndGggPiAwKSB7XG5cdFx0cklkID0gYWRkX3JlbHMocmVscywgLTEsIFwiLi4vZHJhd2luZ3MvZHJhd2luZ1wiICsgKGlkeCsxKSArIFwiLnhtbFwiLCBSRUxTLkRSQVcpO1xuXHRcdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKFwiZHJhd2luZ1wiLCBudWxsLCB7XCJyOmlkXCI6XCJySWRcIiArIHJJZH0pO1xuXHRcdHdzWychZHJhd2luZyddID0gX2RyYXdpbmc7XG5cdH1cblxuXHRpZih3c1snIWNvbW1lbnRzJ10ubGVuZ3RoID4gMCkge1xuXHRcdHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChpZHgrMSkgKyBcIi52bWxcIiwgUkVMUy5WTUwpO1xuXHRcdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKFwibGVnYWN5RHJhd2luZ1wiLCBudWxsLCB7XCJyOmlkXCI6XCJySWRcIiArIHJJZH0pO1xuXHRcdHdzWychbGVnYWN5J10gPSBySWQ7XG5cdH1cblxuXHQvKiBsZWdhY3lEcmF3aW5nSEYgKi9cblx0LyogcGljdHVyZSAqL1xuXHQvKiBvbGVPYmplY3RzICovXG5cdC8qIGNvbnRyb2xzICovXG5cdC8qIHdlYlB1Ymxpc2hJdGVtcyAqL1xuXHQvKiB0YWJsZVBhcnRzICovXG5cdC8qIGV4dExzdCAqL1xuXG5cdGlmKG8ubGVuZ3RoPjEpIHsgb1tvLmxlbmd0aF0gPSAoJzwvd29ya3NoZWV0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNzI2IEJydFJvd0hkciAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Um93SGRyKGRhdGEsIGxlbmd0aCkge1xuXHR2YXIgeiA9ICh7fS8qOmFueSovKTtcblx0dmFyIHRndCA9IGRhdGEubCArIGxlbmd0aDtcblx0ei5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRkYXRhLmwgKz0gNDsgLy8gVE9ETzogaXhmZVxuXHR2YXIgbWl5UncgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGRhdGEubCArPSAxOyAvLyBUT0RPOiB0b3AvYm90IHBhZGRpbmdcblx0dmFyIGZsYWdzID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRkYXRhLmwgPSB0Z3Q7XG5cdGlmKGZsYWdzICYgMHgwNykgei5sZXZlbCA9IGZsYWdzICYgMHgwNztcblx0aWYoZmxhZ3MgJiAweDEwKSB6LmhpZGRlbiA9IHRydWU7XG5cdGlmKGZsYWdzICYgMHgyMCkgei5ocHQgPSBtaXlSdyAvIDIwO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFJvd0hkcihSLyo6bnVtYmVyKi8sIHJhbmdlLCB3cykge1xuXHR2YXIgbyA9IG5ld19idWYoMTcrOCoxNik7XG5cdHZhciByb3cgPSAod3NbJyFyb3dzJ118fFtdKVtSXXx8e307XG5cdG8ud3JpdGVfc2hpZnQoNCwgUik7XG5cblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLyogVE9ETzogaXhmZSAqL1xuXG5cdHZhciBtaXlSdyA9IDB4MDE0MDtcblx0aWYocm93LmhweCkgbWl5UncgPSBweDJwdChyb3cuaHB4KSAqIDIwO1xuXHRlbHNlIGlmKHJvdy5ocHQpIG1peVJ3ID0gcm93LmhwdCAqIDIwO1xuXHRvLndyaXRlX3NoaWZ0KDIsIG1peVJ3KTtcblxuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiB0b3AvYm90IHBhZGRpbmcgKi9cblxuXHR2YXIgZmxhZ3MgPSAweDA7XG5cdGlmKHJvdy5sZXZlbCkgZmxhZ3MgfD0gcm93LmxldmVsO1xuXHRpZihyb3cuaGlkZGVuKSBmbGFncyB8PSAweDEwO1xuXHRpZihyb3cuaHB4IHx8IHJvdy5ocHQpIGZsYWdzIHw9IDB4MjA7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZmxhZ3MpO1xuXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIHBob25ldGljIGd1aWRlICovXG5cblx0LyogW01TLVhMU0JdIDIuNS44IEJydENvbFNwYW4gZXhwbGFpbnMgdGhlIG1lY2hhbmlzbSAqL1xuXHR2YXIgbmNvbHNwYW4gPSAwLCBsY3MgPSBvLmw7XG5cdG8ubCArPSA0O1xuXG5cdHZhciBjYWRkciA9IHtyOlIsIGM6MH07XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG5cdFx0aWYoKHJhbmdlLnMuYyA+ICgoaSsxKSA8PCAxMCkpIHx8IChyYW5nZS5lLmMgPCAoaSA8PCAxMCkpKSBjb250aW51ZTtcblx0XHR2YXIgZmlyc3QgPSAtMSwgbGFzdCA9IC0xO1xuXHRcdGZvcih2YXIgaiA9IChpPDwxMCk7IGogPCAoKGkrMSk8PDEwKTsgKytqKSB7XG5cdFx0XHRjYWRkci5jID0gajtcblx0XHRcdHZhciBjZWxsID0gQXJyYXkuaXNBcnJheSh3cykgPyAod3NbY2FkZHIucl18fFtdKVtjYWRkci5jXSA6IHdzW2VuY29kZV9jZWxsKGNhZGRyKV07XG5cdFx0XHRpZihjZWxsKSB7IGlmKGZpcnN0IDwgMCkgZmlyc3QgPSBqOyBsYXN0ID0gajsgfVxuXHRcdH1cblx0XHRpZihmaXJzdCA8IDApIGNvbnRpbnVlO1xuXHRcdCsrbmNvbHNwYW47XG5cdFx0by53cml0ZV9zaGlmdCg0LCBmaXJzdCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBsYXN0KTtcblx0fVxuXG5cdHZhciBsID0gby5sO1xuXHRvLmwgPSBsY3M7XG5cdG8ud3JpdGVfc2hpZnQoNCwgbmNvbHNwYW4pO1xuXHRvLmwgPSBsO1xuXG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5mdW5jdGlvbiB3cml0ZV9yb3dfaGVhZGVyKGJhLCB3cywgcmFuZ2UsIFIpIHtcblx0dmFyIG8gPSB3cml0ZV9CcnRSb3dIZHIoUiwgcmFuZ2UsIHdzKTtcblx0aWYoKG8ubGVuZ3RoID4gMTcpIHx8ICh3c1snIXJvd3MnXXx8W10pW1JdKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMCAvKiBCcnRSb3dIZHIgKi8sIG8pO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjgyMCBCcnRXc0RpbSAqL1xudmFyIHBhcnNlX0JydFdzRGltID0gcGFyc2VfVW5jaGVja2VkUmZYO1xudmFyIHdyaXRlX0JydFdzRGltID0gd3JpdGVfVW5jaGVja2VkUmZYO1xuXG4vKiBbTVMtWExTQl0gMi40LjgyMSBCcnRXc0ZtdEluZm8gKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFdzRm10SW5mbygvKjo6ZGF0YSwgbGVuZ3RoKi8pIHtcbn1cbi8vZnVuY3Rpb24gd3JpdGVfQnJ0V3NGbXRJbmZvKHdzLCBvKSB7IH1cblxuLyogW01TLVhMU0JdIDIuNC44MjMgQnJ0V3NQcm9wICovXG5mdW5jdGlvbiBwYXJzZV9CcnRXc1Byb3AoZGF0YSwgbGVuZ3RoKSB7XG5cdHZhciB6ID0ge307XG5cdHZhciBmID0gZGF0YVtkYXRhLmxdOyArK2RhdGEubDtcblx0ei5hYm92ZSA9ICEoZiAmIDB4NDApO1xuXHR6LmxlZnQgID0gIShmICYgMHg4MCk7XG5cdC8qIFRPRE86IHB1bGwgZmxhZ3MgKi9cblx0ZGF0YS5sICs9IDE4O1xuXHR6Lm5hbWUgPSBwYXJzZV9YTFNCQ29kZU5hbWUoZGF0YSwgbGVuZ3RoIC0gMTkpO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFdzUHJvcChzdHIsIG91dGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4NCs0KnN0ci5sZW5ndGgpO1xuXHR2YXIgZiA9IDB4QzA7XG5cdGlmKG91dGwpIHtcblx0XHRpZihvdXRsLmFib3ZlKSBmICY9IH4weDQwO1xuXHRcdGlmKG91dGwubGVmdCkgIGYgJj0gfjB4ODA7XG5cdH1cblx0by53cml0ZV9zaGlmdCgxLCBmKTtcblx0Zm9yKHZhciBpID0gMTsgaSA8IDM7ICsraSkgby53cml0ZV9zaGlmdCgxLDApO1xuXHR3cml0ZV9CcnRDb2xvcih7YXV0bzoxfSwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsLTEpO1xuXHRvLndyaXRlX3NoaWZ0KC00LC0xKTtcblx0d3JpdGVfWExTQkNvZGVOYW1lKHN0ciwgbyk7XG5cdHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA2IEJydENlbGxCbGFuayAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbEJsYW5rKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0cmV0dXJuIFtjZWxsXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxCbGFuayhjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHRyZXR1cm4gd3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRCbGFuayhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0cmV0dXJuIFtjZWxsXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0QmxhbmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0cmV0dXJuIHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwNyBCcnRDZWxsQm9vbCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbEJvb2woZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgZkJvb2wgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgZkJvb2wsICdiJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsQm9vbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDkpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgY2VsbC52ID8gMSA6IDApO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0Qm9vbChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIGZCb29sID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW2NlbGwsIGZCb29sLCAnYiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRCb29sKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNSk7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGNlbGwudiA/IDEgOiAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA4IEJydENlbGxFcnJvciAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbEVycm9yKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIGJFcnJvciA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFtjZWxsLCBiRXJyb3IsICdlJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsRXJyb3IoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGNlbGwudik7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRFcnJvcihkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIGJFcnJvciA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFtjZWxsLCBiRXJyb3IsICdlJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydEVycm9yKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCk7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGNlbGwudik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHJldHVybiBvO1xufVxuXG5cbi8qIFtNUy1YTFNCXSAyLjQuMzExIEJydENlbGxJc3N0ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsSXNzdChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciBpc3N0ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW2NlbGwsIGlzc3QsICdzJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsSXNzdChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyKTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIG5jZWxsLnYpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0SXNzdChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIGlzc3QgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBbY2VsbCwgaXNzdCwgJ3MnXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0SXNzdChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCBuY2VsbC52KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzEzIEJydENlbGxSZWFsICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsUmVhbChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hudW0oZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICduJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsUmVhbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDE2KTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9YbnVtKGNlbGwudiwgbyk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRSZWFsKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YbnVtKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnbiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRSZWFsKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTIpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfWG51bShjZWxsLnYsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMTQgQnJ0Q2VsbFJrICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsUmsoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9Sa051bWJlcihkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxSayhjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyKTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9Sa051bWJlcihjZWxsLnYsIG8pO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0UmsoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1JrTnVtYmVyKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnbiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRSayhjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfUmtOdW1iZXIoY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzIzIEJydENlbGxSU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsUlN0cmluZyhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1JpY2hTdHIoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICdpcyddO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMxNyBCcnRDZWxsU3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxTdChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ3N0ciddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbFN0KGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTIgKyA0ICogY2VsbC52Lmxlbmd0aCk7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGNlbGwudiwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydFN0KGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICdzdHInXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0U3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4ICsgNCAqIGNlbGwudi5sZW5ndGgpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGNlbGwudiwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjUzIEJydEZtbGFCb29sICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbWxhQm9vbChkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0Y2VsbC5yID0gb3B0c1snIXJvdyddO1xuXHR2YXIgdmFsdWUgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnYiddO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0ZGF0YS5sICs9IDI7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzNdID0gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYSwgbnVsbC8qcmFuZ2UqLywgY2VsbCwgb3B0cy5zdXBib29rcywgb3B0cyk7LyogVE9ETyAqL1xuXHR9XG5cdGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTQgQnJ0Rm1sYUVycm9yICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbWxhRXJyb3IoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdGNlbGwuciA9IG9wdHNbJyFyb3cnXTtcblx0dmFyIHZhbHVlID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbyA9IFtjZWxsLCB2YWx1ZSwgJ2UnXTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdGRhdGEubCArPSAyO1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1szXSA9IHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEsIG51bGwvKnJhbmdlKi8sIGNlbGwsIG9wdHMuc3VwYm9va3MsIG9wdHMpOy8qIFRPRE8gKi9cblx0fVxuXHRlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjU1IEJydEZtbGFOdW0gKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtbGFOdW0oZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdGNlbGwuciA9IG9wdHNbJyFyb3cnXTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWG51bShkYXRhKTtcblx0dmFyIG8gPSBbY2VsbCwgdmFsdWUsICduJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1NiBCcnRGbWxhU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbWxhU3RyaW5nKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIG8gPSBbY2VsbCwgdmFsdWUsICdzdHInXTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdGRhdGEubCArPSAyO1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1szXSA9IHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEsIG51bGwvKnJhbmdlKi8sIGNlbGwsIG9wdHMuc3VwYm9va3MsIG9wdHMpOy8qIFRPRE8gKi9cblx0fVxuXHRlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjgyIEJydE1lcmdlQ2VsbCAqL1xudmFyIHBhcnNlX0JydE1lcmdlQ2VsbCA9IHBhcnNlX1VuY2hlY2tlZFJmWDtcbnZhciB3cml0ZV9CcnRNZXJnZUNlbGwgPSB3cml0ZV9VbmNoZWNrZWRSZlg7XG4vKiBbTVMtWExTQl0gMi40LjEwNyBCcnRCZWdpbk1lcmdlQ2VsbHMgKi9cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luTWVyZ2VDZWxscyhjbnQsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCg0LCBjbnQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NjIgQnJ0SExpbmsgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEhMaW5rKGRhdGEsIGxlbmd0aC8qOjosIG9wdHMqLykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgcmZ4ID0gcGFyc2VfVW5jaGVja2VkUmZYKGRhdGEsIDE2KTtcblx0dmFyIHJlbElkID0gcGFyc2VfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciBsb2MgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciB0b29sdGlwID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgZGlzcGxheSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0ZGF0YS5sID0gZW5kO1xuXHR2YXIgbyA9ICh7cmZ4OnJmeCwgcmVsSWQ6cmVsSWQsIGxvYzpsb2MsIGRpc3BsYXk6ZGlzcGxheX0vKjphbnkqLyk7XG5cdGlmKHRvb2x0aXApIG8uVG9vbHRpcCA9IHRvb2x0aXA7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0SExpbmsobCwgcklkKSB7XG5cdHZhciBvID0gbmV3X2J1Zig1MCs0KihsWzFdLlRhcmdldC5sZW5ndGggKyAobFsxXS5Ub29sdGlwIHx8IFwiXCIpLmxlbmd0aCkpO1xuXHR3cml0ZV9VbmNoZWNrZWRSZlgoe3M6ZGVjb2RlX2NlbGwobFswXSksIGU6ZGVjb2RlX2NlbGwobFswXSl9LCBvKTtcblx0d3JpdGVfUmVsSUQoXCJySWRcIiArIHJJZCwgbyk7XG5cdHZhciBsb2NpZHggPSBsWzFdLlRhcmdldC5pbmRleE9mKFwiI1wiKTtcblx0dmFyIGxvYyA9IGxvY2lkeCA9PSAtMSA/IFwiXCIgOiBsWzFdLlRhcmdldC5zbGljZShsb2NpZHgrMSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhsb2MgfHwgXCJcIiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhsWzFdLlRvb2x0aXAgfHwgXCJcIiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhcIlwiLCBvKTtcblx0cmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC42OTIgQnJ0UGFuZSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0UGFuZSgvKmRhdGEsIGxlbmd0aCwgb3B0cyovKSB7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNiBCcnRBcnJGbWxhICovXG5mdW5jdGlvbiBwYXJzZV9CcnRBcnJGbWxhKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgcmZ4ID0gcGFyc2VfUmZYKGRhdGEsIDE2KTtcblx0dmFyIGZBbHdheXNDYWxjID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbyA9IFtyZnhdOyBvWzJdID0gZkFsd2F5c0NhbGM7XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JBcnJheVBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzFdID0gZm9ybXVsYTtcblx0fSBlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNzUwIEJydFNockZtbGEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFNockZtbGEoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciByZnggPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSwgMTYpO1xuXHR2YXIgbyA9IFtyZnhdO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCU2hhcmVkUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bMV0gPSBmb3JtdWxhO1xuXHRcdGRhdGEubCA9IGVuZDtcblx0fSBlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzIzIEJydENvbEluZm8gKi9cbi8qIFRPRE86IG9uY2UgWExTIENvbEluZm8gaXMgc2V0LCBjb21iaW5lIHRoZSBmdW5jdGlvbnMgKi9cbmZ1bmN0aW9uIHdyaXRlX0JydENvbEluZm8oQy8qOm51bWJlciovLCBjb2wsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxOCk7XG5cdHZhciBwID0gY29sX29ial93KEMsIGNvbCk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIEMpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCBDKTtcblx0by53cml0ZV9zaGlmdCg0LCAocC53aWR0aCB8fCAxMCkgKiAyNTYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDAvKml4ZmUqLyk7IC8vIHN0eWxlXG5cdHZhciBmbGFncyA9IDA7XG5cdGlmKGNvbC5oaWRkZW4pIGZsYWdzIHw9IDB4MDE7XG5cdGlmKHR5cGVvZiBwLndpZHRoID09ICdudW1iZXInKSBmbGFncyB8PSAweDAyO1xuXHRpZihjb2wubGV2ZWwpIGZsYWdzIHw9IChjb2wubGV2ZWwgPDwgOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZmxhZ3MpOyAvLyBiaXQgZmxhZ1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NzggQnJ0TWFyZ2lucyAqL1xudmFyIEJydE1hcmdpbktleXMgPSBbXCJsZWZ0XCIsXCJyaWdodFwiLFwidG9wXCIsXCJib3R0b21cIixcImhlYWRlclwiLFwiZm9vdGVyXCJdO1xuZnVuY3Rpb24gcGFyc2VfQnJ0TWFyZ2lucyhkYXRhLyo6OiwgbGVuZ3RoLCBvcHRzKi8pLyo6TWFyZ2lucyovIHtcblx0dmFyIG1hcmdpbnMgPSAoe30vKjphbnkqLyk7XG5cdEJydE1hcmdpbktleXMuZm9yRWFjaChmdW5jdGlvbihrKSB7IG1hcmdpbnNba10gPSBwYXJzZV9YbnVtKGRhdGEsIDgpOyB9KTtcblx0cmV0dXJuIG1hcmdpbnM7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRNYXJnaW5zKG1hcmdpbnMvKjpNYXJnaW5zKi8sIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig2KjgpO1xuXHRkZWZhdWx0X21hcmdpbnMobWFyZ2lucyk7XG5cdEJydE1hcmdpbktleXMuZm9yRWFjaChmdW5jdGlvbihrKSB7IHdyaXRlX1hudW0oKG1hcmdpbnMvKjphbnkqLylba10sIG8pOyB9KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMjk5IEJydEJlZ2luV3NWaWV3ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRCZWdpbldzVmlldyhkYXRhLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIGYgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGRhdGEubCArPSAyODtcblx0cmV0dXJuIHsgUlRMOiBmICYgMHgyMCB9O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5Xc1ZpZXcod3MsIFdvcmtib29rLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMzApO1xuXHR2YXIgZiA9IDB4MzljO1xuXHRpZigoKChXb3JrYm9va3x8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5SVEwpIGYgfD0gMHgyMDtcblx0by53cml0ZV9zaGlmdCgyLCBmKTsgLy8gYml0IGZsYWdcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLy8gdmlldyBmaXJzdCByb3dcblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLy8gdmlldyBmaXJzdCBjb2xcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLy8gZ3JpZGxpbmUgY29sb3IgSUNWXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMTAwKTsgLy8gem9vbSBzY2FsZVxuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvLyB3b3JrYm9vayB2aWV3IGlkXG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwOSBCcnRDZWxsSWdub3JlRUMgKi9cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxJZ25vcmVFQyhyZWYpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDI0KTtcblx0by53cml0ZV9zaGlmdCg0LCA0KTtcblx0by53cml0ZV9zaGlmdCg0LCAxKTtcblx0d3JpdGVfVW5jaGVja2VkUmZYKHJlZiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40Ljc0OCBCcnRTaGVldFByb3RlY3Rpb24gKi9cbmZ1bmN0aW9uIHdyaXRlX0JydFNoZWV0UHJvdGVjdGlvbihzcCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDE2KjQrMik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgc3AucGFzc3dvcmQgPyBjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxKHNwLnBhc3N3b3JkKSA6IDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDEpOyAvLyB0aGlzIHJlY29yZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gaWYgbm8gcHJvdGVjdGlvblxuXHRbXG5cdFx0W1wib2JqZWN0c1wiLCAgICAgICAgICAgICBmYWxzZV0sIC8vIGZPYmplY3RzXG5cdFx0W1wic2NlbmFyaW9zXCIsICAgICAgICAgICBmYWxzZV0sIC8vIGZTY2VuYXJpb3Ncblx0XHRbXCJmb3JtYXRDZWxsc1wiLCAgICAgICAgICB0cnVlXSwgLy8gZkZvcm1hdENlbGxzXG5cdFx0W1wiZm9ybWF0Q29sdW1uc1wiLCAgICAgICAgdHJ1ZV0sIC8vIGZGb3JtYXRDb2x1bW5zXG5cdFx0W1wiZm9ybWF0Um93c1wiLCAgICAgICAgICAgdHJ1ZV0sIC8vIGZGb3JtYXRSb3dzXG5cdFx0W1wiaW5zZXJ0Q29sdW1uc1wiLCAgICAgICAgdHJ1ZV0sIC8vIGZJbnNlcnRDb2x1bW5zXG5cdFx0W1wiaW5zZXJ0Um93c1wiLCAgICAgICAgICAgdHJ1ZV0sIC8vIGZJbnNlcnRSb3dzXG5cdFx0W1wiaW5zZXJ0SHlwZXJsaW5rc1wiLCAgICAgdHJ1ZV0sIC8vIGZJbnNlcnRIeXBlcmxpbmtzXG5cdFx0W1wiZGVsZXRlQ29sdW1uc1wiLCAgICAgICAgdHJ1ZV0sIC8vIGZEZWxldGVDb2x1bW5zXG5cdFx0W1wiZGVsZXRlUm93c1wiLCAgICAgICAgICAgdHJ1ZV0sIC8vIGZEZWxldGVSb3dzXG5cdFx0W1wic2VsZWN0TG9ja2VkQ2VsbHNcIiwgICBmYWxzZV0sIC8vIGZTZWxMb2NrZWRDZWxsc1xuXHRcdFtcInNvcnRcIiwgICAgICAgICAgICAgICAgIHRydWVdLCAvLyBmU29ydFxuXHRcdFtcImF1dG9GaWx0ZXJcIiwgICAgICAgICAgIHRydWVdLCAvLyBmQXV0b0ZpbHRlclxuXHRcdFtcInBpdm90VGFibGVzXCIsICAgICAgICAgIHRydWVdLCAvLyBmUGl2b3RUYWJsZXNcblx0XHRbXCJzZWxlY3RVbmxvY2tlZENlbGxzXCIsIGZhbHNlXSAgLy8gZlNlbFVubG9ja2VkQ2VsbHNcblx0XS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHtcblx0XHQvKjo6IGlmKG8gPT0gbnVsbCkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdGlmKG5bMV0pIG8ud3JpdGVfc2hpZnQoNCwgc3BbblswXV0gIT0gbnVsbCAmJiAhc3BbblswXV0gPyAxIDogMCk7XG5cdFx0ZWxzZSAgICAgIG8ud3JpdGVfc2hpZnQoNCwgc3BbblswXV0gIT0gbnVsbCAmJiBzcFtuWzBdXSA/IDAgOiAxKTtcblx0fSk7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CcnREVmFsKC8qZGF0YSwgbGVuZ3RoLCBvcHRzKi8pIHtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydERWYWwxNCgvKmRhdGEsIGxlbmd0aCwgb3B0cyovKSB7XG59XG4vKiBbTVMtWExTQl0gMi4xLjcuNjEgV29ya3NoZWV0ICovXG5mdW5jdGlvbiBwYXJzZV93c19iaW4oZGF0YSwgX29wdHMsIGlkeCwgcmVscywgd2IvKjpXQldCUHJvcHMqLywgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdGlmKCFyZWxzKSByZWxzID0geychaWQnOnt9fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0dmFyIHMvKjpXb3Jrc2hlZXQqLyA9IChvcHRzLmRlbnNlID8gW10gOiB7fSk7XG5cblx0dmFyIHJlZjtcblx0dmFyIHJlZmd1ZXNzID0ge3M6IHtyOjIwMDAwMDAsIGM6MjAwMDAwMH0sIGU6IHtyOjAsIGM6MH0gfTtcblxuXHR2YXIgc3RhdGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZSwgZW5kID0gZmFsc2U7XG5cdHZhciByb3csIHAsIGNmLCBSLCBDLCBhZGRyLCBzc3RyLCByciwgY2VsbC8qOkNlbGwqLztcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdG9wdHMuYmlmZiA9IDEyO1xuXHRvcHRzWychcm93J10gPSAwO1xuXG5cdHZhciBhaSA9IDAsIGFmID0gZmFsc2U7XG5cblx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHR2YXIgc2hhcmVkZiA9IHt9O1xuXHR2YXIgc3VwYm9va3MgPSBvcHRzLnN1cGJvb2tzIHx8IC8qOjooKi93Yi8qOjogOmFueSkqLy5zdXBib29rcyB8fCAoW1tdXS8qOmFueSovKTtcblx0c3VwYm9va3Muc2hhcmVkZiA9IHNoYXJlZGY7XG5cdHN1cGJvb2tzLmFycmF5ZiA9IGFycmF5Zjtcblx0c3VwYm9va3MuU2hlZXROYW1lcyA9IHdiLlNoZWV0TmFtZXMgfHwgd2IuU2hlZXRzLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4Lm5hbWU7IH0pO1xuXHRpZighb3B0cy5zdXBib29rcykge1xuXHRcdG9wdHMuc3VwYm9va3MgPSBzdXBib29rcztcblx0XHRpZih3Yi5OYW1lcykgZm9yKHZhciBpID0gMDsgaSA8IHdiLk5hbWVzLmxlbmd0aDsgKytpKSBzdXBib29rc1swXVtpKzFdID0gd2IuTmFtZXNbaV07XG5cdH1cblxuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBbXSwgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXTtcblx0dmFyIHNlZW5jb2wgPSBmYWxzZTtcblxuXHRYTFNCUmVjb3JkRW51bVsweDAwMTBdID0geyBuOlwiQnJ0U2hvcnRSZWFsXCIsIGY6cGFyc2VfQnJ0U2hvcnRSZWFsIH07XG5cblx0dmFyIGNtLCB2bTtcblxuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gd3NfcGFyc2UodmFsLCBSUiwgUlQpIHtcblx0XHRpZihlbmQpIHJldHVybjtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMDk0OiAvKiAnQnJ0V3NEaW0nICovXG5cdFx0XHRcdHJlZiA9IHZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAwMDogLyogJ0JydFJvd0hkcicgKi9cblx0XHRcdFx0cm93ID0gdmFsO1xuXHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSByb3cucikgZW5kPXRydWU7XG5cdFx0XHRcdHJyID0gZW5jb2RlX3JvdyhSID0gcm93LnIpO1xuXHRcdFx0XHRvcHRzWychcm93J10gPSByb3cucjtcblx0XHRcdFx0aWYodmFsLmhpZGRlbiB8fCB2YWwuaHB0IHx8IHZhbC5sZXZlbCAhPSBudWxsKSB7XG5cdFx0XHRcdFx0aWYodmFsLmhwdCkgdmFsLmhweCA9IHB0MnB4KHZhbC5ocHQpO1xuXHRcdFx0XHRcdHJvd2luZm9bdmFsLnJdID0gdmFsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAwMjogLyogJ0JydENlbGxSaycgKi9cblx0XHRcdGNhc2UgMHgwMDAzOiAvKiAnQnJ0Q2VsbEVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDQ6IC8qICdCcnRDZWxsQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMDA1OiAvKiAnQnJ0Q2VsbFJlYWwnICovXG5cdFx0XHRjYXNlIDB4MDAwNjogLyogJ0JydENlbGxTdCcgKi9cblx0XHRcdGNhc2UgMHgwMDA3OiAvKiAnQnJ0Q2VsbElzc3QnICovXG5cdFx0XHRjYXNlIDB4MDAwODogLyogJ0JydEZtbGFTdHJpbmcnICovXG5cdFx0XHRjYXNlIDB4MDAwOTogLyogJ0JydEZtbGFOdW0nICovXG5cdFx0XHRjYXNlIDB4MDAwQTogLyogJ0JydEZtbGFCb29sJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEI6IC8qICdCcnRGbWxhRXJyb3InICovXG5cdFx0XHRjYXNlIDB4MDAwRDogLyogJ0JydFNob3J0UmsnICovXG5cdFx0XHRjYXNlIDB4MDAwRTogLyogJ0JydFNob3J0RXJyb3InICovXG5cdFx0XHRjYXNlIDB4MDAwRjogLyogJ0JydFNob3J0Qm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMDEwOiAvKiAnQnJ0U2hvcnRSZWFsJyAqL1xuXHRcdFx0Y2FzZSAweDAwMTE6IC8qICdCcnRTaG9ydFN0JyAqL1xuXHRcdFx0Y2FzZSAweDAwMTI6IC8qICdCcnRTaG9ydElzc3QnICovXG5cdFx0XHRjYXNlIDB4MDAzRTogLyogJ0JydENlbGxSU3RyaW5nJyAqL1xuXHRcdFx0XHRwID0gKHt0OnZhbFsyXX0vKjphbnkqLyk7XG5cdFx0XHRcdHN3aXRjaCh2YWxbMl0pIHtcblx0XHRcdFx0XHRjYXNlICduJzogcC52ID0gdmFsWzFdOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzJzogc3N0ciA9IHN0cnNbdmFsWzFdXTsgcC52ID0gc3N0ci50OyBwLnIgPSBzc3RyLnI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2InOiBwLnYgPSB2YWxbMV0gPyB0cnVlIDogZmFsc2U7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2UnOiBwLnYgPSB2YWxbMV07IGlmKG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSBwLncgPSBCRXJyW3Audl07IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3N0cic6IHAudCA9ICdzJzsgcC52ID0gdmFsWzFdOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpcyc6IHAudCA9ICdzJzsgcC52ID0gdmFsWzFdLnQ7IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKChjZiA9IHN0eWxlcy5DZWxsWGZbdmFsWzBdLmlTdHlsZVJlZl0pKSBzYWZlX2Zvcm1hdChwLGNmLm51bUZtdElkLG51bGwsb3B0cywgdGhlbWVzLCBzdHlsZXMpO1xuXHRcdFx0XHRDID0gdmFsWzBdLmMgPT0gLTEgPyBDICsgMSA6IHZhbFswXS5jO1xuXHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCFzW1JdKSBzW1JdID0gW107IHNbUl1bQ10gPSBwOyB9XG5cdFx0XHRcdGVsc2Ugc1tlbmNvZGVfY29sKEMpICsgcnJdID0gcDtcblx0XHRcdFx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdFx0XHRcdGFmID0gZmFsc2U7XG5cdFx0XHRcdFx0Zm9yKGFpID0gMDsgYWkgPCBhcnJheWYubGVuZ3RoOyArK2FpKSB7XG5cdFx0XHRcdFx0XHR2YXIgYWlpID0gYXJyYXlmW2FpXTtcblx0XHRcdFx0XHRcdGlmKHJvdy5yID49IGFpaVswXS5zLnIgJiYgcm93LnIgPD0gYWlpWzBdLmUucilcblx0XHRcdFx0XHRcdFx0aWYoQyA+PSBhaWlbMF0ucy5jICYmIEMgPD0gYWlpWzBdLmUuYykge1xuXHRcdFx0XHRcdFx0XHRcdHAuRiA9IGVuY29kZV9yYW5nZShhaWlbMF0pOyBhZiA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoIWFmICYmIHZhbC5sZW5ndGggPiAzKSBwLmYgPSB2YWxbM107XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZihyZWZndWVzcy5zLnIgPiByb3cucikgcmVmZ3Vlc3Mucy5yID0gcm93LnI7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuYyA+IEMpIHJlZmd1ZXNzLnMuYyA9IEM7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLmUuciA8IHJvdy5yKSByZWZndWVzcy5lLnIgPSByb3cucjtcblx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5jIDwgQykgcmVmZ3Vlc3MuZS5jID0gQztcblx0XHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMgJiYgY2YgJiYgcC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh0YWJsZV9mbXRbY2YubnVtRm10SWRdKSkge1xuXHRcdFx0XHRcdHZhciBfZCA9IFNTRl9wYXJzZV9kYXRlX2NvZGUocC52KTsgaWYoX2QpIHsgcC50ID0gJ2QnOyBwLnYgPSBuZXcgRGF0ZShfZC55LCBfZC5tLTEsX2QuZCxfZC5ILF9kLk0sX2QuUyxfZC51KTsgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKGNtKSB7XG5cdFx0XHRcdFx0aWYoY20udHlwZSA9PSAnWExEQVBSJykgcC5EID0gdHJ1ZTtcblx0XHRcdFx0XHRjbSA9IHZvaWQgMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZih2bSkgdm0gPSB2b2lkIDA7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAwMTogLyogJ0JydENlbGxCbGFuaycgKi9cblx0XHRcdGNhc2UgMHgwMDBDOiAvKiAnQnJ0U2hvcnRCbGFuaycgKi9cblx0XHRcdFx0aWYoIW9wdHMuc2hlZXRTdHVicyB8fCBwYXNzKSBicmVhaztcblx0XHRcdFx0cCA9ICh7dDoneicsdjp2b2lkIDB9Lyo6YW55Ki8pO1xuXHRcdFx0XHRDID0gdmFsWzBdLmMgPT0gLTEgPyBDICsgMSA6IHZhbFswXS5jO1xuXHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCFzW1JdKSBzW1JdID0gW107IHNbUl1bQ10gPSBwOyB9XG5cdFx0XHRcdGVsc2Ugc1tlbmNvZGVfY29sKEMpICsgcnJdID0gcDtcblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5yID4gcm93LnIpIHJlZmd1ZXNzLnMuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5zLmMgPiBDKSByZWZndWVzcy5zLmMgPSBDO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLnIgPCByb3cucikgcmVmZ3Vlc3MuZS5yID0gcm93LnI7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLmUuYyA8IEMpIHJlZmd1ZXNzLmUuYyA9IEM7XG5cdFx0XHRcdGlmKGNtKSB7XG5cdFx0XHRcdFx0aWYoY20udHlwZSA9PSAnWExEQVBSJykgcC5EID0gdHJ1ZTtcblx0XHRcdFx0XHRjbSA9IHZvaWQgMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZih2bSkgdm0gPSB2b2lkIDA7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDBCMDogLyogJ0JydE1lcmdlQ2VsbCcgKi9cblx0XHRcdFx0bWVyZ2VzLnB1c2godmFsKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDMxOiB7IC8qICdCcnRDZWxsTWV0YScgKi9cblx0XHRcdFx0Y20gPSAoKG9wdHMueGxtZXRhfHx7fSkuQ2VsbHx8W10pW3ZhbC0xXTtcblx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMUVFOiAvKiAnQnJ0SExpbmsnICovXG5cdFx0XHRcdHZhciByZWwgPSByZWxzWychaWQnXVt2YWwucmVsSWRdO1xuXHRcdFx0XHRpZihyZWwpIHtcblx0XHRcdFx0XHR2YWwuVGFyZ2V0ID0gcmVsLlRhcmdldDtcblx0XHRcdFx0XHRpZih2YWwubG9jKSB2YWwuVGFyZ2V0ICs9IFwiI1wiK3ZhbC5sb2M7XG5cdFx0XHRcdFx0dmFsLlJlbCA9IHJlbDtcblx0XHRcdFx0fSBlbHNlIGlmKHZhbC5yZWxJZCA9PSAnJykge1xuXHRcdFx0XHRcdHZhbC5UYXJnZXQgPSBcIiNcIiArIHZhbC5sb2M7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yKFI9dmFsLnJmeC5zLnI7Ujw9dmFsLnJmeC5lLnI7KytSKSBmb3IoQz12YWwucmZ4LnMuYztDPD12YWwucmZ4LmUuYzsrK0MpIHtcblx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRpZighc1tSXSkgc1tSXSA9IFtdO1xuXHRcdFx0XHRcdFx0aWYoIXNbUl1bQ10pIHNbUl1bQ10gPSB7dDoneicsdjp1bmRlZmluZWR9O1xuXHRcdFx0XHRcdFx0c1tSXVtDXS5sID0gdmFsO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhZGRyID0gZW5jb2RlX2NlbGwoe2M6QyxyOlJ9KTtcblx0XHRcdFx0XHRcdGlmKCFzW2FkZHJdKSBzW2FkZHJdID0ge3Q6J3onLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0XHRcdHNbYWRkcl0ubCA9IHZhbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMUFBOiAvKiAnQnJ0QXJyRm1sYScgKi9cblx0XHRcdFx0aWYoIW9wdHMuY2VsbEZvcm11bGEpIGJyZWFrO1xuXHRcdFx0XHRhcnJheWYucHVzaCh2YWwpO1xuXHRcdFx0XHRjZWxsID0gKChvcHRzLmRlbnNlID8gc1tSXVtDXSA6IHNbZW5jb2RlX2NvbChDKSArIHJyXSkvKjphbnkqLyk7XG5cdFx0XHRcdGNlbGwuZiA9IHN0cmluZ2lmeV9mb3JtdWxhKHZhbFsxXSwgcmVmZ3Vlc3MsIHtyOnJvdy5yLCBjOkN9LCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdGNlbGwuRiA9IGVuY29kZV9yYW5nZSh2YWxbMF0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMUFCOiAvKiAnQnJ0U2hyRm1sYScgKi9cblx0XHRcdFx0aWYoIW9wdHMuY2VsbEZvcm11bGEpIGJyZWFrO1xuXHRcdFx0XHRzaGFyZWRmW2VuY29kZV9jZWxsKHZhbFswXS5zKV0gPSB2YWxbMV07XG5cdFx0XHRcdGNlbGwgPSAob3B0cy5kZW5zZSA/IHNbUl1bQ10gOiBzW2VuY29kZV9jb2woQykgKyBycl0pO1xuXHRcdFx0XHRjZWxsLmYgPSBzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMV0sIHJlZmd1ZXNzLCB7cjpyb3cuciwgYzpDfSwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogaWRlbnRpY2FsIHRvICdDb2xJbmZvJyBpbiBYTFMgKi9cblx0XHRcdGNhc2UgMHgwMDNDOiAvKiAnQnJ0Q29sSW5mbycgKi9cblx0XHRcdFx0aWYoIW9wdHMuY2VsbFN0eWxlcykgYnJlYWs7XG5cdFx0XHRcdHdoaWxlKHZhbC5lID49IHZhbC5zKSB7XG5cdFx0XHRcdFx0Y29saW5mb1t2YWwuZS0tXSA9IHsgd2lkdGg6IHZhbC53LzI1NiwgaGlkZGVuOiAhISh2YWwuZmxhZ3MgJiAweDAxKSwgbGV2ZWw6IHZhbC5sZXZlbCB9O1xuXHRcdFx0XHRcdGlmKCFzZWVuY29sKSB7IHNlZW5jb2wgPSB0cnVlOyBmaW5kX21kd19jb2x3KHZhbC53LzI1Nik7IH1cblx0XHRcdFx0XHRwcm9jZXNzX2NvbChjb2xpbmZvW3ZhbC5lKzFdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwQTE6IC8qICdCcnRCZWdpbkFGaWx0ZXInICovXG5cdFx0XHRcdHNbJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjplbmNvZGVfcmFuZ2UodmFsKSB9O1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxREM6IC8qICdCcnRNYXJnaW5zJyAqL1xuXHRcdFx0XHRzWychbWFyZ2lucyddID0gdmFsO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwOTM6IC8qICdCcnRXc1Byb3AnICovXG5cdFx0XHRcdGlmKCF3Yi5TaGVldHNbaWR4XSkgd2IuU2hlZXRzW2lkeF0gPSB7fTtcblx0XHRcdFx0aWYodmFsLm5hbWUpIHdiLlNoZWV0c1tpZHhdLkNvZGVOYW1lID0gdmFsLm5hbWU7XG5cdFx0XHRcdGlmKHZhbC5hYm92ZSB8fCB2YWwubGVmdCkgc1snIW91dGxpbmUnXSA9IHsgYWJvdmU6IHZhbC5hYm92ZSwgbGVmdDogdmFsLmxlZnQgfTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDg5OiAvKiAnQnJ0QmVnaW5Xc1ZpZXcnICovXG5cdFx0XHRcdGlmKCF3Yi5WaWV3cykgd2IuVmlld3MgPSBbe31dO1xuXHRcdFx0XHRpZighd2IuVmlld3NbMF0pIHdiLlZpZXdzWzBdID0ge307XG5cdFx0XHRcdGlmKHZhbC5SVEwpIHdiLlZpZXdzWzBdLlJUTCA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFFNTogLyogJ0JydFdzRm10SW5mbycgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDQwOiAvKiAnQnJ0RFZhbCcgKi9cblx0XHRcdGNhc2UgMHgwNDFEOiAvKiAnQnJ0RFZhbDE0JyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwOTc6IC8qICdCcnRQYW5lJyAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDk4OiAvKiAnQnJ0U2VsJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUY6IC8qICdCcnRBRmlsdGVyRGF0ZUdyb3VwSXRlbScgKi9cblx0XHRcdGNhc2UgMHgwMjg0OiAvKiAnQnJ0QWN0aXZlWCcgKi9cblx0XHRcdGNhc2UgMHgwMjcxOiAvKiAnQnJ0QmlnTmFtZScgKi9cblx0XHRcdGNhc2UgMHgwMjMyOiAvKiAnQnJ0QmtIaW0nICovXG5cdFx0XHRjYXNlIDB4MDE4QzogLyogJ0JydEJyaycgKi9cblx0XHRcdGNhc2UgMHgwNDU4OiAvKiAnQnJ0Q0ZJY29uJyAqL1xuXHRcdFx0Y2FzZSAweDA0N0E6IC8qICdCcnRDRlJ1bGVFeHQnICovXG5cdFx0XHRjYXNlIDB4MDFENzogLyogJ0JydENGVk8nICovXG5cdFx0XHRjYXNlIDB4MDQxQTogLyogJ0JydENGVk8xNCcgKi9cblx0XHRcdGNhc2UgMHgwMjg5OiAvKiAnQnJ0Q2VsbElnbm9yZUVDJyAqL1xuXHRcdFx0Y2FzZSAweDA0NTE6IC8qICdCcnRDZWxsSWdub3JlRUMxNCcgKi9cblx0XHRcdGNhc2UgMHgwMjREOiAvKiAnQnJ0Q2VsbFNtYXJ0VGFnUHJvcGVydHknICovXG5cdFx0XHRjYXNlIDB4MDI1RjogLyogJ0JydENlbGxXYXRjaCcgKi9cblx0XHRcdGNhc2UgMHgwMjM0OiAvKiAnQnJ0Q29sb3InICovXG5cdFx0XHRjYXNlIDB4MDQxRjogLyogJ0JydENvbG9yMTQnICovXG5cdFx0XHRjYXNlIDB4MDBBODogLyogJ0JydENvbG9yRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUU6IC8qICdCcnRDdXN0b21GaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDQ5QzogLyogJ0JydEN1c3RvbUZpbHRlcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAxRjM6IC8qICdCcnREUmVmJyAqL1xuXHRcdFx0Y2FzZSAweDAxRkI6IC8qICdCcnREWEYnICovXG5cdFx0XHRjYXNlIDB4MDIyNjogLyogJ0JydERyYXdpbmcnICovXG5cdFx0XHRjYXNlIDB4MDBBQjogLyogJ0JydER5bmFtaWNGaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDBBNzogLyogJ0JydEZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwNDk5OiAvKiAnQnJ0RmlsdGVyMTQnICovXG5cdFx0XHRjYXNlIDB4MDBBOTogLyogJ0JydEljb25GaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDQ5RDogLyogJ0JydEljb25GaWx0ZXIxNCcgKi9cblx0XHRcdGNhc2UgMHgwMjI3OiAvKiAnQnJ0TGVnYWN5RHJhd2luZycgKi9cblx0XHRcdGNhc2UgMHgwMjI4OiAvKiAnQnJ0TGVnYWN5RHJhd2luZ0hGJyAqL1xuXHRcdFx0Y2FzZSAweDAyOTU6IC8qICdCcnRMaXN0UGFydCcgKi9cblx0XHRcdGNhc2UgMHgwMjdGOiAvKiAnQnJ0T2xlT2JqZWN0JyAqL1xuXHRcdFx0Y2FzZSAweDAxREU6IC8qICdCcnRQYWdlU2V0dXAnICovXG5cdFx0XHRjYXNlIDB4MDIxOTogLyogJ0JydFBob25ldGljSW5mbycgKi9cblx0XHRcdGNhc2UgMHgwMUREOiAvKiAnQnJ0UHJpbnRPcHRpb25zJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTg6IC8qICdCcnRSYW5nZVByb3RlY3Rpb24nICovXG5cdFx0XHRjYXNlIDB4MDQ0RjogLyogJ0JydFJhbmdlUHJvdGVjdGlvbjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAyQTg6IC8qICdCcnRSYW5nZVByb3RlY3Rpb25Jc28nICovXG5cdFx0XHRjYXNlIDB4MDQ1MDogLyogJ0JydFJhbmdlUHJvdGVjdGlvbklzbzE0JyAqL1xuXHRcdFx0Y2FzZSAweDA0MDA6IC8qICdCcnRSd0Rlc2NlbnQnICovXG5cdFx0XHRjYXNlIDB4MDI5NzogLyogJ0JydFNoZWV0Q2FsY1Byb3AnICovXG5cdFx0XHRjYXNlIDB4MDIxNzogLyogJ0JydFNoZWV0UHJvdGVjdGlvbicgKi9cblx0XHRcdGNhc2UgMHgwMkE2OiAvKiAnQnJ0U2hlZXRQcm90ZWN0aW9uSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDAxRjg6IC8qICdCcnRTbGMnICovXG5cdFx0XHRjYXNlIDB4MDQxMzogLyogJ0JydFNwYXJrbGluZScgKi9cblx0XHRcdGNhc2UgMHgwMUFDOiAvKiAnQnJ0VGFibGUnICovXG5cdFx0XHRjYXNlIDB4MDBBQTogLyogJ0JydFRvcDEwRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDBDMDA6IC8qICdCcnRVaWQnICovXG5cdFx0XHRjYXNlIDB4MDAzMjogLyogJ0JydFZhbHVlTWV0YScgKi9cblx0XHRcdGNhc2UgMHgwODE2OiAvKiAnQnJ0V2ViRXh0ZW5zaW9uJyAqL1xuXHRcdFx0Y2FzZSAweDA0MTU6IC8qICdCcnRXc0ZtdEluZm9FeDE0JyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNjogLyogJ0JydEFDRW5kJyAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUlIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG5cblx0ZGVsZXRlIG9wdHMuc3VwYm9va3M7XG5cdGRlbGV0ZSBvcHRzWychcm93J107XG5cblx0aWYoIXNbXCIhcmVmXCJdICYmIChyZWZndWVzcy5zLnIgPCAyMDAwMDAwIHx8IHJlZiAmJiAocmVmLmUuciA+IDAgfHwgcmVmLmUuYyA+IDAgfHwgcmVmLnMuciA+IDAgfHwgcmVmLnMuYyA+IDApKSkgc1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmIHx8IHJlZmd1ZXNzKTtcblx0aWYob3B0cy5zaGVldFJvd3MgJiYgc1tcIiFyZWZcIl0pIHtcblx0XHR2YXIgdG1wcmVmID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc1tcIiFyZWZcIl0pO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzIDw9ICt0bXByZWYuZS5yKSB7XG5cdFx0XHR0bXByZWYuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0aWYodG1wcmVmLmUuciA+IHJlZmd1ZXNzLmUucikgdG1wcmVmLmUuciA9IHJlZmd1ZXNzLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPCB0bXByZWYucy5yKSB0bXByZWYucy5yID0gdG1wcmVmLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLmMgPiByZWZndWVzcy5lLmMpIHRtcHJlZi5lLmMgPSByZWZndWVzcy5lLmM7XG5cdFx0XHRpZih0bXByZWYuZS5jIDwgdG1wcmVmLnMuYykgdG1wcmVmLnMuYyA9IHRtcHJlZi5lLmM7XG5cdFx0XHRzW1wiIWZ1bGxyZWZcIl0gPSBzW1wiIXJlZlwiXTtcblx0XHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHRtcHJlZik7XG5cdFx0fVxuXHR9XG5cdGlmKG1lcmdlcy5sZW5ndGggPiAwKSBzW1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0aWYoY29saW5mby5sZW5ndGggPiAwKSBzW1wiIWNvbHNcIl0gPSBjb2xpbmZvO1xuXHRpZihyb3dpbmZvLmxlbmd0aCA+IDApIHNbXCIhcm93c1wiXSA9IHJvd2luZm87XG5cdHJldHVybiBzO1xufVxuXG4vKiBUT0RPOiBzb21ldGhpbmcgdXNlZnVsIC0tIHRoaXMgaXMgYSBzdHViICovXG5mdW5jdGlvbiB3cml0ZV93c19iaW5fY2VsbChiYS8qOkJ1ZkFycmF5Ki8sIGNlbGwvKjpDZWxsKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCBvcHRzLCB3cy8qOldvcmtzaGVldCovLCBsYXN0X3NlZW4vKjpib29sZWFuKi8pLyo6Ym9vbGVhbiovIHtcblx0aWYoY2VsbC52ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcblx0dmFyIHZ2ID0gXCJcIjtcblx0c3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ2InOiB2diA9IGNlbGwudiA/IFwiMVwiIDogXCIwXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOiAvLyBubyBCcnRDZWxsRGF0ZSA6KFxuXHRcdFx0Y2VsbCA9IGR1cChjZWxsKTtcblx0XHRcdGNlbGwueiA9IGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0Y2VsbC52ID0gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSk7IGNlbGwudCA9ICduJztcblx0XHRcdGJyZWFrO1xuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICduJzogY2FzZSAnZSc6IHZ2ID0gJycrY2VsbC52OyBicmVhaztcblx0XHRkZWZhdWx0OiB2diA9IGNlbGwudjsgYnJlYWs7XG5cdH1cblx0dmFyIG8vKjphbnkqLyA9ICh7cjpSLCBjOkN9Lyo6YW55Ki8pO1xuXHQvKiBUT0RPOiBjZWxsIHN0eWxlICovXG5cdG8ucyA9IGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGlmKGNlbGwubCkgd3NbJyFsaW5rcyddLnB1c2goW2VuY29kZV9jZWxsKG8pLCBjZWxsLmxdKTtcblx0aWYoY2VsbC5jKSB3c1snIWNvbW1lbnRzJ10ucHVzaChbZW5jb2RlX2NlbGwobyksIGNlbGwuY10pO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHRpZihvcHRzLmJvb2tTU1QpIHtcblx0XHRcdFx0dnYgPSBnZXRfc3N0X2lkKG9wdHMuU3RyaW5ncywgKGNlbGwudi8qOmFueSovKSwgb3B0cy5yZXZTdHJpbmdzKTtcblx0XHRcdFx0by50ID0gXCJzXCI7IG8udiA9IHZ2O1xuXHRcdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDEyIC8qIEJydFNob3J0SXNzdCAqLywgd3JpdGVfQnJ0U2hvcnRJc3N0KGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwNyAvKiBCcnRDZWxsSXNzdCAqLywgd3JpdGVfQnJ0Q2VsbElzc3QoY2VsbCwgbykpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0by50ID0gXCJzdHJcIjtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAxMSAvKiBCcnRTaG9ydFN0ICovLCB3cml0ZV9CcnRTaG9ydFN0KGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwNiAvKiBCcnRDZWxsU3QgKi8sIHdyaXRlX0JydENlbGxTdChjZWxsLCBvKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlICduJzpcblx0XHRcdC8qIFRPRE86IGRldGVybWluZSB0aHJlc2hvbGQgZm9yIFJlYWwgdnMgUksgKi9cblx0XHRcdGlmKGNlbGwudiA9PSAoY2VsbC52IHwgMCkgJiYgY2VsbC52ID4gLTEwMDAgJiYgY2VsbC52IDwgMTAwMCkge1xuXHRcdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDBEIC8qIEJydFNob3J0UmsgKi8sIHdyaXRlX0JydFNob3J0UmsoY2VsbCwgbykpO1xuXHRcdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDAyIC8qIEJydENlbGxSayAqLywgd3JpdGVfQnJ0Q2VsbFJrKGNlbGwsIG8pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTAgLyogQnJ0U2hvcnRSZWFsICovLCB3cml0ZV9CcnRTaG9ydFJlYWwoY2VsbCwgbykpO1xuXHRcdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDA1IC8qIEJydENlbGxSZWFsICovLCB3cml0ZV9CcnRDZWxsUmVhbChjZWxsLCBvKSk7XG5cdFx0XHR9IHJldHVybiB0cnVlO1xuXHRcdGNhc2UgJ2InOlxuXHRcdFx0by50ID0gXCJiXCI7XG5cdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDBGIC8qIEJydFNob3J0Qm9vbCAqLywgd3JpdGVfQnJ0U2hvcnRCb29sKGNlbGwsIG8pKTtcblx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDQgLyogQnJ0Q2VsbEJvb2wgKi8sIHdyaXRlX0JydENlbGxCb29sKGNlbGwsIG8pKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdGNhc2UgJ2UnOlxuXHRcdFx0by50ID0gXCJlXCI7XG5cdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDBFIC8qIEJydFNob3J0RXJyb3IgKi8sIHdyaXRlX0JydFNob3J0RXJyb3IoY2VsbCwgbykpO1xuXHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMyAvKiBCcnRDZWxsRXJyb3IgKi8sIHdyaXRlX0JydENlbGxFcnJvcihjZWxsLCBvKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDBDIC8qIEJydFNob3J0QmxhbmsgKi8sIHdyaXRlX0JydFNob3J0QmxhbmsoY2VsbCwgbykpO1xuXHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDAxIC8qIEJydENlbGxCbGFuayAqLywgd3JpdGVfQnJ0Q2VsbEJsYW5rKGNlbGwsIG8pKTtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NFTExUQUJMRShiYSwgd3MvKjpXb3Jrc2hlZXQqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMvKjo6LCB3YjpXb3JrYm9vayovKSB7XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKSwgcmVmLCByciA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTEgLyogQnJ0QmVnaW5TaGVldERhdGEgKi8pO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIGNhcCA9IHJhbmdlLmUucjtcblx0aWYod3NbJyFyb3dzJ10pIGNhcCA9IE1hdGgubWF4KHJhbmdlLmUuciwgd3NbJyFyb3dzJ10ubGVuZ3RoIC0gMSk7XG5cdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSBjYXA7ICsrUikge1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHQvKiBbQUNDRUxMVEFCTEVdICovXG5cdFx0LyogQnJ0Um93SGRyICovXG5cdFx0d3JpdGVfcm93X2hlYWRlcihiYSwgd3MsIHJhbmdlLCBSKTtcblx0XHR2YXIgbGFzdF9zZWVuID0gZmFsc2U7XG5cdFx0aWYoUiA8PSByYW5nZS5lLnIpIGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0LyogKjE2Mzg0Q0VMTCAqL1xuXHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRpZighY2VsbCkgeyBsYXN0X3NlZW4gPSBmYWxzZTsgY29udGludWU7IH1cblx0XHRcdC8qIHdyaXRlIGNlbGwgKi9cblx0XHRcdGxhc3Rfc2VlbiA9IHdyaXRlX3dzX2Jpbl9jZWxsKGJhLCBjZWxsLCBSLCBDLCBvcHRzLCB3cywgbGFzdF9zZWVuKTtcblx0XHR9XG5cdH1cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTIgLyogQnJ0RW5kU2hlZXREYXRhICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfTUVSR0VDRUxMUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLykge1xuXHRpZighd3MgfHwgIXdzWychbWVyZ2VzJ10pIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwQjEgLyogQnJ0QmVnaW5NZXJnZUNlbGxzICovLCB3cml0ZV9CcnRCZWdpbk1lcmdlQ2VsbHMod3NbJyFtZXJnZXMnXS5sZW5ndGgpKTtcblx0d3NbJyFtZXJnZXMnXS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsgd3JpdGVfcmVjb3JkKGJhLCAweDAwQjAgLyogQnJ0TWVyZ2VDZWxsICovLCB3cml0ZV9CcnRNZXJnZUNlbGwobSkpOyB9KTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwQjIgLyogQnJ0RW5kTWVyZ2VDZWxscyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NPTElORk9TKGJhLCB3cy8qOldvcmtzaGVldCovLyo6OiwgaWR4Om51bWJlciwgb3B0cywgd2I6V29ya2Jvb2sqLykge1xuXHRpZighd3MgfHwgIXdzWychY29scyddKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMTg2IC8qIEJydEJlZ2luQ29sSW5mb3MgKi8pO1xuXHR3c1snIWNvbHMnXS5mb3JFYWNoKGZ1bmN0aW9uKG0sIGkpIHsgaWYobSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwM0MgLyogJ0JydENvbEluZm8nICovLCB3cml0ZV9CcnRDb2xJbmZvKGksIG0pKTsgfSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMTg3IC8qIEJydEVuZENvbEluZm9zICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfSUdOT1JFRUNTKGJhLCB3cy8qOldvcmtzaGVldCovKSB7XG5cdGlmKCF3cyB8fCAhd3NbJyFyZWYnXSkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI4OCAvKiBCcnRCZWdpbkNlbGxJZ25vcmVFQ3MgKi8pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI4OSAvKiBCcnRDZWxsSWdub3JlRUMgKi8sIHdyaXRlX0JydENlbGxJZ25vcmVFQyhzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI4QSAvKiBCcnRFbmRDZWxsSWdub3JlRUNzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfSExJTktTKGJhLCB3cy8qOldvcmtzaGVldCovLCByZWxzKSB7XG5cdC8qICpCcnRITGluayAqL1xuXHR3c1snIWxpbmtzJ10uZm9yRWFjaChmdW5jdGlvbihsKSB7XG5cdFx0aWYoIWxbMV0uVGFyZ2V0KSByZXR1cm47XG5cdFx0dmFyIHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBsWzFdLlRhcmdldC5yZXBsYWNlKC8jLiokLywgXCJcIiksIFJFTFMuSExJTkspO1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMUVFIC8qIEJydEhMaW5rICovLCB3cml0ZV9CcnRITGluayhsLCBySWQpKTtcblx0fSk7XG5cdGRlbGV0ZSB3c1snIWxpbmtzJ107XG59XG5mdW5jdGlvbiB3cml0ZV9MRUdBQ1lEUkFXSU5HKGJhLCB3cy8qOldvcmtzaGVldCovLCBpZHgvKjpudW1iZXIqLywgcmVscykge1xuXHQvKiBbQnJ0TGVnYWN5RHJhd2luZ10gKi9cblx0aWYod3NbJyFjb21tZW50cyddLmxlbmd0aCA+IDApIHtcblx0XHR2YXIgcklkID0gYWRkX3JlbHMocmVscywgLTEsIFwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZ1wiICsgKGlkeCsxKSArIFwiLnZtbFwiLCBSRUxTLlZNTCk7XG5cdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAyMjcgLyogQnJ0TGVnYWN5RHJhd2luZyAqLywgd3JpdGVfUmVsSUQoXCJySWRcIiArIHJJZCkpO1xuXHRcdHdzWychbGVnYWN5J10gPSBySWQ7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfQVVUT0ZJTFRFUihiYSwgd3MsIHdiLCBpZHgpIHtcblx0aWYoIXdzWychYXV0b2ZpbHRlciddKSByZXR1cm47XG5cdHZhciBkYXRhID0gd3NbJyFhdXRvZmlsdGVyJ107XG5cdHZhciByZWYgPSB0eXBlb2YgZGF0YS5yZWYgPT09IFwic3RyaW5nXCIgPyBkYXRhLnJlZiA6IGVuY29kZV9yYW5nZShkYXRhLnJlZik7XG5cblx0LyogVXBkYXRlIEZpbHRlckRhdGFiYXNlIGRlZmluZWQgbmFtZSBmb3IgdGhlIHdvcmtzaGVldCAqL1xuXHRpZighd2IuV29ya2Jvb2spIHdiLldvcmtib29rID0gKHtTaGVldHM6W119Lyo6YW55Ki8pO1xuXHRpZighd2IuV29ya2Jvb2suTmFtZXMpIHdiLldvcmtib29rLk5hbWVzID0gW107XG5cdHZhciBuYW1lcy8qOiBBcnJheTxhbnk+ICovID0gd2IuV29ya2Jvb2suTmFtZXM7XG5cdHZhciByYW5nZSA9IGRlY29kZV9yYW5nZShyZWYpO1xuXHRpZihyYW5nZS5zLnIgPT0gcmFuZ2UuZS5yKSB7IHJhbmdlLmUuciA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pLmUucjsgcmVmID0gZW5jb2RlX3JhbmdlKHJhbmdlKTsgfVxuXHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbmFtZSA9IG5hbWVzW2ldO1xuXHRcdGlmKG5hbWUuTmFtZSAhPSAnX3hsbm0uX0ZpbHRlckRhdGFiYXNlJykgY29udGludWU7XG5cdFx0aWYobmFtZS5TaGVldCAhPSBpZHgpIGNvbnRpbnVlO1xuXHRcdG5hbWUuUmVmID0gXCInXCIgKyB3Yi5TaGVldE5hbWVzW2lkeF0gKyBcIichXCIgKyByZWY7IGJyZWFrO1xuXHR9XG5cdGlmKGkgPT0gbmFtZXMubGVuZ3RoKSBuYW1lcy5wdXNoKHsgTmFtZTogJ194bG5tLl9GaWx0ZXJEYXRhYmFzZScsIFNoZWV0OiBpZHgsIFJlZjogXCInXCIgKyB3Yi5TaGVldE5hbWVzW2lkeF0gKyBcIichXCIgKyByZWYgIH0pO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEExIC8qIEJydEJlZ2luQUZpbHRlciAqLywgd3JpdGVfVW5jaGVja2VkUmZYKHNhZmVfZGVjb2RlX3JhbmdlKHJlZikpKTtcblx0LyogKkZJTFRFUkNPTFVNTiAqL1xuXHQvKiBbU09SVFNUQVRFXSAqL1xuXHQvKiBCcnRFbmRBRmlsdGVyICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEEyIC8qIEJydEVuZEFGaWx0ZXIgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9XU1ZJRVdTMihiYSwgd3MsIFdvcmtib29rKSB7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg1IC8qIEJydEJlZ2luV3NWaWV3cyAqLyk7XG5cdHsgLyogMSpXU1ZJRVcyICovXG5cdFx0LyogW0FDVUlEXSAqL1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMDg5IC8qIEJydEJlZ2luV3NWaWV3ICovLCB3cml0ZV9CcnRCZWdpbldzVmlldyh3cywgV29ya2Jvb2spKTtcblx0XHQvKiBbQnJ0UGFuZV0gKi9cblx0XHQvKiAqNEJydFNlbCAqL1xuXHRcdC8qICo0U1hTRUxFQ1QgKi9cblx0XHQvKiAqRlJUICovXG5cdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOEEgLyogQnJ0RW5kV3NWaWV3ICovKTtcblx0fVxuXHQvKiAqRlJUICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg2IC8qIEJydEVuZFdzVmlld3MgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9XU0ZNVElORk8oLyo6OmJhLCB3cyovKSB7XG5cdC8qIFtBQ1dTRk1USU5GT10gKi9cblx0Ly8gd3JpdGVfcmVjb3JkKGJhLCAweDAxRTUgLyogQnJ0V3NGbXRJbmZvICovLCB3cml0ZV9CcnRXc0ZtdEluZm8od3MpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfU0hFRVRQUk9URUNUKGJhLCB3cykge1xuXHRpZighd3NbJyFwcm90ZWN0J10pIHJldHVybjtcblx0LyogW0JydFNoZWV0UHJvdGVjdGlvbklzb10gKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyMTcgLyogQnJ0U2hlZXRQcm90ZWN0aW9uICovLCB3cml0ZV9CcnRTaGVldFByb3RlY3Rpb24od3NbJyFwcm90ZWN0J10pKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmluKGlkeC8qOm51bWJlciovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBzID0gd2IuU2hlZXROYW1lc1tpZHhdLCB3cyA9IHdiLlNoZWV0c1tzXSB8fCB7fTtcblx0dmFyIGMvKjpzdHJpbmcqLyA9IHM7IHRyeSB7IGlmKHdiICYmIHdiLldvcmtib29rKSBjID0gd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uQ29kZU5hbWUgfHwgYzsgfSBjYXRjaChlKSB7fVxuXHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKTtcblx0aWYoci5lLmMgPiAweDNGRkYgfHwgci5lLnIgPiAweEZGRkZGKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlJhbmdlIFwiICsgKHdzWychcmVmJ10gfHwgXCJBMVwiKSArIFwiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOlhGRDEwNDg1NzZcIik7XG5cdFx0ci5lLmMgPSBNYXRoLm1pbihyLmUuYywgMHgzRkZGKTtcblx0XHRyLmUuciA9IE1hdGgubWluKHIuZS5jLCAweEZGRkZGKTtcblx0fVxuXHR3c1snIWxpbmtzJ10gPSBbXTtcblx0LyogcGFzc2VkIGJhY2sgdG8gd3JpdGVfemlwIGFuZCByZW1vdmVkIHRoZXJlICovXG5cdHdzWychY29tbWVudHMnXSA9IFtdO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MSAvKiBCcnRCZWdpblNoZWV0ICovKTtcblx0aWYod2IudmJhcmF3IHx8IHdzWychb3V0bGluZSddKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDA5MyAvKiBCcnRXc1Byb3AgKi8sIHdyaXRlX0JydFdzUHJvcChjLCB3c1snIW91dGxpbmUnXSkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5NCAvKiBCcnRXc0RpbSAqLywgd3JpdGVfQnJ0V3NEaW0ocikpO1xuXHR3cml0ZV9XU1ZJRVdTMihiYSwgd3MsIHdiLldvcmtib29rKTtcblx0d3JpdGVfV1NGTVRJTkZPKGJhLCB3cyk7XG5cdHdyaXRlX0NPTElORk9TKGJhLCB3cywgaWR4LCBvcHRzLCB3Yik7XG5cdHdyaXRlX0NFTExUQUJMRShiYSwgd3MsIGlkeCwgb3B0cywgd2IpO1xuXHQvKiBbQnJ0U2hlZXRDYWxjUHJvcF0gKi9cblx0d3JpdGVfU0hFRVRQUk9URUNUKGJhLCB3cyk7XG5cdC8qICooW0JydFJhbmdlUHJvdGVjdGlvbklzb10gQnJ0UmFuZ2VQcm90ZWN0aW9uKSAqL1xuXHQvKiBbU0NFTk1BTl0gKi9cblx0d3JpdGVfQVVUT0ZJTFRFUihiYSwgd3MsIHdiLCBpZHgpO1xuXHQvKiBbU09SVFNUQVRFXSAqL1xuXHQvKiBbRENPTl0gKi9cblx0LyogW1VTRVJTSFZJRVdTXSAqL1xuXHR3cml0ZV9NRVJHRUNFTExTKGJhLCB3cyk7XG5cdC8qIFtCcnRQaG9uZXRpY0luZm9dICovXG5cdC8qICpDT05ESVRJT05BTEZPUk1BVFRJTkcgKi9cblx0LyogW0RWQUxTXSAqL1xuXHR3cml0ZV9ITElOS1MoYmEsIHdzLCByZWxzKTtcblx0LyogW0JydFByaW50T3B0aW9uc10gKi9cblx0aWYod3NbJyFtYXJnaW5zJ10pIHdyaXRlX3JlY29yZChiYSwgMHgwMURDIC8qIEJydE1hcmdpbnMgKi8sIHdyaXRlX0JydE1hcmdpbnMod3NbJyFtYXJnaW5zJ10pKTtcblx0LyogW0JydFBhZ2VTZXR1cF0gKi9cblx0LyogW0hFQURFUkZPT1RFUl0gKi9cblx0LyogW1JXQlJLXSAqL1xuXHQvKiBbQ09MQlJLXSAqL1xuXHQvKiAqQnJ0QmlnTmFtZSAqL1xuXHQvKiBbQ0VMTFdBVENIRVNdICovXG5cdGlmKCFvcHRzIHx8IG9wdHMuaWdub3JlRUMgfHwgKG9wdHMuaWdub3JlRUMgPT0gKHZvaWQgMCkpKSB3cml0ZV9JR05PUkVFQ1MoYmEsIHdzKTtcblx0LyogW1NNQVJUVEFHU10gKi9cblx0LyogW0JydERyYXdpbmddICovXG5cdHdyaXRlX0xFR0FDWURSQVdJTkcoYmEsIHdzLCBpZHgsIHJlbHMpO1xuXHQvKiBbQnJ0TGVnYWN5RHJhd2luZ0hGXSAqL1xuXHQvKiBbQnJ0QmtIaW1dICovXG5cdC8qIFtPTEVPQkpFQ1RTXSAqL1xuXHQvKiBbQUNUSVZFWENPTlRST0xTXSAqL1xuXHQvKiBbV0VCUFVCSVRFTVNdICovXG5cdC8qIFtMSVNUUEFSVFNdICovXG5cdC8qIEZSVFdPUktTSEVFVCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MiAvKiBCcnRFbmRTaGVldCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0NhY2hlKGRhdGEvKjpzdHJpbmcqLykvKjpbQXJyYXk8bnVtYmVyfHN0cmluZz4sIHN0cmluZywgP3N0cmluZ10qLyB7XG5cdHZhciBjb2wvKjpBcnJheTxudW1iZXJ8c3RyaW5nPiovID0gW107XG5cdHZhciBudW0gPSBkYXRhLm1hdGNoKC9ePGM6bnVtQ2FjaGU+Lyk7XG5cdHZhciBmO1xuXG5cdC8qIDIxLjIuMi4xNTAgcHQgQ1RfTnVtVmFsICovXG5cdChkYXRhLm1hdGNoKC88YzpwdCBpZHg9XCIoXFxkKilcIj4oLio/KTxcXC9jOnB0Pi9tZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHB0KSB7XG5cdFx0dmFyIHEgPSBwdC5tYXRjaCgvPGM6cHQgaWR4PVwiKFxcZCo/KVwiPjxjOnY+KC4qKTxcXC9jOnY+PFxcL2M6cHQ+Lyk7XG5cdFx0aWYoIXEpIHJldHVybjtcblx0XHRjb2xbK3FbMV1dID0gbnVtID8gK3FbMl0gOiBxWzJdO1xuXHR9KTtcblxuXHQvKiAyMS4yLjIuNzEgZm9ybWF0Q29kZSBDVF9Yc3RyaW5nICovXG5cdHZhciBuZiA9IHVuZXNjYXBleG1sKChkYXRhLm1hdGNoKC88Yzpmb3JtYXRDb2RlPihbXFxzXFxTXSo/KTxcXC9jOmZvcm1hdENvZGU+LykgfHwgW1wiXCIsXCJHZW5lcmFsXCJdKVsxXSk7XG5cblx0KGRhdGEubWF0Y2goLzxjOmY+KC4qPyk8XFwvYzpmPi9tZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEYpIHsgZiA9IEYucmVwbGFjZSgvPC4qPz4vZyxcIlwiKTsgfSk7XG5cblx0cmV0dXJuIFtjb2wsIG5mLCBmXTtcbn1cblxuLyogMjEuMiBEcmF3aW5nTUwgLSBDaGFydHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2NoYXJ0KGRhdGEvKjo/c3RyaW5nKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cywgcmVscywgd2IsIGNzaGVldCkge1xuXHR2YXIgY3MvKjpXb3Jrc2hlZXQqLyA9ICgoY3NoZWV0IHx8IHtcIiF0eXBlXCI6XCJjaGFydFwifSkvKjphbnkqLyk7XG5cdGlmKCFkYXRhKSByZXR1cm4gY3NoZWV0O1xuXHQvKiAyMS4yLjIuMjcgY2hhcnQgQ1RfQ2hhcnQgKi9cblxuXHR2YXIgQyA9IDAsIFIgPSAwLCBjb2wgPSBcIkFcIjtcblx0dmFyIHJlZmd1ZXNzID0ge3M6IHtyOjIwMDAwMDAsIGM6MjAwMDAwMH0sIGU6IHtyOjAsIGM6MH0gfTtcblxuXHQvKiAyMS4yLjIuMTIwIG51bUNhY2hlIENUX051bURhdGEgKi9cblx0KGRhdGEubWF0Y2goLzxjOm51bUNhY2hlPltcXHNcXFNdKj88XFwvYzpudW1DYWNoZT4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuYykge1xuXHRcdHZhciBjYWNoZSA9IHBhcnNlX0NhY2hlKG5jKTtcblx0XHRyZWZndWVzcy5zLnIgPSByZWZndWVzcy5zLmMgPSAwO1xuXHRcdHJlZmd1ZXNzLmUuYyA9IEM7XG5cdFx0Y29sID0gZW5jb2RlX2NvbChDKTtcblx0XHRjYWNoZVswXS5mb3JFYWNoKGZ1bmN0aW9uKG4saSkge1xuXHRcdFx0Y3NbY29sICsgZW5jb2RlX3JvdyhpKV0gPSB7dDonbicsIHY6biwgejpjYWNoZVsxXSB9O1xuXHRcdFx0UiA9IGk7XG5cdFx0fSk7XG5cdFx0aWYocmVmZ3Vlc3MuZS5yIDwgUikgcmVmZ3Vlc3MuZS5yID0gUjtcblx0XHQrK0M7XG5cdH0pO1xuXHRpZihDID4gMCkgY3NbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0cmV0dXJuIGNzO1xufVxuLyogMTguMyBXb3Jrc2hlZXRzIGFsc28gY292ZXJzIENoYXJ0c2hlZXRzICovXG5mdW5jdGlvbiBwYXJzZV9jc194bWwoZGF0YS8qOj9zdHJpbmcqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMsIHdiLyo6OiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0LyogMTguMy4xLjEyIGNoYXJ0c2hlZXQgQ1RfQ2hhcnRTaGVldCAqL1xuXHRpZighcmVscykgcmVscyA9IHsnIWlkJzp7fX07XG5cdHZhciBzID0gKHsnIXR5cGUnOlwiY2hhcnRcIiwgJyFkcmF3ZWwnOm51bGwsICchcmVsJzpcIlwifS8qOmFueSovKTtcblx0dmFyIG07XG5cblx0LyogMTguMy4xLjgzIHNoZWV0UHIgQ1RfQ2hhcnRzaGVldFByICovXG5cdHZhciBzaGVldFByID0gZGF0YS5tYXRjaChzaGVldHBycmVnZXgpO1xuXHRpZihzaGVldFByKSBwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByWzBdLCBzLCB3YiwgaWR4KTtcblxuXHQvKiAxOC4zLjEuMzYgZHJhd2luZyBDVF9EcmF3aW5nICovXG5cdGlmKChtID0gZGF0YS5tYXRjaCgvZHJhd2luZyByOmlkPVwiKC4qPylcIi8pKSkgc1snIXJlbCddID0gbVsxXTtcblxuXHRpZihyZWxzWychaWQnXVtzWychcmVsJ11dKSBzWychZHJhd2VsJ10gPSByZWxzWychaWQnXVtzWychcmVsJ11dO1xuXHRyZXR1cm4gcztcbn1cbmZ1bmN0aW9uIHdyaXRlX2NzX3htbChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdjaGFydHNoZWV0JywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TX21haW5bMF0sXG5cdFx0J3htbG5zOnInOiBYTUxOUy5yXG5cdH0pXTtcblx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoXCJkcmF3aW5nXCIsIG51bGwsIHtcInI6aWRcIjogXCJySWQxXCJ9KTtcblx0YWRkX3JlbHMocmVscywgLTEsIFwiLi4vZHJhd2luZ3MvZHJhd2luZ1wiICsgKGlkeCsxKSArIFwiLnhtbFwiLCBSRUxTLkRSQVcpO1xuXHRpZihvLmxlbmd0aD4yKSB7IG9bby5sZW5ndGhdID0gKCc8L2NoYXJ0c2hlZXQ+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMzEgQnJ0Q3NQcm9wICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDc1Byb3AoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0ZGF0YS5sICs9IDEwO1xuXHR2YXIgbmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLCBsZW5ndGggLSAxMCk7XG5cdHJldHVybiB7IG5hbWU6IG5hbWUgfTtcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjcgQ2hhcnQgU2hlZXQgKi9cbmZ1bmN0aW9uIHBhcnNlX2NzX2JpbihkYXRhLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgcmVscywgd2IvKjo6LCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHRpZighcmVscykgcmVscyA9IHsnIWlkJzp7fX07XG5cdHZhciBzID0geychdHlwZSc6XCJjaGFydFwiLCAnIWRyYXdlbCc6bnVsbCwgJyFyZWwnOlwiXCJ9O1xuXHR2YXIgc3RhdGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGNzX3BhcnNlKHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblxuXHRcdFx0Y2FzZSAweDAyMjY6IC8qICdCcnREcmF3aW5nJyAqL1xuXHRcdFx0XHRzWychcmVsJ10gPSB2YWw7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDI4QjogLyogJ0JydENzUHJvcCcgKi9cblx0XHRcdFx0aWYoIXdiLlNoZWV0c1tpZHhdKSB3Yi5TaGVldHNbaWR4XSA9IHt9O1xuXHRcdFx0XHRpZih2YWwubmFtZSkgd2IuU2hlZXRzW2lkeF0uQ29kZU5hbWUgPSB2YWwubmFtZTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMjMyOiAvKiAnQnJ0QmtIaW0nICovXG5cdFx0XHRjYXNlIDB4MDI4QzogLyogJ0JydENzUGFnZVNldHVwJyAqL1xuXHRcdFx0Y2FzZSAweDAyOUQ6IC8qICdCcnRDc1Byb3RlY3Rpb24nICovXG5cdFx0XHRjYXNlIDB4MDJBNzogLyogJ0JydENzUHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwMjI3OiAvKiAnQnJ0TGVnYWN5RHJhd2luZycgKi9cblx0XHRcdGNhc2UgMHgwMjI4OiAvKiAnQnJ0TGVnYWN5RHJhd2luZ0hGJyAqL1xuXHRcdFx0Y2FzZSAweDAxREM6IC8qICdCcnRNYXJnaW5zJyAqL1xuXHRcdFx0Y2FzZSAweDBDMDA6IC8qICdCcnRVaWQnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogJ0JydEZSVEVuZCcgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI1OiAvKiAnQnJ0QUNCZWdpbicgKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQgPiAwKSBzdGF0ZS5wdXNoKFJUKTtcblx0XHRcdFx0ZWxzZSBpZihSLlQgPCAwKSBzdGF0ZS5wb3AoKTtcblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9LCBvcHRzKTtcblxuXHRpZihyZWxzWychaWQnXVtzWychcmVsJ11dKSBzWychZHJhd2VsJ10gPSByZWxzWychaWQnXVtzWychcmVsJ11dO1xuXHRyZXR1cm4gcztcbn1cbmZ1bmN0aW9uIHdyaXRlX2NzX2JpbigvKjo6aWR4Om51bWJlciwgb3B0cywgd2I6V29ya2Jvb2ssIHJlbHMqLykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODEgLyogQnJ0QmVnaW5TaGVldCAqLyk7XG5cdC8qIFtCcnRDc1Byb3BdICovXG5cdC8qIENTVklFV1MgKi9cblx0LyogW1tCcnRDc1Byb3RlY3Rpb25Jc29dIEJydENzUHJvdGVjdGlvbl0gKi9cblx0LyogW1VTRVJDU1ZJRVdTXSAqL1xuXHQvKiBbQnJ0TWFyZ2luc10gKi9cblx0LyogW0JydENzUGFnZVNldHVwXSAqL1xuXHQvKiBbSEVBREVSRk9PVEVSXSAqL1xuXHQvKiBCcnREcmF3aW5nICovXG5cdC8qIFtCcnRMZWdhY3lEcmF3aW5nXSAqL1xuXHQvKiBbQnJ0TGVnYWN5RHJhd2luZ0hGXSAqL1xuXHQvKiBbQnJ0QmtIaW1dICovXG5cdC8qIFtXRUJQVUJJVEVNU10gKi9cblx0LyogRlJUQ0hBUlRTSEVFVCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MiAvKiBCcnRFbmRTaGVldCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbi8qIDE4LjIuMjggKENUX1dvcmtib29rUHJvdGVjdGlvbikgRGVmYXVsdHMgKi9cbnZhciBXQlByb3BzRGVmID0gW1xuXHRbJ2FsbG93UmVmcmVzaFF1ZXJ5JywgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnYXV0b0NvbXByZXNzUGljdHVyZXMnLCAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydiYWNrdXBGaWxlJywgICAgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2NoZWNrQ29tcGF0aWJpbGl0eScsICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnQ29kZU5hbWUnLCAgICAgICAgICAgICAgICAgICAgJyddLFxuXHRbJ2RhdGUxOTA0JywgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnZGVmYXVsdFRoZW1lVmVyc2lvbicsICAgICAgICAgMCwgICAgICBcImludFwiXSxcblx0WydmaWx0ZXJQcml2YWN5JywgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2hpZGVQaXZvdEZpZWxkTGlzdCcsICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsncHJvbXB0ZWRTb2x1dGlvbnMnLCAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydwdWJsaXNoSXRlbXMnLCAgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3JlZnJlc2hBbGxDb25uZWN0aW9ucycsICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnc2F2ZUV4dGVybmFsTGlua1ZhbHVlcycsICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcycsICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dJbmtBbm5vdGF0aW9uJywgICAgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd09iamVjdHMnLCAgICAgICAgICAgICAgICAgJ2FsbCddLFxuXHRbJ3Nob3dQaXZvdENoYXJ0RmlsdGVyJywgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsndXBkYXRlTGlua3MnLCAndXNlclNldCddXG5dO1xuXG4vKiAxOC4yLjMwIChDVF9Cb29rVmlldykgRGVmYXVsdHMgKi9cbnZhciBXQlZpZXdEZWYgPSBbXG5cdFsnYWN0aXZlVGFiJywgICAgICAgICAgICAgICAgICAgMCwgICAgICBcImludFwiXSxcblx0WydhdXRvRmlsdGVyRGF0ZUdyb3VwaW5nJywgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ2ZpcnN0U2hlZXQnLCAgICAgICAgICAgICAgICAgIDAsICAgICAgXCJpbnRcIl0sXG5cdFsnbWluaW1pemVkJywgICAgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydzaG93SG9yaXpvbnRhbFNjcm9sbCcsICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dTaGVldFRhYnMnLCAgICAgICAgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd1ZlcnRpY2FsU2Nyb2xsJywgICAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0Wyd0YWJSYXRpbycsICAgICAgICAgICAgICAgICAgICA2MDAsICAgIFwiaW50XCJdLFxuXHRbJ3Zpc2liaWxpdHknLCAgICAgICAgICAgICAgICAgICd2aXNpYmxlJ11cblx0Ly93aW5kb3d7SGVpZ2h0LFdpZHRofSwge3gseX1XaW5kb3dcbl07XG5cbi8qIDE4LjIuMTkgKENUX1NoZWV0KSBEZWZhdWx0cyAqL1xudmFyIFNoZWV0RGVmID0gW1xuXHQvL1snc3RhdGUnLCAndmlzaWJsZSddXG5dO1xuXG4vKiAxOC4yLjIgIChDVF9DYWxjUHIpIERlZmF1bHRzICovXG52YXIgQ2FsY1ByRGVmID0gW1xuXHRbJ2NhbGNDb21wbGV0ZWQnLCAndHJ1ZSddLFxuXHRbJ2NhbGNNb2RlJywgJ2F1dG8nXSxcblx0WydjYWxjT25TYXZlJywgJ3RydWUnXSxcblx0Wydjb25jdXJyZW50Q2FsYycsICd0cnVlJ10sXG5cdFsnZnVsbENhbGNPbkxvYWQnLCAnZmFsc2UnXSxcblx0WydmdWxsUHJlY2lzaW9uJywgJ3RydWUnXSxcblx0WydpdGVyYXRlJywgJ2ZhbHNlJ10sXG5cdFsnaXRlcmF0ZUNvdW50JywgJzEwMCddLFxuXHRbJ2l0ZXJhdGVEZWx0YScsICcwLjAwMSddLFxuXHRbJ3JlZk1vZGUnLCAnQTEnXVxuXTtcblxuLyogMTguMi4zIChDVF9DdXN0b21Xb3JrYm9va1ZpZXcpIERlZmF1bHRzICovXG4vKnZhciBDdXN0b21XQlZpZXdEZWYgPSBbXG5cdFsnYXV0b1VwZGF0ZScsICdmYWxzZSddLFxuXHRbJ2NoYW5nZXNTYXZlZFdpbicsICdmYWxzZSddLFxuXHRbJ2luY2x1ZGVIaWRkZW5Sb3dDb2wnLCAndHJ1ZSddLFxuXHRbJ2luY2x1ZGVQcmludFNldHRpbmdzJywgJ3RydWUnXSxcblx0WydtYXhpbWl6ZWQnLCAnZmFsc2UnXSxcblx0WydtaW5pbWl6ZWQnLCAnZmFsc2UnXSxcblx0Wydvbmx5U3luYycsICdmYWxzZSddLFxuXHRbJ3BlcnNvbmFsVmlldycsICdmYWxzZSddLFxuXHRbJ3Nob3dDb21tZW50cycsICdjb21tSW5kaWNhdG9yJ10sXG5cdFsnc2hvd0Zvcm11bGFCYXInLCAndHJ1ZSddLFxuXHRbJ3Nob3dIb3Jpem9udGFsU2Nyb2xsJywgJ3RydWUnXSxcblx0WydzaG93T2JqZWN0cycsICdhbGwnXSxcblx0WydzaG93U2hlZXRUYWJzJywgJ3RydWUnXSxcblx0WydzaG93U3RhdHVzYmFyJywgJ3RydWUnXSxcblx0WydzaG93VmVydGljYWxTY3JvbGwnLCAndHJ1ZSddLFxuXHRbJ3RhYlJhdGlvJywgJzYwMCddLFxuXHRbJ3hXaW5kb3cnLCAnMCddLFxuXHRbJ3lXaW5kb3cnLCAnMCddXG5dOyovXG5cbmZ1bmN0aW9uIHB1c2hfZGVmYXVsdHNfYXJyYXkodGFyZ2V0LCBkZWZhdWx0cykge1xuXHRmb3IodmFyIGogPSAwOyBqICE9IHRhcmdldC5sZW5ndGg7ICsraikgeyB2YXIgdyA9IHRhcmdldFtqXTtcblx0XHRmb3IodmFyIGk9MDsgaSAhPSBkZWZhdWx0cy5sZW5ndGg7ICsraSkgeyB2YXIgeiA9IGRlZmF1bHRzW2ldO1xuXHRcdFx0aWYod1t6WzBdXSA9PSBudWxsKSB3W3pbMF1dID0gelsxXTtcblx0XHRcdGVsc2Ugc3dpdGNoKHpbMl0pIHtcblx0XHRcdGNhc2UgXCJib29sXCI6IGlmKHR5cGVvZiB3W3pbMF1dID09IFwic3RyaW5nXCIpIHdbelswXV0gPSBwYXJzZXhtbGJvb2wod1t6WzBdXSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImludFwiOiBpZih0eXBlb2Ygd1t6WzBdXSA9PSBcInN0cmluZ1wiKSB3W3pbMF1dID0gcGFyc2VJbnQod1t6WzBdXSwgMTApOyBicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbmZ1bmN0aW9uIHB1c2hfZGVmYXVsdHModGFyZ2V0LCBkZWZhdWx0cykge1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGRlZmF1bHRzLmxlbmd0aDsgKytpKSB7IHZhciB6ID0gZGVmYXVsdHNbaV07XG5cdFx0aWYodGFyZ2V0W3pbMF1dID09IG51bGwpIHRhcmdldFt6WzBdXSA9IHpbMV07XG5cdFx0ZWxzZSBzd2l0Y2goelsyXSkge1xuXHRcdFx0Y2FzZSBcImJvb2xcIjogaWYodHlwZW9mIHRhcmdldFt6WzBdXSA9PSBcInN0cmluZ1wiKSB0YXJnZXRbelswXV0gPSBwYXJzZXhtbGJvb2wodGFyZ2V0W3pbMF1dKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiaW50XCI6IGlmKHR5cGVvZiB0YXJnZXRbelswXV0gPT0gXCJzdHJpbmdcIikgdGFyZ2V0W3pbMF1dID0gcGFyc2VJbnQodGFyZ2V0W3pbMF1dLCAxMCk7IGJyZWFrO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZV93Yl9kZWZhdWx0cyh3Yikge1xuXHRwdXNoX2RlZmF1bHRzKHdiLldCUHJvcHMsIFdCUHJvcHNEZWYpO1xuXHRwdXNoX2RlZmF1bHRzKHdiLkNhbGNQciwgQ2FsY1ByRGVmKTtcblxuXHRwdXNoX2RlZmF1bHRzX2FycmF5KHdiLldCVmlldywgV0JWaWV3RGVmKTtcblx0cHVzaF9kZWZhdWx0c19hcnJheSh3Yi5TaGVldHMsIFNoZWV0RGVmKTtcblxuXHRfc3Nmb3B0cy5kYXRlMTkwNCA9IHBhcnNleG1sYm9vbCh3Yi5XQlByb3BzLmRhdGUxOTA0KTtcbn1cblxuZnVuY3Rpb24gc2FmZTE5MDQod2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0LyogVE9ETzogc3RvcmUgZGF0ZTE5MDQgc29tZXdoZXJlIGVsc2UgKi9cblx0aWYoIXdiLldvcmtib29rKSByZXR1cm4gXCJmYWxzZVwiO1xuXHRpZighd2IuV29ya2Jvb2suV0JQcm9wcykgcmV0dXJuIFwiZmFsc2VcIjtcblx0cmV0dXJuIHBhcnNleG1sYm9vbCh3Yi5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0KSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xufVxuXG52YXIgYmFkY2hhcnMgPSAvKiNfX1BVUkVfXyovXCJdWyo/XFwvXFxcXFwiLnNwbGl0KFwiXCIpO1xuZnVuY3Rpb24gY2hlY2tfd3NfbmFtZShuLyo6c3RyaW5nKi8sIHNhZmUvKjo/Ym9vbGVhbiovKS8qOmJvb2xlYW4qLyB7XG5cdGlmKG4ubGVuZ3RoID4gMzEpIHsgaWYoc2FmZSkgcmV0dXJuIGZhbHNlOyB0aHJvdyBuZXcgRXJyb3IoXCJTaGVldCBuYW1lcyBjYW5ub3QgZXhjZWVkIDMxIGNoYXJzXCIpOyB9XG5cdHZhciBfZ29vZCA9IHRydWU7XG5cdGJhZGNoYXJzLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdGlmKG4uaW5kZXhPZihjKSA9PSAtMSkgcmV0dXJuO1xuXHRcdGlmKCFzYWZlKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGVldCBuYW1lIGNhbm5vdCBjb250YWluIDogXFxcXCAvID8gKiBbIF1cIik7XG5cdFx0X2dvb2QgPSBmYWxzZTtcblx0fSk7XG5cdHJldHVybiBfZ29vZDtcbn1cbmZ1bmN0aW9uIGNoZWNrX3diX25hbWVzKE4sIFMsIGNvZGVzKSB7XG5cdE4uZm9yRWFjaChmdW5jdGlvbihuLGkpIHtcblx0XHRjaGVja193c19uYW1lKG4pO1xuXHRcdGZvcih2YXIgaiA9IDA7IGogPCBpOyArK2opIGlmKG4gPT0gTltqXSkgdGhyb3cgbmV3IEVycm9yKFwiRHVwbGljYXRlIFNoZWV0IE5hbWU6IFwiICsgbik7XG5cdFx0aWYoY29kZXMpIHtcblx0XHRcdHZhciBjbiA9IChTICYmIFNbaV0gJiYgU1tpXS5Db2RlTmFtZSkgfHwgbjtcblx0XHRcdGlmKGNuLmNoYXJDb2RlQXQoMCkgPT0gOTUgJiYgY24ubGVuZ3RoID4gMjIpIHRocm93IG5ldyBFcnJvcihcIkJhZCBDb2RlIE5hbWU6IFdvcmtzaGVldFwiICsgY24pO1xuXHRcdH1cblx0fSk7XG59XG5mdW5jdGlvbiBjaGVja193Yih3Yikge1xuXHRpZighd2IgfHwgIXdiLlNoZWV0TmFtZXMgfHwgIXdiLlNoZWV0cykgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBXb3JrYm9va1wiKTtcblx0aWYoIXdiLlNoZWV0TmFtZXMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoXCJXb3JrYm9vayBpcyBlbXB0eVwiKTtcblx0dmFyIFNoZWV0cyA9ICh3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5TaGVldHMpIHx8IFtdO1xuXHRjaGVja193Yl9uYW1lcyh3Yi5TaGVldE5hbWVzLCBTaGVldHMsICEhd2IudmJhcmF3KTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIGNoZWNrX3dzKHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXSwgd2IuU2hlZXROYW1lc1tpXSwgaSk7XG5cdC8qIFRPRE86IHZhbGlkYXRlIHdvcmtib29rICovXG59XG4vKiAxOC4yIFdvcmtib29rICovXG52YXIgd2Juc3JlZ2V4ID0gLzxcXHcrOndvcmtib29rLztcbmZ1bmN0aW9uIHBhcnNlX3diX3htbChkYXRhLCBvcHRzKS8qOldvcmtib29rRmlsZSovIHtcblx0aWYoIWRhdGEpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIGZpbGVcIik7XG5cdHZhciB3YiA9IC8qOjooKi97IEFwcFZlcnNpb246e30sIFdCUHJvcHM6e30sIFdCVmlldzpbXSwgU2hlZXRzOltdLCBDYWxjUHI6e30sIE5hbWVzOltdLCB4bWxuczogXCJcIiB9Lyo6OikqLztcblx0dmFyIHBhc3MgPSBmYWxzZSwgeG1sbnMgPSBcInhtbG5zXCI7XG5cdHZhciBkbmFtZSA9IHt9LCBkbnN0YXJ0ID0gMDtcblx0ZGF0YS5yZXBsYWNlKHRhZ3JlZ2V4LCBmdW5jdGlvbiB4bWxfd2IoeCwgaWR4KSB7XG5cdFx0dmFyIHkvKjphbnkqLyA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yNyB3b3JrYm9vayBDVF9Xb3JrYm9vayAxICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2snOlxuXHRcdFx0XHRpZih4Lm1hdGNoKHdibnNyZWdleCkpIHhtbG5zID0gXCJ4bWxuc1wiICsgeC5tYXRjaCgvPChcXHcrKTovKVsxXTtcblx0XHRcdFx0d2IueG1sbnMgPSB5W3htbG5zXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L3dvcmtib29rPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEzIGZpbGVWZXJzaW9uIENUX0ZpbGVWZXJzaW9uID8gKi9cblx0XHRcdGNhc2UgJzxmaWxlVmVyc2lvbic6IGRlbGV0ZSB5WzBdOyB3Yi5BcHBWZXJzaW9uID0geTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZmlsZVZlcnNpb24vPic6IGNhc2UgJzwvZmlsZVZlcnNpb24+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTIgZmlsZVNoYXJpbmcgQ1RfRmlsZVNoYXJpbmcgPyAqL1xuXHRcdFx0Y2FzZSAnPGZpbGVTaGFyaW5nJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8ZmlsZVNoYXJpbmcvPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjI4IHdvcmtib29rUHIgQ1RfV29ya2Jvb2tQciA/ICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQcic6XG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQci8+Jzpcblx0XHRcdFx0V0JQcm9wc0RlZi5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcblx0XHRcdFx0XHRpZih5W3dbMF1dID09IG51bGwpIHJldHVybjtcblx0XHRcdFx0XHRzd2l0Y2god1syXSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcImJvb2xcIjogd2IuV0JQcm9wc1t3WzBdXSA9IHBhcnNleG1sYm9vbCh5W3dbMF1dKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiaW50XCI6IHdiLldCUHJvcHNbd1swXV0gPSBwYXJzZUludCh5W3dbMF1dLCAxMCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDogd2IuV0JQcm9wc1t3WzBdXSA9IHlbd1swXV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYoeS5jb2RlTmFtZSkgd2IuV0JQcm9wcy5Db2RlTmFtZSA9IHV0ZjhyZWFkKHkuY29kZU5hbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvd29ya2Jvb2tQcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yOSB3b3JrYm9va1Byb3RlY3Rpb24gQ1RfV29ya2Jvb2tQcm90ZWN0aW9uID8gKi9cblx0XHRcdGNhc2UgJzx3b3JrYm9va1Byb3RlY3Rpb24nOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzx3b3JrYm9va1Byb3RlY3Rpb24vPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEgIGJvb2tWaWV3cyBDVF9Cb29rVmlld3MgPyAqL1xuXHRcdFx0Y2FzZSAnPGJvb2tWaWV3cyc6IGNhc2UgJzxib29rVmlld3M+JzogY2FzZSAnPC9ib29rVmlld3M+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjMwICAgd29ya2Jvb2tWaWV3IENUX0Jvb2tWaWV3ICsgKi9cblx0XHRcdGNhc2UgJzx3b3JrYm9va1ZpZXcnOiBjYXNlICc8d29ya2Jvb2tWaWV3Lz4nOiBkZWxldGUgeVswXTsgd2IuV0JWaWV3LnB1c2goeSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC93b3JrYm9va1ZpZXc+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjAgc2hlZXRzIENUX1NoZWV0cyAxICovXG5cdFx0XHRjYXNlICc8c2hlZXRzJzogY2FzZSAnPHNoZWV0cz4nOiBjYXNlICc8L3NoZWV0cz4nOiBicmVhazsgLy8gYWdncmVnYXRlIHNoZWV0XG5cdFx0XHQvKiAxOC4yLjE5ICAgc2hlZXQgQ1RfU2hlZXQgKyAqL1xuXHRcdFx0Y2FzZSAnPHNoZWV0Jzpcblx0XHRcdFx0c3dpdGNoKHkuc3RhdGUpIHtcblx0XHRcdFx0XHRjYXNlIFwiaGlkZGVuXCI6IHkuSGlkZGVuID0gMTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcInZlcnlIaWRkZW5cIjogeS5IaWRkZW4gPSAyOyBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB5LkhpZGRlbiA9IDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGVsZXRlIHkuc3RhdGU7XG5cdFx0XHRcdHkubmFtZSA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKHkubmFtZSkpO1xuXHRcdFx0XHRkZWxldGUgeVswXTsgd2IuU2hlZXRzLnB1c2goeSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zaGVldD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xNSBmdW5jdGlvbkdyb3VwcyBDVF9GdW5jdGlvbkdyb3VwcyA/ICovXG5cdFx0XHRjYXNlICc8ZnVuY3Rpb25Hcm91cHMnOiBjYXNlICc8ZnVuY3Rpb25Hcm91cHMvPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4xNCAgIGZ1bmN0aW9uR3JvdXAgQ1RfRnVuY3Rpb25Hcm91cCArICovXG5cdFx0XHRjYXNlICc8ZnVuY3Rpb25Hcm91cCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjkgIGV4dGVybmFsUmVmZXJlbmNlcyBDVF9FeHRlcm5hbFJlZmVyZW5jZXMgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dGVybmFsUmVmZXJlbmNlcyc6IGNhc2UgJzwvZXh0ZXJuYWxSZWZlcmVuY2VzPic6IGNhc2UgJzxleHRlcm5hbFJlZmVyZW5jZXM+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjggICAgZXh0ZXJuYWxSZWZlcmVuY2UgQ1RfRXh0ZXJuYWxSZWZlcmVuY2UgKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dGVybmFsUmVmZXJlbmNlJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuNiAgZGVmaW5lZE5hbWVzIENUX0RlZmluZWROYW1lcyA/ICovXG5cdFx0XHRjYXNlICc8ZGVmaW5lZE5hbWVzLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxkZWZpbmVkTmFtZXM+JzogY2FzZSAnPGRlZmluZWROYW1lcyc6IHBhc3M9dHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2RlZmluZWROYW1lcz4nOiBwYXNzPWZhbHNlOyBicmVhaztcblx0XHRcdC8qIDE4LjIuNSAgICBkZWZpbmVkTmFtZSBDVF9EZWZpbmVkTmFtZSArICovXG5cdFx0XHRjYXNlICc8ZGVmaW5lZE5hbWUnOiB7XG5cdFx0XHRcdGRuYW1lID0ge307XG5cdFx0XHRcdGRuYW1lLk5hbWUgPSB1dGY4cmVhZCh5Lm5hbWUpO1xuXHRcdFx0XHRpZih5LmNvbW1lbnQpIGRuYW1lLkNvbW1lbnQgPSB5LmNvbW1lbnQ7XG5cdFx0XHRcdGlmKHkubG9jYWxTaGVldElkKSBkbmFtZS5TaGVldCA9ICt5LmxvY2FsU2hlZXRJZDtcblx0XHRcdFx0aWYocGFyc2V4bWxib29sKHkuaGlkZGVufHxcIjBcIikpIGRuYW1lLkhpZGRlbiA9IHRydWU7XG5cdFx0XHRcdGRuc3RhcnQgPSBpZHggKyB4Lmxlbmd0aDtcblx0XHRcdH1cdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9kZWZpbmVkTmFtZT4nOiB7XG5cdFx0XHRcdGRuYW1lLlJlZiA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKGRhdGEuc2xpY2UoZG5zdGFydCwgaWR4KSkpO1xuXHRcdFx0XHR3Yi5OYW1lcy5wdXNoKGRuYW1lKTtcblx0XHRcdH0gYnJlYWs7XG5cdFx0XHRjYXNlICc8ZGVmaW5lZE5hbWUvPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjIgIGNhbGNQciBDVF9DYWxjUHIgPyAqL1xuXHRcdFx0Y2FzZSAnPGNhbGNQcic6IGRlbGV0ZSB5WzBdOyB3Yi5DYWxjUHIgPSB5OyBicmVhaztcblx0XHRcdGNhc2UgJzxjYWxjUHIvPic6IGRlbGV0ZSB5WzBdOyB3Yi5DYWxjUHIgPSB5OyBicmVhaztcblx0XHRcdGNhc2UgJzwvY2FsY1ByPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjE2IG9sZVNpemUgQ1RfT2xlU2l6ZSA/IChyZWYgcmVxdWlyZWQpICovXG5cdFx0XHRjYXNlICc8b2xlU2l6ZSc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjQgIGN1c3RvbVdvcmtib29rVmlld3MgQ1RfQ3VzdG9tV29ya2Jvb2tWaWV3cyA/ICovXG5cdFx0XHRjYXNlICc8Y3VzdG9tV29ya2Jvb2tWaWV3cz4nOiBjYXNlICc8L2N1c3RvbVdvcmtib29rVmlld3M+JzogY2FzZSAnPGN1c3RvbVdvcmtib29rVmlld3MnOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMyAgY3VzdG9tV29ya2Jvb2tWaWV3IENUX0N1c3RvbVdvcmtib29rVmlldyArICovXG5cdFx0XHRjYXNlICc8Y3VzdG9tV29ya2Jvb2tWaWV3JzogY2FzZSAnPC9jdXN0b21Xb3JrYm9va1ZpZXc+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTggcGl2b3RDYWNoZXMgQ1RfUGl2b3RDYWNoZXMgPyAqL1xuXHRcdFx0Y2FzZSAnPHBpdm90Q2FjaGVzPic6IGNhc2UgJzwvcGl2b3RDYWNoZXM+JzogY2FzZSAnPHBpdm90Q2FjaGVzJzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjE3IHBpdm90Q2FjaGUgQ1RfUGl2b3RDYWNoZSA/ICovXG5cdFx0XHRjYXNlICc8cGl2b3RDYWNoZSc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjIxIHNtYXJ0VGFnUHIgQ1RfU21hcnRUYWdQciA/ICovXG5cdFx0XHRjYXNlICc8c21hcnRUYWdQcic6IGNhc2UgJzxzbWFydFRhZ1ByLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yMyBzbWFydFRhZ1R5cGVzIENUX1NtYXJ0VGFnVHlwZXMgPyAqL1xuXHRcdFx0Y2FzZSAnPHNtYXJ0VGFnVHlwZXMnOiBjYXNlICc8c21hcnRUYWdUeXBlcz4nOiBjYXNlICc8L3NtYXJ0VGFnVHlwZXM+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjIyIHNtYXJ0VGFnVHlwZSBDVF9TbWFydFRhZ1R5cGUgPyAqL1xuXHRcdFx0Y2FzZSAnPHNtYXJ0VGFnVHlwZSc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjI0IHdlYlB1Ymxpc2hpbmcgQ1RfV2ViUHVibGlzaGluZyA/ICovXG5cdFx0XHRjYXNlICc8d2ViUHVibGlzaGluZyc6IGNhc2UgJzx3ZWJQdWJsaXNoaW5nLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMSBmaWxlUmVjb3ZlcnlQciBDVF9GaWxlUmVjb3ZlcnlQciA/ICovXG5cdFx0XHRjYXNlICc8ZmlsZVJlY292ZXJ5UHInOiBjYXNlICc8ZmlsZVJlY292ZXJ5UHIvPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjI2IHdlYlB1Ymxpc2hPYmplY3RzIENUX1dlYlB1Ymxpc2hPYmplY3RzID8gKi9cblx0XHRcdGNhc2UgJzx3ZWJQdWJsaXNoT2JqZWN0cz4nOiBjYXNlICc8d2ViUHVibGlzaE9iamVjdHMnOiBjYXNlICc8L3dlYlB1Ymxpc2hPYmplY3RzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4yNSB3ZWJQdWJsaXNoT2JqZWN0IENUX1dlYlB1Ymxpc2hPYmplY3QgPyAqL1xuXHRcdFx0Y2FzZSAnPHdlYlB1Ymxpc2hPYmplY3QnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBjYXNlICc8ZXh0THN0Lz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuNyAgZXh0IENUX0V4dGVuc2lvbiArICovXG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcz10cnVlOyBicmVhazsgLy9UT0RPOiBjaGVjayB3aXRoIHZlcnNpb25zIG9mIGV4Y2VsXG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogT3RoZXJzICovXG5cdFx0XHRjYXNlICc8QXJjaElEJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8QWx0ZXJuYXRlQ29udGVudCc6XG5cdFx0XHRjYXNlICc8QWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9BbHRlcm5hdGVDb250ZW50Pic6IHBhc3M9ZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiBUT0RPICovXG5cdFx0XHRjYXNlICc8cmV2aXNpb25QdHInOiBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDogaWYoIXBhc3MgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiB3b3JrYm9vaycpO1xuXHRcdH1cblx0XHRyZXR1cm4geDtcblx0fSk7XG5cdGlmKFhNTE5TX21haW4uaW5kZXhPZih3Yi54bWxucykgPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIE5hbWVzcGFjZTogXCIgKyB3Yi54bWxucyk7XG5cblx0cGFyc2Vfd2JfZGVmYXVsdHMod2IpO1xuXG5cdHJldHVybiB3Yjtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd2JfeG1sKHdiLyo6V29ya2Jvb2sqLy8qOjosIG9wdHM6P1dyaXRlT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKCd3b3JrYm9vaycsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdC8vJ3htbG5zOm14JzogWE1MTlMubXgsXG5cdFx0Ly8neG1sbnM6cyc6IFhNTE5TX21haW5bMF0sXG5cdFx0J3htbG5zOnInOiBYTUxOUy5yXG5cdH0pO1xuXG5cdHZhciB3cml0ZV9uYW1lcyA9ICh3Yi5Xb3JrYm9vayAmJiAod2IuV29ya2Jvb2suTmFtZXN8fFtdKS5sZW5ndGggPiAwKTtcblxuXHQvKiBmaWxlVmVyc2lvbiAqL1xuXHQvKiBmaWxlU2hhcmluZyAqL1xuXG5cdHZhciB3b3JrYm9va1ByLyo6YW55Ki8gPSAoe2NvZGVOYW1lOlwiVGhpc1dvcmtib29rXCJ9Lyo6YW55Ki8pO1xuXHRpZih3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5XQlByb3BzKSB7XG5cdFx0V0JQcm9wc0RlZi5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRcdC8qOjogaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5XQlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRpZigod2IuV29ya2Jvb2suV0JQcm9wc1t4WzBdXS8qOmFueSovKSA9PSBudWxsKSByZXR1cm47XG5cdFx0XHRpZigod2IuV29ya2Jvb2suV0JQcm9wc1t4WzBdXS8qOmFueSovKSA9PSB4WzFdKSByZXR1cm47XG5cdFx0XHR3b3JrYm9va1ByW3hbMF1dID0gKHdiLldvcmtib29rLldCUHJvcHNbeFswXV0vKjphbnkqLyk7XG5cdFx0fSk7XG5cdFx0Lyo6OiBpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLldCUHJvcHMpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRpZih3Yi5Xb3JrYm9vay5XQlByb3BzLkNvZGVOYW1lKSB7IHdvcmtib29rUHIuY29kZU5hbWUgPSB3Yi5Xb3JrYm9vay5XQlByb3BzLkNvZGVOYW1lOyBkZWxldGUgd29ya2Jvb2tQci5Db2RlTmFtZTsgfVxuXHR9XG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnd29ya2Jvb2tQcicsIG51bGwsIHdvcmtib29rUHIpKTtcblxuXHQvKiB3b3JrYm9va1Byb3RlY3Rpb24gKi9cblxuXHR2YXIgc2hlZXRzID0gd2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suU2hlZXRzIHx8IFtdO1xuXHR2YXIgaSA9IDA7XG5cblx0LyogYm9va1ZpZXdzIG9ubHkgd3JpdHRlbiBpZiBmaXJzdCB3b3Jrc2hlZXQgaXMgaGlkZGVuICovXG5cdGlmKHNoZWV0cyAmJiBzaGVldHNbMF0gJiYgISFzaGVldHNbMF0uSGlkZGVuKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjxib29rVmlld3M+XCI7XG5cdFx0Zm9yKGkgPSAwOyBpICE9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdGlmKCFzaGVldHNbaV0pIGJyZWFrO1xuXHRcdFx0aWYoIXNoZWV0c1tpXS5IaWRkZW4pIGJyZWFrO1xuXHRcdH1cblx0XHRpZihpID09IHdiLlNoZWV0TmFtZXMubGVuZ3RoKSBpID0gMDtcblx0XHRvW28ubGVuZ3RoXSA9ICc8d29ya2Jvb2tWaWV3IGZpcnN0U2hlZXQ9XCInICsgaSArICdcIiBhY3RpdmVUYWI9XCInICsgaSArICdcIi8+Jztcblx0XHRvW28ubGVuZ3RoXSA9IFwiPC9ib29rVmlld3M+XCI7XG5cdH1cblxuXHRvW28ubGVuZ3RoXSA9IFwiPHNoZWV0cz5cIjtcblx0Zm9yKGkgPSAwOyBpICE9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgc2h0ID0gKHtuYW1lOmVzY2FwZXhtbCh3Yi5TaGVldE5hbWVzW2ldLnNsaWNlKDAsMzEpKX0vKjphbnkqLyk7XG5cdFx0c2h0LnNoZWV0SWQgPSBcIlwiKyhpKzEpO1xuXHRcdHNodFtcInI6aWRcIl0gPSBcInJJZFwiKyhpKzEpO1xuXHRcdGlmKHNoZWV0c1tpXSkgc3dpdGNoKHNoZWV0c1tpXS5IaWRkZW4pIHtcblx0XHRcdGNhc2UgMTogc2h0LnN0YXRlID0gXCJoaWRkZW5cIjsgYnJlYWs7XG5cdFx0XHRjYXNlIDI6IHNodC5zdGF0ZSA9IFwidmVyeUhpZGRlblwiOyBicmVhaztcblx0XHR9XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdzaGVldCcsbnVsbCxzaHQpKTtcblx0fVxuXHRvW28ubGVuZ3RoXSA9IFwiPC9zaGVldHM+XCI7XG5cblx0LyogZnVuY3Rpb25Hcm91cHMgKi9cblx0LyogZXh0ZXJuYWxSZWZlcmVuY2VzICovXG5cblx0aWYod3JpdGVfbmFtZXMpIHtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPGRlZmluZWROYW1lcz5cIjtcblx0XHRpZih3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5OYW1lcykgd2IuV29ya2Jvb2suTmFtZXMuZm9yRWFjaChmdW5jdGlvbihuKSB7XG5cdFx0XHR2YXIgZC8qOmFueSovID0ge25hbWU6bi5OYW1lfTtcblx0XHRcdGlmKG4uQ29tbWVudCkgZC5jb21tZW50ID0gbi5Db21tZW50O1xuXHRcdFx0aWYobi5TaGVldCAhPSBudWxsKSBkLmxvY2FsU2hlZXRJZCA9IFwiXCIrbi5TaGVldDtcblx0XHRcdGlmKG4uSGlkZGVuKSBkLmhpZGRlbiA9IFwiMVwiO1xuXHRcdFx0aWYoIW4uUmVmKSByZXR1cm47XG5cdFx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZygnZGVmaW5lZE5hbWUnLCBlc2NhcGV4bWwobi5SZWYpLCBkKTtcblx0XHR9KTtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPC9kZWZpbmVkTmFtZXM+XCI7XG5cdH1cblxuXHQvKiBjYWxjUHIgKi9cblx0Lyogb2xlU2l6ZSAqL1xuXHQvKiBjdXN0b21Xb3JrYm9va1ZpZXdzICovXG5cdC8qIHBpdm90Q2FjaGVzICovXG5cdC8qIHNtYXJ0VGFnUHIgKi9cblx0Lyogc21hcnRUYWdUeXBlcyAqL1xuXHQvKiB3ZWJQdWJsaXNoaW5nICovXG5cdC8qIGZpbGVSZWNvdmVyeVByICovXG5cdC8qIHdlYlB1Ymxpc2hPYmplY3RzICovXG5cdC8qIGV4dExzdCAqL1xuXG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICc8L3dvcmtib29rPic7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMzA0IEJydEJ1bmRsZVNoICovXG5mdW5jdGlvbiBwYXJzZV9CcnRCdW5kbGVTaChkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgeiA9IHt9O1xuXHR6LkhpZGRlbiA9IGRhdGEucmVhZF9zaGlmdCg0KTsgLy9oc1N0YXRlIFNUX1NoZWV0U3RhdGVcblx0ei5pVGFiSUQgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHouc3RyUmVsSUQgPSBwYXJzZV9SZWxJRChkYXRhLGxlbmd0aC04KTtcblx0ei5uYW1lID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJ1bmRsZVNoKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEyNyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5IaWRkZW4pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEuaVRhYklEKTtcblx0d3JpdGVfUmVsSUQoZGF0YS5zdHJSZWxJRCwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhkYXRhLm5hbWUuc2xpY2UoMCwzMSksIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjgxNSBCcnRXYlByb3AgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFdiUHJvcChkYXRhLCBsZW5ndGgpLyo6V0JQcm9wcyovIHtcblx0dmFyIG8vKjpXQlByb3BzKi8gPSAoe30vKjphbnkqLyk7XG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0by5kZWZhdWx0VGhlbWVWZXJzaW9uID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgc3RyTmFtZSA9IChsZW5ndGggPiA4KSA/IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKSA6IFwiXCI7XG5cdGlmKHN0ck5hbWUubGVuZ3RoID4gMCkgby5Db2RlTmFtZSA9IHN0ck5hbWU7XG5cdG8uYXV0b0NvbXByZXNzUGljdHVyZXMgPSAhIShmbGFncyAmIDB4MTAwMDApO1xuXHRvLmJhY2t1cEZpbGUgPSAhIShmbGFncyAmIDB4NDApO1xuXHRvLmNoZWNrQ29tcGF0aWJpbGl0eSA9ICEhKGZsYWdzICYgMHgxMDAwKTtcblx0by5kYXRlMTkwNCA9ICEhKGZsYWdzICYgMHgwMSk7XG5cdG8uZmlsdGVyUHJpdmFjeSA9ICEhKGZsYWdzICYgMHgwOCk7XG5cdG8uaGlkZVBpdm90RmllbGRMaXN0ID0gISEoZmxhZ3MgJiAweDQwMCk7XG5cdG8ucHJvbXB0ZWRTb2x1dGlvbnMgPSAhIShmbGFncyAmIDB4MTApO1xuXHRvLnB1Ymxpc2hJdGVtcyA9ICEhKGZsYWdzICYgMHg4MDApO1xuXHRvLnJlZnJlc2hBbGxDb25uZWN0aW9ucyA9ICEhKGZsYWdzICYgMHg0MDAwMCk7XG5cdG8uc2F2ZUV4dGVybmFsTGlua1ZhbHVlcyA9ICEhKGZsYWdzICYgMHg4MCk7XG5cdG8uc2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMgPSAhIShmbGFncyAmIDB4MDQpO1xuXHRvLnNob3dJbmtBbm5vdGF0aW9uID0gISEoZmxhZ3MgJiAweDIwKTtcblx0by5zaG93T2JqZWN0cyA9IFtcImFsbFwiLCBcInBsYWNlaG9sZGVyc1wiLCBcIm5vbmVcIl1bKGZsYWdzID4+IDEzKSAmIDB4MDNdO1xuXHRvLnNob3dQaXZvdENoYXJ0RmlsdGVyID0gISEoZmxhZ3MgJiAweDgwMDApO1xuXHRvLnVwZGF0ZUxpbmtzID0gW1widXNlclNldFwiLCBcIm5ldmVyXCIsIFwiYWx3YXlzXCJdWyhmbGFncyA+PiA4KSAmIDB4MDNdO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFdiUHJvcChkYXRhLyo6P1dCUHJvcHMqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNzIpO1xuXHR2YXIgZmxhZ3MgPSAwO1xuXHRpZihkYXRhKSB7XG5cdFx0LyogVE9ETzogbWlycm9yIHBhcnNlX0JydFdiUHJvcCBmaWVsZHMgKi9cblx0XHRpZihkYXRhLmZpbHRlclByaXZhY3kpIGZsYWdzIHw9IDB4MDg7XG5cdH1cblx0by53cml0ZV9zaGlmdCg0LCBmbGFncyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdHdyaXRlX1hMU0JDb2RlTmFtZShkYXRhICYmIGRhdGEuQ29kZU5hbWUgfHwgXCJUaGlzV29ya2Jvb2tcIiwgbyk7XG5cdHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JydEZSVEFyY2hJRCQoZGF0YSwgbGVuZ3RoKSB7XG5cdHZhciBvID0ge307XG5cdGRhdGEucmVhZF9zaGlmdCg0KTtcblx0by5BcmNoSUQgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGRhdGEubCArPSBsZW5ndGggLSA4O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42ODcgQnJ0TmFtZSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0TmFtZShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0ZGF0YS5sICs9IDQ7IC8vdmFyIGZsYWdzID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRkYXRhLmwgKz0gMTsgLy92YXIgY2hLZXkgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBpdGFiID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgbmFtZSA9IHBhcnNlX1hMTmFtZVdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQk5hbWVQYXJzZWRGb3JtdWxhKGRhdGEsIDAsIG9wdHMpO1xuXHR2YXIgY29tbWVudCA9IHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEpO1xuXHQvL2lmKDAgLyogZlByb2MgKi8pIHtcblx0XHQvLyB1bnVzZWRzdHJpbmcxOiBYTE51bGxhYmxlV2lkZVN0cmluZ1xuXHRcdC8vIGRlc2NyaXB0aW9uOiBYTE51bGxhYmxlV2lkZVN0cmluZ1xuXHRcdC8vIGhlbHBUb3BpYzogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0XHQvLyB1bnVzZWRzdHJpbmcyOiBYTE51bGxhYmxlV2lkZVN0cmluZ1xuXHQvL31cblx0ZGF0YS5sID0gZW5kO1xuXHR2YXIgb3V0ID0gKHtOYW1lOm5hbWUsIFB0Zzpmb3JtdWxhfS8qOmFueSovKTtcblx0aWYoaXRhYiA8IDB4RkZGRkZGRikgb3V0LlNoZWV0ID0gaXRhYjtcblx0aWYoY29tbWVudCkgb3V0LkNvbW1lbnQgPSBjb21tZW50O1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuNjEgV29ya2Jvb2sgKi9cbmZ1bmN0aW9uIHBhcnNlX3diX2JpbihkYXRhLCBvcHRzKS8qOldvcmtib29rRmlsZSovIHtcblx0dmFyIHdiID0geyBBcHBWZXJzaW9uOnt9LCBXQlByb3BzOnt9LCBXQlZpZXc6W10sIFNoZWV0czpbXSwgQ2FsY1ByOnt9LCB4bWxuczogXCJcIiB9O1xuXHR2YXIgc3RhdGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblxuXHRpZighb3B0cykgb3B0cyA9IHt9O1xuXHRvcHRzLmJpZmYgPSAxMjtcblxuXHR2YXIgTmFtZXMgPSBbXTtcblx0dmFyIHN1cGJvb2tzID0gKFtbXV0vKjphbnkqLyk7XG5cdHN1cGJvb2tzLlNoZWV0TmFtZXMgPSBbXTtcblx0c3VwYm9va3MuWFRJID0gW107XG5cblx0WExTQlJlY29yZEVudW1bMHgwMDEwXSA9IHsgbjpcIkJydEZSVEFyY2hJRCRcIiwgZjpwYXJzZV9CcnRGUlRBcmNoSUQkIH07XG5cblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl93Yih2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDA5QzogLyogJ0JydEJ1bmRsZVNoJyAqL1xuXHRcdFx0XHRzdXBib29rcy5TaGVldE5hbWVzLnB1c2godmFsLm5hbWUpO1xuXHRcdFx0XHR3Yi5TaGVldHMucHVzaCh2YWwpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwOTk6IC8qICdCcnRXYlByb3AnICovXG5cdFx0XHRcdHdiLldCUHJvcHMgPSB2YWw7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyNzogLyogJ0JydE5hbWUnICovXG5cdFx0XHRcdGlmKHZhbC5TaGVldCAhPSBudWxsKSBvcHRzLlNJRCA9IHZhbC5TaGVldDtcblx0XHRcdFx0dmFsLlJlZiA9IHN0cmluZ2lmeV9mb3JtdWxhKHZhbC5QdGcsIG51bGwsIG51bGwsIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0ZGVsZXRlIG9wdHMuU0lEO1xuXHRcdFx0XHRkZWxldGUgdmFsLlB0Zztcblx0XHRcdFx0TmFtZXMucHVzaCh2YWwpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwNDBDOiAvKiAnQnJ0TmFtZUV4dCcgKi8gYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMTY1OiAvKiAnQnJ0U3VwU2VsZicgKi9cblx0XHRcdGNhc2UgMHgwMTY2OiAvKiAnQnJ0U3VwU2FtZScgKi9cblx0XHRcdGNhc2UgMHgwMTYzOiAvKiAnQnJ0U3VwQm9va1NyYycgKi9cblx0XHRcdGNhc2UgMHgwMjlCOiAvKiAnQnJ0U3VwQWRkaW4nICovXG5cdFx0XHRcdGlmKCFzdXBib29rc1swXS5sZW5ndGgpIHN1cGJvb2tzWzBdID0gW1JULCB2YWxdO1xuXHRcdFx0XHRlbHNlIHN1cGJvb2tzLnB1c2goW1JULCB2YWxdKTtcblx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJID0gW107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAxNkE6IC8qICdCcnRFeHRlcm5TaGVldCcgKi9cblx0XHRcdFx0aWYoc3VwYm9va3MubGVuZ3RoID09PSAwKSB7IHN1cGJvb2tzWzBdID0gW107IHN1cGJvb2tzWzBdLlhUSSA9IFtdOyB9XG5cdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSSA9IHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSS5jb25jYXQodmFsKTtcblx0XHRcdFx0c3VwYm9va3MuWFRJID0gc3VwYm9va3MuWFRJLmNvbmNhdCh2YWwpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMTY5OiAvKiAnQnJ0UGxhY2Vob2xkZXJOYW1lJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDA4MTc6IC8qICdCcnRBYnNQYXRoMTUnICovXG5cdFx0XHRjYXNlIDB4MDA5RTogLyogJ0JydEJvb2tWaWV3JyAqL1xuXHRcdFx0Y2FzZSAweDAwOEY6IC8qICdCcnRCZWdpbkJ1bmRsZVNocycgKi9cblx0XHRcdGNhc2UgMHgwMjk4OiAvKiAnQnJ0QmVnaW5Gbkdyb3VwJyAqL1xuXHRcdFx0Y2FzZSAweDAxNjE6IC8qICdCcnRCZWdpbkV4dGVybmFscycgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGNhc2UgJ0JydE1vZGVsVGltZUdyb3VwaW5nQ2FsY0NvbCcgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0Y2FzZSAweDBDMDE6IC8qICdCcnRSZXZpc2lvblB0cicgKi9cblx0XHRcdGNhc2UgMHgwMjE2OiAvKiAnQnJ0Qm9va1Byb3RlY3Rpb24nICovXG5cdFx0XHRjYXNlIDB4MDJBNTogLyogJ0JydEJvb2tQcm90ZWN0aW9uSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDAwOUQ6IC8qICdCcnRDYWxjUHJvcCcgKi9cblx0XHRcdGNhc2UgMHgwMjYyOiAvKiAnQnJ0Q3Jhc2hSZWNFcnInICovXG5cdFx0XHRjYXNlIDB4MDgwMjogLyogJ0JydERlY291cGxlZFBpdm90Q2FjaGVJRCcgKi9cblx0XHRcdGNhc2UgMHgwMDlCOiAvKiAnQnJ0RmlsZVJlY292ZXInICovXG5cdFx0XHRjYXNlIDB4MDIyNDogLyogJ0JydEZpbGVTaGFyaW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTQ6IC8qICdCcnRGaWxlU2hhcmluZ0lzbycgKi9cblx0XHRcdGNhc2UgMHgwMDgwOiAvKiAnQnJ0RmlsZVZlcnNpb24nICovXG5cdFx0XHRjYXNlIDB4MDI5OTogLyogJ0JydEZuR3JvdXAnICovXG5cdFx0XHRjYXNlIDB4MDg1MDogLyogJ0JydE1vZGVsUmVsYXRpb25zaGlwJyAqL1xuXHRcdFx0Y2FzZSAweDA4NEQ6IC8qICdCcnRNb2RlbFRhYmxlJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjU6IC8qICdCcnRPbGVTaXplJyAqL1xuXHRcdFx0Y2FzZSAweDA4MDU6IC8qICdCcnRQaXZvdFRhYmxlUmVmJyAqL1xuXHRcdFx0Y2FzZSAweDAyNTQ6IC8qICdCcnRTbWFydFRhZ1R5cGUnICovXG5cdFx0XHRjYXNlIDB4MDgxQzogLyogJ0JydFRhYmxlU2xpY2VyQ2FjaGVJRCcgKi9cblx0XHRcdGNhc2UgMHgwODFCOiAvKiAnQnJ0VGFibGVTbGljZXJDYWNoZUlEcycgKi9cblx0XHRcdGNhc2UgMHgwODIyOiAvKiAnQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRCcgKi9cblx0XHRcdGNhc2UgMHgwMThEOiAvKiAnQnJ0VXNlckJvb2tWaWV3JyAqL1xuXHRcdFx0Y2FzZSAweDAwOUE6IC8qICdCcnRXYkZhY3RvaWQnICovXG5cdFx0XHRjYXNlIDB4MDQ1RDogLyogJ0JydFdiUHJvcDE0JyAqL1xuXHRcdFx0Y2FzZSAweDAyMjk6IC8qICdCcnRXZWJPcHQnICovXG5cdFx0XHRjYXNlIDB4MDgyQjogLyogJ0JydFdvcmtCb29rUHIxNScgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogJ0JydEZSVEVuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNjogLyogJ0JydEFDRW5kJyAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMTA6IC8qICdCcnRGUlRBcmNoSUQkJyAqLyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCAob3B0cy5XVEYgJiYgc3RhdGVbc3RhdGUubGVuZ3RoLTFdICE9IDB4MDAyNSAvKiBCcnRBQ0JlZ2luICovICYmIHN0YXRlW3N0YXRlLmxlbmd0aC0xXSAhPSAweDAwMjMgLyogQnJ0RlJUQmVnaW4gKi8pKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0sIG9wdHMpO1xuXG5cdHBhcnNlX3diX2RlZmF1bHRzKHdiKTtcblxuXHQvLyAkRmxvd0lnbm9yZVxuXHR3Yi5OYW1lcyA9IE5hbWVzO1xuXG5cdCh3Yi8qOmFueSovKS5zdXBib29rcyA9IHN1cGJvb2tzO1xuXHRyZXR1cm4gd2I7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JVTkRMRVNIUyhiYSwgd2IvKjo6LCBvcHRzKi8pIHtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOEYgLyogQnJ0QmVnaW5CdW5kbGVTaHMgKi8pO1xuXHRmb3IodmFyIGlkeCA9IDA7IGlkeCAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpZHgpIHtcblx0XHR2YXIgdml6ID0gd2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suU2hlZXRzICYmIHdiLldvcmtib29rLlNoZWV0c1tpZHhdICYmIHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkhpZGRlbiB8fCAwO1xuXHRcdHZhciBkID0geyBIaWRkZW46IHZpeiwgaVRhYklEOiBpZHgrMSwgc3RyUmVsSUQ6ICdySWQnICsgKGlkeCsxKSwgbmFtZTogd2IuU2hlZXROYW1lc1tpZHhdIH07XG5cdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOUMgLyogQnJ0QnVuZGxlU2ggKi8sIHdyaXRlX0JydEJ1bmRsZVNoKGQpKTtcblx0fVxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5MCAvKiBCcnRFbmRCdW5kbGVTaHMgKi8pO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY0OSBCcnRGaWxlVmVyc2lvbiAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0RmlsZVZlcnNpb24oZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTI3KTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSA0OyArK2kpIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhcIlNoZWV0SlNcIiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhYTFNYLnZlcnNpb24sIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoWExTWC52ZXJzaW9uLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFwiNzI2MlwiLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDEgQnJ0Qm9va1ZpZXcgKi9cbmZ1bmN0aW9uIHdyaXRlX0JydEJvb2tWaWV3KGlkeCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMjkpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCAwKTtcblx0by53cml0ZV9zaGlmdCgtNCwgNDYwKTtcblx0by53cml0ZV9zaGlmdCg0LCAgMjg4MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICAxNzYwMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIDUwMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIGlkeCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIGlkeCk7XG5cdHZhciBmbGFncyA9IDB4Nzg7XG5cdG8ud3JpdGVfc2hpZnQoMSwgIGZsYWdzKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuZnVuY3Rpb24gd3JpdGVfQk9PS1ZJRVdTKGJhLCB3Yi8qOjosIG9wdHMqLykge1xuXHQvKiByZXF1aXJlZCBpZiBoaWRkZW4gdGFiIGFwcGVhcnMgYmVmb3JlIHZpc2libGUgdGFiICovXG5cdGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suU2hlZXRzKSByZXR1cm47XG5cdHZhciBzaGVldHMgPSB3Yi5Xb3JrYm9vay5TaGVldHM7XG5cdHZhciBpID0gMCwgdmlzdGFiID0gLTEsIGhpZGRlbiA9IC0xO1xuXHRmb3IoOyBpIDwgc2hlZXRzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoIXNoZWV0c1tpXSB8fCAhc2hlZXRzW2ldLkhpZGRlbiAmJiB2aXN0YWIgPT0gLTEpIHZpc3RhYiA9IGk7XG5cdFx0ZWxzZSBpZihzaGVldHNbaV0uSGlkZGVuID09IDEgJiYgaGlkZGVuID09IC0xKSBoaWRkZW4gPSBpO1xuXHR9XG5cdGlmKGhpZGRlbiA+IHZpc3RhYikgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NyAvKiBCcnRCZWdpbkJvb2tWaWV3cyAqLyk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDlFIC8qIEJydEJvb2tWaWV3ICovLCB3cml0ZV9CcnRCb29rVmlldyh2aXN0YWIpKTtcblx0LyogMSooQnJ0Qm9va1ZpZXcgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODggLyogQnJ0RW5kQm9va1ZpZXdzICovKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDUgQnJ0Q2FsY1Byb3AgKi9cbi8qZnVuY3Rpb24gd3JpdGVfQnJ0Q2FsY1Byb3AoZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMjYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsMCk7IC8vIGZvcmNlIHJlY2FsY1xuXHRvLndyaXRlX3NoaWZ0KDQsMSk7XG5cdG8ud3JpdGVfc2hpZnQoNCwwKTtcblx0d3JpdGVfWG51bSgwLCBvKTtcblx0by53cml0ZV9zaGlmdCgtNCwgMTAyMyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMHgzMyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMHgwMCk7XG5cdHJldHVybiBvO1xufSovXG5cbi8qIFtNUy1YTFNCXSAyLjQuNjQ2IEJydEZpbGVSZWNvdmVyICovXG4vKmZ1bmN0aW9uIHdyaXRlX0JydEZpbGVSZWNvdmVyKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEpO1xuXHRvLndyaXRlX3NoaWZ0KDEsMCk7XG5cdHJldHVybiBvO1xufSovXG5cbi8qIFtNUy1YTFNCXSAyLjEuNy42MSBXb3JrYm9vayAqL1xuZnVuY3Rpb24gd3JpdGVfd2JfYmluKHdiLCBvcHRzKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MyAvKiBCcnRCZWdpbkJvb2sgKi8pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MCAvKiBCcnRGaWxlVmVyc2lvbiAqLywgd3JpdGVfQnJ0RmlsZVZlcnNpb24oKSk7XG5cdC8qIFtbQnJ0RmlsZVNoYXJpbmdJc29dIEJydEZpbGVTaGFyaW5nXSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5OSAvKiBCcnRXYlByb3AgKi8sIHdyaXRlX0JydFdiUHJvcCh3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5XQlByb3BzIHx8IG51bGwpKTtcblx0LyogW0FDQUJTUEFUSF0gKi9cblx0LyogW1tCcnRCb29rUHJvdGVjdGlvbklzb10gQnJ0Qm9va1Byb3RlY3Rpb25dICovXG5cdHdyaXRlX0JPT0tWSUVXUyhiYSwgd2IsIG9wdHMpO1xuXHR3cml0ZV9CVU5ETEVTSFMoYmEsIHdiLCBvcHRzKTtcblx0LyogW0ZOR1JPVVBdICovXG5cdC8qIFtFWFRFUk5BTFNdICovXG5cdC8qICpCcnROYW1lICovXG5cdC8qIHdyaXRlX3JlY29yZChiYSwgMHgwMDlEIEJydENhbGNQcm9wLCB3cml0ZV9CcnRDYWxjUHJvcCgpKTsgKi9cblx0LyogW0JydE9sZVNpemVdICovXG5cdC8qICooQnJ0VXNlckJvb2tWaWV3ICpGUlQpICovXG5cdC8qIFtQSVZPVENBQ0hFSURTXSAqL1xuXHQvKiBbQnJ0V2JGYWN0b2lkXSAqL1xuXHQvKiBbU01BUlRUQUdUWVBFU10gKi9cblx0LyogW0JydFdlYk9wdF0gKi9cblx0Lyogd3JpdGVfcmVjb3JkKGJhLCAweDAwOUIgQnJ0RmlsZVJlY292ZXIsIHdyaXRlX0JydEZpbGVSZWNvdmVyKCkpOyAqL1xuXHQvKiBbV0VCUFVCSVRFTVNdICovXG5cdC8qIFtDUkVSUlNdICovXG5cdC8qIEZSVFdPUktCT09LICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg0IC8qIEJydEVuZEJvb2sgKi8pO1xuXG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX3diKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9va0ZpbGUqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV93Yl9iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2Vfd2JfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3MoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBpZHgvKjpudW1iZXIqLywgb3B0cywgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3dzX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRyZXR1cm4gcGFyc2Vfd3NfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2NzKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9jc19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX2NzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9tcyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIGlkeC8qOm51bWJlciovLCBvcHRzLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfbXNfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdHJldHVybiBwYXJzZV9tc194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfZHMoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBpZHgvKjpudW1iZXIqLywgb3B0cywgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX2RzX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRyZXR1cm4gcGFyc2VfZHNfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3N0eShkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIHRoZW1lcywgb3B0cykge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2Vfc3R5X2JpbigoZGF0YS8qOmFueSovKSwgdGhlbWVzLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3N0eV94bWwoKGRhdGEvKjphbnkqLyksIHRoZW1lcywgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3RoZW1lKGRhdGEvKjpzdHJpbmcqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiBwYXJzZV90aGVtZV94bWwoZGF0YSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3NzdChkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6U1NUKi8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2Vfc3N0X2JpbigoZGF0YS8qOmFueSovKSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV9zc3RfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfY21udChkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6QXJyYXk8UmF3Q29tbWVudD4qLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9jb21tZW50c19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfY29tbWVudHNfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfY2MoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9jY19iaW4oKGRhdGEvKjphbnkqLyksIG5hbWUsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfY2NfeG1sKChkYXRhLyo6YW55Ki8pLCBuYW1lLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfeGxpbmsoZGF0YSwgcmVsLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3hsaW5rX2JpbigoZGF0YS8qOmFueSovKSwgcmVsLCBuYW1lLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3hsaW5rX3htbCgoZGF0YS8qOmFueSovKSwgcmVsLCBuYW1lLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfeGxtZXRhKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfeGxtZXRhX2JpbigoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV94bG1ldGFfeG1sKChkYXRhLyo6YW55Ki8pLCBuYW1lLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd2Iod2IsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV93Yl9iaW4gOiB3cml0ZV93Yl94bWwpKHdiLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3MoZGF0YS8qOm51bWJlciovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV93c19iaW4gOiB3cml0ZV93c194bWwpKGRhdGEsIG9wdHMsIHdiLCByZWxzKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5mdW5jdGlvbiB3cml0ZV9jcyhkYXRhLyo6bnVtYmVyKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX2NzX2JpbiA6IHdyaXRlX2NzX3htbCkoZGF0YSwgb3B0cywgd2IsIHJlbHMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9zdHkoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX3N0eV9iaW4gOiB3cml0ZV9zdHlfeG1sKShkYXRhLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfc3N0KGRhdGEvKjpTU1QqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX3NzdF9iaW4gOiB3cml0ZV9zc3RfeG1sKShkYXRhLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY21udChkYXRhLyo6QXJyYXk8YW55PiovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfY29tbWVudHNfYmluIDogd3JpdGVfY29tbWVudHNfeG1sKShkYXRhLCBvcHRzKTtcbn1cbi8qXG5mdW5jdGlvbiB3cml0ZV9jYyhkYXRhLCBuYW1lOnN0cmluZywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9jY19iaW4gOiB3cml0ZV9jY194bWwpKGRhdGEsIG9wdHMpO1xufVxuKi9cblxuZnVuY3Rpb24gd3JpdGVfeGxtZXRhKG5hbWUvKjpzdHJpbmcqLykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV94bG1ldGFfYmluIDogd3JpdGVfeGxtZXRhX3htbCkoKTtcbn1cbnZhciBhdHRyZWdleGcyPS8oW1xcdzpdKyk9KCg/OlwiKShbXlwiXSopKD86XCIpfCg/OicpKFteJ10qKSg/OicpKS9nO1xudmFyIGF0dHJlZ2V4Mj0vKFtcXHc6XSspPSgoPzpcIikoPzpbXlwiXSopKD86XCIpfCg/OicpKD86W14nXSopKD86JykpLztcbmZ1bmN0aW9uIHhsbWxfcGFyc2V4bWx0YWcodGFnLyo6c3RyaW5nKi8sIHNraXBfcm9vdC8qOj9ib29sZWFuKi8pIHtcblx0dmFyIHdvcmRzID0gdGFnLnNwbGl0KC9cXHMrLyk7XG5cdHZhciB6Lyo6YW55Ki8gPSAoW10vKjphbnkqLyk7IGlmKCFza2lwX3Jvb3QpIHpbMF0gPSB3b3Jkc1swXTtcblx0aWYod29yZHMubGVuZ3RoID09PSAxKSByZXR1cm4gejtcblx0dmFyIG0gPSB0YWcubWF0Y2goYXR0cmVnZXhnMiksIHksIGosIHcsIGk7XG5cdGlmKG0pIGZvcihpID0gMDsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0eSA9IG1baV0ubWF0Y2goYXR0cmVnZXgyKTtcbi8qOjogaWYoIXkgfHwgIXlbMl0pIGNvbnRpbnVlOyAqL1xuXHRcdGlmKChqPXlbMV0uaW5kZXhPZihcIjpcIikpID09PSAtMSkgelt5WzFdXSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHRlbHNlIHtcblx0XHRcdGlmKHlbMV0uc2xpY2UoMCw2KSA9PT0gXCJ4bWxuczpcIikgdyA9IFwieG1sbnNcIit5WzFdLnNsaWNlKDYpO1xuXHRcdFx0ZWxzZSB3ID0geVsxXS5zbGljZShqKzEpO1xuXHRcdFx0elt3XSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB4bG1sX3BhcnNleG1sdGFnb2JqKHRhZy8qOnN0cmluZyovKSB7XG5cdHZhciB3b3JkcyA9IHRhZy5zcGxpdCgvXFxzKy8pO1xuXHR2YXIgeiA9IHt9O1xuXHRpZih3b3Jkcy5sZW5ndGggPT09IDEpIHJldHVybiB6O1xuXHR2YXIgbSA9IHRhZy5tYXRjaChhdHRyZWdleGcyKSwgeSwgaiwgdywgaTtcblx0aWYobSkgZm9yKGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHR5ID0gbVtpXS5tYXRjaChhdHRyZWdleDIpO1xuLyo6OiBpZigheSB8fCAheVsyXSkgY29udGludWU7ICovXG5cdFx0aWYoKGo9eVsxXS5pbmRleE9mKFwiOlwiKSkgPT09IC0xKSB6W3lbMV1dID0geVsyXS5zbGljZSgxLHlbMl0ubGVuZ3RoLTEpO1xuXHRcdGVsc2Uge1xuXHRcdFx0aWYoeVsxXS5zbGljZSgwLDYpID09PSBcInhtbG5zOlwiKSB3ID0gXCJ4bWxuc1wiK3lbMV0uc2xpY2UoNik7XG5cdFx0XHRlbHNlIHcgPSB5WzFdLnNsaWNlKGorMSk7XG5cdFx0XHR6W3ddID0geVsyXS5zbGljZSgxLHlbMl0ubGVuZ3RoLTEpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gejtcbn1cblxuLy8gLS0tLVxuXG4vKiBtYXAgZnJvbSB4bG1sIG5hbWVkIGZvcm1hdHMgdG8gU1NGIFRPRE86IGxvY2FsaXplICovXG52YXIgWExNTEZvcm1hdE1hcC8qOiB7W3N0cmluZ106c3RyaW5nfSovO1xuXG5mdW5jdGlvbiB4bG1sX2Zvcm1hdChmb3JtYXQsIHZhbHVlKS8qOnN0cmluZyovIHtcblx0dmFyIGZtdCA9IFhMTUxGb3JtYXRNYXBbZm9ybWF0XSB8fCB1bmVzY2FwZXhtbChmb3JtYXQpO1xuXHRpZihmbXQgPT09IFwiR2VuZXJhbFwiKSByZXR1cm4gU1NGX2dlbmVyYWwodmFsdWUpO1xuXHRyZXR1cm4gU1NGX2Zvcm1hdChmbXQsIHZhbHVlKTtcbn1cblxuZnVuY3Rpb24geGxtbF9zZXRfY3VzdHByb3AoQ3VzdHByb3BzLCBrZXksIGNwLCB2YWwvKjpzdHJpbmcqLykge1xuXHR2YXIgb3ZhbC8qOmFueSovID0gdmFsO1xuXHRzd2l0Y2goKGNwWzBdLm1hdGNoKC9kdDpkdD1cIihbXFx3Ll0rKVwiLyl8fFtcIlwiLFwiXCJdKVsxXSkge1xuXHRcdGNhc2UgXCJib29sZWFuXCI6IG92YWwgPSBwYXJzZXhtbGJvb2wodmFsKTsgYnJlYWs7XG5cdFx0Y2FzZSBcImkyXCI6IGNhc2UgXCJpbnRcIjogb3ZhbCA9IHBhcnNlSW50KHZhbCwgMTApOyBicmVhaztcblx0XHRjYXNlIFwicjRcIjogY2FzZSBcImZsb2F0XCI6IG92YWwgPSBwYXJzZUZsb2F0KHZhbCk7IGJyZWFrO1xuXHRcdGNhc2UgXCJkYXRlXCI6IGNhc2UgXCJkYXRlVGltZS50elwiOiBvdmFsID0gcGFyc2VEYXRlKHZhbCk7IGJyZWFrO1xuXHRcdGNhc2UgXCJpOFwiOiBjYXNlIFwic3RyaW5nXCI6IGNhc2UgXCJmaXhlZFwiOiBjYXNlIFwidXVpZFwiOiBjYXNlIFwiYmluLmJhc2U2NFwiOiBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJiYWQgY3VzdHByb3A6XCIgKyBjcFswXSk7XG5cdH1cblx0Q3VzdHByb3BzW3VuZXNjYXBleG1sKGtleSldID0gb3ZhbDtcbn1cblxuZnVuY3Rpb24gc2FmZV9mb3JtYXRfeGxtbChjZWxsLyo6Q2VsbCovLCBuZiwgbykge1xuXHRpZihjZWxsLnQgPT09ICd6JykgcmV0dXJuO1xuXHRpZighbyB8fCBvLmNlbGxUZXh0ICE9PSBmYWxzZSkgdHJ5IHtcblx0XHRpZihjZWxsLnQgPT09ICdlJykgeyBjZWxsLncgPSBjZWxsLncgfHwgQkVycltjZWxsLnZdOyB9XG5cdFx0ZWxzZSBpZihuZiA9PT0gXCJHZW5lcmFsXCIpIHtcblx0XHRcdGlmKGNlbGwudCA9PT0gJ24nKSB7XG5cdFx0XHRcdGlmKChjZWxsLnZ8MCkgPT09IGNlbGwudikgY2VsbC53ID0gY2VsbC52LnRvU3RyaW5nKDEwKTtcblx0XHRcdFx0ZWxzZSBjZWxsLncgPSBTU0ZfZ2VuZXJhbF9udW0oY2VsbC52KTtcblx0XHRcdH1cblx0XHRcdGVsc2UgY2VsbC53ID0gU1NGX2dlbmVyYWwoY2VsbC52KTtcblx0XHR9XG5cdFx0ZWxzZSBjZWxsLncgPSB4bG1sX2Zvcm1hdChuZnx8XCJHZW5lcmFsXCIsIGNlbGwudik7XG5cdH0gY2F0Y2goZSkgeyBpZihvLldURikgdGhyb3cgZTsgfVxuXHR0cnkge1xuXHRcdHZhciB6ID0gWExNTEZvcm1hdE1hcFtuZl18fG5mfHxcIkdlbmVyYWxcIjtcblx0XHRpZihvLmNlbGxORikgY2VsbC56ID0gejtcblx0XHRpZihvLmNlbGxEYXRlcyAmJiBjZWxsLnQgPT0gJ24nICYmIGZtdF9pc19kYXRlKHopKSB7XG5cdFx0XHR2YXIgX2QgPSBTU0ZfcGFyc2VfZGF0ZV9jb2RlKGNlbGwudik7IGlmKF9kKSB7IGNlbGwudCA9ICdkJzsgY2VsbC52ID0gbmV3IERhdGUoX2QueSwgX2QubS0xLF9kLmQsX2QuSCxfZC5NLF9kLlMsX2QudSk7IH1cblx0XHR9XG5cdH0gY2F0Y2goZSkgeyBpZihvLldURikgdGhyb3cgZTsgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzX3N0eWxlX3hsbWwoc3R5bGVzLCBzdGFnLCBvcHRzKSB7XG5cdGlmKG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdGlmKHN0YWcuSW50ZXJpb3IpIHtcblx0XHRcdHZhciBJID0gc3RhZy5JbnRlcmlvcjtcblx0XHRcdGlmKEkuUGF0dGVybikgSS5wYXR0ZXJuVHlwZSA9IFhMTUxQYXR0ZXJuVHlwZU1hcFtJLlBhdHRlcm5dIHx8IEkuUGF0dGVybjtcblx0XHR9XG5cdH1cblx0c3R5bGVzW3N0YWcuSURdID0gc3RhZztcbn1cblxuLyogVE9ETzogdGhlcmUgbXVzdCBleGlzdCBzb21lIGZvcm0gb2YgT1NQLWJsZXNzZWQgc3BlYyAqL1xuZnVuY3Rpb24gcGFyc2VfeGxtbF9kYXRhKHhtbCwgc3MsIGRhdGEsIGNlbGwvKjphbnkqLywgYmFzZSwgc3R5bGVzLCBjc3R5LCByb3csIGFycmF5Ziwgbykge1xuXHR2YXIgbmYgPSBcIkdlbmVyYWxcIiwgc2lkID0gY2VsbC5TdHlsZUlELCBTID0ge307IG8gPSBvIHx8IHt9O1xuXHR2YXIgaW50ZXJpb3JzID0gW107XG5cdHZhciBpID0gMDtcblx0aWYoc2lkID09PSB1bmRlZmluZWQgJiYgcm93KSBzaWQgPSByb3cuU3R5bGVJRDtcblx0aWYoc2lkID09PSB1bmRlZmluZWQgJiYgY3N0eSkgc2lkID0gY3N0eS5TdHlsZUlEO1xuXHR3aGlsZShzdHlsZXNbc2lkXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0aWYoc3R5bGVzW3NpZF0ubmYpIG5mID0gc3R5bGVzW3NpZF0ubmY7XG5cdFx0aWYoc3R5bGVzW3NpZF0uSW50ZXJpb3IpIGludGVyaW9ycy5wdXNoKHN0eWxlc1tzaWRdLkludGVyaW9yKTtcblx0XHRpZighc3R5bGVzW3NpZF0uUGFyZW50KSBicmVhaztcblx0XHRzaWQgPSBzdHlsZXNbc2lkXS5QYXJlbnQ7XG5cdH1cblx0c3dpdGNoKGRhdGEuVHlwZSkge1xuXHRcdGNhc2UgJ0Jvb2xlYW4nOlxuXHRcdFx0Y2VsbC50ID0gJ2InO1xuXHRcdFx0Y2VsbC52ID0gcGFyc2V4bWxib29sKHhtbCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdTdHJpbmcnOlxuXHRcdFx0Y2VsbC50ID0gJ3MnOyBjZWxsLnIgPSB4bG1sX2ZpeHN0cih1bmVzY2FwZXhtbCh4bWwpKTtcblx0XHRcdGNlbGwudiA9ICh4bWwuaW5kZXhPZihcIjxcIikgPiAtMSA/IHVuZXNjYXBleG1sKHNzfHx4bWwpLnJlcGxhY2UoLzwuKj8+L2csIFwiXCIpIDogY2VsbC5yKTsgLy8gdG9kbzogQlIgZXRjXG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdEYXRlVGltZSc6XG5cdFx0XHRpZih4bWwuc2xpY2UoLTEpICE9IFwiWlwiKSB4bWwgKz0gXCJaXCI7XG5cdFx0XHRjZWxsLnYgPSAocGFyc2VEYXRlKHhtbCkgLSBuZXcgRGF0ZShEYXRlLlVUQygxODk5LCAxMSwgMzApKSkgLyAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG5cdFx0XHRpZihjZWxsLnYgIT09IGNlbGwudikgY2VsbC52ID0gdW5lc2NhcGV4bWwoeG1sKTtcblx0XHRcdGVsc2UgaWYoY2VsbC52PDYwKSBjZWxsLnYgPSBjZWxsLnYgLTE7XG5cdFx0XHRpZighbmYgfHwgbmYgPT0gXCJHZW5lcmFsXCIpIG5mID0gXCJ5eXl5LW1tLWRkXCI7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnTnVtYmVyJzpcblx0XHRcdGlmKGNlbGwudiA9PT0gdW5kZWZpbmVkKSBjZWxsLnY9K3htbDtcblx0XHRcdGlmKCFjZWxsLnQpIGNlbGwudCA9ICduJztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ0Vycm9yJzogY2VsbC50ID0gJ2UnOyBjZWxsLnYgPSBSQkVyclt4bWxdOyBpZihvLmNlbGxUZXh0ICE9PSBmYWxzZSkgY2VsbC53ID0geG1sOyBicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYoeG1sID09IFwiXCIgJiYgc3MgPT0gXCJcIikgeyBjZWxsLnQgPSAneic7IH1cblx0XHRcdGVsc2UgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHhsbWxfZml4c3RyKHNzfHx4bWwpOyB9XG5cdFx0XHRicmVhaztcblx0fVxuXHRzYWZlX2Zvcm1hdF94bG1sKGNlbGwsIG5mLCBvKTtcblx0aWYoby5jZWxsRm9ybXVsYSAhPT0gZmFsc2UpIHtcblx0XHRpZihjZWxsLkZvcm11bGEpIHtcblx0XHRcdHZhciBmc3RyID0gdW5lc2NhcGV4bWwoY2VsbC5Gb3JtdWxhKTtcblx0XHRcdC8qIHN0cmljdGx5IHNwZWFraW5nLCB0aGUgbGVhZGluZyA9IGlzIHJlcXVpcmVkIGJ1dCBzb21lIHdyaXRlcnMgb21pdCAqL1xuXHRcdFx0aWYoZnN0ci5jaGFyQ29kZUF0KDApID09IDYxIC8qID0gKi8pIGZzdHIgPSBmc3RyLnNsaWNlKDEpO1xuXHRcdFx0Y2VsbC5mID0gcmNfdG9fYTEoZnN0ciwgYmFzZSk7XG5cdFx0XHRkZWxldGUgY2VsbC5Gb3JtdWxhO1xuXHRcdFx0aWYoY2VsbC5BcnJheVJhbmdlID09IFwiUkNcIikgY2VsbC5GID0gcmNfdG9fYTEoXCJSQzpSQ1wiLCBiYXNlKTtcblx0XHRcdGVsc2UgaWYoY2VsbC5BcnJheVJhbmdlKSB7XG5cdFx0XHRcdGNlbGwuRiA9IHJjX3RvX2ExKGNlbGwuQXJyYXlSYW5nZSwgYmFzZSk7XG5cdFx0XHRcdGFycmF5Zi5wdXNoKFtzYWZlX2RlY29kZV9yYW5nZShjZWxsLkYpLCBjZWxsLkZdKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgYXJyYXlmLmxlbmd0aDsgKytpKVxuXHRcdFx0XHRpZihiYXNlLnIgPj0gYXJyYXlmW2ldWzBdLnMuciAmJiBiYXNlLnIgPD0gYXJyYXlmW2ldWzBdLmUucilcblx0XHRcdFx0XHRpZihiYXNlLmMgPj0gYXJyYXlmW2ldWzBdLnMuYyAmJiBiYXNlLmMgPD0gYXJyYXlmW2ldWzBdLmUuYylcblx0XHRcdFx0XHRcdGNlbGwuRiA9IGFycmF5ZltpXVsxXTtcblx0XHR9XG5cdH1cblx0aWYoby5jZWxsU3R5bGVzKSB7XG5cdFx0aW50ZXJpb3JzLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdFx0aWYoIVMucGF0dGVyblR5cGUgJiYgeC5wYXR0ZXJuVHlwZSkgUy5wYXR0ZXJuVHlwZSA9IHgucGF0dGVyblR5cGU7XG5cdFx0fSk7XG5cdFx0Y2VsbC5zID0gUztcblx0fVxuXHRpZihjZWxsLlN0eWxlSUQgIT09IHVuZGVmaW5lZCkgY2VsbC5peGZlID0gY2VsbC5TdHlsZUlEO1xufVxuXG5mdW5jdGlvbiB4bG1sX2NsZWFuX2NvbW1lbnQoY29tbWVudC8qOmFueSovKSB7XG5cdGNvbW1lbnQudCA9IGNvbW1lbnQudiB8fCBcIlwiO1xuXHRjb21tZW50LnQgPSBjb21tZW50LnQucmVwbGFjZSgvXFxyXFxuL2csXCJcXG5cIikucmVwbGFjZSgvXFxyL2csXCJcXG5cIik7XG5cdGNvbW1lbnQudiA9IGNvbW1lbnQudyA9IGNvbW1lbnQuaXhmZSA9IHVuZGVmaW5lZDtcbn1cblxuLyogVE9ETzogRXZlcnl0aGluZyAqL1xuZnVuY3Rpb24gcGFyc2VfeGxtbF94bWwoZCwgX29wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdG1ha2Vfc3NmKCk7XG5cdHZhciBzdHIgPSBkZWJvbSh4bG1sX25vcm1hbGl6ZShkKSk7XG5cdGlmKG9wdHMudHlwZSA9PSAnYmluYXJ5JyB8fCBvcHRzLnR5cGUgPT0gJ2FycmF5JyB8fCBvcHRzLnR5cGUgPT0gJ2Jhc2U2NCcpIHtcblx0XHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSBzdHIgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsIGNoYXJfY29kZXMoc3RyKSk7XG5cdFx0ZWxzZSBzdHIgPSB1dGY4cmVhZChzdHIpO1xuXHR9XG5cdHZhciBvcGVuaW5nID0gc3RyLnNsaWNlKDAsIDEwMjQpLnRvTG93ZXJDYXNlKCksIGlzaHRtbCA9IGZhbHNlO1xuXHRvcGVuaW5nID0gb3BlbmluZy5yZXBsYWNlKC9cIi4qP1wiL2csIFwiXCIpO1xuXHRpZigob3BlbmluZy5pbmRleE9mKFwiPlwiKSAmIDEwMjMpID4gTWF0aC5taW4oKG9wZW5pbmcuaW5kZXhPZihcIixcIikgJiAxMDIzKSwgKG9wZW5pbmcuaW5kZXhPZihcIjtcIikmMTAyMykpKSB7IHZhciBfbyA9IGR1cChvcHRzKTsgX28udHlwZSA9IFwic3RyaW5nXCI7IHJldHVybiBQUk4udG9fd29ya2Jvb2soc3RyLCBfbyk7IH1cblx0aWYob3BlbmluZy5pbmRleE9mKFwiPD94bWxcIikgPT0gLTEpIFtcImh0bWxcIiwgXCJ0YWJsZVwiLCBcImhlYWRcIiwgXCJtZXRhXCIsIFwic2NyaXB0XCIsIFwic3R5bGVcIiwgXCJkaXZcIl0uZm9yRWFjaChmdW5jdGlvbih0YWcpIHsgaWYob3BlbmluZy5pbmRleE9mKFwiPFwiICsgdGFnKSA+PSAwKSBpc2h0bWwgPSB0cnVlOyB9KTtcblx0aWYoaXNodG1sKSByZXR1cm4gaHRtbF90b193b3JrYm9vayhzdHIsIG9wdHMpO1xuXG5cdFhMTUxGb3JtYXRNYXAgPSAoe1xuXHRcdFwiR2VuZXJhbCBOdW1iZXJcIjogXCJHZW5lcmFsXCIsXG5cdFx0XCJHZW5lcmFsIERhdGVcIjogdGFibGVfZm10WzIyXSxcblx0XHRcIkxvbmcgRGF0ZVwiOiBcImRkZGQsIG1tbW0gZGQsIHl5eXlcIixcblx0XHRcIk1lZGl1bSBEYXRlXCI6IHRhYmxlX2ZtdFsxNV0sXG5cdFx0XCJTaG9ydCBEYXRlXCI6IHRhYmxlX2ZtdFsxNF0sXG5cdFx0XCJMb25nIFRpbWVcIjogdGFibGVfZm10WzE5XSxcblx0XHRcIk1lZGl1bSBUaW1lXCI6IHRhYmxlX2ZtdFsxOF0sXG5cdFx0XCJTaG9ydCBUaW1lXCI6IHRhYmxlX2ZtdFsyMF0sXG5cdFx0XCJDdXJyZW5jeVwiOiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcdFwiRml4ZWRcIjogdGFibGVfZm10WzJdLFxuXHRcdFwiU3RhbmRhcmRcIjogdGFibGVfZm10WzRdLFxuXHRcdFwiUGVyY2VudFwiOiB0YWJsZV9mbXRbMTBdLFxuXHRcdFwiU2NpZW50aWZpY1wiOiB0YWJsZV9mbXRbMTFdLFxuXHRcdFwiWWVzL05vXCI6ICdcIlllc1wiO1wiWWVzXCI7XCJOb1wiO0AnLFxuXHRcdFwiVHJ1ZS9GYWxzZVwiOiAnXCJUcnVlXCI7XCJUcnVlXCI7XCJGYWxzZVwiO0AnLFxuXHRcdFwiT24vT2ZmXCI6ICdcIlllc1wiO1wiWWVzXCI7XCJOb1wiO0AnXG5cdH0vKjphbnkqLyk7XG5cblxuXHR2YXIgUm47XG5cdHZhciBzdGF0ZSA9IFtdLCB0bXA7XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdHZhciBzaGVldHMgPSB7fSwgc2hlZXRuYW1lcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBjdXJzaGVldC8qOldvcmtzaGVldCovID0gKG9wdHMuZGVuc2UgPyBbXSA6IHt9KSwgc2hlZXRuYW1lID0gXCJcIjtcblx0dmFyIGNlbGwgPSAoe30vKjphbnkqLyksIHJvdyA9IHt9Oy8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0dmFyIGR0YWcgPSB4bG1sX3BhcnNleG1sdGFnKCc8RGF0YSBzczpUeXBlPVwiU3RyaW5nXCI+JyksIGRpZHggPSAwO1xuXHR2YXIgYyA9IDAsIHIgPSAwO1xuXHR2YXIgcmVmZ3Vlc3MvKjpSYW5nZSovID0ge3M6IHtyOjIwMDAwMDAsIGM6MjAwMDAwMH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0dmFyIHN0eWxlcyA9IHt9LCBzdGFnID0ge307XG5cdHZhciBzcyA9IFwiXCIsIGZpZHggPSAwO1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIFByb3BzID0ge30sIEN1c3Rwcm9wcyA9IHt9LCBwaWR4ID0gMCwgY3AgPSBbXTtcblx0dmFyIGNvbW1lbnRzLyo6QXJyYXk8Q29tbWVudD4qLyA9IFtdLCBjb21tZW50Lyo6Q29tbWVudCovID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgY3N0eXMgPSBbXSwgY3N0eSwgc2VlbmNvbCA9IGZhbHNlO1xuXHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdLCByb3dvYmogPSB7fSwgY2MgPSAwLCByciA9IDA7XG5cdHZhciBXb3JrYm9vay8qOldCV0JQcm9wcyovID0gKHsgU2hlZXRzOltdLCBXQlByb3BzOntkYXRlMTkwNDpmYWxzZX0gfS8qOmFueSovKSwgd3Nwcm9wcyA9IHt9O1xuXHR4bG1scmVnZXgubGFzdEluZGV4ID0gMDtcblx0c3RyID0gc3RyLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vbWcsXCJcIik7XG5cdHZhciByYXdfUm4zID0gXCJcIjtcblx0d2hpbGUoKFJuID0geGxtbHJlZ2V4LmV4ZWMoc3RyKSkpIHN3aXRjaCgoUm5bM10gPSAocmF3X1JuMyA9IFJuWzNdKS50b0xvd2VyQ2FzZSgpKSkge1xuXHRcdGNhc2UgJ2RhdGEnIC8qY2FzZSAnRGF0YScqLzpcblx0XHRcdGlmKHJhd19SbjMgPT0gXCJkYXRhXCIpIHtcblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVsxXSkgYnJlYWs7XG5cdFx0XHRpZihSblsxXT09PScvJykgcGFyc2VfeGxtbF9kYXRhKHN0ci5zbGljZShkaWR4LCBSbi5pbmRleCksIHNzLCBkdGFnLCBzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF09PS8qXCJDb21tZW50XCIqL1wiY29tbWVudFwiP2NvbW1lbnQ6Y2VsbCwge2M6YyxyOnJ9LCBzdHlsZXMsIGNzdHlzW2NdLCByb3csIGFycmF5Ziwgb3B0cyk7XG5cdFx0XHRlbHNlIHsgc3MgPSBcIlwiOyBkdGFnID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7IGRpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDsgfVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnY2VsbCcgLypjYXNlICdDZWxsJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRpZihjb21tZW50cy5sZW5ndGggPiAwKSBjZWxsLmMgPSBjb21tZW50cztcblx0XHRcdFx0aWYoKCFvcHRzLnNoZWV0Um93cyB8fCBvcHRzLnNoZWV0Um93cyA+IHIpICYmIGNlbGwudiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0W3JdKSBjdXJzaGVldFtyXSA9IFtdO1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbcl1bY10gPSBjZWxsO1xuXHRcdFx0XHRcdH0gZWxzZSBjdXJzaGVldFtlbmNvZGVfY29sKGMpICsgZW5jb2RlX3JvdyhyKV0gPSBjZWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKGNlbGwuSFJlZikge1xuXHRcdFx0XHRcdGNlbGwubCA9ICh7VGFyZ2V0OnVuZXNjYXBleG1sKGNlbGwuSFJlZil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKGNlbGwuSFJlZlNjcmVlblRpcCkgY2VsbC5sLlRvb2x0aXAgPSBjZWxsLkhSZWZTY3JlZW5UaXA7XG5cdFx0XHRcdFx0ZGVsZXRlIGNlbGwuSFJlZjsgZGVsZXRlIGNlbGwuSFJlZlNjcmVlblRpcDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjZWxsLk1lcmdlQWNyb3NzIHx8IGNlbGwuTWVyZ2VEb3duKSB7XG5cdFx0XHRcdFx0Y2MgPSBjICsgKHBhcnNlSW50KGNlbGwuTWVyZ2VBY3Jvc3MsMTApfDApO1xuXHRcdFx0XHRcdHJyID0gciArIChwYXJzZUludChjZWxsLk1lcmdlRG93biwxMCl8MCk7XG5cdFx0XHRcdFx0bWVyZ2VzLnB1c2goe3M6e2M6YyxyOnJ9LGU6e2M6Y2Mscjpycn19KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighb3B0cy5zaGVldFN0dWJzKSB7IGlmKGNlbGwuTWVyZ2VBY3Jvc3MpIGMgPSBjYyArIDE7IGVsc2UgKytjOyB9XG5cdFx0XHRcdGVsc2UgaWYoY2VsbC5NZXJnZUFjcm9zcyB8fCBjZWxsLk1lcmdlRG93bikge1xuXHRcdFx0XHRcdC8qOjogaWYoIWNjKSBjYyA9IDA7IGlmKCFycikgcnIgPSAwOyAqL1xuXHRcdFx0XHRcdGZvcih2YXIgY21hID0gYzsgY21hIDw9IGNjOyArK2NtYSkge1xuXHRcdFx0XHRcdFx0Zm9yKHZhciBjbWQgPSByOyBjbWQgPD0gcnI7ICsrY21kKSB7XG5cdFx0XHRcdFx0XHRcdGlmKGNtYSA+IGMgfHwgY21kID4gcikge1xuXHRcdFx0XHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtjbWRdKSBjdXJzaGVldFtjbWRdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJzaGVldFtjbWRdW2NtYV0gPSB7dDoneid9O1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBjdXJzaGVldFtlbmNvZGVfY29sKGNtYSkgKyBlbmNvZGVfcm93KGNtZCldID0ge3Q6J3onfTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjID0gY2MgKyAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgKytjO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2VsbCA9IHhsbWxfcGFyc2V4bWx0YWdvYmooUm5bMF0pO1xuXHRcdFx0XHRpZihjZWxsLkluZGV4KSBjID0gK2NlbGwuSW5kZXggLSAxO1xuXHRcdFx0XHRpZihjIDwgcmVmZ3Vlc3Mucy5jKSByZWZndWVzcy5zLmMgPSBjO1xuXHRcdFx0XHRpZihjID4gcmVmZ3Vlc3MuZS5jKSByZWZndWVzcy5lLmMgPSBjO1xuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgKytjO1xuXHRcdFx0XHRjb21tZW50cyA9IFtdO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAncm93JyAvKmNhc2UgJ1JvdycqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nIHx8IFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSB7XG5cdFx0XHRcdGlmKHIgPCByZWZndWVzcy5zLnIpIHJlZmd1ZXNzLnMuciA9IHI7XG5cdFx0XHRcdGlmKHIgPiByZWZndWVzcy5lLnIpIHJlZmd1ZXNzLmUuciA9IHI7XG5cdFx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSB7XG5cdFx0XHRcdFx0cm93ID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdFx0aWYocm93LkluZGV4KSByID0gK3Jvdy5JbmRleCAtIDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0YyA9IDA7ICsrcjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJvdyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRpZihyb3cuSW5kZXgpIHIgPSArcm93LkluZGV4IC0gMTtcblx0XHRcdFx0cm93b2JqID0ge307XG5cdFx0XHRcdGlmKHJvdy5BdXRvRml0SGVpZ2h0ID09IFwiMFwiIHx8IHJvdy5IZWlnaHQpIHtcblx0XHRcdFx0XHRyb3dvYmouaHB4ID0gcGFyc2VJbnQocm93LkhlaWdodCwgMTApOyByb3dvYmouaHB0ID0gcHgycHQocm93b2JqLmhweCk7XG5cdFx0XHRcdFx0cm93aW5mb1tyXSA9IHJvd29iajtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihyb3cuSGlkZGVuID09IFwiMVwiKSB7IHJvd29iai5oaWRkZW4gPSB0cnVlOyByb3dpbmZvW3JdID0gcm93b2JqOyB9XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICd3b3Jrc2hlZXQnIC8qY2FzZSAnV29ya3NoZWV0JyovOiAvKiBUT0RPOiByZWFkIHJhbmdlIGZyb20gRnVsbFJvd3MvRnVsbENvbHVtbnMgKi9cblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO1xuXHRcdFx0XHRzaGVldG5hbWVzLnB1c2goc2hlZXRuYW1lKTtcblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5yIDw9IHJlZmd1ZXNzLmUuciAmJiByZWZndWVzcy5zLmMgPD0gcmVmZ3Vlc3MuZS5jKSB7XG5cdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSByZWZndWVzcy5lLnIpIHtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W1wiIWZ1bGxyZWZcIl0gPSBjdXJzaGVldFtcIiFyZWZcIl07XG5cdFx0XHRcdFx0XHRyZWZndWVzcy5lLnIgPSBvcHRzLnNoZWV0Um93cyAtIDE7XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZihtZXJnZXMubGVuZ3RoKSBjdXJzaGVldFtcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdFx0XHRcdGlmKGNzdHlzLmxlbmd0aCA+IDApIGN1cnNoZWV0W1wiIWNvbHNcIl0gPSBjc3R5cztcblx0XHRcdFx0aWYocm93aW5mby5sZW5ndGggPiAwKSBjdXJzaGVldFtcIiFyb3dzXCJdID0gcm93aW5mbztcblx0XHRcdFx0c2hlZXRzW3NoZWV0bmFtZV0gPSBjdXJzaGVldDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlZmd1ZXNzID0ge3M6IHtyOjIwMDAwMDAsIGM6MjAwMDAwMH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHRcdFx0ciA9IGMgPSAwO1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdFx0dG1wID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdHNoZWV0bmFtZSA9IHVuZXNjYXBleG1sKHRtcC5OYW1lKTtcblx0XHRcdFx0Y3Vyc2hlZXQgPSAob3B0cy5kZW5zZSA/IFtdIDoge30pO1xuXHRcdFx0XHRtZXJnZXMgPSBbXTtcblx0XHRcdFx0YXJyYXlmID0gW107XG5cdFx0XHRcdHJvd2luZm8gPSBbXTtcblx0XHRcdFx0d3Nwcm9wcyA9IHtuYW1lOnNoZWV0bmFtZSwgSGlkZGVuOjB9O1xuXHRcdFx0XHRXb3JrYm9vay5TaGVldHMucHVzaCh3c3Byb3BzKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3RhYmxlJyAvKmNhc2UgJ1RhYmxlJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRlbHNlIGlmKFJuWzBdLnNsaWNlKC0yKSA9PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0XHRjc3R5cyA9IFtdOyBzZWVuY29sID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3N0eWxlJyAvKmNhc2UgJ1N0eWxlJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpIHByb2Nlc3Nfc3R5bGVfeGxtbChzdHlsZXMsIHN0YWcsIG9wdHMpO1xuXHRcdFx0ZWxzZSBzdGFnID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ251bWJlcmZvcm1hdCcgLypjYXNlICdOdW1iZXJGb3JtYXQnKi86XG5cdFx0XHRzdGFnLm5mID0gdW5lc2NhcGV4bWwoeGxtbF9wYXJzZXhtbHRhZyhSblswXSkuRm9ybWF0IHx8IFwiR2VuZXJhbFwiKTtcblx0XHRcdGlmKFhMTUxGb3JtYXRNYXBbc3RhZy5uZl0pIHN0YWcubmYgPSBYTE1MRm9ybWF0TWFwW3N0YWcubmZdO1xuXHRcdFx0Zm9yKHZhciBzc2ZpZHggPSAwOyBzc2ZpZHggIT0gMHgxODg7ICsrc3NmaWR4KSBpZih0YWJsZV9mbXRbc3NmaWR4XSA9PSBzdGFnLm5mKSBicmVhaztcblx0XHRcdGlmKHNzZmlkeCA9PSAweDE4OCkgZm9yKHNzZmlkeCA9IDB4Mzk7IHNzZmlkeCAhPSAweDE4ODsgKytzc2ZpZHgpIGlmKHRhYmxlX2ZtdFtzc2ZpZHhdID09IG51bGwpIHsgU1NGX2xvYWQoc3RhZy5uZiwgc3NmaWR4KTsgYnJlYWs7IH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnY29sdW1uJyAvKmNhc2UgJ0NvbHVtbicqLzpcblx0XHRcdGlmKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSAhPT0gLyonVGFibGUnKi8ndGFibGUnKSBicmVhaztcblx0XHRcdGNzdHkgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdGlmKGNzdHkuSGlkZGVuKSB7IGNzdHkuaGlkZGVuID0gdHJ1ZTsgZGVsZXRlIGNzdHkuSGlkZGVuOyB9XG5cdFx0XHRpZihjc3R5LldpZHRoKSBjc3R5LndweCA9IHBhcnNlSW50KGNzdHkuV2lkdGgsIDEwKTtcblx0XHRcdGlmKCFzZWVuY29sICYmIGNzdHkud3B4ID4gMTApIHtcblx0XHRcdFx0c2VlbmNvbCA9IHRydWU7IE1EVyA9IERFRl9NRFc7IC8vZmluZF9tZHdfd3B4KGNzdHkud3B4KTtcblx0XHRcdFx0Zm9yKHZhciBfY29sID0gMDsgX2NvbCA8IGNzdHlzLmxlbmd0aDsgKytfY29sKSBpZihjc3R5c1tfY29sXSkgcHJvY2Vzc19jb2woY3N0eXNbX2NvbF0pO1xuXHRcdFx0fVxuXHRcdFx0aWYoc2VlbmNvbCkgcHJvY2Vzc19jb2woY3N0eSk7XG5cdFx0XHRjc3R5c1soY3N0eS5JbmRleC0xfHxjc3R5cy5sZW5ndGgpXSA9IGNzdHk7XG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgK2NzdHkuU3BhbjsgKytpKSBjc3R5c1tjc3R5cy5sZW5ndGhdID0gZHVwKGNzdHkpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICduYW1lZHJhbmdlJyAvKmNhc2UgJ05hbWVkUmFuZ2UnKi86XG5cdFx0XHRpZihSblsxXT09PScvJykgYnJlYWs7XG5cdFx0XHRpZighV29ya2Jvb2suTmFtZXMpIFdvcmtib29rLk5hbWVzID0gW107XG5cdFx0XHR2YXIgX05hbWVkUmFuZ2UgPSBwYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHR2YXIgX0RlZmluZWROYW1lLyo6RGVmaW5lZE5hbWUqLyA9ICh7XG5cdFx0XHRcdE5hbWU6IF9OYW1lZFJhbmdlLk5hbWUsXG5cdFx0XHRcdFJlZjogcmNfdG9fYTEoX05hbWVkUmFuZ2UuUmVmZXJzVG8uc2xpY2UoMSksIHtyOjAsIGM6MH0pXG5cdFx0XHR9Lyo6YW55Ki8pO1xuXHRcdFx0aWYoV29ya2Jvb2suU2hlZXRzLmxlbmd0aD4wKSBfRGVmaW5lZE5hbWUuU2hlZXQ9V29ya2Jvb2suU2hlZXRzLmxlbmd0aC0xO1xuXHRcdFx0Lyo6OiBpZihXb3JrYm9vay5OYW1lcykgKi9Xb3JrYm9vay5OYW1lcy5wdXNoKF9EZWZpbmVkTmFtZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ25hbWVkY2VsbCcgLypjYXNlICdOYW1lZENlbGwnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2InIC8qY2FzZSAnQicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnaScgLypjYXNlICdJJyovOiBicmVhaztcblx0XHRjYXNlICd1JyAvKmNhc2UgJ1UnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3MnIC8qY2FzZSAnUycqLzogYnJlYWs7XG5cdFx0Y2FzZSAnZW0nIC8qY2FzZSAnRU0nKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2gyJyAvKmNhc2UgJ0gyJyovOiBicmVhaztcblx0XHRjYXNlICdoMycgLypjYXNlICdIMycqLzogYnJlYWs7XG5cdFx0Y2FzZSAnc3ViJyAvKmNhc2UgJ1N1YicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnc3VwJyAvKmNhc2UgJ1N1cCcqLzogYnJlYWs7XG5cdFx0Y2FzZSAnc3BhbicgLypjYXNlICdTcGFuJyovOiBicmVhaztcblx0XHRjYXNlICdhbGlnbm1lbnQnIC8qY2FzZSAnQWxpZ25tZW50JyovOlxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnYm9yZGVycycgLypjYXNlICdCb3JkZXJzJyovOiBicmVhaztcblx0XHRjYXNlICdib3JkZXInIC8qY2FzZSAnQm9yZGVyJyovOiBicmVhaztcblx0XHRjYXNlICdmb250JyAvKmNhc2UgJ0ZvbnQnKi86XG5cdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHNzICs9IHN0ci5zbGljZShmaWR4LCBSbi5pbmRleCk7XG5cdFx0XHRlbHNlIGZpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2ludGVyaW9yJyAvKmNhc2UgJ0ludGVyaW9yJyovOlxuXHRcdFx0aWYoIW9wdHMuY2VsbFN0eWxlcykgYnJlYWs7XG5cdFx0XHRzdGFnLkludGVyaW9yID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdwcm90ZWN0aW9uJyAvKmNhc2UgJ1Byb3RlY3Rpb24nKi86IGJyZWFrO1xuXG5cdFx0Y2FzZSAnYXV0aG9yJyAvKmNhc2UgJ0F1dGhvcicqLzpcblx0XHRjYXNlICd0aXRsZScgLypjYXNlICdUaXRsZScqLzpcblx0XHRjYXNlICdkZXNjcmlwdGlvbicgLypjYXNlICdEZXNjcmlwdGlvbicqLzpcblx0XHRjYXNlICdjcmVhdGVkJyAvKmNhc2UgJ0NyZWF0ZWQnKi86XG5cdFx0Y2FzZSAna2V5d29yZHMnIC8qY2FzZSAnS2V5d29yZHMnKi86XG5cdFx0Y2FzZSAnc3ViamVjdCcgLypjYXNlICdTdWJqZWN0JyovOlxuXHRcdGNhc2UgJ2NhdGVnb3J5JyAvKmNhc2UgJ0NhdGVnb3J5JyovOlxuXHRcdGNhc2UgJ2NvbXBhbnknIC8qY2FzZSAnQ29tcGFueScqLzpcblx0XHRjYXNlICdsYXN0YXV0aG9yJyAvKmNhc2UgJ0xhc3RBdXRob3InKi86XG5cdFx0Y2FzZSAnbGFzdHNhdmVkJyAvKmNhc2UgJ0xhc3RTYXZlZCcqLzpcblx0XHRjYXNlICdsYXN0cHJpbnRlZCcgLypjYXNlICdMYXN0UHJpbnRlZCcqLzpcblx0XHRjYXNlICd2ZXJzaW9uJyAvKmNhc2UgJ1ZlcnNpb24nKi86XG5cdFx0Y2FzZSAncmV2aXNpb24nIC8qY2FzZSAnUmV2aXNpb24nKi86XG5cdFx0Y2FzZSAndG90YWx0aW1lJyAvKmNhc2UgJ1RvdGFsVGltZScqLzpcblx0XHRjYXNlICdoeXBlcmxpbmtiYXNlJyAvKmNhc2UgJ0h5cGVybGlua0Jhc2UnKi86XG5cdFx0Y2FzZSAnbWFuYWdlcicgLypjYXNlICdNYW5hZ2VyJyovOlxuXHRcdGNhc2UgJ2NvbnRlbnRzdGF0dXMnIC8qY2FzZSAnQ29udGVudFN0YXR1cycqLzpcblx0XHRjYXNlICdpZGVudGlmaWVyJyAvKmNhc2UgJ0lkZW50aWZpZXInKi86XG5cdFx0Y2FzZSAnbGFuZ3VhZ2UnIC8qY2FzZSAnTGFuZ3VhZ2UnKi86XG5cdFx0Y2FzZSAnYXBwbmFtZScgLypjYXNlICdBcHBOYW1lJyovOlxuXHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSB4bG1sX3NldF9wcm9wKFByb3BzLCByYXdfUm4zLCBzdHIuc2xpY2UocGlkeCwgUm4uaW5kZXgpKTtcblx0XHRcdGVsc2UgcGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAncGFyYWdyYXBocycgLypjYXNlICdQYXJhZ3JhcGhzJyovOiBicmVhaztcblxuXHRcdGNhc2UgJ3N0eWxlcycgLypjYXNlICdTdHlsZXMnKi86XG5cdFx0Y2FzZSAnd29ya2Jvb2snIC8qY2FzZSAnV29ya2Jvb2snKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdGVsc2Ugc3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ2NvbW1lbnQnIC8qY2FzZSAnQ29tbWVudCcqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO1xuXHRcdFx0XHR4bG1sX2NsZWFuX2NvbW1lbnQoY29tbWVudCk7XG5cdFx0XHRcdGNvbW1lbnRzLnB1c2goY29tbWVudCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdFx0dG1wID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdGNvbW1lbnQgPSAoe2E6dG1wLkF1dGhvcn0vKjphbnkqLyk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ2F1dG9maWx0ZXInIC8qY2FzZSAnQXV0b0ZpbHRlcicqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtcblx0XHRcdFx0dmFyIEF1dG9GaWx0ZXIgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0Y3Vyc2hlZXRbJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjpyY190b19hMShBdXRvRmlsdGVyLlJhbmdlKS5yZXBsYWNlKC9cXCQvZyxcIlwiKSB9O1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICduYW1lJyAvKmNhc2UgJ05hbWUnKi86IGJyZWFrO1xuXG5cdFx0Y2FzZSAnZGF0YXZhbGlkYXRpb24nIC8qY2FzZSAnRGF0YVZhbGlkYXRpb24nKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAncGl4ZWxzcGVyaW5jaCcgLypjYXNlICdQaXhlbHNQZXJJbmNoJyovOlxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnY29tcG9uZW50b3B0aW9ucycgLypjYXNlICdDb21wb25lbnRPcHRpb25zJyovOlxuXHRcdGNhc2UgJ2RvY3VtZW50cHJvcGVydGllcycgLypjYXNlICdEb2N1bWVudFByb3BlcnRpZXMnKi86XG5cdFx0Y2FzZSAnY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzJyAvKmNhc2UgJ0N1c3RvbURvY3VtZW50UHJvcGVydGllcycqLzpcblx0XHRjYXNlICdvZmZpY2Vkb2N1bWVudHNldHRpbmdzJyAvKmNhc2UgJ09mZmljZURvY3VtZW50U2V0dGluZ3MnKi86XG5cdFx0Y2FzZSAncGl2b3R0YWJsZScgLypjYXNlICdQaXZvdFRhYmxlJyovOlxuXHRcdGNhc2UgJ3Bpdm90Y2FjaGUnIC8qY2FzZSAnUGl2b3RDYWNoZScqLzpcblx0XHRjYXNlICduYW1lcycgLypjYXNlICdOYW1lcycqLzpcblx0XHRjYXNlICdtYXBpbmZvJyAvKmNhc2UgJ01hcEluZm8nKi86XG5cdFx0Y2FzZSAncGFnZWJyZWFrcycgLypjYXNlICdQYWdlQnJlYWtzJyovOlxuXHRcdGNhc2UgJ3F1ZXJ5dGFibGUnIC8qY2FzZSAnUXVlcnlUYWJsZScqLzpcblx0XHRjYXNlICdzb3J0aW5nJyAvKmNhc2UgJ1NvcnRpbmcnKi86XG5cdFx0Y2FzZSAnc2NoZW1hJyAvKmNhc2UgJ1NjaGVtYScqLzogLy9jYXNlICdkYXRhJyAvKmNhc2UgJ2RhdGEnKi86XG5cdFx0Y2FzZSAnY29uZGl0aW9uYWxmb3JtYXR0aW5nJyAvKmNhc2UgJ0NvbmRpdGlvbmFsRm9ybWF0dGluZycqLzpcblx0XHRjYXNlICdzbWFydHRhZ3R5cGUnIC8qY2FzZSAnU21hcnRUYWdUeXBlJyovOlxuXHRcdGNhc2UgJ3NtYXJ0dGFncycgLypjYXNlICdTbWFydFRhZ3MnKi86XG5cdFx0Y2FzZSAnZXhjZWx3b3JrYm9vaycgLypjYXNlICdFeGNlbFdvcmtib29rJyovOlxuXHRcdGNhc2UgJ3dvcmtib29rb3B0aW9ucycgLypjYXNlICdXb3JrYm9va09wdGlvbnMnKi86XG5cdFx0Y2FzZSAnd29ya3NoZWV0b3B0aW9ucycgLypjYXNlICdXb3Jrc2hlZXRPcHRpb25zJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbnVsbCcgLypjYXNlICdOdWxsJyovOiBicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHQvKiBGT0RTIGZpbGUgcm9vdCBpcyA8b2ZmaWNlOmRvY3VtZW50PiAqL1xuXHRcdFx0aWYoc3RhdGUubGVuZ3RoID09IDAgJiYgUm5bM10gPT0gXCJkb2N1bWVudFwiKSByZXR1cm4gcGFyc2VfZm9kcyhzdHIsIG9wdHMpO1xuXHRcdFx0LyogVU9TIGZpbGUgcm9vdCBpcyA8dW9mOlVPRj4gKi9cblx0XHRcdGlmKHN0YXRlLmxlbmd0aCA9PSAwICYmIFJuWzNdID09IFwidW9mXCIvKlwiVU9GXCIqLykgcmV0dXJuIHBhcnNlX2ZvZHMoc3RyLCBvcHRzKTtcblxuXHRcdFx0dmFyIHNlZW4gPSB0cnVlO1xuXHRcdFx0c3dpdGNoKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSkge1xuXHRcdFx0XHQvKiBPZmZpY2VEb2N1bWVudFNldHRpbmdzICovXG5cdFx0XHRcdGNhc2UgJ29mZmljZWRvY3VtZW50c2V0dGluZ3MnIC8qY2FzZSAnT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dwbmcnIC8qY2FzZSAnQWxsb3dQTkcnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24nIC8qY2FzZSAnUmVtb3ZlUGVyc29uYWxJbmZvcm1hdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG93bmxvYWRjb21wb25lbnRzJyAvKmNhc2UgJ0Rvd25sb2FkQ29tcG9uZW50cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbG9jYXRpb25vZmNvbXBvbmVudHMnIC8qY2FzZSAnTG9jYXRpb25PZkNvbXBvbmVudHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbG9ycycgLypjYXNlICdDb2xvcnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbG9yJyAvKmNhc2UgJ0NvbG9yJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbmRleCcgLypjYXNlICdJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmdiJyAvKmNhc2UgJ1JHQicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGFyZ2V0c2NyZWVuc2l6ZScgLypjYXNlICdUYXJnZXRTY3JlZW5TaXplJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWFkb25seXJlY29tbWVuZGVkJyAvKmNhc2UgJ1JlYWRPbmx5UmVjb21tZW5kZWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBDb21wb25lbnRPcHRpb25zICovXG5cdFx0XHRcdGNhc2UgJ2NvbXBvbmVudG9wdGlvbnMnIC8qY2FzZSAnQ29tcG9uZW50T3B0aW9ucycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAndG9vbGJhcicgLypjYXNlICdUb29sYmFyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdoaWRlb2ZmaWNlbG9nbycgLypjYXNlICdIaWRlT2ZmaWNlTG9nbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3ByZWFkc2hlZXRhdXRvZml0JyAvKmNhc2UgJ1NwcmVhZHNoZWV0QXV0b0ZpdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGFiZWwnIC8qY2FzZSAnTGFiZWwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NhcHRpb24nIC8qY2FzZSAnQ2FwdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4aGVpZ2h0JyAvKmNhc2UgJ01heEhlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4d2lkdGgnIC8qY2FzZSAnTWF4V2lkdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25leHRzaGVldG51bWJlcicgLypjYXNlICdOZXh0U2hlZXROdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBFeGNlbFdvcmtib29rICovXG5cdFx0XHRcdGNhc2UgJ2V4Y2Vsd29ya2Jvb2snIC8qY2FzZSAnRXhjZWxXb3JrYm9vaycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnZGF0ZTE5MDQnIC8qY2FzZSAnRGF0ZTE5MDQnKi86XG5cdFx0XHRcdFx0XHQvKjo6IGlmKCFXb3JrYm9vay5XQlByb3BzKSBXb3JrYm9vay5XQlByb3BzID0ge307ICovXG5cdFx0XHRcdFx0XHRXb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dpbmRvd2hlaWdodCcgLypjYXNlICdXaW5kb3dIZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dpbmRvd3dpZHRoJyAvKmNhc2UgJ1dpbmRvd1dpZHRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3d0b3B4JyAvKmNhc2UgJ1dpbmRvd1RvcFgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dpbmRvd3RvcHknIC8qY2FzZSAnV2luZG93VG9wWScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGFicmF0aW8nIC8qY2FzZSAnVGFiUmF0aW8nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3RzdHJ1Y3R1cmUnIC8qY2FzZSAnUHJvdGVjdFN0cnVjdHVyZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHdpbmRvdycgLypjYXNlICdQcm90ZWN0V2luZG93JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0d2luZG93cycgLypjYXNlICdQcm90ZWN0V2luZG93cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlc2hlZXQnIC8qY2FzZSAnQWN0aXZlU2hlZXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rpc3BsYXlpbmtub3RlcycgLypjYXNlICdEaXNwbGF5SW5rTm90ZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpcnN0dmlzaWJsZXNoZWV0JyAvKmNhc2UgJ0ZpcnN0VmlzaWJsZVNoZWV0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdXBib29rJyAvKmNhc2UgJ1N1cEJvb2snKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0bmFtZScgLypjYXNlICdTaGVldE5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0aW5kZXgnIC8qY2FzZSAnU2hlZXRJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hlZXRpbmRleGZpcnN0JyAvKmNhc2UgJ1NoZWV0SW5kZXhGaXJzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hlZXRpbmRleGxhc3QnIC8qY2FzZSAnU2hlZXRJbmRleExhc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RsbCcgLypjYXNlICdEbGwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FjY2VwdGxhYmVsc2luZm9ybXVsYXMnIC8qY2FzZSAnQWNjZXB0TGFiZWxzSW5Gb3JtdWxhcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RzYXZlbGlua3ZhbHVlcycgLypjYXNlICdEb05vdFNhdmVMaW5rVmFsdWVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpdGVyYXRpb24nIC8qY2FzZSAnSXRlcmF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXhpdGVyYXRpb25zJyAvKmNhc2UgJ01heEl0ZXJhdGlvbnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heGNoYW5nZScgLypjYXNlICdNYXhDaGFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhdGgnIC8qY2FzZSAnUGF0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAneGN0JyAvKmNhc2UgJ1hjdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY291bnQnIC8qY2FzZSAnQ291bnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NlbGVjdGVkc2hlZXRzJyAvKmNhc2UgJ1NlbGVjdGVkU2hlZXRzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYWxjdWxhdGlvbicgLypjYXNlICdDYWxjdWxhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndW5jYWxjZWQnIC8qY2FzZSAnVW5jYWxjZWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3N0YXJ0dXBwcm9tcHQnIC8qY2FzZSAnU3RhcnR1cFByb21wdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY3JuJyAvKmNhc2UgJ0NybicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXh0ZXJubmFtZScgLypjYXNlICdFeHRlcm5OYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtdWxhJyAvKmNhc2UgJ0Zvcm11bGEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbGZpcnN0JyAvKmNhc2UgJ0NvbEZpcnN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xsYXN0JyAvKmNhc2UgJ0NvbExhc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dhbnRhZHZpc2UnIC8qY2FzZSAnV2FudEFkdmlzZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYm9vbGVhbicgLypjYXNlICdCb29sZWFuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcicgLypjYXNlICdFcnJvcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGV4dCcgLypjYXNlICdUZXh0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdvbGUnIC8qY2FzZSAnT0xFJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub2F1dG9yZWNvdmVyJyAvKmNhc2UgJ05vQXV0b1JlY292ZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3B1Ymxpc2hvYmplY3RzJyAvKmNhc2UgJ1B1Ymxpc2hPYmplY3RzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUnIC8qY2FzZSAnRG9Ob3RDYWxjdWxhdGVCZWZvcmVTYXZlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdudW1iZXInIC8qY2FzZSAnTnVtYmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZtb2RlcjFjMScgLypjYXNlICdSZWZNb2RlUjFDMScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW1iZWRzYXZlc21hcnR0YWdzJyAvKmNhc2UgJ0VtYmVkU2F2ZVNtYXJ0VGFncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFdvcmtib29rT3B0aW9ucyAqL1xuXHRcdFx0XHRjYXNlICd3b3JrYm9va29wdGlvbnMnIC8qY2FzZSAnV29ya2Jvb2tPcHRpb25zJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdvd2N2ZXJzaW9uJyAvKmNhc2UgJ09XQ1ZlcnNpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hlaWdodCcgLypjYXNlICdIZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dpZHRoJyAvKmNhc2UgJ1dpZHRoJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogV29ya3NoZWV0T3B0aW9ucyAqL1xuXHRcdFx0XHRjYXNlICd3b3Jrc2hlZXRvcHRpb25zJyAvKmNhc2UgJ1dvcmtzaGVldE9wdGlvbnMnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3Zpc2libGUnIC8qY2FzZSAnVmlzaWJsZScqLzpcblx0XHRcdFx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgc3dpdGNoKHN0ci5zbGljZShwaWR4LCBSbi5pbmRleCkpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIlNoZWV0SGlkZGVuXCI6IHdzcHJvcHMuSGlkZGVuID0gMTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJTaGVldFZlcnlIaWRkZW5cIjogd3Nwcm9wcy5IaWRkZW4gPSAyOyBicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2UgcGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGVhZGVyJyAvKmNhc2UgJ0hlYWRlcicqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKGN1cnNoZWV0WychbWFyZ2lucyddPXt9LCAneGxtbCcpO1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luKSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10uaGVhZGVyID0gK3BhcnNleG1sdGFnKFJuWzBdKS5NYXJnaW47XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb290ZXInIC8qY2FzZSAnRm9vdGVyJyovOlxuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMoY3Vyc2hlZXRbJyFtYXJnaW5zJ109e30sICd4bG1sJyk7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhcnNleG1sdGFnKFJuWzBdKS5NYXJnaW4pKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5mb290ZXIgPSArcGFyc2V4bWx0YWcoUm5bMF0pLk1hcmdpbjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VtYXJnaW5zJyAvKmNhc2UgJ1BhZ2VNYXJnaW5zJyovOlxuXHRcdFx0XHRcdFx0dmFyIHBhZ2VtYXJnaW5zID0gcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMoY3Vyc2hlZXRbJyFtYXJnaW5zJ109e30sJ3hsbWwnKTtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFnZW1hcmdpbnMuVG9wKSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10udG9wID0gK3BhZ2VtYXJnaW5zLlRvcDtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFnZW1hcmdpbnMuTGVmdCkpIGN1cnNoZWV0WychbWFyZ2lucyddLmxlZnQgPSArcGFnZW1hcmdpbnMuTGVmdDtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFnZW1hcmdpbnMuUmlnaHQpKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5yaWdodCA9ICtwYWdlbWFyZ2lucy5SaWdodDtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFnZW1hcmdpbnMuQm90dG9tKSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10uYm90dG9tID0gK3BhZ2VtYXJnaW5zLkJvdHRvbTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rpc3BsYXlyaWdodHRvbGVmdCcgLypjYXNlICdEaXNwbGF5UmlnaHRUb0xlZnQnKi86XG5cdFx0XHRcdFx0XHRpZighV29ya2Jvb2suVmlld3MpIFdvcmtib29rLlZpZXdzID0gW107XG5cdFx0XHRcdFx0XHRpZighV29ya2Jvb2suVmlld3NbMF0pIFdvcmtib29rLlZpZXdzWzBdID0ge307XG5cdFx0XHRcdFx0XHRXb3JrYm9vay5WaWV3c1swXS5SVEwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdmcmVlemVwYW5lcycgLypjYXNlICdGcmVlemVQYW5lcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZnJvemVubm9zcGxpdCcgLypjYXNlICdGcm96ZW5Ob1NwbGl0JyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ3NwbGl0aG9yaXpvbnRhbCcgLypjYXNlICdTcGxpdEhvcml6b250YWwnKi86XG5cdFx0XHRcdFx0Y2FzZSAnc3BsaXR2ZXJ0aWNhbCcgLypjYXNlICdTcGxpdFZlcnRpY2FsJyovOlxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXlncmlkbGluZXMnIC8qY2FzZSAnRG9Ob3REaXNwbGF5R3JpZGxpbmVzJyovOlxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdhY3RpdmVyb3cnIC8qY2FzZSAnQWN0aXZlUm93JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhY3RpdmVjb2wnIC8qY2FzZSAnQWN0aXZlQ29sJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0b3Byb3dib3R0b21wYW5lJyAvKmNhc2UgJ1RvcFJvd0JvdHRvbVBhbmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xlZnRjb2x1bW5yaWdodHBhbmUnIC8qY2FzZSAnTGVmdENvbHVtblJpZ2h0UGFuZScqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICd1bnN5bmNlZCcgLypjYXNlICdVbnN5bmNlZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJpbnQnIC8qY2FzZSAnUHJpbnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ByaW50ZXJyb3JzJyAvKmNhc2UgJ1ByaW50RXJyb3JzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYW5lcycgLypjYXNlICdQYW5lcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2NhbGUnIC8qY2FzZSAnU2NhbGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhbmUnIC8qY2FzZSAnUGFuZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJyAvKmNhc2UgJ051bWJlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGF5b3V0JyAvKmNhc2UgJ0xheW91dCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFnZXNldHVwJyAvKmNhc2UgJ1BhZ2VTZXR1cCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2VsZWN0ZWQnIC8qY2FzZSAnU2VsZWN0ZWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3RvYmplY3RzJyAvKmNhc2UgJ1Byb3RlY3RPYmplY3RzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbmFibGVzZWxlY3Rpb24nIC8qY2FzZSAnRW5hYmxlU2VsZWN0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0c2NlbmFyaW9zJyAvKmNhc2UgJ1Byb3RlY3RTY2VuYXJpb3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbGlkcHJpbnRlcmluZm8nIC8qY2FzZSAnVmFsaWRQcmludGVySW5mbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaG9yaXpvbnRhbHJlc29sdXRpb24nIC8qY2FzZSAnSG9yaXpvbnRhbFJlc29sdXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnRpY2FscmVzb2x1dGlvbicgLypjYXNlICdWZXJ0aWNhbFJlc29sdXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcm9mY29waWVzJyAvKmNhc2UgJ051bWJlcm9mQ29waWVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhY3RpdmVwYW5lJyAvKmNhc2UgJ0FjdGl2ZVBhbmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RvcHJvd3Zpc2libGUnIC8qY2FzZSAnVG9wUm93VmlzaWJsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGVmdGNvbHVtbnZpc2libGUnIC8qY2FzZSAnTGVmdENvbHVtblZpc2libGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpdHRvcGFnZScgLypjYXNlICdGaXRUb1BhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jhbmdlc2VsZWN0aW9uJyAvKmNhc2UgJ1JhbmdlU2VsZWN0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYXBlcnNpemVpbmRleCcgLypjYXNlICdQYXBlclNpemVJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFnZWxheW91dHpvb20nIC8qY2FzZSAnUGFnZUxheW91dFpvb20nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VicmVha3pvb20nIC8qY2FzZSAnUGFnZUJyZWFrWm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlsdGVyb24nIC8qY2FzZSAnRmlsdGVyT24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpdHdpZHRoJyAvKmNhc2UgJ0ZpdFdpZHRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXRoZWlnaHQnIC8qY2FzZSAnRml0SGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21tZW50c2xheW91dCcgLypjYXNlICdDb21tZW50c0xheW91dCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnem9vbScgLypjYXNlICdab29tJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsZWZ0dG9yaWdodCcgLypjYXNlICdMZWZ0VG9SaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZ3JpZGxpbmVzJyAvKmNhc2UgJ0dyaWRsaW5lcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dzb3J0JyAvKmNhc2UgJ0FsbG93U29ydCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dmaWx0ZXInIC8qY2FzZSAnQWxsb3dGaWx0ZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93aW5zZXJ0cm93cycgLypjYXNlICdBbGxvd0luc2VydFJvd3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93ZGVsZXRlcm93cycgLypjYXNlICdBbGxvd0RlbGV0ZVJvd3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93aW5zZXJ0Y29scycgLypjYXNlICdBbGxvd0luc2VydENvbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93ZGVsZXRlY29scycgLypjYXNlICdBbGxvd0RlbGV0ZUNvbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93aW5zZXJ0aHlwZXJsaW5rcycgLypjYXNlICdBbGxvd0luc2VydEh5cGVybGlua3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93Zm9ybWF0Y2VsbHMnIC8qY2FzZSAnQWxsb3dGb3JtYXRDZWxscycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dzaXplY29scycgLypjYXNlICdBbGxvd1NpemVDb2xzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd3NpemVyb3dzJyAvKmNhc2UgJ0FsbG93U2l6ZVJvd3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vc3VtbWFyeXJvd3NiZWxvd2RldGFpbCcgLypjYXNlICdOb1N1bW1hcnlSb3dzQmVsb3dEZXRhaWwnKi86XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbXCIhb3V0bGluZVwiXSkgY3Vyc2hlZXRbXCIhb3V0bGluZVwiXSA9IHt9O1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhb3V0bGluZVwiXS5hYm92ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd0YWJjb2xvcmluZGV4JyAvKmNhc2UgJ1RhYkNvbG9ySW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90ZGlzcGxheWhlYWRpbmdzJyAvKmNhc2UgJ0RvTm90RGlzcGxheUhlYWRpbmdzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaG93cGFnZWxheW91dHpvb20nIC8qY2FzZSAnU2hvd1BhZ2VMYXlvdXRab29tJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3N1bW1hcnljb2x1bW5zcmlnaHRkZXRhaWwnIC8qY2FzZSAnTm9TdW1tYXJ5Q29sdW1uc1JpZ2h0RGV0YWlsJyovOlxuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0W1wiIW91dGxpbmVcIl0pIGN1cnNoZWV0W1wiIW91dGxpbmVcIl0gPSB7fTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W1wiIW91dGxpbmVcIl0ubGVmdCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdibGFja2FuZHdoaXRlJyAvKmNhc2UgJ0JsYWNrQW5kV2hpdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90ZGlzcGxheXplcm9zJyAvKmNhc2UgJ0RvTm90RGlzcGxheVplcm9zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkaXNwbGF5cGFnZWJyZWFrJyAvKmNhc2UgJ0Rpc3BsYXlQYWdlQnJlYWsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2NvbGhlYWRpbmdzJyAvKmNhc2UgJ1Jvd0NvbEhlYWRpbmdzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXlvdXRsaW5lJyAvKmNhc2UgJ0RvTm90RGlzcGxheU91dGxpbmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vb3JpZW50YXRpb24nIC8qY2FzZSAnTm9PcmllbnRhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3d1c2VwaXZvdHRhYmxlcycgLypjYXNlICdBbGxvd1VzZVBpdm90VGFibGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd6ZXJvaGVpZ2h0JyAvKmNhc2UgJ1plcm9IZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZpZXdhYmxlcmFuZ2UnIC8qY2FzZSAnVmlld2FibGVSYW5nZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2VsZWN0aW9uJyAvKmNhc2UgJ1NlbGVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdGNvbnRlbnRzJyAvKmNhc2UgJ1Byb3RlY3RDb250ZW50cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFBpdm90VGFibGUgKi9cblx0XHRcdFx0Y2FzZSAncGl2b3R0YWJsZScgLypjYXNlICdQaXZvdFRhYmxlJyovOiBjYXNlICdwaXZvdGNhY2hlJyAvKmNhc2UgJ1Bpdm90Q2FjaGUnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2ltbWVkaWF0ZWl0ZW1zb25kcm9wJyAvKmNhc2UgJ0ltbWVkaWF0ZUl0ZW1zT25Ecm9wJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaG93cGFnZW11bHRpcGxlaXRlbWxhYmVsJyAvKmNhc2UgJ1Nob3dQYWdlTXVsdGlwbGVJdGVtTGFiZWwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbXBhY3Ryb3dpbmRlbnQnIC8qY2FzZSAnQ29tcGFjdFJvd0luZGVudCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbG9jYXRpb24nIC8qY2FzZSAnTG9jYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Bpdm90ZmllbGQnIC8qY2FzZSAnUGl2b3RGaWVsZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3JpZW50YXRpb24nIC8qY2FzZSAnT3JpZW50YXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dGZvcm0nIC8qY2FzZSAnTGF5b3V0Rm9ybScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGF5b3V0c3VidG90YWxsb2NhdGlvbicgLypjYXNlICdMYXlvdXRTdWJ0b3RhbExvY2F0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYXlvdXRjb21wYWN0cm93JyAvKmNhc2UgJ0xheW91dENvbXBhY3RSb3cnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Bvc2l0aW9uJyAvKmNhc2UgJ1Bvc2l0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwaXZvdGl0ZW0nIC8qY2FzZSAnUGl2b3RJdGVtJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkYXRhdHlwZScgLypjYXNlICdEYXRhVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGF0YWZpZWxkJyAvKmNhc2UgJ0RhdGFGaWVsZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc291cmNlbmFtZScgLypjYXNlICdTb3VyY2VOYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYXJlbnRmaWVsZCcgLypjYXNlICdQYXJlbnRGaWVsZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHRsaW5laXRlbXMnIC8qY2FzZSAnUFRMaW5lSXRlbXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3B0bGluZWl0ZW0nIC8qY2FzZSAnUFRMaW5lSXRlbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY291bnRvZnNhbWVpdGVtcycgLypjYXNlICdDb3VudE9mU2FtZUl0ZW1zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpdGVtJyAvKmNhc2UgJ0l0ZW0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2l0ZW10eXBlJyAvKmNhc2UgJ0l0ZW1UeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdHNvdXJjZScgLypjYXNlICdQVFNvdXJjZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FjaGVpbmRleCcgLypjYXNlICdDYWNoZUluZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb25zb2xpZGF0aW9ucmVmZXJlbmNlJyAvKmNhc2UgJ0NvbnNvbGlkYXRpb25SZWZlcmVuY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbGVuYW1lJyAvKmNhc2UgJ0ZpbGVOYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZlcmVuY2UnIC8qY2FzZSAnUmVmZXJlbmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub2NvbHVtbmdyYW5kJyAvKmNhc2UgJ05vQ29sdW1uR3JhbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vcm93Z3JhbmQnIC8qY2FzZSAnTm9Sb3dHcmFuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYmxhbmtsaW5lYWZ0ZXJpdGVtcycgLypjYXNlICdCbGFua0xpbmVBZnRlckl0ZW1zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdoaWRkZW4nIC8qY2FzZSAnSGlkZGVuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdWJ0b3RhbCcgLypjYXNlICdTdWJ0b3RhbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYmFzZWZpZWxkJyAvKmNhc2UgJ0Jhc2VGaWVsZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWFwY2hpbGRpdGVtcycgLypjYXNlICdNYXBDaGlsZEl0ZW1zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmdW5jdGlvbicgLypjYXNlICdGdW5jdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaG9uZmlsZW9wZW4nIC8qY2FzZSAnUmVmcmVzaE9uRmlsZU9wZW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ByaW50c2V0dGl0bGVzJyAvKmNhc2UgJ1ByaW50U2V0VGl0bGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtZXJnZWxhYmVscycgLypjYXNlICdNZXJnZUxhYmVscycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVmYXVsdHZlcnNpb24nIC8qY2FzZSAnRGVmYXVsdFZlcnNpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2huYW1lJyAvKmNhc2UgJ1JlZnJlc2hOYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoZGF0ZScgLypjYXNlICdSZWZyZXNoRGF0ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaGRhdGVjb3B5JyAvKmNhc2UgJ1JlZnJlc2hEYXRlQ29weScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbmxhc3RyZWZyZXNoJyAvKmNhc2UgJ1ZlcnNpb25MYXN0UmVmcmVzaCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbmxhc3R1cGRhdGUnIC8qY2FzZSAnVmVyc2lvbkxhc3RVcGRhdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb251cGRhdGVhYmxlbWluJyAvKmNhc2UgJ1ZlcnNpb25VcGRhdGVhYmxlTWluJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9ucmVmcmVzaGFibGVtaW4nIC8qY2FzZSAnVmVyc2lvblJlZnJlc2hhYmxlTWluJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYWxjdWxhdGlvbicgLypjYXNlICdDYWxjdWxhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFBhZ2VCcmVha3MgKi9cblx0XHRcdFx0Y2FzZSAncGFnZWJyZWFrcycgLypjYXNlICdQYWdlQnJlYWtzJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdjb2xicmVha3MnIC8qY2FzZSAnQ29sQnJlYWtzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xicmVhaycgLypjYXNlICdDb2xCcmVhaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncm93YnJlYWtzJyAvKmNhc2UgJ1Jvd0JyZWFrcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncm93YnJlYWsnIC8qY2FzZSAnUm93QnJlYWsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbHN0YXJ0JyAvKmNhc2UgJ0NvbFN0YXJ0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xlbmQnIC8qY2FzZSAnQ29sRW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyb3dlbmQnIC8qY2FzZSAnUm93RW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogQXV0b0ZpbHRlciAqL1xuXHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyJyAvKmNhc2UgJ0F1dG9GaWx0ZXInKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXJjb2x1bW4nIC8qY2FzZSAnQXV0b0ZpbHRlckNvbHVtbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcmNvbmRpdGlvbicgLypjYXNlICdBdXRvRmlsdGVyQ29uZGl0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyYW5kJyAvKmNhc2UgJ0F1dG9GaWx0ZXJBbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXJvcicgLypjYXNlICdBdXRvRmlsdGVyT3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBRdWVyeVRhYmxlICovXG5cdFx0XHRcdGNhc2UgJ3F1ZXJ5dGFibGUnIC8qY2FzZSAnUXVlcnlUYWJsZScqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnaWQnIC8qY2FzZSAnSWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9mb3JtYXRmb250JyAvKmNhc2UgJ0F1dG9Gb3JtYXRGb250JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZm9ybWF0cGF0dGVybicgLypjYXNlICdBdXRvRm9ybWF0UGF0dGVybicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncXVlcnlzb3VyY2UnIC8qY2FzZSAnUXVlcnlTb3VyY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1ZXJ5dHlwZScgLypjYXNlICdRdWVyeVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VuYWJsZXJlZGlyZWN0aW9ucycgLypjYXNlICdFbmFibGVSZWRpcmVjdGlvbnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hlZGlueGw5JyAvKmNhc2UgJ1JlZnJlc2hlZEluWGw5JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd1cmxzdHJpbmcnIC8qY2FzZSAnVVJMU3RyaW5nJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdodG1sdGFibGVzJyAvKmNhc2UgJ0hUTUxUYWJsZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Nvbm5lY3Rpb24nIC8qY2FzZSAnQ29ubmVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tbWFuZHRleHQnIC8qY2FzZSAnQ29tbWFuZFRleHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hpbmZvJyAvKmNhc2UgJ1JlZnJlc2hJbmZvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3RpdGxlcycgLypjYXNlICdOb1RpdGxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbmV4dGlkJyAvKmNhc2UgJ05leHRJZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sdW1uaW5mbycgLypjYXNlICdDb2x1bW5JbmZvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdvdmVyd3JpdGVjZWxscycgLypjYXNlICdPdmVyd3JpdGVDZWxscycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3Rwcm9tcHRmb3JmaWxlJyAvKmNhc2UgJ0RvTm90UHJvbXB0Rm9yRmlsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGV4dHdpemFyZHNldHRpbmdzJyAvKmNhc2UgJ1RleHRXaXphcmRTZXR0aW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc291cmNlJyAvKmNhc2UgJ1NvdXJjZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJyAvKmNhc2UgJ051bWJlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVjaW1hbCcgLypjYXNlICdEZWNpbWFsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0aG91c2FuZHNlcGFyYXRvcicgLypjYXNlICdUaG91c2FuZFNlcGFyYXRvcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndHJhaWxpbmdtaW51c251bWJlcnMnIC8qY2FzZSAnVHJhaWxpbmdNaW51c051bWJlcnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zvcm1hdHNldHRpbmdzJyAvKmNhc2UgJ0Zvcm1hdFNldHRpbmdzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWVsZHR5cGUnIC8qY2FzZSAnRmllbGRUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZWxpbWl0ZXJzJyAvKmNhc2UgJ0RlbGltaXRlcnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhYicgLypjYXNlICdUYWInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbW1hJyAvKmNhc2UgJ0NvbW1hJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZm9ybWF0bmFtZScgLypjYXNlICdBdXRvRm9ybWF0TmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbmxhc3RlZGl0JyAvKmNhc2UgJ1ZlcnNpb25MYXN0RWRpdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbmxhc3RyZWZyZXNoJyAvKmNhc2UgJ1ZlcnNpb25MYXN0UmVmcmVzaCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgJ2RhdGF2YWxpZGF0aW9uJyAvKmNhc2UgJ0RhdGFWYWxpZGF0aW9uJyovOlxuXHRcdFx0XHRzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdyYW5nZScgLypjYXNlICdSYW5nZScqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICd0eXBlJyAvKmNhc2UgJ1R5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21pbicgLypjYXNlICdNaW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heCcgLypjYXNlICdNYXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvcnQnIC8qY2FzZSAnU29ydCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVzY2VuZGluZycgLypjYXNlICdEZXNjZW5kaW5nJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdvcmRlcicgLypjYXNlICdPcmRlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FzZXNlbnNpdGl2ZScgLypjYXNlICdDYXNlU2Vuc2l0aXZlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZScgLypjYXNlICdWYWx1ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3JzdHlsZScgLypjYXNlICdFcnJvclN0eWxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcm1lc3NhZ2UnIC8qY2FzZSAnRXJyb3JNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcnRpdGxlJyAvKmNhc2UgJ0Vycm9yVGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0bWVzc2FnZScgLypjYXNlICdJbnB1dE1lc3NhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0dGl0bGUnIC8qY2FzZSAnSW5wdXRUaXRsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tYm9oaWRlJyAvKmNhc2UgJ0NvbWJvSGlkZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXRoaWRlJyAvKmNhc2UgJ0lucHV0SGlkZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29uZGl0aW9uJyAvKmNhc2UgJ0NvbmRpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncXVhbGlmaWVyJyAvKmNhc2UgJ1F1YWxpZmllcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXNlYmxhbmsnIC8qY2FzZSAnVXNlQmxhbmsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlMScgLypjYXNlICdWYWx1ZTEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlMicgLypjYXNlICdWYWx1ZTInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zvcm1hdCcgLypjYXNlICdGb3JtYXQnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnY2VsbHJhbmdlbGlzdCcgLypjYXNlICdDZWxsUmFuZ2VMaXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAnc29ydGluZycgLypjYXNlICdTb3J0aW5nJyovOlxuXHRcdFx0XHRjYXNlICdjb25kaXRpb25hbGZvcm1hdHRpbmcnIC8qY2FzZSAnQ29uZGl0aW9uYWxGb3JtYXR0aW5nJyovOlxuXHRcdFx0XHRzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdyYW5nZScgLypjYXNlICdSYW5nZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndHlwZScgLypjYXNlICdUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtaW4nIC8qY2FzZSAnTWluJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXgnIC8qY2FzZSAnTWF4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzb3J0JyAvKmNhc2UgJ1NvcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rlc2NlbmRpbmcnIC8qY2FzZSAnRGVzY2VuZGluZycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3JkZXInIC8qY2FzZSAnT3JkZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Nhc2VzZW5zaXRpdmUnIC8qY2FzZSAnQ2FzZVNlbnNpdGl2ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUnIC8qY2FzZSAnVmFsdWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9yc3R5bGUnIC8qY2FzZSAnRXJyb3JTdHlsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3JtZXNzYWdlJyAvKmNhc2UgJ0Vycm9yTWVzc2FnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3J0aXRsZScgLypjYXNlICdFcnJvclRpdGxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjZWxscmFuZ2VsaXN0JyAvKmNhc2UgJ0NlbGxSYW5nZUxpc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0bWVzc2FnZScgLypjYXNlICdJbnB1dE1lc3NhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0dGl0bGUnIC8qY2FzZSAnSW5wdXRUaXRsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tYm9oaWRlJyAvKmNhc2UgJ0NvbWJvSGlkZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXRoaWRlJyAvKmNhc2UgJ0lucHV0SGlkZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29uZGl0aW9uJyAvKmNhc2UgJ0NvbmRpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncXVhbGlmaWVyJyAvKmNhc2UgJ1F1YWxpZmllcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXNlYmxhbmsnIC8qY2FzZSAnVXNlQmxhbmsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlMScgLypjYXNlICdWYWx1ZTEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlMicgLypjYXNlICdWYWx1ZTInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zvcm1hdCcgLypjYXNlICdGb3JtYXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBNYXBJbmZvIChzY2hlbWEpICovXG5cdFx0XHRcdGNhc2UgJ21hcGluZm8nIC8qY2FzZSAnTWFwSW5mbycqLzogY2FzZSAnc2NoZW1hJyAvKmNhc2UgJ1NjaGVtYScqLzogY2FzZSAnZGF0YScgLypjYXNlICdkYXRhJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdtYXAnIC8qY2FzZSAnTWFwJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbnRyeScgLypjYXNlICdFbnRyeScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2UnIC8qY2FzZSAnUmFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3hwYXRoJyAvKmNhc2UgJ1hQYXRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWVsZCcgLypjYXNlICdGaWVsZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAneHNkdHlwZScgLypjYXNlICdYU0RUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWx0ZXJvbicgLypjYXNlICdGaWx0ZXJPbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWdncmVnYXRlJyAvKmNhc2UgJ0FnZ3JlZ2F0ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZWxlbWVudHR5cGUnIC8qY2FzZSAnRWxlbWVudFR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F0dHJpYnV0ZXR5cGUnIC8qY2FzZSAnQXR0cmlidXRlVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdC8qIFRoZXNlIGFyZSBmcm9tIHhzZCAoWE1MIFNjaGVtYSBEZWZpbml0aW9uKSAqL1xuXHRcdFx0XHRcdGNhc2UgJ3NjaGVtYScgLypjYXNlICdzY2hlbWEnKi86XG5cdFx0XHRcdFx0Y2FzZSAnZWxlbWVudCcgLypjYXNlICdlbGVtZW50JyovOlxuXHRcdFx0XHRcdGNhc2UgJ2NvbXBsZXh0eXBlJyAvKmNhc2UgJ2NvbXBsZXhUeXBlJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2RhdGF0eXBlJyAvKmNhc2UgJ2RhdGF0eXBlJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2FsbCcgLypjYXNlICdhbGwnKi86XG5cdFx0XHRcdFx0Y2FzZSAnYXR0cmlidXRlJyAvKmNhc2UgJ2F0dHJpYnV0ZScqLzpcblx0XHRcdFx0XHRjYXNlICdleHRlbmRzJyAvKmNhc2UgJ2V4dGVuZHMnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAncm93JyAvKmNhc2UgJ3JvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFNtYXJ0VGFncyAoY2FuIGJlIGFueXRoaW5nKSAqL1xuXHRcdFx0XHRjYXNlICdzbWFydHRhZ3MnIC8qY2FzZSAnU21hcnRUYWdzJyovOiBicmVhaztcblxuXHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYoc2VlbikgYnJlYWs7XG5cdFx0XHQvKiBDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMgKi9cblx0XHRcdGlmKFJuWzNdLm1hdGNoKC8hXFxbQ0RBVEEvKSkgYnJlYWs7XG5cdFx0XHRpZighc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzFdKSB0aHJvdyAnVW5yZWNvZ25pemVkIHRhZzogJyArIFJuWzNdICsgXCJ8XCIgKyBzdGF0ZS5qb2luKFwifFwiKTtcblx0XHRcdGlmKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXT09PS8qJ0N1c3RvbURvY3VtZW50UHJvcGVydGllcycqLydjdXN0b21kb2N1bWVudHByb3BlcnRpZXMnKSB7XG5cdFx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSBicmVhaztcblx0XHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSB4bG1sX3NldF9jdXN0cHJvcChDdXN0cHJvcHMsIHJhd19SbjMsIGNwLCBzdHIuc2xpY2UocGlkeCwgUm4uaW5kZXgpKTtcblx0XHRcdFx0ZWxzZSB7IGNwID0gUm47IHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDsgfVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKG9wdHMuV1RGKSB0aHJvdyAnVW5yZWNvZ25pemVkIHRhZzogJyArIFJuWzNdICsgXCJ8XCIgKyBzdGF0ZS5qb2luKFwifFwiKTtcblx0fVxuXHR2YXIgb3V0ID0gKHt9Lyo6YW55Ki8pO1xuXHRpZighb3B0cy5ib29rU2hlZXRzICYmICFvcHRzLmJvb2tQcm9wcykgb3V0LlNoZWV0cyA9IHNoZWV0cztcblx0b3V0LlNoZWV0TmFtZXMgPSBzaGVldG5hbWVzO1xuXHRvdXQuV29ya2Jvb2sgPSBXb3JrYm9vaztcblx0b3V0LlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHRvdXQuUHJvcHMgPSBQcm9wcztcblx0b3V0LkN1c3Rwcm9wcyA9IEN1c3Rwcm9wcztcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VfeGxtbChkYXRhLyo6UmF3Qnl0ZXN8c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdGZpeF9yZWFkX29wdHMob3B0cz1vcHRzfHx7fSk7XG5cdHN3aXRjaChvcHRzLnR5cGV8fFwiYmFzZTY0XCIpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBwYXJzZV94bG1sX3htbChCYXNlNjRfZGVjb2RlKGRhdGEpLCBvcHRzKTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IGNhc2UgXCJidWZmZXJcIjogY2FzZSBcImZpbGVcIjogcmV0dXJuIHBhcnNlX3hsbWxfeG1sKGRhdGEsIG9wdHMpO1xuXHRcdGNhc2UgXCJhcnJheVwiOiByZXR1cm4gcGFyc2VfeGxtbF94bWwoYTJzKGRhdGEpLCBvcHRzKTtcblx0fVxuXHQvKjo6IHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpOyAqL1xufVxuXG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9wcm9wc194bG1sKHdiLyo6V29ya2Jvb2sqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdC8qIERvY3VtZW50UHJvcGVydGllcyAqL1xuXHRpZih3Yi5Qcm9wcykgby5wdXNoKHhsbWxfd3JpdGVfZG9jcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0LyogQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzICovXG5cdGlmKHdiLkN1c3Rwcm9wcykgby5wdXNoKHhsbWxfd3JpdGVfY3VzdHByb3BzKHdiLlByb3BzLCB3Yi5DdXN0cHJvcHMsIG9wdHMpKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3diX3hsbWwoLyo6OndiLCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHQvKiBPZmZpY2VEb2N1bWVudFNldHRpbmdzICovXG5cdC8qIEV4Y2VsV29ya2Jvb2sgKi9cblx0cmV0dXJuIFwiXCI7XG59XG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9zdHlfeGxtbCh3Yiwgb3B0cykvKjpzdHJpbmcqLyB7XG5cdC8qIFN0eWxlcyAqL1xuXHR2YXIgc3R5bGVzLyo6QXJyYXk8c3RyaW5nPiovID0gWyc8U3R5bGUgc3M6SUQ9XCJEZWZhdWx0XCIgc3M6TmFtZT1cIk5vcm1hbFwiPjxOdW1iZXJGb3JtYXQvPjwvU3R5bGU+J107XG5cdG9wdHMuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKHhmLCBpZCkge1xuXHRcdHZhciBwYXlsb2FkLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0cGF5bG9hZC5wdXNoKHdyaXRleHRhZygnTnVtYmVyRm9ybWF0JywgbnVsbCwge1wic3M6Rm9ybWF0XCI6IGVzY2FwZXhtbCh0YWJsZV9mbXRbeGYubnVtRm10SWRdKX0pKTtcblxuXHRcdHZhciBvID0gLyo6OigqL3tcInNzOklEXCI6IFwic1wiICsgKDIxK2lkKX0vKjo6IDphbnkpKi87XG5cdFx0c3R5bGVzLnB1c2god3JpdGV4dGFnKCdTdHlsZScsIHBheWxvYWQuam9pbihcIlwiKSwgbykpO1xuXHR9KTtcblx0cmV0dXJuIHdyaXRleHRhZyhcIlN0eWxlc1wiLCBzdHlsZXMuam9pbihcIlwiKSk7XG59XG5mdW5jdGlvbiB3cml0ZV9uYW1lX3hsbWwobikgeyByZXR1cm4gd3JpdGV4dGFnKFwiTmFtZWRSYW5nZVwiLCBudWxsLCB7XCJzczpOYW1lXCI6IG4uTmFtZSwgXCJzczpSZWZlcnNUb1wiOlwiPVwiICsgYTFfdG9fcmMobi5SZWYsIHtyOjAsYzowfSl9KTsgfVxuZnVuY3Rpb24gd3JpdGVfbmFtZXNfeGxtbCh3Yi8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCEoKHdifHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcykgcmV0dXJuIFwiXCI7XG5cdC8qOjogaWYoIXdiIHx8ICF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suTmFtZXMpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHR2YXIgbmFtZXMvKjpBcnJheTxhbnk+Ki8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbiA9IG5hbWVzW2ldO1xuXHRcdGlmKG4uU2hlZXQgIT0gbnVsbCkgY29udGludWU7XG5cdFx0aWYobi5OYW1lLm1hdGNoKC9eX3hsZm5cXC4vKSkgY29udGludWU7XG5cdFx0b3V0LnB1c2god3JpdGVfbmFtZV94bG1sKG4pKTtcblx0fVxuXHRyZXR1cm4gd3JpdGV4dGFnKFwiTmFtZXNcIiwgb3V0LmpvaW4oXCJcIikpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9uYW1lcyh3cy8qOldvcmtzaGVldCovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0aWYoIXdzKSByZXR1cm4gXCJcIjtcblx0aWYoISgod2J8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKSByZXR1cm4gXCJcIjtcblx0Lyo6OiBpZighd2IgfHwgIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5OYW1lcykgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdHZhciBuYW1lcy8qOkFycmF5PGFueT4qLyA9IHdiLldvcmtib29rLk5hbWVzO1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuID0gbmFtZXNbaV07XG5cdFx0aWYobi5TaGVldCAhPSBpZHgpIGNvbnRpbnVlO1xuXHRcdC8qc3dpdGNoKG4uTmFtZSkge1xuXHRcdFx0Y2FzZSBcIl9cIjogY29udGludWU7XG5cdFx0fSovXG5cdFx0aWYobi5OYW1lLm1hdGNoKC9eX3hsZm5cXC4vKSkgY29udGludWU7XG5cdFx0b3V0LnB1c2god3JpdGVfbmFtZV94bG1sKG4pKTtcblx0fVxuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIik7XG59XG4vKiBXb3Jrc2hlZXRPcHRpb25zICovXG5mdW5jdGlvbiB3cml0ZV93c194bG1sX3dzb3B0cyh3cy8qOldvcmtzaGVldCovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0aWYoIXdzKSByZXR1cm4gXCJcIjtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0LyogTk9URTogc3BlYyB0ZWNobmljYWxseSBhbGxvd3MgYW55IG9yZGVyLCBidXQgc3RpY2sgd2l0aCBpbXBsaWVkIG9yZGVyICovXG5cblx0LyogRml0VG9QYWdlICovXG5cdC8qIERvTm90RGlzcGxheUNvbEhlYWRlcnMgKi9cblx0LyogRG9Ob3REaXNwbGF5Um93SGVhZGVycyAqL1xuXHQvKiBWaWV3YWJsZVJhbmdlICovXG5cdC8qIFNlbGVjdGlvbiAqL1xuXHQvKiBHcmlkbGluZUNvbG9yICovXG5cdC8qIE5hbWUgKi9cblx0LyogRXhjZWxXb3Jrc2hlZXRUeXBlICovXG5cdC8qIEludGxNYWNybyAqL1xuXHQvKiBVbnN5bmNlZCAqL1xuXHQvKiBTZWxlY3RlZCAqL1xuXHQvKiBDb2RlTmFtZSAqL1xuXG5cdGlmKHdzWychbWFyZ2lucyddKSB7XG5cdFx0by5wdXNoKFwiPFBhZ2VTZXR1cD5cIik7XG5cdFx0aWYod3NbJyFtYXJnaW5zJ10uaGVhZGVyKSBvLnB1c2god3JpdGV4dGFnKFwiSGVhZGVyXCIsIG51bGwsIHsneDpNYXJnaW4nOndzWychbWFyZ2lucyddLmhlYWRlcn0pKTtcblx0XHRpZih3c1snIW1hcmdpbnMnXS5mb290ZXIpIG8ucHVzaCh3cml0ZXh0YWcoXCJGb290ZXJcIiwgbnVsbCwgeyd4Ok1hcmdpbic6d3NbJyFtYXJnaW5zJ10uZm9vdGVyfSkpO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoXCJQYWdlTWFyZ2luc1wiLCBudWxsLCB7XG5cdFx0XHQneDpCb3R0b20nOiB3c1snIW1hcmdpbnMnXS5ib3R0b20gfHwgXCIwLjc1XCIsXG5cdFx0XHQneDpMZWZ0Jzogd3NbJyFtYXJnaW5zJ10ubGVmdCB8fCBcIjAuN1wiLFxuXHRcdFx0J3g6UmlnaHQnOiB3c1snIW1hcmdpbnMnXS5yaWdodCB8fCBcIjAuN1wiLFxuXHRcdFx0J3g6VG9wJzogd3NbJyFtYXJnaW5zJ10udG9wIHx8IFwiMC43NVwiXG5cdFx0fSkpO1xuXHRcdG8ucHVzaChcIjwvUGFnZVNldHVwPlwiKTtcblx0fVxuXG5cdC8qIFBhZ2VTZXR1cCAqL1xuXHQvKiBEaXNwbGF5UGFnZUJyZWFrICovXG5cdC8qIFRyYW5zaXRpb25FeHByZXNzaW9uRXZhbHVhdGlvbiAqL1xuXHQvKiBUcmFuc2l0aW9uRm9ybXVsYUVudHJ5ICovXG5cdC8qIFByaW50ICovXG5cdC8qIFpvb20gKi9cblx0LyogUGFnZUxheW91dFpvb20gKi9cblx0LyogUGFnZUJyZWFrWm9vbSAqL1xuXHQvKiBTaG93UGFnZUJyZWFrWm9vbSAqL1xuXHQvKiBEZWZhdWx0Um93SGVpZ2h0ICovXG5cdC8qIERlZmF1bHRDb2x1bW5XaWR0aCAqL1xuXHQvKiBTdGFuZGFyZFdpZHRoICovXG5cblx0aWYod2IgJiYgd2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suU2hlZXRzICYmIHdiLldvcmtib29rLlNoZWV0c1tpZHhdKSB7XG5cdFx0LyogVmlzaWJsZSAqL1xuXHRcdGlmKHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkhpZGRlbikgby5wdXNoKHdyaXRleHRhZyhcIlZpc2libGVcIiwgKHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkhpZGRlbiA9PSAxID8gXCJTaGVldEhpZGRlblwiIDogXCJTaGVldFZlcnlIaWRkZW5cIiksIHt9KSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHQvKiBTZWxlY3RlZCAqL1xuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGlkeDsgKytpKSBpZih3Yi5Xb3JrYm9vay5TaGVldHNbaV0gJiYgIXdiLldvcmtib29rLlNoZWV0c1tpXS5IaWRkZW4pIGJyZWFrO1xuXHRcdFx0aWYoaSA9PSBpZHgpIG8ucHVzaChcIjxTZWxlY3RlZC8+XCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qIExlZnRDb2x1bW5WaXNpYmxlICovXG5cblx0aWYoKCgoKHdifHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRMKSBvLnB1c2goXCI8RGlzcGxheVJpZ2h0VG9MZWZ0Lz5cIik7XG5cblx0LyogR3JpZGxpbmVDb2xvckluZGV4ICovXG5cdC8qIERpc3BsYXlGb3JtdWxhcyAqL1xuXHQvKiBEb05vdERpc3BsYXlHcmlkbGluZXMgKi9cblx0LyogRG9Ob3REaXNwbGF5SGVhZGluZ3MgKi9cblx0LyogRG9Ob3REaXNwbGF5T3V0bGluZSAqL1xuXHQvKiBBcHBseUF1dG9tYXRpY091dGxpbmVTdHlsZXMgKi9cblx0LyogTm9TdW1tYXJ5Um93c0JlbG93RGV0YWlsICovXG5cdC8qIE5vU3VtbWFyeUNvbHVtbnNSaWdodERldGFpbCAqL1xuXHQvKiBEb05vdERpc3BsYXlaZXJvcyAqL1xuXHQvKiBBY3RpdmVSb3cgKi9cblx0LyogQWN0aXZlQ29sdW1uICovXG5cdC8qIEZpbHRlck9uICovXG5cdC8qIFJhbmdlU2VsZWN0aW9uICovXG5cdC8qIFRvcFJvd1Zpc2libGUgKi9cblx0LyogVG9wUm93Qm90dG9tUGFuZSAqL1xuXHQvKiBMZWZ0Q29sdW1uUmlnaHRQYW5lICovXG5cdC8qIEFjdGl2ZVBhbmUgKi9cblx0LyogU3BsaXRIb3Jpem9udGFsICovXG5cdC8qIFNwbGl0VmVydGljYWwgKi9cblx0LyogRnJlZXplUGFuZXMgKi9cblx0LyogRnJvemVuTm9TcGxpdCAqL1xuXHQvKiBUYWJDb2xvckluZGV4ICovXG5cdC8qIFBhbmVzICovXG5cblx0LyogTk9URTogUGFzc3dvcmQgbm90IHN1cHBvcnRlZCBpbiBYTE1MIEZvcm1hdCAqL1xuXHRpZih3c1snIXByb3RlY3QnXSkge1xuXHRcdG8ucHVzaCh3cml0ZXRhZyhcIlByb3RlY3RDb250ZW50c1wiLCBcIlRydWVcIikpO1xuXHRcdGlmKHdzWychcHJvdGVjdCddLm9iamVjdHMpIG8ucHVzaCh3cml0ZXRhZyhcIlByb3RlY3RPYmplY3RzXCIsIFwiVHJ1ZVwiKSk7XG5cdFx0aWYod3NbJyFwcm90ZWN0J10uc2NlbmFyaW9zKSBvLnB1c2god3JpdGV0YWcoXCJQcm90ZWN0U2NlbmFyaW9zXCIsIFwiVHJ1ZVwiKSk7XG5cdFx0aWYod3NbJyFwcm90ZWN0J10uc2VsZWN0TG9ja2VkQ2VsbHMgIT0gbnVsbCAmJiAhd3NbJyFwcm90ZWN0J10uc2VsZWN0TG9ja2VkQ2VsbHMpIG8ucHVzaCh3cml0ZXRhZyhcIkVuYWJsZVNlbGVjdGlvblwiLCBcIk5vU2VsZWN0aW9uXCIpKTtcblx0XHRlbHNlIGlmKHdzWychcHJvdGVjdCddLnNlbGVjdFVubG9ja2VkQ2VsbHMgIT0gbnVsbCAmJiAhd3NbJyFwcm90ZWN0J10uc2VsZWN0VW5sb2NrZWRDZWxscykgby5wdXNoKHdyaXRldGFnKFwiRW5hYmxlU2VsZWN0aW9uXCIsIFwiVW5sb2NrZWRDZWxsc1wiKSk7XG5cdFtcblx0XHRbIFwiZm9ybWF0Q2VsbHNcIiwgXCJBbGxvd0Zvcm1hdENlbGxzXCIgXSxcblx0XHRbIFwiZm9ybWF0Q29sdW1uc1wiLCBcIkFsbG93U2l6ZUNvbHNcIiBdLFxuXHRcdFsgXCJmb3JtYXRSb3dzXCIsIFwiQWxsb3dTaXplUm93c1wiIF0sXG5cdFx0WyBcImluc2VydENvbHVtbnNcIiwgXCJBbGxvd0luc2VydENvbHNcIiBdLFxuXHRcdFsgXCJpbnNlcnRSb3dzXCIsIFwiQWxsb3dJbnNlcnRSb3dzXCIgXSxcblx0XHRbIFwiaW5zZXJ0SHlwZXJsaW5rc1wiLCBcIkFsbG93SW5zZXJ0SHlwZXJsaW5rc1wiIF0sXG5cdFx0WyBcImRlbGV0ZUNvbHVtbnNcIiwgXCJBbGxvd0RlbGV0ZUNvbHNcIiBdLFxuXHRcdFsgXCJkZWxldGVSb3dzXCIsIFwiQWxsb3dEZWxldGVSb3dzXCIgXSxcblx0XHRbIFwic29ydFwiLCBcIkFsbG93U29ydFwiIF0sXG5cdFx0WyBcImF1dG9GaWx0ZXJcIiwgXCJBbGxvd0ZpbHRlclwiIF0sXG5cdFx0WyBcInBpdm90VGFibGVzXCIsIFwiQWxsb3dVc2VQaXZvdFRhYmxlc1wiIF1cblx0XS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHsgaWYod3NbJyFwcm90ZWN0J11beFswXV0pIG8ucHVzaChcIjxcIit4WzFdK1wiLz5cIik7IH0pO1xuXHR9XG5cblx0aWYoby5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJXb3Jrc2hlZXRPcHRpb25zXCIsIG8uam9pbihcIlwiKSwge3htbG5zOlhMTUxOUy54fSk7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sX2NvbW1lbnQoY29tbWVudHMvKjpBcnJheTxhbnk+Ki8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gY29tbWVudHMubWFwKGZ1bmN0aW9uKGMpIHtcblx0XHQvLyBUT0RPOiBmb3JtYXR0ZWQgdGV4dFxuXHRcdHZhciB0ID0geGxtbF91bmZpeHN0cihjLnR8fFwiXCIpO1xuXHRcdHZhciBkID13cml0ZXh0YWcoXCJzczpEYXRhXCIsIHQsIHtcInhtbG5zXCI6XCJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwXCJ9KTtcblx0XHRyZXR1cm4gd3JpdGV4dGFnKFwiQ29tbWVudFwiLCBkLCB7XCJzczpBdXRob3JcIjpjLmF9KTtcblx0fSkuam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfY2VsbChjZWxsLCByZWYvKjpzdHJpbmcqLywgd3MsIG9wdHMsIGlkeC8qOm51bWJlciovLCB3YiwgYWRkcikvKjpzdHJpbmcqL3tcblx0aWYoIWNlbGwgfHwgKGNlbGwudiA9PSB1bmRlZmluZWQgJiYgY2VsbC5mID09IHVuZGVmaW5lZCkpIHJldHVybiBcIlwiO1xuXG5cdHZhciBhdHRyID0ge307XG5cdGlmKGNlbGwuZikgYXR0cltcInNzOkZvcm11bGFcIl0gPSBcIj1cIiArIGVzY2FwZXhtbChhMV90b19yYyhjZWxsLmYsIGFkZHIpKTtcblx0aWYoY2VsbC5GICYmIGNlbGwuRi5zbGljZSgwLCByZWYubGVuZ3RoKSA9PSByZWYpIHtcblx0XHR2YXIgZW5kID0gZGVjb2RlX2NlbGwoY2VsbC5GLnNsaWNlKHJlZi5sZW5ndGggKyAxKSk7XG5cdFx0YXR0cltcInNzOkFycmF5UmFuZ2VcIl0gPSBcIlJDOlJcIiArIChlbmQuciA9PSBhZGRyLnIgPyBcIlwiIDogXCJbXCIgKyAoZW5kLnIgLSBhZGRyLnIpICsgXCJdXCIpICsgXCJDXCIgKyAoZW5kLmMgPT0gYWRkci5jID8gXCJcIiA6IFwiW1wiICsgKGVuZC5jIC0gYWRkci5jKSArIFwiXVwiKTtcblx0fVxuXG5cdGlmKGNlbGwubCAmJiBjZWxsLmwuVGFyZ2V0KSB7XG5cdFx0YXR0cltcInNzOkhSZWZcIl0gPSBlc2NhcGV4bWwoY2VsbC5sLlRhcmdldCk7XG5cdFx0aWYoY2VsbC5sLlRvb2x0aXApIGF0dHJbXCJ4OkhSZWZTY3JlZW5UaXBcIl0gPSBlc2NhcGV4bWwoY2VsbC5sLlRvb2x0aXApO1xuXHR9XG5cblx0aWYod3NbJyFtZXJnZXMnXSkge1xuXHRcdHZhciBtYXJyID0gd3NbJyFtZXJnZXMnXTtcblx0XHRmb3IodmFyIG1pID0gMDsgbWkgIT0gbWFyci5sZW5ndGg7ICsrbWkpIHtcblx0XHRcdGlmKG1hcnJbbWldLnMuYyAhPSBhZGRyLmMgfHwgbWFyclttaV0ucy5yICE9IGFkZHIucikgY29udGludWU7XG5cdFx0XHRpZihtYXJyW21pXS5lLmMgPiBtYXJyW21pXS5zLmMpIGF0dHJbJ3NzOk1lcmdlQWNyb3NzJ10gPSBtYXJyW21pXS5lLmMgLSBtYXJyW21pXS5zLmM7XG5cdFx0XHRpZihtYXJyW21pXS5lLnIgPiBtYXJyW21pXS5zLnIpIGF0dHJbJ3NzOk1lcmdlRG93biddID0gbWFyclttaV0uZS5yIC0gbWFyclttaV0ucy5yO1xuXHRcdH1cblx0fVxuXG5cdHZhciB0ID0gXCJcIiwgcCA9IFwiXCI7XG5cdHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICd6JzogaWYoIW9wdHMuc2hlZXRTdHVicykgcmV0dXJuIFwiXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ24nOiB0ID0gJ051bWJlcic7IHAgPSBTdHJpbmcoY2VsbC52KTsgYnJlYWs7XG5cdFx0Y2FzZSAnYic6IHQgPSAnQm9vbGVhbic7IHAgPSAoY2VsbC52ID8gXCIxXCIgOiBcIjBcIik7IGJyZWFrO1xuXHRcdGNhc2UgJ2UnOiB0ID0gJ0Vycm9yJzsgcCA9IEJFcnJbY2VsbC52XTsgYnJlYWs7XG5cdFx0Y2FzZSAnZCc6IHQgPSAnRGF0ZVRpbWUnOyBwID0gbmV3IERhdGUoY2VsbC52KS50b0lTT1N0cmluZygpOyBpZihjZWxsLnogPT0gbnVsbCkgY2VsbC56ID0gY2VsbC56IHx8IHRhYmxlX2ZtdFsxNF07IGJyZWFrO1xuXHRcdGNhc2UgJ3MnOiB0ID0gJ1N0cmluZyc7IHAgPSBlc2NhcGV4bG1sKGNlbGwudnx8XCJcIik7IGJyZWFrO1xuXHR9XG5cdC8qIFRPRE86IGNlbGwgc3R5bGUgKi9cblx0dmFyIG9zID0gZ2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCBjZWxsLCBvcHRzKTtcblx0YXR0cltcInNzOlN0eWxlSURcIl0gPSBcInNcIiArICgyMStvcyk7XG5cdGF0dHJbXCJzczpJbmRleFwiXSA9IGFkZHIuYyArIDE7XG5cdHZhciBfdiA9IChjZWxsLnYgIT0gbnVsbCA/IHAgOiBcIlwiKTtcblx0dmFyIG0gPSBjZWxsLnQgPT0gJ3onID8gXCJcIiA6ICgnPERhdGEgc3M6VHlwZT1cIicgKyB0ICsgJ1wiPicgKyBfdiArICc8L0RhdGE+Jyk7XG5cblx0aWYoKGNlbGwuY3x8W10pLmxlbmd0aCA+IDApIG0gKz0gd3JpdGVfd3NfeGxtbF9jb21tZW50KGNlbGwuYyk7XG5cblx0cmV0dXJuIHdyaXRleHRhZyhcIkNlbGxcIiwgbSwgYXR0cik7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sX3JvdyhSLyo6bnVtYmVyKi8sIHJvdykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gJzxSb3cgc3M6SW5kZXg9XCInICsgKFIrMSkgKyAnXCInO1xuXHRpZihyb3cpIHtcblx0XHRpZihyb3cuaHB0ICYmICFyb3cuaHB4KSByb3cuaHB4ID0gcHQycHgocm93LmhwdCk7XG5cdFx0aWYocm93LmhweCkgbyArPSAnIHNzOkF1dG9GaXRIZWlnaHQ9XCIwXCIgc3M6SGVpZ2h0PVwiJyArIHJvdy5ocHggKyAnXCInO1xuXHRcdGlmKHJvdy5oaWRkZW4pIG8gKz0gJyBzczpIaWRkZW49XCIxXCInO1xuXHR9XG5cdHJldHVybiBvICsgJz4nO1xufVxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF90YWJsZSh3cy8qOldvcmtzaGVldCovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0aWYoIXdzWychcmVmJ10pIHJldHVybiBcIlwiO1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdHZhciBtYXJyLyo6QXJyYXk8UmFuZ2U+Ki8gPSB3c1snIW1lcmdlcyddIHx8IFtdLCBtaSA9IDA7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGlmKHdzWychY29scyddKSB3c1snIWNvbHMnXS5mb3JFYWNoKGZ1bmN0aW9uKG4sIGkpIHtcblx0XHRwcm9jZXNzX2NvbChuKTtcblx0XHR2YXIgdyA9ICEhbi53aWR0aDtcblx0XHR2YXIgcCA9IGNvbF9vYmpfdyhpLCBuKTtcblx0XHR2YXIgay8qOmFueSovID0ge1wic3M6SW5kZXhcIjppKzF9O1xuXHRcdGlmKHcpIGtbJ3NzOldpZHRoJ10gPSB3aWR0aDJweChwLndpZHRoKTtcblx0XHRpZihuLmhpZGRlbikga1snc3M6SGlkZGVuJ109XCIxXCI7XG5cdFx0by5wdXNoKHdyaXRleHRhZyhcIkNvbHVtblwiLG51bGwsaykpO1xuXHR9KTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuXHRcdHZhciByb3cgPSBbd3JpdGVfd3NfeGxtbF9yb3coUiwgKHdzWychcm93cyddfHxbXSlbUl0pXTtcblx0XHRmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdHZhciBza2lwID0gZmFsc2U7XG5cdFx0XHRmb3IobWkgPSAwOyBtaSAhPSBtYXJyLmxlbmd0aDsgKyttaSkge1xuXHRcdFx0XHRpZihtYXJyW21pXS5zLmMgPiBDKSBjb250aW51ZTtcblx0XHRcdFx0aWYobWFyclttaV0ucy5yID4gUikgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLmUuYyA8IEMpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihtYXJyW21pXS5lLnIgPCBSKSBjb250aW51ZTtcblx0XHRcdFx0aWYobWFyclttaV0ucy5jICE9IEMgfHwgbWFyclttaV0ucy5yICE9IFIpIHNraXAgPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKHNraXApIGNvbnRpbnVlO1xuXHRcdFx0dmFyIGFkZHIgPSB7cjpSLGM6Q307XG5cdFx0XHR2YXIgcmVmID0gZW5jb2RlX2NlbGwoYWRkciksIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdHJvdy5wdXNoKHdyaXRlX3dzX3hsbWxfY2VsbChjZWxsLCByZWYsIHdzLCBvcHRzLCBpZHgsIHdiLCBhZGRyKSk7XG5cdFx0fVxuXHRcdHJvdy5wdXNoKFwiPC9Sb3c+XCIpO1xuXHRcdGlmKHJvdy5sZW5ndGggPiAyKSBvLnB1c2gocm93LmpvaW4oXCJcIikpO1xuXHR9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sKGlkeC8qOm51bWJlciovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XTtcblx0dmFyIHdzID0gd2IuU2hlZXRzW3NdO1xuXG5cdHZhciB0Lyo6c3RyaW5nKi8gPSB3cyA/IHdyaXRlX3dzX3hsbWxfbmFtZXMod3MsIG9wdHMsIGlkeCwgd2IpIDogXCJcIjtcblx0aWYodC5sZW5ndGggPiAwKSBvLnB1c2goXCI8TmFtZXM+XCIgKyB0ICsgXCI8L05hbWVzPlwiKTtcblxuXHQvKiBUYWJsZSAqL1xuXHR0ID0gd3MgPyB3cml0ZV93c194bG1sX3RhYmxlKHdzLCBvcHRzLCBpZHgsIHdiKSA6IFwiXCI7XG5cdGlmKHQubGVuZ3RoID4gMCkgby5wdXNoKFwiPFRhYmxlPlwiICsgdCArIFwiPC9UYWJsZT5cIik7XG5cblx0LyogV29ya3NoZWV0T3B0aW9ucyAqL1xuXHRvLnB1c2god3JpdGVfd3NfeGxtbF93c29wdHMod3MsIG9wdHMsIGlkeCwgd2IpKTtcblxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfeGxtbCh3Yiwgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFvcHRzKSBvcHRzID0ge307XG5cdGlmKCF3Yi5TU0YpIHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHRpZih3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0b3B0cy5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgb3B0cy5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG9wdHMuc3NmID0gd2IuU1NGO1xuXHRcdG9wdHMuY2VsbFhmcyA9IFtdO1xuXHRcdGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cdH1cblx0dmFyIGQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0ZC5wdXNoKHdyaXRlX3Byb3BzX3hsbWwod2IsIG9wdHMpKTtcblx0ZC5wdXNoKHdyaXRlX3diX3hsbWwod2IsIG9wdHMpKTtcblx0ZC5wdXNoKFwiXCIpO1xuXHRkLnB1c2goXCJcIik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKVxuXHRcdGQucHVzaCh3cml0ZXh0YWcoXCJXb3Jrc2hlZXRcIiwgd3JpdGVfd3NfeGxtbChpLCBvcHRzLCB3YiksIHtcInNzOk5hbWVcIjplc2NhcGV4bWwod2IuU2hlZXROYW1lc1tpXSl9KSk7XG5cdGRbMl0gPSB3cml0ZV9zdHlfeGxtbCh3Yiwgb3B0cyk7XG5cdGRbM10gPSB3cml0ZV9uYW1lc194bG1sKHdiLCBvcHRzKTtcblx0cmV0dXJuIFhNTF9IRUFERVIgKyB3cml0ZXh0YWcoXCJXb3JrYm9va1wiLCBkLmpvaW4oXCJcIiksIHtcblx0XHQneG1sbnMnOiAgICAgIFhMTUxOUy5zcyxcblx0XHQneG1sbnM6byc6ICAgIFhMTUxOUy5vLFxuXHRcdCd4bWxuczp4JzogICAgWExNTE5TLngsXG5cdFx0J3htbG5zOnNzJzogICBYTE1MTlMuc3MsXG5cdFx0J3htbG5zOmR0JzogICBYTE1MTlMuZHQsXG5cdFx0J3htbG5zOmh0bWwnOiBYTE1MTlMuaHRtbFxuXHR9KTtcbn1cbi8qIFtNUy1PTEVEU10gMi4zLjggQ29tcE9ialN0cmVhbSAqL1xuZnVuY3Rpb24gcGFyc2VfY29tcG9iaihvYmovKjpDRkJFbnRyeSovKSB7XG5cdHZhciB2ID0ge307XG5cdHZhciBvID0gb2JqLmNvbnRlbnQ7XG5cdC8qOjogaWYobyA9PSBudWxsKSByZXR1cm47ICovXG5cblx0LyogW01TLU9MRURTXSAyLjMuNyBDb21wT2JqSGVhZGVyIC0tIEFsbCBmaWVsZHMgTVVTVCBiZSBpZ25vcmVkICovXG5cdG8ubCA9IDI4O1xuXG5cdHYuQW5zaVVzZXJUeXBlID0gby5yZWFkX3NoaWZ0KDAsIFwibHBzdHItYW5zaVwiKTtcblx0di5BbnNpQ2xpcGJvYXJkRm9ybWF0ID0gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JBbnNpU3RyaW5nKG8pO1xuXG5cdGlmKG8ubGVuZ3RoIC0gby5sIDw9IDQpIHJldHVybiB2O1xuXG5cdHZhciBtLyo6bnVtYmVyKi8gPSBvLnJlYWRfc2hpZnQoNCk7XG5cdGlmKG0gPT0gMCB8fCBtID4gNDApIHJldHVybiB2O1xuXHRvLmwtPTQ7IHYuUmVzZXJ2ZWQxID0gby5yZWFkX3NoaWZ0KDAsIFwibHBzdHItYW5zaVwiKTtcblxuXHRpZihvLmxlbmd0aCAtIG8ubCA8PSA0KSByZXR1cm4gdjtcblx0bSA9IG8ucmVhZF9zaGlmdCg0KTtcblx0aWYobSAhPT0gMHg3MWIyMzlmNCkgcmV0dXJuIHY7XG5cdHYuVW5pY29kZUNsaXBib2FyZEZvcm1hdCA9IHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yVW5pY29kZVN0cmluZyhvKTtcblxuXHRtID0gby5yZWFkX3NoaWZ0KDQpO1xuXHRpZihtID09IDAgfHwgbSA+IDQwKSByZXR1cm4gdjtcblx0by5sLT00OyB2LlJlc2VydmVkMiA9IG8ucmVhZF9zaGlmdCgwLCBcImxwd3N0clwiKTtcbn1cblxuLypcblx0Q29udGludWUgbG9naWMgZm9yOlxuXHQtIDIuNC41OCBDb250aW51ZSAgICAgICAgICAweDAwM2Ncblx0LSAyLjQuNTkgQ29udGludWVCaWdOYW1lICAgMHgwNDNjXG5cdC0gMi40LjYwIENvbnRpbnVlRnJ0ICAgICAgIDB4MDgxMlxuXHQtIDIuNC42MSBDb250aW51ZUZydDExICAgICAweDA4NzVcblx0LSAyLjQuNjIgQ29udGludWVGcnQxMiAgICAgMHgwODdmXG4qL1xudmFyIENPTlRJTlVFX1JUID0gWyAweDAwM2MsIDB4MDQzYywgMHgwODEyLCAweDA4NzUsIDB4MDg3ZiBdO1xuZnVuY3Rpb24gc2x1cnAoUmVjb3JkVHlwZSwgUiwgYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9wdHMpLyo6YW55Ki8ge1xuXHR2YXIgbCA9IGxlbmd0aDtcblx0dmFyIGJ1ZnMgPSBbXTtcblx0dmFyIGQgPSBibG9iLnNsaWNlKGJsb2IubCxibG9iLmwrbCk7XG5cdGlmKG9wdHMgJiYgb3B0cy5lbmMgJiYgb3B0cy5lbmMuaW5zaXR1ICYmIGQubGVuZ3RoID4gMCkgc3dpdGNoKFJlY29yZFR5cGUpIHtcblx0Y2FzZSAweDAwMDk6IGNhc2UgMHgwMjA5OiBjYXNlIDB4MDQwOTogY2FzZSAweDA4MDkvKiBCT0YgKi86IGNhc2UgMHgwMDJmIC8qIEZpbGVQYXNzICovOiBjYXNlIDB4MDE5NSAvKiBGaWxlTG9jayAqLzogY2FzZSAweDAwZTEgLyogSW50ZXJmYWNlSGRyICovOiBjYXNlIDB4MDE5NiAvKiBSUkRJbmZvICovOiBjYXNlIDB4MDEzOCAvKiBSUkRIZWFkICovOiBjYXNlIDB4MDE5NCAvKiBVc3JFeGNsICovOiBjYXNlIDB4MDAwYSAvKiBFT0YgKi86XG5cdFx0YnJlYWs7XG5cdGNhc2UgMHgwMDg1IC8qIEJvdW5kU2hlZXQ4ICovOlxuXHRcdGJyZWFrO1xuXHRkZWZhdWx0OlxuXHRcdG9wdHMuZW5jLmluc2l0dShkKTtcblx0fVxuXHRidWZzLnB1c2goZCk7XG5cdGJsb2IubCArPSBsO1xuXHR2YXIgbmV4dHJ0ID0gX19yZWFkVUludDE2TEUoYmxvYixibG9iLmwpLCBuZXh0ID0gWExTUmVjb3JkRW51bVtuZXh0cnRdO1xuXHR2YXIgc3RhcnQgPSAwO1xuXHR3aGlsZShuZXh0ICE9IG51bGwgJiYgQ09OVElOVUVfUlQuaW5kZXhPZihuZXh0cnQpID4gLTEpIHtcblx0XHRsID0gX19yZWFkVUludDE2TEUoYmxvYixibG9iLmwrMik7XG5cdFx0c3RhcnQgPSBibG9iLmwgKyA0O1xuXHRcdGlmKG5leHRydCA9PSAweDA4MTIgLyogQ29udGludWVGcnQgKi8pIHN0YXJ0ICs9IDQ7XG5cdFx0ZWxzZSBpZihuZXh0cnQgPT0gMHgwODc1IHx8IG5leHRydCA9PSAweDA4N2YpIHtcblx0XHRcdHN0YXJ0ICs9IDEyO1xuXHRcdH1cblx0XHRkID0gYmxvYi5zbGljZShzdGFydCxibG9iLmwrNCtsKTtcblx0XHRidWZzLnB1c2goZCk7XG5cdFx0YmxvYi5sICs9IDQrbDtcblx0XHRuZXh0ID0gKFhMU1JlY29yZEVudW1bbmV4dHJ0ID0gX19yZWFkVUludDE2TEUoYmxvYiwgYmxvYi5sKV0pO1xuXHR9XG5cdHZhciBiID0gKGJjb25jYXQoYnVmcykvKjphbnkqLyk7XG5cdHByZXBfYmxvYihiLCAwKTtcblx0dmFyIGxsID0gMDsgYi5sZW5zID0gW107XG5cdGZvcih2YXIgaiA9IDA7IGogPCBidWZzLmxlbmd0aDsgKytqKSB7IGIubGVucy5wdXNoKGxsKTsgbGwgKz0gYnVmc1tqXS5sZW5ndGg7IH1cblx0aWYoYi5sZW5ndGggPCBsZW5ndGgpIHRocm93IFwiWExTIFJlY29yZCAweFwiICsgUmVjb3JkVHlwZS50b1N0cmluZygxNikgKyBcIiBUcnVuY2F0ZWQ6IFwiICsgYi5sZW5ndGggKyBcIiA8IFwiICsgbGVuZ3RoO1xuXHRyZXR1cm4gUi5mKGIsIGIubGVuZ3RoLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gc2FmZV9mb3JtYXRfeGYocC8qOmFueSovLCBvcHRzLyo6UGFyc2VPcHRzKi8sIGRhdGUxOTA0Lyo6P2Jvb2xlYW4qLykge1xuXHRpZihwLnQgPT09ICd6JykgcmV0dXJuO1xuXHRpZighcC5YRikgcmV0dXJuO1xuXHR2YXIgZm10aWQgPSAwO1xuXHR0cnkge1xuXHRcdGZtdGlkID0gcC56IHx8IHAuWEYubnVtRm10SWQgfHwgMDtcblx0XHRpZihvcHRzLmNlbGxORikgcC56ID0gdGFibGVfZm10W2ZtdGlkXTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cdGlmKCFvcHRzIHx8IG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSB0cnkge1xuXHRcdGlmKHAudCA9PT0gJ2UnKSB7IHAudyA9IHAudyB8fCBCRXJyW3Audl07IH1cblx0XHRlbHNlIGlmKGZtdGlkID09PSAwIHx8IGZtdGlkID09IFwiR2VuZXJhbFwiKSB7XG5cdFx0XHRpZihwLnQgPT09ICduJykge1xuXHRcdFx0XHRpZigocC52fDApID09PSBwLnYpIHAudyA9IHAudi50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWxfbnVtKHAudik7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsKHAudik7XG5cdFx0fVxuXHRcdGVsc2UgcC53ID0gU1NGX2Zvcm1hdChmbXRpZCxwLnYsIHtkYXRlMTkwNDohIWRhdGUxOTA0LCBkYXRlTkY6IG9wdHMgJiYgb3B0cy5kYXRlTkZ9KTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cdGlmKG9wdHMuY2VsbERhdGVzICYmIGZtdGlkICYmIHAudCA9PSAnbicgJiYgZm10X2lzX2RhdGUodGFibGVfZm10W2ZtdGlkXSB8fCBTdHJpbmcoZm10aWQpKSkge1xuXHRcdHZhciBfZCA9IFNTRl9wYXJzZV9kYXRlX2NvZGUocC52KTsgaWYoX2QpIHsgcC50ID0gJ2QnOyBwLnYgPSBuZXcgRGF0ZShfZC55LCBfZC5tLTEsX2QuZCxfZC5ILF9kLk0sX2QuUyxfZC51KTsgfVxuXHR9XG59XG5cbmZ1bmN0aW9uIG1ha2VfY2VsbCh2YWwsIGl4ZmUsIHQpLyo6Q2VsbCovIHtcblx0cmV0dXJuICh7djp2YWwsIGl4ZmU6aXhmZSwgdDp0fS8qOmFueSovKTtcbn1cblxuLy8gMi4zLjJcbmZ1bmN0aW9uIHBhcnNlX3dvcmtib29rKGJsb2IsIG9wdGlvbnMvKjpQYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIHdiID0gKHtvcHRzOnt9fS8qOmFueSovKTtcblx0dmFyIFNoZWV0cyA9IHt9O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdGlvbnMuZGVuc2UgPT0gbnVsbCkgb3B0aW9ucy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgb3V0Lyo6V29ya3NoZWV0Ki8gPSAoKG9wdGlvbnMuZGVuc2UgPyBbXSA6IHt9KS8qOmFueSovKTtcblx0dmFyIERpcmVjdG9yeSA9IHt9O1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgbGFzdF9mb3JtdWxhID0gbnVsbDtcblx0dmFyIHNzdC8qOlNTVCovID0gKFtdLyo6YW55Ki8pO1xuXHR2YXIgY3VyX3NoZWV0ID0gXCJcIjtcblx0dmFyIFByZWFtYmxlID0ge307XG5cdHZhciBsYXN0Y2VsbCwgbGFzdF9jZWxsID0gXCJcIiwgY2MvKjpDZWxsKi8sIGNtbnQsIHJuZ0MsIHJuZ1I7XG5cdHZhciBzaGFyZWRmID0ge307XG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHRlbXBfdmFsLyo6Q2VsbCovO1xuXHR2YXIgY291bnRyeTtcblx0dmFyIFhGcyA9IFtdOyAvKiBYRiByZWNvcmRzICovXG5cdHZhciBwYWxldHRlLyo6QXJyYXk8W251bWJlciwgbnVtYmVyLCBudW1iZXJdPiovID0gW107XG5cdHZhciBXb3JrYm9vay8qOldCV0JQcm9wcyovID0gKHsgU2hlZXRzOltdLCBXQlByb3BzOntkYXRlMTkwNDpmYWxzZX0sIFZpZXdzOlt7fV0gfS8qOmFueSovKSwgd3Nwcm9wcyA9IHt9O1xuXHR2YXIgZ2V0X3JnYiA9IGZ1bmN0aW9uIGdldHJnYihpY3YvKjpudW1iZXIqLykvKjpbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0qLyB7XG5cdFx0aWYoaWN2IDwgOCkgcmV0dXJuIFhMU0ljdltpY3ZdO1xuXHRcdGlmKGljdiA8IDY0KSByZXR1cm4gcGFsZXR0ZVtpY3YtOF0gfHwgWExTSWN2W2ljdl07XG5cdFx0cmV0dXJuIFhMU0ljdltpY3ZdO1xuXHR9O1xuXHR2YXIgcHJvY2Vzc19jZWxsX3N0eWxlID0gZnVuY3Rpb24gcGNzKGNlbGwsIGxpbmUvKjphbnkqLywgb3B0aW9ucykge1xuXHRcdHZhciB4ZmQgPSBsaW5lLlhGLmRhdGE7XG5cdFx0aWYoIXhmZCB8fCAheGZkLnBhdHRlcm5UeXBlIHx8ICFvcHRpb25zIHx8ICFvcHRpb25zLmNlbGxTdHlsZXMpIHJldHVybjtcblx0XHRsaW5lLnMgPSAoe30vKjphbnkqLyk7XG5cdFx0bGluZS5zLnBhdHRlcm5UeXBlID0geGZkLnBhdHRlcm5UeXBlO1xuXHRcdHZhciB0O1xuXHRcdGlmKCh0ID0gcmdiMkhleChnZXRfcmdiKHhmZC5pY3ZGb3JlKSkpKSB7IGxpbmUucy5mZ0NvbG9yID0ge3JnYjp0fTsgfVxuXHRcdGlmKCh0ID0gcmdiMkhleChnZXRfcmdiKHhmZC5pY3ZCYWNrKSkpKSB7IGxpbmUucy5iZ0NvbG9yID0ge3JnYjp0fTsgfVxuXHR9O1xuXHR2YXIgYWRkY2VsbCA9IGZ1bmN0aW9uIGFkZGNlbGwoY2VsbC8qOmFueSovLCBsaW5lLyo6YW55Ki8sIG9wdGlvbnMvKjphbnkqLykge1xuXHRcdGlmKGZpbGVfZGVwdGggPiAxKSByZXR1cm47XG5cdFx0aWYob3B0aW9ucy5zaGVldFJvd3MgJiYgY2VsbC5yID49IG9wdGlvbnMuc2hlZXRSb3dzKSByZXR1cm47XG5cdFx0aWYob3B0aW9ucy5jZWxsU3R5bGVzICYmIGxpbmUuWEYgJiYgbGluZS5YRi5kYXRhKSBwcm9jZXNzX2NlbGxfc3R5bGUoY2VsbCwgbGluZSwgb3B0aW9ucyk7XG5cdFx0ZGVsZXRlIGxpbmUuaXhmZTsgZGVsZXRlIGxpbmUuWEY7XG5cdFx0bGFzdGNlbGwgPSBjZWxsO1xuXHRcdGxhc3RfY2VsbCA9IGVuY29kZV9jZWxsKGNlbGwpO1xuXHRcdGlmKCFyYW5nZSB8fCAhcmFuZ2UucyB8fCAhcmFuZ2UuZSkgcmFuZ2UgPSB7czp7cjowLGM6MH0sZTp7cjowLGM6MH19O1xuXHRcdGlmKGNlbGwuciA8IHJhbmdlLnMucikgcmFuZ2Uucy5yID0gY2VsbC5yO1xuXHRcdGlmKGNlbGwuYyA8IHJhbmdlLnMuYykgcmFuZ2Uucy5jID0gY2VsbC5jO1xuXHRcdGlmKGNlbGwuciArIDEgPiByYW5nZS5lLnIpIHJhbmdlLmUuciA9IGNlbGwuciArIDE7XG5cdFx0aWYoY2VsbC5jICsgMSA+IHJhbmdlLmUuYykgcmFuZ2UuZS5jID0gY2VsbC5jICsgMTtcblx0XHRpZihvcHRpb25zLmNlbGxGb3JtdWxhICYmIGxpbmUuZikge1xuXHRcdFx0Zm9yKHZhciBhZmkgPSAwOyBhZmkgPCBhcnJheWYubGVuZ3RoOyArK2FmaSkge1xuXHRcdFx0XHRpZihhcnJheWZbYWZpXVswXS5zLmMgPiBjZWxsLmMgfHwgYXJyYXlmW2FmaV1bMF0ucy5yID4gY2VsbC5yKSBjb250aW51ZTtcblx0XHRcdFx0aWYoYXJyYXlmW2FmaV1bMF0uZS5jIDwgY2VsbC5jIHx8IGFycmF5ZlthZmldWzBdLmUuciA8IGNlbGwucikgY29udGludWU7XG5cdFx0XHRcdGxpbmUuRiA9IGVuY29kZV9yYW5nZShhcnJheWZbYWZpXVswXSk7XG5cdFx0XHRcdGlmKGFycmF5ZlthZmldWzBdLnMuYyAhPSBjZWxsLmMgfHwgYXJyYXlmW2FmaV1bMF0ucy5yICE9IGNlbGwucikgZGVsZXRlIGxpbmUuZjtcblx0XHRcdFx0aWYobGluZS5mKSBsaW5lLmYgPSBcIlwiICsgc3RyaW5naWZ5X2Zvcm11bGEoYXJyYXlmW2FmaV1bMV0sIHJhbmdlLCBjZWxsLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR7XG5cdFx0XHRpZihvcHRpb25zLmRlbnNlKSB7XG5cdFx0XHRcdGlmKCFvdXRbY2VsbC5yXSkgb3V0W2NlbGwucl0gPSBbXTtcblx0XHRcdFx0b3V0W2NlbGwucl1bY2VsbC5jXSA9IGxpbmU7XG5cdFx0XHR9IGVsc2Ugb3V0W2xhc3RfY2VsbF0gPSBsaW5lO1xuXHRcdH1cblx0fTtcblx0dmFyIG9wdHMgPSAoe1xuXHRcdGVuYzogZmFsc2UsIC8vIGVuY3J5cHRlZFxuXHRcdHNiY2NoOiAwLCAvLyBjY2ggaW4gdGhlIHByZWNlZGluZyBTdXBCb29rXG5cdFx0c25hbWVzOiBbXSwgLy8gc2hlZXRuYW1lc1xuXHRcdHNoYXJlZGY6IHNoYXJlZGYsIC8vIHNoYXJlZCBmb3JtdWxhZSBieSBhZGRyZXNzXG5cdFx0YXJyYXlmOiBhcnJheWYsIC8vIGFycmF5IGZvcm11bGFlIGFycmF5XG5cdFx0cnJ0YWJpZDogW10sIC8vIFJSVGFiSWRcblx0XHRsYXN0dXNlcjogXCJcIiwgLy8gTGFzdCBVc2VyIGZyb20gV3JpdGVBY2Nlc3Ncblx0XHRiaWZmOiA4LCAvLyBCSUZGIHZlcnNpb25cblx0XHRjb2RlcGFnZTogMCwgLy8gQ1AgZnJvbSBDb2RlUGFnZSByZWNvcmRcblx0XHR3aW5sb2NrZWQ6IDAsIC8vIGZMb2NrV24gZnJvbSBXaW5Qcm90ZWN0XG5cdFx0Y2VsbFN0eWxlczogISFvcHRpb25zICYmICEhb3B0aW9ucy5jZWxsU3R5bGVzLFxuXHRcdFdURjogISFvcHRpb25zICYmICEhb3B0aW9ucy53dGZcblx0fS8qOmFueSovKTtcblx0aWYob3B0aW9ucy5wYXNzd29yZCkgb3B0cy5wYXNzd29yZCA9IG9wdGlvbnMucGFzc3dvcmQ7XG5cdHZhciB0aGVtZXM7XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHR2YXIgb2JqZWN0cyA9IFtdO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBbXSwgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXTtcblx0dmFyIHNlZW5jb2wgPSBmYWxzZTtcblx0dmFyIHN1cGJvb2tzID0gKFtdLyo6YW55Ki8pOyAvLyAxLWluZGV4ZWQsIHdpbGwgaG9sZCBleHRlcm4gbmFtZXNcblx0c3VwYm9va3MuU2hlZXROYW1lcyA9IG9wdHMuc25hbWVzO1xuXHRzdXBib29rcy5zaGFyZWRmID0gb3B0cy5zaGFyZWRmO1xuXHRzdXBib29rcy5hcnJheWYgPSBvcHRzLmFycmF5Zjtcblx0c3VwYm9va3MubmFtZXMgPSBbXTtcblx0c3VwYm9va3MuWFRJID0gW107XG5cdHZhciBsYXN0X1JUID0gMDtcblx0dmFyIGZpbGVfZGVwdGggPSAwOyAvKiBUT0RPOiBtYWtlIGEgcmVhbCBzdGFjayAqL1xuXHR2YXIgQklGRjJGbXQgPSAwLCBCSUZGMkZtdFRhYmxlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBGaWx0ZXJEYXRhYmFzZXMgPSBbXTsgLyogVE9ETzogc29ydCBvdXQgc3VwYm9va3MgYW5kIHByb2Nlc3MgZWxzZXdoZXJlICovXG5cdHZhciBsYXN0X2xibC8qOj9EZWZpbmVkTmFtZSovO1xuXG5cdC8qIGV4cGxpY2l0IG92ZXJyaWRlIGZvciBzb21lIGJyb2tlbiB3cml0ZXJzICovXG5cdG9wdHMuY29kZXBhZ2UgPSAxMjAwO1xuXHRzZXRfY3AoMTIwMCk7XG5cdHZhciBzZWVuX2NvZGVwYWdlID0gZmFsc2U7XG5cdHdoaWxlKGJsb2IubCA8IGJsb2IubGVuZ3RoIC0gMSkge1xuXHRcdHZhciBzID0gYmxvYi5sO1xuXHRcdHZhciBSZWNvcmRUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKFJlY29yZFR5cGUgPT09IDAgJiYgbGFzdF9SVCA9PT0gMHgwMDBhIC8qIEVPRiAqLykgYnJlYWs7XG5cdFx0dmFyIGxlbmd0aCA9IChibG9iLmwgPT09IGJsb2IubGVuZ3RoID8gMCA6IGJsb2IucmVhZF9zaGlmdCgyKSk7XG5cdFx0dmFyIFIgPSBYTFNSZWNvcmRFbnVtW1JlY29yZFR5cGVdO1xuXHRcdC8vY29uc29sZS5sb2coUmVjb3JkVHlwZS50b1N0cmluZygxNiksIFJlY29yZFR5cGUsIFIsIGJsb2IubCwgbGVuZ3RoLCBibG9iLmxlbmd0aCk7XG5cdFx0Ly9pZighUikgY29uc29sZS5sb2coYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCArIGxlbmd0aCkpO1xuXHRcdGlmKFIgJiYgUi5mKSB7XG5cdFx0XHRpZihvcHRpb25zLmJvb2tTaGVldHMpIHtcblx0XHRcdFx0aWYobGFzdF9SVCA9PT0gMHgwMDg1IC8qIEJvdW5kU2hlZXQ4ICovICYmIFJlY29yZFR5cGUgIT09IDB4MDA4NSAvKiBSLm4gIT09ICdCb3VuZFNoZWV0OCcgKi8pIGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bGFzdF9SVCA9IFJlY29yZFR5cGU7XG5cdFx0XHRpZihSLnIgPT09IDIgfHwgUi5yID09IDEyKSB7XG5cdFx0XHRcdHZhciBydCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgbGVuZ3RoIC09IDI7XG5cdFx0XHRcdGlmKCFvcHRzLmVuYyAmJiBydCAhPT0gUmVjb3JkVHlwZSAmJiAoKChydCYweEZGKTw8OCl8KHJ0Pj44KSkgIT09IFJlY29yZFR5cGUpIHRocm93IG5ldyBFcnJvcihcInJ0IG1pc21hdGNoOiBcIiArIHJ0ICsgXCIhPVwiICsgUmVjb3JkVHlwZSk7XG5cdFx0XHRcdGlmKFIuciA9PSAxMil7XG5cdFx0XHRcdFx0YmxvYi5sICs9IDEwOyBsZW5ndGggLT0gMTA7XG5cdFx0XHRcdH0gLy8gc2tpcCBGUlRcblx0XHRcdH1cblx0XHRcdC8vY29uc29sZS5lcnJvcihSLGJsb2IubCxsZW5ndGgsYmxvYi5sZW5ndGgpO1xuXHRcdFx0dmFyIHZhbC8qOmFueSovID0gKHt9Lyo6YW55Ki8pO1xuXHRcdFx0aWYoUmVjb3JkVHlwZSA9PT0gMHgwMDBhIC8qIEVPRiAqLykgdmFsID0gLyo6OigqL1IuZihibG9iLCBsZW5ndGgsIG9wdHMpLyo6OiA6YW55KSovO1xuXHRcdFx0ZWxzZSB2YWwgPSAvKjo6KCovc2x1cnAoUmVjb3JkVHlwZSwgUiwgYmxvYiwgbGVuZ3RoLCBvcHRzKS8qOjogOmFueSkqLztcblx0XHRcdC8qOjogdmFsID0gKHZhbDphbnkpOyAqL1xuXHRcdFx0aWYoZmlsZV9kZXB0aCA9PSAwICYmIFsweDAwMDksIDB4MDIwOSwgMHgwNDA5LCAweDA4MDldLmluZGV4T2YobGFzdF9SVCkgPT09IC0xIC8qICdCT0YnICovKSBjb250aW51ZTtcblx0XHRcdHN3aXRjaChSZWNvcmRUeXBlKSB7XG5cdFx0XHRcdGNhc2UgMHgwMDIyIC8qIERhdGUxOTA0ICovOlxuXHRcdFx0XHRcdC8qOjogaWYoIVdvcmtib29rLldCUHJvcHMpIFdvcmtib29rLldCUHJvcHMgPSB7fTsgKi9cblx0XHRcdFx0XHR3Yi5vcHRzLkRhdGUxOTA0ID0gV29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDg2IC8qIFdyaXRlUHJvdGVjdCAqLzogd2Iub3B0cy5Xcml0ZVByb3RlY3QgPSB0cnVlOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMmYgLyogRmlsZVBhc3MgKi86XG5cdFx0XHRcdFx0aWYoIW9wdHMuZW5jKSBibG9iLmwgPSAwO1xuXHRcdFx0XHRcdG9wdHMuZW5jID0gdmFsO1xuXHRcdFx0XHRcdGlmKCFvcHRpb25zLnBhc3N3b3JkKSB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZFwiKTtcblx0XHRcdFx0XHRpZih2YWwudmFsaWQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiRW5jcnlwdGlvbiBzY2hlbWUgdW5zdXBwb3J0ZWRcIik7XG5cdFx0XHRcdFx0aWYoIXZhbC52YWxpZCkgdGhyb3cgbmV3IEVycm9yKFwiUGFzc3dvcmQgaXMgaW5jb3JyZWN0XCIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA1YyAvKiBXcml0ZUFjY2VzcyAqLzogb3B0cy5sYXN0dXNlciA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDQyIC8qIENvZGVQYWdlICovOlxuXHRcdFx0XHRcdHZhciBjcHZhbCA9IE51bWJlcih2YWwpO1xuXHRcdFx0XHRcdC8qIG92ZXJyaWRlcyBiYXNlZCBvbiB0ZXN0IGNhc2VzICovXG5cdFx0XHRcdFx0c3dpdGNoKGNwdmFsKSB7XG5cdFx0XHRcdFx0XHRjYXNlIDB4NTIxMjogY3B2YWwgPSAgMTIwMDsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIDB4ODAwMDogY3B2YWwgPSAxMDAwMDsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIDB4ODAwMTogY3B2YWwgPSAgMTI1MjsgYnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNldF9jcChvcHRzLmNvZGVwYWdlID0gY3B2YWwpO1xuXHRcdFx0XHRcdHNlZW5fY29kZXBhZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDEzZCAvKiBSUlRhYklkICovOiBvcHRzLnJydGFiaWQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxOSAvKiBXaW5Qcm90ZWN0ICovOiBvcHRzLndpbmxvY2tlZCA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMWI3IC8qIFJlZnJlc2hBbGwgKi86IHdiLm9wdHNbXCJSZWZyZXNoQWxsXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGMgLyogQ2FsY0NvdW50ICovOiB3Yi5vcHRzW1wiQ2FsY0NvdW50XCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTAgLyogQ2FsY0RlbHRhICovOiB3Yi5vcHRzW1wiQ2FsY0RlbHRhXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTEgLyogQ2FsY0l0ZXIgKi86IHdiLm9wdHNbXCJDYWxjSXRlclwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBkIC8qIENhbGNNb2RlICovOiB3Yi5vcHRzW1wiQ2FsY01vZGVcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwZSAvKiBDYWxjUHJlY2lzaW9uICovOiB3Yi5vcHRzW1wiQ2FsY1ByZWNpc2lvblwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDVmIC8qIENhbGNTYXZlUmVjYWxjICovOiB3Yi5vcHRzW1wiQ2FsY1NhdmVSZWNhbGNcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwZiAvKiBDYWxjUmVmTW9kZSAqLzogb3B0cy5DYWxjUmVmTW9kZSA9IHZhbDsgYnJlYWs7IC8vIFRPRE86IGltcGxlbWVudCBSMUMxXG5cdFx0XHRcdGNhc2UgMHgwOGEzIC8qIEZvcmNlRnVsbENhbGN1bGF0aW9uICovOiB3Yi5vcHRzLkZ1bGxDYWxjID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwODEgLyogV3NCb29sICovOlxuXHRcdFx0XHRcdGlmKHZhbC5mRGlhbG9nKSBvdXRbXCIhdHlwZVwiXSA9IFwiZGlhbG9nXCI7XG5cdFx0XHRcdFx0aWYoIXZhbC5mQmVsb3cpIChvdXRbXCIhb3V0bGluZVwiXSB8fCAob3V0W1wiIW91dGxpbmVcIl0gPSB7fSkpLmFib3ZlID0gdHJ1ZTtcblx0XHRcdFx0XHRpZighdmFsLmZSaWdodCkgKG91dFtcIiFvdXRsaW5lXCJdIHx8IChvdXRbXCIhb3V0bGluZVwiXSA9IHt9KSkubGVmdCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7IC8vIFRPRE9cblx0XHRcdFx0Y2FzZSAweDAwZTAgLyogWEYgKi86XG5cdFx0XHRcdFx0WEZzLnB1c2godmFsKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMWFlIC8qIFN1cEJvb2sgKi86XG5cdFx0XHRcdFx0c3VwYm9va3MucHVzaChbdmFsXSk7XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoLTFdLlhUSSA9IFtdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAyMzogY2FzZSAweDAyMjMgLyogRXh0ZXJuTmFtZSAqLzpcblx0XHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGgtMV0ucHVzaCh2YWwpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxODogY2FzZSAweDAyMTggLyogTGJsICovOlxuXHRcdFx0XHRcdGxhc3RfbGJsID0gKHtcblx0XHRcdFx0XHRcdE5hbWU6IHZhbC5OYW1lLFxuXHRcdFx0XHRcdFx0UmVmOiBzdHJpbmdpZnlfZm9ybXVsYSh2YWwucmdjZSxyYW5nZSxudWxsLHN1cGJvb2tzLG9wdHMpXG5cdFx0XHRcdFx0fS8qOkRlZmluZWROYW1lKi8pO1xuXHRcdFx0XHRcdGlmKHZhbC5pdGFiID4gMCkgbGFzdF9sYmwuU2hlZXQgPSB2YWwuaXRhYiAtIDE7XG5cdFx0XHRcdFx0c3VwYm9va3MubmFtZXMucHVzaChsYXN0X2xibCk7XG5cdFx0XHRcdFx0aWYoIXN1cGJvb2tzWzBdKSB7IHN1cGJvb2tzWzBdID0gW107IHN1cGJvb2tzWzBdLlhUSSA9IFtdOyB9XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoLTFdLnB1c2godmFsKTtcblx0XHRcdFx0XHRpZih2YWwuTmFtZSA9PSBcIl94bG5tLl9GaWx0ZXJEYXRhYmFzZVwiICYmIHZhbC5pdGFiID4gMClcblx0XHRcdFx0XHRcdGlmKHZhbC5yZ2NlICYmIHZhbC5yZ2NlWzBdICYmIHZhbC5yZ2NlWzBdWzBdICYmIHZhbC5yZ2NlWzBdWzBdWzBdID09ICdQdGdBcmVhM2QnKVxuXHRcdFx0XHRcdFx0XHRGaWx0ZXJEYXRhYmFzZXNbdmFsLml0YWIgLSAxXSA9IHsgcmVmOiBlbmNvZGVfcmFuZ2UodmFsLnJnY2VbMF1bMF1bMV1bMl0pIH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDE2IC8qIEV4dGVybkNvdW50ICovOiBvcHRzLkV4dGVybkNvdW50ID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTcgLyogRXh0ZXJuU2hlZXQgKi86XG5cdFx0XHRcdFx0aWYoc3VwYm9va3MubGVuZ3RoID09IDApIHsgc3VwYm9va3NbMF0gPSBbXTsgc3VwYm9va3NbMF0uWFRJID0gW107IH1cblx0XHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkgPSBzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkuY29uY2F0KHZhbCk7IHN1cGJvb2tzLlhUSSA9IHN1cGJvb2tzLlhUSS5jb25jYXQodmFsKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODk0IC8qIE5hbWVDbXQgKi86XG5cdFx0XHRcdFx0LyogVE9ETzogc2VhcmNoIGZvciBjb3JyZWN0IG5hbWUgKi9cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPCA4KSBicmVhaztcblx0XHRcdFx0XHRpZihsYXN0X2xibCAhPSBudWxsKSBsYXN0X2xibC5Db21tZW50ID0gdmFsWzFdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxMiAvKiBQcm90ZWN0ICovOiBvdXRbXCIhcHJvdGVjdFwiXSA9IHZhbDsgYnJlYWs7IC8qIGZvciBzaGVldCBvciBib29rICovXG5cdFx0XHRcdGNhc2UgMHgwMDEzIC8qIFBhc3N3b3JkICovOiBpZih2YWwgIT09IDAgJiYgb3B0cy5XVEYpIGNvbnNvbGUuZXJyb3IoXCJQYXNzd29yZCB2ZXJpZmllcjogXCIgKyB2YWwpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwODUgLyogQm91bmRTaGVldDggKi86IHtcblx0XHRcdFx0XHREaXJlY3RvcnlbdmFsLnBvc10gPSB2YWw7XG5cdFx0XHRcdFx0b3B0cy5zbmFtZXMucHVzaCh2YWwubmFtZSk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBhIC8qIEVPRiAqLzoge1xuXHRcdFx0XHRcdGlmKC0tZmlsZV9kZXB0aCkgYnJlYWs7XG5cdFx0XHRcdFx0aWYocmFuZ2UuZSkge1xuXHRcdFx0XHRcdFx0aWYocmFuZ2UuZS5yID4gMCAmJiByYW5nZS5lLmMgPiAwKSB7XG5cdFx0XHRcdFx0XHRcdHJhbmdlLmUuci0tOyByYW5nZS5lLmMtLTtcblx0XHRcdFx0XHRcdFx0b3V0W1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMuc2hlZXRSb3dzICYmIG9wdGlvbnMuc2hlZXRSb3dzIDw9IHJhbmdlLmUucikge1xuXHRcdFx0XHRcdFx0XHRcdHZhciB0bXByaSA9IHJhbmdlLmUucjtcblx0XHRcdFx0XHRcdFx0XHRyYW5nZS5lLnIgPSBvcHRpb25zLnNoZWV0Um93cyAtIDE7XG5cdFx0XHRcdFx0XHRcdFx0b3V0W1wiIWZ1bGxyZWZcIl0gPSBvdXRbXCIhcmVmXCJdO1xuXHRcdFx0XHRcdFx0XHRcdG91dFtcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdHJhbmdlLmUuciA9IHRtcHJpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJhbmdlLmUucisrOyByYW5nZS5lLmMrKztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKG1lcmdlcy5sZW5ndGggPiAwKSBvdXRbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRcdFx0XHRcdFx0aWYob2JqZWN0cy5sZW5ndGggPiAwKSBvdXRbXCIhb2JqZWN0c1wiXSA9IG9iamVjdHM7XG5cdFx0XHRcdFx0XHRpZihjb2xpbmZvLmxlbmd0aCA+IDApIG91dFtcIiFjb2xzXCJdID0gY29saW5mbztcblx0XHRcdFx0XHRcdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgb3V0W1wiIXJvd3NcIl0gPSByb3dpbmZvO1xuXHRcdFx0XHRcdFx0V29ya2Jvb2suU2hlZXRzLnB1c2god3Nwcm9wcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKGN1cl9zaGVldCA9PT0gXCJcIikgUHJlYW1ibGUgPSBvdXQ7IGVsc2UgU2hlZXRzW2N1cl9zaGVldF0gPSBvdXQ7XG5cdFx0XHRcdFx0b3V0ID0gKChvcHRpb25zLmRlbnNlID8gW10gOiB7fSkvKjphbnkqLyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDA5OiBjYXNlIDB4MDIwOTogY2FzZSAweDA0MDk6IGNhc2UgMHgwODA5IC8qIEJPRiAqLzoge1xuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA9PT0gOCkgb3B0cy5iaWZmID0ge1xuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86Mixcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAyMDkvKjo6XSovOjMsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwNDA5Lyo6Ol0qLzo0XG5cdFx0XHRcdFx0fVtSZWNvcmRUeXBlXSB8fCB7XG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMjAwLyo6Ol0qLzoyLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDMwMC8qOjpdKi86Myxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDA0MDAvKjo6XSovOjQsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwNTAwLyo6Ol0qLzo1LFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDYwMC8qOjpdKi86OCxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAwMDIvKjo6XSovOjIsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzoyXG5cdFx0XHRcdFx0fVt2YWwuQklGRlZlcl0gfHwgODtcblx0XHRcdFx0XHRvcHRzLmJpZmZndWVzcyA9IHZhbC5CSUZGVmVyID09IDA7XG5cdFx0XHRcdFx0aWYodmFsLkJJRkZWZXIgPT0gMCAmJiB2YWwuZHQgPT0gMHgxMDAwKSB7IG9wdHMuYmlmZiA9IDU7IHNlZW5fY29kZXBhZ2UgPSB0cnVlOyBzZXRfY3Aob3B0cy5jb2RlcGFnZSA9IDI4NTkxKTsgfVxuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA9PSA4ICYmIHZhbC5CSUZGVmVyID09IDAgJiYgdmFsLmR0ID09IDE2KSBvcHRzLmJpZmYgPSAyO1xuXHRcdFx0XHRcdGlmKGZpbGVfZGVwdGgrKykgYnJlYWs7XG5cdFx0XHRcdFx0b3V0ID0gKChvcHRpb25zLmRlbnNlID8gW10gOiB7fSkvKjphbnkqLyk7XG5cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPCA4ICYmICFzZWVuX2NvZGVwYWdlKSB7IHNlZW5fY29kZXBhZ2UgPSB0cnVlOyBzZXRfY3Aob3B0cy5jb2RlcGFnZSA9IG9wdGlvbnMuY29kZXBhZ2UgfHwgMTI1Mik7IH1cblxuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA8IDUgfHwgdmFsLkJJRkZWZXIgPT0gMCAmJiB2YWwuZHQgPT0gMHgxMDAwKSB7XG5cdFx0XHRcdFx0XHRpZihjdXJfc2hlZXQgPT09IFwiXCIpIGN1cl9zaGVldCA9IFwiU2hlZXQxXCI7XG5cdFx0XHRcdFx0XHRyYW5nZSA9IHtzOntyOjAsYzowfSxlOntyOjAsYzowfX07XG5cdFx0XHRcdFx0XHQvKiBmYWtlIEJvdW5kU2hlZXQ4ICovXG5cdFx0XHRcdFx0XHR2YXIgZmFrZWJzOCA9IHtwb3M6IGJsb2IubCAtIGxlbmd0aCwgbmFtZTpjdXJfc2hlZXR9O1xuXHRcdFx0XHRcdFx0RGlyZWN0b3J5W2Zha2ViczgucG9zXSA9IGZha2Viczg7XG5cdFx0XHRcdFx0XHRvcHRzLnNuYW1lcy5wdXNoKGN1cl9zaGVldCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgY3VyX3NoZWV0ID0gKERpcmVjdG9yeVtzXSB8fCB7bmFtZTpcIlwifSkubmFtZTtcblx0XHRcdFx0XHRpZih2YWwuZHQgPT0gMHgyMCkgb3V0W1wiIXR5cGVcIl0gPSBcImNoYXJ0XCI7XG5cdFx0XHRcdFx0aWYodmFsLmR0ID09IDB4NDApIG91dFtcIiF0eXBlXCJdID0gXCJtYWNyb1wiO1xuXHRcdFx0XHRcdG1lcmdlcyA9IFtdO1xuXHRcdFx0XHRcdG9iamVjdHMgPSBbXTtcblx0XHRcdFx0XHRvcHRzLmFycmF5ZiA9IGFycmF5ZiA9IFtdO1xuXHRcdFx0XHRcdGNvbGluZm8gPSBbXTsgcm93aW5mbyA9IFtdO1xuXHRcdFx0XHRcdHNlZW5jb2wgPSBmYWxzZTtcblx0XHRcdFx0XHR3c3Byb3BzID0ge0hpZGRlbjooRGlyZWN0b3J5W3NdfHx7aHM6MH0pLmhzLCBuYW1lOmN1cl9zaGVldCB9O1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDIwMyAvKiBOdW1iZXIgKi86IGNhc2UgMHgwMDAzIC8qIEJJRkYyTlVNICovOiBjYXNlIDB4MDAwMiAvKiBCSUZGMklOVCAqLzoge1xuXHRcdFx0XHRcdGlmKG91dFtcIiF0eXBlXCJdID09IFwiY2hhcnRcIikgaWYob3B0aW9ucy5kZW5zZSA/IChvdXRbdmFsLnJdfHxbXSlbdmFsLmNdOiBvdXRbZW5jb2RlX2NlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9KV0pICsrdmFsLmM7XG5cdFx0XHRcdFx0dGVtcF92YWwgPSAoe2l4ZmU6IHZhbC5peGZlLCBYRjogWEZzW3ZhbC5peGZlXXx8e30sIHY6dmFsLnZhbCwgdDonbid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDA1OiBjYXNlIDB4MDIwNSAvKiBCb29sRXJyICovOiB7XG5cdFx0XHRcdFx0dGVtcF92YWwgPSAoe2l4ZmU6IHZhbC5peGZlLCBYRjogWEZzW3ZhbC5peGZlXSwgdjp2YWwudmFsLCB0OnZhbC50fS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDI3ZSAvKiBSSyAqLzoge1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV0sIHY6dmFsLnJrbnVtLCB0OiduJ30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwYmQgLyogTXVsUmsgKi86IHtcblx0XHRcdFx0XHRmb3IodmFyIGogPSB2YWwuYzsgaiA8PSB2YWwuQzsgKytqKSB7XG5cdFx0XHRcdFx0XHR2YXIgaXhmZSA9IHZhbC5ya3JlY1tqLXZhbC5jXVswXTtcblx0XHRcdFx0XHRcdHRlbXBfdmFsPSAoe2l4ZmU6aXhmZSwgWEY6WEZzW2l4ZmVdLCB2OnZhbC5ya3JlY1tqLXZhbC5jXVsxXSwgdDonbid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRcdGFkZGNlbGwoe2M6aiwgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDA2OiBjYXNlIDB4MDIwNjogY2FzZSAweDA0MDYgLyogRm9ybXVsYSAqLzoge1xuXHRcdFx0XHRcdGlmKHZhbC52YWwgPT0gJ1N0cmluZycpIHsgbGFzdF9mb3JtdWxhID0gdmFsOyBicmVhazsgfVxuXHRcdFx0XHRcdHRlbXBfdmFsID0gbWFrZV9jZWxsKHZhbC52YWwsIHZhbC5jZWxsLml4ZmUsIHZhbC50dCk7XG5cdFx0XHRcdFx0dGVtcF92YWwuWEYgPSBYRnNbdGVtcF92YWwuaXhmZV07XG5cdFx0XHRcdFx0aWYob3B0aW9ucy5jZWxsRm9ybXVsYSkge1xuXHRcdFx0XHRcdFx0dmFyIF9mID0gdmFsLmZvcm11bGE7XG5cdFx0XHRcdFx0XHRpZihfZiAmJiBfZlswXSAmJiBfZlswXVswXSAmJiBfZlswXVswXVswXSA9PSAnUHRnRXhwJykge1xuXHRcdFx0XHRcdFx0XHR2YXIgX2ZyID0gX2ZbMF1bMF1bMV1bMF0sIF9mYyA9IF9mWzBdWzBdWzFdWzFdO1xuXHRcdFx0XHRcdFx0XHR2YXIgX2ZlID0gZW5jb2RlX2NlbGwoe3I6X2ZyLCBjOl9mY30pO1xuXHRcdFx0XHRcdFx0XHRpZihzaGFyZWRmW19mZV0pIHRlbXBfdmFsLmYgPSBcIlwiK3N0cmluZ2lmeV9mb3JtdWxhKHZhbC5mb3JtdWxhLHJhbmdlLHZhbC5jZWxsLHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHRcdFx0ZWxzZSB0ZW1wX3ZhbC5GID0gKChvcHRpb25zLmRlbnNlID8gKG91dFtfZnJdfHxbXSlbX2ZjXTogb3V0W19mZV0pIHx8IHt9KS5GO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHRlbXBfdmFsLmYgPSBcIlwiK3N0cmluZ2lmeV9mb3JtdWxhKHZhbC5mb3JtdWxhLHJhbmdlLHZhbC5jZWxsLHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh2YWwuY2VsbCwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdGxhc3RfZm9ybXVsYSA9IHZhbDtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMDc6IGNhc2UgMHgwMjA3IC8qIFN0cmluZyAqLzoge1xuXHRcdFx0XHRcdGlmKGxhc3RfZm9ybXVsYSkgeyAvKiB0ZWNobmljYWxseSBhbHdheXMgdHJ1ZSAqL1xuXHRcdFx0XHRcdFx0bGFzdF9mb3JtdWxhLnZhbCA9IHZhbDtcblx0XHRcdFx0XHRcdHRlbXBfdmFsID0gbWFrZV9jZWxsKHZhbCwgbGFzdF9mb3JtdWxhLmNlbGwuaXhmZSwgJ3MnKTtcblx0XHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5jZWxsRm9ybXVsYSkge1xuXHRcdFx0XHRcdFx0XHR0ZW1wX3ZhbC5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYShsYXN0X2Zvcm11bGEuZm9ybXVsYSwgcmFuZ2UsIGxhc3RfZm9ybXVsYS5jZWxsLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdFx0YWRkY2VsbChsYXN0X2Zvcm11bGEuY2VsbCwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0bGFzdF9mb3JtdWxhID0gbnVsbDtcblx0XHRcdFx0XHR9IGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiU3RyaW5nIHJlY29yZCBleHBlY3RzIEZvcm11bGFcIik7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDIxOiBjYXNlIDB4MDIyMSAvKiBBcnJheSAqLzoge1xuXHRcdFx0XHRcdGFycmF5Zi5wdXNoKHZhbCk7XG5cdFx0XHRcdFx0dmFyIF9hcnJheXN0YXJ0ID0gZW5jb2RlX2NlbGwodmFsWzBdLnMpO1xuXHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbdmFsWzBdLnMucl18fFtdKVt2YWxbMF0ucy5jXSA6IG91dFtfYXJyYXlzdGFydF07XG5cdFx0XHRcdFx0aWYob3B0aW9ucy5jZWxsRm9ybXVsYSAmJiBjYykge1xuXHRcdFx0XHRcdFx0aWYoIWxhc3RfZm9ybXVsYSkgYnJlYWs7IC8qIHRlY2huaWNhbGx5IHVucmVhY2hhYmxlICovXG5cdFx0XHRcdFx0XHRpZighX2FycmF5c3RhcnQgfHwgIWNjKSBicmVhaztcblx0XHRcdFx0XHRcdGNjLmYgPSBcIlwiK3N0cmluZ2lmeV9mb3JtdWxhKHZhbFsxXSwgcmFuZ2UsIHZhbFswXSwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdFx0Y2MuRiA9IGVuY29kZV9yYW5nZSh2YWxbMF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA0YmMgLyogU2hyRm1sYSAqLzoge1xuXHRcdFx0XHRcdGlmKCFvcHRpb25zLmNlbGxGb3JtdWxhKSBicmVhaztcblx0XHRcdFx0XHRpZihsYXN0X2NlbGwpIHtcblx0XHRcdFx0XHRcdC8qIFRPRE86IGNhcHR1cmUgcmFuZ2UgKi9cblx0XHRcdFx0XHRcdGlmKCFsYXN0X2Zvcm11bGEpIGJyZWFrOyAvKiB0ZWNobmljYWxseSB1bnJlYWNoYWJsZSAqL1xuXHRcdFx0XHRcdFx0c2hhcmVkZltlbmNvZGVfY2VsbChsYXN0X2Zvcm11bGEuY2VsbCldPSB2YWxbMF07XG5cdFx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W2xhc3RfZm9ybXVsYS5jZWxsLnJdfHxbXSlbbGFzdF9mb3JtdWxhLmNlbGwuY10gOiBvdXRbZW5jb2RlX2NlbGwobGFzdF9mb3JtdWxhLmNlbGwpXTtcblx0XHRcdFx0XHRcdChjY3x8e30pLmYgPSBcIlwiK3N0cmluZ2lmeV9mb3JtdWxhKHZhbFswXSwgcmFuZ2UsIGxhc3RjZWxsLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBmZCAvKiBMYWJlbFNzdCAqLzpcblx0XHRcdFx0XHR0ZW1wX3ZhbD1tYWtlX2NlbGwoc3N0W3ZhbC5pc3N0XS50LCB2YWwuaXhmZSwgJ3MnKTtcblx0XHRcdFx0XHRpZihzc3RbdmFsLmlzc3RdLmgpIHRlbXBfdmFsLmggPSBzc3RbdmFsLmlzc3RdLmg7XG5cdFx0XHRcdFx0dGVtcF92YWwuWEYgPSBYRnNbdGVtcF92YWwuaXhmZV07XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyMDEgLyogQmxhbmsgKi86IGlmKG9wdGlvbnMuc2hlZXRTdHVicykge1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV0sIHQ6J3onfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBiZSAvKiBNdWxCbGFuayAqLzogaWYob3B0aW9ucy5zaGVldFN0dWJzKSB7XG5cdFx0XHRcdFx0Zm9yKHZhciBfaiA9IHZhbC5jOyBfaiA8PSB2YWwuQzsgKytfaikge1xuXHRcdFx0XHRcdFx0dmFyIF9peGZlID0gdmFsLml4ZmVbX2otdmFsLmNdO1xuXHRcdFx0XHRcdFx0dGVtcF92YWw9ICh7aXhmZTpfaXhmZSwgWEY6WEZzW19peGZlXSwgdDoneid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRcdGFkZGNlbGwoe2M6X2osIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBkNiAvKiBSU3RyaW5nICovOlxuXHRcdFx0XHRjYXNlIDB4MDIwNCAvKiBMYWJlbCAqLzogY2FzZSAweDAwMDQgLyogQklGRjJTVFIgKi86XG5cdFx0XHRcdFx0dGVtcF92YWw9bWFrZV9jZWxsKHZhbC52YWwsIHZhbC5peGZlLCAncycpO1xuXHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDAwMDA6IGNhc2UgMHgwMjAwIC8qIERpbWVuc2lvbnMgKi86IHtcblx0XHRcdFx0XHRpZihmaWxlX2RlcHRoID09PSAxKSByYW5nZSA9IHZhbDsgLyogVE9ETzogc3RhY2sgKi9cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwZmMgLyogU1NUICovOiB7XG5cdFx0XHRcdFx0c3N0ID0gdmFsO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDQxZSAvKiBGb3JtYXQgKi86IHsgLyogdmFsID0gW2lkLCBmbXRdICovXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmID09IDQpIHtcblx0XHRcdFx0XHRcdEJJRkYyRm10VGFibGVbQklGRjJGbXQrK10gPSB2YWxbMV07XG5cdFx0XHRcdFx0XHRmb3IodmFyIGI0aWR4ID0gMDsgYjRpZHggPCBCSUZGMkZtdCArIDE2MzsgKytiNGlkeCkgaWYodGFibGVfZm10W2I0aWR4XSA9PSB2YWxbMV0pIGJyZWFrO1xuXHRcdFx0XHRcdFx0aWYoYjRpZHggPj0gMTYzKSBTU0ZfbG9hZCh2YWxbMV0sIEJJRkYyRm10ICsgMTYzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBTU0ZfbG9hZCh2YWxbMV0sIHZhbFswXSk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDFlIC8qIEJJRkYyRk9STUFUICovOiB7XG5cdFx0XHRcdFx0QklGRjJGbXRUYWJsZVtCSUZGMkZtdCsrXSA9IHZhbDtcblx0XHRcdFx0XHRmb3IodmFyIGIyaWR4ID0gMDsgYjJpZHggPCBCSUZGMkZtdCArIDE2MzsgKytiMmlkeCkgaWYodGFibGVfZm10W2IyaWR4XSA9PSB2YWwpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKGIyaWR4ID49IDE2MykgU1NGX2xvYWQodmFsLCBCSUZGMkZtdCArIDE2Myk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDAwZTUgLyogTWVyZ2VDZWxscyAqLzogbWVyZ2VzID0gbWVyZ2VzLmNvbmNhdCh2YWwpOyBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDA1ZCAvKiBPYmogKi86IG9iamVjdHNbdmFsLmNtb1swXV0gPSBvcHRzLmxhc3RvYmogPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFiNiAvKiBUeE8gKi86IG9wdHMubGFzdG9iai5UeE8gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA3ZiAvKiBJbURhdGEgKi86IG9wdHMubGFzdG9iai5JbURhdGEgPSB2YWw7IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMWI4IC8qIEhMaW5rICovOiB7XG5cdFx0XHRcdFx0Zm9yKHJuZ1IgPSB2YWxbMF0ucy5yOyBybmdSIDw9IHZhbFswXS5lLnI7ICsrcm5nUilcblx0XHRcdFx0XHRcdGZvcihybmdDID0gdmFsWzBdLnMuYzsgcm5nQyA8PSB2YWxbMF0uZS5jOyArK3JuZ0MpIHtcblx0XHRcdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFtybmdSXXx8W10pW3JuZ0NdIDogb3V0W2VuY29kZV9jZWxsKHtjOnJuZ0MscjpybmdSfSldO1xuXHRcdFx0XHRcdFx0XHRpZihjYykgY2MubCA9IHZhbFsxXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA4MDAgLyogSExpbmtUb29sdGlwICovOiB7XG5cdFx0XHRcdFx0Zm9yKHJuZ1IgPSB2YWxbMF0ucy5yOyBybmdSIDw9IHZhbFswXS5lLnI7ICsrcm5nUilcblx0XHRcdFx0XHRcdGZvcihybmdDID0gdmFsWzBdLnMuYzsgcm5nQyA8PSB2YWxbMF0uZS5jOyArK3JuZ0MpIHtcblx0XHRcdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFtybmdSXXx8W10pW3JuZ0NdIDogb3V0W2VuY29kZV9jZWxsKHtjOnJuZ0MscjpybmdSfSldO1xuXHRcdFx0XHRcdFx0XHRpZihjYyAmJiBjYy5sKSBjYy5sLlRvb2x0aXAgPSB2YWxbMV07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMWMgLyogTm90ZSAqLzoge1xuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA8PSA1ICYmIG9wdHMuYmlmZiA+PSAyKSBicmVhazsgLyogVE9ETzogQklGRjUgKi9cblx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W3ZhbFswXS5yXXx8W10pW3ZhbFswXS5jXSA6IG91dFtlbmNvZGVfY2VsbCh2YWxbMF0pXTtcblx0XHRcdFx0XHR2YXIgbm90ZW9iaiA9IG9iamVjdHNbdmFsWzJdXTtcblx0XHRcdFx0XHRpZighY2MpIHtcblx0XHRcdFx0XHRcdGlmKG9wdGlvbnMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdFx0aWYoIW91dFt2YWxbMF0ucl0pIG91dFt2YWxbMF0ucl0gPSBbXTtcblx0XHRcdFx0XHRcdFx0Y2MgPSBvdXRbdmFsWzBdLnJdW3ZhbFswXS5jXSA9ICh7dDpcInpcIn0vKjphbnkqLyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjYyA9IG91dFtlbmNvZGVfY2VsbCh2YWxbMF0pXSA9ICh7dDpcInpcIn0vKjphbnkqLyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyYW5nZS5lLnIgPSBNYXRoLm1heChyYW5nZS5lLnIsIHZhbFswXS5yKTtcblx0XHRcdFx0XHRcdHJhbmdlLnMuciA9IE1hdGgubWluKHJhbmdlLnMuciwgdmFsWzBdLnIpO1xuXHRcdFx0XHRcdFx0cmFuZ2UuZS5jID0gTWF0aC5tYXgocmFuZ2UuZS5jLCB2YWxbMF0uYyk7XG5cdFx0XHRcdFx0XHRyYW5nZS5zLmMgPSBNYXRoLm1pbihyYW5nZS5zLmMsIHZhbFswXS5jKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoIWNjLmMpIGNjLmMgPSBbXTtcblx0XHRcdFx0XHRjbW50ID0ge2E6dmFsWzFdLHQ6bm90ZW9iai5UeE8udH07XG5cdFx0XHRcdFx0Y2MuYy5wdXNoKGNtbnQpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDg3ZCAvKiBYRkV4dCAqLzogdXBkYXRlX3hmZXh0KFhGc1t2YWwuaXhmZV0sIHZhbC5leHQpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwN2QgLyogQ29sSW5mbyAqLzoge1xuXHRcdFx0XHRcdGlmKCFvcHRzLmNlbGxTdHlsZXMpIGJyZWFrO1xuXHRcdFx0XHRcdHdoaWxlKHZhbC5lID49IHZhbC5zKSB7XG5cdFx0XHRcdFx0XHRjb2xpbmZvW3ZhbC5lLS1dID0geyB3aWR0aDogdmFsLncvMjU2LCBsZXZlbDogKHZhbC5sZXZlbCB8fCAwKSwgaGlkZGVuOiAhISh2YWwuZmxhZ3MgJiAxKSB9O1xuXHRcdFx0XHRcdFx0aWYoIXNlZW5jb2wpIHsgc2VlbmNvbCA9IHRydWU7IGZpbmRfbWR3X2NvbHcodmFsLncvMjU2KTsgfVxuXHRcdFx0XHRcdFx0cHJvY2Vzc19jb2woY29saW5mb1t2YWwuZSsxXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDIwOCAvKiBSb3cgKi86IHtcblx0XHRcdFx0XHR2YXIgcm93b2JqID0ge307XG5cdFx0XHRcdFx0aWYodmFsLmxldmVsICE9IG51bGwpIHsgcm93aW5mb1t2YWwucl0gPSByb3dvYmo7IHJvd29iai5sZXZlbCA9IHZhbC5sZXZlbDsgfVxuXHRcdFx0XHRcdGlmKHZhbC5oaWRkZW4pIHsgcm93aW5mb1t2YWwucl0gPSByb3dvYmo7IHJvd29iai5oaWRkZW4gPSB0cnVlOyB9XG5cdFx0XHRcdFx0aWYodmFsLmhwdCkge1xuXHRcdFx0XHRcdFx0cm93aW5mb1t2YWwucl0gPSByb3dvYmo7XG5cdFx0XHRcdFx0XHRyb3dvYmouaHB0ID0gdmFsLmhwdDsgcm93b2JqLmhweCA9IHB0MnB4KHZhbC5ocHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMjYgLyogTGVmdE1hcmdpbiAqLzpcblx0XHRcdFx0Y2FzZSAweDAwMjcgLyogUmlnaHRNYXJnaW4gKi86XG5cdFx0XHRcdGNhc2UgMHgwMDI4IC8qIFRvcE1hcmdpbiAqLzpcblx0XHRcdFx0Y2FzZSAweDAwMjkgLyogQm90dG9tTWFyZ2luICovOlxuXHRcdFx0XHRcdGlmKCFvdXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhvdXRbJyFtYXJnaW5zJ10gPSB7fSk7XG5cdFx0XHRcdFx0b3V0WychbWFyZ2lucyddWyh7MHgyNjogXCJsZWZ0XCIsIDB4Mjc6XCJyaWdodFwiLCAweDI4OlwidG9wXCIsIDB4Mjk6XCJib3R0b21cIn0pW1JlY29yZFR5cGVdXSA9IHZhbDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwYTEgLyogU2V0dXAgKi86IC8vIFRPRE9cblx0XHRcdFx0XHRpZighb3V0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMob3V0WychbWFyZ2lucyddID0ge30pO1xuXHRcdFx0XHRcdG91dFsnIW1hcmdpbnMnXS5oZWFkZXIgPSB2YWwuaGVhZGVyO1xuXHRcdFx0XHRcdG91dFsnIW1hcmdpbnMnXS5mb290ZXIgPSB2YWwuZm9vdGVyO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDIzZSAvKiBXaW5kb3cyICovOiAvLyBUT0RPXG5cdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRpZih2YWwuUlRMKSBXb3JrYm9vay5WaWV3c1swXS5SVEwgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA5MiAvKiBQYWxldHRlICovOiBwYWxldHRlID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA4OTYgLyogVGhlbWUgKi86IHRoZW1lcyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDhjIC8qIENvdW50cnkgKi86IGNvdW50cnkgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFiYSAvKiBDb2RlTmFtZSAqLzoge1xuXHRcdFx0XHRcdC8qOjogaWYoIVdvcmtib29rLldCUHJvcHMpIFdvcmtib29rLldCUHJvcHMgPSB7fTsgKi9cblx0XHRcdFx0XHRpZighY3VyX3NoZWV0KSBXb3JrYm9vay5XQlByb3BzLkNvZGVOYW1lID0gdmFsIHx8IFwiVGhpc1dvcmtib29rXCI7XG5cdFx0XHRcdFx0ZWxzZSB3c3Byb3BzLkNvZGVOYW1lID0gdmFsIHx8IHdzcHJvcHMubmFtZTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoIVIpIGNvbnNvbGUuZXJyb3IoXCJNaXNzaW5nIEluZm8gZm9yIFhMUyBSZWNvcmQgMHhcIiArIFJlY29yZFR5cGUudG9TdHJpbmcoMTYpKTtcblx0XHRcdGJsb2IubCArPSBsZW5ndGg7XG5cdFx0fVxuXHR9XG5cdHdiLlNoZWV0TmFtZXM9a2V5cyhEaXJlY3RvcnkpLnNvcnQoZnVuY3Rpb24oYSxiKSB7IHJldHVybiBOdW1iZXIoYSkgLSBOdW1iZXIoYik7IH0pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gRGlyZWN0b3J5W3hdLm5hbWU7fSk7XG5cdGlmKCFvcHRpb25zLmJvb2tTaGVldHMpIHdiLlNoZWV0cz1TaGVldHM7XG5cdGlmKCF3Yi5TaGVldE5hbWVzLmxlbmd0aCAmJiBQcmVhbWJsZVtcIiFyZWZcIl0pIHtcblx0XHR3Yi5TaGVldE5hbWVzLnB1c2goXCJTaGVldDFcIik7XG5cdFx0Lypqc2hpbnQgLVcwNjkgKi9cblx0XHRpZih3Yi5TaGVldHMpIHdiLlNoZWV0c1tcIlNoZWV0MVwiXSA9IFByZWFtYmxlO1xuXHRcdC8qanNoaW50ICtXMDY5ICovXG5cdH0gZWxzZSB3Yi5QcmVhbWJsZT1QcmVhbWJsZTtcblx0aWYod2IuU2hlZXRzKSBGaWx0ZXJEYXRhYmFzZXMuZm9yRWFjaChmdW5jdGlvbihyLGkpIHsgd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dWychYXV0b2ZpbHRlciddID0gcjsgfSk7XG5cdHdiLlN0cmluZ3MgPSBzc3Q7XG5cdHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHRpZihvcHRzLmVuYykgd2IuRW5jcnlwdGlvbiA9IG9wdHMuZW5jO1xuXHRpZih0aGVtZXMpIHdiLlRoZW1lcyA9IHRoZW1lcztcblx0d2IuTWV0YWRhdGEgPSB7fTtcblx0aWYoY291bnRyeSAhPT0gdW5kZWZpbmVkKSB3Yi5NZXRhZGF0YS5Db3VudHJ5ID0gY291bnRyeTtcblx0aWYoc3VwYm9va3MubmFtZXMubGVuZ3RoID4gMCkgV29ya2Jvb2suTmFtZXMgPSBzdXBib29rcy5uYW1lcztcblx0d2IuV29ya2Jvb2sgPSBXb3JrYm9vaztcblx0cmV0dXJuIHdiO1xufVxuXG4vKiBUT0RPOiBzcGxpdCBwcm9wcyovXG52YXIgUFNDTFNJRCA9IHtcblx0U0k6IFwiZTA4NTlmZjJmOTRmNjgxMGFiOTEwODAwMmIyN2IzZDlcIixcblx0RFNJOiBcIjAyZDVjZGQ1OWMyZTFiMTA5Mzk3MDgwMDJiMmNmOWFlXCIsXG5cdFVESTogXCIwNWQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZVwiXG59O1xuZnVuY3Rpb24gcGFyc2VfeGxzX3Byb3BzKGNmYi8qOkNGQkNvbnRhaW5lciovLCBwcm9wcywgbykge1xuXHQvKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4yIERvY3VtZW50IFN1bW1hcnkgSW5mb3JtYXRpb24gUHJvcGVydHkgU2V0ICovXG5cdHZhciBEU0kgPSBDRkIuZmluZChjZmIsICcvIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uJyk7XG5cdGlmKERTSSAmJiBEU0kuc2l6ZSA+IDApIHRyeSB7XG5cdFx0dmFyIERvY1N1bW1hcnkgPSBwYXJzZV9Qcm9wZXJ0eVNldFN0cmVhbShEU0ksIERvY1N1bW1hcnlQSUREU0ksIFBTQ0xTSUQuRFNJKTtcblx0XHRmb3IodmFyIGQgaW4gRG9jU3VtbWFyeSkgcHJvcHNbZF0gPSBEb2NTdW1tYXJ5W2RdO1xuXHR9IGNhdGNoKGUpIHtpZihvLldURikgdGhyb3cgZTsvKiBlbXB0eSAqL31cblxuXHQvKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4xIFN1bW1hcnkgSW5mb3JtYXRpb24gUHJvcGVydHkgU2V0Ki9cblx0dmFyIFNJID0gQ0ZCLmZpbmQoY2ZiLCAnLyFTdW1tYXJ5SW5mb3JtYXRpb24nKTtcblx0aWYoU0kgJiYgU0kuc2l6ZSA+IDApIHRyeSB7XG5cdFx0dmFyIFN1bW1hcnkgPSBwYXJzZV9Qcm9wZXJ0eVNldFN0cmVhbShTSSwgU3VtbWFyeVBJRFNJLCBQU0NMU0lELlNJKTtcblx0XHRmb3IodmFyIHMgaW4gU3VtbWFyeSkgaWYocHJvcHNbc10gPT0gbnVsbCkgcHJvcHNbc10gPSBTdW1tYXJ5W3NdO1xuXHR9IGNhdGNoKGUpIHtpZihvLldURikgdGhyb3cgZTsvKiBlbXB0eSAqL31cblxuXHRpZihwcm9wcy5IZWFkaW5nUGFpcnMgJiYgcHJvcHMuVGl0bGVzT2ZQYXJ0cykge1xuXHRcdGxvYWRfcHJvcHNfcGFpcnMocHJvcHMuSGVhZGluZ1BhaXJzLCBwcm9wcy5UaXRsZXNPZlBhcnRzLCBwcm9wcywgbyk7XG5cdFx0ZGVsZXRlIHByb3BzLkhlYWRpbmdQYWlyczsgZGVsZXRlIHByb3BzLlRpdGxlc09mUGFydHM7XG5cdH1cbn1cbmZ1bmN0aW9uIHdyaXRlX3hsc19wcm9wcyh3Yi8qOldvcmtib29rKi8sIGNmYi8qOkNGQkNvbnRhaW5lciovKSB7XG5cdHZhciBEU0VudHJpZXMgPSBbXSwgU0VudHJpZXMgPSBbXSwgQ0VudHJpZXMgPSBbXTtcblx0dmFyIGkgPSAwLCBLZXlzO1xuXHR2YXIgRG9jU3VtbWFyeVJFLyo6e1trZXk6c3RyaW5nXTpzdHJpbmd9Ki8gPSBldmVydF9rZXkoRG9jU3VtbWFyeVBJRERTSSwgXCJuXCIpO1xuXHR2YXIgU3VtbWFyeVJFLyo6e1trZXk6c3RyaW5nXTpzdHJpbmd9Ki8gPSBldmVydF9rZXkoU3VtbWFyeVBJRFNJLCBcIm5cIik7XG5cdGlmKHdiLlByb3BzKSB7XG5cdFx0S2V5cyA9IGtleXMod2IuUHJvcHMpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0Zm9yKGkgPSAwOyBpIDwgS2V5cy5sZW5ndGg7ICsraSkgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChEb2NTdW1tYXJ5UkUsIEtleXNbaV0pID8gRFNFbnRyaWVzIDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFN1bW1hcnlSRSwgS2V5c1tpXSkgPyBTRW50cmllcyA6IENFbnRyaWVzKS5wdXNoKFtLZXlzW2ldLCB3Yi5Qcm9wc1tLZXlzW2ldXV0pO1xuXHR9XG5cdGlmKHdiLkN1c3Rwcm9wcykge1xuXHRcdEtleXMgPSBrZXlzKHdiLkN1c3Rwcm9wcyk7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRmb3IoaSA9IDA7IGkgPCBLZXlzLmxlbmd0aDsgKytpKSBpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCh3Yi5Qcm9wc3x8e30pLCBLZXlzW2ldKSkgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChEb2NTdW1tYXJ5UkUsIEtleXNbaV0pID8gRFNFbnRyaWVzIDogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFN1bW1hcnlSRSwgS2V5c1tpXSkgPyBTRW50cmllcyA6IENFbnRyaWVzKS5wdXNoKFtLZXlzW2ldLCB3Yi5DdXN0cHJvcHNbS2V5c1tpXV1dKTtcblx0fVxuXHR2YXIgQ0VudHJpZXMyID0gW107XG5cdGZvcihpID0gMDsgaSA8IENFbnRyaWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoWExTUFNTa2lwLmluZGV4T2YoQ0VudHJpZXNbaV1bMF0pID4gLTEgfHwgUHNldWRvUHJvcHNQYWlycy5pbmRleE9mKENFbnRyaWVzW2ldWzBdKSA+IC0xKSBjb250aW51ZTtcblx0XHRpZihDRW50cmllc1tpXVsxXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHRDRW50cmllczIucHVzaChDRW50cmllc1tpXSk7XG5cdH1cblx0aWYoU0VudHJpZXMubGVuZ3RoKSBDRkIudXRpbHMuY2ZiX2FkZChjZmIsIFwiL1xcdTAwMDVTdW1tYXJ5SW5mb3JtYXRpb25cIiwgd3JpdGVfUHJvcGVydHlTZXRTdHJlYW0oU0VudHJpZXMsIFBTQ0xTSUQuU0ksIFN1bW1hcnlSRSwgU3VtbWFyeVBJRFNJKSk7XG5cdGlmKERTRW50cmllcy5sZW5ndGggfHwgQ0VudHJpZXMyLmxlbmd0aCkgQ0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCBcIi9cXHUwMDA1RG9jdW1lbnRTdW1tYXJ5SW5mb3JtYXRpb25cIiwgd3JpdGVfUHJvcGVydHlTZXRTdHJlYW0oRFNFbnRyaWVzLCBQU0NMU0lELkRTSSwgRG9jU3VtbWFyeVJFLCBEb2NTdW1tYXJ5UElERFNJLCBDRW50cmllczIubGVuZ3RoID8gQ0VudHJpZXMyIDogbnVsbCwgUFNDTFNJRC5VREkpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfeGxzY2ZiKGNmYi8qOmFueSovLCBvcHRpb25zLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuaWYoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbmZpeF9yZWFkX29wdHMob3B0aW9ucyk7XG5yZXNldF9jcCgpO1xuaWYob3B0aW9ucy5jb2RlcGFnZSkgc2V0X2Fuc2kob3B0aW9ucy5jb2RlcGFnZSk7XG52YXIgQ29tcE9iai8qOj9DRkJFbnRyeSovLCBXQi8qOj9hbnkqLztcbmlmKGNmYi5GdWxsUGF0aHMpIHtcblx0aWYoQ0ZCLmZpbmQoY2ZiLCAnL2VuY3J5cHRpb24nKSkgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWRcIik7XG5cdENvbXBPYmogPSBDRkIuZmluZChjZmIsICchQ29tcE9iaicpO1xuXHRXQiA9IENGQi5maW5kKGNmYiwgJy9Xb3JrYm9vaycpIHx8IENGQi5maW5kKGNmYiwgJy9Cb29rJyk7XG59IGVsc2Uge1xuXHRzd2l0Y2gob3B0aW9ucy50eXBlKSB7XG5cdFx0Y2FzZSAnYmFzZTY0JzogY2ZiID0gczJhKEJhc2U2NF9kZWNvZGUoY2ZiKSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IGNmYiA9IHMyYShjZmIpOyBicmVhaztcblx0XHRjYXNlICdidWZmZXInOiBicmVhaztcblx0XHRjYXNlICdhcnJheSc6IGlmKCFBcnJheS5pc0FycmF5KGNmYikpIGNmYiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNmYik7IGJyZWFrO1xuXHR9XG5cdHByZXBfYmxvYihjZmIsIDApO1xuXHRXQiA9ICh7Y29udGVudDogY2ZifS8qOmFueSovKTtcbn1cbnZhciAvKjo6Q29tcE9ialAsICovV29ya2Jvb2tQLyo6OiA6V29ya2Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7ICovO1xuXG52YXIgX2RhdGEvKjo/YW55Ki87XG5pZihDb21wT2JqKSAvKjo6Q29tcE9ialAgPSAqL3BhcnNlX2NvbXBvYmooQ29tcE9iaik7XG5pZihvcHRpb25zLmJvb2tQcm9wcyAmJiAhb3B0aW9ucy5ib29rU2hlZXRzKSBXb3JrYm9va1AgPSAoe30vKjphbnkqLyk7XG5lbHNlLyo6OiBpZihjZmIgaW5zdGFuY2VvZiBDRkJDb250YWluZXIpICovIHtcblx0dmFyIFQgPSBoYXNfYnVmID8gJ2J1ZmZlcicgOiAnYXJyYXknO1xuXHRpZihXQiAmJiBXQi5jb250ZW50KSBXb3JrYm9va1AgPSBwYXJzZV93b3JrYm9vayhXQi5jb250ZW50LCBvcHRpb25zKTtcblx0LyogUXVhdHRybyBQcm8gNy04ICovXG5cdGVsc2UgaWYoKF9kYXRhPUNGQi5maW5kKGNmYiwgJ1BlcmZlY3RPZmZpY2VfTUFJTicpKSAmJiBfZGF0YS5jb250ZW50KSBXb3JrYm9va1AgPSBXS18udG9fd29ya2Jvb2soX2RhdGEuY29udGVudCwgKG9wdGlvbnMudHlwZSA9IFQsIG9wdGlvbnMpKTtcblx0LyogUXVhdHRybyBQcm8gOSAqL1xuXHRlbHNlIGlmKChfZGF0YT1DRkIuZmluZChjZmIsICdOYXRpdmVDb250ZW50X01BSU4nKSkgJiYgX2RhdGEuY29udGVudCkgV29ya2Jvb2tQID0gV0tfLnRvX3dvcmtib29rKF9kYXRhLmNvbnRlbnQsIChvcHRpb25zLnR5cGUgPSBULCBvcHRpb25zKSk7XG5cdC8qIFdvcmtzIDQgZm9yIE1hYyAqL1xuXHRlbHNlIGlmKChfZGF0YT1DRkIuZmluZChjZmIsICdNTjAnKSkgJiYgX2RhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgV29ya3MgNCBmb3IgTWFjIGZpbGVcIik7XG5cdGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtXCIpO1xuXHRpZihvcHRpb25zLmJvb2tWQkEgJiYgY2ZiLkZ1bGxQYXRocyAmJiBDRkIuZmluZChjZmIsICcvX1ZCQV9QUk9KRUNUX0NVUi9WQkEvZGlyJykpIFdvcmtib29rUC52YmFyYXcgPSBtYWtlX3ZiYV94bHMoY2ZiKTtcbn1cblxudmFyIHByb3BzID0ge307XG5pZihjZmIuRnVsbFBhdGhzKSBwYXJzZV94bHNfcHJvcHMoLyo6OigoKi9jZmIvKjo6IDphbnkpOkNGQkNvbnRhaW5lcikqLywgcHJvcHMsIG9wdGlvbnMpO1xuXG5Xb3JrYm9va1AuUHJvcHMgPSBXb3JrYm9va1AuQ3VzdHByb3BzID0gcHJvcHM7IC8qIFRPRE86IHNwbGl0IHVwIHByb3BlcnRpZXMgKi9cbmlmKG9wdGlvbnMuYm9va0ZpbGVzKSBXb3JrYm9va1AuY2ZiID0gY2ZiO1xuLypXb3JrYm9va1AuQ29tcE9ialAgPSBDb21wT2JqUDsgLy8gVE9ETzogc3RvcmFnZT8gKi9cbnJldHVybiBXb3JrYm9va1A7XG59XG5cblxuZnVuY3Rpb24gd3JpdGVfeGxzY2ZiKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOkNGQkNvbnRhaW5lciovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgY2ZiID0gQ0ZCLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6XCJSXCJ9KTtcblx0dmFyIHdicGF0aCA9IFwiL1dvcmtib29rXCI7XG5cdHN3aXRjaChvLmJvb2tUeXBlIHx8IFwieGxzXCIpIHtcblx0XHRjYXNlIFwieGxzXCI6IG8uYm9va1R5cGUgPSBcImJpZmY4XCI7XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgXCJ4bGFcIjogaWYoIW8uYm9va1R5cGUpIG8uYm9va1R5cGUgPSBcInhsYVwiO1xuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIFwiYmlmZjhcIjogd2JwYXRoID0gXCIvV29ya2Jvb2tcIjsgby5iaWZmID0gODsgYnJlYWs7XG5cdFx0Y2FzZSBcImJpZmY1XCI6IHdicGF0aCA9IFwiL0Jvb2tcIjsgby5iaWZmID0gNTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCB0eXBlIFwiICsgby5ib29rVHlwZSArIFwiIGZvciBYTFMgQ0ZCXCIpO1xuXHR9XG5cdENGQi51dGlscy5jZmJfYWRkKGNmYiwgd2JwYXRoLCB3cml0ZV9iaWZmX2J1Zih3YiwgbykpO1xuXHRpZihvLmJpZmYgPT0gOCAmJiAod2IuUHJvcHMgfHwgd2IuQ3VzdHByb3BzKSkgd3JpdGVfeGxzX3Byb3BzKHdiLCBjZmIpO1xuXHQvLyBUT0RPOiBTSSwgRFNJLCBDT1xuXHRpZihvLmJpZmYgPT0gOCAmJiB3Yi52YmFyYXcpIGZpbGxfdmJhX3hscyhjZmIsIENGQi5yZWFkKHdiLnZiYXJhdywge3R5cGU6IHR5cGVvZiB3Yi52YmFyYXcgPT0gXCJzdHJpbmdcIiA/IFwiYmluYXJ5XCIgOiBcImJ1ZmZlclwifSkpO1xuXHRyZXR1cm4gY2ZiO1xufVxuLyogW01TLVhMU0JdIDIuMyBSZWNvcmQgRW51bWVyYXRpb24gKi9cbnZhciBYTFNCUmVjb3JkRW51bSA9IHtcblx0Lyo6OlsqLzB4MDAwMC8qOjpdKi86IHsgLyogbjpcIkJydFJvd0hkclwiLCAqLyBmOnBhcnNlX0JydFJvd0hkciB9LFxuXHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbEJsYW5rXCIsICovIGY6cGFyc2VfQnJ0Q2VsbEJsYW5rIH0sXG5cdC8qOjpbKi8weDAwMDIvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsUmtcIiwgKi8gZjpwYXJzZV9CcnRDZWxsUmsgfSxcblx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IHsgLyogbjpcIkJydENlbGxFcnJvclwiLCAqLyBmOnBhcnNlX0JydENlbGxFcnJvciB9LFxuXHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbEJvb2xcIiwgKi8gZjpwYXJzZV9CcnRDZWxsQm9vbCB9LFxuXHQvKjo6WyovMHgwMDA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFJlYWxcIiwgKi8gZjpwYXJzZV9CcnRDZWxsUmVhbCB9LFxuXHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFN0XCIsICovIGY6cGFyc2VfQnJ0Q2VsbFN0IH0sXG5cdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsSXNzdFwiLCAqLyBmOnBhcnNlX0JydENlbGxJc3N0IH0sXG5cdC8qOjpbKi8weDAwMDgvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhU3RyaW5nXCIsICovIGY6cGFyc2VfQnJ0Rm1sYVN0cmluZyB9LFxuXHQvKjo6WyovMHgwMDA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm1sYU51bVwiLCAqLyBmOnBhcnNlX0JydEZtbGFOdW0gfSxcblx0Lyo6OlsqLzB4MDAwQS8qOjpdKi86IHsgLyogbjpcIkJydEZtbGFCb29sXCIsICovIGY6cGFyc2VfQnJ0Rm1sYUJvb2wgfSxcblx0Lyo6OlsqLzB4MDAwQi8qOjpdKi86IHsgLyogbjpcIkJydEZtbGFFcnJvclwiLCAqLyBmOnBhcnNlX0JydEZtbGFFcnJvciB9LFxuXHQvKjo6WyovMHgwMDBDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRCbGFua1wiLCAqLyBmOnBhcnNlX0JydFNob3J0QmxhbmsgfSxcblx0Lyo6OlsqLzB4MDAwRC8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0UmtcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydFJrIH0sXG5cdC8qOjpbKi8weDAwMEUvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydEVycm9yXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRFcnJvciB9LFxuXHQvKjo6WyovMHgwMDBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRCb29sXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRCb29sIH0sXG5cdC8qOjpbKi8weDAwMTAvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydFJlYWxcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydFJlYWwgfSxcblx0Lyo6OlsqLzB4MDAxMS8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0U3RcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydFN0IH0sXG5cdC8qOjpbKi8weDAwMTIvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydElzc3RcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydElzc3QgfSxcblx0Lyo6OlsqLzB4MDAxMy8qOjpdKi86IHsgLyogbjpcIkJydFNTVEl0ZW1cIiwgKi8gZjpwYXJzZV9SaWNoU3RyIH0sXG5cdC8qOjpbKi8weDAwMTQvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJTWlzc2luZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMTUvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJTnVtYmVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxNi8qOjpdKi86IHsgLyogbjpcIkJydFBDRElCb29sZWFuXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxNy8qOjpdKi86IHsgLyogbjpcIkJydFBDRElFcnJvclwiICovIH0sXG5cdC8qOjpbKi8weDAwMTgvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJU3RyaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxOS8qOjpdKi86IHsgLyogbjpcIkJydFBDRElEYXRldGltZVwiICovIH0sXG5cdC8qOjpbKi8weDAwMUEvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJSW5kZXhcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFNaXNzaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxQy8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBTnVtYmVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxRC8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBQm9vbGVhblwiICovIH0sXG5cdC8qOjpbKi8weDAwMUUvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQUVycm9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxRi8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBU3RyaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBRGF0ZXRpbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENSUmVjb3JkXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMi8qOjpdKi86IHsgLyogbjpcIkJydFBDUlJlY29yZER0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgLyogbjpcIkJydEZSVEJlZ2luXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RlJURW5kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAyNS8qOjpdKi86IHsgLyogbjpcIkJydEFDQmVnaW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMjYvKjo6XSovOiB7IC8qIG46XCJCcnRBQ0VuZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IC8qIG46XCJCcnROYW1lXCIsICovIGY6cGFyc2VfQnJ0TmFtZSB9LFxuXHQvKjo6WyovMHgwMDI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5kZXhSb3dCbG9ja1wiICovIH0sXG5cdC8qOjpbKi8weDAwMkEvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleEJsb2NrXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyQi8qOjpdKi86IHsgLyogbjpcIkJydEZvbnRcIiwgKi8gZjpwYXJzZV9CcnRGb250IH0sXG5cdC8qOjpbKi8weDAwMkMvKjo6XSovOiB7IC8qIG46XCJCcnRGbXRcIiwgKi8gZjpwYXJzZV9CcnRGbXQgfSxcblx0Lyo6OlsqLzB4MDAyRC8qOjpdKi86IHsgLyogbjpcIkJydEZpbGxcIiwgKi8gZjpwYXJzZV9CcnRGaWxsIH0sXG5cdC8qOjpbKi8weDAwMkUvKjo6XSovOiB7IC8qIG46XCJCcnRCb3JkZXJcIiwgKi8gZjpwYXJzZV9CcnRCb3JkZXIgfSxcblx0Lyo6OlsqLzB4MDAyRi8qOjpdKi86IHsgLyogbjpcIkJydFhGXCIsICovIGY6cGFyc2VfQnJ0WEYgfSxcblx0Lyo6OlsqLzB4MDAzMC8qOjpdKi86IHsgLyogbjpcIkJydFN0eWxlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAzMS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxNZXRhXCIsICovIGY6cGFyc2VfSW50MzJMRSB9LFxuXHQvKjo6WyovMHgwMDMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VmFsdWVNZXRhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAzMy8qOjpdKi86IHsgLyogbjpcIkJydE1kYlwiICovIGY6cGFyc2VfQnJ0TWRiIH0sXG5cdC8qOjpbKi8weDAwMzQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZtZFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAzNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZtZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwMzYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAzNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwMzgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keFR1cGxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4VHVwbGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWR4TWJySXN0clwiICovIH0sXG5cdC8qOjpbKi8weDAwM0IvKjo6XSovOiB7IC8qIG46XCJCcnRTdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29sSW5mb1wiLCAqLyBmOnBhcnNlX0NvbEluZm8gfSxcblx0Lyo6OlsqLzB4MDAzRS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxSU3RyaW5nXCIsICovIGY6cGFyc2VfQnJ0Q2VsbFJTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDAzRi8qOjpdKi86IHsgLyogbjpcIkJydENhbGNDaGFpbkl0ZW0kXCIsICovIGY6cGFyc2VfQnJ0Q2FsY0NoYWluSXRlbSQgfSxcblx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IHsgLyogbjpcIkJydERWYWxcIiwgKi8gZjpwYXJzZV9CcnREVmFsIH0sXG5cdC8qOjpbKi8weDAwNDEvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsTnVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxTdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbEJvb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbEVyclwiICovIH0sXG5cdC8qOjpbKi8weDAwNDUvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsRGF0ZVwiICovIH0sXG5cdC8qOjpbKi8weDAwNDYvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsTmlsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA4MC8qOjpdKi86IHsgLyogbjpcIkJydEZpbGVWZXJzaW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA4MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2hlZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwODIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTaGVldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwODMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkJvb2tcIiwgKi8gVDoxLCBmOnBhcnNlbm9vcCwgcDowIH0sXG5cdC8qOjpbKi8weDAwODQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRCb29rXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV3NWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdzVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDg3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Cb29rVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwODgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRCb29rVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDg5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Xc1ZpZXdcIiwgKi8gVDoxLCBmOnBhcnNlX0JydEJlZ2luV3NWaWV3IH0sXG5cdC8qOjpbKi8weDAwOEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXc1ZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDhCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Dc1ZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDhDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ3NWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwOEQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNzVmlld1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENzVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwOEYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkJ1bmRsZVNoc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA5MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEJ1bmRsZVNoc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwOTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNoZWV0RGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA5Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNoZWV0RGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwOTMvKjo6XSovOiB7IC8qIG46XCJCcnRXc1Byb3BcIiwgKi8gZjpwYXJzZV9CcnRXc1Byb3AgfSxcblx0Lyo6OlsqLzB4MDA5NC8qOjpdKi86IHsgLyogbjpcIkJydFdzRGltXCIsICovIGY6cGFyc2VfQnJ0V3NEaW0sIHA6MTYgfSxcblx0Lyo6OlsqLzB4MDA5Ny8qOjpdKi86IHsgLyogbjpcIkJydFBhbmVcIiwgKi8gZjpwYXJzZV9CcnRQYW5lIH0sXG5cdC8qOjpbKi8weDAwOTgvKjo6XSovOiB7IC8qIG46XCJCcnRTZWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDk5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2JQcm9wXCIsICovIGY6cGFyc2VfQnJ0V2JQcm9wIH0sXG5cdC8qOjpbKi8weDAwOUEvKjo6XSovOiB7IC8qIG46XCJCcnRXYkZhY3RvaWRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDlCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVJlY292ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QnVuZGxlU2hcIiwgKi8gZjpwYXJzZV9CcnRCdW5kbGVTaCB9LFxuXHQvKjo6WyovMHgwMDlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2FsY1Byb3BcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDlFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9va1ZpZXdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDlGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Tc3RcIiwgKi8gVDoxLCBmOnBhcnNlX0JydEJlZ2luU3N0IH0sXG5cdC8qOjpbKi8weDAwQTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTc3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5BRmlsdGVyXCIsICovIFQ6MSwgZjpwYXJzZV9VbmNoZWNrZWRSZlggfSxcblx0Lyo6OlsqLzB4MDBBMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEFGaWx0ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GaWx0ZXJDb2x1bW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGaWx0ZXJDb2x1bW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQTcvKjo6XSovOiB7IC8qIG46XCJCcnRGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29sb3JGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0SWNvbkZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUEvKjo6XSovOiB7IC8qIG46XCJCcnRUb3AxMEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUIvKjo6XSovOiB7IC8qIG46XCJCcnREeW5hbWljRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3VzdG9tRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBBRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEN1c3RvbUZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3VzdG9tRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBRi8qOjpdKi86IHsgLyogbjpcIkJydEFGaWx0ZXJEYXRlR3JvdXBJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBCMC8qOjpdKi86IHsgLyogbjpcIkJydE1lcmdlQ2VsbFwiLCAqLyBmOnBhcnNlX0JydE1lcmdlQ2VsbCB9LFxuXHQvKjo6WyovMHgwMEIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZXJnZUNlbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWVyZ2VDZWxsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90Q2FjaGVEZWZcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdENhY2hlRGVmXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERmllbGRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERmllbGRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERmllbGRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGaWVsZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNvdXJjZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNvdXJjZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNSYW5nZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNSYW5nZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZBdGJsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkF0YmxcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RJUnVuXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESVJ1blwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90Q2FjaGVSZWNvcmRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RDYWNoZVJlY29yZHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIaWVyYXJjaGllc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhpZXJhcmNoaWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESGllcmFyY2h5XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESGllcmFyY2h5XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEZpZWxkc1VzYWdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEZpZWxkc1VzYWdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubmVjdGlvblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dENvbm5lY3Rpb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMENCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ0RiUHJvcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQ0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ0RiUHJvcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMENELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ09sYXBQcm9wc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDT2xhcFByb3BzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NvbnNvbFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDb25zb2xcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1BhZ2VzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NQYWdlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDUGFnZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBENC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDUGFnZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDUEl0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1BJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBENy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NTZXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NTZXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBEOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NTZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwREEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1NldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwREIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZHcm91cFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZHcm91cFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwREQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZHSXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwREUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR0l0ZW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBERi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkdSYW5nZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZHUmFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR0Rpc2NyZXRlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkdEaXNjcmV0ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVHVwbGVDYWNoZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVHVwbGVDYWNoZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENFbnRyaWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ0VudHJpZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDRU1lbWJlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENFTWVtYmVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ1F1ZXJpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDUXVlcmllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENRdWVyeVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENRdWVyeVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENTZXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ1NldHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ1NldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNJdGVtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNJdGVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY0l0ZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEY3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUnVsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSdWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGaWx0ZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBOYW1lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOYW1lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRkYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBOYW1lXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUE5hbWVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTlBhaXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUE5QYWlyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBOUGFpclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOUGFpclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDV2ViUHJvcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1dlYlByb3BzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRWNXcFRhYmxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDV1BUYWJsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1BhcmFtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDUGFyYW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNQYXJhbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDUGFyYW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTBELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RLUElzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENES1BJc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMEYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREtQSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREtQSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRpbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREaW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGltXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGltXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExNS8qOjpdKi86IHsgLyogbjpcIkJydEluZGV4UGFydEVuZFwiICovIH0sXG5cdC8qOjpbKi8weDAxMTYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN0eWxlU2hlZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdHlsZVNoZWV0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWaWV3XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMUEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVklcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVklzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWRFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVkRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFBJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hQSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYUElzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hQSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWERJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hESVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRElzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hESXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWExJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTElSd3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWExJUndzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hMSUNvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWExJQ29sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMkYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRm9ybWF0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hGb3JtYXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEZvcm1hdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeEZvcm1hdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeFNlbGVjdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4U2VsZWN0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVkRSd3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hWRFJ3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFZEQ29sc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFZEQ29sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWExvY2F0aW9uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hMb2NhdGlvblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxM0MvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVEhzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUSHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRIXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUSFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFRIUndzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVEhSd3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hUSENvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hUSENvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRETVBTXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hURE1Qc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNDYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVERNUFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVERNUFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNDgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVEhJdGVtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhJdGVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNEEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVEhJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUSEl0ZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTRDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZXRhZGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0RC8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1ldGFkYXRhXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNtZHRpbmZvXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTRGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWR0aW5mb1wiLCAqLyBmOnBhcnNlX0JydE1kdGluZm8gfSxcblx0Lyo6OlsqLzB4MDE1MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzbWR0aW5mb1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzbWRiXCIsICovIGY6cGFyc2VfQnJ0QmVnaW5Fc21kYiwgVDoxIH0sXG5cdC8qOjpbKi8weDAxNTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc21kYlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzZm1kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNmbWRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TaW5nbGVDZWxsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNpbmdsZUNlbGxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0Q29sc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RDb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdENvbFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RDb2xcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0WG1sQ1ByXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTGlzdFhtbENQclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNUYvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0Q0NGbWxhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2MC8qOjpdKi86IHsgLyogbjpcIkJydExpc3RUckZtbGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FeHRlcm5hbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRlcm5hbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwQm9va1NyY1wiLCAqLyBmOnBhcnNlX1JlbElEfSxcblx0Lyo6OlsqLzB4MDE2NS8qOjpdKi86IHsgLyogbjpcIkJydFN1cFNlbGZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwU2FtZVwiICovIH0sXG5cdC8qOjpbKi8weDAxNjcvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBUYWJzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3VwQm9va1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE2OS8qOjpdKi86IHsgLyogbjpcIkJydFBsYWNlaG9sZGVyTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDAxNkEvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5TaGVldFwiLCAqLyBmOnBhcnNlX0V4dGVyblNoZWV0IH0sXG5cdC8qOjpbKi8weDAxNkIvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5UYWJsZVN0YXJ0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Qy8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblRhYmxlRW5kXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2RS8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblJvd0hkclwiICovIH0sXG5cdC8qOjpbKi8weDAxNkYvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsQmxhbmtcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTcwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbFJlYWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTcxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbEJvb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTcyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbEVycm9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3My8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxTdHJpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTc0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc21keFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzbWR4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4U2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTc3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4U2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4TWJyUHJvcFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keE1iclByb3BcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTdBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhLUElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxN0IvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhLUElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTdDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc3N0clwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3RC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzc3RyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGSXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3Ri8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRkl0ZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTgwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTgxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxODIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90Q2FjaGVJRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4My8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVJRFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxODQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFZJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFZJc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxODYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbEluZm9zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTg3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sSW5mb3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTg4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Sd0Jya1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJ3QnJrXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29sQnJrXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMThCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sQnJrXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4Qy8qOjpdKi86IHsgLyogbjpcIkJydEJya1wiICovIH0sXG5cdC8qOjpbKi8weDAxOEQvKjo6XSovOiB7IC8qIG46XCJCcnRVc2VyQm9va1ZpZXdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMThFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5mb1wiICovIH0sXG5cdC8qOjpbKi8weDAxOEYvKjo6XSovOiB7IC8qIG46XCJCcnRDVXNyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5MC8qOjpdKi86IHsgLyogbjpcIkJydFVzclwiICovIH0sXG5cdC8qOjpbKi8weDAxOTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTkzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RU9GXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NC8qOjpdKi86IHsgLyogbjpcIkJydFVDUlwiICovIH0sXG5cdC8qOjpbKi8weDAxOTUvKjo6XSovOiB7IC8qIG46XCJCcnRSUkluc0RlbFwiICovIH0sXG5cdC8qOjpbKi8weDAxOTYvKjo6XSovOiB7IC8qIG46XCJCcnRSUkVuZEluc0RlbFwiICovIH0sXG5cdC8qOjpbKi8weDAxOTcvKjo6XSovOiB7IC8qIG46XCJCcnRSUk1vdmVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRNb3ZlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5OS8qOjpdKi86IHsgLyogbjpcIkJydFJSQ2hnQ2VsbFwiICovIH0sXG5cdC8qOjpbKi8weDAxOUEvKjo6XSovOiB7IC8qIG46XCJCcnRSUkVuZENoZ0NlbGxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJIZWFkZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJVc2VyVmlld1wiICovIH0sXG5cdC8qOjpbKi8weDAxOUQvKjo6XSovOiB7IC8qIG46XCJCcnRSUlJlblNoZWV0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5RS8qOjpdKi86IHsgLyogbjpcIkJydFJSSW5zZXJ0U2hcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJEZWZOYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBMC8qOjpdKi86IHsgLyogbjpcIkJydFJSTm90ZVwiICovIH0sXG5cdC8qOjpbKi8weDAxQTEvKjo6XSovOiB7IC8qIG46XCJCcnRSUkNvbmZsaWN0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBMi8qOjpdKi86IHsgLyogbjpcIkJydFJSVFFTSUZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJGb3JtYXRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRGb3JtYXRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJBdXRvRm10XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlclNoVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJTaFZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyU2hWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFBOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFVzZXJTaFZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFBQS8qOjpdKi86IHsgLyogbjpcIkJydEFyckZtbGFcIiwgKi8gZjpwYXJzZV9CcnRBcnJGbWxhIH0sXG5cdC8qOjpbKi8weDAxQUIvKjo6XSovOiB7IC8qIG46XCJCcnRTaHJGbWxhXCIsICovIGY6cGFyc2VfQnJ0U2hyRm1sYSB9LFxuXHQvKjo6WyovMHgwMUFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FeHRDb25uZWN0aW9uc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFBRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dENvbm5lY3Rpb25zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFBRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQjAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMZXZlbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xldmVsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTGV2ZWxcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xldmVsXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMR3JvdXBzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMR3JvdXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xHcm91cFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdNZW1iZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMR01lbWJlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMR01lbWJlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQkYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblFTSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblFTSVJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRRU0lSXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGVsZXRlZE5hbWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGVsZXRlZE5hbWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGVsZXRlZE5hbWVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREZWxldGVkTmFtZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblFTSUZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUVNJRnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lGXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUVNJRlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQ0IvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkF1dG9Tb3J0U2NvcGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQ0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRBdXRvU29ydFNjb3BlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29uZGl0aW9uYWxGb3JtYXR0aW5nXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ0ZSdWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ0ZSdWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFEMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSWNvblNldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFEMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEljb25TZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYXRhYmFyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGF0YWJhclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbG9yU2NhbGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRDYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb2xvclNjYWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFENy8qOjpdKi86IHsgLyogbjpcIkJydENGVk9cIiAqLyB9LFxuXHQvKjo6WyovMHgwMUQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuVmFsdWVNZXRhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFEOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29sb3JQYWxldHRlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMURBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sb3JQYWxldHRlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFEQi8qOjpdKi86IHsgLyogbjpcIkJydEluZGV4ZWRDb2xvclwiICovIH0sXG5cdC8qOjpbKi8weDAxREMvKjo6XSovOiB7IC8qIG46XCJCcnRNYXJnaW5zXCIsICovIGY6cGFyc2VfQnJ0TWFyZ2lucyB9LFxuXHQvKjo6WyovMHgwMURELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UHJpbnRPcHRpb25zXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFERS8qOjpdKi86IHsgLyogbjpcIkJydFBhZ2VTZXR1cFwiICovIH0sXG5cdC8qOjpbKi8weDAxREYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkhlYWRlckZvb3RlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEhlYWRlckZvb3RlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ3J0Rm9ybWF0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDcnRGb3JtYXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENydEZvcm1hdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENydEZvcm1hdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V3NGbXRJbmZvXCIsICovIGY6cGFyc2VfQnJ0V3NGbXRJbmZvIH0sXG5cdC8qOjpbKi8weDAxRTYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1nc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1Hc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1HTWFwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1HTWFwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRUEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1HXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTUdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NYXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRUQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNYXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SExpbmtcIiwgKi8gZjpwYXJzZV9CcnRITGluayB9LFxuXHQvKjo6WyovMHgwMUVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EQ29uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRENvblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRSZWZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRFJlZnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFJlZlwiICovIH0sXG5cdC8qOjpbKi8weDAxRjQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNjZW5NYW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRjUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTY2VuTWFuXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2N0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUY3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2N0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGOC8qOjpdKi86IHsgLyogbjpcIkJydFNsY1wiICovIH0sXG5cdC8qOjpbKi8weDAxRjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRYRnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREWEZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGQi8qOjpdKi86IHsgLyogbjpcIkJydERYRlwiICovIH0sXG5cdC8qOjpbKi8weDAxRkMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRhYmxlU3R5bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUZELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGFibGVTdHlsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUZFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UYWJsZVN0eWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGFibGVTdHlsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMDAvKjo6XSovOiB7IC8qIG46XCJCcnRUYWJsZVN0eWxlRWxlbWVudFwiICovIH0sXG5cdC8qOjpbKi8weDAyMDEvKjo6XSovOiB7IC8qIG46XCJCcnRUYWJsZVN0eWxlQ2xpZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwMi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVm9sRGVwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIwMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFZvbERlcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Wb2xUeXBlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sVHlwZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMDYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbE1haW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMDcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRWb2xNYWluXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVm9sVG9waWNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMDkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRWb2xUb3BpY1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMEEvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xTdWJ0b3BpY1wiICovIH0sXG5cdC8qOjpbKi8weDAyMEIvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xSZWZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sTnVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwRC8qOjpdKi86IHsgLyogbjpcIkJydFZvbEVyclwiICovIH0sXG5cdC8qOjpbKi8weDAyMEUvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xTdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sQm9vbFwiICovIH0sXG5cdC8qOjpbKi8weDAyMTAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNhbGNDaGFpbiRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMTEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDYWxjQ2hhaW4kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxMi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU29ydFN0YXRlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU29ydFN0YXRlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU29ydENvbmRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMTUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTb3J0Q29uZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMTYvKjo6XSovOiB7IC8qIG46XCJCcnRCb29rUHJvdGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDAyMTcvKjo6XSovOiB7IC8qIG46XCJCcnRTaGVldFByb3RlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxOS8qOjpdKi86IHsgLyogbjpcIkJydFBob25ldGljSW5mb1wiICovIH0sXG5cdC8qOjpbKi8weDAyMUEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVHh0V2l6XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNUeHRXaXpcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1RXRmxkSW5mb0xzdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDVFdGbGRJbmZvTHN0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUd0ZsZEluZm9cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMjQvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxlU2hhcmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAyMjUvKjo6XSovOiB7IC8qIG46XCJCcnRPbGVTaXplXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyNi8qOjpdKi86IHsgLyogbjpcIkJydERyYXdpbmdcIiwgKi8gZjpwYXJzZV9SZWxJRCB9LFxuXHQvKjo6WyovMHgwMjI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGVnYWN5RHJhd2luZ1wiICovIH0sXG5cdC8qOjpbKi8weDAyMjgvKjo6XSovOiB7IC8qIG46XCJCcnRMZWdhY3lEcmF3aW5nSEZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2ViT3B0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV2ViUHViSXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMkIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXZWJQdWJJdGVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMkMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldlYlB1Ykl0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMkQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXZWJQdWJJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIyRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDb25kRm10XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDb25kRm10XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIzMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDb25kRm10c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmtIaW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29sb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JbmRleGVkQ29sb3JzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSW5kZXhlZENvbG9yc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1SVUNvbG9yc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1SVUNvbG9yc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyM0MvKjo6XSovOiB7IC8qIG46XCJCcnRNUlVDb2xvclwiICovIH0sXG5cdC8qOjpbKi8weDAyM0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRWYWxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRFZhbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZVN0YXJ0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Mi8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVWYWx1ZVN0YXJ0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0My8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVWYWx1ZUVuZFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDQvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lTnVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0NS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZVN0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Ny8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVOaWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZUJvb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZUZtbGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZUJpdHNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZUVuZFwiICovIH0sXG5cdC8qOjpbKi8weDAyNEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdXBCb29rXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI0RC8qOjpdKi86IHsgLyogbjpcIkJydENlbGxTbWFydFRhZ1Byb3BlcnR5XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFNtYXJ0VGFnXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjRGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbFNtYXJ0VGFnXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFNtYXJ0VGFnc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxTbWFydFRhZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbWFydFRhZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbWFydFRhZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U21hcnRUYWdUeXBlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI1NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU21hcnRUYWdUeXBlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNtYXJ0VGFnVHlwZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEZJTFRFUlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRmlsdGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRmlsbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGaWxsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxXYXRjaGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbFdhdGNoZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFdhdGNoXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI2MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ1JFcnJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ1JFcnJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2Mi8qOjpdKi86IHsgLyogbjpcIkJydENyYXNoUmVjRXJyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI2My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRm9udHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGb250c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkJvcmRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRCb3JkZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRm10c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZtdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsWEZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbFhGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN0eWxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNzEvKjo6XSovOiB7IC8qIG46XCJCcnRCaWdOYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI3Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFN0eWxlWEZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjczLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbFN0eWxlWEZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29tbWVudHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb21tZW50c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNzYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRBdXRob3JzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjc3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudEF1dGhvcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjc4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29tbWVudEF1dGhvclwiLCAqLyBmOnBhcnNlX0JydENvbW1lbnRBdXRob3IgfSxcblx0Lyo6OlsqLzB4MDI3OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29tbWVudExpc3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyN0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb21tZW50TGlzdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyN0IvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRcIiwgKi8gVDoxLCBmOnBhcnNlX0JydEJlZ2luQ29tbWVudH0sXG5cdC8qOjpbKi8weDAyN0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb21tZW50XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3RC8qOjpdKi86IHsgLyogbjpcIkJydENvbW1lbnRUZXh0XCIsICovIGY6cGFyc2VfQnJ0Q29tbWVudFRleHQgfSxcblx0Lyo6OlsqLzB4MDI3RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luT2xlT2JqZWN0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3Ri8qOjpdKi86IHsgLyogbjpcIkJydE9sZU9iamVjdFwiICovIH0sXG5cdC8qOjpbKi8weDAyODAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRPbGVPYmplY3RzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3hydWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI4Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4UnVsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5BY3RpdmVYQ29udHJvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODQvKjo6XSovOiB7IC8qIG46XCJCcnRBY3RpdmVYXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI4NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEFjdGl2ZVhDb250cm9sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyODYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENFTWVtYmVyc1NvcnRCeVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI4OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbElnbm9yZUVDc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI4OS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxJZ25vcmVFQ1wiICovIH0sXG5cdC8qOjpbKi8weDAyOEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsSWdub3JlRUNzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4Qi8qOjpdKi86IHsgLyogbjpcIkJydENzUHJvcFwiLCAqLyBmOnBhcnNlX0JydENzUHJvcCB9LFxuXHQvKjo6WyovMHgwMjhDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3NQYWdlU2V0dXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjhELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2VyQ3NWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI4RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFVzZXJDc1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlckNzVmlld1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI5MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFVzZXJDc1ZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QY2RTRkNJRW50cmllc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI5Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNGQ0lFbnRyaWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI5My8qOjpdKi86IHsgLyogbjpcIkJydFBDRFNGQ0lFbnRyeVwiICovIH0sXG5cdC8qOjpbKi8weDAyOTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RQYXJ0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI5NS8qOjpdKi86IHsgLyogbjpcIkJydExpc3RQYXJ0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RQYXJ0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOTcvKjo6XSovOiB7IC8qIG46XCJCcnRTaGVldENhbGNQcm9wXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRm5Hcm91cFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI5OS8qOjpdKi86IHsgLyogbjpcIkJydEZuR3JvdXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRm5Hcm91cFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOUIvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBBZGRpblwiICovIH0sXG5cdC8qOjpbKi8weDAyOUMvKjo6XSovOiB7IC8qIG46XCJCcnRTWFRETVBPcmRlclwiICovIH0sXG5cdC8qOjpbKi8weDAyOUQvKjo6XSovOiB7IC8qIG46XCJCcnRDc1Byb3RlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Xc1NvcnRNYXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyQTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXc1NvcnRNYXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMkExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5SUlNvcnRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyQTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSUlNvcnRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMkEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJTb3J0SXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDAyQTQvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxlU2hhcmluZ0lzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTUvKjo6XSovOiB7IC8qIG46XCJCcnRCb29rUHJvdGVjdGlvbklzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTYvKjo6XSovOiB7IC8qIG46XCJCcnRTaGVldFByb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3NQcm90ZWN0aW9uSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBOC8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHJvdGVjdGlvbklzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTkvKjo6XSovOiB7IC8qIG46XCJCcnREVmFsTGlzdFwiICovIH0sXG5cdC8qOjpbKi8weDA0MDAvKjo6XSovOiB7IC8qIG46XCJCcnRSd0Rlc2NlbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0S25vd25Gb250c1wiICovIH0sXG5cdC8qOjpbKi8weDA0MDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MDMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUdXBsZVNldEhlYWRlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQwNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVHVwbGVTZXRIZWFkZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hUdXBsZVNldEhlYWRlckl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFR1cGxlU2V0RGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQwOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVHVwbGVTZXREYXRhXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUdXBsZVNldFJvd1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQwQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVHVwbGVTZXRSb3dcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDBCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hUdXBsZVNldFJvd0l0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDBDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TmFtZUV4dFwiICovIH0sXG5cdC8qOjpbKi8weDA0MEQvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RIMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MEYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hUSDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3BhcmtsaW5lR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTcGFya2xpbmVHcm91cFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MTMvKjo6XSovOiB7IC8qIG46XCJCcnRTcGFya2xpbmVcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hESTE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxNS8qOjpdKi86IHsgLyogbjpcIkJydFdzRm10SW5mb0V4MTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmcxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZzE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQxOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ0ZSdWxlMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDRlJ1bGUxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MUEvKjo6XSovOiB7IC8qIG46XCJCcnRDRlZPMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYXRhYmFyMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MUMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkljb25TZXQxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxRC8qOjpdKi86IHsgLyogbjpcIkJydERWYWwxNFwiLCAqLyBmOiBwYXJzZV9CcnREVmFsMTQgfSxcblx0Lyo6OlsqLzB4MDQxRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRFZhbHMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxRi8qOjpdKi86IHsgLyogbjpcIkJydENvbG9yMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TcGFya2xpbmVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3BhcmtsaW5lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MjIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNwYXJrbGluZUdyb3Vwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNwYXJrbGluZUdyb3Vwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MjUvKjo6XSovOiB7IC8qIG46XCJCcnRTWFZEMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZpZXcxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVmlldzE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWaWV3MTZcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZpZXcxNlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MkEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRDE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FeHRDb25uMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MkQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVJRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVEZWZcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZURlZlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlcnNFeFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlcnNFeFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckV4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyRXhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0M0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVQaXZvdFRhYmxlc1wiICovIH0sXG5cdC8qOjpbKi8weDA0M0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlT2xhcEltcGxcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0M0YvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZU9sYXBJbXBsXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVMZXZlbHNEYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbHNEYXRhXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVMZXZlbERhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NDMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUxldmVsRGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NDUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2VzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVTaVJhbmdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVTaVJhbmdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0OC8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlT2xhcEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZVNlbGVjdGlvbnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NEEvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZVNlbGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDA0NEIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZVNlbGVjdGlvbnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDRDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZU5hdGl2ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0RC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlTmF0aXZlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0RS8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlTmF0aXZlSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDA0NEYvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByb3RlY3Rpb24xNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NTAvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByb3RlY3Rpb25Jc28xNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NTEvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsSWdub3JlRUMxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NTcvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0MTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZJY29uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ1QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2Vyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NUQvKjo6XSovOiB7IC8qIG46XCJCcnRXYlByb3AxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NUUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRWRpdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ1Ri8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRWRpdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRWRpdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEVkaXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDaGFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENoYW5nZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NjQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ2hhbmdlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ2hhbmdlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NjYvKjo6XSovOiB7IC8qIG46XCJCcnRTWFR1cGxlSXRlbXNcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDY4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJTdHlsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlclN0eWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2QS8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlclN0eWxlRWxlbWVudFwiICovIH0sXG5cdC8qOjpbKi8weDA0NkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN0eWxlU2hlZXRFeHQxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN0eWxlU2hlZXRFeHQxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NkYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbUV4dFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNNZW1FeHRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDczLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtc0V4dFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNNZW1zRXh0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3NS8qOjpdKi86IHsgLyogbjpcIkJydFBDREZpZWxkMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDc2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJTdHlsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJTdHlsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDc4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJTdHlsZUVsZW1lbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDc5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyU3R5bGVFbGVtZW50c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0N0EvKjo6XSovOiB7IC8qIG46XCJCcnRDRlJ1bGVFeHRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDdCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENvbmRGbXQxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDb25kRm10czE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDdFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDb25kRm10czE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU29ydENvbmQxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNvcnRDb25kMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRFZhbHMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJY29uU2V0MTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGF0YWJhcjE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29sb3JTY2FsZTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sb3JTY2FsZTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3hydWxlczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDg4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hydWxlczE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJ1bGUxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSdWxlMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDhCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZpbHRlcnMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRmlsdGVyczE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGaWx0ZXIxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRmlsdGVyMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDhGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZJdGVtMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZJdGVtMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsSWdub3JlRUNzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsSWdub3JlRUNzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDkzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHhmMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDk0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EeEYxNHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OTUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREeGYxNHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDk5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsdGVyMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DdXN0b21GaWx0ZXJzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OUMvKjo6XSovOiB7IC8qIG46XCJCcnRDdXN0b21GaWx0ZXIxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0OUQvKjo6XSovOiB7IC8qIG46XCJCcnRJY29uRmlsdGVyMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDlFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGl2b3RDYWNoZUNvbm5lY3Rpb25OYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgwMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGVjb3VwbGVkUGl2b3RDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgwMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZERlY291cGxlZFBpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RGVjb3VwbGVkUGl2b3RDYWNoZUlEXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgwMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RUYWJsZVJlZnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdFRhYmxlUmVmc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MDUvKjo6XSovOiB7IC8qIG46XCJCcnRQaXZvdFRhYmxlUmVmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNi8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlQm9va1Bpdm90VGFibGVzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3h2Y2VsbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeHZjZWxsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4Um93XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hSb3dcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODBDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGNkQ2FsY01lbTE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMy8qOjpdKi86IHsgLyogbjpcIkJydFFzaTE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV2ViRXh0ZW5zaW9uc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgxNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdlYkV4dGVuc2lvbnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2ViRXh0ZW5zaW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxNy8qOjpdKi86IHsgLyogbjpcIkJydEFic1BhdGgxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90VGFibGVVSVNldHRpbmdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RUYWJsZVVJU2V0dGluZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTbGljZXJDYWNoZUlEc1wiICovIH0sXG5cdC8qOjpbKi8weDA4MUMvKjo6XSovOiB7IC8qIG46XCJCcnRUYWJsZVNsaWNlckNhY2hlSURcIiAqLyB9LFxuXHQvKjo6WyovMHgwODFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UYWJsZVNsaWNlckNhY2hlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGFibGVTbGljZXJDYWNoZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MUYvKjo6XSovOiB7IC8qIG46XCJCcnRTeEZpbHRlcjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgyMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MjIvKjo6XSovOiB7IC8qIG46XCJCcnRUaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgyMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lQ2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZUNhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUNhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZXNFeFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lc0V4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVFeFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lRXhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0V29ya0Jvb2tQcjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgyQy8qOjpdKi86IHsgLyogbjpcIkJydFBDREgxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lU3R5bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZVN0eWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyRi8qOjpdKi86IHsgLyogbjpcIkJydFRpbWVsaW5lU3R5bGVFbGVtZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgzMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVTdHlsZXNoZWV0RXh0MTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MzEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZVN0eWxlc2hlZXRFeHQxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MzIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lU3R5bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlRWxlbWVudHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZVN0eWxlRWxlbWVudHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHhmMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EeGZzMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREeGZzMTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVIaWRlSXRlbXNXaXRoTm9EYXRhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgzQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSXRlbVVuaXF1ZU5hbWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSXRlbVVuaXF1ZU5hbWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzQy8qOjpdKi86IHsgLyogbjpcIkJydEl0ZW1VbmlxdWVOYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgzRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubjE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0Q29ubjE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luT2xlZGJQcjE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kT2xlZGJQcjE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YUZlZWRQcjE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGF0YUZlZWRQcjE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0My8qOjpdKi86IHsgLyogbjpcIkJydFRleHRQcjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg0NC8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NDUvKjo6XSovOiB7IC8qIG46XCJCcnREYkNvbW1hbmQxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NDYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRiVGFibGVzMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NDcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYlRhYmxlczE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0OC8qOjpdKi86IHsgLyogbjpcIkJydERiVGFibGUxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRhdGFNb2RlbFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFNb2RlbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NEIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1vZGVsVGFibGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODRDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTW9kZWxUYWJsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODRELyo6Ol0qLzogeyAvKiBuOlwiQnJ0TW9kZWxUYWJsZVwiICovIH0sXG5cdC8qOjpbKi8weDA4NEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1vZGVsUmVsYXRpb25zaGlwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Ri8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsUmVsYXRpb25zaGlwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NTAvKjo6XSovOiB7IC8qIG46XCJCcnRNb2RlbFJlbGF0aW9uc2hpcFwiICovIH0sXG5cdC8qOjpbKi8weDA4NTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVHh0V2l6MTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1R4dFdpejE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUV0ZsZEluZm9Mc3QxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDVFdGbGRJbmZvTHN0MTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1RXRmxkSW5mbzE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmllbGRMaXN0QWN0aXZlSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDA4NTcvKjo6XSovOiB7IC8qIG46XCJCcnRQaXZvdENhY2hlSWRWZXJzaW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg1OC8qOjpdKi86IHsgLyogbjpcIkJydFNYREkxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1vZGVsVGltZUdyb3VwaW5nc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsVGltZUdyb3VwaW5nc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1vZGVsVGltZUdyb3VwaW5nXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0TW9kZWxUaW1lR3JvdXBpbmdDYWxjQ29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MEMwMC8qOjpdKi86IHsgLyogbjpcIkJydFVpZFwiICovIH0sXG5cdC8qOjpbKi8weDBDMDEvKjo6XSovOiB7IC8qIG46XCJCcnRSZXZpc2lvblB0clwiICovIH0sXG5cdC8qOjpbKi8weDEwMDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkR5bmFtaWNBcnJheVByXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxMDAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRHluYW1pY0FycmF5UHJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxMzhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5SaWNoVmFsdWVCbG9ja1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTM4Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJpY2hWYWx1ZUJsb2NrXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNEOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUmljaEZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzREEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzREIvKjo6XSovOiB7IC8qIG46XCJCcnRSaWNoRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNEQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUmljaEZpbHRlckNvbHVtblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTNERC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJpY2hGaWx0ZXJDb2x1bW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0RFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DdXN0b21SaWNoRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTNERi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEN1c3RvbVJpY2hGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNFMC8qOjpdKi86IHsgLyogbjpcIkJydEN1c3RvbVJpY2hGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0UxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VG9wMTBSaWNoRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFMi8qOjpdKi86IHsgLyogbjpcIkJydER5bmFtaWNSaWNoRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUmljaFNvcnRDb25kaXRpb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzRTUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoU29ydENvbmRpdGlvblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRTYvKjo6XSovOiB7IC8qIG46XCJCcnRSaWNoRmlsdGVyRGF0ZUdyb3VwSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDEzRTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNhbGNGZWF0dXJlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTNFOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZENhbGNGZWF0dXJlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRTkvKjo6XSovOiB7IC8qIG46XCJCcnRDYWxjRmVhdHVyZVwiICovIH0sXG5cdC8qOjpbKi8weDEzRUIvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5hbExpbmtzUHJcIiAqLyB9LFxuXHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogeyBuOlwiXCIgfVxufTtcblxuLyogW01TLVhMU10gMi4zIFJlY29yZCBFbnVtZXJhdGlvbiAoYW5kIG90aGVyIHNvdXJjZXMpICovXG52YXIgWExTUmVjb3JkRW51bSA9IHtcblx0LyogW01TLVhMU10gMi4zIFJlY29yZCBFbnVtZXJhdGlvbiAyMDIxLTA4LTE3ICovXG5cdC8qOjpbKi8weDAwMDYvKjo6XSovOiB7IC8qIG46XCJGb3JtdWxhXCIsICovIGY6cGFyc2VfRm9ybXVsYSB9LFxuXHQvKjo6WyovMHgwMDBhLyo6Ol0qLzogeyAvKiBuOlwiRU9GXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMDBjLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY0NvdW50XCIsICovIGY6cGFyc2V1aW50MTYgfSwgLy9cblx0Lyo6OlsqLzB4MDAwZC8qOjpdKi86IHsgLyogbjpcIkNhbGNNb2RlXCIsICovIGY6cGFyc2V1aW50MTYgfSwgLy9cblx0Lyo6OlsqLzB4MDAwZS8qOjpdKi86IHsgLyogbjpcIkNhbGNQcmVjaXNpb25cIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDAwZi8qOjpdKi86IHsgLyogbjpcIkNhbGNSZWZNb2RlXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAwMTAvKjo6XSovOiB7IC8qIG46XCJDYWxjRGVsdGFcIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vXG5cdC8qOjpbKi8weDAwMTEvKjo6XSovOiB7IC8qIG46XCJDYWxjSXRlclwiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMDEyLyo6Ol0qLzogeyAvKiBuOlwiUHJvdGVjdFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDEzLyo6Ol0qLzogeyAvKiBuOlwiUGFzc3dvcmRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogeyAvKiBuOlwiSGVhZGVyXCIsICovIGY6cGFyc2VfWExIZWFkZXJGb290ZXIgfSxcblx0Lyo6OlsqLzB4MDAxNS8qOjpdKi86IHsgLyogbjpcIkZvb3RlclwiLCAqLyBmOnBhcnNlX1hMSGVhZGVyRm9vdGVyIH0sXG5cdC8qOjpbKi8weDAwMTcvKjo6XSovOiB7IC8qIG46XCJFeHRlcm5TaGVldFwiLCAqLyBmOnBhcnNlX0V4dGVyblNoZWV0IH0sXG5cdC8qOjpbKi8weDAwMTgvKjo6XSovOiB7IC8qIG46XCJMYmxcIiwgKi8gZjpwYXJzZV9MYmwgfSxcblx0Lyo6OlsqLzB4MDAxOS8qOjpdKi86IHsgLyogbjpcIldpblByb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAxYS8qOjpdKi86IHsgLyogbjpcIlZlcnRpY2FsUGFnZUJyZWFrc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDFiLyo6Ol0qLzogeyAvKiBuOlwiSG9yaXpvbnRhbFBhZ2VCcmVha3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAxYy8qOjpdKi86IHsgLyogbjpcIk5vdGVcIiwgKi8gZjpwYXJzZV9Ob3RlIH0sXG5cdC8qOjpbKi8weDAwMWQvKjo6XSovOiB7IC8qIG46XCJTZWxlY3Rpb25cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMi8qOjpdKi86IHsgLyogbjpcIkRhdGUxOTA0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMjMvKjo6XSovOiB7IC8qIG46XCJFeHRlcm5OYW1lXCIsICovIGY6cGFyc2VfRXh0ZXJuTmFtZSB9LFxuXHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyAvKiBuOlwiTGVmdE1hcmdpblwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy8gKlxuXHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogeyAvKiBuOlwiUmlnaHRNYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgLyogbjpcIlRvcE1hcmdpblwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy8gKlxuXHQvKjo6WyovMHgwMDI5Lyo6Ol0qLzogeyAvKiBuOlwiQm90dG9tTWFyZ2luXCIsICovIGY6cGFyc2VfWG51bSB9LCAvLyAqXG5cdC8qOjpbKi8weDAwMmEvKjo6XSovOiB7IC8qIG46XCJQcmludFJvd0NvbFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDJiLyo6Ol0qLzogeyAvKiBuOlwiUHJpbnRHcmlkXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMmYvKjo6XSovOiB7IC8qIG46XCJGaWxlUGFzc1wiLCAqLyBmOnBhcnNlX0ZpbGVQYXNzIH0sXG5cdC8qOjpbKi8weDAwMzEvKjo6XSovOiB7IC8qIG46XCJGb250XCIsICovIGY6cGFyc2VfRm9udCB9LFxuXHQvKjo6WyovMHgwMDMzLyo6Ol0qLzogeyAvKiBuOlwiUHJpbnRTaXplXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDAzYy8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwM2QvKjo6XSovOiB7IC8qIG46XCJXaW5kb3cxXCIsICovIGY6cGFyc2VfV2luZG93MSB9LFxuXHQvKjo6WyovMHgwMDQwLyo6Ol0qLzogeyAvKiBuOlwiQmFja3VwXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwNDEvKjo6XSovOiB7IC8qIG46XCJQYW5lXCIsICovIGY6cGFyc2VfUGFuZSB9LFxuXHQvKjo6WyovMHgwMDQyLyo6Ol0qLzogeyAvKiBuOlwiQ29kZVBhZ2VcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDRkLyo6Ol0qLzogeyAvKiBuOlwiUGxzXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNTAvKjo6XSovOiB7IC8qIG46XCJEQ29uXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNTEvKjo6XSovOiB7IC8qIG46XCJEQ29uUmVmXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNTIvKjo6XSovOiB7IC8qIG46XCJEQ29uTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDU1Lyo6Ol0qLzogeyAvKiBuOlwiRGVmQ29sV2lkdGhcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDU5Lyo6Ol0qLzogeyAvKiBuOlwiWENUXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNWEvKjo6XSovOiB7IC8qIG46XCJDUk5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Yi8qOjpdKi86IHsgLyogbjpcIkZpbGVTaGFyaW5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNWMvKjo6XSovOiB7IC8qIG46XCJXcml0ZUFjY2Vzc1wiLCAqLyBmOnBhcnNlX1dyaXRlQWNjZXNzIH0sXG5cdC8qOjpbKi8weDAwNWQvKjo6XSovOiB7IC8qIG46XCJPYmpcIiwgKi8gZjpwYXJzZV9PYmogfSxcblx0Lyo6OlsqLzB4MDA1ZS8qOjpdKi86IHsgLyogbjpcIlVuY2FsY2VkXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNWYvKjo6XSovOiB7IC8qIG46XCJDYWxjU2F2ZVJlY2FsY1wiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMDYwLyo6Ol0qLzogeyAvKiBuOlwiVGVtcGxhdGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA2MS8qOjpdKi86IHsgLyogbjpcIkludGxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA2My8qOjpdKi86IHsgLyogbjpcIk9ialByb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDA3ZC8qOjpdKi86IHsgLyogbjpcIkNvbEluZm9cIiwgKi8gZjpwYXJzZV9Db2xJbmZvIH0sXG5cdC8qOjpbKi8weDAwODAvKjo6XSovOiB7IC8qIG46XCJHdXRzXCIsICovIGY6cGFyc2VfR3V0cyB9LFxuXHQvKjo6WyovMHgwMDgxLyo6Ol0qLzogeyAvKiBuOlwiV3NCb29sXCIsICovIGY6cGFyc2VfV3NCb29sIH0sXG5cdC8qOjpbKi8weDAwODIvKjo6XSovOiB7IC8qIG46XCJHcmlkU2V0XCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA4My8qOjpdKi86IHsgLyogbjpcIkhDZW50ZXJcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDA4NC8qOjpdKi86IHsgLyogbjpcIlZDZW50ZXJcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDA4NS8qOjpdKi86IHsgLyogbjpcIkJvdW5kU2hlZXQ4XCIsICovIGY6cGFyc2VfQm91bmRTaGVldDggfSxcblx0Lyo6OlsqLzB4MDA4Ni8qOjpdKi86IHsgLyogbjpcIldyaXRlUHJvdGVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDhjLyo6Ol0qLzogeyAvKiBuOlwiQ291bnRyeVwiLCAqLyBmOnBhcnNlX0NvdW50cnkgfSxcblx0Lyo6OlsqLzB4MDA4ZC8qOjpdKi86IHsgLyogbjpcIkhpZGVPYmpcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDkwLyo6Ol0qLzogeyAvKiBuOlwiU29ydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDkyLyo6Ol0qLzogeyAvKiBuOlwiUGFsZXR0ZVwiLCAqLyBmOnBhcnNlX1BhbGV0dGUgfSxcblx0Lyo6OlsqLzB4MDA5Ny8qOjpdKi86IHsgLyogbjpcIlN5bmNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5OC8qOjpdKi86IHsgLyogbjpcIkxQclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDk5Lyo6Ol0qLzogeyAvKiBuOlwiRHhHQ29sXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOWEvKjo6XSovOiB7IC8qIG46XCJGbkdyb3VwTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDliLyo6Ol0qLzogeyAvKiBuOlwiRmlsdGVyTW9kZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDljLyo6Ol0qLzogeyAvKiBuOlwiQnVpbHRJbkZuR3JvdXBDb3VudFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwOWQvKjo6XSovOiB7IC8qIG46XCJBdXRvRmlsdGVySW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDllLyo6Ol0qLzogeyAvKiBuOlwiQXV0b0ZpbHRlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGEwLyo6Ol0qLzogeyAvKiBuOlwiU2NsXCIsICovIGY6cGFyc2VfU2NsIH0sXG5cdC8qOjpbKi8weDAwYTEvKjo6XSovOiB7IC8qIG46XCJTZXR1cFwiLCAqLyBmOnBhcnNlX1NldHVwIH0sXG5cdC8qOjpbKi8weDAwYWUvKjo6XSovOiB7IC8qIG46XCJTY2VuTWFuXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYWYvKjo6XSovOiB7IC8qIG46XCJTQ0VOQVJJT1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGIwLyo6Ol0qLzogeyAvKiBuOlwiU3hWaWV3XCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjEvKjo6XSovOiB7IC8qIG46XCJTeHZkXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjIvKjo6XSovOiB7IC8qIG46XCJTWFZJXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjQvKjo6XSovOiB7IC8qIG46XCJTeEl2ZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI1Lyo6Ol0qLzogeyAvKiBuOlwiU1hMSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI2Lyo6Ol0qLzogeyAvKiBuOlwiU1hQSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI4Lyo6Ol0qLzogeyAvKiBuOlwiRG9jUm91dGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiOS8qOjpdKi86IHsgLyogbjpcIlJlY2lwTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGJkLyo6Ol0qLzogeyAvKiBuOlwiTXVsUmtcIiwgKi8gZjpwYXJzZV9NdWxSayB9LFxuXHQvKjo6WyovMHgwMGJlLyo6Ol0qLzogeyAvKiBuOlwiTXVsQmxhbmtcIiwgKi8gZjpwYXJzZV9NdWxCbGFuayB9LFxuXHQvKjo6WyovMHgwMGMxLyo6Ol0qLzogeyAvKiBuOlwiTW1zXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMGM1Lyo6Ol0qLzogeyAvKiBuOlwiU1hESVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGM2Lyo6Ol0qLzogeyAvKiBuOlwiU1hEQlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGM3Lyo6Ol0qLzogeyAvKiBuOlwiU1hGREJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjOC8qOjpdKi86IHsgLyogbjpcIlNYREJCXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzkvKjo6XSovOiB7IC8qIG46XCJTWE51bVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNhLyo6Ol0qLzogeyAvKiBuOlwiU3hCb29sXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwY2IvKjo6XSovOiB7IC8qIG46XCJTeEVyclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNjLyo6Ol0qLzogeyAvKiBuOlwiU1hJbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjZC8qOjpdKi86IHsgLyogbjpcIlNYU3RyaW5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2UvKjo6XSovOiB7IC8qIG46XCJTWER0clwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNmLyo6Ol0qLzogeyAvKiBuOlwiU3hOaWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkMC8qOjpdKi86IHsgLyogbjpcIlNYVGJsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDEvKjo6XSovOiB7IC8qIG46XCJTWFRCUkdJSVRNXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDIvKjo6XSovOiB7IC8qIG46XCJTeFRicGdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkMy8qOjpdKi86IHsgLyogbjpcIk9iUHJvalwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ1Lyo6Ol0qLzogeyAvKiBuOlwiU1hTdHJlYW1JRFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ3Lyo6Ol0qLzogeyAvKiBuOlwiREJDZWxsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDgvKjo6XSovOiB7IC8qIG46XCJTWFJuZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ5Lyo6Ol0qLzogeyAvKiBuOlwiU3hJc3hvcGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZGEvKjo6XSovOiB7IC8qIG46XCJCb29rQm9vbFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwZGMvKjo6XSovOiB7IC8qIG46XCJEYk9yUGFyYW1RcnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkZC8qOjpdKi86IHsgLyogbjpcIlNjZW5hcmlvUHJvdGVjdFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMGRlLyo6Ol0qLzogeyAvKiBuOlwiT2xlT2JqZWN0U2l6ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGUwLyo6Ol0qLzogeyAvKiBuOlwiWEZcIiwgKi8gZjpwYXJzZV9YRiB9LFxuXHQvKjo6WyovMHgwMGUxLyo6Ol0qLzogeyAvKiBuOlwiSW50ZXJmYWNlSGRyXCIsICovIGY6cGFyc2VfSW50ZXJmYWNlSGRyIH0sXG5cdC8qOjpbKi8weDAwZTIvKjo6XSovOiB7IC8qIG46XCJJbnRlcmZhY2VFbmRcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAwZTMvKjo6XSovOiB7IC8qIG46XCJTWFZTXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZTUvKjo6XSovOiB7IC8qIG46XCJNZXJnZUNlbGxzXCIsICovIGY6cGFyc2VfTWVyZ2VDZWxscyB9LFxuXHQvKjo6WyovMHgwMGU5Lyo6Ol0qLzogeyAvKiBuOlwiQmtIaW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlYi8qOjpdKi86IHsgLyogbjpcIk1zb0RyYXdpbmdHcm91cFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGVjLyo6Ol0qLzogeyAvKiBuOlwiTXNvRHJhd2luZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGVkLyo6Ol0qLzogeyAvKiBuOlwiTXNvRHJhd2luZ1NlbGVjdGlvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGVmLyo6Ol0qLzogeyAvKiBuOlwiUGhvbmV0aWNJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjAvKjo6XSovOiB7IC8qIG46XCJTeFJ1bGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmMS8qOjpdKi86IHsgLyogbjpcIlNYRXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmMi8qOjpdKi86IHsgLyogbjpcIlN4RmlsdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY0Lyo6Ol0qLzogeyAvKiBuOlwiU3hEWEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmNS8qOjpdKi86IHsgLyogbjpcIlN4SXRtXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjYvKjo6XSovOiB7IC8qIG46XCJTeE5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmNy8qOjpdKi86IHsgLyogbjpcIlN4U2VsZWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjgvKjo6XSovOiB7IC8qIG46XCJTWFBhaXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmOS8qOjpdKi86IHsgLyogbjpcIlN4Rm1sYVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGZiLyo6Ol0qLzogeyAvKiBuOlwiU3hGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmYy8qOjpdKi86IHsgLyogbjpcIlNTVFwiLCAqLyBmOnBhcnNlX1NTVCB9LFxuXHQvKjo6WyovMHgwMGZkLyo6Ol0qLzogeyAvKiBuOlwiTGFiZWxTc3RcIiwgKi8gZjpwYXJzZV9MYWJlbFNzdCB9LFxuXHQvKjo6WyovMHgwMGZmLyo6Ol0qLzogeyAvKiBuOlwiRXh0U1NUXCIsICovIGY6cGFyc2VfRXh0U1NUIH0sXG5cdC8qOjpbKi8weDAxMDAvKjo6XSovOiB7IC8qIG46XCJTWFZERXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEwMy8qOjpdKi86IHsgLyogbjpcIlNYRm9ybXVsYVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTIyLyo6Ol0qLzogeyAvKiBuOlwiU1hEQkV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAxMzcvKjo6XSovOiB7IC8qIG46XCJSUkRJbnNEZWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEzOC8qOjpdKi86IHsgLyogbjpcIlJSREhlYWRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEzYi8qOjpdKi86IHsgLyogbjpcIlJSRENoZ0NlbGxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEzZC8qOjpdKi86IHsgLyogbjpcIlJSVGFiSWRcIiwgKi8gZjpwYXJzZXVpbnQxNmEgfSxcblx0Lyo6OlsqLzB4MDEzZS8qOjpdKi86IHsgLyogbjpcIlJSRFJlblNoZWV0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxM2YvKjo6XSovOiB7IC8qIG46XCJSUlNvcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0MC8qOjpdKi86IHsgLyogbjpcIlJSRE1vdmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0YS8qOjpdKi86IHsgLyogbjpcIlJSRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGIvKjo6XSovOiB7IC8qIG46XCJSUkF1dG9GbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0ZC8qOjpdKi86IHsgLyogbjpcIlJSSW5zZXJ0U2hcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0ZS8qOjpdKi86IHsgLyogbjpcIlJSRE1vdmVCZWdpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRmLyo6Ol0qLzogeyAvKiBuOlwiUlJETW92ZUVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTUwLyo6Ol0qLzogeyAvKiBuOlwiUlJESW5zRGVsQmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1MS8qOjpdKi86IHsgLyogbjpcIlJSREluc0RlbEVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTUyLyo6Ol0qLzogeyAvKiBuOlwiUlJEQ29uZmxpY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1My8qOjpdKi86IHsgLyogbjpcIlJSRERlZk5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1NC8qOjpdKi86IHsgLyogbjpcIlJSRFJzdEV0eHBcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1Zi8qOjpdKi86IHsgLyogbjpcIkxSbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE2MC8qOjpdKi86IHsgLyogbjpcIlVzZXNFTEZzXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAxNjEvKjo6XSovOiB7IC8qIG46XCJEU0ZcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAxOTEvKjo6XSovOiB7IC8qIG46XCJDVXNyXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTIvKjo6XSovOiB7IC8qIG46XCJDYlVzclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTkzLyo6Ol0qLzogeyAvKiBuOlwiVXNySW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTk0Lyo6Ol0qLzogeyAvKiBuOlwiVXNyRXhjbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTk1Lyo6Ol0qLzogeyAvKiBuOlwiRmlsZUxvY2tcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ni8qOjpdKi86IHsgLyogbjpcIlJSREluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ny8qOjpdKi86IHsgLyogbjpcIkJDVXNyc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTk4Lyo6Ol0qLzogeyAvKiBuOlwiVXNyQ2hrXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYTkvKjo6XSovOiB7IC8qIG46XCJVc2VyQlZpZXdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhYS8qOjpdKi86IHsgLyogbjpcIlVzZXJTVmlld0JlZ2luXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWIvKjo6XSovOiB7IC8qIG46XCJVc2VyU1ZpZXdFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhYy8qOjpdKi86IHsgLyogbjpcIlJSRFVzZXJWaWV3XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWQvKjo6XSovOiB7IC8qIG46XCJRc2lcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhZS8qOjpdKi86IHsgLyogbjpcIlN1cEJvb2tcIiwgKi8gZjpwYXJzZV9TdXBCb29rIH0sXG5cdC8qOjpbKi8weDAxYWYvKjo6XSovOiB7IC8qIG46XCJQcm90NFJldlwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMWIwLyo6Ol0qLzogeyAvKiBuOlwiQ29uZEZtdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWIxLyo6Ol0qLzogeyAvKiBuOlwiQ0ZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiMi8qOjpdKi86IHsgLyogbjpcIkRWYWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiNS8qOjpdKi86IHsgLyogbjpcIkRDb25CaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiNi8qOjpdKi86IHsgLyogbjpcIlR4T1wiLCAqLyBmOnBhcnNlX1R4TyB9LFxuXHQvKjo6WyovMHgwMWI3Lyo6Ol0qLzogeyAvKiBuOlwiUmVmcmVzaEFsbFwiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMWI4Lyo6Ol0qLzogeyAvKiBuOlwiSExpbmtcIiwgKi8gZjpwYXJzZV9ITGluayB9LFxuXHQvKjo6WyovMHgwMWI5Lyo6Ol0qLzogeyAvKiBuOlwiTGVsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYmEvKjo6XSovOiB7IC8qIG46XCJDb2RlTmFtZVwiLCAqLyBmOnBhcnNlX1hMVW5pY29kZVN0cmluZyB9LFxuXHQvKjo6WyovMHgwMWJiLyo6Ol0qLzogeyAvKiBuOlwiU1hGREJUeXBlXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYmMvKjo6XSovOiB7IC8qIG46XCJQcm90NFJldlBhc3NcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMWJkLyo6Ol0qLzogeyAvKiBuOlwiT2JOb01hY3Jvc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWJlLyo6Ol0qLzogeyAvKiBuOlwiRHZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFjMC8qOjpdKi86IHsgLyogbjpcIkV4Y2VsOUZpbGVcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAxYzEvKjo6XSovOiB7IC8qIG46XCJSZWNhbGNJZFwiLCAqLyBmOnBhcnNlX1JlY2FsY0lkLCByOjJ9LFxuXHQvKjo6WyovMHgwMWMyLyo6Ol0qLzogeyAvKiBuOlwiRW50RXhVMlwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDIwMC8qOjpdKi86IHsgLyogbjpcIkRpbWVuc2lvbnNcIiwgKi8gZjpwYXJzZV9EaW1lbnNpb25zIH0sXG5cdC8qOjpbKi8weDAyMDEvKjo6XSovOiB7IC8qIG46XCJCbGFua1wiLCAqLyBmOnBhcnNlX0JsYW5rIH0sXG5cdC8qOjpbKi8weDAyMDMvKjo6XSovOiB7IC8qIG46XCJOdW1iZXJcIiwgKi8gZjpwYXJzZV9OdW1iZXIgfSxcblx0Lyo6OlsqLzB4MDIwNC8qOjpdKi86IHsgLyogbjpcIkxhYmVsXCIsICovIGY6cGFyc2VfTGFiZWwgfSxcblx0Lyo6OlsqLzB4MDIwNS8qOjpdKi86IHsgLyogbjpcIkJvb2xFcnJcIiwgKi8gZjpwYXJzZV9Cb29sRXJyIH0sXG5cdC8qOjpbKi8weDAyMDcvKjo6XSovOiB7IC8qIG46XCJTdHJpbmdcIiwgKi8gZjpwYXJzZV9TdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDIwOC8qOjpdKi86IHsgLyogbjpcIlJvd1wiLCAqLyBmOnBhcnNlX1JvdyB9LFxuXHQvKjo6WyovMHgwMjBiLyo6Ol0qLzogeyAvKiBuOlwiSW5kZXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDIyMS8qOjpdKi86IHsgLyogbjpcIkFycmF5XCIsICovIGY6cGFyc2VfQXJyYXkgfSxcblx0Lyo6OlsqLzB4MDIyNS8qOjpdKi86IHsgLyogbjpcIkRlZmF1bHRSb3dIZWlnaHRcIiwgKi8gZjpwYXJzZV9EZWZhdWx0Um93SGVpZ2h0IH0sXG5cdC8qOjpbKi8weDAyMzYvKjo6XSovOiB7IC8qIG46XCJUYWJsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjNlLyo6Ol0qLzogeyAvKiBuOlwiV2luZG93MlwiLCAqLyBmOnBhcnNlX1dpbmRvdzIgfSxcblx0Lyo6OlsqLzB4MDI3ZS8qOjpdKi86IHsgLyogbjpcIlJLXCIsICovIGY6cGFyc2VfUksgfSxcblx0Lyo6OlsqLzB4MDI5My8qOjpdKi86IHsgLyogbjpcIlN0eWxlXCIsICovIH0sXG5cdC8qOjpbKi8weDA0MTgvKjo6XSovOiB7IC8qIG46XCJCaWdOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDA0MWUvKjo6XSovOiB7IC8qIG46XCJGb3JtYXRcIiwgKi8gZjpwYXJzZV9Gb3JtYXQgfSxcblx0Lyo6OlsqLzB4MDQzYy8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlQmlnTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNGJjLyo6Ol0qLzogeyAvKiBuOlwiU2hyRm1sYVwiLCAqLyBmOnBhcnNlX1NockZtbGEgfSxcblx0Lyo6OlsqLzB4MDgwMC8qOjpdKi86IHsgLyogbjpcIkhMaW5rVG9vbHRpcFwiLCAqLyBmOnBhcnNlX0hMaW5rVG9vbHRpcCB9LFxuXHQvKjo6WyovMHgwODAxLyo6Ol0qLzogeyAvKiBuOlwiV2ViUHViXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDIvKjo6XSovOiB7IC8qIG46XCJRc2lTWFRhZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODAzLyo6Ol0qLzogeyAvKiBuOlwiREJRdWVyeUV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA0Lyo6Ol0qLzogeyAvKiBuOlwiRXh0U3RyaW5nXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDUvKjo6XSovOiB7IC8qIG46XCJUeHRRcnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNi8qOjpdKi86IHsgLyogbjpcIlFzaXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNy8qOjpdKi86IHsgLyogbjpcIlFzaWZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwOC8qOjpdKi86IHsgLyogbjpcIlJSRFRRU0lGXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDkvKjo6XSovOiB7IC8qIG46XCJCT0ZcIiwgKi8gZjpwYXJzZV9CT0YgfSxcblx0Lyo6OlsqLzB4MDgwYS8qOjpdKi86IHsgLyogbjpcIk9sZURiQ29ublwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODBiLyo6Ol0qLzogeyAvKiBuOlwiV09wdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODBjLyo6Ol0qLzogeyAvKiBuOlwiU1hWaWV3RXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwZC8qOjpdKi86IHsgLyogbjpcIlNYVEhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwZS8qOjpdKi86IHsgLyogbjpcIlNYUElFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODBmLyo6Ol0qLzogeyAvKiBuOlwiU1hWRFRFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODEwLyo6Ol0qLzogeyAvKiBuOlwiU1hWaWV3RXg5XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MTIvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZUZydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODEzLyo6Ol0qLzogeyAvKiBuOlwiUmVhbFRpbWVEYXRhXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTAvKjo6XSovOiB7IC8qIG46XCJDaGFydEZydEluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1MS8qOjpdKi86IHsgLyogbjpcIkZydFdyYXBwZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1Mi8qOjpdKi86IHsgLyogbjpcIlN0YXJ0QmxvY2tcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1My8qOjpdKi86IHsgLyogbjpcIkVuZEJsb2NrXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTQvKjo6XSovOiB7IC8qIG46XCJTdGFydE9iamVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU1Lyo6Ol0qLzogeyAvKiBuOlwiRW5kT2JqZWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTYvKjo6XSovOiB7IC8qIG46XCJDYXRMYWJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1Ny8qOjpdKi86IHsgLyogbjpcIllNdWx0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTgvKjo6XSovOiB7IC8qIG46XCJTWFZpZXdMaW5rXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTkvKjo6XSovOiB7IC8qIG46XCJQaXZvdENoYXJ0Qml0c1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODVhLyo6Ol0qLzogeyAvKiBuOlwiRnJ0Rm9udExpc3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Mi8qOjpdKi86IHsgLyogbjpcIlNoZWV0RXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjMvKjo6XSovOiB7IC8qIG46XCJCb29rRXh0XCIsICovIHI6MTJ9LFxuXHQvKjo6WyovMHgwODY0Lyo6Ol0qLzogeyAvKiBuOlwiU1hBZGRsXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjUvKjo6XSovOiB7IC8qIG46XCJDckVyclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODY2Lyo6Ol0qLzogeyAvKiBuOlwiSEZQaWN0dXJlXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjcvKjo6XSovOiB7IC8qIG46XCJGZWF0SGRyXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwODY4Lyo6Ol0qLzogeyAvKiBuOlwiRmVhdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZhLyo6Ol0qLzogeyAvKiBuOlwiRGF0YUxhYkV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZiLyo6Ol0qLzogeyAvKiBuOlwiRGF0YUxhYkV4dENvbnRlbnRzXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NmMvKjo6XSovOiB7IC8qIG46XCJDZWxsV2F0Y2hcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3MS8qOjpdKi86IHsgLyogbjpcIkZlYXRIZHIxMVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODcyLyo6Ol0qLzogeyAvKiBuOlwiRmVhdHVyZTExXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzQvKjo6XSovOiB7IC8qIG46XCJEcm9wRG93bk9iaklkc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc1Lyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVGcnQxMVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc2Lyo6Ol0qLzogeyAvKiBuOlwiRENvbm5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Ny8qOjpdKi86IHsgLyogbjpcIkxpc3QxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc4Lyo6Ol0qLzogeyAvKiBuOlwiRmVhdHVyZTEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzkvKjo6XSovOiB7IC8qIG46XCJDb25kRm10MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3YS8qOjpdKi86IHsgLyogbjpcIkNGMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Yi8qOjpdKi86IHsgLyogbjpcIkNGRXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Yy8qOjpdKi86IHsgLyogbjpcIlhGQ1JDXCIsICovIGY6cGFyc2VfWEZDUkMsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg3ZC8qOjpdKi86IHsgLyogbjpcIlhGRXh0XCIsICovIGY6cGFyc2VfWEZFeHQsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg3ZS8qOjpdKi86IHsgLyogbjpcIkF1dG9GaWx0ZXIxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODdmLyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVGcnQxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg0Lyo6Ol0qLzogeyAvKiBuOlwiTURUSW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg1Lyo6Ol0qLzogeyAvKiBuOlwiTURYU3RyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODYvKjo6XSovOiB7IC8qIG46XCJNRFhUdXBsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg3Lyo6Ol0qLzogeyAvKiBuOlwiTURYU2V0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODgvKjo6XSovOiB7IC8qIG46XCJNRFhQcm9wXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODkvKjo6XSovOiB7IC8qIG46XCJNRFhLUElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4YS8qOjpdKi86IHsgLyogbjpcIk1EQlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhiLyo6Ol0qLzogeyAvKiBuOlwiUExWXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OGMvKjo6XSovOiB7IC8qIG46XCJDb21wYXQxMlwiLCAqLyBmOnBhcnNlYm9vbCwgcjoxMiB9LFxuXHQvKjo6WyovMHgwODhkLyo6Ol0qLzogeyAvKiBuOlwiRFhGXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OGUvKjo6XSovOiB7IC8qIG46XCJUYWJsZVN0eWxlc1wiLCAqLyByOjEyIH0sXG5cdC8qOjpbKi8weDA4OGYvKjo6XSovOiB7IC8qIG46XCJUYWJsZVN0eWxlXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTAvKjo6XSovOiB7IC8qIG46XCJUYWJsZVN0eWxlRWxlbWVudFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODkyLyo6Ol0qLzogeyAvKiBuOlwiU3R5bGVFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5My8qOjpdKi86IHsgLyogbjpcIk5hbWVQdWJsaXNoXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTQvKjo6XSovOiB7IC8qIG46XCJOYW1lQ210XCIsICovIGY6cGFyc2VfTmFtZUNtdCwgcjoxMiB9LFxuXHQvKjo6WyovMHgwODk1Lyo6Ol0qLzogeyAvKiBuOlwiU29ydERhdGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5Ni8qOjpdKi86IHsgLyogbjpcIlRoZW1lXCIsICovIGY6cGFyc2VfVGhlbWUsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg5Ny8qOjpdKi86IHsgLyogbjpcIkdVSURUeXBlTGliXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTgvKjo6XSovOiB7IC8qIG46XCJGbkdycDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTkvKjo6XSovOiB7IC8qIG46XCJOYW1lRm5HcnAxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODlhLyo6Ol0qLzogeyAvKiBuOlwiTVRSU2V0dGluZ3NcIiwgKi8gZjpwYXJzZV9NVFJTZXR0aW5ncywgcjoxMiB9LFxuXHQvKjo6WyovMHgwODliLyo6Ol0qLzogeyAvKiBuOlwiQ29tcHJlc3NQaWN0dXJlc1wiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDg5Yy8qOjpdKi86IHsgLyogbjpcIkhlYWRlckZvb3RlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODlkLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TGF5b3V0MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5ZS8qOjpdKi86IHsgLyogbjpcIkNydE1sRnJ0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4OWYvKjo6XSovOiB7IC8qIG46XCJDcnRNbEZydENvbnRpbnVlXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YTMvKjo6XSovOiB7IC8qIG46XCJGb3JjZUZ1bGxDYWxjdWxhdGlvblwiLCAqLyBmOnBhcnNlX0ZvcmNlRnVsbENhbGN1bGF0aW9uIH0sXG5cdC8qOjpbKi8weDA4YTQvKjo6XSovOiB7IC8qIG46XCJTaGFwZVByb3BzU3RyZWFtXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YTUvKjo6XSovOiB7IC8qIG46XCJUZXh0UHJvcHNTdHJlYW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhhNi8qOjpdKi86IHsgLyogbjpcIlJpY2hUZXh0U3RyZWFtXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YTcvKjo6XSovOiB7IC8qIG46XCJDcnRMYXlvdXQxMkFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwMS8qOjpdKi86IHsgLyogbjpcIlVuaXRzXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDIvKjo6XSovOiB7IC8qIG46XCJDaGFydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDAzLyo6Ol0qLzogeyAvKiBuOlwiU2VyaWVzXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDYvKjo6XSovOiB7IC8qIG46XCJEYXRhRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDcvKjo6XSovOiB7IC8qIG46XCJMaW5lRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDkvKjo6XSovOiB7IC8qIG46XCJNYXJrZXJGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwYS8qOjpdKi86IHsgLyogbjpcIkFyZWFGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwYi8qOjpdKi86IHsgLyogbjpcIlBpZUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDBjLyo6Ol0qLzogeyAvKiBuOlwiQXR0YWNoZWRMYWJlbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDBkLyo6Ol0qLzogeyAvKiBuOlwiU2VyaWVzVGV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE0Lyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnRGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNS8qOjpdKi86IHsgLyogbjpcIkxlZ2VuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE2Lyo6Ol0qLzogeyAvKiBuOlwiU2VyaWVzTGlzdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE3Lyo6Ol0qLzogeyAvKiBuOlwiQmFyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTgvKjo6XSovOiB7IC8qIG46XCJMaW5lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTkvKjo6XSovOiB7IC8qIG46XCJQaWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxYS8qOjpdKi86IHsgLyogbjpcIkFyZWFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxYi8qOjpdKi86IHsgLyogbjpcIlNjYXR0ZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxYy8qOjpdKi86IHsgLyogbjpcIkNydExpbmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxZC8qOjpdKi86IHsgLyogbjpcIkF4aXNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxZS8qOjpdKi86IHsgLyogbjpcIlRpY2tcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxZi8qOjpdKi86IHsgLyogbjpcIlZhbHVlUmFuZ2VcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyMC8qOjpdKi86IHsgLyogbjpcIkNhdFNlclJhbmdlXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjEvKjo6XSovOiB7IC8qIG46XCJBeGlzTGluZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDIyLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TGlua1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDI0Lyo6Ol0qLzogeyAvKiBuOlwiRGVmYXVsdFRleHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyNS8qOjpdKi86IHsgLyogbjpcIlRleHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyNi8qOjpdKi86IHsgLyogbjpcIkZvbnRYXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MTAyNy8qOjpdKi86IHsgLyogbjpcIk9iamVjdExpbmtcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzMi8qOjpdKi86IHsgLyogbjpcIkZyYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMzMvKjo6XSovOiB7IC8qIG46XCJCZWdpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDM0Lyo6Ol0qLzogeyAvKiBuOlwiRW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMzUvKjo6XSovOiB7IC8qIG46XCJQbG90QXJlYVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDNhLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnQzZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDNjLyo6Ol0qLzogeyAvKiBuOlwiUGljRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDNkLyo6Ol0qLzogeyAvKiBuOlwiRHJvcEJhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDNlLyo6Ol0qLzogeyAvKiBuOlwiUmFkYXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzZi8qOjpdKi86IHsgLyogbjpcIlN1cmZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0MC8qOjpdKi86IHsgLyogbjpcIlJhZGFyQXJlYVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQxLyo6Ol0qLzogeyAvKiBuOlwiQXhpc1BhcmVudFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQzLyo6Ol0qLzogeyAvKiBuOlwiTGVnZW5kRXhjZXB0aW9uXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDQvKjo6XSovOiB7IC8qIG46XCJTaHRQcm9wc1wiLCAqLyBmOnBhcnNlX1NodFByb3BzIH0sXG5cdC8qOjpbKi8weDEwNDUvKjo6XSovOiB7IC8qIG46XCJTZXJUb0NydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQ2Lyo6Ol0qLzogeyAvKiBuOlwiQXhlc1VzZWRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0OC8qOjpdKi86IHsgLyogbjpcIlNCYXNlUmVmXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNGEvKjo6XSovOiB7IC8qIG46XCJTZXJQYXJlbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0Yi8qOjpdKi86IHsgLyogbjpcIlNlckF1eFRyZW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNGUvKjo6XSovOiB7IC8qIG46XCJJRm10UmVjb3JkXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNGYvKjo6XSovOiB7IC8qIG46XCJQb3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1MC8qOjpdKi86IHsgLyogbjpcIkFsUnVuc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDUxLyo6Ol0qLzogeyAvKiBuOlwiQlJBSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDViLyo6Ol0qLzogeyAvKiBuOlwiU2VyQXV4RXJyQmFyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNWMvKjo6XSovOiB7IC8qIG46XCJDbHJ0Q2xpZW50XCIsICovIGY6cGFyc2VfQ2xydENsaWVudCB9LFxuXHQvKjo6WyovMHgxMDVkLyo6Ol0qLzogeyAvKiBuOlwiU2VyRm10XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNWYvKjo6XSovOiB7IC8qIG46XCJDaGFydDNEQmFyU2hhcGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2MC8qOjpdKi86IHsgLyogbjpcIkZiaVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDYxLyo6Ol0qLzogeyAvKiBuOlwiQm9wUG9wXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjIvKjo6XSovOiB7IC8qIG46XCJBeGNFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2My8qOjpdKi86IHsgLyogbjpcIkRhdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDY0Lyo6Ol0qLzogeyAvKiBuOlwiUGxvdEdyb3d0aFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDY1Lyo6Ol0qLzogeyAvKiBuOlwiU0lJbmRleFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDY2Lyo6Ol0qLzogeyAvKiBuOlwiR2VsRnJhbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2Ny8qOjpdKi86IHsgLyogbjpcIkJvcFBvcEN1c3RvbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDY4Lyo6Ol0qLzogeyAvKiBuOlwiRmJpMlwiLCAqLyB9LFxuXG5cdC8qOjpbKi8weDAwMDAvKjo6XSovOiB7IC8qIG46XCJEaW1lbnNpb25zXCIsICovIGY6cGFyc2VfRGltZW5zaW9ucyB9LFxuXHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJCTEFOS1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJJTlRcIiwgKi8gZjpwYXJzZV9CSUZGMklOVCB9LFxuXHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJOVU1cIiwgKi8gZjpwYXJzZV9CSUZGMk5VTSB9LFxuXHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjJTVFJcIiwgKi8gZjpwYXJzZV9CSUZGMlNUUiB9LFxuXHQvKjo6WyovMHgwMDA1Lyo6Ol0qLzogeyAvKiBuOlwiQm9vbEVyclwiLCAqLyBmOnBhcnNlX0Jvb2xFcnIgfSxcblx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86IHsgLyogbjpcIlN0cmluZ1wiLCAqLyBmOnBhcnNlX0JJRkYyU1RSSU5HIH0sXG5cdC8qOjpbKi8weDAwMDgvKjo6XSovOiB7IC8qIG46XCJCSUZGMlJPV1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDA5Lyo6Ol0qLzogeyAvKiBuOlwiQk9GXCIsICovIGY6cGFyc2VfQk9GIH0sXG5cdC8qOjpbKi8weDAwMGIvKjo6XSovOiB7IC8qIG46XCJJbmRleFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDE2Lyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuQ291bnRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDFlLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJGT1JNQVRcIiwgKi8gZjpwYXJzZV9CSUZGMkZvcm1hdCB9LFxuXHQvKjo6WyovMHgwMDFmLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJGTVRDTlRcIiwgKi8gfSwgLyogMTYtYml0IGNudCBvZiBCSUZGMkZPUk1BVCByZWNvcmRzICovXG5cdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IC8qIG46XCJCSUZGMkNPTElORk9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IHsgLyogbjpcIkFycmF5XCIsICovIGY6cGFyc2VfQXJyYXkgfSxcblx0Lyo6OlsqLzB4MDAyNC8qOjpdKi86IHsgLyogbjpcIkNPTFdJRFRIXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IC8qIG46XCJEZWZhdWx0Um93SGVpZ2h0XCIsICovIGY6cGFyc2VfRGVmYXVsdFJvd0hlaWdodCB9LFxuXHQvLyAweDJjID8/XG5cdC8vIDB4MmQgPz9cblx0Ly8gMHgyZSA/P1xuXHQvLyAweDMwIEZPTlRDT1VOVDogbnVtYmVyIG9mIGZvbnRzXG5cdC8qOjpbKi8weDAwMzIvKjo6XSovOiB7IC8qIG46XCJCSUZGMkZPTlRYVFJBXCIsICovIGY6cGFyc2VfQklGRjJGT05UWFRSQSB9LFxuXHQvLyAweDM1OiBJTkZPT1BUU1xuXHQvLyAweDM2OiBUQUJMRSAoQklGRjIgb25seSlcblx0Ly8gMHgzNzogVEFCTEUyIChCSUZGMiBvbmx5KVxuXHQvLyAweDM4OiBXTkRFU0tcblx0Ly8gMHgzOSA/P1xuXHQvLyAweDNhOiBCRUdJTlBSRUZcblx0Ly8gMHgzYjogRU5EUFJFRlxuXHQvKjo6WyovMHgwMDNlLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJXSU5ET1cyXCIsICovIH0sXG5cdC8vIDB4M2YgPz9cblx0Ly8gMHg0NjogU0hPV1NDUk9MTFxuXHQvLyAweDQ3OiBTSE9XRk9STVVMQVxuXHQvLyAweDQ4OiBTVEFUVVNCQVJcblx0Ly8gMHg0OTogU0hPUlRNRU5VU1xuXHQvLyAweDRBOlxuXHQvLyAweDRCOlxuXHQvLyAweDRDOlxuXHQvLyAweDRFOlxuXHQvLyAweDRGOlxuXHQvLyAweDU4OiBUT09MQkFSIChCSUZGMylcblxuXHQvKiAtIC0gLSAqL1xuXHQvKjo6WyovMHgwMDM0Lyo6Ol0qLzogeyAvKiBuOlwiRERFT2JqTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDQzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDQ0Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjJYRklOREVYXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA0NS8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk9OVENMUlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDU2Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjRGTVRDTlRcIiwgKi8gfSwgLyogMTYtYml0IGNudCwgc2ltaWxhciB0byBCSUZGMiAqL1xuXHQvKjo6WyovMHgwMDdlLyo6Ol0qLzogeyAvKiBuOlwiUktcIiwgKi8gfSwgLyogTm90IG5lY2Vzc2FyaWx5IHNhbWUgYXMgMHgwMjdlICovXG5cdC8qOjpbKi8weDAwN2YvKjo6XSovOiB7IC8qIG46XCJJbURhdGFcIiwgKi8gZjpwYXJzZV9JbURhdGEgfSxcblx0Lyo6OlsqLzB4MDA4Ny8qOjpdKi86IHsgLyogbjpcIkFkZGluXCIsICovIH0sXG5cdC8qOjpbKi8weDAwODgvKjo6XSovOiB7IC8qIG46XCJFZGdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA4OS8qOjpdKi86IHsgLyogbjpcIlB1YlwiLCAqLyB9LFxuXHQvLyAweDhBXG5cdC8vIDB4OEIgTEg6IGFsdGVybmF0ZSBtZW51IGtleSBmbGFnIChCSUZGMy80KVxuXHQvLyAweDhFXG5cdC8vIDB4OEZcblx0Lyo6OlsqLzB4MDA5MS8qOjpdKi86IHsgLyogbjpcIlN1YlwiLCAqLyB9LFxuXHQvLyAweDkzIFNUWUxFXG5cdC8qOjpbKi8weDAwOTQvKjo6XSovOiB7IC8qIG46XCJMSFJlY29yZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDk1Lyo6Ol0qLzogeyAvKiBuOlwiTEhOR3JhcGhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Ni8qOjpdKi86IHsgLyogbjpcIlNvdW5kXCIsICovIH0sXG5cdC8vIDB4QTIgRk5QUk9UTzogZnVuY3Rpb24gcHJvdG90eXBlcyAoQklGRjQpXG5cdC8vIDB4QTNcblx0Ly8gMHhBOFxuXHQvKjo6WyovMHgwMGE5Lyo6Ol0qLzogeyAvKiBuOlwiQ29vcmRMaXN0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwYWIvKjo6XSovOiB7IC8qIG46XCJHQ1dcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiYy8qOjpdKi86IHsgLyogbjpcIlNockZtbGFcIiwgKi8gfSwgLyogTm90IG5lY2Vzc2FyaWx5IHNhbWUgYXMgMHgwNGJjICovXG5cdC8qOjpbKi8weDAwYmYvKjo6XSovOiB7IC8qIG46XCJUb29sYmFySGRyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzAvKjo6XSovOiB7IC8qIG46XCJUb29sYmFyRW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzIvKjo6XSovOiB7IC8qIG46XCJBZGRNZW51XCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzMvKjo6XSovOiB7IC8qIG46XCJEZWxNZW51XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDYvKjo6XSovOiB7IC8qIG46XCJSU3RyaW5nXCIsICovIGY6cGFyc2VfUlN0cmluZyB9LFxuXHQvKjo6WyovMHgwMGRmLyo6Ol0qLzogeyAvKiBuOlwiVUREZXNjXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWEvKjo6XSovOiB7IC8qIG46XCJUYWJJZENvbmZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Mi8qOjpdKi86IHsgLyogbjpcIlhMNU1vZGlmeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWE1Lyo6Ol0qLzogeyAvKiBuOlwiRmlsZVNoYXJpbmcyXCIsICovIH0sXG5cdC8qOjpbKi8weDAyMDYvKjo6XSovOiB7IC8qIG46XCJGb3JtdWxhXCIsICovIGY6cGFyc2VfRm9ybXVsYSB9LFxuXHQvKjo6WyovMHgwMjA5Lyo6Ol0qLzogeyAvKiBuOlwiQk9GXCIsICovIGY6cGFyc2VfQk9GIH0sXG5cdC8qOjpbKi8weDAyMTgvKjo6XSovOiB7IC8qIG46XCJMYmxcIiwgKi8gZjpwYXJzZV9MYmwgfSxcblx0Lyo6OlsqLzB4MDIyMy8qOjpdKi86IHsgLyogbjpcIkV4dGVybk5hbWVcIiwgKi8gZjpwYXJzZV9FeHRlcm5OYW1lIH0sXG5cdC8qOjpbKi8weDAyMzEvKjo6XSovOiB7IC8qIG46XCJGb250XCIsICovIH0sXG5cdC8qOjpbKi8weDAyNDMvKjo6XSovOiB7IC8qIG46XCJCSUZGM1hGXCIsICovIH0sXG5cdC8qOjpbKi8weDA0MDYvKjo6XSovOiB7IC8qIG46XCJGb3JtdWxhXCIsICovIGY6cGFyc2VfRm9ybXVsYSB9LFxuXHQvKjo6WyovMHgwNDA5Lyo6Ol0qLzogeyAvKiBuOlwiQk9GXCIsICovIGY6cGFyc2VfQk9GIH0sXG5cdC8qOjpbKi8weDA0NDMvKjo6XSovOiB7IC8qIG46XCJCSUZGNFhGXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NmQvKjo6XSovOiB7IC8qIG46XCJGZWF0SW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODczLyo6Ol0qLzogeyAvKiBuOlwiRmVhdEluZm8xMVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODgxLyo6Ol0qLzogeyAvKiBuOlwiU1hBZGRsMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjMC8qOjpdKi86IHsgLyogbjpcIkF1dG9XZWJQdWJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjMS8qOjpdKi86IHsgLyogbjpcIkxpc3RPYmpcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjMi8qOjpdKi86IHsgLyogbjpcIkxpc3RGaWVsZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGMzLyo6Ol0qLzogeyAvKiBuOlwiTGlzdERWXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzQvKjo6XSovOiB7IC8qIG46XCJMaXN0Q29uZEZtdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM1Lyo6Ol0qLzogeyAvKiBuOlwiTGlzdENGXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzYvKjo6XSovOiB7IC8qIG46XCJGTVFyeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM3Lyo6Ol0qLzogeyAvKiBuOlwiRk1TUXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzgvKjo6XSovOiB7IC8qIG46XCJQTFZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjOS8qOjpdKi86IHsgLyogbjpcIkxuRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4Y2EvKjo6XSovOiB7IC8qIG46XCJNa3JFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjYi8qOjpdKi86IHsgLyogbjpcIkNydENvb3B0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4ZDYvKjo6XSovOiB7IC8qIG46XCJGUlRBcmNoSWQkXCIsICovIHI6MTIgfSxcblxuXHQvKjo6WyovMHg3MjYyLyo6Ol0qLzoge31cbn07XG5cbmZ1bmN0aW9uIHdyaXRlX2JpZmZfcmVjKGJhLyo6QnVmQXJyYXkqLywgdHlwZS8qOm51bWJlciovLCBwYXlsb2FkLCBsZW5ndGgvKjo/bnVtYmVyKi8pLyo6dm9pZCovIHtcblx0dmFyIHQvKjpudW1iZXIqLyA9IHR5cGU7XG5cdGlmKGlzTmFOKHQpKSByZXR1cm47XG5cdHZhciBsZW4gPSBsZW5ndGggfHwgKHBheWxvYWR8fFtdKS5sZW5ndGggfHwgMDtcblx0dmFyIG8gPSBiYS5uZXh0KDQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGxlbik7XG5cdGlmKC8qOjogbGVuICE9IG51bGwgJiYqL2xlbiA+IDAgJiYgaXNfYnVmKHBheWxvYWQpKSBiYS5wdXNoKHBheWxvYWQpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9iaWZmX2NvbnRpbnVlKGJhLyo6QnVmQXJyYXkqLywgdHlwZS8qOm51bWJlciovLCBwYXlsb2FkLCBsZW5ndGgvKjo/bnVtYmVyKi8pLyo6dm9pZCovIHtcblx0dmFyIGxlbiA9IGxlbmd0aCB8fCAocGF5bG9hZHx8W10pLmxlbmd0aCB8fCAwO1xuXHRpZihsZW4gPD0gODIyNCkgcmV0dXJuIHdyaXRlX2JpZmZfcmVjKGJhLCB0eXBlLCBwYXlsb2FkLCBsZW4pO1xuXHR2YXIgdCA9IHR5cGU7XG5cdGlmKGlzTmFOKHQpKSByZXR1cm47XG5cdHZhciBwYXJ0cyA9IHBheWxvYWQucGFydHMgfHwgW10sIHNpZHggPSAwO1xuXHR2YXIgaSA9IDAsIHcgPSAwO1xuXHR3aGlsZSh3ICsgKHBhcnRzW3NpZHhdIHx8IDgyMjQpIDw9IDgyMjQpIHsgdys9IChwYXJ0c1tzaWR4XSB8fCA4MjI0KTsgc2lkeCsrOyB9XG5cdHZhciBvID0gYmEubmV4dCg0KTtcblx0by53cml0ZV9zaGlmdCgyLCB0KTtcblx0by53cml0ZV9zaGlmdCgyLCB3KTtcblx0YmEucHVzaChwYXlsb2FkLnNsaWNlKGksIGkgKyB3KSk7XG5cdGkgKz0gdztcblx0d2hpbGUoaSA8IGxlbikge1xuXHRcdG8gPSBiYS5uZXh0KDQpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgzYyk7IC8vIFRPRE86IGZpZ3VyZSBvdXQgY29ycmVjdCBjb250aW51ZSB0eXBlXG5cdFx0dyA9IDA7XG5cdFx0d2hpbGUodyArIChwYXJ0c1tzaWR4XSB8fCA4MjI0KSA8PSA4MjI0KSB7IHcrPSAocGFydHNbc2lkeF0gfHwgODIyNCk7IHNpZHgrKzsgfVxuXHRcdG8ud3JpdGVfc2hpZnQoMiwgdyk7XG5cdFx0YmEucHVzaChwYXlsb2FkLnNsaWNlKGksIGkrdykpOyBpKz0gdztcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZV9CSUZGMkNlbGwob3V0LCByLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLykge1xuXHRpZighb3V0KSBvdXQgPSBuZXdfYnVmKDcpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgcik7XG5cdG91dC53cml0ZV9zaGlmdCgyLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvdXQud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JJRkYyQkVSUihyLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLywgdmFsLCB0Lyo6P3N0cmluZyovKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDkpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0d3JpdGVfQmVzKHZhbCwgdCB8fCAnYicsIG91dCk7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFRPRE86IGNvZGVwYWdlLCBsYXJnZSBzdHJpbmdzICovXG5mdW5jdGlvbiB3cml0ZV9CSUZGMkxBQkVMKHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovLCB2YWwpIHtcblx0dmFyIG91dCA9IG5ld19idWYoOCArIDIqdmFsLmxlbmd0aCk7XG5cdHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIsIGMpO1xuXHRvdXQud3JpdGVfc2hpZnQoMSwgdmFsLmxlbmd0aCk7XG5cdG91dC53cml0ZV9zaGlmdCh2YWwubGVuZ3RoLCB2YWwsICdzYmNzJyk7XG5cdHJldHVybiBvdXQubCA8IG91dC5sZW5ndGggPyBvdXQuc2xpY2UoMCwgb3V0LmwpIDogb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmMl9jZWxsKGJhLyo6QnVmQXJyYXkqLywgY2VsbC8qOkNlbGwqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8vKjo6LCBvcHRzKi8pIHtcblx0aWYoY2VsbC52ICE9IG51bGwpIHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdkJzogY2FzZSAnbic6XG5cdFx0XHR2YXIgdiA9IGNlbGwudCA9PSAnZCcgPyBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKSA6IGNlbGwudjtcblx0XHRcdGlmKCh2ID09ICh2fDApKSAmJiAodiA+PSAwKSAmJiAodiA8IDY1NTM2KSlcblx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwMiwgd3JpdGVfQklGRjJJTlQoUiwgQywgdikpO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDAzLCB3cml0ZV9CSUZGMk5VTShSLEMsIHYpKTtcblx0XHRcdHJldHVybjtcblx0XHRjYXNlICdiJzogY2FzZSAnZSc6IHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDUsIHdyaXRlX0JJRkYyQkVSUihSLCBDLCBjZWxsLnYsIGNlbGwudCkpOyByZXR1cm47XG5cdFx0LyogVE9ETzogY29kZXBhZ2UsIHNzdCAqL1xuXHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOlxuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwNCwgd3JpdGVfQklGRjJMQUJFTChSLCBDLCAoY2VsbC52fHxcIlwiKS5zbGljZSgwLDI1NSkpKTtcblx0XHRcdHJldHVybjtcblx0fVxuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDAxLCB3cml0ZV9CSUZGMkNlbGwobnVsbCwgUiwgQykpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmMihiYS8qOkJ1ZkFycmF5Ki8sIHdzLyo6V29ya3NoZWV0Ki8sIGlkeC8qOm51bWJlciovLCBvcHRzLyo6Oiwgd2I6V29ya2Jvb2sqLykge1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSB8fCBcIkExXCIpLCByZWYvKjpzdHJpbmcqLywgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGlmKHJhbmdlLmUuYyA+IDB4RkYgfHwgcmFuZ2UuZS5yID4gMHgzRkZGKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlJhbmdlIFwiICsgKHdzWychcmVmJ10gfHwgXCJBMVwiKSArIFwiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOklWMTYzODRcIik7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweEZGKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1pbihyYW5nZS5lLmMsIDB4M0ZGRik7XG5cdFx0cmVmID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0fVxuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0cmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdGlmKCFjZWxsKSBjb250aW51ZTtcblx0XHRcdC8qIHdyaXRlIGNlbGwgKi9cblx0XHRcdHdyaXRlX3dzX2JpZmYyX2NlbGwoYmEsIGNlbGwsIFIsIEMsIG9wdHMpO1xuXHRcdH1cblx0fVxufVxuXG4vKiBCYXNlZCBvbiB0ZXN0IGZpbGVzICovXG5mdW5jdGlvbiB3cml0ZV9iaWZmMl9idWYod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG8uZGVuc2UgPT0gbnVsbCkgby5kZW5zZSA9IERFTlNFO1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIGlkeCA9IDA7XG5cdGZvcih2YXIgaT0wO2k8d2IuU2hlZXROYW1lcy5sZW5ndGg7KytpKSBpZih3Yi5TaGVldE5hbWVzW2ldID09IG8uc2hlZXQpIGlkeD1pO1xuXHRpZihpZHggPT0gMCAmJiAhIW8uc2hlZXQgJiYgd2IuU2hlZXROYW1lc1swXSAhPSBvLnNoZWV0KSB0aHJvdyBuZXcgRXJyb3IoXCJTaGVldCBub3QgZm91bmQ6IFwiICsgby5zaGVldCk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAoby5iaWZmID09IDQgPyAweDA0MDkgOiAoby5iaWZmID09IDMgPyAweDAyMDkgOiAweDAwMDkpKSwgd3JpdGVfQk9GKHdiLCAweDEwLCBvKSk7XG5cdC8qIC4uLiAqL1xuXHR3cml0ZV93c19iaWZmMihiYSwgd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIGlkeCwgbywgd2IpO1xuXHQvKiAuLi4gKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwQSk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRk9OVFNfYmlmZjgoYmEsIGRhdGEsIG9wdHMpIHtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAzMSAvKiBGb250ICovLCB3cml0ZV9Gb250KHtcblx0XHRzejoxMixcblx0XHRjb2xvcjoge3RoZW1lOjF9LFxuXHRcdG5hbWU6IFwiQXJpYWxcIixcblx0XHRmYW1pbHk6IDIsXG5cdFx0c2NoZW1lOiBcIm1pbm9yXCJcblx0fSwgb3B0cykpO1xufVxuXG5cbmZ1bmN0aW9uIHdyaXRlX0ZNVFNfYmlmZjgoYmEsIE5GLyo6P1NTRlRhYmxlKi8sIG9wdHMpIHtcblx0aWYoIU5GKSByZXR1cm47XG5cdFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWy8qNjMqLzUwLC8qNjZdLFsxNjQsKi8zOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcblx0XHQvKjo6IGlmKCFORikgcmV0dXJuOyAqL1xuXHRcdGZvcih2YXIgaSA9IHJbMF07IGkgPD0gclsxXTsgKytpKSBpZihORltpXSAhPSBudWxsKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwNDFFIC8qIEZvcm1hdCAqLywgd3JpdGVfRm9ybWF0KGksIE5GW2ldLCBvcHRzKSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GRUFUKGJhLCB3cykge1xuXHQvKiBbTVMtWExTXSAyLjQuMTEyICovXG5cdHZhciBvID0gbmV3X2J1ZigxOSk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMHg4NjcpOyBvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDMpOyBvLndyaXRlX3NoaWZ0KDEsIDEpOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwODY3IC8qIEZlYXRIZHIgKi8sIG8pO1xuXHQvKiBbTVMtWExTXSAyLjQuMTExICovXG5cdG8gPSBuZXdfYnVmKDM5KTtcblx0by53cml0ZV9zaGlmdCg0LCAweDg2OCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMyk7IG8ud3JpdGVfc2hpZnQoMSwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMSk7IG8ud3JpdGVfc2hpZnQoNCwgNCk7IG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHdyaXRlX1JlZjhVKHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ118fFwiQTFcIiksIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDQpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwODY4IC8qIEZlYXQgKi8sIG8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DRUxMWEZTX2JpZmY4KGJhLCBvcHRzKSB7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGUwIC8qIFhGICovLCB3cml0ZV9YRih7bnVtRm10SWQ6MCwgc3R5bGU6dHJ1ZX0sIDAsIG9wdHMpKTtcblx0b3B0cy5jZWxsWGZzLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwZTAgLyogWEYgKi8sIHdyaXRlX1hGKGMsIDAsIG9wdHMpKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmY4X2hsaW5rcyhiYS8qOkJ1ZkFycmF5Ki8sIHdzKSB7XG5cdGZvcih2YXIgUj0wOyBSPHdzWychbGlua3MnXS5sZW5ndGg7ICsrUikge1xuXHRcdHZhciBITCA9IHdzWychbGlua3MnXVtSXTtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMWI4IC8qIEhMaW5rICovLCB3cml0ZV9ITGluayhITCkpO1xuXHRcdGlmKEhMWzFdLlRvb2x0aXApIHdyaXRlX2JpZmZfcmVjKGJhLCAweDA4MDAgLyogSExpbmtUb29sdGlwICovLCB3cml0ZV9ITGlua1Rvb2x0aXAoSEwpKTtcblx0fVxuXHRkZWxldGUgd3NbJyFsaW5rcyddO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19jb2xzX2JpZmY4KGJhLCBjb2xzKSB7XG5cdGlmKCFjb2xzKSByZXR1cm47XG5cdHZhciBjbnQgPSAwO1xuXHRjb2xzLmZvckVhY2goZnVuY3Rpb24oY29sLCBpZHgpIHtcblx0XHRpZigrK2NudCA8PSAyNTYgJiYgY29sKSB7XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDdkIC8qIENvbEluZm8gKi8sIHdyaXRlX0NvbEluZm8oY29sX29ial93KGlkeCwgY29sKSwgaWR4KSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjhfY2VsbChiYS8qOkJ1ZkFycmF5Ki8sIGNlbGwvKjpDZWxsKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCBvcHRzKSB7XG5cdHZhciBvcyA9IDE2ICsgZ2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCBjZWxsLCBvcHRzKTtcblx0aWYoY2VsbC52ID09IG51bGwgJiYgIWNlbGwuYmYpIHtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjAxIC8qIEJsYW5rICovLCB3cml0ZV9YTFNDZWxsKFIsIEMsIG9zKSk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmKGNlbGwuYmYpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDYgLyogRm9ybXVsYSAqLywgd3JpdGVfRm9ybXVsYShjZWxsLCBSLCBDLCBvcHRzLCBvcykpO1xuXHRlbHNlIHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdkJzogY2FzZSAnbic6XG5cdFx0XHR2YXIgdiA9IGNlbGwudCA9PSAnZCcgPyBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKSA6IGNlbGwudjtcblx0XHRcdC8qIFRPRE86IGVtaXQgUksgYXMgYXBwcm9wcmlhdGUgKi9cblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDMgLyogTnVtYmVyICovLCB3cml0ZV9OdW1iZXIoUiwgQywgdiwgb3MsIG9wdHMpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2InOiBjYXNlICdlJzpcblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDUgLyogQm9vbEVyciAqLywgd3JpdGVfQm9vbEVycihSLCBDLCBjZWxsLnYsIG9zLCBvcHRzLCBjZWxsLnQpKTtcblx0XHRcdGJyZWFrO1xuXHRcdC8qIFRPRE86IGNvZGVwYWdlLCBzc3QgKi9cblx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzpcblx0XHRcdGlmKG9wdHMuYm9va1NTVCkge1xuXHRcdFx0XHR2YXIgaXNzdCA9IGdldF9zc3RfaWQob3B0cy5TdHJpbmdzLCBjZWxsLnYsIG9wdHMucmV2U3RyaW5ncyk7XG5cdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwZmQgLyogTGFiZWxTc3QgKi8sIHdyaXRlX0xhYmVsU3N0KFIsIEMsIGlzc3QsIG9zLCBvcHRzKSk7XG5cdFx0XHR9IGVsc2Ugd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwNCAvKiBMYWJlbCAqLywgd3JpdGVfTGFiZWwoUiwgQywgKGNlbGwudnx8XCJcIikuc2xpY2UoMCwyNTUpLCBvcywgb3B0cykpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDEgLyogQmxhbmsgKi8sIHdyaXRlX1hMU0NlbGwoUiwgQywgb3MpKTtcblx0fVxufVxuXG4vKiBbTVMtWExTXSAyLjEuNy4yMC41ICovXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmOChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XSwgd3MgPSB3Yi5TaGVldHNbc10gfHwge307XG5cdHZhciBfV0IvKjpXQldCUHJvcHMqLyA9ICgod2J8fHt9KS5Xb3JrYm9va3x8e30vKjphbnkqLyk7XG5cdHZhciBfc2hlZXQvKjpXQldTUHJvcCovID0gKChfV0IuU2hlZXRzfHxbXSlbaWR4XXx8e30vKjphbnkqLyk7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHR2YXIgYjggPSBvcHRzLmJpZmYgPT0gODtcblx0dmFyIHJlZi8qOnN0cmluZyovLCByciA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSB8fCBcIkExXCIpO1xuXHR2YXIgTUFYX1JPV1MgPSBiOCA/IDY1NTM2IDogMTYzODQ7XG5cdGlmKHJhbmdlLmUuYyA+IDB4RkYgfHwgcmFuZ2UuZS5yID49IE1BWF9ST1dTKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlJhbmdlIFwiICsgKHdzWychcmVmJ10gfHwgXCJBMVwiKSArIFwiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOklWMTYzODRcIik7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweEZGKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1pbihyYW5nZS5lLmMsIE1BWF9ST1dTLTEpO1xuXHR9XG5cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDgwOSwgd3JpdGVfQk9GKHdiLCAweDEwLCBvcHRzKSk7XG5cdC8qIFtVbmNhbGNlZF0gSW5kZXggKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwZCAvKiBDYWxjTW9kZSAqLywgd3JpdGV1aW50MTYoMSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBjIC8qIENhbGNDb3VudCAqLywgd3JpdGV1aW50MTYoMTAwKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMGYgLyogQ2FsY1JlZk1vZGUgKi8sIHdyaXRlYm9vbCh0cnVlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMTEgLyogQ2FsY0l0ZXIgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDEwIC8qIENhbGNEZWx0YSAqLywgd3JpdGVfWG51bSgwLjAwMSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDVmIC8qIENhbGNTYXZlUmVjYWxjICovLCB3cml0ZWJvb2wodHJ1ZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDJhIC8qIFByaW50Um93Q29sICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAyYiAvKiBQcmludEdyaWQgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDgyIC8qIEdyaWRTZXQgKi8sIHdyaXRldWludDE2KDEpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA4MCAvKiBHdXRzICovLCB3cml0ZV9HdXRzKFswLDBdKSk7XG5cdC8qIERlZmF1bHRSb3dIZWlnaHQgV3NCb29sIFtTeW5jXSBbTFByXSBbSG9yaXpvbnRhbFBhZ2VCcmVha3NdIFtWZXJ0aWNhbFBhZ2VCcmVha3NdICovXG5cdC8qIEhlYWRlciAoc3RyaW5nKSAqL1xuXHQvKiBGb290ZXIgKHN0cmluZykgKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA4MyAvKiBIQ2VudGVyICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA4NCAvKiBWQ2VudGVyICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0LyogLi4uICovXG5cdGlmKGI4KSB3cml0ZV93c19jb2xzX2JpZmY4KGJhLCB3c1tcIiFjb2xzXCJdKTtcblx0LyogLi4uICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDIwMCwgd3JpdGVfRGltZW5zaW9ucyhyYW5nZSwgb3B0cykpO1xuXHQvKiAuLi4gKi9cblxuXHRpZihiOCkgd3NbJyFsaW5rcyddID0gW107XG5cdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0aWYoIWNlbGwpIGNvbnRpbnVlO1xuXHRcdFx0Lyogd3JpdGUgY2VsbCAqL1xuXHRcdFx0d3JpdGVfd3NfYmlmZjhfY2VsbChiYSwgY2VsbCwgUiwgQywgb3B0cyk7XG5cdFx0XHRpZihiOCAmJiBjZWxsLmwpIHdzWychbGlua3MnXS5wdXNoKFtyZWYsIGNlbGwubF0pO1xuXHRcdH1cblx0fVxuXHR2YXIgY25hbWUvKjpzdHJpbmcqLyA9IF9zaGVldC5Db2RlTmFtZSB8fCBfc2hlZXQubmFtZSB8fCBzO1xuXHQvKiAuLi4gKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyM2UgLyogV2luZG93MiAqLywgd3JpdGVfV2luZG93MigoX1dCLlZpZXdzfHxbXSlbMF0pKTtcblx0LyogLi4uICovXG5cdGlmKGI4ICYmICh3c1snIW1lcmdlcyddfHxbXSkubGVuZ3RoKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGU1IC8qIE1lcmdlQ2VsbHMgKi8sIHdyaXRlX01lcmdlQ2VsbHMod3NbJyFtZXJnZXMnXSkpO1xuXHQvKiBbTFJuZ10gKlFVRVJZVEFCTEUgW1BIT05FVElDSU5GT10gQ09OREZNVFMgKi9cblx0aWYoYjgpIHdyaXRlX3dzX2JpZmY4X2hsaW5rcyhiYSwgd3MpO1xuXHQvKiBbRFZBTF0gKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDFiYSAvKiBDb2RlTmFtZSAqLywgd3JpdGVfWExVbmljb2RlU3RyaW5nKGNuYW1lLCBvcHRzKSk7XG5cdC8qICpXZWJQdWIgKkNlbGxXYXRjaCBbU2hlZXRFeHRdICovXG5cdGlmKGI4KSB3cml0ZV9GRUFUKGJhLCB3cyk7XG5cdC8qICpGRUFUMTEgKlJFQ09SRDEyICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMGEgLyogRU9GICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuXG4vKiBbTVMtWExTXSAyLjEuNy4yMC4zICovXG5mdW5jdGlvbiB3cml0ZV9iaWZmOF9nbG9iYWwod2IvKjpXb3JrYm9vayovLCBidWZzLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0dmFyIEEgPSBidWZfYXJyYXkoKTtcblx0dmFyIF9XQi8qOldCV0JQcm9wcyovID0gKCh3Ynx8e30pLldvcmtib29rfHx7fS8qOmFueSovKTtcblx0dmFyIF9zaGVldHMvKjpBcnJheTxXQldTUHJvcD4qLyA9IChfV0IuU2hlZXRzfHxbXSk7XG5cdHZhciBfd2IvKjpXQlByb3BzKi8gPSAvKjo6KCgqL19XQi5XQlByb3BzfHx7Lyo6OkNvZGVOYW1lOlwiVGhpc1dvcmtib29rXCIqL30vKjo6ICk6YW55KSovO1xuXHR2YXIgYjggPSBvcHRzLmJpZmYgPT0gOCwgYjUgPSBvcHRzLmJpZmYgPT0gNTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwODA5LCB3cml0ZV9CT0Yod2IsIDB4MDUsIG9wdHMpKTtcblx0aWYob3B0cy5ib29rVHlwZSA9PSBcInhsYVwiKSB3cml0ZV9iaWZmX3JlYyhBLCAweDAwODcgLyogQWRkaW4gKi8pO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwZTEgLyogSW50ZXJmYWNlSGRyICovLCBiOCA/IHdyaXRldWludDE2KDB4MDRiMCkgOiBudWxsKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMGMxIC8qIE1tcyAqLywgd3JpdGV6ZXJvZXMoMikpO1xuXHRpZihiNSkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMGJmIC8qIFRvb2xiYXJIZHIgKi8pO1xuXHRpZihiNSkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMGMwIC8qIFRvb2xiYXJFbmQgKi8pO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwZTIgLyogSW50ZXJmYWNlRW5kICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDVjIC8qIFdyaXRlQWNjZXNzICovLCB3cml0ZV9Xcml0ZUFjY2VzcyhcIlNoZWV0SlNcIiwgb3B0cykpO1xuXHQvKiBbRmlsZVNoYXJpbmddICovXG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA0MiAvKiBDb2RlUGFnZSAqLywgd3JpdGV1aW50MTYoYjggPyAweDA0YjAgOiAweDA0RTQpKTtcblx0LyogKjIwNDcgTGVsICovXG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxNjEgLyogRFNGICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxYzAgLyogRXhjZWw5RmlsZSAqLyk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDEzZCAvKiBSUlRhYklkICovLCB3cml0ZV9SUlRhYklkKHdiLlNoZWV0TmFtZXMubGVuZ3RoKSk7XG5cdGlmKGI4ICYmIHdiLnZiYXJhdykgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMGQzIC8qIE9iUHJvaiAqLyk7XG5cdC8qIFtPYk5vTWFjcm9zXSAqL1xuXHRpZihiOCAmJiB3Yi52YmFyYXcpIHtcblx0XHR2YXIgY25hbWUvKjpzdHJpbmcqLyA9IF93Yi5Db2RlTmFtZSB8fCBcIlRoaXNXb3JrYm9va1wiO1xuXHRcdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDFiYSAvKiBDb2RlTmFtZSAqLywgd3JpdGVfWExVbmljb2RlU3RyaW5nKGNuYW1lLCBvcHRzKSk7XG5cdH1cblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDljIC8qIEJ1aWx0SW5Gbkdyb3VwQ291bnQgKi8sIHdyaXRldWludDE2KDB4MTEpKTtcblx0LyogKkZuR3JvdXBOYW1lICpGbkdycDEyICovXG5cdC8qICpMYmwgKi9cblx0LyogW09sZU9iamVjdFNpemVdICovXG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAxOSAvKiBXaW5Qcm90ZWN0ICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDEyIC8qIFByb3RlY3QgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMTMgLyogUGFzc3dvcmQgKi8sIHdyaXRldWludDE2KDApKTtcblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDFhZiAvKiBQcm90NFJldiAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxYmMgLyogUHJvdDRSZXZQYXNzICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAzZCAvKiBXaW5kb3cxICovLCB3cml0ZV9XaW5kb3cxKG9wdHMpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDQwIC8qIEJhY2t1cCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA4ZCAvKiBIaWRlT2JqICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAyMiAvKiBEYXRlMTkwNCAqLywgd3JpdGVib29sKHNhZmUxOTA0KHdiKT09XCJ0cnVlXCIpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDBlIC8qIENhbGNQcmVjaXNpb24gKi8sIHdyaXRlYm9vbCh0cnVlKSk7XG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxYjcgLyogUmVmcmVzaEFsbCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBEQSAvKiBCb29rQm9vbCAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHQvKiAuLi4gKi9cblx0d3JpdGVfRk9OVFNfYmlmZjgoQSwgd2IsIG9wdHMpO1xuXHR3cml0ZV9GTVRTX2JpZmY4KEEsIHdiLlNTRiwgb3B0cyk7XG5cdHdyaXRlX0NFTExYRlNfYmlmZjgoQSwgb3B0cyk7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMTYwIC8qIFVzZXNFTEZzICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0dmFyIGEgPSBBLmVuZCgpO1xuXG5cdHZhciBDID0gYnVmX2FycmF5KCk7XG5cdC8qIE1FVEFEQVRBIFtNVFJTZXR0aW5nc10gW0ZvcmNlRnVsbENhbGN1bGF0aW9uXSAqL1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQywgMHgwMDhDLCB3cml0ZV9Db3VudHJ5KCkpO1xuXHQvKiAqU1VQQk9PSyAqTEJMICpSVEQgW1JlY2FsY0lkXSAqSEZQaWN0dXJlICpNU09EUkFXSU5HR1JPVVAgKi9cblxuXHQvKiBCSUZGODogW1NTVCAqQ29udGludWVdIEV4dFNTVCAqL1xuXHRpZihiOCAmJiBvcHRzLlN0cmluZ3MpIHdyaXRlX2JpZmZfY29udGludWUoQywgMHgwMEZDLCB3cml0ZV9TU1Qob3B0cy5TdHJpbmdzLCBvcHRzKSk7XG5cblx0LyogKldlYlB1YiBbV09wdF0gW0NyRXJyXSBbQm9va0V4dF0gKkZlYXRIZHIgKkRDb25uIFtUSEVNRV0gW0NvbXByZXNzUGljdHVyZXNdIFtDb21wYXQxMl0gW0dVSURUeXBlTGliXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhDLCAweDAwMEEgLyogRU9GICovKTtcblx0dmFyIGMgPSBDLmVuZCgpO1xuXG5cdHZhciBCID0gYnVmX2FycmF5KCk7XG5cdHZhciBibGVuID0gMCwgaiA9IDA7XG5cdGZvcihqID0gMDsgaiA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2opIGJsZW4gKz0gKGI4ID8gMTIgOiAxMSkgKyAoYjggPyAyIDogMSkgKiB3Yi5TaGVldE5hbWVzW2pdLmxlbmd0aDtcblx0dmFyIHN0YXJ0ID0gYS5sZW5ndGggKyBibGVuICsgYy5sZW5ndGg7XG5cdGZvcihqID0gMDsgaiA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2opIHtcblx0XHR2YXIgX3NoZWV0Lyo6V0JXU1Byb3AqLyA9IF9zaGVldHNbal0gfHwgKHt9Lyo6YW55Ki8pO1xuXHRcdHdyaXRlX2JpZmZfcmVjKEIsIDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLywgd3JpdGVfQm91bmRTaGVldDgoe3BvczpzdGFydCwgaHM6X3NoZWV0LkhpZGRlbnx8MCwgZHQ6MCwgbmFtZTp3Yi5TaGVldE5hbWVzW2pdfSwgb3B0cykpO1xuXHRcdHN0YXJ0ICs9IGJ1ZnNbal0ubGVuZ3RoO1xuXHR9XG5cdC8qIDEqQm91bmRTaGVldDggKi9cblx0dmFyIGIgPSBCLmVuZCgpO1xuXHRpZihibGVuICE9IGIubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoXCJCUzggXCIgKyBibGVuICsgXCIgIT0gXCIgKyBiLmxlbmd0aCk7XG5cblx0dmFyIG91dCA9IFtdO1xuXHRpZihhLmxlbmd0aCkgb3V0LnB1c2goYSk7XG5cdGlmKGIubGVuZ3RoKSBvdXQucHVzaChiKTtcblx0aWYoYy5sZW5ndGgpIG91dC5wdXNoKGMpO1xuXHRyZXR1cm4gYmNvbmNhdChvdXQpO1xufVxuXG4vKiBbTVMtWExTXSAyLjEuNy4yMCBXb3JrYm9vayBTdHJlYW0gKi9cbmZ1bmN0aW9uIHdyaXRlX2JpZmY4X2J1Zih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBidWZzID0gW107XG5cblx0aWYod2IgJiYgIXdiLlNTRikge1xuXHRcdHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHR9XG5cdGlmKHdiICYmIHdiLlNTRikge1xuXHRcdG1ha2Vfc3NmKCk7IFNTRl9sb2FkX3RhYmxlKHdiLlNTRik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRvLnJldnNzZiA9IGV2ZXJ0X251bSh3Yi5TU0YpOyBvLnJldnNzZlt3Yi5TU0ZbNjU1MzVdXSA9IDA7XG5cdFx0by5zc2YgPSB3Yi5TU0Y7XG5cdH1cblxuXHRvLlN0cmluZ3MgPSAvKjo6KCgqL1tdLyo6OiA6YW55KTpTU1QpKi87IG8uU3RyaW5ncy5Db3VudCA9IDA7IG8uU3RyaW5ncy5VbmlxdWUgPSAwO1xuXHRmaXhfd3JpdGVfb3B0cyhvKTtcblxuXHRvLmNlbGxYZnMgPSBbXTtcblx0Z2V0X2NlbGxfc3R5bGUoby5jZWxsWGZzLCB7fSwge3JldnNzZjp7XCJHZW5lcmFsXCI6MH19KTtcblxuXHRpZighd2IuUHJvcHMpIHdiLlByb3BzID0ge307XG5cblx0Zm9yKHZhciBpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIGJ1ZnNbYnVmcy5sZW5ndGhdID0gd3JpdGVfd3NfYmlmZjgoaSwgbywgd2IpO1xuXHRidWZzLnVuc2hpZnQod3JpdGVfYmlmZjhfZ2xvYmFsKHdiLCBidWZzLCBvKSk7XG5cdHJldHVybiBiY29uY2F0KGJ1ZnMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9iaWZmX2J1Zih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDw9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgd3MgPSB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV07XG5cdFx0aWYoIXdzIHx8ICF3c1tcIiFyZWZcIl0pIGNvbnRpbnVlO1xuXHRcdHZhciByYW5nZSA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdGlmKHJhbmdlLmUuYyA+IDI1NSkgeyAvLyBub3RlOiAyNTUgaXMgSVZcblx0XHRpZih0eXBlb2YgY29uc29sZSAhPSBcInVuZGVmaW5lZFwiICYmIGNvbnNvbGUuZXJyb3IpIGNvbnNvbGUuZXJyb3IoXCJXb3Jrc2hlZXQgJ1wiICsgd2IuU2hlZXROYW1lc1tpXSArIFwiJyBleHRlbmRzIGJleW9uZCBjb2x1bW4gSVYgKDI1NSkuICBEYXRhIG1heSBiZSBsb3N0LlwiKTtcblx0XHR9XG5cdH1cblxuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHN3aXRjaChvLmJpZmYgfHwgMikge1xuXHRcdGNhc2UgODogY2FzZSA1OiByZXR1cm4gd3JpdGVfYmlmZjhfYnVmKHdiLCBvcHRzKTtcblx0XHRjYXNlIDQ6IGNhc2UgMzogY2FzZSAyOiByZXR1cm4gd3JpdGVfYmlmZjJfYnVmKHdiLCBvcHRzKTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHR5cGUgXCIgKyBvLmJvb2tUeXBlICsgXCIgZm9yIEJJRkZcIik7XG59XG4vKiBub3RlOiBicm93c2VyIERPTSBlbGVtZW50IGNhbm5vdCBzZWUgbXNvLSBzdHlsZSBhdHRycywgbXVzdCBwYXJzZSAqL1xuZnVuY3Rpb24gaHRtbF90b19zaGVldChzdHIvKjpzdHJpbmcqLywgX29wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0c3RyID0gc3RyLnJlcGxhY2UoLzwhLS0uKj8tLT4vZywgXCJcIik7XG5cdHZhciBtdGNoLyo6YW55Ki8gPSBzdHIubWF0Y2goLzx0YWJsZS9pKTtcblx0aWYoIW10Y2gpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPlwiKTtcblx0dmFyIG10Y2gyLyo6YW55Ki8gPSBzdHIubWF0Y2goLzxcXC90YWJsZS9pKTtcblx0dmFyIGkvKjpudW1iZXIqLyA9IG10Y2guaW5kZXgsIGovKjpudW1iZXIqLyA9IG10Y2gyICYmIG10Y2gyLmluZGV4IHx8IHN0ci5sZW5ndGg7XG5cdHZhciByb3dzID0gc3BsaXRfcmVnZXgoc3RyLnNsaWNlKGksIGopLCAvKDo/PHRyW14+XSo+KS9pLCBcIjx0cj5cIik7XG5cdHZhciBSID0gLTEsIEMgPSAwLCBSUyA9IDAsIENTID0gMDtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9IHtzOntyOjEwMDAwMDAwLCBjOjEwMDAwMDAwfSxlOntyOjAsYzowfX07XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHJvdyA9IHJvd3NbaV0udHJpbSgpO1xuXHRcdHZhciBoZCA9IHJvdy5zbGljZSgwLDMpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYoaGQgPT0gXCI8dHJcIikgeyArK1I7IGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IFIpIHsgLS1SOyBicmVhazsgfSBDID0gMDsgY29udGludWU7IH1cblx0XHRpZihoZCAhPSBcIjx0ZFwiICYmIGhkICE9IFwiPHRoXCIpIGNvbnRpbnVlO1xuXHRcdHZhciBjZWxscyA9IHJvdy5zcGxpdCgvPFxcL3RbZGhdPi9pKTtcblx0XHRmb3IoaiA9IDA7IGogPCBjZWxscy5sZW5ndGg7ICsraikge1xuXHRcdFx0dmFyIGNlbGwgPSBjZWxsc1tqXS50cmltKCk7XG5cdFx0XHRpZighY2VsbC5tYXRjaCgvPHRbZGhdL2kpKSBjb250aW51ZTtcblx0XHRcdHZhciBtID0gY2VsbCwgY2MgPSAwO1xuXHRcdFx0LyogVE9ETzogcGFyc2Ugc3R5bGVzIGV0YyAqL1xuXHRcdFx0d2hpbGUobS5jaGFyQXQoMCkgPT0gXCI8XCIgJiYgKGNjID0gbS5pbmRleE9mKFwiPlwiKSkgPiAtMSkgbSA9IG0uc2xpY2UoY2MrMSk7XG5cdFx0XHRmb3IodmFyIG1pZHggPSAwOyBtaWR4IDwgbWVyZ2VzLmxlbmd0aDsgKyttaWR4KSB7XG5cdFx0XHRcdHZhciBfbWVyZ2UvKjpSYW5nZSovID0gbWVyZ2VzW21pZHhdO1xuXHRcdFx0XHRpZihfbWVyZ2Uucy5jID09IEMgJiYgX21lcmdlLnMuciA8IFIgJiYgUiA8PSBfbWVyZ2UuZS5yKSB7IEMgPSBfbWVyZ2UuZS5jICsgMTsgbWlkeCA9IC0xOyB9XG5cdFx0XHR9XG5cdFx0XHR2YXIgdGFnID0gcGFyc2V4bWx0YWcoY2VsbC5zbGljZSgwLCBjZWxsLmluZGV4T2YoXCI+XCIpKSk7XG5cdFx0XHRDUyA9IHRhZy5jb2xzcGFuID8gK3RhZy5jb2xzcGFuIDogMTtcblx0XHRcdGlmKChSUyA9ICt0YWcucm93c3Bhbik+MSB8fCBDUz4xKSBtZXJnZXMucHVzaCh7czp7cjpSLGM6Q30sZTp7cjpSICsgKFJTfHwxKSAtIDEsIGM6QyArIENTIC0gMX19KTtcblx0XHRcdHZhciBfdC8qOnN0cmluZyovID0gdGFnLnQgfHwgdGFnW1wiZGF0YS10XCJdIHx8IFwiXCI7XG5cdFx0XHQvKiBUT0RPOiBnZW5lcmF0ZSBzdHViIGNlbGxzICovXG5cdFx0XHRpZighbS5sZW5ndGgpIHsgQyArPSBDUzsgY29udGludWU7IH1cblx0XHRcdG0gPSBodG1sZGVjb2RlKG0pO1xuXHRcdFx0aWYocmFuZ2Uucy5yID4gUikgcmFuZ2Uucy5yID0gUjsgaWYocmFuZ2UuZS5yIDwgUikgcmFuZ2UuZS5yID0gUjtcblx0XHRcdGlmKHJhbmdlLnMuYyA+IEMpIHJhbmdlLnMuYyA9IEM7IGlmKHJhbmdlLmUuYyA8IEMpIHJhbmdlLmUuYyA9IEM7XG5cdFx0XHRpZighbS5sZW5ndGgpIHsgQyArPSBDUzsgY29udGludWU7IH1cblx0XHRcdHZhciBvLyo6Q2VsbCovID0ge3Q6J3MnLCB2Om19O1xuXHRcdFx0aWYob3B0cy5yYXcgfHwgIW0udHJpbSgpLmxlbmd0aCB8fCBfdCA9PSAncycpe31cblx0XHRcdGVsc2UgaWYobSA9PT0gJ1RSVUUnKSBvID0ge3Q6J2InLCB2OnRydWV9O1xuXHRcdFx0ZWxzZSBpZihtID09PSAnRkFMU0UnKSBvID0ge3Q6J2InLCB2OmZhbHNlfTtcblx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKG0pKSkgbyA9IHt0OiduJywgdjpmdXp6eW51bShtKX07XG5cdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUobSkuZ2V0RGF0ZSgpKSkge1xuXHRcdFx0XHRvID0gKHt0OidkJywgdjpwYXJzZURhdGUobSl9Lyo6YW55Ki8pO1xuXHRcdFx0XHRpZighb3B0cy5jZWxsRGF0ZXMpIG8gPSAoe3Q6J24nLCB2OmRhdGVudW0oby52KX0vKjphbnkqLyk7XG5cdFx0XHRcdG8ueiA9IG9wdHMuZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHR9XG5cdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCF3c1tSXSkgd3NbUl0gPSBbXTsgd3NbUl1bQ10gPSBvOyB9XG5cdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtyOlIsIGM6Q30pXSA9IG87XG5cdFx0XHRDICs9IENTO1xuXHRcdH1cblx0fVxuXHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0aWYobWVyZ2VzLmxlbmd0aCkgd3NbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRyZXR1cm4gd3M7XG59XG5mdW5jdGlvbiBtYWtlX2h0bWxfcm93KHdzLyo6V29ya3NoZWV0Ki8sIHIvKjpSYW5nZSovLCBSLyo6bnVtYmVyKi8sIG8vKjpTaGVldDJIVE1MT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIE0vKjpBcnJheTxSYW5nZT4qLyA9ICh3c1snIW1lcmdlcyddIHx8W10pO1xuXHR2YXIgb28vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdHZhciBSUyA9IDAsIENTID0gMDtcblx0XHRmb3IodmFyIGogPSAwOyBqIDwgTS5sZW5ndGg7ICsraikge1xuXHRcdFx0aWYoTVtqXS5zLnIgPiBSIHx8IE1bal0ucy5jID4gQykgY29udGludWU7XG5cdFx0XHRpZihNW2pdLmUuciA8IFIgfHwgTVtqXS5lLmMgPCBDKSBjb250aW51ZTtcblx0XHRcdGlmKE1bal0ucy5yIDwgUiB8fCBNW2pdLnMuYyA8IEMpIHsgUlMgPSAtMTsgYnJlYWs7IH1cblx0XHRcdFJTID0gTVtqXS5lLnIgLSBNW2pdLnMuciArIDE7IENTID0gTVtqXS5lLmMgLSBNW2pdLnMuYyArIDE7IGJyZWFrO1xuXHRcdH1cblx0XHRpZihSUyA8IDApIGNvbnRpbnVlO1xuXHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0dmFyIGNlbGwgPSBvLmRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tjb29yZF07XG5cdFx0LyogVE9ETzogaHRtbCBlbnRpdGllcyAqL1xuXHRcdHZhciB3ID0gKGNlbGwgJiYgY2VsbC52ICE9IG51bGwpICYmIChjZWxsLmggfHwgZXNjYXBlaHRtbChjZWxsLncgfHwgKGZvcm1hdF9jZWxsKGNlbGwpLCBjZWxsLncpIHx8IFwiXCIpKSB8fCBcIlwiO1xuXHRcdHZhciBzcCA9ICh7fS8qOmFueSovKTtcblx0XHRpZihSUyA+IDEpIHNwLnJvd3NwYW4gPSBSUztcblx0XHRpZihDUyA+IDEpIHNwLmNvbHNwYW4gPSBDUztcblx0XHRpZihvLmVkaXRhYmxlKSB3ID0gJzxzcGFuIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj4nICsgdyArICc8L3NwYW4+Jztcblx0XHRlbHNlIGlmKGNlbGwpIHtcblx0XHRcdHNwW1wiZGF0YS10XCJdID0gY2VsbCAmJiBjZWxsLnQgfHwgJ3onO1xuXHRcdFx0aWYoY2VsbC52ICE9IG51bGwpIHNwW1wiZGF0YS12XCJdID0gY2VsbC52O1xuXHRcdFx0aWYoY2VsbC56ICE9IG51bGwpIHNwW1wiZGF0YS16XCJdID0gY2VsbC56O1xuXHRcdFx0aWYoY2VsbC5sICYmIChjZWxsLmwuVGFyZ2V0IHx8IFwiI1wiKS5jaGFyQXQoMCkgIT0gXCIjXCIpIHcgPSAnPGEgaHJlZj1cIicgKyBjZWxsLmwuVGFyZ2V0ICsnXCI+JyArIHcgKyAnPC9hPic7XG5cdFx0fVxuXHRcdHNwLmlkID0gKG8uaWQgfHwgXCJzanNcIikgKyBcIi1cIiArIGNvb3JkO1xuXHRcdG9vLnB1c2god3JpdGV4dGFnKCd0ZCcsIHcsIHNwKSk7XG5cdH1cblx0dmFyIHByZWFtYmxlID0gXCI8dHI+XCI7XG5cdHJldHVybiBwcmVhbWJsZSArIG9vLmpvaW4oXCJcIikgKyBcIjwvdHI+XCI7XG59XG5cbnZhciBIVE1MX0JFR0lOID0gJzxodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT4nO1xudmFyIEhUTUxfRU5EID0gJzwvYm9keT48L2h0bWw+JztcblxuZnVuY3Rpb24gaHRtbF90b193b3JrYm9vayhzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9vayovIHtcblx0dmFyIG10Y2ggPSBzdHIubWF0Y2goLzx0YWJsZVtcXHNcXFNdKj8+W1xcc1xcU10qPzxcXC90YWJsZT4vZ2kpO1xuXHRpZighbXRjaCB8fCBtdGNoLmxlbmd0aCA9PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEhUTUw6IGNvdWxkIG5vdCBmaW5kIDx0YWJsZT5cIik7XG5cdGlmKG10Y2gubGVuZ3RoID09IDEpIHJldHVybiBzaGVldF90b193b3JrYm9vayhodG1sX3RvX3NoZWV0KG10Y2hbMF0sIG9wdHMpLCBvcHRzKTtcblx0dmFyIHdiID0gYm9va19uZXcoKTtcblx0bXRjaC5mb3JFYWNoKGZ1bmN0aW9uKHMsIGlkeCkgeyBib29rX2FwcGVuZF9zaGVldCh3YiwgaHRtbF90b19zaGVldChzLCBvcHRzKSwgXCJTaGVldFwiICsgKGlkeCsxKSk7IH0pO1xuXHRyZXR1cm4gd2I7XG59XG5cbmZ1bmN0aW9uIG1ha2VfaHRtbF9wcmVhbWJsZSh3cy8qOldvcmtzaGVldCovLCBSLyo6UmFuZ2UqLywgby8qOlNoZWV0MkhUTUxPcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHJldHVybiBvdXQuam9pbihcIlwiKSArICc8dGFibGUnICsgKG8gJiYgby5pZCA/ICcgaWQ9XCInICsgby5pZCArICdcIicgOiBcIlwiKSArICc+Jztcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9faHRtbCh3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkhUTUxPcHRzKi8vKiwgd2I6P1dvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBoZWFkZXIgPSBvLmhlYWRlciAhPSBudWxsID8gby5oZWFkZXIgOiBIVE1MX0JFR0lOO1xuXHR2YXIgZm9vdGVyID0gby5mb290ZXIgIT0gbnVsbCA/IG8uZm9vdGVyIDogSFRNTF9FTkQ7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbaGVhZGVyXTtcblx0dmFyIHIgPSBkZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdG8uZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0b3V0LnB1c2gobWFrZV9odG1sX3ByZWFtYmxlKHdzLCByLCBvKSk7XG5cdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIG91dC5wdXNoKG1ha2VfaHRtbF9yb3cod3MsIHIsIFIsIG8pKTtcblx0b3V0LnB1c2goXCI8L3RhYmxlPlwiICsgZm9vdGVyKTtcblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBzaGVldF9hZGRfZG9tKHdzLyo6V29ya3NoZWV0Ki8sIHRhYmxlLyo6SFRNTEVsZW1lbnQqLywgX29wdHMvKjo/YW55Ki8pLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRpZihERU5TRSAhPSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdHZhciBvcl9SID0gMCwgb3JfQyA9IDA7XG5cdGlmKG9wdHMub3JpZ2luICE9IG51bGwpIHtcblx0XHRpZih0eXBlb2Ygb3B0cy5vcmlnaW4gPT0gJ251bWJlcicpIG9yX1IgPSBvcHRzLm9yaWdpbjtcblx0XHRlbHNlIHtcblx0XHRcdHZhciBfb3JpZ2luLyo6Q2VsbEFkZHJlc3MqLyA9IHR5cGVvZiBvcHRzLm9yaWdpbiA9PSBcInN0cmluZ1wiID8gZGVjb2RlX2NlbGwob3B0cy5vcmlnaW4pIDogb3B0cy5vcmlnaW47XG5cdFx0XHRvcl9SID0gX29yaWdpbi5yOyBvcl9DID0gX29yaWdpbi5jO1xuXHRcdH1cblx0fVxuXG5cdHZhciByb3dzLyo6SFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93RWxlbWVudD4qLyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpO1xuXHR2YXIgc2hlZXRSb3dzID0gTWF0aC5taW4ob3B0cy5zaGVldFJvd3N8fDEwMDAwMDAwLCByb3dzLmxlbmd0aCk7XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSB7czp7cjowLGM6MH0sZTp7cjpvcl9SLGM6b3JfQ319O1xuXHRpZih3c1tcIiFyZWZcIl0pIHtcblx0XHR2YXIgX3JhbmdlLyo6UmFuZ2UqLyA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdHJhbmdlLnMuciA9IE1hdGgubWluKHJhbmdlLnMuciwgX3JhbmdlLnMucik7XG5cdFx0cmFuZ2Uucy5jID0gTWF0aC5taW4ocmFuZ2Uucy5jLCBfcmFuZ2Uucy5jKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1heChyYW5nZS5lLnIsIF9yYW5nZS5lLnIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX3JhbmdlLmUuYyk7XG5cdFx0aWYob3JfUiA9PSAtMSkgcmFuZ2UuZS5yID0gb3JfUiA9IF9yYW5nZS5lLnIgKyAxO1xuXHR9XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdLCBtaWR4ID0gMDtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gd3NbXCIhcm93c1wiXSB8fCAod3NbXCIhcm93c1wiXSA9IFtdKTtcblx0dmFyIF9SID0gMCwgUiA9IDAsIF9DID0gMCwgQyA9IDAsIFJTID0gMCwgQ1MgPSAwO1xuXHRpZighd3NbXCIhY29sc1wiXSkgd3NbJyFjb2xzJ10gPSBbXTtcblx0Zm9yKDsgX1IgPCByb3dzLmxlbmd0aCAmJiBSIDwgc2hlZXRSb3dzOyArK19SKSB7XG5cdFx0dmFyIHJvdy8qOkhUTUxUYWJsZVJvd0VsZW1lbnQqLyA9IHJvd3NbX1JdO1xuXHRcdGlmIChpc19kb21fZWxlbWVudF9oaWRkZW4ocm93KSkge1xuXHRcdFx0aWYgKG9wdHMuZGlzcGxheSkgY29udGludWU7XG5cdFx0XHRyb3dpbmZvW1JdID0ge2hpZGRlbjogdHJ1ZX07XG5cdFx0fVxuXHRcdHZhciBlbHRzLyo6SFRNTENvbGxlY3Rpb248SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+Ki8gPSAocm93LmNoaWxkcmVuLyo6YW55Ki8pO1xuXHRcdGZvcihfQyA9IEMgPSAwOyBfQyA8IGVsdHMubGVuZ3RoOyArK19DKSB7XG5cdFx0XHR2YXIgZWx0Lyo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqLyA9IGVsdHNbX0NdO1xuXHRcdFx0aWYgKG9wdHMuZGlzcGxheSAmJiBpc19kb21fZWxlbWVudF9oaWRkZW4oZWx0KSkgY29udGludWU7XG5cdFx0XHR2YXIgdi8qOj9zdHJpbmcqLyA9IGVsdC5oYXNBdHRyaWJ1dGUoJ2RhdGEtdicpID8gZWx0LmdldEF0dHJpYnV0ZSgnZGF0YS12JykgOiBlbHQuaGFzQXR0cmlidXRlKCd2JykgPyBlbHQuZ2V0QXR0cmlidXRlKCd2JykgOiBodG1sZGVjb2RlKGVsdC5pbm5lckhUTUwpO1xuXHRcdFx0dmFyIHovKjo/c3RyaW5nKi8gPSBlbHQuZ2V0QXR0cmlidXRlKCdkYXRhLXonKSB8fCBlbHQuZ2V0QXR0cmlidXRlKCd6Jyk7XG5cdFx0XHRmb3IobWlkeCA9IDA7IG1pZHggPCBtZXJnZXMubGVuZ3RoOyArK21pZHgpIHtcblx0XHRcdFx0dmFyIG0vKjpSYW5nZSovID0gbWVyZ2VzW21pZHhdO1xuXHRcdFx0XHRpZihtLnMuYyA9PSBDICsgb3JfQyAmJiBtLnMuciA8IFIgKyBvcl9SICYmIFIgKyBvcl9SIDw9IG0uZS5yKSB7IEMgPSBtLmUuYysxIC0gb3JfQzsgbWlkeCA9IC0xOyB9XG5cdFx0XHR9XG5cdFx0XHQvKiBUT0RPOiBmaWd1cmUgb3V0IGhvdyB0byBleHRyYWN0IG5vbnN0YW5kYXJkIG1zby0gc3R5bGUgKi9cblx0XHRcdENTID0gK2VsdC5nZXRBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpIHx8IDE7XG5cdFx0XHRpZiggKChSUyA9ICgrZWx0LmdldEF0dHJpYnV0ZShcInJvd3NwYW5cIikgfHwgMSkpKT4xIHx8IENTPjEpIG1lcmdlcy5wdXNoKHtzOntyOlIgKyBvcl9SLGM6QyArIG9yX0N9LGU6e3I6UiArIG9yX1IgKyAoUlN8fDEpIC0gMSwgYzpDICsgb3JfQyArIChDU3x8MSkgLSAxfX0pO1xuXHRcdFx0dmFyIG8vKjpDZWxsKi8gPSB7dDoncycsIHY6dn07XG5cdFx0XHR2YXIgX3QvKjpzdHJpbmcqLyA9IGVsdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRcIikgfHwgZWx0LmdldEF0dHJpYnV0ZShcInRcIikgfHwgXCJcIjtcblx0XHRcdGlmKHYgIT0gbnVsbCkge1xuXHRcdFx0XHRpZih2Lmxlbmd0aCA9PSAwKSBvLnQgPSBfdCB8fCAneic7XG5cdFx0XHRcdGVsc2UgaWYob3B0cy5yYXcgfHwgdi50cmltKCkubGVuZ3RoID09IDAgfHwgX3QgPT0gXCJzXCIpe31cblx0XHRcdFx0ZWxzZSBpZih2ID09PSAnVFJVRScpIG8gPSB7dDonYicsIHY6dHJ1ZX07XG5cdFx0XHRcdGVsc2UgaWYodiA9PT0gJ0ZBTFNFJykgbyA9IHt0OidiJywgdjpmYWxzZX07XG5cdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKHYpKSkgbyA9IHt0OiduJywgdjpmdXp6eW51bSh2KX07XG5cdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZSh2KS5nZXREYXRlKCkpKSB7XG5cdFx0XHRcdFx0byA9ICh7dDonZCcsIHY6cGFyc2VEYXRlKHYpfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZighb3B0cy5jZWxsRGF0ZXMpIG8gPSAoe3Q6J24nLCB2OmRhdGVudW0oby52KX0vKjphbnkqLyk7XG5cdFx0XHRcdFx0by56ID0gb3B0cy5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYoby56ID09PSB1bmRlZmluZWQgJiYgeiAhPSBudWxsKSBvLnogPSB6O1xuXHRcdFx0LyogVGhlIGZpcnN0IGxpbmsgaXMgdXNlZC4gIExpbmtzIGFyZSBhc3N1bWVkIHRvIGJlIGZ1bGx5IHNwZWNpZmllZC5cblx0XHRcdCAqIFRPRE86IFRoZSByaWdodCB3YXkgdG8gcHJvY2VzcyByZWxhdGl2ZSBsaW5rcyBpcyB0byBtYWtlIGEgbmV3IDxhPiAqL1xuXHRcdFx0dmFyIGwgPSBcIlwiLCBBZWx0cyA9IGVsdC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIkFcIik7XG5cdFx0XHRpZihBZWx0cyAmJiBBZWx0cy5sZW5ndGgpIGZvcih2YXIgQWVsdGkgPSAwOyBBZWx0aSA8IEFlbHRzLmxlbmd0aDsgKytBZWx0aSlcdGlmKEFlbHRzW0FlbHRpXS5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpKSB7XG5cdFx0XHRcdGwgPSBBZWx0c1tBZWx0aV0uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTsgaWYobC5jaGFyQXQoMCkgIT0gXCIjXCIpIGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYobCAmJiBsLmNoYXJBdCgwKSAhPSBcIiNcIikgby5sID0gKHsgVGFyZ2V0OiBsIH0pO1xuXHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighd3NbUiArIG9yX1JdKSB3c1tSICsgb3JfUl0gPSBbXTsgd3NbUiArIG9yX1JdW0MgKyBvcl9DXSA9IG87IH1cblx0XHRcdGVsc2Ugd3NbZW5jb2RlX2NlbGwoe2M6QyArIG9yX0MsIHI6UiArIG9yX1J9KV0gPSBvO1xuXHRcdFx0aWYocmFuZ2UuZS5jIDwgQyArIG9yX0MpIHJhbmdlLmUuYyA9IEMgKyBvcl9DO1xuXHRcdFx0QyArPSBDUztcblx0XHR9XG5cdFx0KytSO1xuXHR9XG5cdGlmKG1lcmdlcy5sZW5ndGgpIHdzWychbWVyZ2VzJ10gPSAod3NbXCIhbWVyZ2VzXCJdIHx8IFtdKS5jb25jYXQobWVyZ2VzKTtcblx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBSIC0gMSArIG9yX1IpO1xuXHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0aWYoUiA+PSBzaGVldFJvd3MpIHdzWychZnVsbHJlZiddID0gZW5jb2RlX3JhbmdlKChyYW5nZS5lLnIgPSByb3dzLmxlbmd0aC1fUitSLTEgKyBvcl9SLHJhbmdlKSk7IC8vIFdlIGNhbiBjb3VudCB0aGUgcmVhbCBudW1iZXIgb2Ygcm93cyB0byBwYXJzZSBidXQgd2UgZG9uJ3QgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Vcblx0cmV0dXJuIHdzO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9kb21fdGFibGUodGFibGUvKjpIVE1MRWxlbWVudCovLCBfb3B0cy8qOj9hbnkqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0cmV0dXJuIHNoZWV0X2FkZF9kb20od3MsIHRhYmxlLCBfb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHRhYmxlX3RvX2Jvb2sodGFibGUvKjpIVE1MRWxlbWVudCovLCBvcHRzLyo6P2FueSovKS8qOldvcmtib29rKi8ge1xuXHRyZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2socGFyc2VfZG9tX3RhYmxlKHRhYmxlLCBvcHRzKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIGlzX2RvbV9lbGVtZW50X2hpZGRlbihlbGVtZW50Lyo6SFRNTEVsZW1lbnQqLykvKjpib29sZWFuKi8ge1xuXHR2YXIgZGlzcGxheS8qOnN0cmluZyovID0gJyc7XG5cdHZhciBnZXRfY29tcHV0ZWRfc3R5bGUvKjo/ZnVuY3Rpb24qLyA9IGdldF9nZXRfY29tcHV0ZWRfc3R5bGVfZnVuY3Rpb24oZWxlbWVudCk7XG5cdGlmKGdldF9jb21wdXRlZF9zdHlsZSkgZGlzcGxheSA9IGdldF9jb21wdXRlZF9zdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXNwbGF5Jyk7XG5cdGlmKCFkaXNwbGF5KSBkaXNwbGF5ID0gZWxlbWVudC5zdHlsZSAmJiBlbGVtZW50LnN0eWxlLmRpc3BsYXk7XG5cdHJldHVybiBkaXNwbGF5ID09PSAnbm9uZSc7XG59XG5cbi8qIGdsb2JhbCBnZXRDb21wdXRlZFN0eWxlICovXG5mdW5jdGlvbiBnZXRfZ2V0X2NvbXB1dGVkX3N0eWxlX2Z1bmN0aW9uKGVsZW1lbnQvKjpIVE1MRWxlbWVudCovKS8qOj9mdW5jdGlvbiovIHtcblx0Ly8gVGhlIHByb3BlciBnZXRDb21wdXRlZFN0eWxlIGltcGxlbWVudGF0aW9uIGlzIHRoZSBvbmUgZGVmaW5lZCBpbiB0aGUgZWxlbWVudCB3aW5kb3dcblx0aWYoZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIHR5cGVvZiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlO1xuXHQvLyBJZiBpdCBpcyBub3QgYXZhaWxhYmxlLCB0cnkgdG8gZ2V0IG9uZSBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlXG5cdGlmKHR5cGVvZiBnZXRDb21wdXRlZFN0eWxlID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZTtcblx0cmV0dXJuIG51bGw7XG59XG4vKiBPcGVuRG9jdW1lbnQgKi9cbmZ1bmN0aW9uIHBhcnNlX3RleHRfcCh0ZXh0Lyo6c3RyaW5nKi8vKjo6LCB0YWcqLykvKjpBcnJheTxhbnk+Ki8ge1xuXHQvKiA2LjEuMiBXaGl0ZSBTcGFjZSBDaGFyYWN0ZXJzICovXG5cdHZhciBmaXhlZCA9IHRleHRcblx0XHQucmVwbGFjZSgvW1xcdFxcclxcbl0vZywgXCIgXCIpLnRyaW0oKS5yZXBsYWNlKC8gKy9nLCBcIiBcIilcblx0XHQucmVwbGFjZSgvPHRleHQ6c1xcLz4vZyxcIiBcIilcblx0XHQucmVwbGFjZSgvPHRleHQ6cyB0ZXh0OmM9XCIoXFxkKylcIlxcLz4vZywgZnVuY3Rpb24oJCQsJDEpIHsgcmV0dXJuIEFycmF5KHBhcnNlSW50KCQxLDEwKSsxKS5qb2luKFwiIFwiKTsgfSlcblx0XHQucmVwbGFjZSgvPHRleHQ6dGFiW14+XSpcXC8+L2csXCJcXHRcIilcblx0XHQucmVwbGFjZSgvPHRleHQ6bGluZS1icmVha1xcLz4vZyxcIlxcblwiKTtcblx0dmFyIHYgPSB1bmVzY2FwZXhtbChmaXhlZC5yZXBsYWNlKC88W14+XSo+L2csXCJcIikpO1xuXG5cdHJldHVybiBbdl07XG59XG5cbnZhciBudW1iZXJfZm9ybWF0c19vZHMgPSB7XG5cdC8qIG9kcyBuYW1lOiBbc2hvcnQgc3NmIGZtdCwgbG9uZyBzc2YgZm10XSAqL1xuXHRkYXk6ICAgICAgICAgICBbXCJkXCIsICAgXCJkZFwiXSxcblx0bW9udGg6ICAgICAgICAgW1wibVwiLCAgIFwibW1cIl0sXG5cdHllYXI6ICAgICAgICAgIFtcInlcIiwgICBcInl5XCJdLFxuXHRob3VyczogICAgICAgICBbXCJoXCIsICAgXCJoaFwiXSxcblx0bWludXRlczogICAgICAgW1wibVwiLCAgIFwibW1cIl0sXG5cdHNlY29uZHM6ICAgICAgIFtcInNcIiwgICBcInNzXCJdLFxuXHRcImFtLXBtXCI6ICAgICAgIFtcIkEvUFwiLCBcIkFNL1BNXCJdLFxuXHRcImRheS1vZi13ZWVrXCI6IFtcImRkZFwiLCBcImRkZGRcIl0sXG5cdGVyYTogICAgICAgICAgIFtcImVcIiwgICBcImVlXCJdLFxuXHQvKiB0aGVyZSBpcyBubyBuYXRpdmUgcmVwcmVzZW50YXRpb24gb2YgTE8gXCJRXCIgZm9ybWF0ICovXG5cdHF1YXJ0ZXI6ICAgICAgIFtcIlxcXFxRbVwiLCBcIm1cXFxcXFxcInRoIHF1YXJ0ZXJcXFwiXCJdXG59O1xuXG5cbmZ1bmN0aW9uIHBhcnNlX2NvbnRlbnRfeG1sKGQvKjpzdHJpbmcqLywgX29wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdFx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0XHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHRcdHZhciBzdHIgPSB4bG1sX25vcm1hbGl6ZShkKTtcblx0XHR2YXIgc3RhdGUvKjpBcnJheTxhbnk+Ki8gPSBbXSwgdG1wO1xuXHRcdHZhciB0YWcvKjo6ID0ge30qLztcblx0XHR2YXIgTkZ0YWcgPSB7bmFtZTpcIlwifSwgTkYgPSBcIlwiLCBwaWR4ID0gMDtcblx0XHR2YXIgc2hlZXRhZy8qOjogPSB7bmFtZTpcIlwiLCAn5ZCN56ewJzpcIlwifSovO1xuXHRcdHZhciByb3d0YWcvKjo6ID0geyfooYzlj7cnOlwiXCJ9Ki87XG5cdFx0dmFyIFNoZWV0cyA9IHt9LCBTaGVldE5hbWVzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0dmFyIHdzID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0XHR2YXIgUm4sIHEvKjo6IDphbnkgPSAoe3Q6XCJcIiwgdjpudWxsLCB6Om51bGwsIHc6XCJcIixjOltdLH06YW55KSovO1xuXHRcdHZhciBjdGFnID0gKHt2YWx1ZTpcIlwifS8qOmFueSovKTtcblx0XHR2YXIgdGV4dHAgPSBcIlwiLCB0ZXh0cGlkeCA9IDAsIHRleHRwdGFnLyo6OiA9IHt9Ki87XG5cdFx0dmFyIHRleHRSID0gW107XG5cdFx0dmFyIFIgPSAtMSwgQyA9IC0xLCByYW5nZSA9IHtzOiB7cjoxMDAwMDAwLGM6MTAwMDAwMDB9LCBlOiB7cjowLCBjOjB9fTtcblx0XHR2YXIgcm93X29sID0gMDtcblx0XHR2YXIgbnVtYmVyX2Zvcm1hdF9tYXAgPSB7fTtcblx0XHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXSwgbXJhbmdlID0ge30sIG1SID0gMCwgbUMgPSAwO1xuXHRcdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdLCByb3dwZWF0ID0gMSwgY29scGVhdCA9IDE7XG5cdFx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHRcdHZhciBXQiA9IHtOYW1lczpbXX07XG5cdFx0dmFyIGF0YWcgPSAoe30vKjphbnkqLyk7XG5cdFx0dmFyIF9SZWYvKjpbc3RyaW5nLCBzdHJpbmddKi8gPSBbXCJcIiwgXCJcIl07XG5cdFx0dmFyIGNvbW1lbnRzLyo6QXJyYXk8Q29tbWVudD4qLyA9IFtdLCBjb21tZW50Lyo6Q29tbWVudCovID0gKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciBjcmVhdG9yID0gXCJcIiwgY3JlYXRvcmlkeCA9IDA7XG5cdFx0dmFyIGlzc3R1YiA9IGZhbHNlLCBpbnRhYmxlID0gZmFsc2U7XG5cdFx0dmFyIGkgPSAwO1xuXHRcdHhsbWxyZWdleC5sYXN0SW5kZXggPSAwO1xuXHRcdHN0ciA9IHN0ci5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L21nLFwiXCIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFxbXSpcXFtbXlxcXV0qXFxdPi9nbSxcIlwiKTtcblx0XHR3aGlsZSgoUm4gPSB4bG1scmVnZXguZXhlYyhzdHIpKSkgc3dpdGNoKChSblszXT1SblszXS5yZXBsYWNlKC9fLiokLyxcIlwiKSkpIHtcblxuXHRcdFx0Y2FzZSAndGFibGUnOiBjYXNlICflt6XkvZzooagnOiAvLyA5LjEuMiA8dGFibGU6dGFibGU+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKSB7XG5cdFx0XHRcdFx0aWYocmFuZ2UuZS5jID49IHJhbmdlLnMuYyAmJiByYW5nZS5lLnIgPj0gcmFuZ2Uucy5yKSB3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdFx0XHRlbHNlIHdzWychcmVmJ10gPSBcIkExOkExXCI7XG5cdFx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgPiAwICYmIG9wdHMuc2hlZXRSb3dzIDw9IHJhbmdlLmUucikge1xuXHRcdFx0XHRcdFx0d3NbJyFmdWxscmVmJ10gPSB3c1snIXJlZiddO1xuXHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0XHRcdFx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKG1lcmdlcy5sZW5ndGgpIHdzWychbWVyZ2VzJ10gPSBtZXJnZXM7XG5cdFx0XHRcdFx0aWYocm93aW5mby5sZW5ndGgpIHdzW1wiIXJvd3NcIl0gPSByb3dpbmZvO1xuXHRcdFx0XHRcdHNoZWV0YWcubmFtZSA9IHNoZWV0YWdbJ+WQjeensCddIHx8IHNoZWV0YWcubmFtZTtcblx0XHRcdFx0XHRpZih0eXBlb2YgSlNPTiAhPT0gJ3VuZGVmaW5lZCcpIEpTT04uc3RyaW5naWZ5KHNoZWV0YWcpO1xuXHRcdFx0XHRcdFNoZWV0TmFtZXMucHVzaChzaGVldGFnLm5hbWUpO1xuXHRcdFx0XHRcdFNoZWV0c1tzaGVldGFnLm5hbWVdID0gd3M7XG5cdFx0XHRcdFx0aW50YWJsZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSB7XG5cdFx0XHRcdFx0c2hlZXRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0UiA9IEMgPSAtMTtcblx0XHRcdFx0XHRyYW5nZS5zLnIgPSByYW5nZS5zLmMgPSAxMDAwMDAwMDsgcmFuZ2UuZS5yID0gcmFuZ2UuZS5jID0gMDtcblx0XHRcdFx0XHR3cyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7IG1lcmdlcyA9IFtdO1xuXHRcdFx0XHRcdHJvd2luZm8gPSBbXTtcblx0XHRcdFx0XHRpbnRhYmxlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAndGFibGUtcm93LWdyb3VwJzogLy8gOS4xLjkgPHRhYmxlOnRhYmxlLXJvdy1ncm91cD5cblx0XHRcdFx0aWYoUm5bMV0gPT09IFwiL1wiKSAtLXJvd19vbDsgZWxzZSArK3Jvd19vbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd0YWJsZS1yb3cnOiBjYXNlICfooYwnOiAvLyA5LjEuMyA8dGFibGU6dGFibGUtcm93PlxuXHRcdFx0XHRpZihSblsxXSA9PT0gJy8nKSB7IFIrPXJvd3BlYXQ7IHJvd3BlYXQgPSAxOyBicmVhazsgfVxuXHRcdFx0XHRyb3d0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRpZihyb3d0YWdbJ+ihjOWPtyddKSBSID0gcm93dGFnWyfooYzlj7cnXSAtIDE7IGVsc2UgaWYoUiA9PSAtMSkgUiA9IDA7XG5cdFx0XHRcdHJvd3BlYXQgPSArcm93dGFnWydudW1iZXItcm93cy1yZXBlYXRlZCddIHx8IDE7XG5cdFx0XHRcdC8qIFRPRE86IHJlbW92ZSBtYWdpYyAqL1xuXHRcdFx0XHRpZihyb3dwZWF0IDwgMTApIGZvcihpID0gMDsgaSA8IHJvd3BlYXQ7ICsraSkgaWYocm93X29sID4gMCkgcm93aW5mb1tSICsgaV0gPSB7bGV2ZWw6IHJvd19vbH07XG5cdFx0XHRcdEMgPSAtMTsgYnJlYWs7XG5cdFx0XHRjYXNlICdjb3ZlcmVkLXRhYmxlLWNlbGwnOiAvLyA5LjEuNSA8dGFibGU6Y292ZXJlZC10YWJsZS1jZWxsPlxuXHRcdFx0XHRpZihSblsxXSAhPT0gJy8nKSArK0M7XG5cdFx0XHRcdGlmKG9wdHMuc2hlZXRTdHVicykge1xuXHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXdzW1JdKSB3c1tSXSA9IFtdOyB3c1tSXVtDXSA9IHt0Oid6J307IH1cblx0XHRcdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtyOlIsYzpDfSldID0ge3Q6J3onfTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0ZXh0cCA9IFwiXCI7IHRleHRSID0gW107XG5cdFx0XHRcdGJyZWFrOyAvKiBzdHViICovXG5cdFx0XHRjYXNlICd0YWJsZS1jZWxsJzogY2FzZSAn5pWw5o2uJzpcblx0XHRcdFx0aWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSA9PT0gJy8nKSB7XG5cdFx0XHRcdFx0KytDO1xuXHRcdFx0XHRcdGN0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdGNvbHBlYXQgPSBwYXJzZUludChjdGFnWydudW1iZXItY29sdW1ucy1yZXBlYXRlZCddfHxcIjFcIiwgMTApO1xuXHRcdFx0XHRcdHEgPSAoe3Q6J3onLCB2Om51bGwvKjo6ICwgejpudWxsLCB3OlwiXCIsYzpbXSovfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihjdGFnLmZvcm11bGEgJiYgb3B0cy5jZWxsRm9ybXVsYSAhPSBmYWxzZSkgcS5mID0gb2RzX3RvX2NzZl9mb3JtdWxhKHVuZXNjYXBleG1sKGN0YWcuZm9ybXVsYSkpO1xuXHRcdFx0XHRcdGlmKChjdGFnWyfmlbDmja7nsbvlnosnXSB8fCBjdGFnWyd2YWx1ZS10eXBlJ10pID09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHRcdHEudCA9IFwic1wiOyBxLnYgPSB1bmVzY2FwZXhtbChjdGFnWydzdHJpbmctdmFsdWUnXSB8fCBcIlwiKTtcblx0XHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdFx0aWYoIXdzW1JdKSB3c1tSXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHR3c1tSXVtDXSA9IHE7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR3c1tlbmNvZGVfY2VsbCh7cjpSLGM6Q30pXSA9IHE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEMrPSBjb2xwZWF0LTE7XG5cdFx0XHRcdH0gZWxzZSBpZihSblsxXSE9PScvJykge1xuXHRcdFx0XHRcdCsrQztcblx0XHRcdFx0XHR0ZXh0cCA9IFwiXCI7IHRleHRwaWR4ID0gMDsgdGV4dFIgPSBbXTtcblx0XHRcdFx0XHRjb2xwZWF0ID0gMTtcblx0XHRcdFx0XHR2YXIgcnB0UiA9IHJvd3BlYXQgPyBSICsgcm93cGVhdCAtIDEgOiBSO1xuXHRcdFx0XHRcdGlmKEMgPiByYW5nZS5lLmMpIHJhbmdlLmUuYyA9IEM7XG5cdFx0XHRcdFx0aWYoQyA8IHJhbmdlLnMuYykgcmFuZ2Uucy5jID0gQztcblx0XHRcdFx0XHRpZihSIDwgcmFuZ2Uucy5yKSByYW5nZS5zLnIgPSBSO1xuXHRcdFx0XHRcdGlmKHJwdFIgPiByYW5nZS5lLnIpIHJhbmdlLmUuciA9IHJwdFI7XG5cdFx0XHRcdFx0Y3RhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0Y29tbWVudHMgPSBbXTsgY29tbWVudCA9ICh7fS8qOmFueSovKTtcblx0XHRcdFx0XHRxID0gKHt0OmN0YWdbJ+aVsOaNruexu+WeiyddIHx8IGN0YWdbJ3ZhbHVlLXR5cGUnXSwgdjpudWxsLyo6OiAsIHo6bnVsbCwgdzpcIlwiLGM6W10qL30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdFx0XHRcdFx0aWYoY3RhZy5mb3JtdWxhKSBjdGFnLmZvcm11bGEgPSB1bmVzY2FwZXhtbChjdGFnLmZvcm11bGEpO1xuXHRcdFx0XHRcdFx0aWYoY3RhZ1snbnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQnXSAmJiBjdGFnWydudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCddKSB7XG5cdFx0XHRcdFx0XHRcdG1SID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdFx0bUMgPSBwYXJzZUludChjdGFnWydudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCddLDEwKSB8fCAwO1xuXHRcdFx0XHRcdFx0XHRtcmFuZ2UgPSB7czoge3I6UixjOkN9LCBlOntyOlIgKyBtUi0xLGM6QyArIG1DLTF9fTtcblx0XHRcdFx0XHRcdFx0cS5GID0gZW5jb2RlX3JhbmdlKG1yYW5nZSk7XG5cdFx0XHRcdFx0XHRcdGFycmF5Zi5wdXNoKFttcmFuZ2UsIHEuRl0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYoY3RhZy5mb3JtdWxhKSBxLmYgPSBvZHNfdG9fY3NmX2Zvcm11bGEoY3RhZy5mb3JtdWxhKTtcblx0XHRcdFx0XHRcdGVsc2UgZm9yKGkgPSAwOyBpIDwgYXJyYXlmLmxlbmd0aDsgKytpKVxuXHRcdFx0XHRcdFx0XHRpZihSID49IGFycmF5ZltpXVswXS5zLnIgJiYgUiA8PSBhcnJheWZbaV1bMF0uZS5yKVxuXHRcdFx0XHRcdFx0XHRcdGlmKEMgPj0gYXJyYXlmW2ldWzBdLnMuYyAmJiBDIDw9IGFycmF5ZltpXVswXS5lLmMpXG5cdFx0XHRcdFx0XHRcdFx0XHRxLkYgPSBhcnJheWZbaV1bMV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKGN0YWdbJ251bWJlci1jb2x1bW5zLXNwYW5uZWQnXSB8fCBjdGFnWydudW1iZXItcm93cy1zcGFubmVkJ10pIHtcblx0XHRcdFx0XHRcdG1SID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLXJvd3Mtc3Bhbm5lZCddLDEwKSB8fCAwO1xuXHRcdFx0XHRcdFx0bUMgPSBwYXJzZUludChjdGFnWydudW1iZXItY29sdW1ucy1zcGFubmVkJ10sMTApIHx8IDA7XG5cdFx0XHRcdFx0XHRtcmFuZ2UgPSB7czoge3I6UixjOkN9LCBlOntyOlIgKyBtUi0xLGM6QyArIG1DLTF9fTtcblx0XHRcdFx0XHRcdG1lcmdlcy5wdXNoKG1yYW5nZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogMTkuNjc1LjIgdGFibGU6bnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQgKi9cblx0XHRcdFx0XHRpZihjdGFnWydudW1iZXItY29sdW1ucy1yZXBlYXRlZCddKSBjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXSwgMTApO1xuXG5cdFx0XHRcdFx0LyogMTkuMzg1IG9mZmljZTp2YWx1ZS10eXBlICovXG5cdFx0XHRcdFx0c3dpdGNoKHEudCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnYm9vbGVhbic6IHEudCA9ICdiJzsgcS52ID0gcGFyc2V4bWxib29sKGN0YWdbJ2Jvb2xlYW4tdmFsdWUnXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnZmxvYXQnOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZy52YWx1ZSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAncGVyY2VudGFnZSc6IHEudCA9ICduJzsgcS52ID0gcGFyc2VGbG9hdChjdGFnLnZhbHVlKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdjdXJyZW5jeSc6IHEudCA9ICduJzsgcS52ID0gcGFyc2VGbG9hdChjdGFnLnZhbHVlKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdkYXRlJzogcS50ID0gJ2QnOyBxLnYgPSBwYXJzZURhdGUoY3RhZ1snZGF0ZS12YWx1ZSddKTtcblx0XHRcdFx0XHRcdFx0aWYoIW9wdHMuY2VsbERhdGVzKSB7IHEudCA9ICduJzsgcS52ID0gZGF0ZW51bShxLnYpOyB9XG5cdFx0XHRcdFx0XHRcdHEueiA9ICdtL2QveXknOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3RpbWUnOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlX2lzb2R1cihjdGFnWyd0aW1lLXZhbHVlJ10pLzg2NDAwO1xuXHRcdFx0XHRcdFx0XHRpZihvcHRzLmNlbGxEYXRlcykgeyBxLnQgPSAnZCc7IHEudiA9IG51bWRhdGUocS52KTsgfVxuXHRcdFx0XHRcdFx0XHRxLnogPSAnSEg6TU06U1MnOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ251bWJlcic6IHEudCA9ICduJzsgcS52ID0gcGFyc2VGbG9hdChjdGFnWyfmlbDmja7mlbDlgLwnXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0aWYocS50ID09PSAnc3RyaW5nJyB8fCBxLnQgPT09ICd0ZXh0JyB8fCAhcS50KSB7XG5cdFx0XHRcdFx0XHRcdFx0cS50ID0gJ3MnO1xuXHRcdFx0XHRcdFx0XHRcdGlmKGN0YWdbJ3N0cmluZy12YWx1ZSddICE9IG51bGwpIHsgdGV4dHAgPSB1bmVzY2FwZXhtbChjdGFnWydzdHJpbmctdmFsdWUnXSk7IHRleHRSID0gW107IH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSAnICsgcS50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aXNzdHViID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYocS50ID09PSAncycpIHtcblx0XHRcdFx0XHRcdHEudiA9IHRleHRwIHx8ICcnO1xuXHRcdFx0XHRcdFx0aWYodGV4dFIubGVuZ3RoKSBxLlIgPSB0ZXh0Ujtcblx0XHRcdFx0XHRcdGlzc3R1YiA9IHRleHRwaWR4ID09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKGF0YWcuVGFyZ2V0KSBxLmwgPSBhdGFnO1xuXHRcdFx0XHRcdGlmKGNvbW1lbnRzLmxlbmd0aCA+IDApIHsgcS5jID0gY29tbWVudHM7IGNvbW1lbnRzID0gW107IH1cblx0XHRcdFx0XHRpZih0ZXh0cCAmJiBvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgcS53ID0gdGV4dHA7XG5cdFx0XHRcdFx0aWYoaXNzdHViKSB7IHEudCA9IFwielwiOyBkZWxldGUgcS52OyB9XG5cdFx0XHRcdFx0aWYoIWlzc3R1YiB8fCBvcHRzLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHRcdGlmKCEob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gUikpIHtcblx0XHRcdFx0XHRcdFx0Zm9yKHZhciBycHQgPSAwOyBycHQgPCByb3dwZWF0OyArK3JwdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHBlYXQgPSBwYXJzZUludChjdGFnWydudW1iZXItY29sdW1ucy1yZXBlYXRlZCddfHxcIjFcIiwgMTApO1xuXHRcdFx0XHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmKCF3c1tSICsgcnB0XSkgd3NbUiArIHJwdF0gPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdHdzW1IgKyBycHRdW0NdID0gcnB0ID09IDAgPyBxIDogZHVwKHEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0d2hpbGUoLS1jb2xwZWF0ID4gMCkgd3NbUiArIHJwdF1bQyArIGNvbHBlYXRdID0gZHVwKHEpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR3c1tlbmNvZGVfY2VsbCh7cjpSICsgcnB0LGM6Q30pXSA9IHE7XG5cdFx0XHRcdFx0XHRcdFx0XHR3aGlsZSgtLWNvbHBlYXQgPiAwKSB3c1tlbmNvZGVfY2VsbCh7cjpSICsgcnB0LGM6QyArIGNvbHBlYXR9KV0gPSBkdXAocSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmKHJhbmdlLmUuYyA8PSBDKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbHBlYXQgPSBwYXJzZUludChjdGFnWydudW1iZXItY29sdW1ucy1yZXBlYXRlZCddfHxcIjFcIiwgMTApO1xuXHRcdFx0XHRcdEMgKz0gY29scGVhdC0xOyBjb2xwZWF0ID0gMDtcblx0XHRcdFx0XHRxID0gey8qOjogdDpcIlwiLCB2Om51bGwsIHo6bnVsbCwgdzpcIlwiLGM6W10qL307XG5cdFx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGF0YWcgPSAoe30vKjphbnkqLyk7XG5cdFx0XHRcdGJyZWFrOyAvLyA5LjEuNCA8dGFibGU6dGFibGUtY2VsbD5cblxuXHRcdFx0LyogcHVyZSBzdGF0ZSAqL1xuXHRcdFx0Y2FzZSAnZG9jdW1lbnQnOiAvLyBUT0RPOiA8b2ZmaWNlOmRvY3VtZW50PiBpcyB0aGUgcm9vdCBmb3IgRk9EU1xuXHRcdFx0Y2FzZSAnZG9jdW1lbnQtY29udGVudCc6IGNhc2UgJ+eUteWtkOihqOagvOaWh+ahoyc6IC8vIDMuMS4zLjIgPG9mZmljZTpkb2N1bWVudC1jb250ZW50PlxuXHRcdFx0Y2FzZSAnc3ByZWFkc2hlZXQnOiBjYXNlICfkuLvkvZMnOiAvLyAzLjcgPG9mZmljZTpzcHJlYWRzaGVldD5cblx0XHRcdGNhc2UgJ3NjcmlwdHMnOiAvLyAzLjEyIDxvZmZpY2U6c2NyaXB0cz5cblx0XHRcdGNhc2UgJ3N0eWxlcyc6IC8vIFRPRE8gPG9mZmljZTpzdHlsZXM+XG5cdFx0XHRjYXNlICdmb250LWZhY2UtZGVjbHMnOiAvLyAzLjE0IDxvZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuXHRcdFx0Y2FzZSAnbWFzdGVyLXN0eWxlcyc6IC8vIDMuMTUuNCA8b2ZmaWNlOm1hc3Rlci1zdHlsZXM+IC0tIHJlbGV2YW50IGZvciBGT0RTXG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBcIkJhZCBzdGF0ZTogXCIrdG1wO31cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdhbm5vdGF0aW9uJzogLy8gMTQuMSA8b2ZmaWNlOmFubm90YXRpb24+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBcIkJhZCBzdGF0ZTogXCIrdG1wO1xuXHRcdFx0XHRcdGNvbW1lbnQudCA9IHRleHRwO1xuXHRcdFx0XHRcdGlmKHRleHRSLmxlbmd0aCkgLyo6OigqL2NvbW1lbnQvKjo6IDphbnkpKi8uUiA9IHRleHRSO1xuXHRcdFx0XHRcdGNvbW1lbnQuYSA9IGNyZWF0b3I7XG5cdFx0XHRcdFx0Y29tbWVudHMucHVzaChjb21tZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykge3N0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO31cblx0XHRcdFx0Y3JlYXRvciA9IFwiXCI7IGNyZWF0b3JpZHggPSAwO1xuXHRcdFx0XHR0ZXh0cCA9IFwiXCI7IHRleHRwaWR4ID0gMDsgdGV4dFIgPSBbXTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ2NyZWF0b3InOiAvLyA0LjMuMi43IDxkYzpjcmVhdG9yPlxuXHRcdFx0XHRpZihSblsxXT09PScvJykgeyBjcmVhdG9yID0gc3RyLnNsaWNlKGNyZWF0b3JpZHgsUm4uaW5kZXgpOyB9XG5cdFx0XHRcdGVsc2UgY3JlYXRvcmlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogaWdub3JlIHN0YXRlICovXG5cdFx0XHRjYXNlICdtZXRhJzogY2FzZSAn5YWD5pWw5o2uJzogLy8gVE9ETzogPG9mZmljZTptZXRhPiA8dW9mOuWFg+aVsOaNrj4gRk9EUy9VT0Zcblx0XHRcdGNhc2UgJ3NldHRpbmdzJzogLy8gVE9ETzogPG9mZmljZTpzZXR0aW5ncz5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLXNldCc6IC8vIFRPRE86IDxvZmZpY2U6Y29uZmlnLWl0ZW0tc2V0PlxuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0tbWFwLWluZGV4ZWQnOiAvLyBUT0RPOiA8b2ZmaWNlOmNvbmZpZy1pdGVtLW1hcC1pbmRleGVkPlxuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0tbWFwLWVudHJ5JzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1tYXAtZW50cnk+XG5cdFx0XHRjYXNlICdjb25maWctaXRlbS1tYXAtbmFtZWQnOiAvLyBUT0RPOiA8b2ZmaWNlOmNvbmZpZy1pdGVtLW1hcC1lbnRyeT5cblx0XHRcdGNhc2UgJ3NoYXBlcyc6IC8vIDkuMi44IDx0YWJsZTpzaGFwZXM+XG5cdFx0XHRjYXNlICdmcmFtZSc6IC8vIDEwLjQuMiA8ZHJhdzpmcmFtZT5cblx0XHRcdGNhc2UgJ3RleHQtYm94JzogLy8gMTAuNC4zIDxkcmF3OnRleHQtYm94PlxuXHRcdFx0Y2FzZSAnaW1hZ2UnOiAvLyAxMC40LjQgPGRyYXc6aW1hZ2U+XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXRhYmxlcyc6IC8vIDkuNi4yIDx0YWJsZTpkYXRhLXBpbG90LXRhYmxlcz5cblx0XHRcdGNhc2UgJ2xpc3Qtc3R5bGUnOiAvLyAxNi4zMCA8dGV4dDpsaXN0LXN0eWxlPlxuXHRcdFx0Y2FzZSAnZm9ybSc6IC8vIDEzLjEzIDxmb3JtOmZvcm0+XG5cdFx0XHRjYXNlICdkZGUtbGlua3MnOiAvLyA5LjggPHRhYmxlOmRkZS1saW5rcz5cblx0XHRcdGNhc2UgJ2V2ZW50LWxpc3RlbmVycyc6IC8vIFRPRE9cblx0XHRcdGNhc2UgJ2NoYXJ0JzogLy8gVE9ET1xuXHRcdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDt9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0cGlkeCA9IDA7IHRleHRSID0gW107XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdzY2llbnRpZmljLW51bWJlcic6IC8vIFRPRE86IDxudW1iZXI6c2NpZW50aWZpYy1udW1iZXI+XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnY3VycmVuY3ktc3ltYm9sJzogLy8gVE9ETzogPG51bWJlcjpjdXJyZW5jeS1zeW1ib2w+XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnY3VycmVuY3ktc3R5bGUnOiAvLyBUT0RPOiA8bnVtYmVyOmN1cnJlbmN5LXN0eWxlPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ251bWJlci1zdHlsZSc6IC8vIDE2LjI3LjIgPG51bWJlcjpudW1iZXItc3R5bGU+XG5cdFx0XHRjYXNlICdwZXJjZW50YWdlLXN0eWxlJzogLy8gMTYuMjcuOSA8bnVtYmVyOnBlcmNlbnRhZ2Utc3R5bGU+XG5cdFx0XHRjYXNlICdkYXRlLXN0eWxlJzogLy8gMTYuMjcuMTAgPG51bWJlcjpkYXRlLXN0eWxlPlxuXHRcdFx0Y2FzZSAndGltZS1zdHlsZSc6IC8vIDE2LjI3LjE4IDxudW1iZXI6dGltZS1zdHlsZT5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRcdG51bWJlcl9mb3JtYXRfbWFwW05GdGFnLm5hbWVdID0gTkY7XG5cdFx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDtcblx0XHRcdFx0fSBlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykge1xuXHRcdFx0XHRcdE5GID0gXCJcIjtcblx0XHRcdFx0XHRORnRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAnc2NyaXB0JzogYnJlYWs7IC8vIDMuMTMgPG9mZmljZTpzY3JpcHQ+XG5cdFx0XHRjYXNlICdsaWJyYXJpZXMnOiBicmVhazsgLy8gVE9ETzogPG9vbzpsaWJyYXJpZXM+XG5cdFx0XHRjYXNlICdhdXRvbWF0aWMtc3R5bGVzJzogYnJlYWs7IC8vIDMuMTUuMyA8b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG5cblx0XHRcdGNhc2UgJ2RlZmF1bHQtc3R5bGUnOiAvLyBUT0RPOiA8c3R5bGU6ZGVmYXVsdC1zdHlsZT5cblx0XHRcdGNhc2UgJ3BhZ2UtbGF5b3V0JzogYnJlYWs7IC8vIFRPRE86IDxzdHlsZTpwYWdlLWxheW91dD5cblx0XHRcdGNhc2UgJ3N0eWxlJzogLy8gMTYuMiA8c3R5bGU6c3R5bGU+XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFwJzogYnJlYWs7IC8vIDE2LjMgPHN0eWxlOm1hcD5cblx0XHRcdGNhc2UgJ2ZvbnQtZmFjZSc6IGJyZWFrOyAvLyAxNi4yMSA8c3R5bGU6Zm9udC1mYWNlPlxuXG5cdFx0XHRjYXNlICdwYXJhZ3JhcGgtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy42IDxzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ3RhYmxlLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTUgPHN0eWxlOnRhYmxlLXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICd0YWJsZS1jb2x1bW4tcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4xNiA8c3R5bGU6dGFibGUtY29sdW1uLXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICd0YWJsZS1yb3ctcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4xNyA8c3R5bGU6dGFibGUtcm93LXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICd0YWJsZS1jZWxsLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTggPHN0eWxlOnRhYmxlLWNlbGwtcHJvcGVydGllcz5cblxuXHRcdFx0Y2FzZSAnbnVtYmVyJzogLy8gMTYuMjcuMyA8bnVtYmVyOm51bWJlcj5cblx0XHRcdFx0c3dpdGNoKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ2RhdGUtc3R5bGUnOlxuXHRcdFx0XHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRcdE5GICs9IG51bWJlcl9mb3JtYXRzX29kc1tSblszXV1bdGFnLnN0eWxlPT09J2xvbmcnPzE6MF07IGJyZWFrO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdmcmFjdGlvbic6IGJyZWFrOyAvLyBUT0RPIDE2LjI3LjYgPG51bWJlcjpmcmFjdGlvbj5cblxuXHRcdFx0Y2FzZSAnZGF5JzogLy8gMTYuMjcuMTEgPG51bWJlcjpkYXk+XG5cdFx0XHRjYXNlICdtb250aCc6IC8vIDE2LjI3LjEyIDxudW1iZXI6bW9udGg+XG5cdFx0XHRjYXNlICd5ZWFyJzogLy8gMTYuMjcuMTMgPG51bWJlcjp5ZWFyPlxuXHRcdFx0Y2FzZSAnZXJhJzogLy8gMTYuMjcuMTQgPG51bWJlcjplcmE+XG5cdFx0XHRjYXNlICdkYXktb2Ytd2Vlayc6IC8vIDE2LjI3LjE1IDxudW1iZXI6ZGF5LW9mLXdlZWs+XG5cdFx0XHRjYXNlICd3ZWVrLW9mLXllYXInOiAvLyAxNi4yNy4xNiA8bnVtYmVyOndlZWstb2YteWVhcj5cblx0XHRcdGNhc2UgJ3F1YXJ0ZXInOiAvLyAxNi4yNy4xNyA8bnVtYmVyOnF1YXJ0ZXI+XG5cdFx0XHRjYXNlICdob3Vycyc6IC8vIDE2LjI3LjE5IDxudW1iZXI6aG91cnM+XG5cdFx0XHRjYXNlICdtaW51dGVzJzogLy8gMTYuMjcuMjAgPG51bWJlcjptaW51dGVzPlxuXHRcdFx0Y2FzZSAnc2Vjb25kcyc6IC8vIDE2LjI3LjIxIDxudW1iZXI6c2Vjb25kcz5cblx0XHRcdGNhc2UgJ2FtLXBtJzogLy8gMTYuMjcuMjIgPG51bWJlcjphbS1wbT5cblx0XHRcdFx0c3dpdGNoKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ2RhdGUtc3R5bGUnOlxuXHRcdFx0XHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRcdE5GICs9IG51bWJlcl9mb3JtYXRzX29kc1tSblszXV1bdGFnLnN0eWxlPT09J2xvbmcnPzE6MF07IGJyZWFrO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdib29sZWFuLXN0eWxlJzogYnJlYWs7IC8vIDE2LjI3LjIzIDxudW1iZXI6Ym9vbGVhbi1zdHlsZT5cblx0XHRcdGNhc2UgJ2Jvb2xlYW4nOiBicmVhazsgLy8gMTYuMjcuMjQgPG51bWJlcjpib29sZWFuPlxuXHRcdFx0Y2FzZSAndGV4dC1zdHlsZSc6IGJyZWFrOyAvLyAxNi4yNy4yNSA8bnVtYmVyOnRleHQtc3R5bGU+XG5cdFx0XHRjYXNlICd0ZXh0JzogLy8gMTYuMjcuMjYgPG51bWJlcjp0ZXh0PlxuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgc3dpdGNoKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSkge1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlci1zdHlsZSc6XG5cdFx0XHRcdFx0Y2FzZSAnZGF0ZS1zdHlsZSc6XG5cdFx0XHRcdFx0Y2FzZSAndGltZS1zdHlsZSc6XG5cdFx0XHRcdFx0XHRORiArPSBzdHIuc2xpY2UocGlkeCwgUm4uaW5kZXgpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICduYW1lZC1yYW5nZSc6IC8vIDkuNC4xMiA8dGFibGU6bmFtZWQtcmFuZ2U+XG5cdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdF9SZWYgPSBvZHNfdG9fY3NmXzNEKHRhZ1snY2VsbC1yYW5nZS1hZGRyZXNzJ10pO1xuXHRcdFx0XHR2YXIgbnJhbmdlID0gKHtOYW1lOnRhZy5uYW1lLCBSZWY6X1JlZlswXSArICchJyArIF9SZWZbMV19Lyo6YW55Ki8pO1xuXHRcdFx0XHRpZihpbnRhYmxlKSBucmFuZ2UuU2hlZXQgPSBTaGVldE5hbWVzLmxlbmd0aDtcblx0XHRcdFx0V0IuTmFtZXMucHVzaChucmFuZ2UpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAndGV4dC1jb250ZW50JzogYnJlYWs7IC8vIDE2LjI3LjI3IDxudW1iZXI6dGV4dC1jb250ZW50PlxuXHRcdFx0Y2FzZSAndGV4dC1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE2LjI3LjI3IDxzdHlsZTp0ZXh0LXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICdlbWJlZGRlZC10ZXh0JzogYnJlYWs7IC8vIDE2LjI3LjQgPG51bWJlcjplbWJlZGRlZC10ZXh0PlxuXG5cdFx0XHRjYXNlICdib2R5JzogY2FzZSAn55S15a2Q6KGo5qC8JzogYnJlYWs7IC8vIDMuMyAxNi45LjYgMTkuNzI2LjNcblxuXHRcdFx0Y2FzZSAnZm9ybXMnOiBicmVhazsgLy8gMTIuMjUuMiAxMy4yXG5cdFx0XHRjYXNlICd0YWJsZS1jb2x1bW4nOiBicmVhazsgLy8gOS4xLjYgPHRhYmxlOnRhYmxlLWNvbHVtbj5cblx0XHRcdGNhc2UgJ3RhYmxlLWhlYWRlci1yb3dzJzogYnJlYWs7IC8vIDkuMS43IDx0YWJsZTp0YWJsZS1oZWFkZXItcm93cz5cblx0XHRcdGNhc2UgJ3RhYmxlLXJvd3MnOiBicmVhazsgLy8gOS4xLjEyIDx0YWJsZTp0YWJsZS1yb3dzPlxuXHRcdFx0LyogVE9ETzogb3V0bGluZSBsZXZlbHMgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLWNvbHVtbi1ncm91cCc6IGJyZWFrOyAvLyA5LjEuMTAgPHRhYmxlOnRhYmxlLWNvbHVtbi1ncm91cD5cblx0XHRcdGNhc2UgJ3RhYmxlLWhlYWRlci1jb2x1bW5zJzogYnJlYWs7IC8vIDkuMS4xMSA8dGFibGU6dGFibGUtaGVhZGVyLWNvbHVtbnM+XG5cdFx0XHRjYXNlICd0YWJsZS1jb2x1bW5zJzogYnJlYWs7IC8vIDkuMS4xMiA8dGFibGU6dGFibGUtY29sdW1ucz5cblxuXHRcdFx0Y2FzZSAnbnVsbC1kYXRlJzogYnJlYWs7IC8vIDkuNC4yIDx0YWJsZTpudWxsLWRhdGU+IFRPRE86IGRhdGUxOTA0XG5cblx0XHRcdGNhc2UgJ2dyYXBoaWMtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4yMSA8c3R5bGU6Z3JhcGhpYy1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAnY2FsY3VsYXRpb24tc2V0dGluZ3MnOiBicmVhazsgLy8gOS40LjEgPHRhYmxlOmNhbGN1bGF0aW9uLXNldHRpbmdzPlxuXHRcdFx0Y2FzZSAnbmFtZWQtZXhwcmVzc2lvbnMnOiBicmVhazsgLy8gOS40LjExIDx0YWJsZTpuYW1lZC1leHByZXNzaW9ucz5cblx0XHRcdGNhc2UgJ2xhYmVsLXJhbmdlJzogYnJlYWs7IC8vIDkuNC45IDx0YWJsZTpsYWJlbC1yYW5nZT5cblx0XHRcdGNhc2UgJ2xhYmVsLXJhbmdlcyc6IGJyZWFrOyAvLyA5LjQuMTAgPHRhYmxlOmxhYmVsLXJhbmdlcz5cblx0XHRcdGNhc2UgJ25hbWVkLWV4cHJlc3Npb24nOiBicmVhazsgLy8gOS40LjEzIDx0YWJsZTpuYW1lZC1leHByZXNzaW9uPlxuXHRcdFx0Y2FzZSAnc29ydCc6IGJyZWFrOyAvLyA5LjQuMTkgPHRhYmxlOnNvcnQ+XG5cdFx0XHRjYXNlICdzb3J0LWJ5JzogYnJlYWs7IC8vIDkuNC4yMCA8dGFibGU6c29ydC1ieT5cblx0XHRcdGNhc2UgJ3NvcnQtZ3JvdXBzJzogYnJlYWs7IC8vIDkuNC4yMiA8dGFibGU6c29ydC1ncm91cHM+XG5cblx0XHRcdGNhc2UgJ3RhYic6IGJyZWFrOyAvLyA2LjEuNCA8dGV4dDp0YWI+XG5cdFx0XHRjYXNlICdsaW5lLWJyZWFrJzogYnJlYWs7IC8vIDYuMS41IDx0ZXh0OmxpbmUtYnJlYWs+XG5cdFx0XHRjYXNlICdzcGFuJzogYnJlYWs7IC8vIDYuMS43IDx0ZXh0OnNwYW4+XG5cdFx0XHRjYXNlICdwJzogY2FzZSAn5paH5pys5LiyJzogLy8gNS4xLjMgPHRleHQ6cD5cblx0XHRcdFx0aWYoWydtYXN0ZXItc3R5bGVzJ10uaW5kZXhPZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pID4gLTEpIGJyZWFrO1xuXHRcdFx0XHRpZihSblsxXT09PScvJyAmJiAoIWN0YWcgfHwgIWN0YWdbJ3N0cmluZy12YWx1ZSddKSkge1xuXHRcdFx0XHRcdHZhciBwdHAgPSBwYXJzZV90ZXh0X3Aoc3RyLnNsaWNlKHRleHRwaWR4LFJuLmluZGV4KSwgdGV4dHB0YWcpO1xuXHRcdFx0XHRcdHRleHRwID0gKHRleHRwLmxlbmd0aCA+IDAgPyB0ZXh0cCArIFwiXFxuXCIgOiBcIlwiKSArIHB0cFswXTtcblx0XHRcdFx0fSBlbHNlIHsgdGV4dHB0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpOyB0ZXh0cGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoOyB9XG5cdFx0XHRcdGJyZWFrOyAvLyA8dGV4dDpwPlxuXHRcdFx0Y2FzZSAncyc6IGJyZWFrOyAvLyA8dGV4dDpzPlxuXG5cdFx0XHRjYXNlICdkYXRhYmFzZS1yYW5nZSc6IC8vIDkuNC4xNSA8dGFibGU6ZGF0YWJhc2UtcmFuZ2U+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKSBicmVhaztcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRfUmVmID0gb2RzX3RvX2NzZl8zRChwYXJzZXhtbHRhZyhSblswXSlbJ3RhcmdldC1yYW5nZS1hZGRyZXNzJ10pO1xuXHRcdFx0XHRcdFNoZWV0c1tfUmVmWzBdXVsnIWF1dG9maWx0ZXInXSA9IHsgcmVmOl9SZWZbMV0gfTtcblx0XHRcdFx0fSBjYXRjaChlKSB7LyogZW1wdHkgKi99XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdkYXRlJzogYnJlYWs7IC8vIDwqOmRhdGU+XG5cblx0XHRcdGNhc2UgJ29iamVjdCc6IGJyZWFrOyAvLyAxMC40LjYuMiA8ZHJhdzpvYmplY3Q+XG5cdFx0XHRjYXNlICd0aXRsZSc6IGNhc2UgJ+agh+mimCc6IGJyZWFrOyAvLyA8Kjp0aXRsZT4gT1IgPHVvZjrmoIfpopg+XG5cdFx0XHRjYXNlICdkZXNjJzogYnJlYWs7IC8vIDwqOmRlc2M+XG5cdFx0XHRjYXNlICdiaW5hcnktZGF0YSc6IGJyZWFrOyAvLyAxMC40LjUgVE9ETzogYjY0IGJsb2JcblxuXHRcdFx0LyogOS4yIEFkdmFuY2VkIFRhYmxlcyAqL1xuXHRcdFx0Y2FzZSAndGFibGUtc291cmNlJzogYnJlYWs7IC8vIDkuMi42XG5cdFx0XHRjYXNlICdzY2VuYXJpbyc6IGJyZWFrOyAvLyA5LjIuNlxuXG5cdFx0XHRjYXNlICdpdGVyYXRpb24nOiBicmVhazsgLy8gOS40LjMgPHRhYmxlOml0ZXJhdGlvbj5cblx0XHRcdGNhc2UgJ2NvbnRlbnQtdmFsaWRhdGlvbnMnOiBicmVhazsgLy8gOS40LjQgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnY29udGVudC12YWxpZGF0aW9uJzogYnJlYWs7IC8vIDkuNC41IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2hlbHAtbWVzc2FnZSc6IGJyZWFrOyAvLyA5LjQuNiA8dGFibGU6XG5cdFx0XHRjYXNlICdlcnJvci1tZXNzYWdlJzogYnJlYWs7IC8vIDkuNC43IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2RhdGFiYXNlLXJhbmdlcyc6IGJyZWFrOyAvLyA5LjQuMTQgPHRhYmxlOmRhdGFiYXNlLXJhbmdlcz5cblx0XHRcdGNhc2UgJ2ZpbHRlcic6IGJyZWFrOyAvLyA5LjUuMiA8dGFibGU6ZmlsdGVyPlxuXHRcdFx0Y2FzZSAnZmlsdGVyLWFuZCc6IGJyZWFrOyAvLyA5LjUuMyA8dGFibGU6ZmlsdGVyLWFuZD5cblx0XHRcdGNhc2UgJ2ZpbHRlci1vcic6IGJyZWFrOyAvLyA5LjUuNCA8dGFibGU6ZmlsdGVyLW9yPlxuXHRcdFx0Y2FzZSAnZmlsdGVyLWNvbmRpdGlvbic6IGJyZWFrOyAvLyA5LjUuNSA8dGFibGU6ZmlsdGVyLWNvbmRpdGlvbj5cblxuXHRcdFx0Y2FzZSAnbGlzdC1sZXZlbC1zdHlsZS1idWxsZXQnOiBicmVhazsgLy8gMTYuMzEgPHRleHQ6XG5cdFx0XHRjYXNlICdsaXN0LWxldmVsLXN0eWxlLW51bWJlcic6IGJyZWFrOyAvLyAxNi4zMiA8dGV4dDpcblx0XHRcdGNhc2UgJ2xpc3QtbGV2ZWwtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4xOSA8c3R5bGU6XG5cblx0XHRcdC8qIDcuMyBEb2N1bWVudCBGaWVsZHMgKi9cblx0XHRcdGNhc2UgJ3NlbmRlci1maXJzdG5hbWUnOiAvLyA3LjMuNi4yXG5cdFx0XHRjYXNlICdzZW5kZXItbGFzdG5hbWUnOiAvLyA3LjMuNi4zXG5cdFx0XHRjYXNlICdzZW5kZXItaW5pdGlhbHMnOiAvLyA3LjMuNi40XG5cdFx0XHRjYXNlICdzZW5kZXItdGl0bGUnOiAvLyA3LjMuNi41XG5cdFx0XHRjYXNlICdzZW5kZXItcG9zaXRpb24nOiAvLyA3LjMuNi42XG5cdFx0XHRjYXNlICdzZW5kZXItZW1haWwnOiAvLyA3LjMuNi43XG5cdFx0XHRjYXNlICdzZW5kZXItcGhvbmUtcHJpdmF0ZSc6IC8vIDcuMy42Ljhcblx0XHRcdGNhc2UgJ3NlbmRlci1mYXgnOiAvLyA3LjMuNi45XG5cdFx0XHRjYXNlICdzZW5kZXItY29tcGFueSc6IC8vIDcuMy42LjEwXG5cdFx0XHRjYXNlICdzZW5kZXItcGhvbmUtd29yayc6IC8vIDcuMy42LjExXG5cdFx0XHRjYXNlICdzZW5kZXItc3RyZWV0JzogLy8gNy4zLjYuMTJcblx0XHRcdGNhc2UgJ3NlbmRlci1jaXR5JzogLy8gNy4zLjYuMTNcblx0XHRcdGNhc2UgJ3NlbmRlci1wb3N0YWwtY29kZSc6IC8vIDcuMy42LjE0XG5cdFx0XHRjYXNlICdzZW5kZXItY291bnRyeSc6IC8vIDcuMy42LjE1XG5cdFx0XHRjYXNlICdzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UnOiAvLyA3LjMuNi4xNlxuXHRcdFx0Y2FzZSAnYXV0aG9yLW5hbWUnOiAvLyA3LjMuNy4xXG5cdFx0XHRjYXNlICdhdXRob3ItaW5pdGlhbHMnOiAvLyA3LjMuNy4yXG5cdFx0XHRjYXNlICdjaGFwdGVyJzogLy8gNy4zLjhcblx0XHRcdGNhc2UgJ2ZpbGUtbmFtZSc6IC8vIDcuMy45XG5cdFx0XHRjYXNlICd0ZW1wbGF0ZS1uYW1lJzogLy8gNy4zLjlcblx0XHRcdGNhc2UgJ3NoZWV0LW5hbWUnOiAvLyA3LjMuOVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnZXZlbnQtbGlzdGVuZXInOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8qIFRPRE86IEZPRFMgUHJvcGVydGllcyAqL1xuXHRcdFx0Y2FzZSAnaW5pdGlhbC1jcmVhdG9yJzpcblx0XHRcdGNhc2UgJ2NyZWF0aW9uLWRhdGUnOlxuXHRcdFx0Y2FzZSAncHJpbnQtZGF0ZSc6XG5cdFx0XHRjYXNlICdnZW5lcmF0b3InOlxuXHRcdFx0Y2FzZSAnZG9jdW1lbnQtc3RhdGlzdGljJzpcblx0XHRcdGNhc2UgJ3VzZXItZGVmaW5lZCc6XG5cdFx0XHRjYXNlICdlZGl0aW5nLWR1cmF0aW9uJzpcblx0XHRcdGNhc2UgJ2VkaXRpbmctY3ljbGVzJzpcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIFRPRE86IEZPRFMgQ29uZmlnICovXG5cdFx0XHRjYXNlICdjb25maWctaXRlbSc6XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBUT0RPOiBzdHlsZSB0b2tlbnMgKi9cblx0XHRcdGNhc2UgJ3BhZ2UtbnVtYmVyJzogYnJlYWs7IC8vIFRPRE8gPHRleHQ6cGFnZS1udW1iZXI+XG5cdFx0XHRjYXNlICdwYWdlLWNvdW50JzogYnJlYWs7IC8vIFRPRE8gPHRleHQ6cGFnZS1jb3VudD5cblx0XHRcdGNhc2UgJ3RpbWUnOiBicmVhazsgLy8gVE9ETyA8dGV4dDp0aW1lPlxuXG5cdFx0XHQvKiA5LjMgQWR2YW5jZWQgVGFibGUgQ2VsbHMgKi9cblx0XHRcdGNhc2UgJ2NlbGwtcmFuZ2Utc291cmNlJzogYnJlYWs7IC8vIDkuMy4xIDx0YWJsZTpcblx0XHRcdGNhc2UgJ2RldGVjdGl2ZSc6IGJyZWFrOyAvLyA5LjMuMiA8dGFibGU6XG5cdFx0XHRjYXNlICdvcGVyYXRpb24nOiBicmVhazsgLy8gOS4zLjMgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnaGlnaGxpZ2h0ZWQtcmFuZ2UnOiBicmVhazsgLy8gOS4zLjQgPHRhYmxlOlxuXG5cdFx0XHQvKiA5LjYgRGF0YSBQaWxvdCBUYWJsZXMgPHRhYmxlOiAqL1xuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC10YWJsZSc6IC8vIDkuNi4zXG5cdFx0XHRjYXNlICdzb3VyY2UtY2VsbC1yYW5nZSc6IC8vIDkuNi41XG5cdFx0XHRjYXNlICdzb3VyY2Utc2VydmljZSc6IC8vIDkuNi42XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWZpZWxkJzogLy8gOS42Ljdcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtbGV2ZWwnOiAvLyA5LjYuOFxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1zdWJ0b3RhbHMnOiAvLyA5LjYuOVxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1zdWJ0b3RhbCc6IC8vIDkuNi4xMFxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1tZW1iZXJzJzogLy8gOS42LjExXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LW1lbWJlcic6IC8vIDkuNi4xMlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1kaXNwbGF5LWluZm8nOiAvLyA5LjYuMTNcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3Qtc29ydC1pbmZvJzogLy8gOS42LjE0XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWxheW91dC1pbmZvJzogLy8gOS42LjE1XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSc6IC8vIDkuNi4xNlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1ncm91cHMnOiAvLyA5LjYuMTdcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JvdXAnOiAvLyA5LjYuMThcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyJzogLy8gOS42LjE5XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxMC4zIERyYXdpbmcgU2hhcGVzICovXG5cdFx0XHRjYXNlICdyZWN0JzogLy8gMTAuMy4yXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxNC42IERERSBDb25uZWN0aW9ucyAqL1xuXHRcdFx0Y2FzZSAnZGRlLWNvbm5lY3Rpb24tZGVjbHMnOiAvLyAxNC42LjIgPHRleHQ6XG5cdFx0XHRjYXNlICdkZGUtY29ubmVjdGlvbi1kZWNsJzogLy8gMTQuNi4zIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnZGRlLWxpbmsnOiAvLyAxNC42LjQgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnZGRlLXNvdXJjZSc6IC8vIDE0LjYuNSA8b2ZmaWNlOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAncHJvcGVydGllcyc6IGJyZWFrOyAvLyAxMy43IDxmb3JtOnByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICdwcm9wZXJ0eSc6IGJyZWFrOyAvLyAxMy44IDxmb3JtOnByb3BlcnR5PlxuXG5cdFx0XHRjYXNlICdhJzogLy8gNi4xLjggaHlwZXJsaW5rXG5cdFx0XHRcdGlmKFJuWzFdIT09ICcvJykge1xuXHRcdFx0XHRcdGF0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdGlmKCFhdGFnLmhyZWYpIGJyZWFrO1xuXHRcdFx0XHRcdGF0YWcuVGFyZ2V0ID0gdW5lc2NhcGV4bWwoYXRhZy5ocmVmKTsgZGVsZXRlIGF0YWcuaHJlZjtcblx0XHRcdFx0XHRpZihhdGFnLlRhcmdldC5jaGFyQXQoMCkgPT0gXCIjXCIgJiYgYXRhZy5UYXJnZXQuaW5kZXhPZihcIi5cIikgPiAtMSkge1xuXHRcdFx0XHRcdFx0X1JlZiA9IG9kc190b19jc2ZfM0QoYXRhZy5UYXJnZXQuc2xpY2UoMSkpO1xuXHRcdFx0XHRcdFx0YXRhZy5UYXJnZXQgPSBcIiNcIiArIF9SZWZbMF0gKyBcIiFcIiArIF9SZWZbMV07XG5cdFx0XHRcdFx0fSBlbHNlIGlmKGF0YWcuVGFyZ2V0Lm1hdGNoKC9eXFwuXFwuW1xcXFxcXC9dLykpIGF0YWcuVGFyZ2V0ID0gYXRhZy5UYXJnZXQuc2xpY2UoMyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIG5vbi1zdGFuZGFyZCAqL1xuXHRcdFx0Y2FzZSAndGFibGUtcHJvdGVjdGlvbic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1ncmFuZC10b3RhbCc6IGJyZWFrOyAvLyA8dGFibGU6XG5cdFx0XHRjYXNlICdvZmZpY2UtZG9jdW1lbnQtY29tbW9uLWF0dHJzJzogYnJlYWs7IC8vIGJhcmVcblx0XHRcdGRlZmF1bHQ6IHN3aXRjaChSblsyXSkge1xuXHRcdFx0XHRjYXNlICdkYzonOiAgICAgICAvLyBUT0RPOiBwcm9wZXJ0aWVzXG5cdFx0XHRcdGNhc2UgJ2NhbGNleHQ6JzogIC8vIGlnbm9yZSB1bmRvY3VtZW50ZWQgZXh0ZW5zaW9uc1xuXHRcdFx0XHRjYXNlICdsb2V4dDonOiAgICAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnb29vOic6ICAgICAgLy8gaWdub3JlIHVuZG9jdW1lbnRlZCBleHRlbnNpb25zXG5cdFx0XHRcdGNhc2UgJ2NoYXJ0b29vOic6IC8vIGlnbm9yZSB1bmRvY3VtZW50ZWQgZXh0ZW5zaW9uc1xuXHRcdFx0XHRjYXNlICdkcmF3Oic6ICAgICAvLyBUT0RPOiBkcmF3aW5nXG5cdFx0XHRcdGNhc2UgJ3N0eWxlOic6ICAgIC8vIFRPRE86IHN0eWxlc1xuXHRcdFx0XHRjYXNlICdjaGFydDonOiAgICAvLyBUT0RPOiBjaGFydHNcblx0XHRcdFx0Y2FzZSAnZm9ybTonOiAgICAgLy8gVE9ETzogZm9ybXNcblx0XHRcdFx0Y2FzZSAndW9mOic6ICAgICAgLy8gVE9ETzogdW9mXG5cdFx0XHRcdGNhc2UgJ+ihqDonOiAgICAgICAvLyBUT0RPOiB1b2Zcblx0XHRcdFx0Y2FzZSAn5a2XOic6ICAgICAgIC8vIFRPRE86IHVvZlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFJuKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmFyIG91dC8qOldvcmtib29rKi8gPSAoe1xuXHRcdFx0U2hlZXRzOiBTaGVldHMsXG5cdFx0XHRTaGVldE5hbWVzOiBTaGVldE5hbWVzLFxuXHRcdFx0V29ya2Jvb2s6IFdCXG5cdFx0fS8qOmFueSovKTtcblx0XHRpZihvcHRzLmJvb2tTaGVldHMpIGRlbGV0ZSAvKjo6KCovb3V0Lyo6OiA6YW55KSovLlNoZWV0cztcblx0XHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZV9vZHMoemlwLyo6WklQRmlsZSovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRvcHRzID0gb3B0cyB8fCAoe30vKjphbnkqLyk7XG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ01FVEEtSU5GL21hbmlmZXN0LnhtbCcpKSBwYXJzZV9tYW5pZmVzdChnZXR6aXBkYXRhKHppcCwgJ01FVEEtSU5GL21hbmlmZXN0LnhtbCcpLCBvcHRzKTtcblx0dmFyIGNvbnRlbnQgPSBnZXR6aXBzdHIoemlwLCAnY29udGVudC54bWwnKTtcblx0aWYoIWNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgY29udGVudC54bWwgaW4gT0RTIC8gVU9GIGZpbGVcIik7XG5cdHZhciB3YiA9IHBhcnNlX2NvbnRlbnRfeG1sKHV0ZjhyZWFkKGNvbnRlbnQpLCBvcHRzKTtcblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnbWV0YS54bWwnKSkgd2IuUHJvcHMgPSBwYXJzZV9jb3JlX3Byb3BzKGdldHppcGRhdGEoemlwLCAnbWV0YS54bWwnKSk7XG5cdHJldHVybiB3Yjtcbn1cbmZ1bmN0aW9uIHBhcnNlX2ZvZHMoZGF0YS8qOnN0cmluZyovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRyZXR1cm4gcGFyc2VfY29udGVudF94bWwoZGF0YSwgb3B0cyk7XG59XG5cbi8qIE9wZW5Eb2N1bWVudCAqL1xudmFyIHdyaXRlX3N0eWxlc19vZHMvKjp7KHdiOmFueSwgb3B0czphbnkpOnN0cmluZ30qLyA9IC8qIEBfX1BVUkVfXyAqLyhmdW5jdGlvbigpIHtcblx0dmFyIG1hc3Rlcl9zdHlsZXMgPSBbXG5cdFx0JzxvZmZpY2U6bWFzdGVyLXN0eWxlcz4nLFxuXHRcdFx0JzxzdHlsZTptYXN0ZXItcGFnZSBzdHlsZTpuYW1lPVwibXAxXCIgc3R5bGU6cGFnZS1sYXlvdXQtbmFtZT1cIm1wMVwiPicsXG5cdFx0XHRcdCc8c3R5bGU6aGVhZGVyLz4nLFxuXHRcdFx0XHQnPHN0eWxlOmhlYWRlci1sZWZ0IHN0eWxlOmRpc3BsYXk9XCJmYWxzZVwiLz4nLFxuXHRcdFx0XHQnPHN0eWxlOmZvb3Rlci8+Jyxcblx0XHRcdFx0JzxzdHlsZTpmb290ZXItbGVmdCBzdHlsZTpkaXNwbGF5PVwiZmFsc2VcIi8+Jyxcblx0XHRcdCc8L3N0eWxlOm1hc3Rlci1wYWdlPicsXG5cdFx0Jzwvb2ZmaWNlOm1hc3Rlci1zdHlsZXM+J1xuXHRdLmpvaW4oXCJcIik7XG5cblx0dmFyIHBheWxvYWQgPSAnPG9mZmljZTpkb2N1bWVudC1zdHlsZXMgJyArIHd4dF9oZWxwZXIoe1xuXHRcdCd4bWxuczpvZmZpY2UnOiAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wXCIsXG5cdFx0J3htbG5zOnRhYmxlJzogICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMFwiLFxuXHRcdCd4bWxuczpzdHlsZSc6ICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjBcIixcblx0XHQneG1sbnM6dGV4dCc6ICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjBcIixcblx0XHQneG1sbnM6ZHJhdyc6ICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHJhd2luZzoxLjBcIixcblx0XHQneG1sbnM6Zm8nOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6eHNsLWZvLWNvbXBhdGlibGU6MS4wXCIsXG5cdFx0J3htbG5zOnhsaW5rJzogICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG5cdFx0J3htbG5zOmRjJzogICAgICAgXCJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL1wiLFxuXHRcdCd4bWxuczpudW1iZXInOiAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wXCIsXG5cdFx0J3htbG5zOnN2Zyc6ICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdCd4bWxuczpvZic6ICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjJcIixcblx0XHQnb2ZmaWNlOnZlcnNpb24nOiBcIjEuMlwiXG5cdH0pICsgJz4nICsgbWFzdGVyX3N0eWxlcyArICc8L29mZmljZTpkb2N1bWVudC1zdHlsZXM+JztcblxuXHRyZXR1cm4gZnVuY3Rpb24gd3NvKC8qOjp3Yiwgb3B0cyovKSB7XG5cdFx0cmV0dXJuIFhNTF9IRUFERVIgKyBwYXlsb2FkO1xuXHR9O1xufSkoKTtcbnZhciB3cml0ZV9jb250ZW50X29kcy8qOnsod2I6YW55LCBvcHRzOmFueSk6c3RyaW5nfSovID0gLyogQF9fUFVSRV9fICovKGZ1bmN0aW9uKCkge1xuXHQvKiA2LjEuMiBXaGl0ZSBTcGFjZSBDaGFyYWN0ZXJzICovXG5cdHZhciB3cml0ZV90ZXh0X3AgPSBmdW5jdGlvbih0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHJldHVybiBlc2NhcGV4bWwodGV4dClcblx0XHRcdC5yZXBsYWNlKC8gICsvZywgZnVuY3Rpb24oJCQpe3JldHVybiAnPHRleHQ6cyB0ZXh0OmM9XCInKyQkLmxlbmd0aCsnXCIvPic7fSlcblx0XHRcdC5yZXBsYWNlKC9cXHQvZywgXCI8dGV4dDp0YWIvPlwiKVxuXHRcdFx0LnJlcGxhY2UoL1xcbi9nLCBcIjwvdGV4dDpwPjx0ZXh0OnA+XCIpXG5cdFx0XHQucmVwbGFjZSgvXiAvLCBcIjx0ZXh0OnMvPlwiKS5yZXBsYWNlKC8gJC8sIFwiPHRleHQ6cy8+XCIpO1xuXHR9O1xuXG5cdHZhciBudWxsX2NlbGxfeG1sID0gJyAgICAgICAgICA8dGFibGU6dGFibGUtY2VsbCAvPlxcbic7XG5cdHZhciBjb3ZlcmVkX2NlbGxfeG1sID0gJyAgICAgICAgICA8dGFibGU6Y292ZXJlZC10YWJsZS1jZWxsLz5cXG4nO1xuXHR2YXIgd3JpdGVfd3MgPSBmdW5jdGlvbih3cywgd2IvKjpXb3JrYm9vayovLCBpLyo6bnVtYmVyKi8vKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHRcdC8qIFNlY3Rpb24gOSBUYWJsZXMgKi9cblx0XHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdG8ucHVzaCgnICAgICAgPHRhYmxlOnRhYmxlIHRhYmxlOm5hbWU9XCInICsgZXNjYXBleG1sKHdiLlNoZWV0TmFtZXNbaV0pICsgJ1wiIHRhYmxlOnN0eWxlLW5hbWU9XCJ0YTFcIj5cXG4nKTtcblx0XHR2YXIgUj0wLEM9MCwgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXXx8XCJBMVwiKTtcblx0XHR2YXIgbWFyci8qOkFycmF5PFJhbmdlPiovID0gd3NbJyFtZXJnZXMnXSB8fCBbXSwgbWkgPSAwO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGlmKHdzW1wiIWNvbHNcIl0pIHtcblx0XHRcdGZvcihDID0gMDsgQyA8PSByYW5nZS5lLmM7ICsrQykgby5wdXNoKCcgICAgICAgIDx0YWJsZTp0YWJsZS1jb2x1bW4nICsgKHdzW1wiIWNvbHNcIl1bQ10gPyAnIHRhYmxlOnN0eWxlLW5hbWU9XCJjbycgKyB3c1tcIiFjb2xzXCJdW0NdLm9kcyArICdcIicgOiAnJykgKyAnPjwvdGFibGU6dGFibGUtY29sdW1uPlxcbicpO1xuXHRcdH1cblx0XHR2YXIgSCA9IFwiXCIsIFJPV1MgPSB3c1tcIiFyb3dzXCJdfHxbXTtcblx0XHRmb3IoUiA9IDA7IFIgPCByYW5nZS5zLnI7ICsrUikge1xuXHRcdFx0SCA9IFJPV1NbUl0gPyAnIHRhYmxlOnN0eWxlLW5hbWU9XCJybycgKyBST1dTW1JdLm9kcyArICdcIicgOiBcIlwiO1xuXHRcdFx0by5wdXNoKCcgICAgICAgIDx0YWJsZTp0YWJsZS1yb3cnICsgSCArICc+PC90YWJsZTp0YWJsZS1yb3c+XFxuJyk7XG5cdFx0fVxuXHRcdGZvcig7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRcdEggPSBST1dTW1JdID8gJyB0YWJsZTpzdHlsZS1uYW1lPVwicm8nICsgUk9XU1tSXS5vZHMgKyAnXCInIDogXCJcIjtcblx0XHRcdG8ucHVzaCgnICAgICAgICA8dGFibGU6dGFibGUtcm93JyArIEggKyAnPlxcbicpO1xuXHRcdFx0Zm9yKEM9MDsgQyA8IHJhbmdlLnMuYzsgKytDKSBvLnB1c2gobnVsbF9jZWxsX3htbCk7XG5cdFx0XHRmb3IoOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRcdHZhciBza2lwID0gZmFsc2UsIGN0ID0ge30sIHRleHRwID0gXCJcIjtcblx0XHRcdFx0Zm9yKG1pID0gMDsgbWkgIT0gbWFyci5sZW5ndGg7ICsrbWkpIHtcblx0XHRcdFx0XHRpZihtYXJyW21pXS5zLmMgPiBDKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZihtYXJyW21pXS5zLnIgPiBSKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZihtYXJyW21pXS5lLmMgPCBDKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZihtYXJyW21pXS5lLnIgPCBSKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZihtYXJyW21pXS5zLmMgIT0gQyB8fCBtYXJyW21pXS5zLnIgIT0gUikgc2tpcCA9IHRydWU7XG5cdFx0XHRcdFx0Y3RbJ3RhYmxlOm51bWJlci1jb2x1bW5zLXNwYW5uZWQnXSA9IChtYXJyW21pXS5lLmMgLSBtYXJyW21pXS5zLmMgKyAxKTtcblx0XHRcdFx0XHRjdFsndGFibGU6bnVtYmVyLXJvd3Mtc3Bhbm5lZCddID0gICAgKG1hcnJbbWldLmUuciAtIG1hcnJbbWldLnMuciArIDEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHNraXApIHsgby5wdXNoKGNvdmVyZWRfY2VsbF94bWwpOyBjb250aW51ZTsgfVxuXHRcdFx0XHR2YXIgcmVmID0gZW5jb2RlX2NlbGwoe3I6UiwgYzpDfSksIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdOiB3c1tyZWZdO1xuXHRcdFx0XHRpZihjZWxsICYmIGNlbGwuZikge1xuXHRcdFx0XHRcdGN0Wyd0YWJsZTpmb3JtdWxhJ10gPSBlc2NhcGV4bWwoY3NmX3RvX29kc19mb3JtdWxhKGNlbGwuZikpO1xuXHRcdFx0XHRcdGlmKGNlbGwuRikge1xuXHRcdFx0XHRcdFx0aWYoY2VsbC5GLnNsaWNlKDAsIHJlZi5sZW5ndGgpID09IHJlZikge1xuXHRcdFx0XHRcdFx0XHR2YXIgX0ZyZWYgPSBkZWNvZGVfcmFuZ2UoY2VsbC5GKTtcblx0XHRcdFx0XHRcdFx0Y3RbJ3RhYmxlOm51bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkJ10gPSAoX0ZyZWYuZS5jIC0gX0ZyZWYucy5jICsgMSk7XG5cdFx0XHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCddID0gICAgKF9GcmVmLmUuciAtIF9GcmVmLnMuciArIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZighY2VsbCkgeyBvLnB1c2gobnVsbF9jZWxsX3htbCk7IGNvbnRpbnVlOyB9XG5cdFx0XHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdFx0XHRjYXNlICdiJzpcblx0XHRcdFx0XHRcdHRleHRwID0gKGNlbGwudiA/ICdUUlVFJyA6ICdGQUxTRScpO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZS10eXBlJ10gPSBcImJvb2xlYW5cIjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6Ym9vbGVhbi12YWx1ZSddID0gKGNlbGwudiA/ICd0cnVlJyA6ICdmYWxzZScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IChjZWxsLnd8fFN0cmluZyhjZWxsLnZ8fDApKTtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJmbG9hdFwiO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZSddID0gKGNlbGwudnx8MCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzpcblx0XHRcdFx0XHRcdHRleHRwID0gY2VsbC52ID09IG51bGwgPyBcIlwiIDogY2VsbC52O1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZS10eXBlJ10gPSBcInN0cmluZ1wiO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IChjZWxsLnd8fChwYXJzZURhdGUoY2VsbC52KS50b0lTT1N0cmluZygpKSk7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlLXR5cGUnXSA9IFwiZGF0ZVwiO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTpkYXRlLXZhbHVlJ10gPSAocGFyc2VEYXRlKGNlbGwudikudG9JU09TdHJpbmcoKSk7XG5cdFx0XHRcdFx0XHRjdFsndGFibGU6c3R5bGUtbmFtZSddID0gXCJjZTFcIjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vY2FzZSAnZSc6XG5cdFx0XHRcdFx0ZGVmYXVsdDogby5wdXNoKG51bGxfY2VsbF94bWwpOyBjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgdGV4dF9wID0gd3JpdGVfdGV4dF9wKHRleHRwKTtcblx0XHRcdFx0aWYoY2VsbC5sICYmIGNlbGwubC5UYXJnZXQpIHtcblx0XHRcdFx0XHR2YXIgX3RndCA9IGNlbGwubC5UYXJnZXQ7XG5cdFx0XHRcdFx0X3RndCA9IF90Z3QuY2hhckF0KDApID09IFwiI1wiID8gXCIjXCIgKyBjc2ZfdG9fb2RzXzNEKF90Z3Quc2xpY2UoMSkpIDogX3RndDtcblx0XHRcdFx0XHQvLyBUT0RPOiBjaG9vc2UgY29ycmVjdCBwYXJlbnQgcGF0aCBmb3JtYXQgYmFzZWQgb24gbGluayBkZWxpbWl0ZXJzXG5cdFx0XHRcdFx0aWYoX3RndC5jaGFyQXQoMCkgIT0gXCIjXCIgJiYgIV90Z3QubWF0Y2goL15cXHcrOi8pKSBfdGd0ID0gJy4uLycgKyBfdGd0O1xuXHRcdFx0XHRcdHRleHRfcCA9IHdyaXRleHRhZygndGV4dDphJywgdGV4dF9wLCB7J3hsaW5rOmhyZWYnOiBfdGd0LnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKX0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG8ucHVzaCgnICAgICAgICAgICcgKyB3cml0ZXh0YWcoJ3RhYmxlOnRhYmxlLWNlbGwnLCB3cml0ZXh0YWcoJ3RleHQ6cCcsIHRleHRfcCwge30pLCBjdCkgKyAnXFxuJyk7XG5cdFx0XHR9XG5cdFx0XHRvLnB1c2goJyAgICAgICAgPC90YWJsZTp0YWJsZS1yb3c+XFxuJyk7XG5cdFx0fVxuXHRcdG8ucHVzaCgnICAgICAgPC90YWJsZTp0YWJsZT5cXG4nKTtcblx0XHRyZXR1cm4gby5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdHZhciB3cml0ZV9hdXRvbWF0aWNfc3R5bGVzX29kcyA9IGZ1bmN0aW9uKG8vKjpBcnJheTxzdHJpbmc+Ki8sIHdiKSB7XG5cdFx0by5wdXNoKCcgPG9mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxcbicpO1xuXG5cdFx0by5wdXNoKCcgIDxudW1iZXI6ZGF0ZS1zdHlsZSBzdHlsZTpuYW1lPVwiTjM3XCIgbnVtYmVyOmF1dG9tYXRpYy1vcmRlcj1cInRydWVcIj5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxudW1iZXI6bW9udGggbnVtYmVyOnN0eWxlPVwibG9uZ1wiLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxudW1iZXI6ZGF5IG51bWJlcjpzdHlsZT1cImxvbmdcIi8+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOnRleHQ+LzwvbnVtYmVyOnRleHQ+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOnllYXIvPlxcbicpO1xuXHRcdG8ucHVzaCgnICA8L251bWJlcjpkYXRlLXN0eWxlPlxcbicpO1xuXG5cdFx0LyogY29sdW1uIHN0eWxlcyAqL1xuXHRcdHZhciBjaWR4ID0gMDtcblx0XHR3Yi5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihuKSB7IHJldHVybiB3Yi5TaGVldHNbbl07IH0pLmZvckVhY2goZnVuY3Rpb24od3MpIHtcblx0XHRcdGlmKCF3cykgcmV0dXJuO1xuXHRcdFx0aWYod3NbXCIhY29sc1wiXSkge1xuXHRcdFx0XHRmb3IodmFyIEMgPSAwOyBDIDwgd3NbXCIhY29sc1wiXS5sZW5ndGg7ICsrQykgaWYod3NbXCIhY29sc1wiXVtDXSkge1xuXHRcdFx0XHRcdHZhciBjb2xvYmogPSB3c1tcIiFjb2xzXCJdW0NdO1xuXHRcdFx0XHRcdGlmKGNvbG9iai53aWR0aCA9PSBudWxsICYmIGNvbG9iai53cHggPT0gbnVsbCAmJiBjb2xvYmoud2NoID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdHByb2Nlc3NfY29sKGNvbG9iaik7XG5cdFx0XHRcdFx0Y29sb2JqLm9kcyA9IGNpZHg7XG5cdFx0XHRcdFx0dmFyIHcgPSB3c1tcIiFjb2xzXCJdW0NdLndweCArIFwicHhcIjtcblx0XHRcdFx0XHRvLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9XCJjbycgKyBjaWR4ICsgJ1wiIHN0eWxlOmZhbWlseT1cInRhYmxlLWNvbHVtblwiPlxcbicpO1xuXHRcdFx0XHRcdG8ucHVzaCgnICAgPHN0eWxlOnRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzIGZvOmJyZWFrLWJlZm9yZT1cImF1dG9cIiBzdHlsZTpjb2x1bW4td2lkdGg9XCInICsgdyArICdcIi8+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDwvc3R5bGU6c3R5bGU+XFxuJyk7XG5cdFx0XHRcdFx0KytjaWR4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvKiByb3cgc3R5bGVzICovXG5cdFx0dmFyIHJpZHggPSAwO1xuXHRcdHdiLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKG4pIHsgcmV0dXJuIHdiLlNoZWV0c1tuXTsgfSkuZm9yRWFjaChmdW5jdGlvbih3cykge1xuXHRcdFx0aWYoIXdzKSByZXR1cm47XG5cdFx0XHRpZih3c1tcIiFyb3dzXCJdKSB7XG5cdFx0XHRcdGZvcih2YXIgUiA9IDA7IFIgPCB3c1tcIiFyb3dzXCJdLmxlbmd0aDsgKytSKSBpZih3c1tcIiFyb3dzXCJdW1JdKSB7XG5cdFx0XHRcdFx0d3NbXCIhcm93c1wiXVtSXS5vZHMgPSByaWR4O1xuXHRcdFx0XHRcdHZhciBoID0gd3NbXCIhcm93c1wiXVtSXS5ocHggKyBcInB4XCI7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwicm8nICsgcmlkeCArICdcIiBzdHlsZTpmYW1pbHk9XCJ0YWJsZS1yb3dcIj5cXG4nKTtcblx0XHRcdFx0XHRvLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1yb3ctcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9XCJhdXRvXCIgc3R5bGU6cm93LWhlaWdodD1cIicgKyBoICsgJ1wiLz5cXG4nKTtcblx0XHRcdFx0XHRvLnB1c2goJyAgPC9zdHlsZTpzdHlsZT5cXG4nKTtcblx0XHRcdFx0XHQrK3JpZHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8qIHRhYmxlICovXG5cdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwidGExXCIgc3R5bGU6ZmFtaWx5PVwidGFibGVcIiBzdHlsZTptYXN0ZXItcGFnZS1uYW1lPVwibXAxXCI+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8c3R5bGU6dGFibGUtcHJvcGVydGllcyB0YWJsZTpkaXNwbGF5PVwidHJ1ZVwiIHN0eWxlOndyaXRpbmctbW9kZT1cImxyLXRiXCIvPlxcbicpO1xuXHRcdG8ucHVzaCgnICA8L3N0eWxlOnN0eWxlPlxcbicpO1xuXG5cdFx0LyogdGFibGUgY2VsbHMsIHRleHQgKi9cblx0XHRvLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9XCJjZTFcIiBzdHlsZTpmYW1pbHk9XCJ0YWJsZS1jZWxsXCIgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9XCJEZWZhdWx0XCIgc3R5bGU6ZGF0YS1zdHlsZS1uYW1lPVwiTjM3XCIvPlxcbicpO1xuXG5cdFx0LyogcGFnZS1sYXlvdXQgKi9cblxuXHRcdG8ucHVzaCgnIDwvb2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XFxuJyk7XG5cdH07XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHdjeCh3Yiwgb3B0cykge1xuXHRcdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRcdC8qIDMuMS4zLjIgKi9cblx0XHR2YXIgYXR0ciA9IHd4dF9oZWxwZXIoe1xuXHRcdFx0J3htbG5zOm9mZmljZSc6ICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wXCIsXG5cdFx0XHQneG1sbnM6dGFibGUnOiAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnN0eWxlJzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjBcIixcblx0XHRcdCd4bWxuczp0ZXh0JzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjBcIixcblx0XHRcdCd4bWxuczpkcmF3JzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHJhd2luZzoxLjBcIixcblx0XHRcdCd4bWxuczpmbyc6ICAgICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6eHNsLWZvLWNvbXBhdGlibGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6eGxpbmsnOiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG5cdFx0XHQneG1sbnM6ZGMnOiAgICAgICAgICAgXCJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL1wiLFxuXHRcdFx0J3htbG5zOm1ldGEnOiAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMFwiLFxuXHRcdFx0J3htbG5zOm51bWJlcic6ICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6cHJlc2VudGF0aW9uJzogXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjBcIixcblx0XHRcdCd4bWxuczpzdmcnOiAgICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3ZnLWNvbXBhdGlibGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6Y2hhcnQnOiAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNoYXJ0OjEuMFwiLFxuXHRcdFx0J3htbG5zOmRyM2QnOiAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcjNkOjEuMFwiLFxuXHRcdFx0J3htbG5zOm1hdGgnOiAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLFxuXHRcdFx0J3htbG5zOmZvcm0nOiAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpmb3JtOjEuMFwiLFxuXHRcdFx0J3htbG5zOnNjcmlwdCc6ICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzY3JpcHQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6b29vJzogICAgICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2VcIixcblx0XHRcdCd4bWxuczpvb293JzogICAgICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L3dyaXRlclwiLFxuXHRcdFx0J3htbG5zOm9vb2MnOiAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvY2FsY1wiLFxuXHRcdFx0J3htbG5zOmRvbSc6ICAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzXCIsXG5cdFx0XHQneG1sbnM6eGZvcm1zJzogICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAyL3hmb3Jtc1wiLFxuXHRcdFx0J3htbG5zOnhzZCc6ICAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIixcblx0XHRcdCd4bWxuczp4c2knOiAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIsXG5cdFx0XHQneG1sbnM6c2hlZXQnOiAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnNoMzN0anM6MS4wXCIsXG5cdFx0XHQneG1sbnM6cnB0JzogICAgICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNS9yZXBvcnRcIixcblx0XHRcdCd4bWxuczpvZic6ICAgICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yXCIsXG5cdFx0XHQneG1sbnM6eGh0bWwnOiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsXG5cdFx0XHQneG1sbnM6Z3JkZGwnOiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3I1wiLFxuXHRcdFx0J3htbG5zOnRhYmxlb29vJzogICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDkvdGFibGVcIixcblx0XHRcdCd4bWxuczpkcmF3b29vJzogICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDEwL2RyYXdcIixcblx0XHRcdCd4bWxuczpjYWxjZXh0JzogICAgICBcInVybjpvcmc6ZG9jdW1lbnRmb3VuZGF0aW9uOm5hbWVzOmV4cGVyaW1lbnRhbDpjYWxjOnhtbG5zOmNhbGNleHQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6bG9leHQnOiAgICAgICAgXCJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6b2ZmaWNlOnhtbG5zOmxvZXh0OjEuMFwiLFxuXHRcdFx0J3htbG5zOmZpZWxkJzogICAgICAgIFwidXJuOm9wZW5vZmZpY2U6bmFtZXM6ZXhwZXJpbWVudGFsOm9vby1tcy1pbnRlcm9wOnhtbG5zOmZpZWxkOjEuMFwiLFxuXHRcdFx0J3htbG5zOmZvcm14JzogICAgICAgIFwidXJuOm9wZW5vZmZpY2U6bmFtZXM6ZXhwZXJpbWVudGFsOm9veG1sLW9kZi1pbnRlcm9wOnhtbG5zOmZvcm06MS4wXCIsXG5cdFx0XHQneG1sbnM6Y3NzM3QnOiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvXCIsXG5cdFx0XHQnb2ZmaWNlOnZlcnNpb24nOiAgICAgXCIxLjJcIlxuXHRcdH0pO1xuXG5cdFx0dmFyIGZvZHMgPSB3eHRfaGVscGVyKHtcblx0XHRcdCd4bWxuczpjb25maWcnOiAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y29uZmlnOjEuMFwiLFxuXHRcdFx0J29mZmljZTptaW1ldHlwZSc6IFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiXG5cdFx0fSk7XG5cblx0XHRpZihvcHRzLmJvb2tUeXBlID09IFwiZm9kc1wiKSB7XG5cdFx0XHRvLnB1c2goJzxvZmZpY2U6ZG9jdW1lbnQnICsgYXR0ciArIGZvZHMgKyAnPlxcbicpO1xuXHRcdFx0by5wdXNoKHdyaXRlX21ldGFfb2RzKCkucmVwbGFjZSgvb2ZmaWNlOmRvY3VtZW50LW1ldGEvZywgXCJvZmZpY2U6bWV0YVwiKSk7XG5cdFx0XHQvLyBUT0RPOiBzZXR0aW5ncyAoZXF1aXYgb2Ygc2V0dGluZ3MueG1sIGZvciBPRFMpXG5cdFx0fSBlbHNlIG8ucHVzaCgnPG9mZmljZTpkb2N1bWVudC1jb250ZW50JyArIGF0dHIgICsgJz5cXG4nKTtcblx0XHQvLyBvLnB1c2goJyAgPG9mZmljZTpzY3JpcHRzLz5cXG4nKTtcblx0XHR3cml0ZV9hdXRvbWF0aWNfc3R5bGVzX29kcyhvLCB3Yik7XG5cdFx0by5wdXNoKCcgIDxvZmZpY2U6Ym9keT5cXG4nKTtcblx0XHRvLnB1c2goJyAgICA8b2ZmaWNlOnNwcmVhZHNoZWV0PlxcbicpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgIT0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkgby5wdXNoKHdyaXRlX3dzKHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXSwgd2IsIGksIG9wdHMpKTtcblx0XHRvLnB1c2goJyAgICA8L29mZmljZTpzcHJlYWRzaGVldD5cXG4nKTtcblx0XHRvLnB1c2goJyAgPC9vZmZpY2U6Ym9keT5cXG4nKTtcblx0XHRpZihvcHRzLmJvb2tUeXBlID09IFwiZm9kc1wiKSBvLnB1c2goJzwvb2ZmaWNlOmRvY3VtZW50PicpO1xuXHRcdGVsc2Ugby5wdXNoKCc8L29mZmljZTpkb2N1bWVudC1jb250ZW50PicpO1xuXHRcdHJldHVybiBvLmpvaW4oXCJcIik7XG5cdH07XG59KSgpO1xuXG5mdW5jdGlvbiB3cml0ZV9vZHMod2IvKjphbnkqLywgb3B0cy8qOmFueSovKSB7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJmb2RzXCIpIHJldHVybiB3cml0ZV9jb250ZW50X29kcyh3Yiwgb3B0cyk7XG5cblx0dmFyIHppcCA9IHppcF9uZXcoKTtcblx0dmFyIGYgPSBcIlwiO1xuXG5cdHZhciBtYW5pZmVzdC8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW107XG5cdHZhciByZGYvKjpBcnJheTxbc3RyaW5nLCBzdHJpbmddPiovID0gW107XG5cblx0LyogUGFydCAzIFNlY3Rpb24gMy4zIE1JTUUgTWVkaWEgVHlwZSAqL1xuXHRmID0gXCJtaW1ldHlwZVwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIik7XG5cblx0LyogUGFydCAxIFNlY3Rpb24gMi4yIERvY3VtZW50cyAqL1xuXHRmID0gXCJjb250ZW50LnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jb250ZW50X29kcyh3Yiwgb3B0cykpO1xuXHRtYW5pZmVzdC5wdXNoKFtmLCBcInRleHQveG1sXCJdKTtcblx0cmRmLnB1c2goW2YsIFwiQ29udGVudEZpbGVcIl0pO1xuXG5cdC8qIFRPRE86IHRoZXNlIGFyZSBoYXJkLWNvZGVkIHN0eWxlcyB0byBzYXRpYXRlIGV4Y2VsICovXG5cdGYgPSBcInN0eWxlcy54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3R5bGVzX29kcyh3Yiwgb3B0cykpO1xuXHRtYW5pZmVzdC5wdXNoKFtmLCBcInRleHQveG1sXCJdKTtcblx0cmRmLnB1c2goW2YsIFwiU3R5bGVzRmlsZVwiXSk7XG5cblx0LyogVE9ETzogdGhpcyBpcyBoYXJkLWNvZGVkIHRvIHNhdGlhdGUgZXhjZWwgKi9cblx0ZiA9IFwibWV0YS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgWE1MX0hFQURFUiArIHdyaXRlX21ldGFfb2RzKC8qOjp3Yiwgb3B0cyovKSk7XG5cdG1hbmlmZXN0LnB1c2goW2YsIFwidGV4dC94bWxcIl0pO1xuXHRyZGYucHVzaChbZiwgXCJNZXRhZGF0YUZpbGVcIl0pO1xuXG5cdC8qIFBhcnQgMyBTZWN0aW9uIDYgTWV0YWRhdGEgTWFuaWZlc3QgRmlsZSAqL1xuXHRmID0gXCJtYW5pZmVzdC5yZGZcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfcmRmKHJkZi8qLCBvcHRzKi8pKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJhcHBsaWNhdGlvbi9yZGYreG1sXCJdKTtcblxuXHQvKiBQYXJ0IDMgU2VjdGlvbiA0IE1hbmlmZXN0IEZpbGUgKi9cblx0ZiA9IFwiTUVUQS1JTkYvbWFuaWZlc3QueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX21hbmlmZXN0KG1hbmlmZXN0LyosIG9wdHMqLykpO1xuXG5cdHJldHVybiB6aXA7XG59XG5cbi8qISBzaGVldGpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbmZ1bmN0aW9uIHU4X3RvX2RhdGF2aWV3KGFycmF5KSB7XG4gIHJldHVybiBuZXcgRGF0YVZpZXcoYXJyYXkuYnVmZmVyLCBhcnJheS5ieXRlT2Zmc2V0LCBhcnJheS5ieXRlTGVuZ3RoKTtcbn1cbmZ1bmN0aW9uIHU4c3RyKHU4KSB7XG4gIHJldHVybiB0eXBlb2YgVGV4dERlY29kZXIgIT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh1OCkgOiB1dGY4cmVhZChhMnModTgpKTtcbn1cbmZ1bmN0aW9uIHN0cnU4KHN0cikge1xuICByZXR1cm4gdHlwZW9mIFRleHRFbmNvZGVyICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc3RyKSA6IHMyYSh1dGY4d3JpdGUoc3RyKSk7XG59XG5mdW5jdGlvbiB1OGNvbnRhaW5zKGJvZHksIHNlYXJjaCkge1xuICBvdXRlcjpcbiAgICBmb3IgKHZhciBMID0gMDsgTCA8PSBib2R5Lmxlbmd0aCAtIHNlYXJjaC5sZW5ndGg7ICsrTCkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWFyY2gubGVuZ3RoOyArK2opXG4gICAgICAgIGlmIChib2R5W0wgKyBqXSAhPSBzZWFyY2hbal0pXG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHU4Y29uY2F0KHU4YSkge1xuICB2YXIgbGVuID0gdThhLnJlZHVjZShmdW5jdGlvbihhY2MsIHgpIHtcbiAgICByZXR1cm4gYWNjICsgeC5sZW5ndGg7XG4gIH0sIDApO1xuICB2YXIgb3V0ID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgdmFyIG9mZiA9IDA7XG4gIHU4YS5mb3JFYWNoKGZ1bmN0aW9uKHU4KSB7XG4gICAgb3V0LnNldCh1OCwgb2ZmKTtcbiAgICBvZmYgKz0gdTgubGVuZ3RoO1xuICB9KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBvcGNudCh4KSB7XG4gIHggLT0geCA+PiAxICYgMTQzMTY1NTc2NTtcbiAgeCA9ICh4ICYgODU4OTkzNDU5KSArICh4ID4+IDIgJiA4NTg5OTM0NTkpO1xuICByZXR1cm4gKHggKyAoeCA+PiA0KSAmIDI1MjY0NTEzNSkgKiAxNjg0MzAwOSA+Pj4gMjQ7XG59XG5mdW5jdGlvbiByZWFkRGVjaW1hbDEyOExFKGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciBleHAgPSAoYnVmW29mZnNldCArIDE1XSAmIDEyNykgPDwgNyB8IGJ1ZltvZmZzZXQgKyAxNF0gPj4gMTtcbiAgdmFyIG1hbnRpc3NhID0gYnVmW29mZnNldCArIDE0XSAmIDE7XG4gIGZvciAodmFyIGogPSBvZmZzZXQgKyAxMzsgaiA+PSBvZmZzZXQ7IC0tailcbiAgICBtYW50aXNzYSA9IG1hbnRpc3NhICogMjU2ICsgYnVmW2pdO1xuICByZXR1cm4gKGJ1ZltvZmZzZXQgKyAxNV0gJiAxMjggPyAtbWFudGlzc2EgOiBtYW50aXNzYSkgKiBNYXRoLnBvdygxMCwgZXhwIC0gNjE3Nik7XG59XG5mdW5jdGlvbiB3cml0ZURlY2ltYWwxMjhMRShidWYsIG9mZnNldCwgdmFsdWUpIHtcbiAgdmFyIGV4cCA9IE1hdGguZmxvb3IodmFsdWUgPT0gMCA/IDAgOiBNYXRoLkxPRzEwRSAqIE1hdGgubG9nKE1hdGguYWJzKHZhbHVlKSkpICsgNjE3NiAtIDIwO1xuICB2YXIgbWFudGlzc2EgPSB2YWx1ZSAvIE1hdGgucG93KDEwLCBleHAgLSA2MTc2KTtcbiAgYnVmW29mZnNldCArIDE1XSB8PSBleHAgPj4gNztcbiAgYnVmW29mZnNldCArIDE0XSB8PSAoZXhwICYgMTI3KSA8PCAxO1xuICBmb3IgKHZhciBpID0gMDsgbWFudGlzc2EgPj0gMTsgKytpLCBtYW50aXNzYSAvPSAyNTYpXG4gICAgYnVmW29mZnNldCArIGldID0gbWFudGlzc2EgJiAyNTU7XG4gIGJ1ZltvZmZzZXQgKyAxNV0gfD0gdmFsdWUgPj0gMCA/IDAgOiAxMjg7XG59XG5mdW5jdGlvbiBwYXJzZV92YXJpbnQ0OShidWYsIHB0cikge1xuICB2YXIgbCA9IHB0ciA/IHB0clswXSA6IDA7XG4gIHZhciB1c3ogPSBidWZbbF0gJiAxMjc7XG4gIHZhcmludDpcbiAgICBpZiAoYnVmW2wrK10gPj0gMTI4KSB7XG4gICAgICB1c3ogfD0gKGJ1ZltsXSAmIDEyNykgPDwgNztcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6IHw9IChidWZbbF0gJiAxMjcpIDw8IDE0O1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogfD0gKGJ1ZltsXSAmIDEyNykgPDwgMjE7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiArPSAoYnVmW2xdICYgMTI3KSAqIE1hdGgucG93KDIsIDI4KTtcbiAgICAgICsrbDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6ICs9IChidWZbbF0gJiAxMjcpICogTWF0aC5wb3coMiwgMzUpO1xuICAgICAgKytsO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogKz0gKGJ1ZltsXSAmIDEyNykgKiBNYXRoLnBvdygyLCA0Mik7XG4gICAgICArK2w7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICB9XG4gIGlmIChwdHIpXG4gICAgcHRyWzBdID0gbDtcbiAgcmV0dXJuIHVzejtcbn1cbmZ1bmN0aW9uIHdyaXRlX3ZhcmludDQ5KHYpIHtcbiAgdmFyIHVzeiA9IG5ldyBVaW50OEFycmF5KDcpO1xuICB1c3pbMF0gPSB2ICYgMTI3O1xuICB2YXIgTCA9IDE7XG4gIHN6OlxuICAgIGlmICh2ID4gMTI3KSB7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgPj4gNyAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDE2MzgzKVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiA+PiAxNCAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDIwOTcxNTEpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2ID4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gMjY4NDM1NDU1KVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiAvIDI1NiA+Pj4gMjEgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAzNDM1OTczODM2NylcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgLyA2NTUzNiA+Pj4gMjEgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSA0Mzk4MDQ2NTExMTAzKVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiAvIDE2Nzc3MjE2ID4+PiAyMSAmIDEyNztcbiAgICAgICsrTDtcbiAgICB9XG4gIHJldHVybiB1c3ouc2xpY2UoMCwgTCk7XG59XG5mdW5jdGlvbiB2YXJpbnRfdG9faTMyKGJ1Zikge1xuICB2YXIgbCA9IDAsIGkzMiA9IGJ1ZltsXSAmIDEyNztcbiAgdmFyaW50OlxuICAgIGlmIChidWZbbCsrXSA+PSAxMjgpIHtcbiAgICAgIGkzMiB8PSAoYnVmW2xdICYgMTI3KSA8PCA3O1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgMTQ7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIGkzMiB8PSAoYnVmW2xdICYgMTI3KSA8PCAyMTtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgaTMyIHw9IChidWZbbF0gJiAxMjcpIDw8IDI4O1xuICAgIH1cbiAgcmV0dXJuIGkzMjtcbn1cbmZ1bmN0aW9uIHBhcnNlX3NoYWxsb3coYnVmKSB7XG4gIHZhciBvdXQgPSBbXSwgcHRyID0gWzBdO1xuICB3aGlsZSAocHRyWzBdIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciBvZmYgPSBwdHJbMF07XG4gICAgdmFyIG51bSA9IHBhcnNlX3ZhcmludDQ5KGJ1ZiwgcHRyKTtcbiAgICB2YXIgdHlwZSA9IG51bSAmIDc7XG4gICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyA4KTtcbiAgICB2YXIgbGVuID0gMDtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0gPT0gMClcbiAgICAgIGJyZWFrO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGwgPSBwdHJbMF07XG4gICAgICAgICAgd2hpbGUgKGJ1ZltwdHJbMF0rK10gPj0gMTI4KVxuICAgICAgICAgICAgO1xuICAgICAgICAgIHJlcyA9IGJ1Zi5zbGljZShsLCBwdHJbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBsZW4gPSA0O1xuICAgICAgICByZXMgPSBidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pO1xuICAgICAgICBwdHJbMF0gKz0gbGVuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgbGVuID0gODtcbiAgICAgICAgcmVzID0gYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKTtcbiAgICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGxlbiA9IHBhcnNlX3ZhcmludDQ5KGJ1ZiwgcHRyKTtcbiAgICAgICAgcmVzID0gYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKTtcbiAgICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQQiBUeXBlIFwiLmNvbmNhdCh0eXBlLCBcIiBmb3IgRmllbGQgXCIpLmNvbmNhdChudW0sIFwiIGF0IG9mZnNldCBcIikuY29uY2F0KG9mZikpO1xuICAgIH1cbiAgICB2YXIgdiA9IHsgZGF0YTogcmVzLCB0eXBlOiB0eXBlIH07XG4gICAgaWYgKG91dFtudW1dID09IG51bGwpXG4gICAgICBvdXRbbnVtXSA9IFt2XTtcbiAgICBlbHNlXG4gICAgICBvdXRbbnVtXS5wdXNoKHYpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9zaGFsbG93KHByb3RvKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgcHJvdG8uZm9yRWFjaChmdW5jdGlvbihmaWVsZCwgaWR4KSB7XG4gICAgZmllbGQuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpZiAoIWl0ZW0uZGF0YSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgb3V0LnB1c2god3JpdGVfdmFyaW50NDkoaWR4ICogOCArIGl0ZW0udHlwZSkpO1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PSAyKVxuICAgICAgICBvdXQucHVzaCh3cml0ZV92YXJpbnQ0OShpdGVtLmRhdGEubGVuZ3RoKSk7XG4gICAgICBvdXQucHVzaChpdGVtLmRhdGEpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHU4Y29uY2F0KG91dCk7XG59XG5mdW5jdGlvbiBtYXBwYShkYXRhLCBjYikge1xuICByZXR1cm4gKGRhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IGRhdGEubWFwKGZ1bmN0aW9uKGQpIHtcbiAgICByZXR1cm4gY2IoZC5kYXRhKTtcbiAgfSkpIHx8IFtdO1xufVxuZnVuY3Rpb24gcGFyc2VfaXdhX2ZpbGUoYnVmKSB7XG4gIHZhciBfYTtcbiAgdmFyIG91dCA9IFtdLCBwdHIgPSBbMF07XG4gIHdoaWxlIChwdHJbMF0gPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIGxlbiA9IHBhcnNlX3ZhcmludDQ5KGJ1ZiwgcHRyKTtcbiAgICB2YXIgYWkgPSBwYXJzZV9zaGFsbG93KGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbikpO1xuICAgIHB0clswXSArPSBsZW47XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIGlkOiB2YXJpbnRfdG9faTMyKGFpWzFdWzBdLmRhdGEpLFxuICAgICAgbWVzc2FnZXM6IFtdXG4gICAgfTtcbiAgICBhaVsyXS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHtcbiAgICAgIHZhciBtaSA9IHBhcnNlX3NoYWxsb3coYi5kYXRhKTtcbiAgICAgIHZhciBmbCA9IHZhcmludF90b19pMzIobWlbM11bMF0uZGF0YSk7XG4gICAgICByZXMubWVzc2FnZXMucHVzaCh7XG4gICAgICAgIG1ldGE6IG1pLFxuICAgICAgICBkYXRhOiBidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBmbClcbiAgICAgIH0pO1xuICAgICAgcHRyWzBdICs9IGZsO1xuICAgIH0pO1xuICAgIGlmICgoX2EgPSBhaVszXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKVxuICAgICAgcmVzLm1lcmdlID0gdmFyaW50X3RvX2kzMihhaVszXVswXS5kYXRhKSA+Pj4gMCA+IDA7XG4gICAgb3V0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfaXdhX2ZpbGUoaWFzKSB7XG4gIHZhciBidWZzID0gW107XG4gIGlhcy5mb3JFYWNoKGZ1bmN0aW9uKGlhKSB7XG4gICAgdmFyIGFpID0gW107XG4gICAgYWlbMV0gPSBbeyBkYXRhOiB3cml0ZV92YXJpbnQ0OShpYS5pZCksIHR5cGU6IDAgfV07XG4gICAgYWlbMl0gPSBbXTtcbiAgICBpZiAoaWEubWVyZ2UgIT0gbnVsbClcbiAgICAgIGFpWzNdID0gW3sgZGF0YTogd3JpdGVfdmFyaW50NDkoKyEhaWEubWVyZ2UpLCB0eXBlOiAwIH1dO1xuICAgIHZhciBtaWRhdGEgPSBbXTtcbiAgICBpYS5tZXNzYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKG1pKSB7XG4gICAgICBtaWRhdGEucHVzaChtaS5kYXRhKTtcbiAgICAgIG1pLm1ldGFbM10gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShtaS5kYXRhLmxlbmd0aCkgfV07XG4gICAgICBhaVsyXS5wdXNoKHsgZGF0YTogd3JpdGVfc2hhbGxvdyhtaS5tZXRhKSwgdHlwZTogMiB9KTtcbiAgICB9KTtcbiAgICB2YXIgYWlwYXlsb2FkID0gd3JpdGVfc2hhbGxvdyhhaSk7XG4gICAgYnVmcy5wdXNoKHdyaXRlX3ZhcmludDQ5KGFpcGF5bG9hZC5sZW5ndGgpKTtcbiAgICBidWZzLnB1c2goYWlwYXlsb2FkKTtcbiAgICBtaWRhdGEuZm9yRWFjaChmdW5jdGlvbihtaWQpIHtcbiAgICAgIHJldHVybiBidWZzLnB1c2gobWlkKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB1OGNvbmNhdChidWZzKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX3NuYXBweV9jaHVuayh0eXBlLCBidWYpIHtcbiAgaWYgKHR5cGUgIT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFNuYXBweSBjaHVuayB0eXBlIFwiLmNvbmNhdCh0eXBlKSk7XG4gIHZhciBwdHIgPSBbMF07XG4gIHZhciB1c3ogPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gIHZhciBjaHVua3MgPSBbXTtcbiAgd2hpbGUgKHB0clswXSA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgdGFnID0gYnVmW3B0clswXV0gJiAzO1xuICAgIGlmICh0YWcgPT0gMCkge1xuICAgICAgdmFyIGxlbiA9IGJ1ZltwdHJbMF0rK10gPj4gMjtcbiAgICAgIGlmIChsZW4gPCA2MClcbiAgICAgICAgKytsZW47XG4gICAgICBlbHNlIHtcbiAgICAgICAgdmFyIGMgPSBsZW4gLSA1OTtcbiAgICAgICAgbGVuID0gYnVmW3B0clswXV07XG4gICAgICAgIGlmIChjID4gMSlcbiAgICAgICAgICBsZW4gfD0gYnVmW3B0clswXSArIDFdIDw8IDg7XG4gICAgICAgIGlmIChjID4gMilcbiAgICAgICAgICBsZW4gfD0gYnVmW3B0clswXSArIDJdIDw8IDE2O1xuICAgICAgICBpZiAoYyA+IDMpXG4gICAgICAgICAgbGVuIHw9IGJ1ZltwdHJbMF0gKyAzXSA8PCAyNDtcbiAgICAgICAgbGVuID4+Pj0gMDtcbiAgICAgICAgbGVuKys7XG4gICAgICAgIHB0clswXSArPSBjO1xuICAgICAgfVxuICAgICAgY2h1bmtzLnB1c2goYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKSk7XG4gICAgICBwdHJbMF0gKz0gbGVuO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvZmZzZXQgPSAwLCBsZW5ndGggPSAwO1xuICAgICAgaWYgKHRhZyA9PSAxKSB7XG4gICAgICAgIGxlbmd0aCA9IChidWZbcHRyWzBdXSA+PiAyICYgNykgKyA0O1xuICAgICAgICBvZmZzZXQgPSAoYnVmW3B0clswXSsrXSAmIDIyNCkgPDwgMztcbiAgICAgICAgb2Zmc2V0IHw9IGJ1ZltwdHJbMF0rK107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZW5ndGggPSAoYnVmW3B0clswXSsrXSA+PiAyKSArIDE7XG4gICAgICAgIGlmICh0YWcgPT0gMikge1xuICAgICAgICAgIG9mZnNldCA9IGJ1ZltwdHJbMF1dIHwgYnVmW3B0clswXSArIDFdIDw8IDg7XG4gICAgICAgICAgcHRyWzBdICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2Zmc2V0ID0gKGJ1ZltwdHJbMF1dIHwgYnVmW3B0clswXSArIDFdIDw8IDggfCBidWZbcHRyWzBdICsgMl0gPDwgMTYgfCBidWZbcHRyWzBdICsgM10gPDwgMjQpID4+PiAwO1xuICAgICAgICAgIHB0clswXSArPSA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaHVua3MgPSBbdThjb25jYXQoY2h1bmtzKV07XG4gICAgICBpZiAob2Zmc2V0ID09IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb2Zmc2V0IDBcIik7XG4gICAgICBpZiAob2Zmc2V0ID4gY2h1bmtzWzBdLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvZmZzZXQgYmV5b25kIGxlbmd0aFwiKTtcbiAgICAgIGlmIChsZW5ndGggPj0gb2Zmc2V0KSB7XG4gICAgICAgIGNodW5rcy5wdXNoKGNodW5rc1swXS5zbGljZSgtb2Zmc2V0KSk7XG4gICAgICAgIGxlbmd0aCAtPSBvZmZzZXQ7XG4gICAgICAgIHdoaWxlIChsZW5ndGggPj0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXS5sZW5ndGgpIHtcbiAgICAgICAgICBjaHVua3MucHVzaChjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBsZW5ndGggLT0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNodW5rcy5wdXNoKGNodW5rc1swXS5zbGljZSgtb2Zmc2V0LCAtb2Zmc2V0ICsgbGVuZ3RoKSk7XG4gICAgfVxuICB9XG4gIHZhciBvID0gdThjb25jYXQoY2h1bmtzKTtcbiAgaWYgKG8ubGVuZ3RoICE9IHVzeilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGxlbmd0aDogXCIuY29uY2F0KG8ubGVuZ3RoLCBcIiAhPSBcIikuY29uY2F0KHVzeikpO1xuICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIGRlY29tcHJlc3NfaXdhX2ZpbGUoYnVmKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgdmFyIGwgPSAwO1xuICB3aGlsZSAobCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgdCA9IGJ1ZltsKytdO1xuICAgIHZhciBsZW4gPSBidWZbbF0gfCBidWZbbCArIDFdIDw8IDggfCBidWZbbCArIDJdIDw8IDE2O1xuICAgIGwgKz0gMztcbiAgICBvdXQucHVzaChwYXJzZV9zbmFwcHlfY2h1bmsodCwgYnVmLnNsaWNlKGwsIGwgKyBsZW4pKSk7XG4gICAgbCArPSBsZW47XG4gIH1cbiAgaWYgKGwgIT09IGJ1Zi5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBpcyBub3QgYSB2YWxpZCBmcmFtZWQgc3RyZWFtIVwiKTtcbiAgcmV0dXJuIHU4Y29uY2F0KG91dCk7XG59XG5mdW5jdGlvbiBjb21wcmVzc19pd2FfZmlsZShidWYpIHtcbiAgdmFyIG91dCA9IFtdO1xuICB2YXIgbCA9IDA7XG4gIHdoaWxlIChsIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciBjID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIGwsIDI2ODQzNTQ1NSk7XG4gICAgdmFyIGZyYW1lID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgb3V0LnB1c2goZnJhbWUpO1xuICAgIHZhciB1c3ogPSB3cml0ZV92YXJpbnQ0OShjKTtcbiAgICB2YXIgTCA9IHVzei5sZW5ndGg7XG4gICAgb3V0LnB1c2godXN6KTtcbiAgICBpZiAoYyA8PSA2MCkge1xuICAgICAgTCsrO1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoW2MgLSAxIDw8IDJdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDI1Nikge1xuICAgICAgTCArPSAyO1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzI0MCwgYyAtIDEgJiAyNTVdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDY1NTM2KSB7XG4gICAgICBMICs9IDM7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbMjQ0LCBjIC0gMSAmIDI1NSwgYyAtIDEgPj4gOCAmIDI1NV0pKTtcbiAgICB9IGVsc2UgaWYgKGMgPD0gMTY3NzcyMTYpIHtcbiAgICAgIEwgKz0gNDtcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNDgsIGMgLSAxICYgMjU1LCBjIC0gMSA+PiA4ICYgMjU1LCBjIC0gMSA+PiAxNiAmIDI1NV0pKTtcbiAgICB9IGVsc2UgaWYgKGMgPD0gNDI5NDk2NzI5Nikge1xuICAgICAgTCArPSA1O1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzI1MiwgYyAtIDEgJiAyNTUsIGMgLSAxID4+IDggJiAyNTUsIGMgLSAxID4+IDE2ICYgMjU1LCBjIC0gMSA+Pj4gMjQgJiAyNTVdKSk7XG4gICAgfVxuICAgIG91dC5wdXNoKGJ1Zi5zbGljZShsLCBsICsgYykpO1xuICAgIEwgKz0gYztcbiAgICBmcmFtZVswXSA9IDA7XG4gICAgZnJhbWVbMV0gPSBMICYgMjU1O1xuICAgIGZyYW1lWzJdID0gTCA+PiA4ICYgMjU1O1xuICAgIGZyYW1lWzNdID0gTCA+PiAxNiAmIDI1NTtcbiAgICBsICs9IGM7XG4gIH1cbiAgcmV0dXJuIHU4Y29uY2F0KG91dCk7XG59XG5mdW5jdGlvbiBwYXJzZV9vbGRfc3RvcmFnZShidWYsIHNzdCwgcnNzdCwgdikge1xuICB2YXIgZHYgPSB1OF90b19kYXRhdmlldyhidWYpO1xuICB2YXIgZmxhZ3MgPSBkdi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG4gIHZhciBkYXRhX29mZnNldCA9ICh2ID4gMSA/IDEyIDogOCkgKyBwb3BjbnQoZmxhZ3MgJiAodiA+IDEgPyAzNDcwIDogMzk4KSkgKiA0O1xuICB2YXIgcmlkeCA9IC0xLCBzaWR4ID0gLTEsIGllZWUgPSBOYU4sIGR0ID0gbmV3IERhdGUoMjAwMSwgMCwgMSk7XG4gIGlmIChmbGFncyAmIDUxMikge1xuICAgIHJpZHggPSBkdi5nZXRVaW50MzIoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDQ7XG4gIH1cbiAgZGF0YV9vZmZzZXQgKz0gcG9wY250KGZsYWdzICYgKHYgPiAxID8gMTIyODggOiA0MDk2KSkgKiA0O1xuICBpZiAoZmxhZ3MgJiAxNikge1xuICAgIHNpZHggPSBkdi5nZXRVaW50MzIoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDQ7XG4gIH1cbiAgaWYgKGZsYWdzICYgMzIpIHtcbiAgICBpZWVlID0gZHYuZ2V0RmxvYXQ2NChkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gODtcbiAgfVxuICBpZiAoZmxhZ3MgJiA2NCkge1xuICAgIGR0LnNldFRpbWUoZHQuZ2V0VGltZSgpICsgZHYuZ2V0RmxvYXQ2NChkYXRhX29mZnNldCwgdHJ1ZSkgKiAxZTMpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgdmFyIHJldDtcbiAgc3dpdGNoIChidWZbMl0pIHtcbiAgICBjYXNlIDA6XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBpZWVlIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICByZXQgPSB7IHQ6IFwic1wiLCB2OiBzc3Rbc2lkeF0gfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHJldCA9IHsgdDogXCJkXCIsIHY6IGR0IH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6XG4gICAgICByZXQgPSB7IHQ6IFwiYlwiLCB2OiBpZWVlID4gMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSAvIDg2NDAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6XG4gICAgICByZXQgPSB7IHQ6IFwiZVwiLCB2OiAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDk6XG4gICAgICB7XG4gICAgICAgIGlmIChyaWR4ID4gLTEpXG4gICAgICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogcnNzdFtyaWR4XSB9O1xuICAgICAgICBlbHNlIGlmIChzaWR4ID4gLTEpXG4gICAgICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogc3N0W3NpZHhdIH07XG4gICAgICAgIGVsc2UgaWYgKCFpc05hTihpZWVlKSlcbiAgICAgICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBpZWVlIH07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIi5jb25jYXQoYnVmLnNsaWNlKDAsIDQpKSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIHBhcnNlX25ld19zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0KSB7XG4gIHZhciBkdiA9IHU4X3RvX2RhdGF2aWV3KGJ1Zik7XG4gIHZhciBmbGFncyA9IGR2LmdldFVpbnQzMig4LCB0cnVlKTtcbiAgdmFyIGRhdGFfb2Zmc2V0ID0gMTI7XG4gIHZhciByaWR4ID0gLTEsIHNpZHggPSAtMSwgZDEyOCA9IE5hTiwgaWVlZSA9IE5hTiwgZHQgPSBuZXcgRGF0ZSgyMDAxLCAwLCAxKTtcbiAgaWYgKGZsYWdzICYgMSkge1xuICAgIGQxMjggPSByZWFkRGVjaW1hbDEyOExFKGJ1ZiwgZGF0YV9vZmZzZXQpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDE2O1xuICB9XG4gIGlmIChmbGFncyAmIDIpIHtcbiAgICBpZWVlID0gZHYuZ2V0RmxvYXQ2NChkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gODtcbiAgfVxuICBpZiAoZmxhZ3MgJiA0KSB7XG4gICAgZHQuc2V0VGltZShkdC5nZXRUaW1lKCkgKyBkdi5nZXRGbG9hdDY0KGRhdGFfb2Zmc2V0LCB0cnVlKSAqIDFlMyk7XG4gICAgZGF0YV9vZmZzZXQgKz0gODtcbiAgfVxuICBpZiAoZmxhZ3MgJiA4KSB7XG4gICAgc2lkeCA9IGR2LmdldFVpbnQzMihkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gNDtcbiAgfVxuICBpZiAoZmxhZ3MgJiAxNikge1xuICAgIHJpZHggPSBkdi5nZXRVaW50MzIoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDQ7XG4gIH1cbiAgdmFyIHJldDtcbiAgc3dpdGNoIChidWZbMV0pIHtcbiAgICBjYXNlIDA6XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBkMTI4IH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICByZXQgPSB7IHQ6IFwic1wiLCB2OiBzc3Rbc2lkeF0gfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHJldCA9IHsgdDogXCJkXCIsIHY6IGR0IH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6XG4gICAgICByZXQgPSB7IHQ6IFwiYlwiLCB2OiBpZWVlID4gMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSAvIDg2NDAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6XG4gICAgICByZXQgPSB7IHQ6IFwiZVwiLCB2OiAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDk6XG4gICAgICB7XG4gICAgICAgIGlmIChyaWR4ID4gLTEpXG4gICAgICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogcnNzdFtyaWR4XSB9O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiLmNvbmNhdChidWZbMV0sIFwiIDogXCIpLmNvbmNhdChmbGFncyAmIDMxLCBcIiA6IFwiKS5jb25jYXQoYnVmLnNsaWNlKDAsIDQpKSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogZDEyOCB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIi5jb25jYXQoYnVmWzFdLCBcIiA6IFwiKS5jb25jYXQoZmxhZ3MgJiAzMSwgXCIgOiBcIikuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9uZXdfc3RvcmFnZShjZWxsLCBzc3QpIHtcbiAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KDMyKSwgZHYgPSB1OF90b19kYXRhdmlldyhvdXQpLCBsID0gMTIsIGZsYWdzID0gMDtcbiAgb3V0WzBdID0gNTtcbiAgc3dpdGNoIChjZWxsLnQpIHtcbiAgICBjYXNlIFwiblwiOlxuICAgICAgb3V0WzFdID0gMjtcbiAgICAgIHdyaXRlRGVjaW1hbDEyOExFKG91dCwgbCwgY2VsbC52KTtcbiAgICAgIGZsYWdzIHw9IDE7XG4gICAgICBsICs9IDE2O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJcIjpcbiAgICAgIG91dFsxXSA9IDY7XG4gICAgICBkdi5zZXRGbG9hdDY0KGwsIGNlbGwudiA/IDEgOiAwLCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDI7XG4gICAgICBsICs9IDg7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwic1wiOlxuICAgICAgaWYgKHNzdC5pbmRleE9mKGNlbGwudikgPT0gLTEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbHVlIFwiLmNvbmNhdChjZWxsLnYsIFwiIG1pc3NpbmcgZnJvbSBTU1QhXCIpKTtcbiAgICAgIG91dFsxXSA9IDM7XG4gICAgICBkdi5zZXRVaW50MzIobCwgc3N0LmluZGV4T2YoY2VsbC52KSwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSA4O1xuICAgICAgbCArPSA0O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IFwidW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiICsgY2VsbC50O1xuICB9XG4gIGR2LnNldFVpbnQzMig4LCBmbGFncywgdHJ1ZSk7XG4gIHJldHVybiBvdXQuc2xpY2UoMCwgbCk7XG59XG5mdW5jdGlvbiB3cml0ZV9vbGRfc3RvcmFnZShjZWxsLCBzc3QpIHtcbiAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KDMyKSwgZHYgPSB1OF90b19kYXRhdmlldyhvdXQpLCBsID0gMTIsIGZsYWdzID0gMDtcbiAgb3V0WzBdID0gMztcbiAgc3dpdGNoIChjZWxsLnQpIHtcbiAgICBjYXNlIFwiblwiOlxuICAgICAgb3V0WzJdID0gMjtcbiAgICAgIGR2LnNldEZsb2F0NjQobCwgY2VsbC52LCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDMyO1xuICAgICAgbCArPSA4O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJcIjpcbiAgICAgIG91dFsyXSA9IDY7XG4gICAgICBkdi5zZXRGbG9hdDY0KGwsIGNlbGwudiA/IDEgOiAwLCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDMyO1xuICAgICAgbCArPSA4O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInNcIjpcbiAgICAgIGlmIChzc3QuaW5kZXhPZihjZWxsLnYpID09IC0xKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBcIi5jb25jYXQoY2VsbC52LCBcIiBtaXNzaW5nIGZyb20gU1NUIVwiKSk7XG4gICAgICBvdXRbMl0gPSAzO1xuICAgICAgZHYuc2V0VWludDMyKGwsIHNzdC5pbmRleE9mKGNlbGwudiksIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gMTY7XG4gICAgICBsICs9IDQ7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgXCJ1bnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIgKyBjZWxsLnQ7XG4gIH1cbiAgZHYuc2V0VWludDMyKDQsIGZsYWdzLCB0cnVlKTtcbiAgcmV0dXJuIG91dC5zbGljZSgwLCBsKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX2NlbGxfc3RvcmFnZShidWYsIHNzdCwgcnNzdCkge1xuICBzd2l0Y2ggKGJ1ZlswXSkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBwYXJzZV9vbGRfc3RvcmFnZShidWYsIHNzdCwgcnNzdCwgYnVmWzBdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gcGFyc2VfbmV3X3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBwYXlsb2FkIHZlcnNpb24gXCIuY29uY2F0KGJ1ZlswXSkpO1xuICB9XG59XG5mdW5jdGlvbiBwYXJzZV9UU1BfUmVmZXJlbmNlKGJ1Zikge1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KGJ1Zik7XG4gIHJldHVybiBwYXJzZV92YXJpbnQ0OShwYlsxXVswXS5kYXRhKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1RTUF9SZWZlcmVuY2UoaWR4KSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgb3V0WzFdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoaWR4KSB9XTtcbiAgcmV0dXJuIHdyaXRlX3NoYWxsb3cob3V0KTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1RTVF9UYWJsZURhdGFMaXN0KE0sIHJvb3QpIHtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgdHlwZSA9IHZhcmludF90b19pMzIocGJbMV1bMF0uZGF0YSk7XG4gIHZhciBlbnRyaWVzID0gcGJbM107XG4gIHZhciBkYXRhID0gW107XG4gIChlbnRyaWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgdmFyIGxlID0gcGFyc2Vfc2hhbGxvdyhlbnRyeS5kYXRhKTtcbiAgICB2YXIga2V5ID0gdmFyaW50X3RvX2kzMihsZVsxXVswXS5kYXRhKSA+Pj4gMDtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZGF0YVtrZXldID0gdThzdHIobGVbM11bMF0uZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIHJ0ID0gTVtwYXJzZV9UU1BfUmVmZXJlbmNlKGxlWzldWzBdLmRhdGEpXVswXTtcbiAgICAgICAgICB2YXIgcnRwID0gcGFyc2Vfc2hhbGxvdyhydC5kYXRhKTtcbiAgICAgICAgICB2YXIgcnRwcmVmID0gTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHJ0cFsxXVswXS5kYXRhKV1bMF07XG4gICAgICAgICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihydHByZWYubWV0YVsxXVswXS5kYXRhKTtcbiAgICAgICAgICBpZiAobXR5cGUgIT0gMjAwMSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjIwMDAgdW5leHBlY3RlZCByZWZlcmVuY2UgdG8gXCIuY29uY2F0KG10eXBlKSk7XG4gICAgICAgICAgdmFyIHRzd3BzYSA9IHBhcnNlX3NoYWxsb3cocnRwcmVmLmRhdGEpO1xuICAgICAgICAgIGRhdGFba2V5XSA9IHRzd3BzYVszXS5tYXAoZnVuY3Rpb24oeCkge1xuICAgICAgICAgICAgcmV0dXJuIHU4c3RyKHguZGF0YSk7XG4gICAgICAgICAgfSkuam9pbihcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGF0YTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1RTVF9UaWxlUm93SW5mbyh1OCwgdHlwZSkge1xuICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaSwgX2osIF9rLCBfbCwgX20sIF9uO1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHU4KTtcbiAgdmFyIFIgPSB2YXJpbnRfdG9faTMyKHBiWzFdWzBdLmRhdGEpID4+PiAwO1xuICB2YXIgY250ID0gdmFyaW50X3RvX2kzMihwYlsyXVswXS5kYXRhKSA+Pj4gMDtcbiAgdmFyIHdpZGVfb2Zmc2V0cyA9ICgoX2IgPSAoX2EgPSBwYls4XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2IuZGF0YSkgJiYgdmFyaW50X3RvX2kzMihwYls4XVswXS5kYXRhKSA+IDAgfHwgZmFsc2U7XG4gIHZhciB1c2VkX3N0b3JhZ2VfdTgsIHVzZWRfc3RvcmFnZTtcbiAgaWYgKCgoX2QgPSAoX2MgPSBwYls3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2QuZGF0YSkgJiYgdHlwZSAhPSAwKSB7XG4gICAgdXNlZF9zdG9yYWdlX3U4ID0gKF9mID0gKF9lID0gcGJbN10pID09IG51bGwgPyB2b2lkIDAgOiBfZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9mLmRhdGE7XG4gICAgdXNlZF9zdG9yYWdlID0gKF9oID0gKF9nID0gcGJbNl0pID09IG51bGwgPyB2b2lkIDAgOiBfZ1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9oLmRhdGE7XG4gIH0gZWxzZSBpZiAoKChfaiA9IChfaSA9IHBiWzRdKSA9PSBudWxsID8gdm9pZCAwIDogX2lbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfai5kYXRhKSAmJiB0eXBlICE9IDEpIHtcbiAgICB1c2VkX3N0b3JhZ2VfdTggPSAoX2wgPSAoX2sgPSBwYls0XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9rWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2wuZGF0YTtcbiAgICB1c2VkX3N0b3JhZ2UgPSAoX24gPSAoX20gPSBwYlszXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX24uZGF0YTtcbiAgfSBlbHNlXG4gICAgdGhyb3cgXCJOVU1CRVJTIFRpbGUgbWlzc2luZyBcIi5jb25jYXQodHlwZSwgXCIgY2VsbCBzdG9yYWdlXCIpO1xuICB2YXIgd2lkdGggPSB3aWRlX29mZnNldHMgPyA0IDogMTtcbiAgdmFyIHVzZWRfc3RvcmFnZV9vZmZzZXRzID0gdThfdG9fZGF0YXZpZXcodXNlZF9zdG9yYWdlX3U4KTtcbiAgdmFyIG9mZnNldHMgPSBbXTtcbiAgZm9yICh2YXIgQyA9IDA7IEMgPCB1c2VkX3N0b3JhZ2VfdTgubGVuZ3RoIC8gMjsgKytDKSB7XG4gICAgdmFyIG9mZiA9IHVzZWRfc3RvcmFnZV9vZmZzZXRzLmdldFVpbnQxNihDICogMiwgdHJ1ZSk7XG4gICAgaWYgKG9mZiA8IDY1NTM1KVxuICAgICAgb2Zmc2V0cy5wdXNoKFtDLCBvZmZdKTtcbiAgfVxuICBpZiAob2Zmc2V0cy5sZW5ndGggIT0gY250KVxuICAgIHRocm93IFwiRXhwZWN0ZWQgXCIuY29uY2F0KGNudCwgXCIgY2VsbHMsIGZvdW5kIFwiKS5jb25jYXQob2Zmc2V0cy5sZW5ndGgpO1xuICB2YXIgY2VsbHMgPSBbXTtcbiAgZm9yIChDID0gMDsgQyA8IG9mZnNldHMubGVuZ3RoIC0gMTsgKytDKVxuICAgIGNlbGxzW29mZnNldHNbQ11bMF1dID0gdXNlZF9zdG9yYWdlLnN1YmFycmF5KG9mZnNldHNbQ11bMV0gKiB3aWR0aCwgb2Zmc2V0c1tDICsgMV1bMV0gKiB3aWR0aCk7XG4gIGlmIChvZmZzZXRzLmxlbmd0aCA+PSAxKVxuICAgIGNlbGxzW29mZnNldHNbb2Zmc2V0cy5sZW5ndGggLSAxXVswXV0gPSB1c2VkX3N0b3JhZ2Uuc3ViYXJyYXkob2Zmc2V0c1tvZmZzZXRzLmxlbmd0aCAtIDFdWzFdICogd2lkdGgpO1xuICByZXR1cm4geyBSOiBSLCBjZWxsczogY2VsbHMgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1RTVF9UaWxlKE0sIHJvb3QpIHtcbiAgdmFyIF9hO1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciBzdG9yYWdlID0gKChfYSA9IHBiID09IG51bGwgPyB2b2lkIDAgOiBwYls3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA/IHZhcmludF90b19pMzIocGJbN11bMF0uZGF0YSkgPj4+IDAgPiAwID8gMSA6IDAgOiAtMTtcbiAgdmFyIHJpID0gbWFwcGEocGJbNV0sIGZ1bmN0aW9uKHU4KSB7XG4gICAgcmV0dXJuIHBhcnNlX1RTVF9UaWxlUm93SW5mbyh1OCwgc3RvcmFnZSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5yb3dzOiB2YXJpbnRfdG9faTMyKHBiWzRdWzBdLmRhdGEpID4+PiAwLFxuICAgIGRhdGE6IHJpLnJlZHVjZShmdW5jdGlvbihhY2MsIHgpIHtcbiAgICAgIGlmICghYWNjW3guUl0pXG4gICAgICAgIGFjY1t4LlJdID0gW107XG4gICAgICB4LmNlbGxzLmZvckVhY2goZnVuY3Rpb24oY2VsbCwgQykge1xuICAgICAgICBpZiAoYWNjW3guUl1bQ10pXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHVwbGljYXRlIGNlbGwgcj1cIi5jb25jYXQoeC5SLCBcIiBjPVwiKS5jb25jYXQoQykpO1xuICAgICAgICBhY2NbeC5SXVtDXSA9IGNlbGw7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pXG4gIH07XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGFibGVNb2RlbEFyY2hpdmUoTSwgcm9vdCwgd3MpIHtcbiAgdmFyIF9hO1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciByYW5nZSA9IHsgczogeyByOiAwLCBjOiAwIH0sIGU6IHsgcjogMCwgYzogMCB9IH07XG4gIHJhbmdlLmUuciA9ICh2YXJpbnRfdG9faTMyKHBiWzZdWzBdLmRhdGEpID4+PiAwKSAtIDE7XG4gIGlmIChyYW5nZS5lLnIgPCAwKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcm93IHZhcmludCBcIi5jb25jYXQocGJbNl1bMF0uZGF0YSkpO1xuICByYW5nZS5lLmMgPSAodmFyaW50X3RvX2kzMihwYls3XVswXS5kYXRhKSA+Pj4gMCkgLSAxO1xuICBpZiAocmFuZ2UuZS5jIDwgMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbCB2YXJpbnQgXCIuY29uY2F0KHBiWzddWzBdLmRhdGEpKTtcbiAgd3NbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcbiAgdmFyIHN0b3JlID0gcGFyc2Vfc2hhbGxvdyhwYls0XVswXS5kYXRhKTtcbiAgdmFyIHNzdCA9IHBhcnNlX1RTVF9UYWJsZURhdGFMaXN0KE0sIE1bcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVs0XVswXS5kYXRhKV1bMF0pO1xuICB2YXIgcnNzdCA9ICgoX2EgPSBzdG9yZVsxN10pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPyBwYXJzZV9UU1RfVGFibGVEYXRhTGlzdChNLCBNW3BhcnNlX1RTUF9SZWZlcmVuY2Uoc3RvcmVbMTddWzBdLmRhdGEpXVswXSkgOiBbXTtcbiAgdmFyIHRpbGUgPSBwYXJzZV9zaGFsbG93KHN0b3JlWzNdWzBdLmRhdGEpO1xuICB2YXIgX1IgPSAwO1xuICB0aWxlWzFdLmZvckVhY2goZnVuY3Rpb24odCkge1xuICAgIHZhciB0bCA9IHBhcnNlX3NoYWxsb3codC5kYXRhKTtcbiAgICB2YXIgcmVmID0gTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHRsWzJdWzBdLmRhdGEpXVswXTtcbiAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKHJlZi5tZXRhWzFdWzBdLmRhdGEpO1xuICAgIGlmIChtdHlwZSAhPSA2MDAyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiNjAwMSB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byBcIi5jb25jYXQobXR5cGUpKTtcbiAgICB2YXIgX3RpbGUgPSBwYXJzZV9UU1RfVGlsZShNLCByZWYpO1xuICAgIF90aWxlLmRhdGEuZm9yRWFjaChmdW5jdGlvbihyb3csIFIpIHtcbiAgICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uKGJ1ZiwgQykge1xuICAgICAgICB2YXIgYWRkciA9IGVuY29kZV9jZWxsKHsgcjogX1IgKyBSLCBjOiBDIH0pO1xuICAgICAgICB2YXIgcmVzID0gcGFyc2VfY2VsbF9zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0KTtcbiAgICAgICAgaWYgKHJlcylcbiAgICAgICAgICB3c1thZGRyXSA9IHJlcztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIF9SICs9IF90aWxlLm5yb3dzO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1RTVF9UYWJsZUluZm9BcmNoaXZlKE0sIHJvb3QpIHtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgb3V0ID0geyBcIiFyZWZcIjogXCJBMVwiIH07XG4gIHZhciB0YWJsZXJlZiA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZShwYlsyXVswXS5kYXRhKV07XG4gIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIodGFibGVyZWZbMF0ubWV0YVsxXVswXS5kYXRhKTtcbiAgaWYgKG10eXBlICE9IDYwMDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiNjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byBcIi5jb25jYXQobXR5cGUpKTtcbiAgcGFyc2VfVFNUX1RhYmxlTW9kZWxBcmNoaXZlKE0sIHRhYmxlcmVmWzBdLCBvdXQpO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gcGFyc2VfVE5fU2hlZXRBcmNoaXZlKE0sIHJvb3QpIHtcbiAgdmFyIF9hO1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciBvdXQgPSB7XG4gICAgbmFtZTogKChfYSA9IHBiWzFdKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID8gdThzdHIocGJbMV1bMF0uZGF0YSkgOiBcIlwiLFxuICAgIHNoZWV0czogW11cbiAgfTtcbiAgdmFyIHNoYXBlb2ZmcyA9IG1hcHBhKHBiWzJdLCBwYXJzZV9UU1BfUmVmZXJlbmNlKTtcbiAgc2hhcGVvZmZzLmZvckVhY2goZnVuY3Rpb24ob2ZmKSB7XG4gICAgTVtvZmZdLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihtLm1ldGFbMV1bMF0uZGF0YSk7XG4gICAgICBpZiAobXR5cGUgPT0gNmUzKVxuICAgICAgICBvdXQuc2hlZXRzLnB1c2gocGFyc2VfVFNUX1RhYmxlSW5mb0FyY2hpdmUoTSwgbSkpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBhcnNlX1ROX0RvY3VtZW50QXJjaGl2ZShNLCByb290KSB7XG4gIHZhciBvdXQgPSBib29rX25ldygpO1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciBzaGVldG9mZnMgPSBtYXBwYShwYlsxXSwgcGFyc2VfVFNQX1JlZmVyZW5jZSk7XG4gIHNoZWV0b2Zmcy5mb3JFYWNoKGZ1bmN0aW9uKG9mZikge1xuICAgIE1bb2ZmXS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIobS5tZXRhWzFdWzBdLmRhdGEpO1xuICAgICAgaWYgKG10eXBlID09IDIpIHtcbiAgICAgICAgdmFyIHJvb3QyID0gcGFyc2VfVE5fU2hlZXRBcmNoaXZlKE0sIG0pO1xuICAgICAgICByb290Mi5zaGVldHMuZm9yRWFjaChmdW5jdGlvbihzaGVldCwgaWR4KSB7XG4gICAgICAgICAgYm9va19hcHBlbmRfc2hlZXQob3V0LCBzaGVldCwgaWR4ID09IDAgPyByb290Mi5uYW1lIDogcm9vdDIubmFtZSArIFwiX1wiICsgaWR4LCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBpZiAob3V0LlNoZWV0TmFtZXMubGVuZ3RoID09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRW1wdHkgTlVNQkVSUyBmaWxlXCIpO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gcGFyc2VfbnVtYmVyc19pd2EoY2ZiKSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgdmFyIE0gPSB7fSwgaW5kaWNlcyA9IFtdO1xuICBjZmIuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocCkge1xuICAgIGlmIChwLm1hdGNoKC9cXC5pd3B2Mi8pKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFzc3dvcmQgcHJvdGVjdGlvblwiKTtcbiAgfSk7XG4gIGNmYi5GaWxlSW5kZXguZm9yRWFjaChmdW5jdGlvbihzKSB7XG4gICAgaWYgKCFzLm5hbWUubWF0Y2goL1xcLml3YSQvKSlcbiAgICAgIHJldHVybjtcbiAgICB2YXIgbztcbiAgICB0cnkge1xuICAgICAgbyA9IGRlY29tcHJlc3NfaXdhX2ZpbGUocy5jb250ZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gY29uc29sZS5sb2coXCI/PyBcIiArIHMuY29udGVudC5sZW5ndGggKyBcIiBcIiArIChlLm1lc3NhZ2UgfHwgZSkpO1xuICAgIH1cbiAgICB2YXIgcGFja2V0cztcbiAgICB0cnkge1xuICAgICAgcGFja2V0cyA9IHBhcnNlX2l3YV9maWxlKG8pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIiMjIFwiICsgKGUubWVzc2FnZSB8fCBlKSk7XG4gICAgfVxuICAgIHBhY2tldHMuZm9yRWFjaChmdW5jdGlvbihwYWNrZXQpIHtcbiAgICAgIE1bcGFja2V0LmlkXSA9IHBhY2tldC5tZXNzYWdlcztcbiAgICAgIGluZGljZXMucHVzaChwYWNrZXQuaWQpO1xuICAgIH0pO1xuICB9KTtcbiAgaWYgKCFpbmRpY2VzLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGhhcyBubyBtZXNzYWdlc1wiKTtcbiAgdmFyIGRvY3Jvb3QgPSAoKF9kID0gKF9jID0gKF9iID0gKF9hID0gTSA9PSBudWxsID8gdm9pZCAwIDogTVsxXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2IubWV0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jWzFdKSA9PSBudWxsID8gdm9pZCAwIDogX2RbMF0uZGF0YSkgJiYgdmFyaW50X3RvX2kzMihNWzFdWzBdLm1ldGFbMV1bMF0uZGF0YSkgPT0gMSAmJiBNWzFdWzBdO1xuICBpZiAoIWRvY3Jvb3QpXG4gICAgaW5kaWNlcy5mb3JFYWNoKGZ1bmN0aW9uKGlkeCkge1xuICAgICAgTVtpZHhdLmZvckVhY2goZnVuY3Rpb24oaXdhbSkge1xuICAgICAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKGl3YW0ubWV0YVsxXVswXS5kYXRhKSA+Pj4gMDtcbiAgICAgICAgaWYgKG10eXBlID09IDEpIHtcbiAgICAgICAgICBpZiAoIWRvY3Jvb3QpXG4gICAgICAgICAgICBkb2Nyb290ID0gaXdhbTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb2N1bWVudCBoYXMgbXVsdGlwbGUgcm9vdHNcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICBpZiAoIWRvY3Jvb3QpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgRG9jdW1lbnQgcm9vdFwiKTtcbiAgcmV0dXJuIHBhcnNlX1ROX0RvY3VtZW50QXJjaGl2ZShNLCBkb2Nyb290KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3RpbGVfcm93KHRyaSwgZGF0YSwgU1NUKSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgaWYgKCEoKF9hID0gdHJpWzZdKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pIHx8ICEoKF9iID0gdHJpWzddKSA9PSBudWxsID8gdm9pZCAwIDogX2JbMF0pKVxuICAgIHRocm93IFwiTXV0YXRpb24gb25seSB3b3JrcyBvbiBwb3N0LUJOQyBzdG9yYWdlcyFcIjtcbiAgdmFyIHdpZGVfb2Zmc2V0cyA9ICgoX2QgPSAoX2MgPSB0cmlbOF0pID09IG51bGwgPyB2b2lkIDAgOiBfY1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmRhdGEpICYmIHZhcmludF90b19pMzIodHJpWzhdWzBdLmRhdGEpID4gMCB8fCBmYWxzZTtcbiAgaWYgKHdpZGVfb2Zmc2V0cylcbiAgICB0aHJvdyBcIk1hdGggb25seSB3b3JrcyB3aXRoIG5vcm1hbCBvZmZzZXRzXCI7XG4gIHZhciBjbnQgPSAwO1xuICB2YXIgZHYgPSB1OF90b19kYXRhdmlldyh0cmlbN11bMF0uZGF0YSksIGxhc3Rfb2Zmc2V0ID0gMCwgY2VsbF9zdG9yYWdlID0gW107XG4gIHZhciBfZHYgPSB1OF90b19kYXRhdmlldyh0cmlbNF1bMF0uZGF0YSksIF9sYXN0X29mZnNldCA9IDAsIF9jZWxsX3N0b3JhZ2UgPSBbXTtcbiAgZm9yICh2YXIgQyA9IDA7IEMgPCBkYXRhLmxlbmd0aDsgKytDKSB7XG4gICAgaWYgKGRhdGFbQ10gPT0gbnVsbCkge1xuICAgICAgZHYuc2V0VWludDE2KEMgKiAyLCA2NTUzNSwgdHJ1ZSk7XG4gICAgICBfZHYuc2V0VWludDE2KEMgKiAyLCA2NTUzNSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZHYuc2V0VWludDE2KEMgKiAyLCBsYXN0X29mZnNldCwgdHJ1ZSk7XG4gICAgX2R2LnNldFVpbnQxNihDICogMiwgX2xhc3Rfb2Zmc2V0LCB0cnVlKTtcbiAgICB2YXIgY2VsbG9hZCwgX2NlbGxvYWQ7XG4gICAgc3dpdGNoICh0eXBlb2YgZGF0YVtDXSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICBjZWxsb2FkID0gd3JpdGVfbmV3X3N0b3JhZ2UoeyB0OiBcInNcIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBfY2VsbG9hZCA9IHdyaXRlX29sZF9zdG9yYWdlKHsgdDogXCJzXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGNlbGxvYWQgPSB3cml0ZV9uZXdfc3RvcmFnZSh7IHQ6IFwiblwiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIF9jZWxsb2FkID0gd3JpdGVfb2xkX3N0b3JhZ2UoeyB0OiBcIm5cIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIGNlbGxvYWQgPSB3cml0ZV9uZXdfc3RvcmFnZSh7IHQ6IFwiYlwiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIF9jZWxsb2FkID0gd3JpdGVfb2xkX3N0b3JhZ2UoeyB0OiBcImJcIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHZhbHVlIFwiICsgZGF0YVtDXSk7XG4gICAgfVxuICAgIGNlbGxfc3RvcmFnZS5wdXNoKGNlbGxvYWQpO1xuICAgIGxhc3Rfb2Zmc2V0ICs9IGNlbGxvYWQubGVuZ3RoO1xuICAgIF9jZWxsX3N0b3JhZ2UucHVzaChfY2VsbG9hZCk7XG4gICAgX2xhc3Rfb2Zmc2V0ICs9IF9jZWxsb2FkLmxlbmd0aDtcbiAgICArK2NudDtcbiAgfVxuICB0cmlbMl1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KGNudCk7XG4gIGZvciAoOyBDIDwgdHJpWzddWzBdLmRhdGEubGVuZ3RoIC8gMjsgKytDKSB7XG4gICAgZHYuc2V0VWludDE2KEMgKiAyLCA2NTUzNSwgdHJ1ZSk7XG4gICAgX2R2LnNldFVpbnQxNihDICogMiwgNjU1MzUsIHRydWUpO1xuICB9XG4gIHRyaVs2XVswXS5kYXRhID0gdThjb25jYXQoY2VsbF9zdG9yYWdlKTtcbiAgdHJpWzNdWzBdLmRhdGEgPSB1OGNvbmNhdChfY2VsbF9zdG9yYWdlKTtcbiAgcmV0dXJuIGNudDtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bWJlcnNfaXdhKHdiLCBvcHRzKSB7XG4gIGlmICghb3B0cyB8fCAhb3B0cy5udW1iZXJzKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgcGFzcyBhIGBudW1iZXJzYCBvcHRpb24gLS0gY2hlY2sgdGhlIFJFQURNRVwiKTtcbiAgdmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbMF1dO1xuICBpZiAod2IuU2hlZXROYW1lcy5sZW5ndGggPiAxKVxuICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgTnVtYmVycyB3cml0ZXIgY3VycmVudGx5IHdyaXRlcyBvbmx5IHRoZSBmaXJzdCB0YWJsZVwiKTtcbiAgdmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG4gIHJhbmdlLnMuciA9IHJhbmdlLnMuYyA9IDA7XG4gIHZhciB0cnVuYyA9IGZhbHNlO1xuICBpZiAocmFuZ2UuZS5jID4gOSkge1xuICAgIHRydW5jID0gdHJ1ZTtcbiAgICByYW5nZS5lLmMgPSA5O1xuICB9XG4gIGlmIChyYW5nZS5lLnIgPiA0OSkge1xuICAgIHRydW5jID0gdHJ1ZTtcbiAgICByYW5nZS5lLnIgPSA0OTtcbiAgfVxuICBpZiAodHJ1bmMpXG4gICAgY29uc29sZS5lcnJvcihcIlRoZSBOdW1iZXJzIHdyaXRlciBpcyBjdXJyZW50bHkgbGltaXRlZCB0byBcIi5jb25jYXQoZW5jb2RlX3JhbmdlKHJhbmdlKSkpO1xuICB2YXIgZGF0YSA9IHNoZWV0X3RvX2pzb24od3MsIHsgcmFuZ2U6IHJhbmdlLCBoZWFkZXI6IDEgfSk7XG4gIHZhciBTU1QgPSBbXCJ+U2gzM3RKNX5cIl07XG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihyb3cpIHtcbiAgICByZXR1cm4gcm93LmZvckVhY2goZnVuY3Rpb24oY2VsbCkge1xuICAgICAgaWYgKHR5cGVvZiBjZWxsID09IFwic3RyaW5nXCIpXG4gICAgICAgIFNTVC5wdXNoKGNlbGwpO1xuICAgIH0pO1xuICB9KTtcbiAgdmFyIGRlcGVuZGVudHMgPSB7fTtcbiAgdmFyIGluZGljZXMgPSBbXTtcbiAgdmFyIGNmYiA9IENGQi5yZWFkKG9wdHMubnVtYmVycywgeyB0eXBlOiBcImJhc2U2NFwiIH0pO1xuICBjZmIuRmlsZUluZGV4Lm1hcChmdW5jdGlvbihmaSwgaWR4KSB7XG4gICAgcmV0dXJuIFtmaSwgY2ZiLkZ1bGxQYXRoc1tpZHhdXTtcbiAgfSkuZm9yRWFjaChmdW5jdGlvbihyb3cpIHtcbiAgICB2YXIgZmkgPSByb3dbMF0sIGZwID0gcm93WzFdO1xuICAgIGlmIChmaS50eXBlICE9IDIpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFmaS5uYW1lLm1hdGNoKC9cXC5pd2EvKSlcbiAgICAgIHJldHVybjtcbiAgICB2YXIgb2xkX2NvbnRlbnQgPSBmaS5jb250ZW50O1xuICAgIHZhciByYXcxID0gZGVjb21wcmVzc19pd2FfZmlsZShvbGRfY29udGVudCk7XG4gICAgdmFyIHgyID0gcGFyc2VfaXdhX2ZpbGUocmF3MSk7XG4gICAgeDIuZm9yRWFjaChmdW5jdGlvbihwYWNrZXQyKSB7XG4gICAgICBpbmRpY2VzLnB1c2gocGFja2V0Mi5pZCk7XG4gICAgICBkZXBlbmRlbnRzW3BhY2tldDIuaWRdID0geyBkZXBzOiBbXSwgbG9jYXRpb246IGZwLCB0eXBlOiB2YXJpbnRfdG9faTMyKHBhY2tldDIubWVzc2FnZXNbMF0ubWV0YVsxXVswXS5kYXRhKSB9O1xuICAgIH0pO1xuICB9KTtcbiAgaW5kaWNlcy5zb3J0KGZ1bmN0aW9uKHgyLCB5Mikge1xuICAgIHJldHVybiB4MiAtIHkyO1xuICB9KTtcbiAgdmFyIGluZGljZXNfdmFyaW50ID0gaW5kaWNlcy5maWx0ZXIoZnVuY3Rpb24oeDIpIHtcbiAgICByZXR1cm4geDIgPiAxO1xuICB9KS5tYXAoZnVuY3Rpb24oeDIpIHtcbiAgICByZXR1cm4gW3gyLCB3cml0ZV92YXJpbnQ0OSh4MildO1xuICB9KTtcbiAgY2ZiLkZpbGVJbmRleC5tYXAoZnVuY3Rpb24oZmksIGlkeCkge1xuICAgIHJldHVybiBbZmksIGNmYi5GdWxsUGF0aHNbaWR4XV07XG4gIH0pLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgdmFyIGZpID0gcm93WzBdLCBmcCA9IHJvd1sxXTtcbiAgICBpZiAoIWZpLm5hbWUubWF0Y2goL1xcLml3YS8pKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciB4MiA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZmkuY29udGVudCkpO1xuICAgIHgyLmZvckVhY2goZnVuY3Rpb24oaWEpIHtcbiAgICAgIGlhLm1lc3NhZ2VzLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgICBpbmRpY2VzX3ZhcmludC5mb3JFYWNoKGZ1bmN0aW9uKGl2aSkge1xuICAgICAgICAgIGlmIChpYS5tZXNzYWdlcy5zb21lKGZ1bmN0aW9uKG1lc3MpIHtcbiAgICAgICAgICAgIHJldHVybiB2YXJpbnRfdG9faTMyKG1lc3MubWV0YVsxXVswXS5kYXRhKSAhPSAxMTAwNiAmJiB1OGNvbnRhaW5zKG1lc3MuZGF0YSwgaXZpWzFdKTtcbiAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgZGVwZW5kZW50c1tpdmlbMF1dLmRlcHMucHVzaChpYS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgZnVuY3Rpb24gZ2V0X3VuaXF1ZV9tc2dpZCgpIHtcbiAgICBmb3IgKHZhciBpID0gOTI3MjYyOyBpIDwgMmU2OyArK2kpXG4gICAgICBpZiAoIWRlcGVuZGVudHNbaV0pXG4gICAgICAgIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBtYW55IG1lc3NhZ2VzXCIpO1xuICB9XG4gIHZhciBlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1sxXS5sb2NhdGlvbik7XG4gIHZhciB4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShlbnRyeS5jb250ZW50KSk7XG4gIHZhciBkb2Nyb290O1xuICBmb3IgKHZhciB4aSA9IDA7IHhpIDwgeC5sZW5ndGg7ICsreGkpIHtcbiAgICB2YXIgcGFja2V0ID0geFt4aV07XG4gICAgaWYgKHBhY2tldC5pZCA9PSAxKVxuICAgICAgZG9jcm9vdCA9IHBhY2tldDtcbiAgfVxuICB2YXIgc2hlZXRyb290cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShwYXJzZV9zaGFsbG93KGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSlbMV1bMF0uZGF0YSk7XG4gIGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3NoZWV0cm9vdHJlZl0ubG9jYXRpb24pO1xuICB4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShlbnRyeS5jb250ZW50KSk7XG4gIGZvciAoeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgcGFja2V0ID0geFt4aV07XG4gICAgaWYgKHBhY2tldC5pZCA9PSBzaGVldHJvb3RyZWYpXG4gICAgICBkb2Nyb290ID0gcGFja2V0O1xuICB9XG4gIHNoZWV0cm9vdHJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGFyc2Vfc2hhbGxvdyhkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEpWzJdWzBdLmRhdGEpO1xuICBlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzaGVldHJvb3RyZWZdLmxvY2F0aW9uKTtcbiAgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICBmb3IgKHhpID0gMDsgeGkgPCB4Lmxlbmd0aDsgKyt4aSkge1xuICAgIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gc2hlZXRyb290cmVmKVxuICAgICAgZG9jcm9vdCA9IHBhY2tldDtcbiAgfVxuICBzaGVldHJvb3RyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKVsyXVswXS5kYXRhKTtcbiAgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbc2hlZXRyb290cmVmXS5sb2NhdGlvbik7XG4gIHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGVudHJ5LmNvbnRlbnQpKTtcbiAgZm9yICh4aSA9IDA7IHhpIDwgeC5sZW5ndGg7ICsreGkpIHtcbiAgICBwYWNrZXQgPSB4W3hpXTtcbiAgICBpZiAocGFja2V0LmlkID09IHNoZWV0cm9vdHJlZilcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEpO1xuICB7XG4gICAgcGJbNl1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpO1xuICAgIHBiWzddWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLmMgKyAxKTtcbiAgICB2YXIgY3J1aWRzcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShwYls0Nl1bMF0uZGF0YSk7XG4gICAgdmFyIG9sZGJ1Y2tldCA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tjcnVpZHNyZWZdLmxvY2F0aW9uKTtcbiAgICB2YXIgX3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKG9sZGJ1Y2tldC5jb250ZW50KSk7XG4gICAge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBfeC5sZW5ndGg7ICsraikge1xuICAgICAgICBpZiAoX3hbal0uaWQgPT0gY3J1aWRzcmVmKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKF94W2pdLmlkICE9IGNydWlkc3JlZilcbiAgICAgICAgdGhyb3cgXCJCYWQgQ29sdW1uUm93VUlETWFwQXJjaGl2ZVwiO1xuICAgICAgdmFyIGNydWlkcyA9IHBhcnNlX3NoYWxsb3coX3hbal0ubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICBjcnVpZHNbMV0gPSBbXTtcbiAgICAgIGNydWlkc1syXSA9IFtdLCBjcnVpZHNbM10gPSBbXTtcbiAgICAgIGZvciAodmFyIEMgPSAwOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG4gICAgICAgIHZhciB1dWlkID0gW107XG4gICAgICAgIHV1aWRbMV0gPSB1dWlkWzJdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoQyArIDQyMDY5MCkgfV07XG4gICAgICAgIGNydWlkc1sxXS5wdXNoKHsgdHlwZTogMiwgZGF0YTogd3JpdGVfc2hhbGxvdyh1dWlkKSB9KTtcbiAgICAgICAgY3J1aWRzWzJdLnB1c2goeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShDKSB9KTtcbiAgICAgICAgY3J1aWRzWzNdLnB1c2goeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShDKSB9KTtcbiAgICAgIH1cbiAgICAgIGNydWlkc1s0XSA9IFtdO1xuICAgICAgY3J1aWRzWzVdID0gW10sIGNydWlkc1s2XSA9IFtdO1xuICAgICAgZm9yICh2YXIgUiA9IDA7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcbiAgICAgICAgdXVpZCA9IFtdO1xuICAgICAgICB1dWlkWzFdID0gdXVpZFsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KFIgKyA3MjYyNzApIH1dO1xuICAgICAgICBjcnVpZHNbNF0ucHVzaCh7IHR5cGU6IDIsIGRhdGE6IHdyaXRlX3NoYWxsb3codXVpZCkgfSk7XG4gICAgICAgIGNydWlkc1s1XS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoUikgfSk7XG4gICAgICAgIGNydWlkc1s2XS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoUikgfSk7XG4gICAgICB9XG4gICAgICBfeFtqXS5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhjcnVpZHMpO1xuICAgIH1cbiAgICBvbGRidWNrZXQuY29udGVudCA9IGNvbXByZXNzX2l3YV9maWxlKHdyaXRlX2l3YV9maWxlKF94KSk7XG4gICAgb2xkYnVja2V0LnNpemUgPSBvbGRidWNrZXQuY29udGVudC5sZW5ndGg7XG4gICAgZGVsZXRlIHBiWzQ2XTtcbiAgICB2YXIgc3RvcmUgPSBwYXJzZV9zaGFsbG93KHBiWzRdWzBdLmRhdGEpO1xuICAgIHtcbiAgICAgIHN0b3JlWzddWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKTtcbiAgICAgIHZhciByb3dfaGVhZGVycyA9IHBhcnNlX3NoYWxsb3coc3RvcmVbMV1bMF0uZGF0YSk7XG4gICAgICB2YXIgcm93X2hlYWRlcl9yZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHJvd19oZWFkZXJzWzJdWzBdLmRhdGEpO1xuICAgICAgb2xkYnVja2V0ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3Jvd19oZWFkZXJfcmVmXS5sb2NhdGlvbik7XG4gICAgICBfeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUob2xkYnVja2V0LmNvbnRlbnQpKTtcbiAgICAgIHtcbiAgICAgICAgaWYgKF94WzBdLmlkICE9IHJvd19oZWFkZXJfcmVmKVxuICAgICAgICAgIHRocm93IFwiQmFkIEhlYWRlclN0b3JhZ2VCdWNrZXRcIjtcbiAgICAgICAgdmFyIGJhc2VfYnVja2V0ID0gcGFyc2Vfc2hhbGxvdyhfeFswXS5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAgZm9yIChSID0gMDsgUiA8IGRhdGEubGVuZ3RoOyArK1IpIHtcbiAgICAgICAgICB2YXIgX2J1Y2tldCA9IHBhcnNlX3NoYWxsb3coYmFzZV9idWNrZXRbMl1bMF0uZGF0YSk7XG4gICAgICAgICAgX2J1Y2tldFsxXVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkoUik7XG4gICAgICAgICAgX2J1Y2tldFs0XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkoZGF0YVtSXS5sZW5ndGgpO1xuICAgICAgICAgIGJhc2VfYnVja2V0WzJdW1JdID0geyB0eXBlOiBiYXNlX2J1Y2tldFsyXVswXS50eXBlLCBkYXRhOiB3cml0ZV9zaGFsbG93KF9idWNrZXQpIH07XG4gICAgICAgIH1cbiAgICAgICAgX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coYmFzZV9idWNrZXQpO1xuICAgICAgfVxuICAgICAgb2xkYnVja2V0LmNvbnRlbnQgPSBjb21wcmVzc19pd2FfZmlsZSh3cml0ZV9pd2FfZmlsZShfeCkpO1xuICAgICAgb2xkYnVja2V0LnNpemUgPSBvbGRidWNrZXQuY29udGVudC5sZW5ndGg7XG4gICAgICB2YXIgY29sX2hlYWRlcl9yZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHN0b3JlWzJdWzBdLmRhdGEpO1xuICAgICAgb2xkYnVja2V0ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW2NvbF9oZWFkZXJfcmVmXS5sb2NhdGlvbik7XG4gICAgICBfeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUob2xkYnVja2V0LmNvbnRlbnQpKTtcbiAgICAgIHtcbiAgICAgICAgaWYgKF94WzBdLmlkICE9IGNvbF9oZWFkZXJfcmVmKVxuICAgICAgICAgIHRocm93IFwiQmFkIEhlYWRlclN0b3JhZ2VCdWNrZXRcIjtcbiAgICAgICAgYmFzZV9idWNrZXQgPSBwYXJzZV9zaGFsbG93KF94WzBdLm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgICBmb3IgKEMgPSAwOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG4gICAgICAgICAgX2J1Y2tldCA9IHBhcnNlX3NoYWxsb3coYmFzZV9idWNrZXRbMl1bMF0uZGF0YSk7XG4gICAgICAgICAgX2J1Y2tldFsxXVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkoQyk7XG4gICAgICAgICAgX2J1Y2tldFs0XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSk7XG4gICAgICAgICAgYmFzZV9idWNrZXRbMl1bQ10gPSB7IHR5cGU6IGJhc2VfYnVja2V0WzJdWzBdLnR5cGUsIGRhdGE6IHdyaXRlX3NoYWxsb3coX2J1Y2tldCkgfTtcbiAgICAgICAgfVxuICAgICAgICBfeFswXS5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhiYXNlX2J1Y2tldCk7XG4gICAgICB9XG4gICAgICBvbGRidWNrZXQuY29udGVudCA9IGNvbXByZXNzX2l3YV9maWxlKHdyaXRlX2l3YV9maWxlKF94KSk7XG4gICAgICBvbGRidWNrZXQuc2l6ZSA9IG9sZGJ1Y2tldC5jb250ZW50Lmxlbmd0aDtcbiAgICAgIHZhciBzc3RyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHN0b3JlWzRdWzBdLmRhdGEpO1xuICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3NzdHJlZl0ubG9jYXRpb24pO1xuICAgICAgICB2YXIgc3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKHNlbnRyeS5jb250ZW50KSk7XG4gICAgICAgIHZhciBzc3Ryb290O1xuICAgICAgICBmb3IgKHZhciBzeGkgPSAwOyBzeGkgPCBzeC5sZW5ndGg7ICsrc3hpKSB7XG4gICAgICAgICAgdmFyIHBhY2tldDIgPSBzeFtzeGldO1xuICAgICAgICAgIGlmIChwYWNrZXQyLmlkID09IHNzdHJlZilcbiAgICAgICAgICAgIHNzdHJvb3QgPSBwYWNrZXQyO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzc3RkYXRhID0gcGFyc2Vfc2hhbGxvdyhzc3Ryb290Lm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgICB7XG4gICAgICAgICAgc3N0ZGF0YVszXSA9IFtdO1xuICAgICAgICAgIHZhciBuZXdzc3QgPSBbXTtcbiAgICAgICAgICBTU1QuZm9yRWFjaChmdW5jdGlvbihzdHIsIGkpIHtcbiAgICAgICAgICAgIG5ld3NzdFsxXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KGkpIH1dO1xuICAgICAgICAgICAgbmV3c3N0WzJdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoMSkgfV07XG4gICAgICAgICAgICBuZXdzc3RbM10gPSBbeyB0eXBlOiAyLCBkYXRhOiBzdHJ1OChzdHIpIH1dO1xuICAgICAgICAgICAgc3N0ZGF0YVszXS5wdXNoKHsgdHlwZTogMiwgZGF0YTogd3JpdGVfc2hhbGxvdyhuZXdzc3QpIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNzdHJvb3QubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coc3N0ZGF0YSk7XG4gICAgICAgIHZhciBzeSA9IHdyaXRlX2l3YV9maWxlKHN4KTtcbiAgICAgICAgdmFyIHJhdzMyID0gY29tcHJlc3NfaXdhX2ZpbGUoc3kpO1xuICAgICAgICBzZW50cnkuY29udGVudCA9IHJhdzMyO1xuICAgICAgICBzZW50cnkuc2l6ZSA9IHNlbnRyeS5jb250ZW50Lmxlbmd0aDtcbiAgICAgIH0pKCk7XG4gICAgICB2YXIgdGlsZSA9IHBhcnNlX3NoYWxsb3coc3RvcmVbM11bMF0uZGF0YSk7XG4gICAgICB7XG4gICAgICAgIHZhciB0ID0gdGlsZVsxXVswXTtcbiAgICAgICAgZGVsZXRlIHRpbGVbMl07XG4gICAgICAgIHZhciB0bCA9IHBhcnNlX3NoYWxsb3codC5kYXRhKTtcbiAgICAgICAge1xuICAgICAgICAgIHZhciB0aWxlcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZSh0bFsyXVswXS5kYXRhKTtcbiAgICAgICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3RpbGVyZWZdLmxvY2F0aW9uKTtcbiAgICAgICAgICAgIHZhciB0eCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUodGVudHJ5LmNvbnRlbnQpKTtcbiAgICAgICAgICAgIHZhciB0aWxlcm9vdDtcbiAgICAgICAgICAgIGZvciAodmFyIHN4aSA9IDA7IHN4aSA8IHR4Lmxlbmd0aDsgKytzeGkpIHtcbiAgICAgICAgICAgICAgdmFyIHBhY2tldDIgPSB0eFtzeGldO1xuICAgICAgICAgICAgICBpZiAocGFja2V0Mi5pZCA9PSB0aWxlcmVmKVxuICAgICAgICAgICAgICAgIHRpbGVyb290ID0gcGFja2V0MjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0aWxlZGF0YSA9IHBhcnNlX3NoYWxsb3codGlsZXJvb3QubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRlbGV0ZSB0aWxlZGF0YVs2XTtcbiAgICAgICAgICAgICAgZGVsZXRlIHRpbGVbN107XG4gICAgICAgICAgICAgIHZhciByb3dsb2FkID0gbmV3IFVpbnQ4QXJyYXkodGlsZWRhdGFbNV1bMF0uZGF0YSk7XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzVdID0gW107XG4gICAgICAgICAgICAgIHZhciBjbnQgPSAwO1xuICAgICAgICAgICAgICBmb3IgKHZhciBSMiA9IDA7IFIyIDw9IHJhbmdlLmUucjsgKytSMikge1xuICAgICAgICAgICAgICAgIHZhciB0aWxlcm93ID0gcGFyc2Vfc2hhbGxvdyhyb3dsb2FkKTtcbiAgICAgICAgICAgICAgICBjbnQgKz0gd3JpdGVfdGlsZV9yb3codGlsZXJvdywgZGF0YVtSMl0sIFNTVCk7XG4gICAgICAgICAgICAgICAgdGlsZXJvd1sxXVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkoUjIpO1xuICAgICAgICAgICAgICAgIHRpbGVkYXRhWzVdLnB1c2goeyBkYXRhOiB3cml0ZV9zaGFsbG93KHRpbGVyb3cpLCB0eXBlOiAyIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzFdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5jICsgMSkgfV07XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzJdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSkgfV07XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzNdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoY250KSB9XTtcbiAgICAgICAgICAgICAgdGlsZWRhdGFbNF0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKSB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbGVyb290Lm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHRpbGVkYXRhKTtcbiAgICAgICAgICAgIHZhciB0eSA9IHdyaXRlX2l3YV9maWxlKHR4KTtcbiAgICAgICAgICAgIHZhciByYXczMiA9IGNvbXByZXNzX2l3YV9maWxlKHR5KTtcbiAgICAgICAgICAgIHRlbnRyeS5jb250ZW50ID0gcmF3MzI7XG4gICAgICAgICAgICB0ZW50cnkuc2l6ZSA9IHRlbnRyeS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIHQuZGF0YSA9IHdyaXRlX3NoYWxsb3codGwpO1xuICAgICAgfVxuICAgICAgc3RvcmVbM11bMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3codGlsZSk7XG4gICAgfVxuICAgIHBiWzRdWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHN0b3JlKTtcbiAgfVxuICBkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHBiKTtcbiAgdmFyIHkgPSB3cml0ZV9pd2FfZmlsZSh4KTtcbiAgdmFyIHJhdzMgPSBjb21wcmVzc19pd2FfZmlsZSh5KTtcbiAgZW50cnkuY29udGVudCA9IHJhdzM7XG4gIGVudHJ5LnNpemUgPSBlbnRyeS5jb250ZW50Lmxlbmd0aDtcbiAgcmV0dXJuIGNmYjtcbn1cbmZ1bmN0aW9uIGZpeF9vcHRzX2Z1bmMoZGVmYXVsdHMvKjpBcnJheTxBcnJheTxhbnk+ID4qLykvKjp7KG86YW55KTp2b2lkfSovIHtcblx0cmV0dXJuIGZ1bmN0aW9uIGZpeF9vcHRzKG9wdHMpIHtcblx0XHRmb3IodmFyIGkgPSAwOyBpICE9IGRlZmF1bHRzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgZCA9IGRlZmF1bHRzW2ldO1xuXHRcdFx0aWYob3B0c1tkWzBdXSA9PT0gdW5kZWZpbmVkKSBvcHRzW2RbMF1dID0gZFsxXTtcblx0XHRcdGlmKGRbMl0gPT09ICduJykgb3B0c1tkWzBdXSA9IE51bWJlcihvcHRzW2RbMF1dKTtcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIGZpeF9yZWFkX29wdHMob3B0cykge1xuZml4X29wdHNfZnVuYyhbXG5cdFsnY2VsbE5GJywgZmFsc2VdLCAvKiBlbWl0IGNlbGwgbnVtYmVyIGZvcm1hdCBzdHJpbmcgYXMgLnogKi9cblx0WydjZWxsSFRNTCcsIHRydWVdLCAvKiBlbWl0IGh0bWwgc3RyaW5nIGFzIC5oICovXG5cdFsnY2VsbEZvcm11bGEnLCB0cnVlXSwgLyogZW1pdCBmb3JtdWxhZSBhcyAuZiAqL1xuXHRbJ2NlbGxTdHlsZXMnLCBmYWxzZV0sIC8qIGVtaXRzIHN0eWxlL3RoZW1lIGFzIC5zICovXG5cdFsnY2VsbFRleHQnLCB0cnVlXSwgLyogZW1pdCBmb3JtYXR0ZWQgdGV4dCBhcyAudyAqL1xuXHRbJ2NlbGxEYXRlcycsIGZhbHNlXSwgLyogZW1pdCBkYXRlIGNlbGxzIHdpdGggdHlwZSBgZGAgKi9cblxuXHRbJ3NoZWV0U3R1YnMnLCBmYWxzZV0sIC8qIGVtaXQgZW1wdHkgY2VsbHMgKi9cblx0WydzaGVldFJvd3MnLCAwLCAnbiddLCAvKiByZWFkIG4gcm93cyAoMCA9IHJlYWQgYWxsIHJvd3MpICovXG5cblx0Wydib29rRGVwcycsIGZhbHNlXSwgLyogcGFyc2UgY2FsY3VsYXRpb24gY2hhaW5zICovXG5cdFsnYm9va1NoZWV0cycsIGZhbHNlXSwgLyogb25seSB0cnkgdG8gZ2V0IHNoZWV0IG5hbWVzIChubyBTaGVldHMpICovXG5cdFsnYm9va1Byb3BzJywgZmFsc2VdLCAvKiBvbmx5IHRyeSB0byBnZXQgcHJvcGVydGllcyAobm8gU2hlZXRzKSAqL1xuXHRbJ2Jvb2tGaWxlcycsIGZhbHNlXSwgLyogaW5jbHVkZSByYXcgZmlsZSBzdHJ1Y3R1cmUgKGtleXMsIGZpbGVzLCBjZmIpICovXG5cdFsnYm9va1ZCQScsIGZhbHNlXSwgLyogaW5jbHVkZSB2YmEgcmF3IGRhdGEgKHZiYXJhdykgKi9cblxuXHRbJ3Bhc3N3b3JkJywnJ10sIC8qIHBhc3N3b3JkICovXG5cdFsnV1RGJywgZmFsc2VdIC8qIFdURiBtb2RlICh0aHJvd3MgZXJyb3JzKSAqL1xuXSkob3B0cyk7XG59XG5cbmZ1bmN0aW9uIGZpeF93cml0ZV9vcHRzKG9wdHMpIHtcbmZpeF9vcHRzX2Z1bmMoW1xuXHRbJ2NlbGxEYXRlcycsIGZhbHNlXSwgLyogd3JpdGUgZGF0ZSBjZWxscyB3aXRoIHR5cGUgYGRgICovXG5cblx0Wydib29rU1NUJywgZmFsc2VdLCAvKiBHZW5lcmF0ZSBTaGFyZWQgU3RyaW5nIFRhYmxlICovXG5cblx0Wydib29rVHlwZScsICd4bHN4J10sIC8qIFR5cGUgb2Ygd29ya2Jvb2sgKHhsc3gvbS9iKSAqL1xuXG5cdFsnY29tcHJlc3Npb24nLCBmYWxzZV0sIC8qIFVzZSBmaWxlIGNvbXByZXNzaW9uICovXG5cblx0WydXVEYnLCBmYWxzZV0gLyogV1RGIG1vZGUgKHRocm93cyBlcnJvcnMpICovXG5dKShvcHRzKTtcbn1cbmZ1bmN0aW9uIGdldF9zaGVldF90eXBlKG4vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKFJFTFMuV1MuaW5kZXhPZihuKSA+IC0xKSByZXR1cm4gXCJzaGVldFwiO1xuXHRpZihSRUxTLkNTICYmIG4gPT0gUkVMUy5DUykgcmV0dXJuIFwiY2hhcnRcIjtcblx0aWYoUkVMUy5EUyAmJiBuID09IFJFTFMuRFMpIHJldHVybiBcImRpYWxvZ1wiO1xuXHRpZihSRUxTLk1TICYmIG4gPT0gUkVMUy5NUykgcmV0dXJuIFwibWFjcm9cIjtcblx0cmV0dXJuIChuICYmIG4ubGVuZ3RoKSA/IG4gOiBcInNoZWV0XCI7XG59XG5mdW5jdGlvbiBzYWZlX3BhcnNlX3dicmVscyh3YnJlbHMsIHNoZWV0cykge1xuXHRpZighd2JyZWxzKSByZXR1cm4gMDtcblx0dHJ5IHtcblx0XHR3YnJlbHMgPSBzaGVldHMubWFwKGZ1bmN0aW9uIHB3YnIodykgeyBpZighdy5pZCkgdy5pZCA9IHcuc3RyUmVsSUQ7IHJldHVybiBbdy5uYW1lLCB3YnJlbHNbJyFpZCddW3cuaWRdLlRhcmdldCwgZ2V0X3NoZWV0X3R5cGUod2JyZWxzWychaWQnXVt3LmlkXS5UeXBlKV07IH0pO1xuXHR9IGNhdGNoKGUpIHsgcmV0dXJuIG51bGw7IH1cblx0cmV0dXJuICF3YnJlbHMgfHwgd2JyZWxzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiB3YnJlbHM7XG59XG5cbmZ1bmN0aW9uIHNhZmVfcGFyc2Vfc2hlZXQoemlwLCBwYXRoLyo6c3RyaW5nKi8sIHJlbHNQYXRoLyo6c3RyaW5nKi8sIHNoZWV0LCBpZHgvKjpudW1iZXIqLywgc2hlZXRSZWxzLCBzaGVldHMsIHN0eXBlLyo6c3RyaW5nKi8sIG9wdHMsIHdiLCB0aGVtZXMsIHN0eWxlcykge1xuXHR0cnkge1xuXHRcdHNoZWV0UmVsc1tzaGVldF09cGFyc2VfcmVscyhnZXR6aXBzdHIoemlwLCByZWxzUGF0aCwgdHJ1ZSksIHBhdGgpO1xuXHRcdHZhciBkYXRhID0gZ2V0emlwZGF0YSh6aXAsIHBhdGgpO1xuXHRcdHZhciBfd3M7XG5cdFx0c3dpdGNoKHN0eXBlKSB7XG5cdFx0XHRjYXNlICdzaGVldCc6ICBfd3MgPSBwYXJzZV93cyhkYXRhLCBwYXRoLCBpZHgsIG9wdHMsIHNoZWV0UmVsc1tzaGVldF0sIHdiLCB0aGVtZXMsIHN0eWxlcyk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnY2hhcnQnOiAgX3dzID0gcGFyc2VfY3MoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRcdFx0XHRpZighX3dzIHx8ICFfd3NbJyFkcmF3ZWwnXSkgYnJlYWs7XG5cdFx0XHRcdHZhciBkZmlsZSA9IHJlc29sdmVfcGF0aChfd3NbJyFkcmF3ZWwnXS5UYXJnZXQsIHBhdGgpO1xuXHRcdFx0XHR2YXIgZHJlbHNwID0gZ2V0X3JlbHNfcGF0aChkZmlsZSk7XG5cdFx0XHRcdHZhciBkcmF3ID0gcGFyc2VfZHJhd2luZyhnZXR6aXBzdHIoemlwLCBkZmlsZSwgdHJ1ZSksIHBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgZHJlbHNwLCB0cnVlKSwgZGZpbGUpKTtcblx0XHRcdFx0dmFyIGNoYXJ0cCA9IHJlc29sdmVfcGF0aChkcmF3LCBkZmlsZSk7XG5cdFx0XHRcdHZhciBjcmVsc3AgPSBnZXRfcmVsc19wYXRoKGNoYXJ0cCk7XG5cdFx0XHRcdF93cyA9IHBhcnNlX2NoYXJ0KGdldHppcHN0cih6aXAsIGNoYXJ0cCwgdHJ1ZSksIGNoYXJ0cCwgb3B0cywgcGFyc2VfcmVscyhnZXR6aXBzdHIoemlwLCBjcmVsc3AsIHRydWUpLCBjaGFydHApLCB3YiwgX3dzKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdtYWNybyc6ICBfd3MgPSBwYXJzZV9tcyhkYXRhLCBwYXRoLCBpZHgsIG9wdHMsIHNoZWV0UmVsc1tzaGVldF0sIHdiLCB0aGVtZXMsIHN0eWxlcyk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZGlhbG9nJzogX3dzID0gcGFyc2VfZHMoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBzaGVldCB0eXBlIFwiICsgc3R5cGUpO1xuXHRcdH1cblx0XHRzaGVldHNbc2hlZXRdID0gX3dzO1xuXG5cdFx0Lyogc2NhbiByZWxzIGZvciBjb21tZW50cyBhbmQgdGhyZWFkZWQgY29tbWVudHMgKi9cblx0XHR2YXIgdGNvbW1lbnRzID0gW107XG5cdFx0aWYoc2hlZXRSZWxzICYmIHNoZWV0UmVsc1tzaGVldF0pIGtleXMoc2hlZXRSZWxzW3NoZWV0XSkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG5cdFx0XHR2YXIgZGZpbGUgPSBcIlwiO1xuXHRcdFx0aWYoc2hlZXRSZWxzW3NoZWV0XVtuXS5UeXBlID09IFJFTFMuQ01OVCkge1xuXHRcdFx0XHRkZmlsZSA9IHJlc29sdmVfcGF0aChzaGVldFJlbHNbc2hlZXRdW25dLlRhcmdldCwgcGF0aCk7XG5cdFx0XHRcdHZhciBjb21tZW50cyA9IHBhcnNlX2NtbnQoZ2V0emlwZGF0YSh6aXAsIGRmaWxlLCB0cnVlKSwgZGZpbGUsIG9wdHMpO1xuXHRcdFx0XHRpZighY29tbWVudHMgfHwgIWNvbW1lbnRzLmxlbmd0aCkgcmV0dXJuO1xuXHRcdFx0XHRzaGVldF9pbnNlcnRfY29tbWVudHMoX3dzLCBjb21tZW50cywgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0aWYoc2hlZXRSZWxzW3NoZWV0XVtuXS5UeXBlID09IFJFTFMuVENNTlQpIHtcblx0XHRcdFx0ZGZpbGUgPSByZXNvbHZlX3BhdGgoc2hlZXRSZWxzW3NoZWV0XVtuXS5UYXJnZXQsIHBhdGgpO1xuXHRcdFx0XHR0Y29tbWVudHMgPSB0Y29tbWVudHMuY29uY2F0KHBhcnNlX3RjbW50X3htbChnZXR6aXBkYXRhKHppcCwgZGZpbGUsIHRydWUpLCBvcHRzKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0aWYodGNvbW1lbnRzICYmIHRjb21tZW50cy5sZW5ndGgpIHNoZWV0X2luc2VydF9jb21tZW50cyhfd3MsIHRjb21tZW50cywgdHJ1ZSwgb3B0cy5wZW9wbGUgfHwgW10pO1xuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cbn1cblxuZnVuY3Rpb24gc3RyaXBfZnJvbnRfc2xhc2goeC8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHguY2hhckF0KDApID09ICcvJyA/IHguc2xpY2UoMSkgOiB4OyB9XG5cbmZ1bmN0aW9uIHBhcnNlX3ppcCh6aXAvKjpaSVAqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0bWFrZV9zc2YoKTtcblx0b3B0cyA9IG9wdHMgfHwge307XG5cdGZpeF9yZWFkX29wdHMob3B0cyk7XG5cblx0LyogT3BlbkRvY3VtZW50IFBhcnQgMyBTZWN0aW9uIDIuMi4xIE9wZW5Eb2N1bWVudCBQYWNrYWdlICovXG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ01FVEEtSU5GL21hbmlmZXN0LnhtbCcpKSByZXR1cm4gcGFyc2Vfb2RzKHppcCwgb3B0cyk7XG5cdC8qIFVPQyAqL1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdvYmplY3RkYXRhLnhtbCcpKSByZXR1cm4gcGFyc2Vfb2RzKHppcCwgb3B0cyk7XG5cdC8qIE51bWJlcnMgKi9cblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnSW5kZXgvRG9jdW1lbnQuaXdhJykpIHtcblx0XHRpZih0eXBlb2YgVWludDhBcnJheSA9PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoJ05VTUJFUlMgZmlsZSBwYXJzaW5nIHJlcXVpcmVzIFVpbnQ4QXJyYXkgc3VwcG9ydCcpO1xuXHRcdGlmKHR5cGVvZiBwYXJzZV9udW1iZXJzX2l3YSAhPSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHRpZih6aXAuRmlsZUluZGV4KSByZXR1cm4gcGFyc2VfbnVtYmVyc19pd2EoemlwKTtcblx0XHRcdHZhciBfemlwID0gQ0ZCLnV0aWxzLmNmYl9uZXcoKTtcblx0XHRcdHppcGVudHJpZXMoemlwKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgemlwX2FkZF9maWxlKF96aXAsIGUsIGdldHppcGJpbih6aXAsIGUpKTsgfSk7XG5cdFx0XHRyZXR1cm4gcGFyc2VfbnVtYmVyc19pd2EoX3ppcCk7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgTlVNQkVSUyBmaWxlJyk7XG5cdH1cblx0aWYoIXNhZmVnZXR6aXBmaWxlKHppcCwgJ1tDb250ZW50X1R5cGVzXS54bWwnKSkge1xuXHRcdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ2luZGV4LnhtbC5neicpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE5VTUJFUlMgMDggZmlsZScpO1xuXHRcdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ2luZGV4LnhtbCcpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE5VTUJFUlMgMDkgZmlsZScpO1xuXHRcdHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgWklQIGZpbGUnKTtcblx0fVxuXG5cdHZhciBlbnRyaWVzID0gemlwZW50cmllcyh6aXApO1xuXHR2YXIgZGlyID0gcGFyc2VfY3QoKGdldHppcHN0cih6aXAsICdbQ29udGVudF9UeXBlc10ueG1sJykvKjo/YW55Ki8pKTtcblx0dmFyIHhsc2IgPSBmYWxzZTtcblx0dmFyIHNoZWV0cywgYmlubmFtZTtcblx0aWYoZGlyLndvcmtib29rcy5sZW5ndGggPT09IDApIHtcblx0XHRiaW5uYW1lID0gXCJ4bC93b3JrYm9vay54bWxcIjtcblx0XHRpZihnZXR6aXBkYXRhKHppcCxiaW5uYW1lLCB0cnVlKSkgZGlyLndvcmtib29rcy5wdXNoKGJpbm5hbWUpO1xuXHR9XG5cdGlmKGRpci53b3JrYm9va3MubGVuZ3RoID09PSAwKSB7XG5cdFx0YmlubmFtZSA9IFwieGwvd29ya2Jvb2suYmluXCI7XG5cdFx0aWYoIWdldHppcGRhdGEoemlwLGJpbm5hbWUsdHJ1ZSkpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBmaW5kIHdvcmtib29rXCIpO1xuXHRcdGRpci53b3JrYm9va3MucHVzaChiaW5uYW1lKTtcblx0XHR4bHNiID0gdHJ1ZTtcblx0fVxuXHRpZihkaXIud29ya2Jvb2tzWzBdLnNsaWNlKC0zKSA9PSBcImJpblwiKSB4bHNiID0gdHJ1ZTtcblxuXHR2YXIgdGhlbWVzID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgc3R5bGVzID0gKHt9Lyo6YW55Ki8pO1xuXHRpZighb3B0cy5ib29rU2hlZXRzICYmICFvcHRzLmJvb2tQcm9wcykge1xuXHRcdHN0cnMgPSBbXTtcblx0XHRpZihkaXIuc3N0KSB0cnkgeyBzdHJzPXBhcnNlX3NzdChnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLnNzdCkpLCBkaXIuc3N0LCBvcHRzKTsgfSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cblx0XHRpZihvcHRzLmNlbGxTdHlsZXMgJiYgZGlyLnRoZW1lcy5sZW5ndGgpIHRoZW1lcyA9IHBhcnNlX3RoZW1lKGdldHppcHN0cih6aXAsIGRpci50aGVtZXNbMF0ucmVwbGFjZSgvXlxcLy8sJycpLCB0cnVlKXx8XCJcIixkaXIudGhlbWVzWzBdLCBvcHRzKTtcblxuXHRcdGlmKGRpci5zdHlsZSkgc3R5bGVzID0gcGFyc2Vfc3R5KGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuc3R5bGUpKSwgZGlyLnN0eWxlLCB0aGVtZXMsIG9wdHMpO1xuXHR9XG5cblx0Lyp2YXIgZXh0ZXJuYm9va3MgPSAqL2Rpci5saW5rcy5tYXAoZnVuY3Rpb24obGluaykge1xuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmVscyA9IHBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgZ2V0X3JlbHNfcGF0aChzdHJpcF9mcm9udF9zbGFzaChsaW5rKSkpLCBsaW5rKTtcblx0XHRcdHJldHVybiBwYXJzZV94bGluayhnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2gobGluaykpLCByZWxzLCBsaW5rLCBvcHRzKTtcblx0XHR9IGNhdGNoKGUpIHt9XG5cdH0pO1xuXG5cdHZhciB3YiA9IHBhcnNlX3diKGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIud29ya2Jvb2tzWzBdKSksIGRpci53b3JrYm9va3NbMF0sIG9wdHMpO1xuXG5cdHZhciBwcm9wcyA9IHt9LCBwcm9wZGF0YSA9IFwiXCI7XG5cblx0aWYoZGlyLmNvcmVwcm9wcy5sZW5ndGgpIHtcblx0XHRwcm9wZGF0YSA9IGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuY29yZXByb3BzWzBdKSwgdHJ1ZSk7XG5cdFx0aWYocHJvcGRhdGEpIHByb3BzID0gcGFyc2VfY29yZV9wcm9wcyhwcm9wZGF0YSk7XG5cdFx0aWYoZGlyLmV4dHByb3BzLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0cHJvcGRhdGEgPSBnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLmV4dHByb3BzWzBdKSwgdHJ1ZSk7XG5cdFx0XHRpZihwcm9wZGF0YSkgcGFyc2VfZXh0X3Byb3BzKHByb3BkYXRhLCBwcm9wcywgb3B0cyk7XG5cdFx0fVxuXHR9XG5cblx0dmFyIGN1c3Rwcm9wcyA9IHt9O1xuXHRpZighb3B0cy5ib29rU2hlZXRzIHx8IG9wdHMuYm9va1Byb3BzKSB7XG5cdFx0aWYgKGRpci5jdXN0cHJvcHMubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRwcm9wZGF0YSA9IGdldHppcHN0cih6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5jdXN0cHJvcHNbMF0pLCB0cnVlKTtcblx0XHRcdGlmKHByb3BkYXRhKSBjdXN0cHJvcHMgPSBwYXJzZV9jdXN0X3Byb3BzKHByb3BkYXRhLCBvcHRzKTtcblx0XHR9XG5cdH1cblxuXHR2YXIgb3V0ID0gKHt9Lyo6YW55Ki8pO1xuXHRpZihvcHRzLmJvb2tTaGVldHMgfHwgb3B0cy5ib29rUHJvcHMpIHtcblx0XHRpZih3Yi5TaGVldHMpIHNoZWV0cyA9IHdiLlNoZWV0cy5tYXAoZnVuY3Rpb24gcGx1Y2soeCl7IHJldHVybiB4Lm5hbWU7IH0pO1xuXHRcdGVsc2UgaWYocHJvcHMuV29ya3NoZWV0cyAmJiBwcm9wcy5TaGVldE5hbWVzLmxlbmd0aCA+IDApIHNoZWV0cz1wcm9wcy5TaGVldE5hbWVzO1xuXHRcdGlmKG9wdHMuYm9va1Byb3BzKSB7IG91dC5Qcm9wcyA9IHByb3BzOyBvdXQuQ3VzdHByb3BzID0gY3VzdHByb3BzOyB9XG5cdFx0aWYob3B0cy5ib29rU2hlZXRzICYmIHR5cGVvZiBzaGVldHMgIT09ICd1bmRlZmluZWQnKSBvdXQuU2hlZXROYW1lcyA9IHNoZWV0cztcblx0XHRpZihvcHRzLmJvb2tTaGVldHMgPyBvdXQuU2hlZXROYW1lcyA6IG9wdHMuYm9va1Byb3BzKSByZXR1cm4gb3V0O1xuXHR9XG5cdHNoZWV0cyA9IHt9O1xuXG5cdHZhciBkZXBzID0ge307XG5cdGlmKG9wdHMuYm9va0RlcHMgJiYgZGlyLmNhbGNjaGFpbikgZGVwcz1wYXJzZV9jYyhnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLmNhbGNjaGFpbikpLGRpci5jYWxjY2hhaW4sb3B0cyk7XG5cblx0dmFyIGk9MDtcblx0dmFyIHNoZWV0UmVscyA9ICh7fS8qOmFueSovKTtcblx0dmFyIHBhdGgsIHJlbHNQYXRoO1xuXG5cdHtcblx0XHR2YXIgd2JzaGVldHMgPSB3Yi5TaGVldHM7XG5cdFx0cHJvcHMuV29ya3NoZWV0cyA9IHdic2hlZXRzLmxlbmd0aDtcblx0XHRwcm9wcy5TaGVldE5hbWVzID0gW107XG5cdFx0Zm9yKHZhciBqID0gMDsgaiAhPSB3YnNoZWV0cy5sZW5ndGg7ICsraikge1xuXHRcdFx0cHJvcHMuU2hlZXROYW1lc1tqXSA9IHdic2hlZXRzW2pdLm5hbWU7XG5cdFx0fVxuXHR9XG5cblx0dmFyIHdiZXh0ID0geGxzYiA/IFwiYmluXCIgOiBcInhtbFwiO1xuXHR2YXIgd2JyZWxzaSA9IGRpci53b3JrYm9va3NbMF0ubGFzdEluZGV4T2YoXCIvXCIpO1xuXHR2YXIgd2JyZWxzZmlsZSA9IChkaXIud29ya2Jvb2tzWzBdLnNsaWNlKDAsIHdicmVsc2krMSkgKyBcIl9yZWxzL1wiICsgZGlyLndvcmtib29rc1swXS5zbGljZSh3YnJlbHNpKzEpICsgXCIucmVsc1wiKS5yZXBsYWNlKC9eXFwvLyxcIlwiKTtcblx0aWYoIXNhZmVnZXR6aXBmaWxlKHppcCwgd2JyZWxzZmlsZSkpIHdicmVsc2ZpbGUgPSAneGwvX3JlbHMvd29ya2Jvb2suJyArIHdiZXh0ICsgJy5yZWxzJztcblx0dmFyIHdicmVscyA9IHBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgd2JyZWxzZmlsZSwgdHJ1ZSksIHdicmVsc2ZpbGUucmVwbGFjZSgvX3JlbHMuKi8sIFwiczVzXCIpKTtcblxuXHRpZigoZGlyLm1ldGFkYXRhIHx8IFtdKS5sZW5ndGggPj0gMSkge1xuXHRcdC8qIFRPRE86IE1EWCBhbmQgb3RoZXIgdHlwZXMgb2YgbWV0YWRhdGEgKi9cblx0XHRvcHRzLnhsbWV0YSA9IHBhcnNlX3hsbWV0YShnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLm1ldGFkYXRhWzBdKSksZGlyLm1ldGFkYXRhWzBdLG9wdHMpO1xuXHR9XG5cblx0aWYoKGRpci5wZW9wbGUgfHwgW10pLmxlbmd0aCA+PSAxKSB7XG5cdFx0b3B0cy5wZW9wbGUgPSBwYXJzZV9wZW9wbGVfeG1sKGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIucGVvcGxlWzBdKSksb3B0cyk7XG5cdH1cblxuXHRpZih3YnJlbHMpIHdicmVscyA9IHNhZmVfcGFyc2Vfd2JyZWxzKHdicmVscywgd2IuU2hlZXRzKTtcblxuXHQvKiBOdW1iZXJzIGlPUyBoYWNrICovXG5cdHZhciBubW9kZSA9IChnZXR6aXBkYXRhKHppcCxcInhsL3dvcmtzaGVldHMvc2hlZXQueG1sXCIsdHJ1ZSkpPzE6MDtcblx0d3Nsb29wOiBmb3IoaSA9IDA7IGkgIT0gcHJvcHMuV29ya3NoZWV0czsgKytpKSB7XG5cdFx0dmFyIHN0eXBlID0gXCJzaGVldFwiO1xuXHRcdGlmKHdicmVscyAmJiB3YnJlbHNbaV0pIHtcblx0XHRcdHBhdGggPSAneGwvJyArICh3YnJlbHNbaV1bMV0pLnJlcGxhY2UoL1tcXC9dP3hsXFwvLywgXCJcIik7XG5cdFx0XHRpZighc2FmZWdldHppcGZpbGUoemlwLCBwYXRoKSkgcGF0aCA9IHdicmVsc1tpXVsxXTtcblx0XHRcdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsIHBhdGgpKSBwYXRoID0gd2JyZWxzZmlsZS5yZXBsYWNlKC9fcmVsc1xcLy4qJC8sXCJcIikgKyB3YnJlbHNbaV1bMV07XG5cdFx0XHRzdHlwZSA9IHdicmVsc1tpXVsyXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cGF0aCA9ICd4bC93b3Jrc2hlZXRzL3NoZWV0JysoaSsxLW5tb2RlKStcIi5cIiArIHdiZXh0O1xuXHRcdFx0cGF0aCA9IHBhdGgucmVwbGFjZSgvc2hlZXQwXFwuLyxcInNoZWV0LlwiKTtcblx0XHR9XG5cdFx0cmVsc1BhdGggPSBwYXRoLnJlcGxhY2UoL14oLiopKFxcLykoW15cXC9dKikkLywgXCIkMS9fcmVscy8kMy5yZWxzXCIpO1xuXHRcdGlmKG9wdHMgJiYgb3B0cy5zaGVldHMgIT0gbnVsbCkgc3dpdGNoKHR5cGVvZiBvcHRzLnNoZWV0cykge1xuXHRcdFx0Y2FzZSBcIm51bWJlclwiOiBpZihpICE9IG9wdHMuc2hlZXRzKSBjb250aW51ZSB3c2xvb3A7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInN0cmluZ1wiOiBpZihwcm9wcy5TaGVldE5hbWVzW2ldLnRvTG93ZXJDYXNlKCkgIT0gb3B0cy5zaGVldHMudG9Mb3dlckNhc2UoKSkgY29udGludWUgd3Nsb29wOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKEFycmF5LmlzQXJyYXkgJiYgQXJyYXkuaXNBcnJheShvcHRzLnNoZWV0cykpIHtcblx0XHRcdFx0dmFyIHNuanNlZW4gPSBmYWxzZTtcblx0XHRcdFx0Zm9yKHZhciBzbmogPSAwOyBzbmogIT0gb3B0cy5zaGVldHMubGVuZ3RoOyArK3Nuaikge1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLnNoZWV0c1tzbmpdID09IFwibnVtYmVyXCIgJiYgb3B0cy5zaGVldHNbc25qXSA9PSBpKSBzbmpzZWVuPTE7XG5cdFx0XHRcdFx0aWYodHlwZW9mIG9wdHMuc2hlZXRzW3Nual0gPT0gXCJzdHJpbmdcIiAmJiBvcHRzLnNoZWV0c1tzbmpdLnRvTG93ZXJDYXNlKCkgPT0gcHJvcHMuU2hlZXROYW1lc1tpXS50b0xvd2VyQ2FzZSgpKSBzbmpzZWVuID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighc25qc2VlbikgY29udGludWUgd3Nsb29wO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzYWZlX3BhcnNlX3NoZWV0KHppcCwgcGF0aCwgcmVsc1BhdGgsIHByb3BzLlNoZWV0TmFtZXNbaV0sIGksIHNoZWV0UmVscywgc2hlZXRzLCBzdHlwZSwgb3B0cywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0fVxuXG5cdG91dCA9ICh7XG5cdFx0RGlyZWN0b3J5OiBkaXIsXG5cdFx0V29ya2Jvb2s6IHdiLFxuXHRcdFByb3BzOiBwcm9wcyxcblx0XHRDdXN0cHJvcHM6IGN1c3Rwcm9wcyxcblx0XHREZXBzOiBkZXBzLFxuXHRcdFNoZWV0czogc2hlZXRzLFxuXHRcdFNoZWV0TmFtZXM6IHByb3BzLlNoZWV0TmFtZXMsXG5cdFx0U3RyaW5nczogc3Rycyxcblx0XHRTdHlsZXM6IHN0eWxlcyxcblx0XHRUaGVtZXM6IHRoZW1lcyxcblx0XHRTU0Y6IGR1cCh0YWJsZV9mbXQpXG5cdH0vKjphbnkqLyk7XG5cdGlmKG9wdHMgJiYgb3B0cy5ib29rRmlsZXMpIHtcblx0XHRpZih6aXAuZmlsZXMpIHtcblx0XHRcdG91dC5rZXlzID0gZW50cmllcztcblx0XHRcdG91dC5maWxlcyA9IHppcC5maWxlcztcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3V0LmtleXMgPSBbXTtcblx0XHRcdG91dC5maWxlcyA9IHt9O1xuXHRcdFx0emlwLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGlkeCkge1xuXHRcdFx0XHRwID0gcC5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcXC9dLywgXCJcIik7XG5cdFx0XHRcdG91dC5rZXlzLnB1c2gocCk7XG5cdFx0XHRcdG91dC5maWxlc1twXSA9IHppcC5GaWxlSW5kZXhbaWR4XTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRpZihvcHRzICYmIG9wdHMuYm9va1ZCQSkge1xuXHRcdGlmKGRpci52YmEubGVuZ3RoID4gMCkgb3V0LnZiYXJhdyA9IGdldHppcGRhdGEoemlwLHN0cmlwX2Zyb250X3NsYXNoKGRpci52YmFbMF0pLHRydWUpO1xuXHRcdGVsc2UgaWYoZGlyLmRlZmF1bHRzICYmIGRpci5kZWZhdWx0cy5iaW4gPT09IENUX1ZCQSkgb3V0LnZiYXJhdyA9IGdldHppcGRhdGEoemlwLCAneGwvdmJhUHJvamVjdC5iaW4nLHRydWUpO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS4xICovXG5mdW5jdGlvbiBwYXJzZV94bHN4Y2ZiKGNmYiwgX29wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdHZhciBmID0gJ1dvcmtib29rJywgZGF0YSA9IENGQi5maW5kKGNmYiwgZik7XG5cdHRyeSB7XG5cdGYgPSAnLyFEYXRhU3BhY2VzL1ZlcnNpb24nO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHQvKnZhciB2ZXJzaW9uID0gKi9wYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyhkYXRhLmNvbnRlbnQpO1xuXG5cdC8qIDIuMy40LjEgKi9cblx0ZiA9ICcvIURhdGFTcGFjZXMvRGF0YVNwYWNlTWFwJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0dmFyIGRzbSA9IHBhcnNlX0RhdGFTcGFjZU1hcChkYXRhLmNvbnRlbnQpO1xuXHRpZihkc20ubGVuZ3RoICE9PSAxIHx8IGRzbVswXS5jb21wcy5sZW5ndGggIT09IDEgfHwgZHNtWzBdLmNvbXBzWzBdLnQgIT09IDAgfHwgZHNtWzBdLm5hbWUgIT09IFwiU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZVwiIHx8IGRzbVswXS5jb21wc1swXS52ICE9PSBcIkVuY3J5cHRlZFBhY2thZ2VcIilcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgXCIgKyBmKTtcblxuXHQvKiAyLjMuNC4yICovXG5cdGYgPSAnLyFEYXRhU3BhY2VzL0RhdGFTcGFjZUluZm8vU3Ryb25nRW5jcnlwdGlvbkRhdGFTcGFjZSc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdHZhciBzZWRzID0gcGFyc2VfRGF0YVNwYWNlRGVmaW5pdGlvbihkYXRhLmNvbnRlbnQpO1xuXHRpZihzZWRzLmxlbmd0aCAhPSAxIHx8IHNlZHNbMF0gIT0gXCJTdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtXCIpXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkIFwiICsgZik7XG5cblx0LyogMi4zLjQuMyAqL1xuXHRmID0gJy8hRGF0YVNwYWNlcy9UcmFuc2Zvcm1JbmZvL1N0cm9uZ0VuY3J5cHRpb25UcmFuc2Zvcm0vIVByaW1hcnknO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHQvKnZhciBoZHIgPSAqL3BhcnNlX1ByaW1hcnkoZGF0YS5jb250ZW50KTtcblx0fSBjYXRjaChlKSB7fVxuXG5cdGYgPSAnL0VuY3J5cHRpb25JbmZvJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0dmFyIGVpbmZvID0gcGFyc2VfRW5jcnlwdGlvbkluZm8oZGF0YS5jb250ZW50KTtcblxuXHQvKiAyLjMuNC40ICovXG5cdGYgPSAnL0VuY3J5cHRlZFBhY2thZ2UnO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXG4vKmdsb2JhbCBkZWNyeXB0X2FnaWxlICovXG4vKjo6IGRlY2xhcmUgdmFyIGRlY3J5cHRfYWdpbGU6YW55OyAqL1xuXHRpZihlaW5mb1swXSA9PSAweDA0ICYmIHR5cGVvZiBkZWNyeXB0X2FnaWxlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGRlY3J5cHRfYWdpbGUoZWluZm9bMV0sIGRhdGEuY29udGVudCwgb3B0cy5wYXNzd29yZCB8fCBcIlwiLCBvcHRzKTtcbi8qZ2xvYmFsIGRlY3J5cHRfc3RkNzYgKi9cbi8qOjogZGVjbGFyZSB2YXIgZGVjcnlwdF9zdGQ3Njphbnk7ICovXG5cdGlmKGVpbmZvWzBdID09IDB4MDIgJiYgdHlwZW9mIGRlY3J5cHRfc3RkNzYgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZGVjcnlwdF9zdGQ3NihlaW5mb1sxXSwgZGF0YS5jb250ZW50LCBvcHRzLnBhc3N3b3JkIHx8IFwiXCIsIG9wdHMpO1xuXHR0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZFwiKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfemlwKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOlpJUCovIHtcblx0aWYob3B0cy5ib29rVHlwZSA9PSBcIm9kc1wiKSByZXR1cm4gd3JpdGVfb2RzKHdiLCBvcHRzKTtcblx0aWYob3B0cy5ib29rVHlwZSA9PSBcIm51bWJlcnNcIikgcmV0dXJuIHdyaXRlX251bWJlcnNfaXdhKHdiLCBvcHRzKTtcblx0aWYob3B0cy5ib29rVHlwZSA9PSBcInhsc2JcIikgcmV0dXJuIHdyaXRlX3ppcF94bHN4Yih3Yiwgb3B0cyk7XG5cdHJldHVybiB3cml0ZV96aXBfeGxzeCh3Yiwgb3B0cyk7XG59XG5cbi8qIFhMU1ggYW5kIFhMU0Igd3JpdGluZyBhcmUgdmVyeSBzaW1pbGFyLiAgT3JpZ2luYWxseSB0aGV5IHdlcmUgdW5pZmllZCBpbiBvbmVcbiAgIGV4cG9ydCBmdW5jdGlvbi4gIFRoaXMgaXMgaG9ycmlibGUgZm9yIHRyZWUgc2hha2luZyBpbiB0aGUgY29tbW9uIGNhc2UgKG1vc3RcbiAgIGFwcGxpY2F0aW9ucyBuZWVkIHRvIGV4cG9ydCBmaWxlcyBpbiBvbmUgZm9ybWF0KSBzbyB0aGlzIGZ1bmN0aW9uIHN1cHBvcnRzXG4gICBib3RoIGZvcm1hdHMgd2hpbGUgd3JpdGVfemlwX3hsc3ggb25seSBoYW5kbGVzIFhMU1ggKi9cbmZ1bmN0aW9uIHdyaXRlX3ppcF94bHN4Yih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpaSVAqLyB7XG5cdF9zaGFwZWlkID0gMTAyNDtcblx0aWYod2IgJiYgIXdiLlNTRikge1xuXHRcdHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHR9XG5cdGlmKHdiICYmIHdiLlNTRikge1xuXHRcdG1ha2Vfc3NmKCk7IFNTRl9sb2FkX3RhYmxlKHdiLlNTRik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRvcHRzLnJldnNzZiA9IGV2ZXJ0X251bSh3Yi5TU0YpOyBvcHRzLnJldnNzZlt3Yi5TU0ZbNjU1MzVdXSA9IDA7XG5cdFx0b3B0cy5zc2YgPSB3Yi5TU0Y7XG5cdH1cblx0b3B0cy5yZWxzID0ge307IG9wdHMud2JyZWxzID0ge307XG5cdG9wdHMuU3RyaW5ncyA9IC8qOjooKCovW10vKjo6IDphbnkpOlNTVCkqLzsgb3B0cy5TdHJpbmdzLkNvdW50ID0gMDsgb3B0cy5TdHJpbmdzLlVuaXF1ZSA9IDA7XG5cdGlmKGJyb3dzZXJfaGFzX01hcCkgb3B0cy5yZXZTdHJpbmdzID0gbmV3IE1hcCgpO1xuXHRlbHNlIHsgb3B0cy5yZXZTdHJpbmdzID0ge307IG9wdHMucmV2U3RyaW5ncy5mb28gPSBbXTsgZGVsZXRlIG9wdHMucmV2U3RyaW5ncy5mb287IH1cblx0dmFyIHdiZXh0ID0gb3B0cy5ib29rVHlwZSA9PSBcInhsc2JcIiA/IFwiYmluXCIgOiBcInhtbFwiO1xuXHR2YXIgdmJhZm10ID0gVkJBRk1UUy5pbmRleE9mKG9wdHMuYm9va1R5cGUpID4gLTE7XG5cdHZhciBjdCA9IG5ld19jdCgpO1xuXHRmaXhfd3JpdGVfb3B0cyhvcHRzID0gb3B0cyB8fCB7fSk7XG5cdHZhciB6aXAgPSB6aXBfbmV3KCk7XG5cdHZhciBmID0gXCJcIiwgcklkID0gMDtcblxuXHRvcHRzLmNlbGxYZnMgPSBbXTtcblx0Z2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCB7fSwge3JldnNzZjp7XCJHZW5lcmFsXCI6MH19KTtcblxuXHRpZighd2IuUHJvcHMpIHdiLlByb3BzID0ge307XG5cblx0ZiA9IFwiZG9jUHJvcHMvY29yZS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY29yZV9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5jb3JlcHJvcHMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAyLCBmLCBSRUxTLkNPUkVfUFJPUFMpO1xuXG5cdC8qOjppZighd2IuUHJvcHMpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0ZiA9IFwiZG9jUHJvcHMvYXBwLnhtbFwiO1xuXHRpZih3Yi5Qcm9wcyAmJiB3Yi5Qcm9wcy5TaGVldE5hbWVzKXsvKiBlbXB0eSAqL31cblx0ZWxzZSBpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLlNoZWV0cykgd2IuUHJvcHMuU2hlZXROYW1lcyA9IHdiLlNoZWV0TmFtZXM7XG5cdGVsc2Uge1xuXHRcdHZhciBfc24gPSBbXTtcblx0XHRmb3IodmFyIF9pID0gMDsgX2kgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytfaSlcblx0XHRcdGlmKCh3Yi5Xb3JrYm9vay5TaGVldHNbX2ldfHx7fSkuSGlkZGVuICE9IDIpIF9zbi5wdXNoKHdiLlNoZWV0TmFtZXNbX2ldKTtcblx0XHR3Yi5Qcm9wcy5TaGVldE5hbWVzID0gX3NuO1xuXHR9XG5cdHdiLlByb3BzLldvcmtzaGVldHMgPSB3Yi5Qcm9wcy5TaGVldE5hbWVzLmxlbmd0aDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfZXh0X3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdGN0LmV4dHByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMywgZiwgUkVMUy5FWFRfUFJPUFMpO1xuXG5cdGlmKHdiLkN1c3Rwcm9wcyAhPT0gd2IuUHJvcHMgJiYga2V5cyh3Yi5DdXN0cHJvcHN8fHt9KS5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwiZG9jUHJvcHMvY3VzdG9tLnhtbFwiO1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2N1c3RfcHJvcHMod2IuQ3VzdHByb3BzLCBvcHRzKSk7XG5cdFx0Y3QuY3VzdHByb3BzLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy5yZWxzLCA0LCBmLCBSRUxTLkNVU1RfUFJPUFMpO1xuXHR9XG5cblx0Zm9yKHJJZD0xO3JJZCA8PSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytySWQpIHtcblx0XHR2YXIgd3NyZWxzID0geychaWQnOnt9fTtcblx0XHR2YXIgd3MgPSB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tySWQtMV1dO1xuXHRcdHZhciBfdHlwZSA9ICh3cyB8fCB7fSlbXCIhdHlwZVwiXSB8fCBcInNoZWV0XCI7XG5cdFx0c3dpdGNoKF90eXBlKSB7XG5cdFx0Y2FzZSBcImNoYXJ0XCI6XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0ZGVmYXVsdDpcblx0XHRcdGYgPSBcInhsL3dvcmtzaGVldHMvc2hlZXRcIiArIHJJZCArIFwiLlwiICsgd2JleHQ7XG5cdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV93cyhySWQtMSwgZiwgb3B0cywgd2IsIHdzcmVscykpO1xuXHRcdFx0Y3Quc2hlZXRzLnB1c2goZik7XG5cdFx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwid29ya3NoZWV0cy9zaGVldFwiICsgcklkICsgXCIuXCIgKyB3YmV4dCwgUkVMUy5XU1swXSk7XG5cdFx0fVxuXG5cdFx0aWYod3MpIHtcblx0XHRcdHZhciBjb21tZW50cyA9IHdzWychY29tbWVudHMnXTtcblx0XHRcdHZhciBuZWVkX3ZtbCA9IGZhbHNlO1xuXHRcdFx0dmFyIGNmID0gXCJcIjtcblx0XHRcdGlmKGNvbW1lbnRzICYmIGNvbW1lbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y2YgPSBcInhsL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBjZiwgd3JpdGVfY21udChjb21tZW50cywgY2YsIG9wdHMpKTtcblx0XHRcdFx0Y3QuY29tbWVudHMucHVzaChjZik7XG5cdFx0XHRcdGFkZF9yZWxzKHdzcmVscywgLTEsIFwiLi4vY29tbWVudHNcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuQ01OVCk7XG5cdFx0XHRcdG5lZWRfdm1sID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmKHdzWychbGVnYWN5J10pIHtcblx0XHRcdFx0aWYobmVlZF92bWwpIHppcF9hZGRfZmlsZSh6aXAsIFwieGwvZHJhd2luZ3Mvdm1sRHJhd2luZ1wiICsgKHJJZCkgKyBcIi52bWxcIiwgd3JpdGVfY29tbWVudHNfdm1sKHJJZCwgd3NbJyFjb21tZW50cyddKSk7XG5cdFx0XHR9XG5cdFx0XHRkZWxldGUgd3NbJyFjb21tZW50cyddO1xuXHRcdFx0ZGVsZXRlIHdzWychbGVnYWN5J107XG5cdFx0fVxuXG5cdFx0aWYod3NyZWxzWychaWQnXS5ySWQxKSB6aXBfYWRkX2ZpbGUoemlwLCBnZXRfcmVsc19wYXRoKGYpLCB3cml0ZV9yZWxzKHdzcmVscykpO1xuXHR9XG5cblx0aWYob3B0cy5TdHJpbmdzICE9IG51bGwgJiYgb3B0cy5TdHJpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRmID0gXCJ4bC9zaGFyZWRTdHJpbmdzLlwiICsgd2JleHQ7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3N0KG9wdHMuU3RyaW5ncywgZiwgb3B0cykpO1xuXHRcdGN0LnN0cnMucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0LCBSRUxTLlNTVCk7XG5cdH1cblxuXHRmID0gXCJ4bC93b3JrYm9vay5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV93Yih3YiwgZiwgb3B0cykpO1xuXHRjdC53b3JrYm9va3MucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAxLCBmLCBSRUxTLldCKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHRoZW1lcyAqL1xuXG5cdGYgPSBcInhsL3RoZW1lL3RoZW1lMS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfdGhlbWUod2IuVGhlbWVzLCBvcHRzKSk7XG5cdGN0LnRoZW1lcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwidGhlbWUvdGhlbWUxLnhtbFwiLCBSRUxTLlRIRU1FKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHN0eWxlcyAqL1xuXG5cdGYgPSBcInhsL3N0eWxlcy5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zdHkod2IsIGYsIG9wdHMpKTtcblx0Y3Quc3R5bGVzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJzdHlsZXMuXCIgKyB3YmV4dCwgUkVMUy5TVFkpO1xuXG5cdGlmKHdiLnZiYXJhdyAmJiB2YmFmbXQpIHtcblx0XHRmID0gXCJ4bC92YmFQcm9qZWN0LmJpblwiO1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdiLnZiYXJhdyk7XG5cdFx0Y3QudmJhLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInZiYVByb2plY3QuYmluXCIsIFJFTFMuVkJBKTtcblx0fVxuXG5cdGYgPSBcInhsL21ldGFkYXRhLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3hsbWV0YShmKSk7XG5cdGN0Lm1ldGFkYXRhLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJtZXRhZGF0YS5cIiArIHdiZXh0LCBSRUxTLlhMTUVUQSk7XG5cblx0emlwX2FkZF9maWxlKHppcCwgXCJbQ29udGVudF9UeXBlc10ueG1sXCIsIHdyaXRlX2N0KGN0LCBvcHRzKSk7XG5cdHppcF9hZGRfZmlsZSh6aXAsICdfcmVscy8ucmVscycsIHdyaXRlX3JlbHMob3B0cy5yZWxzKSk7XG5cdHppcF9hZGRfZmlsZSh6aXAsICd4bC9fcmVscy93b3JrYm9vay4nICsgd2JleHQgKyAnLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMud2JyZWxzKSk7XG5cblx0ZGVsZXRlIG9wdHMucmV2c3NmOyBkZWxldGUgb3B0cy5zc2Y7XG5cdHJldHVybiB6aXA7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3ppcF94bHN4KHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOlpJUCovIHtcblx0X3NoYXBlaWQgPSAxMDI0O1xuXHRpZih3YiAmJiAhd2IuU1NGKSB7XG5cdFx0d2IuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdH1cblx0aWYod2IgJiYgd2IuU1NGKSB7XG5cdFx0bWFrZV9zc2YoKTsgU1NGX2xvYWRfdGFibGUod2IuU1NGKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdG9wdHMucmV2c3NmID0gZXZlcnRfbnVtKHdiLlNTRik7IG9wdHMucmV2c3NmW3diLlNTRls2NTUzNV1dID0gMDtcblx0XHRvcHRzLnNzZiA9IHdiLlNTRjtcblx0fVxuXHRvcHRzLnJlbHMgPSB7fTsgb3B0cy53YnJlbHMgPSB7fTtcblx0b3B0cy5TdHJpbmdzID0gLyo6OigoKi9bXS8qOjogOmFueSk6U1NUKSovOyBvcHRzLlN0cmluZ3MuQ291bnQgPSAwOyBvcHRzLlN0cmluZ3MuVW5pcXVlID0gMDtcblx0aWYoYnJvd3Nlcl9oYXNfTWFwKSBvcHRzLnJldlN0cmluZ3MgPSBuZXcgTWFwKCk7XG5cdGVsc2UgeyBvcHRzLnJldlN0cmluZ3MgPSB7fTsgb3B0cy5yZXZTdHJpbmdzLmZvbyA9IFtdOyBkZWxldGUgb3B0cy5yZXZTdHJpbmdzLmZvbzsgfVxuXHR2YXIgd2JleHQgPSBcInhtbFwiO1xuXHR2YXIgdmJhZm10ID0gVkJBRk1UUy5pbmRleE9mKG9wdHMuYm9va1R5cGUpID4gLTE7XG5cdHZhciBjdCA9IG5ld19jdCgpO1xuXHRmaXhfd3JpdGVfb3B0cyhvcHRzID0gb3B0cyB8fCB7fSk7XG5cdHZhciB6aXAgPSB6aXBfbmV3KCk7XG5cdHZhciBmID0gXCJcIiwgcklkID0gMDtcblxuXHRvcHRzLmNlbGxYZnMgPSBbXTtcblx0Z2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCB7fSwge3JldnNzZjp7XCJHZW5lcmFsXCI6MH19KTtcblxuXHRpZighd2IuUHJvcHMpIHdiLlByb3BzID0ge307XG5cblx0ZiA9IFwiZG9jUHJvcHMvY29yZS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY29yZV9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5jb3JlcHJvcHMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAyLCBmLCBSRUxTLkNPUkVfUFJPUFMpO1xuXG5cdC8qOjppZighd2IuUHJvcHMpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0ZiA9IFwiZG9jUHJvcHMvYXBwLnhtbFwiO1xuXHRpZih3Yi5Qcm9wcyAmJiB3Yi5Qcm9wcy5TaGVldE5hbWVzKXsvKiBlbXB0eSAqL31cblx0ZWxzZSBpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLlNoZWV0cykgd2IuUHJvcHMuU2hlZXROYW1lcyA9IHdiLlNoZWV0TmFtZXM7XG5cdGVsc2Uge1xuXHRcdHZhciBfc24gPSBbXTtcblx0XHRmb3IodmFyIF9pID0gMDsgX2kgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytfaSlcblx0XHRcdGlmKCh3Yi5Xb3JrYm9vay5TaGVldHNbX2ldfHx7fSkuSGlkZGVuICE9IDIpIF9zbi5wdXNoKHdiLlNoZWV0TmFtZXNbX2ldKTtcblx0XHR3Yi5Qcm9wcy5TaGVldE5hbWVzID0gX3NuO1xuXHR9XG5cdHdiLlByb3BzLldvcmtzaGVldHMgPSB3Yi5Qcm9wcy5TaGVldE5hbWVzLmxlbmd0aDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfZXh0X3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdGN0LmV4dHByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMywgZiwgUkVMUy5FWFRfUFJPUFMpO1xuXG5cdGlmKHdiLkN1c3Rwcm9wcyAhPT0gd2IuUHJvcHMgJiYga2V5cyh3Yi5DdXN0cHJvcHN8fHt9KS5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwiZG9jUHJvcHMvY3VzdG9tLnhtbFwiO1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2N1c3RfcHJvcHMod2IuQ3VzdHByb3BzLCBvcHRzKSk7XG5cdFx0Y3QuY3VzdHByb3BzLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy5yZWxzLCA0LCBmLCBSRUxTLkNVU1RfUFJPUFMpO1xuXHR9XG5cblx0dmFyIHBlb3BsZSA9IFtcIlNoZWV0SjVcIl07XG5cdG9wdHMudGNpZCA9IDA7XG5cblx0Zm9yKHJJZD0xO3JJZCA8PSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytySWQpIHtcblx0XHR2YXIgd3NyZWxzID0geychaWQnOnt9fTtcblx0XHR2YXIgd3MgPSB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tySWQtMV1dO1xuXHRcdHZhciBfdHlwZSA9ICh3cyB8fCB7fSlbXCIhdHlwZVwiXSB8fCBcInNoZWV0XCI7XG5cdFx0c3dpdGNoKF90eXBlKSB7XG5cdFx0Y2FzZSBcImNoYXJ0XCI6XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0ZGVmYXVsdDpcblx0XHRcdGYgPSBcInhsL3dvcmtzaGVldHMvc2hlZXRcIiArIHJJZCArIFwiLlwiICsgd2JleHQ7XG5cdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV93c194bWwocklkLTEsIG9wdHMsIHdiLCB3c3JlbHMpKTtcblx0XHRcdGN0LnNoZWV0cy5wdXNoKGYpO1xuXHRcdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcIndvcmtzaGVldHMvc2hlZXRcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuV1NbMF0pO1xuXHRcdH1cblxuXHRcdGlmKHdzKSB7XG5cdFx0XHR2YXIgY29tbWVudHMgPSB3c1snIWNvbW1lbnRzJ107XG5cdFx0XHR2YXIgbmVlZF92bWwgPSBmYWxzZTtcblx0XHRcdHZhciBjZiA9IFwiXCI7XG5cdFx0XHRpZihjb21tZW50cyAmJiBjb21tZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHZhciBuZWVkdGMgPSBmYWxzZTtcblx0XHRcdFx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbihjYXJyKSB7XG5cdFx0XHRcdFx0Y2FyclsxXS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgaWYoYy5UID09IHRydWUpIG5lZWR0YyA9IHRydWU7IH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYobmVlZHRjKSB7XG5cdFx0XHRcdFx0Y2YgPSBcInhsL3RocmVhZGVkQ29tbWVudHMvdGhyZWFkZWRDb21tZW50XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0XHRcdHppcF9hZGRfZmlsZSh6aXAsIGNmLCB3cml0ZV90Y21udF94bWwoY29tbWVudHMsIHBlb3BsZSwgb3B0cykpO1xuXHRcdFx0XHRcdGN0LnRocmVhZGVkY29tbWVudHMucHVzaChjZik7XG5cdFx0XHRcdFx0YWRkX3JlbHMod3NyZWxzLCAtMSwgXCIuLi90aHJlYWRlZENvbW1lbnRzL3RocmVhZGVkQ29tbWVudFwiICsgcklkICsgXCIuXCIgKyB3YmV4dCwgUkVMUy5UQ01OVCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjZiA9IFwieGwvY29tbWVudHNcIiArIHJJZCArIFwiLlwiICsgd2JleHQ7XG5cdFx0XHRcdHppcF9hZGRfZmlsZSh6aXAsIGNmLCB3cml0ZV9jb21tZW50c194bWwoY29tbWVudHMsIG9wdHMpKTtcblx0XHRcdFx0Y3QuY29tbWVudHMucHVzaChjZik7XG5cdFx0XHRcdGFkZF9yZWxzKHdzcmVscywgLTEsIFwiLi4vY29tbWVudHNcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuQ01OVCk7XG5cdFx0XHRcdG5lZWRfdm1sID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmKHdzWychbGVnYWN5J10pIHtcblx0XHRcdFx0aWYobmVlZF92bWwpIHppcF9hZGRfZmlsZSh6aXAsIFwieGwvZHJhd2luZ3Mvdm1sRHJhd2luZ1wiICsgKHJJZCkgKyBcIi52bWxcIiwgd3JpdGVfY29tbWVudHNfdm1sKHJJZCwgd3NbJyFjb21tZW50cyddKSk7XG5cdFx0XHR9XG5cdFx0XHRkZWxldGUgd3NbJyFjb21tZW50cyddO1xuXHRcdFx0ZGVsZXRlIHdzWychbGVnYWN5J107XG5cdFx0fVxuXG5cdFx0aWYod3NyZWxzWychaWQnXS5ySWQxKSB6aXBfYWRkX2ZpbGUoemlwLCBnZXRfcmVsc19wYXRoKGYpLCB3cml0ZV9yZWxzKHdzcmVscykpO1xuXHR9XG5cblx0aWYob3B0cy5TdHJpbmdzICE9IG51bGwgJiYgb3B0cy5TdHJpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRmID0gXCJ4bC9zaGFyZWRTdHJpbmdzLlwiICsgd2JleHQ7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3N0X3htbChvcHRzLlN0cmluZ3MsIG9wdHMpKTtcblx0XHRjdC5zdHJzLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInNoYXJlZFN0cmluZ3MuXCIgKyB3YmV4dCwgUkVMUy5TU1QpO1xuXHR9XG5cblx0ZiA9IFwieGwvd29ya2Jvb2suXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd2JfeG1sKHdiLCBvcHRzKSk7XG5cdGN0Lndvcmtib29rcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDEsIGYsIFJFTFMuV0IpO1xuXG5cdC8qIFRPRE86IHNvbWV0aGluZyBtb3JlIGludGVsbGlnZW50IHdpdGggdGhlbWVzICovXG5cblx0ZiA9IFwieGwvdGhlbWUvdGhlbWUxLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV90aGVtZSh3Yi5UaGVtZXMsIG9wdHMpKTtcblx0Y3QudGhlbWVzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ0aGVtZS90aGVtZTEueG1sXCIsIFJFTFMuVEhFTUUpO1xuXG5cdC8qIFRPRE86IHNvbWV0aGluZyBtb3JlIGludGVsbGlnZW50IHdpdGggc3R5bGVzICovXG5cblx0ZiA9IFwieGwvc3R5bGVzLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3N0eV94bWwod2IsIG9wdHMpKTtcblx0Y3Quc3R5bGVzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJzdHlsZXMuXCIgKyB3YmV4dCwgUkVMUy5TVFkpO1xuXG5cdGlmKHdiLnZiYXJhdyAmJiB2YmFmbXQpIHtcblx0XHRmID0gXCJ4bC92YmFQcm9qZWN0LmJpblwiO1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdiLnZiYXJhdyk7XG5cdFx0Y3QudmJhLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInZiYVByb2plY3QuYmluXCIsIFJFTFMuVkJBKTtcblx0fVxuXG5cdGYgPSBcInhsL21ldGFkYXRhLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3hsbWV0YV94bWwoKSk7XG5cdGN0Lm1ldGFkYXRhLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJtZXRhZGF0YS5cIiArIHdiZXh0LCBSRUxTLlhMTUVUQSk7XG5cblx0aWYocGVvcGxlLmxlbmd0aCA+IDEpIHtcblx0XHRmID0gXCJ4bC9wZXJzb25zL3BlcnNvbi54bWxcIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9wZW9wbGVfeG1sKHBlb3BsZSwgb3B0cykpO1xuXHRcdGN0LnBlb3BsZS5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJwZXJzb25zL3BlcnNvbi54bWxcIiwgUkVMUy5QRU9QTEUpO1xuXHR9XG5cblx0emlwX2FkZF9maWxlKHppcCwgXCJbQ29udGVudF9UeXBlc10ueG1sXCIsIHdyaXRlX2N0KGN0LCBvcHRzKSk7XG5cdHppcF9hZGRfZmlsZSh6aXAsICdfcmVscy8ucmVscycsIHdyaXRlX3JlbHMob3B0cy5yZWxzKSk7XG5cdHppcF9hZGRfZmlsZSh6aXAsICd4bC9fcmVscy93b3JrYm9vay4nICsgd2JleHQgKyAnLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMud2JyZWxzKSk7XG5cblx0ZGVsZXRlIG9wdHMucmV2c3NmOyBkZWxldGUgb3B0cy5zc2Y7XG5cdHJldHVybiB6aXA7XG59XG5cbmZ1bmN0aW9uIGZpcnN0Ynl0ZShmLyo6UmF3RGF0YSovLG8vKjo/VHlwZU9wdHMqLykvKjpBcnJheTxudW1iZXI+Ki8ge1xuXHR2YXIgeCA9IFwiXCI7XG5cdHN3aXRjaCgob3x8e30pLnR5cGUgfHwgXCJiYXNlNjRcIikge1xuXHRcdGNhc2UgJ2J1ZmZlcic6IHJldHVybiBbZlswXSwgZlsxXSwgZlsyXSwgZlszXSwgZls0XSwgZls1XSwgZls2XSwgZls3XV07XG5cdFx0Y2FzZSAnYmFzZTY0JzogeCA9IEJhc2U2NF9kZWNvZGUoZi5zbGljZSgwLDEyKSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IHggPSBmOyBicmVhaztcblx0XHRjYXNlICdhcnJheSc6ICByZXR1cm4gW2ZbMF0sIGZbMV0sIGZbMl0sIGZbM10sIGZbNF0sIGZbNV0sIGZbNl0sIGZbN11dO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgKG8gJiYgby50eXBlIHx8IFwidW5kZWZpbmVkXCIpKTtcblx0fVxuXHRyZXR1cm4gW3guY2hhckNvZGVBdCgwKSwgeC5jaGFyQ29kZUF0KDEpLCB4LmNoYXJDb2RlQXQoMiksIHguY2hhckNvZGVBdCgzKSwgeC5jaGFyQ29kZUF0KDQpLCB4LmNoYXJDb2RlQXQoNSksIHguY2hhckNvZGVBdCg2KSwgeC5jaGFyQ29kZUF0KDcpXTtcbn1cblxuZnVuY3Rpb24gcmVhZF9jZmIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdGlmKENGQi5maW5kKGNmYiwgXCJFbmNyeXB0ZWRQYWNrYWdlXCIpKSByZXR1cm4gcGFyc2VfeGxzeGNmYihjZmIsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfeGxzY2ZiKGNmYiwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfemlwKGRhdGEvKjpSYXdEYXRhKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciB6aXAsIGQgPSBkYXRhO1xuXHR2YXIgbyA9IG9wdHN8fHt9O1xuXHRpZighby50eXBlKSBvLnR5cGUgPSAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZGF0YSkpID8gXCJidWZmZXJcIiA6IFwiYmFzZTY0XCI7XG5cdHppcCA9IHppcF9yZWFkKGQsIG8pO1xuXHRyZXR1cm4gcGFyc2VfemlwKHppcCwgbyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfcGxhaW50ZXh0KGRhdGEvKjpzdHJpbmcqLywgby8qOlBhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgaSA9IDA7XG5cdG1haW46IHdoaWxlKGkgPCBkYXRhLmxlbmd0aCkgc3dpdGNoKGRhdGEuY2hhckNvZGVBdChpKSkge1xuXHRcdGNhc2UgMHgwQTogY2FzZSAweDBEOiBjYXNlIDB4MjA6ICsraTsgYnJlYWs7XG5cdFx0Y2FzZSAweDNDOiByZXR1cm4gcGFyc2VfeGxtbChkYXRhLnNsaWNlKGkpLG8pO1xuXHRcdGRlZmF1bHQ6IGJyZWFrIG1haW47XG5cdH1cblx0cmV0dXJuIFBSTi50b193b3JrYm9vayhkYXRhLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZF9wbGFpbnRleHRfcmF3KGRhdGEvKjpSYXdEYXRhKi8sIG8vKjpQYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIHN0ciA9IFwiXCIsIGJ5dGVzID0gZmlyc3RieXRlKGRhdGEsIG8pO1xuXHRzd2l0Y2goby50eXBlKSB7XG5cdFx0Y2FzZSAnYmFzZTY0Jzogc3RyID0gQmFzZTY0X2RlY29kZShkYXRhKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYmluYXJ5Jzogc3RyID0gZGF0YTsgYnJlYWs7XG5cdFx0Y2FzZSAnYnVmZmVyJzogc3RyID0gZGF0YS50b1N0cmluZygnYmluYXJ5Jyk7IGJyZWFrO1xuXHRcdGNhc2UgJ2FycmF5Jzogc3RyID0gY2Myc3RyKGRhdGEpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG8udHlwZSk7XG5cdH1cblx0aWYoYnl0ZXNbMF0gPT0gMHhFRiAmJiBieXRlc1sxXSA9PSAweEJCICYmIGJ5dGVzWzJdID09IDB4QkYpIHN0ciA9IHV0ZjhyZWFkKHN0cik7XG5cdG8udHlwZSA9IFwiYmluYXJ5XCI7XG5cdHJldHVybiByZWFkX3BsYWludGV4dChzdHIsIG8pO1xufVxuXG5mdW5jdGlvbiByZWFkX3V0ZjE2KGRhdGEvKjpSYXdEYXRhKi8sIG8vKjpQYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIGQgPSBkYXRhO1xuXHRpZihvLnR5cGUgPT0gJ2Jhc2U2NCcpIGQgPSBCYXNlNjRfZGVjb2RlKGQpO1xuXHRkID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGQuc2xpY2UoMiksICdzdHInKTtcblx0by50eXBlID0gXCJiaW5hcnlcIjtcblx0cmV0dXJuIHJlYWRfcGxhaW50ZXh0KGQsIG8pO1xufVxuXG5mdW5jdGlvbiBic3RyaWZ5KGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiAhZGF0YS5tYXRjaCgvW15cXHgwMC1cXHg3Rl0vKSA/IGRhdGEgOiB1dGY4d3JpdGUoZGF0YSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfcHJuKGRhdGEsIGQsIG8sIHN0cikge1xuXHRpZihzdHIpIHsgby50eXBlID0gXCJzdHJpbmdcIjsgcmV0dXJuIFBSTi50b193b3JrYm9vayhkYXRhLCBvKTsgfVxuXHRyZXR1cm4gUFJOLnRvX3dvcmtib29rKGQsIG8pO1xufVxuXG5mdW5jdGlvbiByZWFkU3luYyhkYXRhLyo6UmF3RGF0YSovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRyZXNldF9jcCgpO1xuXHR2YXIgbyA9IG9wdHN8fHt9O1xuXHRpZih0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgcmV0dXJuIHJlYWRTeW5jKG5ldyBVaW50OEFycmF5KGRhdGEpLCAobyA9IGR1cChvKSwgby50eXBlID0gXCJhcnJheVwiLCBvKSk7XG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiAhby50eXBlKSBvLnR5cGUgPSB0eXBlb2YgRGVubyAhPT0gXCJ1bmRlZmluZWRcIiA/IFwiYnVmZmVyXCIgOiBcImFycmF5XCI7XG5cdHZhciBkID0gZGF0YSwgbiA9IFswLDAsMCwwXSwgc3RyID0gZmFsc2U7XG5cdGlmKG8uY2VsbFN0eWxlcykgeyBvLmNlbGxORiA9IHRydWU7IG8uc2hlZXRTdHVicyA9IHRydWU7IH1cblx0X3NzZm9wdHMgPSB7fTtcblx0aWYoby5kYXRlTkYpIF9zc2ZvcHRzLmRhdGVORiA9IG8uZGF0ZU5GO1xuXHRpZighby50eXBlKSBvLnR5cGUgPSAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZGF0YSkpID8gXCJidWZmZXJcIiA6IFwiYmFzZTY0XCI7XG5cdGlmKG8udHlwZSA9PSBcImZpbGVcIikgeyBvLnR5cGUgPSBoYXNfYnVmID8gXCJidWZmZXJcIiA6IFwiYmluYXJ5XCI7IGQgPSByZWFkX2JpbmFyeShkYXRhKTsgaWYodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmICFoYXNfYnVmKSBvLnR5cGUgPSBcImFycmF5XCI7IH1cblx0aWYoby50eXBlID09IFwic3RyaW5nXCIpIHsgc3RyID0gdHJ1ZTsgby50eXBlID0gXCJiaW5hcnlcIjsgby5jb2RlcGFnZSA9IDY1MDAxOyBkID0gYnN0cmlmeShkYXRhKTsgfVxuXHRpZihvLnR5cGUgPT0gJ2FycmF5JyAmJiB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIGFiPW5ldyBBcnJheUJ1ZmZlcigzKSwgdnU9bmV3IFVpbnQ4QXJyYXkoYWIpOyB2dS5mb289XCJiYXJcIjtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGlmKCF2dS5mb28pIHtvPWR1cChvKTsgby50eXBlPSdhcnJheSc7IHJldHVybiByZWFkU3luYyhhYjJhKGQpLCBvKTt9XG5cdH1cblx0c3dpdGNoKChuID0gZmlyc3RieXRlKGQsIG8pKVswXSkge1xuXHRcdGNhc2UgMHhEMDogaWYoblsxXSA9PT0gMHhDRiAmJiBuWzJdID09PSAweDExICYmIG5bM10gPT09IDB4RTAgJiYgbls0XSA9PT0gMHhBMSAmJiBuWzVdID09PSAweEIxICYmIG5bNl0gPT09IDB4MUEgJiYgbls3XSA9PT0gMHhFMSkgcmV0dXJuIHJlYWRfY2ZiKENGQi5yZWFkKGQsIG8pLCBvKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDA5OiBpZihuWzFdIDw9IDB4MDgpIHJldHVybiBwYXJzZV94bHNjZmIoZCwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHgzQzogcmV0dXJuIHBhcnNlX3hsbWwoZCwgbyk7XG5cdFx0Y2FzZSAweDQ5OlxuXHRcdFx0aWYoblsxXSA9PT0gMHg0OSAmJiBuWzJdID09PSAweDJhICYmIG5bM10gPT09IDB4MDApIHRocm93IG5ldyBFcnJvcihcIlRJRkYgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldFwiKTtcblx0XHRcdGlmKG5bMV0gPT09IDB4NDQpIHJldHVybiByZWFkX3diX0lEKGQsIG8pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAweDU0OiBpZihuWzFdID09PSAweDQxICYmIG5bMl0gPT09IDB4NDIgJiYgblszXSA9PT0gMHg0QykgcmV0dXJuIERJRi50b193b3JrYm9vayhkLCBvKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDUwOiByZXR1cm4gKG5bMV0gPT09IDB4NEIgJiYgblsyXSA8IDB4MDkgJiYgblszXSA8IDB4MDkpID8gcmVhZF96aXAoZCwgbykgOiByZWFkX3BybihkYXRhLCBkLCBvLCBzdHIpO1xuXHRcdGNhc2UgMHhFRjogcmV0dXJuIG5bM10gPT09IDB4M0MgPyBwYXJzZV94bG1sKGQsIG8pIDogcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKTtcblx0XHRjYXNlIDB4RkY6XG5cdFx0XHRpZihuWzFdID09PSAweEZFKSB7IHJldHVybiByZWFkX3V0ZjE2KGQsIG8pOyB9XG5cdFx0XHRlbHNlIGlmKG5bMV0gPT09IDB4MDAgJiYgblsyXSA9PT0gMHgwMiAmJiBuWzNdID09PSAweDAwKSByZXR1cm4gV0tfLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAweDAwOlxuXHRcdFx0aWYoblsxXSA9PT0gMHgwMCkge1xuXHRcdFx0XHRpZihuWzJdID49IDB4MDIgJiYgblszXSA9PT0gMHgwMCkgcmV0dXJuIFdLXy50b193b3JrYm9vayhkLCBvKTtcblx0XHRcdFx0aWYoblsyXSA9PT0gMHgwMCAmJiAoblszXSA9PT0gMHgwOCB8fCBuWzNdID09PSAweDA5KSkgcmV0dXJuIFdLXy50b193b3JrYm9vayhkLCBvKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMHgwMzogY2FzZSAweDgzOiBjYXNlIDB4OEI6IGNhc2UgMHg4QzogcmV0dXJuIERCRi50b193b3JrYm9vayhkLCBvKTtcblx0XHRjYXNlIDB4N0I6IGlmKG5bMV0gPT09IDB4NUMgJiYgblsyXSA9PT0gMHg3MiAmJiBuWzNdID09PSAweDc0KSByZXR1cm4gUlRGLnRvX3dvcmtib29rKGQsIG8pOyBicmVhaztcblx0XHRjYXNlIDB4MEE6IGNhc2UgMHgwRDogY2FzZSAweDIwOiByZXR1cm4gcmVhZF9wbGFpbnRleHRfcmF3KGQsIG8pO1xuXHRcdGNhc2UgMHg4OTogaWYoblsxXSA9PT0gMHg1MCAmJiBuWzJdID09PSAweDRFICYmIG5bM10gPT09IDB4NDcpIHRocm93IG5ldyBFcnJvcihcIlBORyBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0XCIpOyBicmVhaztcblx0fVxuXHRpZihEQkZfU1VQUE9SVEVEX1ZFUlNJT05TLmluZGV4T2YoblswXSkgPiAtMSAmJiBuWzJdIDw9IDEyICYmIG5bM10gPD0gMzEpIHJldHVybiBEQkYudG9fd29ya2Jvb2soZCwgbyk7XG5cdHJldHVybiByZWFkX3BybihkYXRhLCBkLCBvLCBzdHIpO1xufVxuXG5mdW5jdGlvbiByZWFkRmlsZVN5bmMoZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIG8gPSBvcHRzfHx7fTsgby50eXBlID0gJ2ZpbGUnO1xuXHRyZXR1cm4gcmVhZFN5bmMoZmlsZW5hbWUsIG8pO1xufVxuZnVuY3Rpb24gd3JpdGVfY2ZiX2N0cihjZmIvKjpDRkJDb250YWluZXIqLywgby8qOldyaXRlT3B0cyovKS8qOmFueSovIHtcblx0c3dpdGNoKG8udHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogY2FzZSBcImJpbmFyeVwiOiBicmVhaztcblx0XHRjYXNlIFwiYnVmZmVyXCI6IGNhc2UgXCJhcnJheVwiOiBvLnR5cGUgPSBcIlwiOyBicmVhaztcblx0XHRjYXNlIFwiZmlsZVwiOiByZXR1cm4gd3JpdGVfZGwoby5maWxlLCBDRkIud3JpdGUoY2ZiLCB7dHlwZTpoYXNfYnVmID8gJ2J1ZmZlcicgOiBcIlwifSkpO1xuXHRcdGNhc2UgXCJzdHJpbmdcIjogdGhyb3cgbmV3IEVycm9yKFwiJ3N0cmluZycgb3V0cHV0IHR5cGUgaW52YWxpZCBmb3IgJ1wiICsgby5ib29rVHlwZSArIFwiJyBmaWxlc1wiKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG8udHlwZSk7XG5cdH1cblx0cmV0dXJuIENGQi53cml0ZShjZmIsIG8pO1xufVxuXG4vKjo6IGRlY2xhcmUgdmFyIGVuY3J5cHRfYWdpbGU6YW55OyAqL1xuZnVuY3Rpb24gd3JpdGVfemlwX3R5cGUod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHR2YXIgeiA9IHdyaXRlX3ppcCh3Yiwgbyk7XG5cdHJldHVybiB3cml0ZV96aXBfZGVub3VlbWVudCh6LCBvKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3ppcF90eXBlWExTWCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHR2YXIgbyA9IGR1cChvcHRzfHx7fSk7XG5cdHZhciB6ID0gd3JpdGVfemlwX3hsc3god2IsIG8pO1xuXHRyZXR1cm4gd3JpdGVfemlwX2Rlbm91ZW1lbnQoeiwgbyk7XG59XG5mdW5jdGlvbiB3cml0ZV96aXBfZGVub3VlbWVudCh6Lyo6YW55Ki8sIG8vKjo/V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHR2YXIgb29wdHMgPSB7fTtcblx0dmFyIGZ0eXBlID0gaGFzX2J1ZiA/IFwibm9kZWJ1ZmZlclwiIDogKHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiID8gXCJhcnJheVwiIDogXCJzdHJpbmdcIik7XG5cdGlmKG8uY29tcHJlc3Npb24pIG9vcHRzLmNvbXByZXNzaW9uID0gJ0RFRkxBVEUnO1xuXHRpZihvLnBhc3N3b3JkKSBvb3B0cy50eXBlID0gZnR5cGU7XG5cdGVsc2Ugc3dpdGNoKG8udHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogb29wdHMudHlwZSA9IFwiYmFzZTY0XCI7IGJyZWFrO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogb29wdHMudHlwZSA9IFwic3RyaW5nXCI7IGJyZWFrO1xuXHRcdGNhc2UgXCJzdHJpbmdcIjogdGhyb3cgbmV3IEVycm9yKFwiJ3N0cmluZycgb3V0cHV0IHR5cGUgaW52YWxpZCBmb3IgJ1wiICsgby5ib29rVHlwZSArIFwiJyBmaWxlc1wiKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6XG5cdFx0Y2FzZSBcImZpbGVcIjogb29wdHMudHlwZSA9IGZ0eXBlOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG8udHlwZSk7XG5cdH1cblx0dmFyIG91dCA9IHouRnVsbFBhdGhzID8gQ0ZCLndyaXRlKHosIHtmaWxlVHlwZTpcInppcFwiLCB0eXBlOiAvKjo6KCove1wibm9kZWJ1ZmZlclwiOiBcImJ1ZmZlclwiLCBcInN0cmluZ1wiOiBcImJpbmFyeVwifS8qOjogOmFueSkqL1tvb3B0cy50eXBlXSB8fCBvb3B0cy50eXBlLCBjb21wcmVzc2lvbjogISFvLmNvbXByZXNzaW9ufSkgOiB6LmdlbmVyYXRlKG9vcHRzKTtcblx0aWYodHlwZW9mIERlbm8gIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRpZih0eXBlb2Ygb3V0ID09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmKG8udHlwZSA9PSBcImJpbmFyeVwiIHx8IG8udHlwZSA9PSBcImJhc2U2NFwiKSByZXR1cm4gb3V0O1xuXHRcdFx0b3V0ID0gbmV3IFVpbnQ4QXJyYXkoczJhYihvdXQpKTtcblx0XHR9XG5cdH1cbi8qanNoaW50IC1XMDgzICovXG5cdGlmKG8ucGFzc3dvcmQgJiYgdHlwZW9mIGVuY3J5cHRfYWdpbGUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gd3JpdGVfY2ZiX2N0cihlbmNyeXB0X2FnaWxlKG91dCwgby5wYXNzd29yZCksIG8pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4vKmpzaGludCArVzA4MyAqL1xuXHRpZihvLnR5cGUgPT09IFwiZmlsZVwiKSByZXR1cm4gd3JpdGVfZGwoby5maWxlLCBvdXQpO1xuXHRyZXR1cm4gby50eXBlID09IFwic3RyaW5nXCIgPyB1dGY4cmVhZCgvKjo6KCovb3V0Lyo6OiA6YW55KSovKSA6IG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY2ZiX3R5cGUod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG8gPSBvcHRzfHx7fTtcblx0dmFyIGNmYi8qOkNGQkNvbnRhaW5lciovID0gd3JpdGVfeGxzY2ZiKHdiLCBvKTtcblx0cmV0dXJuIHdyaXRlX2NmYl9jdHIoY2ZiLCBvKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfc3RyaW5nX3R5cGUob3V0Lyo6c3RyaW5nKi8sIG9wdHMvKjpXcml0ZU9wdHMqLywgYm9tLyo6P3N0cmluZyovKS8qOmFueSovIHtcblx0aWYoIWJvbSkgYm9tID0gXCJcIjtcblx0dmFyIG8gPSBib20gKyBvdXQ7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBCYXNlNjRfZW5jb2RlKHV0Zjh3cml0ZShvKSk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiByZXR1cm4gdXRmOHdyaXRlKG8pO1xuXHRcdGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIG91dDtcblx0XHRjYXNlIFwiZmlsZVwiOiByZXR1cm4gd3JpdGVfZGwob3B0cy5maWxlLCBvLCAndXRmOCcpO1xuXHRcdGNhc2UgXCJidWZmZXJcIjoge1xuXHRcdFx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlcl9mcm9tKG8sICd1dGY4Jyk7XG5cdFx0XHRlbHNlIGlmKHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShvKTtcblx0XHRcdGVsc2UgcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKG8sIHt0eXBlOidiaW5hcnknfSkuc3BsaXQoXCJcIikubWFwKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGMuY2hhckNvZGVBdCgwKTsgfSk7XG5cdFx0fVxuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfc3R4dF90eXBlKG91dC8qOnN0cmluZyovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gQmFzZTY0X2VuY29kZShvdXQpO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogcmV0dXJuIG91dDtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHJldHVybiBvdXQ7IC8qIG92ZXJyaWRlIGluIHNoZWV0X3RvX3R4dCAqL1xuXHRcdGNhc2UgXCJmaWxlXCI6IHJldHVybiB3cml0ZV9kbChvcHRzLmZpbGUsIG91dCwgJ2JpbmFyeScpO1xuXHRcdGNhc2UgXCJidWZmZXJcIjoge1xuXHRcdFx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlcl9mcm9tKG91dCwgJ2JpbmFyeScpO1xuXHRcdFx0ZWxzZSByZXR1cm4gb3V0LnNwbGl0KFwiXCIpLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pO1xuXHRcdH1cblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG59XG5cbi8qIFRPRE86IHRlc3QgY29uc2lzdGVuY3kgKi9cbmZ1bmN0aW9uIHdyaXRlX2JpbmFyeV90eXBlKG91dCwgb3B0cy8qOldyaXRlT3B0cyovKS8qOmFueSovIHtcblx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRjYXNlIFwiYmFzZTY0XCI6XG5cdFx0Y2FzZSBcImJpbmFyeVwiOlxuXHRcdFx0dmFyIGJzdHIgPSBcIlwiO1xuXHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBvdXQubGVuZ3RoOyArK2kpIGJzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShvdXRbaV0pO1xuXHRcdFx0cmV0dXJuIG9wdHMudHlwZSA9PSAnYmFzZTY0JyA/IEJhc2U2NF9lbmNvZGUoYnN0cikgOiBvcHRzLnR5cGUgPT0gJ3N0cmluZycgPyB1dGY4cmVhZChic3RyKSA6IGJzdHI7XG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG9wdHMuZmlsZSwgb3V0KTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IHJldHVybiBvdXQ7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3luY1hMU1god2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKSB7XG5cdHJlc2V0X2NwKCk7XG5cdGNoZWNrX3diKHdiKTtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHRpZihvLmNlbGxTdHlsZXMpIHsgby5jZWxsTkYgPSB0cnVlOyBvLnNoZWV0U3R1YnMgPSB0cnVlOyB9XG5cdGlmKG8udHlwZSA9PSBcImFycmF5XCIpIHsgby50eXBlID0gXCJiaW5hcnlcIjsgdmFyIG91dC8qOnN0cmluZyovID0gKHdyaXRlU3luY1hMU1god2IsIG8pLyo6YW55Ki8pOyBvLnR5cGUgPSBcImFycmF5XCI7IHJldHVybiBzMmFiKG91dCk7IH1cblx0cmV0dXJuIHdyaXRlX3ppcF90eXBlWExTWCh3Yiwgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3luYyh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVPcHRzKi8pIHtcblx0cmVzZXRfY3AoKTtcblx0Y2hlY2tfd2Iod2IpO1xuXHR2YXIgbyA9IGR1cChvcHRzfHx7fSk7XG5cdGlmKG8uY2VsbFN0eWxlcykgeyBvLmNlbGxORiA9IHRydWU7IG8uc2hlZXRTdHVicyA9IHRydWU7IH1cblx0aWYoby50eXBlID09IFwiYXJyYXlcIikgeyBvLnR5cGUgPSBcImJpbmFyeVwiOyB2YXIgb3V0Lyo6c3RyaW5nKi8gPSAod3JpdGVTeW5jKHdiLCBvKS8qOmFueSovKTsgby50eXBlID0gXCJhcnJheVwiOyByZXR1cm4gczJhYihvdXQpOyB9XG5cdHZhciBpZHggPSAwO1xuXHRpZihvLnNoZWV0KSB7XG5cdFx0aWYodHlwZW9mIG8uc2hlZXQgPT0gXCJudW1iZXJcIikgaWR4ID0gby5zaGVldDtcblx0XHRlbHNlIGlkeCA9IHdiLlNoZWV0TmFtZXMuaW5kZXhPZihvLnNoZWV0KTtcblx0XHRpZighd2IuU2hlZXROYW1lc1tpZHhdKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGVldCBub3QgZm91bmQ6IFwiICsgby5zaGVldCArIFwiIDogXCIgKyAodHlwZW9mIG8uc2hlZXQpKTtcblx0fVxuXHRzd2l0Y2goby5ib29rVHlwZSB8fCAneGxzYicpIHtcblx0XHRjYXNlICd4bWwnOlxuXHRcdGNhc2UgJ3hsbWwnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUod3JpdGVfeGxtbCh3YiwgbyksIG8pO1xuXHRcdGNhc2UgJ3Nsayc6XG5cdFx0Y2FzZSAnc3lsayc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShTWUxLLmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdodG0nOlxuXHRcdGNhc2UgJ2h0bWwnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoc2hlZXRfdG9faHRtbCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ3R4dCc6IHJldHVybiB3cml0ZV9zdHh0X3R5cGUoc2hlZXRfdG9fdHh0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnY3N2JzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHNoZWV0X3RvX2Nzdih3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8sIFwiXFx1ZmVmZlwiKTtcblx0XHRjYXNlICdkaWYnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoRElGLmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdkYmYnOiByZXR1cm4gd3JpdGVfYmluYXJ5X3R5cGUoREJGLmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdwcm4nOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoUFJOLmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdydGYnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoUlRGLmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdldGgnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoRVRILmZyb21fc2hlZXQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdmb2RzJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHdyaXRlX29kcyh3YiwgbyksIG8pO1xuXHRcdGNhc2UgJ3drMSc6IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZShXS18uc2hlZXRfdG9fd2sxKHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnd2szJzogcmV0dXJuIHdyaXRlX2JpbmFyeV90eXBlKFdLXy5ib29rX3RvX3drMyh3YiwgbyksIG8pO1xuXHRcdGNhc2UgJ2JpZmYyJzogaWYoIW8uYmlmZikgby5iaWZmID0gMjsgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ2JpZmYzJzogaWYoIW8uYmlmZikgby5iaWZmID0gMzsgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ2JpZmY0JzogaWYoIW8uYmlmZikgby5iaWZmID0gNDsgcmV0dXJuIHdyaXRlX2JpbmFyeV90eXBlKHdyaXRlX2JpZmZfYnVmKHdiLCBvKSwgbyk7XG5cdFx0Y2FzZSAnYmlmZjUnOiBpZighby5iaWZmKSBvLmJpZmYgPSA1OyAvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnYmlmZjgnOlxuXHRcdGNhc2UgJ3hsYSc6XG5cdFx0Y2FzZSAneGxzJzogaWYoIW8uYmlmZikgby5iaWZmID0gODsgcmV0dXJuIHdyaXRlX2NmYl90eXBlKHdiLCBvKTtcblx0XHRjYXNlICd4bHN4Jzpcblx0XHRjYXNlICd4bHNtJzpcblx0XHRjYXNlICd4bGFtJzpcblx0XHRjYXNlICd4bHNiJzpcblx0XHRjYXNlICdudW1iZXJzJzpcblx0XHRjYXNlICdvZHMnOiByZXR1cm4gd3JpdGVfemlwX3R5cGUod2IsIG8pO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvciAoXCJVbnJlY29nbml6ZWQgYm9va1R5cGUgfFwiICsgby5ib29rVHlwZSArIFwifFwiKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZXNvbHZlX2Jvb2tfdHlwZShvLyo6V3JpdGVGaWxlT3B0cyovKSB7XG5cdGlmKG8uYm9va1R5cGUpIHJldHVybjtcblx0dmFyIF9CVCA9IHtcblx0XHRcInhsc1wiOiBcImJpZmY4XCIsXG5cdFx0XCJodG1cIjogXCJodG1sXCIsXG5cdFx0XCJzbGtcIjogXCJzeWxrXCIsXG5cdFx0XCJzb2NpYWxjYWxjXCI6IFwiZXRoXCIsXG5cdFx0XCJTaDMzdEpTXCI6IFwiV1RGXCJcblx0fTtcblx0dmFyIGV4dCA9IG8uZmlsZS5zbGljZShvLmZpbGUubGFzdEluZGV4T2YoXCIuXCIpKS50b0xvd2VyQ2FzZSgpO1xuXHRpZihleHQubWF0Y2goL15cXC5bYS16XSskLykpIG8uYm9va1R5cGUgPSBleHQuc2xpY2UoMSk7XG5cdG8uYm9va1R5cGUgPSBfQlRbby5ib29rVHlwZV0gfHwgby5ib29rVHlwZTtcbn1cblxuZnVuY3Rpb24gd3JpdGVGaWxlU3luYyh3Yi8qOldvcmtib29rKi8sIGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdHMvKjo/V3JpdGVGaWxlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0c3x8e307IG8udHlwZSA9ICdmaWxlJztcblx0by5maWxlID0gZmlsZW5hbWU7XG5cdHJlc29sdmVfYm9va190eXBlKG8pO1xuXHRyZXR1cm4gd3JpdGVTeW5jKHdiLCBvKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVGaWxlU3luY1hMU1god2IvKjpXb3JrYm9vayovLCBmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRzLyo6P1dyaXRlRmlsZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdG8uZmlsZSA9IGZpbGVuYW1lO1xuXHRyZXNvbHZlX2Jvb2tfdHlwZShvKTtcblx0cmV0dXJuIHdyaXRlU3luY1hMU1god2IsIG8pO1xufVxuXG5cbmZ1bmN0aW9uIHdyaXRlRmlsZUFzeW5jKGZpbGVuYW1lLyo6c3RyaW5nKi8sIHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZUZpbGVPcHRzKi8sIGNiLyo6PyhlPzpFcnJub0Vycm9yKT0+dm9pZCovKSB7XG5cdHZhciBvID0gb3B0c3x8e307IG8udHlwZSA9ICdmaWxlJztcblx0by5maWxlID0gZmlsZW5hbWU7XG5cdHJlc29sdmVfYm9va190eXBlKG8pO1xuXHRvLnR5cGUgPSAnYnVmZmVyJztcblx0dmFyIF9jYiA9IGNiOyBpZighKF9jYiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkgX2NiID0gKG9wdHMvKjphbnkqLyk7XG5cdHJldHVybiBfZnMud3JpdGVGaWxlKGZpbGVuYW1lLCB3cml0ZVN5bmMod2IsIG8pLCBfY2IpO1xufVxuLyo6OlxudHlwZSBNSlJPYmplY3QgPSB7XG5cdHJvdzogYW55O1xuXHRpc2VtcHR5OiBib29sZWFuO1xufTtcbiovXG5mdW5jdGlvbiBtYWtlX2pzb25fcm93KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIHIvKjpSYW5nZSovLCBSLyo6bnVtYmVyKi8sIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8sIGhlYWRlci8qOm51bWJlciovLCBoZHIvKjpBcnJheTxhbnk+Ki8sIGRlbnNlLyo6Ym9vbGVhbiovLCBvLyo6U2hlZXQySlNPTk9wdHMqLykvKjpNSlJPYmplY3QqLyB7XG5cdHZhciByciA9IGVuY29kZV9yb3coUik7XG5cdHZhciBkZWZ2YWwgPSBvLmRlZnZhbCwgcmF3ID0gby5yYXcgfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBcInJhd1wiKTtcblx0dmFyIGlzZW1wdHkgPSB0cnVlO1xuXHR2YXIgcm93Lyo6YW55Ki8gPSAoaGVhZGVyID09PSAxKSA/IFtdIDoge307XG5cdGlmKGhlYWRlciAhPT0gMSkge1xuXHRcdGlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgdHJ5IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJvdywgJ19fcm93TnVtX18nLCB7dmFsdWU6UiwgZW51bWVyYWJsZTpmYWxzZX0pOyB9IGNhdGNoKGUpIHsgcm93Ll9fcm93TnVtX18gPSBSOyB9XG5cdFx0ZWxzZSByb3cuX19yb3dOdW1fXyA9IFI7XG5cdH1cblx0aWYoIWRlbnNlIHx8IHNoZWV0W1JdKSBmb3IgKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdHZhciB2YWwgPSBkZW5zZSA/IHNoZWV0W1JdW0NdIDogc2hlZXRbY29sc1tDXSArIHJyXTtcblx0XHRpZih2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZihkZWZ2YWwgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRpZihoZHJbQ10gIT0gbnVsbCkgeyByb3dbaGRyW0NdXSA9IGRlZnZhbDsgfVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdHZhciB2ID0gdmFsLnY7XG5cdFx0c3dpdGNoKHZhbC50KXtcblx0XHRcdGNhc2UgJ3onOiBpZih2ID09IG51bGwpIGJyZWFrOyBjb250aW51ZTtcblx0XHRcdGNhc2UgJ2UnOiB2ID0gKHYgPT0gMCA/IG51bGwgOiB2b2lkIDApOyBicmVhaztcblx0XHRcdGNhc2UgJ3MnOiBjYXNlICdkJzogY2FzZSAnYic6IGNhc2UgJ24nOiBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIHR5cGUgJyArIHZhbC50KTtcblx0XHR9XG5cdFx0aWYoaGRyW0NdICE9IG51bGwpIHtcblx0XHRcdGlmKHYgPT0gbnVsbCkge1xuXHRcdFx0XHRpZih2YWwudCA9PSBcImVcIiAmJiB2ID09PSBudWxsKSByb3dbaGRyW0NdXSA9IG51bGw7XG5cdFx0XHRcdGVsc2UgaWYoZGVmdmFsICE9PSB1bmRlZmluZWQpIHJvd1toZHJbQ11dID0gZGVmdmFsO1xuXHRcdFx0XHRlbHNlIGlmKHJhdyAmJiB2ID09PSBudWxsKSByb3dbaGRyW0NdXSA9IG51bGw7XG5cdFx0XHRcdGVsc2UgY29udGludWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyb3dbaGRyW0NdXSA9IHJhdyAmJiAodmFsLnQgIT09IFwiblwiIHx8ICh2YWwudCA9PT0gXCJuXCIgJiYgby5yYXdOdW1iZXJzICE9PSBmYWxzZSkpID8gdiA6IGZvcm1hdF9jZWxsKHZhbCx2LG8pO1xuXHRcdFx0fVxuXHRcdFx0aWYodiAhPSBudWxsKSBpc2VtcHR5ID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB7IHJvdzogcm93LCBpc2VtcHR5OiBpc2VtcHR5IH07XG59XG5cblxuZnVuY3Rpb24gc2hlZXRfdG9fanNvbihzaGVldC8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkpTT05PcHRzKi8pIHtcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgcmV0dXJuIFtdO1xuXHR2YXIgdmFsID0ge3Q6J24nLHY6MH0sIGhlYWRlciA9IDAsIG9mZnNldCA9IDEsIGhkci8qOkFycmF5PGFueT4qLyA9IFtdLCB2PTAsIHZ2PVwiXCI7XG5cdHZhciByID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgcmFuZ2UgPSBvLnJhbmdlICE9IG51bGwgPyBvLnJhbmdlIDogc2hlZXRbXCIhcmVmXCJdO1xuXHRpZihvLmhlYWRlciA9PT0gMSkgaGVhZGVyID0gMTtcblx0ZWxzZSBpZihvLmhlYWRlciA9PT0gXCJBXCIpIGhlYWRlciA9IDI7XG5cdGVsc2UgaWYoQXJyYXkuaXNBcnJheShvLmhlYWRlcikpIGhlYWRlciA9IDM7XG5cdGVsc2UgaWYoby5oZWFkZXIgPT0gbnVsbCkgaGVhZGVyID0gMDtcblx0c3dpdGNoKHR5cGVvZiByYW5nZSkge1xuXHRcdGNhc2UgJ3N0cmluZyc6IHIgPSBzYWZlX2RlY29kZV9yYW5nZShyYW5nZSk7IGJyZWFrO1xuXHRcdGNhc2UgJ251bWJlcic6IHIgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFtcIiFyZWZcIl0pOyByLnMuciA9IHJhbmdlOyBicmVhaztcblx0XHRkZWZhdWx0OiByID0gcmFuZ2U7XG5cdH1cblx0aWYoaGVhZGVyID4gMCkgb2Zmc2V0ID0gMDtcblx0dmFyIHJyID0gZW5jb2RlX3JvdyhyLnMucik7XG5cdHZhciBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBvdXQvKjpBcnJheTxhbnk+Ki8gPSBbXTtcblx0dmFyIG91dGkgPSAwLCBjb3VudGVyID0gMDtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBSID0gci5zLnIsIEMgPSAwO1xuXHR2YXIgaGVhZGVyX2NudCA9IHt9O1xuXHRpZihkZW5zZSAmJiAhc2hlZXRbUl0pIHNoZWV0W1JdID0gW107XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhcm93c1wiXSB8fCBbXTtcblx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0aWYoKChjb2xpbmZvW0NdfHx7fSkuaGlkZGVuKSkgY29udGludWU7XG5cdFx0Y29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0dmFsID0gZGVuc2UgPyBzaGVldFtSXVtDXSA6IHNoZWV0W2NvbHNbQ10gKyBycl07XG5cdFx0c3dpdGNoKGhlYWRlcikge1xuXHRcdFx0Y2FzZSAxOiBoZHJbQ10gPSBDIC0gci5zLmM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAyOiBoZHJbQ10gPSBjb2xzW0NdOyBicmVhaztcblx0XHRcdGNhc2UgMzogaGRyW0NdID0gby5oZWFkZXJbQyAtIHIucy5jXTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZih2YWwgPT0gbnVsbCkgdmFsID0ge3c6IFwiX19FTVBUWVwiLCB0OiBcInNcIn07XG5cdFx0XHRcdHZ2ID0gdiA9IGZvcm1hdF9jZWxsKHZhbCwgbnVsbCwgbyk7XG5cdFx0XHRcdGNvdW50ZXIgPSBoZWFkZXJfY250W3ZdIHx8IDA7XG5cdFx0XHRcdGlmKCFjb3VudGVyKSBoZWFkZXJfY250W3ZdID0gMTtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0ZG8geyB2diA9IHYgKyBcIl9cIiArIChjb3VudGVyKyspOyB9IHdoaWxlKGhlYWRlcl9jbnRbdnZdKTsgaGVhZGVyX2NudFt2XSA9IGNvdW50ZXI7XG5cdFx0XHRcdFx0aGVhZGVyX2NudFt2dl0gPSAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGhkcltDXSA9IHZ2O1xuXHRcdH1cblx0fVxuXHRmb3IgKFIgPSByLnMuciArIG9mZnNldDsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0aWYgKChyb3dpbmZvW1JdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHR2YXIgcm93ID0gbWFrZV9qc29uX3JvdyhzaGVldCwgciwgUiwgY29scywgaGVhZGVyLCBoZHIsIGRlbnNlLCBvKTtcblx0XHRpZigocm93LmlzZW1wdHkgPT09IGZhbHNlKSB8fCAoaGVhZGVyID09PSAxID8gby5ibGFua3Jvd3MgIT09IGZhbHNlIDogISFvLmJsYW5rcm93cykpIG91dFtvdXRpKytdID0gcm93LnJvdztcblx0fVxuXHRvdXQubGVuZ3RoID0gb3V0aTtcblx0cmV0dXJuIG91dDtcbn1cblxudmFyIHFyZWcgPSAvXCIvZztcbmZ1bmN0aW9uIG1ha2VfY3N2X3JvdyhzaGVldC8qOldvcmtzaGVldCovLCByLyo6UmFuZ2UqLywgUi8qOm51bWJlciovLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovLCBmcy8qOm51bWJlciovLCBycy8qOm51bWJlciovLCBGUy8qOnN0cmluZyovLCBvLyo6U2hlZXQyQ1NWT3B0cyovKS8qOj9zdHJpbmcqLyB7XG5cdHZhciBpc2VtcHR5ID0gdHJ1ZTtcblx0dmFyIHJvdy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCB0eHQgPSBcIlwiLCByciA9IGVuY29kZV9yb3coUik7XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRpZiAoIWNvbHNbQ10pIGNvbnRpbnVlO1xuXHRcdHZhciB2YWwgPSBvLmRlbnNlID8gKHNoZWV0W1JdfHxbXSlbQ106IHNoZWV0W2NvbHNbQ10gKyBycl07XG5cdFx0aWYodmFsID09IG51bGwpIHR4dCA9IFwiXCI7XG5cdFx0ZWxzZSBpZih2YWwudiAhPSBudWxsKSB7XG5cdFx0XHRpc2VtcHR5ID0gZmFsc2U7XG5cdFx0XHR0eHQgPSAnJysoby5yYXdOdW1iZXJzICYmIHZhbC50ID09IFwiblwiID8gdmFsLnYgOiBmb3JtYXRfY2VsbCh2YWwsIG51bGwsIG8pKTtcblx0XHRcdGZvcih2YXIgaSA9IDAsIGNjID0gMDsgaSAhPT0gdHh0Lmxlbmd0aDsgKytpKSBpZigoY2MgPSB0eHQuY2hhckNvZGVBdChpKSkgPT09IGZzIHx8IGNjID09PSBycyB8fCBjYyA9PT0gMzQgfHwgby5mb3JjZVF1b3Rlcykge3R4dCA9IFwiXFxcIlwiICsgdHh0LnJlcGxhY2UocXJlZywgJ1wiXCInKSArIFwiXFxcIlwiOyBicmVhazsgfVxuXHRcdFx0aWYodHh0ID09IFwiSURcIikgdHh0ID0gJ1wiSURcIic7XG5cdFx0fSBlbHNlIGlmKHZhbC5mICE9IG51bGwgJiYgIXZhbC5GKSB7XG5cdFx0XHRpc2VtcHR5ID0gZmFsc2U7XG5cdFx0XHR0eHQgPSAnPScgKyB2YWwuZjsgaWYodHh0LmluZGV4T2YoXCIsXCIpID49IDApIHR4dCA9ICdcIicgKyB0eHQucmVwbGFjZShxcmVnLCAnXCJcIicpICsgJ1wiJztcblx0XHR9IGVsc2UgdHh0ID0gXCJcIjtcblx0XHQvKiBOT1RFOiBFeGNlbCBDU1YgZG9lcyBub3Qgc3VwcG9ydCBhcnJheSBmb3JtdWxhZSAqL1xuXHRcdHJvdy5wdXNoKHR4dCk7XG5cdH1cblx0aWYoby5ibGFua3Jvd3MgPT09IGZhbHNlICYmIGlzZW1wdHkpIHJldHVybiBudWxsO1xuXHRyZXR1cm4gcm93LmpvaW4oRlMpO1xufVxuXG5mdW5jdGlvbiBzaGVldF90b19jc3Yoc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBvID0gb3B0cyA9PSBudWxsID8ge30gOiBvcHRzO1xuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSByZXR1cm4gXCJcIjtcblx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFtcIiFyZWZcIl0pO1xuXHR2YXIgRlMgPSBvLkZTICE9PSB1bmRlZmluZWQgPyBvLkZTIDogXCIsXCIsIGZzID0gRlMuY2hhckNvZGVBdCgwKTtcblx0dmFyIFJTID0gby5SUyAhPT0gdW5kZWZpbmVkID8gby5SUyA6IFwiXFxuXCIsIHJzID0gUlMuY2hhckNvZGVBdCgwKTtcblx0dmFyIGVuZHJlZ2V4ID0gbmV3IFJlZ0V4cCgoRlM9PVwifFwiID8gXCJcXFxcfFwiIDogRlMpK1wiKyRcIik7XG5cdHZhciByb3cgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdG8uZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIWNvbHNcIl0gfHwgW107XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFyb3dzXCJdIHx8IFtdO1xuXHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSBpZiAoISgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHR2YXIgdyA9IDA7XG5cdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRpZiAoKHJvd2luZm9bUl18fHt9KS5oaWRkZW4pIGNvbnRpbnVlO1xuXHRcdHJvdyA9IG1ha2VfY3N2X3JvdyhzaGVldCwgciwgUiwgY29scywgZnMsIHJzLCBGUywgbyk7XG5cdFx0aWYocm93ID09IG51bGwpIHsgY29udGludWU7IH1cblx0XHRpZihvLnN0cmlwKSByb3cgPSByb3cucmVwbGFjZShlbmRyZWdleCxcIlwiKTtcblx0XHRpZihyb3cgfHwgKG8uYmxhbmtyb3dzICE9PSBmYWxzZSkpIG91dC5wdXNoKCh3KysgPyBSUyA6IFwiXCIpICsgcm93KTtcblx0fVxuXHRkZWxldGUgby5kZW5zZTtcblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBzaGVldF90b190eHQoc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pIHtcblx0aWYoIW9wdHMpIG9wdHMgPSB7fTsgb3B0cy5GUyA9IFwiXFx0XCI7IG9wdHMuUlMgPSBcIlxcblwiO1xuXHR2YXIgcyA9IHNoZWV0X3RvX2NzdihzaGVldCwgb3B0cyk7XG5cdGlmKHR5cGVvZiAkY3B0YWJsZSA9PSAndW5kZWZpbmVkJyB8fCBvcHRzLnR5cGUgPT0gJ3N0cmluZycpIHJldHVybiBzO1xuXHR2YXIgbyA9ICRjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLCBzLCAnc3RyJyk7XG5cdHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NCkgKyBvO1xufVxuXG5mdW5jdGlvbiBzaGVldF90b19mb3JtdWxhZShzaGVldC8qOldvcmtzaGVldCovKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciB5ID0gXCJcIiwgeCwgdmFsPVwiXCI7XG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHJldHVybiBbXTtcblx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFsnIXJlZiddKSwgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIEM7XG5cdHZhciBjbWRzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0eSA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHggPSBkZW5zZSA/IChzaGVldFtSXXx8W10pW0NdIDogc2hlZXRbeV07XG5cdFx0XHR2YWwgPSBcIlwiO1xuXHRcdFx0aWYoeCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblx0XHRcdGVsc2UgaWYoeC5GICE9IG51bGwpIHtcblx0XHRcdFx0eSA9IHguRjtcblx0XHRcdFx0aWYoIXguZikgY29udGludWU7XG5cdFx0XHRcdHZhbCA9IHguZjtcblx0XHRcdFx0aWYoeS5pbmRleE9mKFwiOlwiKSA9PSAtMSkgeSA9IHkgKyBcIjpcIiArIHk7XG5cdFx0XHR9XG5cdFx0XHRpZih4LmYgIT0gbnVsbCkgdmFsID0geC5mO1xuXHRcdFx0ZWxzZSBpZih4LnQgPT0gJ3onKSBjb250aW51ZTtcblx0XHRcdGVsc2UgaWYoeC50ID09ICduJyAmJiB4LnYgIT0gbnVsbCkgdmFsID0gXCJcIiArIHgudjtcblx0XHRcdGVsc2UgaWYoeC50ID09ICdiJykgdmFsID0geC52ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCI7XG5cdFx0XHRlbHNlIGlmKHgudyAhPT0gdW5kZWZpbmVkKSB2YWwgPSBcIidcIiArIHgudztcblx0XHRcdGVsc2UgaWYoeC52ID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXHRcdFx0ZWxzZSBpZih4LnQgPT0gJ3MnKSB2YWwgPSBcIidcIiArIHgudjtcblx0XHRcdGVsc2UgdmFsID0gXCJcIit4LnY7XG5cdFx0XHRjbWRzW2NtZHMubGVuZ3RoXSA9IHkgKyBcIj1cIiArIHZhbDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGNtZHM7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X2FkZF9qc29uKF93cy8qOj9Xb3Jrc2hlZXQqLywganMvKjpBcnJheTxhbnk+Ki8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBvZmZzZXQgPSArIW8uc2tpcEhlYWRlcjtcblx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBfd3MgfHwgKHt9Lyo6YW55Ki8pO1xuXHR2YXIgX1IgPSAwLCBfQyA9IDA7XG5cdGlmKHdzICYmIG8ub3JpZ2luICE9IG51bGwpIHtcblx0XHRpZih0eXBlb2Ygby5vcmlnaW4gPT0gJ251bWJlcicpIF9SID0gby5vcmlnaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgX29yaWdpbi8qOkNlbGxBZGRyZXNzKi8gPSB0eXBlb2Ygby5vcmlnaW4gPT0gXCJzdHJpbmdcIiA/IGRlY29kZV9jZWxsKG8ub3JpZ2luKSA6IG8ub3JpZ2luO1xuXHRcdFx0X1IgPSBfb3JpZ2luLnI7IF9DID0gX29yaWdpbi5jO1xuXHRcdH1cblx0fVxuXHR2YXIgY2VsbC8qOkNlbGwqLztcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7czoge2M6MCwgcjowfSwgZToge2M6X0MsIHI6X1IgKyBqcy5sZW5ndGggLSAxICsgb2Zmc2V0fX0vKjphbnkqLyk7XG5cdGlmKHdzWychcmVmJ10pIHtcblx0XHR2YXIgX3JhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5tYXgocmFuZ2UuZS5jLCBfcmFuZ2UuZS5jKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1heChyYW5nZS5lLnIsIF9yYW5nZS5lLnIpO1xuXHRcdGlmKF9SID09IC0xKSB7IF9SID0gX3JhbmdlLmUuciArIDE7IHJhbmdlLmUuciA9IF9SICsganMubGVuZ3RoIC0gMSArIG9mZnNldDsgfVxuXHR9IGVsc2Uge1xuXHRcdGlmKF9SID09IC0xKSB7IF9SID0gMDsgcmFuZ2UuZS5yID0ganMubGVuZ3RoIC0gMSArIG9mZnNldDsgfVxuXHR9XG5cdHZhciBoZHIvKjpBcnJheTxzdHJpbmc+Ki8gPSBvLmhlYWRlciB8fCBbXSwgQyA9IDA7XG5cblx0anMuZm9yRWFjaChmdW5jdGlvbiAoSlMsIFIvKjpudW1iZXIqLykge1xuXHRcdGtleXMoSlMpLmZvckVhY2goZnVuY3Rpb24oaykge1xuXHRcdFx0aWYoKEM9aGRyLmluZGV4T2YoaykpID09IC0xKSBoZHJbQz1oZHIubGVuZ3RoXSA9IGs7XG5cdFx0XHR2YXIgdiA9IEpTW2tdO1xuXHRcdFx0dmFyIHQgPSAneic7XG5cdFx0XHR2YXIgeiA9IFwiXCI7XG5cdFx0XHR2YXIgcmVmID0gZW5jb2RlX2NlbGwoe2M6X0MgKyBDLHI6X1IgKyBSICsgb2Zmc2V0fSk7XG5cdFx0XHRjZWxsID0gd3NfZ2V0X2NlbGxfc3R1Yih3cywgcmVmKTtcblx0XHRcdGlmKHYgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICEodiBpbnN0YW5jZW9mIERhdGUpKXtcblx0XHRcdFx0d3NbcmVmXSA9IHY7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZih0eXBlb2YgdiA9PSAnbnVtYmVyJykgdCA9ICduJztcblx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgdiA9PSAnYm9vbGVhbicpIHQgPSAnYic7XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIHYgPT0gJ3N0cmluZycpIHQgPSAncyc7XG5cdFx0XHRcdGVsc2UgaWYodiBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0XHR0ID0gJ2QnO1xuXHRcdFx0XHRcdGlmKCFvLmNlbGxEYXRlcykgeyB0ID0gJ24nOyB2ID0gZGF0ZW51bSh2KTsgfVxuXHRcdFx0XHRcdHogPSAoby5kYXRlTkYgfHwgdGFibGVfZm10WzE0XSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZih2ID09PSBudWxsICYmIG8ubnVsbEVycm9yKSB7IHQgPSAnZSc7IHYgPSAwOyB9XG5cdFx0XHRcdGlmKCFjZWxsKSB3c1tyZWZdID0gY2VsbCA9ICh7dDp0LCB2OnZ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjZWxsLnQgPSB0OyBjZWxsLnYgPSB2O1xuXHRcdFx0XHRcdGRlbGV0ZSBjZWxsLnc7IGRlbGV0ZSBjZWxsLlI7XG5cdFx0XHRcdFx0aWYoeikgY2VsbC56ID0gejtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZih6KSBjZWxsLnogPSB6O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0cmFuZ2UuZS5jID0gTWF0aC5tYXgocmFuZ2UuZS5jLCBfQyArIGhkci5sZW5ndGggLSAxKTtcblx0dmFyIF9fUiA9IGVuY29kZV9yb3coX1IpO1xuXHRpZihvZmZzZXQpIGZvcihDID0gMDsgQyA8IGhkci5sZW5ndGg7ICsrQykgd3NbZW5jb2RlX2NvbChDICsgX0MpICsgX19SXSA9IHt0OidzJywgdjpoZHJbQ119O1xuXHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0cmV0dXJuIHdzO1xufVxuZnVuY3Rpb24ganNvbl90b19zaGVldChqcy8qOkFycmF5PGFueT4qLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiBzaGVldF9hZGRfanNvbihudWxsLCBqcywgb3B0cyk7IH1cblxuLyogZ2V0IGNlbGwsIGNyZWF0aW5nIGEgc3R1YiBpZiBuZWNlc3NhcnkgKi9cbmZ1bmN0aW9uIHdzX2dldF9jZWxsX3N0dWIod3MvKjpXb3Jrc2hlZXQqLywgUiwgQy8qOj9udW1iZXIqLykvKjpDZWxsKi8ge1xuXHQvKiBBMSBjZWxsIGFkZHJlc3MgKi9cblx0aWYodHlwZW9mIFIgPT0gXCJzdHJpbmdcIikge1xuXHRcdC8qIGRlbnNlICovXG5cdFx0aWYoQXJyYXkuaXNBcnJheSh3cykpIHtcblx0XHRcdHZhciBSQyA9IGRlY29kZV9jZWxsKFIpO1xuXHRcdFx0aWYoIXdzW1JDLnJdKSB3c1tSQy5yXSA9IFtdO1xuXHRcdFx0cmV0dXJuIHdzW1JDLnJdW1JDLmNdIHx8ICh3c1tSQy5yXVtSQy5jXSA9IHt0Oid6J30pO1xuXHRcdH1cblx0XHRyZXR1cm4gd3NbUl0gfHwgKHdzW1JdID0ge3Q6J3onfSk7XG5cdH1cblx0LyogY2VsbCBhZGRyZXNzIG9iamVjdCAqL1xuXHRpZih0eXBlb2YgUiAhPSBcIm51bWJlclwiKSByZXR1cm4gd3NfZ2V0X2NlbGxfc3R1Yih3cywgZW5jb2RlX2NlbGwoUikpO1xuXHQvKiBSIGFuZCBDIGFyZSAwLWJhc2VkIGluZGljZXMgKi9cblx0cmV0dXJuIHdzX2dldF9jZWxsX3N0dWIod3MsIGVuY29kZV9jZWxsKHtyOlIsYzpDfHwwfSkpO1xufVxuXG4vKiBmaW5kIHNoZWV0IGluZGV4IGZvciBnaXZlbiBuYW1lIC8gdmFsaWRhdGUgaW5kZXggKi9cbmZ1bmN0aW9uIHdiX3NoZWV0X2lkeCh3Yi8qOldvcmtib29rKi8sIHNoLyo6bnVtYmVyfHN0cmluZyovKSB7XG5cdGlmKHR5cGVvZiBzaCA9PSBcIm51bWJlclwiKSB7XG5cdFx0aWYoc2ggPj0gMCAmJiB3Yi5TaGVldE5hbWVzLmxlbmd0aCA+IHNoKSByZXR1cm4gc2g7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgc2hlZXQgIyBcIiArIHNoKTtcblx0fSBlbHNlIGlmKHR5cGVvZiBzaCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0dmFyIGlkeCA9IHdiLlNoZWV0TmFtZXMuaW5kZXhPZihzaCk7XG5cdFx0aWYoaWR4ID4gLTEpIHJldHVybiBpZHg7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgc2hlZXQgbmFtZSB8XCIgKyBzaCArIFwifFwiKTtcblx0fSBlbHNlIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIHNoZWV0IHxcIiArIHNoICsgXCJ8XCIpO1xufVxuXG4vKiBzaW1wbGUgYmxhbmsgd29ya2Jvb2sgb2JqZWN0ICovXG5mdW5jdGlvbiBib29rX25ldygpLyo6V29ya2Jvb2sqLyB7XG5cdHJldHVybiB7IFNoZWV0TmFtZXM6IFtdLCBTaGVldHM6IHt9IH07XG59XG5cbi8qIGFkZCBhIHdvcmtzaGVldCB0byB0aGUgZW5kIG9mIGEgZ2l2ZW4gd29ya2Jvb2sgKi9cbmZ1bmN0aW9uIGJvb2tfYXBwZW5kX3NoZWV0KHdiLyo6V29ya2Jvb2sqLywgd3MvKjpXb3Jrc2hlZXQqLywgbmFtZS8qOj9zdHJpbmcqLywgcm9sbC8qOj9ib29sZWFuKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgaSA9IDE7XG5cdGlmKCFuYW1lKSBmb3IoOyBpIDw9IDB4RkZGRjsgKytpLCBuYW1lID0gdW5kZWZpbmVkKSBpZih3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSA9IFwiU2hlZXRcIiArIGkpID09IC0xKSBicmVhaztcblx0aWYoIW5hbWUgfHwgd2IuU2hlZXROYW1lcy5sZW5ndGggPj0gMHhGRkZGKSB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbWFueSB3b3Jrc2hlZXRzXCIpO1xuXHRpZihyb2xsICYmIHdiLlNoZWV0TmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwKSB7XG5cdFx0dmFyIG0gPSBuYW1lLm1hdGNoKC8oXi4qPykoXFxkKykkLyk7XG5cdFx0aSA9IG0gJiYgK21bMl0gfHwgMDtcblx0XHR2YXIgcm9vdCA9IG0gJiYgbVsxXSB8fCBuYW1lO1xuXHRcdGZvcigrK2k7IGkgPD0gMHhGRkZGOyArK2kpIGlmKHdiLlNoZWV0TmFtZXMuaW5kZXhPZihuYW1lID0gcm9vdCArIGkpID09IC0xKSBicmVhaztcblx0fVxuXHRjaGVja193c19uYW1lKG5hbWUpO1xuXHRpZih3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSkgPj0gMCkgdGhyb3cgbmV3IEVycm9yKFwiV29ya3NoZWV0IHdpdGggbmFtZSB8XCIgKyBuYW1lICsgXCJ8IGFscmVhZHkgZXhpc3RzIVwiKTtcblxuXHR3Yi5TaGVldE5hbWVzLnB1c2gobmFtZSk7XG5cdHdiLlNoZWV0c1tuYW1lXSA9IHdzO1xuXHRyZXR1cm4gbmFtZTtcbn1cblxuLyogc2V0IHNoZWV0IHZpc2liaWxpdHkgKHZpc2libGUvaGlkZGVuL3ZlcnkgaGlkZGVuKSAqL1xuZnVuY3Rpb24gYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eSh3Yi8qOldvcmtib29rKi8sIHNoLyo6bnVtYmVyfHN0cmluZyovLCB2aXMvKjpudW1iZXIqLykge1xuXHRpZighd2IuV29ya2Jvb2spIHdiLldvcmtib29rID0ge307XG5cdGlmKCF3Yi5Xb3JrYm9vay5TaGVldHMpIHdiLldvcmtib29rLlNoZWV0cyA9IFtdO1xuXG5cdHZhciBpZHggPSB3Yl9zaGVldF9pZHgod2IsIHNoKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0aWYoIXdiLldvcmtib29rLlNoZWV0c1tpZHhdKSB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSA9IHt9O1xuXG5cdHN3aXRjaCh2aXMpIHtcblx0XHRjYXNlIDA6IGNhc2UgMTogY2FzZSAyOiBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc2hlZXQgdmlzaWJpbGl0eSBzZXR0aW5nIFwiICsgdmlzKTtcblx0fVxuXHQvLyAkRmxvd0lnbm9yZVxuXHR3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4gPSB2aXM7XG59XG5cbi8qIHNldCBudW1iZXIgZm9ybWF0ICovXG5mdW5jdGlvbiBjZWxsX3NldF9udW1iZXJfZm9ybWF0KGNlbGwvKjpDZWxsKi8sIGZtdC8qOnN0cmluZ3xudW1iZXIqLykge1xuXHRjZWxsLnogPSBmbXQ7XG5cdHJldHVybiBjZWxsO1xufVxuXG4vKiBzZXQgY2VsbCBoeXBlcmxpbmsgKi9cbmZ1bmN0aW9uIGNlbGxfc2V0X2h5cGVybGluayhjZWxsLyo6Q2VsbCovLCB0YXJnZXQvKjpzdHJpbmcqLywgdG9vbHRpcC8qOj9zdHJpbmcqLykge1xuXHRpZighdGFyZ2V0KSB7XG5cdFx0ZGVsZXRlIGNlbGwubDtcblx0fSBlbHNlIHtcblx0XHRjZWxsLmwgPSAoeyBUYXJnZXQ6IHRhcmdldCB9Lyo6SHlwZXJsaW5rKi8pO1xuXHRcdGlmKHRvb2x0aXApIGNlbGwubC5Ub29sdGlwID0gdG9vbHRpcDtcblx0fVxuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIGNlbGxfc2V0X2ludGVybmFsX2xpbmsoY2VsbC8qOkNlbGwqLywgcmFuZ2UvKjpzdHJpbmcqLywgdG9vbHRpcC8qOj9zdHJpbmcqLykgeyByZXR1cm4gY2VsbF9zZXRfaHlwZXJsaW5rKGNlbGwsIFwiI1wiICsgcmFuZ2UsIHRvb2x0aXApOyB9XG5cbi8qIGFkZCB0byBjZWxsIGNvbW1lbnRzICovXG5mdW5jdGlvbiBjZWxsX2FkZF9jb21tZW50KGNlbGwvKjpDZWxsKi8sIHRleHQvKjpzdHJpbmcqLywgYXV0aG9yLyo6P3N0cmluZyovKSB7XG5cdGlmKCFjZWxsLmMpIGNlbGwuYyA9IFtdO1xuXHRjZWxsLmMucHVzaCh7dDp0ZXh0LCBhOmF1dGhvcnx8XCJTaGVldEpTXCJ9KTtcbn1cblxuLyogc2V0IGFycmF5IGZvcm11bGEgYW5kIGZsdXNoIHJlbGF0ZWQgY2VsbHMgKi9cbmZ1bmN0aW9uIHNoZWV0X3NldF9hcnJheV9mb3JtdWxhKHdzLyo6V29ya3NoZWV0Ki8sIHJhbmdlLCBmb3JtdWxhLyo6c3RyaW5nKi8sIGR5bmFtaWMvKjpib29sZWFuKi8pIHtcblx0dmFyIHJuZyA9IHR5cGVvZiByYW5nZSAhPSBcInN0cmluZ1wiID8gcmFuZ2UgOiBzYWZlX2RlY29kZV9yYW5nZShyYW5nZSk7XG5cdHZhciBybmdzdHIgPSB0eXBlb2YgcmFuZ2UgPT0gXCJzdHJpbmdcIiA/IHJhbmdlIDogZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0Zm9yKHZhciBSID0gcm5nLnMucjsgUiA8PSBybmcuZS5yOyArK1IpIGZvcih2YXIgQyA9IHJuZy5zLmM7IEMgPD0gcm5nLmUuYzsgKytDKSB7XG5cdFx0dmFyIGNlbGwgPSB3c19nZXRfY2VsbF9zdHViKHdzLCBSLCBDKTtcblx0XHRjZWxsLnQgPSAnbic7XG5cdFx0Y2VsbC5GID0gcm5nc3RyO1xuXHRcdGRlbGV0ZSBjZWxsLnY7XG5cdFx0aWYoUiA9PSBybmcucy5yICYmIEMgPT0gcm5nLnMuYykge1xuXHRcdFx0Y2VsbC5mID0gZm9ybXVsYTtcblx0XHRcdGlmKGR5bmFtaWMpIGNlbGwuRCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB3cztcbn1cblxudmFyIHV0aWxzLyo6YW55Ki8gPSB7XG5cdGVuY29kZV9jb2w6IGVuY29kZV9jb2wsXG5cdGVuY29kZV9yb3c6IGVuY29kZV9yb3csXG5cdGVuY29kZV9jZWxsOiBlbmNvZGVfY2VsbCxcblx0ZW5jb2RlX3JhbmdlOiBlbmNvZGVfcmFuZ2UsXG5cdGRlY29kZV9jb2w6IGRlY29kZV9jb2wsXG5cdGRlY29kZV9yb3c6IGRlY29kZV9yb3csXG5cdHNwbGl0X2NlbGw6IHNwbGl0X2NlbGwsXG5cdGRlY29kZV9jZWxsOiBkZWNvZGVfY2VsbCxcblx0ZGVjb2RlX3JhbmdlOiBkZWNvZGVfcmFuZ2UsXG5cdGZvcm1hdF9jZWxsOiBmb3JtYXRfY2VsbCxcblx0c2hlZXRfYWRkX2FvYTogc2hlZXRfYWRkX2FvYSxcblx0c2hlZXRfYWRkX2pzb246IHNoZWV0X2FkZF9qc29uLFxuXHRzaGVldF9hZGRfZG9tOiBzaGVldF9hZGRfZG9tLFxuXHRhb2FfdG9fc2hlZXQ6IGFvYV90b19zaGVldCxcblx0anNvbl90b19zaGVldDoganNvbl90b19zaGVldCxcblx0dGFibGVfdG9fc2hlZXQ6IHBhcnNlX2RvbV90YWJsZSxcblx0dGFibGVfdG9fYm9vazogdGFibGVfdG9fYm9vayxcblx0c2hlZXRfdG9fY3N2OiBzaGVldF90b19jc3YsXG5cdHNoZWV0X3RvX3R4dDogc2hlZXRfdG9fdHh0LFxuXHRzaGVldF90b19qc29uOiBzaGVldF90b19qc29uLFxuXHRzaGVldF90b19odG1sOiBzaGVldF90b19odG1sLFxuXHRzaGVldF90b19mb3JtdWxhZTogc2hlZXRfdG9fZm9ybXVsYWUsXG5cdHNoZWV0X3RvX3Jvd19vYmplY3RfYXJyYXk6IHNoZWV0X3RvX2pzb24sXG5cdHNoZWV0X2dldF9jZWxsOiB3c19nZXRfY2VsbF9zdHViLFxuXHRib29rX25ldzogYm9va19uZXcsXG5cdGJvb2tfYXBwZW5kX3NoZWV0OiBib29rX2FwcGVuZF9zaGVldCxcblx0Ym9va19zZXRfc2hlZXRfdmlzaWJpbGl0eTogYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eSxcblx0Y2VsbF9zZXRfbnVtYmVyX2Zvcm1hdDogY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdCxcblx0Y2VsbF9zZXRfaHlwZXJsaW5rOiBjZWxsX3NldF9oeXBlcmxpbmssXG5cdGNlbGxfc2V0X2ludGVybmFsX2xpbms6IGNlbGxfc2V0X2ludGVybmFsX2xpbmssXG5cdGNlbGxfYWRkX2NvbW1lbnQ6IGNlbGxfYWRkX2NvbW1lbnQsXG5cdHNoZWV0X3NldF9hcnJheV9mb3JtdWxhOiBzaGVldF9zZXRfYXJyYXlfZm9ybXVsYSxcblx0Y29uc3RzOiB7XG5cdFx0U0hFRVRfVklTSUJMRTogMCxcblx0XHRTSEVFVF9ISURERU46IDEsXG5cdFx0U0hFRVRfVkVSWV9ISURERU46IDJcblx0fVxufTtcblxudmFyIF9SZWFkYWJsZTtcbmZ1bmN0aW9uIHNldF9yZWFkYWJsZShSKSB7IF9SZWFkYWJsZSA9IFI7IH1cblxuZnVuY3Rpb24gd3JpdGVfY3N2X3N0cmVhbShzaGVldC8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkNTVk9wdHMqLykge1xuXHR2YXIgc3RyZWFtID0gX1JlYWRhYmxlKCk7XG5cdHZhciBvID0gb3B0cyA9PSBudWxsID8ge30gOiBvcHRzO1xuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSB7IHN0cmVhbS5wdXNoKG51bGwpOyByZXR1cm4gc3RyZWFtOyB9XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTtcblx0dmFyIEZTID0gby5GUyAhPT0gdW5kZWZpbmVkID8gby5GUyA6IFwiLFwiLCBmcyA9IEZTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBSUyA9IG8uUlMgIT09IHVuZGVmaW5lZCA/IG8uUlMgOiBcIlxcblwiLCBycyA9IFJTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBlbmRyZWdleCA9IG5ldyBSZWdFeHAoKEZTPT1cInxcIiA/IFwiXFxcXHxcIiA6IEZTKStcIiskXCIpO1xuXHR2YXIgcm93Lyo6P3N0cmluZyovID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhcm93c1wiXSB8fCBbXTtcblx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgaWYgKCEoKGNvbGluZm9bQ118fHt9KS5oaWRkZW4pKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0dmFyIFIgPSByLnMucjtcblx0dmFyIEJPTSA9IGZhbHNlLCB3ID0gMDtcblx0c3RyZWFtLl9yZWFkID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIUJPTSkgeyBCT00gPSB0cnVlOyByZXR1cm4gc3RyZWFtLnB1c2goXCJcXHVGRUZGXCIpOyB9XG5cdFx0d2hpbGUoUiA8PSByLmUucikge1xuXHRcdFx0KytSO1xuXHRcdFx0aWYgKChyb3dpbmZvW1ItMV18fHt9KS5oaWRkZW4pIGNvbnRpbnVlO1xuXHRcdFx0cm93ID0gbWFrZV9jc3Zfcm93KHNoZWV0LCByLCBSLTEsIGNvbHMsIGZzLCBycywgRlMsIG8pO1xuXHRcdFx0aWYocm93ICE9IG51bGwpIHtcblx0XHRcdFx0aWYoby5zdHJpcCkgcm93ID0gcm93LnJlcGxhY2UoZW5kcmVnZXgsXCJcIik7XG5cdFx0XHRcdGlmKHJvdyB8fCAoby5ibGFua3Jvd3MgIT09IGZhbHNlKSkgcmV0dXJuIHN0cmVhbS5wdXNoKCh3KysgPyBSUyA6IFwiXCIpICsgcm93KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xuXHR9O1xuXHRyZXR1cm4gc3RyZWFtO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9odG1sX3N0cmVhbSh3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkhUTUxPcHRzKi8pIHtcblx0dmFyIHN0cmVhbSA9IF9SZWFkYWJsZSgpO1xuXG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGhlYWRlciA9IG8uaGVhZGVyICE9IG51bGwgPyBvLmhlYWRlciA6IEhUTUxfQkVHSU47XG5cdHZhciBmb290ZXIgPSBvLmZvb3RlciAhPSBudWxsID8gby5mb290ZXIgOiBIVE1MX0VORDtcblx0c3RyZWFtLnB1c2goaGVhZGVyKTtcblx0dmFyIHIgPSBkZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdG8uZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0c3RyZWFtLnB1c2gobWFrZV9odG1sX3ByZWFtYmxlKHdzLCByLCBvKSk7XG5cdHZhciBSID0gci5zLnI7XG5cdHZhciBlbmQgPSBmYWxzZTtcblx0c3RyZWFtLl9yZWFkID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoUiA+IHIuZS5yKSB7XG5cdFx0XHRpZighZW5kKSB7IGVuZCA9IHRydWU7IHN0cmVhbS5wdXNoKFwiPC90YWJsZT5cIiArIGZvb3Rlcik7IH1cblx0XHRcdHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcblx0XHR9XG5cdFx0d2hpbGUoUiA8PSByLmUucikge1xuXHRcdFx0c3RyZWFtLnB1c2gobWFrZV9odG1sX3Jvdyh3cywgciwgUiwgbykpO1xuXHRcdFx0KytSO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gc3RyZWFtO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9qc29uX3N0cmVhbShzaGVldC8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkNTVk9wdHMqLykge1xuXHR2YXIgc3RyZWFtID0gX1JlYWRhYmxlKHtvYmplY3RNb2RlOnRydWV9KTtcblxuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSB7IHN0cmVhbS5wdXNoKG51bGwpOyByZXR1cm4gc3RyZWFtOyB9XG5cdHZhciB2YWwgPSB7dDonbicsdjowfSwgaGVhZGVyID0gMCwgb2Zmc2V0ID0gMSwgaGRyLyo6QXJyYXk8YW55PiovID0gW10sIHY9MCwgdnY9XCJcIjtcblx0dmFyIHIgPSB7czp7cjowLGM6MH0sZTp7cjowLGM6MH19O1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciByYW5nZSA9IG8ucmFuZ2UgIT0gbnVsbCA/IG8ucmFuZ2UgOiBzaGVldFtcIiFyZWZcIl07XG5cdGlmKG8uaGVhZGVyID09PSAxKSBoZWFkZXIgPSAxO1xuXHRlbHNlIGlmKG8uaGVhZGVyID09PSBcIkFcIikgaGVhZGVyID0gMjtcblx0ZWxzZSBpZihBcnJheS5pc0FycmF5KG8uaGVhZGVyKSkgaGVhZGVyID0gMztcblx0c3dpdGNoKHR5cGVvZiByYW5nZSkge1xuXHRcdGNhc2UgJ3N0cmluZyc6IHIgPSBzYWZlX2RlY29kZV9yYW5nZShyYW5nZSk7IGJyZWFrO1xuXHRcdGNhc2UgJ251bWJlcic6IHIgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFtcIiFyZWZcIl0pOyByLnMuciA9IHJhbmdlOyBicmVhaztcblx0XHRkZWZhdWx0OiByID0gcmFuZ2U7XG5cdH1cblx0aWYoaGVhZGVyID4gMCkgb2Zmc2V0ID0gMDtcblx0dmFyIHJyID0gZW5jb2RlX3JvdyhyLnMucik7XG5cdHZhciBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBjb3VudGVyID0gMDtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBSID0gci5zLnIsIEMgPSAwO1xuXHR2YXIgaGVhZGVyX2NudCA9IHt9O1xuXHRpZihkZW5zZSAmJiAhc2hlZXRbUl0pIHNoZWV0W1JdID0gW107XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhcm93c1wiXSB8fCBbXTtcblx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0aWYoKChjb2xpbmZvW0NdfHx7fSkuaGlkZGVuKSkgY29udGludWU7XG5cdFx0Y29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0dmFsID0gZGVuc2UgPyBzaGVldFtSXVtDXSA6IHNoZWV0W2NvbHNbQ10gKyBycl07XG5cdFx0c3dpdGNoKGhlYWRlcikge1xuXHRcdFx0Y2FzZSAxOiBoZHJbQ10gPSBDIC0gci5zLmM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAyOiBoZHJbQ10gPSBjb2xzW0NdOyBicmVhaztcblx0XHRcdGNhc2UgMzogaGRyW0NdID0gby5oZWFkZXJbQyAtIHIucy5jXTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZih2YWwgPT0gbnVsbCkgdmFsID0ge3c6IFwiX19FTVBUWVwiLCB0OiBcInNcIn07XG5cdFx0XHRcdHZ2ID0gdiA9IGZvcm1hdF9jZWxsKHZhbCwgbnVsbCwgbyk7XG5cdFx0XHRcdGNvdW50ZXIgPSBoZWFkZXJfY250W3ZdIHx8IDA7XG5cdFx0XHRcdGlmKCFjb3VudGVyKSBoZWFkZXJfY250W3ZdID0gMTtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0ZG8geyB2diA9IHYgKyBcIl9cIiArIChjb3VudGVyKyspOyB9IHdoaWxlKGhlYWRlcl9jbnRbdnZdKTsgaGVhZGVyX2NudFt2XSA9IGNvdW50ZXI7XG5cdFx0XHRcdFx0aGVhZGVyX2NudFt2dl0gPSAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGhkcltDXSA9IHZ2O1xuXHRcdH1cblx0fVxuXHRSID0gci5zLnIgKyBvZmZzZXQ7XG5cdHN0cmVhbS5fcmVhZCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdoaWxlKFIgPD0gci5lLnIpIHtcblx0XHRcdGlmICgocm93aW5mb1tSLTFdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHRcdHZhciByb3cgPSBtYWtlX2pzb25fcm93KHNoZWV0LCByLCBSLCBjb2xzLCBoZWFkZXIsIGhkciwgZGVuc2UsIG8pO1xuXHRcdFx0KytSO1xuXHRcdFx0aWYoKHJvdy5pc2VtcHR5ID09PSBmYWxzZSkgfHwgKGhlYWRlciA9PT0gMSA/IG8uYmxhbmtyb3dzICE9PSBmYWxzZSA6ICEhby5ibGFua3Jvd3MpKSB7XG5cdFx0XHRcdHN0cmVhbS5wdXNoKHJvdy5yb3cpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcblx0fTtcblx0cmV0dXJuIHN0cmVhbTtcbn1cblxudmFyIF9fc3RyZWFtID0ge1xuXHR0b19qc29uOiB3cml0ZV9qc29uX3N0cmVhbSxcblx0dG9faHRtbDogd3JpdGVfaHRtbF9zdHJlYW0sXG5cdHRvX2Nzdjogd3JpdGVfY3N2X3N0cmVhbSxcbiAgc2V0X3JlYWRhYmxlOiBzZXRfcmVhZGFibGVcbn07XG5leHBvcnQgY29uc3QgdmVyc2lvbiA9IFhMU1gudmVyc2lvbjtcbmV4cG9ydCB7XG5cdHBhcnNlX3hsc2NmYixcblx0cGFyc2VfemlwLFxuXHRyZWFkU3luYyBhcyByZWFkLFxuXHRyZWFkRmlsZVN5bmMgYXMgcmVhZEZpbGUsXG5cdHJlYWRGaWxlU3luYyxcblx0d3JpdGVTeW5jIGFzIHdyaXRlLFxuXHR3cml0ZUZpbGVTeW5jIGFzIHdyaXRlRmlsZSxcblx0d3JpdGVGaWxlU3luYyxcblx0d3JpdGVGaWxlQXN5bmMsXG5cdHdyaXRlU3luY1hMU1ggYXMgd3JpdGVYTFNYLFxuXHR3cml0ZUZpbGVTeW5jWExTWCBhcyB3cml0ZUZpbGVYTFNYLFxuXHR1dGlscyxcblx0X19zdHJlYW0gYXMgc3RyZWFtLFxuXHRTU0YsXG5cdENGQlxufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlICovXHJcblxyXG4vLyDmnaXmupDkuo7nvZHnu5wg5pyJ57uG5b6u5pS55YqoXHJcblxyXG5pbXBvcnQgJy4vX2Jsb2InXHJcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcidcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4J1xyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVBcnJheSh0YWJsZSkge1xyXG4gICAgdmFyIG91dCA9IFtdO1xyXG4gICAgdmFyIHJvd3MgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xyXG4gICAgdmFyIHJhbmdlcyA9IFtdO1xyXG4gICAgZm9yICh2YXIgUiA9IDA7IFIgPCByb3dzLmxlbmd0aDsgKytSKSB7XHJcbiAgICAgICAgdmFyIG91dFJvdyA9IFtdO1xyXG4gICAgICAgIHZhciByb3cgPSByb3dzW1JdO1xyXG4gICAgICAgIHZhciBjb2x1bW5zID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7XHJcbiAgICAgICAgZm9yICh2YXIgQyA9IDA7IEMgPCBjb2x1bW5zLmxlbmd0aDsgKytDKSB7XHJcbiAgICAgICAgICAgIHZhciBjZWxsID0gY29sdW1uc1tDXTtcclxuICAgICAgICAgICAgdmFyIGNvbHNwYW4gPSBjZWxsLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpO1xyXG4gICAgICAgICAgICB2YXIgcm93c3BhbiA9IGNlbGwuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJyk7XHJcbiAgICAgICAgICAgIHZhciBjZWxsVmFsdWUgPSBjZWxsLmlubmVyVGV4dDtcclxuICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZSAhPT0gXCJcIiAmJiBjZWxsVmFsdWUgPT0gK2NlbGxWYWx1ZSkgY2VsbFZhbHVlID0gK2NlbGxWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vU2tpcCByYW5nZXNcclxuICAgICAgICAgICAgcmFuZ2VzLmZvckVhY2goZnVuY3Rpb24gKHJhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoUiA+PSByYW5nZS5zLnIgJiYgUiA8PSByYW5nZS5lLnIgJiYgb3V0Um93Lmxlbmd0aCA+PSByYW5nZS5zLmMgJiYgb3V0Um93Lmxlbmd0aCA8PSByYW5nZS5lLmMpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSByYW5nZS5lLmMgLSByYW5nZS5zLmM7ICsraSkgb3V0Um93LnB1c2gobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy9IYW5kbGUgUm93IFNwYW5cclxuICAgICAgICAgICAgaWYgKHJvd3NwYW4gfHwgY29sc3Bhbikge1xyXG4gICAgICAgICAgICAgICAgcm93c3BhbiA9IHJvd3NwYW4gfHwgMTtcclxuICAgICAgICAgICAgICAgIGNvbHNwYW4gPSBjb2xzcGFuIHx8IDE7XHJcbiAgICAgICAgICAgICAgICByYW5nZXMucHVzaCh7czoge3I6IFIsIGM6IG91dFJvdy5sZW5ndGh9LCBlOiB7cjogUiArIHJvd3NwYW4gLSAxLCBjOiBvdXRSb3cubGVuZ3RoICsgY29sc3BhbiAtIDF9fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgO1xyXG5cclxuICAgICAgICAgICAgLy9IYW5kbGUgVmFsdWVcclxuICAgICAgICAgICAgb3V0Um93LnB1c2goY2VsbFZhbHVlICE9PSBcIlwiID8gY2VsbFZhbHVlIDogbnVsbCk7XHJcblxyXG4gICAgICAgICAgICAvL0hhbmRsZSBDb2xzcGFuXHJcbiAgICAgICAgICAgIGlmIChjb2xzcGFuKSBmb3IgKHZhciBrID0gMDsgayA8IGNvbHNwYW4gLSAxOyArK2spIG91dFJvdy5wdXNoKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdXQucHVzaChvdXRSb3cpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvdXQsIHJhbmdlc107XHJcbn07XHJcblxyXG5mdW5jdGlvbiBkYXRlbnVtKHYsIGRhdGUxOTA0KSB7XHJcbiAgICBpZiAoZGF0ZTE5MDQpIHYgKz0gMTQ2MjtcclxuICAgIHZhciBlcG9jaCA9IERhdGUucGFyc2Uodik7XHJcbiAgICByZXR1cm4gKGVwb2NoIC0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyhkYXRhLCBvcHRzPXt9KSB7XHJcbiAgICB2YXIgd3MgPSB7fTtcclxuICAgIHZhciByYW5nZSA9IHtzOiB7YzogMTAwMDAwMDAsIHI6IDEwMDAwMDAwfSwgZToge2M6IDAsIHI6IDB9fTtcclxuICAgIGZvciAodmFyIFIgPSAwOyBSICE9IGRhdGEubGVuZ3RoOyArK1IpIHtcclxuICAgICAgICBmb3IgKHZhciBDID0gMDsgQyAhPSBkYXRhW1JdLmxlbmd0aDsgKytDKSB7XHJcbiAgICAgICAgICAgIGlmIChyYW5nZS5zLnIgPiBSKSByYW5nZS5zLnIgPSBSO1xyXG4gICAgICAgICAgICBpZiAocmFuZ2Uucy5jID4gQykgcmFuZ2Uucy5jID0gQztcclxuICAgICAgICAgICAgaWYgKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XHJcbiAgICAgICAgICAgIGlmIChyYW5nZS5lLmMgPCBDKSByYW5nZS5lLmMgPSBDO1xyXG4gICAgICAgICAgICB2YXIgY2VsbCA9IHt2OiBkYXRhW1JdW0NdfTtcclxuICAgICAgICAgICAgaWYgKGNlbGwudiA9PSBudWxsKSBjb250aW51ZTtcclxuICAgICAgICAgICAgdmFyIGNlbGxfcmVmID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7YzogQywgcjogUn0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLnYgPT09ICdudW1iZXInKSBjZWxsLnQgPSAnbic7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjZWxsLnYgPT09ICdib29sZWFuJykgY2VsbC50ID0gJ2InO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjZWxsLnYgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjZWxsLnQgPSAnbic7XHJcbiAgICAgICAgICAgICAgICBjZWxsLnogPSBYTFNYLlNTRi5fdGFibGVbMTRdO1xyXG4gICAgICAgICAgICAgICAgY2VsbC52ID0gZGF0ZW51bShjZWxsLnYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgY2VsbC50ID0gJ3MnO1xyXG4gICAgICAgICAgICB3c1tjZWxsX3JlZl0gPSBjZWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyYW5nZS5zLmMgPCAxMDAwMDAwMCkgd3NbJyFyZWYnXSA9IFhMU1gudXRpbHMuZW5jb2RlX3JhbmdlKHJhbmdlKTtcclxuICAgIHJldHVybiB3cztcclxufVxyXG5cclxuZnVuY3Rpb24gV29ya2Jvb2soKSB7XHJcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgV29ya2Jvb2spKSByZXR1cm4gbmV3IFdvcmtib29rKCk7XHJcbiAgICB0aGlzLlNoZWV0TmFtZXMgPSBbXTtcclxuICAgIHRoaXMuU2hlZXRzID0ge307XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHMyYWIocykge1xyXG4gICAgdmFyIGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcihzLmxlbmd0aCk7XHJcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBzLmxlbmd0aDsgKytpKSB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcclxuICAgIHJldHVybiBidWY7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRfdGFibGVfdG9fZXhjZWwoaWQpIHtcclxuICAgIHZhciB0aGVUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIHZhciBvbyA9IGdlbmVyYXRlQXJyYXkodGhlVGFibGUpO1xyXG4gICAgdmFyIHJhbmdlcyA9IG9vWzFdO1xyXG5cclxuICAgIC8qIG9yaWdpbmFsIGRhdGEgKi9cclxuICAgIHZhciBkYXRhID0gb29bMF07XHJcbiAgICB2YXIgd3NfbmFtZSA9IFwiU2hlZXRKU1wiO1xyXG5cclxuICAgIHZhciB3YiA9IG5ldyBXb3JrYm9vaygpLCB3cyA9IHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEpO1xyXG5cclxuICAgIC8qIGFkZCByYW5nZXMgdG8gd29ya3NoZWV0ICovXHJcbiAgICAvLyB3c1snIWNvbHMnXSA9IFsnYXBwbGUnLCAnYmFuYW4nXTtcclxuICAgIHdzWychbWVyZ2VzJ10gPSByYW5nZXM7XHJcblxyXG4gICAgLyogYWRkIHdvcmtzaGVldCB0byB3b3JrYm9vayAqL1xyXG4gICAgd2IuU2hlZXROYW1lcy5wdXNoKHdzX25hbWUpO1xyXG4gICAgd2IuU2hlZXRzW3dzX25hbWVdID0gd3M7XHJcblxyXG4gICAgdmFyIHdib3V0ID0gWExTWC53cml0ZSh3Yiwge2Jvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5J30pO1xyXG5cclxuICAgIEZpbGVTYXZlci5zYXZlQXMobmV3IEJsb2IoW3MyYWIod2JvdXQpXSwge3R5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJ9KSwgXCJ0ZXN0Lnhsc3hcIilcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydF9qc29uX3RvX2V4Y2VsKHRoLCBqc29uRGF0YSwgZGVmYXVsdFRpdGxlLCBvcHRpb25zID0geyBtZXJnZXM6IFtdLCBoZWFkZXI6IG51bGwsY29sczpudWxsIH0pIHtcclxuXHJcbiAgICAvKiBvcmlnaW5hbCBkYXRhICovXHJcblxyXG4gICAgdmFyIGRhdGEgPSBqc29uRGF0YTtcclxuICAgIGRhdGEudW5zaGlmdCh0aCk7XHJcbiAgICBpZiAob3B0aW9ucy5oZWFkZXIpIGRhdGEudW5zaGlmdChbb3B0aW9ucy5oZWFkZXJdKTtcclxuICAgIHZhciB3c19uYW1lID0gXCJTaGVldEpTXCI7XHJcblxyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgIH1cclxuICAgIHZhciB3YiA9IG5ldyBXb3JrYm9vaygpLCB3cyA9IHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEsb3B0cyk7XHJcblxyXG4gICAgLyogYWRkIG1lcmdlcyBhcmVhIHRvIHdvcmtzaGVldCAqL1xyXG4gICAgbGV0IHsgbWVyZ2VzIH0gPSBvcHRpb25zO1xyXG4gICAgaWYgKHR5cGVvZiBtZXJnZXNbMF0gPT0gJ3N0cmluZycgJiYgbWVyZ2VzLmxlbmd0aCA9PSAyKSBtZXJnZXMgPSBbbWVyZ2VzXSAvLyBqdXN0IG9uZSAjIFsnQTEnLCAnQzEnXSA9ID4gW1snQTEnLCAnQzEnXV1cclxuICAgIG1lcmdlcyA9IG1lcmdlcy5tYXAoaSA9PiBpIGluc3RhbmNlb2YgQXJyYXkgPyB7IHM6IGlbMF0sIGU6IGlbMV0gfSA6IGkpOyAvLyBiZSBzb3J0IDopICMgWydBMScsICdDMSddID0+IHsgczogJ0ExJywgZTogJ0MzJyB9XHJcbiAgICB3c1snIW1lcmdlcyddID0gbWVyZ2VzO1xyXG5cclxuICAgIGlmKG9wdGlvbnMuY29scyl7XHJcbiAgICAgIHdzW1wiIWNvbHNcIl0gPSBvcHRpb25zLmNvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogYWRkIHdvcmtzaGVldCB0byB3b3JrYm9vayAqL1xyXG4gICAgd2IuU2hlZXROYW1lcy5wdXNoKHdzX25hbWUpO1xyXG4gICAgd2IuU2hlZXRzW3dzX25hbWVdID0gd3M7XHJcblxyXG4gICAgdmFyIHdib3V0ID0gWExTWC53cml0ZSh3Yiwge2Jvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5J30pO1xyXG4gICAgdmFyIHRpdGxlID0gZGVmYXVsdFRpdGxlIHx8ICfliJfooagnXHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKG5ldyBCbG9iKFtzMmFiKHdib3V0KV0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSksIHRpdGxlICsgXCIueGxzeFwiKVxyXG59XHJcbiIsbnVsbCxudWxsXSwibmFtZXMiOlsiZ2V0Q2FsbGVySW5mbyIsIl9hIiwiYmxhbmsiLCJhcmdzIiwibG9nSW5mbyIsImxvZ1dhcm4iLCJsb2dFcnJvciIsImVycm9yIiwid2FybiIsImluZm8iLCJkZWJ1ZyIsImNhbGxlckluZm8iLCJsb2ciLCJjYWxsZXIiLCJsb2dnZXIiLCJzZXRMb2dnZXIiLCJvcHRzIiwibGV2ZWwiLCJpc0VtcHR5IiwidmFsdWUiLCJpc0FsbEVtcHR5IiwidmFsdWVzIiwiaGFzRW1wdHkiLCJTdHJpbmdVdGlscyIsInRyYWNlIiwibmFtZSIsImVuYWJsZSIsImNyZWF0ZUFzeW5jQ29tcG9uZW50IiwiZXMiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsInJldHJ5IiwiZmFpbCIsImF0dGVtcHRzIiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50IiwiYXBwIiwib3B0aW9ucyIsImFzeW5jQ29tcG9uZW50IiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50cyIsIm1vZHVsZXMiLCJleGNsdWRlcyIsInBpY2tOYW1lRXhwIiwidHJhbnNmb3JtIiwiaW1wb3J0cyIsInRyYW5zZm9ybUZyb21HbG9iIiwiZm9yRWFjaCIsIml0ZW0iLCJrZXkiLCJpbnN0YWxsU3luY0NvbXBvbmVudHMiLCJjb21wb25lbnRzIiwicmVzdWx0IiwiY2FtZWxDYXNlIiwidXBwZXJGaXJzdCIsImxvYWRBc3luY0NvbXBvbmVudEZyb21HbG9iIiwibWFwIiwibG9hZENvbXBvbmVudEZyb21HbG9iIiwidml0ZSIsIlRhYmxlU3RvcmUiLCJfX3B1YmxpY0ZpZWxkIiwidGFibGVOYW1lIiwicHJlZml4IiwidGFibGVJZCIsInNhdmVkIiwidGFibGUiLCIkcm91dGUiLCJrZXlUeXBlIiwicnhBcnJJbmRleCIsInJ4VmFyTmFtZSIsInJ4UXVvdCIsImpvaW5QYXRocyIsInBhdGhzIiwiYWNjIiwicCIsImdldFBhdGhUb1N0cmluZyIsIl8iLCJwYXRoVG9TdHJpbmciLCJwYXRoIiwicHJlZml4ZXMiLCJ0eXBlIiwiaGFzIiwiaXNPYmplY3QiLCJnZXRJdGVyYXRlIiwiaXRlcmF0ZSIsIm9iaiIsImNhbGxiYWNrIiwiYnJva2VuIiwiYnJlYWtJdCIsImRlc2NyaWJlVmFsdWUiLCJwYXJlbnQiLCJjcCIsImkiLCJjaGlsZHJlbiIsImNvbnRleHRSZWFkZXIiLCJDb250ZXh0UmVhZGVyIiwiZXJyIiwic2NwIiwiZ2V0RWxlbWVudHMiLCJnZXRPd25DaGlsZHJlbiIsImNoaWxkcmVuUGF0aCIsInN0ckNoaWxkcmVuUGF0aCIsInN0ckNoaWxkUGF0aFByZWZpeCIsInJlcyIsInZhbCIsInN0ckNoaWxkUGF0aCIsInBhdGhGb3JtYXRTdHJpbmciLCJjaGlsZEtleSIsImFmdGVySXRlcmF0ZSIsImN1clBhcmVudCIsImlzT2JqZWN0RW1wdHkiLCJvd25Qcm9wZXJ0aWVzT25seSIsImdldEVhY2hEZWVwIiwiZWFjaERlZXAiLCJpZGVudGl0eSIsIm1lcmdlIiwiaXNTdHJpbmciLCJ0b1BhdGgiLCJkZWVwZGFzaCIsImRhc2giLCJyZWYiLCJza2lwcyIsImtleXMiLCJwQXR0cnMiLCJjb3B5VG9DbGlwYm9hcmRUcmFkaXRpb25hbCIsInRleHQiLCJ0ZXh0QXJlYSIsInN1Y2Nlc3NmdWwiLCJjb3B5VG9DbGlwYm9hcmQiLCJyZWFkRnJvbUNsaXBib2FyZFRyYWRpdGlvbmFsIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRUb0NsaXBib2FyZCIsIm1lbW9yeUNsaXBib2FyZCIsInJlYWN0aXZlIiwiY29weVRvTWVtb3J5IiwicmVhZFRvTWVtb3J5IiwiY2xlYXJNZW1vcnlDbGlwYm9hcmQiLCJ1dGlscyIsInN0cmluZ3MiLCJzdG9yZSIsImRlZmF1bHRDcnVkT3B0aW9ucyIsImN0eCIsImNydWRPcHRpb25zUmVmIiwiY3QiLCJjb21wdXRlZCIsInVpIiwidWlDb250ZXh0IiwidHJpZ2dlciIsImZvcm0iLCJfYiIsImNsaXBib2FyZERhdGEiLCJlIiwiZG9DbG9zZSIsInJlc2V0Iiwic3VibWl0IiwidG90YWwiLCJhbnRkdkNvbHNwYW4iLCJsYWJlbFNwYW4iLCJhc3Npc3QiLCJ1c2VVaSIsImJ1dHRvbiIsImNhc2NhZGVyIiwiemhDTiIsImVuIiwidCIsImdldCIsImFyZyIsImluZGV4IiwiSTE4biIsImluc3RhbmNlIiwibG9jYWxlcyIsIm1lc3NhZ2UiLCJmc0Nsb25lIiwiY2xvbmVEZWVwIiwiaTE4biIsInVzZUkxOG4iLCJtb2R1bGUiLCJ0aGlzIiwiciIsIm4iLCJzIiwiYSIsImRheWpzIiwiYWR2YW5jZWRGb3JtYXQiLCJkb0Zvcm1hdCIsImRhdGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0dGVyIiwiZGF0ZXJhbmdlRm9ybWF0dGVyIiwiZGF0ZXRpbWVyYW5nZUZvcm1hdHRlciIsImYiLCJvIiwidSIsImQiLCJ3ZWVrZGF5IiwibG9jYWxlRGF0YSIsIndlZWtPZlllYXIiLCJkYXRlJDEiLCJidWlsZERhdGVWYWx1ZSIsInNjb3BlIiwicm93IiwiZWwiLCJpY29uIiwibnVtYmVyJDEiLCJwaG9uZSQxIiwiY29sdW1uIiwicmV0Iiwic2VsZWN0IiwidHJlZSIsInR5cGVMaXN0IiwiZGVmYXVsdFR5cGVDcmVhdG9ycyIsImRlZmF1bHRUeXBlcyIsImdldFR5cGVzIiwiZ2V0VHlwZSIsImFkZFR5cGVzIiwibmV3VHlwZXMiLCJ0eXBlcyQxIiwiY3JlYXRvciIsIl9zZmNfbWFpbiREIiwiZGVmaW5lQ29tcG9uZW50IiwicGFnZVJlZiIsIm9uTW91bnRlZCIsIl9ob2lzdGVkXzEiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfNCIsIiRzbG90cyIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfY3JlYXRlQ29tbWVudFZOb2RlIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ob2lzdGVkXzMiLCJpc1VuTWVyZ2VhYmxlIiwic3JjVmFsdWUiLCJVbk1lcmdlYWJsZSIsImlzUmVmIiwiaXNTaGFsbG93IiwiaXNVbkNsb25lYWJsZSIsInRhcmdldCIsInNvdXJjZXMiLCJjdXN0b21pemVyIiwib2JqVmFsdWUiLCJpc0FycmF5IiwiZm91bmQiLCJtZXJnZVdpdGgiLCJjbG9uZURlZXBXaXRoIiwiVW5NZXJnZWFibGUkMSIsImNsb25lYWJsZSIsInVzZU1lcmdlIiwiaXNBc3luY0NvbXB1dGUiLCJBc3luY0NvbXB1dGVWYWx1ZSIsImlzU3luY0NvbXB1dGUiLCJDb21wdXRlVmFsdWUiLCJmaW5kQ29tcHV0ZVZhbHVlcyIsImlzQXN5bmMiLCJmb3VuZE1hcCIsImNoZWNrRnVuYyIsImNvbnRleHQiLCJleGNsdWRlIiwiZG9Bc3luY0NvbXB1dGUiLCJkZXBlbmRBc3luY1ZhbHVlcyIsImdldENvbnRleHRGbiIsImFzeW5jVmFsdWVNYXAiLCJzZXRBc3luY0NvbXB1dGVWYWx1ZSIsImFzeW5jVmFsdWVzTWFwIiwidmFsdWVSZWYiLCJzZXQiLCJkb0NvbXB1dGVkIiwiZ2V0VGFyZ2V0RnVuYyIsInVzZXJDb21wdXRlZEZuIiwiZGVwZW5kVmFsdWVzIiwiYXN5bmNDb3VudCIsInN5bmNDb3VudCIsImNvbXB1dGVGbiIsImNvbXB1dGUiLCJhc3luY0ZuIiwiZGVmYXVsdFZhbHVlIiwiYXN5bmNSZWYiLCJjb21wdXRlZFZhbHVlIiwid2F0Y2giLCJhc3luY0NvbXB1dGUiLCJ1c2VDb21wdXRlIiwiQ29uc3RhbnRzIiwibWVyZ2VDb2x1bW5QbHVnaW5zIiwicmVnaXN0ZXJNZXJnZUNvbHVtblBsdWdpbiIsInBsdWdpbiIsInJlbW92ZSIsInB1c2giLCJzb3J0IiwiYiIsIm9yZGVyIiwibWVyZ2VDb2x1bW5EaWN0IiwiZGljdCIsImNvbXBvbmVudCIsInNoYWxsb3dSZWFjdGl2ZSIsIm1lcmdlQ29sdW1uVHlwZSIsInR5cGVDaGFpbiIsIkFycmF5IiwiYmFzZSIsInR5cGVPcHRpb25zIiwidHlwZXMiLCJtZXJnZVBsdWdpbnMiLCJoYW5kbGUiLCJjb2x1bW5Qcm9wcyIsImNydWRPcHRpb25zIiwic2V0dGluZ3MiLCJ2aWV3Rm9ybVVzZUNlbGxDb21wb25lbnQiLCJ2aWV3Rm9ybUNvbHVtbiIsImluY2x1ZGVzIiwicmVuZGVyIiwiX2NyZWF0ZVZOb2RlIiwidmlld0Zvcm0iLCJhZGRGb3JtIiwicnVsZXMiLCJydWxlIiwiZWRpdEZvcm0iLCJzZWFyY2giLCJtZXJnZVBsdWdpbiIsInNldHVwT3B0aW9uc0NvbHVtbnMiLCJjb2x1bW5zIiwidXNlck9wdGlvbnMiLCJpbml0ZWRDb2x1bW5zIiwiYnVpbGRPcHRpb25zQ29sdW1uc0ZsYXRNYXAiLCJidWlsZFRhYmxlQ29sdW1uc0ZsYXRNYXAiLCJidWlsZFRhYmxlQ29sdW1uIiwiY29sVGVtcGxhdGUiLCJ0YWJsZUNvbHVtbiIsInRpdGxlIiwiZGVmYXVsdEFsaWduYWJsZSIsImFsaWduIiwic29ydGFibGUiLCJidWlsZFRhYmxlQ29sdW1ucyIsIndyYXBwZXJDdXN0b21Db21wb25lbnQiLCJzaGFsbG93UmVmIiwidGFibGVDb2x1bW5zIiwiZG9Db2x1bW5zU29ydCIsImZpeFNwZWNpYWxDb2x1bW5zRml4ZWQiLCJsaXN0Iiwic29tZSIsImZpeGVkIiwiZG9BcnJheVNvcnQiLCJhcnIiLCJzb3J0QnkiLCJvcmRlckRlZmF1bHQiLCJzaXplIiwiY29sdW1uc0FyciIsImNvbHVtbnNNYXAiLCJidWlsZEZvcm1Db2x1bW5zIiwiY29sdW1uc0ZsYXRNYXAiLCJmb3JtVHlwZSIsImZvcm1Db2x1bW5zIiwiZm9ybUNvbHVtbiIsImJ1aWxkRm9ybSIsImJhc2VPcHRpb25zIiwib25Db21wbGV0ZSIsImJ1aWxkU2VhcmNoRm9ybSIsInNlYXJjaENvbHVtbnMiLCJmb3JtQ29sdW1uc0ZvclNlYXJjaCIsImNvcHlQcm9wcyIsInNlYXJjaENvcHlGb3JtUHJvcHMiLCJjb3B5RnJvbUNvbXBvc2l0aW9uQ29sdW1uIiwiZmllbGQiLCJjb21tb24iLCJkZWYiLCJwaWNrIiwiYnVpbGRGb3JtT3B0aW9ucyIsIm1vZGUiLCJkZWZhdWx0T3B0aW9ucyIsImNvbW1vbk9wdGlvbnMiLCJjcnVkRXhwb3NlIiwiYnVpbGRDb2x1bW5zIiwidG9vbGJhciIsImNvbHVtbnNGaWx0ZXIiLCJvcmlnaW5hbENvbHVtbnMiLCJkaXNhYmxlZCIsImVkaXRhYmxlIiwiZm9yRWFjaFRhYmxlQ29sdW1ucyIsImZvckVhY2hDb2x1bW5zIiwidXNlQ29sdW1ucyIsInNlZWQiLCJGc0Zvcm1XcmFwcGVyTGlzdCIsImNyZWF0ZUZvcm1XcmFwcGVyIiwiaWQiLCJjb250YWluZXIiLCJ2Tm9kZSIsImNyZWF0ZVZOb2RlIiwiRnNGb3JtV3JhcHBlciIsInZtIiwidXNlRm9ybVdyYXBwZXIiLCJwZCIsImluamVjdCIsIm9wZW5EaWFsb2ciLCJvcGVuQ3J1ZEZvcm1EaWFsb2ciLCJmb3JtT3B0aW9ucyIsImRvTWVyZ2UiLCJ1c2VFZGl0YWJsZSIsInByb3BzIiwiY3J1ZEJpbmRpbmciLCJfYyIsImN1c3RvbVJvd0hhbmRsZUFjdGl2ZSIsIl9kIiwiX2UiLCJvbkVuYWJsZWQiLCJlZGl0YWJsZU9wdHMiLCJlZGl0YWJsZUlkIiwiZWRpdGFibGVSb3ciLCJpc0FkZCIsInNldERhdGEiLCJyb3dEYXRhIiwiZGF0YSIsInVzZUV4cG9zZSIsImNydWRSZWYiLCJmb3JtV3JhcHBlclByb3ZpZGVyIiwiY2hlY2tDcnVkUmVmIiwiY2hlY2tDcnVkQmluZGluZ1JlZiIsImZvcm1XcmFwcGVyUmVmIiwiZm9ybVJlZiIsInJlY29yZHMiLCJ0b1JhdyIsInZhbHVlQnVpbGRlckNvbHVtbnMiLCJjb2wiLCJwYWdlUXVlcnkiLCJwYWdlIiwic2VhcmNoRm9ybURhdGEiLCJxdWVyeSIsInVzZXJQYWdlUXVlcnkiLCJ1c2VyUGFnZVJlcyIsImRpc2FibGVMb2FkaW5nIiwidW5yZWYiLCJwYWdlUmVzIiwiY3VycmVudFBhZ2UiLCJwYWdlU2l6ZSIsImZzVGFibGVSZWYiLCJubyIsInRhYmxlUmVmIiwicm93S2V5IiwicmVtb3ZlQmluZGluZyIsImlzTG9jYWwiLCJyZW1vdmVTY29wZSIsImZvcm1PcHRzIiwieHhGb3JtIiwibG9hZEZzRXhwb3J0VXRpbCIsImVhY2giLCJsb2FkRnNJbXBvcnRVdGlsIiwiZGVmYXVsdERhdGFGb3JtYXR0ZXIiLCJvcmlnaW5hbFJvdyIsIm5vZGVzIiwibGFiZWwiLCJub2RlIiwiZXhwb3J0VGFibGUiLCJleHBvcnRDb2wiLCJleHBvcnRVdGlsIiwib3JpZ2luYWxEYXRhIiwic2VhcmNoUGFyYW1zIiwiY2xvbmUiLCJtYXBwaW5nIiwiZXhwT3B0cyIsImltcG9ydFRhYmxlIiwiaW1wb3J0RGF0YSIsImlzRWRpdGFibGUiLCJjcnVkT3B0aW9uc1BsdWdpbnMiLCJyZWdpc3RlckNydWRPcHRpb25zUGx1Z2luIiwiZ2V0Q3J1ZE9wdGlvbnNQbHVnaW4iLCJzZWxlY3Rpb24iLCJnZXRSb3dLZXkiLCJ0YWJsZUNJIiwiY2hhbmdlZCIsInNlbGVjdGVkUm93S2V5cyIsIm5leHRUaWNrIiwibW9iaWxlQWRhcHRvciIsInJvd0hhbmRsZSIsImJ1dHRvbnMiLCJuZXdCdXR0b25zIiwiYnV0dG9uc0tleSIsIndpZHRoUmVmIiwidXNlQ3J1ZCIsImV4cG9zZSIsImRvUmVmcmVzaCIsImRvVmFsdWVSZXNvbHZlIiwidXNlUGFnaW5hdGlvbiIsImN1cnJlbnQiLCJ1c2VGb3JtU3VibWl0IiwidXNlUm93SGFuZGxlIiwidXNlU2VhcmNoIiwiYmFzZVRhYmxlUmVmIiwidXNlVGFicyIsImZvcm1EYXRhIiwidXNlVG9vbGJhciIsImV4cG9ydGluZyIsImV4cG9ydE9wdGlvbnMiLCJvcmlnaW5hbCIsInVwZGF0ZUNvbHVtbnMiLCJvbGQiLCJvbGRDb2x1bW4iLCJuZXdDb2x1bW4iLCJuZXdDb2x1bW5zIiwidXNlVGFibGUiLCJzb3J0Q2hhbmdlIiwiaXNTZXJ2ZXJTb3J0IiwicHJvcCIsImFzYyIsIm9sZFNvcnQiLCJ1c2VBY3Rpb25iYXIiLCJhY3RpdmVSb3dzIiwiYWZ0ZXJVc2VDcnVkIiwiYmluZGluZ3MiLCJyZWJ1aWxkQ3J1ZEJpbmRpbmdzIiwiaW5wdXRPcHRzIiwidXNlck9wdHMiLCJwbHVnaW5zIiwicGx1ZyIsImJlZm9yZSIsInBsdWdpbk9wdGlvbnMiLCJyZXNldENydWRPcHRpb25zIiwiYXBwZW5kQ3J1ZE9wdGlvbnMiLCJvdmVyT3B0aW9ucyIsIm5ld09wdGlvbnMiLCJhcHBlbmRDcnVkQmluZGluZyIsInVzZUZzSW1wbCIsImNyZWF0ZUNydWRPcHRpb25zIiwiY3J1ZEV4cG9zZVJlZiIsImNyZWF0ZUNydWRPcHRpb25zUmV0IiwiaW5pdENydWQiLCJ1c2VDcnVkUHJvcHMiLCJ1c2VDcnVkUmV0IiwidXNlRnMiLCJ1c2VGc0FzeW5jIiwidXNlRnNSZWYiLCJ1c2VEaWN0Iiwidk1vZGVsIiwiY3JlYXRlQ29tcHV0ZWRPcHRpb25zIiwib3B0aW9uIiwiZ2V0VmFsdWUiLCJnZXRMYWJlbCIsImdldERpY3QiLCJnZXRTY29wZSIsImdldEN1cnJlbnRTY29wZSIsInByb3h5IiwiZ2V0Q3VycmVudEluc3RhbmNlIiwibG9hZERpY3QiLCJyZWxvYWQiLCJyZWxvYWREaWN0IiwiY2xlYXJEaWN0Iiwid2F0Y2hWYWx1ZSIsImdldERpY3REYXRhIiwiZ2V0UHJvcFZhbHVlIiwiYXR0ciIsInJlbW92ZVByb3BWYWx1ZSIsImdldENoaWxkcmVuIiwicGVyZiIsIndhcm5lZCIsIlBST0NFU1MiLCJlbWl0V2FybmluZyIsIm1zZyIsImNvZGUiLCJmbiIsIkFDIiwiQVMiLCJ3YXJuQUNQb2x5ZmlsbCIsInJlYXNvbiIsInByaW50QUNQb2x5ZmlsbFdhcm5pbmciLCJzaG91bGRXYXJuIiwiaXNQb3NJbnQiLCJnZXRVaW50QXJyYXkiLCJtYXgiLCJaZXJvQXJyYXkiLCJfU3RhY2siLCJIZWFwQ2xzIiwiX19wcml2YXRlR2V0IiwiX2NvbnN0cnVjdGluZyIsIl9fcHJpdmF0ZVNldCIsIl9fcHJpdmF0ZUFkZCIsIlN0YWNrIiwiX0xSVUNhY2hlIiwiX2luaXRpYWxpemVUVExUcmFja2luZyIsIl9pbml0aWFsaXplU2l6ZVRyYWNraW5nIiwiX2luZGV4ZXMiLCJfcmluZGV4ZXMiLCJfaXNWYWxpZEluZGV4IiwiX2V2aWN0IiwiX2JhY2tncm91bmRGZXRjaCIsIl9pc0JhY2tncm91bmRGZXRjaCIsIl9jb25uZWN0IiwiX21vdmVUb1RhaWwiLCJfZGVsZXRlIiwiX2NsZWFyIiwiX21heCIsIl9tYXhTaXplIiwiX2Rpc3Bvc2UiLCJfZGlzcG9zZUFmdGVyIiwiX2ZldGNoTWV0aG9kIiwiX21lbW9NZXRob2QiLCJfc2l6ZSIsIl9jYWxjdWxhdGVkU2l6ZSIsIl9rZXlNYXAiLCJfa2V5TGlzdCIsIl92YWxMaXN0IiwiX25leHQiLCJfcHJldiIsIl9oZWFkIiwiX3RhaWwiLCJfZnJlZSIsIl9kaXNwb3NlZCIsIl9zaXplcyIsIl9zdGFydHMiLCJfdHRscyIsIl9oYXNEaXNwb3NlIiwiX2hhc0ZldGNoTWV0aG9kIiwiX2hhc0Rpc3Bvc2VBZnRlciIsIl91cGRhdGVJdGVtQWdlIiwiX3N0YXR1c1RUTCIsIl9zZXRJdGVtVFRMIiwiX2lzU3RhbGUiLCJfcmVtb3ZlSXRlbVNpemUiLCJfaSIsIl9hZGRJdGVtU2l6ZSIsIl9zIiwiX3N0IiwiX3JlcXVpcmVTaXplIiwiX2siLCJfdiIsInNpemVDYWxjdWxhdGlvbiIsInR0bCIsInR0bFJlc29sdXRpb24iLCJ0dGxBdXRvcHVyZ2UiLCJ1cGRhdGVBZ2VPbkdldCIsInVwZGF0ZUFnZU9uSGFzIiwiYWxsb3dTdGFsZSIsImRpc3Bvc2UiLCJkaXNwb3NlQWZ0ZXIiLCJub0Rpc3Bvc2VPblNldCIsIm5vVXBkYXRlVFRMIiwibWF4U2l6ZSIsIm1heEVudHJ5U2l6ZSIsImZldGNoTWV0aG9kIiwibWVtb01ldGhvZCIsIm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbiIsIm5vRGVsZXRlT25TdGFsZUdldCIsImFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uIiwiYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCIsImlnbm9yZUZldGNoQWJvcnQiLCJVaW50QXJyYXkiLCJfX3ByaXZhdGVNZXRob2QiLCJpbml0aWFsaXplU2l6ZVRyYWNraW5nX2ZuIiwiaW5pdGlhbGl6ZVRUTFRyYWNraW5nX2ZuIiwiYyIsImlzQmFja2dyb3VuZEZldGNoX2ZuIiwiayIsImJhY2tncm91bmRGZXRjaF9mbiIsIm1vdmVUb1RhaWxfZm4iLCJpbmRleGVzX2ZuIiwicmluZGV4ZXNfZm4iLCJnZXRPcHRpb25zIiwidiIsInRoaXNwIiwiZGVsZXRlZCIsImRlbGV0ZV9mbiIsImVudHJ5Iiwic3RhcnQiLCJyZW1haW4iLCJhZ2UiLCJzZXRPcHRpb25zIiwic3RhdHVzIiwiZXZpY3RfZm4iLCJfX3ByaXZhdGVXcmFwcGVyIiwib2xkVmFsIiwib2xkVmFsdWUiLCJkdCIsInRhc2siLCJoYXNPcHRpb25zIiwicGVla09wdGlvbnMiLCJmZXRjaE9wdGlvbnMiLCJmb3JjZVJlZnJlc2giLCJzaWduYWwiLCJzdGFsZSIsImlzU3RhbGUiLCJzdGFsZVZhbCIsIm1lbW9PcHRpb25zIiwidnYiLCJmZXRjaGluZyIsImNsZWFyX2ZuIiwidHRscyIsInN0YXJ0cyIsImNhY2hlZE5vdyIsImdldE5vdyIsInNpemVzIiwiaXNWYWxpZEluZGV4X2ZuIiwiZnJlZSIsImhlYWQiLCJhYyIsImZldGNoT3B0cyIsImNiIiwidXBkYXRlQ2FjaGUiLCJhYm9ydGVkIiwiaWdub3JlQWJvcnQiLCJmZXRjaEZhaWwiLCJiZiIsImViIiwiZXIiLCJhbGxvd1N0YWxlQWJvcnRlZCIsIm5vRGVsZXRlIiwicGNhbGwiLCJyZWoiLCJmbXAiLCJjb25uZWN0X2ZuIiwicGkiLCJuaSIsIkxSVUNhY2hlIiwiRGljdEdsb2JhbENhY2hlIiwic2V0RGljdFJlcXVlc3QiLCJyZXF1ZXN0IiwiZGljdFJlcXVlc3QiLCJEaWN0IiwiY2FjaGVLZXkiLCJjYWNoZWQiLCJjYWxsIiwibm90aWZ5IiwidG9GZXRjaFZhbHVlcyIsImdldEZyb21SZW1vdGUiLCJ1cmwiLCJtYXliZUFyciIsImRpY3REYXRhIiwiY29uZmlnIiwidXNlRGljdERlZmluZSIsInVzZVR5cGVzIiwiZHJhZ01vZGFsRm9yQW50ZHYiLCJkaWFsb2dFbCIsImRpYWxvZ0hlYWRlckVsIiwiZHJhZ0RvbSIsInN0eSIsIlgiLCJZIiwic3R5TCIsInN0eVQiLCJsIiwiZHJhZ01vZGFsRm9yTmFpdmUiLCJkcmFnTW9kYWwiLCJ1c2VEcmFnIiwiR2xvYmFsQ29uZmlnIiwiX3NmY19tYWluJEMiLCJjb21wdXRlZElubmVyU3R5bGUiLCJjb21wdXRlZEJvZHlTdHlsZSIsIl9zZmNfcmVuZGVyIiwiX25vcm1hbGl6ZVN0eWxlIiwiX3JlbmRlclNsb3QiLCJfc2ZjX21haW4kQiIsIl9jb21wb25lbnRfZnNfY29udGFpbmVyIiwiX3Jlc29sdmVDb21wb25lbnQiLCJfY3JlYXRlQmxvY2siLCJfd2l0aEN0eCIsIl9ob2lzdGVkXzUiLCJfc2ZjX21haW4kQSIsImdldENydWRCaW5kaW5nIiwic2VhcmNoU2hvdyIsImNhcmRDb21wb25lbnROYW1lIiwiX3Jlc29sdmVEeW5hbWljQ29tcG9uZW50IiwiX2lzU2xvdCIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiX2lzVk5vZGUiLCJpbmhlcml0QXR0cnMiLCJTdHJpbmciLCJkZWZhdWx0IiwicmVxdWlyZWQiLCJGdW5jdGlvbiIsImljb25SaWdodCIsImNpcmNsZSIsIkJvb2xlYW4iLCJ0b29sdGlwIiwidW5kZWZpbmVkIiwiYmFkZ2UiLCJidXR0b25Qcm9wcyIsImNsYXNzTmFtZSIsImxvYWRpbmciLCJlbWl0cyIsInNldHVwIiwibG9hZGluZ1JlZiIsImNvbXB1dGVkTG9hZGluZyIsImljb25SZW5kZXIiLCJpY29uQ2xhc3MiLCJfbWVyZ2VQcm9wcyIsInJlbmRlckJ0biIsImlzSWNvblNsb3QiLCJpc0ljb25Qcm9wIiwiaWNvblByb3AiLCJzbG90cyIsImlzQ2lyY2xlIiwiYnV0dG9uQ29tcCIsInJlc29sdmVEeW5hbWljQ29tcG9uZW50Iiwib25DbGljayIsIiRldmVudCIsImVtaXQiLCJidG5Qcm9wcyIsImNsYXNzIiwib21pdCIsImF0dHJzIiwiaCIsIm9yaWdpblJlbmRlckJ0biIsImJhZGdlQ29tcCIsIl9zbG90IiwidG9vbHRpcENvbXAiLCJjb21wdXRlVG9vbHRpcFByb3BzIiwidHJpZ2dlclNsb3ROYW1lIiwicmVxdWlyZSIsImJhc2VVcmwiLCJjb21wdXRlZFJlbmRlckZ1bmMiLCJpbmRleE9mIiwic3RhcnRzV2l0aCIsInJlcGxhY2UiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiSWNvbkNvbXAiLCJzcGxpdCIsImNvbG9yIiwibGVuZ3RoIiwiaXNDb21wb25lbnQiLCJfc2ZjX21haW4keiIsIkljb24iLCJfbm9ybWFsaXplQ2xhc3MiLCJfc2ZjX21haW4keSIsInN5bWJvbElkIiwiZ2V0U3R5bGUiLCJzcGluIiwiX3NmY19tYWluJHgiLCJjb21wYWN0IiwibGFiZWxBdHRycyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX19kZWZhdWx0X18iLCJfX01BQ1JPU19kZWZpbmVDb21wb25lbnQiLCJfX3Byb3BzIiwiX2NvbXBvbmVudF9mc19pY29uIiwiX3VucmVmIiwiX3NmY19tYWluJHYiLCJtZXJnZUV2ZW50SGFuZGxlcyIsImV2ZW50TmFtZSIsImV2ZW50cyIsImV2ZW50IiwiaHRtbFRhZ3MiLCJtb2RlbFZhbHVlIiwib24iLCJ1bmRlZmluZVRvTnVsbCIsInByb3ZpZGUiLCJ0YXJnZXRSZWYiLCJhbGxBdHRycyIsInRyaW0iLCJudW1iZXIiLCJvblVwZGF0ZU1vZGVsVmFsdWVOYW1lIiwidG1wIiwiTnVtYmVyIiwiaXNOYU4iLCJoYW5kbGVyIiwiY2hpbGRyZW5SZW5kZXIiLCJjcmVhdGVDaGlsZHJlbiIsImNvbXB1dGVkSW5wdXRDb21wIiwiaW5wdXQiLCJpc0FzeW5jQ29tcG9uZW50IiwiaW5wdXRDb21wIiwicmVzb2x2ZUNvbXBvbmVudCIsImNoaWxkcmVuUmVuZGVyZWQiLCJnZXRUYXJnZXRSZWYiLCJnZXRUYXJnZXRSZWZBc3luYyIsImdldFRhcmdldFJlZlN5bmMiLCJQcm9taXNlIiwiZ2V0VGFyZ2V0UmVmRGVsYXkiLCJjb3VudCIsInNldFRpbWVvdXQiLCJFcnJvciIsIm1lcmdlZCIsIm1lcmdlUHJvcHMiLCJmdW5jdGlvbmFsIiwicmVuZGVyRnVuYyIsIl9zZmNfbWFpbiR1IiwiY3JlYXRlSW5pdGlhbEZvcm0iLCJkZWZWYWx1ZSIsImluaXRpYWxGb3JtIiwic2V0Rm9ybURhdGEiLCJnZXRDb21wb25lbnRSZWYiLCJjb21wdXRlZENvbHVtbnMiLCJkb1ZhbHVlQnVpbGRlciIsImdldEZvcm1EYXRhIiwidmFsdWVDaGFuZ2UiLCJkb1ZhbHVlQ2hhbmdlIiwibWVyZ2VDb2wiLCJidWlsZEl0ZW1TY29wZSIsImZvcm1JdGVtUmVmcyIsImdldEZvcm1JdGVtUmVmIiwiZ3JvdXBBY3RpdmVLZXkiLCJncm91cEl0ZW0iLCJjb21wdXRlZEdyb3VwIiwiZ3JvdXAiLCJncm91cGVkS2V5cyIsIndyYXBwZXIiLCJjb21wdXRlZERlZmF1bHRDb2x1bW5zIiwiZ2V0Rm9ybVJlZiIsImVudHJpZXNSZXQiLCJlbnRyaWVzIiwiaW5pdGlhbFZhbHVlIiwidW5zZXQiLCJ2YWxpZFJlZiIsImVycm9yc1JlZiIsImZpbGxHcm91cEVycm9yIiwiZmllbGRFcnJvcnMiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlU2NvcGUiLCJ2YWxpZGF0ZUVycm9ycyIsInN1Ym1pdFNjb3BlIiwiZm9ybUl0ZW1TaG93IiwiZ3JvdXBJdGVtU2hvdyIsIm5ld1ZhbCIsImlzRGlydHkiLCJhZnRlciIsIm1lcmdlZFNsb3RzIiwiZGlzcGxheSIsIl9GcmFnbWVudCIsIl9yZW5kZXJMaXN0IiwiaGVscGVyIiwiZ3JvdXBLZXkiLCJfY3JlYXRlU2xvdHMiLCJfY29tcG9uZW50X2ZzX2Zvcm1faXRlbV9jb2wiLCJzbG90TmFtZSIsIl9jb21wb25lbnRfZnNfcmVuZGVyIiwiX3NmY19tYWluJHQiLCJGc1JlbmRlciIsImNvbXBvbmVudFJlbmRlclJlZiIsInNjb3BlRnVuYyIsInVwZGF0ZU1vZGVsVmFsdWUiLCJjb21wdXRlZEl0ZW0iLCJjb21wdXRlZEhlbHBlclBvc2l0aW9uIiwiY29tcHV0ZWRIZWxwZXJUb29sdGlwIiwiY29tcHV0ZWRLZXkiLCJjb21wdXRlZExhYmVsIiwiY29tcHV0ZWRMYWJlbElzUmVuZGVyIiwiX2NvbXBvbmVudF9mc19jb21wb25lbnRfcmVuZGVyIiwiX25vcm1hbGl6ZVByb3BzIiwiX2hvaXN0ZWRfNiIsImZvcm1TbG90IiwiX2hvaXN0ZWRfNyIsIl9jb21wb25lbnRfZnNfc2xvdF9yZW5kZXIiLCJfY29tcG9uZW50X2ZzX2Zvcm1faGVscGVyIiwidXNlQXR0cnMiLCJmb3JtSXRlbVJlZiIsIl9fZXhwb3NlIiwiX2NvbXBvbmVudF9mc19mb3JtX2l0ZW0iLCJfc2ZjX21haW4kciIsImlubmVyIiwiaW5uZXJXcmFwcGVyIiwiekluZGV4IiwiZm9ybVdyYXBwZXJPcGVuIiwiZm9ybVdyYXBwZXJJcyIsImZvcm1XcmFwcGVyQmluZCIsImZvcm1XcmFwcGVyT3B0cyIsImVtaXRPbkNsb3NlZCIsImVtaXRPbk9wZW5lZCIsImJlZm9yZUNsb3NlQ3VzdG9tIiwiZm9ybVdyYXBwZXJJZCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZvcm1XcmFwcGVySWRDbGFzcyIsImZvcm1XcmFwcGVyU2xvdHMiLCJidWlsZEV2ZW50IiwiY2xvc2UiLCJvbkNsb3NlZCIsIm9uT3BlbmVkIiwib3BlbiIsImZ1bGxzY3JlZW5FbmFibGVkIiwiZnVsbHNjcmVlbiIsImNvbXB1dGVkQnV0dG9ucyIsIm9uVmFsdWVDaGFuZ2UiLCJpbm5lckJpbmQiLCJ3cmFwcGVyQmluZFJlZiIsImZvcm1PcHRpb25zUmVmIiwidG9nZ2xlRnVsbHNjcmVlbiIsIm9uT3BlbiIsImlzIiwiY3VzdG9tQ2xhc3NLZXkiLCJmb3JtV3JhcHBlciIsImN1c3RvbUNsYXNzIiwiYmVmb3JlQ2xvc2UiLCJkb1NhdmVSZW1pbmQiLCJzYXZlUmVtaW5kIiwibmVlZFNhdmUiLCJtZXNzYWdlQm94IiwiY29uZmlybSIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInJvdXRlIiwidXNlUm91dGUiLCJkcmFmdFN0b3JlIiwiZ2V0RHJhZnRTdG9yZSIsInNhdmVEcmFmdCIsIiRyb3V0ZXIiLCJkb1NhdmVEcmFmdCIsInVwZGF0ZVRhYmxlVmFsdWUiLCJjbGVhckRyYWZ0IiwiY2xlYXJUYWJsZVZhbHVlIiwibG9hZERyYWZ0IiwiZHJhZnQiLCJnZXRUYWJsZVZhbHVlIiwibWVyZ2VGb3JtIiwic2F2ZWREcmFmdCIsImVsZW1lbnRCZWZvcmVDbG9zZUZpeCIsImRvbmUiLCJkcmFnZ2FibGUiLCJkcmFnZW5hYmxlZCIsImdldE1vZGFsIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0Q29tcHV0ZUNvbnRleHQiLCJjb21wdXRlZEN1c3RvbUJ1dHRvbnMiLCJkZWZCdG5zIiwiY2FuY2VsIiwib2siLCJidXR0b25zQXJyIiwiY2xpY2siLCJleHBvc2VkIiwiZW5kc1dpdGgiLCJidWlsZElubmVyQmluZCIsImdldElubmVyV3JhcHBlciIsImlubmVyQ29udGFpbmVyU2VsZWN0b3IiLCJjbGFzc0xpc3QiLCJhZGQiLCJjb25zb2xlIiwidXNlU2xvdHMiLCJfc2xvdHMiLCJzbG90c1JlbmRlciIsIl9zZWxmIiwidGl0bGVTbG90TmFtZSIsImZ1bGxTY3JlZW5JY29uIiwiaWNvbnMiLCJmdWxsU2NyZWVuIiwidW5GdWxsU2NyZWVuIiwic2hvdyIsIl93aXRoRGlyZWN0aXZlcyIsIl9yZXNvbHZlRGlyZWN0aXZlIiwiZm9vdGVyUHJvcHMiLCJoYXNDb250ZW50V3JhcCIsImNvbnRlbnRXcmFwIiwic3ViQ2hpbGRyZW4iLCJjb250ZW50V3JhcENvbXAiLCJjb250ZW50UHJvcHMiLCJ2aXNpYmxlIiwidkNsb3NlZCIsImJ1aWxkT25DbG9zZWRCaW5kIiwidkN1c3RvbUNsYXNzIiwidkZ1bGxTY3JlZW4iLCJ2U3R5bGUiLCJmb3JtV3JhcHBlckNvbXAiLCJmb3JtV3JhcHBlckxpc3QiLCJmb3JtV3JhcHBlckNvbnRleHQiLCJsYXlvdXRTbG90TmFtZXMiLCJub3JtYWxpemVDcnVkU2xvdHMiLCJub3JtYWxpemVkU2xvdHMiLCJub3JtYWxpemVkS2V5IiwibWVyZ2VDcnVkU2xvdHMiLCJjb25maWd1cmVkU2xvdHMiLCJ0ZW1wbGF0ZVNsb3RzIiwiZmlsdGVyQ3J1ZFNsb3RzIiwia2V5UHJlZml4IiwiZmlsdGVyZWRTbG90cyIsInVzZVByb3ZpZGVycyIsInNlYXJjaFJlZiIsImdldFNlYXJjaFJlZiIsImdldFNlYXJjaEZvcm1EYXRhIiwiZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEiLCJzZXRTZWFyY2hGb3JtRGF0YSIsInNlYXJjaFJldCIsImRlZmF1bHRUYWJzIiwiX2ciLCJfZiIsInVzZUZpeGVkSGVpZ2h0IiwiY29udGFpbmVyUmVmIiwibWF4SGVpZ2h0UmVmIiwiY29tcHV0ZUJvZHlIZWlnaHQiLCJ0YWJsZURvbSIsImhlYWREb20iLCJ0YWJsZUhlaWdodCIsImhlYWRIZWlnaHQiLCJ1dGlsTG9nIiwid2F0Y2hCb2R5SGVpZ2h0Q2hhbmdlIiwidGFibGVXcmFwcGVyRG9tIiwidG9vbGJhclJlZiIsInRhYmxlUHJvcFJlZiIsInRvUmVmIiwiY29tcHV0ZWRUYWJsZSIsImZpeGVkSGVpZ2h0IiwiY29tcHV0ZWRUb29sYmFyIiwiY29tcHV0ZWRDZWxsU2xvdHMiLCJjb21wdXRlZEZvcm1TbG90cyIsImNvbXB1dGVkU2VhcmNoU2xvdHMiLCJjb21wdXRlZFRvb2xiYXJTbG90cyIsImNvbXB1dGVkQ2xhc3MiLCJjbGF6eiIsImlubmVyV3JhcHBlclJlZiIsImlzRm9ybUlubmVyIiwiX3NmY19tYWluJHAiLCJ0YWJzIiwiX2NvbXBvbmVudF9mc19hY3Rpb25iYXIiLCJfZ3VhcmRSZWFjdGl2ZVByb3BzIiwiX2NvbXBvbmVudF9mc190YWJzX2ZpbHRlciIsInRhYnNCaW5kaW5nIiwiX2NvbXBvbmVudF9mc190YWJsZSIsIl9zZmNfbWFpbiRvIiwic2NvcGVSZWYiLCJkb0NsaWNrIiwicGlja2VkUHJvcHMiLCJjb21wdXRlUHJvcHMiLCJjb21wdXRlZEhhbmRsZUJ0bnMiLCJtZXJnZWRCdG5zIiwiYnRucyIsImNvbXB1dGVkRHJvcGRvd25BdExlYXN0IiwiaXNEcm9wZG93bkJ0biIsImhhc0Ryb3Bkb3duQnRuIiwiZG9Ecm9wZG93bkl0ZW1DbGljayIsImJ0biIsImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nIiwiYmluZGluZyIsIl9jb21wb25lbnRfZnNfYnV0dG9uIiwiX2V4dGVuZHMiLCJzb3VyY2UiLCJfaW5oZXJpdHNMb29zZSIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl9zZXRQcm90b3R5cGVPZiIsIl9nZXRQcm90b3R5cGVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY29uc3RydWN0IiwiUGFyZW50IiwiQ2xhc3MiLCJDb25zdHJ1Y3RvciIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiX3dyYXBOYXRpdmVTdXBlciIsIldyYXBwZXIiLCJmb3JtYXRSZWdFeHAiLCJ3YXJuaW5nIiwiZXJyb3JzIiwiY29udmVydEZpZWxkc0Vycm9yIiwiZmllbGRzIiwidGVtcGxhdGUiLCJfbGVuIiwiX2tleSIsImxlbiIsInN0ciIsIngiLCJpc05hdGl2ZVN0cmluZ1R5cGUiLCJpc0VtcHR5VmFsdWUiLCJhc3luY1BhcmFsbGVsQXJyYXkiLCJmdW5jIiwicmVzdWx0cyIsImFyckxlbmd0aCIsImFzeW5jU2VyaWFsQXJyYXkiLCJuZXh0IiwiZmxhdHRlbk9iakFyciIsIm9iakFyciIsIkFzeW5jVmFsaWRhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3RoaXMiLCJhc3luY01hcCIsIl9wZW5kaW5nIiwiZmxhdHRlbkFyciIsImZpcnN0RmllbGRzIiwib2JqQXJyS2V5cyIsIm9iakFyckxlbmd0aCIsInBlbmRpbmciLCJpc0Vycm9yT2JqIiwiY29tcGxlbWVudEVycm9yIiwib2UiLCJmaWVsZFZhbHVlIiwiZGVlcE1lcmdlIiwicmVxdWlyZWQkMSIsIndoaXRlc3BhY2UiLCJ1cmxSZWciLCJnZXRVcmxSZWdleCIsIndvcmQiLCJ2NCIsInY2c2VnIiwidjYiLCJ2NDZFeGFjdCIsInY0ZXhhY3QiLCJ2NmV4YWN0IiwiaXAiLCJwcm90b2NvbCIsImF1dGgiLCJpcHY0IiwiaXB2NiIsImhvc3QiLCJkb21haW4iLCJ0bGQiLCJwb3J0IiwicmVnZXgiLCJwYXR0ZXJuJDIiLCJ0eXBlJDEiLCJjdXN0b20iLCJydWxlVHlwZSIsInJhbmdlIiwibWluIiwic3BSZWdleHAiLCJudW0iLCJFTlVNJDEiLCJlbnVtZXJhYmxlJDEiLCJwYXR0ZXJuJDEiLCJfcGF0dGVybiIsInN0cmluZyIsIm1ldGhvZCIsIl9ib29sZWFuIiwicmVnZXhwIiwiaW50ZWdlciIsImZsb2F0Rm4iLCJhcnJheSIsIm9iamVjdCIsIkVOVU0iLCJlbnVtZXJhYmxlIiwicGF0dGVybiIsImRhdGVPYmplY3QiLCJhbnkiLCJ2YWxpZGF0b3JzIiwibmV3TWVzc2FnZXMiLCJjbG9uZWQiLCJtZXNzYWdlcyIsIlNjaGVtYSIsImRlc2NyaXB0b3IiLCJfcHJvdG8iLCJfbWVzc2FnZXMiLCJzb3VyY2VfIiwib2MiLCJfdGhpczIiLCJjb21wbGV0ZSIsIl9lcnJvcnMiLCJtZXNzYWdlcyQxIiwic2VyaWVzIiwieiIsImVycm9yRmllbGRzIiwiZG9JdCIsImRlZXAiLCJhZGRGdWxsRmllbGQiLCJzY2hlbWEiLCJlcnJvckxpc3QiLCJmaWxsZWRFcnJvcnMiLCJmaWVsZHNTY2hlbWEiLCJwYXJlZEZpZWxkc1NjaGVtYSIsImZpZWxkU2NoZW1hIiwiZmllbGRTY2hlbWFMaXN0IiwiZXJycyIsImZpbmFsRXJyb3JzIiwibWVzc2FnZUluZGV4IiwidmFsaWRhdG9yIiwiY3JlYXRlVmFsaWRhdG9yIiwiZWRpdGFibGVDZWxscyIsImN1ckRlc2MiLCJlYWNoVHJlZSIsInVzZVRhYmxlRGF0YSIsImdldERhdGEiLCJ0YWJsZURhdGEiLCJlZGl0YWJsZVJvd3MiLCJnZXRJZEZyb21Sb3ciLCJnZXRFZGl0YWJsZUlkRnJvbVJvdyIsImVkaXRhYmxlRWFjaFJvd3MiLCJjZWxscyIsImVkaXRhYmxlRWFjaENlbGxzIiwiY2VsbCIsImNyZWF0ZUVkaXRhYmxlQ2VsbCIsInRhYmxlUm93Iiwic2V0VmFsdWUiLCJ1cGRhdGVDZWxsIiwic2hvd0FjdGlvbiIsImVuYWJsZWQiLCJmb3JtSXRlbSIsInNldERlZmF1bHRWYWx1ZSIsInJvd0tleVZhbHVlIiwiY3JlYXRlRWRpdGFibGVSb3ciLCJkb1NhdmUiLCJuZXdSb3ciLCJzYXZlUm93IiwicDMiLCJjaGlsZCIsIm5leHRFZGl0YWJsZUlkIiwiZWRpdGFibGVJZEdlbiIsInNldHVwRWRpdGFibGUiLCJ0bXBSb3dzIiwiZm9yT3duIiwiYnVpbGRUaGluRGF0YSIsInRoaW5EYXRhIiwidGhpblJvdyIsIm9sZFRoaW5EYXRhIiwiZ2V0RWRpdGFibGVDZWxsIiwiYWN0aXZlIiwiaW5hY3RpdmUiLCJzYXZlRWFjaCIsImNhbmNlbEFsbCIsInBlcnNpc3QiLCJyZXN1bWUiLCJoYXNEaXJ0eSIsImRpcnR5IiwiYWRkSW5kZXgiLCJzZXREZWZhdWx0Rm9ybSIsImZvcm1Db2x1bW5Db25maWdzIiwiYWRkUm93IiwiZ2V0RWRpdGFibGVSb3ciLCJyZW1vdmVUYWJsZVJvd0J5RWRpdGFibGVJZCIsInJlbW92ZVJvdyIsImFjdGl2ZUNvbHMiLCJjb2xzIiwiZ2V0QWN0aXZlUm93cyIsInJvd3MiLCJoYXNFcnJvciIsInJlbW92ZURhdGFFZGl0YWJsZUlkIiwiZ2V0Q2xlYW5UYWJsZURhdGEiLCJ1c2VDb21wb25lbnRSZWZQcm92aWRlciIsImNvbXBvbmVudHNSZWYiLCJnZXR0ZXIiLCJzZXR0ZXIiLCJjb25kaXRpb25hbFJlbmRlciIsImNvbXB1dGVkQ29tcG9uZW50IiwiY29tcHV0ZWRQcm9wc0NvbXBvbmVudCIsImNvbXB1dGVkVGl0bGUiLCJzaG93VGl0bGUiLCJjb21wdXRlZENlbGxDb250ZW50UmVuZGVyIiwic2xvdCIsImxhc3RSZW5kZXIiLCJjZWxsQ29udGVudFJlbmRlciIsIm1hdGNoIiwiZm9ybWF0dGVyIiwiY2VsbFJlbmRlciIsIkZzQ29tcG9uZW50UmVuZGVyIiwidG9vbHRpcFByb3BzIiwidG9vbHRpcFNsb3RzIiwiY29udGVudCIsImNvbHVtbktleSIsImVkaXRhYmxlQ2VsbCIsInJlYWRvbmx5IiwiY29tcHV0ZWRGb3JtIiwiZ2V0Rm9ybVJlZkZ1bmMiLCJnZXRGb3JtIiwiY29tcHV0ZWRJc0VkaXRhYmxlIiwiZWRpdGluZ1VwZGF0ZSIsIm9uU3VibWl0Iiwic2F2ZSIsIm9uQ2FuY2VsIiwiaXNDaGFuZ2VkIiwiZWRpdCIsImlucHV0Q29tcG9uZW50IiwiaXNFZGl0aW5nIiwiYWN0aXZlVHJpZ2dlciIsInN1Ym1pdE9uRW50ZXIiLCJtZXRob2RzIiwiJHJlZnMiLCJ0YXJnZXRJbnB1dFJlZiIsImJ1aWxkVGFibGVTbG90cyIsInNvcnRlZENvbHVtbnMiLCJyZW5kZXJSb3dIYW5kbGUiLCJyZW5kZXJDZWxsQ29tcG9uZW50IiwicmVuZGVyQ29udGV4dCIsImNvbXBvbmVudERlZmluZXMiLCJ0YWJsZUNvbXAiLCJ0YWJsZUNvbHVtbkNvbXAiLCJ0YWJsZUNvbHVtbkdyb3VwQ29tcCIsInRhYmxlU2xvdHMiLCJidWlsZENvbHVtbiIsImNlbGxTbG90cyIsImNvbHVtblNsb3RzIiwiY2VsbFNsb3ROYW1lIiwiY3VycmVudFRhYmxlQ29sdW1uQ29tcCIsInN1YkNvbHVtbnMiLCJzdWJDb2x1bW4iLCJ3aXRoQ3R4IiwibmV3SXRlbSIsInJvd0hhbmRsZVNsb3RzIiwidGFibGVWZXJzaW9uIiwidGFibGVWMiIsIl9wYXJlbnQiLCJkYXRhSW5kZXgiLCJjaGlsZE9wdGlvbnMiLCJjdXN0b21SZW5kZXIiLCJyZW5kZXJNZXRob2QiLCJuZXdDb2wiLCJyZWJ1aWxkUmVuZGVyU2NvcGUiLCJjb21wb25lbnRSZWZzIiwiY2VsbFJlZiIsImN1cnJlbnRSZWYiLCJ0YWJsZUNvbHVtbkNJIiwidGFibGVDb2x1bW5WMiIsInNjcm9sbFRvIiwidG9wIiwiZWRpdGFibGVXcmFwIiwib25Sb3dIYW5kbGUiLCJvbkNoYW5nZSIsIm9uU29ydENoYW5nZSIsInNvcnRlciIsIm9uRmlsdGVyQ2hhbmdlIiwiZmlsdGVycyIsIm9uUGFnaW5hdGlvbiIsImJ1YmJsZVVwIiwicm93SGFuZGxlU2xvdHNOYW1lIiwiRnNSb3dIYW5kbGUiLCJuZXdTY29wZSIsInNldFJlZiIsInJvd1JlZnMiLCJGc0VkaXRhYmxlQ2VsbCIsIkZzQ2VsbCIsInJlbmRlck1vZGUiLCJkYXRhU291cmNlIiwiY29tcHV0ZWRCaW5kaW5nIiwidGFibGVDb2x1bW5Hcm91cCIsImNvbXB1dGVkVGFibGVTbG90cyIsInRhYmxlUmVuZGVyIiwidkxvYWRpbmciLCJyZXNvbHZlRGlyZWN0aXZlIiwid2l0aERpcmVjdGl2ZXMiLCJjb21wdXRlZEZsYXRDb2x1bW5zIiwiZmxhdENvbHVtbnMiLCJmbGF0Q29sdW1uc0ZuIiwiY29tcHV0ZWRNdWx0aUhlYWRlcnMiLCJidWlsZE11bHRpSGVhZGVyc0JpbmQiLCJ0cmVlQ29sdW1ucyIsImJpbmQiLCJpc0ZsYXQiLCJjb2x1bW5zSXNGbGF0IiwiY3JlYXRlVGFibGVJbnN0YW5jZSIsIl9fZW1pdCIsInNob3dTdWJtaXRBY3Rpb24iLCJzaG93Q2FuY2VsQWN0aW9uIiwiZG9TdWJtaXQiLCJkb0NhbmNlbCIsIm9uS2V5ZG93biIsImdldFZhbGlkYXRlRXJyb3JNZXNzYWdlIiwiX3NmY19tYWluJG0iLCJzb3J0QXJyIiwic29ydGVkQnV0dG9ucyIsIlNldEZvcm1EYXRhT3B0aW9ucyIsIkNvbHVtbnNGaWx0ZXJQcm92aWRlS2V5IiwidHJhbnNmb3JtQ29sdW1uc1RyZWUiLCJjdXJyZW50Q29sdW1ucyIsIm9yaWdpbmFsQ29sdW1uc01hcCIsIl90ZXh0IiwiX19rZXlzIiwiYnVpbGRDb2x1bW5GaWx0ZXJJdGVtIiwidHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMiLCJzZXRDdXJyZW50VmFsdWUiLCJkb19zYXZlIiwiY2xlYXJUaGlzU3RvcmFnZSIsIm5vU2F2ZSIsInNhdmVPcHRpb25zVG9TdG9yYWdlIiwiZG9FbWl0IiwiY29tcHV0ZWRPcmlnaW5hbENvbHVtbnMiLCJzaW1wbGVTdWJtaXQiLCJzaW1wbGVSZXNldCIsInN0b3JhZ2VUYWJsZVN0b3JlIiwiZ2V0U3RvcmFnZVRhYmxlIiwicmVtb3RlU3RvcmFnZSIsInN0b3JlZE9wdGlvbnMiLCJnZXRPcHRpb25zRnJvbVN0b3JhZ2UiLCJnZXRDb2x1bW5zSGFzaCIsImhhc2giLCJpbml0Iiwic3RvcmVIYXNoIiwidXBkYXRlIiwiY2hhbmdlIiwiYnVpbGRUZXh0IiwiZWxlbWVudCIsIl92U2hvdyIsIl9zZmNfbWFpbiRrIiwiRnNUYWJsZUNvbHVtbnNGaWx0ZXIiLCJjb2x1bW5zRmlsdGVyUmVmIiwiZGVmYXVsdEJ1dHRvbnMiLCJkZWZhdWx0QnV0dG9uc0tleSIsInBvcG92ZXJWaXNpYmxlIiwic3RvcmFnZSIsIm93bktleXMiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJzeW0iLCJfb2JqZWN0U3ByZWFkMiIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90eXBlb2YiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZVN5bWJvbEtleXMiLCJ2ZXJzaW9uIiwidXNlckFnZW50IiwiSUUxMU9yTGVzcyIsIkVkZ2UiLCJGaXJlRm94IiwiU2FmYXJpIiwiSU9TIiwiQ2hyb21lRm9yQW5kcm9pZCIsImNhcHR1cmVNb2RlIiwib2ZmIiwibWF0Y2hlcyIsInNlbGVjdG9yIiwiZ2V0UGFyZW50T3JIb3N0IiwiY2xvc2VzdCIsImluY2x1ZGVDVFgiLCJSX1NQQUNFIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZSIsImNzcyIsIm1hdHJpeCIsInNlbGZPbmx5IiwiYXBwbGllZFRyYW5zZm9ybXMiLCJtYXRyaXhGbiIsImZpbmQiLCJ0YWdOYW1lIiwiaXRlcmF0b3IiLCJnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50Iiwic2Nyb2xsaW5nRWxlbWVudCIsImdldFJlY3QiLCJyZWxhdGl2ZVRvQ29udGFpbmluZ0Jsb2NrIiwicmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCIsInVuZG9TY2FsZSIsImVsUmVjdCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImNvbnRhaW5lclJlY3QiLCJlbE1hdHJpeCIsInNjYWxlWCIsInNjYWxlWSIsImlzU2Nyb2xsZWRQYXN0IiwiZWxTaWRlIiwicGFyZW50U2lkZSIsImdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50IiwiZWxTaWRlVmFsIiwicGFyZW50U2lkZVZhbCIsImdldENoaWxkIiwiY2hpbGROdW0iLCJpbmNsdWRlRHJhZ0VsIiwiY3VycmVudENoaWxkIiwiU29ydGFibGUiLCJsYXN0Q2hpbGQiLCJsYXN0IiwiZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwid2luU2Nyb2xsZXIiLCJpbmRleE9mT2JqZWN0IiwiaW5jbHVkZVNlbGYiLCJlbGVtIiwiZ290U2VsZiIsImVsZW1DU1MiLCJleHRlbmQiLCJkc3QiLCJzcmMiLCJpc1JlY3RFcXVhbCIsInJlY3QxIiwicmVjdDIiLCJfdGhyb3R0bGVUaW1lb3V0IiwidGhyb3R0bGUiLCJtcyIsImNhbmNlbFRocm90dGxlIiwic2Nyb2xsQnkiLCJ5IiwiUG9seW1lciIsIiQiLCJleHBhbmRvIiwiQW5pbWF0aW9uU3RhdGVNYW5hZ2VyIiwiYW5pbWF0aW9uU3RhdGVzIiwiYW5pbWF0aW9uQ2FsbGJhY2tJZCIsImZyb21SZWN0IiwiY2hpbGRNYXRyaXgiLCJhbmltYXRpbmciLCJhbmltYXRpb25UaW1lIiwidGltZSIsInRvUmVjdCIsInByZXZGcm9tUmVjdCIsInByZXZUb1JlY3QiLCJhbmltYXRpbmdSZWN0IiwidGFyZ2V0TWF0cml4IiwiY2FsY3VsYXRlUmVhbFRpbWUiLCJjdXJyZW50UmVjdCIsImR1cmF0aW9uIiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJyZXBhaW50IiwiZGVmYXVsdHMiLCJQbHVnaW5NYW5hZ2VyIiwiZXZ0IiwiZXZlbnROYW1lR2xvYmFsIiwicGx1Z2luTmFtZSIsImluaXRpYWxpemVkIiwibW9kaWZpZWQiLCJldmVudFByb3BlcnRpZXMiLCJtb2RpZmllZFZhbHVlIiwiZGlzcGF0Y2hFdmVudCIsIl9yZWYiLCJyb290RWwiLCJ0YXJnZXRFbCIsImNsb25lRWwiLCJ0b0VsIiwiZnJvbUVsIiwib2xkSW5kZXgiLCJuZXdJbmRleCIsIm9sZERyYWdnYWJsZUluZGV4IiwibmV3RHJhZ2dhYmxlSW5kZXgiLCJvcmlnaW5hbEV2ZW50IiwicHV0U29ydGFibGUiLCJleHRyYUV2ZW50UHJvcGVydGllcyIsIm9uTmFtZSIsImFsbEV2ZW50UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInBsdWdpbkV2ZW50IiwiZHJhZ0VsIiwicGFyZW50RWwiLCJnaG9zdEVsIiwibmV4dEVsIiwibGFzdERvd25FbCIsImNsb25lSGlkZGVuIiwibW92ZWQiLCJfaGlkZUdob3N0Rm9yVGFyZ2V0IiwiX3VuaGlkZUdob3N0Rm9yVGFyZ2V0IiwiX2Rpc3BhdGNoRXZlbnQiLCJhY3RpdmVHcm91cCIsImF3YWl0aW5nRHJhZ1N0YXJ0ZWQiLCJpZ25vcmVOZXh0Q2xpY2siLCJzb3J0YWJsZXMiLCJ0YXBFdnQiLCJ0b3VjaEV2dCIsImxhc3REeCIsImxhc3REeSIsInRhcERpc3RhbmNlTGVmdCIsInRhcERpc3RhbmNlVG9wIiwibGFzdFRhcmdldCIsImxhc3REaXJlY3Rpb24iLCJwYXN0Rmlyc3RJbnZlcnRUaHJlc2giLCJpc0NpcmN1bXN0YW50aWFsSW52ZXJ0IiwidGFyZ2V0TW92ZURpc3RhbmNlIiwiZ2hvc3RSZWxhdGl2ZVBhcmVudCIsImdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsIiwiX3NpbGVudCIsInNhdmVkSW5wdXRDaGVja2VkIiwiZG9jdW1lbnRFeGlzdHMiLCJQb3NpdGlvbkdob3N0QWJzb2x1dGVseSIsIkNTU0Zsb2F0UHJvcGVydHkiLCJzdXBwb3J0RHJhZ2dhYmxlIiwic3VwcG9ydENzc1BvaW50ZXJFdmVudHMiLCJfZGV0ZWN0RGlyZWN0aW9uIiwiZWxDU1MiLCJlbFdpZHRoIiwiY2hpbGQxIiwiY2hpbGQyIiwiZmlyc3RDaGlsZENTUyIsInNlY29uZENoaWxkQ1NTIiwiZmlyc3RDaGlsZFdpZHRoIiwic2Vjb25kQ2hpbGRXaWR0aCIsInRvdWNoaW5nU2lkZUNoaWxkMiIsIl9kcmFnRWxJblJvd0NvbHVtbiIsImRyYWdSZWN0IiwidGFyZ2V0UmVjdCIsInZlcnRpY2FsIiwiZHJhZ0VsUzFPcHAiLCJkcmFnRWxTMk9wcCIsImRyYWdFbE9wcExlbmd0aCIsInRhcmdldFMxT3BwIiwidGFyZ2V0UzJPcHAiLCJ0YXJnZXRPcHBMZW5ndGgiLCJfZGV0ZWN0TmVhcmVzdEVtcHR5U29ydGFibGUiLCJ0aHJlc2hvbGQiLCJyZWN0IiwiaW5zaWRlSG9yaXpvbnRhbGx5IiwiaW5zaWRlVmVydGljYWxseSIsIl9wcmVwYXJlR3JvdXAiLCJ0b0ZuIiwicHVsbCIsInRvIiwiZnJvbSIsInNhbWVHcm91cCIsIm90aGVyR3JvdXAiLCJvcmlnaW5hbEdyb3VwIiwibmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQiLCJuZWFyZXN0IiwiX2NoZWNrT3V0c2lkZVRhcmdldEVsIiwiZGF0YVRyYW5zZmVyIiwicHJldmVudE9uRmlsdGVyIiwidG91Y2giLCJvcmlnaW5hbFRhcmdldCIsImZpbHRlciIsIl9zYXZlSW5wdXRDaGVja2VkU3RhdGUiLCJjcml0ZXJpYSIsIm93bmVyRG9jdW1lbnQiLCJkcmFnU3RhcnRGbiIsIl9kaXNhYmxlRHJhZ2dhYmxlIiwiX25leHRUaWNrIiwiZmFsbGJhY2siLCJpbnNlcnRlZCIsImZhbGxiYWNrVG9sZXJhbmNlIiwiZmFsbGJhY2tPZmZzZXQiLCJnaG9zdE1hdHJpeCIsInJlbGF0aXZlU2Nyb2xsT2Zmc2V0IiwiZHgiLCJkeSIsImNzc01hdHJpeCIsInJldmVydCIsImFjdGl2ZVNvcnRhYmxlIiwiaXNPd25lciIsImNhblNvcnQiLCJmcm9tU29ydGFibGUiLCJjb21wbGV0ZWRGaXJlZCIsImRyYWdPdmVyRXZlbnQiLCJleHRyYSIsImNvbXBsZXRlZCIsIl9vbk1vdmUiLCJjYXB0dXJlIiwiaW5zZXJ0aW9uIiwiZWxMYXN0Q2hpbGQiLCJfZ2hvc3RJc0xhc3QiLCJfZ2hvc3RJc0ZpcnN0IiwiZmlyc3RDaGlsZCIsImRpcmVjdGlvbiIsInRhcmdldEJlZm9yZUZpcnN0U3dhcCIsImRpZmZlcmVudExldmVsIiwiZGlmZmVyZW50Um93Q29sIiwic2lkZTEiLCJzY3JvbGxlZFBhc3RUb3AiLCJzY3JvbGxCZWZvcmUiLCJfZ2V0U3dhcERpcmVjdGlvbiIsInNpYmxpbmciLCJkcmFnSW5kZXgiLCJuZXh0U2libGluZyIsIm1vdmVWZWN0b3IiLCJfdW5zaWxlbnQiLCJfY2FuY2VsTmV4dFRpY2siLCJfZ2xvYmFsRHJhZ092ZXIiLCJfZ2VuZXJhdGVJZCIsInVzZUFuaW1hdGlvbiIsIml0ZW1zIiwid2lsbEluc2VydEFmdGVyIiwib25Nb3ZlRm4iLCJyZXRWYWwiLCJzcGFjZXIiLCJzd2FwVGhyZXNob2xkIiwiaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIiwiaW52ZXJ0U3dhcCIsImlzTGFzdFRhcmdldCIsIm1vdXNlT25BeGlzIiwidGFyZ2V0TGVuZ3RoIiwidGFyZ2V0UzEiLCJ0YXJnZXRTMiIsImludmVydCIsIl9nZXRJbnNlcnREaXJlY3Rpb24iLCJzdW0iLCJyb290IiwiaW5wdXRzIiwiaWR4IiwiYXV0b1Njcm9sbHMiLCJzY3JvbGxFbCIsInNjcm9sbFJvb3RFbCIsInNjcm9sbGluZyIsImxhc3RBdXRvU2Nyb2xsWCIsImxhc3RBdXRvU2Nyb2xsWSIsInRvdWNoRXZ0JDEiLCJwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCIsIkF1dG9TY3JvbGxQbHVnaW4iLCJBdXRvU2Nyb2xsIiwiX3JlZjIiLCJjbGVhclBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsIiwiY2xlYXJBdXRvU2Nyb2xscyIsImF1dG9TY3JvbGwiLCJvZ0VsZW1TY3JvbGxlciIsIm5ld0VsZW0iLCJpc0ZhbGxiYWNrIiwic2VucyIsInNwZWVkIiwic2Nyb2xsVGhpc0luc3RhbmNlIiwic2Nyb2xsQ3VzdG9tRm4iLCJsYXllcnNPdXQiLCJjdXJyZW50UGFyZW50IiwiY2FuU2Nyb2xsWCIsImNhblNjcm9sbFkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsInNjcm9sbFBvc1giLCJzY3JvbGxQb3NZIiwidngiLCJ2eSIsInNjcm9sbE9mZnNldFkiLCJzY3JvbGxPZmZzZXRYIiwiZHJvcCIsImRpc3BhdGNoU29ydGFibGVFdmVudCIsImhpZGVHaG9zdEZvclRhcmdldCIsInVuaGlkZUdob3N0Rm9yVGFyZ2V0IiwidG9Tb3J0YWJsZSIsIlJldmVydCIsIl9yZWYzIiwiUmVtb3ZlIiwiX3JlZjQiLCJwYXJlbnRTb3J0YWJsZSIsIl9fZGVmUHJvcCIsIl9fZGVmUHJvcHMiLCJfX2dldE93blByb3BEZXNjcyIsIl9fZ2V0T3duUHJvcFN5bWJvbHMiLCJfX2hhc093blByb3AiLCJfX3Byb3BJc0VudW0iLCJfX2RlZk5vcm1hbFByb3AiLCJfX3NwcmVhZFZhbHVlcyIsIl9fc3ByZWFkUHJvcHMiLCJyZW1vdmVOb2RlIiwiaW5zZXJ0Tm9kZUF0IiwiZmF0aGVyTm9kZSIsInBvc2l0aW9uIiwicmVmTm9kZSIsImdldENvbnNvbGUiLCJjb25zb2xlJDEiLCJjYWNoZSIsImNhbWVsaXplIiwibWFuYWdlQW5kRW1pdCQxIiwiZW1pdCQxIiwibWFuYWdlJDEiLCJldmVudEhhbmRsZXJOYW1lcyIsImV2ZW50czIiLCJpc1JlYWRPbmx5IiwidGFncyIsImlzSHRtbFRhZyIsImlzVHJhbnNpdGlvbiIsImlzSHRtbEF0dHJpYnV0ZSIsInByb2plY3QiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGVzIiwiJGF0dHJzIiwiY29tcG9uZW50RGF0YSIsImF0dHJpYnV0ZXMiLCJjcmVhdGVTb3J0YWJsZU9wdGlvbiIsImNhbGxCYWNrQnVpbGRlciIsImdldFZhbGlkU29ydGFibGVFbnRyaWVzIiwiZXZlbnRUeXBlIiwiZXZlbnRCdWlsZGVyIiwidmFsdWUyIiwiZ2V0SHRtbEVsZW1lbnRGcm9tTm9kZSIsImFkZENvbnRleHQiLCJkb21FbGVtZW50IiwiZ2V0Q29udGV4dCIsIkNvbXBvbmVudFN0cnVjdHVyZSIsImhlYWRlciIsImRlZmF1bHROb2RlcyIsImZvb3RlciIsInJlYWxMaXN0IiwiaDIiLCJ0YWciLCJfaXNSb290Q29tcG9uZW50IiwiZG9tSW5kZXgiLCJkb21DaGlsZHJlbiIsImZpcnN0RG9tTGlzdEVsZW1lbnQiLCJpbmRleEZpcnN0RG9tTGlzdEVsZW1lbnQiLCJlbGVtZW50MiIsImdldFNsb3QiLCJzbG90VmFsdWUiLCJjb21wdXRlTm9kZXMiLCJnZXRLZXkiLCJub3JtYWxpemVkTGlzdCIsImdldFJvb3RJbmZvcm1hdGlvbiIsInRyYW5zaXRpb24iLCJleHRlcm5hbENvbXBvbmVudCIsIlRyYW5zaXRpb25Hcm91cCIsImNvbXB1dGVDb21wb25lbnRTdHJ1Y3R1cmUiLCJldnROYW1lIiwiZXZ0RGF0YSIsIm1hbmFnZSIsIm9yaWdpbmFsRWxlbWVudCIsIm1hbmFnZUFuZEVtaXQiLCJkZWxlZ2F0ZUNhbGxCYWNrIiwiZHJhZ2dpbmdFbGVtZW50IiwiZHJhZ2dhYmxlQ29tcG9uZW50IiwiY29tcG9uZW50U3RydWN0dXJlIiwiJGVsIiwic29ydGFibGVPcHRpb25zIiwidGFyZ2V0RG9tRWxlbWVudCIsIml0ZW1LZXkiLCJuZXdPcHRpb25WYWx1ZSIsIl9zb3J0YWJsZSIsImh0bUVsZW1lbnQiLCJvbkxpc3QiLCJuZXdMaXN0Iiwic3BsaWNlTGlzdCIsInVwZGF0ZVBvc2l0aW9uIiwicmVsYXRlZCIsImRlc3RpbmF0aW9uIiwiYWRkZWQiLCJyZW1vdmVkIiwicmVsYXRlZENvbnRleHQiLCJjdXJyZW50RG9tSW5kZXgiLCJjdXJyZW50SW5kZXgiLCJtb3ZlIiwiZnV0dXJlSW5kZXgiLCJkcmFnZ2VkQ29udGV4dCIsInNlbmRFdmVudCIsIl9zZmNfbWFpbiRqIiwib25EcmFnZ2FibGVNb3ZlIiwiZHJhZ2VkIiwic29ydGVkIiwibGVmdEluZGV4IiwicmlnaHRJbmRleCIsIm1pbk5vdEluZGV4IiwibWF4Tm90SW5kZXgiLCJidWlsZFVwZGF0ZUtleSIsInVwZGF0ZUNoZWNrZWQiLCJ1cGRhdGVDaGlsZHJlbiIsInVwZGF0ZVBhcmVudCIsIm9uQ2hlY2tDaGFuZ2VkIiwiZml4ZWRDaGFuZ2UiLCJGc1RhYmxlQ29sdW1uc0ZpeGVkQ29udHJvbGxlciIsIl9jb21wb25lbnRfZnNfY29sdW1uc19maWx0ZXJfbmVzdF9saXN0IiwiZHJhd2VyQmluZCIsImNoZWNrQWxsIiwib25DaGVja0FsbENoYW5nZSIsImNoZWNrQWxsQmluZCIsInNob3dMZW5ndGgiLCJhbGxMZW5ndGgiLCJpc0luZGV0ZXJtaW5hdGUiLCJhbGxDaGVja2VkVXBkYXRlIiwiRnNDb2x1bW5zRmlsdGVyTmVzdExpc3QiLCJfc2ZjX21haW4kZyIsIkZzU2VhcmNoQnV0dG9ucyIsInZhbGlkYXRlZEZvcm0iLCJzZWFyY2hBZnRlclJlc2V0IiwiYXV0b1NlYXJjaCIsImRlYm91bmNlIiwidmFsaWRhdGVPbkNoYW5nZSIsIl9jZWxsUmVuZGVyIiwib25Gb3JtVmFsaWRhdGVkIiwiTG9kYXNoR2V0Iiwic3BsaXRLZXkiLCJfb25VcGRhdGVNb2RlbFZhbHVlIiwib25WYWx1ZUNoYW5nZWQiLCJfb25JbnB1dCIsIm9uSW5wdXQiLCJvbktleXVwIiwiYXV0b1NlYXJjaFRyaWdnZXIiLCJkb1NlYXJjaCIsImRlZmF1bHRTbG90IiwiYnVpbGRGaWVsZENvbnRleHQiLCJjb21wb25lbnRSZW5kZXJSZWZzIiwib25Db21wb3NpdGlvbnN0YXJ0IiwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkIiwib25Db21wb3NpdGlvbmVuZCIsInNwbGl0ZWRLZXkiLCJydWxlUGF0aCIsInNlYXJjaEZvcm1SZWYiLCJnZXRDb21wb25lbnRSZW5kZXJSZWYiLCJkb1Jlc2V0IiwiZG9WYWxpZGF0ZSIsInNpbGVudCIsInZhbGlkYXRlV3JhcCIsImRlZkJ0bk9wdGlvbnMiLCJfY2xpY2siLCJpbml0QXV0b1NlYXJjaCIsIndhaXQiLCJnZXRWYWxpZGF0ZWRGb3JtIiwic2V0Rm9ybSIsIm5ld0Zvcm0iLCJpbnB1dEV2ZW50RGlzYWJsZWQiLCJkb0F1dG9TZWFyY2giLCJ2YWxpZGF0ZU9uQ2hhbmdlU2lsZW50IiwiY29tcG9uZW50UmVmIiwidmFsdWVDaGFuZ2VDb250ZXh0IiwiaW1tZWRpYXRlIiwiY29tcHV0ZWRSdWxlcyIsIl9zZmNfbWFpbiRlIiwiY29tcHV0ZWRJc011bHRpTGluZSIsImNvbHVtbnNSb3dSZWYiLCJjb2x1bW5zQm94SGVpZ2h0UmVmIiwiY29sdW1uc0xpc3QiLCJjb2x1bW5zTGluZUhlaWdodFJlZiIsInNlYXJjaEV2ZW50Q29udGV4dFJlZiIsInRvZ2dsZUNvbGxhcHNlIiwiY29tcHV0ZWRDb2xOYW1lIiwiY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQiLCJfY29tcG9uZW50X2ZzX3NlYXJjaF9idXR0b25zIiwiY29sbGFwc2UiLCJfc2ZjX21haW4kZCIsImNvbGxhcHNlQnV0dG9uIiwiZGVmYXVsdE9wdGlvbiIsIl9fREVGQVVMVF9fIiwib25VcGRhdGVBY3RpdmVLZXkiLCJkZWZhdWx0TGltaXQiLCJkaWFsb2dPcGVuZWQiLCJjb21wdXRlZERpYWxvZyIsImZvcm1JdGVtQ29udGV4dCIsImlucHV0QmluZGluZyIsImVtaXRDaGFuZ2UiLCJoYW5kbGVPcGVuIiwicGFnZXIiLCJvblRhYkNoYW5nZSIsImN1cnJlbnRJY29uIiwiY3VycmVudENvbG9yIiwiYXBpIiwibGltaXQiLCJpY29uU3RvcmUiLCJsb2FkSWNvblNldCIsInNldHMiLCJ1bmNhdGVnb3JpZXMiLCJjYXRlZ29yaWVzIiwic2VhcmNoS2V5IiwidGFiS2V5IiwicmVzZXRQYWdlciIsImhhbmRsZVNlYXJjaCIsImdldFBhZ2VyRnJvbUljb25TZXQiLCJlbmQiLCJoYW5kbGVJY29uU2VsZWN0Iiwib25Db25maXJtIiwiaGFuZGxlQ29sb3JDaGFuZ2UiLCJsb2FkTW9yZSIsImNvbXB1dGVUYWJzIiwiY29sb3JJdGVtIiwiX2hvaXN0ZWRfOCIsIl9ob2lzdGVkXzkiLCJfaG9pc3RlZF8xMSIsIl9jb21wb25lbnRfZnNfbG9hZGluZyIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfc2ZjX21haW4kYSIsImNvbXB1dGVkUmFkaW9OYW1lIiwidXNlZERpY3QiLCJjb21wdXRlZE9wdGlvbnMiLCJvcHQiLCJvcHRpb25Qcm9wcyIsInNlbGVjdFJlZiIsImNvbXB1dGVkUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsImZpZWxkTmFtZXNCaW5kZXIiLCJmaWVsZE5hbWVzIiwib25TZWxlY3RlZENoYW5nZSIsImRhdGFNYXAiLCJ0ZW1wU2xvdHMiLCJfdXNlU2xvdHMiLCJzZWxlY3RDb21wIiwiJGVtaXQiLCJ0aGlzU2xvdHMiLCJyZW5kZXJMYWJlbCIsIm9wdGlvbkNvbXAiLCJjb3MiLCJnZXRIYXNoQ29kZSIsImNociIsImJ1aWxkQXJyYXlWYWx1ZSIsInZhbHVlQXJyIiwiX3NmY19tYWluJDgiLCJDT0xPUl9MSVNUIiwiRUZGRUNUX0xJU1QiLCJnZXRDb2xvciIsInNldENvbG9yIiwidHlwZUtleSIsImhhc2hjb2RlIiwiY29sb3JzIiwiZWZmZWN0cyIsImNvbXB1dGVkVmFsdWVJdGVtcyIsInZhbHVlUHJvcCIsImxhYmVsUHJvcCIsImNvbG9yZnVsT3B0aW9ucyIsInZpc2libGVWYWx1ZUl0ZW1zIiwiaGlkZGVuVmFsdWVDb3VudCIsIm5ld1ZhbHVlcyIsIl9zZmNfbWFpbiQ3IiwiY29tcHV0ZWRNdWx0aXBsZSIsInN1YiIsIkxhYmVscyIsIkluZGV4IiwiX3NmY19tYWluJDYiLCJjYXNjYWRlclJlZiIsImRpY3RVc2VSZXQiLCJvblNlbGVjdENoYW5nZSIsInNlbGVjdGVkT3B0aW9ucyIsIl9zZmNfbWFpbiQ1IiwiX3NmY19tYWluJDQiLCJfc2ZjX21haW4kMyIsIl9zZmNfbWFpbiQyIiwidHJlZVJlZiIsImRpY3RTZWxlY3RSZWYiLCJ2YWx1ZXNGb3JtYXRSZWYiLCJkaWFsb2dPcGVuIiwib25DbG9zZSIsImdldFNjb3BlQ29udGV4dCIsImluaXRTZWxlY3RlZEtleXMiLCJtdWx0aXBsZSIsInZhbHVlVHlwZSIsImZvcm1XcmFwcGVyT3B0aW9ucyIsIm9wZW5UYWJsZVNlbGVjdCIsIm9wZW5PcHRpb25zIiwiY3J1ZE9wdGlvbnNPdmVycmlkZSIsImJ1aWxkTWVyZ2VkQ3J1ZE9wdGlvbnMiLCJiZWZvcmVPcGVuIiwid3JhcHBlck9wdGlvbnMiLCJ2aWV3TW9kZSIsImRpYWxvZyIsImJ1aWxkSW5pdEJpbmQiLCJvbk9rIiwiY29tcHV0ZWRWYWx1ZXNGb3JtYXQiLCJtYXhWaXNpYmxlIiwidmFsdWVzRm9ybWF0IiwiY29tcHV0ZWRTZWxlY3QiLCJ1cGRhdGVLZXkiLCJjbGVhcmFibGUiLCJidWlsZE11bHRpQmluZGluZyIsImFwcGVuZEJ5VmFsdWVzIiwicmVmcmVzaGluZyIsInNlbGVjdGlvbk9wdGlvbnMiLCJidWlsZFNlbGVjdGlvbkNydWRPcHRpb25zIiwiY3Jvc3NQYWdlIiwic2VsZWN0T25DbGlja1JvdyIsImdldFBhZ2VEYXRhIiwib25TZWxlY3RlZEtleXNDaGFuZ2VkIiwib25SZWZyZXNoZWQiLCJzZXRTZWxlY3RlZFJvd3MiLCJnZXRCYXNlVGFibGVSZWYiLCJnZXREaWN0TWFwIiwiZW1pdE9uVmlld01vZGVsIiwib3BlbmVkIiwiX2NvbXBvbmVudF9mc19kaWN0X3NlbGVjdCIsInNraXBWYWxpZGF0aW9uV3JhcHBlciIsIl9jb21wb25lbnRfZnNfZm9ybV93cmFwcGVyIiwiZGVzdHJveU9uQ2xvc2UiLCJfY29tcG9uZW50X2ZzX2NydWQiLCJzaG93Q3VycmVudCIsIl9jb21wb25lbnRfZnNfdmFsdWVzX2Zvcm1hdCIsImNsb3NhYmxlIiwiZG9VcGRhdGUiLCJfY29tcG9uZW50X2ZzX3RhYmxlX3NlbGVjdCIsIkZhc3RDcnVkIiwiY3VzdG9tQ29tcG9uZW50cyIsImNvbSIsInByaW50V2FybmluZ0xvZ2dlciIsImJyb3dzZXIiLCJ1YSIsImNzdiIsImlldiIsImllb2xkIiwidHJpZGVudCIsInJ2IiwiQk9NIiwiY3N2RGF0YSIsImZpbGVuYW1lIiwib1dpbiIsImxpbmsiLCJuZXdMaW5lIiwiYXBwZW5kTGluZSIsInNlcGFyYXRvciIsInF1b3RlZCIsImxpbmUiLCJkYXRhcyIsIm5vSGVhZGVyIiwiY29sdW1uT3JkZXIiLCJzZWxmIiwidmlldyIsIkJsb2JCdWlsZGVyIiwiZ2V0X2NsYXNzIiwiRmFrZUJsb2JCdWlsZGVyIiwiRmFrZUJsb2IiLCJlbmNvZGluZyIsIkZCQl9wcm90byIsIkZCX3Byb3RvIiwiRmlsZVJlYWRlclN5bmMiLCJGaWxlRXhjZXB0aW9uIiwiZmlsZV9leF9jb2RlcyIsImZpbGVfZXhfY29kZSIsInJlYWxfVVJMIiwicmVhbF9jcmVhdGVfb2JqZWN0X1VSTCIsInJlYWxfcmV2b2tlX29iamVjdF9VUkwiLCJVUkwiLCJidG9hIiwiYXRvYiIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsImJsb2IiLCJkYXRhX1VSSV9oZWFkZXIiLCJvYmplY3RfVVJMIiwiYmIiLCJidWYiLCJidWZfbGVuIiwiZnIiLCJibG9iUGFydHMiLCJidWlsZGVyIiwiZyIsImdsb2JhbCIsImoiLCJtIiwiWExTWCIsImN1cnJlbnRfYW5zaSIsIlZBTElEX0FOU0kiLCJDUzJDUCIsInNldF9hbnNpIiwicmVzZXRfYW5zaSIsInNldF9jcCIsInJlc2V0X2NwIiwiY2hhcl9jb2RlcyIsInV0ZjE2bGVyZWFkIiwidXRmMTZiZXJlYWQiLCJkZWJvbSIsImMxIiwiYzIiLCJfZ2V0Y2hhciIsIl9nZXRhbnNpIiwiJGNwdGFibGUiLCJCYXNlNjRfbWFwIiwiQmFzZTY0X2VuY29kZSIsImMzIiwiZTEiLCJlMiIsImUzIiwiZTQiLCJCYXNlNjRfZGVjb2RlIiwiaGFzX2J1ZiIsIkJ1ZmZlcl9mcm9tIiwibmJmcyIsImVuYyIsIm5ld19yYXdfYnVmIiwibmV3X3Vuc2FmZV9idWYiLCJzMmEiLCJzMmFiIiwiYTJzIiwiYTJ1IiwiYWIyYSIsImJjb25jYXQiLCJidWZzIiwibWF4bGVuIiwidXRmOGRlY29kZSIsIm91dCIsIndpZHgiLCJMIiwicmlkeCIsImNocjAiLCJjaHIxIiwiX3N0cnJldiIsInBhZDAiLCJmaWxsIiwicGFkXyIsInJwYWRfIiwicGFkMHIxIiwicGFkMHIyIiwicDJfMzIiLCJwYWQwciIsIlNTRl9pc2dlbmVyYWwiLCJkYXlzIiwibW9udGhzIiwiU1NGX2luaXRfdGFibGUiLCJ0YWJsZV9mbXQiLCJTU0ZfZGVmYXVsdF9tYXAiLCJTU0ZfZGVmYXVsdF9zdHIiLCJTU0ZfZnJhYyIsIkQiLCJtaXhlZCIsInNnbiIsIkIiLCJQXzIiLCJQXzEiLCJQIiwiUV8yIiwiUV8xIiwiUSIsIkEiLCJxIiwiU1NGX3BhcnNlX2RhdGVfY29kZSIsImIyIiwiZG93IiwiZG91dCIsIlNTRl9maXhfaGlqcmkiLCJTU0ZiYXNlZGF0ZSIsIlNTRmRudGhyZXNoIiwiU1NGYmFzZTE5MDQiLCJkYXRlbnVtX2xvY2FsIiwiZGF0ZTE5MDQiLCJlcG9jaCIsIlNTRl9zdHJpcF9kZWNpbWFsIiwiU1NGX25vcm1hbGl6ZV9leHAiLCJTU0Zfc21hbGxfZXhwIiwidyIsIlNTRl9sYXJnZV9leHAiLCJTU0ZfZ2VuZXJhbF9udW0iLCJWIiwiU1NGX2dlbmVyYWwiLCJTU0ZfZm9ybWF0IiwiU1NGX3dyaXRlX2RhdGUiLCJmbXQiLCJzczAiLCJzcyIsInR0Iiwib3V0bCIsIm91dHN0ciIsImNvbW1haWZ5IiwicGN0MSIsIndyaXRlX251bV9wY3QiLCJzZm10IiwibXVsIiwid3JpdGVfbnVtIiwid3JpdGVfbnVtX2NtIiwid3JpdGVfbnVtX2V4cCIsInBlcmlvZCIsImVlIiwiZmFrZWUiLCIkJCIsIiQxIiwiJDIiLCIkMyIsImZyYWMxIiwid3JpdGVfbnVtX2YxIiwiYXZhbCIsInNpZ24iLCJkZW4iLCJyciIsIm15biIsIm15ZCIsIndyaXRlX251bV9mMiIsImRlYzEiLCJjbG9zZXBhcmVuIiwicGhvbmUiLCJoYXNocSIsImNjIiwicm5kIiwiZGQiLCJkZWMiLCJfZnJhYyIsImNhcnJ5IiwiZmxyIiwid3JpdGVfbnVtX2ZsdCIsImZmbXQiLCJyaSIsImZmIiwib2EiLCJscmVzIiwicnJlcyIsIndyaXRlX251bV9jbTIiLCJ3cml0ZV9udW1fcGN0MiIsIndyaXRlX251bV9leHAyIiwid3JpdGVfbnVtX2ludCIsIlNTRl9zcGxpdF9mbXQiLCJpbl9zdHIiLCJTU0ZfYWJzdGltZSIsImZtdF9pc19kYXRlIiwiZXZhbF9mbXQiLCJmbGVuIiwibHN0IiwiaHIiLCJidCIsInNzbSIsIm5zdHIiLCJqaiIsIm15diIsIm9zdHIiLCJkZWNwdCIsImxhc3RpIiwicmV0dmFsIiwiY2ZyZWdleDIiLCJjaGtjb25kIiwidGhyZXNoIiwiY2hvb3NlX2ZtdCIsImxhdCIsIm0xIiwibTIiLCJTU0ZfbG9hZCIsIlNTRl9sb2FkX3RhYmxlIiwidGJsIiwibWFrZV9zc2YiLCJTU0YiLCJTU0ZJbXBsaWNpdCIsImRhdGVORnJlZ2V4IiwiZGF0ZU5GX3JlZ2V4IiwiZGF0ZU5GIiwiZGF0ZU5GX2ZpeCIsIkgiLCJNIiwiUyIsImRhdGVzdHIiLCJ0aW1lc3RyIiwiQ1JDMzIiLCJzaWduZWRfY3JjX3RhYmxlIiwiVDAiLCJzbGljZV9ieV8xNl90YWJsZXMiLCJUIiwiVFQiLCJUMSIsIlQyIiwiVDMiLCJUNCIsIlQ1IiwiVDYiLCJUNyIsIlQ4IiwiVDkiLCJUYSIsIlRiIiwiVGMiLCJUZCIsIlRlIiwiVGYiLCJjcmMzMl9ic3RyIiwiYnN0ciIsIkMiLCJjcmMzMl9idWYiLCJjcmMzMl9zdHIiLCJDRkIiLCJleHBvcnRzIiwibmFtZWNtcCIsIlIiLCJaIiwiZGlybmFtZSIsIndyaXRlX2Rvc19kYXRlIiwiaG1zIiwieW1kIiwicGFyc2VfZG9zX2RhdGUiLCJwYXJzZV9leHRyYV9maWVsZCIsInByZXBfYmxvYiIsImZsYWdzIiwic3oiLCJ0Z3QiLCJmcyIsImdldF9mcyIsInBhcnNlIiwiZmlsZSIsInBhcnNlX3ppcCIsInBhcnNlX21hZCIsIm12ZXIiLCJzc3oiLCJubWZzIiwiZGlmYXRfc2VjX2NudCIsImRpcl9zdGFydCIsIm1pbmlmYXRfc3RhcnQiLCJkaWZhdF9zdGFydCIsImZhdF9hZGRycyIsIm12IiwiY2hlY2tfZ2V0X212ZXIiLCJjaGVja19zaGlmdHMiLCJkaXJfY250Iiwic2VjdG9ycyIsInNlY3RvcmlmeSIsInNsZXV0aF9mYXQiLCJzZWN0b3JfbGlzdCIsIm1ha2Vfc2VjdG9yX2xpc3QiLCJFTkRPRkNIQUlOIiwiZmlsZXMiLCJQYXRocyIsIkZpbGVJbmRleCIsIkZ1bGxQYXRocyIsInJlYWRfZGlyZWN0b3J5IiwiYnVpbGRfZnVsbF9wYXRocyIsIkhFQURFUl9TSUdOQVRVUkUiLCJzaGlmdCIsIm5zZWN0b3JzIiwiRkkiLCJGUCIsInBsIiwiZGFkIiwiZ2V0X21mYXRfZW50cnkiLCJwYXlsb2FkIiwibWluaSIsIk1TU1oiLCJfX3JlYWRJbnQzMkxFIiwibmV3X2J1ZiIsImNudCIsInNlY3RvciIsImdldF9zZWN0b3JfbGlzdCIsImNoa2QiLCJidWZfY2hhaW4iLCJtb2R1bHVzIiwiYWRkciIsIl9fdG9CdWZmZXIiLCJzbCIsInNlZW4iLCJtaW5pZmF0X3N0b3JlIiwibmFtZWxlbiIsIl9fdXRmMTZsZSIsImN0aW1lIiwicmVhZF9kYXRlIiwibXRpbWUiLCJvZmZzZXQiLCJfX3JlYWRVSW50MzJMRSIsInJlYWRfZmlsZSIsInJlYWQiLCJpbml0X2NmYiIsImNmYiIsInNlZWRfY2ZiIiwibm0iLCJyZWJ1aWxkX2NmYiIsImdjIiwiX2ZpbGUiLCJub3ciLCJmdWxsUGF0aHMiLCJIRUFERVJfQ0xTSUQiLCJlbHQiLCJfd3JpdGUiLCJfb3B0cyIsIndyaXRlX21hZCIsIndyaXRlX3ppcCIsIm1pbmlfc2l6ZSIsImZhdF9zaXplIiwibWluaV9jbnQiLCJtZmF0X2NudCIsImZhdF9iYXNlIiwiZmF0X2NudCIsImRpZmF0X2NudCIsIkhFQURFUl9TSUciLCJjaGFpbml0IiwiY29uc3RzIiwiX25tIiwiVUNGdWxsUGF0aHMiLCJVQ1BhdGhzIiwiVUNQYXRoIiwid3JpdGVfZmlsZSIsIndyaXRlIiwiX3psaWIiLCJ1c2VfemxpYiIsInpsaWIiLCJJbmZsYXRlUmF3IiwiSW5mbFJhdyIsIl9pbmZsYXRlUmF3U3luYyIsInVzeiIsIl9pbmZsYXRlIiwiX2RlZmxhdGVSYXdTeW5jIiwiX2RlZmxhdGUiLCJDTEVOX09SREVSIiwiTEVOX0xOIiwiRFNUX0xOIiwiYml0X3N3YXBfOCIsInVzZV90eXBlZF9hcnJheXMiLCJiaXRzd2FwOCIsImJpdF9zd2FwX24iLCJyZXYiLCJyZWFkX2JpdHNfMiIsImJsIiwicmVhZF9iaXRzXzMiLCJyZWFkX2JpdHNfNCIsInJlYWRfYml0c181IiwicmVhZF9iaXRzXzciLCJyZWFkX2JpdHNfbiIsIndyaXRlX2JpdHNfMyIsIndyaXRlX2JpdHNfMSIsIndyaXRlX2JpdHNfOCIsIndyaXRlX2JpdHNfMTYiLCJyZWFsbG9jIiwiemVyb19maWxsX2FycmF5IiwiYnVpbGRfdHJlZSIsImNsZW5zIiwiY21hcCIsIk1BWCIsImNjb2RlIiwiYmxfY291bnQiLCJjdHJlZSIsImNsZW5pIiwiZml4X2xtYXAiLCJmaXhfZG1hcCIsImRsZW5zIiwiX2RlZmxhdGVSYXciLCJEU1RfTE5fUkUiLCJMRU5fTE5fUkUiLCJ3cml0ZV9zdG9yZWQiLCJib2ZmIiwid3JpdGVfaHVmZl9maXhlZCIsImFkZHJzIiwibWxlbiIsImxlbl9lYiIsImRzdF9lYiIsImR5bl9sbWFwIiwiZHluX2RtYXAiLCJkeW5fY21hcCIsImR5bl9sZW5fMSIsImR5bl9sZW5fMiIsImR5biIsIl9ITElUIiwiX0hESVNUIiwiX0hDTEVOIiwibmV4dF9jb2RlIiwiaGNvZGVzIiwiaDEiLCJpbmZsYXRlIiwib3V0YnVmIiwid29mZiIsIk9MIiwibWF4X2xlbl8xIiwibWF4X2xlbl8yIiwiYml0cyIsIndhcm5fb3JfdGhyb3ciLCJ3cm4iLCJmY250Iiwic3RhcnRfY2QiLCJjc3oiLCJlZnN6IiwiZmNzeiIsIkVGIiwicGFyc2VfbG9jYWxfZmlsZSIsIm1ldGgiLCJjcmMzMiIsIl9jc3oiLCJfdXN6IiwiZWYiLCJjZmJfYWRkIiwiY2RpcnMiLCJmcCIsImZpIiwiY3JjcyIsInN6X2NkIiwibmFtZWJ1ZiIsIkNvbnRlbnRUeXBlTWFwIiwiZ2V0X2NvbnRlbnRfdHlwZSIsImV4dCIsIndyaXRlX2Jhc2U2NF83NiIsIndyaXRlX3F1b3RlZF9wcmludGFibGUiLCJlbmNvZGVkIiwic2kiLCJwYXJzZV9xdW90ZWRfcHJpbnRhYmxlIiwiZGkiLCJvaSIsInBhcnNlX21pbWUiLCJmbmFtZSIsImN0ZSIsImN0eXBlIiwiZmRhdGEiLCJtYm91bmRhcnkiLCJib3VuZGFyeSIsInN0YXJ0X2RpIiwiY2EiLCJjc3RyIiwiZGlzcGNudCIsImNzbCIsInFwIiwiY2ZiX25ldyIsInVuc2FmZSIsImZwYXRoIiwiY2ZiX2RlbCIsImNmYl9tb3YiLCJvbGRfbmFtZSIsIm5ld19uYW1lIiwiY2ZiX2djIiwiUmVhZFNoaWZ0IiwiQ2hlY2tGaWVsZCIsImJsb2JpZnkiLCJ3cml0ZV9kbCIsInV0Zjh3cml0ZSIsInJlYWRfYmluYXJ5IiwiaW5maWxlIiwia3MiLCJvMiIsImV2ZXJ0X2tleSIsIksiLCJldmVydCIsImV2ZXJ0X251bSIsImV2ZXJ0X2FyciIsImJhc2VkYXRlIiwiZGF0ZW51bSIsImRudGhyZXNoIiwicmVmZGF0ZSIsInJlZm9mZnNldCIsIm51bWRhdGUiLCJwYXJzZV9pc29kdXIiLCJzZWMiLCJtdCIsImdvb2RfcGRfZGF0ZV8xIiwiZ29vZF9wZF9kYXRlIiwiZ29vZF9wZCIsInBhcnNlRGF0ZSIsImZpeGRhdGUiLCJjYzJzdHIiLCJkZWJvbWl0IiwiZHVwIiwiZnV6enludW0iLCJ3dCIsImxvd2VyX21vbnRocyIsImZ1enp5ZGF0ZSIsImxvd2VyIiwic3BsaXRfcmVnZXgiLCJzYWZlX3NwbGl0X3JlZ2V4IiwicmUiLCJnZXRkYXRhc3RyIiwiZ2V0ZGF0YWJpbiIsImdldGRhdGEiLCJzYWZlZ2V0emlwZmlsZSIsInppcCIsImdldHppcGZpbGUiLCJnZXR6aXBkYXRhIiwic2FmZSIsImdldHppcHN0ciIsImdldHppcGJpbiIsInppcGVudHJpZXMiLCJ6aXBfYWRkX2ZpbGUiLCJ6aXBfbmV3IiwiemlwX3JlYWQiLCJyZXNvbHZlX3BhdGgiLCJzdGVwIiwiWE1MX0hFQURFUiIsImF0dHJlZ2V4ZyIsInRhZ3JlZ2V4MSIsInRhZ3JlZ2V4MiIsInRhZ3JlZ2V4IiwibnNyZWdleCIsIm5zcmVnZXgyIiwicGFyc2V4bWx0YWciLCJza2lwX3Jvb3QiLCJza2lwX0xDIiwiZXEiLCJxdW90Iiwic3RyaXBfbnMiLCJlbmNvZGluZ3MiLCJyZW5jb2RpbmciLCJ1bmVzY2FwZXhtbCIsImVuY3JlZ2V4IiwiY29kZXJlZ2V4IiwiZGVjcmVnZXgiLCJjaGFyZWdleCIsImVzY2FwZXhtbCIsImVzY2FwZXhtbHRhZyIsImh0bWxjaGFyZWdleCIsImVzY2FwZWh0bWwiLCJlc2NhcGV4bG1sIiwieGxtbF9maXhzdHIiLCJlbnRyZWdleCIsImVudHJlcGwiLCJ4bG1sX3VuZml4c3RyIiwicGFyc2V4bWxib29sIiwidXRmOHJlYWRhIiwib3JpZyIsInV0ZjhyZWFkYiIsInd3IiwidXRmOHJlYWRjIiwidXRmOGNvcnB1cyIsInV0ZjhyZWFkIiwibWF0Y2h0YWciLCJtdGNhY2hlIiwiaHRtbGRlY29kZSIsImVudGl0aWVzIiwidnRyZWdleCIsInZ0X2NhY2hlIiwidnR2cmVnZXgiLCJ2dG1yZWdleCIsInBhcnNlVmVjdG9yIiwid3RyZWdleCIsIndyaXRldGFnIiwid3h0X2hlbHBlciIsIndyaXRleHRhZyIsIndyaXRlX3czY2R0ZiIsIndyaXRlX3Z0IiwieGxzeCIsInhsbWxfbm9ybWFsaXplIiwieGxtbHJlZ2V4IiwiWE1MTlMiLCJYTUxOU19tYWluIiwiWExNTE5TIiwicmVhZF9kb3VibGVfbGUiLCJ3cml0ZV9kb3VibGVfbGUiLCJicyIsImF2IiwiX19fdG9CdWZmZXIiLCJfX191dGYxNmxlIiwiX19yZWFkVUludDE2TEUiLCJfX19oZXhsaWZ5IiwiX19oZXhsaWZ5IiwiX19fdXRmOCIsIl9fcmVhZFVJbnQ4IiwiX191dGY4IiwiX19fbHBzdHIiLCJfX2xwc3RyIiwiX19fY3BzdHIiLCJfX2Nwc3RyIiwiX19fbHB3c3RyIiwiX19scHdzdHIiLCJfX19scHA0IiwiX19scHA0IiwiX19fOGxwcDQiLCJfXzhscHA0IiwiX19fZG91YmxlIiwiX19kb3VibGUiLCJpc19idWYiLCJfX3JlYWRJbnQxNkxFIiwiX19yZWFkSW50MzJCRSIsIm9JIiwib1IiLCJvbyIsImxvYyIsIl9fd3JpdGVVSW50MzJMRSIsIl9fd3JpdGVJbnQzMkxFIiwiX193cml0ZVVJbnQxNkxFIiwiV3JpdGVTaGlmdCIsImhleHN0ciIsImZsZCIsInBvcyIsInBhcnNlbm9vcCIsInJlY29yZGhvcHBlciIsInRtcGJ5dGUiLCJjbnRieXRlIiwiUlQiLCJYTFNCUmVjb3JkRW51bSIsImJ1Zl9hcnJheSIsImJsa3N6IiwibmV3YmxrIiwiY3VyYnVmIiwiZW5kYnVmIiwid3JpdGVfcmVjb3JkIiwiYmEiLCJzaGlmdF9jZWxsX3hscyIsInNoaWZ0X3JhbmdlX3hscyIsImVuY29kZV9jZWxsX3hscyIsImJpZmYiLCJlbmNvZGVfY2VsbCIsImZpeF9jb2wiLCJmaXhfcm93IiwiZW5jb2RlX3JhbmdlX3hscyIsImVuY29kZV9jb2wiLCJlbmNvZGVfcm93IiwiZGVjb2RlX3JvdyIsInJvd3N0ciIsInVuZml4X3JvdyIsImRlY29kZV9jb2wiLCJjb2xzdHIiLCJ1bmZpeF9jb2wiLCJzcGxpdF9jZWxsIiwiZGVjb2RlX2NlbGwiLCJkZWNvZGVfcmFuZ2UiLCJlbmNvZGVfcmFuZ2UiLCJjcyIsImNlIiwic2FmZV9kZWNvZGVfcmFuZ2UiLCJzYWZlX2Zvcm1hdF9jZWxsIiwiZm9ybWF0X2NlbGwiLCJCRXJyIiwic2hlZXRfdG9fd29ya2Jvb2siLCJzaGVldCIsInNoZWV0cyIsInNoZWV0X2FkZF9hb2EiLCJfd3MiLCJkZW5zZSIsIndzIiwiX1IiLCJfQyIsIl9vcmlnaW4iLCJfcmFuZ2UiLCJfX1IiLCJfX0MiLCJjZWxsX3JlZiIsImFvYV90b19zaGVldCIsInBhcnNlX0ludDMyTEUiLCJ3cml0ZV9VSW50MzJMRSIsInBhcnNlX1hMV2lkZVN0cmluZyIsImNjaENoYXJhY3RlcnMiLCJ3cml0ZV9YTFdpZGVTdHJpbmciLCJfbnVsbCIsInBhcnNlX1N0clJ1biIsIndyaXRlX1N0clJ1biIsInJ1biIsInBhcnNlX1JpY2hTdHIiLCJyZ3NTdHJSdW4iLCJkd1NpemVTdHJSdW4iLCJ3cml0ZV9SaWNoU3RyIiwicGFyc2VfQnJ0Q29tbWVudFRleHQiLCJ3cml0ZV9CcnRDb21tZW50VGV4dCIsInBhcnNlX1hMU0JDZWxsIiwiaVN0eWxlUmVmIiwid3JpdGVfWExTQkNlbGwiLCJwYXJzZV9YTFNCU2hvcnRDZWxsIiwid3JpdGVfWExTQlNob3J0Q2VsbCIsInBhcnNlX1hMU0JDb2RlTmFtZSIsIndyaXRlX1hMU0JDb2RlTmFtZSIsInBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nIiwid3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmciLCJwYXJzZV9YTE5hbWVXaWRlU3RyaW5nIiwicGFyc2VfUmVsSUQiLCJ3cml0ZV9SZWxJRCIsInBhcnNlX1JrTnVtYmVyIiwiZlgxMDAiLCJmSW50IiwiUksiLCJ3cml0ZV9Sa051bWJlciIsImQxMDAiLCJwYXJzZV9SZlgiLCJ3cml0ZV9SZlgiLCJwYXJzZV9VbmNoZWNrZWRSZlgiLCJ3cml0ZV9VbmNoZWNrZWRSZlgiLCJwYXJzZV9YbnVtIiwid3JpdGVfWG51bSIsInBhcnNlX0JydENvbG9yIiwieENvbG9yVHlwZSIsIm5UUyIsImJSIiwiYkciLCJiQiIsImljdiIsIlhMU0ljdiIsInJnYjJIZXgiLCJ3cml0ZV9CcnRDb2xvciIsInJnYiIsInBhcnNlX0ZvbnRGbGFncyIsIndyaXRlX0ZvbnRGbGFncyIsImZvbnQiLCJncmJpdCIsInBhcnNlX0NsaXBib2FyZEZvcm1hdE9yU3RyaW5nIiwiQ2xpcEZtdCIsInBhcnNlX0NsaXBib2FyZEZvcm1hdE9yQW5zaVN0cmluZyIsInBhcnNlX0NsaXBib2FyZEZvcm1hdE9yVW5pY29kZVN0cmluZyIsIlZUX0kyIiwiVlRfSTQiLCJWVF9CT09MIiwiVlRfVkFSSUFOVCIsIlZUX1VJNCIsIlZUX0ZJTEVUSU1FIiwiVlRfQkxPQiIsIlZUX0NGIiwiVlRfVkVDVE9SX1ZBUklBTlQiLCJWVF9WRUNUT1JfTFBTVFIiLCJWVF9TVFJJTkciLCJWVF9VU1RSIiwiVlRfQ1VTVE9NIiwiRG9jU3VtbWFyeVBJRERTSSIsIlN1bW1hcnlQSURTSSIsIkNvdW50cnlFbnVtIiwiWExTRmlsbFBhdHRlcm4iLCJyZ2JpZnkiLCJfWExTSWN2IiwiUkJFcnIiLCJjdDJ0eXBlIiwiQ1RfTElTVCIsIm5ld19jdCIsInBhcnNlX2N0IiwiY3RleHQiLCJ3cml0ZV9jdCIsInR5cGUyY3QiLCJmMSIsImYyIiwiZjMiLCJSRUxTIiwiZ2V0X3JlbHNfcGF0aCIsInBhcnNlX3JlbHMiLCJjdXJyZW50RmlsZVBhdGgiLCJyZWxzIiwicmVsIiwiY2Fub25pY3RhcmdldCIsIndyaXRlX3JlbHMiLCJyaWQiLCJhZGRfcmVscyIsInJJZCIsInJlbG9iaiIsInRhcmdldG1vZGUiLCJDVF9PRFMiLCJwYXJzZV9tYW5pZmVzdCIsIlJuIiwiRkV0YWciLCJ3cml0ZV9tYW5pZmVzdCIsIm1hbmlmZXN0Iiwid3JpdGVfcmRmX3R5cGUiLCJ3cml0ZV9yZGZfaGFzIiwid3JpdGVfcmRmIiwicmRmIiwid3JpdGVfbWV0YV9vZHMiLCJDT1JFX1BST1BTIiwiQ09SRV9QUk9QU19SRUdFWCIsInBhcnNlX2NvcmVfcHJvcHMiLCJjdXIiLCJjcF9kb2l0Iiwid3JpdGVfY29yZV9wcm9wcyIsIkVYVF9QUk9QUyIsIlBzZXVkb1Byb3BzUGFpcnMiLCJsb2FkX3Byb3BzX3BhaXJzIiwiSFAiLCJUT1AiLCJocCIsInBhcnRzIiwicGFyc2VfZXh0X3Byb3BzIiwieG1sIiwid3JpdGVfZXh0X3Byb3BzIiwiVyIsImN1c3RyZWdleCIsInBhcnNlX2N1c3RfcHJvcHMiLCJ0b2tzIiwid3JpdGVfY3VzdF9wcm9wcyIsInBpZCIsIlhMTUxEb2NQcm9wc01hcCIsImV2ZXJ0X1hMTUxEUE0iLCJ4bG1sX3NldF9wcm9wIiwiUHJvcHMiLCJ4bG1sX3dyaXRlX2RvY3Byb3BzIiwieGxtbF93cml0ZV9jdXN0cHJvcHMiLCJDdXN0cHJvcHMiLCJCTEFDS0xJU1QiLCJwYXJzZV9GSUxFVElNRSIsImR3TG93RGF0ZVRpbWUiLCJkd0hpZ2hEYXRlVGltZSIsIndyaXRlX0ZJTEVUSU1FIiwicGFyc2VfbHBzdHIiLCJwYWQiLCJwYXJzZV9scHdzdHIiLCJwYXJzZV9WdFN0cmluZ0Jhc2UiLCJzdHJpbmdUeXBlIiwicGFyc2VfVnRTdHJpbmciLCJwYXJzZV9WdFVuYWxpZ25lZFN0cmluZyIsInBhcnNlX1Z0VmVjTHB3c3RyVmFsdWUiLCJwYXJzZV9WdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUiLCJwYXJzZV9WdEhlYWRpbmdQYWlyIiwiaGVhZGluZ1N0cmluZyIsInBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZSIsImhlYWRlclBhcnRzIiwicGFyc2VfVnRWZWNIZWFkaW5nUGFpclZhbHVlIiwiY0VsZW1lbnRzIiwicGFyc2VfZGljdGlvbmFyeSIsIkNvZGVQYWdlIiwicGFyc2VfQkxPQiIsImJ5dGVzIiwicGFyc2VfQ2xpcGJvYXJkRGF0YSIsIndyaXRlX1R5cGVkUHJvcGVydHlWYWx1ZSIsInBhcnNlX1Byb3BlcnR5U2V0IiwiUElEU0kiLCJzdGFydF9hZGRyIiwiTnVtUHJvcHMiLCJEaWN0aW9uYXJ5IiwiRGljdE9iaiIsIlByb3BJRCIsIk9mZnNldCIsIlByb3BIIiwicGlkZHNpIiwib2xkcG9zIiwicGFyc2Vib29sIiwiWExTUFNTa2lwIiwiZ3Vlc3NfcHJvcGVydHlfdHlwZSIsIndyaXRlX1Byb3BlcnR5U2V0IiwiUkUiLCJoZHIiLCJwaWFvIiwicHIiLCJwaW8iLCJwaW5mbyIsInBhcnNlX1Byb3BlcnR5U2V0U3RyZWFtIiwiY2xzaWQiLCJOdW1TZXRzIiwiRk1USUQwIiwiRk1USUQxIiwiT2Zmc2V0MCIsIk9mZnNldDEiLCJTeXN0ZW1JZGVudGlmaWVyIiwiQ0xTSUQiLCJQU2V0MCIsInJ2YWwiLCJQU2V0MSIsIndyaXRlX1Byb3BlcnR5U2V0U3RyZWFtIiwiZW50cmllczIiLCJjbHNpZDIiLCJwczAiLCJwczEiLCJwYXJzZW5vb3AyIiwid3JpdGV6ZXJvZXMiLCJwYXJzbHVycCIsIndyaXRlYm9vbCIsInBhcnNldWludDE2Iiwid3JpdGV1aW50MTYiLCJwYXJzZXVpbnQxNmEiLCJwYXJzZV9CZXMiLCJ3cml0ZV9CZXMiLCJwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyIsImNjaCIsImZIaWdoQnl0ZSIsInBhcnNlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyIsImZFeHRTdCIsImZSaWNoU3QiLCJjUnVuIiwiY2JFeHRSc3QiLCJ3cml0ZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmciLCJ4bHN0ciIsIm90ZXh0IiwicGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2giLCJwYXJzZV9YTFVuaWNvZGVTdHJpbmciLCJwYXJzZV9YTFVuaWNvZGVTdHJpbmcyIiwid3JpdGVfWExVbmljb2RlU3RyaW5nIiwicGFyc2VfQ29udHJvbEluZm8iLCJhY2NlbCIsInBhcnNlX1VSTE1vbmlrZXIiLCJwYXJzZV9GaWxlTW9uaWtlciIsImNBbnRpIiwicHJlYW1ibGUiLCJhbnNpUGF0aCIsInVuaWNvZGVQYXRoIiwicGFyc2VfSHlwZXJsaW5rTW9uaWtlciIsInBhcnNlX0h5cGVybGlua1N0cmluZyIsIndyaXRlX0h5cGVybGlua1N0cmluZyIsInBhcnNlX0h5cGVybGluayIsInNWZXIiLCJkaXNwbGF5TmFtZSIsInRhcmdldEZyYW1lTmFtZSIsIm1vbmlrZXIiLCJvbGVNb25pa2VyIiwiTG9jIiwiZ3VpZCIsImZpbGVUaW1lIiwid3JpdGVfSHlwZXJsaW5rIiwiaGwiLCJUYXJnZXQiLCJoYXNoaWR4IiwiRiIsIlByZXRhcmdldCIsInBhcnNlX0xvbmdSR0JBIiwicGFyc2VfTG9uZ1JHQiIsInBhcnNlX1hMU0NlbGwiLCJydyIsIml4ZmUiLCJ3cml0ZV9YTFNDZWxsIiwicGFyc2VfZnJ0SGVhZGVyIiwicnQiLCJwYXJzZV9PcHRYTFVuaWNvZGVTdHJpbmciLCJwYXJzZV9YVEkiLCJpU3VwQm9vayIsIml0YWJGaXJzdCIsIml0YWJMYXN0IiwicGFyc2VfUmtSZWMiLCJwYXJzZV9BZGRpblVkZiIsInVkZk5hbWUiLCJwYXJzZV9SZWY4VSIsInJ3Rmlyc3QiLCJyd0xhc3QiLCJjb2xGaXJzdCIsImNvbExhc3QiLCJ3cml0ZV9SZWY4VSIsInBhcnNlX1JlZlUiLCJwYXJzZV9SZWYiLCJwYXJzZV9GdENtbyIsIm90IiwicGFyc2VfRnROdHMiLCJwYXJzZV9GdENmIiwicGFyc2VfRnRTa2lwIiwiRnRUYWIiLCJwYXJzZV9GdEFycmF5IiwiZnRzIiwiZnQiLCJwYXJzZV9CT0YiLCJ3cml0ZV9CT0YiLCJ3YiIsInBhcnNlX0ludGVyZmFjZUhkciIsInBhcnNlX1dyaXRlQWNjZXNzIiwiVXNlck5hbWUiLCJ3cml0ZV9Xcml0ZUFjY2VzcyIsImI4IiwicGFyc2VfV3NCb29sIiwicGFyc2VfQm91bmRTaGVldDgiLCJoaWRkZW4iLCJ3cml0ZV9Cb3VuZFNoZWV0OCIsInBhcnNlX1NTVCIsInVjbnQiLCJzdHJzIiwid3JpdGVfU1NUIiwic3N0IiwicGFyc2VfRXh0U1NUIiwiZXh0c3N0IiwicGFyc2VfUm93IiwibWl5UnciLCJwYXJzZV9Gb3JjZUZ1bGxDYWxjdWxhdGlvbiIsImZ1bGxjYWxjIiwicGFyc2VfUmVjYWxjSWQiLCJwYXJzZV9EZWZhdWx0Um93SGVpZ2h0IiwiZmwiLCJwYXJzZV9XaW5kb3cxIiwieFduIiwieVduIiwiZHhXbiIsImR5V24iLCJpVGFiQ3VyIiwiaVRhYkZpcnN0IiwiY3RhYlNlbCIsIndUYWJSYXRpbyIsIndyaXRlX1dpbmRvdzEiLCJwYXJzZV9XaW5kb3cyIiwid3JpdGVfV2luZG93MiIsInBhcnNlX1BhbmUiLCJwYXJzZV9Gb250Iiwid3JpdGVfRm9udCIsImI1IiwicGFyc2VfTGFiZWxTc3QiLCJ3cml0ZV9MYWJlbFNzdCIsIm9zIiwicGFyc2VfTGFiZWwiLCJ3cml0ZV9MYWJlbCIsInBhcnNlX0Zvcm1hdCIsIm51bUZtdElkIiwiZm10c3RyIiwid3JpdGVfRm9ybWF0IiwicGFyc2VfQklGRjJGb3JtYXQiLCJwYXJzZV9EaW1lbnNpb25zIiwid3JpdGVfRGltZW5zaW9ucyIsInBhcnNlX1JLIiwicmtyZWMiLCJwYXJzZV9NdWxSayIsInJrcmVjcyIsImxhc3Rjb2wiLCJwYXJzZV9NdWxCbGFuayIsIml4ZmVzIiwicGFyc2VfQ2VsbFN0eWxlWEYiLCJwYXJzZV9YRiIsIndyaXRlX1hGIiwiaXhmZVAiLCJwYXJzZV9HdXRzIiwid3JpdGVfR3V0cyIsImd1dHMiLCJwYXJzZV9Cb29sRXJyIiwid3JpdGVfQm9vbEVyciIsInBhcnNlX051bWJlciIsInhudW0iLCJ3cml0ZV9OdW1iZXIiLCJwYXJzZV9YTEhlYWRlckZvb3RlciIsInBhcnNlX1N1cEJvb2siLCJjdGFiIiwidmlydFBhdGgiLCJyZ3N0IiwicGFyc2VfRXh0ZXJuTmFtZSIsImJvZHkiLCJYTFNMYmxCdWlsdEluIiwicGFyc2VfTGJsIiwiY2hLZXkiLCJjY2UiLCJpdGFiIiwibnBmbGVuIiwicmdjZSIsInBhcnNlX05hbWVQYXJzZWRGb3JtdWxhIiwicGFyc2VfRXh0ZXJuU2hlZXQiLCJwYXJzZV9CSUZGNUV4dGVyblNoZWV0IiwicGFyc2VfTmFtZUNtdCIsImNjaE5hbWUiLCJjY2hDb21tZW50IiwiY29tbWVudCIsInBhcnNlX1NockZtbGEiLCJjVXNlIiwicGFyc2VfU2hhcmVkUGFyc2VkRm9ybXVsYSIsInBhcnNlX0FycmF5IiwicGFyc2VfQXJyYXlQYXJzZWRGb3JtdWxhIiwicGFyc2VfTVRSU2V0dGluZ3MiLCJmTVRSRW5hYmxlZCIsImZVc2VyU2V0VGhyZWFkQ291bnQiLCJjVXNlclRocmVhZENvdW50IiwicGFyc2VfTm90ZVNoIiwiaWRPYmoiLCJzdEF1dGhvciIsInBhcnNlX05vdGUiLCJwYXJzZV9NZXJnZUNlbGxzIiwibWVyZ2VzIiwiY21jcyIsIndyaXRlX01lcmdlQ2VsbHMiLCJwYXJzZV9PYmoiLCJwYXJzZV9CSUZGNU9iaiIsImNtbyIsInBhcnNlX0JJRkY1T1QiLCJjZiIsInBhcnNlX1R4TyIsInRleHRzIiwiY29udHJvbEluZm8iLCJjY2hUZXh0IiwicGFyc2VfSExpbmsiLCJobGluayIsIndyaXRlX0hMaW5rIiwiTyIsInBhcnNlX0hMaW5rVG9vbHRpcCIsInd6VG9vbHRpcCIsIndyaXRlX0hMaW5rVG9vbHRpcCIsInBhcnNlX0NvdW50cnkiLCJ3cml0ZV9Db3VudHJ5IiwicGFyc2VfQ2xydENsaWVudCIsImNjdiIsInBhcnNlX1BhbGV0dGUiLCJwYXJzZV9YRkNSQyIsInBhcnNlX0NvbEluZm8iLCJjb2xkeCIsIndyaXRlX0NvbEluZm8iLCJwYXJzZV9TZXR1cCIsInBhcnNlX1NodFByb3BzIiwid3JpdGVfUlJUYWJJZCIsInBhcnNlX0JsYW5rIiwicGFyc2VfU2NsIiwicGFyc2VfU3RyaW5nIiwicGFyc2VfSW1EYXRhIiwiZW52IiwibGNiIiwicGFyc2VfQklGRjJTVFIiLCJwYXJzZV9CSUZGMk5VTSIsIndyaXRlX0JJRkYyTlVNIiwid3JpdGVfQklGRjJDZWxsIiwicGFyc2VfQklGRjJJTlQiLCJ3cml0ZV9CSUZGMklOVCIsInBhcnNlX0JJRkYyU1RSSU5HIiwicGFyc2VfQklGRjJGT05UWFRSQSIsInBhcnNlX1JTdHJpbmciLCJEQkZfU1VQUE9SVEVEX1ZFUlNJT05TIiwiREJGIiwiZGJmX2NvZGVwYWdlX21hcCIsImRiZl9yZXZlcnNlX21hcCIsImRiZl90b19hb2EiLCJtZW1vIiwidmZwIiwibDciLCJucm93IiwiZnBvcyIsInJsZW4iLCJjdXJyZW50X2NwIiwiaGVuZCIsImRiZl90b19zaGVldCIsImRiZl90b193b3JrYm9vayIsIl9STEVOIiwic2hlZXRfdG9fZGJmIiwiYW9hIiwic2hlZXRfdG9fanNvbiIsImhlYWRlcnMiLCJoY250IiwiY29sdHlwZXMiLCJjb2x3aWR0aHMiLCJjb2xkZWNpbWFscyIsImd1ZXNzIiwiX2d1ZXNzIiwiaGYiLCJoYiIsInJvdXQiLCJfbiIsIlNZTEsiLCJzeWxrX2VzY2FwZXMiLCJzeWxrX2NoYXJfcmVnZXgiLCJzeWxrX2NoYXJfZm4iLCJkZWNvZGVfc3lsa19jaGFyIiwibmV3Y2MiLCJzeWxrX3RvX2FvYSIsInN5bGtfdG9fYW9hX3N0ciIsInJqIiwiZm9ybWF0cyIsIm5leHRfY2VsbF9mb3JtYXQiLCJzaHQiLCJyb3dpbmZvIiwiY29saW5mbyIsImN3IiwiTXZhbCIsInJzdHIiLCJyZWNvcmQiLCJDX3NlZW5fSyIsIkNfc2Vlbl9YIiwiQ19zZWVuX1MiLCJDX3NlZW5fRSIsImZvcm11bGEiLCJyY190b19hMSIsInNocmJhc2UiLCJzaGlmdF9mb3JtdWxhX3N0ciIsIkZfc2VlbiIsInByb2Nlc3NfY29sIiwicHQycHgiLCJzeWxrX3RvX3NoZWV0IiwiYW9hc2h0Iiwic3lsa190b193b3JrYm9vayIsIndyaXRlX3dzX2NlbGxfc3lsayIsImExX3RvX3JjIiwid3JpdGVfd3NfY29sc19zeWxrIiwicmVjIiwid2lkdGgycHgiLCJweDJjaGFyIiwid3JpdGVfd3Nfcm93c19zeWxrIiwicHgycHQiLCJzaGVldF90b19zeWxrIiwiUlMiLCJjb29yZCIsIkRJRiIsImRpZl90b19hb2EiLCJkaWZfdG9fYW9hX3N0ciIsIm1ldGFkYXRhIiwiZGlmX3RvX3NoZWV0IiwiZGlmX3RvX3dvcmtib29rIiwic2hlZXRfdG9fZGlmIiwicHVzaF9maWVsZCIsInRvcGljIiwicHVzaF92YWx1ZSIsIkVUSCIsImRlY29kZSIsImVuY29kZSIsImV0aF90b19hb2EiLCJldGhfdG9fc2hlZXQiLCJldGhfdG9fd29ya2Jvb2siLCJzZXAiLCJtZXRhIiwic2hlZXRfdG9fZXRoX2RhdGEiLCJzaGVldF90b19ldGgiLCJQUk4iLCJzZXRfdGV4dF9hcnIiLCJwcm5fdG9fYW9hX3N0ciIsImxpbmVzIiwiZ3Vlc3Nfc2VwcyIsImd1ZXNzX3NlcF93ZWlnaHRzIiwiZ3Vlc3Nfc2VwIiwiaW5zdHIiLCJkc3ZfdG9fc2hlZXRfc3RyIiwic2VwY2MiLCJzdGFydGNjIiwiX3JlIiwiZmluaXNoX2NlbGwiLCJmdXp6eWZtbGEiLCJvdXRlciIsInBybl90b19zaGVldF9zdHIiLCJwcm5fdG9fc2hlZXQiLCJmaXJzdGJ5dGUiLCJwcm5fdG9fd29ya2Jvb2siLCJzaGVldF90b19wcm4iLCJyZWFkX3diX0lEIiwiT0xEX1dURiIsIldLXyIsImxvdHVzaG9wcGVyIiwiRW51bSIsIldLMUVudW0iLCJsb3R1c190b193b3JrYm9vayIsImxvdHVzX3RvX3dvcmtib29rX2J1ZiIsIm5leHRfbiIsInNpZHgiLCJzbmFtZXMiLCJyZWFsbmFtZXMiLCJyZWZndWVzcyIsInNoZWV0Um93cyIsInRtcGNlbGwiLCJXSzNFbnVtIiwib3NoZWV0cyIsInJuYW1lcyIsInNoZWV0X3RvX3drMSIsIndyaXRlX2JpZmZfcmVjIiwid3JpdGVfQk9GX1dLMSIsIndyaXRlX1JBTkdFIiwibWF4X1IiLCJ3cml0ZV9JTlRFR0VSIiwid3JpdGVfTlVNQkVSIiwid3JpdGVfTEFCRUwiLCJib29rX3RvX3drMyIsIndyaXRlX0JPRl9XSzMiLCJ3cml0ZV9YRk9STUFUX1NIRUVUTkFNRSIsIndzaWR4Iiwid3JpdGVfTlVNQkVSXzE3Iiwid3JpdGVfTEFCRUxfMTYiLCJ3c2NudCIsInBhcnNlX1JBTkdFIiwicGFyc2VfY2VsbCIsInBhcnNlX0xBQkVMIiwicGFyc2VfSU5URUdFUiIsInBhcnNlX05VTUJFUiIsInBhcnNlX0ZPUk1VTEEiLCJ3azFfZm1sYV90b19jc2YiLCJ3azFfcGFyc2VfcmMiLCJGdW5jVGFiIiwiQmluT3BUYWIiLCJhcmdjIiwiYXJnTCIsImFyZ1IiLCJwYXJzZV9jZWxsXzMiLCJwYXJzZV9MQUJFTF8xNiIsInBhcnNlX05VTUJFUl8xOCIsInBhcnNlX05VTUJFUl8xNyIsInYxIiwidjIiLCJwYXJzZV9GT1JNVUxBXzE5IiwicGFyc2VfTlVNQkVSXzI1IiwicGFyc2VfTlVNQkVSXzI3IiwicGFyc2VfRk9STVVMQV8yOCIsInBhcnNlX1NIRUVUTkFNRUNTIiwicGFyc2VfU0hFRVROQU1FTFAiLCJwYXJzZV9TSEVFVElORk9RUCIsInBhcnNlX1hGT1JNQVQiLCJwYXJzZV9ycHIiLCJycHIiLCJwYXNzIiwicGFyc2VfcnMiLCJ0cmVnZXgiLCJycHJlZ2V4IiwicGFyc2VfciIsInJyZWdleCIsInJlbmQiLCJycyIsInJzX3RvX2h0bWwiLCJubHJlZ2V4IiwicGFyc2VfcnByMiIsImludHJvIiwib3V0cm8iLCJyX3RvX2h0bWwiLCJ0ZXJtcyIsInNpdHJlZ2V4Iiwic2lycmVnZXgiLCJzaXJwaHJlZ2V4IiwicGFyc2Vfc2kiLCJodG1sIiwic3N0cjAiLCJzc3RyMSIsInNzdHIyIiwicGFyc2Vfc3N0X3htbCIsInN0cmF5d3NyZWdleCIsIndyaXRlX3NzdF94bWwiLCJzaXRhZyIsInBhcnNlX0JydEJlZ2luU3N0IiwicGFyc2Vfc3N0X2JpbiIsIndyaXRlX0JydEJlZ2luU3N0Iiwid3JpdGVfQnJ0U1NUSXRlbSIsIndyaXRlX3NzdF9iaW4iLCJfSlMyQU5TSSIsInBhcnNlX0NSWVBUT1ZlcnNpb24iLCJwYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyIsInBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5IiwiY29tcHMiLCJwYXJzZV9EYXRhU3BhY2VNYXAiLCJwYXJzZV9EYXRhU3BhY2VEZWZpbml0aW9uIiwicGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlciIsInBhcnNlX1ByaW1hcnkiLCJwYXJzZV9FbmNyeXB0aW9uSGVhZGVyIiwidmFsaWQiLCJwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIiLCJwYXJzZV9FbmNyeXB0aW9uSW5mbyIsInZlcnMiLCJwYXJzZV9FbmNJbmZvU3RkIiwicGFyc2VfRW5jSW5mb0V4dCIsInBhcnNlX0VuY0luZm9BZ2wiLCJ2ZXJpZmllciIsIktleURhdGEiLCJwYXJzZV9SQzRDcnlwdG9IZWFkZXIiLCJwYXJzZV9SQzRIZWFkZXIiLCJjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxIiwiUGFzc3dvcmQiLCJWZXJpZmllciIsIlBhc3N3b3JkQXJyYXkiLCJQYXNzd29yZERlY29kZWQiLCJQYXNzd29yZEJ5dGUiLCJJbnRlcm1lZGlhdGUxIiwiSW50ZXJtZWRpYXRlMiIsIkludGVybWVkaWF0ZTMiLCJjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMSIsIlBhZEFycmF5IiwiSW5pdGlhbENvZGUiLCJYb3JNYXRyaXgiLCJSb3IiLCJCeXRlIiwiWG9yUm9yIiwiYnl0ZTEiLCJieXRlMiIsIkNyZWF0ZVhvcktleV9NZXRob2QxIiwiWG9yS2V5IiwiQ3VycmVudEVsZW1lbnQiLCJDaGFyIiwicGFzc3dvcmQiLCJPYmZ1c2NhdGlvbkFycmF5IiwiVGVtcCIsIlBhc3N3b3JkTGFzdENoYXIiLCJQYWRJbmRleCIsImNyeXB0b19EZWNyeXB0RGF0YV9NZXRob2QxIiwiRGF0YSIsIlhvckFycmF5SW5kZXgiLCJYb3JBcnJheSIsIlZhbHVlIiwiY3J5cHRvX01ha2VYb3JEZWNyeXB0b3IiLCJwYXJzZV9YT1JPYmZ1c2NhdGlvbiIsInBhcnNlX0ZpbGVQYXNzSGVhZGVyIiwicGFyc2VfRmlsZVBhc3MiLCJSVEYiLCJydGZfdG9fc2hlZXQiLCJydGZfdG9fc2hlZXRfc3RyIiwicm93dGYiLCJydGZyZSIsImxhc3RfaW5kZXgiLCJydGZfdG9fd29ya2Jvb2siLCJzaGVldF90b19ydGYiLCJoZXgyUkdCIiwicmdiMkhTTCIsIkciLCJINiIsIkwyIiwiaHNsMlJHQiIsImhzbCIsImg2IiwicmdiX3RpbnQiLCJoZXgiLCJ0aW50IiwiREVGX01EVyIsIk1BWF9NRFciLCJNSU5fTURXIiwiTURXIiwicHgiLCJjaGFyMndpZHRoIiwiY3ljbGVfd2lkdGgiLCJjb2xsdyIsImZpbmRfbWR3X2NvbHciLCJkZWx0YSIsIl9NRFciLCJjb2xsIiwiREVGX1BQSSIsIlBQSSIsInB0IiwiWExNTFBhdHRlcm5UeXBlTWFwIiwicGFyc2VfYm9yZGVycyIsInN0eWxlcyIsInRoZW1lcyIsImJvcmRlciIsInBhcnNlX2ZpbGxzIiwicGFyc2VfZm9udHMiLCJwYXJzZV9udW1GbXRzIiwid3JpdGVfbnVtRm10cyIsIk5GIiwiY2VsbFhGX3VpbnQiLCJjZWxsWEZfYm9vbCIsInBhcnNlX2NlbGxYZnMiLCJ4ZiIsImFsaWdubWVudCIsIndyaXRlX2NlbGxYZnMiLCJjZWxsWGZzIiwicGFyc2Vfc3R5X3htbCIsIm51bUZtdFJlZ2V4IiwiY2VsbFhmUmVnZXgiLCJmaWxsc1JlZ2V4IiwiZm9udHNSZWdleCIsImJvcmRlcnNSZWdleCIsIndyaXRlX3N0eV94bWwiLCJwYXJzZV9CcnRGbXQiLCJzdEZtdENvZGUiLCJ3cml0ZV9CcnRGbXQiLCJwYXJzZV9CcnRGb250IiwiYmxzIiwidW5kZXJsaW5lIiwiZmFtaWx5IiwiYkNoYXJTZXQiLCJ3cml0ZV9CcnRGb250Iiwic3NzIiwic2NoZW1lIiwiWExTQkZpbGxQVE5hbWVzIiwicmV2X1hMU0JGaWxsUFROYW1lcyIsInBhcnNlX0JydEZpbGwiLCJ3cml0ZV9CcnRGaWxsIiwiZmxzIiwicGFyc2VfQnJ0WEYiLCJpeGZlUGFyZW50IiwiaWZtdCIsIndyaXRlX0JydFhGIiwiZmxvdyIsIndyaXRlX0JseGYiLCJwYXJzZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRTdHlsZSIsIndyaXRlX0JydEJlZ2luVGFibGVTdHlsZXMiLCJkZWZUYWJsZVN0eWxlIiwiZGVmUGl2b3RTdHlsZSIsInBhcnNlX3N0eV9iaW4iLCJ3cml0ZV9GTVRTX2JpbiIsIndyaXRlX0ZPTlRTX2JpbiIsIndyaXRlX0ZJTExTX2JpbiIsIndyaXRlX0JPUkRFUlNfYmluIiwid3JpdGVfQ0VMTFNUWUxFWEZTX2JpbiIsIndyaXRlX0NFTExYRlNfYmluIiwid3JpdGVfU1RZTEVTX2JpbiIsIndyaXRlX0RYRlNfYmluIiwid3JpdGVfVEFCTEVTVFlMRVNfYmluIiwid3JpdGVfc3R5X2JpbiIsIlhMU1hUaGVtZUNsclNjaGVtZSIsInBhcnNlX2NsclNjaGVtZSIsInBhcnNlX2ZvbnRTY2hlbWUiLCJwYXJzZV9mbXRTY2hlbWUiLCJjbHJzcmVnZXgiLCJmbnRzcmVnZXgiLCJmbXRzcmVnZXgiLCJwYXJzZV90aGVtZUVsZW1lbnRzIiwidGhlbWVsdHJlZ2V4IiwicGFyc2VfdGhlbWVfeG1sIiwid3JpdGVfdGhlbWUiLCJUaGVtZXMiLCJwYXJzZV9UaGVtZSIsImR3VGhlbWVWZXJzaW9uIiwidGhlbWVYTUwiLCJwYXJzZV9Db2xvclRoZW1lIiwicGFyc2VfRnVsbENvbG9yRXh0IiwicGFyc2VfSWN2WEYiLCJwYXJzZV9YRkV4dEdyYWRpZW50IiwicGFyc2VfRXh0UHJvcCIsImV4dFR5cGUiLCJwYXJzZV9YRkV4dCIsImNleHRzIiwidXBkYXRlX3hmZXh0IiwieGZleHQiLCJ4ZmUiLCJwYXJzZV9CcnRNZHRpbmZvIiwid3JpdGVfQnJ0TWR0aW5mbyIsInBhcnNlX0JydE1kYiIsIndyaXRlX0JydE1kYiIsIm1kYiIsIndyaXRlX0JydEJlZ2luRXNmbWQiLCJwYXJzZV9CcnRCZWdpbkVzbWRiIiwid3JpdGVfQnJ0QmVnaW5Fc21kYiIsImNtIiwicGFyc2VfeGxtZXRhX2JpbiIsIm1ldGF0eXBlIiwid3JpdGVfeGxtZXRhX2JpbiIsInBhcnNlX3hsbWV0YV94bWwiLCJsYXN0bWV0YSIsIndyaXRlX3hsbWV0YV94bWwiLCJwYXJzZV9jY194bWwiLCJwYXJzZV9CcnRDYWxjQ2hhaW5JdGVtJCIsInBhcnNlX2NjX2JpbiIsInBhcnNlX3hsaW5rX3htbCIsInBhcnNlX3hsaW5rX2JpbiIsInBhcnNlX2RyYXdpbmciLCJfc2hhcGVpZCIsIndyaXRlX2NvbW1lbnRzX3ZtbCIsImNvbW1lbnRzIiwiY3NpemUiLCJiYm94IiwiZmlsbG9wdHMiLCJmaWxscGFybSIsImZpbGx4bWwiLCJzaGFkYXRhIiwic2hlZXRfaW5zZXJ0X2NvbW1lbnRzIiwidGhyZWFkZWQiLCJwZW9wbGUiLCJwYXJzZV9jb21tZW50c194bWwiLCJhdXRob3JzIiwiY29tbWVudExpc3QiLCJhdXRodGFnIiwiY21udHRhZyIsInRleHRNYXRjaCIsIndyaXRlX2NvbW1lbnRzX3htbCIsImlhdXRob3IiLCJsYXN0YXV0aG9yIiwidHMiLCJwYXJzZV90Y21udF94bWwiLCJ0aWR4Iiwid3JpdGVfdGNtbnRfeG1sIiwiY2FyciIsInJvb3RpZCIsInRjb3B0cyIsInBhcnNlX3Blb3BsZV94bWwiLCJ3cml0ZV9wZW9wbGVfeG1sIiwicGVyc29uIiwicGFyc2VfQnJ0QmVnaW5Db21tZW50IiwicmZ4Iiwid3JpdGVfQnJ0QmVnaW5Db21tZW50IiwicGFyc2VfQnJ0Q29tbWVudEF1dGhvciIsIndyaXRlX0JydENvbW1lbnRBdXRob3IiLCJwYXJzZV9jb21tZW50c19iaW4iLCJ3cml0ZV9jb21tZW50c19iaW4iLCJDVF9WQkEiLCJtYWtlX3ZiYV94bHMiLCJuZXdjZmIiLCJuZXdwYXRoIiwiZmlsbF92YmFfeGxzIiwidmJhIiwiVkJBRk1UUyIsInBhcnNlX2RzX2JpbiIsInBhcnNlX2RzX3htbCIsInBhcnNlX21zX2JpbiIsInBhcnNlX21zX3htbCIsInJjcmVnZXgiLCJyY2Jhc2UiLCJyY2Z1bmMiLCJjUmVsIiwiclJlbCIsImZzdHIiLCJjcmVmcmVnZXgiLCIkMCIsIiQ0IiwiJDUiLCJzaGlmdF9mb3JtdWxhX3hsc3giLCJfeGxmbiIsInBhcnNlcmVhZDEiLCJwYXJzZV9Db2xSZWxVIiwicGFyc2VfUmdjZUFyZWEiLCJwYXJzZV9SZ2NlQXJlYV9CSUZGMiIsInBhcnNlX1JnY2VBcmVhUmVsIiwicGFyc2VfUmdjZUxvYyIsInBhcnNlX1JnY2VMb2NfQklGRjIiLCJwYXJzZV9SZ2NlRWxmTG9jIiwicGFyc2VfUmdjZUxvY1JlbCIsInBhcnNlX1JnY2VMb2NSZWxfQklGRjIiLCJjbCIsInJsIiwicGFyc2VfUHRnQXJlYSIsImFyZWEiLCJwYXJzZV9QdGdBcmVhM2QiLCJpeHRpIiwicGFyc2VfUHRnQXJlYUVyciIsInBhcnNlX1B0Z0FyZWFFcnIzZCIsInBhcnNlX1B0Z0FyZWFOIiwicGFyc2VfUHRnQXJyYXkiLCJwYXJzZV9QdGdBdHRyQmF4Y2VsIiwiYml0U2VtaSIsImJpdEJheGNlbCIsInBhcnNlX1B0Z0F0dHJDaG9vc2UiLCJwYXJzZV9QdGdBdHRyR290byIsImJpdEdvdG8iLCJwYXJzZV9QdGdBdHRySWYiLCJiaXRJZiIsInBhcnNlX1B0Z0F0dHJJZkVycm9yIiwicGFyc2VfUHRnQXR0clNlbWkiLCJwYXJzZV9QdGdBdHRyU3BhY2VUeXBlIiwicGFyc2VfUHRnQXR0clNwYWNlIiwicGFyc2VfUHRnQXR0clNwYWNlU2VtaSIsInBhcnNlX1B0Z1JlZiIsInBhcnNlX1B0Z1JlZk4iLCJwYXJzZV9QdGdSZWYzZCIsInBhcnNlX1B0Z0Z1bmMiLCJpZnRhYiIsIkZ0YWJBcmdjIiwiRnRhYiIsInBhcnNlX1B0Z0Z1bmNWYXIiLCJjcGFyYW1zIiwidGFiIiwicGFyc2V0YWIiLCJDZXRhYiIsInBhcnNlX1B0Z0F0dHJTdW0iLCJwYXJzZV9QdGdFeHAiLCJwYXJzZV9QdGdFcnIiLCJwYXJzZV9QdGdJbnQiLCJwYXJzZV9QdGdCb29sIiwicGFyc2VfUHRnTnVtIiwicGFyc2VfUHRnU3RyIiwicGFyc2VfU2VyQXIiLCJwYXJzZV9QdGdFeHRyYU1lbSIsInBhcnNlX1B0Z0V4dHJhQXJyYXkiLCJwYXJzZV9QdGdOYW1lIiwibmFtZWluZGV4IiwicGFyc2VfUHRnTmFtZVgiLCJwYXJzZV9QdGdOYW1lWF9CSUZGNSIsInBhcnNlX1B0Z01lbUFyZWEiLCJwYXJzZV9QdGdNZW1GdW5jIiwicGFyc2VfUHRnUmVmRXJyIiwicGFyc2VfUHRnUmVmRXJyM2QiLCJwYXJzZV9QdGdNZW1FcnIiLCJwYXJzZV9QdGdNZW1Ob01lbSIsInBhcnNlX1B0Z1RibCIsInBhcnNlX1B0Z0VsZkxvYyIsInBhcnNlX1B0Z0VsZk5vb3AiLCJwYXJzZV9QdGdFbGZDb2wiLCJwYXJzZV9QdGdFbGZDb2xTIiwicGFyc2VfUHRnRWxmQ29sU1YiLCJwYXJzZV9QdGdFbGZDb2xWIiwicGFyc2VfUHRnRWxmTGVsIiwicGFyc2VfUHRnRWxmUmFkaWNhbCIsInBhcnNlX1B0Z0VsZlJhZGljYWxMZWwiLCJwYXJzZV9QdGdFbGZSYWRpY2FsUyIsInBhcnNlX1B0Z0VsZlJ3IiwicGFyc2VfUHRnRWxmUndWIiwiUHRnTGlzdFJUIiwicGFyc2VfUHRnTGlzdCIsInBhcnNlX1B0Z1N4TmFtZSIsInBhcnNlX1B0Z1NoZWV0IiwicGFyc2VfUHRnRW5kU2hlZXQiLCJwYXJzZV9QdGdNZW1BcmVhTiIsInBhcnNlX1B0Z01lbU5vTWVtTiIsInBhcnNlX1B0Z0F0dHJOb29wIiwiUHRnVHlwZXMiLCJQdGdEdXBlcyIsIlB0ZzE4IiwiUHRnMTkiLCJwYXJzZV9SZ2JFeHRyYSIsInBhcnNlX1JnY2UiLCJwdGdzIiwic3RyaW5naWZ5X2FycmF5IiwiUHRnQmluT3AiLCJmb3JtdWxhX3F1b3RlX3NoZWV0X25hbWUiLCJzbmFtZSIsImdldF9peHRpX3JhdyIsInN1cGJvb2tzIiwiWFRJIiwiZ2V0X2l4dGkiLCJpeHRpcmF3Iiwic3RyaW5naWZ5X2Zvcm11bGEiLCJzdGFjayIsIm5hbWVpZHgiLCJsYXN0X3NwIiwic3AiLCJmZmxlbiIsImxibCIsImJvb2tpZHgiLCJleHRlcm5ib29rIiwiaXh0aWRhdGEiLCJscCIsInJwIiwicGFyc2VkZiIsImZuZCIsIlB0Z05vbkRpc3AiLCJfbGVmdCIsInJnY2IiLCJwYXJzZV9YTFNDZWxsUGFyc2VkRm9ybXVsYSIsInBhcnNlX0Zvcm11bGFWYWx1ZSIsIndyaXRlX0Zvcm11bGFWYWx1ZSIsInBhcnNlX0Zvcm11bGEiLCJjYmYiLCJ3cml0ZV9Gb3JtdWxhIiwibzEiLCJvMyIsInBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhIiwicGFyc2VfWExTQkFycmF5UGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JTaGFyZWRQYXJzZWRGb3JtdWxhIiwib2RzX3RvX2NzZl9mb3JtdWxhIiwiY3NmX3RvX29kc19mb3JtdWxhIiwib2RzX3RvX2NzZl8zRCIsImNzZl90b19vZHNfM0QiLCJfc3Nmb3B0cyIsImJyb3dzZXJfaGFzX01hcCIsImdldF9zc3RfaWQiLCJyZXZhcnIiLCJjb2xfb2JqX3ciLCJ3Y2giLCJkZWZhdWx0X21hcmdpbnMiLCJtYXJnaW5zIiwiZGVmcyIsImdldF9jZWxsX3N0eWxlIiwic2FmZV9mb3JtYXQiLCJmbXRpZCIsImZpbGxpZCIsImNoZWNrX3dzIiwicGFyc2Vfd3NfeG1sX2RpbSIsIm1lcmdlY3JlZ2V4Iiwic2hlZXRkYXRhcmVnZXgiLCJobGlua3JlZ2V4IiwiZGltcmVnZXgiLCJjb2xyZWdleCIsImFmcmVnZXgiLCJtYXJnaW5yZWdleCIsInNoZWV0cHJyZWdleCIsInNoZWV0cHJyZWdleDIiLCJzdnNyZWdleCIsInBhcnNlX3dzX3htbCIsImRhdGExIiwiZGF0YTIiLCJtdGNoIiwic2hlZXRQciIsInBhcnNlX3dzX3htbF9zaGVldHByIiwicGFyc2Vfd3NfeG1sX3NoZWV0cHIyIiwic3ZzIiwicGFyc2Vfd3NfeG1sX3NoZWV0dmlld3MiLCJwYXJzZV93c194bWxfY29scyIsInBhcnNlX3dzX3htbF9kYXRhIiwiYWZpbHRlciIsInBhcnNlX3dzX3htbF9hdXRvZmlsdGVyIiwiX21lcmdlIiwicGFyc2Vfd3NfeG1sX2hsaW5rcyIsInBhcnNlX3dzX3htbF9tYXJnaW5zIiwidG1wcmVmIiwid3JpdGVfd3NfeG1sX21lcmdlcyIsIndyaXRlX3dzX3htbF9zaGVldHByIiwibmVlZGVkIiwiY25hbWUiLCJvdXRsaW5lcHJvcHMiLCJzaGVldHByb3RfZGVmZmFsc2UiLCJzaGVldHByb3RfZGVmdHJ1ZSIsIndyaXRlX3dzX3htbF9wcm90ZWN0aW9uIiwicm5nIiwibWFyZ2luIiwid3JpdGVfd3NfeG1sX21hcmdpbnMiLCJzZWVuY29sIiwiY29saSIsImNvbG0iLCJjb2xNIiwid3JpdGVfd3NfeG1sX2NvbHMiLCJ3cml0ZV93c194bWxfYXV0b2ZpbHRlciIsIm5hbWVzIiwic3ZpZXdyZWdleCIsIndyaXRlX3dzX3htbF9zaGVldHZpZXdzIiwic3ZpZXciLCJ3cml0ZV93c194bWxfY2VsbCIsIm9sZHQiLCJvbGR2IiwiY2VsbHJlZ2V4Iiwicm93cmVnZXgiLCJpc3JlZ2V4IiwicmVmcmVnZXgiLCJtYXRjaF92IiwibWF0Y2hfZiIsInNkYXRhIiwiY3JlZiIsInRhZ3IiLCJ0YWdjIiwic3N0ciIsImZ0YWciLCJkb19mb3JtYXQiLCJhcnJheWYiLCJzaGFyZWRmIiwicm93b2JqIiwicm93cml0ZSIsInNoZWV0U3R1YnMiLCJtYXJyIiwibWFycmxlbiIsInhsZW4iLCJyc3RhcnRpIiwib3V0YSIsInJzbGljZSIsIl9fX2YiLCJfdGFnIiwiX3IiLCJ3cml0ZV93c194bWxfZGF0YSIsInBhcmFtcyIsIl9jZWxsIiwid3JpdGVfd3NfeG1sIiwicmRhdGEiLCJfZHJhd2luZyIsInJlbGMiLCJwYXJzZV9CcnRSb3dIZHIiLCJ3cml0ZV9CcnRSb3dIZHIiLCJuY29sc3BhbiIsImxjcyIsImNhZGRyIiwiZmlyc3QiLCJ3cml0ZV9yb3dfaGVhZGVyIiwicGFyc2VfQnJ0V3NEaW0iLCJ3cml0ZV9CcnRXc0RpbSIsInBhcnNlX0JydFdzRm10SW5mbyIsInBhcnNlX0JydFdzUHJvcCIsIndyaXRlX0JydFdzUHJvcCIsInBhcnNlX0JydENlbGxCbGFuayIsIndyaXRlX0JydENlbGxCbGFuayIsIm5jZWxsIiwicGFyc2VfQnJ0U2hvcnRCbGFuayIsIndyaXRlX0JydFNob3J0QmxhbmsiLCJwYXJzZV9CcnRDZWxsQm9vbCIsImZCb29sIiwid3JpdGVfQnJ0Q2VsbEJvb2wiLCJwYXJzZV9CcnRTaG9ydEJvb2wiLCJ3cml0ZV9CcnRTaG9ydEJvb2wiLCJwYXJzZV9CcnRDZWxsRXJyb3IiLCJiRXJyb3IiLCJ3cml0ZV9CcnRDZWxsRXJyb3IiLCJwYXJzZV9CcnRTaG9ydEVycm9yIiwid3JpdGVfQnJ0U2hvcnRFcnJvciIsInBhcnNlX0JydENlbGxJc3N0IiwiaXNzdCIsIndyaXRlX0JydENlbGxJc3N0IiwicGFyc2VfQnJ0U2hvcnRJc3N0Iiwid3JpdGVfQnJ0U2hvcnRJc3N0IiwicGFyc2VfQnJ0Q2VsbFJlYWwiLCJ3cml0ZV9CcnRDZWxsUmVhbCIsInBhcnNlX0JydFNob3J0UmVhbCIsIndyaXRlX0JydFNob3J0UmVhbCIsInBhcnNlX0JydENlbGxSayIsIndyaXRlX0JydENlbGxSayIsInBhcnNlX0JydFNob3J0UmsiLCJ3cml0ZV9CcnRTaG9ydFJrIiwicGFyc2VfQnJ0Q2VsbFJTdHJpbmciLCJwYXJzZV9CcnRDZWxsU3QiLCJ3cml0ZV9CcnRDZWxsU3QiLCJwYXJzZV9CcnRTaG9ydFN0Iiwid3JpdGVfQnJ0U2hvcnRTdCIsInBhcnNlX0JydEZtbGFCb29sIiwicGFyc2VfQnJ0Rm1sYUVycm9yIiwicGFyc2VfQnJ0Rm1sYU51bSIsInBhcnNlX0JydEZtbGFTdHJpbmciLCJwYXJzZV9CcnRNZXJnZUNlbGwiLCJ3cml0ZV9CcnRNZXJnZUNlbGwiLCJ3cml0ZV9CcnRCZWdpbk1lcmdlQ2VsbHMiLCJwYXJzZV9CcnRITGluayIsInJlbElkIiwid3JpdGVfQnJ0SExpbmsiLCJsb2NpZHgiLCJwYXJzZV9CcnRQYW5lIiwicGFyc2VfQnJ0QXJyRm1sYSIsImZBbHdheXNDYWxjIiwicGFyc2VfQnJ0U2hyRm1sYSIsIndyaXRlX0JydENvbEluZm8iLCJCcnRNYXJnaW5LZXlzIiwicGFyc2VfQnJ0TWFyZ2lucyIsIndyaXRlX0JydE1hcmdpbnMiLCJwYXJzZV9CcnRCZWdpbldzVmlldyIsIndyaXRlX0JydEJlZ2luV3NWaWV3IiwiV29ya2Jvb2siLCJ3cml0ZV9CcnRDZWxsSWdub3JlRUMiLCJ3cml0ZV9CcnRTaGVldFByb3RlY3Rpb24iLCJwYXJzZV9CcnREVmFsIiwicGFyc2VfQnJ0RFZhbDE0IiwicGFyc2Vfd3NfYmluIiwiYWkiLCJhZiIsIlJSIiwiYWlpIiwid3JpdGVfd3NfYmluX2NlbGwiLCJsYXN0X3NlZW4iLCJ3cml0ZV9DRUxMVEFCTEUiLCJjYXAiLCJ3cml0ZV9NRVJHRUNFTExTIiwid3JpdGVfQ09MSU5GT1MiLCJ3cml0ZV9JR05PUkVFQ1MiLCJ3cml0ZV9ITElOS1MiLCJ3cml0ZV9MRUdBQ1lEUkFXSU5HIiwid3JpdGVfQVVUT0ZJTFRFUiIsIndyaXRlX1dTVklFV1MyIiwid3JpdGVfU0hFRVRQUk9URUNUIiwid3JpdGVfd3NfYmluIiwicGFyc2VfQ2FjaGUiLCJuZiIsInBhcnNlX2NoYXJ0IiwiY3NoZWV0IiwibmMiLCJwYXJzZV9jc194bWwiLCJwYXJzZV9CcnRDc1Byb3AiLCJwYXJzZV9jc19iaW4iLCJXQlByb3BzRGVmIiwiV0JWaWV3RGVmIiwiU2hlZXREZWYiLCJDYWxjUHJEZWYiLCJwdXNoX2RlZmF1bHRzX2FycmF5IiwicHVzaF9kZWZhdWx0cyIsInBhcnNlX3diX2RlZmF1bHRzIiwic2FmZTE5MDQiLCJiYWRjaGFycyIsImNoZWNrX3dzX25hbWUiLCJfZ29vZCIsImNoZWNrX3diX25hbWVzIiwiTiIsImNvZGVzIiwiY24iLCJjaGVja193YiIsIlNoZWV0cyIsIndibnNyZWdleCIsInBhcnNlX3diX3htbCIsInhtbG5zIiwiZG5hbWUiLCJkbnN0YXJ0Iiwid3JpdGVfd2JfeG1sIiwid3JpdGVfbmFtZXMiLCJ3b3JrYm9va1ByIiwicGFyc2VfQnJ0QnVuZGxlU2giLCJ3cml0ZV9CcnRCdW5kbGVTaCIsInBhcnNlX0JydFdiUHJvcCIsInN0ck5hbWUiLCJ3cml0ZV9CcnRXYlByb3AiLCJwYXJzZV9CcnRGUlRBcmNoSUQkIiwicGFyc2VfQnJ0TmFtZSIsInBhcnNlX3diX2JpbiIsIk5hbWVzIiwid3JpdGVfQlVORExFU0hTIiwidml6Iiwid3JpdGVfQnJ0RmlsZVZlcnNpb24iLCJ3cml0ZV9CcnRCb29rVmlldyIsIndyaXRlX0JPT0tWSUVXUyIsInZpc3RhYiIsIndyaXRlX3diX2JpbiIsInBhcnNlX3diIiwicGFyc2Vfd3MiLCJwYXJzZV9jcyIsInBhcnNlX21zIiwicGFyc2VfZHMiLCJwYXJzZV9zdHkiLCJwYXJzZV90aGVtZSIsInBhcnNlX3NzdCIsInBhcnNlX2NtbnQiLCJwYXJzZV9jYyIsInBhcnNlX3hsaW5rIiwicGFyc2VfeGxtZXRhIiwid3JpdGVfd2IiLCJ3cml0ZV93cyIsIndyaXRlX3N0eSIsIndyaXRlX3NzdCIsIndyaXRlX2NtbnQiLCJ3cml0ZV94bG1ldGEiLCJhdHRyZWdleGcyIiwiYXR0cmVnZXgyIiwieGxtbF9wYXJzZXhtbHRhZyIsIndvcmRzIiwieGxtbF9wYXJzZXhtbHRhZ29iaiIsIlhMTUxGb3JtYXRNYXAiLCJ4bG1sX2Zvcm1hdCIsInhsbWxfc2V0X2N1c3Rwcm9wIiwib3ZhbCIsInNhZmVfZm9ybWF0X3hsbWwiLCJwcm9jZXNzX3N0eWxlX3hsbWwiLCJzdGFnIiwiSSIsInBhcnNlX3hsbWxfZGF0YSIsImNzdHkiLCJzaWQiLCJpbnRlcmlvcnMiLCJ4bG1sX2NsZWFuX2NvbW1lbnQiLCJwYXJzZV94bG1sX3htbCIsIm9wZW5pbmciLCJpc2h0bWwiLCJfbyIsImh0bWxfdG9fd29ya2Jvb2siLCJzaGVldG5hbWVzIiwiY3Vyc2hlZXQiLCJzaGVldG5hbWUiLCJkdGFnIiwiZGlkeCIsImZpZHgiLCJwaWR4IiwiY3N0eXMiLCJ3c3Byb3BzIiwicmF3X1JuMyIsImNtYSIsImNtZCIsInNzZmlkeCIsIl9jb2wiLCJfTmFtZWRSYW5nZSIsIl9EZWZpbmVkTmFtZSIsIkF1dG9GaWx0ZXIiLCJwYXJzZV9mb2RzIiwicGFnZW1hcmdpbnMiLCJwYXJzZV94bG1sIiwiZml4X3JlYWRfb3B0cyIsIndyaXRlX3Byb3BzX3hsbWwiLCJ3cml0ZV93Yl94bG1sIiwid3JpdGVfc3R5X3hsbWwiLCJ3cml0ZV9uYW1lX3hsbWwiLCJ3cml0ZV9uYW1lc194bG1sIiwid3JpdGVfd3NfeGxtbF9uYW1lcyIsIndyaXRlX3dzX3hsbWxfd3NvcHRzIiwid3JpdGVfd3NfeGxtbF9jb21tZW50Iiwid3JpdGVfd3NfeGxtbF9jZWxsIiwibWkiLCJ3cml0ZV93c194bG1sX3JvdyIsIndyaXRlX3dzX3hsbWxfdGFibGUiLCJza2lwIiwid3JpdGVfd3NfeGxtbCIsIndyaXRlX3hsbWwiLCJwYXJzZV9jb21wb2JqIiwiQ09OVElOVUVfUlQiLCJzbHVycCIsIlJlY29yZFR5cGUiLCJuZXh0cnQiLCJYTFNSZWNvcmRFbnVtIiwibGwiLCJzYWZlX2Zvcm1hdF94ZiIsIm1ha2VfY2VsbCIsInBhcnNlX3dvcmtib29rIiwiRGlyZWN0b3J5IiwibGFzdF9mb3JtdWxhIiwiY3VyX3NoZWV0IiwiUHJlYW1ibGUiLCJsYXN0Y2VsbCIsImxhc3RfY2VsbCIsImNtbnQiLCJybmdDIiwicm5nUiIsInRlbXBfdmFsIiwiY291bnRyeSIsIlhGcyIsInBhbGV0dGUiLCJnZXRfcmdiIiwicHJvY2Vzc19jZWxsX3N0eWxlIiwieGZkIiwiYWRkY2VsbCIsImZpbGVfZGVwdGgiLCJhZmkiLCJvYmplY3RzIiwibGFzdF9SVCIsIkJJRkYyRm10IiwiQklGRjJGbXRUYWJsZSIsIkZpbHRlckRhdGFiYXNlcyIsImxhc3RfbGJsIiwic2Vlbl9jb2RlcGFnZSIsImNwdmFsIiwidG1wcmkiLCJmYWtlYnM4IiwiX2ZyIiwiX2ZjIiwiX2ZlIiwiX2FycmF5c3RhcnQiLCJfaiIsIl9peGZlIiwiYjRpZHgiLCJiMmlkeCIsIm5vdGVvYmoiLCJQU0NMU0lEIiwicGFyc2VfeGxzX3Byb3BzIiwiRFNJIiwiRG9jU3VtbWFyeSIsIlNJIiwiU3VtbWFyeSIsIndyaXRlX3hsc19wcm9wcyIsIkRTRW50cmllcyIsIlNFbnRyaWVzIiwiQ0VudHJpZXMiLCJLZXlzIiwiRG9jU3VtbWFyeVJFIiwiU3VtbWFyeVJFIiwiQ0VudHJpZXMyIiwicGFyc2VfeGxzY2ZiIiwiQ29tcE9iaiIsIldCIiwiV29ya2Jvb2tQIiwiX2RhdGEiLCJ3cml0ZV94bHNjZmIiLCJ3YnBhdGgiLCJ3cml0ZV9iaWZmX2J1ZiIsIndyaXRlX2JpZmZfY29udGludWUiLCJ3cml0ZV9CSUZGMkJFUlIiLCJ3cml0ZV9CSUZGMkxBQkVMIiwid3JpdGVfd3NfYmlmZjJfY2VsbCIsIndyaXRlX3dzX2JpZmYyIiwid3JpdGVfYmlmZjJfYnVmIiwid3JpdGVfRk9OVFNfYmlmZjgiLCJ3cml0ZV9GTVRTX2JpZmY4Iiwid3JpdGVfRkVBVCIsIndyaXRlX0NFTExYRlNfYmlmZjgiLCJ3cml0ZV93c19iaWZmOF9obGlua3MiLCJITCIsIndyaXRlX3dzX2NvbHNfYmlmZjgiLCJ3cml0ZV93c19iaWZmOF9jZWxsIiwid3JpdGVfd3NfYmlmZjgiLCJfV0IiLCJfc2hlZXQiLCJNQVhfUk9XUyIsIndyaXRlX2JpZmY4X2dsb2JhbCIsIl9zaGVldHMiLCJfd2IiLCJibGVuIiwid3JpdGVfYmlmZjhfYnVmIiwiZml4X3dyaXRlX29wdHMiLCJodG1sX3RvX3NoZWV0IiwibXRjaDIiLCJDUyIsImhkIiwibWlkeCIsIl90IiwibWFrZV9odG1sX3JvdyIsIkhUTUxfQkVHSU4iLCJIVE1MX0VORCIsImJvb2tfbmV3IiwiYm9va19hcHBlbmRfc2hlZXQiLCJtYWtlX2h0bWxfcHJlYW1ibGUiLCJzaGVldF90b19odG1sIiwic2hlZXRfYWRkX2RvbSIsIm9yX1IiLCJvcl9DIiwiaXNfZG9tX2VsZW1lbnRfaGlkZGVuIiwiZWx0cyIsIkFlbHRzIiwiQWVsdGkiLCJwYXJzZV9kb21fdGFibGUiLCJ0YWJsZV90b19ib29rIiwiZ2V0X2NvbXB1dGVkX3N0eWxlIiwiZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbiIsInBhcnNlX3RleHRfcCIsIm51bWJlcl9mb3JtYXRzX29kcyIsInBhcnNlX2NvbnRlbnRfeG1sIiwiTkZ0YWciLCJzaGVldGFnIiwicm93dGFnIiwiU2hlZXROYW1lcyIsImN0YWciLCJ0ZXh0cCIsInRleHRwaWR4IiwidGV4dFIiLCJyb3dfb2wiLCJudW1iZXJfZm9ybWF0X21hcCIsIm1yYW5nZSIsIm1SIiwibUMiLCJyb3dwZWF0IiwiY29scGVhdCIsImF0YWciLCJfUmVmIiwiY3JlYXRvcmlkeCIsImlzc3R1YiIsImludGFibGUiLCJycHRSIiwicnB0IiwibnJhbmdlIiwicHRwIiwicGFyc2Vfb2RzIiwid3JpdGVfc3R5bGVzX29kcyIsIm1hc3Rlcl9zdHlsZXMiLCJ3cml0ZV9jb250ZW50X29kcyIsIndyaXRlX3RleHRfcCIsIm51bGxfY2VsbF94bWwiLCJjb3ZlcmVkX2NlbGxfeG1sIiwiUk9XUyIsIl9GcmVmIiwidGV4dF9wIiwiX3RndCIsIndyaXRlX2F1dG9tYXRpY19zdHlsZXNfb2RzIiwiY2lkeCIsImNvbG9iaiIsImZvZHMiLCJ3cml0ZV9vZHMiLCJ1OF90b19kYXRhdmlldyIsInU4c3RyIiwidTgiLCJzdHJ1OCIsInU4Y29udGFpbnMiLCJ1OGNvbmNhdCIsInU4YSIsInBvcGNudCIsInJlYWREZWNpbWFsMTI4TEUiLCJleHAiLCJtYW50aXNzYSIsIndyaXRlRGVjaW1hbDEyOExFIiwicGFyc2VfdmFyaW50NDkiLCJwdHIiLCJ2YXJpbnQiLCJ3cml0ZV92YXJpbnQ0OSIsInZhcmludF90b19pMzIiLCJpMzIiLCJwYXJzZV9zaGFsbG93Iiwid3JpdGVfc2hhbGxvdyIsInByb3RvIiwibWFwcGEiLCJwYXJzZV9pd2FfZmlsZSIsIndyaXRlX2l3YV9maWxlIiwiaWFzIiwiaWEiLCJtaWRhdGEiLCJhaXBheWxvYWQiLCJtaWQiLCJwYXJzZV9zbmFwcHlfY2h1bmsiLCJjaHVua3MiLCJkZWNvbXByZXNzX2l3YV9maWxlIiwiY29tcHJlc3NfaXdhX2ZpbGUiLCJmcmFtZSIsInBhcnNlX29sZF9zdG9yYWdlIiwicnNzdCIsImR2IiwiZGF0YV9vZmZzZXQiLCJpZWVlIiwicGFyc2VfbmV3X3N0b3JhZ2UiLCJkMTI4Iiwid3JpdGVfbmV3X3N0b3JhZ2UiLCJ3cml0ZV9vbGRfc3RvcmFnZSIsInBhcnNlX2NlbGxfc3RvcmFnZSIsInBhcnNlX1RTUF9SZWZlcmVuY2UiLCJwYiIsInBhcnNlX1RTVF9UYWJsZURhdGFMaXN0IiwibGUiLCJydHAiLCJydHByZWYiLCJtdHlwZSIsInRzd3BzYSIsInBhcnNlX1RTVF9UaWxlUm93SW5mbyIsIl9oIiwiX2wiLCJfbSIsIndpZGVfb2Zmc2V0cyIsInVzZWRfc3RvcmFnZV91OCIsInVzZWRfc3RvcmFnZSIsInVzZWRfc3RvcmFnZV9vZmZzZXRzIiwib2Zmc2V0cyIsInBhcnNlX1RTVF9UaWxlIiwicGFyc2VfVFNUX1RhYmxlTW9kZWxBcmNoaXZlIiwidGlsZSIsInRsIiwiX3RpbGUiLCJwYXJzZV9UU1RfVGFibGVJbmZvQXJjaGl2ZSIsInRhYmxlcmVmIiwicGFyc2VfVE5fU2hlZXRBcmNoaXZlIiwic2hhcGVvZmZzIiwicGFyc2VfVE5fRG9jdW1lbnRBcmNoaXZlIiwic2hlZXRvZmZzIiwicm9vdDIiLCJwYXJzZV9udW1iZXJzX2l3YSIsImluZGljZXMiLCJwYWNrZXRzIiwicGFja2V0IiwiZG9jcm9vdCIsIml3YW0iLCJ3cml0ZV90aWxlX3JvdyIsInRyaSIsIlNTVCIsImxhc3Rfb2Zmc2V0IiwiY2VsbF9zdG9yYWdlIiwiX2R2IiwiX2xhc3Rfb2Zmc2V0IiwiX2NlbGxfc3RvcmFnZSIsImNlbGxvYWQiLCJfY2VsbG9hZCIsIndyaXRlX251bWJlcnNfaXdhIiwidHJ1bmMiLCJkZXBlbmRlbnRzIiwib2xkX2NvbnRlbnQiLCJyYXcxIiwieDIiLCJwYWNrZXQyIiwieTIiLCJpbmRpY2VzX3ZhcmludCIsIml2aSIsIm1lc3MiLCJ4aSIsInNoZWV0cm9vdHJlZiIsImNydWlkc3JlZiIsIm9sZGJ1Y2tldCIsIl94IiwiY3J1aWRzIiwidXVpZCIsInJvd19oZWFkZXJzIiwicm93X2hlYWRlcl9yZWYiLCJiYXNlX2J1Y2tldCIsIl9idWNrZXQiLCJjb2xfaGVhZGVyX3JlZiIsInNzdHJlZiIsInNlbnRyeSIsInN4Iiwic3N0cm9vdCIsInN4aSIsInNzdGRhdGEiLCJuZXdzc3QiLCJzeSIsInJhdzMyIiwidGlsZXJlZiIsInRlbnRyeSIsInR4IiwidGlsZXJvb3QiLCJ0aWxlZGF0YSIsInJvd2xvYWQiLCJSMiIsInRpbGVyb3ciLCJ0eSIsInJhdzMiLCJmaXhfb3B0c19mdW5jIiwiZ2V0X3NoZWV0X3R5cGUiLCJzYWZlX3BhcnNlX3dicmVscyIsIndicmVscyIsInNhZmVfcGFyc2Vfc2hlZXQiLCJyZWxzUGF0aCIsInNoZWV0UmVscyIsInN0eXBlIiwiZGZpbGUiLCJkcmVsc3AiLCJkcmF3IiwiY2hhcnRwIiwiY3JlbHNwIiwidGNvbW1lbnRzIiwic3RyaXBfZnJvbnRfc2xhc2giLCJfemlwIiwiZGlyIiwieGxzYiIsImJpbm5hbWUiLCJwcm9wZGF0YSIsImN1c3Rwcm9wcyIsImRlcHMiLCJ3YnNoZWV0cyIsIndiZXh0Iiwid2JyZWxzaSIsIndicmVsc2ZpbGUiLCJubW9kZSIsIndzbG9vcCIsInNuanNlZW4iLCJzbmoiLCJwYXJzZV94bHN4Y2ZiIiwiZHNtIiwic2VkcyIsImVpbmZvIiwid3JpdGVfemlwX3hsc3hiIiwid3JpdGVfemlwX3hsc3giLCJ2YmFmbXQiLCJfc24iLCJ3c3JlbHMiLCJfdHlwZSIsIm5lZWRfdm1sIiwibmVlZHRjIiwicmVhZF9jZmIiLCJyZWFkX3ppcCIsInJlYWRfcGxhaW50ZXh0IiwibWFpbiIsInJlYWRfcGxhaW50ZXh0X3JhdyIsInJlYWRfdXRmMTYiLCJic3RyaWZ5IiwicmVhZF9wcm4iLCJyZWFkU3luYyIsImFiIiwidnUiLCJ3cml0ZV9jZmJfY3RyIiwid3JpdGVfemlwX3R5cGUiLCJ3cml0ZV96aXBfZGVub3VlbWVudCIsIm9vcHRzIiwiZnR5cGUiLCJ3cml0ZV9jZmJfdHlwZSIsIndyaXRlX3N0cmluZ190eXBlIiwiYm9tIiwid3JpdGVfc3R4dF90eXBlIiwid3JpdGVfYmluYXJ5X3R5cGUiLCJ3cml0ZVN5bmMiLCJzaGVldF90b190eHQiLCJzaGVldF90b19jc3YiLCJtYWtlX2pzb25fcm93IiwiZGVmdmFsIiwicmF3IiwiaXNlbXB0eSIsIm91dGkiLCJjb3VudGVyIiwiaGVhZGVyX2NudCIsInFyZWciLCJtYWtlX2Nzdl9yb3ciLCJGUyIsInR4dCIsImVuZHJlZ2V4Iiwic2hlZXRfdG9fZm9ybXVsYWUiLCJjbWRzIiwic2hlZXRfYWRkX2pzb24iLCJqcyIsIkpTIiwid3NfZ2V0X2NlbGxfc3R1YiIsImpzb25fdG9fc2hlZXQiLCJSQyIsIndiX3NoZWV0X2lkeCIsInNoIiwicm9sbCIsImJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHkiLCJ2aXMiLCJjZWxsX3NldF9udW1iZXJfZm9ybWF0IiwiY2VsbF9zZXRfaHlwZXJsaW5rIiwiY2VsbF9zZXRfaW50ZXJuYWxfbGluayIsImNlbGxfYWRkX2NvbW1lbnQiLCJhdXRob3IiLCJzaGVldF9zZXRfYXJyYXlfZm9ybXVsYSIsImR5bmFtaWMiLCJybmdzdHIiLCJzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyIsIlhMU1gudXRpbHMiLCJYTFNYLlNTRiIsImV4cG9ydF9qc29uX3RvX2V4Y2VsIiwidGgiLCJqc29uRGF0YSIsImRlZmF1bHRUaXRsZSIsIndzX25hbWUiLCJ3Ym91dCIsIlhMU1gud3JpdGUiLCJGaWxlU2F2ZXIiLCJwcm9jZXNzQ3N2RGF0YSIsImRhdGFTdHJpbmciLCJkYXRhU3RyaW5nTGluZXMiLCJpbXBvcnRDc3ZGcm9tRmlsZSIsInJlYWRlciIsIlhMU1gucmVhZCIsIndzbmFtZSIsImltcG9ydGVkIiwidHJhbnNmb3JtRXhwb3J0Q29sdW1uIiwiX3BhcmFtcyIsIkNzdiIsIkV4cG9ydENzdiIsIkV4Y2VsLmV4cG9ydF9qc29uX3RvX2V4Y2VsIl0sIm1hcHBpbmdzIjoiMDJDQUNBLFNBQVNBLElBQWEsT0FFcEIsT0FBT0MsRUFERyxJQUFJLFFBQ0wsUUFBRixZQUFBQSxFQUFTLE1BQU07QUFBQSxHQUFNLEVBQzlCLENBRUEsTUFBTUMsR0FBUSxJQUFJQyxJQUFlLENBQUEsRUFFakMsU0FBU0MsTUFBV0QsRUFBUyxDQUczQixRQUFRLElBQU8sTUFBTSxLQUFNLFNBQVMsQ0FDdEMsQ0FDQSxTQUFTRSxNQUFXRixFQUFTLENBR25CLFFBQUEsS0FBSyxNQUFNLEtBQU0sU0FBUyxDQUNwQyxDQUNBLFNBQVNHLE1BQVlILEVBQVMsQ0FHcEIsUUFBQSxNQUFNLE1BQU0sS0FBTSxTQUFTLENBQ3JDLENBQ0EsTUFBTUksR0FBUSxJQUFJSixJQUFhLENBQ3BCRyxHQUFBLGFBQWMsb0JBQXFCLEdBQUdILENBQUksQ0FDckQsRUFDTUssR0FBTyxJQUFJTCxJQUFhLENBQ3BCRSxHQUFBLFlBQWEsb0JBQXFCLEdBQUdGLENBQUksQ0FDbkQsRUFDTU0sR0FBTyxJQUFJTixJQUFhLENBQ3BCQyxHQUFBLFlBQWEsb0JBQXFCLEdBQUdELENBQUksQ0FDbkQsRUFDTU8sR0FBUSxJQUFJUCxJQUFhLENBQ3pCLEdBQUEsQ0FBQyxRQUFRLElBQ1gsT0FFRixNQUFNUSxFQUFhWCxLQUNJLENBQ3JCLE1BQU1ZLEVBQU0sQ0FBQyxhQUFjLG9CQUFxQixHQUFHVCxDQUFJLEVBQ3ZEQyxHQUFRLEdBQUdRLENBQUcsRUFDZCxNQUFNQyxFQUFTLENBQUMsTUFBUUYsRUFBWSxZQUFZLEVBQ2hEUCxHQUFRLEdBQUdTLENBQU0sQ0FJbEIsQ0FDSCxFQUNNQyxHQUFTLENBQ2Is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LEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxjQUFlLEVBQUVDLENBQW1CLEVBQ3ZELElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxjQUFlLEVBQUVFLEVBQW1CLEVBQ3ZELEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixNQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLE1BQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsTUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixNQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLE1BQWUsQ0FBRSxFQUFFLEVBQUksQ0FDaEMsRUFDQyxNQUFPLENBQ04sYUFBY3hDLEVBQ2QsWUFBYVEsRUFDYixZQUFhcEIsQ0FDZixDQUNBLElBRUEsU0FBU3NELEdBQVVDLEVBQUssQ0FDdkIsSUFBSXBqQixFQUFPLENBQUUsRUFBRS9yQixFQUFJbXZDLEVBQUksTUFBTTF2QixFQUFRLEVBQUdqaUYsRUFBSSxFQUN4QzR4RyxFQUFPLEdBQ1gsR0FBR3B2QyxFQUFHLEtBQUt4aUUsR0FBR3dpRSxFQUFFLE9BQVEsRUFBRXhpRSxFQUFHLENBQzVCLElBQUk2N0MsRUFBSXVtQyxHQUFZNWYsRUFBRXhpRSxDQUFDLENBQUMsRUFDeEIsT0FBTzY3QyxFQUFFLENBQUMsRUFBRSxRQUFRLFFBQVEsRUFBRSxFQUFDLENBRzlCLElBQUssWUFBYSxNQUdsQixJQUFLLFVBQVcsTUFHaEIsSUFBSyxVQUNKLEdBQUcsQ0FBQ0EsRUFBRSxJQUFLLE1BRVosSUFBSyxXQUNMLElBQUssWUFBYTB5QyxFQUFLLE9BQVMsRUFBRyxNQUNuQyxJQUFLLFlBQWEsTUFHbEIsSUFBSyxXQUNKLEdBQUcxeUMsRUFBRSxLQUFPLElBQUssTUFDakIweUMsRUFBSyxHQUFLM3JCLEdBQU0sU0FBUy9tQixFQUFFLElBQUssRUFBRSxDQUFDLEVBQ25DLE1BR0QsSUFBSyxXQUNKLEdBQUcsQ0FBQ0EsRUFBRSxJQUFLLE1BRVosSUFBSyxZQUNMLElBQUssYUFBYzB5QyxFQUFLLFFBQVUsRUFBRyxNQUNyQyxJQUFLLGFBQWMsTUFHbkIsSUFBSyxTQUFVQSxFQUFLLEtBQU8xeUMsRUFBRSxJQUFLLE1BR2xDLElBQUssTUFBTzB5QyxFQUFLLEdBQUsxeUMsRUFBRSxJQUFLLE1BRzdCLElBQUssVUFDSixHQUFHLENBQUNBLEVBQUUsSUFBSyxNQUVaLElBQUssV0FDTCxJQUFLLFlBQWEweUMsRUFBSyxPQUFTLEVBQUcsTUFDbkMsSUFBSyxZQUFhLE1BR2xCLElBQUssS0FDSixHQUFHLENBQUMxeUMsRUFBRSxJQUFLLE1BQ1gsT0FBT0EsRUFBRSxJQUFHLENBQ1gsSUFBSyxTQUFVMHlDLEVBQUssS0FBTyxTQUFVLE1BQ3JDLElBQUssbUJBQW9CQSxFQUFLLEtBQU8sb0JBQXFCLE1BQzFELElBQUssbUJBQW9CQSxFQUFLLEtBQU8sb0JBQXFCLEtBQzFELENBRUYsSUFBSyxNQUNMLElBQUssT0FBUUEsRUFBSyxFQUFJLEVBQUcsTUFDekIsSUFBSyxPQUFRLE1BR2IsSUFBSyxLQUNKLEdBQUcxeUMsRUFBRSxLQUFPLElBQUssTUFFbEIsSUFBSyxNQUNMLElBQUssT0FBUTB5QyxFQUFLLEVBQUksRUFBRyxNQUN6QixJQUFLLE9BQVEsTUFHYixJQUFLLEtBQ0osR0FBRzF5QyxFQUFFLEtBQU8sSUFBSyxNQUVsQixJQUFLLE1BQ0wsSUFBSyxPQUFRMHlDLEVBQUssRUFBSSxFQUFHLE1BQ3pCLElBQUssT0FBUSxNQUdiLElBQUssU0FDRDF5QyxFQUFFLE1BQUsweUMsRUFBSyxNQUFRMXlDLEVBQUUsSUFBSSxNQUFNLEVBQUUsQ0FBQyxHQUN0QyxNQUNELElBQUssVUFBVyxJQUFLLFdBQVksSUFBSyxXQUFZLE1BR2xELElBQUssVUFBVzB5QyxFQUFLLE9BQVMxeUMsRUFBRSxJQUFLLE1BQ3JDLElBQUssV0FBWSxJQUFLLFlBQWEsSUFBSyxZQUFhLE1BR3JELElBQUssYUFBYzB5QyxFQUFLLE9BQVMxeUMsRUFBRSxJQUFLLE1BQ3hDLElBQUssY0FBZSxJQUFLLGVBQWdCLElBQUssZUFBZ0IsTUFHOUQsSUFBSyxVQUFXLE1BQ2hCLElBQUssV0FBWSxJQUFLLFlBQWEsSUFBSyxZQUFhLE1BR3JELElBQUssVUFBVyxJQUFLLFdBQVksSUFBSyxZQUFhLE1BQ25ELElBQUssT0FBUSsxRCxFQUFPLEdBQU0sTUFDMUIsSUFBSyxTQUFVQSxFQUFPLEdBQU8sTUFDN0IsUUFDQyxHQUFHLzFELEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFNLElBQU0sQ0FBQysxRCxFQUFNLE1BQU0sSUFBSSxNQUFNLDRCQUE4Qi8xRCxFQUFFLENBQUMsQ0FBQyxDQUMxRixDQUNELENBQ0QsT0FBTzB5QyxDQUNSLENBRUEsSUFBSXNqQixHQUF5QixVQUFXLENBQ3ZDLElBQUlDLEVBQVM1dEIsR0FBUyxHQUFHLEVBQUc2dEIsRUFBVTd0QixHQUFTLEtBQUssRUFFcEQsU0FBUzh0QixFQUFRenNHLEVBQUcsQ0FFbkIsSUFBSWQsRUFBSWMsRUFBRSxNQUFNdXNHLENBQU0sRUFDdEIsR0FBRyxDQUFDcnRHLEVBQUcsTUFBTyxDQUFDLEVBQUUsSUFBSyxFQUFFLEVBQUUsRUFFMUIsSUFBSSxFQUFjLENBQUMsRUFBRSxJQUFLLEVBQUVtK0UsR0FBWW4rRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3pDa3RHLEVBQU1wc0csRUFBRSxNQUFNd3NHLENBQU8sRUFDekIsT0FBR0osSUFBSyxFQUFFLEVBQUlELEdBQVVDLEVBQUksQ0FBQyxDQUFDLEdBQ3ZCLENBQ1AsQ0FDRCxJQUFJTSxFQUFTLGdCQUFpQkMsRUFBTyxpQkFDckMsT0FBTyxTQUFrQkMsRUFBSSxDQUM1QixPQUFPQSxFQUFHLFFBQVFGLEVBQU8sRUFBRSxFQUFFLE1BQU1DLENBQUksRUFBRSxJQUFJRixDQUFPLEVBQUUsT0FBTyxTQUFTenNHLEVBQUcsQ0FBRSxPQUFPQSxFQUFFLENBQUUsQ0FBRSxDQUMxRixDQUNBLElBSUk2c0csR0FBMkIsVUFBNEIsQ0FDMUQsSUFBSUMsRUFBVSxhQUNkLFNBQVNDLEVBQVcvakIsRUFBTWdrQixFQUFPQyxFQUFPLENBQ3ZDLElBQUlwbEYsRUFBMEIsQ0FBQSxFQUUzQm1oRSxFQUFLLEdBQUduaEUsRUFBTSxLQUFLLDZCQUE2QixFQUNoRG1oRSxFQUFLLE1BQU1uaEUsRUFBTSxLQUFLLHdCQUEwQm1oRSxFQUFLLEtBQU8sR0FBRyxFQUMvREEsRUFBSyxJQUFJbmhFLEVBQU0sS0FBSyxhQUFlbWhFLEVBQUssR0FBSyxLQUFLLEVBQ2xEQSxFQUFLLFNBQVNuaEUsRUFBTSxLQUFLLHVCQUF1QixFQUNoRG1oRSxFQUFLLFFBQVFuaEUsRUFBTSxLQUFLLG9CQUFvQixFQUMvQ21sRixFQUFNLEtBQUssZ0JBQWtCbmxGLEVBQU0sS0FBSyxFQUFFLEVBQUksSUFBSSxFQUUvQ21oRSxFQUFLLElBQUtna0IsRUFBTSxLQUFLLEtBQUssRUFBR0MsRUFBTSxLQUFLLE1BQU0sR0FDOUNqa0IsRUFBSyxJQUFLZ2tCLEVBQU0sS0FBSyxLQUFLLEVBQUdDLEVBQU0sS0FBSyxNQUFNLEdBQzlDamtCLEVBQUssU0FBVWdrQixFQUFNLEtBQUssS0FBSyxFQUFHQyxFQUFNLEtBQUssTUFBTSxHQUV0RCxJQUFJcmpHLEVBQVFvL0UsRUFBSyxRQUFVLEdBQzNCLE9BQUdwL0UsR0FBUyxlQUFpQkEsR0FBUyxRQUFTQSxFQUFRLE1BQy9DQSxHQUFTLGNBQWFBLEVBQVEsT0FDbkNBLEdBQVMsS0FBTW9qRyxFQUFNLEtBQUssSUFBTXBqRyxFQUFRLEdBQUcsRUFBR3FqRyxFQUFNLEtBQUssS0FBT3JqRyxFQUFRLEdBQUcsR0FFOUVxakcsRUFBTSxLQUFLLFNBQVMsRUFDYmprQixDQUNQLENBR0QsU0FBU2trQixFQUFVbHRHLEVBQUcsQ0FDckIsSUFBSW10RyxFQUFtRCxDQUFDLENBQUUsRUFBQ250RyxFQUFFLEVBQUUsQ0FBRSxDQUFBLEVBQ2pFLE9BQUlBLEVBQUUsR0FFSEEsRUFBRSxHQUFHK3NHLEVBQVcvc0csRUFBRSxFQUFHbXRHLEVBQU0sQ0FBQyxFQUFHQSxFQUFNLENBQUMsQ0FBQyxFQUVuQ0EsRUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUlBLEVBQU0sQ0FBQyxFQUFFLFFBQVFMLEVBQVEsT0FBTyxFQUFJSyxFQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FKL0QsRUFLaEIsQ0FFRCxPQUFPLFNBQWtCUCxFQUFJLENBQzVCLE9BQU9BLEVBQUcsSUFBSU0sQ0FBUyxFQUFFLEtBQUssRUFBRSxDQUNsQyxDQUNBLElBR0lFLEdBQVcsMENBQTJDQyxHQUFXLGVBQ2pFQyxHQUFhLCtDQUNqQixTQUFTQyxHQUFTMXdFLEVBQUc3bUMsRUFBTSxDQUMxQixJQUFJdzNHLEVBQU94M0csRUFBT0EsRUFBSyxTQUFXLEdBQzlCb3NDLEVBQUksQ0FBQSxFQUNSLE9BQUl2RixHQUlEQSxFQUFFLE1BQU0sdUJBQXVCLEdBQ2pDdUYsRUFBRSxFQUFJaTdDLEdBQVlxQixHQUFTN2hELEVBQUUsTUFBTUEsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQ3BGdUYsRUFBRSxFQUFJczhDLEdBQVM3aEQsQ0FBQyxFQUNiMndFLElBQU1wckUsRUFBRSxFQUFJeTdDLEdBQVd6N0MsRUFBRSxDQUFDLElBR2J2RixFQUFFLE1BQU13d0UsRUFBUSxJQUNoQ2pyRSxFQUFFLEVBQUlzOEMsR0FBUzdoRCxDQUFDLEVBQ2hCdUYsRUFBRSxFQUFJaTdDLEdBQVlxQixJQUFVN2hELEVBQUUsUUFBUXl3RSxHQUFZLEVBQUUsRUFBRSxNQUFNRixFQUFRLEdBQUcsQ0FBQSxHQUFJLEtBQUssRUFBRSxFQUFFLFFBQVExd0IsR0FBUyxFQUFFLENBQUMsQ0FBQyxFQUN0Rzh3QixJQUFNcHJFLEVBQUUsRUFBSXlxRSxHQUFXUCxHQUFTbHFFLEVBQUUsQ0FBQyxDQUFDLElBSWpDQSxHQWpCTyxDQUFFLEVBQUcsRUFBRSxDQWtCdEIsQ0FHQSxJQUFJcXJFLEdBQVEsaURBQ1JDLEdBQVEsNkJBQ1JDLEdBQVEsOEJBQ1osU0FBU0MsR0FBY2gvRixFQUFpQjVZLEVBQWMsQ0FDckQsSUFBSWtLLEVBQWEsQ0FBQSxFQUFha2pFLEVBQUssR0FDbkMsR0FBRyxDQUFDeDBELEVBQU0sT0FBTzFPLEVBRWpCLElBQUkwNEYsRUFBTWhxRixFQUFLLE1BQU02K0YsRUFBSyxFQUMxQixHQUFHN1UsRUFBSyxDQUNQeDFCLEVBQUt3MUIsRUFBSSxDQUFDLEVBQUUsUUFBUThVLEdBQU0sRUFBRSxFQUFFLE1BQU1DLEVBQUssRUFDekMsUUFBUSxFQUFJLEVBQUcsR0FBS3ZxQyxFQUFHLE9BQVEsRUFBRSxFQUFHLENBQ25DLElBQUl2aUUsRUFBSTBzRyxHQUFTbnFDLEVBQUcsQ0FBQyxFQUFFLEtBQUksRUFBSXB0RSxDQUFJLEVBQ2hDNkssR0FBSyxPQUFNWCxFQUFFQSxFQUFFLE1BQU0sRUFBSVcsRUFDNUIsQ0FDRCszRixFQUFNL2IsR0FBWStiLEVBQUksQ0FBQyxDQUFDLEVBQUcxNEYsRUFBRSxNQUFRMDRGLEVBQUksTUFBTzE0RixFQUFFLE9BQVMwNEYsRUFBSSxXQUMvRCxDQUNELE9BQU8xNEYsQ0FDUixDQUVBLElBQUkydEcsR0FBZSxtQkFDbkIsU0FBU0MsR0FBY2xWLEVBQWE1aUcsRUFBaUIsQ0FDcEQsR0FBRyxDQUFDQSxFQUFLLFFBQVMsTUFBTyxHQUN6QixJQUFJNkssRUFBSSxDQUFDeTdFLEVBQVUsRUFDbkJ6N0UsRUFBRUEsRUFBRSxNQUFNLEVBQUswK0UsR0FBVSxNQUFPLEtBQU0sQ0FDckMsTUFBT08sR0FBVyxDQUFDLEVBQ25CLE1BQU84WSxFQUFJLE1BQ1gsWUFBYUEsRUFBSSxNQUNqQixDQUFBLEVBQ0QsUUFBUW4rRixFQUFJLEVBQUdBLEdBQUttK0YsRUFBSSxPQUFRLEVBQUVuK0YsRUFBSyxHQUFHbStGLEVBQUluK0YsQ0FBQyxHQUFLLEtBQ25ELEtBQUl5RixFQUFpQjA0RixFQUFJbitGLENBQUMsRUFDdEJzekcsRUFBUSxPQUNUN3RHLEVBQUUsRUFBRzZ0RyxHQUFTN3RHLEVBQUUsR0FFbEI2dEcsR0FBUyxLQUNMN3RHLEVBQUUsSUFBR0EsRUFBRSxFQUFJLElBQ1pBLEVBQUUsRUFBRSxNQUFNMnRHLEVBQVksSUFBR0UsR0FBUyx5QkFDckNBLEdBQVMsSUFBTXJ3QixHQUFVeDlFLEVBQUUsQ0FBQyxFQUFJLFFBRWpDNnRHLEdBQVMsUUFDVGx0RyxFQUFFQSxFQUFFLE1BQU0sRUFBS2t0RyxFQUVoQixPQUFHbHRHLEVBQUUsT0FBTyxJQUFJQSxFQUFFQSxFQUFFLE1BQU0sRUFBSyxTQUFXQSxFQUFFLENBQUMsRUFBRUEsRUFBRSxDQUFDLEVBQUUsUUFBUSxLQUFLLEdBQUcsR0FDN0RBLEVBQUUsS0FBSyxFQUFFLENBQ2pCLENBRUEsU0FBU210RyxHQUFrQnAvRixFQUFNLENBQ2hDLE1BQU8sQ0FBQ0EsRUFBSyxXQUFXLENBQUMsRUFBR0EsRUFBSyxXQUFXLENBQUMsQ0FBQyxDQUMvQyxDQUdBLFNBQVNxL0YsR0FBY3IvRixFQUFNNVksRUFBYyxDQUMxQyxJQUFJa0ssRUFBYSxDQUFBLEVBQ2Jtc0csRUFBTyxHQUNYLE9BQUE5cEIsR0FBYTN6RSxFQUFNLFNBQW9CdlQsRUFBS3F2RSxFQUFHZ1ksRUFBSSxDQUNsRCxPQUFPQSxFQUFFLENBQ1IsSUFBSyxLQUNKeGlGLEVBQUUsTUFBUTdFLEVBQUksQ0FBQyxFQUFHNkUsRUFBRSxPQUFTN0UsRUFBSSxDQUFDLEVBQUcsTUFDdEMsSUFBSyxJQUNKNkUsRUFBRSxLQUFLN0UsQ0FBRyxFQUFHLE1BQ2QsSUFBSyxLQUNKLE1BQU8sR0FFUixJQUFLLElBQ0pneEcsRUFBTyxHQUFNLE1BQ2QsSUFBSyxJQUNKQSxFQUFPLEdBQU8sTUFFZixRQUVDLEdBREczaEMsRUFBRSxFQUNGLENBQUMyaEMsR0FBUXIyRyxFQUFLLElBQUssTUFBTSxJQUFJLE1BQU0sdUJBQXlCMHNGLEVBQUcsU0FBUyxFQUFFLENBQUMsQ0FDL0UsQ0FDSCxDQUFFLEVBQ014aUYsQ0FDUixDQUVBLFNBQVNndUcsR0FBa0J0VixFQUFLLzNGLEVBQUcsQ0FDbEMsT0FBSUEsSUFBR0EsRUFBSW10RSxHQUFRLENBQUMsR0FDcEJudEUsRUFBRSxZQUFZLEVBQUcrM0YsRUFBSSxLQUFLLEVBQzFCLzNGLEVBQUUsWUFBWSxFQUFHKzNGLEVBQUksTUFBTSxFQUNwQi8zRixDQUNSLENBRUEsSUFBSXN0RyxHQUFtQjNuQixHQUV2QixTQUFTNG5CLEdBQWN4VixFQUFpQixDQUN2QyxJQUFJMVYsRUFBS04sS0FDVEssR0FBYUMsRUFBSSxJQUEwQmdyQixHQUFrQnRWLENBQUcsQ0FBQyxFQUNqRSxRQUFRbitGLEVBQUksRUFBR0EsRUFBSW0rRixFQUFJLE9BQVEsRUFBRW4rRixFQUFHd29GLEdBQWFDLEVBQUksR0FBeUJpckIsR0FBaUJ2VixFQUFJbitGLENBQUMsQ0FBQyxDQUFDLEVBRXRHLE9BQUF3b0YsR0FBYUMsRUFBSSxLQUNWQSxFQUFHLEtBQ1gsQ0FDQSxTQUFTbXJCLEdBQVN6eEUsRUFBa0MsQ0FHbkQsUUFESS83QixFQUFzQixDQUFBLEVBQUlnaEYsRUFBS2psRCxFQUFJLE1BQU0sRUFBRSxFQUN2Q25pQyxFQUFJLEVBQUdBLEVBQUlvbkYsRUFBRyxPQUFRLEVBQUVwbkYsRUFBR29HLEVBQUVwRyxDQUFDLEVBQUlvbkYsRUFBR3BuRixDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQzVELE9BQU9vRyxDQUNSLENBR0EsU0FBU3l0RyxHQUFvQmp5QyxFQUFNbDBDLEVBQW9CLENBQ3RELElBQUl0bkIsRUFBWSxDQUFBLEVBQ2hCLE9BQUFBLEVBQUUsTUFBUXc3RCxFQUFLLFdBQVcsQ0FBQyxFQUMzQng3RCxFQUFFLE1BQVF3N0QsRUFBSyxXQUFXLENBQUMsRUFFeEJsMEMsR0FBVSxJQUFHazBDLEVBQUssR0FBS2wwQyxFQUFTLEdBQzVCdG5CLENBQ1IsQ0FHQSxTQUFTMHRHLEdBQTJCbHlDLEVBQU0sQ0FDekMsSUFBSXg3RCxFQUFJLENBQUEsRUFDUixPQUFBQSxFQUFFLEdBQUt3N0QsRUFBSyxXQUFXLEVBQUcsTUFBTSxFQUNoQ3g3RCxFQUFFLEVBQUl5dEcsR0FBb0JqeUMsRUFBTSxDQUFDLEVBQ2pDeDdELEVBQUUsRUFBSXl0RyxHQUFvQmp5QyxFQUFNLENBQUMsRUFDakN4N0QsRUFBRSxFQUFJeXRHLEdBQW9CanlDLEVBQU0sQ0FBQyxFQUMxQng3RCxDQUNSLENBR0EsU0FBUzJ0RyxHQUF3Qm55QyxFQUFNLENBT3RDLFFBTkkxL0IsRUFBTTAvQixFQUFLLFdBQVcsQ0FBQyxFQUN2QnBLLEVBQU1vSyxFQUFLLEVBQUkxL0IsRUFBTSxFQUNyQjk3QixFQUFJLENBQUEsRUFDSm90RSxFQUFNNVIsRUFBSyxXQUFXLENBQUMsRUFDdkJveUMsRUFBd0MsQ0FBQSxFQUV0Q3hnQyxLQUFRLEdBQUd3Z0MsRUFBTSxLQUFLLENBQUUsRUFBR3B5QyxFQUFLLFdBQVcsQ0FBQyxFQUFHLEVBQUdBLEVBQUssV0FBVyxFQUFHLE1BQU0sQ0FBQyxDQUFFLEVBR3BGLEdBRkF4N0QsRUFBRSxLQUFPdzdELEVBQUssV0FBVyxFQUFHLE1BQU0sRUFDbEN4N0QsRUFBRSxNQUFRNHRHLEVBQ1BweUMsRUFBSyxHQUFLcEssRUFBSyxNQUFNLElBQUksTUFBTSwwQkFBNEJvSyxFQUFLLEVBQUksT0FBU3BLLENBQUcsRUFDbkYsT0FBT3B4RCxDQUNSLENBR0EsU0FBUzZ0RyxHQUFtQnJ5QyxFQUFNLENBQ2pDLElBQUl4N0QsRUFBSSxDQUFBLEVBQ1J3N0QsRUFBSyxHQUFLLEVBRVYsUUFESTRSLEVBQU01UixFQUFLLFdBQVcsQ0FBQyxFQUNyQjRSLEtBQVEsR0FBR3B0RSxFQUFFLEtBQUsydEcsR0FBd0JueUMsQ0FBSSxDQUFDLEVBQ3JELE9BQU94N0QsQ0FDUixDQUdBLFNBQVM4dEcsR0FBMEJ0eUMsRUFBd0IsQ0FDMUQsSUFBSXg3RCxFQUFzQixDQUFBLEVBQzFCdzdELEVBQUssR0FBSyxFQUVWLFFBREk0UixFQUFNNVIsRUFBSyxXQUFXLENBQUMsRUFDckI0UixLQUFRLEdBQUdwdEUsRUFBRSxLQUFLdzdELEVBQUssV0FBVyxFQUFHLE1BQU0sQ0FBQyxFQUNsRCxPQUFPeDdELENBQ1IsQ0FHQSxTQUFTK3RHLEdBQTBCdnlDLEVBQU0sQ0FDeEMsSUFBSXg3RCxFQUFJLENBQUEsRUFDTSxPQUFBdzdELEVBQUssV0FBVyxDQUFDLEVBQy9CQSxFQUFLLEdBQUssRUFDVng3RCxFQUFFLEdBQUt3N0QsRUFBSyxXQUFXLEVBQUcsTUFBTSxFQUNoQ3g3RCxFQUFFLEtBQU93N0QsRUFBSyxXQUFXLEVBQUcsTUFBTSxFQUNsQ3g3RCxFQUFFLEVBQUl5dEcsR0FBb0JqeUMsRUFBTSxDQUFDLEVBQ2pDeDdELEVBQUUsRUFBSXl0RyxHQUFvQmp5QyxFQUFNLENBQUMsRUFDakN4N0QsRUFBRSxFQUFJeXRHLEdBQW9CanlDLEVBQU0sQ0FBQyxFQUMxQng3RCxDQUNSLENBRUEsU0FBU2d1RyxHQUFjeHlDLEVBQU0sQ0FFNUIsSUFBSTgwQixFQUFNeWQsR0FBMEJ2eUMsQ0FBSSxFQUt4QyxHQUhBODBCLEVBQUksTUFBUTkwQixFQUFLLFdBQVcsRUFBRyxPQUFPLEVBQ3RDODBCLEVBQUksTUFBUTkwQixFQUFLLFdBQVcsQ0FBQyxFQUM3QjgwQixFQUFJLE1BQVE5MEIsRUFBSyxXQUFXLENBQUMsRUFDMUJBLEVBQUssV0FBVyxDQUFDLEdBQUssRUFBTSxNQUFNLElBQUksTUFBTSxxQkFBcUIsRUFDcEUsT0FBTzgwQixDQUNSLENBR0EsU0FBUzJkLEdBQXVCenlDLEVBQU1sMEMsRUFBbUIsQ0FDeEQsSUFBSWtqRCxFQUFNaFAsRUFBSyxFQUFJbDBDLEVBQ2Z0bkIsRUFBSSxDQUFBLEVBQ1JBLEVBQUUsTUFBU3c3RCxFQUFLLFdBQVcsQ0FBQyxFQUFJLEdBQ2hDQSxFQUFLLEdBQUssRUFDVng3RCxFQUFFLE1BQVF3N0QsRUFBSyxXQUFXLENBQUMsRUFDM0IsSUFBSTB5QyxFQUFRLEdBQ1osT0FBT2x1RyxFQUFFLE1BQUssQ0FDYixJQUFLLE9BQVEsSUFBSyxPQUFRLElBQUssT0FBUWt1RyxFQUFTbHVHLEVBQUUsT0FBUyxHQUFPLE1BQ2xFLElBQUssT0FBUWt1RyxFQUFTbHVHLEVBQUUsT0FBUyxFQUFPLE1BQ3hDLElBQUssR0FBR2t1RyxFQUFTbHVHLEVBQUUsT0FBUyxJQUFRQSxFQUFFLE9BQVMsR0FBUUEsRUFBRSxPQUFTLEdBQU8sTUFDekUsUUFBUyxLQUFNLHNDQUF3Q0EsRUFBRSxLQUN6RCxDQUNELEdBQUcsQ0FBQ2t1RyxFQUFPLE1BQU0sSUFBSSxNQUFNLGlDQUFpQyxFQUM1RCxPQUFBbHVHLEVBQUUsVUFBWXc3RCxFQUFLLFdBQVcsQ0FBQyxFQUMvQng3RCxFQUFFLFFBQVV3N0QsRUFBSyxXQUFXLENBQUMsRUFDN0J4N0QsRUFBRSxhQUFldzdELEVBQUssV0FBVyxDQUFDLEVBQ2xDQSxFQUFLLEdBQUssRUFDVng3RCxFQUFFLFFBQVV3N0QsRUFBSyxXQUFZZ1AsRUFBSWhQLEVBQUssR0FBSSxFQUFHLFNBQVMsRUFDdERBLEVBQUssRUFBSWdQLEVBQ0Z4cUUsQ0FDUixDQUdBLFNBQVNtdUcsR0FBeUIzeUMsRUFBTWwwQyxFQUFtQixDQUMxRCxJQUFJdG5CLEVBQUksQ0FBQSxFQUFJd3FFLEVBQU1oUCxFQUFLLEVBQUlsMEMsRUFDM0IsT0FBQWswQyxFQUFLLEdBQUssRUFDVng3RCxFQUFFLEtBQU93N0QsRUFBSyxNQUFNQSxFQUFLLEVBQUdBLEVBQUssRUFBRSxFQUFFLEVBQUdBLEVBQUssR0FBSyxHQUNsRHg3RCxFQUFFLFNBQVd3N0QsRUFBSyxNQUFNQSxFQUFLLEVBQUdBLEVBQUssRUFBRSxFQUFFLEVBQUdBLEVBQUssR0FBSyxHQUN6Q0EsRUFBSyxXQUFXLENBQUMsRUFDOUJ4N0QsRUFBRSxhQUFldzdELEVBQUssTUFBTUEsRUFBSyxFQUFHZ1AsQ0FBRyxFQUFHaFAsRUFBSyxFQUFJZ1AsRUFDNUN4cUUsQ0FDUixDQUdBLFNBQVNvdUcsR0FBcUI1eUMsRUFBTSxDQUNuQyxJQUFJNnlDLEVBQU9aLEdBQW9CanlDLENBQUksRUFDbkMsT0FBTzZ5QyxFQUFLLE1BQUssQ0FDaEIsSUFBSyxHQUFNLE1BQU8sQ0FBQ0EsRUFBSyxNQUFPQyxHQUFpQjl5QyxDQUFVLENBQUMsRUFDM0QsSUFBSyxHQUFNLE1BQU8sQ0FBQzZ5QyxFQUFLLE1BQU9FLEdBQTJCLENBQUMsRUFDM0QsSUFBSyxHQUFNLE1BQU8sQ0FBQ0YsRUFBSyxNQUFPRyxHQUFpQmh6QyxDQUFVLENBQUMsQ0FDM0QsQ0FDRCxNQUFNLElBQUksTUFBTSxpREFBbUQ2eUMsRUFBSyxLQUFLLENBQzlFLENBR0EsU0FBU0MsR0FBaUI5eUMsRUFBa0IsQ0FDM0MsSUFBSThPLEVBQVE5TyxFQUFLLFdBQVcsQ0FBQyxFQUM3QixJQUFJOE8sRUFBUSxLQUFTLEdBQU0sTUFBTSxJQUFJLE1BQU0seUJBQXlCLEVBQ3BFLElBQUlDLEVBQUsvTyxFQUFLLFdBQVcsQ0FBQyxFQUV0QjgwQixFQUFNMmQsR0FBdUJ6eUMsRUFBTStPLENBQUUsRUFDckNra0MsRUFBV04sR0FBeUIzeUMsRUFBTUEsRUFBSyxPQUFTQSxFQUFLLENBQUMsRUFDbEUsTUFBTyxDQUFFLEVBQUUsTUFBTyxFQUFFODBCLEVBQUssRUFBRW1lLEVBQzVCLENBRUEsU0FBU0YsSUFBbUMsQ0FBRSxNQUFNLElBQUksTUFBTSxpREFBaUQsQ0FBSSxDQUVuSCxTQUFTQyxHQUFpQmh6QyxFQUFrQixDQUMzQyxJQUFJa3pDLEVBQVUsQ0FBQyxXQUFXLFlBQVksVUFBVSxXQUFXLGtCQUFrQixpQkFBaUIsZ0JBQWdCLFdBQVcsRUFDekhsekMsRUFBSyxHQUFHLEVBQ1IsSUFBSXF4QixFQUFNcnhCLEVBQUssV0FBV0EsRUFBSyxPQUFTQSxFQUFLLEVBQUcsTUFBTSxFQUNsRHg3RCxFQUFJLENBQUEsRUFDUixPQUFBNnNGLEVBQUksUUFBUWhSLEdBQVUsU0FBbUI3L0MsRUFBRyxDQUMzQyxJQUFJeVosRUFBWXVtQyxHQUFZaGdELENBQUMsRUFDN0IsT0FBT3FnRCxHQUFTNW1DLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FDcEIsSUFBSyxRQUFTLE1BQ2QsSUFBSyxjQUFlLElBQUssZ0JBQWlCLE1BQzFDLElBQUssV0FBWWk1RCxFQUFRLFFBQVEsU0FBUzd4RixFQUFHLENBQUU3YyxFQUFFNmMsQ0FBQyxFQUFJNDRCLEVBQUU1NEIsQ0FBQyxDQUFJLENBQUEsRUFBRyxNQUNoRSxJQUFLLGlCQUFrQjdjLEVBQUUsaUJBQW1CeTFDLEVBQUUsaUJBQWtCejFDLEVBQUUsbUJBQXFCeTFDLEVBQUUsbUJBQW9CLE1BQzdHLElBQUssa0JBQW1CLElBQUssaUJBQWtCejFDLEVBQUUsS0FBTyxDQUFFLEVBQUUsTUFDNUQsSUFBSyxtQkFBb0IsTUFFekIsSUFBSyxnQkFBaUJBLEVBQUUsSUFBTXkxQyxFQUFFLElBQUssTUFDckMsSUFBSyxrQkFBbUIsTUFDeEIsSUFBSyxnQkFBaUJ6MUMsRUFBRSxLQUFLLEtBQUt5MUMsQ0FBQyxFQUFHLE1BQ3RDLFFBQVMsTUFBTUEsRUFBRSxDQUFDLENBQ2xCLENBQ0gsQ0FBRSxFQUNNejFDLENBQ1IsQ0FHQSxTQUFTMnVHLEdBQXNCbnpDLEVBQU1sMEMsRUFBbUIsQ0FDdkQsSUFBSXRuQixFQUFJLENBQUEsRUFDSnF1RyxFQUFPcnVHLEVBQUUsc0JBQXdCeXRHLEdBQW9CanlDLEVBQU0sQ0FBQyxFQUNoRSxHQURtRWwwQyxHQUFVLEVBQzFFK21GLEVBQUssT0FBUyxFQUFHLE1BQU0sSUFBSSxNQUFNLG9DQUFzQ0EsRUFBSyxLQUFLLEVBQ3BGLEdBQUdBLEVBQUssTUFBUSxHQUFLQSxFQUFLLE1BQVEsRUFBRyxNQUFNLElBQUksTUFBTSxvQ0FBc0NBLEVBQUssS0FBSyxFQUNyR3J1RyxFQUFFLE1BQVF3N0QsRUFBSyxXQUFXLENBQUMsRUFBR2wwQyxHQUFVLEVBQ3hDLElBQUlpakQsRUFBSy9PLEVBQUssV0FBVyxDQUFDLEVBQUcsT0FBQWwwQyxHQUFVLEVBQ3ZDdG5CLEVBQUUsaUJBQW1CaXVHLEdBQXVCenlDLEVBQU0rTyxDQUFFLEVBQUdqakQsR0FBVWlqRCxFQUNqRXZxRSxFQUFFLG1CQUFxQm11RyxHQUF5QjN5QyxFQUFNbDBDLENBQU0sRUFDckR0bkIsQ0FDUixDQUVBLFNBQVM0dUcsR0FBZ0JwekMsRUFBb0IsQ0FDNUMsSUFBSXg3RCxFQUFJLENBQUEsRUFDSnF1RyxFQUFPcnVHLEVBQUUsc0JBQXdCeXRHLEdBQW9CanlDLEVBQU0sQ0FBQyxFQUNoRSxHQUFHNnlDLEVBQUssT0FBUyxHQUFLQSxFQUFLLE9BQVMsRUFBRyxLQUFNLDZCQUErQkEsRUFBSyxNQUFRLE1BQVFBLEVBQUssTUFDdEcsT0FBQXJ1RyxFQUFFLEtBQU93N0QsRUFBSyxXQUFXLEVBQUUsRUFDM0J4N0QsRUFBRSxrQkFBb0J3N0QsRUFBSyxXQUFXLEVBQUUsRUFDeEN4N0QsRUFBRSxzQkFBd0J3N0QsRUFBSyxXQUFXLEVBQUUsRUFDckN4N0QsQ0FDUixDQUdBLFNBQVM2dUcsR0FBc0NDLEVBQXFCLENBQ25FLElBQUlDLEVBQVcsRUFBUUMsRUFDbkJDLEVBQWtCekIsR0FBU3NCLENBQVEsRUFDbkNoekUsRUFBTW16RSxFQUFnQixPQUFTLEVBQUcsRUFBR0MsRUFDckNDLEVBQWVDLEVBQWVDLEVBR2xDLElBRkFMLEVBQWdCOXdDLEdBQVlwaUMsQ0FBRyxFQUMvQmt6RSxFQUFjLENBQUMsRUFBSUMsRUFBZ0IsT0FDL0IsRUFBSSxFQUFHLEdBQUtuekUsRUFBSyxFQUFFLEVBQUdrekUsRUFBYyxDQUFDLEVBQUlDLEVBQWdCLEVBQUUsQ0FBQyxFQUNoRSxJQUFJLEVBQUluekUsRUFBSSxFQUFHLEdBQUssRUFBRyxFQUFFLEVBQ3hCb3pFLEVBQWVGLEVBQWMsQ0FBQyxFQUM5QkcsRUFBa0JKLEVBQVcsTUFBMEIsRUFBSixFQUNuREssRUFBaUJMLEdBQVksRUFBSyxNQUNsQ00sRUFBZ0JGLEVBQWdCQyxFQUNoQ0wsRUFBV00sRUFBZ0JILEVBRTVCLE9BQU9ILEVBQVcsS0FDbkIsQ0FHQSxJQUFJTyxHQUE4QyxVQUFXLENBQzVELElBQUlDLEVBQVcsQ0FBQyxJQUFNLElBQU0sSUFBTSxJQUFNLElBQU0sSUFBTSxJQUFNLElBQU0sRUFBTSxJQUFNLEdBQU0sRUFBTSxJQUFNLEdBQU0sQ0FBSSxFQUNwR0MsRUFBYyxDQUFDLE1BQVEsS0FBUSxNQUFRLE1BQVEsS0FBUSxLQUFRLE1BQVEsTUFBUSxLQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxLQUFNLEVBQ3JJQyxFQUFZLENBQUMsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxLQUFRLEtBQVEsS0FBUSxNQUFRLE1BQVEsSUFBUSxLQUFRLEtBQVEsS0FBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsS0FBUSxLQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLEtBQVEsS0FBUSxLQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxJQUFRLEtBQVEsS0FBUSxLQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsS0FBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLE1BQVEsS0FBUSxNQUFRLE1BQVEsTUFBUSxNQUFRLElBQVEsS0FBUSxLQUFRLEtBQVEsS0FBUSxNQUFRLE1BQVEsS0FBUSxLQUFRLEtBQU0sRUFDbjFCQyxFQUFNLFNBQVNDLEVBQU0sQ0FBRSxPQUFTQSxFQUFLLEVBQU1BLEVBQUssS0FBUSxHQUFLLEVBQzdEQyxFQUFTLFNBQVNDLEVBQU9DLEVBQU8sQ0FBRSxPQUFPSixFQUFJRyxFQUFRQyxDQUFLLEdBQzFEQyxFQUF1QixTQUFTakIsRUFBVSxDQUc3QyxRQUZJa0IsRUFBU1IsRUFBWVYsRUFBUyxPQUFTLENBQUMsRUFDeENtQixFQUFpQixJQUNicjJHLEVBQUlrMUcsRUFBUyxPQUFPLEVBQUdsMUcsR0FBSyxFQUFHLEVBQUVBLEVBRXhDLFFBRElzMkcsRUFBT3BCLEVBQVNsMUcsQ0FBQyxFQUNidWlFLEVBQUksRUFBR0EsR0FBSyxFQUFHLEVBQUVBLEVBQ3JCK3pDLEVBQU8sS0FBTUYsR0FBVVAsRUFBVVEsQ0FBYyxHQUNsREMsR0FBUSxFQUFHLEVBQUVELEVBR2YsT0FBT0QsQ0FDVCxFQUNDLE9BQU8sU0FBU0csRUFBcUIsQ0FLcEMsUUFKSXJCLEVBQVd0QixHQUFTMkMsQ0FBUSxFQUM1QkgsRUFBU0QsRUFBcUJqQixDQUFRLEVBQ3RDaDZDLEVBQVFnNkMsRUFBUyxPQUNqQnNCLEVBQW1CbHlDLEdBQVksRUFBRSxFQUM3QnRrRSxFQUFJLEVBQUdBLEdBQUssR0FBSSxFQUFFQSxFQUFHdzJHLEVBQWlCeDJHLENBQUMsRUFBSSxFQUNuRCxJQUFJeTJHLEVBQU1DLEVBQWtCQyxFQVM1QixLQVJJejdDLEVBQVEsS0FBTyxJQUNsQnU3QyxFQUFPTCxHQUFVLEVBQ2pCSSxFQUFpQnQ3QyxDQUFLLEVBQUk4NkMsRUFBT0wsRUFBUyxDQUFDLEVBQUdjLENBQUksRUFDbEQsRUFBRXY3QyxFQUNGdTdDLEVBQU9MLEVBQVMsSUFDaEJNLEVBQW1CeEIsRUFBU0EsRUFBUyxPQUFTLENBQUMsRUFDL0NzQixFQUFpQnQ3QyxDQUFLLEVBQUk4NkMsRUFBT1UsRUFBa0JELENBQUksR0FFbER2N0MsRUFBUSxHQUNiLEVBQUVBLEVBQ0Z1N0MsRUFBT0wsR0FBVSxFQUNqQkksRUFBaUJ0N0MsQ0FBSyxFQUFJODZDLEVBQU9kLEVBQVNoNkMsQ0FBSyxFQUFHdTdDLENBQUksRUFDdEQsRUFBRXY3QyxFQUNGdTdDLEVBQU9MLEVBQVMsSUFDaEJJLEVBQWlCdDdDLENBQUssRUFBSTg2QyxFQUFPZCxFQUFTaDZDLENBQUssRUFBR3U3QyxDQUFJLEVBSXZELElBRkF2N0MsRUFBUSxHQUNSeTdDLEVBQVcsR0FBS3pCLEVBQVMsT0FDbkJ5QixFQUFXLEdBQ2hCRixFQUFPTCxHQUFVLEVBQ2pCSSxFQUFpQnQ3QyxDQUFLLEVBQUk4NkMsRUFBT0wsRUFBU2dCLENBQVEsRUFBR0YsQ0FBSSxFQUN6RCxFQUFFdjdDLEVBQ0YsRUFBRXk3QyxFQUNGRixFQUFPTCxFQUFTLElBQ2hCSSxFQUFpQnQ3QyxDQUFLLEVBQUk4NkMsRUFBT2QsRUFBU2g2QyxDQUFLLEVBQUd1N0MsQ0FBSSxFQUN0RCxFQUFFdjdDLEVBQ0YsRUFBRXk3QyxFQUVILE9BQU9ILENBQ1QsQ0FDQSxJQUdJSSxHQUE2QixTQUFTTCxFQUFxQk0sRUFBTUMsRUFBZUMsRUFBVWpTLEVBQUcsQ0FFNUZBLElBQUdBLEVBQUkrUixHQUNQRSxJQUFVQSxFQUFXckIsR0FBOEJhLENBQVEsR0FDL0QsSUFBSXI3QyxFQUFPODdDLEVBQ1gsSUFBSTk3QyxFQUFRLEVBQUdBLEdBQVMyN0MsRUFBSyxPQUFRLEVBQUUzN0MsRUFDdEM4N0MsRUFBUUgsRUFBSzM3QyxDQUFLLEVBQ2xCODdDLEdBQVNELEVBQVNELENBQWEsRUFDL0JFLEdBQVVBLEdBQU8sRUFBTUEsR0FBTyxHQUFNLElBQ3BDbFMsRUFBRTVwQyxDQUFLLEVBQUk4N0MsRUFDWCxFQUFFRixFQUVILE1BQU8sQ0FBQ2hTLEVBQUdnUyxFQUFlQyxDQUFRLENBQ25DLEVBRUlFLEdBQTBCLFNBQVNWLEVBQXFCLENBQzNELElBQUlPLEVBQWdCLEVBQUdDLEVBQVdyQixHQUE4QmEsQ0FBUSxFQUN4RSxPQUFPLFNBQVNNLEVBQU0sQ0FDckIsSUFBSS9SLEVBQUk4UixHQUEyQixHQUFJQyxFQUFNQyxFQUFlQyxDQUFRLEVBQ3BFLE9BQUFELEVBQWdCaFMsRUFBRSxDQUFDLEVBQ1pBLEVBQUUsQ0FBQyxDQUNaLENBQ0EsRUFHQSxTQUFTb1MsR0FBcUJ0MUMsRUFBTWwwQyxFQUFRbnlCLEVBQU0wcEUsRUFBSyxDQUN0RCxJQUFJNytELEVBQUssQ0FBRSxJQUFLZ3lGLEdBQVl4MkIsQ0FBSSxFQUFHLGtCQUFtQncyQixHQUFZeDJCLENBQUksQ0FBQyxFQUN2RSxPQUFHcm1FLEVBQUssV0FBVTZLLEVBQUUsU0FBVzZ1RyxHQUFzQzE1RyxFQUFLLFFBQVEsR0FDbEYwcEUsRUFBSSxNQUFRNytELEVBQUUsb0JBQXNCQSxFQUFFLFNBQ25DNitELEVBQUksUUFBT0EsRUFBSSxPQUFTZ3lDLEdBQXdCMTdHLEVBQUssUUFBUSxHQUN6RDZLLENBQ1IsQ0FHQSxTQUFTK3dHLEdBQXFCdjFDLEVBQU1sMEMsRUFBbUIwNUQsRUFBSSxDQUMxRCxJQUFJaGhGLEVBQUlnaEYsR0FBTSxHQUFJLE9BQUFoaEYsRUFBRSxLQUFPdzdELEVBQUssV0FBVyxDQUFDLEVBQUdBLEVBQUssR0FBSyxFQUN0RHg3RCxFQUFFLE9BQVMsRUFBR0EsRUFBRSxLQUFPNHVHLEdBQWdCcHpDLENBQVksRUFDakR4N0QsRUFBRSxLQUFPMnVHLEdBQXNCbnpDLEVBQU1sMEMsQ0FBTSxFQUN6Q3RuQixDQUNSLENBQ0EsU0FBU2d4RyxHQUFleDFDLEVBQU1sMEMsRUFBbUJueUIsRUFBTSxDQUN0RCxJQUFJNkssRUFBSyxDQUFFLEtBQU03SyxFQUFLLE1BQVEsRUFBSXFtRSxFQUFLLFdBQVcsQ0FBQyxFQUFJLENBQUcsRUFDMUQsT0FBR3g3RCxFQUFFLEtBQU0rd0csR0FBcUJ2MUMsRUFBTWwwQyxFQUFPLEVBQUd0bkIsQ0FBQyxFQUM1Qzh3RyxHQUFxQnQxQyxFQUFNcm1FLEVBQUssTUFBUSxFQUFJbXlCLEVBQVNBLEVBQVMsRUFBR255QixFQUFNNkssQ0FBQyxFQUN0RUEsQ0FDUixDQUdBLElBQUlpeEcsR0FBb0IsVUFBVyxDQUNsQyxTQUFTQyxFQUFhaHhHLEVBQWUvSyxFQUFvQixDQUN4RCxPQUFPQSxFQUFLLEtBQUksQ0FDZixJQUFLLFNBQVUsT0FBT2c4RyxFQUFpQnR6QyxHQUFjMzlELENBQUMsRUFBRy9LLENBQUksRUFDN0QsSUFBSyxTQUFVLE9BQU9nOEcsRUFBaUJqeEcsRUFBRy9LLENBQUksRUFDOUMsSUFBSyxTQUFVLE9BQU9nOEcsRUFBaUJyekMsSUFBVyxPQUFPLFNBQVM1OUQsQ0FBQyxFQUFJQSxFQUFFLFNBQVMsUUFBUSxFQUFJbytELEdBQUlwK0QsQ0FBQyxFQUFHL0ssQ0FBSSxFQUMxRyxJQUFLLFFBQVUsT0FBT2c4RyxFQUFpQnIzQixHQUFPNTVFLENBQUMsRUFBRy9LLENBQUksQ0FDdEQsQ0FDRCxNQUFNLElBQUksTUFBTSxxQkFBdUJBLEVBQUssSUFBSSxDQUNoRCxDQUdELFNBQVNnOEcsRUFBaUJwMUUsRUFBZ0I1bUMsRUFBb0IsQ0FDN0QsSUFBSTZLLEVBQUk3SyxHQUFRLEdBQ1ptdkYsRUFBbUJ0a0YsRUFBRSxNQUFTLENBQUUsRUFBYSxDQUFFLEVBRS9DZ21DLEVBQU9qSyxFQUFJLE1BQU0sb0JBQW9CLEVBQ3pDLEdBQUcsQ0FBQ2lLLEVBQUssT0FBUSxNQUFNLElBQUksTUFBTSxtQkFBbUIsRUFDcEQsSUFBSTdHLEVBQW1CLENBQUMsRUFBRyxDQUFDLEVBQUUsRUFBRyxFQUFFLENBQUMsRUFBRyxFQUFHLENBQUMsRUFBRSxFQUFHLEVBQUU2RyxFQUFLLE9BQVMsQ0FBQyxDQUFDLEVBQ2xFLE9BQUFBLEVBQUssUUFBUSxTQUFTb3JFLEVBQU92bkMsRUFBRyxDQUM1QixNQUFNLFFBQVF5YSxDQUFFLElBQUdBLEVBQUd6YSxDQUFDLEVBQUksSUFLOUIsUUFKSXduQyxFQUFRLFdBQ1JDLEVBQWEsRUFDYi8yRyxFQUNBZ3ZFLEVBQUksR0FDRGh2RSxFQUFNODJHLEVBQU0sS0FBS0QsQ0FBSyxHQUFJLENBQ2hDLE9BQU83MkcsRUFBSSxDQUFDLEVBQUMsQ0FDWixJQUFLLFNBQ0osSUFBSXdULEVBQU9xakcsRUFBTSxNQUFNRSxFQUFZRCxFQUFNLFVBQVk5MkcsRUFBSSxDQUFDLEVBQUUsTUFBTSxFQUdsRSxHQUZHd1QsRUFBSyxDQUFDLEdBQUssTUFBS0EsRUFBT0EsRUFBSyxNQUFNLENBQUMsR0FDdEMsRUFBRXc3RCxFQUNDeDdELEVBQUssT0FBUSxDQUVmLElBQUlxMUIsRUFBTyxDQUFDLEVBQUdyMUIsRUFBTSxFQUFFLEdBQUcsRUFDdkIsTUFBTSxRQUFRdTJFLENBQUUsRUFBR0EsRUFBR3phLENBQUMsRUFBRU4sQ0FBQyxFQUFJbm1DLEVBQzVCa2hELEVBQUc1QixHQUFZLENBQUMsRUFBRTdZLEVBQUcsRUFBRU4sQ0FBQyxDQUFDLENBQUMsRUFBSW5tQyxDQUNuQyxDQUNELEtBQ0QsQ0FDRGt1RSxFQUFhRCxFQUFNLFNBQ25CLENBQ0U5bkMsRUFBSXBxQyxFQUFNLEVBQUUsSUFBR0EsRUFBTSxFQUFFLEVBQUlvcUMsRUFDakMsQ0FBRyxFQUNEK2EsRUFBRyxNQUFNLEVBQUliLEdBQWF0a0QsQ0FBSyxFQUN4Qm1sRCxDQUNQLENBRUQsU0FBU2l0QixFQUFnQnJ4RyxFQUFlL0ssRUFBbUIsQ0FBRSxPQUFPNnVGLEdBQWtCa3RCLEVBQWFoeEcsRUFBRy9LLENBQUksRUFBR0EsQ0FBSSxDQUFJLENBR3JILFNBQVNxOEcsRUFBYWx0QixFQUF5QyxDQUk5RCxRQUhJdGtGLEVBQUksQ0FBQyxlQUFlLEVBQ3BCYixFQUFJeWtGLEdBQWtCVSxFQUFHLE1BQU0sQ0FBQyxFQUFHbGhELEVBQ25DaWhELEVBQVEsTUFBTSxRQUFRQyxDQUFFLEVBQ3BCemEsRUFBSTFxRSxFQUFFLEVBQUUsRUFBRzBxRSxHQUFLMXFFLEVBQUUsRUFBRSxFQUFHLEVBQUUwcUUsRUFBRyxDQUNuQzdwRSxFQUFFLEtBQUsscUJBQXFCLEVBQzVCLFFBQVF1cEUsRUFBSXBxRSxFQUFFLEVBQUUsRUFBR29xRSxHQUFLcHFFLEVBQUUsRUFBRSxFQUFHLEVBQUVvcUUsRUFBR3ZwRSxFQUFFLEtBQUssV0FBYXVwRSxFQUFFLEVBQUUsRUFFNUQsSUFEQXZwRSxFQUFFLEtBQUssZUFBZSxFQUNsQnVwRSxFQUFJcHFFLEVBQUUsRUFBRSxFQUFHb3FFLEdBQUtwcUUsRUFBRSxFQUFFLEVBQUcsRUFBRW9xRSxFQUFHLENBQy9CLElBQUkwN0IsRUFBUXZpQixHQUFZLENBQUMsRUFBRTdZLEVBQUUsRUFBRU4sQ0FBQyxDQUFDLEVBQ2pDbm1DLEVBQU9paEQsR0FBU0MsRUFBR3phLENBQUMsR0FBRyxDQUFFLEdBQUVOLENBQUMsRUFBRythLEVBQUcyZ0IsQ0FBSyxFQUNwQyxHQUFDN2hFLEdBQVFBLEVBQUssR0FBSyxPQUFTLENBQUNBLEVBQUssR0FBS0EsRUFBSyxNQUMvQ3BqQyxFQUFFLEtBQUssS0FBT29qQyxFQUFLLElBQU0wZ0QsR0FBWTFnRCxDQUFJLEVBQUdBLEVBQUssR0FBRyxFQUNwRHBqQyxFQUFFLEtBQUssUUFBUSxFQUNmLENBQ0RBLEVBQUUsS0FBSyxvQkFBb0IsQ0FDM0IsQ0FDRCxPQUFPQSxFQUFFLEtBQUssRUFBRSxFQUFJLEdBQ3BCLENBRUQsTUFBTyxDQUNOLFlBQWF1eEcsRUFDYixTQUFVTCxFQUNWLFdBQVlNLENBQ2QsQ0FDQSxJQUNBLFNBQVNDLEdBQVF0ckYsRUFBRyxDQUNuQixJQUFJbm1CLEVBQUltbUIsRUFBRSxNQUFNQSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQ3pDLE1BQU8sQ0FBQyxTQUFTbm1CLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBU0EsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTQSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3RGLENBQ0EsU0FBUzhuRixHQUFRRSxFQUFLLENBQ3JCLFFBQVFwdUYsRUFBRSxFQUFFb0csRUFBRSxFQUFHcEcsR0FBRyxFQUFHLEVBQUVBLEVBQUdvRyxFQUFJQSxFQUFFLEtBQU9nb0YsRUFBSXB1RixDQUFDLEVBQUUsSUFBSSxJQUFJb3VGLEVBQUlwdUYsQ0FBQyxFQUFFLEVBQUUsRUFBRW91RixFQUFJcHVGLENBQUMsR0FDeEUsT0FBT29HLEVBQUUsU0FBUyxFQUFFLEVBQUUsY0FBYyxNQUFNLENBQUMsQ0FDNUMsQ0FFQSxTQUFTMHhHLEdBQVExcEIsRUFBSyxDQUNyQixJQUFJbmUsRUFBSW1lLEVBQUksQ0FBQyxFQUFFLElBQUsycEIsRUFBSTNwQixFQUFJLENBQUMsRUFBRSxJQUFLem5CLEVBQUV5bkIsRUFBSSxDQUFDLEVBQUUsSUFDekNwZ0IsRUFBSSxLQUFLLElBQUlpQyxFQUFHOG5DLEVBQUdweEMsQ0FBQyxFQUFHbkUsRUFBSSxLQUFLLElBQUl5TixFQUFHOG5DLEVBQUdweEMsQ0FBQyxFQUFHZ0osRUFBSTNCLEVBQUl4TCxFQUMxRCxHQUFHbU4sSUFBTSxFQUFHLE1BQU8sQ0FBQyxFQUFHLEVBQUdNLENBQUMsRUFFM0IsSUFBSStuQyxFQUFLLEVBQUcvcEMsRUFBSSxFQUFHZ3FDLEVBQU1qcUMsRUFBSXhMLEVBRTdCLE9BREF5TCxFQUFJMEIsR0FBS3NvQyxFQUFLLEVBQUksRUFBSUEsRUFBS0EsR0FDcEJqcUMsRUFBQyxDQUNQLEtBQUtpQyxFQUFHK25DLElBQU9ELEVBQUlweEMsR0FBS2dKLEVBQUksR0FBRyxFQUFHLE1BQ2xDLEtBQUtvb0MsRUFBR0MsR0FBT3J4QyxFQUFJc0osR0FBS04sRUFBSSxFQUFJLE1BQ2hDLEtBQUtoSixFQUFHcXhDLEdBQU8vbkMsRUFBSThuQyxHQUFLcG9DLEVBQUksRUFBSSxLQUNoQyxDQUNELE1BQU8sQ0FBQ3FvQyxFQUFLLEVBQUcvcEMsRUFBR2dxQyxFQUFLLENBQUMsQ0FDMUIsQ0FFQSxTQUFTQyxHQUFRQyxFQUFJLENBQ3BCLElBQUlwcUMsRUFBSW9xQyxFQUFJLENBQUMsRUFBR2xxQyxFQUFJa3FDLEVBQUksQ0FBQyxFQUFHaHpDLEVBQUlnekMsRUFBSSxDQUFDLEVBQ2pDeG9DLEVBQUkxQixFQUFJLEdBQUs5SSxFQUFJLEdBQU1BLEVBQUksRUFBSUEsR0FBSTNDLEVBQUkyQyxFQUFJd0ssRUFBRSxFQUM3Q3llLEVBQU0sQ0FBQzVyQixFQUFFQSxFQUFFQSxDQUFDLEVBQUc0MUMsRUFBSyxFQUFFcnFDLEVBRXRCM2xELEVBQ0osR0FBRzZsRCxJQUFNLEVBQUcsT0FBT21xQyxFQUFHLEVBQUMsQ0FDdEIsSUFBSyxHQUFHLElBQUssR0FBR2h3RixFQUFJdW5ELEVBQUl5b0MsRUFBSWhxQixFQUFJLENBQUMsR0FBS3plLEVBQUd5ZSxFQUFJLENBQUMsR0FBS2htRSxFQUFHLE1BQ3RELElBQUssR0FBR0EsRUFBSXVuRCxHQUFLLEVBQUl5b0MsR0FBT2hxQixFQUFJLENBQUMsR0FBS2htRSxFQUFHZ21FLEVBQUksQ0FBQyxHQUFLemUsRUFBRyxNQUN0RCxJQUFLLEdBQUd2bkQsRUFBSXVuRCxHQUFLeW9DLEVBQUssR0FBTWhxQixFQUFJLENBQUMsR0FBS3plLEVBQUd5ZSxFQUFJLENBQUMsR0FBS2htRSxFQUFHLE1BQ3RELElBQUssR0FBR0EsRUFBSXVuRCxHQUFLLEVBQUl5b0MsR0FBT2hxQixFQUFJLENBQUMsR0FBS2htRSxFQUFHZ21FLEVBQUksQ0FBQyxHQUFLemUsRUFBRyxNQUN0RCxJQUFLLEdBQUd2bkQsRUFBSXVuRCxHQUFLeW9DLEVBQUssR0FBTWhxQixFQUFJLENBQUMsR0FBS3plLEVBQUd5ZSxFQUFJLENBQUMsR0FBS2htRSxFQUFHLE1BQ3RELElBQUssR0FBR0EsRUFBSXVuRCxHQUFLLEVBQUl5b0MsR0FBT2hxQixFQUFJLENBQUMsR0FBS2htRSxFQUFHZ21FLEVBQUksQ0FBQyxHQUFLemUsRUFBRyxLQUN0RCxDQUNELFFBQVEzdkUsRUFBSSxFQUFHQSxHQUFLLEVBQUcsRUFBRUEsRUFBR291RixFQUFJcHVGLENBQUMsRUFBSSxLQUFLLE1BQU1vdUYsRUFBSXB1RixDQUFDLEVBQUUsR0FBRyxFQUMxRCxPQUFPb3VGLENBQ1IsQ0FHQSxTQUFTaXFCLEdBQVNDLEVBQUtDLEVBQU0sQ0FDNUIsR0FBR0EsSUFBUyxFQUFHLE9BQU9ELEVBQ3RCLElBQUlILEVBQU1MLEdBQVFELEdBQVFTLENBQUcsQ0FBQyxFQUM5QixPQUFJQyxFQUFPLEVBQUdKLEVBQUksQ0FBQyxFQUFJQSxFQUFJLENBQUMsR0FBSyxFQUFJSSxHQUNoQ0osRUFBSSxDQUFDLEVBQUksR0FBSyxFQUFJQSxFQUFJLENBQUMsSUFBTSxFQUFJSSxHQUMvQnJxQixHQUFRZ3FCLEdBQVFDLENBQUcsQ0FBQyxDQUM1QixDQUlBLElBQUlLLEdBQVUsRUFBR0MsR0FBVSxHQUFJQyxHQUFVLEVBQUdDLEdBQU1ILEdBQ2xELFNBQVN6TixHQUFTMTlFLEVBQU8sQ0FBRSxPQUFPLEtBQUssT0FBUUEsRUFBUyxLQUFLLE1BQU0sSUFBSXNyRixFQUFHLEVBQUcsS0FBT0EsRUFBSyxDQUFHLENBQzVGLFNBQVMzTixHQUFRNE4sRUFBSSxDQUFFLE9BQVEsS0FBSyxPQUFPQSxFQUFLLEdBQUdELEdBQU0sSUFBTSxFQUFHLEVBQUcsR0FBTSxDQUMzRSxTQUFTRSxHQUFXbC9DLEVBQUssQ0FBRSxPQUFRLEtBQUssT0FBT0EsRUFBTWcvQyxHQUFNLEdBQUdBLEdBQUksR0FBRyxFQUFHLEdBQU0sQ0FHOUUsU0FBU0csR0FBWUMsRUFBTyxDQUFFLE9BQU9GLEdBQVc3TixHQUFRRCxHQUFTZ08sQ0FBSyxDQUFDLENBQUMsQ0FBSSxDQUU1RSxTQUFTQyxHQUFjRCxFQUFPLENBQzdCLElBQUlFLEVBQVEsS0FBSyxJQUFJRixFQUFRRCxHQUFZQyxDQUFLLENBQUMsRUFBR0csRUFBT1AsR0FDekQsR0FBR00sRUFBUSxLQUFPLElBQUlOLEdBQUlELEdBQVNDLEdBQUlGLEdBQVMsRUFBRUUsR0FBUSxLQUFLLElBQUlJLEVBQVFELEdBQVlDLENBQUssQ0FBQyxHQUFLRSxJQUFTQSxFQUFRLEtBQUssSUFBSUYsRUFBUUQsR0FBWUMsQ0FBSyxDQUFDLEVBQUdHLEVBQU9QLElBQ2hLQSxHQUFNTyxDQUNQLENBYUEsU0FBUzVPLEdBQVk2TyxFQUFrQixDQUNuQ0EsRUFBSyxPQUNQQSxFQUFLLElBQU1wTyxHQUFTb08sRUFBSyxLQUFLLEVBQzlCQSxFQUFLLElBQU1uTyxHQUFRbU8sRUFBSyxHQUFHLEVBQzNCQSxFQUFLLElBQU1SLElBQ0ZRLEVBQUssS0FDZEEsRUFBSyxJQUFNbk8sR0FBUW1PLEVBQUssR0FBRyxFQUMzQkEsRUFBSyxNQUFRTixHQUFXTSxFQUFLLEdBQUcsRUFDaENBLEVBQUssSUFBTVIsSUFDRixPQUFPUSxFQUFLLEtBQU8sV0FDNUJBLEVBQUssTUFBUU4sR0FBV00sRUFBSyxHQUFHLEVBQ2hDQSxFQUFLLElBQU1wTyxHQUFTb08sRUFBSyxLQUFLLEVBQzlCQSxFQUFLLElBQU1SLElBRVRRLEVBQUssYUFBYSxPQUFPQSxFQUFLLFdBQ2xDLENBRUEsSUFBSUMsR0FBVSxHQUFJQyxHQUFNRCxHQUN4QixTQUFTbE8sR0FBTTBOLEVBQUksQ0FBRSxPQUFPQSxFQUFLLEdBQUtTLEVBQU0sQ0FDNUMsU0FBUzlPLEdBQU0rTyxFQUFJLENBQUUsT0FBT0EsRUFBS0QsR0FBTSxFQUFLLENBRzVDLElBQUlFLEdBQXFCLENBQ3hCLEtBQVEsT0FDUixNQUFTLFFBQ1QsT0FBVSxhQUNWLE9BQVUsV0FDVixPQUFVLFlBQ1YsV0FBYyxpQkFDZCxXQUFjLGVBQ2Qsa0JBQXFCLFdBQ3JCLFdBQWMsU0FDZCxVQUFhLFdBQ2IsZUFBa0IsY0FDbEIsZUFBa0Isa0JBQ2xCLGVBQWtCLGdCQUNsQixzQkFBeUIsWUFDekIsY0FBaUIsV0FDbEIsRUFHQSxTQUFTQyxHQUFjLzBHLEVBQUdnMUcsRUFBUUMsRUFBUW4rRyxFQUFNLENBQy9DaytHLEVBQU8sUUFBVSxHQUNqQixJQUFJRSxFQUFTLENBQUEsRUFDVC9ILEVBQU8sSUFDVm50RyxFQUFFLENBQUMsRUFBRSxNQUFNdzlFLEVBQVEsR0FBRyxDQUFFLEdBQUUsUUFBUSxTQUFTNy9DLEVBQUcsQ0FDOUMsSUFBSXlaLEVBQUl1bUMsR0FBWWhnRCxDQUFDLEVBQ3JCLE9BQU9xZ0QsR0FBUzVtQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQ3BCLElBQUssV0FBWSxJQUFLLFlBQWEsSUFBSyxhQUFjLE1BR3RELElBQUssVUFBVyxJQUFLLFdBQVksSUFBSyxZQUNyQzg5RCxFQUFnQixDQUFBLEVBQ2I5OUQsRUFBRSxhQUFZODlELEVBQU8sV0FBYWoyQixHQUFhN25DLEVBQUUsVUFBVSxHQUMzREEsRUFBRSxlQUFjODlELEVBQU8sYUFBZWoyQixHQUFhN25DLEVBQUUsWUFBWSxHQUNwRTQ5RCxFQUFPLFFBQVEsS0FBS0UsQ0FBTSxFQUMxQixNQUNELElBQUssWUFBYSxNQUdsQixJQUFLLFVBQVcsTUFDaEIsSUFBSyxRQUFTLElBQUssU0FBVSxNQUM3QixJQUFLLFVBQVcsTUFHaEIsSUFBSyxXQUFZLE1BQ2pCLElBQUssU0FBVSxJQUFLLFVBQVcsTUFDL0IsSUFBSyxXQUFZLE1BR2pCLElBQUssU0FBVSxNQUNmLElBQUssT0FBUSxJQUFLLFFBQVMsTUFDM0IsSUFBSyxTQUFVLE1BR2YsSUFBSyxZQUFhLE1BQ2xCLElBQUssVUFBVyxJQUFLLFdBQVksTUFDakMsSUFBSyxZQUFhLE1BR2xCLElBQUssWUFBYSxJQUFLLGFBQWMsSUFBSyxjQUFlLE1BQ3pELElBQUssY0FBZSxNQUdwQixJQUFLLGNBQWUsSUFBSyxlQUFnQixJQUFLLGdCQUFpQixNQUMvRCxJQUFLLGdCQUFpQixNQUd0QixJQUFLLFlBQWEsSUFBSyxhQUFjLElBQUssY0FBZSxNQUN6RCxJQUFLLGNBQWUsTUFHcEIsSUFBSyxTQUFVLElBQUssVUFBVyxJQUFLLFdBQVksTUFDaEQsSUFBSyxXQUFZLE1BR2pCLElBQUssT0FBUSxJQUFLLFFBQVMsSUFBSyxTQUFVLE1BQzFDLElBQUssU0FBVSxNQUdmLElBQUssU0FBVSxJQUFLLFVBQ25CLE1BQ0QsSUFBSyxXQUFZLElBQUssV0FBWSxNQUdsQyxJQUFLLFVBQVcsSUFBSyxXQUFZLElBQUssWUFBYSxNQUNuRCxJQUFLLE9BQVEvSCxFQUFPLEdBQU0sTUFDMUIsSUFBSyxTQUFVQSxFQUFPLEdBQU8sTUFDN0IsUUFBUyxHQUFHcjJHLEdBQVFBLEVBQUssS0FDckIsQ0FBQ3EyRyxFQUFNLE1BQU0sSUFBSSxNQUFNLGdCQUFrQi8xRCxFQUFFLENBQUMsRUFBSSxhQUFhLENBRWpFLENBQ0gsQ0FBRSxDQUNGLENBR0EsU0FBUys5RCxHQUFZbjFHLEVBQUdnMUcsRUFBUUMsRUFBUW4rRyxFQUFNLENBQzdDaytHLEVBQU8sTUFBUSxHQUNmLElBQUloMEMsRUFBTyxDQUFBLEVBQ1Btc0MsRUFBTyxJQUNWbnRHLEVBQUUsQ0FBQyxFQUFFLE1BQU13OUUsRUFBUSxHQUFHLENBQUUsR0FBRSxRQUFRLFNBQVM3L0MsRUFBRyxDQUM5QyxJQUFJeVosRUFBSXVtQyxHQUFZaGdELENBQUMsRUFDckIsT0FBT3FnRCxHQUFTNW1DLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FDcEIsSUFBSyxTQUFVLElBQUssVUFBVyxJQUFLLFdBQVksTUFHaEQsSUFBSyxTQUFVLElBQUssUUFBUyxJQUFLLFVBQ2pDNHBCLEVBQU8sQ0FBRSxFQUFFZzBDLEVBQU8sTUFBTSxLQUFLaDBDLENBQUksRUFBRyxNQUNyQyxJQUFLLFVBQVcsTUFHaEIsSUFBSyxpQkFBa0IsTUFDdkIsSUFBSyxnQkFDTCxJQUFLLGtCQUFtQmcwQyxFQUFPLE1BQU0sS0FBS2gwQyxDQUFJLEVBQUdBLEVBQU8sQ0FBRSxFQUFFLE1BRzVELElBQUssZUFBZ0IsSUFBSyxnQkFDdEI1cEIsRUFBRSxjQUFhNHBCLEVBQUssWUFBYzVwQixFQUFFLGFBQ3ZDLE1BQ0QsSUFBSyxpQkFBa0IsSUFBSyxpQkFBa0IsTUFHOUMsSUFBSyxXQUNBNHBCLEVBQUssVUFBU0EsRUFBSyxRQUFVLENBQUEsR0FDOUI1cEIsRUFBRSxVQUFTNHBCLEVBQUssUUFBUSxRQUFVLFNBQVM1cEIsRUFBRSxRQUFTLEVBQUUsR0FDeERBLEVBQUUsUUFBTzRwQixFQUFLLFFBQVEsTUFBUSxTQUFTNXBCLEVBQUUsTUFBTyxFQUFFLEdBQ2xEQSxFQUFFLE9BQU00cEIsRUFBSyxRQUFRLEtBQU8sV0FBVzVwQixFQUFFLElBQUksR0FFN0NBLEVBQUUsTUFBSzRwQixFQUFLLFFBQVEsSUFBTTVwQixFQUFFLElBQUksTUFBTSxFQUFFLEdBQzNDLE1BQ0QsSUFBSyxhQUFjLElBQUssYUFBYyxNQUd0QyxJQUFLLFdBQ0E0cEIsRUFBSyxVQUFTQSxFQUFLLFFBQVUsQ0FBQSxHQUM5QjVwQixFQUFFLFFBQU80cEIsRUFBSyxRQUFRLE1BQVEsU0FBUzVwQixFQUFFLE1BQU8sRUFBRSxHQUNsREEsRUFBRSxPQUFNNHBCLEVBQUssUUFBUSxLQUFPLFdBQVc1cEIsRUFBRSxJQUFJLEdBRTdDQSxFQUFFLEtBQU8sT0FBTTRwQixFQUFLLFFBQVEsSUFBTTVwQixFQUFFLElBQUksTUFBTSxFQUFFLEdBQ25ELE1BQ0QsSUFBSyxhQUFjLElBQUssYUFBYyxNQUd0QyxJQUFLLFFBQVMsSUFBSyxVQUFXLE1BQzlCLElBQUssVUFBVyxNQUdoQixJQUFLLFNBQVUsSUFBSyxXQUFZLE1BQ2hDLElBQUssV0FBWSxNQUdqQixJQUFLLFVBQVcsSUFBSyxXQUFZLElBQUssWUFBYSxNQUNuRCxJQUFLLE9BQVErMUQsRUFBTyxHQUFNLE1BQzFCLElBQUssU0FBVUEsRUFBTyxHQUFPLE1BQzdCLFFBQVMsR0FBR3IyRyxHQUFRQSxFQUFLLEtBQ3JCLENBQUNxMkcsRUFBTSxNQUFNLElBQUksTUFBTSxnQkFBa0IvMUQsRUFBRSxDQUFDLEVBQUksV0FBVyxDQUUvRCxDQUNILENBQUUsQ0FDRixDQUdBLFNBQVNnK0QsR0FBWXAxRyxFQUFHZzFHLEVBQVFDLEVBQVFuK0csRUFBTSxDQUM3Q2srRyxFQUFPLE1BQVEsR0FDZixJQUFJbHJCLEVBQU8sQ0FBQSxFQUNQcWpCLEVBQU8sSUFDVm50RyxFQUFFLENBQUMsRUFBRSxNQUFNdzlFLEVBQVEsR0FBRyxDQUFFLEdBQUUsUUFBUSxTQUFTNy9DLEVBQUcsQ0FDOUMsSUFBSXlaLEVBQUl1bUMsR0FBWWhnRCxDQUFDLEVBQ3JCLE9BQU9xZ0QsR0FBUzVtQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQ3BCLElBQUssU0FBVSxJQUFLLFVBQVcsSUFBSyxXQUFZLE1BR2hELElBQUssUUFBUyxJQUFLLFNBQVUsTUFDN0IsSUFBSyxVQUFXLElBQUssVUFDcEI0OUQsRUFBTyxNQUFNLEtBQUtsckIsQ0FBSSxFQUN0QkEsRUFBTyxDQUFBLEVBQ1AsTUFHRCxJQUFLLFFBQVkxeUMsRUFBRSxNQUFLMHlDLEVBQUssS0FBT3RLLEdBQVNwb0MsRUFBRSxHQUFHLEdBQUcsTUFDckQsSUFBSyxVQUFXLElBQUssVUFBVyxNQUdoQyxJQUFLLEtBQU0weUMsRUFBSyxLQUFPMXlDLEVBQUUsSUFBTTZuQyxHQUFhN25DLEVBQUUsR0FBRyxFQUFJLEVBQUcsTUFDeEQsSUFBSyxPQUFRMHlDLEVBQUssS0FBTyxFQUFHLE1BRzVCLElBQUssS0FBTUEsRUFBSyxPQUFTMXlDLEVBQUUsSUFBTTZuQyxHQUFhN25DLEVBQUUsR0FBRyxFQUFJLEVBQUcsTUFDMUQsSUFBSyxPQUFRMHlDLEVBQUssT0FBUyxFQUFHLE1BRzlCLElBQUssS0FDSixPQUFPMXlDLEVBQUUsSUFBRyxDQUNYLElBQUssT0FBUTB5QyxFQUFLLFVBQVksRUFBTSxNQUNwQyxJQUFLLFNBQVVBLEVBQUssVUFBWSxFQUFNLE1BQ3RDLElBQUssU0FBVUEsRUFBSyxVQUFZLEVBQU0sTUFDdEMsSUFBSyxtQkFBb0JBLEVBQUssVUFBWSxHQUFNLE1BQ2hELElBQUssbUJBQW9CQSxFQUFLLFVBQVksR0FBTSxLQUNyRCxDQUFNLE1BQ0gsSUFBSyxPQUFRQSxFQUFLLFVBQVksRUFBRyxNQUdqQyxJQUFLLFVBQVdBLEVBQUssT0FBUzF5QyxFQUFFLElBQU02bkMsR0FBYTduQyxFQUFFLEdBQUcsRUFBSSxFQUFHLE1BQy9ELElBQUssWUFBYTB5QyxFQUFLLE9BQVMsRUFBRyxNQUduQyxJQUFLLFdBQVlBLEVBQUssUUFBVTF5QyxFQUFFLElBQU02bkMsR0FBYTduQyxFQUFFLEdBQUcsRUFBSSxFQUFHLE1BQ2pFLElBQUssYUFBYzB5QyxFQUFLLFFBQVUsRUFBRyxNQUdyQyxJQUFLLFVBQVdBLEVBQUssT0FBUzF5QyxFQUFFLElBQU02bkMsR0FBYTduQyxFQUFFLEdBQUcsRUFBSSxFQUFHLE1BQy9ELElBQUssWUFBYTB5QyxFQUFLLE9BQVMsRUFBRyxNQUduQyxJQUFLLFlBQWFBLEVBQUssU0FBVzF5QyxFQUFFLElBQU02bkMsR0FBYTduQyxFQUFFLEdBQUcsRUFBSSxFQUFHLE1BQ25FLElBQUssY0FBZTB5QyxFQUFLLFNBQVcsRUFBRyxNQUd2QyxJQUFLLFVBQVdBLEVBQUssT0FBUzF5QyxFQUFFLElBQU02bkMsR0FBYTduQyxFQUFFLEdBQUcsRUFBSSxFQUFHLE1BQy9ELElBQUssWUFBYTB5QyxFQUFLLE9BQVMsRUFBRyxNQUduQyxJQUFLLE1BQVUxeUMsRUFBRSxNQUFLMHlDLEVBQUssR0FBSyxDQUFDMXlDLEVBQUUsS0FBSyxNQUN4QyxJQUFLLFFBQVMsSUFBSyxRQUFTLE1BRzVCLElBQUssYUFBaUJBLEVBQUUsTUFBSzB5QyxFQUFLLFVBQVkxeUMsRUFBRSxLQUFLLE1BQ3JELElBQUssZUFBZ0IsSUFBSyxlQUFnQixNQUcxQyxJQUFLLFVBQWNBLEVBQUUsTUFBSzB5QyxFQUFLLE9BQVMsU0FBUzF5QyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQzVELElBQUssWUFBYSxJQUFLLFlBQWEsTUFHcEMsSUFBSyxVQUFjQSxFQUFFLE1BQUsweUMsRUFBSyxPQUFTMXlDLEVBQUUsS0FBSyxNQUMvQyxJQUFLLFlBQWEsSUFBSyxZQUFhLE1BR3BDLElBQUssV0FDSixHQUFHQSxFQUFFLEtBQU8sSUFBSyxNQUNqQkEsRUFBRSxTQUFXK21CLEdBQU0sU0FBUy9tQixFQUFFLElBQUssRUFBRSxDQUFDLEVBQ3RDLE1BR0QsSUFBSyxTQUlKLEdBSEkweUMsRUFBSyxRQUFPQSxFQUFLLE1BQVEsQ0FBQSxHQUMxQjF5QyxFQUFFLE9BQU0weUMsRUFBSyxNQUFNLEtBQU83SyxHQUFhN25DLEVBQUUsSUFBSSxHQUU3Q0EsRUFBRSxJQUFLMHlDLEVBQUssTUFBTSxJQUFNMXlDLEVBQUUsSUFBSSxNQUFNLEVBQUUsVUFDakNBLEVBQUUsUUFBUyxDQUNsQjB5QyxFQUFLLE1BQU0sTUFBUSxTQUFTMXlDLEVBQUUsUUFBUyxFQUFFLEVBQ3pDLElBQUlteUMsRUFBTUMsR0FBT00sRUFBSyxNQUFNLEtBQUssRUFDOUJBLEVBQUssTUFBTSxPQUFTLEtBQUlQLEVBQU1DLEdBQU8sQ0FBQyxHQUNyQ0QsSUFBS0EsRUFBTUMsR0FBTyxDQUFDLEdBQ3ZCTSxFQUFLLE1BQU0sSUFBTVAsRUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUlBLEVBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFJQSxFQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FDcEYsTUFBY255QyxFQUFFLFFBQ1gweUMsRUFBSyxNQUFNLE1BQVEsU0FBUzF5QyxFQUFFLE1BQU8sRUFBRSxFQUNwQ0EsRUFBRSxPQUFNMHlDLEVBQUssTUFBTSxLQUFPLFdBQVcxeUMsRUFBRSxJQUFJLEdBQzNDQSxFQUFFLE9BQVM2OUQsRUFBTyxlQUFpQkEsRUFBTyxjQUFjLFlBQzFEbnJCLEVBQUssTUFBTSxJQUFNOHBCLEdBQVNxQixFQUFPLGNBQWMsVUFBVW5yQixFQUFLLE1BQU0sS0FBSyxFQUFFLElBQUtBLEVBQUssTUFBTSxNQUFRLENBQUMsSUFJdEcsTUFDRCxJQUFLLFdBQVksSUFBSyxXQUFZLE1BR2xDLElBQUssb0JBQXFCcWpCLEVBQU8sR0FBTSxNQUN2QyxJQUFLLHNCQUF1QkEsRUFBTyxHQUFPLE1BRzFDLElBQUssVUFBVyxJQUFLLFdBQVksSUFBSyxZQUFhLE1BQ25ELElBQUssT0FBUUEsRUFBTyxHQUFNLE1BQzFCLElBQUssU0FBVUEsRUFBTyxHQUFPLE1BQzdCLFFBQVMsR0FBR3IyRyxHQUFRQSxFQUFLLEtBQ3JCLENBQUNxMkcsRUFBTSxNQUFNLElBQUksTUFBTSxnQkFBa0IvMUQsRUFBRSxDQUFDLEVBQUksV0FBVyxDQUUvRCxDQUNILENBQUUsQ0FDRixDQUdBLFNBQVNpK0QsR0FBY3IxRyxFQUFHZzFHLEVBQVFsK0csRUFBTSxDQUN2Q2srRyxFQUFPLFVBQVksR0FFbkIsUUFESXgyRixFQUFzQm5oQixHQUFLc2tFLEVBQVMsRUFDaENwbUUsRUFBRSxFQUFHQSxFQUFJaWpCLEVBQUUsT0FBUSxFQUFFampCLEVBQUd5NUcsRUFBTyxVQUFVeDJGLEVBQUVqakIsQ0FBQyxDQUFDLEVBQUlvbUUsR0FBVW5qRCxFQUFFampCLENBQUMsQ0FBQyxFQUN2RSxJQUFJd2lFLEVBQUkvOUQsRUFBRSxDQUFDLEVBQUUsTUFBTXc5RSxFQUFRLEVBQzNCLEdBQUl6ZixFQUNKLElBQUl4aUUsRUFBRSxFQUFHQSxFQUFJd2lFLEVBQUUsT0FBUSxFQUFFeGlFLEVBQUcsQ0FDM0IsSUFBSTY3QyxFQUFJdW1DLEdBQVk1ZixFQUFFeGlFLENBQUMsQ0FBQyxFQUN4QixPQUFPeWlGLEdBQVM1bUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUNwQixJQUFLLFdBQVksSUFBSyxhQUFjLElBQUssYUFBYyxJQUFLLFlBQWEsTUFDekUsSUFBSyxVQUFXLENBQ2YsSUFBSTExQyxFQUFFeThFLEdBQVlxQixHQUFTcG9DLEVBQUUsVUFBVSxDQUFDLEVBQUcwbUIsRUFBRSxTQUFTMW1CLEVBQUUsU0FBUyxFQUFFLEVBRW5FLEdBREE0OUQsRUFBTyxVQUFVbDNDLENBQUMsRUFBSXA4RCxFQUNuQm84RCxFQUFFLEVBQUcsQ0FDUCxHQUFHQSxFQUFJLElBQU8sQ0FDYixJQUFJQSxFQUFJLElBQU9BLEVBQUksSUFBY2szQyxFQUFPLFVBQVVsM0MsQ0FBQyxHQUFLLEtBQS9CLEVBQUVBLEVBQUcsQ0FDOUJrM0MsRUFBTyxVQUFVbDNDLENBQUMsRUFBSXA4RCxDQUN0QixDQUNEa25FLEdBQVNsbkUsRUFBRW84RCxDQUFDLENBQ1osQ0FDTCxDQUFLLE1BQ0YsSUFBSyxZQUFhLE1BQ2xCLFFBQVMsR0FBR2huRSxFQUFLLElBQUssTUFBTSxJQUFJLE1BQU0sZ0JBQWtCc2dELEVBQUUsQ0FBQyxFQUFJLGFBQWEsQ0FDNUUsQ0FDRCxDQUNGLENBRUEsU0FBU2srRCxHQUFjQyxFQUErQyxDQUNyRSxJQUFJNXpHLEVBQUksQ0FBQyxXQUFXLEVBSXBCLE1BSEEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFPLEdBQWdCLEdBQUcsQ0FBQyxFQUFFLFFBQVEsU0FBUyxFQUFHLENBQ3ZFLFFBQVFwRyxFQUFJLEVBQUUsQ0FBQyxFQUFHQSxHQUFLLEVBQUUsQ0FBQyxFQUFHLEVBQUVBLEVBQU1nNkcsRUFBR2g2RyxDQUFDLEdBQUssT0FBTW9HLEVBQUVBLEVBQUUsTUFBTSxFQUFLMCtFLEdBQVUsU0FBUyxLQUFLLENBQUMsU0FBUzlrRixFQUFFLFdBQVdpakYsR0FBVSsyQixFQUFHaDZHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDckksQ0FBRSxFQUNFb0csRUFBRSxTQUFXLEVBQVUsSUFDMUJBLEVBQUVBLEVBQUUsTUFBTSxFQUFLLGFBQ2ZBLEVBQUUsQ0FBQyxFQUFJMCtFLEdBQVUsVUFBVyxLQUFNLENBQUUsTUFBTTErRSxFQUFFLE9BQU8sQ0FBQyxDQUFFLEVBQUUsUUFBUSxLQUFNLEdBQUcsRUFDbEVBLEVBQUUsS0FBSyxFQUFFLEVBQ2pCLENBR0EsSUFBSTZ6RyxHQUFjLENBQUUsV0FBWSxTQUFVLFNBQVUsV0FBWSxRQUM1REMsR0FBYyxDQUFFLGlCQUFrQixjQUFlLFlBQWEsWUFBYSxvQkFBcUIsa0JBQW1CLGNBQWUsZUFDdEksU0FBU0MsR0FBYzExRyxFQUFHZzFHLEVBQVFsK0csRUFBTSxDQUN2Q2srRyxFQUFPLE9BQVMsR0FDaEIsSUFBSVcsRUFDQXhJLEVBQU8sSUFDVm50RyxFQUFFLENBQUMsRUFBRSxNQUFNdzlFLEVBQVEsR0FBRyxDQUFFLEdBQUUsUUFBUSxTQUFTNy9DLEVBQUcsQ0FDOUMsSUFBSXlaLEVBQUl1bUMsR0FBWWhnRCxDQUFDLEVBQUdwaUMsRUFBSSxFQUM1QixPQUFPeWlGLEdBQVM1bUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUNwQixJQUFLLFdBQVksSUFBSyxZQUFhLElBQUssYUFBYyxJQUFLLGFBQWMsTUFHekUsSUFBSyxNQUFPLElBQUssUUFHaEIsSUFGQXUrRCxFQUFLditELEVBQ0wsT0FBT3UrRCxFQUFHLENBQUMsRUFDUHA2RyxFQUFJLEVBQUdBLEVBQUlpNkcsR0FBWSxPQUFRLEVBQUVqNkcsRUFBTW82RyxFQUFHSCxHQUFZajZHLENBQUMsQ0FBQyxJQUMzRG82RyxFQUFHSCxHQUFZajZHLENBQUMsQ0FBQyxFQUFJLFNBQVNvNkcsRUFBR0gsR0FBWWo2RyxDQUFDLENBQUMsRUFBRyxFQUFFLEdBQ3JELElBQUlBLEVBQUksRUFBR0EsRUFBSWs2RyxHQUFZLE9BQVEsRUFBRWw2RyxFQUFNbzZHLEVBQUdGLEdBQVlsNkcsQ0FBQyxDQUFDLElBQzNEbzZHLEVBQUdGLEdBQVlsNkcsQ0FBQyxDQUFDLEVBQUkwakYsR0FBYTAyQixFQUFHRixHQUFZbDZHLENBQUMsQ0FBQyxDQUFDLEdBQ3JELEdBQUd5NUcsRUFBTyxXQUFhVyxFQUFHLFNBQVcsS0FDcEMsSUFBSXA2RyxFQUFJLElBQU9BLEVBQUksR0FBTSxFQUFFQSxFQUFHLEdBQUd5NUcsRUFBTyxVQUFVVyxFQUFHLFFBQVEsR0FBS1gsRUFBTyxVQUFVejVHLENBQUMsRUFBRyxDQUFFbzZHLEVBQUcsU0FBV3A2RyxFQUFHLEtBQVEsRUFFbkh5NUcsRUFBTyxPQUFPLEtBQUtXLENBQUUsRUFBRyxNQUN6QixJQUFLLFFBQVMsTUFHZCxJQUFLLGFBQWMsSUFBSyxlQUN2QixJQUFJQyxFQUFZLENBQUEsRUFDYngrRCxFQUFFLFdBQVV3K0QsRUFBVSxTQUFXeCtELEVBQUUsVUFDbkNBLEVBQUUsYUFBWXcrRCxFQUFVLFdBQWF4K0QsRUFBRSxZQUN2Q0EsRUFBRSxjQUFnQixPQUFNdytELEVBQVUsYUFBZXgrRCxFQUFFLGNBQ25EQSxFQUFFLFNBQVF3K0QsRUFBVSxPQUFTeCtELEVBQUUsUUFDL0JBLEVBQUUsV0FBVXcrRCxFQUFVLFNBQVczMkIsR0FBYTduQyxFQUFFLFFBQVEsR0FDM0R1K0QsRUFBRyxVQUFZQyxFQUNmLE1BQ0QsSUFBSyxlQUFnQixNQUdyQixJQUFLLGNBQ0osTUFDRCxJQUFLLGdCQUFpQixJQUFLLGdCQUFpQixNQUc1QyxJQUFLLG9CQUFxQnpJLEVBQU8sR0FBTSxNQUN2QyxJQUFLLHNCQUF1QkEsRUFBTyxHQUFPLE1BRzFDLElBQUssVUFBVyxJQUFLLFdBQVksSUFBSyxZQUFhLE1BQ25ELElBQUssT0FBUUEsRUFBTyxHQUFNLE1BQzFCLElBQUssU0FBVUEsRUFBTyxHQUFPLE1BQzdCLFFBQVMsR0FBR3IyRyxHQUFRQSxFQUFLLEtBQ3JCLENBQUNxMkcsRUFBTSxNQUFNLElBQUksTUFBTSxnQkFBa0IvMUQsRUFBRSxDQUFDLEVBQUksYUFBYSxDQUVqRSxDQUNILENBQUUsQ0FDRixDQUVBLFNBQVN5K0QsR0FBY0MsRUFBb0IsQ0FDMUMsSUFBSW4wRyxFQUFzQixDQUFBLEVBTTFCLE9BTEFBLEVBQUVBLEVBQUUsTUFBTSxFQUFLMCtFLEdBQVUsVUFBVSxJQUFJLEVBQ3ZDeTFCLEVBQVEsUUFBUSxTQUFTeDNGLEVBQUcsQ0FDM0IzYyxFQUFFQSxFQUFFLE1BQU0sRUFBSzArRSxHQUFVLEtBQU0sS0FBTS9oRSxDQUFDLENBQ3hDLENBQUUsRUFDRDNjLEVBQUVBLEVBQUUsTUFBTSxFQUFLLGFBQ1pBLEVBQUUsU0FBVyxFQUFVLElBQzFCQSxFQUFFLENBQUMsRUFBSTArRSxHQUFVLFVBQVUsS0FBTSxDQUFDLE1BQU0xK0UsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLFFBQVEsS0FBSyxHQUFHLEVBQzlEQSxFQUFFLEtBQUssRUFBRSxFQUNqQixDQUdBLElBQUlvMEcsR0FBNkIsVUFBc0IsQ0FDdkQsSUFBSUMsRUFBYyx3REFDZEMsRUFBYyx3REFDZEMsRUFBYSxvREFDYkMsRUFBYSxvREFDYkMsRUFBZSx3REFFbkIsT0FBTyxTQUF1QjFtRyxFQUFNdWxHLEVBQVFuK0csRUFBTSxDQUNqRCxJQUFJaytHLEVBQVMsQ0FBQSxFQUNiLEdBQUcsQ0FBQ3RsRyxFQUFNLE9BQU9zbEcsRUFDakJ0bEcsRUFBT0EsRUFBSyxRQUFRLHNCQUFzQixFQUFFLEVBQUUsUUFBUSwrQkFBK0IsRUFBRSxFQUV2RixJQUFJMVAsRUFHSixPQUFJQSxFQUFFMFAsRUFBSyxNQUFNc21HLENBQVcsSUFBSVgsR0FBY3IxRyxFQUFHZzFHLEVBQVFsK0csQ0FBSSxHQUd6RGtKLEVBQUUwUCxFQUFLLE1BQU15bUcsQ0FBVSxJQUFJZixHQUFZcDFHLEVBQUdnMUcsRUFBUUMsRUFBUW4rRyxDQUFJLEdBRzlEa0osRUFBRTBQLEVBQUssTUFBTXdtRyxDQUFVLElBQUlmLEdBQVluMUcsRUFBR2cxRyxFQUFRQyxFQUFRbitHLENBQUksR0FHOURrSixFQUFFMFAsRUFBSyxNQUFNMG1HLENBQVksSUFBSXJCLEdBQWMvMEcsRUFBR2cxRyxFQUFRQyxFQUFRbitHLENBQUksR0FNbEVrSixFQUFFMFAsRUFBSyxNQUFNdW1HLENBQVcsSUFBSVAsR0FBYzExRyxFQUFHZzFHLEVBQVFsK0csQ0FBSSxFQU90RGsrRyxDQUNSLENBQ0EsSUFFQSxTQUFTcUIsR0FBY3pkLEVBQWlCOWhHLEVBQWlCLENBQ3hELElBQUk2SyxFQUFJLENBQUN5N0UsR0FBWWlELEdBQVUsYUFBYyxLQUFNLENBQ2xELE1BQVNPLEdBQVcsQ0FBQyxFQUNyQixXQUFZRCxHQUFNLEVBQ3BCLENBQUUsQ0FBQyxFQUFHbGQsRUFDTCxPQUFHbTFCLEVBQUcsTUFBUW4xQixFQUFJNnhDLEdBQWMxYyxFQUFHLEdBQUcsSUFBTSxPQUFNajNGLEVBQUVBLEVBQUUsTUFBTSxFQUFJOGhFLEdBQ2hFOWhFLEVBQUVBLEVBQUUsTUFBTSxFQUFLLG9JQUNmQSxFQUFFQSxFQUFFLE1BQU0sRUFBSywySEFDZkEsRUFBRUEsRUFBRSxNQUFNLEVBQUssMEZBQ2ZBLEVBQUVBLEVBQUUsTUFBTSxFQUFLLGdHQUNYOGhFLEVBQUlveUMsR0FBYy8rRyxFQUFLLE9BQU8sS0FBSTZLLEVBQUVBLEVBQUUsTUFBTSxFQUFLOGhFLEdBQ3JEOWhFLEVBQUVBLEVBQUUsTUFBTSxFQUFLLHVGQUNmQSxFQUFFQSxFQUFFLE1BQU0sRUFBSyxvQkFDZkEsRUFBRUEsRUFBRSxNQUFNLEVBQUssdUdBRVpBLEVBQUUsT0FBTyxJQUFJQSxFQUFFQSxFQUFFLE1BQU0sRUFBSyxnQkFBa0JBLEVBQUUsQ0FBQyxFQUFFQSxFQUFFLENBQUMsRUFBRSxRQUFRLEtBQUssR0FBRyxHQUNwRUEsRUFBRSxLQUFLLEVBQUUsQ0FDakIsQ0FFQSxTQUFTMjBHLEdBQWE1bUcsRUFBTXVaLEVBQW1CLENBQzlDLElBQUl5eUUsRUFBV2hzRixFQUFLLFdBQVcsQ0FBQyxFQUM1QjZtRyxFQUFZM3ZCLEdBQW1CbDNFLENBQWEsRUFDaEQsTUFBTyxDQUFDZ3NGLEVBQVU2YSxDQUFTLENBQzVCLENBQ0EsU0FBU0MsR0FBYWo3RyxFQUFjbUcsRUFBY0MsRUFBRyxDQUNoREEsSUFBR0EsRUFBSW10RSxHQUFRLEVBQUksRUFBSXB0RSxFQUFFLE1BQU0sR0FDbkNDLEVBQUUsWUFBWSxFQUFHcEcsQ0FBQyxFQUNsQnVyRixHQUFtQnBsRixFQUFHQyxDQUFDLEVBQ3ZCLElBQUk2K0QsRUFBTzcrRCxFQUFFLE9BQVNBLEVBQUUsRUFBS0EsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxFQUMvQyxPQUFHQSxFQUFFLEdBQUssT0FBTUEsRUFBRSxFQUFJQSxFQUFFLFFBQ2pCNitELENBQ1IsQ0FHQSxTQUFTaTJDLEdBQWMvbUcsRUFBTXVaLEVBQW1CbnlCLEVBQU0sQ0FDckQsSUFBSTBwRSxFQUFPLENBQUEsRUFFWEEsRUFBSSxHQUFLOXdELEVBQUssV0FBVyxDQUFDLEVBQUksR0FFOUIsSUFBSXE2RSxFQUFRSCxHQUFnQmw2RSxDQUFhLEVBQ3RDcTZFLEVBQU0sVUFBU3ZwQixFQUFJLE9BQVMsR0FDNUJ1cEIsRUFBTSxZQUFXdnBCLEVBQUksU0FBVyxHQUNoQ3VwQixFQUFNLFVBQVN2cEIsRUFBSSxPQUFTLEdBQzVCdXBCLEVBQU0sVUFBU3ZwQixFQUFJLE9BQVMsR0FDNUJ1cEIsRUFBTSxXQUFVdnBCLEVBQUksUUFBVSxHQUM5QnVwQixFQUFNLGFBQVl2cEIsRUFBSSxPQUFTLEdBRWxDLElBQUlrMkMsRUFBTWhuRyxFQUFLLFdBQVcsQ0FBQyxFQUczQixPQUZHZ25HLElBQVEsTUFBUWwyQyxFQUFJLEtBQU8sR0FFdkI5d0QsRUFBSyxXQUFXLENBQUMsRUFBQyxDQUV4QixJQUFLLEdBQUc4d0QsRUFBSSxVQUFZLGNBQWUsTUFDdkMsSUFBSyxHQUFHQSxFQUFJLFVBQVksWUFBYSxLQUNyQyxDQUVELElBQUltMkMsRUFBWWpuRyxFQUFLLFdBQVcsQ0FBQyxFQUM5QmluRyxHQUFhLElBQUduMkMsRUFBSSxVQUFZbTJDLEdBRW5DLElBQUlDLEVBQVNsbkcsRUFBSyxXQUFXLENBQUMsRUFDM0JrbkcsRUFBUyxJQUFHcDJDLEVBQUksT0FBU28yQyxHQUU1QixJQUFJQyxFQUFXbm5HLEVBQUssV0FBVyxDQUFDLEVBTWhDLE9BTEdtbkcsRUFBVyxJQUFHcjJDLEVBQUksUUFBVXEyQyxHQUUvQm5uRyxFQUFLLElBQ0w4d0QsRUFBSSxNQUFReW9CLEdBQWV2NUUsQ0FBTyxFQUUzQkEsRUFBSyxXQUFXLENBQUMsRUFBQyxDQUV4QixJQUFLLEdBQUc4d0QsRUFBSSxPQUFTLFFBQVMsTUFDOUIsSUFBSyxHQUFHQSxFQUFJLE9BQVMsUUFBUyxLQUM5QixDQUVELE9BQUFBLEVBQUksS0FBT29tQixHQUFtQmwzRSxDQUFpQixFQUV4Qzh3RCxDQUNSLENBQ0EsU0FBU3MyQyxHQUFjaHRCLEVBQWNub0YsRUFBRyxDQUNuQ0EsSUFBR0EsRUFBSW10RSxHQUFRLEdBQUcsRUFBRSxFQUFFLEdBQzFCbnRFLEVBQUUsWUFBWSxFQUFHbW9GLEVBQUssR0FBSyxFQUFFLEVBQzdCRCxHQUFnQkMsRUFBTW5vRixDQUFDLEVBQ3ZCQSxFQUFFLFlBQVksRUFBR21vRixFQUFLLEtBQU8sSUFBUyxHQUFNLEVBQzVDLElBQUlpdEIsRUFBTSxFQUNQanRCLEVBQUssV0FBYSxjQUFlaXRCLEVBQU0sRUFDbENqdEIsRUFBSyxXQUFhLGNBQWFpdEIsRUFBTSxHQUM3Q3AxRyxFQUFFLFlBQVksRUFBR28xRyxDQUFHLEVBQ3BCcDFHLEVBQUUsWUFBWSxFQUFHbW9GLEVBQUssV0FBYSxDQUFDLEVBQ3BDbm9GLEVBQUUsWUFBWSxFQUFHbW9GLEVBQUssUUFBVSxDQUFDLEVBQ2pDbm9GLEVBQUUsWUFBWSxFQUFHbW9GLEVBQUssU0FBVyxDQUFDLEVBQ2xDbm9GLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEIrbkYsR0FBZUksRUFBSyxNQUFPbm9GLENBQUMsRUFDNUIsSUFBSXExRyxFQUFTLEVBQ2IsT0FBR2x0QixFQUFLLFFBQVUsVUFBU2t0QixFQUFTLEdBQ2pDbHRCLEVBQUssUUFBVSxVQUFTa3RCLEVBQVMsR0FDcENyMUcsRUFBRSxZQUFZLEVBQUdxMUcsQ0FBTSxFQUN2Qmx3QixHQUFtQmdELEVBQUssS0FBTW5vRixDQUFDLEVBQ3hCQSxFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUdBLElBQUlzMUcsR0FBa0IsQ0FDckIsT0FDQSxRQUNBLGFBQ0EsV0FDQSxZQUNBLGlCQUNBLGVBQ0EsV0FDQSxTQUNBLFdBQ0EsY0FDQSxrQkFDQSxnQkFDQSxZQUNBLFVBQ0EsWUFDQSxlQUNBLFVBQ0EsVUFDRCxFQUNJQyxHQUVBQyxHQUFnQi96QixHQUNwQixTQUFTZzBCLEdBQWNwMkMsRUFBTXIvRCxFQUFHLENBQzNCQSxJQUFHQSxFQUFJbXRFLEdBQVEsRUFBRSxFQUFJLEVBQUUsRUFBSSxHQUFHLENBQUMsR0FDL0Jvb0MsS0FBcUJBLEdBQXVCMThCLEdBQU15OEIsRUFBZSxHQUNyRSxJQUFJSSxFQUFpQkgsR0FBb0JsMkMsRUFBSyxXQUFXLEVBQ3REcTJDLEdBQU8sT0FBTUEsRUFBTSxJQUN0QjExRyxFQUFFLFlBQVksRUFBRzAxRyxDQUFHLEVBQ3BCLElBQUl2NUMsRUFBSSxFQUNSLEdBQUd1NUMsR0FBTyxHQU1ULElBSkEzdEIsR0FBZSxDQUFDLEtBQUssQ0FBQyxFQUFHL25GLENBQUMsRUFFMUIrbkYsR0FBZSxDQUFDLEtBQUssQ0FBQyxFQUFHL25GLENBQUMsRUFFcEJtOEQsRUFBSSxHQUFJLEVBQUVBLEVBQUduOEQsRUFBRSxZQUFZLEVBQUcsQ0FBQyxNQUMvQixDQUNOLEtBQU1tOEQsRUFBSSxFQUFHLEVBQUVBLEVBQUduOEQsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUVwQyxLQUFNbThELEVBQUksR0FBSSxFQUFFQSxFQUFHbjhELEVBQUUsWUFBWSxFQUFHLENBQUMsQ0FTckMsQ0FDRCxPQUFPQSxFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUdBLFNBQVMyMUcsR0FBWTVuRyxFQUFNdVosRUFBbUIsQ0FDN0MsSUFBSWtqRCxFQUFNejhELEVBQUssRUFBSXVaLEVBQ2ZzdUYsRUFBYTduRyxFQUFLLFdBQVcsQ0FBQyxFQUM5QjhuRyxFQUFPOW5HLEVBQUssV0FBVyxDQUFDLEVBQzVCLE9BQUFBLEVBQUssRUFBSXk4RCxFQUNGLENBQUMsS0FBS29yQyxFQUFZLFNBQVNDLENBQUksQ0FDdkMsQ0FDQSxTQUFTQyxHQUFZL25HLEVBQU1ndEYsRUFBTy82RixFQUFHLENBQ2hDQSxJQUFHQSxFQUFJbXRFLEdBQVEsRUFBRSxHQUNyQm50RSxFQUFFLFlBQVksRUFBRys2RixHQUFPLENBQUMsRUFDekIvNkYsRUFBRSxZQUFZLEVBQUcrTixFQUFLLFVBQVUsQ0FBQyxFQUNqQy9OLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEIsSUFBSSsxRyxFQUFPLEVBQ1gsT0FBQS8xRyxFQUFFLFlBQVksRUFBRysxRyxDQUFJLEVBQ3JCLzFHLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDWEEsQ0FDUixDQUdBLFNBQVNnMkcsR0FBV2pvRyxFQUFNL04sRUFBRyxDQUM1QixPQUFJQSxJQUFHQSxFQUFJbXRFLEdBQVEsRUFBRSxHQUNyQm50RSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCQSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCQSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCQSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ1hBLENBQ1IsQ0FFQSxJQUFJaTJHLEdBQWtCeDBCLEdBQ3RCLFNBQVN5MEIsR0FBZ0IzQyxFQUFRdnpHLEVBQUcsQ0FDbkMsT0FBSUEsSUFBR0EsRUFBSW10RSxHQUFRLEVBQUUsR0FDckJudEUsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUNsQmcyRyxHQUFXLEtBQU1oMkcsQ0FBQyxFQUNsQmcyRyxHQUFXLEtBQU1oMkcsQ0FBQyxFQUNsQmcyRyxHQUFXLEtBQU1oMkcsQ0FBQyxFQUNsQmcyRyxHQUFXLEtBQU1oMkcsQ0FBQyxFQUNsQmcyRyxHQUFXLEtBQU1oMkcsQ0FBQyxFQUNYQSxFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUdBLFNBQVNtMkcsR0FBZW52RixFQUFPaG5CLEVBQUcsQ0FDakMsT0FBSUEsSUFBR0EsRUFBSW10RSxHQUFRLEdBQUcsRUFBRSxFQUFFLEdBQzFCbnRFLEVBQUUsWUFBWSxFQUFHZ25CLEVBQU0sSUFBSSxFQUMzQmhuQixFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCQSxFQUFFLFlBQVksRUFBRyxDQUFDZ25CLEVBQU0sU0FBUyxFQUNqQ2huQixFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCc21GLEdBQTJCdC9ELEVBQU0sTUFBUSxHQUFJaG5CLENBQUMsRUFDdkNBLEVBQUUsT0FBU0EsRUFBRSxFQUFJQSxFQUFFLE1BQU0sRUFBR0EsRUFBRSxDQUFDLEVBQUlBLENBQzNDLENBR0EsU0FBU28yRyxHQUEwQmhwQyxFQUFLaXBDLEVBQWVDLEVBQWUsQ0FDckUsSUFBSXQyRyxFQUFJbXRFLEdBQVEsSUFBUyxFQUN6QixPQUFBbnRFLEVBQUUsWUFBWSxFQUFHb3RFLENBQUcsRUFDcEJrWixHQUEyQit2QixFQUFlcjJHLENBQUMsRUFDM0NzbUYsR0FBMkJnd0IsRUFBZXQyRyxDQUFDLEVBQ3BDQSxFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUdBLFNBQVN1MkcsR0FBY3hvRyxFQUFNdWxHLEVBQVFuK0csRUFBTSxDQUMxQyxJQUFJaytHLEVBQVMsQ0FBQSxFQUNiQSxFQUFPLFVBQWEsQ0FBQSxFQUNwQixRQUFRNTlELEtBQUt1cUIsR0FBV3F6QyxFQUFPLFVBQVU1OUQsQ0FBQyxFQUFJdXFCLEdBQVV2cUIsQ0FBQyxFQUV6RDQ5RCxFQUFPLE9BQVMsR0FDaEJBLEVBQU8sTUFBUSxHQUNmLElBQUlwaEUsRUFBMEIsQ0FBQSxFQUMxQnU1RCxFQUFPLEdBQ1gsT0FBQTlwQixHQUFhM3pFLEVBQU0sU0FBb0J2VCxFQUFLcXZFLEVBQUdnWSxFQUFJLENBQ2xELE9BQU9BLEVBQUUsQ0FDUixJQUFLLElBQ0p3eEIsRUFBTyxVQUFVNzRHLEVBQUksQ0FBQyxDQUFDLEVBQUlBLEVBQUksQ0FBQyxFQUFHeXNFLEdBQVN6c0UsRUFBSSxDQUFDLEVBQUdBLEVBQUksQ0FBQyxDQUFDLEVBQzFELE1BQ0QsSUFBSyxJQUNKNjRHLEVBQU8sTUFBTSxLQUFLNzRHLENBQUcsRUFDbEJBLEVBQUksTUFBTSxPQUFTLE1BQVE4NEcsR0FBVUEsRUFBTyxlQUFpQkEsRUFBTyxjQUFjLFlBQ3BGOTRHLEVBQUksTUFBTSxJQUFNeTNHLEdBQVNxQixFQUFPLGNBQWMsVUFBVTk0RyxFQUFJLE1BQU0sS0FBSyxFQUFFLElBQUtBLEVBQUksTUFBTSxNQUFRLENBQUMsR0FFbEcsTUFDRCxJQUFLLE1BQTRCLE1BQ2pDLElBQUssSUFDSixNQUNELElBQUssSUFDSixNQUNELElBQUssSUFDRHkzQyxFQUFNQSxFQUFNLE9BQVMsQ0FBQyxHQUFLLEtBQzdCb2hFLEVBQU8sT0FBTyxLQUFLNzRHLENBQUcsRUFFdkIsTUFDRCxJQUFLLElBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0osTUFFRCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssTUFDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssTUFDSixNQUVELElBQUssSUFDSmd4RyxFQUFPLEdBQU0sTUFDZCxJQUFLLElBQ0pBLEVBQU8sR0FBTyxNQUNmLElBQUssSUFDSnY1RCxFQUFNLEtBQUs0dkMsQ0FBRSxFQUFHMnBCLEVBQU8sR0FBTSxNQUM5QixJQUFLLElBQ0p2NUQsRUFBTSxJQUFLLEVBQUV1NUQsRUFBTyxHQUFPLE1BRTVCLFFBQ0MsR0FBRzNoQyxFQUFFLEVBQUksRUFBRzUzQixFQUFNLEtBQUs0dkMsQ0FBRSxVQUNqQmhZLEVBQUUsRUFBSSxFQUFHNTNCLEVBQU0sSUFBRyxVQUNsQixDQUFDdTVELEdBQVNyMkcsRUFBSyxLQUFPODhDLEVBQU1BLEVBQU0sT0FBTyxDQUFDLEdBQUssR0FBMEIsTUFBTSxJQUFJLE1BQU0sdUJBQXlCNHZDLEVBQUcsU0FBUyxFQUFFLENBQUMsQ0FDMUksQ0FDSCxDQUFFLEVBQ013eEIsQ0FDUixDQUVBLFNBQVNtRCxHQUFlbjBCLEVBQUl1eEIsRUFBa0IsQ0FDN0MsR0FBSUEsRUFDSixLQUFJeG1DLEVBQU0sRUFDVixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQU8sR0FBZ0IsR0FBRyxDQUFDLEVBQUUsUUFBUSxTQUFTanVFLEVBQUcsQ0FFdkUsUUFBUXZGLEVBQUl1RixFQUFFLENBQUMsRUFBR3ZGLEdBQUt1RixFQUFFLENBQUMsRUFBRyxFQUFFdkYsRUFBTWc2RyxFQUFHaDZHLENBQUMsR0FBSyxNQUFNLEVBQUV3ekUsQ0FDeEQsQ0FBRSxFQUVFQSxHQUFPLElBQ1ZnVixHQUFhQyxFQUFJLElBQTJCMkMsR0FBZTVYLENBQUcsQ0FBQyxFQUMvRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQU8sR0FBZ0IsR0FBRyxDQUFDLEVBQUUsUUFBUSxTQUFTanVFLEVBQUcsQ0FFdkUsUUFBUXZGLEVBQUl1RixFQUFFLENBQUMsRUFBR3ZGLEdBQUt1RixFQUFFLENBQUMsRUFBRyxFQUFFdkYsRUFBTWc2RyxFQUFHaDZHLENBQUMsR0FBSyxNQUFNd29GLEdBQWFDLEVBQUksR0FBcUJ3eUIsR0FBYWo3RyxFQUFHZzZHLEVBQUdoNkcsQ0FBQyxDQUFDLENBQUMsQ0FDbEgsQ0FBRSxFQUNEd29GLEdBQWFDLEVBQUksTUFDbEIsQ0FFQSxTQUFTbzBCLEdBQWdCcDBCLEVBQWdCLENBQ3hDLElBQUlqVixFQUFNLEVBR1ZnVixHQUFhQyxFQUFJLElBQTRCMkMsR0FBZTVYLENBQUcsQ0FBQyxFQUNoRWdWLEdBQWFDLEVBQUksR0FBc0I4eUIsR0FBYyxDQUNwRCxHQUFHLEdBQ0gsTUFBTyxDQUFDLE1BQU0sQ0FBQyxFQUNmLEtBQU0sVUFDTixPQUFRLEVBQ1IsT0FBUSxPQUNSLENBQUEsQ0FBQyxFQUVGL3lCLEdBQWFDLEVBQUksSUFDbEIsQ0FFQSxTQUFTcTBCLEdBQWdCcjBCLEVBQWdCLENBQ3hDLElBQUlqVixFQUFNLEVBR1ZnVixHQUFhQyxFQUFJLElBQTRCMkMsR0FBZTVYLENBQUcsQ0FBQyxFQUNoRWdWLEdBQWFDLEVBQUksR0FBc0JvekIsR0FBYyxDQUFDLFlBQVksTUFBTSxDQUFDLENBQUMsRUFDMUVyekIsR0FBYUMsRUFBSSxHQUFzQm96QixHQUFjLENBQUMsWUFBWSxTQUFTLENBQUMsQ0FBQyxFQUU3RXJ6QixHQUFhQyxFQUFJLElBQ2xCLENBRUEsU0FBU3MwQixHQUFrQnQwQixFQUFnQixDQUMxQyxJQUFJalYsRUFBTSxFQUdWZ1YsR0FBYUMsRUFBSSxJQUE4QjJDLEdBQWU1WCxDQUFHLENBQUMsRUFDbEVnVixHQUFhQyxFQUFJLEdBQXdCNnpCLEdBQWtCLENBQUMsRUFFNUQ5ekIsR0FBYUMsRUFBSSxJQUNsQixDQUVBLFNBQVN1MEIsR0FBdUJ2MEIsRUFBZ0IsQ0FDL0MsSUFBSWpWLEVBQU0sRUFDVmdWLEdBQWFDLEVBQUksSUFBbUMyQyxHQUFlNVgsQ0FBRyxDQUFDLEVBQ3ZFZ1YsR0FBYUMsRUFBSSxHQUFvQnl6QixHQUFZLENBQ2hELFNBQVUsRUFDVixPQUFVLEVBQ1YsT0FBVSxFQUNWLFNBQVUsQ0FDWixFQUFJLEtBQU0sQ0FBQyxFQUVWMXpCLEdBQWFDLEVBQUksSUFDbEIsQ0FFQSxTQUFTdzBCLEdBQWtCeDBCLEVBQUl0MEUsRUFBTSxDQUNwQ3EwRSxHQUFhQyxFQUFJLElBQThCMkMsR0FBZWozRSxFQUFLLE1BQU0sQ0FBQyxFQUMxRUEsRUFBSyxRQUFRLFNBQVM0TyxFQUFHLENBQUV5bEUsR0FBYUMsRUFBSSxHQUFvQnl6QixHQUFZbjVGLEVBQUUsQ0FBQyxDQUFDLENBQUksQ0FBQSxFQUVwRnlsRSxHQUFhQyxFQUFJLElBQ2xCLENBRUEsU0FBU3kwQixHQUFpQnowQixFQUFnQixDQUN6QyxJQUFJalYsRUFBTSxFQUVWZ1YsR0FBYUMsRUFBSSxJQUE2QjJDLEdBQWU1WCxDQUFHLENBQUMsRUFDakVnVixHQUFhQyxFQUFJLEdBQXVCOHpCLEdBQWUsQ0FDdEQsS0FBSyxFQUNMLFVBQVUsRUFDVixLQUFLLFFBQ0wsQ0FBQSxDQUFDLEVBRUYvekIsR0FBYUMsRUFBSSxJQUNsQixDQUVBLFNBQVMwMEIsR0FBZTEwQixFQUFnQixDQUN2QyxJQUFJalYsRUFBTSxFQUVWZ1YsR0FBYUMsRUFBSSxJQUEyQjJDLEdBQWU1WCxDQUFHLENBQUMsRUFFL0RnVixHQUFhQyxFQUFJLElBQ2xCLENBRUEsU0FBUzIwQixHQUFzQjMwQixFQUFnQixDQUM5QyxJQUFJalYsRUFBTSxFQUVWZ1YsR0FBYUMsRUFBSSxJQUFrQyt6QixHQUEwQmhwQyxFQUFLLG9CQUFxQixtQkFBbUIsQ0FBQyxFQUUzSGdWLEdBQWFDLEVBQUksSUFDbEIsQ0FRQSxTQUFTNDBCLEdBQWNoZ0IsRUFBSTloRyxFQUFNLENBQ2hDLElBQUlrdEYsRUFBS04sS0FDVCxPQUFBSyxHQUFhQyxFQUFJLEtBQ2pCbTBCLEdBQWVuMEIsRUFBSTRVLEVBQUcsR0FBRyxFQUN6QndmLEdBQWdCcDBCLENBQU0sRUFDdEJxMEIsR0FBZ0JyMEIsQ0FBTSxFQUN0QnMwQixHQUFrQnQwQixDQUFNLEVBQ3hCdTBCLEdBQXVCdjBCLENBQU0sRUFDN0J3MEIsR0FBa0J4MEIsRUFBSWx0RixFQUFLLE9BQU8sRUFDbEMyaEgsR0FBaUJ6MEIsQ0FBTSxFQUN2QjAwQixHQUFlMTBCLENBQU0sRUFDckIyMEIsR0FBc0IzMEIsQ0FBTSxFQUc1QkQsR0FBYUMsRUFBSSxLQUNWQSxFQUFHLEtBQ1gsQ0FFQSxJQUFJNjBCLEdBQXFCLENBQ3hCLFdBQVksV0FBWSxXQUFZLFdBQ3BDLGVBQWdCLGVBQWdCLGVBQ2hDLGVBQWdCLGVBQWdCLGVBQ2hDLGFBQWMsZUFDZixFQUVBLFNBQVNDLEdBQWdCOTRHLEVBQUdpMUcsRUFBUW4rRyxFQUFNLENBQ3pDbStHLEVBQU8sY0FBYyxVQUFZLEdBQ2pDLElBQUlqc0YsRUFBUSxDQUFBLEdBQ1hocEIsRUFBRSxDQUFDLEVBQUUsTUFBTXc5RSxFQUFRLEdBQUcsQ0FBRSxHQUFFLFFBQVEsU0FBUzcvQyxFQUFHLENBQzlDLElBQUl5WixFQUFJdW1DLEdBQVloZ0QsQ0FBQyxFQUNyQixPQUFPeVosRUFBRSxDQUFDLEVBQUMsQ0FFVixJQUFLLGVBQWdCLElBQUssaUJBQWtCLE1BRzVDLElBQUssYUFDSnB1QixFQUFNLElBQU1vdUIsRUFBRSxJQUFLLE1BR3BCLElBQUssWUFDSnB1QixFQUFNLElBQU1vdUIsRUFBRSxRQUFTLE1BY3hCLElBQUssVUFBVyxJQUFLLFdBQ3JCLElBQUssVUFBVyxJQUFLLFdBQ3JCLElBQUssVUFBVyxJQUFLLFdBQ3JCLElBQUssVUFBVyxJQUFLLFdBQ3JCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssY0FBZSxJQUFLLGVBQ3pCLElBQUssWUFBYSxJQUFLLGFBQ3ZCLElBQUssZUFBZ0IsSUFBSyxnQkFDckJBLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFNLEtBQ3RCNjlELEVBQU8sY0FBYyxVQUFVNEQsR0FBbUIsUUFBUXpoRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUlwdUIsRUFDbkVBLEVBQVEsQ0FBQSxHQUVSQSxFQUFNLEtBQU9vdUIsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFHQSxFQUFFLENBQUMsRUFBRSxPQUFTLENBQUMsRUFFM0MsTUFFRCxRQUFTLEdBQUd0Z0QsR0FBUUEsRUFBSyxJQUFLLE1BQU0sSUFBSSxNQUFNLGdCQUFrQnNnRCxFQUFFLENBQUMsRUFBSSxlQUFlLENBQ3RGLENBQ0gsQ0FBRSxDQUNGLENBR0EsU0FBUzJoRSxJQUF3QyxDQUFHLENBR3BELFNBQVNDLElBQXVDLENBQUcsQ0FFbkQsSUFBSUMsR0FBWSw2Q0FDWkMsR0FBWSwrQ0FDWkMsR0FBWSw2Q0FHaEIsU0FBU0MsR0FBb0IxcEcsRUFBTXVsRyxFQUFRbitHLEVBQU0sQ0FDaERtK0csRUFBTyxjQUFnQixHQUV2QixJQUFJajFHLEVBRUosQ0FFQyxDQUFDLFlBQWFpNUcsR0FBV0gsRUFBZSxFQUV4QyxDQUFDLGFBQWNJLEdBQVdILEVBQWdCLEVBRTFDLENBQUMsWUFBYUksR0FBV0gsRUFBZSxDQUMxQyxFQUFHLFFBQVEsU0FBU2o3QyxFQUFHLENBQ3JCLEdBQUcsRUFBRS85RCxFQUFFMFAsRUFBSyxNQUFNcXVELEVBQUUsQ0FBQyxDQUFDLEdBQUksTUFBTSxJQUFJLE1BQU1BLEVBQUUsQ0FBQyxFQUFJLDZCQUE2QixFQUM5RUEsRUFBRSxDQUFDLEVBQUUvOUQsRUFBR2kxRyxFQUFRbitHLENBQUksQ0FDdEIsQ0FBRSxDQUNGLENBRUEsSUFBSXVpSCxHQUFlLHFEQUduQixTQUFTQyxHQUFnQjVwRyxFQUFpQjVZLEVBQU0sRUFFNUMsQ0FBQzRZLEdBQVFBLEVBQUssU0FBVyxLQUFHQSxFQUFPNnBHLE1BRXRDLElBQUl2NUcsRUFDQWkxRyxFQUFTLENBQUEsRUFHYixHQUFHLEVBQUVqMUcsRUFBRTBQLEVBQUssTUFBTTJwRyxFQUFZLEdBQUksTUFBTSxJQUFJLE1BQU0sa0NBQWtDLEVBQ3BGLE9BQUFELEdBQW9CcDVHLEVBQUUsQ0FBQyxFQUFHaTFHLEVBQVFuK0csQ0FBSSxFQUN0Q20rRyxFQUFPLElBQU12bEcsRUFDTnVsRyxDQUNSLENBRUEsU0FBU3NFLEdBQVlDLEVBQVExaUgsRUFBaUIsQ0FDN0MsR0FBR0EsR0FBUUEsRUFBSyxVQUFXLE9BQU9BLEVBQUssVUFDdkMsR0FBRzBpSCxHQUFVLE9BQU9BLEVBQU8sS0FBTyxTQUFVLE9BQU9BLEVBQU8sSUFDMUQsSUFBSTczRyxFQUFJLENBQUN5N0UsRUFBVSxFQUNuQixPQUFBejdFLEVBQUVBLEVBQUUsTUFBTSxFQUFJLGdHQUNkQSxFQUFFQSxFQUFFLE1BQU0sRUFBSyxvQkFFZkEsRUFBRUEsRUFBRSxNQUFNLEVBQU0sOEJBQ2hCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTywrREFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLDJEQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8sMkNBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTywyQ0FDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLG1EQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8sbURBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTyxtREFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLG1EQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8sbURBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTyxtREFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLCtDQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8scURBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTSxpQkFFaEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFNLCtCQUNoQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8sZ0JBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxnQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHNCQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsc0JBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsd0NBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwwQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHFEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEscURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLCtDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDhDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMERBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSx3REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHdEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSx1REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwrQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLGtEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEscURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxxREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHNEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTyxpQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLGdCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsZ0NBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxzQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHNCQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHdDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEs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Q0FBRSxFQUFFLGFBQWMsRUFBRTdDLEVBQWtCLEVBQ25ELEdBQWEsQ0FBRSxFQUFFLFVBQVcsRUFBRWtCLEVBQWUsRUFDN0MsR0FBYSxDQUFFLEVBQUUsV0FBWSxFQUFFaEIsRUFBZ0IsRUFDL0MsR0FBYSxDQUFFLEVBQUUsY0FBZSxFQUFFaUUsRUFBbUIsRUFDckQsR0FBYSxDQUFFLEVBQUUsZUFBZ0IsRUFBRUMsRUFBb0IsRUFDdkQsR0FBYSxDQUFFLEVBQUUsV0FBWSxFQUFFM0IsRUFBZ0IsRUFDL0MsR0FBYSxDQUFFLEVBQUUsV0FBWSxFQUFFdEIsRUFBZ0IsRUFDL0MsR0FBYSxDQUFFLEVBQUUsWUFBYSxFQUFFckIsRUFBaUIsRUFDakQsR0FBYSxDQUFFLEVBQUUsY0FBZSxFQUFFZ0QsRUFBbUIsRUFDckQsR0FBYSxDQUFFLEVBQUUsZUFBZ0IsRUFBRTdDLEVBQW9CLEVBQ3ZELElBQWEsQ0FBRSxDQUN2QixFQUVJc0UsR0FBVyxDQUNQLEdBQWEsR0FBYSxHQUFhLEdBQ3ZDLEdBQWEsR0FBYSxHQUFhLEdBQ3ZDLEdBQWEsR0FBYSxHQUFhLEdBQ3ZDLEdBQWEsR0FBYSxHQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEdBQ3ZDLEdBQWEsR0FBYSxJQUFhLEVBQy9DLEVBRUlDLEdBQVEsQ0FDSixFQUFh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SUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxlQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxjQUNMLElBQUssa0JBQ0wsSUFBSyxZQUNMLElBQUssaUJBQ0wsSUFBSyxjQUNMLElBQUssZUFDTCxJQUFLLGVBQ0wsSUFBSyxZQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssZ0JBQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGFBQ0wsSUFBSyxnQkFDTCxJQUFLLFlBQ0wsSUFBSyxhQUNMLElBQUssVUFDTCxJQUFLLE9BQ0wsSUFBSyxjQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxpQkFDTCxJQUFLLGNBQ0wsSUFBSyxvQkFDTCxJQUFLLGdCQUNMLElBQUssZUFDTCxJQUFLLGlCQUNMLElBQUssa0JBQ0wsSUFBSyxjQUNMLElBQUsscUJBQ0wsSUFBSyxTQUNMLElBQUssY0FDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssZUFDTCxJQUFLLGVBQ0wsSUFBSyxpQkFDTCxJQUFLLGVBQ0wsSUFBSyxrQkFDTCxJQUFLLHFCQUNMLElBQUssYUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssZ0JBQ0wsSUFBSyxjQUNMLElBQUssZUFDTCxJQUFLLGtCQUNMLElBQUssb0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGlCQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxVQUNMLElBQUssU0FDTCxJQUFLLGNBQ0wsSUFBSyxVQUNMLElBQUssb0JBQ0wsSUFBSyxrQkFDTCxJQUFLLFFBQ0wsSUFBSyxhQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxtQkFDTCxJQUFLLG9CQUNMLElBQUssY0FDTCxJQUFLLGNBQ0wsSUFBSyxtQkFDTCxJQUFLLGVBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLGdCQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLGVBQ0wsSUFBSyxhQUNMLElBQUssYUFDTCxJQUFLLGdCQUNMLElBQUssZUFDTCxJQUFLLGtCQUNMLElBQUssZ0JBQ0wsSUFBSyxxQkFDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssZ0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGFBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLGlCQUNMLElBQUssY0FDTCxJQUFLLGlCQUNMLElBQUsscUJBQ0wsSUFBSyxZQUNMLElBQUssb0JBQ0wsSUFBSyxXQUNMLElBQUssY0FDTCxJQUFLLGlCQUNMLElBQUssV0FDTCxJQUFLLGVBQ0wsSUFBSyxnQkFDTCxJQUFLLGdCQUNMLElBQUssbUJBQ0wsSUFBSyxpQkFDTCxJQUFLLGVBQ0wsSUFBSyxjQUNMLElBQUssWUFDTCxJQUFLLGtCQUNMLElBQUssb0JBQ0wsSUFBSyxpQkFDTCxJQUFLLFlBQ0wsSUFBSyxhQUNMLElBQUssb0JBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLGlCQUNMLElBQUssa0JBQ0wsSUFBSyxlQUNMLElBQUssZ0JBQ0wsSUFBSyxnQkFDTCxJQUFLLHFCQUNMLElBQUssbUJBQ0wsSUFBSyxxQkFDTCxJQUFLLHlCQUNMLElBQUssY0FDTCxJQUFLLGFBQ0wsSUFBSyxtQkFDTCxJQUFLLHNCQUNMLElBQUssZUFDTCxJQUFLLGVBQ0wsSUFBSyxnQkFDTCxJQUFLLGNBQ0wsSUFBSyxrQkFDTCxJQUFLLGNBQ0wsSUFBSyxnQkFDTCxJQUFLLGtCQUNMLElBQUssMkJBQ0wsSUFBSyxlQUNMLElBQUssaUJBQ0wsSUFBSyxhQUNMLElBQUssaUJBQ0wsSUFBSyxZQUNMLElBQUssbUJBQ0wsSUFBSyxjQUNMLElBQUssd0JBQ0wsSUFBSyxrQkFDTCxJQUFLLHFCQUNMLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGtCQUNMLElBQUsscUJBQ0wsSUFBSyxhQUNMLElBQUssaUJBQ0wsSUFBSyxlQUNMLElBQUssbUJBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLGtCQUNMLElBQUssZ0JB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R0FBSSxNQUNKLEdBQUksT0FDSixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksT0FDSixHQUFJLE1BQ0osR0FBSSxRQUNKLEdBQUksT0FDSixHQUFJLFVBQ0osR0FBSSxPQUNKLEdBQUksU0FDSixHQUFJLFNBQ0osR0FBSSxNQUNKLEdBQUksUUFDSixHQUFJLE9BQ0osR0FBSSxVQUNKLEdBQUksU0FDSixHQUFJLFNBQ0osR0FBSSxTQUNKLEdBQUksV0FDSixHQUFJLFNBQ0osR0FBSSxZQUNKLEdBQUksUUFDSixHQUFJLE9BQ0osR0FBSSxPQUNKLEdBQUksT0FDSixHQUFJLFdBQ0osR0FBSSxTQUNKLEdBQUksUUFDSixHQUFJLFVBQ0osR0FBSSxTQUNKLEdBQUksWUFDSixHQUFJLGNBQ0osR0FBSSxZQUNKLEdBQUksU0FDSixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksT0FDSixJQUFLLFNBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLGNBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLE1BQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLElBQ0wsSUFBSyxJQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxXQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssTUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssY0FDTCxJQUFLLGlCQUNMLElBQUssZ0JBQ0wsSUFBSyxpQkFDTCxJQUFLLFdBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxpQkFDTCxJQUFLLGFBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssU0FDTCxJQUFLLGFBQ0wsSUFBSyxNQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssT0FDTCxJQUFLLFdBQ0wsSUFBSyxnQkFDTCxJQUFLLGFBQ0wsSUFBSyxlQUNMLElBQUssV0FDTCxJQUFLLFlBQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssYUFDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxNQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxNQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxTQUNMLElBQUssV0FDTCxJQUFLLFNBQ0wsSUFBSyxhQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLGdCQUNMLElBQUssV0FDTCxJQUFLLGFBQ0wsSUFBSyxjQUNMLElBQUssZ0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGdCQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssYUFDTCxJQUFLLEtBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLFlBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxPQUNMLElBQUssZ0JBQ0wsSUFBSyxXQUNMLElBQUssY0FDTCxJQUFLLFdBQ0wsSUFBSyxpQkFDTCxJQUFLLGFBQ0wsSUFBSyxZQUNMLElBQUssZUFDTCxJQUFLLGVBQ0wsSUFBSyxjQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxlQUNMLElBQUssU0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssU0FDTCxJQUFLLFNBQ0wsSUFBSyxhQUNMLElBQUssWUFDTCxJQUFLLE9BQ0wsSUFBSyxZQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxTQUNMLElBQUssWUFDTCxJQUFLLFFBQ0wsSUFBSyxZQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxjQUNMLElBQUssY0FDTCxJQUFLLFNBQ0wsSUFBSyxlQUNMLElBQUssV0FDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLGNBQ0wsSUFBSyxNQUNMLElBQUssU0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxTQUNMLElBQUssUUFDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxNQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFdBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLE9BQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLGdCQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxRQUNMLElBQUssaUJBQ0wsSUFBSyxrQkFDTCxJQUFLLGtCQUNMLElBQUssaUJBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxlQUNMLElBQUssb0JBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxlQUNMLElBQUssUUFDTCxJQUFLLGNBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLGVBQ0wsSUFBSyxZQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxXQUNMLElBQUssZ0JBQ0wsSUFBSyxZQUNMLElBQUssa0JBQ0wsSUFBSyxlQUNMLElBQUssZ0JBQ0wsSUFBSyxtQkFDTCxJQUFLLGNBQ0wsSUFBSyxnQkFDTCxJQUFLLGNBQ0wsSUFBSyxXQUNMLElBQUssTUFDTCxJQUFLLFlBQ0wsSUFBSyxhQUNMLElBQUsscUJBQ0wsSUFBSyxtQkFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLFNBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxZQUNMLElBQUssU0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxhQUNMLElBQUssU0FDTCxJQUFLLFdBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLFNBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLE1BQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssYUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssU0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLFdBQ0wsSUFBSyxhQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLFVBQ0wsSUFBSyxZQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssY0FDTCxJQUFLLE1BQ0wsSUFBSyxjQUNMLElBQUssTUFDTCxJQUFLLGFBQ0wsSUFBSyxnQkFDTCxJQUFLLFVBQ0wsSUFBSyxlQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxTQUNMLElBQUssWUFDTCxJQUFLLFlBQ1AsRUFDSUQsR0FBVyxDQUNiLEVBQUcsRUFDSCxFQUFHLEVBQ0gsR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVB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QUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQXVDLEVBQUUsQ0FBRyxFQUMzRCxJQUFlLENBQXFDLEVBQUUsRUFBSSxFQUMxRCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQXlCLEVBQUUsQ0FBRyxFQUM3QyxJQUFlLENBQXVCLEVBQUUsRUFBSSxFQUM1QyxJQUFlLENBQTZCLEVBQzVDLElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBNEIsRUFBRSxDQUFHLEVBQ2hELElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBK0IsRUFBRSxDQUFHLEVBQ25ELElBQWUsQ0FBNkIsRUFBRSxFQUFJLEVBQ2xELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBK0IsRUFBRSxDQUFHLEVBQ25ELElBQWUsQ0FBNkIsRUFBRSxFQUFJLEVBQ2xELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBMEIsRUFBRSxFQUFJLEVBQy9DLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJ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Q0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBa0MsRUFBRSxDQUFHLEVBQ3RELElBQWUsQ0FBZ0MsRUFBRSxFQUFJLEVBQ3JELElBQWUsQ0FBaUMsRUFBRSxDQUFHLEVBQ3JELElBQWUsQ0FBK0IsRUFBRSxFQUFJLEVBQ3BELElBQWUsQ0FBb0MsRUFBRSxDQUFHLEVBQ3hELElBQWUsQ0FBa0MsRUFBRSxFQUFJLEVBQ3ZELElBQWUsQ0FBbUMsRUFBRSxDQUFHLEVBQ3ZELElBQWUsQ0FBaUMsRUFBRSxFQUFJLEVBQ3RELElBQWUsQ0FBeUIsRUFBRSxDQUFHLEVBQzdDLElBQWUsQ0FBdUIsRUFBRSxFQUFJLEVBQzVDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBa0MsRUFBRSxDQUFHLEVBQ3RELElBQWUsQ0FBZ0MsRUFBRSxFQUFJLEVBQ3JELElBQWUsQ0FBaUMsRUFBRSxDQUFHLEVBQ3JELElBQWUsQ0FBK0IsRUFBRSxFQUFJLEVBQ3BELElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBbUMsRUFBRSxDQUFHLEVBQ3ZELElBQWUsQ0FBaUMsRUFBRSxFQUFJLEVBQ3RELElBQWUsQ0FBMkMsRUFBRSxDQUFHLEVBQy9ELElBQWUsQ0FBeUMsRUFBRSxFQUFJLEVBQzlELElBQWUsQ0FBNEIsRUFBRSxDQUFHLEVBQ2hELElBQWUsQ0FBMEIsRUFBRSxFQUFJLEVBQy9DLElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBcUIsRUFD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QUFRLFNBQVUsQ0FDekQsT0FBUUEsRUFBUSxPQUNoQixPQUFRQSxFQUFRLE9BRWhCLEtBQUE5dEcsQ0FBQSxDQUNELE1BR0YsQ0FDSCxFQUVBLElBQUlzbUYsRUFBaUIsQ0FDbkIsT0FBTyxJQUFJLFFBQVEsQ0FBQ2x3SCxFQUFTQyxJQUFVLENBT3JDLE1BQU15M0ksRUFBcUIsT0FBTyxPQUFPLENBQUEsRUFMQyxDQUN4QyxLQUFNLEdBQ04sU0FBVSxJQUFBLEVBR2dEeG5CLENBQU0sRUFFNUQ1d0QsRUFBTyxJQUFJLEtBQUssQ0FBQ280RSxFQUFRLElBQUksRUFBRyxDQUFFLEtBQU0sMEJBQUEsQ0FBNEIsRUFDMUVWLEdBQVUsT0FBTzEzRSxFQUFNbzRFLEVBQVEsU0FBVyxNQUFNLE1BR2pELENBQ0gsY0FHd0IsQ0FDeEIsTUFBTSxJQUFJaHBFLEVBQVUsQ0FDWCxPQUFBLE1BQU0wb0UsR0FBa0Ixb0UsQ0FBSSxDQUNyQyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlsxOSwyMSwyMiwyMyw0NSw4NCw5OSwxMDAsMTM2LDEzN119