130 lines
4.1 MiB
130 lines
4.1 MiB
var wD=Object.defineProperty;var _D=(oe,ue,l)=>ue in oe?wD(oe,ue,{enumerable:!0,configurable:!0,writable:!0,value:l}):oe[ue]=l;var Te=(oe,ue,l)=>(_D(oe,typeof ue!="symbol"?ue+"":ue,l),l),rf=(oe,ue,l)=>{if(!ue.has(oe))throw TypeError("Cannot "+l)};var V=(oe,ue,l)=>(rf(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,z)=>(rf(oe,ue,"write to private field"),z?z.call(oe,l):ue.set(oe,l),l);var Lo=(oe,ue,l,z)=>({set _(Mt){Be(oe,ue,Mt,l)},get _(){return V(oe,ue,z)}}),Ce=(oe,ue,l)=>(rf(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,z,Mt,cp,lf){var np,fi,Zr,Ar,Qr,en,ui,di,It,tn,Dt,ut,Le,fr,Dr,ar,$t,rn,Wt,nn,an,Rr,sn,ia,ur,_s,nf,Oa,Ln,ys,Or,Po,lp,Ba,hi,ks,wn,sa,_n,oa,bs,af,nD,mi,Vo,pi,Uo,it,dt,Es,sf,Na,As,yn,la,Cs,of;"use strict";function fp(){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 up(...e){console.warn.apply(this,arguments)}function dp(...e){console.error.apply(this,arguments)}const hp=(...e)=>{dp("%c [error]","font-weight: 600;",...e)},mp=(...e)=>{up("%c [warn]","font-weight: 600;",...e)},cf=(...e)=>{$o("%c [info]","font-weight: 600;",...e)},pp=(...e)=>{if(!console.log)return;const t=fp();{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 ff(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=pp;case"info":Re.info=cf,Re.log=cf;case"warn":Re.warn=mp;case"error":Re.error=hp;break}}ff();function gp(e){return e==null||e===""}function xp(...e){for(const t of e)if(!(t==null||t===""))return!1;return!1}function vp(...e){for(const t of e)if(t==null||t==="")return!0;return!1}const Wo={isEmpty:gp,isAllEmpty:xp,hasEmpty:vp};function wp(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 _p(e,t,r,n){const a=Ho(r);e.component(t,a,n)}function yp(e,t,r,n,a){const i=xi(t,n,a);z.forEach(i,(s,o)=>{r&&r.indexOf(o)!=-1||_p(e,o,s,null)})}function kp(e,t,r,n,a){const i=xi(t,n,a);z.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)/),z.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=z.camelCase(o),o=z.upperFirst(o),r&&(a=r(a)),n[o]=a}),n}function bp(e){const t=xi(e),r={};return z.forEach(t,(n,a)=>{r[a]=Ho(n)}),r}function Ep(e){const t=xi(e),r={};return z.forEach(t,(n,a)=>{r[a]=n.default}),r}const Cp={transformFromGlob:xi,installAsyncComponents:yp,installSyncComponents:kp,createAsyncComponent:Ho,loadAsyncComponentFromGlob:bp,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 Sp=/\D/,Tp=/^[a-zA-Z_$]+([\w_$]*)$/,Fp=/"/g;function uf(...e){return e.reduce((t,r)=>t?!r||r.startsWith("[")?`${t}${r}`:`${t}.${r}`:r,"")}function df(e){function t(r,...n){if(n=n.filter(a=>a!==void 0),e.isString(r))return uf(...n,r);if(Array.isArray(r))return n=uf(...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?Sp.test(i)?Tp.test(i)?a?`${a}.${i}`:`${a}${i}`:`${a}["${i.replace(Fp,'\\"')}"]`:`${a}[${i}]`:`${a}[""]`},n)}return t}df.notChainable=!0;const Ap=/^[a-zA-Z_$]+([\w_$]*)$/,Dp=/"/g,hf=Object.prototype.hasOwnProperty;function Rp(e){const t=typeof e;return e!=null&&(t=="object"||t=="function")}function Op(e){const t=df(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=pf(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=pf(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 mf(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 mf(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&&!hf.call(s,m))continue;let g;h&&(Ap.test(m)?u?g=`${u}.${m}`:g=`${m}`:g=`${u}["${m.replace(Dp,'\\"')}"]`),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 mf{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 Bp(e,t){for(const r in e)if(!t||hf.call(e,r))return!1;return!0}function pf(e,t){const r={isObject:Rp(e)};return r.isArray=r.isObject&&Array.isArray(e),r.isEmpty=r.isArray?!e.length:r.isObject?Bp(e,t):!0,r}function Np(e){const t=Op(e);function r(n,a,i){if(a===void 0&&(a=z.identity),i=z.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)),!z.isString(i.childrenPath)&&!Array.isArray(i.childrenPath))throw Error("childrenPath can be string or array");z.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]=z.toPath(i.strChildrenPath[s])}return t({value:n,callback:a,options:i,obj:n}),n}return r}const gf={forEachDeep:Np({isString:z.isString})},Ip={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 xf(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 Pp(e){try{return!navigator.clipboard||!navigator.clipboard.writeText?(console.warn("Clipboard API not supported, falling back to traditional method"),xf(e)):(await navigator.clipboard.writeText(e),!0)}catch(t){return console.error("复制失败: ",t),xf(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 Lp(){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 Vp(e,t="__default__"){zo.store[t]=e}function Up(e="__default__"){return zo.store[e]}function $p(e="__default__"){zo.store[e]=""}const En={logger:Re,strings:Wo,trace:wp,vite:Cp,store:jo,deepdash:gf,dash:Ip,clipboard:Object.freeze(Object.defineProperty({__proto__:null,clearMemoryClipboard:$p,copyToClipboard:Pp,copyToMemory:Vp,readToClipboard:Lp,readToMemory:Up},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;En.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=En.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=En.clipboard.readToMemory(s);if(o)try{const u=JSON.parse(o);z.merge(i,u)}catch(u){console.error(u)}finally{En.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",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",text:n("fs.actionbar.add")}}}}}};function Go(e,t){return e.type!=="antdv"?{}:{labelCol:{span:t},wrapperCol:{span:23-t}}}function Wp(){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 Hp=Object.freeze(Object.defineProperty({__proto__:null,default:Wp},Symbol.toStringTag,{value:"Module"}));function jp(){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 zp=Object.freeze(Object.defineProperty({__proto__:null,default:jp},Symbol.toStringTag,{value:"Module"}));function Gp(){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 Xp=Object.freeze(Object.defineProperty({__proto__:null,default:Gp},Symbol.toStringTag,{value:"Module"})),vf={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:"查询表单校验失败"}},pagination:{showTotal:"共 {0} 条"},date:{formatter:{to:"至"}},extends:{tableSelect:{view:"查看",select:"选择",ok:"确定",cancel:"取消"},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:"还有文件正在上传,请等待上传完成,或删除它"}}}},Kp={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:"export"},columns:{title:"columns set"}},search:{container:{collapseButton:{text:{collapse:"collapse",expand:"expand"}}},search:{text:"search"},reset:{text:"reset"},error:{message:"form valid error"}},pagination:{showTotal:"Total {0} items"},date:{formatter:{to:"to"}},extends:{tableSelect:{view:"view",select:"select"},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 Yp(e,t){let r=z.get(vf,e);return r==null?e:t instanceof Array?(z.forEach(t,(n,a)=>{r=r.replace("{"+a+"}",n)}),r):r.replace("{n}",t)}class qp{constructor(){Te(this,"vueI18nInstance",null)}t(t,r){return Yp(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=z.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:vf.fs}),t.mergeLocaleMessage(n,{fs:i})}else if(n.startsWith("en")){const a=t.getLocaleMessage(n),i=z.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:Kp.fs}),t.mergeLocaleMessage(n,{fs:i})}Re.debug("i18n",t.getLocaleMessage(n))}this.vueI18nInstance=t}}const Ds=new qp;function Kt(){return Ds.vueI18nInstance!=null?{t:Ds.vueI18nInstance.t}:{t:Ds.t}}var Cn=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 wf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Cn,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)}}})})(wf);var Jp=wf.exports;const Zp=wi(Jp);Mt.extend(Zp);function Xo(e,t){if(!Wo.isEmpty(e))return Mt(e).format(t)}function _f(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}=Kt();return`${Xo(e[0],t)} ${r("fs.date.formatter.to")} ${Xo(e[1],t)}`}return Xo(e,t)}function Qp(e){const{value:t}=e;return _f(t,"YYYY-MM-DD")}function e1(e){const{value:t}=e;return _f(t,"YYYY-MM-DD HH:mm:ss")}var yf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Cn,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)}}})})(yf);var t1=yf.exports;const r1=wi(t1);var kf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Cn,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")}}})})(kf);var n1=kf.exports;const a1=wi(n1);var bf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Cn,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 k=x.weekStart;return w.map(function(R,T){return w[(T+(k||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)}}})})(bf);var i1=bf.exports;const s1=wi(i1);Mt.extend(a1),Mt.extend(s1),Mt.extend(r1);function o1(){const e=ue.uiContext.get();function t(n){const{row:a,key:i,value:s}=n;s!=null&&(e.type==="naive"?a[i]=Mt(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:Qp},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&i!=null&&(e.type==="naive"?n[a]=[Mt(i[0]).valueOf(),Mt(i[1]).valueOf()]:n[a]=[Mt(i[0]),Mt(i[1])])}},datetimerange:{form:{component:{...e.datePicker.buildDateType("datetimerange"),vModel:e.datePicker.modelValue}},column:{width:340,formatter:e1},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&(e.type==="naive"?n[a]=[Mt(i[0]).valueOf(),Mt(i[1]).valueOf()]:n[a]=[Mt(i[0]),Mt(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 l1=Object.freeze(Object.defineProperty({__proto__:null,default:o1},Symbol.toStringTag,{value:"Module"}));function c1(){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 f1=Object.freeze(Object.defineProperty({__proto__:null,default:c1},Symbol.toStringTag,{value:"Module"}));function u1(){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 d1=Object.freeze(Object.defineProperty({__proto__:null,default:u1},Symbol.toStringTag,{value:"Module"}));function h1(){const e=ue.uiContext.get();return{number:{form:{component:{name:e.number.name,vModel:e.modelValue}}}}}const m1=Object.freeze(Object.defineProperty({__proto__:null,default:h1},Symbol.toStringTag,{value:"Module"}));function p1(){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 g1=Object.freeze(Object.defineProperty({__proto__:null,default:p1},Symbol.toStringTag,{value:"Module"}));function x1(){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 v1=Object.freeze(Object.defineProperty({__proto__:null,default:x1},Symbol.toStringTag,{value:"Module"}));function w1(){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 _1=Object.freeze(Object.defineProperty({__proto__:null,default:w1},Symbol.toStringTag,{value:"Module"}));function y1(){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 k1=Object.assign({"./list/assist.ts":Hp,"./list/button.ts":zp,"./list/cascader.ts":Xp,"./list/date.ts":l1,"./list/el.ts":f1,"./list/icon.ts":d1,"./list/number.ts":m1,"./list/phone.ts":g1,"./list/select.ts":v1,"./list/text.ts":_1,"./list/tree.ts":Object.freeze(Object.defineProperty({__proto__:null,default:y1},Symbol.toStringTag,{value:"Module"}))}),Ef=[];z.forEach(k1,e=>{Ef.push(e.default)});const _i={};function b1(){return _i}function E1(e){return _i[e]}function C1(e){for(const t in e)_i[t]=e[t]}const La={getType:E1,addTypes:C1,getTypes:b1,install(){for(const e of Ef)z.forEach(e(),(t,r)=>{_i[r]=t});Re.debug("types installed:",_i)}},S1=l.defineComponent({name:"FsPage",setup(){const e=l.ref();return l.onMounted(()=>{window.getComputedStyle(e.value.parentNode).getPropertyValue("position")!=="relative"&&En.logger.warn("fs-page父节点的position建议为relative,因为fs-page为相对定位(position:absolute),如果样式没有异常,你可以忽略此警告")}),{pageRef:e}}}),ED="",nt=(e,t)=>{const r=e.__vccOpts||e;for(const[n,a]of t)r[n]=a;return r},T1={ref:"pageRef",class:"fs-page"},F1={key:0,class:"fs-page-header"},A1={class:"fs-page-content"},D1={key:1,class:"fs-page-footer"};function R1(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",T1,[e.$slots.header!=null?(l.openBlock(),l.createElementBlock("div",F1,[l.renderSlot(e.$slots,"header")])):l.createCommentVNode("",!0),l.createElementVNode("div",A1,[l.renderSlot(e.$slots,"default")]),e.$slots.footer!=null?(l.openBlock(),l.createElementBlock("div",D1,[l.renderSlot(e.$slots,"footer")])):l.createCommentVNode("",!0)],512)}const Cf=nt(S1,[["render",R1]]);function Ko(e){return e!=null&&(e instanceof Tf||l.isRef(e)||l.isShallow(e))}function Sf(e){return Ko(e)&&!e.cloneable}function O1(e,...t){function r(a,i){if(i!=null&&(z.isArray(a)||Ko(i)))return i}let n=null;for(const a of t)Ko(a)&&(n=a);return n||z.mergeWith(e,...t,r)}function B1(e){if(Sf(e))return e;function t(r){if(Sf(r))return r}return z.cloneDeepWith(e,t)}let Tf=class{constructor(){Te(this,"cloneable",!1)}setCloneable(t){this.cloneable=t}};function Je(){return{merge:O1,cloneDeep:B1,UnMergeable:Tf}}const{cloneDeep:N1}=Je();function I1(e){return e instanceof Rs}function P1(e){return e instanceof yi}function Ff(e,t,r){const n={};if(e==null)return n;const a=r?I1:P1;return gf.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 z.forEach(e,(n,a)=>{r[a]=n.buildAsyncRef(t)}),r}function L1(e,t){t==null||Object.keys(t).length<=0||z.forEach(t,(r,n)=>{z.set(e,n,r.value==null?null:r.value)})}function V1(e,t,r,n){const a=l.computed(()=>{const o=e();return Ff(o,r,!1)}),i=l.computed(()=>{const o=e();return Ff(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=N1(o),f>0){const u=t?t():{};z.forEach(a.value,(d,h)=>{z.set(o,h,d.computeFn(u))})}c>0&&L1(o,s)}return n?n(o):o})}class yi{constructor(t){Te(this,"computeFn");this.computeFn=t}}function Af(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 Df(e){return new Rs(e)}function Br(){return{ComputeValue:yi,compute:Af,AsyncComputeValue:Rs,asyncCompute:Df,doComputed:V1}}const Un={orderDefault:1},{merge:zr,cloneDeep:Sn}=Je(),ki=[];function Yo(e){z.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 U1(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 $1(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=La.getType(n);a&&zr(r,a)}return e=zr(r,e),e}const Va=[];Va.push({name:"type",handle:$1,order:-2}),Va.push({name:"dict",handle:U1,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)=>(z.get(e,"column.order")==null&&z.set(e,"column.order",r),z.get(e,"form.order")==null&&z.set(e,"form.order",r),e)});for(const e of Va)Yo(e);function qo(e,t){const r={};let n=0;return z.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 z.forEach(t,(r,n)=>{r.children?Jo(e,r.children):e[n]=r}),e}function Os(e={},t){return z.forEach(t,(r,n)=>{r.children?Os(e,r.children):e[n]=r}),e}function W1(e){const t=e,r=t.column||{};return r.title==null&&(r.title=t.title),r.key=t.key,t.children&&(r.children=Of(t.children)),Rf(r),l.reactive(r)}function Rf(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 Of(e){let t={};return z.forEach(e,(r,n)=>{t[n]=W1(r)}),t=Zo(t),t}function H1(e){return z.sortBy(e,t=>t.order??Un.orderDefault)}function Zo(e){const t=[];for(const a in e){const i=e[a];i.key=a,i.children&&z.size(i.children)>0&&(i.children=Zo(i.children)),t.push(i)}const r=H1(t),n={};for(const a of r)n[a.key]=a;return n}function Bf(e,t){const r={};return z.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,Rf(a)}),r}function bi(e,t,r,n){const a=Bf(r,t),i=zr(Sn(e.form),e[t],{columns:a});return n&&n(i),i}function j1(e,t="search",r){var o;const n=Bf(r,t),a={},i=((o=e.settings)==null?void 0:o.searchCopyFormProps)??["component","valueChange","title","key","label","render"];function s(c,f,u){if(z.includes(i,u)&&e.columns[f]){const h=e.columns[f][u];h&&(c[u]=h)}}return z.forEach(Sn(e.form.columns),(c,f)=>{const u={};s(u,f,"valueResolve"),s(u,f,"valueBuilder"),a[f]=zr(u,z.pick(c,i))}),zr({columns:a},{columns:n},e.search)}function z1(e,t,r="form"){const{t:n}=Kt(),{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 G1(e){z.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=Of(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=>{z.forEach(n.columns,a=>{a.component||(a.component={}),a.component.disabled=!0})}),e.search=j1(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 Ei(e,t){z.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Ei(r.children,t):t(r,n)})}function Ci(e,t){z.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Ci(r.children,t):t(r,n)})}function Bs(){return{buildFormOptions:z1,buildColumns:G1,registerMergeColumnPlugin:Yo,forEachColumns:Ci,doColumnsSort:Zo,forEachTableColumns:Ei}}let X1=0;const Qo={};async function K1(e){const t=e.id||`${X1++}`,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 Nf(){let 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 K1(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:If}=Je(),Y1=If;function q1(e){const{crudExpose:t}=e,{crudBinding:r}=t;ue.useUi(),Kt();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}=Kt(),i=Nf();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=[];Ci(u,h=>{h.valueBuilder!=null&&d.push(h)}),d.length!==0&&(z.forEach(f,(h,m)=>{z.forEach(d,g=>{const p=g.valueBuilder({value:z.get(h,g.key),row:h,form:h,index:m,key:g.key,column:g});p!=null&&!(p instanceof Promise)&&z.set(h,g.key,p)}),h.children&&z.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=[];Ci(u,h=>{h.valueResolve!=null&&d.push(h)}),d.length!==0&&(Re.debug("doValueResolve ,columns=",u),z.forEach(d,h=>{const m=h.key,g=h.valueResolve({value:z.get(f,m),row:f,form:f,key:m,column:h});g!=null&&!(g instanceof Promise)&&z.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=z.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=If({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]=Y1(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&&z.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=q1({crudExpose:c}),{expose:c,crudExpose:c}}async function Pf(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>rp)});let t=null;return z.each(e,n=>{t=n}),(await t()).exportUtil}async function Mf(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>rp)});let t=null;return z.each(e,n=>{t=n}),(await t()).importUtil}function J1({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=z.map(o,f=>i.getLabel(f)||i.getValue(f)).join("|");c!=null&&c!==""&&(t[r]=c)}}return t}async function Lf(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=[],z.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 Pf(),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=z.cloneDeep(f);z.each(n,d=>{const h=d.columnProps,m={row:u,originalRow:f,key:d.key,col:h,exportCol:d};t.autoUseDictLabel!==!1&&J1(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 Z1(e,t){const n=await(await Mf()).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 Vf(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 Uf(e){e.context==null&&(e.context={});const t=ue.uiContext.get(),{t:r}=Kt(),n=F=>l.computed(()=>r(F));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(W){o.value.pagination[t.pagination.currentPage]=W,o.value.pagination._onCurrentChange&&o.value.pagination._onCurrentChange({current:W,pagination:o.value.pagination})},setPageSize(W){o.value.pagination.pageSize=W,o.value.pagination[t.pagination.currentPage]=1,o.value.pagination._onPageSizeChange&&o.value.pagination._onPageSizeChange({pageSize:W,current:1,pagination:o.value.pagination})},async doAfterChange(){return await c()}})}}}function d(){return{form:{async doSubmit(F){var W,G,B,H;if(F.mode==="edit")if(f(F),((W=a.mode)==null?void 0:W.name)==="local")s.updateTableRow(F.index,F.form,a.mode.isMergeWhenUpdate);else return(G=o.value.request)!=null&&G.editRequest||Re.warn("request.editRequest 未定义,无法保存"),await o.value.request.editRequest(F);else if(F.mode==="add")if(f(F),((B=a.mode)==null?void 0:B.name)==="local"){const K=a.mode.isAppendWhenAdd?s.getTableData().length:0;s.insertTableRow(K,F.form)}else return(H=o.value.request)!=null&&H.addRequest||Re.warn("request.addRequest 未定义,无法保存"),await o.value.request.addRequest(F)},async onSuccess({mode:F}){F==="edit"?await c({scrollTop:!1}):F==="add"?await c({scrollTop:!0,goFirstPage:!0}):await c()}}}}function h(){return{rowHandle:{buttons:{remove:{click:async F=>{F.row=F[t.tableColumn.row],await s.doRemove(F)}},copy:{show:!1,click:async F=>{F.row=F[t.tableColumn.row],await s.openCopy({row:F.row,index:F.index})}},edit:{click:async F=>{F.row=F[t.tableColumn.row],await s.openEdit({row:F.row,index:F.index})}},view:{click:async F=>{F.row=F[t.tableColumn.row],await s.openView({row:F.row,index:F.index})}}}}}}function m(){return{search:{buttons:{search:{loading:l.computed(()=>{var F,W;return(W=(F=o.value)==null?void 0:F.table)==null?void 0:W.loading})}},on_reset(){o.value.table.sort={},Ei(o.value.table.columns,W=>{W.sortOrder=!1});const F=i.getBaseTableRef();F!=null&&F.clearSort&&F.clearSort()},on_search(){i.doRefresh({goFirstPage:!0})},"onUpdate:form":F=>{o.value.search.form=F},"onUpdate:validatedForm":F=>{o.value.search.validatedForm=F},"onUpdate:collapse":F=>{o.value.search.collapse=F},container:{collapse:!0,"onUpdate:collapse":F=>{o.value.search.container.collapse=F}}}}}function g(){return{tabs:{},onTabChange(F){i.setSearchFormData({form:F,mergeForm:!0}),c()}}}function p(){const F=l.ref(!1);return{toolbar:{buttons:{refresh:{type:"primary",icon:t.icons.refresh,title:n("fs.toolbar.refresh.title"),order:1,circle:!0,click:async()=>{await i.doRefresh({scrollTop:!1})}},search:{type:l.computed(()=>o.value.search.show!==!1?"primary":"default"),icon:t.icons.search,title:n("fs.toolbar.search.title"),order:2,circle:!0,click:()=>{o.value.search.show=!o.value.search.show}},compact:{type:l.computed(()=>o.value.toolbar.compact?"primary":"default"),icon:t.icons.compact,title:n("fs.toolbar.compact.title"),order:3,circle:!0,click:()=>{o.value.toolbar.compact=!o.value.toolbar.compact}},export:{show:!0,type:"primary",icon:t.icons.export,order:4,loading:F,title:n("fs.toolbar.export.title"),circle:!0,click:async()=>{F.value=!0;try{await Lf(i,o.value.toolbar.export)}finally{F.value=!1}}},columns:{type:"primary",icon:t.icons.columnsFilter,title:n("fs.toolbar.columns.title"),circle:!0,order:5}},"onUpdate:columns"(W){const G=o.value.table.columns;function B(K,j){const q={};return z.forEach(j,ae=>{const pe=K[ae.key];if(pe){if(pe.columnSetShow===!1){q[ae.key]=pe;return}delete pe.order;const Y=$n({...pe},ae);q[ae.key]=Y,pe.children&&(Y.children=B(pe.children,ae.children))}}),q}const H=B(G,W);o.value.table.columns=H,o.value.table.columnsMap=Os({},H)}}}}function x(){return{table:{onSortChange(F){const{isServerSort:W,prop:G,asc:B,order:H}=F;Ei(o.value.table.columns,j=>{j.key===G?j.sortOrder=H:j.sortOrder=!1});const K=o.value.table.sort;o.value.table.sort=W?{prop:G,order:H,asc:B}:null,(W||K!=null)&&s.doRefresh()}}}}function v(){return{actionbar:{buttons:{add:{click(){s.openAdd({})}}}}}}function y(){const{compute:F}=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 W=>{const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];await s.editable.doRemoveRow({editableId:H,row:B})}}},editRow:{edit:{text:"编辑",loading:F(W=>{const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey],K=s.editable.getEditableRow(H);return!!(K!=null&&K.loading)}),click:async W=>{var K;const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];if(o.value.table.editable.exclusive){const j=s.editable.getActiveRows();z.forEach(j,q=>{o.value.table.editable.exclusiveEffect==="save"?s.editable.doSaveRow({row:q.rowData}):s.editable.doCancelRow({row:q.rowData})})}(K=s.editable.getEditableRow(H))==null||K.active()},show:F(W=>{var K,j;const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];return!((j=(K=s.editable)==null?void 0:K.getEditableRow(H))!=null&&j.isEditing)})},save:{text:"保存",loading:!1,click:async W=>{const{index:G,row:B}=W;await s.editable.doSaveRow({row:B})},show:F(W=>{var K,j;const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];return!!((j=(K=s.editable)==null?void 0:K.getEditableRow(H))!=null&&j.isEditing)})},cancel:{text:"取消",click:async W=>{var H;const{index:G,row:B}=W;await((H=s.editable)==null?void 0:H.doCancelRow({row:B}))},show:F(W=>{var K,j;const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];return!!((j=(K=s.editable)==null?void 0:K.getEditableRow(H))!=null&&j.isEditing)})},remove:{text:"删除",...t.button.colors("danger"),click:async W=>{var K;const{index:G,row:B}=W,H=B[o.value.table.editable.rowKey];await((K=s.editable)==null?void 0:K.doRemoveRow({row:B,editableId:H}))}}}}}}}const{cloneDeep:w}=Je();function k(F){F.search.validatedForm=w(F.search.initialForm)}function R(F){var pe;const W={value:null};let G=w(F);const B=vi.commonOptions(e),H=vi.defaultOptions({t:r,crudOptionsRef:W});a=$n({},H,B,G),W.value=a;const K=l.unref(a.settings);if(K){const Y=l.unref(K.plugins);z.forEach(Y,(ce,D)=>{if(ce.enabled===!1)return;let _=ce.handle,b={};if(_==null){const X=Vf(D);X!=null&&(_=X.handle,b=X.opts)}if(_==null)return;const E=ce.before??b.before,A=_(ce.props,e,a);E!==!1?G=$n(A,G):G=$n(G,A)})}const j=$n(H,u(),d(),h(),m(),g(),p(),x(),v(),y(),B,G),{buildColumns:q}=Bs(),ae=q(j);return k(ae),(pe=ae==null?void 0:ae.settings)!=null&&pe.onUseCrud&&ae.settings.onUseCrud(ae),ae}function T(F){o.value=R(F),Re.info("fast-crud inited, crudBinding=",o.value)}function C(F){const W=$n({},a,F);return T(W),a=W,W}T(a);function U(F){$n(o.value,F)}return{appendCrudOptions:C,resetCrudOptions:T,appendCrudBinding:U,rebuildCrudBindings:R}}function $f(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=Uf(u);return{...f,...d,crudRef:n,crudExpose:i,crudBinding:a,context:s}}return o instanceof Promise?o.then(f=>c(f)):c(o)}function Q1(e){return $f(e)}function Wf(e){return $f(e)}function Hf(){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(z.cloneDeep(e.dict)),a.cloneable=!1,a.clear());function i(){return l.computed(()=>{let T=[];if(e.options?T=e.options:a&&a.data!=null&&(a.data instanceof Array||En.logger.warn("dict.data类型错误,期望为数组,实际:",a.data),T=a.data,e.transformDictData&&(T=e.transformDictData(z.cloneDeep(a.data)))),n.type==="naive"||n.type==="element"){const C=[];for(const U of T)C.push({...U,value:y(U),label:k(U)});return C}return T})}function s(){return a}const o=l.inject("get:scope",function(){});function c(){const T=e[r]||t.attrs[r];return{...o(),componentRef:f,value:T}}const{proxy:f}=l.getCurrentInstance(),u=async(T=!1)=>{if(!a)return;if(a.getNodesByValues){const U=c();if(U.value==null)return;let F=U.value;Array.isArray(U.value)||(F=[U.value]),await a.appendByValues(F);return}if(a.loading)return;const C=c();if(T){await a.reloadDict(C);return}await a.loadDict(C)};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 T=c();t.attrs.onDictChange,t.emit("dict-change",{dict:a,...T})},{immediate:!0})})();const p=()=>{var T;return(T=s())==null?void 0:T.data},x=(T,C)=>{let U=C;return s()&&(U=s()[C]),T[U]},v=(T,C)=>{let U=C;s()&&(U=s()[C]),delete T[U]},y=T=>x(T,"value"),w=T=>x(T,"children"),k=T=>{if(e.labelFormatter)return e.labelFormatter(T);const C=x(T,"label");return C==null?"":String(C)};return{createComputedOptions:i,loadDict:u,reloadDict:d,clearDict:h,getDictData:p,getDict:s,watchValue:m,getValue:y,getLabel:k,getChildren:w,getColor:T=>x(T,"color"),removePropValue:v,curDict:a}}const Ua=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,jf=new Set,nl=typeof process=="object"&&process?process:{},zf=(e,t,r,n)=>{typeof nl.emitWarning=="function"?nl.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let Ns=globalThis.AbortController,Gf=globalThis.AbortSignal;if(typeof Ns>"u"){Gf=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 Gf);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=((np=nl.env)==null?void 0:np.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const t=()=>{e&&(e=!1,zf("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 eg=e=>!jf.has(e),Wn=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),Xf=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=Xf(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 Qc=class Qc{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,it);Ve(this,Es);Ve(this,Na);Ve(this,yn);Ve(this,Cs);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,It,void 0);Ve(this,tn,void 0);Ve(this,Dt,void 0);Ve(this,ut,void 0);Ve(this,Le,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,Ln,()=>{});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,nD,"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:k,allowStaleOnFetchAbort:R,ignoreFetchAbort:T}=t;if(r!==0&&!Wn(r))throw new TypeError("max option must be a nonnegative integer");const C=r?Xf(r):Array;if(!C)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,Dt,new Map),Be(this,ut,new Array(r).fill(void 0)),Be(this,Le,new Array(r).fill(void 0)),Be(this,fr,new C(r)),Be(this,Dr,new C(r)),Be(this,ar,0),Be(this,$t,0),Be(this,rn,al.create(r)),Be(this,It,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=!!k,this.allowStaleOnFetchAbort=!!R,this.ignoreFetchAbort=!!T,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");Ce(this,Po,lp).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");Ce(this,_s,nf).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";eg(U)&&(jf.add(U),zf("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",U,Qc))}}static unsafeExposeInternals(t){return{starts:V(t,an),ttls:V(t,Rr),sizes:V(t,nn),keyMap:V(t,Dt),keyList:V(t,ut),valList:V(t,Le),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 Ce(n=t,it,dt).call(n,r)},backgroundFetch:(r,n,a,i)=>{var s;return Ce(s=t,pi,Uo).call(s,r,n,a,i)},moveToTail:r=>{var n;return Ce(n=t,Na,As).call(n,r)},indexes:r=>{var n;return Ce(n=t,wn,sa).call(n,r)},rindexes:r=>{var n;return Ce(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,It)}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,Dt).has(t)?1/0:0}*entries(){for(const t of Ce(this,wn,sa).call(this))V(this,Le)[t]!==void 0&&V(this,ut)[t]!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield[V(this,ut)[t],V(this,Le)[t]])}*rentries(){for(const t of Ce(this,_n,oa).call(this))V(this,Le)[t]!==void 0&&V(this,ut)[t]!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield[V(this,ut)[t],V(this,Le)[t]])}*keys(){for(const t of Ce(this,wn,sa).call(this)){const r=V(this,ut)[t];r!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield r)}}*rkeys(){for(const t of Ce(this,_n,oa).call(this)){const r=V(this,ut)[t];r!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield r)}}*values(){for(const t of Ce(this,wn,sa).call(this))V(this,Le)[t]!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield V(this,Le)[t])}*rvalues(){for(const t of Ce(this,_n,oa).call(this))V(this,Le)[t]!==void 0&&!Ce(this,it,dt).call(this,V(this,Le)[t])&&(yield V(this,Le)[t])}[Symbol.iterator](){return this.entries()}find(t,r={}){for(const n of Ce(this,wn,sa).call(this)){const a=V(this,Le)[n],i=Ce(this,it,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 Ce(this,wn,sa).call(this)){const a=V(this,Le)[n],i=Ce(this,it,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 Ce(this,_n,oa).call(this)){const a=V(this,Le)[n],i=Ce(this,it,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 Ce(this,_n,oa).call(this,{allowStale:!0}))V(this,Or).call(this,r)&&(Ce(this,yn,la).call(this,V(this,ut)[r],"expire"),t=!0);return t}info(t){const r=V(this,Dt).get(t);if(r===void 0)return;const n=V(this,Le)[r],a=Ce(this,it,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 Ce(this,wn,sa).call(this,{allowStale:!0})){const n=V(this,ut)[r],a=V(this,Le)[r],i=Ce(this,it,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),Ce(this,yn,la).call(this,t,"set"),this;let d=V(this,It)===0?void 0:V(this,Dt).get(t);if(d===void 0)d=V(this,It)===0?V(this,$t):V(this,rn).length!==0?V(this,rn).pop():V(this,It)===V(this,Zr)?Ce(this,mi,Vo).call(this,!1):V(this,It),V(this,ut)[d]=t,V(this,Le)[d]=r,V(this,Dt).set(t,d),V(this,fr)[V(this,$t)]=d,V(this,Dr)[d]=V(this,$t),Be(this,$t,d),Lo(this,It)._++,V(this,hi).call(this,d,u,c),c&&(c.set="add"),f=!1;else{Ce(this,Na,As).call(this,d);const v=V(this,Le)[d];if(r!==v){if(V(this,ia)&&Ce(this,it,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,Le)[d]=r,c){c.set="replace";const y=v&&Ce(this,it,dt).call(this,v)?v.__staleWhileFetching:v;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(a!==0&&!V(this,Rr)&&Ce(this,_s,nf).call(this),V(this,Rr)&&(f||V(this,ys).call(this,d,a,i),c&&V(this,Ln).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,It);){const r=V(this,Le)[V(this,ar)];if(Ce(this,mi,Vo).call(this,!0),Ce(this,it,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,Dt).get(t);if(i!==void 0){const s=V(this,Le)[i];if(Ce(this,it,dt).call(this,s)&&s.__staleWhileFetching===void 0)return!1;if(V(this,Or).call(this,i))a&&(a.has="stale",V(this,Ln).call(this,a,i));else return n&&V(this,Oa).call(this,i),a&&(a.has="hit",V(this,Ln).call(this,a,i)),!0}else a&&(a.has="miss");return!1}peek(t,r={}){const{allowStale:n=this.allowStale}=r,a=V(this,Dt).get(t);if(a===void 0||!n&&V(this,Or).call(this,a))return;const i=V(this,Le)[a];return Ce(this,it,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 k=V(this,Dt).get(t);if(k===void 0){v&&(v.fetch="miss");const R=Ce(this,pi,Uo).call(this,t,k,w,p);return R.__returned=R}else{const R=V(this,Le)[k];if(Ce(this,it,dt).call(this,R)){const W=n&&R.__staleWhileFetching!==void 0;return v&&(v.fetch="inflight",W&&(v.returnedStale=!0)),W?R.__staleWhileFetching:R.__returned=R}const T=V(this,Or).call(this,k);if(!x&&!T)return v&&(v.fetch="hit"),Ce(this,Na,As).call(this,k),a&&V(this,Oa).call(this,k),v&&V(this,Ln).call(this,v,k),R;const C=Ce(this,pi,Uo).call(this,t,k,w,p),F=C.__staleWhileFetching!==void 0&&n;return v&&(v.fetch=T?"stale":"refresh",F&&T&&(v.returnedStale=!0)),F?C.__staleWhileFetching:C.__returned=C}}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,Dt).get(t);if(o!==void 0){const c=V(this,Le)[o],f=Ce(this,it,dt).call(this,c);return s&&V(this,Ln).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||Ce(this,yn,la).call(this,t,"expire"),s&&n&&(s.returnedStale=!0),n?c:void 0)):(s&&(s.get="hit"),f?c.__staleWhileFetching:(Ce(this,Na,As).call(this,o),a&&V(this,Oa).call(this,o),c))}else s&&(s.get="miss")}delete(t){return Ce(this,yn,la).call(this,t,"delete")}clear(){return Ce(this,Cs,of).call(this,"delete")}};nD=Symbol.toStringTag,Zr=new WeakMap,Ar=new WeakMap,Qr=new WeakMap,en=new WeakMap,ui=new WeakMap,di=new WeakMap,It=new WeakMap,tn=new WeakMap,Dt=new WeakMap,ut=new WeakMap,Le=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,nf=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)&&Ce(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,Ln,(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,Dt).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,Ln=new WeakMap,ys=new WeakMap,Or=new WeakMap,Po=new WeakSet,lp=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(Ce(this,it,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;)Ce(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,It))for(let r=V(this,$t);!(!Ce(this,bs,af).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,It))for(let r=V(this,ar);!(!Ce(this,bs,af).call(this,r)||((t||!V(this,Or).call(this,r))&&(yield r),r===V(this,$t)));)r=V(this,fr)[r]},bs=new WeakSet,af=function(t){return t!==void 0&&V(this,Dt).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,Le)[r];return V(this,ia)&&Ce(this,it,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,Le)[r]=void 0,V(this,rn).push(r)),V(this,It)===1?(Be(this,ar,Be(this,$t,0)),V(this,rn).length=0):Be(this,ar,V(this,fr)[r]),V(this,Dt).delete(n),Lo(this,It)._--,r},pi=new WeakSet,Uo=function(t,r,n,a){const i=r===void 0?void 0:V(this,Le)[r];if(Ce(this,it,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,Le)[r]===m&&(p===void 0?w.__staleWhileFetching?V(this,Le)[r]=w.__staleWhileFetching:Ce(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,k=m;if(V(this,Le)[r]===m&&(!w||k.__staleWhileFetching===void 0?Ce(this,yn,la).call(this,t,"fetch"):v||(V(this,Le)[r]=k.__staleWhileFetching)),y)return n.status&&k.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),k.__staleWhileFetching;if(k.__returned===k)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,Dt).get(t)):V(this,Le)[r]=g,g},it=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},Es=new WeakSet,sf=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]):Ce(this,Es,sf).call(this,V(this,Dr)[t],V(this,fr)[t]),Ce(this,Es,sf).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,It)!==0){const c=V(this,Dt).get(t);if(c!==void 0)if(n=!0,V(this,It)===1)Ce(this,Cs,of).call(this,r);else{V(this,Ba).call(this,c);const f=V(this,Le)[c];if(Ce(this,it,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,Dt).delete(t),V(this,ut)[c]=void 0,V(this,Le)[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]}Lo(this,It)._--,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},Cs=new WeakSet,of=function(t){var r,n,a;for(const i of Ce(this,_n,oa).call(this,{allowStale:!0})){const s=V(this,Le)[i];if(Ce(this,it,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,Dt).clear(),V(this,Le).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,It,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=Qc;const Ps=new il({max:500,maxSize:5e3,ttl:1e3*60*30,sizeCalculation:(e,t)=>1}),{UnMergeable:tg}=Je();function rg(e){Kf=e}let Kf=async e=>(Re.warn("请配置 app.use(FsCrud,{dictRequest:(context)=>{ 你的字典请求方法 }})"),[]);class sl extends tg{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,z.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&&(z.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(z.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 Kf({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){z.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[];z.isArray(r)||(r=[r]);const n=[];return z.forEach(r,a=>{const i=this.dataMap[a];i?n.push(i):n.push({[this.value]:a})}),n}}function Yf(e){const t=l.shallowReactive(new sl(e));return!t.prototype&&t.immediate&&t.loadDict(),t}function qf(){return{dict:Yf,setDictRequest:rg,Dict:sl}}function ng(){return{addTypes:La.addTypes,getType:La.getType,getTypes:La.getTypes,install:La.install}}async function ag(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 ig(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 sg(e){const{ui:t}=ue.useUi();t.type==="antdv"?await ag(e):t.type==="element"||await ig(e)}function Jf(){return{dragModal:sg}}const Zf={logger:{off:{tableColumns:!1}}},og=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}}}),CD="",lg={class:"fs-container"},cg={class:"box"},fg={class:"header"},ug={class:"footer"};function dg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",lg,[l.createElementVNode("div",cg,[l.createElementVNode("div",{class:"inner",style:l.normalizeStyle(e.computedInnerStyle)},[l.createElementVNode("div",fg,[l.renderSlot(e.$slots,"header")]),l.createElementVNode("div",{class:"body",style:l.normalizeStyle(e.computedBodyStyle)},[l.renderSlot(e.$slots,"default")],4),l.createElementVNode("div",ug,[l.renderSlot(e.$slots,"footer")])],4)]),l.renderSlot(e.$slots,"box")])}const Qf=nt(og,[["render",dg]]),hg=l.defineComponent({name:"FsLayoutDefault"}),SD="",mg={class:"fs-crud-header"},pg={class:"fs-header-top"},gg={class:"fs-header-middle"},xg={class:"fs-header-bottom"},vg={class:"fs-crud-footer"};function wg(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",mg,[l.createElementVNode("div",pg,[l.renderSlot(e.$slots,"header-top")]),l.renderSlot(e.$slots,"search"),l.createElementVNode("div",gg,[l.renderSlot(e.$slots,"header-middle")]),l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar"),l.createElementVNode("div",xg,[l.renderSlot(e.$slots,"header-bottom")]),l.renderSlot(e.$slots,"tabs")])]),footer:l.withCtx(()=>[l.createElementVNode("div",vg,[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 e0=nt(hg,[["render",wg]]),_g=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}}}),TD="",yg={class:"fs-header-top"},kg={class:"fs-header-bottom"},bg={class:"top-bar"},Eg={class:"top-bar"},Cg={class:"fs-crud-footer"};function Sg(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",yg,[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",kg,[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",bg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),header:l.withCtx(()=>[l.createElementVNode("div",Eg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),default:l.withCtx(()=>[l.createVNode(s,null,{footer:l.withCtx(()=>[l.createElementVNode("div",Cg,[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 t0=nt(_g,[["render",Sg]]),FD="";function r0(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const n0=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:{},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 C=[];return m&&!p&&!x&&C.push(s(m)),t.slots.default&&C.push(t.slots.default()),e.text&&C.push(e.text),g&&C.push(s(g,"fs-button-icon-right")),C}),m&&(p&&!y.icon?y.icon=()=>s(m):x&&!y.icon&&(v=s(m)));const w=e.circle?r.button.circle:{},k=l.resolveDynamicComponent(r.button.name),R=C=>{C.loadingRef=a,t.emit("click",C)},T=n({...w,class:{"fs-button":!0,"is-thin":!e.text&&!t.slots.default},loading:i.value,onClick:R},{class:e.className,...t.attrs,...e.buttonProps});return v&&(T.icon=v),l.h(k,T,y)};const c=o,f=l.resolveDynamicComponent(r.badge.name);if(e.badge&&(o=()=>{let m;return l.createVNode(f,e.badge,r0(m=c())?m:{default:()=>[m]})}),!e.tooltip)return o;const u=l.resolveDynamicComponent(r.tooltip.name),d=l.computed(()=>z.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,r0(m)?m:{default:()=>[m]})}}}),a0=l.defineComponent({name:"FsIcon",inheritAttrs:!1,props:{icon:{type:String,default:void 0,require:!0},baseUrl:{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:",""),()=>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()}}),Tg=l.defineComponent({name:"FsIconify",components:{Icon:cp.Icon},props:{icon:{type:String},spin:{type:Boolean,default:!1}},setup(e,t){return{iconifyRef:l.ref(null)}}}),AD="";function Fg(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 i0=nt(Tg,[["render",Fg]]),Ag=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}}}),DD="",Dg={class:"fs-icon-svg-content","aria-hidden":"true"},Rg=["xlink:href"];function Og(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",Dg,[l.createElementVNode("use",{"xlink:href":e.symbolId},null,8,Rg)]))],2)}const s0=nt(Ag,[["render",Og]]),Bg=l.defineComponent({name:"FsLabel",props:{label:{type:String,default:""},labelAttrs:{type:Object,default:()=>({})},contentAttrs:{type:Object,default:()=>({})}}}),RD="",Ng={class:"fs-label"};function Ig(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",Ng,[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)])}const o0=nt(Bg,[["render",Ig]]),Pg={key:0,class:"fs-loading"},Mg={key:0},Lg=l.defineComponent({name:"FsLoading"}),l0=l.defineComponent({...Lg,props:{loading:{type:Boolean},icon:{},text:{}},setup(e){const{ui:t}=ue.useUi();return(r,n)=>{const a=l.resolveComponent("fs-icon");return r.loading?(l.openBlock(),l.createElementBlock("div",Pg,[l.createVNode(a,{class:"fs-icon-spin",icon:r.icon??l.unref(t).icons.refresh},null,8,["icon"]),r.text?(l.openBlock(),l.createElementBlock("span",Mg,l.toDisplayString(r.text),1)):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)}}}),OD="",Vg=l.defineComponent({name:"FsBox"}),Ug={class:"fs-box"};function $g(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",Ug,[l.renderSlot(e.$slots,"default")])}const c0=nt(Vg,[["render",$g]]);function Wg(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}function f0(e,t){if(e[t]instanceof Array){const r=e[t];e[t]=n=>{for(const a of r)a(n)}}}const Hg=["div","span","a","p","pre","li","ol","ul"],u0=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 z.forEach(v,(y,w)=>{const k=y;w.startsWith("on")||(w=z.camelCase("on_"+w)),x[w]=R=>k({...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 z.forEach(e.children,g),z.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 Hg.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 f0(g,"onChange"),f0(g,"onBlur"),e.render?e.render({...e.scope,attrs:g}):l.createVNode(o.value.component,g,Wg(m=c())?m:{default:()=>[m]})}}}),d0=l.defineComponent({name:"FsSlotRender",inheritAttrs:!1,props:{slots:{type:Function},scope:{type:Object}},setup(e){return()=>e.slots(e.scope)}}),ol=l.defineComponent({name:"FsRender",functional:!0,props:{renderFunc:{type:Function},scope:{type:Object}},setup(){},render(){return this.renderFunc(this.scope)}}),jg=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 D,_;const{merge:r}=Je(),{ui:n}=ue.useUi(),{AsyncComputeValue:a,doComputed:i}=Br(),s=l.ref(),o=l.reactive({}),{proxy:c}=l.getCurrentInstance();z.each(e.columns,b=>{b.value!=null&&(b.value instanceof a||b.value instanceof yi)&&Re.warn("form.value配置不支持Compute/AsyncCompute类型的动态计算")});function f(){const b={};return z.each(e.columns,(E,A)=>{const X=l.unref(E.value);X!==void 0&&z.set(b,A,X)}),r(b,z.cloneDeep(e.initialForm)),b}const u=f();x(u);const d=l.computed(()=>({row:u,form:o,index:e.index,mode:e.mode||"add",attrs:t.attrs,getComponentRef:T}));function h(){return d.value}const m=l.computed(()=>e.columns);function g(b){b!=null&&z.each(e.columns,(E,A)=>{let X=z.get(b,A);if(E.valueBuilder){const te=E.valueBuilder({value:X,key:A,row:u,form:b,index:e.index,mode:e.mode});te!=null&&!(te instanceof Promise)&&z.set(b,A,te)}})}function p(){return o}function x(b,E={}){if(g(b),E.mergeForm===!1)for(const X in o)delete o[X];r(o,b);const{valueChange:A}=E;A&&z.forEach(e.columns,(X,te)=>{const ee=o[te];w(te,ee)})}function v(...b){return r({},e.col,...b)}function y(b){return{key:b.key,...d.value}}function w(b,E){const A={key:b,value:E,formRef:c,...d.value,immediate:!1};t.emit("value-change",A);let X=e.columns[b].valueChange;X&&(X instanceof Function?X(A):X.handle&&X.handle(A))}const k=l.ref({});function R(b){return k.value[b].getFormItemRef()}function T(b,E=!1){var A;return(A=R(b))==null?void 0:A.getComponentRef(E)}const C=l.ref([]);z.forEach((D=e.group)==null?void 0:D.groups,(b,E)=>{b.collapsed!==!0&&C.value.push(E)}),((_=e.group)==null?void 0:_.groupType)==="tabs"&&(C.value=C.value.length>0?C.value[0]:null);const U=i(()=>e.group,h,null,(b={})=>{const E={};z.forEach(b==null?void 0:b.groups,(te,ee)=>{z.forEach(te.columns,ne=>{if(m.value[ne]==null){En.logger.warn("无效的分组字段:"+ne);return}E[ne]=ee})});const A=b.groupType;let X={parent:n.collapse.name,child:n.collapseItem.name};return A==="tabs"&&(X.parent=n.tabs.name,X.child=n.tabPane.name),r({wrapper:X,groupedKeys:E},b)}),F=l.computed(()=>{const b=[];return z.forEach(m.value,(E,A)=>{var te,ee;const X=z.cloneDeep(e.formItem||{});E=r(X,E),E.key=A,E.order==null&&(E.order=Un.orderDefault),(((te=U.value)==null?void 0:te.groupedKeys)==null||((ee=U.value)==null?void 0:ee.groupedKeys[A])==null)&&b.push(E),E.col=v(E.col)}),b.sort((E,A)=>E.order-A.order),b});function W(){return s.value}async function G(){const b=f(),E=z.entries(o);for(const A of E){const X=z.get(b,A[0]);X==null?z.unset(o,A[0]):z.set(o,A[0],X)}e.doReset&&await e.doReset(d.value),t.emit("reset")}const B=l.ref(),H=l.ref({});function K(b){var E,A;if((E=U.value)!=null&&E.groupedKeys)for(let X in b){const te=(A=U.value)==null?void 0:A.groupedKeys[X];te!=null&&(b["group."+te]=!0)}}async function j(){const b={...d.value,form:o};if(b.mode!=="view"){if(e.beforeValidate&&await e.beforeValidate(b)===!1)return!1;try{H.value={},await n.form.validateWrap(s.value),B.value=!0}catch(E){B.value=!1;const A=n.form.transformValidateErrors(E);throw K(A),H.value=A,t.emit("validationError",d.value),E}}}async function q(){await j();const b=z.cloneDeep(l.toRaw(o)),E={...d.value,form:b};if(Re.debug("form submit",JSON.stringify(o)),z.each(e.columns,(A,X)=>{let te=z.get(b,X);if(A.valueResolve){const ee=A.valueResolve({value:te,key:X,...E});ee!=null&&!(ee instanceof Promise)&&z.set(b,X,ee)}}),e.beforeSubmit&&await e.beforeSubmit(E)===!1)return!1;if(z.each(e.columns,(A,X)=>{A.submit===!1?z.unset(b,X):A.submit===!0&&z.set(b,X,b[X])}),e.doSubmit){const A=await e.doSubmit(E);if(E.res=A,A===!1)return!1}return t.emit("submit",E),e.afterSubmit&&await e.afterSubmit(E)===!1?!1:(t.emit("success",E),E)}l.onMounted(()=>{z.forEach(m.value,(b,E)=>{if(b.valueChange==null)return;let A=b.valueChange;if(A&&A.immediate===!0&&A.handle){const X={key:E,value:o[E],formRef:c,...d.value,immediate:!0};A.handle&&A.handle(X)}})});function ae(b){return!!(b&&l.unref(b.show)!==!1)}function pe(b){if(!b.columns||l.unref(b.show)===!1)return!1;for(let E of b.columns){if(m.value[E]==null)continue;if(ae(m.value[E]))return!0}return!1}e.watch&&l.watch(()=>o,(b,E)=>{e.watch&&e.watch(d.value)},{deep:!0,immediate:!0});function Y(){const b=JSON.stringify(u),E=JSON.stringify(o);return b!==E}const ce=l.computed(()=>r({},e.slots,t.slots));return t.emit("init",d.value),{get:(b,E)=>z.get(b,E),set:(b,E,A)=>{z.set(b,E,A),w(E,A)},ui:n,validRef:B,errorsRef:H,formRef:s,computedColumns:m,computedDefaultColumns:F,submit:q,reset:G,getFormRef:W,scope:d,buildItemScope:y,groupActiveKey:C,form:o,formItemRefs:k,getFormData:p,setFormData:x,getComponentRef:T,mergeCol:v,validate:j,computedGroup:U,getContextFn:h,formItemShow:ae,groupItemShow:pe,isDirty:Y,mergedSlots:ce}}}),BD="";function zg(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 h0=nt(jg,[["render",zg]]),Gg=l.defineComponent({name:"FsFormItem",components:{FsRender:ol},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}}}),ND="",Xg={key:0,class:"fs-form-item-label-text"},Kg=["title"],Yg={class:"fs-form-helper-tooltip"},qg={class:"fs-form-item-label-icon"},Jg={class:"fs-form-item-content"},Zg={class:"fs-form-item-render"},Qg={class:"fs-form-item-component"};function ex(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",Xg,[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,Kg)),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",Yg,[l.createVNode(o,{helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])])]),[e.ui.tooltip.trigger]:l.withCtx(()=>[l.createElementVNode("span",qg,[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",Jg,[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",Zg,[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",Qg,[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 m0=nt(Gg,[["render",ex]]),p0=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)}}}),ID="",tx=l.defineComponent({name:"FsFormHelper",props:{helper:{type:[Object,String]},scope:{}},setup(e){}}),PD="",rx={class:"fs-form-helper"},nx={key:0},ax={key:2};function ix(e,t,r,n,a,i){const s=l.resolveComponent("fs-render");return l.openBlock(),l.createElementBlock("div",rx,[typeof e.helper=="string"?(l.openBlock(),l.createElementBlock("pre",nx,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",ax,l.toDisplayString(e.helper.text),1)):l.createCommentVNode("",!0)])}const g0=nt(tx,[["render",ix]]),MD="";function sx(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 M;const{t:r}=Kt(),{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:H,doClose:K,onClosed:j,onOpened:q,open:w,title:g,fullscreenEnabled:te,fullscreen:X,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,computedButtons:A,onValueChange:ae,innerBind:ie,formWrapperSlots:v,wrapper:o.value,options:s.value,formRef:f.value,form:ce(),wrapperBindRef:o,formOptionsRef:s,setFormData:D,getFormData:ce,reset:Y,loading:u,toggleFullscreen:ee,submit:pe,mode:(_e=s.value)==null?void 0:_e.mode,...de}}const w=async de=>{var he,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={...z.omit(de,"wrapper","slots"),slots:{...e.slots,...de.slots,...t.slots}};const Fe=ne.formWrapper.customClass(i.value),ke=`fs-form-wrapper fs-form-wrapper-${(he=s.value)==null?void 0:he.mode} ${x} ${_e[Fe]||""} `;return o.value={...z.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&&(X.value=_e.fullscreen),t.emit("inner-change",!!c.value.inner),await l.nextTick(),a.value=!0,await l.nextTick(),q(),y()};async function k(){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 ne.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 pe()}}const R=lf.useRoute();let T=null;function C(){return c.value.saveDraft?(T==null&&(T=new jo({$router:R,tableName:"addFormDraft",keyType:e.id||"0"})),T):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 C().updateTableValue(ce()),!0):!1}async function F(){const de=C();de&&await de.clearTableValue()}async function W(){const de=C();if(de){const _e=await de.getTableValue();_e&&D(_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 k(),!0)}const B=l.computed(()=>ne.type=="element"?{beforeClose:de=>{K()}}:{}),H=async()=>{a.value=!1},K=async()=>await G()==!1?!1:(H(),!0),j=()=>{d.value&&d.value(),t.emit("closed"),s.value=null},q=()=>{if(c.value.saveDraft&&W(),t.emit("opened"),h.value&&h.value(),o.value.draggable||o.value.dragenabled){const{dragModal:de}=Jf();de({getModal:()=>document.querySelector(`.${x}`)})}},ae=de=>{t.emit("value-change",de)};async function pe(){u.value=!0;try{if(await f.value.submit()===!1)return;await F(),H()}finally{u.value=!1}}async function Y(){await f.value.reset()}function ce(){var de;return(de=f.value)==null?void 0:de.getFormData()}function D(de,_e){var Fe;(Fe=f.value)==null||Fe.setFormData(de,_e)}const{doComputed:_}=Br();function b(){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 he;(he=f.value)==null||he.getComponentRef(...ke)}}}const E=_(()=>{var de;return(de=o.value)==null?void 0:de.buttons},b),A=l.computed(()=>{const de={cancel:{},reset:{},ok:{loading:u.value}},_e=n(de,E.value),Fe=[];return z.forEach(_e,(ke,he)=>{ke.key=he,Fe.push(ke),ke.onClick==null&&ke.click!=null&&(ke.onClick=Qe=>{ke.click(y({loadingRef:Qe==null?void 0:Qe.loadingRef}))})}),z.sortBy(Fe,ke=>ke.order??Un.orderDefault)});l.onMounted(async()=>{e.options!=null&&await w(e.options),t.emit("mounted",l.getCurrentInstance().exposed)});const X=l.ref(!1),te=l.computed(()=>{var de;return!((de=i.value)!=null&&de.endsWith("drawer"))});function ee(){X.value=!X.value}const ne=ue.uiContext.get(),ie=l.computed(()=>c.value.inner?ne.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:H,doClose:K,onClosed:j,onOpened:q,open:w,title:g,fullscreenEnabled:te,fullscreen:X,toggleFullscreen:ee,formOptions:s,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,formRef:f,submit:pe,reset:Y,computedButtons:A,loading:u,getFormData:ce,setFormData:D,onValueChange:ae,innerBind:ie,formWrapperSlots:v,form:ce(),wrapperBindRef:o,formOptionsRef:s,mode:(M=s.value)==null?void 0:M.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,he=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 st=null;return te.value&&(st=l.createVNode(l.resolveComponent("fs-icon"),{class:"fs-fullscreen-icon",onClick:ee,icon:X.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),st,ke("form-header-action-right",De)])])},default:()=>{const st=[];return z.forEach(A.value,hr=>{hr.show!==!1&&st.push(l.createVNode(l.resolveComponent("fs-button"),hr,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.createVNode("div",{class:"fs-form-footer-btns"},[ke("form-footer-left",De),st,ke("form-footer-right",De)])])}}}if(de.formWrapper.hasContentWrap){const ot=de.formWrapper.hasContentWrap(he),Ht=_e;if(ot){const De=l.resolveDynamicComponent(ot);_e={default:()=>l.createVNode(De,l.mergeProps({closable:!0},c.value.contentProps),sx(Ht)?Ht:{default:()=>[Ht]})}}}const Qe=de.formWrapper.visible,vr={[Qe]:a.value,["onUpdate:"+Qe]:async ot=>{if(ot===!1&&a.value)return await K();a.value=ot}},Hr=de.formWrapper.buildOnClosedBind(he,j),jr=de.formWrapper.customClass(he),kn=`${X.value?"fs-fullscreen":""} ${o.value[jr]||""}`,dr={[jr]:kn},on={fullscreen:X.value},bn={zIndex:o.value.zIndex||e.zIndex},Ia=l.resolveDynamicComponent(he);return l.createVNode(Ia,l.mergeProps(o.value,dr,vr,Hr,on,ie.value,bn,B.value),_e)}}}),ox=l.defineComponent({name:"FsFormProvider"}),x0=l.defineComponent({...ox,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))}});function lx(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 cx(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 fx(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 Ms(e,t){if(!e)return{};const r={};return z.forEach(e,(n,a)=>{a.startsWith(t)&&(r[a]=n)}),r}function ux(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)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 dx(e,t){const r=ue.uiContext.get(),n=l.ref(),a=l.ref(),i=l.ref(),{maxHeightRef:s,computeBodyHeight:o}=ux(e,t,{tableRef:n,containerRef:i}),{merge:c}=Je(),f=l.toRef(e,"table"),u=l.computed(()=>{var C;let R={};if((s==null?void 0:s.value)!=null){let U=r.table;((C=e.table)==null?void 0:C.tableVersion)==="v2"&&(U=r.tableV2),R=U.buildMaxHeight(s.value)}const T=En.dash.omit(f,"loading","columns","columnsMap");return c(R,{...t.attrs,...T})}),d=l.toRef(e,"toolbar"),h=l.computed(()=>Ms(t.slots,"cell")),m=l.computed(()=>Ms(t.slots,"form")),g=l.computed(()=>Ms(t.slots,"search")),p=l.computed(()=>Ms(t.slots,"toolbar")),x=l.ref(),v=l.computed(()=>{const R={compact:e.toolbar.compact!==!1};return e.customClass&&(R[e.customClass]=!0),R}),y=l.ref(),w=l.ref(!1);return{tableRef:n,containerRef:i,toolbarRef:a,computedTable:u,computedToolbar:d,computedCellSlots:h,formWrapperRef:x,isFormInner:w,onFormInnerChange:R=>{w.value=R},computedFormSlots:m,computedSearchSlots:g,computedToolbarSlots:p,computeBodyHeight:o,computedClass:v,innerWrapperRef:y}}const hx=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{}}},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();lx(e,t);const n=cx(),a=fx(n,e,t),i=dx(e,t);return{ui:r,...n,...i,...a}}}),LD="",mx={class:"fs-crud-search"},px={key:0,class:"fs-crud-actionbar"},gx={key:0,class:"fs-crud-toolbar"},xx={class:"fs-crud-pagination"},vx={class:"fs-pagination-left"},wx={class:"fs-pagination"},_x={class:"fs-pagination-right"};function yx(e,t,r,n,a,i){var d;const s=l.resolveComponent("fs-actionbar"),o=l.resolveComponent("fs-toolbar"),c=l.resolveComponent("fs-tabs-filter"),f=l.resolveComponent("fs-table"),u=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(((d=e.container)==null?void 0:d.is)||"fs-layout-default"),l.mergeProps({ref:"containerRef",class:"fs-crud-container"},e.container,{class:e.computedClass}),{"header-top":l.withCtx(()=>[l.renderSlot(e.$slots,"header-top")]),"header-bottom":l.withCtx(()=>[l.renderSlot(e.$slots,"header-bottom")]),"header-middle":l.withCtx(()=>[l.renderSlot(e.$slots,"header-middle")]),search:l.withCtx(()=>[l.createElementVNode("div",mx,[(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",px,[l.renderSlot(e.$slots,"actionbar-left"),l.createVNode(s,l.normalizeProps(l.guardReactiveProps(e.actionbar)),null,16),l.renderSlot(e.$slots,"actionbar-right")])):l.createCommentVNode("",!0)]),toolbar:l.withCtx(()=>[e.toolbar&&e.toolbar.show!==!1?(l.openBlock(),l.createElementBlock("div",gx,[l.renderSlot(e.$slots,"toolbar-left"),l.createVNode(o,l.mergeProps({ref:"toolbarRef"},e.toolbar,{slots:e.computedToolbarSlots,columns:e.table.columns}),null,16,["slots","columns"]),l.renderSlot(e.$slots,"toolbar-right")])):l.createCommentVNode("",!0)]),tabs:l.withCtx(()=>[e.tabsBinding.show?(l.openBlock(),l.createBlock(c,l.mergeProps({key:0,ref:"tabsRef",class:"fs-tabs"},e.tabsBinding),null,16)):l.createCommentVNode("",!0)]),table:l.withCtx(()=>[l.createVNode(f,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(u,{ref:"formWrapperRef",slots:e.computedFormSlots,"inner-wrapper":e.innerWrapperRef,onInnerChange:e.onFormInnerChange,onValueChange:t[0]||(t[0]=h=>e.$emit("form-value-change",h))},null,8,["slots","inner-wrapper","onInnerChange"])],2)]),pagination:l.withCtx(()=>[l.createElementVNode("div",xx,[l.createElementVNode("div",vx,[l.renderSlot(e.$slots,"pagination-left")]),l.createElementVNode("div",wx,[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",_x,[l.renderSlot(e.$slots,"pagination-right")])])]),"footer-top":l.withCtx(()=>[l.renderSlot(e.$slots,"footer-top")]),"footer-bottom":l.withCtx(()=>[l.renderSlot(e.$slots,"footer-bottom")]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default")]),_:3},16,["class"])}const v0=nt(hx,[["render",yx]]),kx=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}=Kt(),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],k={key:x.key,row:w,btn:x,index:y,...e.scope,loadingRef:v==null?void 0:v.loadingRef};if(x.click)return x.click(k);t.emit("handle",k)},{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")},copy:{key:"copy",text:a("fs.rowHandle.copy.text"),title:a("fs.rowHandle.copy.text")},edit:{key:"edit",type:"primary",text:a("fs.rowHandle.edit.text"),title:a("fs.rowHandle.edit.text")},remove:{key:"remove",...r.button.colors("danger"),text:a("fs.rowHandle.remove.text"),title:a("fs.rowHandle.remove.text")}};x=n(y,f.value.buttons)}else x=f.value.group[f.value.active];const v=[];return z.forEach(x,(y,w)=>{y.key=w,y.show!==!1&&v.push(y)}),z.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=[];z.forEach(v,(w,k)=>{w.show!==!1&&h(w,k)&&y.push({[r.dropdown.value]:w.key,[r.dropdown.label]:w.text,title:w.title})}),x.options=y}return{...z.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}}}),VD="",bx={class:"fs-row-handle"},Ex={key:0,class:"row-handle-btn fs-handle-row-dropdown"};function Cx(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",bx,[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",Ex,[(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(()=>[l.createElementVNode("div",l.mergeProps({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 w0=nt(kx,[["render",Cx]]);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 Sx(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Si(e,t)}function ll(e){return ll=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ll(e)}function Si(e,t){return Si=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Si(e,t)}function Tx(){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 Ls(e,t,r){return Tx()?Ls=Reflect.construct.bind():Ls=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},Ls.apply(null,arguments)}function Fx(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function cl(e){var t=typeof Map=="function"?new Map:void 0;return cl=function(n){if(n===null||!Fx(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 Ls(n,arguments,ll(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Si(a,n)},cl(e)}var Ax=/%[sdj%]/g,_0=function(){};typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&typeof window<"u"&&typeof document<"u"&&(_0=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 fl(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(Ax,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 Dx(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Rt(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||Dx(t)&&typeof e=="string"&&!e)}function Rx(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 y0(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 Ox(e){var t=[];return Object.keys(e).forEach(function(r){t.push.apply(t,e[r]||[])}),t}var k0=function(e){Sx(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}(cl(Error));function Bx(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 k0(v,fl(v))):h(a)},p=Ox(e);y0(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 k0(u,fl(u))):h(a)};o.length||(n(u),h(a)),o.forEach(function(p){var x=e[p];s.indexOf(p)!==-1?y0(x,r,g):Rx(x,r,g)})});return d.catch(function(h){return h}),d}function Nx(e){return!!(e&&e.message!==void 0)}function Ix(e,t){for(var r=e,n=0;n<t.length;n++){if(r==null)return r;r=r[t[n]]}return r}function b0(e,t){return function(r){var n;return e.fullFields?n=Ix(t,e.fullFields):n=t[r.field||e.fullField],Nx(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 E0(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 C0=function(t,r,n,a,i,s){t.required&&(!n.hasOwnProperty(t.field)||Rt(r,s||t.type))&&a.push(wr(i.messages.required,t.fullField))},Px=function(t,r,n,a,i){(/^\s+$/.test(r)||r==="")&&a.push(wr(i.messages.whitespace,t.fullField))},Vs,Mx=function(){if(Vs)return Vs;var e="[a-fA-F\\d:]",t=function(k){return k&&k.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(k){return k&&k.exact?i:new RegExp("(?:"+t(k)+r+t(k)+")|(?:"+t(k)+a+t(k)+")","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},S0={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(S0.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(Mx())},hex:function(t){return typeof t=="string"&&!!t.match(S0.hex)}},Lx=function(t,r,n,a,i){if(t.required&&r===void 0){C0(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))},Vx=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",Ux=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(", ")))},$x=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:C0,whitespace:Px,type:Lx,range:Vx,enum:Ux,pattern:$x},Wx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i,"string"),Rt(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)},Hx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(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(r===""&&(r=void 0),Rt(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(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(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(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),Rt(r)||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(Rt(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(Rt(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)},Yx=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(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Jx="enum",Zx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge[Jx](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(Rt(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i),Rt(r,"string")||Ge.pattern(t,r,a,s,i)}n(s)},ev=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r,"date")&&!t.required)return n();if(Ge.required(t,r,a,s,i),!Rt(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)},tv=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)},ul=function(t,r,n,a,i){var s=t.type,o=[],c=t.required||!t.required&&a.hasOwnProperty(t.field);if(c){if(Rt(r,s)&&!t.required)return n();Ge.required(t,r,a,o,i,s),Rt(r,s)||Ge.type(t,r,a,o,i)}n(o)},rv=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i)}n(s)},Fi={string:Wx,method:Hx,number:jx,boolean:zx,regexp:Gx,integer:Xx,float:Kx,array:Yx,object:qx,enum:Zx,pattern:Qx,date:ev,url:ul,hex:ul,email:ul,required:tv,any:rv};function dl(){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 hl=dl(),Ai=function(){function e(r){this.rules=null,this._messages=hl,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=E0(dl(),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(k){if(Array.isArray(k)){var R;x=(R=x).concat.apply(R,k)}else x.push(k)}for(var w=0;w<p.length;w++)y(p[w]);x.length?(v=fl(x),f(x,v)):f(null,o)}if(c.messages){var d=this.messages();d===hl&&(d=dl()),E0(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 Bx(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(T,C){return ca({},C,{fullField:v.fullField+"."+T,fullFields:v.fullFields?[].concat(v.fullFields,[T]):[T]})}function k(T){T===void 0&&(T=[]);var C=Array.isArray(T)?T:[T];!c.suppressWarning&&C.length&&e.warning("async-validator:",C),C.length&&v.message!==void 0&&(C=[].concat(v.message));var U=C.map(b0(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(b0(v,o)):c.error&&(U=[c.error(v,wr(c.messages.required,v.field))]),x(U);var F={};v.defaultField&&Object.keys(p.value).map(function(B){F[B]=v.defaultField}),F=ca({},F,p.rule.fields);var W={};Object.keys(F).forEach(function(B){var H=F[B],K=Array.isArray(H)?H:[H];W[B]=K.map(w.bind(null,B))});var G=new e(W);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 H=[];U&&U.length&&H.push.apply(H,U),B&&B.length&&H.push.apply(H,B),x(H.length?H:null)})}}var R;if(v.asyncValidator)R=v.asyncValidator(v,p.value,k,p.source,c);else if(v.validator){try{R=v.validator(v,p.value,k,p.source,c)}catch(T){console.error==null||console.error(T),c.suppressValidatorError||setTimeout(function(){throw T},0),k(T.message)}R===!0?k():R===!1?k(typeof v.message=="function"?v.message(v.fullField||v.field):v.message||(v.fullField||v.field)+" fails"):R instanceof Array?k(R):R instanceof Error&&k(R.message)}R&&R.then&&R.then(function(){return k()},function(T){return k(T)})},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=_0,Ai.messages=hl,Ai.validators=Fi;function nv(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 ml(e,t){z.forEach(e,r=>{r.children?ml(r.children,t):t(r)})}function av(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 iv(e,t,r){const n=av(e,r),a=l.reactive([]);function i(D){return typeof e.rowKey=="string"?D[e.rowKey]:e.rowKey(D)}function s(D){return D[e.editable.rowKey]}function o(D){for(const _ in a){const b=a[_],E=b.cells,A=b.rowData;if(D({rowData:A,row:b,cells:E})==="break")return}}function c(D){o(({rowData:_,row:b,cells:E})=>{z.forEach(E,(A,X)=>{D({rowData:_,row:b,cells:E,cell:A,key:X})})})}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(D){return!0}},e.editable));function d(D,_,b,E){function A(ie){return z.get(D,ie)}function X(ie,Se){z.set(D,ie,Se)}const te=l.computed(()=>{var ie;return((ie=E.editable)==null?void 0:ie.updateCell)||u.value.updateCell}),ee=l.computed(()=>{var ie;return((ie=E.editable)==null?void 0:ie.showAction)||u.value.showAction}),ne=l.reactive({mode:b<0?"add":"edit",oldValue:void 0,newValue:void 0,loading:!1,isEditing:u.value.activeDefault,activeTrigger:u.value.activeTrigger,column:E,updateCell:te,showAction:ee,isEditable:()=>{var M;let ie=(M=E==null?void 0:E.editable)==null?void 0:M.disabled;ie instanceof Function&&(ie=ie({column:E,editableId:b,row:D}));let Se=null;return ie!=null&&(Se=!ie),Se??(u.value.isEditable({editableId:b,key:_,row:D})||!1)},isChanged:()=>ne.newValue!==ne.oldValue,getForm:()=>{let ie=u.value[ne.mode+"Form"];return ie==null&&(ie=u.value.editForm),ie[_]},active:(ie={})=>{(ie.exclusive??u.value.exclusive)&&((ie.exclusiveEffect??u.value.exclusiveEffect)==="save"?k():R()),ne.isEditing=!0,ne.oldValue=A(_);const M=u.value.editForm[_];M&&G(M,D)},inactive:()=>{ne.isEditing=!1,ne.newValue=A(_)},resume:()=>{ne.isEditing&&(ne.isEditing=!1,X(_,ne.oldValue),delete ne.newValue,delete ne.oldValue)},cancel:()=>{ne.resume()},persist:()=>{ne.isEditing=!1,delete ne.newValue,delete ne.oldValue},save:async()=>{const ie=l.unref(ne.updateCell);if(!ie){Re.warn("没有配置table.editable.updateCell方法,无法保存,相关文档:http://fast-crud.docmirror.cn/api/crud-options/table.html#editable");return}ne.loading=!0;try{const Se=await ie({editableId:b,row:D,key:_,value:A(_)}),M=D[u.value.rowKey];(M==null||M<=0)&&((Se&&Se[u.value.rowKey])==null?Re.error(`对于添加的行,updateCell方法需要返回{'id':value},如果你配置了别的rowKey,需要返回{[rowKey]:id}。
|
||
当前返回值:${JSON.stringify(Se)}`):D[u.value.rowKey]=Se[u.value.rowKey]),ne.persist()}finally{ne.loading=!1}}});return ne}function h(D,_){const b={};ml(e.columns,ee=>{b[ee.key]=d(_,ee.key,D,ee)});const E=l.computed(()=>nv(b)),A=i(_),X=A==null||A<0,te=l.reactive({isAdd:X,rowData:_,editableId:D,isEditing:!1,loading:!1,cells:b,validator:E,inactive:()=>{te.isEditing=!1,z.forEach(te.cells,ee=>{ee.isEditing&&ee.inactive()})},active:()=>{te.isEditing=!0,z.forEach(te.cells,ee=>{ee.active({exclusive:!1})})},persist:()=>{te.isEditing=!1,te.inactive(),delete te.isAdd,z.forEach(te.cells,ee=>{ee.persist()})},resume:()=>{te.isEditing=!1,z.forEach(te.cells,ee=>{ee.resume()})},cancel:()=>{te.resume()},validate:async ee=>{try{return z.forEach(te.cells,(ne,ie)=>{ne.validateErrors=[]}),ee==null&&(ee=te.rowData),await te.validator.validate(ee),!0}catch(ne){const{errors:ie,fields:Se}=ne;return z.forEach(Se,(M,de)=>{const _e=te.cells[de];_e&&(_e.validateErrors=M)}),Se}},getRowData:()=>{const ee=z.cloneDeep(te.rowData);return delete ee[e.editable.rowKey],delete ee.children,ee},save:async ee=>{const{doSave:ne}=ee,ie=te.rowData,{merge:Se}=Je();if(await te.validate()!==!0)return;function de(Fe){Fe&&(i(Fe)==null&&console.error("保存接口没有返回rowKey,无法更新该行的id,newRow:",Fe),Se(ie,Fe))}te.loading=!0;const _e=te.getRowData();try{await ne({isAdd:te.isAdd,row:_e,setData:de}),te.persist()}finally{te.loading=!1}}});if(l.watch(()=>_,async(ee,ne,ie)=>{await te.validate()},{deep:!0}),_.children&&_.children.length>0)for(const ee of _.children){ee[e.editable.rowKey]||(ee[e.editable.rowKey]=g());const ne=ee[e.editable.rowKey];a[ne]=h(ne,ee)}return X&&te.active(),te}let m=0;function g(){return m++,m}function p(D){D==null&&(D=n.getData());const _=Object.assign({},a);z.forOwn(a,(b,E)=>{delete a[E]}),z.forEach(D,b=>{b[e.editable.rowKey]||(b[e.editable.rowKey]=g());const E=b[e.editable.rowKey];_[E]?a[E]=_[E]:a[E]=h(E,b)}),u.value.onSetup&&u.value.onSetup()}function x(D){const _=e.editable.rowKey,b=[];for(const E of D){const A={[_]:E[_]};E.children&&E.children.length&&(A.children=x(E.children)),b.push(A)}return b}l.watch(()=>{const D=e.data;let _=[];return D!=null&&D instanceof Array&&(_=x(D)),JSON.stringify(_)},(D,_)=>{u.value.enabled&&p(e.data)},{immediate:!0}),l.watch(()=>u.value.enabled,D=>{var _;D&&(((_=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(D,_){var b;if(_!=null)return(b=a[D])==null?void 0:b.cells[_]}function y(D={}){c(({cell:_})=>{_.active({...D,exclusive:!1})})}function w(){c(({cell:D})=>{D.isEditing&&D.inactive()})}async function k(){c(({cell:D})=>{D.isEditing&&D.save()})}function R(){c(({cell:D})=>{D.isEditing&&D.cancel()})}function T(){w(),o(({row:D})=>{delete D.isAdd}),c(({cell:D})=>{delete D.newValue,delete D.oldValue})}function C(){c(({cell:D})=>{D.resume()})}function U(){let D=!1;return o(({cells:_})=>{z.forEach(_,b=>{if(b.isChanged())return D=!0,"break"})}),D}let F=0;function W(D,_){ml(D,b=>{G(b,_)})}function G(D,_){const b=z.get(_,D.key),E=l.unref(D.value);E!=null&&b==null&&z.set(_,D.key,E)}async function B(D={row:void 0,active:!0}){let _=D.row||{[u.value.rowKey]:--F,[e.rowKey]:F};if(W(u.value.addForm,_),D.addRowFunc){const b=await D.addRowFunc({row:D.row});b&&(_=b)}else if(e.editable.addRow){const b=await e.editable.addRow(n.getData(),_);b&&(_=b)}else n.unshift(_);if(D.active??e.editable.activeDefault){await l.nextTick();const b=s(_),E=q(b);E&&E.active()}}function H(D,_){for(let b=0;b<_.length;b++){const E=_[b];if(s(E)===D)return z.remove(_,E),!0;if(E.children&&E.children.length>0&&H(D,E.children))return}return!1}function K(D){delete a[D],H(D,n.getData())}function j(D){const{cols:_}=D;o(({cells:b})=>{z.forEach(_,E=>{b[E].active({...D,exclusive:!1})})})}function q(D){return a[D]}function ae(){const D=[];return o(({row:_})=>{_.isEditing&&D.push(_)}),D}async function pe(){const D={};let _=!1;for(const b in a){const E=a[b],A=await E.validate();A!=!0&&(D[E.editableId]=A,_=!0)}return _?D:!0}function Y(D){for(const _ of D)delete _[e.editable.rowKey],_.children&&_.children.length>0&&Y(_.children);return D}function ce(D){return D==null&&(D=z.cloneDeep(n.getData())),D==null?[]:Y(D)}return{editable:{options:u,setupEditable:p,inactive:w,active:y,persist:T,saveEach:k,cancelAll:R,resume:C,addRow:B,removeRow:K,getEditableRow:q,activeCols:j,hasDirty:U,getEditableCell:v,eachRows:o,eachCells:c,validate:pe,getCleanTableData:ce,getActiveRows:ae}}}const UD="";function sv(e){const t=(n,a)=>z.get(e,`value[${n}].${a}`);l.provide("componentRef:get",t);const r=(n,a,i)=>z.set(e,`value[${n}].${a}`,i);return l.provide("componentRef:set",r),{getter:t,setter:r}}function ov({props:e,ui:t,sortedColumns:r,renderRowHandle:n,renderCellComponent:a,componentDefines:i}){const{tableComp:s,tableColumnComp:o,tableColumnGroupComp:c}=i;t.tableColumn;const f={},u=d=>{const h={...d.columnSlots},m="cell_"+d.key;let g=o;if(d.children)h.default=()=>{const x=[];return z.forEach(d.children,v=>{v.show!==!1&&x.push(u(v))}),x},g=c;else if(d.type!=null){Re.debug("cell render column.type:",d.type);const x=e.cellSlots&&e.cellSlots[m];x&&(h.default=x)}else h.default=x=>x==null?l.createVNode("div",null,[l.createTextVNode("1111")]):a(d,x);const p={...d};return delete p.children,l.createVNode(g,l.mergeProps({ref:"tableColumnRef"},p,{label:d.title,prop:d.key,dataIndex:d.key}),h)};return f.default=()=>{var h;const d=[];if(z.forEach(r,m=>{m.show!==!1&&d.push(u(m))}),e.rowHandle&&e.rowHandle.show!==!1){const m={default:n,...(h=e.rowHandle)==null?void 0:h.columnSlots};d.push(l.createVNode(o,l.mergeProps({ref:"tableColumnRef"},e.rowHandle,{label:e.rowHandle.title,prop:e.rowHandle.key||"rowHandle"}),m))}return d},e.slots&&z.forEach(e.slots,(d,h)=>{f[h]=d}),f}function T0(e,t){var u;const{props:r,renderRowHandle:n,renderCellComponent:a,sortedColumns:i}=e,{ui:s}=ue.useUi(),o=i??{},c=[];let f=s.table;r.tableVersion==="v2"&&(f=s.tableV2);for(const d in o){const h=o[d];if(h.show===!1)continue;const m={...h};if(m._parent=t,m.dataIndex=h.key,c.push(m),h.children!=null){const p={...e,sortedColumns:h.children};delete p.renderRowHandle,m.children=T0(p,m)}else if(h.type==null){const p=m[f.renderMethod],x={...m};delete x[f.renderMethod],p?m[f.renderMethod]=(v,y,w)=>{const k=f.rebuildRenderScope(v,y,w);return p(k,()=>a(x,k))}:m[f.renderMethod]=(v,y,w)=>{const k=f.rebuildRenderScope(v,y,w);return a(x,k)}}}if(n&&((u=r.rowHandle)==null?void 0:u.show)!==!1){const d={key:"_rowHandle",...r.rowHandle};d[f.renderMethod]=(h,m,g)=>{const p=f.rebuildRenderScope(h,m,g);return n(p)},c.push(d)}return Re.debug("table columns:",c),c}const F0=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([]);sv(n);const a=(B,H)=>{if(!H||B==null||B>n.value.length)return;const j=n.value[B][H];return j==null?void 0:j.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=iv(e,t,r),h=(B,H)=>{const K=H[c.row],j=K,q=H[c.index];return H.index=q,{...H,key:B.key,value:z.get(K,B.key),row:K,form:j,getComponentRef:ae=>a(q,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 H="cell-rowHandle",K={};if(e.cellSlots)for(const j in e.cellSlots)j.startsWith(H)&&(K[j]=e.cellSlots[j]);return l.createVNode(l.resolveComponent("fs-row-handle"),l.mergeProps(e.rowHandle,{scope:B,onHandle:m}),K)},x=(B,H)=>{var _,b,E,A,X,te,ee,ne,ie,Se,M,de;const K="cell_"+B.key;H==null&&(H={});const j=(H.row=H[c.row])||{},q={modelValue:z.get(H[c.row],B.key),"onUpdate:modelValue":_e=>{var ke;z.set(H[c.row],B.key,_e);const Fe=h(B,H);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=H[c.index],ke=B.key;let he=n.value[Fe];he==null&&(n.value[Fe]=he={}),he[ke]=_e},pe=H[c.index],Y=j[(_=e.editable)==null?void 0:_.rowKey],ce=e.cellSlots&&e.cellSlots[K],D=h(B,H);if(((A=(E=(b=d.editable)==null?void 0:b.options)==null?void 0:E.value)==null?void 0:A.enabled)===!0){const _e=d.editable.getEditableCell(Y,B.key);return l.createVNode(l.resolveComponent("fs-editable-cell"),l.mergeProps({ref:ae,key:B.key,columnKey:B.key,index:pe,editableId:Y,item:B,editableCell:_e,editableOpts:(te=(X=d.editable)==null?void 0:X.options)==null?void 0:te.value,scope:D,slots:ce,disabled:(ie=(ne=(ee=d.editable)==null?void 0:ee.options)==null?void 0:ne.value)==null?void 0:ie.disabled,readonly:(de=(M=(Se=d.editable)==null?void 0:Se.options)==null?void 0:M.value)==null?void 0:de.readonly},q),null)}else return l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:ae,key:B.key,item:B,scope:D,slots:ce},q,{conditionalRender:e.conditionalRender}),null)},{expose:v}=t;v({tableRef:r,componentRefs:n,getComponentRef:a,...d,scrollTo:f});const{doColumnsSort:y}=Bs(),w=o.renderMode,k=l.computed(()=>({[o.data]:e.data})),{merge:R,cloneDeep:T}=Je(),C=l.computed(()=>{let B=e.rowKey;return i.type==="naive"&&typeof e.rowKey=="string"&&(B=H=>H[e.rowKey]),R({rowKey:B},t.attrs,g)}),U=l.computed(()=>y(T(e.columns))),F=l.resolveDynamicComponent(i.tableColumn.name),W=l.resolveDynamicComponent(i.tableColumnGroup.name),G={tableComp:u,tableColumnComp:F,tableColumnGroupComp:W};if(w==="slot"){const B=l.computed(()=>ov({props:e,ui:i,sortedColumns:U.value,renderRowHandle:p,renderCellComponent:x,componentDefines:G}));return()=>{if(e.show===!1)return;const H=l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},C.value,k.value),B.value);if(typeof o.vLoading=="string"){const K=l.resolveDirective(o.vLoading);return l.withDirectives(H,[[K,e.loading]])}return H}}else{const B=l.computed(()=>T0({props:e,ctx:t,ui:i,getContextFn:h,sortedColumns:U.value,componentRefs:n,renderRowHandle:p,renderCellComponent:x,columns:e.columns})),H=l.computed(()=>{const j=[];function q(ae){ae.forEach(pe=>{pe.children?q(pe.children):j.push(pe)})}return q(B.value),j}),K=l.computed(()=>o.buildMultiHeadersBind?o.buildMultiHeadersBind({treeColumns:B.value,flatColumns:H.value}):{bind:{},slots:{}});return()=>{var pe;if(e.show===!1)return;const j={...e.slots,...(pe=K.value)==null?void 0:pe.slots},q=o.columnsIsFlat,ae=(Y={})=>{var ce;return l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},C.value,{columns:q?H.value:B.value},k.value,(ce=K.value)==null?void 0:ce.bind,Y),j)};if(e.tableVersion==="v2"&&i.type==="element"){const Y={default({width:ce,height:D}){return ae({width:ce,height:D})}};return l.createVNode(l.resolveComponent("el-auto-resizer"),null,Y)}return ae()}}}}),A0=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(l.resolveComponent("fs-component-render"),l.mergeProps({title:f.value,ref:o},s.value,{scope:g}),null):m(z.toString(h))};if(e.item.tooltip){const h=l.resolveDynamicComponent(n.tooltip.name);return()=>{let m={},g={};typeof e.item.tooltip=="object"?(m=z.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}}),D0=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")&&e.editableCell.showAction!==!1}),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;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=f.value?(p=e.editableOpts)==null?void 0:p.activeTrigger:!1;return l.createVNode(l.resolveComponent("fs-editable"),{ref:"editableRef",class:"fs-editable-cell",editing:m==null?void 0:m.isEditing,showAction:f.value,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}}}),lv={class:"fs-editable"},cv={class:"fs-editable-input"},fv={key:0,class:"fs-editable-dirty"},uv={key:0,class:"fs-editable-action fs-editable-icon"},dv={class:"fs-editable-input"},hv={class:"fs-editable-action"},mv={class:"error-icon"},R0=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,default:!0},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)}}:{});function s(){a("submit")}function o(){a("cancel")}function c(){var u;return((u=r.validateErrors)==null?void 0:u.length)>0}function f(){var u,d;if(((u=r.validateErrors)==null?void 0:u.length)!==0)return(d=r.validateErrors)==null?void 0:d.map(h=>h.message).join(",")}return(u,d)=>{const h=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("div",lv,[!u.editing||u.disabled?(l.openBlock(),l.createElementBlock("div",l.mergeProps({key:0,class:"fs-editable-inner fs-editable-pointer"},i.value),[l.createElementVNode("div",cv,[u.dirty?(l.openBlock(),l.createElementBlock("div",fv)):l.createCommentVNode("",!0),l.renderSlot(u.$slots,"default")]),u.trigger&&!u.disabled?(l.openBlock(),l.createElementBlock("div",uv,[l.createVNode(h,{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":c()}])},[l.createElementVNode("div",dv,[l.renderSlot(u.$slots,"edit")]),l.createElementVNode("div",hv,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(n).tooltip.name),null,{[l.unref(n).tooltip.content]:l.withCtx(()=>[l.createElementVNode("span",mv,l.toDisplayString(f()),1)]),[l.unref(n).tooltip.trigger]:l.withCtx(()=>[l.createVNode(h,{class:l.normalizeClass({hidden:!c(),"error-icon":!0}),size:"mini",icon:l.unref(n).icons.info},null,8,["class","icon"])]),_:2},1024)),u.showAction?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[u.loading?(l.openBlock(),l.createBlock(h,{key:0,size:"mini",spin:!0,icon:l.unref(n).icons.refresh},null,8,["icon"])):(l.openBlock(),l.createBlock(h,{key:1,size:"mini",icon:l.unref(n).icons.check,onClick:s},null,8,["icon"])),l.createVNode(h,{class:l.normalizeClass({hidden:u.loading}),size:"mini",icon:l.unref(n).icons.close,onClick:o},null,8,["class","icon"])],64)):l.createCommentVNode("",!0)])],2))])}}}),$D="",pv=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=z.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}}}),WD="",gv={class:"fs-actionbar"};function xv(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",gv,[(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 O0=nt(pv,[["render",xv]]);class vv{constructor(){Te(this,"valueChange");Te(this,"mergeForm")}}const Us="ColumnsFilterContext",wv=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}=Kt(),s=ue.uiContext.get(),o=l.ref(!1),c=()=>{o.value=!0},f=l.computed(()=>y(n.originalColumns)),u=l.ref([]),d=l.computed(()=>{const D={};return p(f.value,_=>{D[_.__key]=_}),D}),{merge:h,cloneDeep:m}=Je(),g=l.computed(()=>{const D={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(D,n.text),D});function p(D,_){if(D)if(Array.isArray(D))for(const b of D)_(b),b.children&&p(b.children,_);else for(const b in D){const E=D[b];_(E),E.children&&p(E.children,_)}}function x(D){return{key:D.key,title:D.title,fixed:D.fixed??!1,show:D.show??!0,__show:D.columnSetShow!==!1,__disabled:D.columnSetDisabled??!1}}function v(D){const _={};return z.forEach(D,b=>{const E=z.omit(b,"children","__show","__disabled","__parent","__key");b.children&&b.children.length>0&&(E.children=v(b.children)),_[b.key]=E}),_}function y(D,_){const b=[];return z.forEach(D,E=>{const A=x(E);A.__parent=_,A.__key=`${(_==null?void 0:_.key)||""}.${E.key}`,b.push(A),E.children&&(A.children=y(E.children,A))}),b}function w(D){u.value=y(D)}async function k(){u.value=y(n.originalColumns),await R(!0),await q(),a("reset")}async function R(D=!1){D||await K(u.value);const _=m(u.value);return p(_,b=>{b&&(delete b.__disabled,delete b.__show,delete b.__parent,delete b.__key)}),W(_),o.value=!1,_}async function T(D=!1){const _=await R(D);a("submit",{columns:_})}const C=l.computed(()=>n.originalColumns);l.provide(Us,{originalColumns:C,originalColumnsMap:d,currentColumns:u,text:g,active:o,submit:T,reset:k});async function U(){await T(!1),a("update:show",!1)}async function F(){await k(),a("update:show",!1)}function W(D){a("update:columns",v(D))}const G=l.inject("get:crudBinding",()=>({id:""})),B=l.ref();function H(){const D=typeof n.storage=="object"?n.storage:null,_=typeof n.storage=="string"?n.storage:"";if(B.value==null){const b=lf.useRoute();B.value=new jo({$router:b,tableName:"columnsFilter",keyType:_,remoteStorage:D})}return B.value.id=G().id,B.value}async function K(D){if(n.storage===!1)return;const _=m(D);p(_,b=>{delete b.__parent}),await H().updateTableValue(_)}async function j(){if(n.storage!==!1)return await H().getTableValue()}async function q(){await H().clearTableValue()}function ae(D){const _=[];p(D,E=>{const A=z.pick(E,"key","__show","__disabled");_.push(JSON.stringify(A))}),_.sort();let b="";for(const E of _)b+=E;return b}l.watch(()=>n.columns,D=>{w(D)});const pe=async()=>{w(n.columns);const D=await j();if(D){const _=ae(D);if(ae(f.value)!==_)return;u.value=D,await l.nextTick(),await T(!0)}};async function Y(D){await D(u),await R()}l.watch(()=>f.value,async D=>{await pe()},{immediate:!0}),t({start:c,save:R,update:Y,original:f,columns:u});function ce(D){return D.label||D.title||D.key||g.value.unnamed}return(D,_)=>{var E;const b=l.resolveComponent("fs-button");return D.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,(A,X)=>{var te;return l.withDirectives((l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{key:X,span:6},{default:l.withCtx(()=>{var ee;return[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).checkbox.name),l.normalizeProps({[l.unref(s).checkbox.modelValue]:A.show,["onUpdate:"+l.unref(s).checkbox.modelValue]:ne=>A.show=ne,disabled:((ee=f.value[A.key])==null?void 0:ee.__disabled)===!0,class:"item-label",title:ce(A)}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(ce(A)),1)]),_:2},1040,["disabled","title"]))]}),_:2},1024)),[[l.vShow,((te=f.value[A.key])==null?void 0:te.__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(b,{style:{"margin-right":"5px"},type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,onClick:_[0]||(_[0]=A=>U())},null,8,["icon","text"]),l.createVNode(b,{icon:l.unref(s).icons.refresh,text:g.value.reset,onClick:F},null,8,["icon","text"])]),_:1}))],64)):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(((E=D.container)==null?void 0:E.is)||"fs-columns-filter-layout-default"),l.normalizeProps(l.mergeProps({key:1},D.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(b,{icon:l.unref(s).icons.refresh,text:g.value.reset,block:"",onClick:k},null,8,["icon","text"])]),_:1})),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{span:12},{default:l.withCtx(()=>[l.createVNode(b,{type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,block:"",onClick:_[1]||(_[1]=A=>T(!1))},null,8,["icon","text"])]),_:1}))]),_:1}))]),_:1},16))}}}),HD="",_v=l.defineComponent({name:"FsToolbar",components:{FsTableColumnsFilter:wv},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){Kt();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=z.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)}}}}),jD="",yv={class:"fs-toolbar"};function kv(e,t,r,n,a,i){var o;const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",yv,[(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 B0=nt(_v,[["render",kv]]);/**!
|
||
* Sortable 1.14.0
|
||
* @author RubaXa <trash@rubaxa.org>
|
||
* @author owenm <owen23355@gmail.com>
|
||
* @license MIT
|
||
*/function N0(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?N0(Object(r),!0).forEach(function(n){bv(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):N0(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 bv(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 Ev(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 Cv(e,t){if(e==null)return{};var r=Ev(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 Sv="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),I0=An(/firefox/i),Ri=An(/safari/i)&&!An(/chrome/i)&&!An(/android/i),P0=An(/iP(ad|od|hone)/i),Tv=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 Fv(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=Fv(e))}return null}var L0=/\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(L0," ").replace(" "+t+" "," ");e.className=(n+(r?" "+t:"")).replace(L0," ")}}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 V0(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 Ot(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 U0(e,t,r){for(var n=Hn(e,!0),a=Ot(e)[t];n;){var i=Ot(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 pl(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 $0(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 Av(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 Dv(e,t){if(e&&t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function gl(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 W0(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 Rv(){clearTimeout(Oi),Oi=void 0}function H0(e,t,r){e.scrollLeft+=t,e.scrollTop+=r}function j0(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 Ov(){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:Ot(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(Av(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=Ot(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&&gl(h,d)&&!gl(u,d)&&(g.top-d.top)/(g.left-d.left)===(u.top-d.top)/(u.left-d.left)&&(c=Nv(g,h,m,a.options)),gl(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=Bv(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 Bv(e){return e.offsetWidth}function Nv(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=[],xl={initializeByDefault:!0},Bi={mount:function(t){for(var r in xl)xl.hasOwnProperty(r)&&!(r in t)&&(t[r]=xl[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 Iv(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 Pv=["evt"],mr=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.evt,i=Cv(n,Pv);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:jt,activeSortable:Pe.active,originalEvent:a,oldIndex:Ga,oldDraggableIndex:Ni,newIndex:kr,newDraggableIndex:zn,hideGhostForTarget:J0,unhideGhostForTarget:Z0,cloneNowHidden:function(){jn=!0},cloneNowShown:function(){jn=!1},dispatchSortableEvent:function(o){sr({sortable:r,name:o,originalEvent:a})}},i))};function sr(e){Iv(cn({putSortable:jt,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,jt,Xa=!1,zs=!1,Gs=[],ua,Gr,vl,wl,z0,G0,Ii,Ka,Pi,Mi=!1,Xs=!1,Ks,Yt,_l=[],yl=!1,Ys=[],qs=typeof document<"u",Js=P0,X0=Di||Dn?"cssFloat":"float",Mv=qs&&!Tv&&!P0&&"draggable"in document.createElement("div"),K0=function(){if(qs){if(Dn)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),Y0=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)+Ot(i).width,u=c&&parseInt(c.marginLeft)+parseInt(c.marginRight)+Ot(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[X0]==="none"||s&&n[X0]==="none"&&f+u>a)?"vertical":"horizontal"},Lv=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},Vv=function(t,r){var n;return Gs.some(function(a){var i=a[yr].options.emptyInsertThreshold;if(!(!i||pl(a))){var s=Ot(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},q0=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},J0=function(){!K0&&$e&&Ie($e,"display","none")},Z0=function(){!K0&&$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=Vv(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)}}},Uv=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 Y0(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]);q0(t);for(var a in this)a.charAt(0)==="_"&&typeof this[a]=="function"&&(this[a]=this[a].bind(this));this.nativeDraggable=t.forceFallback?!1:Mv,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,Ov())}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(Kv(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=Ot(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},z0=ua.clientX-f.left,G0=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(),!I0&&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){V0(we,u.trim(),kl)}),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),I0&&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&&kl(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",Uv);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,J0();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);Z0()}},_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&&$0(Yt),u=(i.clientX-ua.clientX+a.x)/(o||1)+(f?f[0]-_l[0]:0)/(o||1),d=(i.clientY-ua.clientY+a.y)/(c||1)+(f?f[1]-_l[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-(vl||0),s.f+=d-(wl||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),vl=u,wl=d,Gr=i}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!$e){var t=this.options.fallbackOnBody?document.body:ht,r=Ot(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(),_l=$0(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",z0/parseInt($e.style.width)*100+"% "+G0/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=j0(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=jt||f,m,g=this,p=!1;if(yl)return;function x(pe,Y){mr(pe,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(D,_){return Zs(ht,r,we,a,D,Ot(D),t,_)},changed:w},Y))}function v(){x("dragOverAnimationCapture"),g.captureAnimationState(),g!==h&&h.captureAnimationState()}function y(pe){return x("dragOverCompleted",{insertion:pe}),pe&&(u?f._hideClone():f._showClone(g),g!==h&&(_r(we,jt?jt.options.ghostClass:f.options.ghostClass,!1),_r(we,o.ghostClass,!0)),jt!==g&&g!==Pe.active?jt=g:g===Pe.active&&jt&&(jt=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),!pe&&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):jt===this||(this.lastPutMode=js.checkPull(this,f,we,t))&&c.checkPut(this,f,we,t))){if(m=this._getDirection(t,n)==="vertical",a=Ot(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 k=pl(r,o.draggable);if(!k||jv(t,m,this)&&!k.animated){if(k===we)return y(!1);if(k&&r===t.target&&(n=k),n&&(i=Ot(n)),Zs(ht,r,we,a,n,i,t,!!n)!==!1)return v(),r.appendChild(we),vt=r,w(),y(!0)}else if(k&&Hv(t,m,this)){var R=ja(r,0,o,!0);if(R===we)return y(!1);if(n=R,i=Ot(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=Ot(n);var T=0,C,U=we.parentNode!==r,F=!Lv(we.animated&&we.toRect||a,n.animated&&n.toRect||i,m),W=m?"top":"left",G=U0(n,"top","top")||U0(we,"top","top"),B=G?G.scrollTop:void 0;Ka!==n&&(C=i[W],Mi=!1,Xs=!F&&o.invertSwap||U),T=zv(t,n,i,m,F?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Xs,Ka===n);var H;if(T!==0){var K=Nr(we);do K-=T,H=vt.children[K];while(H&&(Ie(H,"display")==="none"||H===$e))}if(T===0||H===n)return y(!1);Ka=n,Pi=T;var j=n.nextElementSibling,q=!1;q=T===1;var ae=Zs(ht,r,we,a,n,i,t,q);if(ae!==!1)return(ae===1||ae===-1)&&(q=ae===1),yl=!0,setTimeout(Wv,30),v(),q&&!j?r.appendChild(we):n.parentNode.insertBefore(we,q?j:n),G&&H0(G,0,B-G.scrollTop),vt=we.parentNode,C!==void 0&&!Xs&&(Ks=Math.abs(C-Ot(n)[W])),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,Mi=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),bl(this.cloneId),bl(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||jt&&jt.lastPutMode!=="clone")&&wt&&wt.parentNode&&wt.parentNode.removeChild(wt),we&&(this.nativeDraggable&&Xe(we,"dragend",this),kl(we),we.style["will-change"]="",Ii&&!Xa&&_r(we,jt?jt.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})),jt&&jt.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=jt=js=Pe.dragged=Pe.ghost=Pe.clone=Pe.active=null,Ys.forEach(function(t){t.checked=!0}),Ys.length=vl=wl=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":we&&(this._onDragOver(t),$v(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)||Xv(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"&&q0(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 $v(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||Ot(t),c.willInsertAfter=o,c.originalEvent=s,e.dispatchEvent(c),u&&(d=u.call(f,c,s)),d}function kl(e){e.draggable=!1}function Wv(){yl=!1}function Hv(e,t,r){var n=Ot(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 jv(e,t,r){var n=Ot(pl(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 zv(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(!Mi&&(Pi===1?c>u+f*i/2:c<d-f*i/2)&&(Mi=!0),Mi)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 Gv(t)}return h=h||s,h&&(c<u+f*i/2||c>d-f*i/2)?c>u+f/2?1:-1:0}function Gv(e){return Nr(we)<Nr(e)?1:-1}function Xv(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 Kv(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 bl(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:V0,is:function(t,r){return!!fn(t,r,t,!1)},extend:Dv,throttle:W0,closest:fn,toggleClass:_r,clone:j0,index:Nr,nextTick:Qs,cancelNextTick:bl,detectDirection:Y0,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=Sv;var St=[],Li,El,Cl=!1,Sl,Tl,eo,Vi;function Yv(){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)),Q0(),to(),Rv()},nulling:function(){eo=El=Li=Cl=Vi=Sl=Tl=null,St.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){Fl(r,this.options,o,n);var c=Hn(o,!0);Cl&&(!Vi||i!==Sl||s!==Tl)&&(Vi&&Q0(),Vi=setInterval(function(){var f=Hn(document.elementFromPoint(i,s),!0);f!==c&&(c=f,to()),Fl(r,a.options,f,n)},10),Sl=i,Tl=s)}else{if(!this.options.bubbleScroll||Hn(o,!0)===un()){to();return}Fl(r,this.options,Hn(o,!1),!1)}}},Fn(e,{pluginName:"scroll",initializeByDefault:!0})}function to(){St.forEach(function(e){clearInterval(e.pid)}),St=[]}function Q0(){clearInterval(Vi)}var Fl=W0(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;El!==r&&(El=r,to(),Li=t.scroll,u=t.scrollFn,Li===!0&&(Li=Hn(r,!0)));var d=0,h=Li;do{var m=h,g=Ot(m),p=g.top,x=g.bottom,v=g.left,y=g.right,w=g.width,k=g.height,R=void 0,T=void 0,C=m.scrollWidth,U=m.scrollHeight,F=Ie(m),W=m.scrollLeft,G=m.scrollTop;m===c?(R=w<C&&(F.overflowX==="auto"||F.overflowX==="scroll"||F.overflowX==="visible"),T=k<U&&(F.overflowY==="auto"||F.overflowY==="scroll"||F.overflowY==="visible")):(R=w<C&&(F.overflowX==="auto"||F.overflowX==="scroll"),T=k<U&&(F.overflowY==="auto"||F.overflowY==="scroll"));var B=R&&(Math.abs(y-a)<=s&&W+w<C)-(Math.abs(v-a)<=s&&!!W),H=T&&(Math.abs(x-i)<=s&&G+k<U)-(Math.abs(p-i)<=s&&!!G);if(!St[d])for(var K=0;K<=d;K++)St[K]||(St[K]={});(St[d].vx!=B||St[d].vy!=H||St[d].el!==m)&&(St[d].el=m,St[d].vx=B,St[d].vy=H,clearInterval(St[d].pid),(B!=0||H!=0)&&(f=!0,St[d].pid=setInterval((function(){n&&this.layer===0&&Pe.active._onTouchMove(eo);var j=St[this.layer].vy?St[this.layer].vy*o:0,q=St[this.layer].vx?St[this.layer].vx*o:0;typeof u=="function"&&u.call(Pe.dragged.parentNode[yr],q,j,e,eo,St[this.layer].el)!=="continue"||H0(St[this.layer].el,q,j)}).bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=Hn(h,!1)));Cl=f}},30),eu=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 Al(){}Al.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:eu},Fn(Al,{pluginName:"revertOnSpill"});function Dl(){}Dl.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:eu},Fn(Dl,{pluginName:"removeOnSpill"}),Pe.mount(new Yv),Pe.mount(Dl,Al);var qv=Object.defineProperty,Jv=Object.defineProperties,Zv=Object.getOwnPropertyDescriptors,tu=Object.getOwnPropertySymbols,Qv=Object.prototype.hasOwnProperty,ew=Object.prototype.propertyIsEnumerable,ru=(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={}))Qv.call(t,r)&&ru(e,r,t[r]);if(tu)for(var r of tu(t))ew.call(t,r)&&ru(e,r,t[r]);return e},ro=(e,t)=>Jv(e,Zv(t));function Rl(e){e.parentElement!==null&&e.parentElement.removeChild(e)}function nu(e,t,r){const n=r===0?e.children[0]:e.children[r-1].nextSibling;e.insertBefore(t,n)}function tw(){return typeof window<"u"?window.console:global.console}const rw=tw();function nw(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const aw=/-(\w)/g,iw=nw(e=>e.replace(aw,(t,r)=>r.toUpperCase())),au=["Start","Add","Remove","Update","End"],iu=["Choose","Unchoose","Sort","Filter","Clone"],su=["Move"],sw=[su,au,iu].flatMap(e=>e).map(e=>`on${e}`),Ol={manage:su,manageAndEmit:au,emit:iu};function ow(e){return sw.indexOf(e)!==-1}const lw=["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 cw(e){return lw.includes(e)}function fw(e){return["transition-group","TransitionGroup"].includes(e)}function ou(e){return["id","class","role","style"].includes(e)||e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("on")}function lu(e){return e.reduce((t,[r,n])=>(t[r]=n,t),{})}function uw({$attrs:e,componentData:t={}}){const r=lu(Object.entries(e).filter(([n,a])=>ou(n)));return Gn(Gn({},r),t)}function dw({$attrs:e,callBackBuilder:t}){const r=lu(cu(e));Object.entries(t).forEach(([a,i])=>{Ol[a].forEach(s=>{r[`on${s}`]=i(s)})});const n=`[data-draggable]${r.draggable||""}`;return ro(Gn({},r),{draggable:n})}function cu(e){return Object.entries(e).filter(([t,r])=>!ou(t)).map(([t,r])=>[iw(t),r]).filter(([t,r])=>!ow(t))}const fu=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||{}},hw=(e,t)=>e.__draggable_context=t,uu=e=>e.__draggable_context;class mw{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)=>{hw(fu(n),{element:r[a],index:a})})}getUnderlyingVm(t){return uu(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=uu(s);if(o)return o.index;if(a===0)return 0;const c=fu(n[0]),f=[...i].findIndex(u=>u===c);return t<f?0:a}}function pw(e,t){const r=e[t];return r?r():[]}function gw({$slots:e,realList:t,getKey:r}){const n=t||[],[a,i]=["header","footer"].map(c=>pw(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 xw(e){const t=fw(e),r=!cw(e)&&!t;return{transition:t,externalComponent:r,tag:r?l.resolveComponent(e):t?l.TransitionGroup:e}}function vw({$slots:e,tag:t,realList:r,getKey:n}){const a=gw({$slots:e,realList:r,getKey:n}),i=xw(t);return new mw({nodes:a,root:i,realList:r})}function du(e,t){l.nextTick(()=>this.$emit(e.toLowerCase(),t))}function hu(e){return(t,r)=>{if(this.realList!==null)return this[`onDrag${e}`](t,r)}}function ww(e){const t=hu.call(this,e);return(r,n)=>{t.call(this,r,n),du.call(this,e,r)}}let Bl=null;const _w={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}},yw=["update:modelValue","change",...[...Ol.manageAndEmit,...Ol.emit].map(e=>e.toLowerCase())],kw=l.defineComponent({name:"draggable",inheritAttrs:!1,props:_w,emits:yw,data(){return{error:!1}},render(){try{this.error=!1;const{$slots:e,$attrs:t,tag:r,componentData:n,realList:a,getKey:i}=this,s=vw({$slots:e,tag:r,realList:a,getKey:i});this.componentStructure=s;const o=uw({$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&&rw.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=dw({$attrs:e,callBackBuilder:{manageAndEmit:i=>ww.call(this,i),emit:i=>du.bind(this,i),manage:i=>hu.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&&cu(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),Bl=e.item},onDragAdd(e){const t=e.item._underlying_vm_;if(t===void 0)return;Rl(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(nu(this.$el,e.item,e.oldIndex),e.pullMode==="clone"){Rl(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){Rl(e.item),nu(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(Bl)!==-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(){Bl=null}}}),bw=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}}}),zD="";function Ew(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 Nl=nt(bw,[["render",Ew]]),Cw=["title","i"],Sw={class:"item-right"},Tw={"flex-box":"0",class:"component--list-item-handle handle"},Fw={style:{"margin-left":"20px","padding-left":"10px","border-left":"1px solid #eee"}},Il=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.label||p.title||p.key||o.value.unnamed}function u(p){const x=p.draggedContext.element,v=p.relatedContext.element,y=[];for(const C of i.value)C.key===x.key?y.push(v):C.key===v.key?y.push(x):y.push(C);let w=0,k=y.length-1,R=y.length-1,T=0;for(let C=0;C<y.length;C++){const U=y[C];U.fixed==="left"?w=C:U.fixed==="right"?k=k>C?C:k:(R=R>C?C:R,T=T<C?C:T)}if(R<w||T>k)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(k=>k.__show&&k.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(kw),{list:p.columns,"item-key":"key",move:u},{item:l.withCtx(({element:w,index:k})=>{var R,T;return[l.createElementVNode("div",null,[l.withDirectives(l.createElementVNode("div",{title:f(w),class:"component--list-item",flex:"main:justify cross:center",i:k},[(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))]:C=>h(w)},{onChange:m}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(f(w)),1)]),_:2},1040,["disabled","title"])),l.createElementVNode("div",Sw,[p.isRoot?(l.openBlock(),l.createBlock(Nl,{key:0,modelValue:w.fixed,"onUpdate:modelValue":C=>w.fixed=C,"flex-box":"0",class:"d2-mr-10",onChange:C=>g(k,C)},null,8,["modelValue","onUpdate:modelValue","onChange"])):l.createCommentVNode("",!0),l.createElementVNode("div",Tw,[l.createVNode(v,{icon:l.unref(r).icons.sort},null,8,["icon"])])])],8,Cw),[[l.vShow,((T=l.unref(s)[w.__key])==null?void 0:T.__show)!==!1]]),l.createElementVNode("div",Fw,[w.children?(l.openBlock(),l.createBlock(y,{key:0,columns:w.children,onCheckChanged:m},null,8,["columns"])):l.createCommentVNode("",!0)])])]}),_:1},8,["list"])}}}),Aw={class:"component--list"},Dw={key:"__first__",class:"component--list-item",flex:"main:justify cross:center"},Rw={span:12},Ow={class:"title"},mu=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(()=>z.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",Aw,[l.createElementVNode("div",Dw,[l.createElementVNode("span",Rw,[(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",Ow,l.toDisplayString(l.unref(a).fixed)+" / "+l.toDisplayString(l.unref(a).order),1)]),l.createVNode(Il,{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"]))}}),Bw=l.defineComponent({name:"FsSearchButtons",inheritAttrs:!1,props:{buttons:{type:Object}},setup(){const{ui:e}=ue.useUi();return{ui:e}}}),Nw={class:"fs-search-col fs-search-btns"};function Iw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",Nw,[(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 pu=nt(Bw,[["render",Iw]]),Pw=l.defineComponent({name:"FsSearch",components:{FsSearchButtons:pu},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();z.each(e.columns,D=>{D.value!=null&&(D.value instanceof s||D.value instanceof o)&&Re.warn("search.value配置不支持ComputeValue/AsyncCompute类型的动态计算")});function c(){const D={};return z.forEach(e.columns,(_,b)=>{var A;if(_.value===void 0)return;const E=l.unref(_.value);E!==void 0&&_.show!==!1&&((A=_.component)==null?void 0:A.show)!==!1&&(D[b]=E)}),z.cloneDeep(n({},e.initialForm,D))}const f=l.reactive(c());let u=null;const d=i(()=>e.columns,R,null,D=>{const _=z.cloneDeep(e.formItem||{});z.forEach(D,A=>{n(A,_,A)}),e.validate||z.forEach(D,A=>{delete A.rules,delete A.rule}),e.col&&z.forEach(D,A=>{A.col=n({},e.col,A.col)}),z.forEach(D,A=>{A._cellRender=()=>p(A)});let b=[];z.forEach(D,(A,X)=>{A._key=X,b.push(A)}),b=z.sortBy(b,A=>A.order??Un.orderDefault);const E={};return b.forEach(A=>{let X=A._key;delete A._key,E[X]=A}),E});function h(){const D=z.cloneDeep(f);t.emit("update:validatedForm",D)}l.watch(()=>e.validatedForm,D=>{for(const _ in f)delete f[_];n(f,D||{})},{deep:!0});const m=(D,_)=>z.get(D,_);function g(D){if(D!=null)return D.indexOf(".")>=0?D.split("."):D}function p(D){const _=D.key;async function b(ee){Y(ee,D)}function E(){ae(D)}function A(ee,ne){ne.code==="Enter"&&ee.autoSearchTrigger!=!1&&U()}let X=null;e.slots["search_"+_]?X=l.createVNode(l.resolveComponent("fs-slot-render"),{slots:e.slots["search_"+_],scope:T(_)},null):D.render?X=l.createVNode(l.resolveComponent("fs-render"),{"render-func":D.render,scope:T(_)},null):D.component&&D.component.show!==!1&&(X=l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({ref:ee=>{y.value[_]=ee},"model-value":m(f,_),onKeyup:ee=>{A(D,ee)}},D.component,{scope:T(_),"onUpdate:modelValue":b,onInput:E,onCompositionstart:()=>{pe(!0)},onCompositionend:()=>{pe(!1)}}),null));const te=g(_);return r.formItem.render({props:{...D,label:D.title,[r.formItem.prop]:te,path:_,rulePath:_},slots:{default(){return X}}})}const x=l.ref(),{t:v}=Kt(),y=l.ref({});function w(D){return y.value[D]}function k(D){var _;return(_=w(D))==null?void 0:_.getTargetRef()}function R(){return{form:f,validatedForm:e.validatedForm,getComponentRef:k,doSearch:U,doReset:F,doValidate:C}}function T(D){return{...R(),key:D,value:m(f,D)}}async function C(D=!1,_="search"){try{return e.validate&&await r.form.validateWrap(x.value),!0}catch(b){return D||t.emit("validate-error",{...R(),error:b,trigger:_}),!1}}async function U(){u&&u.cancel(),await C()&&(h(),await l.nextTick(),t.emit("_search",R()),t.emit("search",R()))}async function F(){const D=c(),_=z.entries(f);for(const b of _){const E=m(D,b[0]);E==null?z.unset(f,b[0]):z.set(f,b[0],E)}await C()&&(h(),await l.nextTick(),e.reset&&e.reset(R()),t.emit("_reset",R()),t.emit("reset",R()),e.searchAfterReset&&U())}const W=l.computed(()=>{const D=[],_={search:{show:!0,type:"primary",disabled:!1,click:b=>{U()},order:1,text:v("fs.search.search.text")},reset:{show:!0,disabled:!1,click:b=>{F()},text:v("fs.search.reset.text"),order:2}};n(_,e.buttons);for(let b in _){const E=_[b];E._click=()=>{E.click(R())},D.push(E)}return D.sort((b,E)=>b.order-E.order),D});function G(){var D;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((D=e.debounce)==null?void 0:D.wait)||500;u=z.debounce(U,_,e.debounce)}}G();function B(){return f}function H(){return e.validatedForm}function K(D,_=!0){_||z.each(z.keys(f),b=>{delete f[b]}),a(f,D),h()}const j=l.ref(!1),q=()=>{Re.debug("do auto search,inputEventDisabled:",j.value),j.value!==!0&&u&&u()},ae=D=>{D.autoSearchTrigger==="input"&&q()},pe=D=>{j.value=D};async function Y(D,_){const b=_.key;z.set(f,b,D);const E=e.validateOnChangeSilent;if(_.valueChange){const A=_.key,X=f[A],te=k(A),ee=_.valueChange instanceof Function?_.valueChange:_.valueChange.handle,ne=R(),ie={index:0,row:ne.form,form:ne.form,...ne,key:A,value:X,componentRef:te,immediate:!1,getComponentRef:k,mode:"search"};ee(ie)}e.validateOnChange&&await C(E,"change")&&h(),j.value,(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&q()}const ce=l.computed(()=>e.validate?e.options.rules:[]);return h(),{get:m,ui:r,onValueChanged:Y,doValidate:C,doSearch:U,doReset:F,formData:f,componentRenderRefs:y,getComponentRenderRef:w,getComponentRef:k,getForm:B,getValidatedForm:H,setForm:K,searchFormRef:x,onInput:ae,inputEventDisabled:j,changeInputEventDisabled:pe,computedColumns:d,computedButtons:W,computedRules:ce,buildFieldContext:T,getContextFn:R}}}),GD="",Mw={class:"fs-search fs-search-v2"},Lw={class:"fs-search-buttons"};function Vw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button"),o=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createElementBlock("div",Mw,[(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",Lw,[(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 gu=nt(Pw,[["render",Vw]]),Uw=l.defineComponent({name:"FsSearchV1",components:{FsSearchButtons:pu},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(Y.value&&K.value){j.value=K.value.$el.offsetHeight;const D=K.value.$el.children;D&&D.length>1&&(q.value=D[1].offsetHeight+2)}});let n=null;function a(){return cloneDeep(e.initialForm||{})}const i=l.reactive(a()),{doComputed:s,AsyncComputeValue:o}=Br();z.each(e.columns,D=>{D.value!=null&&D.value instanceof o&&Re.warn("search.value配置不支持AsyncCompute类型的动态计算")});const{merge:c}=Je(),f=c,u=s(()=>e.columns,x,null,D=>{e.validate||z.forEach(D,E=>{delete E.rules}),e.col&&z.forEach(D,E=>{E.col=c({},e.col,E.col)});let _=[];z.forEach(D,(E,A)=>{E._key=A,_.push(E)}),_=z.sortBy(_,E=>E.order??Un.orderDefault);const b={};return _.forEach(E=>{let A=E._key;delete E._key,b[A]=E}),b});z.forEach(u.value,(D,_)=>{var E;if(D.value===void 0)return;const b=l.unref(D.value);b!==void 0&&D.show!==!1&&((E=D.component)==null?void 0:E.show)!==!1&&(i[_]=b)});const d=l.ref(),{t:h}=Kt(),m=l.ref({});function g(D){return m.value[D]}function p(D){var _,b;return(b=(_=g(D))==null?void 0:_.$refs)==null?void 0:b.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 D=a(),_=z.entries(i);for(const b of _){const E=z.get(D,b[0]);E==null?z.unset(i,b[0]):z.set(i,b[0],E)}e.reset&&e.reset(v.value),t.emit("reset",x()),e.searchAfterReset&&l.nextTick(()=>{y()})}const k=l.computed(()=>{const D=[],_={search:{show:!0,type:"primary",disabled:!1,click:b=>{y()},order:1,text:h("fs.search.search.text")},reset:{show:!0,disabled:!1,click:b=>{w()},text:h("fs.search.reset.text"),order:2}};c(_,e.buttons);for(let b in _){const E=_[b];E._click=()=>{E.click(x())},D.push(E)}return D.sort((b,E)=>b.order-E.order),D});function R(){var D;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((D=e.debounce)==null?void 0:D.wait)||500;n=debounce(y,_,e.debounce)}}R();function T(){return i}function C(D,_=!0){_||z.each(z.keys(i),b=>{delete i[b]}),f(i,D)}const U=l.ref(!1),F=()=>{Re.debug("do auto search,inputEventDisabled:",U.value),U.value!==!0&&n&&n()},W=D=>{D.autoSearchTrigger==="input"&&F()},G=D=>{U.value=D,F()};function B(D,_){const b=_.key;if(z.set(i,b,D),_.valueChange){const E=_.key,A=i[E],X=p(E);(_.valueChange instanceof Function?_.valueChange:_.valueChange.handle)({key:E,value:A,componentRef:X,...x(),immidiate:!1})}(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&F()}const H=l.computed(()=>e.validate?e.options.rules:[]),K=l.ref(),j=l.ref(0),q=l.ref(0),ae=()=>{t.emit("update:collapse",!e.collapse),t.emit("collapse",!e.collapse)},pe=l.computed(()=>e.layout==="multi-line"?r.col.name:"div"),Y=l.computed(()=>e.layout==="multi-line"),ce=l.computed(()=>Y.value?e.collapse?q.value?q.value+"px":"":j.value?j.value+"px":"":"auto");return{get:(D,_)=>z.get(D,_),ui:r,onValueChanged:B,doSearch:y,doReset:w,form:i,componentRenderRefs:m,getComponentRenderRef:g,getComponentRef:p,getForm:T,setForm:C,searchFormRef:d,onInput:W,inputEventDisabled:U,changeInputEventDisabled:G,computedColumns:u,computedButtons:k,computedRules:H,columnsRowRef:K,computedColumnBoxHeight:ce,computedColName:pe,computedIsMultiLine:Y,toggleCollapse:ae,searchEventContextRef:v}}}),XD="",$w={class:"fs-search-box"},Ww={class:"fs-search-main"},Hw={key:0,class:"fs-search-col"},jw={key:1,class:"fs-search-col fs-search-middle"},zw={key:3,class:"fs-search-col fs-search-right"},Gw={key:0,class:"fs-search-action"};function Xw(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",$w,[l.createElementVNode("div",Ww,[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",Hw,[(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",jw,[(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",zw,[(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",Gw,[(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 xu=nt(Uw,[["render",Xw]]),Kw=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}=Kt(),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 z.merge({},e.col,u)}return{ui:r,columnsRowRef:a,computedColumnBoxHeight:s,computedIsMultiLine:i,toggleCollapse:c,mergeCol:f,t:n}}}),KD="",Yw={class:"fs-search-box"},qw={class:"fs-search-col fs-search-slot"},Jw={class:"fs-search-col fs-search-slot"},Zw={class:"fs-search-col fs-search-slot"},Qw={key:0,class:"fs-search-buttons-group fs-search-multi-line-buttons"};function e_(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",Yw,[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",Jw,[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",Zw,[l.renderSlot(e.$slots,"search-right",l.normalizeProps(l.guardReactiveProps(e.getContextFn())))])]}),_:3},512))],6),e.computedIsMultiLine?(l.openBlock(),l.createElementBlock("div",Qw,[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 vu=nt(Kw,[["render",e_]]),t_={class:"fs-tabs-filter"},r_=l.defineComponent({name:"FsTabsFilter",inheritAttrs:!1}),wu=l.defineComponent({...r_,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(()=>n({show:!0,value:null,label:"全部"},a.defaultOption||{})),s="_default_key_",o=l.computed(()=>{const m=a.modelValue==null||a.modelValue===i.value.value?s:a.modelValue;return{type:"card",...r,[h.tabs.modelValue]:m,["onUpdate:"+h.tabs.modelValue]:f}}),c=t;function f(m){s===m&&(m=i.value.value);const g=a.modelValue;c("update:modelValue",m),g!==m&&c("change",m)}function u(m){return m[a.value]}function d(m){return m[a.label]}const{ui:h}=ue.useUi();return(m,g)=>(l.openBlock(),l.createElementBlock("div",t_,[(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(m.options,(p,x)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabPane.name),l.normalizeProps({key:x,[l.unref(h).tabPane.key||""]:u(p),[l.unref(h).tabPane.tab||""]:d(p)}),null,16))),128))]),_:1},16))]))}}),YD="",n_={class:"fs-icon-selector"},a_={key:0,class:"fs-icon-selector-dialog"},i_={class:"fs-icon-selector-dialog-content"},s_={class:"icon-tabs-box mt-10"},o_={class:"search-box"},l_={class:"color-select"},c_=["onClick"],f_={class:"icon-container"},u_={class:"icon-list"},d_=["title","onClick","onDblclick"],h_={class:"load-more"},m_={key:1},p_={class:"footer"},g_=l.defineComponent({name:"FsIconSelector"}),_u=l.defineComponent({...g_,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}`]:j=>{s.value=j}})),c=i.formItem.injectFormItemContext(),f=l.computed(()=>({...h,[i.input.modelValue]:a.modelValue,[`onUpdate:${i.input.modelValue}`]:j=>{u(j)}})),u=j=>{r("update:modelValue",j),c==null||c.onChange()},d=()=>{var q;s.value=!0,a.iconSets.length>0&&k.value.records.length===0&&y(a.iconSets[0]);const j=((q=a.modelValue)==null?void 0:q.split(":"))||[];j.length>=2?(U.value=j[0]+":"+j[1],F.value=j[2]):(U.value=a.modelValue,F.value="")},h=l.useAttrs(),m={async getCollections(){return await(await fetch(`${a.apiProvider}/collections`)).json()},async getIcons(j){return await(await fetch(`${a.apiProvider}/collection?prefix=${j}`)).json()},async search(j,q){const ae=q.start??0,pe=q.limit??50;return await(await fetch(`${a.apiProvider}/search?query=${j}&start=${ae}&limit=${pe}`)).json()}},g=l.ref({}),p=async j=>{let q=g.value[j];if(!q){const ae=await m.getIcons(j),pe=ae.uncategorized??[],Y=ae.categories??[];q=pe;for(const ce in Y)q=q.concat(Y[ce]);q=q.map(ce=>`${j}:${ce}`),g.value[j]=q}return q},x=l.ref(""),v=l.ref("all"),y=j=>{v.value=j,x.value="",w(),R()},w=()=>{k.value.start=0,k.value.records=[],k.value.total=0,k.value.limit=a.limit??n},k=l.ref({loading:!1,start:0,limit:a.limit??n,total:null,query:"",records:[]}),R=async()=>{if(!k.value.loading){k.value.query!==x.value&&w(),k.value.loading=!0;try{const j=await T();k.value.records=k.value.records.concat(j.icons),k.value.total=j.total,k.value.limit=j.limit,k.value.query=x.value}finally{k.value.loading=!1}}};async function T(){if(v.value==="all"){if(!x.value){i.notification.warn("请输入搜索关键字");return}return await m.search(x.value,k.value)}else return await C(v.value)}async function C(j){const q=await p(j);let ae=q;x.value&&(ae=q.filter(ce=>ce.includes(x.value)));let pe=k.value.start+k.value.limit;return pe>ae.length&&(pe=ae.length),{icons:ae.slice(k.value.start,pe),total:ae.length,limit:k.value.limit,start:k.value.start}}const U=l.ref(""),F=l.ref(""),W=(j,q=!1)=>{U.value=j,q&&G()},G=()=>{s.value=!1;let j=U.value;F.value&&(j=j+":"+F.value),u(j)},B=j=>{F.value=j},H=async()=>{k.value.start+=k.value.limit,await R()},K=l.computed(()=>({...a.tabs,[i.tabs.modelValue]:v.value,[`onUpdate:${i.tabs.modelValue}`]:y}));return(j,q)=>{const ae=l.resolveComponent("fs-icon"),pe=l.resolveComponent("fs-button"),Y=l.resolveComponent("fs-loading");return l.openBlock(),l.createElementBlock("div",n_,[(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",a_,[(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",i_,[l.createElementVNode("div",s_,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabs.name),l.mergeProps(K.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",o_,[(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]:q[0]||(q[0]=ce=>x.value=ce),class:"search-input",placeholder:"搜索图标, 双击选择",onKeydown:l.withKeys(R,["enter"])}),{suffix:l.withCtx(()=>[l.createVNode(pe,{type:"primary",size:"small",icon:l.unref(i).icons.search,onClick:R},null,8,["icon"])]),_:1},16)),l.createElementVNode("div",l_,[q[2]||(q[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===F.value}]),style:l.normalizeStyle({backgroundColor:ce}),onClick:D=>B(ce)},l.toDisplayString(ce?"":"无"),15,c_))),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||""]:F.value,onInput:q[1]||(q[1]=ce=>B(ce))}),null,16,["icon"]))])]),l.createElementVNode("div",f_,[l.createElementVNode("div",u_,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(k.value.records,ce=>(l.openBlock(),l.createElementBlock("div",{key:ce,class:l.normalizeClass(["icon-item",{active:ce===U.value}]),title:ce,onClick:D=>W(ce,!1),onDblclick:D=>W(ce,!0)},[l.createVNode(ae,{icon:F.value?`${ce}:${F.value}`:ce,class:"text-2xl"},null,8,["icon"])],42,d_))),128))]),l.createElementVNode("div",h_,[k.value.loading?(l.openBlock(),l.createBlock(Y,{key:0,loading:k.value.loading,text:"加载中"},null,8,["loading"])):k.value.total==null||k.value.total==0?(l.openBlock(),l.createElementBlock("div",m_,q[3]||(q[3]=[l.createElementVNode("div",null,"暂无数据",-1)]))):k.value.total>k.value.start+k.value.limit?(l.openBlock(),l.createElementBlock("div",{key:2,onClick:H},q[4]||(q[4]=[l.createElementVNode("div",null,"加载更多",-1)]))):l.createCommentVNode("",!0)])]),l.createElementVNode("div",p_,[l.createVNode(pe,{type:"primary",onClick:G},{default:l.withCtx(()=>q[5]||(q[5]=[l.createTextVNode("确定",-1)])),_:1,__:[5]})])])])]),_:1},16))])):l.createCommentVNode("",!0)])}}}),qD="",x_=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 v_(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 yu=nt(x_,[["render",v_]]),w_=l.defineComponent({name:"FsDictSelect"}),ku=l.defineComponent({...w_,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}=Kt(),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=x=>{a("change",x);const v=d.getDict();if(x&&Array.isArray(x)&&x.length>0){const y=[];for(const w of x)v&&v.dataMap&&v.dataMap[w]&&y.push(v.dataMap[w]);a("selected-change",y);return}if(v&&v.dataMap&&v.dataMap[x]){const y=v.dataMap[x];a("selected-change",y)}else a("selected-change",null)},g=l.useSlots();t({selectRef:i,computedPlaceholder:o,...d,computedOptions:h,onSelectedChange:m});const p=()=>{const{ui:x}=ue.useUi(),v=l.resolveDynamicComponent(x.select.name),y=x.select.modelValue;if(x.option.name==null){const C=h.value||[],U={[`onUpdate:${y}`]:W=>{this.$emit(`onUpdate:${y}`,W),m(W)},...f},F={...g,...n.slots};return l.createVNode(v,l.mergeProps({ref:"selectRef",placeholder:o.value,options:C,renderLabel:n.renderLabel},U),F)}const w=[],k=l.resolveDynamicComponent(x.option.name),R=h.value||[];for(const C of R){const U=l.createVNode(k,l.mergeProps(C,{value:d.getValue(C),label:d.getLabel(C)}),{default:()=>[n.renderLabel?n.renderLabel(C):d.getLabel(C)]});w.push(U)}const T={default:()=>w,...g,...n.slots};return l.createVNode(v,l.mergeProps({ref:"selectRef",placeholder:o.value,onChange:m},f),T)};return(x,v)=>(l.openBlock(),l.createBlock(p))}}),JD="";function __(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 y_(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 k_=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},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(m,g){!g.effect&&m.effect&&(g.effect=m.effect);const p=r.tag.type,x=s(g);if(x!=null){if(typeof x!="string")return;c(g,"color"),g[p]=x;return}if(m.color==="auto"){const v=__(o(g));o(g);const y=m.autoColors?m.autoColors:n;g[p]=y[v%y.length];const w=m.autoEffects?m.autoEffects:a;g.effect=w[Math.floor(v/y.length)%w.length]}else g[p]=m.color}const u=l.computed(()=>{var w,k;if(e.valueType==="object")return e.modelValue&&!Array.isArray(e.modelValue)?[e.modelValue]:e.modelValue;const m=i.getDict();if(e.modelValue==null||e.modelValue==="")return[];const g=y_(e);let p=[];const x=((w=e.dict)==null?void 0:w.value)||"value",v=((k=e.dict)==null?void 0:k.label)||"label";m?(p=m.getNodesFromDataMap(g),z.forEach(p,R=>{R[v]==null&&(R[v]=e.defaultLabel||R[x])})):(p=[],z.forEach(g,R=>{R instanceof Object?p.push(R):p.push({[x]:R,[v]:R})}));const y=[];return z.forEach(p,R=>{y.push(z.omit(R,"children"))}),z.forEach(y,R=>{f(e,R)}),y});function d(m){t.emit("click",{item:m})}function h(m,g){t.emit("close",{item:g,index:m});const p=[];for(let x=0;x<u.value.length;x++)x!==m&&p.push(o(u.value[x]));t.emit("update:modelValue",p)}return{ui:r,...i,doClick:d,computedValueItems:u,doClose:h}}}),ZD="",b_={class:"fs-values-format"},E_=["onClick"];function C_(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("span",b_,[e.itemRender?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(e.computedValueItems,c=>(l.openBlock(),l.createBlock(s,{key:e.getValue(c),"render-func":e.itemRender,scope:c},null,8,["render-func","scope"]))),128)):e.type==="text"?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:1},l.renderList(e.computedValueItems,c=>(l.openBlock(),l.createElementBlock("span",{key:e.getValue(c),onClick:f=>e.doClick(c)},l.toDisplayString(e.getLabel(c)),9,E_))),128)):(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:2},l.renderList(e.computedValueItems,(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))])}const bu=nt(k_,[["render",C_]]),S_=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)}}}),T_={key:0},F_={key:0};function A_(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",T_," / ")):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",F_," / ")):l.createCommentVNode("",!0),l.createElementVNode("span",null,l.toDisplayString(e.getLabel(s)),1)]))),128))])}const Eu=nt(S_,[["render",A_]]),D_=l.defineComponent({name:"FsDictCascader",props:{dict:{},options:{type:Array},transformDictData:{type:Function,default:void 0}},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();function o(c){if(t.emit("change",c),c){let f=[];const u=n.getDict();if(u&&u.dataMap){for(let d of c){const h=u.dataMap[d];h&&f.push(h)}t.emit("selected-change",f)}}else t.emit("selected-change",null)}return{ui:a,cascaderRef:r,...n,fieldNamesBinder:i,computedOptions:s,onSelectChange:o}}});function R_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.cascader.name),l.mergeProps({ref:"cascaderRef",options:e.computedOptions},e.fieldNamesBinder,{onChange:e.onSelectChange}),null,16,["options","onChange"])}const Cu=nt(D_,[["render",R_]]),O_=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 B_(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 Su=nt(O_,[["render",B_]]),N_=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 I_(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 Tu=nt(N_,[["render",I_]]),P_=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=Mt(this.modelValue,this.valueFormat):e=Mt(this.modelValue),e.format(this.format)}},created(){},methods:{}});function M_(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",null,l.toDisplayString(e.doFormat),1)}const Fu=nt(P_,[["render",M_]]),L_=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}=Kt(),{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 V_(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 Au=nt(L_,[["render",V_]]),U_={class:"fs-table-select"},$_={key:0,class:"fs-table-select-current"},Du=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"],setup(e,{expose:t,emit:r}){const n=e,a=l.useSlots(),i=r,{ui:s}=ue.useUi(),{t:o}=Kt(),c=l.ref(),f=l.ref(),u=l.ref(!1);function d(){u.value=!1,i("close",B())}function h(){u.value=!0}const{crudRef:m,crudBinding:g,crudExpose:p}=Hf();function x(K){K==null||Array.isArray(K)&&K.length==0?T.value=[]:(n.multiple?T.value=K||[]:T.value=[K],n.valueType==="object"&&(T.value=T.value.map(j=>n.dict.getValue(j))))}const v=l.ref(),y=l.computed(()=>({wrapper:{}})),w=async(K={})=>{var ae,pe;if(n.disabled||n.readonly||(ae=n.select)!=null&&ae.disabled||(pe=n.select)!=null&&pe.readonly)return;if(n.dict==null)throw new Error("必须配置dict,且必须配置dict.getNodesByValues");const j=await Wf({crudBinding:g,crudRef:m,createCrudOptions:n.createCrudOptions,crudOptionsOverride:F(),context:{t:o,ui:s,...K==null?void 0:K.context},crudExpose:p});x(n.modelValue),n.beforeOpen&&await n.beforeOpen({crudOptions:K==null?void 0:K.crudOptions,...B()}),K&&j.appendCrudOptions(K==null?void 0:K.crudOptions);const q=W({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(){v.value.close()}},ok:{type:"primary",text:o("fs.extends.tableSelect.ok"),async click(){await G()}}}}},{wrapper:n.dialog});return v.value.open(q),await l.nextTick(),await p.doRefresh(),j},k=l.computed(()=>({...n.valuesFormat})),R=l.computed(()=>{const K=`onUpdate:${s.select.modelValue}`;let j=n.modelValue;return n.valueType==="object"&&n.modelValue&&(n.multiple?j=n.modelValue.map(q=>n.dict.getValue(q)):j=n.dict.getValue(n.modelValue)),{[s.select.modelValue]:j,[K]:q=>{i("update:modelValue",q)},[s.select.clearable]:!0,...s.select.buildMultiBinding(n.multiple),show:!1,...n.select}});l.watch(()=>n.modelValue,async K=>{K!==T.value&&(x(K),await l.nextTick(),await n.dict.appendByValues(T.value))});const T=l.ref([]);function C(){return n.rowKey||g.value.table.rowKey||"id"}const U=l.ref(!1);function F(){var ae,pe;let K=s.table;((pe=(ae=g.value)==null?void 0:ae.table)==null?void 0:pe.tableVersion)==="v2"&&(K=s.tableV2);let j=K.buildSelectionCrudOptions({crossPage:n.crossPage,selectOnClickRow:!0,getRowKey:C,getPageData(){return g.value.data},useCompute:Br,multiple:n.multiple,selectedRowKeys:T,onSelectedKeysChanged:async Y=>{T.value=[...Y],await l.nextTick(),await n.dict.appendByValues(T.value)}});return W({table:{async onRefreshed(){if(K.setSelectedRows){U.value=!0,await l.nextTick(),await l.nextTick();const Y=p.getBaseTableRef();K.setSelectedRows({getRowKey:C,multiple:n.multiple,tableRef:Y,selectedRowKeys:T}),U.value=!1}}}},j,n.crudOptionsOverride)}const{merge:W}=Je();async function G(){var ae;if(n.dict.loading)return;let K=null,j=null;((ae=T.value)==null?void 0:ae.length)>0&&(K=[...T.value],j=K.map(pe=>n.dict.getDictMap()[pe]),n.valueType==="object"&&(K=j),n.multiple!==!0&&K.length>0&&(K=K[0])),(!n.viewMode||n.emitOnViewModel)&&(i("update:modelValue",K),i("change",K),i("selected-change",j));let q={value:K,rows:j,selectedRowKeys:T.value};i("dialog-close",q),await l.nextTick(),await v.value.close(),i("dialog-closed",q)}const B=()=>({opened:u,open:w,selectedRowKeys:T,dictSelectRef:c,valuesFormatRef:f,crudRef:m,crudBinding:g,crudExpose:p}),H=l.ref(B());return t(H.value),(K,j)=>{const q=l.resolveComponent("fs-dict-select"),ae=l.resolveComponent("fs-values-format"),pe=l.resolveComponent("fs-crud"),Y=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createElementBlock("div",U_,[!(a!=null&&a.default)&&!K.viewMode?(l.openBlock(),l.createBlock(q,l.mergeProps({key:0,ref_key:"dictSelectRef",ref:c},R.value,{open:!1,disabled:K.disabled,readonly:K.readonly,dict:K.dict,onClick:w}),null,16,["disabled","readonly","dict"])):l.createCommentVNode("",!0),l.renderSlot(K.$slots,"default",l.normalizeProps(l.guardReactiveProps(H.value))),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).formItem.skipValidationWrapper),null,{default:l.withCtx(()=>[l.createVNode(Y,l.mergeProps({ref_key:"formWrapperRef",ref:v},y.value,{onClosed:d,onOpen:h}),{"form-body-top":l.withCtx(()=>[u.value||K.destroyOnClose===!1?(l.openBlock(),l.createElementBlock("div",{key:0,style:l.normalizeStyle({width:"100%",height:K.height||"70vh"})},[l.createVNode(pe,l.mergeProps({ref_key:"crudRef",ref:m},l.unref(g)),{"header-top":l.withCtx(()=>[K.showCurrent!==!1&&!K.viewMode?(l.openBlock(),l.createElementBlock("div",$_,[j[1]||(j[1]=l.createTextVNode(" 当前选中: ",-1)),l.createVNode(ae,l.mergeProps({ref_key:"valuesFormatRef",ref:f,modelValue:T.value,"onUpdate:modelValue":j[0]||(j[0]=ce=>T.value=ce),dict:K.dict,closable:!0},k.value),null,16,["modelValue","dict"])])):l.createCommentVNode("",!0)]),_:1},16)],4)):l.createCommentVNode("",!0)]),_:1},16)]),_:1}))])}}}),QD="",W_={class:"fs-editable-select"},H_={class:"select"},j_=l.defineComponent({name:"FsEditableSelect"}),Ru=l.defineComponent({...j_,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",W_,[l.createElementVNode("div",H_,[l.createVNode(c,l.mergeProps({value:s.modelValue,dict:s.dict},s.dictSelect,{"onUpdate:value":i}),null,16,["value","dict"])]),l.createVNode(u,l.mergeProps({class:"table-select","model-value":s.modelValue,dict:s.dict,"destroy-on-close":!1,height:"400px"},s.tableSelect,{"onUpdate:modelValue":i,onDialogClosed:a}),{default:l.withCtx(d=>[l.createVNode(f,l.mergeProps({type:"primary",icon:"ant-design:edit-outlined"},s.button,{onClick:d.open}),null,16,["onClick"])]),_:1},16,["model-value","dict"])])}}}),eR="",Ou=Object.freeze(Object.defineProperty({__proto__:null,FsActionbar:O0,FsBox:c0,FsButton:n0,FsCell:A0,FsColumnsFilterLayoutDefault:mu,FsComponentRender:u0,FsContainer:Qf,FsCrud:v0,FsDateFormat:Fu,FsDictCascader:Cu,FsDictCascaderFormat:Eu,FsDictCheckbox:Su,FsDictRadio:yu,FsDictSelect:ku,FsDictSwitch:Tu,FsDictTree:Au,FsEditable:R0,FsEditableCell:D0,FsEditableSelect:Ru,FsForm:h0,FsFormHelper:g0,FsFormItem:m0,FsFormItemCol:p0,FsFormProvider:x0,FsFormWrapper:$a,FsIcon:a0,FsIconSelector:_u,FsIconSvg:s0,FsIconify:i0,FsLabel:o0,FsLayoutCard:t0,FsLayoutDefault:e0,FsLoading:l0,FsPage:Cf,FsRender:ol,FsRowHandle:w0,FsSearch:gu,FsSearchLayoutDefault:vu,FsSearchV1:xu,FsSlotRender:d0,FsTable:F0,FsTableColumnsFixedController:Nl,FsTableSelect:Du,FsTabsFilter:wu,FsToolbar:B0,FsValuesFormat:bu,fsColumnsFilterNestList:Il},Symbol.toStringTag,{value:"Module"})),{setDictRequest:z_}=qf(),Bu={install(e,t={}){t.ui&&ue.uiContext.set(t.ui);const{merge:r}=Je();t.commonOptions&&(vi.commonOptions=t.commonOptions),t.dictRequest&&z_(t.dictRequest),t.i18n&&Ds.setVueI18n(t.i18n);const n=t.customComponents||{};for(const a in Ou){const i=n[a]||Ou[a];e.component(a,i)}$a._context=e._context,La.install(),e.config.globalProperties.$fsui=ue.uiContext.get(),r(Zf.logger,t.logger),G_(t.logger)}};function G_(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 Pl(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 X_={_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(Pl("ie")&&Pl("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(Pl("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)}}},K_=`\r
|
||
`,Ml=(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))},Y_={separator:",",quoted:!1};function q_(e,t,r,n=!1){r=Object.assign({},Y_,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&&Ml(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||Ml(i,a,r))),Array.isArray(t)&&t.forEach(o=>{Array.isArray(o)||(o=a.map(c=>typeof o[c]<"u"?o[c]:"")),Ml(i,o,r)}),i.join(K_)}/*! @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(k){return Object.prototype.toString.call(k).match(/^\[object\s(.*)\]$/)[1]},a=function(){this.data=[]},i=function(R,T,C){this.data=R,this.size=R.length,this.type=T,this.encoding=C},s=a.prototype,o=i.prototype,c=r.FileReaderSync,f=function(k){this.code=this[this.name=k]},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(k){var R=k.type,T;if(R===null&&(R="application/octet-stream"),k instanceof i)return T="data:"+R,k.encoding==="base64"?T+";base64,"+k.data:k.encoding==="URI"?T+","+decodeURIComponent(k.data):x?T+";base64,"+x(k.data):T+","+encodeURIComponent(k.data);if(m)return m.call(h,k)},p.revokeObjectURL=function(k){k.substring(0,5)!=="data:"&&g&&g.call(h,k)},s.append=function(k){var R=this.data;if(w&&(k instanceof y||k instanceof w)){for(var T="",C=new w(k),U=0,F=C.length;U<F;U++)T+=String.fromCharCode(C[U]);R.push(T)}else if(n(k)==="Blob"||n(k)==="File")if(c){var W=new c;R.push(W.readAsBinaryString(k))}else throw new f("NOT_READABLE_ERR");else k instanceof i?k.encoding==="base64"&&v?R.push(v(k.data)):k.encoding==="URI"?R.push(decodeURIComponent(k.data)):k.encoding==="raw"&&R.push(k.data):(typeof k!="string"&&(k+=""),R.push(unescape(encodeURIComponent(k))))},s.getBlob=function(k){return arguments.length||(k=null),new i(this.data.join(""),k,"raw")},s.toString=function(){return"[object BlobBuilder]"},o.slice=function(k,R,T){var C=arguments.length;return C<3&&(T=null),new i(this.data.slice(k,C>1?R:this.data.length),T,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 Nu={exports:{}};(function(e,t){(function(r,n){n()})(Cn,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 Cn=="object"&&Cn.global===Cn?Cn: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})})(Nu);var J_=Nu.exports;const Iu=wi(J_);/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var no={};no.version="0.18.5";var Pu=1252,Z_=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],Ll={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},Vl=function(e){Z_.indexOf(e)!=-1&&(Pu=Ll[0]=e)};function Q_(){Vl(1252)}var Xr=function(e){Vl(e)};function Ul(){Xr(1200),Q_()}function Mu(e){for(var t=[],r=0,n=e.length;r<n;++r)t[r]=e.charCodeAt(r);return t}function ey(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 Lu(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?ey(e.slice(2)):t==254&&r==255?Lu(e.slice(2)):t==65279?e.slice(1):e},ao=function(t){return String.fromCharCode(t)},Vu=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 Uu(e){return je?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}var Er=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 Er(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 ty(e){if(typeof Uint8Array>"u")throw new Error("Unsupported");return new Uint8Array(e)}function $l(e){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(e instanceof ArrayBuffer)return $l(new Uint8Array(e));for(var t=new Array(e.length),r=0;r<e.length;++r)t[r]=e[r];return t}var Lt=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 ry(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)),Lt(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 Wl(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 ny(e,t){var r=""+Math.round(e);return r.length>=t?r:yt("0",t-r.length)+r}function ay(e,t){var r=""+e;return r.length>=t?r:yt("0",t-r.length)+r}var $u=Math.pow(2,32);function qa(e,t){if(e>$u||e<-$u)return ny(e,t);var r=Math.round(e);return ay(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 Wu=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],Hl=[["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 iy(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"秒 "'},Hu={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},sy={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=dy(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 ju=new Date(1899,11,31,0,0,0),oy=ju.getTime(),ly=new Date(1900,2,1,0,0,0);function zu(e,t){var r=e.getTime();return t?r-=1461*24*60*60*1e3:e>=ly&&(r+=24*60*60*1e3),(r-(oy+(e.getTimezoneOffset()-ju.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function jl(e){return e.indexOf(".")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function cy(e){return e.indexOf("E")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function fy(e){var t=e<0?12:11,r=jl(e.toFixed(12));return r.length<=t||(r=e.toPrecision(10),r.length<=t)?r:e.toExponential(5)}function uy(e){var t=jl(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=fy(e):t===10?r=e.toFixed(10).substr(0,12):r=uy(e),jl(cy(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 Cr(14,zu(e,t&&t.date1904),t)}throw new Error("unsupported value in General format: "+e)}function dy(e,t){t[0]-=581;var r=e.getDay();return e<60&&(r=(r+6)%7),r}function hy(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 Hl[r.m-1][1];case 5:return Hl[r.m-1][0];default:return Hl[r.m-1][2]}break;case 100:switch(t.length){case 1:case 2:c=r.d,f=t.length;break;case 3:return Wu[r.q][0];default:return Wu[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 Gu=/%/g;function my(e,t,r){var n=t.replace(Gu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function py(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 Xu(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"-"+Xu(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 Ku=/# (\?+)( ?)\/( ?)(\d+)/;function gy(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):Wl(s,e[1].length)+e[2]+"/"+e[3]+Kr(o,e[4].length))}function xy(e,t,r){return r+(t===0?"":""+t)+yt(" ",e[1].length+2+e[4].length)}var Yu=/^#*0*\.([0#]+)/,qu=/\).*[0#]/,Ju=/\(###\) ###\\?-####/;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 Zu(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r}function Qu(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 vy(e,t){return t<(""+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}function wy(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(qu)){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 py(e,t,r);if(t.indexOf("%")!==-1)return my(e,t,r);if(t.indexOf("E")!==-1)return Xu(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(Ku))return gy(i,c,f);if(t.match(/^#+0+$/))return f+qa(c,t.length-t.indexOf("0"));if(i=t.match(Yu))return a=Zu(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+Zu(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)+vy(r,i[1].length)))+"."+Kr(Qu(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(Ju))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]?Wl(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=Qu(r,i[1].length),r<0?"-"+Ir(e,t,-r):Zn(wy(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 _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 yy(e,t,r){var n=t.replace(Gu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function ed(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"-"+ed(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(qu)){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 _y(e,t,r);if(t.indexOf("%")!==-1)return yy(e,t,r);if(t.indexOf("E")!==-1)return ed(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(Ku))return xy(i,c,f);if(t.match(/^#+0+$/))return f+Kr(c,t.length-t.indexOf("0"));if(i=t.match(Yu))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(Ju))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]?Wl(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 ky(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 td=/\[[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(td))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 by(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(td)){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="",k;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=hy(a[s].t.charCodeAt(0),a[s].v,f,v),a[s].t="t";break;case"n":case"?":for(k=s+1;a[k]!=null&&((o=a[k].t)==="?"||o==="D"||(o===" "||o==="t")&&a[k+1]!=null&&(a[k+1].t==="?"||a[k+1].t==="t"&&a[k+1].v==="/")||a[s].t==="("&&(o===" "||o==="n"||o===")")||o==="t"&&(a[k].v==="/"||a[k].v===" "&&a[k+1]!=null&&a[k+1].t=="?"));)a[s].v+=a[k].v,a[k]={v:"",t:";"},++k;w+=a[s].v,s=k-1;break;case"G":a[s].t="t",a[s].v=ha(t,r);break}var R="",T,C;if(w.length>0){w.charCodeAt(0)==40?(T=t<0&&w.charCodeAt(0)===45?-t:t,C=On("n",w,T)):(T=t<0&&n>1?-t:t,C=On("n",w,T),T<0&&a[0]&&a[0].t=="t"&&(C=C.substr(1),a[0].v="-"+a[0].v)),k=C.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 F=a.length;if(U===a.length&&C.indexOf("E")===-1){for(s=a.length-1;s>=0;--s)a[s]==null||"n?".indexOf(a[s].t)===-1||(k>=a[s].v.length-1?(k-=a[s].v.length,a[s].v=C.substr(k+1,a[s].v.length)):k<0?a[s].v="":(a[s].v=C.substr(0,k+1),k=-1),a[s].t="t",F=s);k>=0&&F<a.length&&(a[F].v=C.substr(0,k+1)+a[F].v)}else if(U!==a.length&&C.indexOf("E")===-1){for(k=C.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)k>=0&&(a[s].v.charAt(u)==="0"||a[s].v.charAt(u)==="#")&&(R=C.charAt(k--)+R);a[s].v=R,a[s].t="t",F=s}for(k>=0&&F<a.length&&(a[F].v=C.substr(0,k+1)+a[F].v),k=C.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)k<C.length&&(R+=C.charAt(k++));a[s].v=R,a[s].t="t",F=s}}}for(s=0;s<a.length;++s)a[s]!=null&&"n?".indexOf(a[s].t)>-1&&(T=n>1&&t<0&&s>0&&a[s-1].v==="-"?-t:t,a[s].v=On(a[s].t,a[s].v,T),a[s].t="t");var W="";for(s=0;s!==a.length;++s)a[s]!=null&&(W+=a[s].v);return W}var rd=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function nd(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 Ey(e,t){var r=ky(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(rd),o=r[1].match(rd);return nd(t,s)?[n,r[0]]:nd(t,o)?[n,r[1]]:[n,r[s!=null&&o!=null?2:1]]}return[n,i]}function Cr(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[Hu[e]]||Oe[Hu[e]]),n==null&&(n=sy[e]||"General");break}if(oo(n,0))return ha(t,r);t instanceof Date&&(t=zu(t,r.date1904));var a=Ey(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 by(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=iy()}var ad={format:Cr,load:hn,_table:Oe,load_table:ji,parse_date_code:Jn,is_date:ma,get_table:function(){return ad._table=Oe}},Cy={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"},id=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function Sy(e){var t=typeof e=="number"?Oe[e]:e;return t=t.replace(id,"(\\d+)"),new RegExp("^"+t+"$")}function Ty(e,t,r){var n=-1,a=-1,i=-1,s=-1,o=-1,c=-1;(t.match(id)||[]).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 Fy=function(){var e={};e.version="1.2.0";function t(){for(var C=0,U=new Array(256),F=0;F!=256;++F)C=F,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,U[F]=C;return typeof Int32Array<"u"?new Int32Array(U):U}var r=t();function n(C){var U=0,F=0,W=0,G=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(W=0;W!=256;++W)G[W]=C[W];for(W=0;W!=256;++W)for(F=C[W],U=256+W;U<4096;U+=256)F=G[U]=F>>>8^C[F&255];var B=[];for(W=1;W!=16;++W)B[W-1]=typeof Int32Array<"u"?G.subarray(W*256,W*256+256):G.slice(W*256,W*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 k(C,U){for(var F=U^-1,W=0,G=C.length;W<G;)F=F>>>8^r[(F^C.charCodeAt(W++))&255];return~F}function R(C,U){for(var F=U^-1,W=C.length-15,G=0;G<W;)F=w[C[G++]^F&255]^y[C[G++]^F>>8&255]^v[C[G++]^F>>16&255]^x[C[G++]^F>>>24]^p[C[G++]]^g[C[G++]]^m[C[G++]]^h[C[G++]]^d[C[G++]]^u[C[G++]]^f[C[G++]]^c[C[G++]]^o[C[G++]]^s[C[G++]]^i[C[G++]]^r[C[G++]];for(W+=15;G<W;)F=F>>>8^r[(F^C[G++])&255];return~F}function T(C,U){for(var F=U^-1,W=0,G=C.length,B=0,H=0;W<G;)B=C.charCodeAt(W++),B<128?F=F>>>8^r[(F^B)&255]:B<2048?(F=F>>>8^r[(F^(192|B>>6&31))&255],F=F>>>8^r[(F^(128|B&63))&255]):B>=55296&&B<57344?(B=(B&1023)+64,H=C.charCodeAt(W++)&1023,F=F>>>8^r[(F^(240|B>>8&7))&255],F=F>>>8^r[(F^(128|B>>2&63))&255],F=F>>>8^r[(F^(128|H>>6&15|(B&3)<<4))&255],F=F>>>8^r[(F^(128|H&63))&255]):(F=F>>>8^r[(F^(224|B>>12&15))&255],F=F>>>8^r[(F^(128|B>>6&63))&255],F=F>>>8^r[(F^(128|B&63))&255]);return~F}return e.table=r,e.bstr=k,e.buf=R,e.str=T,e}(),Ae=function(){var t={};t.version="1.2.1";function r(S,I){for(var O=S.split("/"),N=I.split("/"),P=0,L=0,Z=Math.min(O.length,N.length);P<Z;++P){if(L=O[P].length-N[P].length)return L;if(O[P]!=N[P])return O[P]<N[P]?-1:1}return O.length-N.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 O=I.getHours();O=O<<6|I.getMinutes(),O=O<<5|I.getSeconds()>>>1,S.write_shift(2,O);var N=I.getFullYear()-1980;N=N<<4|I.getMonth()+1,N=N<<5|I.getDate(),S.write_shift(2,N)}function s(S){var I=S.read_shift(2)&65535,O=S.read_shift(2)&65535,N=new Date,P=O&31;O>>>=5;var L=O&15;O>>>=4,N.setMilliseconds(0),N.setFullYear(O+1980),N.setMonth(L-1),N.setDate(P);var Z=I&31;I>>>=5;var le=I&63;return I>>>=6,N.setHours(I),N.setMinutes(le),N.setSeconds(Z<<1),N}function o(S){Gt(S,0);for(var I={},O=0;S.l<=S.length-4;){var N=S.read_shift(2),P=S.read_shift(2),L=S.l+P,Z={};switch(N){case 21589:O=S.read_shift(1),O&1&&(Z.mtime=S.read_shift(4)),P>5&&(O&2&&(Z.atime=S.read_shift(4)),O&4&&(Z.ctime=S.read_shift(4))),Z.mtime&&(Z.mt=new Date(Z.mtime*1e3));break}S.l=L,I[N]=Z}return I}var c;function f(){return c||(c={})}function u(S,I){if(S[0]==80&&S[1]==75)return op(S,I);if((S[0]|32)==109&&(S[1]|32)==105)return hD(S,I);if(S.length<512)throw new Error("CFB file size "+S.length+" < 512");var O=3,N=512,P=0,L=0,Z=0,le=0,J=0,Q=[],re=S.slice(0,512);Gt(re,0);var me=d(re);switch(O=me[0],O){case 3:N=512;break;case 4:N=4096;break;case 0:if(me[1]==0)return op(S,I);default:throw new Error("Major Version: Expected 3 or 4 saw "+O)}N!==512&&(re=S.slice(0,N),Gt(re,28));var ye=S.slice(0,N);h(re,O);var Ee=re.read_shift(4,"i");if(O===3&&Ee!==0)throw new Error("# Directory Sectors: Expected 0 saw "+Ee);re.l+=4,Z=re.read_shift(4,"i"),re.l+=4,re.chk("00100000","Mini Stream Cutoff Size: "),le=re.read_shift(4,"i"),P=re.read_shift(4,"i"),J=re.read_shift(4,"i"),L=re.read_shift(4,"i");for(var ge=-1,be=0;be<109&&(ge=re.read_shift(4,"i"),!(ge<0));++be)Q[be]=ge;var Ue=m(S,N);x(J,L,Ue,N,Q);var gt=y(Ue,Z,Q,N);gt[Z].name="!Directory",P>0&&le!==H&&(gt[le].name="!MiniFAT"),gt[Q[0]].name="!FAT",gt.fat_addrs=Q,gt.ssz=N;var xt={},ir=[],Ss=[],Ts=[];w(Z,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(K,"Header Signature: "),S.l+=16;var I=S.read_shift(2,"u");return[S.read_shift(2,"u"),I]}function h(S,I){var O=9;switch(S.l+=2,O=S.read_shift(2)){case 9:if(I!=3)throw new Error("Sector Shift: Expected 9 saw "+O);break;case 12:if(I!=4)throw new Error("Sector Shift: Expected 12 saw "+O);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+O)}S.chk("0600","Mini Sector Shift: "),S.chk("000000000000","Reserved: ")}function m(S,I){for(var O=Math.ceil(S.length/I)-1,N=[],P=1;P<O;++P)N[P-1]=S.slice(P*I,(P+1)*I);return N[O-1]=S.slice(O*I),N}function g(S,I,O){for(var N=0,P=0,L=0,Z=0,le=0,J=O.length,Q=[],re=[];N<J;++N)Q[N]=re[N]=N,I[N]=O[N];for(;le<re.length;++le)N=re[le],P=S[N].L,L=S[N].R,Z=S[N].C,Q[N]===N&&(P!==-1&&Q[P]!==P&&(Q[N]=Q[P]),L!==-1&&Q[L]!==L&&(Q[N]=Q[L])),Z!==-1&&(Q[Z]=N),P!==-1&&N!=Q[N]&&(Q[P]=Q[N],re.lastIndexOf(P)<le&&re.push(P)),L!==-1&&N!=Q[N]&&(Q[L]=Q[N],re.lastIndexOf(L)<le&&re.push(L));for(N=1;N<J;++N)Q[N]===N&&(L!==-1&&Q[L]!==L?Q[N]=Q[L]:P!==-1&&Q[P]!==P&&(Q[N]=Q[P]));for(N=1;N<J;++N)if(S[N].type!==0){if(le=N,le!=Q[le])do le=Q[le],I[N]=I[le]+"/"+I[N];while(le!==0&&Q[le]!==-1&&le!=Q[le]);Q[N]=-1}for(I[0]+="/",N=1;N<J;++N)S[N].type!==2&&(I[N]+="/")}function p(S,I,O){for(var N=S.start,P=S.size,L=[],Z=N;O&&P>0&&Z>=0;)L.push(I.slice(Z*B,Z*B+B)),P-=B,Z=xa(O,Z*4);return L.length===0?se(0):Lt(L).slice(0,S.size)}function x(S,I,O,N,P){var L=H;if(S===H){if(I!==0)throw new Error("DIFAT chain shorter than expected")}else if(S!==-1){var Z=O[S],le=(N>>>2)-1;if(!Z)return;for(var J=0;J<le&&(L=xa(Z,J*4))!==H;++J)P.push(L);x(xa(Z,N-4),I-1,O,N,P)}}function v(S,I,O,N,P){var L=[],Z=[];P||(P=[]);var le=N-1,J=0,Q=0;for(J=I;J>=0;){P[J]=!0,L[L.length]=J,Z.push(S[J]);var re=O[Math.floor(J*4/N)];if(Q=J*4&le,N<4+Q)throw new Error("FAT boundary crossed: "+J+" 4 "+N);if(!S[re])break;J=xa(S[re],Q)}return{nodes:L,data:Td([Z])}}function y(S,I,O,N){var P=S.length,L=[],Z=[],le=[],J=[],Q=N-1,re=0,me=0,ye=0,Ee=0;for(re=0;re<P;++re)if(le=[],ye=re+I,ye>=P&&(ye-=P),!Z[ye]){J=[];var ge=[];for(me=ye;me>=0;){ge[me]=!0,Z[me]=!0,le[le.length]=me,J.push(S[me]);var be=O[Math.floor(me*4/N)];if(Ee=me*4&Q,N<4+Ee)throw new Error("FAT boundary crossed: "+me+" 4 "+N);if(!S[be]||(me=xa(S[be],Ee),ge[me]))break}L[ye]={nodes:le,data:Td([J])}}return L}function w(S,I,O,N,P,L,Z,le){for(var J=0,Q=N.length?2:0,re=I[S].data,me=0,ye=0,Ee;me<re.length;me+=128){var ge=re.slice(me,me+128);Gt(ge,64),ye=ge.read_shift(2),Ee=Ql(ge,0,ye-Q),N.push(Ee);var be={name:Ee,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=k(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=k(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=H,be.name=""),be.type===5?(J=be.start,P>0&&J!==H&&(I[J].name="!StreamData")):be.size>=4096?(be.storage="fat",I[be.start]===void 0&&(I[be.start]=v(O,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:J!==H&&be.start!==H&&I[J]&&(be.content=p(be,I[J].data,(I[le]||{}).data))),be.content&&Gt(be.content,0),L[Ee]=be,Z.push(be)}}function k(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 T(S,I){var O=I&&I.type;switch(O||je&&Buffer.isBuffer(S)&&(O="buffer"),O||"base64"){case"file":return R(S,I);case"base64":return u(Er(br(S)),I);case"binary":return u(Er(S),I)}return u(S,I)}function C(S,I){var O=I||{},N=O.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]=N+"/",S.FileIndex[0]={name:N,type:5}),O.CLSID&&(S.FileIndex[0].clsid=O.CLSID),U(S)}function U(S){var I="Sh33tJ5";if(!Ae.find(S,"/"+I)){var O=se(4);O[0]=55,O[1]=O[3]=50,O[2]=54,S.FileIndex.push({name:I,type:2,content:O,size:4,L:69,R:69,C:69}),S.FullPaths.push(S.FullPaths[0]+I),F(S)}}function F(S,I){C(S);for(var O=!1,N=!1,P=S.FullPaths.length-1;P>=0;--P){var L=S.FileIndex[P];switch(L.type){case 0:N?O=!0:(S.FileIndex.pop(),S.FullPaths.pop());break;case 1:case 2:case 5:N=!0,isNaN(L.R*L.L*L.C)&&(O=!0),L.R>-1&&L.L>-1&&L.R==L.L&&(O=!0);break;default:O=!0;break}}if(!(!O&&!I)){var Z=new Date(1987,1,19),le=0,J=Object.create?Object.create(null):{},Q=[];for(P=0;P<S.FullPaths.length;++P)J[S.FullPaths[P]]=!0,S.FileIndex[P].type!==0&&Q.push([S.FullPaths[P],S.FileIndex[P]]);for(P=0;P<Q.length;++P){var re=n(Q[P][0]);N=J[re],N||(Q.push([re,{name:a(re).replace("/",""),type:1,clsid:q,ct:Z,mt:Z,content:null}]),J[re]=!0)}for(Q.sort(function(Ee,ge){return r(Ee[0],ge[0])}),S.FullPaths=[],S.FileIndex=[],P=0;P<Q.length;++P)S.FullPaths[P]=Q[P][0],S.FileIndex[P]=Q[P][1];for(P=0;P<Q.length;++P){var me=S.FileIndex[P],ye=S.FullPaths[P];if(me.name=a(ye).replace("/",""),me.L=me.R=me.C=-(me.color=1),me.size=me.content?me.content.length:0,me.start=0,me.clsid=me.clsid||q,P===0)me.C=Q.length>1?1:-1,me.size=0,me.type=5;else if(ye.slice(-1)=="/"){for(le=P+1;le<Q.length&&n(S.FullPaths[le])!=ye;++le);for(me.C=le>=Q.length?-1:le,le=P+1;le<Q.length&&n(S.FullPaths[le])!=n(ye);++le);me.R=le>=Q.length?-1:le,me.type=1}else n(S.FullPaths[P+1]||"")==n(ye)&&(me.R=P+1),me.type=2}}}function W(S,I){var O=I||{};if(O.fileType=="mad")return mD(S,O);switch(F(S),O.fileType){case"zip":return oD(S,O)}var N=function(Ee){for(var ge=0,be=0,Ue=0;Ue<Ee.FileIndex.length;++Ue){var gt=Ee.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=Ee.FullPaths.length+3>>2,Ss=ge+7>>3,Ts=ge+127>>7,Fs=Ss+be+ir+Ts,Ma=Fs+127>>7,tf=Ma<=109?0:Math.ceil((Ma-109)/127);Fs+Ma+tf+127>>7>Ma;)tf=++Ma<=109?0:Math.ceil((Ma-109)/127);var Vn=[1,tf,Ma,Ts,ir,be,ge,0];return Ee.FileIndex[0].size=ge<<6,Vn[7]=(Ee.FileIndex[0].start=Vn[0]+Vn[1]+Vn[2]+Vn[3]+Vn[4]+Vn[5])+(Vn[6]+7>>3),Vn}(S),P=se(N[7]<<9),L=0,Z=0;{for(L=0;L<8;++L)P.write_shift(1,j[L]);for(L=0;L<8;++L)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),L=0;L<3;++L)P.write_shift(2,0);for(P.write_shift(4,0),P.write_shift(4,N[2]),P.write_shift(4,N[0]+N[1]+N[2]+N[3]-1),P.write_shift(4,0),P.write_shift(4,4096),P.write_shift(4,N[3]?N[0]+N[1]+N[2]-1:H),P.write_shift(4,N[3]),P.write_shift(-4,N[1]?N[0]-1:H),P.write_shift(4,N[1]),L=0;L<109;++L)P.write_shift(-4,L<N[2]?N[1]+L:-1)}if(N[1])for(Z=0;Z<N[1];++Z){for(;L<236+Z*127;++L)P.write_shift(-4,L<N[2]?N[1]+L:-1);P.write_shift(-4,Z===N[1]-1?H:Z+1)}var le=function(Ee){for(Z+=Ee;L<Z-1;++L)P.write_shift(-4,L+1);Ee&&(++L,P.write_shift(-4,H))};for(Z=L=0,Z+=N[1];L<Z;++L)P.write_shift(-4,ae.DIFSECT);for(Z+=N[2];L<Z;++L)P.write_shift(-4,ae.FATSECT);le(N[3]),le(N[4]);for(var J=0,Q=0,re=S.FileIndex[0];J<S.FileIndex.length;++J)re=S.FileIndex[J],re.content&&(Q=re.content.length,!(Q<4096)&&(re.start=Z,le(Q+511>>9)));for(le(N[6]+7>>3);P.l&511;)P.write_shift(-4,ae.ENDOFCHAIN);for(Z=L=0,J=0;J<S.FileIndex.length;++J)re=S.FileIndex[J],re.content&&(Q=re.content.length,!(!Q||Q>=4096)&&(re.start=Z,le(Q+63>>6)));for(;P.l&511;)P.write_shift(-4,ae.ENDOFCHAIN);for(L=0;L<N[4]<<2;++L){var me=S.FullPaths[L];if(!me||me.length===0){for(J=0;J<17;++J)P.write_shift(4,0);for(J=0;J<3;++J)P.write_shift(4,-1);for(J=0;J<12;++J)P.write_shift(4,0);continue}re=S.FileIndex[L],L===0&&(re.start=re.size?re.start-1:H);var ye=L===0&&O.root||re.name;if(Q=2*(ye.length+1),P.write_shift(64,ye,"utf16le"),P.write_shift(2,Q),P.write_shift(1,re.type),P.write_shift(1,re.color),P.write_shift(-4,re.L),P.write_shift(-4,re.R),P.write_shift(-4,re.C),re.clsid)P.write_shift(16,re.clsid,"hex");else for(J=0;J<4;++J)P.write_shift(4,0);P.write_shift(4,re.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,re.start),P.write_shift(4,re.size),P.write_shift(4,0)}for(L=1;L<S.FileIndex.length;++L)if(re=S.FileIndex[L],re.size>=4096)if(P.l=re.start+1<<9,je&&Buffer.isBuffer(re.content))re.content.copy(P,P.l,0,re.size),P.l+=re.size+511&-512;else{for(J=0;J<re.size;++J)P.write_shift(1,re.content[J]);for(;J&511;++J)P.write_shift(1,0)}for(L=1;L<S.FileIndex.length;++L)if(re=S.FileIndex[L],re.size>0&&re.size<4096)if(je&&Buffer.isBuffer(re.content))re.content.copy(P,P.l,0,re.size),P.l+=re.size+63&-64;else{for(J=0;J<re.size;++J)P.write_shift(1,re.content[J]);for(;J&63;++J)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 O=S.FullPaths.map(function(J){return J.toUpperCase()}),N=O.map(function(J){var Q=J.split("/");return Q[Q.length-(J.slice(-1)=="/"?2:1)]}),P=!1;I.charCodeAt(0)===47?(P=!0,I=O[0].slice(0,-1)+I):P=I.indexOf("/")!==-1;var L=I.toUpperCase(),Z=P===!0?O.indexOf(L):N.indexOf(L);if(Z!==-1)return S.FileIndex[Z];var le=!L.match(Wi);for(L=L.replace(or,""),le&&(L=L.replace(Wi,"!")),Z=0;Z<O.length;++Z)if((le?O[Z].replace(Wi,"!"):O[Z]).replace(or,"")==L||(le?N[Z].replace(Wi,"!"):N[Z]).replace(or,"")==L)return S.FileIndex[Z];return null}var B=64,H=-2,K="d0cf11e0a1b11ae1",j=[208,207,17,224,161,177,26,225],q="00000000000000000000000000000000",ae={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:H,FREESECT:-1,HEADER_SIGNATURE:K,HEADER_MINOR_VERSION:"3e00",MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:q,EntryTypes:["unknown","storage","stream","lockbytes","property","root"]};function pe(S,I,O){f();var N=W(S,O);c.writeFileSync(I,N)}function Y(S){for(var I=new Array(S.length),O=0;O<S.length;++O)I[O]=String.fromCharCode(S[O]);return I.join("")}function ce(S,I){var O=W(S,I);switch(I&&I.type||"buffer"){case"file":return f(),c.writeFileSync(I.filename,O),O;case"binary":return typeof O=="string"?O:Y(O);case"base64":return $i(typeof O=="string"?O:Y(O));case"buffer":if(je)return Buffer.isBuffer(O)?O:Rn(O);case"array":return typeof O=="string"?Er(O):O}return O}var D;function _(S){try{var I=S.InflateRaw,O=new I;if(O._processChunk(new Uint8Array([3,0]),O._finishFlushFlag),O.bytesRead)D=S;else throw new Error("zlib does not expose bytesRead")}catch(N){console.error("cannot use native zlib: "+(N.message||N))}}function b(S,I){if(!D)return ip(S,I);var O=D.InflateRaw,N=new O,P=N._processChunk(S.slice(S.l),N._finishFlushFlag);return S.l+=N.bytesRead,P}function E(S){return D?D.deflateRawSync(S):De(S)}var A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],X=[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],te=[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 ee(S){var I=(S<<1|S<<11)&139536|(S<<5|S<<15)&558144;return(I>>16|I>>8|I)&255}for(var ne=typeof Uint8Array<"u",ie=ne?new Uint8Array(256):[],Se=0;Se<256;++Se)ie[Se]=ee(Se);function M(S,I){var O=ie[S&255];return I<=8?O>>>8-I:(O=O<<8|ie[S>>8&255],I<=16?O>>>16-I:(O=O<<8|ie[S>>16&255],O>>>24-I))}function de(S,I){var O=I&7,N=I>>>3;return(S[N]|(O<=6?0:S[N+1]<<8))>>>O&3}function _e(S,I){var O=I&7,N=I>>>3;return(S[N]|(O<=5?0:S[N+1]<<8))>>>O&7}function Fe(S,I){var O=I&7,N=I>>>3;return(S[N]|(O<=4?0:S[N+1]<<8))>>>O&15}function ke(S,I){var O=I&7,N=I>>>3;return(S[N]|(O<=3?0:S[N+1]<<8))>>>O&31}function he(S,I){var O=I&7,N=I>>>3;return(S[N]|(O<=1?0:S[N+1]<<8))>>>O&127}function Qe(S,I,O){var N=I&7,P=I>>>3,L=(1<<O)-1,Z=S[P]>>>N;return O<8-N||(Z|=S[P+1]<<8-N,O<16-N)||(Z|=S[P+2]<<16-N,O<24-N)||(Z|=S[P+3]<<24-N),Z&L}function vr(S,I,O){var N=I&7,P=I>>>3;return N<=5?S[P]|=(O&7)<<N:(S[P]|=O<<N&255,S[P+1]=(O&7)>>8-N),I+3}function Hr(S,I,O){var N=I&7,P=I>>>3;return O=(O&1)<<N,S[P]|=O,I+1}function jr(S,I,O){var N=I&7,P=I>>>3;return O<<=N,S[P]|=O&255,O>>>=8,S[P+1]=O,I+8}function gi(S,I,O){var N=I&7,P=I>>>3;return O<<=N,S[P]|=O&255,O>>>=8,S[P+1]=O&255,S[P+2]=O>>>8,I+16}function kn(S,I){var O=S.length,N=2*O>I?2*O:I+5,P=0;if(O>=I)return S;if(je){var L=Uu(N);if(S.copy)S.copy(L);else for(;P<S.length;++P)L[P]=S[P];return L}else if(ne){var Z=new Uint8Array(N);if(Z.set)Z.set(S);else for(;P<O;++P)Z[P]=S[P];return Z}return S.length=N,S}function dr(S){for(var I=new Array(S),O=0;O<S;++O)I[O]=0;return I}function on(S,I,O){var N=1,P=0,L=0,Z=0,le=0,J=S.length,Q=ne?new Uint16Array(32):dr(32);for(L=0;L<32;++L)Q[L]=0;for(L=J;L<O;++L)S[L]=0;J=S.length;var re=ne?new Uint16Array(J):dr(J);for(L=0;L<J;++L)Q[P=S[L]]++,N<P&&(N=P),re[L]=0;for(Q[0]=0,L=1;L<=N;++L)Q[L+16]=le=le+Q[L-1]<<1;for(L=0;L<J;++L)le=S[L],le!=0&&(re[L]=Q[le+16]++);var me=0;for(L=0;L<J;++L)if(me=S[L],me!=0)for(le=M(re[L],N)>>N-me,Z=(1<<N+4-me)-1;Z>=0;--Z)I[le|Z<<me]=me&15|L<<4;return N}var bn=ne?new Uint16Array(512):dr(512),Ia=ne?new Uint16Array(32):dr(32);if(!ne){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 O=[];for(I=0;I<=143;I++)O.push(8);for(;I<=255;I++)O.push(9);for(;I<=279;I++)O.push(7);for(;I<=287;I++)O.push(8);on(O,bn,288)})();var Ht=function(){for(var I=ne?new Uint8Array(32768):[],O=0,N=0;O<te.length-1;++O)for(;N<te[O+1];++N)I[N]=O;for(;N<32768;++N)I[N]=29;var P=ne?new Uint8Array(259):[];for(O=0,N=0;O<X.length-1;++O)for(;N<X[O+1];++N)P[N]=O;function L(le,J){for(var Q=0;Q<le.length;){var re=Math.min(65535,le.length-Q),me=Q+re==le.length;for(J.write_shift(1,+me),J.write_shift(2,re),J.write_shift(2,~re&65535);re-- >0;)J[J.l++]=le[Q++]}return J.l}function Z(le,J){for(var Q=0,re=0,me=ne?new Uint16Array(32768):[];re<le.length;){var ye=Math.min(65535,le.length-re);if(ye<10){for(Q=vr(J,Q,+(re+ye==le.length)),Q&7&&(Q+=8-(Q&7)),J.l=Q/8|0,J.write_shift(2,ye),J.write_shift(2,~ye&65535);ye-- >0;)J[J.l++]=le[re++];Q=J.l*8;continue}Q=vr(J,Q,+(re+ye==le.length)+2);for(var Ee=0;ye-- >0;){var ge=le[re];Ee=(Ee<<5^ge)&32767;var be=-1,Ue=0;if((be=me[Ee])&&(be|=re&-32768,be>re&&(be-=32768),be<re))for(;le[be+Ue]==le[re+Ue]&&Ue<250;)++Ue;if(Ue>2){ge=P[Ue],ge<=22?Q=jr(J,Q,ie[ge+1]>>1)-1:(jr(J,Q,3),Q+=5,jr(J,Q,ie[ge-23]>>5),Q+=3);var gt=ge<8?0:ge-4>>2;gt>0&&(gi(J,Q,Ue-X[ge]),Q+=gt),ge=I[re-be],Q=jr(J,Q,ie[ge]>>3),Q-=3;var xt=ge<4?0:ge-2>>1;xt>0&&(gi(J,Q,re-be-te[ge]),Q+=xt);for(var ir=0;ir<Ue;++ir)me[Ee]=re&32767,Ee=(Ee<<5^le[re])&32767,++re;ye-=Ue-1}else ge<=143?ge=ge+48:Q=Hr(J,Q,1),Q=jr(J,Q,ie[ge]),me[Ee]=re&32767,++re}Q=jr(J,Q,0)-1}return J.l=(Q+7)/8|0,J.l}return function(J,Q){return J.length<8?L(J,Q):Z(J,Q)}}();function De(S){var I=se(50+Math.floor(S.length*1.1)),O=Ht(S,I);return I.slice(0,O)}var st=ne?new Uint16Array(32768):dr(32768),hr=ne?new Uint16Array(32768):dr(32768),Pt=ne?new Uint16Array(128):dr(128),Pa=1,ap=1;function aD(S,I){var O=ke(S,I)+257;I+=5;var N=ke(S,I)+1;I+=5;var P=Fe(S,I)+4;I+=4;for(var L=0,Z=ne?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],J=1,Q=ne?new Uint8Array(8):dr(8),re=ne?new Uint8Array(8):dr(8),me=Z.length,ye=0;ye<P;++ye)Z[A[ye]]=L=_e(S,I),J<L&&(J=L),Q[L]++,I+=3;var Ee=0;for(Q[0]=0,ye=1;ye<=J;++ye)re[ye]=Ee=Ee+Q[ye-1]<<1;for(ye=0;ye<me;++ye)(Ee=Z[ye])!=0&&(le[ye]=re[Ee]++);var ge=0;for(ye=0;ye<me;++ye)if(ge=Z[ye],ge!=0){Ee=ie[le[ye]]>>8-ge;for(var be=(1<<7-ge)-1;be>=0;--be)Pt[Ee|be<<ge]=ge&7|ye<<3}var Ue=[];for(J=1;Ue.length<O+N;)switch(Ee=Pt[he(S,I)],I+=Ee&7,Ee>>>=3){case 16:for(L=3+de(S,I),I+=2,Ee=Ue[Ue.length-1];L-- >0;)Ue.push(Ee);break;case 17:for(L=3+_e(S,I),I+=3;L-- >0;)Ue.push(0);break;case 18:for(L=11+he(S,I),I+=7;L-- >0;)Ue.push(0);break;default:Ue.push(Ee),J<Ee&&(J=Ee);break}var gt=Ue.slice(0,O),xt=Ue.slice(O);for(ye=O;ye<286;++ye)gt[ye]=0;for(ye=N;ye<30;++ye)xt[ye]=0;return Pa=on(gt,st,286),ap=on(xt,hr,30),I}function iD(S,I){if(S[0]==3&&!(S[1]&3))return[Yn(I),2];for(var O=0,N=0,P=Uu(I||1<<18),L=0,Z=P.length>>>0,le=0,J=0;!(N&1);){if(N=_e(S,O),O+=3,N>>>1)N>>1==1?(le=9,J=5):(O=aD(S,O),le=Pa,J=ap);else{O&7&&(O+=8-(O&7));var Q=S[O>>>3]|S[(O>>>3)+1]<<8;if(O+=32,Q>0)for(!I&&Z<L+Q&&(P=kn(P,L+Q),Z=P.length);Q-- >0;)P[L++]=S[O>>>3],O+=8;continue}for(;;){!I&&Z<L+32767&&(P=kn(P,L+32767),Z=P.length);var re=Qe(S,O,le),me=N>>>1==1?bn[re]:st[re];if(O+=me&15,me>>>=4,!(me>>>8&255))P[L++]=me;else{if(me==256)break;me-=257;var ye=me<8?0:me-4>>2;ye>5&&(ye=0);var Ee=L+X[me];ye>0&&(Ee+=Qe(S,O,ye),O+=ye),re=Qe(S,O,J),me=N>>>1==1?Ia[re]:hr[re],O+=me&15,me>>>=4;var ge=me<4?0:me-2>>1,be=te[me];for(ge>0&&(be+=Qe(S,O,ge),O+=ge),!I&&Z<Ee&&(P=kn(P,Ee+100),Z=P.length);L<Ee;)P[L]=P[L-be],++L}}}return I?[P,O+7>>>3]:[P.slice(0,L),O+7>>>3]}function ip(S,I){var O=S.slice(S.l||0),N=iD(O,I);return S.l+=N[1],N[0]}function sp(S,I){if(S)typeof console<"u"&&console.error(I);else throw new Error(I)}function op(S,I){var O=S;Gt(O,0);var N=[],P=[],L={FileIndex:N,FullPaths:P};C(L,{root:I.root});for(var Z=O.length-4;(O[Z]!=80||O[Z+1]!=75||O[Z+2]!=5||O[Z+3]!=6)&&Z>=0;)--Z;O.l=Z+4,O.l+=4;var le=O.read_shift(2);O.l+=6;var J=O.read_shift(4);for(O.l=J,Z=0;Z<le;++Z){O.l+=20;var Q=O.read_shift(4),re=O.read_shift(4),me=O.read_shift(2),ye=O.read_shift(2),Ee=O.read_shift(2);O.l+=8;var ge=O.read_shift(4),be=o(O.slice(O.l+me,O.l+me+ye));O.l+=me+ye+Ee;var Ue=O.l;O.l=ge+4,sD(O,Q,re,L,be),O.l=Ue}return L}function sD(S,I,O,N,P){S.l+=2;var L=S.read_shift(2),Z=S.read_shift(2),le=s(S);if(L&8257)throw new Error("Unsupported ZIP encryption");for(var J=S.read_shift(4),Q=S.read_shift(4),re=S.read_shift(4),me=S.read_shift(2),ye=S.read_shift(2),Ee="",ge=0;ge<me;++ge)Ee+=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+Q);switch(Z){case 8:Ue=b(S,re);break;case 0:break;default:throw new Error("Unsupported ZIP Compression method "+Z)}var gt=!1;L&8&&(J=S.read_shift(4),J==134695760&&(J=S.read_shift(4),gt=!0),Q=S.read_shift(4),re=S.read_shift(4)),Q!=I&&sp(gt,"Bad compressed size: "+I+" != "+Q),re!=O&&sp(gt,"Bad uncompressed size: "+O+" != "+re),ef(N,Ee,Ue,{unsafe:!0,mt:le})}function oD(S,I){var O=I||{},N=[],P=[],L=se(1),Z=O.compression?8:0,le=0,J=0,Q=0,re=0,me=0,ye=S.FullPaths[0],Ee=ye,ge=S.FileIndex[0],be=[],Ue=0;for(J=1;J<S.FullPaths.length;++J)if(Ee=S.FullPaths[J].slice(ye.length),ge=S.FileIndex[J],!(!ge.size||!ge.content||Ee=="Sh33tJ5")){var gt=re,xt=se(Ee.length);for(Q=0;Q<Ee.length;++Q)xt.write_shift(1,Ee.charCodeAt(Q)&127);xt=xt.slice(0,xt.l),be[me]=Fy.buf(ge.content,0);var ir=ge.content;Z==8&&(ir=E(ir)),L=se(30),L.write_shift(4,67324752),L.write_shift(2,20),L.write_shift(2,le),L.write_shift(2,Z),ge.mt?i(L,ge.mt):L.write_shift(4,0),L.write_shift(-4,be[me]),L.write_shift(4,ir.length),L.write_shift(4,ge.content.length),L.write_shift(2,xt.length),L.write_shift(2,0),re+=L.length,N.push(L),re+=xt.length,N.push(xt),re+=ir.length,N.push(ir),L=se(46),L.write_shift(4,33639248),L.write_shift(2,0),L.write_shift(2,20),L.write_shift(2,le),L.write_shift(2,Z),L.write_shift(4,0),L.write_shift(-4,be[me]),L.write_shift(4,ir.length),L.write_shift(4,ge.content.length),L.write_shift(2,xt.length),L.write_shift(2,0),L.write_shift(2,0),L.write_shift(2,0),L.write_shift(2,0),L.write_shift(4,0),L.write_shift(4,gt),Ue+=L.l,P.push(L),Ue+=xt.length,P.push(xt),++me}return L=se(22),L.write_shift(4,101010256),L.write_shift(2,0),L.write_shift(2,0),L.write_shift(2,me),L.write_shift(2,me),L.write_shift(4,Ue),L.write_shift(4,re),L.write_shift(2,0),Lt([Lt(N),Lt(P),L])}var Mo={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 lD(S,I){if(S.ctype)return S.ctype;var O=S.name||"",N=O.match(/\.([^\.]+)$/);return N&&Mo[N[1]]||I&&(N=(O=I).match(/[\.\\]([^\.\\])+$/),N&&Mo[N[1]])?Mo[N[1]]:"application/octet-stream"}function cD(S){for(var I=$i(S),O=[],N=0;N<I.length;N+=76)O.push(I.slice(N,N+76));return O.join(`\r
|
||
`)+`\r
|
||
`}function fD(S){var I=S.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g,function(Q){var re=Q.charCodeAt(0).toString(16).toUpperCase();return"="+(re.length==1?"0"+re:re)});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 O=[],N=I.split(`\r
|
||
`),P=0;P<N.length;++P){var L=N[P];if(L.length==0){O.push("");continue}for(var Z=0;Z<L.length;){var le=76,J=L.slice(Z,Z+le);J.charAt(le-1)=="="?le--:J.charAt(le-2)=="="?le-=2:J.charAt(le-3)=="="&&(le-=3),J=L.slice(Z,Z+le),Z+=le,Z<L.length&&(J+="="),O.push(J)}}return O.join(`\r
|
||
`)}function uD(S){for(var I=[],O=0;O<S.length;++O){for(var N=S[O];O<=S.length&&N.charAt(N.length-1)=="=";)N=N.slice(0,N.length-1)+S[++O];I.push(N)}for(var P=0;P<I.length;++P)I[P]=I[P].replace(/[=][0-9A-Fa-f]{2}/g,function(L){return String.fromCharCode(parseInt(L.slice(1),16))});return Er(I.join(`\r
|
||
`))}function dD(S,I,O){for(var N="",P="",L="",Z,le=0;le<10;++le){var J=I[le];if(!J||J.match(/^\s*$/))break;var Q=J.match(/^(.*?):\s*([^\s].*)$/);if(Q)switch(Q[1].toLowerCase()){case"content-location":N=Q[2].trim();break;case"content-type":L=Q[2].trim();break;case"content-transfer-encoding":P=Q[2].trim();break}}switch(++le,P.toLowerCase()){case"base64":Z=Er(br(I.slice(le).join("")));break;case"quoted-printable":Z=uD(I.slice(le));break;default:throw new Error("Unsupported Content-Transfer-Encoding "+P)}var re=ef(S,N.slice(O.length),Z,{unsafe:!0});L&&(re.ctype=L)}function hD(S,I){if(Y(S.slice(0,13)).toLowerCase()!="mime-version:")throw new Error("Unsupported MAD header");var O=I&&I.root||"",N=(je&&Buffer.isBuffer(S)?S.toString("binary"):Y(S)).split(`\r
|
||
`),P=0,L="";for(P=0;P<N.length;++P)if(L=N[P],!!/^Content-Location:/i.test(L)&&(L=L.slice(L.indexOf("file")),O||(O=L.slice(0,L.lastIndexOf("/")+1)),L.slice(0,O.length)!=O))for(;O.length>0&&(O=O.slice(0,O.length-1),O=O.slice(0,O.lastIndexOf("/")+1),L.slice(0,O.length)!=O););var Z=(N[1]||"").match(/boundary="(.*?)"/);if(!Z)throw new Error("MAD cannot find boundary");var le="--"+(Z[1]||""),J=[],Q=[],re={FileIndex:J,FullPaths:Q};C(re);var me,ye=0;for(P=0;P<N.length;++P){var Ee=N[P];Ee!==le&&Ee!==le+"--"||(ye++&&dD(re,N.slice(me,P),O),me=P)}return re}function mD(S,I){var O=I||{},N=O.boundary||"SheetJS";N="------="+N;for(var P=["MIME-Version: 1.0",'Content-Type: multipart/related; boundary="'+N.slice(2)+'"',"","",""],L=S.FullPaths[0],Z=L,le=S.FileIndex[0],J=1;J<S.FullPaths.length;++J)if(Z=S.FullPaths[J].slice(L.length),le=S.FileIndex[J],!(!le.size||!le.content||Z=="Sh33tJ5")){Z=Z.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 Q=le.content,re=je&&Buffer.isBuffer(Q)?Q.toString("binary"):Y(Q),me=0,ye=Math.min(1024,re.length),Ee=0,ge=0;ge<=ye;++ge)(Ee=re.charCodeAt(ge))>=32&&Ee<128&&++me;var be=me>=ye*4/5;P.push(N),P.push("Content-Location: "+(O.root||"file:///C:/SheetJS/")+Z),P.push("Content-Transfer-Encoding: "+(be?"quoted-printable":"base64")),P.push("Content-Type: "+lD(le,Z)),P.push(""),P.push(be?fD(re):cD(re))}return P.push(N+`--\r
|
||
`),P.join(`\r
|
||
`)}function pD(S){var I={};return C(I,S),I}function ef(S,I,O,N){var P=N&&N.unsafe;P||C(S);var L=!P&&Ae.find(S,I);if(!L){var Z=S.FullPaths[0];I.slice(0,Z.length)==Z?Z=I:(Z.slice(-1)!="/"&&(Z+="/"),Z=(Z+I).replace("//","/")),L={name:a(I),type:2},S.FileIndex.push(L),S.FullPaths.push(Z),P||Ae.utils.cfb_gc(S)}return L.content=O,L.size=O?O.length:0,N&&(N.CLSID&&(L.clsid=N.CLSID),N.mt&&(L.mt=N.mt),N.ct&&(L.ct=N.ct)),L}function gD(S,I){C(S);var O=Ae.find(S,I);if(O){for(var N=0;N<S.FileIndex.length;++N)if(S.FileIndex[N]==O)return S.FileIndex.splice(N,1),S.FullPaths.splice(N,1),!0}return!1}function xD(S,I,O){C(S);var N=Ae.find(S,I);if(N){for(var P=0;P<S.FileIndex.length;++P)if(S.FileIndex[P]==N)return S.FileIndex[P].name=a(O),S.FullPaths[P]=O,!0}return!1}function vD(S){F(S,!0)}return t.find=G,t.read=T,t.parse=u,t.write=ce,t.writeFile=pe,t.utils={cfb_new:pD,cfb_add:ef,cfb_del:gD,cfb_mov:xD,cfb_gc:vD,ReadShift:Ji,CheckField:Hd,prep_blob:Gt,bconcat:Lt,use_zlib:_,_deflateRaw:De,_inflateRaw:ip,consts:ae},t}();function Ay(e){return typeof e=="string"?io(e):Array.isArray(e)?ty(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([Ay(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 Dy(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 sd(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 Ry(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 Bt(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 od=new Date,Oy=uo.getTime()+(od.getTimezoneOffset()-uo.getTimezoneOffset())*6e4,ld=od.getTimezoneOffset();function ho(e){var t=new Date;return t.setTime(e*24*60*60*1e3+Oy),t.getTimezoneOffset()!==ld&&t.setTime(t.getTime()+(t.getTimezoneOffset()-ld)*6e4),t}function By(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 cd=new Date("2017-02-19T19:06:09.000Z"),fd=isNaN(cd.getFullYear())?new Date("2/19/17"):cd,Ny=fd.getFullYear()==2017;function lt(e,t){var r=new Date(e);if(Ny)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(fd.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(Lu(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 Iy=["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&&Iy.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 Py=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 ud(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 dd(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 My(e){return e&&e.name.slice(-4)===".bin"?dd(e):ud(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 zl(e,t){var r=Pr(e,t);if(r==null)throw new Error("Cannot find file "+t+" in zip");return r}function Tt(e,t,r){if(!r)return My(zl(e,t));if(!t)return null;try{return Tt(e,t)}catch{return null}}function Sr(e,t,r){if(!r)return ud(zl(e,t));if(!t)return null;try{return Sr(e,t)}catch{return null}}function hd(e,t,r){if(!r)return dd(zl(e,t));if(!t)return null;try{return hd(e,t)}catch{return null}}function md(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=ry(r),Ae.utils.cfb_add(e,t,n)}Ae.utils.cfb_add(e,t,r)}else e.file(t,r)}function Gl(){return Ae.utils.cfb_new()}function pd(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 bt=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
|
||
`,Ly=/([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g,gd=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg,Vy=/<[^>]*>/g,qt=bt.match(gd)?gd:Vy,Uy=/<\w*:/,$y=/<(\/?)\w+:/;function Me(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(Ly),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($y,"<$1")}var xd={""":'"',"'":"'",">":">","<":"<","&":"&"},Xl=co(xd),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 xd[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))}}(),Kl=/[&<>'"]/g,Wy=/[\u0000-\u0008\u000b-\u001f]/g;function et(e){var t=e+"";return t.replace(Kl,function(r){return Xl[r]}).replace(Wy,function(r){return"_x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+"_"})}function vd(e){return et(e).replace(/ /g,"_x0020_")}var wd=/[\u0000-\u001f]/g;function Yl(e){var t=e+"";return t.replace(Kl,function(r){return Xl[r]}).replace(/\n/g,"<br/>").replace(wd,function(r){return"&#x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+";"})}function Hy(e){var t=e+"";return t.replace(Kl,function(r){return Xl[r]}).replace(wd,function(r){return"&#x"+r.charCodeAt(0).toString(16).toUpperCase()+";"})}var _d=function(){var e=/&#(\d+);/g;function t(r,n){return String.fromCharCode(parseInt(n,10))}return function(n){return n.replace(e,t)}}();function jy(e){return e.replace(/(\r\n|[\r\n])/g," ")}function ft(e){switch(e){case 1:case!0:case"1":case"true":case"TRUE":return!0;default:return!1}}function ql(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 yd(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 kd(e){return Rn(e,"binary").toString("utf8")}var mo="foo bar bazâð£",at=je&&(kd(mo)==ql(mo)&&kd||yd(mo)==ql(mo)&&yd)||ql,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||"")}}(),bd=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}}(),zy=function(){var e={};return function(r){return e[r]!==void 0?e[r]:e[r]=new RegExp("<(?:vt:)?"+r+">([\\s\\S]*?)</(?:vt:)?"+r+">","g")}}(),Gy=/<\/?(?:vt:)?variant>/g,Xy=/<(?:vt:)([^>]*)>([\s\S]*)</;function Ed(e,t){var r=Me(e),n=e.match(zy(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(Gy,"").match(Xy);s&&a.push({v:at(s[2]),t:s[1]})}),a}var Cd=/(^\s|\s$|\n)/;function zt(e,t){return"<"+e+(t.match(Cd)?' 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(Cd)?' xml:space="preserve"':"")+">"+t+"</"+e:"/")+">"}function Jl(e,t){try{return e.toISOString().replace(/\.\d*/,"")}catch(r){if(t)throw r}return""}function Ky(e,t){switch(typeof e){case"string":var r=xe("vt:lpwstr",et(e));return t&&(r=r.replace(/"/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",Jl(e));throw new Error("Unable to serialize "+e)}function Zl(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($l(e)));throw new Error("Bad input format: expected Buffer or string")}var Yi=/<(\/?)([^\s?><!\/:]*:|)([^\s?<>:\/]+)(?:[\s?:\/][^>]*)?>/mg,Nt={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 Yy(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 qy(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 Sd=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},Td=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)})):Sd(e)}:Sd,Fd=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,"")},Ql=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("utf16le",t,r).replace(or,""):Fd(e,t,r)}:Fd,Ad=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("")},Dd=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("hex",t,t+r):Ad(e,t,r)}:Ad,Rd=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):Rd(t,r,n)}:Rd,Od=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Bd=Od,Nd=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Id=Nd,Pd=function(e,t){var r=2*Fr(e,t);return r>0?qi(e,t+4,t+4+r-1):""},Md=Pd,Ld=function(t,r){var n=Fr(t,r);return n>0?Ql(t,r+4,r+4+n):""},Vd=Ld,Ud=function(e,t){var r=Fr(e,t);return r>0?qi(e,t+4,t+4+r):""},$d=Ud,Wd=function(e,t){return Yy(e,t)},po=Wd,ec=function(t){return Array.isArray(t)||typeof Uint8Array<"u"&&t instanceof Uint8Array};je&&(Bd=function(t,r){if(!Buffer.isBuffer(t))return Od(t,r);var n=t.readUInt32LE(r);return n>0?t.toString("utf8",r+4,r+4+n-1):""},Id=function(t,r){if(!Buffer.isBuffer(t))return Nd(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 Pd(t,r);var n=2*t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n-1)},Vd=function(t,r){if(!Buffer.isBuffer(t))return Ld(t,r);var n=t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n)},$d=function(t,r){if(!Buffer.isBuffer(t))return Ud(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):Wd(t,r)},ec=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]},Jy=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]},Zy=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=Ql(this,this.l,this.l+e);break;case"wstr":return Ji.call(this,e,"dbcs");case"lpstr-ansi":r=Bd(this,this.l),e=4+Fr(this,this.l);break;case"lpstr-cp":r=Id(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=Vd(this,this.l),e&2&&(e+=2);break;case"8lpp4":e=4+Fr(this,this.l),r=$d(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"?Jy:Bn)(this,this.l),this.l+=2,n;case 4:case-4:return t==="i"||!(this[this.l+3]&128)?(n=(e>0?xa:Zy)(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=Dd(this,this.l,e);break}}return this.l+=e,r}var Qy=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},e2=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},t2=function(e,t,r){e[r]=t&255,e[r+1]=t>>>8&255};function r2(e,t,r){var n=0,a=0;if(r==="dbcs"){for(a=0;a!=t.length;++a)t2(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,Qy(this,t,this.l);break;case 8:if(n=8,r==="f"){qy(this,t,this.l);break}case 16:break;case-4:n=4,e2(this,t,this.l);break}return this.l+=n,this}function Hd(e,t){var r=Dd(this,this.l,e.length>>1);if(r!==e)throw new Error(t+"Expected "+e+" saw "+r);this.l+=e.length>>1}function Gt(e,t){e.l=t,e.read_shift=Ji,e.chk=Hd,e.write_shift=r2}function Jt(e,t){e.l+=t}function se(e){var t=Yn(e);return Gt(t,0),t}function Nn(e,t,r){if(e){var n,a,i;Gt(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 Gt(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(),Lt(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&&ec(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 jd(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=i2(r)),!e.rRel&&e.rRel!=null&&(r=n2(r)),r}function tc(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 rc(e){return parseInt(a2(e),10)-1}function Et(e){return""+(e+1)}function n2(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function a2(e){return e.replace(/\$(\d+)$/,"$1")}function nc(e){for(var t=s2(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 i2(e){return e.replace(/^([A-Z])/,"$$$1")}function s2(e){return e.replace(/^\$([A-Z])/,"$1")}function o2(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 zd(e,t){var r=e.t=="d"&&t instanceof Date;if(e.z!=null)try{return e.w=Cr(e.z,r?Bt(t):t)}catch{}try{return e.w=Cr((e.XF||{}).numFmtId||(r?14:0),r?Bt(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?zd(e,e.v):zd(e,t))}function Qn(e,t){var r=t&&t.sheet?t.sheet:"Sheet1",n={};return n[r]=e,{SheetNames:[r],Sheets:n}}function Gd(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=Cr(m.z,Bt(m.v))):(m.t="n",m.v=Bt(m.v),m.w=Cr(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 Gd(null,e,t)}function l2(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 c2(e){return{ich:e.read_shift(2),ifnt:e.read_shift(2)}}function f2(e,t){return t||(t=se(4)),t.write_shift(2,e.ich||0),t.write_shift(2,e.ifnt||0),t}function ac(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(c2(e));s.r=i}else s.r=[{ich:0,ifnt:0}];return e.l=r+t,s}function u2(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 d2=ac;function h2(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),f2({ich:0,ifnt:0},t),r?t.slice(0,t.l):t}function Mr(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 m2=Zt,Xd=Vt;function ic(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 p2=Zt,sc=ic,oc=go;function lc(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 Kd(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 Yd(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 g2(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=Yd,ti=g2;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 x2(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 v2(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 w2(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 qd(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 _2(e){return qd(e,1)}function y2(e){return qd(e,2)}var cc=2,xr=3,vo=11,Jd=12,wo=19,_o=64,k2=65,b2=71,E2=4108,C2=4126,Ut=80,Zd=81,S2=[Ut,Zd],fc={1:{n:"CodePage",t:cc},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:E2},13:{n:"TitlesOfParts",t:C2},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:k2},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:{}},uc={1:{n:"CodePage",t:cc},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:b2},18:{n:"Application",t:Ut},19:{n:"DocSecurity",t:xr},255:{},2147483648:{n:"Locale",t:wo},2147483651:{n:"Behavior",t:wo},1919054434:{}},Qd={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"},T2=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];function F2(e){return e.map(function(t){return[t>>16&255,t>>8&255,t&255]})}var A2=F2([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(A2),Pn={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"},eh={"#NULL!":0,"#DIV/0!":7,"#VALUE!":15,"#REF!":23,"#NAME?":29,"#NUM!":36,"#N/A":42,"#GETTING_DATA":43,"#WTF?":255},dc={"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 hc(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""}}function D2(e){var t=hc();if(!e||!e.match)return t;var r={};if((e.match(qt)||[]).forEach(function(n){var a=Me(n);switch(a[0].replace(Uy,"<")){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[dc[a.ContentType]]!==void 0&&t[dc[a.ContentType]].push(a.PartName);break}}),t.xmlns!==Nt.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 th(e,t){var r=Ry(dc),n=[],a;n[n.length]=bt,n[n.length]=xe("Types",null,{xmlns:Nt.CT,"xmlns:xsd":Nt.xsd,"xmlns:xsi":Nt.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=Me(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=[bt,xe("Relationships",null,{xmlns:Nt.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 R2="application/vnd.oasis.opendocument.spreadsheet";function O2(e,t){for(var r=Zl(e),n,a;n=Yi.exec(r);)switch(n[3]){case"manifest":break;case"file-entry":if(a=Me(n[0],!1),a.path=="/"&&a.type!==R2)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 B2(e){var t=[bt];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 rh(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 N2(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 I2(e){var t=[bt];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(rh(e[r][0],e[r][1])),t.push(N2("",e[r][0]));return t.push(rh("","Document","pkg")),t.push("</rdf:RDF>"),t.join("")}function nh(){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 Lr=[["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"]],P2=function(){for(var e=new Array(Lr.length),t=0;t<Lr.length;++t){var r=Lr[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 ah(e){var t={};e=at(e);for(var r=0;r<Lr.length;++r){var n=Lr[r],a=e.match(P2[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 mc(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):zt(e,t))}function ih(e,t){var r=t||{},n=[bt,xe("cp:coreProperties",null,{"xmlns:cp":Nt.CORE_PROPS,"xmlns:dc":Nt.dc,"xmlns:dcterms":Nt.dcterms,"xmlns:dcmitype":Nt.dcmitype,"xmlns:xsi":Nt.xsi})],a={};if(!e&&!r.Props)return n.join("");e&&(e.CreatedDate!=null&&mc("dcterms:created",typeof e.CreatedDate=="string"?e.CreatedDate:Jl(e.CreatedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a),e.ModifiedDate!=null&&mc("dcterms:modified",typeof e.ModifiedDate=="string"?e.ModifiedDate:Jl(e.ModifiedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a));for(var i=0;i!=Lr.length;++i){var s=Lr[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&&mc(s[0],o,null,n,a)}return n.length>2&&(n[n.length]="</cp:coreProperties>",n[1]=n[1].replace("/>",">")),n.join("")}var Ea=[["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"]],sh=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function oh(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 M2(e,t,r){var n={};return t||(t={}),e=at(e),Ea.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&&oh(n.HeadingPairs,n.TitlesOfParts,t,r),t}function lh(e){var t=[],r=xe;return e||(e={}),e.Application="SheetJS",t[t.length]=bt,t[t.length]=xe("Properties",null,{xmlns:Nt.EXT_PROPS,"xmlns:vt":Nt.vt}),Ea.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 L2=/<[^>]+>[^<]*/g;function V2(e,t){var r={},n="",a=e.match(L2);if(a)for(var i=0;i!=a.length;++i){var s=a[i],o=Me(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 ch(e){var t=[bt,xe("Properties",null,{xmlns:Nt.CUST_PROPS,"xmlns:vt":Nt.vt})];if(!e)return t.join("");var r=1;return _t(e).forEach(function(a){++r,t[t.length]=xe("property",Ky(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 pc={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"},gc;function U2(e,t,r){gc||(gc=co(pc)),t=gc[t]||t,e[t]=r}function $2(e,t){var r=[];return _t(pc).map(function(n){for(var a=0;a<Lr.length;++a)if(Lr[a][1]==n)return Lr[a];for(a=0;a<Ea.length;++a)if(Ea[a][1]==n)return Ea[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(zt(pc[n[1]]||n[1],a))}}),xe("DocumentProperties",r.join(""),{xmlns:Tr.o})}function W2(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<Lr.length;++s)if(i==Lr[s][1])return;for(s=0;s<Ea.length;++s)if(i==Ea[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(vd(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(vd(i),s,{"dt:dt":o}))}}),"<"+n+' xmlns="'+Tr.o+'">'+a.join("")+"</"+n+">"}function xc(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 H2(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 fh(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 uh(e,t,r){var n=e.read_shift(0,"lpwstr");return r&&(e.l+=4-(n.length+1&3)&3),n}function dh(e,t,r){return t===31?uh(e):fh(e,t,r)}function vc(e,t,r){return dh(e,t,r===!1?0:4)}function j2(e,t){if(!t)throw new Error("VtUnalignedString must have positive length");return dh(e,t,0)}function z2(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 G2(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 X2(e){var t=e.l,r=ko(e,Zd);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 K2(e){for(var t=e.read_shift(4),r=[],n=0;n<t/2;++n)r.push(X2(e));return r}function hh(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 mh(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 Y2(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!==Jd&&n!==t&&S2.indexOf(t)===-1&&!((t&65534)==4126&&(n&65534)==4126))throw new Error("Expected type "+t+" saw "+n);switch(t===Jd?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 fh(e,n,4).replace(or,"");case 31:return uh(e);case 64:return xc(e);case 65:return mh(e);case 71:return Y2(e);case 80:return vc(e,n,!i.raw).replace(or,"");case 81:return j2(e,n).replace(or,"");case 4108:return K2(e);case 4126:case 4127:return n==4127?z2(e):G2(e);default:throw new Error("TypedPropertyValue unrecognized type "+t+" "+n)}}function ph(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=H2(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 Lt([r,n])}function gh(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,cc),Xr(o),c!==-1){var p=e.l;e.l=i[c][1],f=hh(e,o),e.l=p}}else if(i[s][0]===0){if(o===0){c=s,e.l=i[s+1][1];continue}f=hh(e,o)}else{var x=f[i[s][0]],v;switch(e[e.l]){case 65:e.l+=4,v=mh(e);break;case 30:e.l+=4,v=vc(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 31:e.l+=4,v=vc(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=Ct(e,4);break;case 64:e.l+=4,v=lt(xc(e));break;default:throw new Error("unparsed value: "+e[e.l])}h[x]=v}}return e.l=r+n,h}var xh=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"];function q2(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 vh(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=Lt(u),i.unshift(c),s+=8+c.length}for(o=0;o<e.length;++o)if(!(t&&!t[e[o][0]])&&!(xh.indexOf(e[o][0])>-1||sh.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=ph(g.t,h)}else{var x=q2(h);x==-1&&(x=31,h=String(h)),c=ph(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),Lt([n].concat(a).concat(i))}function wh(e,t,r){var n=e.content;if(!n)return{};Gt(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=gh(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=gh(n,null)}catch{}for(m in g)h[m]=g[m];return h.FMTID=[i,s],h}function _h(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=vh(e,r,n);if(o.push(c),a){var f=vh(a,null,null);s.write_shift(16,i,"hex"),s.write_shift(4,68+c.length),o.push(f)}return Lt(o)}function ea(e,t){return e.read_shift(t),null}function J2(e,t){t||(t=se(e));for(var r=0;r<e;++r)t.write_shift(1,0);return t}function Z2(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 Ct(e,t){return e.read_shift(t)===1}function cr(e,t){return t||(t=se(2)),t.write_shift(2,+!!e),t}function Ft(e){return e.read_shift(2,"u")}function Vr(e,t){return t||(t=se(2)),t.write_shift(2,e),t}function yh(e,t){return Z2(e,t,Ft)}function Q2(e){var t=e.read_shift(1),r=e.read_shift(1);return r===1?t:t===1}function kh(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 ek(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 tk(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 Lt(a)}function Ca(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++,""):Ca(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 bh(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 rk(e){var t=e.read_shift(1);e.l++;var r=e.read_shift(2);return e.l+=2,[t,r]}function nk(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 ak(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 ik(e,t){var r=e.read_shift(16);switch(r){case"e0c9ea79f9bace118c8200aa004ba90b":return nk(e);case"0303000000000000c000000000000046":return ak(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 sk(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=ik(e,r-e.l)),a&8&&(f=bo(e,r-e.l)),a&32&&(u=e.read_shift(16)),a&64&&(d=xc(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 ok(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 Ch(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 Sh(e,t){var r=Ch(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 lk(e){var t=e.read_shift(2),r=e.read_shift(2);return e.l+=8,{type:t,flags:r}}function ck(e,t,r){return t===0?"":Sa(e,t,r)}function fk(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 Th(e){var t=e.read_shift(2),r=lc(e);return[t,r]}function uk(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 Eo(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 Fh(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 Ah(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 dk=Ah;function Dh(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 hk(e){var t={};return e.l+=4,e.l+=16,t.fSharedNote=e.read_shift(2),e.l+=4,t}function mk(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 pk={0:er,4:er,5:er,6:er,7:mk,8:er,9:er,10:er,11:er,12:er,13:hk,14:er,15:er,16:er,17:er,18:er,19:er,20:er,21:Dh};function gk(e,t){for(var r=e.l+t,n=[];e.l<r;){var a=e.read_shift(2);e.l-=2;try{n.push(pk[a](e,r-e.l))}catch{return e.l=r,n}}return e.l!=r&&(e.l=r),n}function Co(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 wc(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 xk(e,t){return t===0||e.read_shift(2),1200}function vk(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 wk(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 _k(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 yk(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 kk(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 bk(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(ek(e));return i.Count=n,i.Unique=a,i}function Ek(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]=tk(e[a]);var i=Lt([r].concat(n));return i.parts=[r.length].concat(n.map(function(s){return s.length})),i}function Ck(e,t){var r={};return r.dsst=e.read_shift(2),e.l+=t-2,r}function Sk(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 Tk(e){var t=lk(e);if(t.type!=2211)throw new Error("Invalid Future Record "+t.type);var r=e.read_shift(4);return r!==0}function Fk(e){return e.read_shift(2),e.read_shift(4)}function Rh(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 Ak(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 Dk(){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 Rk(e,t,r){if(r&&r.biff>=2&&r.biff<5)return{};var n=e.read_shift(2);return{RTL:n&64}}function Ok(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 Bk(){}function Nk(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 Ik(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 Pk(e){var t=gn(e);return t.isst=e.read_shift(4),t}function Mk(e,t,r,n){var a=se(10);return Ta(e,t,n,a),a.write_shift(4,r),a}function Lk(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 Vk(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 Uk(e,t,r){var n=e.read_shift(2),a=Sa(e,0,r);return[n,a]}function $k(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 Wk=Sa;function Oh(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 Hk(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 jk(e){var t=e.read_shift(2),r=e.read_shift(2),n=Th(e);return{r:t,c:r,ixfe:n[0],rknum:n[1]}}function zk(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(Th(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 Gk(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 Xk(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=T2[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 Kk(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=Xk(e,t,n.fStyle,r),n}function Bh(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 Yk(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 qk(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 Nh(e,t,r){var n=gn(e);(r.biff==2||t==9)&&++e.l;var a=Q2(e);return n.val=a,n.t=a===!0||a===!1?"b":"e",n}function Jk(e,t,r,n,a,i){var s=se(8);return Ta(e,t,n,s),kh(r,i,s),s}function Zk(e,t,r){r.biffguess&&r.biff==2&&(r.biff=5);var n=gn(e),a=Qt(e);return n.val=a,n}function Qk(e,t,r,n){var a=se(14);return Ta(e,t,n,a),ka(r,a),a}var Ih=ck;function eb(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=Ca(e,i),o=[];n>e.l;)o.push(ns(e));return[i,a,s,o]}function Ph(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=uk(e,t-2,r)),i.body=a||e.read_shift(t-2),typeof a=="string"&&(i.Name=a),i}var tb=["_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=Ca(e,s,r);a&32&&(f=tb[f.charCodeAt(0)]);var u=n-e.l;r&&r.biff==2&&--u;var d=n==e.l||o===0||!(u>0)?[]:gT(e,u,r,o);return{chKey:i,Name:f,itab:c,rgce:d}}function Lh(e,t,r){if(r.biff<8)return rb(e,t,r);for(var n=[],a=e.l+t,i=e.read_shift(r.biff>8?4:2);i--!==0;)n.push(fk(e,r.biff>8?12:6,r));if(e.l!=a)throw new Error("Bad ExternSheet: "+e.l+" != "+a);return n}function rb(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 nb(e,t,r){if(r.biff<8){e.l+=t;return}var n=e.read_shift(2),a=e.read_shift(2),i=Ca(e,n,r),s=Ca(e,a,r);return[i,s]}function ab(e,t,r){var n=Ah(e);e.l++;var a=e.read_shift(1);return t-=8,[xT(e,t,r),a,n]}function Vh(e,t,r){var n=dk(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,mT(e,t,r)]}function ib(e){var t=e.read_shift(4)!==0,r=e.read_shift(4)!==0,n=e.read_shift(4);return[t,r,n]}function sb(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 ob(e,t,r){return sb(e,t,r)}function lb(e,t){for(var r=[],n=e.read_shift(2);n--;)r.push(Eo(e));return r}function cb(e){var t=se(2+e.length*8);t.write_shift(2,e.length);for(var r=0;r<e.length;++r)Fh(e[r],t);return t}function fb(e,t,r){if(r&&r.biff<8)return db(e,t,r);var n=Dh(e),a=gk(e,t-22,n[1]);return{cmo:n,ft:a}}var ub={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 db(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((ub[n]||Jt)(e,t,r)),{cmo:[a,n,i],ft:s}}function hb(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=rk(e,6,r);var o=e.read_shift(2);e.read_shift(2),Ft(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=Ca(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 mb(e,t){var r=Eo(e);e.l+=16;var n=sk(e,t-24);return[r,n]}function pb(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 Lt([t,ok(e[1])])}function gb(e,t){e.read_shift(2);var r=Eo(e),n=e.read_shift((t-10)/2,"dbcs-cont");return n=n.replace(or,""),[r,n]}function xb(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 vb(e){var t=[0,0],r;return r=e.read_shift(2),t[0]=Qd[r]||r,r=e.read_shift(2),t[1]=Qd[r]||r,t}function wb(e){return e||(e=se(4)),e.write_shift(2,1),e.write_shift(2,1),e}function _b(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(Sh(e));return r}function yb(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(Sh(e));return r}function kb(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 Uh(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 bb(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 Eb(e,t){var r={};return t<32||(e.l+=16,r.header=Qt(e),r.footer=Qt(e),e.l+=2),r}function Cb(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 Sb(e){for(var t=se(2*e),r=0;r<e;++r)t.write_shift(2,r+1);return t}var Tb=gn,Fb=yh,Ab=ns;function Db(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 Rb(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 Ob(e){var t=gn(e);++e.l;var r=Qt(e);return t.t="n",t.val=r,t}function Bb(e,t,r){var n=se(15);return xs(n,e,t),n.write_shift(8,r,"f"),n}function Nb(e){var t=gn(e);++e.l;var r=e.read_shift(2);return t.t="n",t.val=r,t}function Ib(e,t,r){var n=se(9);return xs(n,e,t),n.write_shift(2,r),n}function Pb(e){var t=e.read_shift(1);return t===0?(e.l++,""):e.read_shift(t,"sbcs-cont")}function Mb(e,t){e.l+=6,e.l+=2,e.l+=1,e.l+=3,e.l+=1,e.l+=t-13}function Lb(e,t,r){var n=e.l+t,a=gn(e),i=e.read_shift(2),s=Ca(e,i,r);return e.l=n,a.t="str",a.val=s,a}var Vb=[2,3,48,49,131,139,140,245],_c=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=Er(br(o));break;case"binary":u=Er(o);break;case"buffer":case"array":u=o;break}Gt(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=[],k={},R=Math.min(u.length,d==2?521:x-10-(m?264:0)),T=g?32:11;u.l<R&&u[u.l]!=13;)switch(k={},k.name=Xn.utils.decode(y,u.slice(u.l,u.l+T)).replace(/[\u0000\r\n].*$/g,""),u.l+=T,k.type=String.fromCharCode(u.read_shift(1)),d!=2&&!g&&(k.offset=u.read_shift(4)),k.len=u.read_shift(1),d==2&&(k.offset=u.read_shift(2)),k.dec=u.read_shift(1),k.name.length&&w.push(k),d!=2&&(u.l+=g?13:14),k.type){case"B":(!m||k.len!=8)&&c.WTF&&""+k.name+k.type;break;case"G":case"P":c.WTF&&""+k.name+k.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: "+k.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 C=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[++C]=[],U=0,U=0;U!=w.length;++U){var F=u.slice(u.l,u.l+w[U].len);u.l+=w[U].len,Gt(F,0);var W=Xn.utils.decode(y,F);switch(w[U].type){case"C":W.trim().length&&(f[C][U]=W.replace(/\s+$/,""));break;case"D":W.length===8?f[C][U]=new Date(+W.slice(0,4),+W.slice(4,6)-1,+W.slice(6,8)):f[C][U]=W;break;case"F":f[C][U]=parseFloat(W.trim());break;case"+":case"I":f[C][U]=g?F.read_shift(-4,"i")^2147483648:F.read_shift(4,"i");break;case"L":switch(W.trim().toUpperCase()){case"Y":case"T":f[C][U]=!0;break;case"N":case"F":f[C][U]=!1;break;case"":case"?":break;default:throw new Error("DBF Unrecognized L:|"+W+"|")}break;case"M":if(!h)throw new Error("DBF Unexpected MEMO for type "+d.toString(16));f[C][U]="##MEMO##"+(g?parseInt(W.trim(),10):F.read_shift(4));break;case"N":W=W.replace(/\u0000/g,"").trim(),W&&W!="."&&(f[C][U]=+W||0);break;case"@":f[C][U]=new Date(F.read_shift(-8,"f")-621356832e5);break;case"T":f[C][U]=new Date((F.read_shift(4)-2440588)*864e5+F.read_shift(4));break;case"Y":f[C][U]=F.read_shift(4,"i")/1e4+F.read_shift(4,"i")/1e4*Math.pow(2,32);break;case"O":f[C][U]=-F.read_shift(-8,"f");break;case"B":if(m&&w[U].len==8){f[C][U]=F.read_shift(8,"f");break}case"G":case"P":F.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"]),k=[],R=[],T=[];for(p=0;p<=w.e.c-w.s.c;++p){var C="",U="",F=0,W=[];for(x=0;x<m.length;++x)m[x][p]!=null&&W.push(m[x][p]);if(W.length==0||h[p]==null){k[p]="?";continue}for(x=0;x<W.length;++x){switch(typeof W[x]){case"number":U="B";break;case"string":U="C";break;case"boolean":U="L";break;case"object":U=W[x]instanceof Date?"D":"C";break;default:U="C"}F=Math.max(F,String(W[x]).length),C=C&&C!=U?"C":U}F>250&&(F=250),U=((g[p]||{}).DBF||{}).type,U=="C"&&g[p].DBF.len>F&&(F=g[p].DBF.len),C=="B"&&U=="N"&&(C="N",T[p]=g[p].DBF.dec,F=g[p].DBF.len),R[p]=C=="C"||U=="N"?F:i[C]||0,y+=R[p],k[p]=C}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[Pu]||3)<<8),p=0,x=0;p<h.length;++p)if(h[p]!=null){var B=u.next(32),H=(h[p].slice(-10)+"\0\0\0\0\0\0\0\0\0\0\0").slice(0,11);B.write_shift(1,H,"sbcs"),B.write_shift(1,k[p]=="?"?"C":k[p],"sbcs"),B.write_shift(4,x),B.write_shift(1,R[p]||i[k[p]]||0),B.write_shift(1,T[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[k[p]]||0}var K=u.next(264);for(K.write_shift(4,13),p=0;p<65;++p)K.write_shift(4,0);for(p=0;p<m.length;++p){var j=u.next(y);for(j.write_shift(1,0),x=0;x<h.length;++x)if(h[x]!=null)switch(k[x]){case"L":j.write_shift(1,m[p][x]==null?63:m[p][x]?84:70);break;case"B":j.write_shift(8,m[p][x]||0,"f");break;case"N":var q="0";for(typeof m[p][x]=="number"&&(q=m[p][x].toFixed(T[x]||0)),v=0;v<R[x]-q.length;++v)j.write_shift(1,32);j.write_shift(1,q,"sbcs");break;case"D":m[p][x]?(j.write_shift(4,("0000"+m[p][x].getFullYear()).slice(-4),"sbcs"),j.write_shift(2,("00"+(m[p][x].getMonth()+1)).slice(-2),"sbcs"),j.write_shift(2,("00"+m[p][x].getDate()).slice(-2),"sbcs")):j.write_shift(8,"00000000","sbcs");break;case"C":var ae=String(m[p][x]!=null?m[p][x]:"").slice(0,R[x]);for(j.write_shift(1,ae,"sbcs"),v=0;v<R[x]-ae.length;++v)j.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}}(),$h=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"?Vu(g):g},n=function(h,m,g){var p=m.charCodeAt(0)-32<<4|g.charCodeAt(0)-48;return p==59?h:Vu(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=[],k=[],R=null,T={},C=[],U=[],F=[],W=0,G;for(+m.codepage>=0&&Xr(+m.codepage);v!==g.length;++v){W=0;var B=g[v].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,n).replace(t,r),H=B.replace(/;;/g,"\0").split(";").map(function(A){return A.replace(/\u0000/g,";")}),K=H[0],j;if(B.length>0)switch(K){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":H[1].charAt(0)=="P"&&k.push(B.slice(3).replace(/;;/g,";"));break;case"C":var q=!1,ae=!1,pe=!1,Y=!1,ce=-1,D=-1;for(y=1;y<H.length;++y)switch(H[y].charAt(0)){case"A":break;case"X":x=parseInt(H[y].slice(1))-1,ae=!0;break;case"Y":for(p=parseInt(H[y].slice(1))-1,ae||(x=0),G=w.length;G<=p;++G)w[G]=[];break;case"K":j=H[y].slice(1),j.charAt(0)==='"'?j=j.slice(1,j.length-1):j==="TRUE"?j=!0:j==="FALSE"?j=!1:isNaN(Yr(j))?isNaN(Za(j).getDate())||(j=lt(j)):(j=Yr(j),R!==null&&ma(R)&&(j=ho(j))),q=!0;break;case"E":Y=!0;var _=si(H[y].slice(1),{r:p,c:x});w[p][x]=[w[p][x],_];break;case"S":pe=!0,w[p][x]=[w[p][x],"S5S"];break;case"G":break;case"R":ce=parseInt(H[y].slice(1))-1;break;case"C":D=parseInt(H[y].slice(1))-1;break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}if(q&&(w[p][x]&&w[p][x].length==2?w[p][x][0]=j:w[p][x]=j,R=null),pe){if(Y)throw new Error("SYLK shared formula cannot have own formula");var b=ce>-1&&w[ce][D];if(!b||!b[1])throw new Error("SYLK shared formula cannot find base");w[p][x][1]=om(b[1],{r:p-ce,c:x-D})}break;case"F":var E=0;for(y=1;y<H.length;++y)switch(H[y].charAt(0)){case"X":x=parseInt(H[y].slice(1))-1,++E;break;case"Y":for(p=parseInt(H[y].slice(1))-1,G=w.length;G<=p;++G)w[G]=[];break;case"M":W=parseInt(H[y].slice(1))/20;break;case"F":break;case"G":break;case"P":R=k[parseInt(H[y].slice(1))];break;case"S":break;case"D":break;case"N":break;case"W":for(F=H[y].slice(1).split(" "),G=parseInt(F[0],10);G<=parseInt(F[1],10);++G)W=parseInt(F[2],10),U[G-1]=W===0?{hidden:!0}:{wch:W},ta(U[G-1]);break;case"C":x=parseInt(H[y].slice(1))-1,U[x]||(U[x]={});break;case"R":p=parseInt(H[y].slice(1))-1,C[p]||(C[p]={}),W>0?(C[p].hpt=W,C[p].hpx=ai(W)):W===0&&(C[p].hidden=!0);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}E<1&&(R=null);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+B)}}return C.length>0&&(T["!rows"]=C),U.length>0&&(T["!cols"]=U),m&&m.sheetRows&&(w=w.slice(0,m.sheetRows)),[w,T]}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"+Fc(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 k=x.s.r;k<=x.e.r;++k)for(var R=x.s.c;R<=x.e.c;++R){var T=Ne({r:k,c:R});v=y?(h[k]||[])[R]:h[T],!(!v||v.v==null&&(!v.f||v.F))&&p.push(c(v,h,k,R))}return g.join(w)+w+p.join(w)+w+"E"+w}return{to_workbook:o,to_sheet:s,from_sheet:d}}(),Wh=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=Cr(d.z||Oe[14],Bt(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}}(),Hh=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 k=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],k])}}}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 k=Bt(lt(g.v));m[2]="vtc",m[3]="nd",m[4]=""+k,m[5]=g.w||Cr(g.z||Oe[14],k);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,k=0,R=m.charCodeAt(0),T=!1,C=0,U=u.charCodeAt(0);u=u.replace(/\r\n/mg,`
|
||
`);var F=h.dateNF!=null?Sy(h.dateNF):null;function W(){var G=u.slice(w,k),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,'"')):eS(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())||F&&G.match(F)){B.z=h.dateNF||Oe[14];var H=0;F&&G.match(F)&&(G=Ty(G,h.dateNF,G.match(F)||[]),H=1),h.cellDates?(B.t="d",B.v=lt(G,H)):(B.t="n",B.v=Bt(lt(G,H))),h.cellText!==!1&&(B.w=Cr(B.z,B.v instanceof Date?Bt(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=k+1,U=u.charCodeAt(w),p.e.c<v&&(p.e.c=v),p.e.r<x&&(p.e.r=x),C==R)++v;else if(v=0,++x,h.sheetRows&&h.sheetRows<=x)return!0}e:for(;k<u.length;++k)switch(C=u.charCodeAt(k)){case 34:U===34&&(T=!T);break;case R:case 10:case 13:if(!T&&W())break e;break}return k-w>0&&W(),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]:zc(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:"?Hh.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 Ub(e,t){var r=t||{},n=!!r.WTF;r.WTF=!0;try{var a=$h.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(_,b,E){if(_){Gt(_,_.l||0);for(var A=E.Enum||ce;_.l<_.length;){var X=_.read_shift(2),te=A[X]||A[65535],ee=_.read_shift(2),ne=_.l+ee,ie=te.f&&te.f(_,ee,E);if(_.l=ne,b(ie,te,X))return}}}function t(_,b){switch(b.type){case"base64":return r(Er(br(_)),b);case"binary":return r(Er(_),b);case"buffer":case"array":return r(_,b)}throw"Unsupported type "+b.type}function r(_,b){if(!_)return _;var E=b||{},A=E.dense?[]:{},X="Sheet1",te="",ee=0,ne={},ie=[],Se=[],M={s:{r:0,c:0},e:{r:0,c:0}},de=E.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)E.Enum=ce,e(_,function(he,Qe,vr){switch(vr){case 0:E.vers=he,he>=4096&&(E.qpro=!0);break;case 6:M=he;break;case 204:he&&(te=he);break;case 222:te=he;break;case 15:case 51:E.qpro||(he[1].v=he[1].v.slice(1));case 13:case 14:case 16:vr==14&&(he[2]&112)==112&&(he[2]&15)>1&&(he[2]&15)<15&&(he[1].z=E.dateNF||Oe[14],E.cellDates&&(he[1].t="d",he[1].v=ho(he[1].v))),E.qpro&&he[3]>ee&&(A["!ref"]=We(M),ne[X]=A,ie.push(X),A=E.dense?[]:{},M={s:{r:0,c:0},e:{r:0,c:0}},ee=he[3],X=te||"Sheet"+(ee+1),te="");var Hr=E.dense?(A[he[0].r]||[])[he[0].c]:A[Ne(he[0])];if(Hr){Hr.t=he[1].t,Hr.v=he[1].v,he[1].z!=null&&(Hr.z=he[1].z),he[1].f!=null&&(Hr.f=he[1].f);break}E.dense?(A[he[0].r]||(A[he[0].r]=[]),A[he[0].r][he[0].c]=he[1]):A[Ne(he[0])]=he[1];break}},E);else if(_[2]==26||_[2]==14)E.Enum=D,_[2]==14&&(E.qpro=!0,_.l=0),e(_,function(he,Qe,vr){switch(vr){case 204:X=he;break;case 22:he[1].v=he[1].v.slice(1);case 23:case 24:case 25:case 37:case 39:case 40:if(he[3]>ee&&(A["!ref"]=We(M),ne[X]=A,ie.push(X),A=E.dense?[]:{},M={s:{r:0,c:0},e:{r:0,c:0}},ee=he[3],X="Sheet"+(ee+1)),de>0&&he[0].r>=de)break;E.dense?(A[he[0].r]||(A[he[0].r]=[]),A[he[0].r][he[0].c]=he[1]):A[Ne(he[0])]=he[1],M.e.c<he[0].c&&(M.e.c=he[0].c),M.e.r<he[0].r&&(M.e.r=he[0].r);break;case 27:he[14e3]&&(Se[he[14e3][0]]=he[14e3][1]);break;case 1537:Se[he[0]]=he[1],he[0]==ee&&(X=he[1]);break}},E);else throw new Error("Unrecognized LOTUS BOF "+_[2]);if(A["!ref"]=We(M),ne[te||X]=A,ie.push(te||X),!Se.length)return{SheetNames:ie,Sheets:ne};for(var _e={},Fe=[],ke=0;ke<Se.length;++ke)ne[ie[ke]]?(Fe.push(Se[ke]||ie[ke]),_e[Se[ke]]=ne[Se[ke]]||ne[ie[ke]]):(Fe.push(Se[ke]),_e[Se[ke]]={"!ref":"A1"});return{SheetNames:Fe,Sheets:_e}}function n(_,b){var E=b||{};if(+E.codepage>=0&&Xr(+E.codepage),E.type=="string")throw new Error("Cannot write WK1 to JS string");var A=pr(),X=Ye(_["!ref"]),te=Array.isArray(_),ee=[];ve(A,0,i(1030)),ve(A,6,c(X));for(var ne=Math.min(X.e.r,8191),ie=X.s.r;ie<=ne;++ie)for(var Se=Et(ie),M=X.s.c;M<=X.e.c;++M){ie===X.s.r&&(ee[M]=mt(M));var de=ee[M]+Se,_e=te?(_[ie]||[])[M]:_[de];if(!(!_e||_e.t=="z"))if(_e.t=="n")(_e.v|0)==_e.v&&_e.v>=-32768&&_e.v<=32767?ve(A,13,m(ie,M,_e.v)):ve(A,14,p(ie,M,_e.v));else{var Fe=In(_e);ve(A,15,d(ie,M,Fe.slice(0,239)))}}return ve(A,1),A.end()}function a(_,b){var E=b||{};if(+E.codepage>=0&&Xr(+E.codepage),E.type=="string")throw new Error("Cannot write WK3 to JS string");var A=pr();ve(A,0,s(_));for(var X=0,te=0;X<_.SheetNames.length;++X)(_.Sheets[_.SheetNames[X]]||{})["!ref"]&&ve(A,27,Y(_.SheetNames[X],te++));var ee=0;for(X=0;X<_.SheetNames.length;++X){var ne=_.Sheets[_.SheetNames[X]];if(!(!ne||!ne["!ref"])){for(var ie=Ye(ne["!ref"]),Se=Array.isArray(ne),M=[],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&&(M[ke]=mt(ke));var he=M[ke]+Fe,Qe=Se?(ne[_e]||[])[ke]:ne[he];if(!(!Qe||Qe.t=="z"))if(Qe.t=="n")ve(A,23,W(_e,ke,ee,Qe.v));else{var vr=In(Qe);ve(A,22,C(_e,ke,ee,vr.slice(0,239)))}}++ee}}return ve(A,1),A.end()}function i(_){var b=se(2);return b.write_shift(2,_),b}function s(_){var b=se(26);b.write_shift(2,4096),b.write_shift(2,4),b.write_shift(4,0);for(var E=0,A=0,X=0,te=0;te<_.SheetNames.length;++te){var ee=_.SheetNames[te],ne=_.Sheets[ee];if(!(!ne||!ne["!ref"])){++X;var ie=gr(ne["!ref"]);E<ie.e.r&&(E=ie.e.r),A<ie.e.c&&(A=ie.e.c)}}return E>8191&&(E=8191),b.write_shift(2,E),b.write_shift(1,X),b.write_shift(1,A),b.write_shift(2,0),b.write_shift(2,0),b.write_shift(1,1),b.write_shift(1,2),b.write_shift(4,0),b.write_shift(4,0),b}function o(_,b,E){var A={s:{c:0,r:0},e:{c:0,r:0}};return b==8&&E.qpro?(A.s.c=_.read_shift(1),_.l++,A.s.r=_.read_shift(2),A.e.c=_.read_shift(1),_.l++,A.e.r=_.read_shift(2),A):(A.s.c=_.read_shift(2),A.s.r=_.read_shift(2),b==12&&E.qpro&&(_.l+=2),A.e.c=_.read_shift(2),A.e.r=_.read_shift(2),b==12&&E.qpro&&(_.l+=2),A.s.c==65535&&(A.s.c=A.e.c=A.s.r=A.e.r=0),A)}function c(_){var b=se(8);return b.write_shift(2,_.s.c),b.write_shift(2,_.s.r),b.write_shift(2,_.e.c),b.write_shift(2,_.e.r),b}function f(_,b,E){var A=[{c:0,r:0},{t:"n",v:0},0,0];return E.qpro&&E.vers!=20768?(A[0].c=_.read_shift(1),A[3]=_.read_shift(1),A[0].r=_.read_shift(2),_.l+=2):(A[2]=_.read_shift(1),A[0].c=_.read_shift(2),A[0].r=_.read_shift(2)),A}function u(_,b,E){var A=_.l+b,X=f(_,b,E);if(X[1].t="s",E.vers==20768){_.l++;var te=_.read_shift(1);return X[1].v=_.read_shift(te,"utf8"),X}return E.qpro&&_.l++,X[1].v=_.read_shift(A-_.l,"cstr"),X}function d(_,b,E){var A=se(7+E.length);A.write_shift(1,255),A.write_shift(2,b),A.write_shift(2,_),A.write_shift(1,39);for(var X=0;X<A.length;++X){var te=E.charCodeAt(X);A.write_shift(1,te>=128?95:te)}return A.write_shift(1,0),A}function h(_,b,E){var A=f(_,b,E);return A[1].v=_.read_shift(2,"i"),A}function m(_,b,E){var A=se(7);return A.write_shift(1,255),A.write_shift(2,b),A.write_shift(2,_),A.write_shift(2,E,"i"),A}function g(_,b,E){var A=f(_,b,E);return A[1].v=_.read_shift(8,"f"),A}function p(_,b,E){var A=se(13);return A.write_shift(1,255),A.write_shift(2,b),A.write_shift(2,_),A.write_shift(8,E,"f"),A}function x(_,b,E){var A=_.l+b,X=f(_,b,E);if(X[1].v=_.read_shift(8,"f"),E.qpro)_.l=A;else{var te=_.read_shift(2);k(_.slice(_.l,_.l+te),X),_.l+=te}return X}function v(_,b,E){var A=b&32768;return b&=-32769,b=(A?_:0)+(b>=8192?b-16384:b),(A?"":"$")+(E?mt(b):Et(b))}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 k(_,b){Gt(_,0);for(var E=[],A=0,X="",te="",ee="",ne="";_.l<_.length;){var ie=_[_.l++];switch(ie){case 0:E.push(_.read_shift(8,"f"));break;case 1:te=v(b[0].c,_.read_shift(2),!0),X=v(b[0].r,_.read_shift(2),!1),E.push(te+X);break;case 2:{var Se=v(b[0].c,_.read_shift(2),!0),M=v(b[0].r,_.read_shift(2),!1);te=v(b[0].c,_.read_shift(2),!0),X=v(b[0].r,_.read_shift(2),!1),E.push(Se+M+":"+te+X)}break;case 3:if(_.l<_.length){console.error("WK1 premature formula end");return}break;case 4:E.push("("+E.pop()+")");break;case 5:E.push(_.read_shift(2));break;case 6:{for(var de="";ie=_[_.l++];)de+=String.fromCharCode(ie);E.push('"'+de.replace(/"/g,'""')+'"')}break;case 8:E.push("-"+E.pop());break;case 23:E.push("+"+E.pop());break;case 22:E.push("NOT("+E.pop()+")");break;case 20:case 21:ne=E.pop(),ee=E.pop(),E.push(["AND","OR"][ie-20]+"("+ee+","+ne+")");break;default:if(ie<32&&w[ie])ne=E.pop(),ee=E.pop(),E.push(ee+w[ie]+ne);else if(y[ie]){if(A=y[ie][1],A==69&&(A=_[_.l++]),A>E.length){console.error("WK1 bad formula parse 0x"+ie.toString(16)+":|"+E.join("|")+"|");return}var _e=E.slice(-A);E.length-=A,E.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))}}E.length==1?b[1].f=""+E[0]:console.error("WK1 bad formula parse |"+E.join("|")+"|")}function R(_){var b=[{c:0,r:0},{t:"n",v:0},0];return b[0].r=_.read_shift(2),b[3]=_[_.l++],b[0].c=_[_.l++],b}function T(_,b){var E=R(_);return E[1].t="s",E[1].v=_.read_shift(b-4,"cstr"),E}function C(_,b,E,A){var X=se(6+A.length);X.write_shift(2,_),X.write_shift(1,E),X.write_shift(1,b),X.write_shift(1,39);for(var te=0;te<A.length;++te){var ee=A.charCodeAt(te);X.write_shift(1,ee>=128?95:ee)}return X.write_shift(1,0),X}function U(_,b){var E=R(_);E[1].v=_.read_shift(2);var A=E[1].v>>1;if(E[1].v&1)switch(A&7){case 0:A=(A>>3)*5e3;break;case 1:A=(A>>3)*500;break;case 2:A=(A>>3)/20;break;case 3:A=(A>>3)/200;break;case 4:A=(A>>3)/2e3;break;case 5:A=(A>>3)/2e4;break;case 6:A=(A>>3)/16;break;case 7:A=(A>>3)/64;break}return E[1].v=A,E}function F(_,b){var E=R(_),A=_.read_shift(4),X=_.read_shift(4),te=_.read_shift(2);if(te==65535)return A===0&&X===3221225472?(E[1].t="e",E[1].v=15):A===0&&X===3489660928?(E[1].t="e",E[1].v=42):E[1].v=0,E;var ee=te&32768;return te=(te&32767)-16446,E[1].v=(1-ee*2)*(X*Math.pow(2,te+32)+A*Math.pow(2,te)),E}function W(_,b,E,A){var X=se(14);if(X.write_shift(2,_),X.write_shift(1,E),X.write_shift(1,b),A==0)return X.write_shift(4,0),X.write_shift(4,0),X.write_shift(2,65535),X;var te=0,ee=0,ne=0,ie=0;return A<0&&(te=1,A=-A),ee=Math.log2(A)|0,A/=Math.pow(2,ee-31),ie=A>>>0,ie&2147483648||(A/=2,++ee,ie=A>>>0),A-=ie,ie|=2147483648,ie>>>=0,A*=Math.pow(2,32),ne=A>>>0,X.write_shift(4,ne),X.write_shift(4,ie),ee+=16383+(te?32768:0),X.write_shift(2,ee),X}function G(_,b){var E=F(_);return _.l+=b-14,E}function B(_,b){var E=R(_),A=_.read_shift(4);return E[1].v=A>>6,E}function H(_,b){var E=R(_),A=_.read_shift(8,"f");return E[1].v=A,E}function K(_,b){var E=H(_);return _.l+=b-10,E}function j(_,b){return _[_.l+b-1]==0?_.read_shift(b,"cstr"):""}function q(_,b){var E=_[_.l++];E>b-1&&(E=b-1);for(var A="";A.length<E;)A+=String.fromCharCode(_[_.l++]);return A}function ae(_,b,E){if(!(!E.qpro||b<21)){var A=_.read_shift(1);_.l+=17,_.l+=1,_.l+=2;var X=_.read_shift(b-21,"cstr");return[A,X]}}function pe(_,b){for(var E={},A=_.l+b;_.l<A;){var X=_.read_shift(2);if(X==14e3){for(E[X]=[0,""],E[X][0]=_.read_shift(2);_[_.l];)E[X][1]+=String.fromCharCode(_[_.l]),_.l++;_.l++}}return E}function Y(_,b){var E=se(5+_.length);E.write_shift(2,14e3),E.write_shift(2,b);for(var A=0;A<_.length;++A){var X=_.charCodeAt(A);E[E.l++]=X>127?95:X}return E[E.l++]=0,E}var ce={0:{n:"BOF",f:Ft},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:j},222:{n:"SHEETNAMELP",f:q},65535:{n:""}},D={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:T},23:{n:"NUMBER17",f:F},24:{n:"NUMBER18",f:U},25:{n:"FORMULA19",f:G},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:pe},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:H},40:{n:"FORMULA28",f:K},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:j},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 $b(e){var t={},r=e.match(qt),n=0,a=!1;if(r)for(;n!=r.length;++n){var i=Me(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=Ll[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 Wb=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=$b(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})}}(),Hb=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("")}}(),jb=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,zb=/<(?:\w+:)?r>/,Gb=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function yc(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=Yl(n.t))):e.match(zb)&&(n.r=at(e),n.t=Ke(at((e.replace(Gb,"").match(jb)||[]).join("").replace(qt,""))),r&&(n.h=Hb(Wb(n.r)))),n):{t:""}}var Xb=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/,Kb=/<(?:\w+:)?(?:si|sstItem)>/g,Yb=/<\/(?:\w+:)?(?:si|sstItem)>/;function qb(e,t){var r=[],n="";if(!e)return r;var a=e.match(Xb);if(a){n=a[2].replace(Kb,"").split(Yb);for(var i=0;i!=n.length;++i){var s=yc(n[i].trim(),t);s!=null&&(r[r.length]=s)}a=Me(a[1]),r.Count=a.count,r.Unique=a.uniqueCount}return r}var Jb=/^\s|\s$|[\t\n\r]/;function jh(e,t){if(!t.bookSST)return"";var r=[bt];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(Jb)&&(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 Zb(e){return[e.read_shift(4),e.read_shift(4)]}function Qb(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 eE(e,t){return t||(t=se(8)),t.write_shift(4,e.Count),t.write_shift(4,e.Unique),t}var tE=u2;function rE(e){var t=pr();fe(t,159,eE(e));for(var r=0;r<e.length;++r)fe(t,19,tE(e[r]));return fe(t,160),t.end()}function zh(e){for(var t=[],r=e.split(""),n=0;n<r.length;++n)t[n]=r[n].charCodeAt(0);return t}function Mn(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 nE(e){var t={};return t.id=e.read_shift(0,"lpp4"),t.R=Mn(e,4),t.U=Mn(e,4),t.W=Mn(e,4),t}function aE(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 iE(e){var t=[];e.l+=4;for(var r=e.read_shift(4);r-- >0;)t.push(aE(e));return t}function sE(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 oE(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=Mn(e,4),t.U=Mn(e,4),t.W=Mn(e,4),t}function lE(e){var t=oE(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 Gh(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 Xh(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 cE(e){var t=Mn(e);switch(t.Minor){case 2:return[t.Minor,fE(e)];case 3:return[t.Minor,uE()];case 4:return[t.Minor,dE(e)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+t.Minor)}function fE(e){var t=e.read_shift(4);if((t&63)!=36)throw new Error("EncryptionInfo mismatch");var r=e.read_shift(4),n=Gh(e,r),a=Xh(e,e.length-e.l);return{t:"Std",h:n,v:a}}function uE(){throw new Error("File is password-protected: ECMA-376 Extensible")}function dE(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=Me(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 hE(e,t){var r={},n=r.EncryptionVersionInfo=Mn(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=Gh(e,a),t-=a,r.EncryptionVerifier=Xh(e,t),r}function mE(e){var t={},r=t.EncryptionVersionInfo=Mn(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 kc(e){var t=0,r,n=zh(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 Kh=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=zh(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}}(),pE=function(e,t,r,n,a){a||(a=t),n||(n=Kh(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]},gE=function(e){var t=0,r=Kh(e);return function(n){var a=pE("",n,t,r);return t=a[1],a[0]}};function xE(e,t,r,n){var a={key:Ft(e),verificationBytes:Ft(e)};return r.password&&(a.verifier=kc(r.password)),n.valid=a.verificationBytes===a.verifier,n.valid&&(n.insitu=gE(r.password)),a}function vE(e,t,r){var n=r||{};return n.Info=e.read_shift(2),e.l-=2,n.Info===1?n.Data=mE(e):n.Data=hE(e,t),n}function wE(e,t,r){var n={Type:r.biff>=8?e.read_shift(2):0};return n.Type?vE(e,t-2,n):xE(e,r.biff>=8?t:t-2,r,n),n}var Yh=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 _E(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 yE(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 kE(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=yE(_E(e));return t<0?r[2]=r[2]*(1+t):r[2]=1-(1-r[2])*(1-t),as(kE(r))}var qh=6,bE=15,EE=1,tr=qh;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 bc(e){return To(ss(is(e)))}function Ec(e){var t=Math.abs(e-bc(e)),r=tr;if(t>.005)for(tr=EE;tr<bE;++tr)Math.abs(e-bc(e))<=t&&(t=Math.abs(e-bc(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 CE=96,Jh=CE;function os(e){return e*96/Jh}function ai(e){return e*Jh/96}var SE={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 TE(e,t,r,n){t.Borders=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(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 FE(e,t,r,n){t.Fills=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(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 AE(e,t,r,n){t.Fonts=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(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=Ll[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 DE(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=Me(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 RE(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 OE(e,t,r){t.CellXf=[];var n,a=!1;(e[0].match(qt)||[]).forEach(function(i){var s=Me(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 BE(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 NE=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))&&DE(d,u,f),(d=o.match(a))&&AE(d,u,c,f),(d=o.match(n))&&FE(d,u,c,f),(d=o.match(i))&&TE(d,u,c,f),(d=o.match(r))&&OE(d,u,f),u}}();function Zh(e,t){var r=[bt,xe("styleSheet",null,{xmlns:ga[0],"xmlns:vt":Nt.vt})],n;return e.SSF&&(n=RE(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=BE(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 IE(e,t){var r=e.read_shift(2),n=Zt(e);return[r,n]}function PE(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 ME(e,t,r){var n={};n.sz=e.read_shift(2)/20;var a=v2(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=x2(e),e.read_shift(1)){case 1:n.scheme="major";break;case 2:n.scheme="minor";break}return n.name=Zt(e),n}function LE(e,t){t||(t=se(25+4*32)),t.write_shift(2,e.sz*20),w2(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 VE=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"],Cc,UE=Jt;function Qh(e,t){t||(t=se(4*3+8*7+16*1)),Cc||(Cc=co(VE));var r=Cc[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 $E(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 em(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 WE=Jt;function HE(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 jE(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 zE(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 GE(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 XE(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,PE(a,t[a]))}),fe(e,616))}}function KE(e){var t=1;fe(e,611,qr(t)),fe(e,43,LE({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"})),fe(e,612)}function YE(e){var t=2;fe(e,603,qr(t)),fe(e,45,Qh({patternType:"none"})),fe(e,45,Qh({patternType:"gray125"})),fe(e,604)}function qE(e){var t=1;fe(e,613,qr(t)),fe(e,46,HE()),fe(e,614)}function JE(e){var t=1;fe(e,626,qr(t)),fe(e,47,em({numFmtId:0,fontId:0,fillId:0,borderId:0},65535)),fe(e,627)}function ZE(e,t){fe(e,617,qr(t.length)),t.forEach(function(r){fe(e,47,em(r,0))}),fe(e,618)}function QE(e){var t=1;fe(e,619,qr(t)),fe(e,48,jE({xfId:0,builtinId:0,name:"Normal"})),fe(e,620)}function eC(e){var t=0;fe(e,505,qr(t)),fe(e,506)}function tC(e){var t=0;fe(e,508,zE(t,"TableStyleMedium9","PivotStyleMedium4")),fe(e,509)}function rC(e,t){var r=pr();return fe(r,278),XE(r,e.SSF),KE(r),YE(r),qE(r),JE(r),ZE(r,t.cellXfs),QE(r),eC(r),tC(r),fe(r,279),r.end()}var nC=["</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 aC(e,t,r){t.themeElements.clrScheme=[];var n={};(e[0].match(qt)||[]).forEach(function(a){var i=Me(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[nC.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 iC(){}function sC(){}var oC=/<a:clrScheme([^>]*)>[\s\S]*<\/a:clrScheme>/,lC=/<a:fontScheme([^>]*)>[\s\S]*<\/a:fontScheme>/,cC=/<a:fmtScheme([^>]*)>[\s\S]*<\/a:fmtScheme>/;function fC(e,t,r){t.themeElements={};var n;[["clrScheme",oC,aC],["fontScheme",lC,iC],["fmtScheme",cC,sC]].forEach(function(a){if(!(n=e.match(a[1])))throw new Error(a[0]+" not found in themeElements");a[2](n,t,r)})}var uC=/<a:themeElements([^>]*)>[\s\S]*<\/a:themeElements>/;function tm(e,t){(!e||e.length===0)&&(e=Sc());var r,n={};if(!(r=e.match(uC)))throw new Error("themeElements not found in theme");return fC(r[0],n,t),n.raw=e,n}function Sc(e,t){if(t&&t.themeXLSX)return t.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var r=[bt];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 dC(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=pd(i,{type:"array"})}catch{return}var o=Sr(s,"theme/theme/theme1.xml",!0);if(o)return tm(o,r)}}function hC(e){return e.read_shift(4)}function mC(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=pC(e,4);break;case 2:t.xclrValue=Ch(e);break;case 3:t.xclrValue=hC(e);break;case 4:e.l+=4;break}return e.l+=8,t}function pC(e,t){return Jt(e,t)}function gC(e,t){return Jt(e,t)}function xC(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]=mC(e);break;case 6:n[1]=gC(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 vC(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(xC(e,r-e.l));return{ixfe:n,ext:i}}function wC(e,t){t.forEach(function(r){switch(r[0]){}})}function _C(e,t){return{flags:e.read_shift(4),version:e.read_shift(4),name:Zt(e)}}function yC(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 kC(e){for(var t=[],r=e.read_shift(4);r-- >0;)t.push([e.read_shift(4),e.read_shift(4)]);return t}function bC(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 EC(e,t){var r=se(8+2*t.length);return r.write_shift(4,e),Vt(t,r),r.slice(0,r.l)}function CC(e){return e.l+=4,e.read_shift(4)!=0}function SC(e,t){var r=se(8);return r.write_shift(4,e),r.write_shift(4,t?1:0),r}function TC(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 FC(){var e=pr();return fe(e,332),fe(e,334,qr(1)),fe(e,335,yC({name:"XLDAPR",version:12e4,flags:3496657072})),fe(e,336),fe(e,339,EC(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,SC(1,!0)),fe(e,51,bC([[1,0]])),fe(e,338),fe(e,333),e.end()}function AC(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=Me(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 rm(){var e=[bt];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 DC(e){var t=[];if(!e)return t;var r=1;return(e.match(qt)||[]).forEach(function(n){var a=Me(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 RC(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 OC(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 tR(){}function BC(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 NC(e,t){if(!e)return"??";var r=(e.match(/<c:chart [^>]*r:id="([^"]*)"/)||["",""])[1];return t["!id"][r].Target}var ii=1024;function nm(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/>",zt("x:Anchor",[s.c+1,0,s.r+1,0,s.c+3,20,s.r+5,20].join(",")),zt("x:AutoFill","False"),zt("x:Row",String(s.r)),zt("x:Column",String(s.c)),i[1].hidden?"":"<x:Visible/>","</x:ClientData>","</v:shape>"])}),a.push("</xml>"),a.join("")}function am(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 IC(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=Me(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]&&yc(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 im(e){var t=[bt,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(zt("t",et(i[0]||"")));else{for(var s=`Comment:
|
||
`+i[0]+`
|
||
`,o=1;o<i.length;++o)s+=`Reply:
|
||
`+i[o]+`
|
||
`;t.push(zt("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 PC(e,t){var r=[],n=!1,a={},i=0;return e.replace(qt,function(o,c){var f=Me(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 MC(e,t,r){var n=[bt,xe("ThreadedComments",null,{xmlns:Nt.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",zt("text",s.t||""),c))})}),n.push("</ThreadedComments>"),n.join("")}function LC(e,t){var r=[],n=!1;return e.replace(qt,function(i){var s=Me(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 VC(e){var t=[bt,xe("personList",null,{xmlns:Nt.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 UC(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 $C(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 WC=Zt;function HC(e){return Vt(e.slice(0,54))}function jC(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 zC(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,HC(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,$C([i,a])),a.t&&a.t.length>0&&fe(t,637,h2(a)),fe(t,636),delete a.iauthor})}),fe(t,634),fe(t,629),t.end()}var GC="application/vnd.ms-office.vbaProject";function XC(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 KC(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 sm=["xlsb","xlsm","xlam","biff8","xla"];function YC(){return{"!type":"dialog"}}function qC(){return{"!type":"dialog"}}function JC(){return{"!type":"macro"}}function ZC(){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)}}(),Tc=/(^|[^._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,Fc=function(){return function(t,r){return t.replace(Tc,function(n,a,i,s,o,c){var f=nc(s)-(i?0:r.c),u=rc(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 om(e,t){return e.replace(Tc,function(r,n,a,i,s,o){return n+(a=="$"?a+i:mt(nc(i)+t.c))+(s=="$"?s+o:Et(rc(o)+t.r))})}function QC(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 om(e,s)}function eS(e){return e.length!=1}function lm(e){return e.replace(/_xlfn\./g,"")}function At(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 cm(e,t,r){var n=2;if(r){if(r.biff>=2&&r.biff<=5)return fm(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 fm(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 tS(e,t,r){if(r.biff<8)return fm(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 um(e,t,r){if(r&&r.biff>=2&&r.biff<=5)return rS(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 rS(e){var t=ra(e,2),r=e.read_shift(1);return{r:t[0],c:r,cRel:t[1],rRel:t[2]}}function nS(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 aS(e,t,r){var n=r&&r.biff?r.biff:8;if(n>=2&&n<=5)return iS(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 iS(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 sS(e,t,r){var n=(e[e.l++]&96)>>5,a=cm(e,r.biff>=2&&r.biff<=5?6:8,r);return[n,a]}function oS(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=cm(e,i,r);return[n,a,s]}function lS(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 cS(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 fS(e,t,r){var n=(e[e.l++]&96)>>5,a=tS(e,t-1,r);return[n,a]}function uS(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r.biff==2?6:r.biff==12?14:7,[n]}function dm(e){var t=e[e.l+1]&1,r=1;return e.l+=4,[t,r]}function dS(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 hS(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 mS(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 pS(e){var t=e[e.l+1]&255?1:0;return e.l+=2,[t,e.read_shift(2)]}function gS(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=r&&r.biff==2?3:4,[n]}function hm(e){var t=e.read_shift(1),r=e.read_shift(1);return[t,r]}function xS(e){return e.read_shift(2),hm(e)}function vS(e){return e.read_shift(2),hm(e)}function wS(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=um(e,0,r);return[n,a]}function _S(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=aS(e,0,r);return[n,a]}function yS(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=um(e,0,r);return[n,a,i]}function kS(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[CT[a],vm[a],n]}function bS(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)]:ES(e);return[a,(i[0]===0?vm:ET)[i[1]]]}function ES(e){return[e[e.l+1]>>7,e.read_shift(2)&32767]}function CS(e,t,r){e.l+=r&&r.biff==2?3:4}function SS(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 TS(e){return e.l++,Pn[e.read_shift(1)]}function FS(e){return e.l++,e.read_shift(2)}function AS(e){return e.l++,e.read_shift(1)!==0}function DS(e){return e.l++,Qt(e)}function RS(e,t,r){return e.l++,rs(e,t-1,r)}function OS(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]=Ct(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 BS(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:Eo)(e));return a}function NS(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]=OS(e,r.biff);return s}function IS(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 PS(e,t,r){if(r.biff==5)return MS(e);var n=e.read_shift(1)>>>5&3,a=e.read_shift(2),i=e.read_shift(4);return[n,a,i]}function MS(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 LS(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 VS(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 US(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 $S(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 WS=Jt,HS=Jt,jS=Jt;function cs(e,t,r){return e.l+=2,[nS(e)]}function Ac(e){return e.l+=6,[]}var zS=cs,GS=Ac,XS=Ac,KS=cs;function mm(e){return e.l+=2,[Ft(e),e.read_shift(2)&1]}var YS=cs,qS=mm,JS=Ac,ZS=cs,QS=cs,eT=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function tT(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=eT[r>>2&31];return{ixti:t,coltype:r&3,rt:s,idx:n,c:a,C:i}}function rT(e){return e.l+=2,[e.read_shift(4)]}function nT(e,t,r){return e.l+=5,e.l+=2,e.l+=r.biff==2?1:4,["PTGSHEET"]}function aT(e,t,r){return e.l+=r.biff==2?4:5,["PTGENDSHEET"]}function iT(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function sT(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function oT(e){return e.l+=4,[0,0]}var pm={1:{n:"PtgExp",f:SS},2:{n:"PtgTbl",f:jS},3:{n:"PtgAdd",f:At},4:{n:"PtgSub",f:At},5:{n:"PtgMul",f:At},6:{n:"PtgDiv",f:At},7:{n:"PtgPower",f:At},8:{n:"PtgConcat",f:At},9:{n:"PtgLt",f:At},10:{n:"PtgLe",f:At},11:{n:"PtgEq",f:At},12:{n:"PtgGe",f:At},13:{n:"PtgGt",f:At},14:{n:"PtgNe",f:At},15:{n:"PtgIsect",f:At},16:{n:"PtgUnion",f:At},17:{n:"PtgRange",f:At},18:{n:"PtgUplus",f:At},19:{n:"PtgUminus",f:At},20:{n:"PtgPercent",f:At},21:{n:"PtgParen",f:At},22:{n:"PtgMissArg",f:At},23:{n:"PtgStr",f:RS},26:{n:"PtgSheet",f:nT},27:{n:"PtgEndSheet",f:aT},28:{n:"PtgErr",f:TS},29:{n:"PtgBool",f:AS},30:{n:"PtgInt",f:FS},31:{n:"PtgNum",f:DS},32:{n:"PtgArray",f:uS},33:{n:"PtgFunc",f:kS},34:{n:"PtgFuncVar",f:bS},35:{n:"PtgName",f:IS},36:{n:"PtgRef",f:wS},37:{n:"PtgArea",f:sS},38:{n:"PtgMemArea",f:LS},39:{n:"PtgMemErr",f:WS},40:{n:"PtgMemNoMem",f:HS},41:{n:"PtgMemFunc",f:VS},42:{n:"PtgRefErr",f:US},43:{n:"PtgAreaErr",f:lS},44:{n:"PtgRefN",f:_S},45:{n:"PtgAreaN",f:fS},46:{n:"PtgMemAreaN",f:iT},47:{n:"PtgMemNoMemN",f:sT},57:{n:"PtgNameX",f:PS},58:{n:"PtgRef3d",f:yS},59:{n:"PtgArea3d",f:oS},60:{n:"PtgRefErr3d",f:$S},61:{n:"PtgAreaErr3d",f:cS},255:{}},lT={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},cT={1:{n:"PtgElfLel",f:mm},2:{n:"PtgElfRw",f:ZS},3:{n:"PtgElfCol",f:zS},6:{n:"PtgElfRwV",f:QS},7:{n:"PtgElfColV",f:KS},10:{n:"PtgElfRadical",f:YS},11:{n:"PtgElfRadicalS",f:JS},13:{n:"PtgElfColS",f:GS},15:{n:"PtgElfColSV",f:XS},16:{n:"PtgElfRadicalLel",f:qS},25:{n:"PtgList",f:tT},29:{n:"PtgSxName",f:rT},255:{}},fT={0:{n:"PtgAttrNoop",f:oT},1:{n:"PtgAttrSemi",f:gS},2:{n:"PtgAttrIf",f:mS},4:{n:"PtgAttrChoose",f:dS},8:{n:"PtgAttrGoto",f:hS},16:{n:"PtgAttrSum",f:CS},32:{n:"PtgAttrBaxcel",f:dm},33:{n:"PtgAttrBaxcel",f:dm},64:{n:"PtgAttrSpace",f:xS},65:{n:"PtgAttrSpaceSemi",f:vS},128:{n:"PtgAttrIfError",f:pS},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]=NS(e,0,n),i.push(r[s][1]);break;case"PtgMemArea":r[s][2]=BS(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=pm[i]||pm[lT[i]],(i===24||i===25)&&(a=(i===24?cT:fT)[e[e.l+1]]),!a||!a.f?Jt(e,t):s.push([a.n,a.f(e,t,r)]);return s}function uT(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 dT={PtgAdd:"+",PtgConcat:"&",PtgDiv:"/",PtgEq:"=",PtgGe:">=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function hT(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 gm(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 xm(e,t,r){var n=gm(e,t,r);return n=="#REF"?n:hT(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+dT[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=xm(n,d,a),o.push(g+"!"+Qi(u,i));break;case"PtgFunc":case"PtgFuncVar":var k=w[1][0],R=w[1][1];k||(k=0),k&=127;var T=k==0?[]:o.slice(-k);o.length-=k,R==="User"&&(R=T.shift()),o.push(R+"("+T.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=jd(w[1][1],r?{s:r}:s,a),o.push(tc(m,a));break;case"PtgArea":m=jd(w[1][1],s,a),o.push(tc(m,a));break;case"PtgArea3d":d=w[1][1],m=w[1][2],g=xm(n,d,a),o.push(g+"!"+tc(m,a));break;case"PtgAttrSum":o.push("SUM("+o.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":h=w[1][2];var C=(n.names||[])[h-1]||(n[0]||[])[h],U=C?C.Name:"SH33TJSNAME"+String(h);U&&U.slice(0,6)=="_xlfn."&&!a.xlfn&&(U=U.slice(6)),o.push(U);break;case"PtgNameX":var F=w[1][1];h=w[1][2];var W;if(a.biff<=5)F<0&&(F=-F),n[F]&&(W=n[F][h]);else{var G="";if(((n[F]||[])[0]||[])[0]==14849||(((n[F]||[])[0]||[])[0]==1025?n[F][h]&&n[F][h].itab>0&&(G=n.SheetNames[n[F][h].itab-1]+"!"):G=n.SheetNames[h-1]+"!"),n[F]&&n[F][h])G+=n[F][h].Name;else if(n[0]&&n[0][h])G+=n[0][h].Name;else{var B=(gm(n,F,a)||"").split(";;");B[h-1]?G=B[h-1]:G+="SH33TJSERRX"}o.push(G);break}W||(W={Name:"SH33TJSERRY"}),o.push(W.Name);break;case"PtgParen":var H="(",K=")";if(p>=0){switch(x="",e[0][p][1][0]){case 2:H=yt(" ",e[0][p][1][1])+H;break;case 3:H=yt("\r",e[0][p][1][1])+H;break;case 4:K=yt(" ",e[0][p][1][1])+K;break;case 5:K=yt("\r",e[0][p][1][1])+K;break;default:if(a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}p=-1}o.push(H+o.pop()+K);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 j={c:r.c,r:r.r};if(n.sharedf[Ne(u)]){var q=n.sharedf[Ne(u)];o.push(rr(q,s,j,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,j,n,a)),ae=!0;break}ae||o.push(w[1])}break;case"PtgArray":o.push("{"+uT(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 pe=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(a.biff!=3&&p>=0&&pe.indexOf(e[0][v][0])==-1){w=e[0][p];var Y=!0;switch(w[1][0]){case 4:Y=!1;case 0:x=yt(" ",w[1][1]);break;case 5:Y=!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((Y?x:"")+o.pop()+(Y?"":x)),p=-1}}if(o.length>1&&a.WTF)throw new Error("bad formula stack");return o[0]}function mT(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 pT(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 gT(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 xT(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 vT(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 wT(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 Dc(e,t,r){var n=e.l+t,a=gn(e);r.biff==2&&++e.l;var i=vT(e),s=e.read_shift(1);r.biff!=2&&(e.read_shift(1),r.biff>=5&&e.read_shift(4));var o=pT(e,n-e.l,r);return{cell:a,val:i[0],formula:o,shared:s>>3&1,tt:i[1]}}function _T(e,t,r,n,a){var i=Ta(t,r,a),s=wT(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=Lt([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 yT=Do,Ro=Do,kT=Do,bT=Do,ET={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"},vm={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"},CT={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 wm(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 ST(e){var t="of:="+e.replace(Tc,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return t.replace(/;/g,"|").replace(/,/g,";")}function Rc(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 TT(e){return e.replace(/\./,"!")}var ds={},oi={},hs=typeof Map<"u";function Oc(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 _m(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(Cy[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=Bt(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=Cr(t,Bt(e.v),oi):e.w=Cr(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 FT(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 AT(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 DT=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g,RT=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/,OT=/<(?:\w:)?hyperlink [^>]*>/mg,BT=/"(\w*:\w*)"/,NT=/<(?:\w:)?col\b[^>]*[\/]?>/g,IT=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,PT=/<(?:\w:)?pageMargins[^>]*\/>/g,ym=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,MT=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/,LT=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function VT(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(RT);d?(f=e.slice(0,d.index),u=e.slice(d.index+d[0].length)):f=u=e;var h=f.match(ym);h?Bc(h[0],o,a,r):(h=f.match(MT))&&$T(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(BT);g&&AT(o,g[1])}var p=f.match(LT);p&&p[1]&&eF(p[1],a);var x=[];if(t.cellStyles){var v=f.match(NT);v&&YT(x,v)}d&&nF(d[1],o,t,c,i,s);var y=u.match(IT);y&&(o["!autofilter"]=JT(y[0]));var w=[],k=u.match(DT);if(k)for(m=0;m!=k.length;++m)w[m]=Ye(k[m].slice(k[m].indexOf('"')+1));var R=u.match(OT);R&>(o,R,n);var T=u.match(PT);if(T&&(o["!margins"]=XT(Me(T[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 C=Ye(o["!ref"]);t.sheetRows<=+C.e.r&&(C.e.r=t.sheetRows-1,C.e.r>c.e.r&&(C.e.r=c.e.r),C.e.r<C.s.r&&(C.s.r=C.e.r),C.e.c>c.e.c&&(C.e.c=c.e.c),C.e.c<C.s.c&&(C.s.c=C.e.c),o["!fullref"]=o["!ref"],o["!ref"]=We(C))}return x.length>0&&(o["!cols"]=x),w.length>0&&(o["!merges"]=w),o}function UT(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 Bc(e,t,r,n){var a=Me(e);r.Sheets[n]||(r.Sheets[n]={}),a.codeName&&(r.Sheets[n].CodeName=Ke(at(a.codeName)))}function $T(e,t,r,n,a){Bc(e.slice(0,e.indexOf(">")),r,n,a)}function WT(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 HT=["objects","scenarios","selectLockedCells","selectUnlockedCells"],jT=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function zT(e){var t={sheet:1};return HT.forEach(function(r){e[r]!=null&&e[r]&&(t[r]="1")}),jT.forEach(function(r){e[r]!=null&&!e[r]&&(t[r]="0")}),e.password&&(t.password=kc(e.password).toString(16).toUpperCase()),xe("sheetProtection",null,t)}function GT(e,t,r){for(var n=Array.isArray(e),a=0;a!=t.length;++a){var i=Me(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 XT(e){var t={};return["left","right","top","bottom","header","footer"].forEach(function(r){e[r]&&(t[r]=parseFloat(e[r]))}),t}function KT(e){return Aa(e),xe("pageMargins",null,e)}function YT(e,t){for(var r=!1,n=0;n!=t.length;++n){var a=Me(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,Ec(a.width)),ta(a);i<=s;)e[i++]=ct(a)}}function qT(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 JT(e){var t={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return t}function ZT(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 QT=/<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/;function eF(e,t){t.Views||(t.Views=[{}]),(e.match(QT)||[]).forEach(function(r,n){var a=Me(r);t.Views[n]||(t.Views[n]={}),+a.zoomScale&&(t.Views[n].zoom=+a.zoomScale),ft(a.rightToLeft)&&(t.Views[n].RTL=!0)})}function tF(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 rF(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=Bt(lt(e.v)))),typeof e.z>"u"&&(e.z=Oe[14]);break;default:a=e.v;break}var o=zt("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=zt("v",""+Oc(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 nF=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,k=0,R="",T,C,U=0,F=0,W,G,B=0,H=0,K=Array.isArray(m.CellXf),j,q=[],ae=[],pe=Array.isArray(f),Y=[],ce={},D=!1,_=!!u.sheetStubs,b=c.split(t),E=0,A=b.length;E!=A;++E){p=b[E].trim();var X=p.length;if(X!==0){var te=0;e:for(g=0;g<X;++g)switch(p[g]){case">":if(p[g-1]!="/"){++g;break e}if(u&&u.cellStyles){if(C=Me(p.slice(te,g),!0),U=C.r!=null?parseInt(C.r,10):U+1,F=-1,u.sheetRows&&u.sheetRows<U)continue;ce={},D=!1,C.ht&&(D=!0,ce.hpt=parseFloat(C.ht),ce.hpx=ai(ce.hpt)),C.hidden=="1"&&(D=!0,ce.hidden=!0),C.outlineLevel!=null&&(D=!0,ce.level=+C.outlineLevel),D&&(Y[U-1]=ce)}break;case"<":te=g;break}if(te>=g)break;if(C=Me(p.slice(te,g),!0),U=C.r!=null?parseInt(C.r,10):U+1,F=-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={},D=!1,C.ht&&(D=!0,ce.hpt=parseFloat(C.ht),ce.hpx=ai(ce.hpt)),C.hidden=="1"&&(D=!0,ce.hidden=!0),C.outlineLevel!=null&&(D=!0,ce.level=+C.outlineLevel),D&&(Y[U-1]=ce)),x=p.slice(g).split(e);for(var ee=0;ee!=x.length&&x[ee].trim().charAt(0)=="<";++ee);for(x=x.slice(ee),g=0;g!=x.length;++g)if(p=x[g].trim(),p.length!==0){if(v=p.match(r),y=g,w=0,k=0,p="<c "+(p.slice(0,1)=="<"?">":"")+p,v!=null&&v.length===2){for(y=0,R=v[1],w=0;w!=R.length&&!((k=R.charCodeAt(w)-64)<1||k>26);++w)y=26*y+k;--y,F=y}else++F;for(w=0;w!=p.length&&p.charCodeAt(w)!==62;++w);if(++w,C=Me(p.slice(0,w),!0),C.r||(C.r=Ne({r:U-1,c:F})),R=p.slice(w),T={t:""},(v=R.match(i))!=null&&v[1]!==""&&(T.v=Ke(v[1])),u.cellFormula){if((v=R.match(s))!=null&&v[1]!==""){if(T.f=Ke(at(v[1])).replace(/\r\n/g,`
|
||
`),u.xlfn||(T.f=lm(T.f)),v[0].indexOf('t="array"')>-1)T.F=(R.match(a)||[])[1],T.F.indexOf(":")>-1&&q.push([Ye(T.F),T.F]);else if(v[0].indexOf('t="shared"')>-1){G=Me(v[0]);var ne=Ke(at(v[1]));u.xlfn||(ne=lm(ne)),ae[parseInt(G.si,10)]=[G,ne,C.r]}}else(v=R.match(/<f[^>]*\/>/))&&(G=Me(v[0]),ae[G.si]&&(T.f=QC(ae[G.si][1],ae[G.si][2],C.r)));var ie=pt(C.r);for(w=0;w<q.length;++w)ie.r>=q[w][0].s.r&&ie.r<=q[w][0].e.r&&ie.c>=q[w][0].s.c&&ie.c<=q[w][0].e.c&&(T.F=q[w][1])}if(C.t==null&&T.v===void 0)if(T.f||T.F)T.v=0,T.t="n";else if(_)T.t="z";else continue;else T.t=C.t||"n";switch(d.s.c>F&&(d.s.c=F),d.e.c<F&&(d.e.c=F),T.t){case"n":if(T.v==""||T.v==null){if(!_)continue;T.t="z"}else T.v=parseFloat(T.v);break;case"s":if(typeof T.v>"u"){if(!_)continue;T.t="z"}else W=ds[parseInt(T.v,10)],T.v=W.t,T.r=W.r,u.cellHTML&&(T.h=W.h);break;case"str":T.t="s",T.v=T.v!=null?at(T.v):"",u.cellHTML&&(T.h=Yl(T.v));break;case"inlineStr":v=R.match(n),T.t="s",v!=null&&(W=yc(v[1]))?(T.v=W.t,u.cellHTML&&(T.h=W.h)):T.v="";break;case"b":T.v=ft(T.v);break;case"d":u.cellDates?T.v=lt(T.v,1):(T.v=Bt(lt(T.v,1)),T.t="n");break;case"e":(!u||u.cellText!==!1)&&(T.w=T.v),T.v=eh[T.v];break}if(B=H=0,j=null,K&&C.s!==void 0&&(j=m.CellXf[C.s],j!=null&&(j.numFmtId!=null&&(B=j.numFmtId),u.cellStyles&&j.fillId!=null&&(H=j.fillId))),_m(T,B,H,u,h,m),u.cellDates&&K&&T.t=="n"&&ma(Oe[B])&&(T.t="d",T.v=ho(T.v)),C.cm&&u.xlmeta){var Se=(u.xlmeta.Cell||[])[+C.cm-1];Se&&Se.type=="XLDAPR"&&(T.D=!0)}if(pe){var M=pt(C.r);f[M.r]||(f[M.r]=[]),f[M.r][M.c]=T}else f[C.r]=T}}}}Y.length>0&&(f["!rows"]=Y)}}();function aF(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=rF(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 km(e,t,r,n){var a=[bt,xe("worksheet",null,{xmlns:ga[0],"xmlns:r":Nt.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=[];WT(c,r,e,t,a),a[a.length]=xe("dimension",null,{ref:f}),a[a.length]=tF(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]=qT(c,c["!cols"])),a[s=a.length]="<sheetData/>",c["!links"]=[],c["!ref"]!=null&&(o=aF(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]=zT(c["!protect"])),c["!autofilter"]!=null&&(a[a.length]=ZT(c["!autofilter"],c,r,e)),c["!merges"]!=null&&c["!merges"].length>0&&(a[a.length]=UT(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]=KT(c["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&(a[a.length]=zt("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 iF(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 sF(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 oF(e,t,r,n){var a=sF(n,r,t);(a.length>17||(t["!rows"]||[])[n])&&fe(e,0,a)}var lF=ya,cF=ti;function fF(){}function uF(e,t){var r={},n=e[e.l];return++e.l,r.above=!(n&64),r.left=!(n&128),e.l+=18,r.name=m2(e),r}function dF(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),Xd(e,r),r.slice(0,r.l)}function hF(e){var t=Mr(e);return[t]}function mF(e,t,r){return r==null&&(r=se(8)),va(t,r)}function pF(e){var t=wa(e);return[t]}function gF(e,t,r){return r==null&&(r=se(4)),_a(t,r)}function xF(e){var t=Mr(e),r=e.read_shift(1);return[t,r,"b"]}function vF(e,t,r){return r==null&&(r=se(9)),va(t,r),r.write_shift(1,e.v?1:0),r}function wF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"b"]}function _F(e,t,r){return r==null&&(r=se(5)),_a(t,r),r.write_shift(1,e.v?1:0),r}function yF(e){var t=Mr(e),r=e.read_shift(1);return[t,r,"e"]}function kF(e,t,r){return r==null&&(r=se(9)),va(t,r),r.write_shift(1,e.v),r}function bF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"e"]}function EF(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 CF(e){var t=Mr(e),r=e.read_shift(4);return[t,r,"s"]}function SF(e,t,r){return r==null&&(r=se(12)),va(t,r),r.write_shift(4,t.v),r}function TF(e){var t=wa(e),r=e.read_shift(4);return[t,r,"s"]}function FF(e,t,r){return r==null&&(r=se(8)),_a(t,r),r.write_shift(4,t.v),r}function AF(e){var t=Mr(e),r=Qt(e);return[t,r,"n"]}function DF(e,t,r){return r==null&&(r=se(16)),va(t,r),ka(e.v,r),r}function bm(e){var t=wa(e),r=Qt(e);return[t,r,"n"]}function RF(e,t,r){return r==null&&(r=se(12)),_a(t,r),ka(e.v,r),r}function OF(e){var t=Mr(e),r=lc(e);return[t,r,"n"]}function BF(e,t,r){return r==null&&(r=se(12)),va(t,r),Kd(e.v,r),r}function NF(e){var t=wa(e),r=lc(e);return[t,r,"n"]}function IF(e,t,r){return r==null&&(r=se(8)),_a(t,r),Kd(e.v,r),r}function PF(e){var t=Mr(e),r=ac(e);return[t,r,"is"]}function MF(e){var t=Mr(e),r=Zt(e);return[t,r,"str"]}function LF(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 VF(e){var t=wa(e),r=Zt(e);return[t,r,"str"]}function UF(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 $F(e,t,r){var n=e.l+t,a=Mr(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 WF(e,t,r){var n=e.l+t,a=Mr(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 HF(e,t,r){var n=e.l+t,a=Mr(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 jF(e,t,r){var n=e.l+t,a=Mr(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 zF=ya,GF=ti;function XF(e,t){return t==null&&(t=se(4)),t.write_shift(4,e),t}function KF(e,t){var r=e.l+t,n=ya(e),a=ic(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 YF(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),oc("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 qF(){}function JF(e,t,r){var n=e.l+t,a=Yd(e),i=e.read_shift(1),s=[a];if(s[2]=i,r.cellFormula){var o=yT(e,n-e.l,r);s[1]=o}else e.l=n;return s}function ZF(e,t,r){var n=e.l+t,a=ya(e),i=[a];if(r.cellFormula){var s=bT(e,n-e.l,r);i[1]=s,e.l=n}else e.l=n;return i}function QF(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 e4(e){var t={};return Em.forEach(function(r){t[r]=Qt(e)}),t}function t4(e,t){return t==null&&(t=se(6*8)),Aa(e),Em.forEach(function(r){ka(e[r],t)}),t}function r4(e){var t=e.read_shift(2);return e.l+=28,{RTL:t&32}}function n4(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 a4(e){var t=se(24);return t.write_shift(4,4),t.write_shift(4,1),ti(e,t),t}function i4(e,t){return t==null&&(t=se(16*4+2)),t.write_shift(2,e.password?kc(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 s4(){}function o4(){}function l4(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,k,R,T=[];o.biff=12,o["!row"]=0;var C=0,U=!1,F=[],W={},G=o.supbooks||a.supbooks||[[]];if(G.sharedf=W,G.arrayf=F,G.SheetNames=a.SheetNames||a.Sheets.map(function(pe){return pe.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 H=[],K=[],j=!1;gs[16]={n:"BrtShortReal",f:bm};var q;if(Nn(e,function(Y,ce,D){if(!h)switch(D){case 148:f=Y;break;case 0:m=Y,o.sheetRows&&o.sheetRows<=m.r&&(h=!0),k=Et(x=m.r),o["!row"]=m.r,(Y.hidden||Y.hpt||Y.level!=null)&&(Y.hpt&&(Y.hpx=ai(Y.hpt)),K[Y.r]=Y);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:Y[2]},Y[2]){case"n":g.v=Y[1];break;case"s":w=ds[Y[1]],g.v=w.t,g.r=w.r;break;case"b":g.v=!!Y[1];break;case"e":g.v=Y[1],o.cellText!==!1&&(g.w=Pn[g.v]);break;case"str":g.t="s",g.v=Y[1];break;case"is":g.t="s",g.v=Y[1].t;break}if((p=s.CellXf[Y[0].iStyleRef])&&_m(g,p.numFmtId,null,o,i,s),v=Y[0].c==-1?v+1:Y[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+k]=g,o.cellFormula){for(U=!1,C=0;C<F.length;++C){var _=F[C];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&&Y.length>3&&(g.f=Y[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 b=Jn(g.v);b&&(g.t="d",g.v=new Date(b.y,b.m-1,b.d,b.H,b.M,b.S,b.u))}q&&(q.type=="XLDAPR"&&(g.D=!0),q=void 0);break;case 1:case 12:if(!o.sheetStubs||d)break;g={t:"z",v:void 0},v=Y[0].c==-1?v+1:Y[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+k]=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),q&&(q.type=="XLDAPR"&&(g.D=!0),q=void 0);break;case 176:T.push(Y);break;case 49:q=((o.xlmeta||{}).Cell||[])[Y-1];break;case 494:var E=n["!id"][Y.relId];for(E?(Y.Target=E.Target,Y.loc&&(Y.Target+="#"+Y.loc),Y.Rel=E):Y.relId==""&&(Y.Target="#"+Y.loc),x=Y.rfx.s.r;x<=Y.rfx.e.r;++x)for(v=Y.rfx.s.c;v<=Y.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=Y):(y=Ne({c:v,r:x}),c[y]||(c[y]={t:"z",v:void 0}),c[y].l=Y);break;case 426:if(!o.cellFormula)break;F.push(Y),R=o.dense?c[x][v]:c[mt(v)+k],R.f=rr(Y[1],u,{r:m.r,c:v},G,o),R.F=We(Y[0]);break;case 427:if(!o.cellFormula)break;W[Ne(Y[0].s)]=Y[1],R=o.dense?c[x][v]:c[mt(v)+k],R.f=rr(Y[1],u,{r:m.r,c:v},G,o);break;case 60:if(!o.cellStyles)break;for(;Y.e>=Y.s;)H[Y.e--]={width:Y.w/256,hidden:!!(Y.flags&1),level:Y.level},j||(j=!0,Ec(Y.w/256)),ta(H[Y.e+1]);break;case 161:c["!autofilter"]={ref:We(Y)};break;case 476:c["!margins"]=Y;break;case 147:a.Sheets[r]||(a.Sheets[r]={}),Y.name&&(a.Sheets[r].CodeName=Y.name),(Y.above||Y.left)&&(c["!outline"]={above:Y.above,left:Y.left});break;case 137:a.Views||(a.Views=[{}]),a.Views[0]||(a.Views[0]={}),Y.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"+D.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 T.length>0&&(c["!merges"]=T),H.length>0&&(c["!cols"]=H),K.length>0&&(c["!rows"]=K),c}function c4(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=Bt(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=Oc(a.Strings,t.v,a.revStrings),c.t="s",c.v=o,s?fe(e,18,FF(t,c)):fe(e,7,SF(t,c))):(c.t="str",s?fe(e,17,UF(t,c)):fe(e,6,LF(t,c))),!0;case"n":return t.v==(t.v|0)&&t.v>-1e3&&t.v<1e3?s?fe(e,13,IF(t,c)):fe(e,2,BF(t,c)):s?fe(e,16,RF(t,c)):fe(e,5,DF(t,c)),!0;case"b":return c.t="b",s?fe(e,15,_F(t,c)):fe(e,4,vF(t,c)),!0;case"e":return c.t="e",s?fe(e,14,EF(t,c)):fe(e,3,kF(t,c)),!0}return s?fe(e,12,gF(t,c)):fe(e,1,mF(t,c)),!0}function f4(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),oF(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=c4(e,m,u,h,n,t,d)}}fe(e,146)}function u4(e,t){!t||!t["!merges"]||(fe(e,177,XF(t["!merges"].length)),t["!merges"].forEach(function(r){fe(e,176,GF(r))}),fe(e,178))}function d4(e,t){!t||!t["!cols"]||(fe(e,390),t["!cols"].forEach(function(r,n){r&&fe(e,60,QF(n,r))}),fe(e,391))}function h4(e,t){!t||!t["!ref"]||(fe(e,648),fe(e,649,a4(Ye(t["!ref"]))),fe(e,650))}function m4(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,YF(n,a))}}),delete t["!links"]}function p4(e,t,r,n){if(t["!comments"].length>0){var a=tt(n,-1,"../drawings/vmlDrawing"+(r+1)+".vml",ze.VML);fe(e,551,oc("rId"+a)),t["!legacy"]=a}}function g4(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 x4(e,t,r){fe(e,133),fe(e,137,n4(t,r)),fe(e,138),fe(e,134)}function v4(e,t){t["!protect"]&&fe(e,535,i4(t["!protect"]))}function w4(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,dF(o,s["!outline"])),fe(a,148,cF(c)),x4(a,s,r.Workbook),d4(a,s),f4(a,s,e,t),v4(a,s),g4(a,s,r,e),u4(a,s),m4(a,s,n),s["!margins"]&&fe(a,476,t4(s["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&h4(a,s),p4(a,s,e,n),fe(a,130),a.end()}function _4(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 y4(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=_4(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 k4(e,t,r,n,a){if(!e)return e;n||(n={"!id":{}});var i={"!type":"chart","!drawel":null,"!rel":""},s,o=e.match(ym);return o&&Bc(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 b4(e,t){e.l+=10;var r=Zt(e);return{name:r}}function E4(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 Nc=[["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"]],C4=[["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"]],S4=[],T4=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function Cm(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 Sm(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 Tm(e){Sm(e.WBProps,Nc),Sm(e.CalcPr,T4),Cm(e.WBView,C4),Cm(e.Sheets,S4),oi.date1904=ft(e.WBProps.date1904)}function F4(e){return!e.Workbook||!e.Workbook.WBProps?"false":ft(e.Workbook.WBProps.date1904)?"true":"false"}var A4="][*?/\\".split("");function Fm(e,t){if(e.length>31){if(t)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var r=!0;return A4.forEach(function(n){if(e.indexOf(n)!=-1){if(!t)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");r=!1}}),r}function D4(e,t,r){e.forEach(function(n,a){Fm(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 R4(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||[];D4(e.SheetNames,t,!!e.vbaraw);for(var r=0;r<e.SheetNames.length;++r)FT(e.Sheets[e.SheetNames[r]],e.SheetNames[r],r)}var O4=/<\w+:workbook/;function B4(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=Me(c);switch(mn(u[0])){case"<?xml":break;case"<workbook":c.match(O4)&&(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/>":Nc.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 Tm(r),r}function Am(e){var t=[bt];t[t.length]=xe("workbook",null,{xmlns:ga[0],"xmlns:r":Nt.r});var r=e.Workbook&&(e.Workbook.Names||[]).length>0,n={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(Nc.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 N4(e,t){var r={};return r.Hidden=e.read_shift(4),r.iTabID=e.read_shift(4),r.strRelID=sc(e),r.name=Zt(e),r}function I4(e,t){return t||(t=se(127)),t.write_shift(4,e.Hidden),t.write_shift(4,e.iTabID),oc(e.strRelID,t),Vt(e.name.slice(0,31),t),t.length>t.l?t.slice(0,t.l):t}function P4(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 M4(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),Xd(e&&e.CodeName||"ThisWorkbook",t),t.slice(0,t.l)}function L4(e,t){var r={};return e.read_shift(4),r.ArchID=e.read_shift(4),e.l+=t-8,r}function V4(e,t,r){var n=e.l+t;e.l+=4,e.l+=1;var a=e.read_shift(4),i=p2(e),s=kT(e,0,r),o=ic(e);e.l=n;var c={Name:i,Ptg:s};return a<268435455&&(c.Sheet=a),o&&(c.Comment=o),c}function U4(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:L4},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),Tm(r),r.Names=i,r.supbooks=s,r}function $4(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,I4(a))}fe(e,144)}function W4(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 H4(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 j4(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,H4(a)),fe(e,136))}}function z4(e,t){var r=pr();return fe(r,131),fe(r,128,W4()),fe(r,153,M4(e.Workbook&&e.Workbook.WBProps||null)),j4(r,e),$4(r,e),fe(r,132),r.end()}function G4(e,t,r){return t.slice(-4)===".bin"?U4(e,r):B4(e,r)}function X4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?l4(e,n,r,a,i,s,o):VT(e,n,r,a,i,s,o)}function K4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?E4(e,n,r,a,i):k4(e,n,r,a,i)}function Y4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?JC():ZC()}function q4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?YC():qC()}function J4(e,t,r,n){return t.slice(-4)===".bin"?GE(e,r,n):NE(e,r,n)}function Z4(e,t,r){return tm(e,r)}function Q4(e,t,r){return t.slice(-4)===".bin"?Qb(e,r):qb(e,r)}function eA(e,t,r){return t.slice(-4)===".bin"?jC(e,r):IC(e,r)}function tA(e,t,r){return t.slice(-4)===".bin"?OC(e):DC(e)}function rA(e,t,r,n){return r.slice(-4)===".bin"?BC(e,t,r,n):void 0}function nA(e,t,r){return t.slice(-4)===".bin"?TC(e,t,r):AC(e,t,r)}function aA(e,t,r){return(t.slice(-4)===".bin"?z4:Am)(e)}function iA(e,t,r,n,a){return(t.slice(-4)===".bin"?w4:km)(e,r,n,a)}function sA(e,t,r){return(t.slice(-4)===".bin"?rC:Zh)(e,r)}function oA(e,t,r){return(t.slice(-4)===".bin"?rE:jh)(e,r)}function lA(e,t,r){return(t.slice(-4)===".bin"?zC:im)(e)}function cA(e){return(e.slice(-4)===".bin"?FC:rm)()}var Dm=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,Rm=/([\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(Dm),i,s,o,c;if(a)for(c=0;c!=a.length;++c)i=a[c].match(Rm),(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 fA(e){var t=e.split(/\s+/),r={};if(t.length===1)return r;var n=e.match(Dm),a,i,s,o;if(n)for(o=0;o!=n.length;++o)a=n[o].match(Rm),(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 uA(e,t){var r=ms[e]||Ke(e);return r==="General"?ha(t):Cr(r,t)}function dA(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 hA(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=uA(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 mA(e,t,r){if(r.cellStyles&&t.Interior){var n=t.Interior;n.Pattern&&(n.patternType=SE[n.Pattern]||n.Pattern)}e[t.ID]=t}function pA(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=_d(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=eh[e],f.cellText!==!1&&(n.w=e);break;default:e==""&&t==""?n.t="z":(n.t="s",n.v=_d(t||e));break}if(hA(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 gA(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 Ic(e,t){var r=t||{};Ja();var n=Ui(Zl(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 t3(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,k={s:{r:2e6,c:2e6},e:{r:0,c:0}},R={},T={},C="",U=0,F=[],W={},G={},B=0,H=[],K=[],j={},q=[],ae,pe=!1,Y=[],ce=[],D={},_=0,b=0,E={Sheets:[],WBProps:{date1904:!1}},A={};Yi.lastIndex=0,n=n.replace(/<!--([\s\S]*?)-->/mg,"");for(var X="";o=Yi.exec(n);)switch(o[3]=(X=o[3]).toLowerCase()){case"data":if(X=="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]==="/"?pA(n.slice(v,o.index),C,x,c[c.length-1][0]=="comment"?j:g,{c:y,r:w},R,q[y],p,Y,r):(C="",x=Jr(o[0]),v=o.index+o[0].length);break;case"cell":if(o[1]==="/")if(K.length>0&&(g.c=K),(!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),b=w+(parseInt(g.MergeDown,10)|0),F.push({s:{c:y,r:w},e:{c:_,r:b}})),!r.sheetStubs)g.MergeAcross?y=_+1:++y;else if(g.MergeAcross||g.MergeDown){for(var te=y;te<=_;++te)for(var ee=w;ee<=b;++ee)(te>y||ee>w)&&(r.dense?(h[ee]||(h[ee]=[]),h[ee][te]={t:"z"}):h[mt(te)+Et(ee)]={t:"z"});y=_+1}else++y;else g=fA(o[0]),g.Index&&(y=+g.Index-1),y<k.s.c&&(k.s.c=y),y>k.e.c&&(k.e.c=y),o[0].slice(-2)==="/>"&&++y,K=[];break;case"row":o[1]==="/"||o[0].slice(-2)==="/>"?(w<k.s.r&&(k.s.r=w),w>k.e.r&&(k.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),D={},(p.AutoFitHeight=="0"||p.Height)&&(D.hpx=parseInt(p.Height,10),D.hpt=os(D.hpx),ce[w]=D),p.Hidden=="1"&&(D.hidden=!0,ce[w]=D));break;case"worksheet":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"));d.push(m),k.s.r<=k.e.r&&k.s.c<=k.e.c&&(h["!ref"]=We(k),r.sheetRows&&r.sheetRows<=k.e.r&&(h["!fullref"]=h["!ref"],k.e.r=r.sheetRows-1,h["!ref"]=We(k))),F.length&&(h["!merges"]=F),q.length>0&&(h["!cols"]=q),ce.length>0&&(h["!rows"]=ce),u[m]=h}else k={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?[]:{},F=[],Y=[],ce=[],A={name:m,Hidden:0},E.Sheets.push(A);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]),q=[],pe=!1}break;case"style":o[1]==="/"?mA(R,T,r):T=Jr(o[0]);break;case"numberformat":T.nf=Ke(Jr(o[0]).Format||"General"),ms[T.nf]&&(T.nf=ms[T.nf]);for(var ne=0;ne!=392&&Oe[ne]!=T.nf;++ne);if(ne==392){for(ne=57;ne!=392;++ne)if(Oe[ne]==null){hn(T.nf,ne);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)),!pe&&ae.wpx>10){pe=!0,tr=qh;for(var ie=0;ie<q.length;++ie)q[ie]&&ta(q[ie])}pe&&ta(ae),q[ae.Index-1||q.length]=ae;for(var Se=0;Se<+ae.Span;++Se)q[q.length]=ct(ae);break;case"namedrange":if(o[1]==="/")break;E.Names||(E.Names=[]);var M=Me(o[0]),de={Name:M.Name,Ref:si(M.RefersTo.slice(1),{r:0,c:0})};E.Sheets.length>0&&(de.Sheet=E.Sheets.length-1),E.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]==="/"?C+=n.slice(U,o.index):U=o.index+o[0].length;break;case"interior":if(!r.cellStyles)break;T.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]==="/"?U2(W,X,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("|"));gA(j),K.push(j)}else c.push([o[3],!1]),f=Jr(o[0]),j={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 Hm(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":E.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":A.Hidden=1;break;case"SheetVeryHidden":A.Hidden=2;break}else B=o.index+o[0].length;break;case"header":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Me(o[0]).Margin)||(h["!margins"].header=+Me(o[0]).Margin);break;case"footer":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Me(o[0]).Margin)||(h["!margins"].footer=+Me(o[0]).Margin);break;case"pagemargins":var ke=Me(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":E.Views||(E.Views=[]),E.Views[0]||(E.Views[0]={}),E.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]==="/"?dA(G,X,H,n.slice(B,o.index)):(H=o,B=o.index+o[0].length);break}if(r.WTF)throw"Unrecognized tag: "+o[3]+"|"+c.join("|")}var he={};return!r.bookSheets&&!r.bookProps&&(he.Sheets=u),he.SheetNames=d,he.Workbook=E,he.SSF=ct(Oe),he.Props=W,he.Custprops=G,he}function Pc(e,t){switch(Hc(t=t||{}),t.type||"base64"){case"base64":return Ic(br(e),t);case"binary":case"buffer":case"file":return Ic(e,t);case"array":return Ic(qn(e),t)}}function xA(e,t){var r=[];return e.Props&&r.push($2(e.Props,t)),e.Custprops&&r.push(W2(e.Props,e.Custprops)),r.join("")}function vA(){return""}function wA(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 Om(e){return xe("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Fc(e.Ref,{r:0,c:0})})}function _A(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(Om(a)))}return xe("Names",r.join(""))}function yA(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(Om(o)))}return i.join("")}function kA(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(zt("ProtectContents","True")),e["!protect"].objects&&a.push(zt("ProtectObjects","True")),e["!protect"].scenarios&&a.push(zt("ProtectScenarios","True")),e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells?a.push(zt("EnableSelection","NoSelection")):e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells&&a.push(zt("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 bA(e){return e.map(function(t){var r=jy(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 EA(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(Fc(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=Hy(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+=bA(e.c)),xe("Cell",p,o)}function CA(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 SA(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),k={"ss:Index":v+1};y&&(k["ss:Width"]=is(w.width)),x.hidden&&(k["ss:Hidden"]="1"),o.push(xe("Column",null,k))});for(var c=Array.isArray(e),f=a.s.r;f<=a.e.r;++f){for(var u=[CA(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(EA(p,g,e,t,r,n,m))}}u.push("</Row>"),u.length>2&&o.push(u.join(""))}return o.join("")}function TA(e,t,r){var n=[],a=r.SheetNames[e],i=r.Sheets[a],s=i?yA(i,t,e,r):"";return s.length>0&&n.push("<Names>"+s+"</Names>"),s=i?SA(i,t,e,r):"",s.length>0&&n.push("<Table>"+s+"</Table>"),n.push(kA(i,t,e,r)),n.join("")}function FA(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(xA(e,t)),r.push(vA()),r.push(""),r.push("");for(var n=0;n<e.SheetNames.length;++n)r.push(xe("Worksheet",TA(n,t,e),{"ss:Name":et(e.SheetNames[n])}));return r[2]=wA(e,t),r[3]=_A(e),bt+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 AA(e){var t={},r=e.content;if(r.l=28,t.AnsiUserType=r.read_shift(0,"lpstr-ansi"),t.AnsiClipboardFormat=_2(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=y2(r),n=r.read_shift(4),n==0||n>40))return t;r.l-=4,t.Reserved2=r.read_shift(0,"lpwstr")}var DA=[60,1084,2066,2165,2175];function RA(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=Mc[c],u=0;f!=null&&DA.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=Mc[c=Bn(r,r.l)];var d=Lt(s);Gt(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=Cr(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 OA(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,k,R=[],T=[],C={Sheets:[],WBProps:{date1904:!1},Views:[{}]},U={},F=function(De){return De<8?ba[De]:De<64&&T[De-8]||ba[De]},W=function(De,st,hr){var Pt=st.XF.data;if(!(!Pt||!Pt.patternType||!hr||!hr.cellStyles)){st.s={},st.s.patternType=Pt.patternType;var Pa;(Pa=as(F(Pt.icvFore)))&&(st.s.fgColor={rgb:Pa}),(Pa=as(F(Pt.icvBack)))&&(st.s.bgColor={rgb:Pa})}},G=function(De,st,hr){if(!(D>1)&&!(hr.sheetRows&&De.r>=hr.sheetRows)){if(hr.cellStyles&&st.XF&&st.XF.data&&W(De,st,hr),delete st.ixfe,delete st.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&&st.f){for(var Pt=0;Pt<y.length;++Pt)if(!(y[Pt][0].s.c>De.c||y[Pt][0].s.r>De.r)&&!(y[Pt][0].e.c<De.c||y[Pt][0].e.r<De.r)){st.F=We(y[Pt][0]),(y[Pt][0].s.c!=De.c||y[Pt][0].s.r!=De.r)&&delete st.f,st.f&&(st.f=""+rr(y[Pt][1],s,De,Y,B));break}}hr.dense?(a[De.r]||(a[De.r]=[]),a[De.r][De.c]=st):a[h]=st}},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 H,K=[],j=[],q=[],ae=[],pe=!1,Y=[];Y.SheetNames=B.snames,Y.sharedf=B.sharedf,Y.arrayf=B.arrayf,Y.names=[],Y.XTI=[];var ce=0,D=0,_=0,b=[],E=[],A;B.codepage=1200,Xr(1200);for(var X=!1;e.l<e.length-1;){var te=e.l,ee=e.read_shift(2);if(ee===0&&ce===10)break;var ne=e.l===e.length?0:e.read_shift(2),ie=Mc[ee];if(ie&&ie.f){if(t.bookSheets&&ce===133&&ee!==133)break;if(ce=ee,ie.r===2||ie.r==12){var Se=e.read_shift(2);if(ne-=2,!B.enc&&Se!==ee&&((Se&255)<<8|Se>>8)!==ee)throw new Error("rt mismatch: "+Se+"!="+ee);ie.r==12&&(e.l+=10,ne-=10)}var M={};if(ee===10?M=ie.f(e,ne,B):M=RA(ee,ie,e,ne,B),D==0&&[9,521,1033,2057].indexOf(ce)===-1)continue;switch(ee){case 34:r.opts.Date1904=C.WBProps.date1904=M;break;case 134:r.opts.WriteProtect=!0;break;case 47:if(B.enc||(e.l=0),B.enc=M,!t.password)throw new Error("File is password-protected");if(M.valid==null)throw new Error("Encryption scheme unsupported");if(!M.valid)throw new Error("Password is incorrect");break;case 92:B.lastuser=M;break;case 66:var de=Number(M);switch(de){case 21010:de=1200;break;case 32768:de=1e4;break;case 32769:de=1252;break}Xr(B.codepage=de),X=!0;break;case 317:B.rrtabid=M;break;case 25:B.winlocked=M;break;case 439:r.opts.RefreshAll=M;break;case 12:r.opts.CalcCount=M;break;case 16:r.opts.CalcDelta=M;break;case 17:r.opts.CalcIter=M;break;case 13:r.opts.CalcMode=M;break;case 14:r.opts.CalcPrecision=M;break;case 95:r.opts.CalcSaveRecalc=M;break;case 15:B.CalcRefMode=M;break;case 2211:r.opts.FullCalc=M;break;case 129:M.fDialog&&(a["!type"]="dialog"),M.fBelow||((a["!outline"]||(a["!outline"]={})).above=!0),M.fRight||((a["!outline"]||(a["!outline"]={})).left=!0);break;case 224:R.push(M);break;case 430:Y.push([M]),Y[Y.length-1].XTI=[];break;case 35:case 547:Y[Y.length-1].push(M);break;case 24:case 536:A={Name:M.Name,Ref:rr(M.rgce,s,null,Y,B)},M.itab>0&&(A.Sheet=M.itab-1),Y.names.push(A),Y[0]||(Y[0]=[],Y[0].XTI=[]),Y[Y.length-1].push(M),M.Name=="_xlnm._FilterDatabase"&&M.itab>0&&M.rgce&&M.rgce[0]&&M.rgce[0][0]&&M.rgce[0][0][0]=="PtgArea3d"&&(E[M.itab-1]={ref:We(M.rgce[0][0][1][2])});break;case 22:B.ExternCount=M;break;case 23:Y.length==0&&(Y[0]=[],Y[0].XTI=[]),Y[Y.length-1].XTI=Y[Y.length-1].XTI.concat(M),Y.XTI=Y.XTI.concat(M);break;case 2196:if(B.biff<8)break;A!=null&&(A.Comment=M[1]);break;case 18:a["!protect"]=M;break;case 19:M!==0&&B.WTF&&console.error("Password verifier: "+M);break;case 133:i[M.pos]=M,B.snames.push(M.name);break;case 10:{if(--D)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++}K.length>0&&(a["!merges"]=K),j.length>0&&(a["!objects"]=j),q.length>0&&(a["!cols"]=q),ae.length>0&&(a["!rows"]=ae),C.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}[ee]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[M.BIFFVer]||8),B.biffguess=M.BIFFVer==0,M.BIFFVer==0&&M.dt==4096&&(B.biff=5,X=!0,Xr(B.codepage=28591)),B.biff==8&&M.BIFFVer==0&&M.dt==16&&(B.biff=2),D++)break;if(a=t.dense?[]:{},B.biff<8&&!X&&(X=!0,Xr(B.codepage=t.codepage||1252)),B.biff<5||M.BIFFVer==0&&M.dt==4096){f===""&&(f="Sheet1"),s={s:{r:0,c:0},e:{r:0,c:0}};var Fe={pos:e.l-ne,name:f};i[Fe.pos]=Fe,B.snames.push(f)}else f=(i[te]||{name:""}).name;M.dt==32&&(a["!type"]="chart"),M.dt==64&&(a["!type"]="macro"),K=[],j=[],B.arrayf=y=[],q=[],ae=[],pe=!1,U={Hidden:(i[te]||{hs:0}).hs,name:f}}break;case 515:case 3:case 2:a["!type"]=="chart"&&(t.dense?(a[M.r]||[])[M.c]:a[Ne({c:M.c,r:M.r})])&&++M.c,w={ixfe:M.ixfe,XF:R[M.ixfe]||{},v:M.val,t:"n"},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t);break;case 5:case 517:w={ixfe:M.ixfe,XF:R[M.ixfe],v:M.val,t:M.t},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t);break;case 638:w={ixfe:M.ixfe,XF:R[M.ixfe],v:M.rknum,t:"n"},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t);break;case 189:for(var ke=M.c;ke<=M.C;++ke){var he=M.rkrec[ke-M.c][0];w={ixfe:he,XF:R[he],v:M.rkrec[ke-M.c][1],t:"n"},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:ke,r:M.r},w,t)}break;case 6:case 518:case 1030:{if(M.val=="String"){o=M;break}if(w=Bo(M.val,M.cell.ixfe,M.tt),w.XF=R[w.ixfe],t.cellFormula){var Qe=M.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(M.formula,s,M.cell,Y,B):w.F=((t.dense?(a[vr]||[])[Hr]:a[jr])||{}).F}else w.f=""+rr(M.formula,s,M.cell,Y,B)}_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G(M.cell,w,t),o=M}break;case 7:case 519:if(o)o.val=M,w=Bo(M,o.cell.ixfe,"s"),w.XF=R[w.ixfe],t.cellFormula&&(w.f=""+rr(o.formula,s,o.cell,Y,B)),_>0&&(w.z=b[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(M);var gi=Ne(M[0].s);if(m=t.dense?(a[M[0].s.r]||[])[M[0].s.c]:a[gi],t.cellFormula&&m){if(!o||!gi||!m)break;m.f=""+rr(M[1],s,M[0],Y,B),m.F=We(M[0])}}break;case 1212:{if(!t.cellFormula)break;if(h){if(!o)break;v[Ne(o.cell)]=M[0],m=t.dense?(a[o.cell.r]||[])[o.cell.c]:a[Ne(o.cell)],(m||{}).f=""+rr(M[0],s,d,Y,B)}}break;case 253:w=Bo(c[M.isst].t,M.ixfe,"s"),c[M.isst].h&&(w.h=c[M.isst].h),w.XF=R[w.ixfe],_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t);break;case 513:t.sheetStubs&&(w={ixfe:M.ixfe,XF:R[M.ixfe],t:"z"},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t));break;case 190:if(t.sheetStubs)for(var kn=M.c;kn<=M.C;++kn){var dr=M.ixfe[kn-M.c];w={ixfe:dr,XF:R[dr],t:"z"},_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:kn,r:M.r},w,t)}break;case 214:case 516:case 4:w=Bo(M.val,M.ixfe,"s"),w.XF=R[w.ixfe],_>0&&(w.z=b[w.ixfe>>8&63]),xn(w,t,r.opts.Date1904),G({c:M.c,r:M.r},w,t);break;case 0:case 512:D===1&&(s=M);break;case 252:c=M;break;case 1054:if(B.biff==4){b[_++]=M[1];for(var on=0;on<_+163&&Oe[on]!=M[1];++on);on>=163&&hn(M[1],_+163)}else hn(M[1],M[0]);break;case 30:{b[_++]=M;for(var bn=0;bn<_+163&&Oe[bn]!=M;++bn);bn>=163&&hn(M,_+163)}break;case 229:K=K.concat(M);break;case 93:j[M.cmo[0]]=B.lastobj=M;break;case 438:B.lastobj.TxO=M;break;case 127:B.lastobj.ImData=M;break;case 440:for(x=M[0].s.r;x<=M[0].e.r;++x)for(p=M[0].s.c;p<=M[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&(m.l=M[1]);break;case 2048:for(x=M[0].s.r;x<=M[0].e.r;++x)for(p=M[0].s.c;p<=M[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&m.l&&(m.l.Tooltip=M[1]);break;case 28:{if(B.biff<=5&&B.biff>=2)break;m=t.dense?(a[M[0].r]||[])[M[0].c]:a[Ne(M[0])];var Ia=j[M[2]];m||(t.dense?(a[M[0].r]||(a[M[0].r]=[]),m=a[M[0].r][M[0].c]={t:"z"}):m=a[Ne(M[0])]={t:"z"},s.e.r=Math.max(s.e.r,M[0].r),s.s.r=Math.min(s.s.r,M[0].r),s.e.c=Math.max(s.e.c,M[0].c),s.s.c=Math.min(s.s.c,M[0].c)),m.c||(m.c=[]),g={a:M[1],t:Ia.TxO.t},m.c.push(g)}break;case 2173:wC(R[M.ixfe],M.ext);break;case 125:{if(!B.cellStyles)break;for(;M.e>=M.s;)q[M.e--]={width:M.w/256,level:M.level||0,hidden:!!(M.flags&1)},pe||(pe=!0,Ec(M.w/256)),ta(q[M.e+1])}break;case 520:{var ot={};M.level!=null&&(ae[M.r]=ot,ot.level=M.level),M.hidden&&(ae[M.r]=ot,ot.hidden=!0),M.hpt&&(ae[M.r]=ot,ot.hpt=M.hpt,ot.hpx=ai(M.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"}[ee]]=M;break;case 161:a["!margins"]||Aa(a["!margins"]={}),a["!margins"].header=M.header,a["!margins"].footer=M.footer;break;case 574:M.RTL&&(C.Views[0].RTL=!0);break;case 146:T=M;break;case 2198:H=M;break;case 140:k=M;break;case 442:f?U.CodeName=M||U.name:C.WBProps.CodeName=M||"ThisWorkbook";break}}else ie||console.error("Missing Info for XLS Record 0x"+ee.toString(16)),e.l+=ne}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&&E.forEach(function(Ht,De){r.Sheets[r.SheetNames[De]]["!autofilter"]=Ht}),r.Strings=c,r.SSF=ct(Oe),B.enc&&(r.Encryption=B.enc),H&&(r.Themes=H),r.Metadata={},k!==void 0&&(r.Metadata.Country=k),Y.names.length>0&&(C.Names=Y.names),r.Workbook=C,r}var ps={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function BA(e,t,r){var n=Ae.find(e,"/!DocumentSummaryInformation");if(n&&n.size>0)try{var a=wh(n,fc,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=wh(s,uc,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&&(oh(t.HeadingPairs,t.TitlesOfParts,t,r),delete t.HeadingPairs,delete t.TitlesOfParts)}function NA(e,t){var r=[],n=[],a=[],i=0,s,o=sd(fc,"n"),c=sd(uc,"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)xh.indexOf(a[i][0])>-1||sh.indexOf(a[i][0])>-1||a[i][1]!=null&&f.push(a[i]);n.length&&Ae.utils.cfb_add(t,"/SummaryInformation",_h(n,ps.SI,c,uc)),(r.length||f.length)&&Ae.utils.cfb_add(t,"/DocumentSummaryInformation",_h(r,ps.DSI,o,fc,f.length?f:null,ps.UDI))}function Bm(e,t){t||(t={}),Hc(t),Ul(),t.codepage&&Vl(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=Er(br(e));break;case"binary":e=Er(e);break;case"buffer":break;case"array":Array.isArray(e)||(e=Array.prototype.slice.call(e));break}Gt(e,0),n={content:e}}var a,i;if(r&&AA(r),t.bookProps&&!t.bookSheets)a={};else{var s=je?"buffer":"array";if(n&&n.content)a=OA(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=XC(e))}var o={};return e.FullPaths&&BA(e,o,t),a.Props=a.Custprops=o,t.bookFiles&&(a.cfb=e),a}function IA(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,Nm(e,r)),r.biff==8&&(e.Props||e.Custprops)&&NA(e,n),r.biff==8&&e.vbaraw&&KC(n,Ae.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"})),n}var gs={0:{f:iF},1:{f:hF},2:{f:OF},3:{f:yF},4:{f:xF},5:{f:AF},6:{f:MF},7:{f:CF},8:{f:jF},9:{f:HF},10:{f:$F},11:{f:WF},12:{f:pF},13:{f:NF},14:{f:bF},15:{f:wF},16:{f:bm},17:{f:VF},18:{f:TF},19:{f:ac},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:V4},40:{},42:{},43:{f:ME},44:{f:IE},45:{f:UE},46:{f:WE},47:{f:$E},48:{},49:{f:l2},50:{},51:{f:kC},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:Uh},62:{f:PF},63:{f:RC},64:{f:s4},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:r4},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:uF},148:{f:lF,p:16},151:{f:qF},152:{},153:{f:P4},154:{},155:{},156:{f:N4},157:{},158:{},159:{T:1,f:Zb},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:zF},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:_C},336:{T:-1},337:{f:CC,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:sc},357:{},358:{},359:{},360:{T:1},361:{},362:{f:Lh},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:JF},427:{f:ZF},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:e4},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:fF},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:KF},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:sc},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:WC},633:{T:1},634:{T:-1},635:{T:1,f:UC},636:{T:-1},637:{f:d2},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:b4},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:o4},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:""}},Mc={6:{f:Dc},10:{f:ea},12:{f:Ft},13:{f:Ft},14:{f:Ct},15:{f:Ct},16:{f:Qt},17:{f:Ct},18:{f:Ct},19:{f:Ft},20:{f:Ih},21:{f:Ih},23:{f:Lh},24:{f:Mh},25:{f:Ct},26:{},27:{},28:{f:ob},29:{},34:{f:Ct},35:{f:Ph},38:{f:Qt},39:{f:Qt},40:{f:Qt},41:{f:Qt},42:{f:Ct},43:{f:Ct},47:{f:wE},49:{f:Nk},51:{f:Ft},60:{},61:{f:Ak},64:{f:Ct},65:{f:Bk},66:{f:Ft},77:{},80:{},81:{},82:{},85:{f:Ft},89:{},90:{},91:{},92:{f:vk},93:{f:fb},94:{},95:{f:Ct},96:{},97:{},99:{f:Ct},125:{f:Uh},128:{f:Yk},129:{f:_k},130:{f:Ft},131:{f:Ct},132:{f:Ct},133:{f:yk},134:{},140:{f:vb},141:{f:Ft},144:{},146:{f:yb},151:{},152:{},153:{},154:{},155:{},156:{f:Ft},157:{},158:{},160:{f:Fb},161:{f:Eb},174:{},175:{},176:{},177:{},178:{},180:{},181:{},182:{},184:{},185:{},189:{f:zk},190:{f:Gk},193:{f:ea},197:{},198:{},199:{},200:{},201:{},202:{f:Ct},203:{},204:{},205:{},206:{},207:{},208:{},209:{},210:{},211:{},213:{},215:{},216:{},217:{},218:{f:Ft},220:{},221:{f:Ct},222:{},224:{f:Kk},225:{f:xk},226:{f:ea},227:{},229:{f:lb},233:{},235:{},236:{},237:{},239:{},240:{},241:{},242:{},244:{},245:{},246:{},247:{},248:{},249:{},251:{},252:{f:bk},253:{f:Pk},255:{f:Ck},256:{},259:{},290:{},311:{},312:{},315:{},317:{f:yh},318:{},319:{},320:{},330:{},331:{},333:{},334:{},335:{},336:{},337:{},338:{},339:{},340:{},351:{},352:{f:Ct},353:{f:ea},401:{},402:{},403:{},404:{},405:{},406:{},407:{},408:{},425:{},426:{},427:{},428:{},429:{},430:{f:eb},431:{f:Ct},432:{},433:{},434:{},437:{},438:{f:hb},439:{f:Ct},440:{f:mb},441:{},442:{f:ns},443:{},444:{f:Ft},445:{},446:{},448:{f:ea},449:{f:Fk,r:2},450:{f:ea},512:{f:Oh},513:{f:Tb},515:{f:Zk},516:{f:Lk},517:{f:Nh},519:{f:Ab},520:{f:Sk},523:{},545:{f:Vh},549:{f:Rh},566:{},574:{f:Rk},638:{f:jk},659:{},1048:{},1054:{f:Uk},1084:{},1212:{f:ab},2048:{f:gb},2049:{},2050:{},2051:{},2052:{},2053:{},2054:{},2055:{},2056:{},2057:{f:Co},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:kb,r:12},2173:{f:vC,r:12},2174:{},2175:{},2180:{},2181:{},2182:{},2183:{},2184:{},2185:{},2186:{},2187:{},2188:{f:Ct,r:12},2189:{},2190:{r:12},2191:{},2192:{},2194:{},2195:{},2196:{f:nb,r:12},2197:{},2198:{f:dC,r:12},2199:{},2200:{},2201:{},2202:{f:ib,r:12},2203:{f:ea},2204:{},2205:{},2206:{},2207:{},2211:{f:Tk},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:Ft},4135:{},4146:{},4147:{},4148:{},4149:{},4154:{},4156:{},4157:{},4158:{},4159:{},4160:{},4161:{},4163:{},4164:{f:Cb},4165:{},4166:{},4168:{},4170:{},4171:{},4174:{},4175:{},4176:{},4177:{},4187:{},4188:{f:_b},4189:{},4191:{},4192:{},4193:{},4194:{},4195:{},4196:{},4197:{},4198:{},4199:{},4200:{},0:{f:Oh},1:{},2:{f:Nb},3:{f:Ob},4:{f:Rb},5:{f:Nh},7:{f:Pb},8:{},9:{f:Co},11:{},22:{f:Ft},30:{f:Wk},31:{},32:{},33:{f:Vh},36:{},37:{f:Rh},50:{f:Mb},62:{},52:{},67:{},68:{f:Ft},69:{},86:{},126:{},127:{f:Db},135:{},136:{},137:{},145:{},148:{},149:{},150:{},169:{},171:{},188:{},191:{},192:{},194:{},195:{},214:{f:Lb},223:{},234:{},354:{},421:{},518:{f:Dc},521:{f:Co},536:{f:Mh},547:{f:Ph},561:{},579:{},1030:{f:Dc},1033:{f:Co},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&&ec(r)&&e.push(r)}}function PA(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 MA(e,t,r,n){var a=se(9);return xs(a,e,t),kh(r,n||"b",a),a}function LA(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 VA(e,t,r,n){if(t.v!=null)switch(t.t){case"d":case"n":var a=t.t=="d"?Bt(lt(t.v)):t.v;a==(a|0)&&a>=0&&a<65536?ve(e,2,Ib(r,n,a)):ve(e,3,Bb(r,n,a));return;case"b":case"e":ve(e,5,MA(r,n,t.v,t.t));return;case"s":case"str":ve(e,4,LA(r,n,(t.v||"").slice(0,255)));return}ve(e,1,xs(null,r,n))}function UA(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&&VA(e,d,f,u)}}}function $A(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,wc(e,16,r)),UA(n,e.Sheets[e.SheetNames[a]],a,r),ve(n,10),n.end()}function WA(e,t,r){ve(e,49,Ik({sz:12,color:{theme:1},name:"Arial",family:2,scheme:"minor"},r))}function HA(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,$k(a,t[a],r))})}function jA(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),Fh(Ye(t["!ref"]||"A1"),r),r.write_shift(4,4),ve(e,2152,r)}function zA(e,t){for(var r=0;r<16;++r)ve(e,224,Bh({numFmtId:0,style:!0},0,t));t.cellXfs.forEach(function(n){ve(e,224,Bh(n,0,t))})}function GA(e,t){for(var r=0;r<t["!links"].length;++r){var n=t["!links"][r];ve(e,440,pb(n)),n[1].Tooltip&&ve(e,2048,xb(n))}delete t["!links"]}function XA(e,t){if(t){var r=0;t.forEach(function(n,a){++r<=256&&n&&ve(e,125,bb(Oo(a,n),a))})}}function KA(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,_T(t,r,n,a,i));else switch(t.t){case"d":case"n":var s=t.t=="d"?Bt(lt(t.v)):t.v;ve(e,515,Qk(r,n,s,i));break;case"b":case"e":ve(e,517,Jk(r,n,t.v,i,a,t.t));break;case"s":case"str":if(a.bookSST){var o=Oc(a.Strings,t.v,a.revStrings);ve(e,253,Mk(r,n,o,i))}else ve(e,516,Vk(r,n,(t.v||"").slice(0,255),i,a));break;default:ve(e,513,Ta(r,n,i))}}function YA(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,wc(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,qk([0,0])),ve(n,131,cr(!1)),ve(n,132,cr(!1)),f&&XA(n,i["!cols"]),ve(n,512,Hk(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&&(KA(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,Ok((s.Views||[])[0])),f&&(i["!merges"]||[]).length&&ve(n,229,cb(i["!merges"])),f&&GA(n,i),ve(n,442,bh(y)),f&&jA(n,i),ve(n,10),n.end()}function qA(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,wc(e,5,r)),r.bookType=="xla"&&ve(n,135),ve(n,225,o?Vr(1200):null),ve(n,193,J2(2)),c&&ve(n,191),c&&ve(n,192),ve(n,226),ve(n,92,wk("SheetJS",r)),ve(n,66,Vr(o?1200:1252)),o&&ve(n,353,Vr(0)),o&&ve(n,448),ve(n,317,Sb(e.SheetNames.length)),o&&e.vbaraw&&ve(n,211),o&&e.vbaraw){var f=s.CodeName||"ThisWorkbook";ve(n,442,bh(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,Dk()),ve(n,64,cr(!1)),ve(n,141,Vr(0)),ve(n,34,cr(F4(e)=="true")),ve(n,14,cr(!0)),o&&ve(n,439,cr(!1)),ve(n,218,Vr(0)),WA(n,e,r),HA(n,e.SSF,r),zA(n,r),o&&ve(n,352,cr(!1));var u=n.end(),d=pr();o&&ve(d,140,wb()),o&&r.Strings&&PA(d,252,Ek(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,kk({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),Lt(w)}function JA(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,jc(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]=YA(a,r,e);return n.unshift(qA(e,n,r)),Lt(n)}function Nm(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 JA(e,t);case 4:case 3:case 2:return $A(e,t)}throw new Error("invalid type "+i.bookType+" for BIFF")}function Im(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=Py(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,k=0;w.charAt(0)=="<"&&(k=w.indexOf(">"))>-1;)w=w.slice(k+1);for(var R=0;R<g.length;++R){var T=g[R];T.s.c==u&&T.s.r<f&&f<=T.e.r&&(u=T.e.c+1,R=-1)}var C=Me(y.slice(0,y.indexOf(">")));h=C.colspan?+C.colspan:1,((d=+C.rowspan)>1||h>1)&&g.push({s:{r:f,c:u},e:{r:f+(d||1)-1,c:u+h-1}});var U=C.t||C["data-t"]||"";if(!w.length){u+=h;continue}if(w=bd(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 F={t:"s",v:w};r.raw||!w.trim().length||U=="s"||(w==="TRUE"?F={t:"b",v:!0}:w==="FALSE"?F={t:"b",v:!1}:isNaN(Yr(w))?isNaN(Za(w).getDate())||(F={t:"d",v:lt(w)},r.cellDates||(F={t:"n",v:Bt(F.v)}),F.z=r.dateNF||Oe[14]):F={t:"n",v:Yr(w)}),r.dense?(n[f]||(n[f]=[]),n[f][u]=F):n[Ne({r:f,c:u})]=F,u+=h}}}}return n["!ref"]=We(m),g.length&&(n["!merges"]=g),n}function ZA(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||Yl(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 QA='<html><head><meta charset="utf-8"/><title>SheetJS Table Export</title></head><body>',e3="</body></html>";function t3(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(Im(r[0],t),t);var n=Yc();return r.forEach(function(a,i){qc(n,Im(a,t),"Sheet"+(i+1))}),n}function r3(e,t,r){var n=[];return n.join("")+"<table"+(r&&r.id?' id="'+r.id+'"':"")+">"}function Pm(e,t){var r=t||{},n=r.header!=null?r.header:QA,a=r.footer!=null?r.footer:e3,i=[n],s=gr(e["!ref"]);r.dense=Array.isArray(e),i.push(r3(e,s,r));for(var o=s.s.r;o<=s.e.r;++o)i.push(ZA(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 k=o[g];if(Vm(k)){if(n.display)continue;m[p]={hidden:!0}}var R=k.children;for(x=v=0;x<R.length;++x){var T=R[x];if(!(n.display&&Vm(T))){var C=T.hasAttribute("data-v")?T.getAttribute("data-v"):T.hasAttribute("v")?T.getAttribute("v"):bd(T.innerHTML),U=T.getAttribute("data-z")||T.getAttribute("z");for(h=0;h<d.length;++h){var F=d[h];F.s.c==v+i&&F.s.r<p+a&&p+a<=F.e.r&&(v=F.e.c+1-i,h=-1)}w=+T.getAttribute("colspan")||1,((y=+T.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 W={t:"s",v:C},G=T.getAttribute("data-t")||T.getAttribute("t")||"";C!=null&&(C.length==0?W.t=G||"z":n.raw||C.trim().length==0||G=="s"||(C==="TRUE"?W={t:"b",v:!0}:C==="FALSE"?W={t:"b",v:!1}:isNaN(Yr(C))?isNaN(Za(C).getDate())||(W={t:"d",v:lt(C)},n.cellDates||(W={t:"n",v:Bt(W.v)}),W.z=n.dateNF||Oe[14]):W={t:"n",v:Yr(C)})),W.z===void 0&&U!=null&&(W.z=U);var B="",H=T.getElementsByTagName("A");if(H&&H.length)for(var K=0;K<H.length&&!(H[K].hasAttribute("href")&&(B=H[K].getAttribute("href"),B.charAt(0)!="#"));++K);B&&B.charAt(0)!="#"&&(W.l={Target:B}),n.dense?(e[p+a]||(e[p+a]=[]),e[p+a][v+i]=W):e[Ne({c:v+i,r:p+a})]=W,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 Lm(e,t){var r=t||{},n=r.dense?[]:{};return Mm(n,e,t)}function n3(e,t){return Qn(Lm(e,t),t)}function Vm(e){var t="",r=a3(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),t==="none"}function a3(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}function i3(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 Um={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 $m(e,t){var r=t||{},n=Zl(e),a=[],i,s,o={name:""},c="",f=0,u,d,h={},m=[],g=r.dense?[]:{},p,x,v={value:""},y="",w=0,k=[],R=-1,T=-1,C={s:{r:1e6,c:1e7},e:{r:0,c:0}},U=0,F={},W=[],G={},B=0,H=0,K=[],j=1,q=1,ae=[],pe={Names:[]},Y={},ce=["",""],D=[],_={},b="",E=0,A=!1,X=!1,te=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]==="/"?(C.e.c>=C.s.c&&C.e.r>=C.s.r?g["!ref"]=We(C):g["!ref"]="A1:A1",r.sheetRows>0&&r.sheetRows<=C.e.r&&(g["!fullref"]=g["!ref"],C.e.r=r.sheetRows-1,g["!ref"]=We(C)),W.length&&(g["!merges"]=W),K.length&&(g["!rows"]=K),u.name=u.名称||u.name,typeof JSON<"u"&&JSON.stringify(u),m.push(u.name),h[u.name]=g,X=!1):p[0].charAt(p[0].length-2)!=="/"&&(u=Me(p[0],!1),R=T=-1,C.s.r=C.s.c=1e7,C.e.r=C.e.c=0,g=r.dense?[]:{},W=[],K=[],X=!0);break;case"table-row-group":p[1]==="/"?--U:++U;break;case"table-row":case"行":if(p[1]==="/"){R+=j,j=1;break}if(d=Me(p[0],!1),d.行号?R=d.行号-1:R==-1&&(R=0),j=+d["number-rows-repeated"]||1,j<10)for(te=0;te<j;++te)U>0&&(K[R+te]={level:U});T=-1;break;case"covered-table-cell":p[1]!=="/"&&++T,r.sheetStubs&&(r.dense?(g[R]||(g[R]=[]),g[R][T]={t:"z"}):g[Ne({r:R,c:T})]={t:"z"}),y="",k=[];break;case"table-cell":case"数据":if(p[0].charAt(p[0].length-2)==="/")++T,v=Me(p[0],!1),q=parseInt(v["number-columns-repeated"]||"1",10),x={t:"z",v:null},v.formula&&r.cellFormula!=!1&&(x.f=wm(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][T]=x):g[Ne({r:R,c:T})]=x),T+=q-1;else if(p[1]!=="/"){++T,y="",w=0,k=[],q=1;var ee=j?R+j-1:R;if(T>C.e.c&&(C.e.c=T),T<C.s.c&&(C.s.c=T),R<C.s.r&&(C.s.r=R),ee>C.e.r&&(C.e.r=ee),v=Me(p[0],!1),D=[],_={},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,H=parseInt(v["number-matrix-columns-spanned"],10)||0,G={s:{r:R,c:T},e:{r:R+B-1,c:T+H-1}},x.F=We(G),ae.push([G,x.F])),v.formula)x.f=wm(v.formula);else for(te=0;te<ae.length;++te)R>=ae[te][0].s.r&&R<=ae[te][0].e.r&&T>=ae[te][0].s.c&&T<=ae[te][0].e.c&&(x.F=ae[te][1]);switch((v["number-columns-spanned"]||v["number-rows-spanned"])&&(B=parseInt(v["number-rows-spanned"],10)||0,H=parseInt(v["number-columns-spanned"],10)||0,G={s:{r:R,c:T},e:{r:R+B-1,c:T+H-1}},W.push(G)),v["number-columns-repeated"]&&(q=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=Bt(x.v)),x.z="m/d/yy";break;case"time":x.t="n",x.v=By(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"]),k=[]);else throw new Error("Unsupported value type "+x.t)}}else{if(A=!1,x.t==="s"&&(x.v=y||"",k.length&&(x.R=k),A=w==0),Y.Target&&(x.l=Y),D.length>0&&(x.c=D,D=[]),y&&r.cellText!==!1&&(x.w=y),A&&(x.t="z",delete x.v),(!A||r.sheetStubs)&&!(r.sheetRows&&r.sheetRows<=R))for(var ne=0;ne<j;++ne){if(q=parseInt(v["number-columns-repeated"]||"1",10),r.dense)for(g[R+ne]||(g[R+ne]=[]),g[R+ne][T]=ne==0?x:ct(x);--q>0;)g[R+ne][T+q]=ct(x);else for(g[Ne({r:R+ne,c:T})]=x;--q>0;)g[Ne({r:R+ne,c:T+q})]=ct(x);C.e.c<=T&&(C.e.c=T)}q=parseInt(v["number-columns-repeated"]||"1",10),T+=q-1,q=0,x={},y="",k=[]}Y={};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,k.length&&(_.R=k),_.a=b,D.push(_)}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!1]);b="",E=0,y="",w=0,k=[];break;case"creator":p[1]==="/"?b=n.slice(E,p.index):E=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,k=[];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(F[o.name]=c,(i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&(c="",o=Me(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=Me(p[0],!1),c+=Um[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=Me(p[0],!1),c+=Um[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=Me(p[0],!1),ce=Rc(s["cell-range-address"]);var ie={Name:s.name,Ref:ce[0]+"!"+ce[1]};X&&(ie.Sheet=m.length),pe.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=i3(n.slice(w,p.index));y=(y.length>0?y+`
|
||
`:"")+Se[0]}else Me(p[0],!1),w=p.index+p[0].length;break;case"s":break;case"database-range":if(p[1]==="/")break;try{ce=Rc(Me(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(Y=Me(p[0],!1),!Y.href)break;Y.Target=Ke(Y.href),delete Y.href,Y.Target.charAt(0)=="#"&&Y.Target.indexOf(".")>-1?(ce=Rc(Y.Target.slice(1)),Y.Target="#"+ce[0]+"!"+ce[1]):Y.Target.match(/^\.\.[\\\/]/)&&(Y.Target=Y.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 M={Sheets:h,SheetNames:m,Workbook:pe};return r.bookSheets&&delete M.Sheets,M}function Wm(e,t){t=t||{},Pr(e,"META-INF/manifest.xml")&&O2(Tt(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=$m(at(r),t);return Pr(e,"meta.xml")&&(n.Props=ah(Tt(e,"meta.xml"))),n}function Hm(e,t){return $m(e,t)}var s3=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 bt+t}}(),jm=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 k=Ne({r:f,c:u}),R=g?(i[f]||[])[u]:i[k];if(R&&R.f&&(y["table:formula"]=et(ST(R.f)),R.F&&R.F.slice(0,k.length)==k)){var T=gr(R.F);y["table:number-matrix-columns-spanned"]=T.e.c-T.s.c+1,y["table:number-matrix-rows-spanned"]=T.e.r-T.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 C=e(w);if(R.l&&R.l.Target){var U=R.l.Target;U=U.charAt(0)=="#"?"#"+TT(U.slice(1)):U,U.charAt(0)!="#"&&!U.match(/^\w+:/)&&(U="../"+U),C=xe("text:a",C,{"xlink:href":U.replace(/&/g,"&")})}c.push(" "+xe("table:table-cell",xe("text:p",C,{}),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=[bt],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(nh().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 zm(e,t){if(t.bookType=="fods")return jm(e,t);var r=Gl(),n="",a=[],i=[];return n="mimetype",He(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",He(r,n,jm(e,t)),a.push([n,"text/xml"]),i.push([n,"ContentFile"]),n="styles.xml",He(r,n,s3(e,t)),a.push([n,"text/xml"]),i.push([n,"StylesFile"]),n="meta.xml",He(r,n,bt+nh()),a.push([n,"text/xml"]),i.push([n,"MetadataFile"]),n="manifest.rdf",He(r,n,I2(i)),a.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",He(r,n,B2(a)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Da(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Lc(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):at(qn(e))}function o3(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Er(pn(e))}function l3(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 Gm(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>>24}function c3(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 f3(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 Xt(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 Vc(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:Xt(s.meta),type:2})});var i=Xt(n);t.push(rt(i.length)),t.push(i),a.forEach(function(s){return t.push(s)})}),aa(t)}function u3(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(u3(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 d3(e,t,r,n){var a=Da(e),i=a.getUint32(4,!0),s=(n>1?12:8)+Gm(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+=Gm(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 h3(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=c3(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 Uc(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,f3(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 $c(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 m3(e,t,r){switch(e[0]){case 0:case 1:case 2:case 3:return d3(e,t,r,e[0]);case 5:return h3(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 Xm(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]=Lc(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 Lc(g.data)}).join("")}break}}),i}function p3(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,k,R;if((i=(a=x[7])==null?void 0:a[0])!=null&&i.data&&t!=0)k=(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)k=(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 T=w?4:1,C=Da(k),U=[],F=0;F<k.length/2;++F){var W=C.getUint16(F*2,!0);W<65535&&U.push([F,W])}if(U.length!=y)throw"Expected ".concat(y," cells, found ").concat(U.length);var G=[];for(F=0;F<U.length-1;++F)G[U[F][0]]=R.subarray(U[F][1]*T,U[F+1][1]*T);return U.length>=1&&(G[U[U.length-1][0]]=R.subarray(U[U.length-1][1]*T)),{R:v,cells:G}}function g3(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=Vc(n[5],function(s){return p3(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 x3(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=Xm(e,e[nr(s[4][0].data)][0]),c=(n=s[17])!=null&&n[0]?Xm(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=g3(e,m);p.data.forEach(function(x,v){x.forEach(function(y,w){var k=Ne({r:u+v,c:w}),R=m3(y,o,c);R&&(r[k]=R)})}),u+=p.nrows})}function v3(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 x3(e,a[0],n),n}function w3(e,t){var r,n=qe(t.data),a={name:(r=n[1])!=null&&r[0]?Lc(n[1][0].data):"",sheets:[]},i=Vc(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(v3(e,o))})}),a}function _3(e,t){var r=Yc(),n=qe(t.data),a=Vc(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=w3(e,s);c.sheets.forEach(function(f,u){qc(r,f,u==0?c.name:c.name+"_"+u,!0)})}})}),r.SheetNames.length==0)throw new Error("Empty NUMBERS file");return r}function Wc(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 _3(i,o)}function y3(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=Uc({t:"s",v:t[p]},r),v=$c({t:"s",v:t[p]},r);break;case"number":x=Uc({t:"n",v:t[p]},r),v=$c({t:"n",v:t[p]},r);break;case"boolean":x=Uc({t:"b",v:t[p]},r),v=$c({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 k3(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(b){return b.forEach(function(E){typeof E=="string"&&s.push(E)})});var o={},c=[],f=Ae.read(t.numbers,{type:"base64"});f.FileIndex.map(function(b,E){return[b,f.FullPaths[E]]}).forEach(function(b){var E=b[0],A=b[1];if(E.type==2&&E.name.match(/\.iwa/)){var X=E.content,te=$r(X),ee=Ur(te);ee.forEach(function(ne){c.push(ne.id),o[ne.id]={deps:[],location:A,type:kt(ne.messages[0].meta[1][0].data)}})}}),c.sort(function(b,E){return b-E});var u=c.filter(function(b){return b>1}).map(function(b){return[b,rt(b)]});f.FileIndex.map(function(b,E){return[b,f.FullPaths[E]]}).forEach(function(b){var E=b[0];if(b[1],!!E.name.match(/\.iwa/)){var A=Ur($r(E.content));A.forEach(function(X){X.messages.forEach(function(te){u.forEach(function(ee){X.messages.some(function(ne){return kt(ne.meta[1][0].data)!=11006&&l3(ne.data,ee[1])})&&o[ee[0]].deps.push(X.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),k=Ur($r(w.content));{for(var R=0;R<k.length&&k[R].id!=y;++R);if(k[R].id!=y)throw"Bad ColumnRowUIDMapArchive";var T=qe(k[R].messages[0].data);T[1]=[],T[2]=[],T[3]=[];for(var C=0;C<=n.e.c;++C){var U=[];U[1]=U[2]=[{type:0,data:rt(C+420690)}],T[1].push({type:2,data:Xt(U)}),T[2].push({type:0,data:rt(C)}),T[3].push({type:0,data:rt(C)})}T[4]=[],T[5]=[],T[6]=[];for(var F=0;F<=n.e.r;++F)U=[],U[1]=U[2]=[{type:0,data:rt(F+726270)}],T[4].push({type:2,data:Xt(U)}),T[5].push({type:0,data:rt(F)}),T[6].push({type:0,data:rt(F)});k[R].messages[0].data=Xt(T)}w.content=ci(li(k)),w.size=w.content.length,delete v[46];var W=qe(v[4][0].data);{W[7][0].data=rt(n.e.r+1);var G=qe(W[1][0].data),B=nr(G[2][0].data);w=Ae.find(f,o[B].location),k=Ur($r(w.content));{if(k[0].id!=B)throw"Bad HeaderStorageBucket";var H=qe(k[0].messages[0].data);for(F=0;F<i.length;++F){var K=qe(H[2][0].data);K[1][0].data=rt(F),K[4][0].data=rt(i[F].length),H[2][F]={type:H[2][0].type,data:Xt(K)}}k[0].messages[0].data=Xt(H)}w.content=ci(li(k)),w.size=w.content.length;var j=nr(W[2][0].data);w=Ae.find(f,o[j].location),k=Ur($r(w.content));{if(k[0].id!=j)throw"Bad HeaderStorageBucket";for(H=qe(k[0].messages[0].data),C=0;C<=n.e.c;++C)K=qe(H[2][0].data),K[1][0].data=rt(C),K[4][0].data=rt(n.e.r+1),H[2][C]={type:H[2][0].type,data:Xt(K)};k[0].messages[0].data=Xt(H)}w.content=ci(li(k)),w.size=w.content.length;var q=nr(W[4][0].data);(function(){for(var b=Ae.find(f,o[q].location),E=Ur($r(b.content)),A,X=0;X<E.length;++X){var te=E[X];te.id==q&&(A=te)}var ee=qe(A.messages[0].data);{ee[3]=[];var ne=[];s.forEach(function(M,de){ne[1]=[{type:0,data:rt(de)}],ne[2]=[{type:0,data:rt(1)}],ne[3]=[{type:2,data:o3(M)}],ee[3].push({type:2,data:Xt(ne)})})}A.messages[0].data=Xt(ee);var ie=li(E),Se=ci(ie);b.content=Se,b.size=b.content.length})();var ae=qe(W[3][0].data);{var pe=ae[1][0];delete ae[2];var Y=qe(pe.data);{var ce=nr(Y[2][0].data);(function(){for(var b=Ae.find(f,o[ce].location),E=Ur($r(b.content)),A,X=0;X<E.length;++X){var te=E[X];te.id==ce&&(A=te)}var ee=qe(A.messages[0].data);{delete ee[6],delete ae[7];var ne=new Uint8Array(ee[5][0].data);ee[5]=[];for(var ie=0,Se=0;Se<=n.e.r;++Se){var M=qe(ne);ie+=y3(M,i[Se],s),M[1][0].data=rt(Se),ee[5].push({data:Xt(M),type:2})}ee[1]=[{type:0,data:rt(n.e.c+1)}],ee[2]=[{type:0,data:rt(n.e.r+1)}],ee[3]=[{type:0,data:rt(ie)}],ee[4]=[{type:0,data:rt(n.e.r+1)}]}A.messages[0].data=Xt(ee);var de=li(E),_e=ci(de);b.content=_e,b.size=b.content.length})()}pe.data=Xt(Y)}W[3][0].data=Xt(ae)}v[4][0].data=Xt(W)}m.messages[0].data=Xt(v);var D=li(h),_=ci(D);return d.content=_,d.size=d.content.length,f}function Km(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 Hc(e){Km([["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 jc(e){Km([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]])(e)}function b3(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 E3(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,b3(e["!id"][n.id].Type)]})}catch{return null}return!e||e.length===0?null:e}function C3(e,t,r,n,a,i,s,o,c,f,u,d){try{i[n]=ts(Sr(e,r,!0),t);var h=Tt(e,t),m;switch(o){case"sheet":m=X4(h,t,a,c,i[n],f,u,d);break;case"chart":if(m=K4(h,t,a,c,i[n],f,u,d),!m||!m["!drawel"])break;var g=Gi(m["!drawel"].Target,t),p=es(g),x=NC(Sr(e,g,!0),ts(Sr(e,p,!0),g)),v=Gi(x,g),y=es(v);m=y4(Sr(e,v,!0),v,c,ts(Sr(e,y,!0),v),f,m);break;case"macro":m=Y4(h,t,a,c,i[n],f,u,d);break;case"dialog":m=q4(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(k){var R="";if(i[n][k].Type==ze.CMNT){R=Gi(i[n][k].Target,t);var T=eA(Tt(e,R,!0),R,c);if(!T||!T.length)return;am(m,T,!1)}i[n][k].Type==ze.TCMNT&&(R=Gi(i[n][k].Target,t),w=w.concat(PC(Tt(e,R,!0),c)))}),w&&w.length&&am(m,w,!0,c.people||[])}catch(k){if(c.WTF)throw k}}function Wr(e){return e.charAt(0)=="/"?e.slice(1):e}function S3(e,t){if(Ja(),t=t||{},Hc(t),Pr(e,"META-INF/manifest.xml")||Pr(e,"objectdata.xml"))return Wm(e,t);if(Pr(e,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof Wc<"u"){if(e.FileIndex)return Wc(e);var r=Ae.utils.cfb_new();return md(e).forEach(function(K){He(r,K,hd(e,K))}),Wc(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=md(e),a=D2(Sr(e,"[Content_Types].xml")),i=!1,s,o;if(a.workbooks.length===0&&(o="xl/workbook.xml",Tt(e,o,!0)&&a.workbooks.push(o)),a.workbooks.length===0){if(o="xl/workbook.bin",!Tt(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=Q4(Tt(e,Wr(a.sst)),a.sst,t)}catch(K){if(t.WTF)throw K}t.cellStyles&&a.themes.length&&(c=Z4(Sr(e,a.themes[0].replace(/^\//,""),!0)||"",a.themes[0],t)),a.style&&(f=J4(Tt(e,Wr(a.style)),a.style,c,t))}a.links.map(function(K){try{var j=ts(Sr(e,es(Wr(K))),K);return rA(Tt(e,Wr(K)),j,K,t)}catch{}});var u=G4(Tt(e,Wr(a.workbooks[0])),a.workbooks[0],t),d={},h="";a.coreprops.length&&(h=Tt(e,Wr(a.coreprops[0]),!0),h&&(d=ah(h)),a.extprops.length!==0&&(h=Tt(e,Wr(a.extprops[0]),!0),h&&M2(h,d,t)));var m={};(!t.bookSheets||t.bookProps)&&a.custprops.length!==0&&(h=Sr(e,Wr(a.custprops[0]),!0),h&&(m=V2(h,t)));var g={};if((t.bookSheets||t.bookProps)&&(u.Sheets?s=u.Sheets.map(function(j){return j.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=tA(Tt(e,Wr(a.calcchain)),a.calcchain));var x=0,v={},y,w;{var k=u.Sheets;d.Worksheets=k.length,d.SheetNames=[];for(var R=0;R!=k.length;++R)d.SheetNames[R]=k[R].name}var T=i?"bin":"xml",C=a.workbooks[0].lastIndexOf("/"),U=(a.workbooks[0].slice(0,C+1)+"_rels/"+a.workbooks[0].slice(C+1)+".rels").replace(/^\//,"");Pr(e,U)||(U="xl/_rels/workbook."+T+".rels");var F=ts(Sr(e,U,!0),U.replace(/_rels.*/,"s5s"));(a.metadata||[]).length>=1&&(t.xlmeta=nA(Tt(e,Wr(a.metadata[0])),a.metadata[0],t)),(a.people||[]).length>=1&&(t.people=LC(Tt(e,Wr(a.people[0])),t)),F&&(F=E3(F,u.Sheets));var W=Tt(e,"xl/worksheets/sheet.xml",!0)?1:0;e:for(x=0;x!=d.Worksheets;++x){var G="sheet";if(F&&F[x]?(y="xl/"+F[x][1].replace(/[\/]?xl\//,""),Pr(e,y)||(y=F[x][1]),Pr(e,y)||(y=U.replace(/_rels\/.*$/,"")+F[x][1]),G=F[x][2]):(y="xl/worksheets/sheet"+(x+1-W)+"."+T,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,H=0;H!=t.sheets.length;++H)typeof t.sheets[H]=="number"&&t.sheets[H]==x&&(B=1),typeof t.sheets[H]=="string"&&t.sheets[H].toLowerCase()==d.SheetNames[x].toLowerCase()&&(B=1);if(!B)continue e}}C3(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(K,j){K=K.replace(/^Root Entry[\/]/,""),g.keys.push(K),g.files[K]=e.FileIndex[j]}))),t&&t.bookVBA&&(a.vba.length>0?g.vbaraw=Tt(e,Wr(a.vba[0]),!0):a.defaults&&a.defaults.bin===GC&&(g.vbaraw=Tt(e,"xl/vbaProject.bin",!0))),g}function T3(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(nE(a.content),n="/!DataSpaces/DataSpaceMap",a=Ae.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var i=iE(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=sE(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);lE(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=cE(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 F3(e,t){return t.bookType=="ods"?zm(e,t):t.bookType=="numbers"?k3(e,t):t.bookType=="xlsb"?A3(e,t):D3(e,t)}function A3(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=sm.indexOf(t.bookType)>-1,a=hc();jc(t=t||{});var i=Gl(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,ih(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,lh(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,ch(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,iA(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,lA(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",nm(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,oA(t.Strings,s,t)),a.strs.push(s),tt(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,aA(e,s)),a.workbooks.push(s),tt(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Sc(e.Themes,t)),a.themes.push(s),tt(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,sA(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,cA(s)),a.metadata.push(s),tt(t.wbrels,-1,"metadata."+r,ze.XLMETA),He(i,"[Content_Types].xml",th(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 D3(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=sm.indexOf(t.bookType)>-1,a=hc();jc(t=t||{});var i=Gl(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,ih(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,lh(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,ch(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,km(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,MC(g,u,t)),a.threadedcomments.push(x),tt(d,-1,"../threadedComments/threadedComment"+o+"."+r,ze.TCMNT)),x="xl/comments"+o+"."+r,He(i,x,im(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",nm(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,jh(t.Strings,t)),a.strs.push(s),tt(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,Am(e)),a.workbooks.push(s),tt(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Sc(e.Themes,t)),a.themes.push(s),tt(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,Zh(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,rm()),a.metadata.push(s),tt(t.wbrels,-1,"metadata."+r,ze.XLMETA),u.length>1&&(s="xl/persons/person.xml",He(i,s,VC(u)),a.people.push(s),tt(t.wbrels,-1,"persons/person.xml",ze.PEOPLE)),He(i,"[Content_Types].xml",th(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 zc(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 R3(e,t){return Ae.find(e,"EncryptedPackage")?T3(e,t):Bm(e,t)}function O3(e,t){var r,n=e,a=t||{};return a.type||(a.type=je&&Buffer.isBuffer(e)?"buffer":"base64"),r=pd(n,a),S3(r,a)}function Ym(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 Pc(e.slice(r),t);default:break e}return ni.to_workbook(e,t)}function B3(e,t){var r="",n=zc(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",Ym(r,t)}function N3(e,t){var r=e;return t.type=="base64"&&(r=br(r)),r=Xn.utils.decode(1200,r.slice(2),"str"),t.type="binary",Ym(r,t)}function I3(e){return e.match(/[^\x00-\x7F]/)?pn(e):e}function Gc(e,t,r,n){return n?(r.type="string",ni.to_workbook(e,r)):ni.to_workbook(t,r)}function Xc(e,t){Ul();var r=t||{};if(typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer)return Xc(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=Dy(e),typeof Uint8Array<"u"&&!je&&(r.type="array")),r.type=="string"&&(i=!0,r.type="binary",r.codepage=65001,n=I3(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",Xc($l(n),r)}switch((a=zc(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 R3(Ae.read(n,r),r);break;case 9:if(a[1]<=8)return Bm(n,r);break;case 60:return Pc(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 Ub(n,r);break;case 84:if(a[1]===65&&a[2]===66&&a[3]===76)return Wh.to_workbook(n,r);break;case 80:return a[1]===75&&a[2]<9&&a[3]<9?O3(n,r):Gc(e,n,r,i);case 239:return a[3]===60?Pc(n,r):Gc(e,n,r,i);case 255:if(a[1]===254)return N3(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 _c.to_workbook(n,r);case 123:if(a[1]===92&&a[2]===114&&a[3]===116)return Yh.to_workbook(n,r);break;case 10:case 13:case 32:return B3(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 Vb.indexOf(a[0])>-1&&a[2]<=12&&a[3]<=31?_c.to_workbook(n,r):Gc(e,n,r,i)}function qm(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 P3(e,t){var r=ct(t||{}),n=F3(e,r);return M3(n,r)}function M3(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"?qm(encrypt_agile(a,t.password),t):t.type==="file"?zi(t.file,a):t.type=="string"?at(a):a}function L3(e,t){var r=t||{},n=IA(e,r);return qm(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 V3(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 Jm(e,t){Ul(),R4(e);var r=ct(t||{});if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),r.type=="array"){r.type="binary";var n=Jm(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(FA(e,r),r);case"slk":case"sylk":return vn($h.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"htm":case"html":return vn(Pm(e.Sheets[e.SheetNames[a]],r),r);case"txt":return V3(Qm(e.Sheets[e.SheetNames[a]],r),r);case"csv":return vn(Kc(e.Sheets[e.SheetNames[a]],r),r,"\uFEFF");case"dif":return vn(Wh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"dbf":return No(_c.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(Yh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"eth":return vn(Hh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"fods":return vn(zm(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(Nm(e,r),r);case"biff5":r.biff||(r.biff=5);case"biff8":case"xla":case"xls":return r.biff||(r.biff=8),L3(e,r);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"numbers":case"ods":return P3(e,r);default:throw new Error("Unrecognized bookType |"+r.bookType+"|")}}function U3(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 k=f.skipHidden&&e["!cols"]||[],R=f.skipHidden&&e["!rows"]||[];for(y=c.s.c;y<=c.e.c;++y)if(!(k[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 T=U3(e,c,v,h,n,i,x,f);(T.isempty===!1||(n===1?f.blankrows!==!1:f.blankrows))&&(m[g++]=T.row)}return m.length=g,m}var Zm=/"/g;function $3(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(Zm,'""')+'"';break}u=="ID"&&(u='"ID"')}else m.f!=null&&!m.F?(c=!1,u="="+m.f,u.indexOf(",")>=0&&(u='"'+u.replace(Zm,'""')+'"')):u="";f.push(u)}return o.blankrows===!1&&c?null:f.join(s)}function Kc(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=$3(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 Qm(e,t){t||(t={}),t.FS=" ",t.RS=`
|
||
`;var r=Kc(e,t);return r}function W3(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 ep(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",k="",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=Bt(y)),k=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,k&&(f.z=k)):i[R]=f={t:w,v:y},k&&(f.z=k))})}),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 H3(e,t){return ep(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 j3(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 Yc(){return{SheetNames:[],Sheets:{}}}function qc(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(Fm(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 z3(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=j3(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 G3(e,t){return e.z=t,e}function tp(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function X3(e,t,r){return tp(e,"#"+t,r)}function K3(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function Y3(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 Jc={encode_col:mt,encode_row:Et,encode_cell:Ne,encode_range:We,decode_col:nc,decode_row:rc,split_cell:o2,decode_cell:pt,decode_range:gr,format_cell:In,sheet_add_aoa:Gd,sheet_add_json:ep,sheet_add_dom:Mm,aoa_to_sheet:ei,json_to_sheet:H3,table_to_sheet:Lm,table_to_book:n3,sheet_to_csv:Kc,sheet_to_txt:Qm,sheet_to_json:Io,sheet_to_html:Pm,sheet_to_formulae:W3,sheet_to_row_object_array:Io,sheet_get_cell:ws,book_new:Yc,book_append_sheet:qc,book_set_sheet_visibility:z3,cell_set_number_format:G3,cell_set_hyperlink:tp,cell_set_internal_link:X3,cell_add_comment:K3,sheet_set_array_formula:Y3,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function q3(e,t){t&&(e+=1462);var r=Date.parse(e);return(r-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3)}function J3(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=Jc.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=ad._table[14],s.v=q3(s.v)):s.t="s",r[o]=s}}return n.s.c<1e7&&(r["!ref"]=Jc.encode_range(n)),r}function Zc(){if(!(this instanceof Zc))return new Zc;this.SheetNames=[],this.Sheets={}}function Z3(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 Q3(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 Zc,c=J3(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=Jm(o,{bookType:"xlsx",bookSST:!1,type:"binary"}),d=r||"列表";Iu.saveAs(new Blob([Z3(u)],{type:"application/octet-stream"}),d+".xlsx")}const eD=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 tD(e){const t=new FileReader;return new Promise((r,n)=>{t.onload=a=>{const i=a.target.result,s=Xc(i,{type:"binary"}),o=s.SheetNames[0],c=s.Sheets[o],f=Jc.sheet_to_csv(c),u=eD(f);r(u)},t.onerror=a=>{n(a)},t.readAsBinaryString(e)})}function rD(e){return e.map(t=>({prop:t.key,label:t.title}))}const rp=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=q_(rD(a.columns),a.data,e,a.noHeader);X_.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});Q3(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"});Iu.saveAs(i,a.filename+".txt"),t()})}},importUtil:{async csv(e){return await tD(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=Bu,oe.FsActionbar=O0,oe.FsBox=c0,oe.FsButton=n0,oe.FsCell=A0,oe.FsColumnsFilterLayoutDefault=mu,oe.FsComponentRender=u0,oe.FsContainer=Qf,oe.FsCrud=v0,oe.FsDateFormat=Fu,oe.FsDictCascader=Cu,oe.FsDictCascaderFormat=Eu,oe.FsDictCheckbox=Su,oe.FsDictRadio=yu,oe.FsDictSelect=ku,oe.FsDictSwitch=Tu,oe.FsDictTree=Au,oe.FsEditable=R0,oe.FsEditableCell=D0,oe.FsEditableSelect=Ru,oe.FsForm=h0,oe.FsFormHelper=g0,oe.FsFormItem=m0,oe.FsFormItemCol=p0,oe.FsFormProvider=x0,oe.FsFormWrapper=$a,oe.FsIcon=a0,oe.FsIconSelector=_u,oe.FsIconSvg=s0,oe.FsIconify=i0,oe.FsLabel=o0,oe.FsLayoutCard=t0,oe.FsLayoutDefault=e0,oe.FsLoading=l0,oe.FsPage=Cf,oe.FsRender=ol,oe.FsRowHandle=w0,oe.FsSearch=gu,oe.FsSearchLayoutDefault=vu,oe.FsSearchV1=xu,oe.FsSlotRender=d0,oe.FsTable=F0,oe.FsTableColumnsFixedController=Nl,oe.FsTableSelect=Du,oe.FsTabsFilter=wu,oe.FsToolbar=B0,oe.FsValuesFormat=bu,oe.GlobalConfig=Zf,oe.SetFormDataOptions=vv,oe.asyncCompute=Df,oe.buildTableColumnsFlatMap=Os,oe.compute=Af,oe.crudOptionsPlugins=tl,oe.default=Bu,oe.dict=Yf,oe.exportTable=Lf,oe.forEachColumns=Ci,oe.forEachTableColumns=Ei,oe.fsColumnsFilterNestList=Il,oe.getCrudOptionsPlugin=Vf,oe.importTable=Z1,oe.loadFsExportUtil=Pf,oe.loadFsImportUtil=Mf,oe.registerCrudOptionsPlugin=rl,oe.registerMergeColumnPlugin=Yo,oe.setLogger=ff,oe.useColumns=Bs,oe.useCompute=Br,oe.useCrud=Uf,oe.useDict=Tn,oe.useDictDefine=qf,oe.useDrag=Jf,oe.useExpose=el,oe.useFormWrapper=Nf,oe.useFs=Q1,oe.useFsAsync=Wf,oe.useFsRef=Hf,oe.useI18n=Kt,oe.useMerge=Je,oe.useTypes=ng,oe.utils=En,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1jcnVkLnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3V0aWwubG9nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuc3RyaW5nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwudHJhY2UudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC52aXRlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuc3RvcmUudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvcHJpdmF0ZS9nZXRQYXRoVG9TdHJpbmcudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvcHJpdmF0ZS9nZXRJdGVyYXRlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlZXBkYXNoL2dldC1lYWNoLWRlZXAudHMiLCIuLi8uLi9zcmMvdXRpbHMvZGVlcGRhc2gvaW5kZXgudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC5kYXNoLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuY2xpcGJvYXJkLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIiwiLi4vLi4vc3JjL3VzZS9kZWZhdWx0LWNydWQtb3B0aW9ucy50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Fzc2lzdC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2J1dHRvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Nhc2NhZGVyLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL3poLWNuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL2VuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9kYXlqc0AxLjExLjEzL25vZGVfbW9kdWxlcy9kYXlqcy9wbHVnaW4vYWR2YW5jZWRGb3JtYXQuanMiLCIuLi8uLi9zcmMvdHlwZXMvZnVuY3Rpb25zLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrT2ZZZWFyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrZGF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhLmpzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvZGF0ZS50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2VsLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvaWNvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L251bWJlci50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3Bob25lLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3Qvc2VsZWN0LnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvdGV4dC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3RyZWUudHMiLCIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi8uLi9zcmMvdXNlL3VzZS1tZXJnZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLWNvbXB1dGUudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC5jb25zdGFudHMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jb2x1bW5zLnRzeCIsIi4uLy4uL3NyYy91c2UvdXNlLWZvcm0udHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1leHBvc2UudHMiLCIuLi8uLi9zcmMvbGliL2ZzLWV4cG9ydC9pbmRleC50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXBsdWdpbnMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jcnVkLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZGljdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9scnUtY2FjaGVAMTAuNC4zL25vZGVfbW9kdWxlcy9scnUtY2FjaGUvZGlzdC9lc20vaW5kZXguanMiLCIuLi8uLi9zcmMvdXNlL3VzZS1kaWN0LWRlZmluZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXR5cGVzLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZHJhZy50cyIsIi4uLy4uL3NyYy91c2UvY29uZmlnLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWNvbnRhaW5lci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtY29udGFpbmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWxheW91dC1jYXJkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtY2FyZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1idXR0b24udHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1pY29uaWZ5LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2Jhc2ljL2ZzLWljb25pZnkudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbG9hZGluZy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1ib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtYm94LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1jb21wb25lbnQtcmVuZGVyLnRzeCIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1zbG90LXJlbmRlci50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXIvZnMtcmVuZGVyLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0tY29sLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS1oZWxwZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWhlbHBlci52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0td3JhcHBlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0tcHJvdmlkZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZnMtY3J1ZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9mcy1jcnVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtcm93LWhhbmRsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLXJvdy1oYW5kbGUudnVlIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FzeW5jLXZhbGlkYXRvckA0LjIuNS9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2Rpc3Qtd2ViL2luZGV4LmpzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9lZGl0YWJsZS92YWxpZGF0b3IudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2VkaXRhYmxlL3VzZS1lZGl0YWJsZS50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NydWQvdXNlL3Byb3ZpZGVyLnRzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy10YWJsZS50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWNlbGwudHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9lZGl0YWJsZS9mcy1lZGl0YWJsZS1jZWxsLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZWRpdGFibGUvZnMtZWRpdGFibGUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYWN0aW9uYmFyL2luZGV4LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2FjdGlvbmJhci9pbmRleC52dWUiLCIuLi8uLi9zcmMvZC9leHBvc2UudHMiLCIuLi8uLi9zcmMvZC9jb2x1bW5zLWZpbHRlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL3Rvb2xiYXIvZnMtdGFibGUtY29sdW1ucy1maWx0ZXIvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2luZGV4LnZ1ZSIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zb3J0YWJsZWpzQDEuMTQuMC9ub2RlX21vZHVsZXMvc29ydGFibGVqcy9tb2R1bGFyL3NvcnRhYmxlLmVzbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS92dWVkcmFnZ2FibGUtZXNANC4xLjFfdnVlQDMuNS4xOF90eXBlc2NyaXB0QDUuMS42Xy9ub2RlX21vZHVsZXMvdnVlZHJhZ2dhYmxlLWVzL2Rpc3QvaW5kZXguZXMuanMiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLWNvbHVtbnMtZmlsdGVyLWxheW91dC1kZWZhdWx0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9idXR0b25zLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9idXR0b25zLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaF92MS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoX3YxLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL3RhYnMtZmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtaWNvbi1zZWxlY3Rvci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtcmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LXJhZGlvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1zZWxlY3QudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy12YWx1ZXMtZm9ybWF0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtdmFsdWVzLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2FzY2FkZXItZm9ybWF0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jYXNjYWRlci1mb3JtYXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNhc2NhZGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jYXNjYWRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2hlY2tib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1zd2l0Y2gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kYXRlLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtdHJlZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtdHJlZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLXRhYmxlLXNlbGVjdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWVkaXRhYmxlLXNlbGVjdC52dWUiLCIuLi8uLi9zcmMvaW5kZXgudHMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2V4cG9ydC1jc3YuanMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2Nzdi5qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fYmxvYi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNhdmVyQDIuMC41L25vZGVfbW9kdWxlcy9maWxlLXNhdmVyL2Rpc3QvRmlsZVNhdmVyLm1pbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS94bHN4QDAuMTguNS9ub2RlX21vZHVsZXMveGxzeC94bHN4Lm1qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fZXhwb3J0MkV4Y2VsLmpzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL19pbXBvcnQuY3N2LnRzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczplfHxzZWxmKS5kYXlqc19wbHVnaW5fYWR2YW5jZWRGb3JtYXQ9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPXQucHJvdG90eXBlLG49ci5mb3JtYXQ7ci5mb3JtYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXRoaXMuJGxvY2FsZSgpO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbi5iaW5kKHRoaXMpKGUpO3ZhciBzPXRoaXMuJHV0aWxzKCksYT0oZXx8XCJZWVlZLU1NLUREVEhIOm1tOnNzWlwiKS5yZXBsYWNlKC9cXFsoW15cXF1dKyldfFF8d298d3d8d3xXV3xXfHp6enx6fGdnZ2d8R0dHR3xEb3xYfHh8a3sxLDJ9fFMvZywoZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2VcIlFcIjpyZXR1cm4gTWF0aC5jZWlsKCh0LiRNKzEpLzMpO2Nhc2VcIkRvXCI6cmV0dXJuIHIub3JkaW5hbCh0LiREKTtjYXNlXCJnZ2dnXCI6cmV0dXJuIHQud2Vla1llYXIoKTtjYXNlXCJHR0dHXCI6cmV0dXJuIHQuaXNvV2Vla1llYXIoKTtjYXNlXCJ3b1wiOnJldHVybiByLm9yZGluYWwodC53ZWVrKCksXCJXXCIpO2Nhc2VcIndcIjpjYXNlXCJ3d1wiOnJldHVybiBzLnModC53ZWVrKCksXCJ3XCI9PT1lPzE6MixcIjBcIik7Y2FzZVwiV1wiOmNhc2VcIldXXCI6cmV0dXJuIHMucyh0Lmlzb1dlZWsoKSxcIldcIj09PWU/MToyLFwiMFwiKTtjYXNlXCJrXCI6Y2FzZVwia2tcIjpyZXR1cm4gcy5zKFN0cmluZygwPT09dC4kSD8yNDp0LiRIKSxcImtcIj09PWU/MToyLFwiMFwiKTtjYXNlXCJYXCI6cmV0dXJuIE1hdGguZmxvb3IodC4kZC5nZXRUaW1lKCkvMWUzKTtjYXNlXCJ4XCI6cmV0dXJuIHQuJGQuZ2V0VGltZSgpO2Nhc2VcInpcIjpyZXR1cm5cIltcIit0Lm9mZnNldE5hbWUoKStcIl1cIjtjYXNlXCJ6enpcIjpyZXR1cm5cIltcIit0Lm9mZnNldE5hbWUoXCJsb25nXCIpK1wiXVwiO2RlZmF1bHQ6cmV0dXJuIGV9fSkpO3JldHVybiBuLmJpbmQodGhpcykoYSl9fX0pKTsiLG51bGwsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZGF5anNfcGx1Z2luX3dlZWtPZlllYXI9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPVwid2Vla1wiLHQ9XCJ5ZWFyXCI7cmV0dXJuIGZ1bmN0aW9uKGksbixyKXt2YXIgZj1uLnByb3RvdHlwZTtmLndlZWs9ZnVuY3Rpb24oaSl7aWYodm9pZCAwPT09aSYmKGk9bnVsbCksbnVsbCE9PWkpcmV0dXJuIHRoaXMuYWRkKDcqKGktdGhpcy53ZWVrKCkpLFwiZGF5XCIpO3ZhciBuPXRoaXMuJGxvY2FsZSgpLnllYXJTdGFydHx8MTtpZigxMT09PXRoaXMubW9udGgoKSYmdGhpcy5kYXRlKCk+MjUpe3ZhciBmPXIodGhpcykuc3RhcnRPZih0KS5hZGQoMSx0KS5kYXRlKG4pLHM9cih0aGlzKS5lbmRPZihlKTtpZihmLmlzQmVmb3JlKHMpKXJldHVybiAxfXZhciBhPXIodGhpcykuc3RhcnRPZih0KS5kYXRlKG4pLnN0YXJ0T2YoZSkuc3VidHJhY3QoMSxcIm1pbGxpc2Vjb25kXCIpLG89dGhpcy5kaWZmKGEsZSwhMCk7cmV0dXJuIG88MD9yKHRoaXMpLnN0YXJ0T2YoXCJ3ZWVrXCIpLndlZWsoKTpNYXRoLmNlaWwobyl9LGYud2Vla3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW51bGwpLHRoaXMud2VlayhlKX19fSkpOyIsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZGF5anNfcGx1Z2luX3dlZWtkYXk9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3JldHVybiBmdW5jdGlvbihlLHQpe3QucHJvdG90eXBlLndlZWtkYXk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwLGk9dGhpcy4kVyxuPShpPHQ/aSs3OmkpLXQ7cmV0dXJuIHRoaXMuJHV0aWxzKCkudShlKT9uOnRoaXMuc3VidHJhY3QobixcImRheVwiKS5hZGQoZSxcImRheVwiKX19fSkpOyIsIiFmdW5jdGlvbihuLGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOihuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6bnx8c2VsZikuZGF5anNfcGx1Z2luX2xvY2FsZURhdGE9ZSgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3JldHVybiBmdW5jdGlvbihuLGUsdCl7dmFyIHI9ZS5wcm90b3R5cGUsbz1mdW5jdGlvbihuKXtyZXR1cm4gbiYmKG4uaW5kZXhPZj9uOm4ucyl9LHU9ZnVuY3Rpb24obixlLHQscix1KXt2YXIgaT1uLm5hbWU/bjpuLiRsb2NhbGUoKSxhPW8oaVtlXSkscz1vKGlbdF0pLGY9YXx8cy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBuLnNsaWNlKDAscil9KSk7aWYoIXUpcmV0dXJuIGY7dmFyIGQ9aS53ZWVrU3RhcnQ7cmV0dXJuIGYubWFwKChmdW5jdGlvbihuLGUpe3JldHVybiBmWyhlKyhkfHwwKSklN119KSl9LGk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5Mc1t0LmxvY2FsZSgpXX0sYT1mdW5jdGlvbihuLGUpe3JldHVybiBuLmZvcm1hdHNbZV18fGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcGxhY2UoLyhcXFtbXlxcXV0rXSl8KE1NTU18TU18RER8ZGRkZCkvZywoZnVuY3Rpb24obixlLHQpe3JldHVybiBlfHx0LnNsaWNlKDEpfSkpfShuLmZvcm1hdHNbZS50b1VwcGVyQ2FzZSgpXSl9LHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3JldHVybnttb250aHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5mb3JtYXQoXCJNTU1NXCIpOnUobixcIm1vbnRoc1wiKX0sbW9udGhzU2hvcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5mb3JtYXQoXCJNTU1cIik6dShuLFwibW9udGhzU2hvcnRcIixcIm1vbnRoc1wiLDMpfSxmaXJzdERheU9mV2VlazpmdW5jdGlvbigpe3JldHVybiBuLiRsb2NhbGUoKS53ZWVrU3RhcnR8fDB9LHdlZWtkYXlzOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiZGRkZFwiKTp1KG4sXCJ3ZWVrZGF5c1wiKX0sd2Vla2RheXNNaW46ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5mb3JtYXQoXCJkZFwiKTp1KG4sXCJ3ZWVrZGF5c01pblwiLFwid2Vla2RheXNcIiwyKX0sd2Vla2RheXNTaG9ydDpmdW5jdGlvbihlKXtyZXR1cm4gZT9lLmZvcm1hdChcImRkZFwiKTp1KG4sXCJ3ZWVrZGF5c1Nob3J0XCIsXCJ3ZWVrZGF5c1wiLDMpfSxsb25nRGF0ZUZvcm1hdDpmdW5jdGlvbihlKXtyZXR1cm4gYShuLiRsb2NhbGUoKSxlKX0sbWVyaWRpZW06dGhpcy4kbG9jYWxlKCkubWVyaWRpZW0sb3JkaW5hbDp0aGlzLiRsb2NhbGUoKS5vcmRpbmFsfX07ci5sb2NhbGVEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHMuYmluZCh0aGlzKSgpfSx0LmxvY2FsZURhdGE9ZnVuY3Rpb24oKXt2YXIgbj1pKCk7cmV0dXJue2ZpcnN0RGF5T2ZXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIG4ud2Vla1N0YXJ0fHwwfSx3ZWVrZGF5czpmdW5jdGlvbigpe3JldHVybiB0LndlZWtkYXlzKCl9LHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC53ZWVrZGF5c1Nob3J0KCl9LHdlZWtkYXlzTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHQud2Vla2RheXNNaW4oKX0sbW9udGhzOmZ1bmN0aW9uKCl7cmV0dXJuIHQubW9udGhzKCl9LG1vbnRoc1Nob3J0OmZ1bmN0aW9uKCl7cmV0dXJuIHQubW9udGhzU2hvcnQoKX0sbG9uZ0RhdGVGb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGEobixlKX0sbWVyaWRpZW06bi5tZXJpZGllbSxvcmRpbmFsOm4ub3JkaW5hbH19LHQubW9udGhzPWZ1bmN0aW9uKCl7cmV0dXJuIHUoaSgpLFwibW9udGhzXCIpfSx0Lm1vbnRoc1Nob3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHUoaSgpLFwibW9udGhzU2hvcnRcIixcIm1vbnRoc1wiLDMpfSx0LndlZWtkYXlzPWZ1bmN0aW9uKG4pe3JldHVybiB1KGkoKSxcIndlZWtkYXlzXCIsbnVsbCxudWxsLG4pfSx0LndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24obil7cmV0dXJuIHUoaSgpLFwid2Vla2RheXNTaG9ydFwiLFwid2Vla2RheXNcIiwzLG4pfSx0LndlZWtkYXlzTWluPWZ1bmN0aW9uKG4pe3JldHVybiB1KGkoKSxcIndlZWtkYXlzTWluXCIsXCJ3ZWVrZGF5c1wiLDIsbil9fX0pKTsiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCI8dGVtcGxhdGU+XG4gIDxkaXYgcmVmPVwicGFnZVJlZlwiIGNsYXNzPVwiZnMtcGFnZVwiPlxuICAgIDxkaXYgdi1pZj1cIiRzbG90cy5oZWFkZXIgIT0gbnVsbFwiIGNsYXNzPVwiZnMtcGFnZS1oZWFkZXJcIj5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnZS1jb250ZW50XCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB2LWlmPVwiJHNsb3RzLmZvb3RlciAhPSBudWxsXCIgY2xhc3M9XCJmcy1wYWdlLWZvb3RlclwiPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPjwvc2xvdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIHJlZiwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNQYWdlXCIsXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHBhZ2VSZWY6IFJlZiA9IHJlZigpO1xuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYWdlUmVmLnZhbHVlLnBhcmVudE5vZGUpO1xuICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicG9zaXRpb25cIik7XG4gICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gXCJyZWxhdGl2ZVwiKSB7XG4gICAgICAgIHV0aWxzLmxvZ2dlci53YXJuKFxuICAgICAgICAgIFwiZnMtcGFnZeeItuiKgueCueeahHBvc2l0aW9u5bu66K6u5Li6cmVsYXRpdmUs5Zug5Li6ZnMtcGFnZeS4uuebuOWvueWumuS9je+8iHBvc2l0aW9uOmFic29sdXRl77yJ77yM5aaC5p6c5qC35byP5rKh5pyJ5byC5bi477yM5L2g5Y+v5Lul5b+955Wl5q2k6K2m5ZGKXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVJlZlxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXBhZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAuZnMtcGFnZS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICA+IC50aXRsZSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgcGFkZGluZzogMThweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6ICM0NDQ7XG5cbiAgICAgIC5zdWIge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiBncmF5O1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgID4gLm1vcmUge1xuICAgICAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcbiAgICAgIG1hcmdpbi1yaWdodDogMThweDtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIC5mcy1wYWdlLWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgcmVmPVwicGFnZVJlZlwiIGNsYXNzPVwiZnMtcGFnZVwiPlxuICAgIDxkaXYgdi1pZj1cIiRzbG90cy5oZWFkZXIgIT0gbnVsbFwiIGNsYXNzPVwiZnMtcGFnZS1oZWFkZXJcIj5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnZS1jb250ZW50XCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB2LWlmPVwiJHNsb3RzLmZvb3RlciAhPSBudWxsXCIgY2xhc3M9XCJmcy1wYWdlLWZvb3RlclwiPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPjwvc2xvdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIHJlZiwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNQYWdlXCIsXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHBhZ2VSZWY6IFJlZiA9IHJlZigpO1xuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYWdlUmVmLnZhbHVlLnBhcmVudE5vZGUpO1xuICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicG9zaXRpb25cIik7XG4gICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gXCJyZWxhdGl2ZVwiKSB7XG4gICAgICAgIHV0aWxzLmxvZ2dlci53YXJuKFxuICAgICAgICAgIFwiZnMtcGFnZeeItuiKgueCueeahHBvc2l0aW9u5bu66K6u5Li6cmVsYXRpdmUs5Zug5Li6ZnMtcGFnZeS4uuebuOWvueWumuS9je+8iHBvc2l0aW9uOmFic29sdXRl77yJ77yM5aaC5p6c5qC35byP5rKh5pyJ5byC5bi477yM5L2g5Y+v5Lul5b+955Wl5q2k6K2m5ZGKXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZVJlZlxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXBhZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAuZnMtcGFnZS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICA+IC50aXRsZSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgcGFkZGluZzogMThweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6ICM0NDQ7XG5cbiAgICAgIC5zdWIge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiBncmF5O1xuICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgID4gLm1vcmUge1xuICAgICAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcbiAgICAgIG1hcmdpbi1yaWdodDogMThweDtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIC5mcy1wYWdlLWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cbn1cbjwvc3R5bGU+XG4iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIi8qKlxuICogQG1vZHVsZSBMUlVDYWNoZVxuICovXG5jb25zdCBwZXJmID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSAnb2JqZWN0JyAmJlxuICAgIHBlcmZvcm1hbmNlICYmXG4gICAgdHlwZW9mIHBlcmZvcm1hbmNlLm5vdyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gcGVyZm9ybWFuY2VcbiAgICA6IERhdGU7XG5jb25zdCB3YXJuZWQgPSBuZXcgU2V0KCk7XG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmNvbnN0IFBST0NFU1MgPSAodHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmICEhcHJvY2VzcyA/IHByb2Nlc3MgOiB7fSk7XG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmNvbnN0IGVtaXRXYXJuaW5nID0gKG1zZywgdHlwZSwgY29kZSwgZm4pID0+IHtcbiAgICB0eXBlb2YgUFJPQ0VTUy5lbWl0V2FybmluZyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IFBST0NFU1MuZW1pdFdhcm5pbmcobXNnLCB0eXBlLCBjb2RlLCBmbilcbiAgICAgICAgOiBjb25zb2xlLmVycm9yKGBbJHtjb2RlfV0gJHt0eXBlfTogJHttc2d9YCk7XG59O1xubGV0IEFDID0gZ2xvYmFsVGhpcy5BYm9ydENvbnRyb2xsZXI7XG5sZXQgQVMgPSBnbG9iYWxUaGlzLkFib3J0U2lnbmFsO1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5pZiAodHlwZW9mIEFDID09PSAndW5kZWZpbmVkJykge1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIEFTID0gY2xhc3MgQWJvcnRTaWduYWwge1xuICAgICAgICBvbmFib3J0O1xuICAgICAgICBfb25hYm9ydCA9IFtdO1xuICAgICAgICByZWFzb247XG4gICAgICAgIGFib3J0ZWQgPSBmYWxzZTtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihfLCBmbikge1xuICAgICAgICAgICAgdGhpcy5fb25hYm9ydC5wdXNoKGZuKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy9AdHMtaWdub3JlXG4gICAgQUMgPSBjbGFzcyBBYm9ydENvbnRyb2xsZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHdhcm5BQ1BvbHlmaWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmFsID0gbmV3IEFTKCk7XG4gICAgICAgIGFib3J0KHJlYXNvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2lnbmFsLmFib3J0ZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnNpZ25hbC5yZWFzb24gPSByZWFzb247XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMuc2lnbmFsLmFib3J0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHRoaXMuc2lnbmFsLl9vbmFib3J0KSB7XG4gICAgICAgICAgICAgICAgZm4ocmVhc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2lnbmFsLm9uYWJvcnQ/LihyZWFzb24pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBsZXQgcHJpbnRBQ1BvbHlmaWxsV2FybmluZyA9IFBST0NFU1MuZW52Py5MUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkcgIT09ICcxJztcbiAgICBjb25zdCB3YXJuQUNQb2x5ZmlsbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFwcmludEFDUG9seWZpbGxXYXJuaW5nKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwcmludEFDUG9seWZpbGxXYXJuaW5nID0gZmFsc2U7XG4gICAgICAgIGVtaXRXYXJuaW5nKCdBYm9ydENvbnRyb2xsZXIgaXMgbm90IGRlZmluZWQuIElmIHVzaW5nIGxydS1jYWNoZSBpbiAnICtcbiAgICAgICAgICAgICdub2RlIDE0LCBsb2FkIGFuIEFib3J0Q29udHJvbGxlciBwb2x5ZmlsbCBmcm9tIHRoZSAnICtcbiAgICAgICAgICAgICdgbm9kZS1hYm9ydC1jb250cm9sbGVyYCBwYWNrYWdlLiBBIG1pbmltYWwgcG9seWZpbGwgaXMgJyArXG4gICAgICAgICAgICAncHJvdmlkZWQgZm9yIHVzZSBieSBMUlVDYWNoZS5mZXRjaCgpLCBidXQgaXQgc2hvdWxkIG5vdCBiZSAnICtcbiAgICAgICAgICAgICdyZWxpZWQgdXBvbiBpbiBvdGhlciBjb250ZXh0cyAoZWcsIHBhc3NpbmcgaXQgdG8gb3RoZXIgQVBJcyB0aGF0ICcgK1xuICAgICAgICAgICAgJ3VzZSBBYm9ydENvbnRyb2xsZXIvQWJvcnRTaWduYWwgbWlnaHQgaGF2ZSB1bmRlc2lyYWJsZSBlZmZlY3RzKS4gJyArXG4gICAgICAgICAgICAnWW91IG1heSBkaXNhYmxlIHRoaXMgd2l0aCBMUlVfQ0FDSEVfSUdOT1JFX0FDX1dBUk5JTkc9MSBpbiB0aGUgZW52LicsICdOT19BQk9SVF9DT05UUk9MTEVSJywgJ0VOT1RTVVAnLCB3YXJuQUNQb2x5ZmlsbCk7XG4gICAgfTtcbn1cbi8qIGM4IGlnbm9yZSBzdG9wICovXG5jb25zdCBzaG91bGRXYXJuID0gKGNvZGUpID0+ICF3YXJuZWQuaGFzKGNvZGUpO1xuY29uc3QgVFlQRSA9IFN5bWJvbCgndHlwZScpO1xuY29uc3QgaXNQb3NJbnQgPSAobikgPT4gbiAmJiBuID09PSBNYXRoLmZsb29yKG4pICYmIG4gPiAwICYmIGlzRmluaXRlKG4pO1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG4vLyBUaGlzIGlzIGEgbGl0dGxlIGJpdCByaWRpY3Vsb3VzLCB0YmguXG4vLyBUaGUgbWF4aW11bSBhcnJheSBsZW5ndGggaXMgMl4zMi0xIG9yIHRoZXJlYWJvdXRzIG9uIG1vc3QgSlMgaW1wbHMuXG4vLyBBbmQgd2VsbCBiZWZvcmUgdGhhdCBwb2ludCwgeW91J3JlIGNhY2hpbmcgdGhlIGVudGlyZSB3b3JsZCwgSSBtZWFuLFxuLy8gdGhhdCdzIH4zMkdCIG9mIGp1c3QgaW50ZWdlcnMgZm9yIHRoZSBuZXh0L3ByZXYgbGlua3MsIHBsdXMgd2hhdGV2ZXJcbi8vIGVsc2UgdG8gaG9sZCB0aGF0IG1hbnkga2V5cyBhbmQgdmFsdWVzLiAgSnVzdCBmaWxsaW5nIHRoZSBtZW1vcnkgd2l0aFxuLy8gemVyb2VzIGF0IGluaXQgdGltZSBpcyBicnV0YWwgd2hlbiB5b3UgZ2V0IHRoYXQgYmlnLlxuLy8gQnV0IHdoeSBub3QgYmUgY29tcGxldGU/XG4vLyBNYXliZSBpbiB0aGUgZnV0dXJlLCB0aGVzZSBsaW1pdHMgd2lsbCBoYXZlIGV4cGFuZGVkLlxuY29uc3QgZ2V0VWludEFycmF5ID0gKG1heCkgPT4gIWlzUG9zSW50KG1heClcbiAgICA/IG51bGxcbiAgICA6IG1heCA8PSBNYXRoLnBvdygyLCA4KVxuICAgICAgICA/IFVpbnQ4QXJyYXlcbiAgICAgICAgOiBtYXggPD0gTWF0aC5wb3coMiwgMTYpXG4gICAgICAgICAgICA/IFVpbnQxNkFycmF5XG4gICAgICAgICAgICA6IG1heCA8PSBNYXRoLnBvdygyLCAzMilcbiAgICAgICAgICAgICAgICA/IFVpbnQzMkFycmF5XG4gICAgICAgICAgICAgICAgOiBtYXggPD0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgICAgICAgICAgICAgICAgPyBaZXJvQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuLyogYzggaWdub3JlIHN0b3AgKi9cbmNsYXNzIFplcm9BcnJheSBleHRlbmRzIEFycmF5IHtcbiAgICBjb25zdHJ1Y3RvcihzaXplKSB7XG4gICAgICAgIHN1cGVyKHNpemUpO1xuICAgICAgICB0aGlzLmZpbGwoMCk7XG4gICAgfVxufVxuY2xhc3MgU3RhY2sge1xuICAgIGhlYXA7XG4gICAgbGVuZ3RoO1xuICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3JcbiAgICBzdGF0aWMgI2NvbnN0cnVjdGluZyA9IGZhbHNlO1xuICAgIHN0YXRpYyBjcmVhdGUobWF4KSB7XG4gICAgICAgIGNvbnN0IEhlYXBDbHMgPSBnZXRVaW50QXJyYXkobWF4KTtcbiAgICAgICAgaWYgKCFIZWFwQ2xzKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBTdGFjay4jY29uc3RydWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcyA9IG5ldyBTdGFjayhtYXgsIEhlYXBDbHMpO1xuICAgICAgICBTdGFjay4jY29uc3RydWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihtYXgsIEhlYXBDbHMpIHtcbiAgICAgICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgICAgIGlmICghU3RhY2suI2NvbnN0cnVjdGluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5zdGFudGlhdGUgU3RhY2sgdXNpbmcgU3RhY2suY3JlYXRlKG4pJyk7XG4gICAgICAgIH1cbiAgICAgICAgLyogYzggaWdub3JlIHN0b3AgKi9cbiAgICAgICAgdGhpcy5oZWFwID0gbmV3IEhlYXBDbHMobWF4KTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIH1cbiAgICBwdXNoKG4pIHtcbiAgICAgICAgdGhpcy5oZWFwW3RoaXMubGVuZ3RoKytdID0gbjtcbiAgICB9XG4gICAgcG9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFwWy0tdGhpcy5sZW5ndGhdO1xuICAgIH1cbn1cbi8qKlxuICogRGVmYXVsdCBleHBvcnQsIHRoZSB0aGluZyB5b3UncmUgdXNpbmcgdGhpcyBtb2R1bGUgdG8gZ2V0LlxuICpcbiAqIFRoZSBgS2AgYW5kIGBWYCB0eXBlcyBkZWZpbmUgdGhlIGtleSBhbmQgdmFsdWUgdHlwZXMsIHJlc3BlY3RpdmVseS4gVGhlXG4gKiBvcHRpb25hbCBgRkNgIHR5cGUgZGVmaW5lcyB0aGUgdHlwZSBvZiB0aGUgYGNvbnRleHRgIG9iamVjdCBwYXNzZWQgdG9cbiAqIGBjYWNoZS5mZXRjaCgpYCBhbmQgYGNhY2hlLm1lbW8oKWAuXG4gKlxuICogS2V5cyBhbmQgdmFsdWVzICoqbXVzdCBub3QqKiBiZSBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKlxuICogQWxsIHByb3BlcnRpZXMgZnJvbSB0aGUgb3B0aW9ucyBvYmplY3QgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgbWF4YCxcbiAqIGBtYXhTaXplYCwgYGZldGNoTWV0aG9kYCwgYG1lbW9NZXRob2RgLCBgZGlzcG9zZWAgYW5kIGBkaXNwb3NlQWZ0ZXJgKSBhcmVcbiAqIGFkZGVkIGFzIG5vcm1hbCBwdWJsaWMgbWVtYmVycy4gKFRoZSBsaXN0ZWQgb3B0aW9ucyBhcmUgcmVhZC1vbmx5IGdldHRlcnMuKVxuICpcbiAqIENoYW5naW5nIGFueSBvZiB0aGVzZSB3aWxsIGFsdGVyIHRoZSBkZWZhdWx0cyBmb3Igc3Vic2VxdWVudCBtZXRob2QgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMUlVDYWNoZSB7XG4gICAgLy8gb3B0aW9ucyB0aGF0IGNhbm5vdCBiZSBjaGFuZ2VkIHdpdGhvdXQgZGlzYXN0ZXJcbiAgICAjbWF4O1xuICAgICNtYXhTaXplO1xuICAgICNkaXNwb3NlO1xuICAgICNkaXNwb3NlQWZ0ZXI7XG4gICAgI2ZldGNoTWV0aG9kO1xuICAgICNtZW1vTWV0aG9kO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS50dGx9XG4gICAgICovXG4gICAgdHRsO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS50dGxSZXNvbHV0aW9ufVxuICAgICAqL1xuICAgIHR0bFJlc29sdXRpb247XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnR0bEF1dG9wdXJnZX1cbiAgICAgKi9cbiAgICB0dGxBdXRvcHVyZ2U7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnVwZGF0ZUFnZU9uR2V0fVxuICAgICAqL1xuICAgIHVwZGF0ZUFnZU9uR2V0O1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS51cGRhdGVBZ2VPbkhhc31cbiAgICAgKi9cbiAgICB1cGRhdGVBZ2VPbkhhcztcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuYWxsb3dTdGFsZX1cbiAgICAgKi9cbiAgICBhbGxvd1N0YWxlO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5ub0Rpc3Bvc2VPblNldH1cbiAgICAgKi9cbiAgICBub0Rpc3Bvc2VPblNldDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2Uubm9VcGRhdGVUVEx9XG4gICAgICovXG4gICAgbm9VcGRhdGVUVEw7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm1heEVudHJ5U2l6ZX1cbiAgICAgKi9cbiAgICBtYXhFbnRyeVNpemU7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnNpemVDYWxjdWxhdGlvbn1cbiAgICAgKi9cbiAgICBzaXplQ2FsY3VsYXRpb247XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbn1cbiAgICAgKi9cbiAgICBub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm5vRGVsZXRlT25TdGFsZUdldH1cbiAgICAgKi9cbiAgICBub0RlbGV0ZU9uU3RhbGVHZXQ7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmFsbG93U3RhbGVPbkZldGNoQWJvcnR9XG4gICAgICovXG4gICAgYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb259XG4gICAgICovXG4gICAgYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmlnbm9yZUZldGNoQWJvcnR9XG4gICAgICovXG4gICAgaWdub3JlRmV0Y2hBYm9ydDtcbiAgICAvLyBjb21wdXRlZCBwcm9wZXJ0aWVzXG4gICAgI3NpemU7XG4gICAgI2NhbGN1bGF0ZWRTaXplO1xuICAgICNrZXlNYXA7XG4gICAgI2tleUxpc3Q7XG4gICAgI3ZhbExpc3Q7XG4gICAgI25leHQ7XG4gICAgI3ByZXY7XG4gICAgI2hlYWQ7XG4gICAgI3RhaWw7XG4gICAgI2ZyZWU7XG4gICAgI2Rpc3Bvc2VkO1xuICAgICNzaXplcztcbiAgICAjc3RhcnRzO1xuICAgICN0dGxzO1xuICAgICNoYXNEaXNwb3NlO1xuICAgICNoYXNGZXRjaE1ldGhvZDtcbiAgICAjaGFzRGlzcG9zZUFmdGVyO1xuICAgIC8qKlxuICAgICAqIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIHVubGVzcyB5b3UgbmVlZCB0byBpbnNwZWN0IHRoZVxuICAgICAqIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBjYWNoZS4gIElmIGFueXRoaW5nIHJldHVybmVkIGJ5IHRoaXNcbiAgICAgKiBvYmplY3QgaXMgbW9kaWZpZWQgaW4gYW55IHdheSwgc3RyYW5nZSBicmVha2FnZSBtYXkgb2NjdXIuXG4gICAgICpcbiAgICAgKiBUaGVzZSBmaWVsZHMgYXJlIHByaXZhdGUgZm9yIGEgcmVhc29uIVxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc3RhdGljIHVuc2FmZUV4cG9zZUludGVybmFscyhjKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBzdGFydHM6IGMuI3N0YXJ0cyxcbiAgICAgICAgICAgIHR0bHM6IGMuI3R0bHMsXG4gICAgICAgICAgICBzaXplczogYy4jc2l6ZXMsXG4gICAgICAgICAgICBrZXlNYXA6IGMuI2tleU1hcCxcbiAgICAgICAgICAgIGtleUxpc3Q6IGMuI2tleUxpc3QsXG4gICAgICAgICAgICB2YWxMaXN0OiBjLiN2YWxMaXN0LFxuICAgICAgICAgICAgbmV4dDogYy4jbmV4dCxcbiAgICAgICAgICAgIHByZXY6IGMuI3ByZXYsXG4gICAgICAgICAgICBnZXQgaGVhZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYy4jaGVhZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdGFpbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYy4jdGFpbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmcmVlOiBjLiNmcmVlLFxuICAgICAgICAgICAgLy8gbWV0aG9kc1xuICAgICAgICAgICAgaXNCYWNrZ3JvdW5kRmV0Y2g6IChwKSA9PiBjLiNpc0JhY2tncm91bmRGZXRjaChwKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRGZXRjaDogKGssIGluZGV4LCBvcHRpb25zLCBjb250ZXh0KSA9PiBjLiNiYWNrZ3JvdW5kRmV0Y2goaywgaW5kZXgsIG9wdGlvbnMsIGNvbnRleHQpLFxuICAgICAgICAgICAgbW92ZVRvVGFpbDogKGluZGV4KSA9PiBjLiNtb3ZlVG9UYWlsKGluZGV4KSxcbiAgICAgICAgICAgIGluZGV4ZXM6IChvcHRpb25zKSA9PiBjLiNpbmRleGVzKG9wdGlvbnMpLFxuICAgICAgICAgICAgcmluZGV4ZXM6IChvcHRpb25zKSA9PiBjLiNyaW5kZXhlcyhvcHRpb25zKSxcbiAgICAgICAgICAgIGlzU3RhbGU6IChpbmRleCkgPT4gYy4jaXNTdGFsZShpbmRleCksXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIFByb3RlY3RlZCByZWFkLW9ubHkgbWVtYmVyc1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5tYXh9IChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IG1heCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21heDtcbiAgICB9XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm1heFNpemV9IChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IG1heFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNtYXhTaXplO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdG90YWwgY29tcHV0ZWQgc2l6ZSBvZiBpdGVtcyBpbiB0aGUgY2FjaGUgKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgY2FsY3VsYXRlZFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNjYWxjdWxhdGVkU2l6ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBpdGVtcyBzdG9yZWQgaW4gdGhlIGNhY2hlIChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzaXplO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuZmV0Y2hNZXRob2R9IChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IGZldGNoTWV0aG9kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jZmV0Y2hNZXRob2Q7XG4gICAgfVxuICAgIGdldCBtZW1vTWV0aG9kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWVtb01ldGhvZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmRpc3Bvc2V9IChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IGRpc3Bvc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNkaXNwb3NlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuZGlzcG9zZUFmdGVyfSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBkaXNwb3NlQWZ0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNkaXNwb3NlQWZ0ZXI7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBtYXggPSAwLCB0dGwsIHR0bFJlc29sdXRpb24gPSAxLCB0dGxBdXRvcHVyZ2UsIHVwZGF0ZUFnZU9uR2V0LCB1cGRhdGVBZ2VPbkhhcywgYWxsb3dTdGFsZSwgZGlzcG9zZSwgZGlzcG9zZUFmdGVyLCBub0Rpc3Bvc2VPblNldCwgbm9VcGRhdGVUVEwsIG1heFNpemUgPSAwLCBtYXhFbnRyeVNpemUgPSAwLCBzaXplQ2FsY3VsYXRpb24sIGZldGNoTWV0aG9kLCBtZW1vTWV0aG9kLCBub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24sIG5vRGVsZXRlT25TdGFsZUdldCwgYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24sIGFsbG93U3RhbGVPbkZldGNoQWJvcnQsIGlnbm9yZUZldGNoQWJvcnQsIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAobWF4ICE9PSAwICYmICFpc1Bvc0ludChtYXgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXggb3B0aW9uIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgVWludEFycmF5ID0gbWF4ID8gZ2V0VWludEFycmF5KG1heCkgOiBBcnJheTtcbiAgICAgICAgaWYgKCFVaW50QXJyYXkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBtYXggdmFsdWU6ICcgKyBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI21heCA9IG1heDtcbiAgICAgICAgdGhpcy4jbWF4U2l6ZSA9IG1heFNpemU7XG4gICAgICAgIHRoaXMubWF4RW50cnlTaXplID0gbWF4RW50cnlTaXplIHx8IHRoaXMuI21heFNpemU7XG4gICAgICAgIHRoaXMuc2l6ZUNhbGN1bGF0aW9uID0gc2l6ZUNhbGN1bGF0aW9uO1xuICAgICAgICBpZiAodGhpcy5zaXplQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy4jbWF4U2l6ZSAmJiAhdGhpcy5tYXhFbnRyeVNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3Qgc2V0IHNpemVDYWxjdWxhdGlvbiB3aXRob3V0IHNldHRpbmcgbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXplQ2FsY3VsYXRpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplQ2FsY3VsYXRpb24gc2V0IHRvIG5vbi1mdW5jdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vTWV0aG9kICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHR5cGVvZiBtZW1vTWV0aG9kICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZW1vTWV0aG9kIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jbWVtb01ldGhvZCA9IG1lbW9NZXRob2Q7XG4gICAgICAgIGlmIChmZXRjaE1ldGhvZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0eXBlb2YgZmV0Y2hNZXRob2QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZldGNoTWV0aG9kIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBzcGVjaWZpZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNmZXRjaE1ldGhvZCA9IGZldGNoTWV0aG9kO1xuICAgICAgICB0aGlzLiNoYXNGZXRjaE1ldGhvZCA9ICEhZmV0Y2hNZXRob2Q7XG4gICAgICAgIHRoaXMuI2tleU1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy4ja2V5TGlzdCA9IG5ldyBBcnJheShtYXgpLmZpbGwodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy4jdmFsTGlzdCA9IG5ldyBBcnJheShtYXgpLmZpbGwodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy4jbmV4dCA9IG5ldyBVaW50QXJyYXkobWF4KTtcbiAgICAgICAgdGhpcy4jcHJldiA9IG5ldyBVaW50QXJyYXkobWF4KTtcbiAgICAgICAgdGhpcy4jaGVhZCA9IDA7XG4gICAgICAgIHRoaXMuI3RhaWwgPSAwO1xuICAgICAgICB0aGlzLiNmcmVlID0gU3RhY2suY3JlYXRlKG1heCk7XG4gICAgICAgIHRoaXMuI3NpemUgPSAwO1xuICAgICAgICB0aGlzLiNjYWxjdWxhdGVkU2l6ZSA9IDA7XG4gICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlQWZ0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlciA9IGRpc3Bvc2VBZnRlcjtcbiAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLiNkaXNwb3NlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNoYXNEaXNwb3NlID0gISF0aGlzLiNkaXNwb3NlO1xuICAgICAgICB0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIgPSAhIXRoaXMuI2Rpc3Bvc2VBZnRlcjtcbiAgICAgICAgdGhpcy5ub0Rpc3Bvc2VPblNldCA9ICEhbm9EaXNwb3NlT25TZXQ7XG4gICAgICAgIHRoaXMubm9VcGRhdGVUVEwgPSAhIW5vVXBkYXRlVFRMO1xuICAgICAgICB0aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbiA9ICEhbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uO1xuICAgICAgICB0aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uID0gISFhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtcbiAgICAgICAgdGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0ID0gISFhbGxvd1N0YWxlT25GZXRjaEFib3J0O1xuICAgICAgICB0aGlzLmlnbm9yZUZldGNoQWJvcnQgPSAhIWlnbm9yZUZldGNoQWJvcnQ7XG4gICAgICAgIC8vIE5COiBtYXhFbnRyeVNpemUgaXMgc2V0IHRvIG1heFNpemUgaWYgaXQncyBzZXRcbiAgICAgICAgaWYgKHRoaXMubWF4RW50cnlTaXplICE9PSAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWF4U2l6ZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNQb3NJbnQodGhpcy4jbWF4U2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4U2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG9zSW50KHRoaXMubWF4RW50cnlTaXplKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heEVudHJ5U2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2luaXRpYWxpemVTaXplVHJhY2tpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsbG93U3RhbGUgPSAhIWFsbG93U3RhbGU7XG4gICAgICAgIHRoaXMubm9EZWxldGVPblN0YWxlR2V0ID0gISFub0RlbGV0ZU9uU3RhbGVHZXQ7XG4gICAgICAgIHRoaXMudXBkYXRlQWdlT25HZXQgPSAhIXVwZGF0ZUFnZU9uR2V0O1xuICAgICAgICB0aGlzLnVwZGF0ZUFnZU9uSGFzID0gISF1cGRhdGVBZ2VPbkhhcztcbiAgICAgICAgdGhpcy50dGxSZXNvbHV0aW9uID1cbiAgICAgICAgICAgIGlzUG9zSW50KHR0bFJlc29sdXRpb24pIHx8IHR0bFJlc29sdXRpb24gPT09IDBcbiAgICAgICAgICAgICAgICA/IHR0bFJlc29sdXRpb25cbiAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgIHRoaXMudHRsQXV0b3B1cmdlID0gISF0dGxBdXRvcHVyZ2U7XG4gICAgICAgIHRoaXMudHRsID0gdHRsIHx8IDA7XG4gICAgICAgIGlmICh0aGlzLnR0bCkge1xuICAgICAgICAgICAgaWYgKCFpc1Bvc0ludCh0aGlzLnR0bCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0dGwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNpbml0aWFsaXplVFRMVHJhY2tpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBkbyBub3QgYWxsb3cgY29tcGxldGVseSB1bmJvdW5kZWQgY2FjaGVzXG4gICAgICAgIGlmICh0aGlzLiNtYXggPT09IDAgJiYgdGhpcy50dGwgPT09IDAgJiYgdGhpcy4jbWF4U2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXQgbGVhc3Qgb25lIG9mIG1heCwgbWF4U2l6ZSwgb3IgdHRsIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnR0bEF1dG9wdXJnZSAmJiAhdGhpcy4jbWF4ICYmICF0aGlzLiNtYXhTaXplKSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gJ0xSVV9DQUNIRV9VTkJPVU5ERUQnO1xuICAgICAgICAgICAgaWYgKHNob3VsZFdhcm4oY29kZSkpIHtcbiAgICAgICAgICAgICAgICB3YXJuZWQuYWRkKGNvZGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdUVEwgY2FjaGluZyB3aXRob3V0IHR0bEF1dG9wdXJnZSwgbWF4LCBvciBtYXhTaXplIGNhbiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCBpbiB1bmJvdW5kZWQgbWVtb3J5IGNvbnN1bXB0aW9uLic7XG4gICAgICAgICAgICAgICAgZW1pdFdhcm5pbmcobXNnLCAnVW5ib3VuZGVkQ2FjaGVXYXJuaW5nJywgY29kZSwgTFJVQ2FjaGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIG1zIGxlZnQgaW4gdGhlIGl0ZW0ncyBUVEwuIElmIGl0ZW0gaXMgbm90IGluIGNhY2hlLFxuICAgICAqIHJldHVybnMgYDBgLiBSZXR1cm5zIGBJbmZpbml0eWAgaWYgaXRlbSBpcyBpbiBjYWNoZSB3aXRob3V0IGEgZGVmaW5lZCBUVEwuXG4gICAgICovXG4gICAgZ2V0UmVtYWluaW5nVFRMKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy4ja2V5TWFwLmhhcyhrZXkpID8gSW5maW5pdHkgOiAwO1xuICAgIH1cbiAgICAjaW5pdGlhbGl6ZVRUTFRyYWNraW5nKCkge1xuICAgICAgICBjb25zdCB0dGxzID0gbmV3IFplcm9BcnJheSh0aGlzLiNtYXgpO1xuICAgICAgICBjb25zdCBzdGFydHMgPSBuZXcgWmVyb0FycmF5KHRoaXMuI21heCk7XG4gICAgICAgIHRoaXMuI3R0bHMgPSB0dGxzO1xuICAgICAgICB0aGlzLiNzdGFydHMgPSBzdGFydHM7XG4gICAgICAgIHRoaXMuI3NldEl0ZW1UVEwgPSAoaW5kZXgsIHR0bCwgc3RhcnQgPSBwZXJmLm5vdygpKSA9PiB7XG4gICAgICAgICAgICBzdGFydHNbaW5kZXhdID0gdHRsICE9PSAwID8gc3RhcnQgOiAwO1xuICAgICAgICAgICAgdHRsc1tpbmRleF0gPSB0dGw7XG4gICAgICAgICAgICBpZiAodHRsICE9PSAwICYmIHRoaXMudHRsQXV0b3B1cmdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaXNTdGFsZShpbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2RlbGV0ZSh0aGlzLiNrZXlMaXN0W2luZGV4XSwgJ2V4cGlyZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdHRsICsgMSk7XG4gICAgICAgICAgICAgICAgLy8gdW5yZWYoKSBub3Qgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXNcbiAgICAgICAgICAgICAgICAvKiBjOCBpZ25vcmUgc3RhcnQgKi9cbiAgICAgICAgICAgICAgICBpZiAodC51bnJlZikge1xuICAgICAgICAgICAgICAgICAgICB0LnVucmVmKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuI3VwZGF0ZUl0ZW1BZ2UgPSBpbmRleCA9PiB7XG4gICAgICAgICAgICBzdGFydHNbaW5kZXhdID0gdHRsc1tpbmRleF0gIT09IDAgPyBwZXJmLm5vdygpIDogMDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4jc3RhdHVzVFRMID0gKHN0YXR1cywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0dGxzW2luZGV4XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR0bCA9IHR0bHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc3RhcnRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIGlmICghdHRsIHx8ICFzdGFydClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHN0YXR1cy50dGwgPSB0dGw7XG4gICAgICAgICAgICAgICAgc3RhdHVzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgc3RhdHVzLm5vdyA9IGNhY2hlZE5vdyB8fCBnZXROb3coKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhZ2UgPSBzdGF0dXMubm93IC0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgc3RhdHVzLnJlbWFpbmluZ1RUTCA9IHR0bCAtIGFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gZGVib3VuY2UgY2FsbHMgdG8gcGVyZi5ub3coKSB0byAxcyBzbyB3ZSdyZSBub3QgaGl0dGluZ1xuICAgICAgICAvLyB0aGF0IGNvc3RseSBjYWxsIHJlcGVhdGVkbHkuXG4gICAgICAgIGxldCBjYWNoZWROb3cgPSAwO1xuICAgICAgICBjb25zdCBnZXROb3cgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuID0gcGVyZi5ub3coKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR0bFJlc29sdXRpb24gPiAwKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkTm93ID0gbjtcbiAgICAgICAgICAgICAgICBjb25zdCB0ID0gc2V0VGltZW91dCgoKSA9PiAoY2FjaGVkTm93ID0gMCksIHRoaXMudHRsUmVzb2x1dGlvbik7XG4gICAgICAgICAgICAgICAgLy8gbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgICAgICAgICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgICAgICAgICAgICAgaWYgKHQudW5yZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdC51bnJlZigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2V0UmVtYWluaW5nVFRMID0ga2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHR0bCA9IHR0bHNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzdGFydHNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKCF0dGwgfHwgIXN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWdlID0gKGNhY2hlZE5vdyB8fCBnZXROb3coKSkgLSBzdGFydDtcbiAgICAgICAgICAgIHJldHVybiB0dGwgLSBhZ2U7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuI2lzU3RhbGUgPSBpbmRleCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzID0gc3RhcnRzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0dGxzW2luZGV4XTtcbiAgICAgICAgICAgIHJldHVybiAhIXQgJiYgISFzICYmIChjYWNoZWROb3cgfHwgZ2V0Tm93KCkpIC0gcyA+IHQ7XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIGNvbmRpdGlvbmFsbHkgc2V0IHByaXZhdGUgbWV0aG9kcyByZWxhdGVkIHRvIFRUTFxuICAgICN1cGRhdGVJdGVtQWdlID0gKCkgPT4geyB9O1xuICAgICNzdGF0dXNUVEwgPSAoKSA9PiB7IH07XG4gICAgI3NldEl0ZW1UVEwgPSAoKSA9PiB7IH07XG4gICAgLyogYzggaWdub3JlIHN0b3AgKi9cbiAgICAjaXNTdGFsZSA9ICgpID0+IGZhbHNlO1xuICAgICNpbml0aWFsaXplU2l6ZVRyYWNraW5nKCkge1xuICAgICAgICBjb25zdCBzaXplcyA9IG5ldyBaZXJvQXJyYXkodGhpcy4jbWF4KTtcbiAgICAgICAgdGhpcy4jY2FsY3VsYXRlZFNpemUgPSAwO1xuICAgICAgICB0aGlzLiNzaXplcyA9IHNpemVzO1xuICAgICAgICB0aGlzLiNyZW1vdmVJdGVtU2l6ZSA9IGluZGV4ID0+IHtcbiAgICAgICAgICAgIHRoaXMuI2NhbGN1bGF0ZWRTaXplIC09IHNpemVzW2luZGV4XTtcbiAgICAgICAgICAgIHNpemVzW2luZGV4XSA9IDA7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuI3JlcXVpcmVTaXplID0gKGssIHYsIHNpemUsIHNpemVDYWxjdWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgLy8gcHJvdmlzaW9uYWxseSBhY2NlcHQgYmFja2dyb3VuZCBmZXRjaGVzLlxuICAgICAgICAgICAgLy8gYWN0dWFsIHZhbHVlIHNpemUgd2lsbCBiZSBjaGVja2VkIHdoZW4gdGhleSByZXR1cm4uXG4gICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNQb3NJbnQoc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2l6ZUNhbGN1bGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2l6ZUNhbGN1bGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplQ2FsY3VsYXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVDYWxjdWxhdGlvbih2LCBrKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Bvc0ludChzaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZUNhbGN1bGF0aW9uIHJldHVybiBpbnZhbGlkIChleHBlY3QgcG9zaXRpdmUgaW50ZWdlciknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzaXplIHZhbHVlIChtdXN0IGJlIHBvc2l0aXZlIGludGVnZXIpLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdXaGVuIG1heFNpemUgb3IgbWF4RW50cnlTaXplIGlzIHVzZWQsIHNpemVDYWxjdWxhdGlvbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdvciBzaXplIG11c3QgYmUgc2V0LicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNhZGRJdGVtU2l6ZSA9IChpbmRleCwgc2l6ZSwgc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICBzaXplc1tpbmRleF0gPSBzaXplO1xuICAgICAgICAgICAgaWYgKHRoaXMuI21heFNpemUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhTaXplID0gdGhpcy4jbWF4U2l6ZSAtIHNpemVzW2luZGV4XTtcbiAgICAgICAgICAgICAgICB3aGlsZSAodGhpcy4jY2FsY3VsYXRlZFNpemUgPiBtYXhTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2V2aWN0KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2NhbGN1bGF0ZWRTaXplICs9IHNpemVzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZW50cnlTaXplID0gc2l6ZTtcbiAgICAgICAgICAgICAgICBzdGF0dXMudG90YWxDYWxjdWxhdGVkU2l6ZSA9IHRoaXMuI2NhbGN1bGF0ZWRTaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICAjcmVtb3ZlSXRlbVNpemUgPSBfaSA9PiB7IH07XG4gICAgI2FkZEl0ZW1TaXplID0gKF9pLCBfcywgX3N0KSA9PiB7IH07XG4gICAgI3JlcXVpcmVTaXplID0gKF9rLCBfdiwgc2l6ZSwgc2l6ZUNhbGN1bGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChzaXplIHx8IHNpemVDYWxjdWxhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2Fubm90IHNldCBzaXplIHdpdGhvdXQgc2V0dGluZyBtYXhTaXplIG9yIG1heEVudHJ5U2l6ZSBvbiBjYWNoZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgKiNpbmRleGVzKHsgYWxsb3dTdGFsZSA9IHRoaXMuYWxsb3dTdGFsZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHRoaXMuI3NpemUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLiN0YWlsOyB0cnVlOykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy4jaXNWYWxpZEluZGV4KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dTdGFsZSB8fCAhdGhpcy4jaXNTdGFsZShpKSkge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy4jaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLiNwcmV2W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAqI3JpbmRleGVzKHsgYWxsb3dTdGFsZSA9IHRoaXMuYWxsb3dTdGFsZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHRoaXMuI3NpemUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLiNoZWFkOyB0cnVlOykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy4jaXNWYWxpZEluZGV4KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dTdGFsZSB8fCAhdGhpcy4jaXNTdGFsZShpKSkge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy4jdGFpbCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLiNuZXh0W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjaXNWYWxpZEluZGV4KGluZGV4KSB7XG4gICAgICAgIHJldHVybiAoaW5kZXggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdGhpcy4ja2V5TWFwLmdldCh0aGlzLiNrZXlMaXN0W2luZGV4XSkgPT09IGluZGV4KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIGBba2V5LCB2YWx1ZV1gIHBhaXJzLFxuICAgICAqIGluIG9yZGVyIGZyb20gbW9zdCByZWNlbnRseSB1c2VkIHRvIGxlYXN0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKmVudHJpZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiN2YWxMaXN0W2ldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLiNrZXlMaXN0W2ldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBbdGhpcy4ja2V5TGlzdFtpXSwgdGhpcy4jdmFsTGlzdFtpXV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSW52ZXJzZSBvcmRlciB2ZXJzaW9uIG9mIHtAbGluayBMUlVDYWNoZS5lbnRyaWVzfVxuICAgICAqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIGBba2V5LCB2YWx1ZV1gIHBhaXJzLFxuICAgICAqIGluIG9yZGVyIGZyb20gbGVhc3QgcmVjZW50bHkgdXNlZCB0byBtb3N0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKnJlbnRyaWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jcmluZGV4ZXMoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbExpc3RbaV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuI2tleUxpc3RbaV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIFt0aGlzLiNrZXlMaXN0W2ldLCB0aGlzLiN2YWxMaXN0W2ldXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgdGhlIGtleXMgaW4gdGhlIGNhY2hlLFxuICAgICAqIGluIG9yZGVyIGZyb20gbW9zdCByZWNlbnRseSB1c2VkIHRvIGxlYXN0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKmtleXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSB0aGlzLiNrZXlMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKGsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSW52ZXJzZSBvcmRlciB2ZXJzaW9uIG9mIHtAbGluayBMUlVDYWNoZS5rZXlzfVxuICAgICAqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIHRoZSBrZXlzIGluIHRoZSBjYWNoZSxcbiAgICAgKiBpbiBvcmRlciBmcm9tIGxlYXN0IHJlY2VudGx5IHVzZWQgdG8gbW9zdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICpya2V5cygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI3JpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSB0aGlzLiNrZXlMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKGsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIGNhY2hlLFxuICAgICAqIGluIG9yZGVyIGZyb20gbW9zdCByZWNlbnRseSB1c2VkIHRvIGxlYXN0IHJlY2VudGx5IHVzZWQuXG4gICAgICovXG4gICAgKnZhbHVlcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnZlcnNlIG9yZGVyIHZlcnNpb24gb2Yge0BsaW5rIExSVUNhY2hlLnZhbHVlc31cbiAgICAgKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSxcbiAgICAgKiBpbiBvcmRlciBmcm9tIGxlYXN0IHJlY2VudGx5IHVzZWQgdG8gbW9zdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICpydmFsdWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jcmluZGV4ZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJdGVyYXRpbmcgb3ZlciB0aGUgY2FjaGUgaXRzZWxmIHlpZWxkcyB0aGUgc2FtZSByZXN1bHRzIGFzXG4gICAgICoge0BsaW5rIExSVUNhY2hlLmVudHJpZXN9XG4gICAgICovXG4gICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBTdHJpbmcgdmFsdWUgdGhhdCBpcyB1c2VkIGluIHRoZSBjcmVhdGlvbiBvZiB0aGUgZGVmYXVsdCBzdHJpbmdcbiAgICAgKiBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3QuIENhbGxlZCBieSB0aGUgYnVpbHQtaW4gbWV0aG9kXG4gICAgICogYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqL1xuICAgIFtTeW1ib2wudG9TdHJpbmdUYWddID0gJ0xSVUNhY2hlJztcbiAgICAvKipcbiAgICAgKiBGaW5kIGEgdmFsdWUgZm9yIHdoaWNoIHRoZSBzdXBwbGllZCBmbiBtZXRob2QgcmV0dXJucyBhIHRydXRoeSB2YWx1ZSxcbiAgICAgKiBzaW1pbGFyIHRvIGBBcnJheS5maW5kKClgLiBmbiBpcyBjYWxsZWQgYXMgYGZuKHZhbHVlLCBrZXksIGNhY2hlKWAuXG4gICAgICovXG4gICAgZmluZChmbiwgZ2V0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KVxuICAgICAgICAgICAgICAgID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgIDogdjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGZuKHZhbHVlLCB0aGlzLiNrZXlMaXN0W2ldLCB0aGlzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCh0aGlzLiNrZXlMaXN0W2ldLCBnZXRPcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsIHRoZSBzdXBwbGllZCBmdW5jdGlvbiBvbiBlYWNoIGl0ZW0gaW4gdGhlIGNhY2hlLCBpbiBvcmRlciBmcm9tIG1vc3RcbiAgICAgKiByZWNlbnRseSB1c2VkIHRvIGxlYXN0IHJlY2VudGx5IHVzZWQuXG4gICAgICpcbiAgICAgKiBgZm5gIGlzIGNhbGxlZCBhcyBgZm4odmFsdWUsIGtleSwgY2FjaGUpYC5cbiAgICAgKlxuICAgICAqIElmIGB0aGlzcGAgaXMgcHJvdmlkZWQsIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGluIHRoZSBgdGhpc2AtY29udGV4dCBvZlxuICAgICAqIHRoZSBwcm92aWRlZCBvYmplY3QsIG9yIHRoZSBjYWNoZSBpZiBubyBgdGhpc3BgIG9iamVjdCBpcyBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIERvZXMgbm90IHVwZGF0ZSBhZ2Ugb3IgcmVjZW50eSBvZiB1c2UsIG9yIGl0ZXJhdGUgb3ZlciBzdGFsZSB2YWx1ZXMuXG4gICAgICovXG4gICAgZm9yRWFjaChmbiwgdGhpc3AgPSB0aGlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KVxuICAgICAgICAgICAgICAgID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgIDogdjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm4uY2FsbCh0aGlzcCwgdmFsdWUsIHRoaXMuI2tleUxpc3RbaV0sIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBzYW1lIGFzIHtAbGluayBMUlVDYWNoZS5mb3JFYWNofSBidXQgaXRlbXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW5cbiAgICAgKiByZXZlcnNlIG9yZGVyLiAgKGllLCBsZXNzIHJlY2VudGx5IHVzZWQgaXRlbXMgYXJlIGl0ZXJhdGVkIG92ZXIgZmlyc3QuKVxuICAgICAqL1xuICAgIHJmb3JFYWNoKGZuLCB0aGlzcCA9IHRoaXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI3JpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KVxuICAgICAgICAgICAgICAgID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgIDogdjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm4uY2FsbCh0aGlzcCwgdmFsdWUsIHRoaXMuI2tleUxpc3RbaV0sIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbnkgc3RhbGUgZW50cmllcy4gUmV0dXJucyB0cnVlIGlmIGFueXRoaW5nIHdhcyByZW1vdmVkLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdXJnZVN0YWxlKCkge1xuICAgICAgICBsZXQgZGVsZXRlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jcmluZGV4ZXMoeyBhbGxvd1N0YWxlOiB0cnVlIH0pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNTdGFsZShpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2RlbGV0ZSh0aGlzLiNrZXlMaXN0W2ldLCAnZXhwaXJlJyk7XG4gICAgICAgICAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZXh0ZW5kZWQgaW5mbyBhYm91dCBhIGdpdmVuIGVudHJ5LCB0byBnZXQgaXRzIHZhbHVlLCBzaXplLCBhbmRcbiAgICAgKiBUVEwgaW5mbyBzaW11bHRhbmVvdXNseS4gUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LlxuICAgICAqXG4gICAgICogVW5saWtlIHtAbGluayBMUlVDYWNoZSNkdW1wfSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGUgYW5kIHN1cnZpdmVcbiAgICAgKiBzZXJpYWxpemF0aW9uLCB0aGUgYHN0YXJ0YCB2YWx1ZSBpcyBhbHdheXMgdGhlIGN1cnJlbnQgdGltZXN0YW1wLCBhbmQgdGhlXG4gICAgICogYHR0bGAgaXMgYSBjYWxjdWxhdGVkIHJlbWFpbmluZyB0aW1lIHRvIGxpdmUgKG5lZ2F0aXZlIGlmIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogQWx3YXlzIHJldHVybnMgc3RhbGUgdmFsdWVzLCBpZiB0aGVpciBpbmZvIGlzIGZvdW5kIGluIHRoZSBjYWNoZSwgc28gYmVcbiAgICAgKiBzdXJlIHRvIGNoZWNrIGZvciBleHBpcmF0aW9ucyAoaWUsIGEgbmVnYXRpdmUge0BsaW5rIExSVUNhY2hlLkVudHJ5I3R0bH0pXG4gICAgICogaWYgcmVsZXZhbnQuXG4gICAgICovXG4gICAgaW5mbyhrZXkpIHtcbiAgICAgICAgY29uc3QgaSA9IHRoaXMuI2tleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGkgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpXG4gICAgICAgICAgICA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgIDogdjtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHsgdmFsdWUgfTtcbiAgICAgICAgaWYgKHRoaXMuI3R0bHMgJiYgdGhpcy4jc3RhcnRzKSB7XG4gICAgICAgICAgICBjb25zdCB0dGwgPSB0aGlzLiN0dGxzW2ldO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLiNzdGFydHNbaV07XG4gICAgICAgICAgICBpZiAodHRsICYmIHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtYWluID0gdHRsIC0gKHBlcmYubm93KCkgLSBzdGFydCk7XG4gICAgICAgICAgICAgICAgZW50cnkudHRsID0gcmVtYWluO1xuICAgICAgICAgICAgICAgIGVudHJ5LnN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4jc2l6ZXMpIHtcbiAgICAgICAgICAgIGVudHJ5LnNpemUgPSB0aGlzLiNzaXplc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBba2V5LCB7QGxpbmsgTFJVQ2FjaGUuRW50cnl9XSB0dXBsZXMgd2hpY2ggY2FuIGJlXG4gICAgICogcGFzc2VkIHRvIHtAbGluayBMUkxVQ2FjaGUjbG9hZH0uXG4gICAgICpcbiAgICAgKiBUaGUgYHN0YXJ0YCBmaWVsZHMgYXJlIGNhbGN1bGF0ZWQgcmVsYXRpdmUgdG8gYSBwb3J0YWJsZSBgRGF0ZS5ub3coKWBcbiAgICAgKiB0aW1lc3RhbXAsIGV2ZW4gaWYgYHBlcmZvcm1hbmNlLm5vdygpYCBpcyBhdmFpbGFibGUuXG4gICAgICpcbiAgICAgKiBTdGFsZSBlbnRyaWVzIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIGBkdW1wYCwgZXZlbiBpZlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5hbGxvd1N0YWxlfSBpcyBmYWxzZS5cbiAgICAgKlxuICAgICAqIE5vdGU6IHRoaXMgcmV0dXJucyBhbiBhY3R1YWwgYXJyYXksIG5vdCBhIGdlbmVyYXRvciwgc28gaXQgY2FuIGJlIG1vcmVcbiAgICAgKiBlYXNpbHkgcGFzc2VkIGFyb3VuZC5cbiAgICAgKi9cbiAgICBkdW1wKCkge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI2luZGV4ZXMoeyBhbGxvd1N0YWxlOiB0cnVlIH0pKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLiNrZXlMaXN0W2ldO1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpXG4gICAgICAgICAgICAgICAgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgOiB2O1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwga2V5ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHsgdmFsdWUgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLiN0dGxzICYmIHRoaXMuI3N0YXJ0cykge1xuICAgICAgICAgICAgICAgIGVudHJ5LnR0bCA9IHRoaXMuI3R0bHNbaV07XG4gICAgICAgICAgICAgICAgLy8gYWx3YXlzIGR1bXAgdGhlIHN0YXJ0IHJlbGF0aXZlIHRvIGEgcG9ydGFibGUgdGltZXN0YW1wXG4gICAgICAgICAgICAgICAgLy8gaXQncyBvayBmb3IgdGhpcyB0byBiZSBhIGJpdCBzbG93LCBpdCdzIGEgcmFyZSBvcGVyYXRpb24uXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlID0gcGVyZi5ub3coKSAtIHRoaXMuI3N0YXJ0c1tpXTtcbiAgICAgICAgICAgICAgICBlbnRyeS5zdGFydCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAtIGFnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy4jc2l6ZXMpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5zaXplID0gdGhpcy4jc2l6ZXNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcnIudW5zaGlmdChba2V5LCBlbnRyeV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBjYWNoZSBhbmQgbG9hZCBpbiB0aGUgaXRlbXMgaW4gZW50cmllcyBpbiB0aGUgb3JkZXIgbGlzdGVkLlxuICAgICAqXG4gICAgICogVGhlIHNoYXBlIG9mIHRoZSByZXN1bHRpbmcgY2FjaGUgbWF5IGJlIGRpZmZlcmVudCBpZiB0aGUgc2FtZSBvcHRpb25zIGFyZVxuICAgICAqIG5vdCB1c2VkIGluIGJvdGggY2FjaGVzLlxuICAgICAqXG4gICAgICogVGhlIGBzdGFydGAgZmllbGRzIGFyZSBhc3N1bWVkIHRvIGJlIGNhbGN1bGF0ZWQgcmVsYXRpdmUgdG8gYSBwb3J0YWJsZVxuICAgICAqIGBEYXRlLm5vdygpYCB0aW1lc3RhbXAsIGV2ZW4gaWYgYHBlcmZvcm1hbmNlLm5vdygpYCBpcyBhdmFpbGFibGUuXG4gICAgICovXG4gICAgbG9hZChhcnIpIHtcbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGVudHJ5XSBvZiBhcnIpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5zdGFydCkge1xuICAgICAgICAgICAgICAgIC8vIGVudHJ5LnN0YXJ0IGlzIGEgcG9ydGFibGUgdGltZXN0YW1wLCBidXQgd2UgbWF5IGJlIHVzaW5nXG4gICAgICAgICAgICAgICAgLy8gbm9kZSdzIHBlcmZvcm1hbmNlLm5vdygpLCBzbyBjYWxjdWxhdGUgdGhlIG9mZnNldCwgc28gdGhhdFxuICAgICAgICAgICAgICAgIC8vIHdlIGdldCB0aGUgaW50ZW5kZWQgcmVtYWluaW5nIFRUTCwgbm8gbWF0dGVyIGhvdyBsb25nIGl0J3NcbiAgICAgICAgICAgICAgICAvLyBiZWVuIG9uIGljZS5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIGl0J3Mgb2sgZm9yIHRoaXMgdG8gYmUgYSBiaXQgc2xvdywgaXQncyBhIHJhcmUgb3BlcmF0aW9uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGFnZSA9IERhdGUubm93KCkgLSBlbnRyeS5zdGFydDtcbiAgICAgICAgICAgICAgICBlbnRyeS5zdGFydCA9IHBlcmYubm93KCkgLSBhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldChrZXksIGVudHJ5LnZhbHVlLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkIGEgdmFsdWUgdG8gdGhlIGNhY2hlLlxuICAgICAqXG4gICAgICogTm90ZTogaWYgYHVuZGVmaW5lZGAgaXMgc3BlY2lmaWVkIGFzIGEgdmFsdWUsIHRoaXMgaXMgYW4gYWxpYXMgZm9yXG4gICAgICoge0BsaW5rIExSVUNhY2hlI2RlbGV0ZX1cbiAgICAgKlxuICAgICAqIEZpZWxkcyBvbiB0aGUge0BsaW5rIExSVUNhY2hlLlNldE9wdGlvbnN9IG9wdGlvbnMgcGFyYW0gd2lsbCBvdmVycmlkZVxuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGluIHRoZSBjb25zdHJ1Y3RvciBvcHRpb25zIGZvciB0aGUgc2NvcGVcbiAgICAgKiBvZiB0aGlzIHNpbmdsZSBgc2V0KClgIG9wZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIElmIGBzdGFydGAgaXMgcHJvdmlkZWQsIHRoZW4gdGhhdCB3aWxsIHNldCB0aGUgZWZmZWN0aXZlIHN0YXJ0XG4gICAgICogdGltZSBmb3IgdGhlIFRUTCBjYWxjdWxhdGlvbi4gTm90ZSB0aGF0IHRoaXMgbXVzdCBiZSBhIHByZXZpb3VzXG4gICAgICogdmFsdWUgb2YgYHBlcmZvcm1hbmNlLm5vdygpYCBpZiBzdXBwb3J0ZWQsIG9yIGEgcHJldmlvdXMgdmFsdWUgb2ZcbiAgICAgKiBgRGF0ZS5ub3coKWAgaWYgbm90LlxuICAgICAqXG4gICAgICogT3B0aW9ucyBvYmplY3QgbWF5IGFsc28gaW5jbHVkZSBgc2l6ZWAsIHdoaWNoIHdpbGwgcHJldmVudFxuICAgICAqIGNhbGxpbmcgdGhlIGBzaXplQ2FsY3VsYXRpb25gIGZ1bmN0aW9uIGFuZCBqdXN0IHVzZSB0aGUgc3BlY2lmaWVkXG4gICAgICogbnVtYmVyIGlmIGl0IGlzIGEgcG9zaXRpdmUgaW50ZWdlciwgYW5kIGBub0Rpc3Bvc2VPblNldGAgd2hpY2hcbiAgICAgKiB3aWxsIHByZXZlbnQgY2FsbGluZyBhIGBkaXNwb3NlYCBmdW5jdGlvbiBpbiB0aGUgY2FzZSBvZlxuICAgICAqIG92ZXJ3cml0ZXMuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgYHNpemVgIChvciByZXR1cm4gdmFsdWUgb2YgYHNpemVDYWxjdWxhdGlvbmApIGZvciBhIGdpdmVuXG4gICAgICogZW50cnkgaXMgZ3JlYXRlciB0aGFuIGBtYXhFbnRyeVNpemVgLCB0aGVuIHRoZSBpdGVtIHdpbGwgbm90IGJlXG4gICAgICogYWRkZWQgdG8gdGhlIGNhY2hlLlxuICAgICAqXG4gICAgICogV2lsbCB1cGRhdGUgdGhlIHJlY2VuY3kgb2YgdGhlIGVudHJ5LlxuICAgICAqXG4gICAgICogSWYgdGhlIHZhbHVlIGlzIGB1bmRlZmluZWRgLCB0aGVuIHRoaXMgaXMgYW4gYWxpYXMgZm9yXG4gICAgICogYGNhY2hlLmRlbGV0ZShrZXkpYC4gYHVuZGVmaW5lZGAgaXMgbmV2ZXIgc3RvcmVkIGluIHRoZSBjYWNoZS5cbiAgICAgKi9cbiAgICBzZXQoaywgdiwgc2V0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlKGspO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0dGwgPSB0aGlzLnR0bCwgc3RhcnQsIG5vRGlzcG9zZU9uU2V0ID0gdGhpcy5ub0Rpc3Bvc2VPblNldCwgc2l6ZUNhbGN1bGF0aW9uID0gdGhpcy5zaXplQ2FsY3VsYXRpb24sIHN0YXR1cywgfSA9IHNldE9wdGlvbnM7XG4gICAgICAgIGxldCB7IG5vVXBkYXRlVFRMID0gdGhpcy5ub1VwZGF0ZVRUTCB9ID0gc2V0T3B0aW9ucztcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuI3JlcXVpcmVTaXplKGssIHYsIHNldE9wdGlvbnMuc2l6ZSB8fCAwLCBzaXplQ2FsY3VsYXRpb24pO1xuICAgICAgICAvLyBpZiB0aGUgaXRlbSBkb2Vzbid0IGZpdCwgZG9uJ3QgZG8gYW55dGhpbmdcbiAgICAgICAgLy8gTkI6IG1heEVudHJ5U2l6ZSBzZXQgdG8gbWF4U2l6ZSBieSBkZWZhdWx0XG4gICAgICAgIGlmICh0aGlzLm1heEVudHJ5U2l6ZSAmJiBzaXplID4gdGhpcy5tYXhFbnRyeVNpemUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuc2V0ID0gJ21pc3MnO1xuICAgICAgICAgICAgICAgIHN0YXR1cy5tYXhFbnRyeVNpemVFeGNlZWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYXZlIHRvIGRlbGV0ZSwgaW4gY2FzZSBzb21ldGhpbmcgaXMgdGhlcmUgYWxyZWFkeS5cbiAgICAgICAgICAgIHRoaXMuI2RlbGV0ZShrLCAnc2V0Jyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLiNzaXplID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGFkZGl0aW9uXG4gICAgICAgICAgICBpbmRleCA9ICh0aGlzLiNzaXplID09PSAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLiN0YWlsXG4gICAgICAgICAgICAgICAgOiB0aGlzLiNmcmVlLmxlbmd0aCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuI2ZyZWUucG9wKClcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLiNzaXplID09PSB0aGlzLiNtYXhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy4jZXZpY3QoZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuI3NpemUpO1xuICAgICAgICAgICAgdGhpcy4ja2V5TGlzdFtpbmRleF0gPSBrO1xuICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSB2O1xuICAgICAgICAgICAgdGhpcy4ja2V5TWFwLnNldChrLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLiNuZXh0W3RoaXMuI3RhaWxdID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLiNwcmV2W2luZGV4XSA9IHRoaXMuI3RhaWw7XG4gICAgICAgICAgICB0aGlzLiN0YWlsID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLiNzaXplKys7XG4gICAgICAgICAgICB0aGlzLiNhZGRJdGVtU2l6ZShpbmRleCwgc2l6ZSwgc3RhdHVzKTtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgc3RhdHVzLnNldCA9ICdhZGQnO1xuICAgICAgICAgICAgbm9VcGRhdGVUVEwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZVxuICAgICAgICAgICAgdGhpcy4jbW92ZVRvVGFpbChpbmRleCk7XG4gICAgICAgICAgICBjb25zdCBvbGRWYWwgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIGlmICh2ICE9PSBvbGRWYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRmV0Y2hNZXRob2QgJiYgdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2gob2xkVmFsKSkge1xuICAgICAgICAgICAgICAgICAgICBvbGRWYWwuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCdyZXBsYWNlZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBfX3N0YWxlV2hpbGVGZXRjaGluZzogcyB9ID0gb2xkVmFsO1xuICAgICAgICAgICAgICAgICAgICBpZiAocyAhPT0gdW5kZWZpbmVkICYmICFub0Rpc3Bvc2VPblNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlPy4ocywgaywgJ3NldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkPy5wdXNoKFtzLCBrLCAnc2V0J10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFub0Rpc3Bvc2VPblNldCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZT8uKG9sZFZhbCwgaywgJ3NldCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkPy5wdXNoKFtvbGRWYWwsIGssICdzZXQnXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy4jcmVtb3ZlSXRlbVNpemUoaW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMuI2FkZEl0ZW1TaXplKGluZGV4LCBzaXplLCBzdGF0dXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gdjtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQgPSAncmVwbGFjZSc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gb2xkVmFsICYmIHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKG9sZFZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkVmFsLl9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9sZFZhbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuc2V0ID0gJ3VwZGF0ZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR0bCAhPT0gMCAmJiAhdGhpcy4jdHRscykge1xuICAgICAgICAgICAgdGhpcy4jaW5pdGlhbGl6ZVRUTFRyYWNraW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuI3R0bHMpIHtcbiAgICAgICAgICAgIGlmICghbm9VcGRhdGVUVEwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNzZXRJdGVtVFRMKGluZGV4LCB0dGwsIHN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzVFRMKHN0YXR1cywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9EaXNwb3NlT25TZXQgJiYgdGhpcy4jaGFzRGlzcG9zZUFmdGVyICYmIHRoaXMuI2Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBkdCA9IHRoaXMuI2Rpc3Bvc2VkO1xuICAgICAgICAgICAgbGV0IHRhc2s7XG4gICAgICAgICAgICB3aGlsZSAoKHRhc2sgPSBkdD8uc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXI/LiguLi50YXNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZpY3QgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgaXRlbSwgcmV0dXJuaW5nIGl0cyB2YWx1ZSBvclxuICAgICAqIGB1bmRlZmluZWRgIGlmIGNhY2hlIGlzIGVtcHR5LlxuICAgICAqL1xuICAgIHBvcCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLiNzaXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy4jdmFsTGlzdFt0aGlzLiNoZWFkXTtcbiAgICAgICAgICAgICAgICB0aGlzLiNldmljdCh0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godmFsKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsLl9fc3RhbGVXaGlsZUZldGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsLl9fc3RhbGVXaGlsZUZldGNoaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlciAmJiB0aGlzLiNkaXNwb3NlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGR0ID0gdGhpcy4jZGlzcG9zZWQ7XG4gICAgICAgICAgICAgICAgbGV0IHRhc2s7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCh0YXNrID0gZHQ/LnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlcj8uKC4uLnRhc2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjZXZpY3QoZnJlZSkge1xuICAgICAgICBjb25zdCBoZWFkID0gdGhpcy4jaGVhZDtcbiAgICAgICAgY29uc3QgayA9IHRoaXMuI2tleUxpc3RbaGVhZF07XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2hlYWRdO1xuICAgICAgICBpZiAodGhpcy4jaGFzRmV0Y2hNZXRob2QgJiYgdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgIHYuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCdldmljdGVkJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UgfHwgdGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2U/Lih2LCBrLCAnZXZpY3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlZD8ucHVzaChbdiwgaywgJ2V2aWN0J10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3JlbW92ZUl0ZW1TaXplKGhlYWQpO1xuICAgICAgICAvLyBpZiB3ZSBhcmVuJ3QgYWJvdXQgdG8gdXNlIHRoZSBpbmRleCwgdGhlbiBudWxsIHRoZXNlIG91dFxuICAgICAgICBpZiAoZnJlZSkge1xuICAgICAgICAgICAgdGhpcy4ja2V5TGlzdFtoZWFkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaGVhZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLiNmcmVlLnB1c2goaGVhZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuI3NpemUgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuI2hlYWQgPSB0aGlzLiN0YWlsID0gMDtcbiAgICAgICAgICAgIHRoaXMuI2ZyZWUubGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2hlYWQgPSB0aGlzLiNuZXh0W2hlYWRdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2tleU1hcC5kZWxldGUoayk7XG4gICAgICAgIHRoaXMuI3NpemUtLTtcbiAgICAgICAgcmV0dXJuIGhlYWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEga2V5IGlzIGluIHRoZSBjYWNoZSwgd2l0aG91dCB1cGRhdGluZyB0aGUgcmVjZW5jeSBvZiB1c2UuXG4gICAgICogV2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIGl0ZW0gaXMgc3RhbGUsIGV2ZW4gdGhvdWdoIGl0IGlzIHRlY2huaWNhbGx5XG4gICAgICogaW4gdGhlIGNhY2hlLlxuICAgICAqXG4gICAgICogQ2hlY2sgaWYgYSBrZXkgaXMgaW4gdGhlIGNhY2hlLCB3aXRob3V0IHVwZGF0aW5nIHRoZSByZWNlbmN5IG9mXG4gICAgICogdXNlLiBBZ2UgaXMgdXBkYXRlZCBpZiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudXBkYXRlQWdlT25IYXN9IGlzIHNldFxuICAgICAqIHRvIGB0cnVlYCBpbiBlaXRoZXIgdGhlIG9wdGlvbnMgb3IgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqXG4gICAgICogV2lsbCByZXR1cm4gYGZhbHNlYCBpZiB0aGUgaXRlbSBpcyBzdGFsZSwgZXZlbiB0aG91Z2ggaXQgaXMgdGVjaG5pY2FsbHkgaW5cbiAgICAgKiB0aGUgY2FjaGUuIFRoZSBkaWZmZXJlbmNlIGNhbiBiZSBkZXRlcm1pbmVkIChpZiBpdCBtYXR0ZXJzKSBieSB1c2luZyBhXG4gICAgICogYHN0YXR1c2AgYXJndW1lbnQsIGFuZCBpbnNwZWN0aW5nIHRoZSBgaGFzYCBmaWVsZC5cbiAgICAgKlxuICAgICAqIFdpbGwgbm90IHVwZGF0ZSBpdGVtIGFnZSB1bmxlc3NcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudXBkYXRlQWdlT25IYXN9IGlzIHNldC5cbiAgICAgKi9cbiAgICBoYXMoaywgaGFzT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHsgdXBkYXRlQWdlT25IYXMgPSB0aGlzLnVwZGF0ZUFnZU9uSGFzLCBzdGF0dXMgfSA9IGhhc09wdGlvbnM7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSAmJlxuICAgICAgICAgICAgICAgIHYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy4jaXNTdGFsZShpbmRleCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlQWdlT25IYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdXBkYXRlSXRlbUFnZShpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmhhcyA9ICdoaXQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNzdGF0dXNUVEwoc3RhdHVzLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmhhcyA9ICdzdGFsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzVFRMKHN0YXR1cywgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgc3RhdHVzLmhhcyA9ICdtaXNzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExpa2Uge0BsaW5rIExSVUNhY2hlI2dldH0gYnV0IGRvZXNuJ3QgdXBkYXRlIHJlY2VuY3kgb3IgZGVsZXRlIHN0YWxlXG4gICAgICogaXRlbXMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBpdGVtIGlzIHN0YWxlLCB1bmxlc3NcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuYWxsb3dTdGFsZX0gaXMgc2V0LlxuICAgICAqL1xuICAgIHBlZWsoaywgcGVla09wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IGFsbG93U3RhbGUgPSB0aGlzLmFsbG93U3RhbGUgfSA9IHBlZWtPcHRpb25zO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAoIWFsbG93U3RhbGUgJiYgdGhpcy4jaXNTdGFsZShpbmRleCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAvLyBlaXRoZXIgc3RhbGUgYW5kIGFsbG93ZWQsIG9yIGZvcmNpbmcgYSByZWZyZXNoIG9mIG5vbi1zdGFsZSB2YWx1ZVxuICAgICAgICByZXR1cm4gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nIDogdjtcbiAgICB9XG4gICAgI2JhY2tncm91bmRGZXRjaChrLCBpbmRleCwgb3B0aW9ucywgY29udGV4dCkge1xuICAgICAgICBjb25zdCB2ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjID0gbmV3IEFDKCk7XG4gICAgICAgIGNvbnN0IHsgc2lnbmFsIH0gPSBvcHRpb25zO1xuICAgICAgICAvLyB3aGVuL2lmIG91ciBBQyBzaWduYWxzLCB0aGVuIHN0b3AgbGlzdGVuaW5nIHRvIHRoZWlycy5cbiAgICAgICAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGFjLmFib3J0KHNpZ25hbC5yZWFzb24pLCB7XG4gICAgICAgICAgICBzaWduYWw6IGFjLnNpZ25hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZldGNoT3B0cyA9IHtcbiAgICAgICAgICAgIHNpZ25hbDogYWMuc2lnbmFsLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNiID0gKHYsIHVwZGF0ZUNhY2hlID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWJvcnRlZCB9ID0gYWMuc2lnbmFsO1xuICAgICAgICAgICAgY29uc3QgaWdub3JlQWJvcnQgPSBvcHRpb25zLmlnbm9yZUZldGNoQWJvcnQgJiYgdiAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFib3J0ZWQgJiYgIXVwZGF0ZUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoQWJvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoRXJyb3IgPSBhYy5zaWduYWwucmVhc29uO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWdub3JlQWJvcnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaEFib3J0SWdub3JlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaFJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWJvcnRlZCAmJiAhaWdub3JlQWJvcnQgJiYgIXVwZGF0ZUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoRmFpbChhYy5zaWduYWwucmVhc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVpdGhlciB3ZSBkaWRuJ3QgYWJvcnQsIGFuZCBhcmUgc3RpbGwgaGVyZSwgb3Igd2UgZGlkLCBhbmQgaWdub3JlZFxuICAgICAgICAgICAgY29uc3QgYmYgPSBwO1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbExpc3RbaW5kZXhdID09PSBwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkZWxldGUoaywgJ2ZldGNoJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoVXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KGssIHYsIGZldGNoT3B0cy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZWIgPSAoZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoUmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLmZldGNoRXJyb3IgPSBlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmZXRjaEZhaWwoZXIpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBmZXRjaEZhaWwgPSAoZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWJvcnRlZCB9ID0gYWMuc2lnbmFsO1xuICAgICAgICAgICAgY29uc3QgYWxsb3dTdGFsZUFib3J0ZWQgPSBhYm9ydGVkICYmIG9wdGlvbnMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93U3RhbGUgPSBhbGxvd1N0YWxlQWJvcnRlZCB8fCBvcHRpb25zLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uO1xuICAgICAgICAgICAgY29uc3Qgbm9EZWxldGUgPSBhbGxvd1N0YWxlIHx8IG9wdGlvbnMubm9EZWxldGVPbkZldGNoUmVqZWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgYmYgPSBwO1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbExpc3RbaW5kZXhdID09PSBwKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgd2UgYWxsb3cgc3RhbGUgb24gZmV0Y2ggcmVqZWN0aW9ucywgdGhlbiB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlIHN0YWxlIHZhbHVlIGlzIG5vdCByZW1vdmVkIGZyb20gdGhlIGNhY2hlIHdoZW4gdGhlIGZldGNoIGZhaWxzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGRlbCA9ICFub0RlbGV0ZSB8fCBiZi5fX3N0YWxlV2hpbGVGZXRjaGluZyA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmIChkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGVsZXRlKGssICdmZXRjaCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghYWxsb3dTdGFsZUFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgcmVwbGFjZSB0aGUgKnByb21pc2UqIHdpdGggdGhlIHN0YWxlIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBwcm9taXNlIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgIC8vIGxlYXZlIGl0IHVudG91Y2hlZCBpZiB3ZSdyZSBzdGlsbCB3YWl0aW5nIGZvciBhblxuICAgICAgICAgICAgICAgICAgICAvLyBhYm9ydGVkIGJhY2tncm91bmQgZmV0Y2ggdGhhdCBoYXNuJ3QgeWV0IHJldHVybmVkLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbGxvd1N0YWxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc3RhdHVzICYmIGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMucmV0dXJuZWRTdGFsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBiZi5fX3N0YWxlV2hpbGVGZXRjaGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJmLl9fcmV0dXJuZWQgPT09IGJmKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHBjYWxsID0gKHJlcywgcmVqKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmbXAgPSB0aGlzLiNmZXRjaE1ldGhvZD8uKGssIHYsIGZldGNoT3B0cyk7XG4gICAgICAgICAgICBpZiAoZm1wICYmIGZtcCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBmbXAudGhlbih2ID0+IHJlcyh2ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB2KSwgcmVqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlnbm9yZWQsIHdlIGdvIHVudGlsIHdlIGZpbmlzaCwgcmVnYXJkbGVzcy5cbiAgICAgICAgICAgIC8vIGRlZmVyIGNoZWNrIHVudGlsIHdlIGFyZSBhY3R1YWxseSBhYm9ydGluZyxcbiAgICAgICAgICAgIC8vIHNvIGZldGNoTWV0aG9kIGNhbiBvdmVycmlkZS5cbiAgICAgICAgICAgIGFjLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuaWdub3JlRmV0Y2hBYm9ydCB8fFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFsbG93U3RhbGVPbkZldGNoQWJvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gaXQgZXZlbnR1YWxseSByZXNvbHZlcywgdXBkYXRlIHRoZSBjYWNoZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdiA9PiBjYih2LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0aW9ucy5zdGF0dXMpXG4gICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaERpc3BhdGNoZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBwID0gbmV3IFByb21pc2UocGNhbGwpLnRoZW4oY2IsIGViKTtcbiAgICAgICAgY29uc3QgYmYgPSBPYmplY3QuYXNzaWduKHAsIHtcbiAgICAgICAgICAgIF9fYWJvcnRDb250cm9sbGVyOiBhYyxcbiAgICAgICAgICAgIF9fc3RhbGVXaGlsZUZldGNoaW5nOiB2LFxuICAgICAgICAgICAgX19yZXR1cm5lZDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGludGVybmFsLCBkb24ndCBleHBvc2Ugc3RhdHVzLlxuICAgICAgICAgICAgdGhpcy5zZXQoaywgYmYsIHsgLi4uZmV0Y2hPcHRzLm9wdGlvbnMsIHN0YXR1czogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSBiZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmY7XG4gICAgfVxuICAgICNpc0JhY2tncm91bmRGZXRjaChwKSB7XG4gICAgICAgIGlmICghdGhpcy4jaGFzRmV0Y2hNZXRob2QpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGIgPSBwO1xuICAgICAgICByZXR1cm4gKCEhYiAmJlxuICAgICAgICAgICAgYiBpbnN0YW5jZW9mIFByb21pc2UgJiZcbiAgICAgICAgICAgIGIuaGFzT3duUHJvcGVydHkoJ19fc3RhbGVXaGlsZUZldGNoaW5nJykgJiZcbiAgICAgICAgICAgIGIuX19hYm9ydENvbnRyb2xsZXIgaW5zdGFuY2VvZiBBQyk7XG4gICAgfVxuICAgIGFzeW5jIGZldGNoKGssIGZldGNoT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHsgXG4gICAgICAgIC8vIGdldCBvcHRpb25zXG4gICAgICAgIGFsbG93U3RhbGUgPSB0aGlzLmFsbG93U3RhbGUsIHVwZGF0ZUFnZU9uR2V0ID0gdGhpcy51cGRhdGVBZ2VPbkdldCwgbm9EZWxldGVPblN0YWxlR2V0ID0gdGhpcy5ub0RlbGV0ZU9uU3RhbGVHZXQsIFxuICAgICAgICAvLyBzZXQgb3B0aW9uc1xuICAgICAgICB0dGwgPSB0aGlzLnR0bCwgbm9EaXNwb3NlT25TZXQgPSB0aGlzLm5vRGlzcG9zZU9uU2V0LCBzaXplID0gMCwgc2l6ZUNhbGN1bGF0aW9uID0gdGhpcy5zaXplQ2FsY3VsYXRpb24sIG5vVXBkYXRlVFRMID0gdGhpcy5ub1VwZGF0ZVRUTCwgXG4gICAgICAgIC8vIGZldGNoIGV4Y2x1c2l2ZSBvcHRpb25zXG4gICAgICAgIG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbiA9IHRoaXMubm9EZWxldGVPbkZldGNoUmVqZWN0aW9uLCBhbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbiA9IHRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24sIGlnbm9yZUZldGNoQWJvcnQgPSB0aGlzLmlnbm9yZUZldGNoQWJvcnQsIGFsbG93U3RhbGVPbkZldGNoQWJvcnQgPSB0aGlzLmFsbG93U3RhbGVPbkZldGNoQWJvcnQsIGNvbnRleHQsIGZvcmNlUmVmcmVzaCA9IGZhbHNlLCBzdGF0dXMsIHNpZ25hbCwgfSA9IGZldGNoT3B0aW9ucztcbiAgICAgICAgaWYgKCF0aGlzLiNoYXNGZXRjaE1ldGhvZCkge1xuICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICBzdGF0dXMuZmV0Y2ggPSAnZ2V0JztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldChrLCB7XG4gICAgICAgICAgICAgICAgYWxsb3dTdGFsZSxcbiAgICAgICAgICAgICAgICB1cGRhdGVBZ2VPbkdldCxcbiAgICAgICAgICAgICAgICBub0RlbGV0ZU9uU3RhbGVHZXQsXG4gICAgICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGFsbG93U3RhbGUsXG4gICAgICAgICAgICB1cGRhdGVBZ2VPbkdldCxcbiAgICAgICAgICAgIG5vRGVsZXRlT25TdGFsZUdldCxcbiAgICAgICAgICAgIHR0bCxcbiAgICAgICAgICAgIG5vRGlzcG9zZU9uU2V0LFxuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIHNpemVDYWxjdWxhdGlvbixcbiAgICAgICAgICAgIG5vVXBkYXRlVFRMLFxuICAgICAgICAgICAgbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uLFxuICAgICAgICAgICAgYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24sXG4gICAgICAgICAgICBhbGxvd1N0YWxlT25GZXRjaEFib3J0LFxuICAgICAgICAgICAgaWdub3JlRmV0Y2hBYm9ydCxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHNpZ25hbCxcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgc3RhdHVzLmZldGNoID0gJ21pc3MnO1xuICAgICAgICAgICAgY29uc3QgcCA9IHRoaXMuI2JhY2tncm91bmRGZXRjaChrLCBpbmRleCwgb3B0aW9ucywgY29udGV4dCk7XG4gICAgICAgICAgICByZXR1cm4gKHAuX19yZXR1cm5lZCA9IHApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaW4gY2FjaGUsIG1heWJlIGFscmVhZHkgZmV0Y2hpbmdcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YWxlID0gYWxsb3dTdGFsZSAmJiB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZmV0Y2ggPSAnaW5mbGlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMucmV0dXJuZWRTdGFsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdGFsZSA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgOiAodi5fX3JldHVybmVkID0gdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiB3ZSBmb3JjZSBhIHJlZnJlc2gsIHRoYXQgbWVhbnMgZG8gTk9UIHNlcnZlIHRoZSBjYWNoZWQgdmFsdWUsXG4gICAgICAgICAgICAvLyB1bmxlc3Mgd2UgYXJlIGFscmVhZHkgaW4gdGhlIHByb2Nlc3Mgb2YgcmVmcmVzaGluZyB0aGUgY2FjaGUuXG4gICAgICAgICAgICBjb25zdCBpc1N0YWxlID0gdGhpcy4jaXNTdGFsZShpbmRleCk7XG4gICAgICAgICAgICBpZiAoIWZvcmNlUmVmcmVzaCAmJiAhaXNTdGFsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5mZXRjaCA9ICdoaXQnO1xuICAgICAgICAgICAgICAgIHRoaXMuI21vdmVUb1RhaWwoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVBZ2VPbkdldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiN1cGRhdGVJdGVtQWdlKGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzVFRMKHN0YXR1cywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gb2ssIGl0IGlzIHN0YWxlIG9yIGEgZm9yY2VkIHJlZnJlc2gsIGFuZCBub3QgYWxyZWFkeSBmZXRjaGluZy5cbiAgICAgICAgICAgIC8vIHJlZnJlc2ggdGhlIGNhY2hlLlxuICAgICAgICAgICAgY29uc3QgcCA9IHRoaXMuI2JhY2tncm91bmRGZXRjaChrLCBpbmRleCwgb3B0aW9ucywgY29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCBoYXNTdGFsZSA9IHAuX19zdGFsZVdoaWxlRmV0Y2hpbmcgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHN0YWxlVmFsID0gaGFzU3RhbGUgJiYgYWxsb3dTdGFsZTtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZmV0Y2ggPSBpc1N0YWxlID8gJ3N0YWxlJyA6ICdyZWZyZXNoJztcbiAgICAgICAgICAgICAgICBpZiAoc3RhbGVWYWwgJiYgaXNTdGFsZSlcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnJldHVybmVkU3RhbGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0YWxlVmFsID8gcC5fX3N0YWxlV2hpbGVGZXRjaGluZyA6IChwLl9fcmV0dXJuZWQgPSBwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBmb3JjZUZldGNoKGssIGZldGNoT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHYgPSBhd2FpdCB0aGlzLmZldGNoKGssIGZldGNoT3B0aW9ucyk7XG4gICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZldGNoKCkgcmV0dXJuZWQgdW5kZWZpbmVkJyk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICBtZW1vKGssIG1lbW9PcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgbWVtb01ldGhvZCA9IHRoaXMuI21lbW9NZXRob2Q7XG4gICAgICAgIGlmICghbWVtb01ldGhvZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBtZW1vTWV0aG9kIHByb3ZpZGVkIHRvIGNvbnN0cnVjdG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBjb250ZXh0LCBmb3JjZVJlZnJlc2gsIC4uLm9wdGlvbnMgfSA9IG1lbW9PcHRpb25zO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5nZXQoaywgb3B0aW9ucyk7XG4gICAgICAgIGlmICghZm9yY2VSZWZyZXNoICYmIHYgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjb25zdCB2diA9IG1lbW9NZXRob2Qoaywgdiwge1xuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldChrLCB2diwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB2djtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgdmFsdWUgZnJvbSB0aGUgY2FjaGUuIFdpbGwgdXBkYXRlIHRoZSByZWNlbmN5IG9mIHRoZSBjYWNoZVxuICAgICAqIGVudHJ5IGZvdW5kLlxuICAgICAqXG4gICAgICogSWYgdGhlIGtleSBpcyBub3QgZm91bmQsIGdldCgpIHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGdldChrLCBnZXRPcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgeyBhbGxvd1N0YWxlID0gdGhpcy5hbGxvd1N0YWxlLCB1cGRhdGVBZ2VPbkdldCA9IHRoaXMudXBkYXRlQWdlT25HZXQsIG5vRGVsZXRlT25TdGFsZUdldCA9IHRoaXMubm9EZWxldGVPblN0YWxlR2V0LCBzdGF0dXMsIH0gPSBnZXRPcHRpb25zO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZmV0Y2hpbmcgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgIHRoaXMuI3N0YXR1c1RUTChzdGF0dXMsIGluZGV4KTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNpc1N0YWxlKGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5nZXQgPSAnc3RhbGUnO1xuICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBvbmx5IGlmIG5vdCBhbiBpbi1mbGlnaHQgYmFja2dyb3VuZCBmZXRjaFxuICAgICAgICAgICAgICAgIGlmICghZmV0Y2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub0RlbGV0ZU9uU3RhbGVHZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2RlbGV0ZShrLCAnZXhwaXJlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmJiBhbGxvd1N0YWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnJldHVybmVkU3RhbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsb3dTdGFsZSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dTdGFsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuX19zdGFsZVdoaWxlRmV0Y2hpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnJldHVybmVkU3RhbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGxvd1N0YWxlID8gdmFsdWUuX19zdGFsZVdoaWxlRmV0Y2hpbmcgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmdldCA9ICdoaXQnO1xuICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3JlIGN1cnJlbnRseSBmZXRjaGluZyBpdCwgd2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBpdCB5ZXRcbiAgICAgICAgICAgICAgICAvLyBpdCdzIG5vdCBzdGFsZSwgd2hpY2ggbWVhbnMgdGhpcyBpc24ndCBhIHN0YWxlV2hpbGVSZWZldGNoaW5nLlxuICAgICAgICAgICAgICAgIC8vIElmIGl0J3Mgbm90IHN0YWxlLCBhbmQgZmV0Y2hpbmcsIEFORCBoYXMgYSBfX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgIC8vIHZhbHVlLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHVzZXIgZmV0Y2hlZCB3aXRoIHtmb3JjZVJlZnJlc2g6dHJ1ZX0sXG4gICAgICAgICAgICAgICAgLy8gc28gaXQncyBzYWZlIHRvIHJldHVybiB0aGF0IHZhbHVlLlxuICAgICAgICAgICAgICAgIGlmIChmZXRjaGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuX19zdGFsZVdoaWxlRmV0Y2hpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuI21vdmVUb1RhaWwoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVBZ2VPbkdldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiN1cGRhdGVJdGVtQWdlKGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgc3RhdHVzLmdldCA9ICdtaXNzJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAjY29ubmVjdChwLCBuKSB7XG4gICAgICAgIHRoaXMuI3ByZXZbbl0gPSBwO1xuICAgICAgICB0aGlzLiNuZXh0W3BdID0gbjtcbiAgICB9XG4gICAgI21vdmVUb1RhaWwoaW5kZXgpIHtcbiAgICAgICAgLy8gaWYgdGFpbCBhbHJlYWR5LCBub3RoaW5nIHRvIGRvXG4gICAgICAgIC8vIGlmIGhlYWQsIG1vdmUgaGVhZCB0byBuZXh0W2luZGV4XVxuICAgICAgICAvLyBlbHNlXG4gICAgICAgIC8vICAgbW92ZSBuZXh0W3ByZXZbaW5kZXhdXSB0byBuZXh0W2luZGV4XSAoaGVhZCBoYXMgbm8gcHJldilcbiAgICAgICAgLy8gICBtb3ZlIHByZXZbbmV4dFtpbmRleF1dIHRvIHByZXZbaW5kZXhdXG4gICAgICAgIC8vIHByZXZbaW5kZXhdID0gdGFpbFxuICAgICAgICAvLyBuZXh0W3RhaWxdID0gaW5kZXhcbiAgICAgICAgLy8gdGFpbCA9IGluZGV4XG4gICAgICAgIGlmIChpbmRleCAhPT0gdGhpcy4jdGFpbCkge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLiNoZWFkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jaGVhZCA9IHRoaXMuI25leHRbaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jY29ubmVjdCh0aGlzLiNwcmV2W2luZGV4XSwgdGhpcy4jbmV4dFtpbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4jY29ubmVjdCh0aGlzLiN0YWlsLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLiN0YWlsID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIGtleSBvdXQgb2YgdGhlIGNhY2hlLlxuICAgICAqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgd2FzIGRlbGV0ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBkZWxldGUoaykge1xuICAgICAgICByZXR1cm4gdGhpcy4jZGVsZXRlKGssICdkZWxldGUnKTtcbiAgICB9XG4gICAgI2RlbGV0ZShrLCByZWFzb24pIHtcbiAgICAgICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuI3NpemUgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI3NpemUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jY2xlYXIocmVhc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3JlbW92ZUl0ZW1TaXplKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuI3ZhbExpc3RbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHYuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCdkZWxldGVkJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UgfHwgdGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2U/Lih2LCBrLCByZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkPy5wdXNoKFt2LCBrLCByZWFzb25dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNrZXlNYXAuZGVsZXRlKGspO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNrZXlMaXN0W2luZGV4XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy4jdGFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jdGFpbCA9IHRoaXMuI3ByZXZbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluZGV4ID09PSB0aGlzLiNoZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNoZWFkID0gdGhpcy4jbmV4dFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaSA9IHRoaXMuI3ByZXZbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jbmV4dFtwaV0gPSB0aGlzLiNuZXh0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5pID0gdGhpcy4jbmV4dFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNwcmV2W25pXSA9IHRoaXMuI3ByZXZbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3NpemUtLTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZnJlZS5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlciAmJiB0aGlzLiNkaXNwb3NlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkdCA9IHRoaXMuI2Rpc3Bvc2VkO1xuICAgICAgICAgICAgbGV0IHRhc2s7XG4gICAgICAgICAgICB3aGlsZSAoKHRhc2sgPSBkdD8uc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXI/LiguLi50YXNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVsZXRlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYXIgdGhlIGNhY2hlIGVudGlyZWx5LCB0aHJvd2luZyBhd2F5IGFsbCB2YWx1ZXMuXG4gICAgICovXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNjbGVhcignZGVsZXRlJyk7XG4gICAgfVxuICAgICNjbGVhcihyZWFzb24pIHtcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBvZiB0aGlzLiNyaW5kZXhlcyh7IGFsbG93U3RhbGU6IHRydWUgfSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KSkge1xuICAgICAgICAgICAgICAgIHYuX19hYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKCdkZWxldGVkJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgayA9IHRoaXMuI2tleUxpc3RbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2U/Lih2LCBrLCByZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VkPy5wdXNoKFt2LCBrLCByZWFzb25dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4ja2V5TWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuI3ZhbExpc3QuZmlsbCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLiNrZXlMaXN0LmZpbGwodW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHRoaXMuI3R0bHMgJiYgdGhpcy4jc3RhcnRzKSB7XG4gICAgICAgICAgICB0aGlzLiN0dGxzLmZpbGwoMCk7XG4gICAgICAgICAgICB0aGlzLiNzdGFydHMuZmlsbCgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4jc2l6ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuI3NpemVzLmZpbGwoMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jaGVhZCA9IDA7XG4gICAgICAgIHRoaXMuI3RhaWwgPSAwO1xuICAgICAgICB0aGlzLiNmcmVlLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuI2NhbGN1bGF0ZWRTaXplID0gMDtcbiAgICAgICAgdGhpcy4jc2l6ZSA9IDA7XG4gICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIgJiYgdGhpcy4jZGlzcG9zZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGR0ID0gdGhpcy4jZGlzcG9zZWQ7XG4gICAgICAgICAgICBsZXQgdGFzaztcbiAgICAgICAgICAgIHdoaWxlICgodGFzayA9IGR0Py5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2VBZnRlcj8uKC4uLnRhc2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIixudWxsLG51bGwsbnVsbCxudWxsLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIiA6c3R5bGU9XCJjb21wdXRlZElubmVyU3R5bGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDwhLS0gaGVhZGVyIC0tPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiIDpzdHlsZT1cImNvbXB1dGVkQm9keVN0eWxlXCI+XG4gICAgICAgICAgPCEtLSBib2R5LCDpq5jluqboh6rpgILlupQgLS0+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgIDwhLS0gZm9vdGVyIC0tPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNsb3QgbmFtZT1cImJveFwiPjwvc2xvdD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiBjcnVk55qE5a655Zmo77yM5qC55o2u5aSW6YOo6auY5bqm6Ieq6YCC5bqUXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNDb250YWluZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblm7rlrprpq5jluqZcbiAgICAgKi9cbiAgICBmaXhlZEhlaWdodDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGJvZHnnmoTmoLflvI9cbiAgICAgKi9cbiAgICBib2R5U3R5bGU6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogaW5uZXLnmoTmoLflvI9cbiAgICAgKi9cbiAgICBpbm5lclN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkSW5uZXJTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5maXhlZEhlaWdodCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHsgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9LCBwcm9wcy5pbm5lclN0eWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5pbm5lclN0eWxlO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRCb2R5U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBtZXJnZSh7IGZsZXg6IFwidW5zZXRcIiB9LCBwcm9wcy5ib2R5U3R5bGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLmJvZHlTdHlsZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb21wdXRlZElubmVyU3R5bGUsXG4gICAgICBjb21wdXRlZEJvZHlTdHlsZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWNvbnRhaW5lciB7XG4gICYuY29tcGFjdCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICBwYWRkaW5nOiAwIDIwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLmJveCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMTtcbiAgICAuaW5uZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIC5oZWFkZXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5ib2R5IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIH1cbiAgICAgIC5mb290ZXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIiA6c3R5bGU9XCJjb21wdXRlZElubmVyU3R5bGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDwhLS0gaGVhZGVyIC0tPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXJcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiIDpzdHlsZT1cImNvbXB1dGVkQm9keVN0eWxlXCI+XG4gICAgICAgICAgPCEtLSBib2R5LCDpq5jluqboh6rpgILlupQgLS0+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgIDwhLS0gZm9vdGVyIC0tPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNsb3QgbmFtZT1cImJveFwiPjwvc2xvdD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiBjcnVk55qE5a655Zmo77yM5qC55o2u5aSW6YOo6auY5bqm6Ieq6YCC5bqUXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNDb250YWluZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblm7rlrprpq5jluqZcbiAgICAgKi9cbiAgICBmaXhlZEhlaWdodDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGJvZHnnmoTmoLflvI9cbiAgICAgKi9cbiAgICBib2R5U3R5bGU6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogaW5uZXLnmoTmoLflvI9cbiAgICAgKi9cbiAgICBpbm5lclN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkSW5uZXJTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5maXhlZEhlaWdodCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHsgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9LCBwcm9wcy5pbm5lclN0eWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5pbm5lclN0eWxlO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRCb2R5U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBtZXJnZSh7IGZsZXg6IFwidW5zZXRcIiB9LCBwcm9wcy5ib2R5U3R5bGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLmJvZHlTdHlsZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb21wdXRlZElubmVyU3R5bGUsXG4gICAgICBjb21wdXRlZEJvZHlTdHlsZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWNvbnRhaW5lciB7XG4gICYuY29tcGFjdCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICBwYWRkaW5nOiAwIDIwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgLmJveCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMTtcbiAgICAuaW5uZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIC5oZWFkZXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5ib2R5IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIH1cbiAgICAgIC5mb290ZXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxmcy1jb250YWluZXIgY2xhc3M9XCJmcy1sYXlvdXQtZGVmYXVsdFwiPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItdG9wXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoXCI+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLW1pZGRsZVwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItYm90dG9tXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFic1wiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8IS0tIOm7mOiupOaPkuanvSAtLT5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPCEtLSB0YWJsZSAtLT5cbiAgICA8c2xvdCBuYW1lPVwidGFibGVcIj48L3Nsb3Q+XG5cbiAgICA8c2xvdCBuYW1lPVwiZm9ybVwiPiA8L3Nsb3Q+XG5cbiAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWZvb3RlclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLXRvcFwiPjwvc2xvdD5cbiAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb25cIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9mcy1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDpu5jorqTluIPlsYBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xheW91dERlZmF1bHRcIlxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtbGF5b3V0LWRlZmF1bHQge1xuICAuZnMtdGFicy1maWx0ZXIge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxmcy1jb250YWluZXIgY2xhc3M9XCJmcy1sYXlvdXQtZGVmYXVsdFwiPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItdG9wXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoXCI+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLW1pZGRsZVwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItYm90dG9tXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFic1wiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8IS0tIOm7mOiupOaPkuanvSAtLT5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPCEtLSB0YWJsZSAtLT5cbiAgICA8c2xvdCBuYW1lPVwidGFibGVcIj48L3Nsb3Q+XG5cbiAgICA8c2xvdCBuYW1lPVwiZm9ybVwiPiA8L3Nsb3Q+XG5cbiAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWZvb3RlclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLXRvcFwiPjwvc2xvdD5cbiAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb25cIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9mcy1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDpu5jorqTluIPlsYBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xheW91dERlZmF1bHRcIlxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtbGF5b3V0LWRlZmF1bHQge1xuICAuZnMtdGFicy1maWx0ZXIge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxmcy1jb250YWluZXIgY2xhc3M9XCJmcy1sYXlvdXQtY2FyZFwiPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci10b3BcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci10b3BcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwiY2FyZENvbXBvbmVudE5hbWVcIiB2LWlmPVwic2VhcmNoU2hvd1wiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoXCI+PC9zbG90PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLWJvdHRvbVwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8ZnMtY29udGFpbmVyPlxuICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0YWJzXCI+PC9zbG90PlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwiY2FyZENvbXBvbmVudE5hbWVcIiBjbGFzcz1cImZzLWxheW91dC1jYXJkLWJvZHlcIj5cbiAgICAgICAgPHRlbXBsYXRlICN0aXRsZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJhclwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyXCI+PC9zbG90PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJhclwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhclwiPjwvc2xvdD5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyXCI+PC9zbG90PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8ZnMtY29udGFpbmVyPlxuICAgICAgICAgIDwhLS0g6buY6K6k5o+S5qe9IC0tPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICA8IS0tIHRhYmxlIC0tPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJ0YWJsZVwiPjwvc2xvdD5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9ybVwiPjwvc2xvdD5cbiAgICAgICAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWZvb3RlclwiPlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLXRvcFwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb25cIj48L3Nsb3Q+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1jb250YWluZXI+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L2ZzLWNvbnRhaW5lcj5cbiAgPC9mcy1jb250YWluZXI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgaW5qZWN0LCByZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG4vKipcbiAqIGNhcmTluIPlsYBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xheW91dENhcmRcIixcbiAgc2V0dXAoKSB7XG4gICAgY29uc3QgZ2V0Q3J1ZEJpbmRpbmcgPSBpbmplY3QoXCJnZXQ6Y3J1ZEJpbmRpbmdcIik7XG4gICAgY29uc3Qgc2VhcmNoU2hvdyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChnZXRDcnVkQmluZGluZyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIGdldENydWRCaW5kaW5nKCk/LnNlYXJjaD8uc2hvdztcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5cbiAgICBjb25zdCBjYXJkQ29tcG9uZW50TmFtZSA9IHJlZih1aS5jYXJkLm5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWFyY2hTaG93LFxuICAgICAgY2FyZENvbXBvbmVudE5hbWVcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1sYXlvdXQtY2FyZCB7XG4gICYgPiAuYm94ID4gLmlubmVyID4gLmhlYWRlciB7XG4gICAgbWFyZ2luOiAxMHB4IDEwcHggNXB4IDEwcHg7XG4gIH1cbiAgJiA+IC5ib3ggPiAuaW5uZXIgPiAuYm9keSB7XG4gICAgbWFyZ2luOiA1cHggMTBweCAxMHB4IDEwcHg7XG4gIH1cbiAgLnRvcC1iYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG4gIC5mcy1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLmJveCB7XG4gICAgICAuaW5uZXIge1xuICAgICAgICAuaGVhZGVyIHtcbiAgICAgICAgICAuYW50LWNhcmQtYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuZnMtbGF5b3V0LWNhcmQtYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC5hbnQtY2FyZC1oZWFkIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAuYW50LWNhcmQtaGVhZC10aXRsZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmVsLWNhcmRfX2hlYWRlciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5uLWNhcmQtaGVhZGVyIHtcbiAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuICAgIH1cbiAgICAubi1jYXJkX19jb250ZW50IHtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtYWN0aW9uYmFyIHtcbiAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICAuZnMtY3J1ZC10b29sYmFyIHtcbiAgICAgIG1hcmdpbjogMTBweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5hbnQtY2FyZC1ib2R5IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cbiAgICAuZWwtY2FyZF9fYm9keSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG4gIH1cblxuICAuZnMtdGFicy1maWx0ZXIge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgLm4tdGFicyAubi10YWJzLW5hdi5uLXRhYnMtbmF2LS1jYXJkLXR5cGUgLm4tdGFicy10YWIge1xuICAgICAgJi5uLXRhYnMtdGFiLS1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjYwO1xuICAgIH1cblxuICAgIC5lbC10YWJzLS1jYXJkID4gLmVsLXRhYnNfX2hlYWRlciAuZWwtdGFic19faXRlbSB7XG4gICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmODA7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZnMtY29udGFpbmVyIGNsYXNzPVwiZnMtbGF5b3V0LWNhcmRcIj5cbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItdG9wXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8Y29tcG9uZW50IDppcz1cImNhcmRDb21wb25lbnROYW1lXCIgdi1pZj1cInNlYXJjaFNob3dcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaFwiPjwvc2xvdD5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1ib3R0b21cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPGZzLWNvbnRhaW5lcj5cbiAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFic1wiPjwvc2xvdD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8Y29tcG9uZW50IDppcz1cImNhcmRDb21wb25lbnROYW1lXCIgY2xhc3M9XCJmcy1sYXlvdXQtY2FyZC1ib2R5XCI+XG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPGZzLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIOm7mOiupOaPkuanvSAtLT5cbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgPCEtLSB0YWJsZSAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwidGFibGVcIj48L3Nsb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImZvcm1cIj48L3Nsb3Q+XG4gICAgICAgICAgPHRlbXBsYXRlICNmb290ZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwYWdpbmF0aW9uXCI+PC9zbG90PlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvZnMtY29udGFpbmVyPlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9mcy1jb250YWluZXI+XG4gIDwvZnMtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIGluamVjdCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xuLyoqXG4gKiBjYXJk5biD5bGAXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNMYXlvdXRDYXJkXCIsXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IGdldENydWRCaW5kaW5nID0gaW5qZWN0KFwiZ2V0OmNydWRCaW5kaW5nXCIpO1xuICAgIGNvbnN0IHNlYXJjaFNob3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoZ2V0Q3J1ZEJpbmRpbmcgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBnZXRDcnVkQmluZGluZygpPy5zZWFyY2g/LnNob3c7XG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG4gICAgY29uc3QgY2FyZENvbXBvbmVudE5hbWUgPSByZWYodWkuY2FyZC5uYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VhcmNoU2hvdyxcbiAgICAgIGNhcmRDb21wb25lbnROYW1lXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtbGF5b3V0LWNhcmQge1xuICAmID4gLmJveCA+IC5pbm5lciA+IC5oZWFkZXIge1xuICAgIG1hcmdpbjogMTBweCAxMHB4IDVweCAxMHB4O1xuICB9XG4gICYgPiAuYm94ID4gLmlubmVyID4gLmJvZHkge1xuICAgIG1hcmdpbjogNXB4IDEwcHggMTBweCAxMHB4O1xuICB9XG4gIC50b3AtYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuICAuZnMtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC5ib3gge1xuICAgICAgLmlubmVyIHtcbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgLmFudC1jYXJkLWJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmZzLWxheW91dC1jYXJkLWJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuYW50LWNhcmQtaGVhZCB7XG4gICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgLmFudC1jYXJkLWhlYWQtdGl0bGUge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5lbC1jYXJkX19oZWFkZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubi1jYXJkLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICB9XG4gICAgLm4tY2FyZF9fY29udGVudCB7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cblxuICAgIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICBtYXJnaW46IDEwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgLmZzLWNydWQtdG9vbGJhciB7XG4gICAgICBtYXJnaW46IDEwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYW50LWNhcmQtYm9keSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG4gICAgLmVsLWNhcmRfX2JvZHkge1xuICAgICAgZmxleDogMTtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmZzLXRhYnMtZmlsdGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgIC5uLXRhYnMgLm4tdGFicy1uYXYubi10YWJzLW5hdi0tY2FyZC10eXBlIC5uLXRhYnMtdGFiIHtcbiAgICAgICYubi10YWJzLXRhYi0tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY2MDtcbiAgICB9XG5cbiAgICAuZWwtdGFicy0tY2FyZCA+IC5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0ge1xuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjgwO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsbnVsbCxudWxsLCI8dGVtcGxhdGU+XG4gIDxzcGFuIGNsYXNzPVwiZnMtaWNvbmlmeVwiIDpjbGFzcz1cInsgJ2ZzLWljb25pZnktc3Bpbic6IHNwaW4gfVwiPlxuICAgIDxJY29uIHJlZj1cImljb25pZnlSZWZcIiA6aWNvbj1cImljb25cIiA6aW5saW5lPVwidHJ1ZVwiIC8+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHVucmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiQGljb25pZnkvdnVlXCI7XG4vKipcbiAqIGljb25pZnkg5oyJ6ZyA5Yqg6L295Zu+5qCH57uE5Lu2XG4gKiBodHRwczovL2ljb25pZnkuZGVzaWduL2ljb24tc2V0cy9pb24vXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNJY29uaWZ5XCIsXG4gIGNvbXBvbmVudHM6IHsgSWNvbiB9LFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWbvuagh+WQjeensFxuICAgICAqL1xuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5peL6L2sXG4gICAgICovXG4gICAgc3Bpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgaWNvbmlmeVJlZiA9IHJlZihudWxsKTtcbiAgICByZXR1cm4geyBpY29uaWZ5UmVmIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1pY29uaWZ5IHtcbiAgLy9kaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgJi1zcGluIHtcbiAgICBzdmcge1xuICAgICAgYW5pbWF0aW9uOiBmc0xvYWRpbmdDaXJjbGUgMXMgaW5maW5pdGUgbGluZWFyO1xuICAgIH1cbiAgfVxuXG4gICYuZnMtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBmc0xvYWRpbmdDaXJjbGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZnNMb2FkaW5nQ2lyY2xlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuLy9zcGFuLmljb25pZnkge1xuLy8gIGRpc3BsYXk6IGJsb2NrO1xuLy8gIG1pbi13aWR0aDogMWVtO1xuLy8gIG1pbi1oZWlnaHQ6IDFlbTtcbi8vICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiBAaWNvbmlmeS1iZy1jb2xvcjtcbi8vICBib3JkZXItcmFkaXVzOiAxMDAlO1xuLy99XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3BhbiBjbGFzcz1cImZzLWljb25pZnlcIiA6Y2xhc3M9XCJ7ICdmcy1pY29uaWZ5LXNwaW4nOiBzcGluIH1cIj5cbiAgICA8SWNvbiByZWY9XCJpY29uaWZ5UmVmXCIgOmljb249XCJpY29uXCIgOmlubGluZT1cInRydWVcIiAvPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB1bnJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIkBpY29uaWZ5L3Z1ZVwiO1xuLyoqXG4gKiBpY29uaWZ5IOaMiemcgOWKoOi9veWbvuagh+e7hOS7tlxuICogaHR0cHM6Ly9pY29uaWZ5LmRlc2lnbi9pY29uLXNldHMvaW9uL1xuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzSWNvbmlmeVwiLFxuICBjb21wb25lbnRzOiB7IEljb24gfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlm77moIflkI3np7BcbiAgICAgKi9cbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaXi+i9rFxuICAgICAqL1xuICAgIHNwaW46IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IGljb25pZnlSZWYgPSByZWYobnVsbCk7XG4gICAgcmV0dXJuIHsgaWNvbmlmeVJlZiB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtaWNvbmlmeSB7XG4gIC8vZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICYtc3BpbiB7XG4gICAgc3ZnIHtcbiAgICAgIGFuaW1hdGlvbjogZnNMb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcbiAgICB9XG4gIH1cblxuICAmLmZzLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZnNMb2FkaW5nQ2lyY2xlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZzTG9hZGluZ0NpcmNsZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8vc3Bhbi5pY29uaWZ5IHtcbi8vICBkaXNwbGF5OiBibG9jaztcbi8vICBtaW4td2lkdGg6IDFlbTtcbi8vICBtaW4taGVpZ2h0OiAxZW07XG4vLyAgLy8gYmFja2dyb3VuZC1jb2xvcjogQGljb25pZnktYmctY29sb3I7XG4vLyAgYm9yZGVyLXJhZGl1czogMTAwJTtcbi8vfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4gOmNsYXNzPVwiWydmcy1pY29uLXN2ZycsIHNwaW4gJiYgJ2ZzLWljb24tc3BpbiddXCI+XG4gICAgPHN2ZyBjbGFzcz1cImZzLWljb24tc3ZnLWNvbnRlbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDx1c2UgOnhsaW5rOmhyZWY9XCJzeW1ib2xJZFwiPjwvdXNlPlxuICAgIDwvc3ZnPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTdmdJY29uXCIsXG4gIHByb3BzOiB7XG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiAxNlxuICAgIH0sXG4gICAgc3Bpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBzZXR1cChwcm9wcykge1xuICAgIGNvbnN0IHN5bWJvbElkID0gY29tcHV0ZWQoKCkgPT4gYCMke3Byb3BzLmljb259YCk7XG5cbiAgICBjb25zdCBnZXRTdHlsZSA9IGNvbXB1dGVkKCgpOiBDU1NQcm9wZXJ0aWVzID0+IHtcbiAgICAgIGNvbnN0IHsgc2l6ZSB9ID0gcHJvcHM7XG4gICAgICBsZXQgcyA9IGAke3NpemV9YDtcbiAgICAgIHMgPSBgJHtzLnJlcGxhY2UoXCJweFwiLCBcIlwiKX1weGA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogcyxcbiAgICAgICAgaGVpZ2h0OiBzXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiB7IHN5bWJvbElkLCBnZXRTdHlsZSB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtaWNvbi1zdmcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICYuZnMtaWNvbi1zcGluIHtcbiAgICBhbmltYXRpb246IGxvYWRpbmdDaXJjbGUgMXMgaW5maW5pdGUgbGluZWFyO1xuICB9XG5cbiAgLmZzLWljb24tc3ZnLWNvbnRlbnQge1xuICAgIHdpZHRoOiAxZW07XG4gICAgaGVpZ2h0OiAxZW07XG4gICAgdmVydGljYWwtYWxpZ246IC0wLjE1ZW07XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzcGFuIDpjbGFzcz1cIlsnZnMtaWNvbi1zdmcnLCBzcGluICYmICdmcy1pY29uLXNwaW4nXVwiPlxuICAgIDxzdmcgY2xhc3M9XCJmcy1pY29uLXN2Zy1jb250ZW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8dXNlIDp4bGluazpocmVmPVwic3ltYm9sSWRcIj48L3VzZT5cbiAgICA8L3N2Zz5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkIH0gZnJvbSBcInZ1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU3ZnSWNvblwiLFxuICBwcm9wczoge1xuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogMTZcbiAgICB9LFxuICAgIHNwaW46IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBzeW1ib2xJZCA9IGNvbXB1dGVkKCgpID0+IGAjJHtwcm9wcy5pY29ufWApO1xuXG4gICAgY29uc3QgZ2V0U3R5bGUgPSBjb21wdXRlZCgoKTogQ1NTUHJvcGVydGllcyA9PiB7XG4gICAgICBjb25zdCB7IHNpemUgfSA9IHByb3BzO1xuICAgICAgbGV0IHMgPSBgJHtzaXplfWA7XG4gICAgICBzID0gYCR7cy5yZXBsYWNlKFwicHhcIiwgXCJcIil9cHhgO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHMsXG4gICAgICAgIGhlaWdodDogc1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4geyBzeW1ib2xJZCwgZ2V0U3R5bGUgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWljb24tc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAmLmZzLWljb24tc3BpbiB7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcbiAgfVxuXG4gIC5mcy1pY29uLXN2Zy1jb250ZW50IHtcbiAgICB3aWR0aDogMWVtO1xuICAgIGhlaWdodDogMWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xNWVtO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtbGFiZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB2LWJpbmQ9XCJsYWJlbEF0dHJzXCI+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgPHNsb3QgbmFtZT1cImxhYmVsXCI+PC9zbG90PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgdi1iaW5kPVwiY29udGVudEF0dHJzXCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5cbi8qKlxuICogbGFiZWznu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xhYmVsXCIsXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCJcbiAgICB9LFxuICAgIGxhYmVsQXR0cnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICB9LFxuICAgIGNvbnRlbnRBdHRyczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIH1cbiAgLmNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1sYWJlbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHYtYmluZD1cImxhYmVsQXR0cnNcIj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8c2xvdCBuYW1lPVwibGFiZWxcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiB2LWJpbmQ9XCJjb250ZW50QXR0cnNcIj5cbiAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcblxuLyoqXG4gKiBsYWJlbOe7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzTGFiZWxcIixcbiAgcHJvcHM6IHtcbiAgICBsYWJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJcIlxuICAgIH0sXG4gICAgbGFiZWxBdHRyczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICAgIH0sXG4gICAgY29udGVudEF0dHJzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXG4gICAgfVxuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAubGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxuICAuY29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzTG9hZGluZ1wiXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxuICA8ZGl2IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJmcy1sb2FkaW5nXCI+XG4gICAgPGZzLWljb24gY2xhc3M9XCJmcy1pY29uLXNwaW5cIiA6aWNvbj1cImljb24gPz8gdWkuaWNvbnMucmVmcmVzaFwiPjwvZnMtaWNvbj5cbiAgICA8c3BhbiB2LWlmPVwidGV4dFwiPnt7IHRleHQgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuO1xuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbn0+KCk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxvYWRpbmcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmZzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogOTAlO1xuICAgIGhlaWdodDogOTAlO1xuICAgIG1heC13aWR0aDogNTBweDtcbiAgICBtYXgtaGVpZ2h0OiA1MHB4O1xuICAgICYuZnMtaWNvbi1zcGluIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIGFuaW1hdGlvbjogZnMtbG9hZGluZy1jaXJjbGUgMXMgaW5maW5pdGUgbGluZWFyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEAtd2Via2l0LWtleWZyYW1lcyBmcy1sb2FkaW5nLWNpcmNsZSB7XG4gICAgZnJvbSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1ib3hcIj5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5cbi8qKlxuICog5Y2V57qv55qE5YyF6KO55LiA5Liq5a2Q57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNCb3hcIlxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLWJveFwiPlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcblxuLyoqXG4gKiDljZXnuq/nmoTljIXoo7nkuIDkuKrlrZDnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0JveFwiXG59KTtcbjwvc2NyaXB0PlxuIixudWxsLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcbiAgICByZWY9XCJmb3JtUmVmXCJcbiAgICBjbGFzcz1cImZzLWZvcm1cIlxuICAgIDpjbGFzcz1cIntcbiAgICAgICdmcy1mb3JtLWdyaWQnOiBkaXNwbGF5ID09PSAnZ3JpZCcsXG4gICAgICAnZnMtZm9ybS1mbGV4JzogZGlzcGxheSA9PT0gJ2ZsZXgnLFxuICAgICAgJ2ZzLWZvcm0taW52YWxpZCc6IHZhbGlkUmVmID09PSBmYWxzZVxuICAgIH1cIlxuICAgIG9uc3VibWl0PVwiZXZlbnQucHJldmVudERlZmF1bHQoKTtcIlxuICAgIDptb2RlbD1cImZvcm1cIlxuICA+XG4gICAgPCEtLSByb3cgLS0+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtcm93XCIgdi1iaW5kPVwicm93XCI+XG4gICAgICA8IS0tIGNvbCAtLT5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWREZWZhdWx0Q29sdW1uc1wiIDprZXk9XCJpdGVtPy5rZXlcIj5cbiAgICAgICAgPGZzLWZvcm0taXRlbS1jb2xcbiAgICAgICAgICA6cmVmPVwiXG4gICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtSXRlbVJlZnNbaXRlbS5rZXldID0gZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIlxuICAgICAgICAgIDpjb2w9XCJtZXJnZUNvbChpdGVtLmNvbClcIlxuICAgICAgICAgIDppdGVtPVwiaXRlbVwiXG4gICAgICAgICAgOmhlbHBlcj1cImhlbHBlclwiXG4gICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0KGZvcm0sIGl0ZW0ua2V5KVwiXG4gICAgICAgICAgOnNsb3RzPVwibWVyZ2VkU2xvdHNbJ2Zvcm1fJyArIGl0ZW0ua2V5XVwiXG4gICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0KGZvcm0sIGl0ZW0ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9jb21wb25lbnQ+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyLnBhcmVudFwiXG4gICAgICB2LWlmPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyXCJcbiAgICAgIHYtbW9kZWw6W3VpLmNvbGxhcHNlLm1vZGVsVmFsdWVdPVwiZ3JvdXBBY3RpdmVLZXlcIlxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXG4gICAgICB2LWJpbmQ9XCJjb21wdXRlZEdyb3VwXCJcbiAgICA+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoZ3JvdXBJdGVtLCBncm91cEtleSkgb2YgY29tcHV0ZWRHcm91cC5ncm91cHNcIiA6a2V5PVwiZ3JvdXBLZXlcIj5cbiAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgIDppcz1cImNvbXB1dGVkR3JvdXAud3JhcHBlci5jaGlsZFwiXG4gICAgICAgICAgdi1pZj1cImdyb3VwSXRlbVNob3coZ3JvdXBJdGVtKVwiXG4gICAgICAgICAgOlt1aS5jb2xsYXBzZS5rZXlOYW1lXT1cImdyb3VwS2V5XCJcbiAgICAgICAgICB2LWJpbmQ9XCJncm91cEl0ZW1cIlxuICAgICAgICAgIDpjbGFzcz1cInsgJ2ZzLWZvcm0tZ3JvdXAtZXJyb3InOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgc2xvdE5hbWUpIG9mIGdyb3VwSXRlbS5zbG90c1wiIDprZXk9XCJzbG90TmFtZVwiICNbc2xvdE5hbWVdPVwic2NvcGVcIj5cbiAgICAgICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaXRlbVwiIDpzY29wZT1cInsgLi4uc2NvcGUsIGhhc0Vycm9yOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tIHJvdyAtLT5cbiAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgY2xhc3M9XCJmcy1yb3dcIiB2LWJpbmQ9XCJyb3dcIj5cbiAgICAgICAgICAgIDwhLS0gY29sIC0tPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwia2V5IGluIGdyb3VwSXRlbS5jb2x1bW5zXCIgOmtleT1cImtleVwiPlxuICAgICAgICAgICAgICA8ZnMtZm9ybS1pdGVtLWNvbFxuICAgICAgICAgICAgICAgIHYtaWY9XCJjb21wdXRlZENvbHVtbnNba2V5XVwiXG4gICAgICAgICAgICAgICAgOnJlZj1cIlxuICAgICAgICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUl0ZW1SZWZzW2tleV0gPSBlbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgOmNvbD1cIm1lcmdlQ29sKGNvbXB1dGVkQ29sdW1uc1trZXldLmNvbClcIlxuICAgICAgICAgICAgICAgIDppdGVtPVwiY29tcHV0ZWRDb2x1bW5zW2tleV1cIlxuICAgICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBrZXkpXCJcbiAgICAgICAgICAgICAgICA6c2xvdHM9XCJtZXJnZWRTbG90c1snZm9ybV8nICsga2V5XVwiXG4gICAgICAgICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgICAgICAgICAgICA6aGVscGVyPVwiaGVscGVyXCJcbiAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0KGZvcm0sIGtleSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7XG4gIGNvbXB1dGVkLFxuICBkZWZpbmVDb21wb25lbnQsXG4gIGdldEN1cnJlbnRJbnN0YW5jZSxcbiAgb25Nb3VudGVkLFxuICByZWFjdGl2ZSxcbiAgUmVmLFxuICByZWYsXG4gIHRvUmF3LFxuICB1bnJlZixcbiAgVW53cmFwTmVzdGVkUmVmcyxcbiAgd2F0Y2hcbn0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZWFjaCwgc2V0LCBjbG9uZURlZXAsIGVudHJpZXMsIGdldCwgdW5zZXQsIGZvckVhY2gsIG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQ29tcHV0ZVZhbHVlLCB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgRm9ybVNjb3BlQ29udGV4dCwgU2V0Rm9ybURhdGFPcHRpb25zLCB1c2VVaSwgdXRpbHMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcblxuLyoqXG4gKiDphY3nva7ljJbnmoTooajljZXnu4Tku7ZcbiAqIOaatOmcsueahOaWueazle+8mlxuICogcmVmLnN1Ym1pdCgpID0g5o+Q5Lqk6KGo5Y2VXG4gKiByZWYucmVzZXQoKSA9IOmHjee9ruihqOWNlVxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRm9ybVwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWIneWni+ihqOWNleaVsOaNrlxuICAgICAqKi9cbiAgICBpbml0aWFsRm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a2X5q615qih54mIXG4gICAgICoge1xuICAgICAqICAga2V5OntcbiAgICAgKiAgICAgdGl0bGU6IFwi5a2X5q615ZCN56ewXCIsXG4gICAgICogICAgIGNvbXBvbmVudDp7XG4gICAgICogICAgICAgbmFtZTpcIue7hOS7tuWQjeensFwiXG4gICAgICogICAgICAgLi4u57uE5Lu25Y+C5pWwXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICogKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWtl+auteWIhue7hFxuICAgICAqIHtcbiAgICAgKiAgIHR5cGU6J3h4eCcsIC8v5YiG57uE5bGV56S657G75Z6LXG4gICAgICogICBncm91cHM6eyAvL+WIhue7hOaVsOaNrlxuICAgICAqICAgICBncm91cEtleTp7IHRpdGxlOid4eHgnLGNvbHVtbnM6WydmaWVsZEtleScsJ2ZpZWxkS2V5J119XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIGdyb3VwOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOmHjee9ruihqOWNleWQjueahOaTjeS9nFxuICAgICAqL1xuICAgIGRvUmVzZXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vkv53lrZjmjInpkq7vvIzooajljZXmoKHpqozliY3miafooYzmk43kvZzvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGJlZm9yZVZhbGlkYXRlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5qCh6aqM5a6M5a6M5oiQ5ZCO77yM5o+Q5Lqk5YmN5aSE55CG77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBiZWZvcmVTdWJtaXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vkv53lrZjmjInpkq7ml7bmiafooYzmk43kvZzvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGRvU3VibWl0OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5o+Q5Lqk5ZCO5aSE55CG77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBhZnRlclN1Ym1pdDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaPkuanveWGheWuuVxuICAgICAqL1xuICAgIHNsb3RzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW4g+WxgOaWueW8j+OAkGZsZXh8Z3JpZOOAkVxuICAgICAqL1xuICAgIGRpc3BsYXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiZmxleFwiIC8vIGZsZXhcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW6j+WPt++8jOe8lui+keaXtuS8muS8oOWFpVxuICAgICAqL1xuICAgIGluZGV4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaooeW8jyBbYWRkLGVkaXQsdmlldyzoh6rlrprkuYldXG4gICAgICovXG4gICAgbW9kZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBhLXJvd+mFjee9rlxuICAgICAqL1xuICAgIHJvdzoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBlbC1jb2x8YS1jb2zphY3nva7vvIzlj6/phY3nva7ot6jliJdcbiAgICAgKi9cbiAgICBjb2w6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogZm9ybUl0ZW3nmoTlhazlhbHphY3nva5cbiAgICAgKi9cbiAgICBmb3JtSXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBoZWxwZXLkvY3nva7vvJp7cG9zaXRpb246J2xhYmVsJ31cbiAgICAgKi9cbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG5cbiAgICB3YXRjaDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBlbWl0czogW1wicmVzZXRcIiwgXCJzdWJtaXRcIiwgXCJzdWNjZXNzXCIsIFwidmFsaWRhdGlvbkVycm9yXCIsIFwidmFsdWUtY2hhbmdlXCIsIFwiaW5pdFwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IEFzeW5jQ29tcHV0ZVZhbHVlLCBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgY29uc3QgZm9ybVJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGZvcm06IFVud3JhcE5lc3RlZFJlZnM8YW55PiA9IHJlYWN0aXZlKHt9KTtcbiAgICBjb25zdCB7IHByb3h5IH0gPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcblxuICAgIC8vIHV0aWxzLnRyYWNlKFwiZnMtZm9ybVwiKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgKGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSB8fCBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQ29tcHV0ZVZhbHVlKSkge1xuICAgICAgICBsb2dnZXIud2FybihcImZvcm0udmFsdWXphY3nva7kuI3mlK/mjIFDb21wdXRlL0FzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpIHtcbiAgICAgIGNvbnN0IGZvcm0gPSB7fTtcbiAgICAgIC8vIOWIneWni+aVsOaNrui1i+WAvFxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGl0ZW0udmFsdWUpO1xuICAgICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNldChmb3JtLCBrZXksIGRlZlZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtZXJnZShmb3JtLCBjbG9uZURlZXAocHJvcHMuaW5pdGlhbEZvcm0pKTtcbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcbiAgICBzZXRGb3JtRGF0YShpbml0aWFsRm9ybSk7XG5cbiAgICBjb25zdCBzY29wZTogUmVmPEZvcm1TY29wZUNvbnRleHQ+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93OiBpbml0aWFsRm9ybSxcbiAgICAgICAgZm9ybSxcbiAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICBtb2RlOiBwcm9wcy5tb2RlIHx8IFwiYWRkXCIsXG4gICAgICAgIGF0dHJzOiBjdHguYXR0cnMsXG4gICAgICAgIGdldENvbXBvbmVudFJlZlxuICAgICAgfSBhcyBGb3JtU2NvcGVDb250ZXh0O1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q29udGV4dEZuKCkge1xuICAgICAgcmV0dXJuIHNjb3BlLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xuICAgIH0pO1xuICAgIC8vZm9ybS52YWx1ZUJ1aWxkZXJcblxuICAgIGZ1bmN0aW9uIGRvVmFsdWVCdWlsZGVyKGZvcm06IGFueSkge1xuICAgICAgaWYgKGZvcm0gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtLCBrZXkpO1xuICAgICAgICBpZiAoaXRlbS52YWx1ZUJ1aWxkZXIpIHtcbiAgICAgICAgICBjb25zdCByZXM6IGFueSA9IGl0ZW0udmFsdWVCdWlsZGVyKHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgcm93OiBpbml0aWFsRm9ybSxcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgICAgICAgICBtb2RlOiBwcm9wcy5tb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmICEocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHNldChmb3JtLCBrZXksIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtRGF0YSgpIHtcbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRGb3JtRGF0YShmb3JtRGF0YTogYW55LCBvcHRpb25zOiBTZXRGb3JtRGF0YU9wdGlvbnMgPSB7fSkge1xuICAgICAgZG9WYWx1ZUJ1aWxkZXIoZm9ybURhdGEpO1xuXG4gICAgICBpZiAob3B0aW9ucy5tZXJnZUZvcm0gPT09IGZhbHNlKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm0pIHtcbiAgICAgICAgICBkZWxldGUgZm9ybVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtZXJnZShmb3JtLCBmb3JtRGF0YSk7XG4gICAgICBjb25zdCB7IHZhbHVlQ2hhbmdlIH0gPSBvcHRpb25zO1xuICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGZvckVhY2gocHJvcHMuY29sdW1ucywgKGNvbHVtbjogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVtrZXldO1xuICAgICAgICAgIGRvVmFsdWVDaGFuZ2Uoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29sKC4uLmNvbDogYW55KSB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLmNvbCwgLi4uY29sKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEl0ZW1TY29wZShpdGVtOiBhbnkpOiBGb3JtU2NvcGVDb250ZXh0IHtcbiAgICAgIHJldHVybiB7IGtleTogaXRlbS5rZXksIC4uLnNjb3BlLnZhbHVlIH07XG4gICAgfVxuXG4gICAgLy8gZG9WYWx1ZUJ1aWxkZXIoZm9ybSk7XG5cbiAgICAvLyB3YXRjaChcbiAgICAvLyAgICgpID0+IHByb3BzLmluaXRpYWxGb3JtLFxuICAgIC8vICAgKCkgPT4ge1xuICAgIC8vICAgICBzZXRGb3JtRGF0YShjcmVhdGVJbml0aWFsRm9ybSgpLCB7IG1lcmdlRm9ybTogZmFsc2UgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gKTtcblxuICAgIGZ1bmN0aW9uIGRvVmFsdWVDaGFuZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0geyBrZXksIHZhbHVlLCBmb3JtUmVmOiBwcm94eSwgLi4uc2NvcGUudmFsdWUsIGltbWVkaWF0ZTogZmFsc2UgfTtcbiAgICAgIGN0eC5lbWl0KFwidmFsdWUtY2hhbmdlXCIsIGV2ZW50KTtcbiAgICAgIGxldCB2YWx1ZUNoYW5nZSA9IHByb3BzLmNvbHVtbnNba2V5XS52YWx1ZUNoYW5nZTtcbiAgICAgIGlmICh2YWx1ZUNoYW5nZSkge1xuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgIHZhbHVlQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcbiAgICAgICAgICB2YWx1ZUNoYW5nZS5oYW5kbGUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUl0ZW1SZWZzOiBSZWYgPSByZWYoe30pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybUl0ZW1SZWYoa2V5OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBmb3JtSXRlbVJlZnMudmFsdWVba2V5XS5nZXRGb3JtSXRlbVJlZigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZywgaXNBc3luYyA9IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9ybUl0ZW1SZWYoa2V5KT8uZ2V0Q29tcG9uZW50UmVmKGlzQXN5bmMpO1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwQWN0aXZlS2V5ID0gcmVmKFtdKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBmb3JFYWNoKHByb3BzLmdyb3VwPy5ncm91cHMsIChncm91cEl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgIGlmIChncm91cEl0ZW0uY29sbGFwc2VkICE9PSB0cnVlKSB7XG4gICAgICAgIGdyb3VwQWN0aXZlS2V5LnZhbHVlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgaWYgKHByb3BzLmdyb3VwPy5ncm91cFR5cGUgPT09IFwidGFic1wiKSB7XG4gICAgICBncm91cEFjdGl2ZUtleS52YWx1ZSA9IGdyb3VwQWN0aXZlS2V5LnZhbHVlLmxlbmd0aCA+IDAgPyBncm91cEFjdGl2ZUtleS52YWx1ZVswXSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy/mnoTlu7rliIbnu4TmlbDmja5cbiAgICBjb25zdCBjb21wdXRlZEdyb3VwID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmdyb3VwO1xuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIG51bGwsXG4gICAgICAoZ3JvdXAgPSB7fSkgPT4ge1xuICAgICAgICAvL+aJvuWHuuayoeaciea3u+WKoOi/m+WIhue7hOeahOWtl+autVxuICAgICAgICBjb25zdCBncm91cGVkS2V5czogYW55ID0ge307XG4gICAgICAgIGZvckVhY2goZ3JvdXA/Lmdyb3VwcywgKGdyb3VwSXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGZvckVhY2goZ3JvdXBJdGVtLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wdXRlZENvbHVtbnMudmFsdWVbaXRlbV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICB1dGlscy5sb2dnZXIud2FybihcIuaXoOaViOeahOWIhue7hOWtl+aute+8mlwiICsgaXRlbSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwZWRLZXlzW2l0ZW1dID0ga2V5O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0eXBlID0gZ3JvdXAuZ3JvdXBUeXBlO1xuICAgICAgICBsZXQgd3JhcHBlciA9IHtcbiAgICAgICAgICBwYXJlbnQ6IHVpLmNvbGxhcHNlLm5hbWUsXG4gICAgICAgICAgY2hpbGQ6IHVpLmNvbGxhcHNlSXRlbS5uYW1lXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eXBlID09PSBcInRhYnNcIikge1xuICAgICAgICAgIHdyYXBwZXIucGFyZW50ID0gdWkudGFicy5uYW1lO1xuICAgICAgICAgIHdyYXBwZXIuY2hpbGQgPSB1aS50YWJQYW5lLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdyYXBwZXIsXG4gICAgICAgICAgICBncm91cGVkS2V5c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3JvdXBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY29tcHV0ZWREZWZhdWx0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbnM6IGFueSA9IFtdO1xuICAgICAgLy9kZWZhdWx0IGNvbHVtbnPmjpLluo9cbiAgICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XG4gICAgICAgIHZhbHVlID0gbWVyZ2UoaXRlbSwgdmFsdWUpO1xuICAgICAgICB2YWx1ZS5rZXkgPSBrZXk7XG4gICAgICAgIGlmICh2YWx1ZS5vcmRlciA9PSBudWxsKSB7XG4gICAgICAgICAgdmFsdWUub3JkZXIgPSBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5cyA9PSBudWxsIHx8IGNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUuY29sID0gbWVyZ2VDb2wodmFsdWUuY29sKTtcbiAgICAgIH0pO1xuICAgICAgLy/mjpLluo9cbiAgICAgIGNvbHVtbnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybVJlZigpIHtcbiAgICAgIHJldHVybiBmb3JtUmVmLnZhbHVlO1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKGZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllc1JldCkge1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdW5zZXQoZm9ybSwgZW50cnlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldChmb3JtLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuZG9SZXNldCkge1xuICAgICAgICBhd2FpdCBwcm9wcy5kb1Jlc2V0KHNjb3BlLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwicmVzZXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRSZWY6IFJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGVycm9yc1JlZjogUmVmID0gcmVmKHt9KTtcblxuICAgIGZ1bmN0aW9uIGZpbGxHcm91cEVycm9yKGZpZWxkRXJyb3JzOiBhbnkpIHtcbiAgICAgIGlmICghY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQga2V5IGluIGZpZWxkRXJyb3JzKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXNba2V5XTtcbiAgICAgICAgaWYgKGdyb3VwICE9IG51bGwpIHtcbiAgICAgICAgICBmaWVsZEVycm9yc1tcImdyb3VwLlwiICsgZ3JvdXBdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm0gfTtcbiAgICAgIGlmICh2YWxpZGF0ZVNjb3BlLm1vZGUgPT09IFwidmlld1wiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5iZWZvcmVWYWxpZGF0ZSkge1xuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBwcm9wcy5iZWZvcmVWYWxpZGF0ZSh2YWxpZGF0ZVNjb3BlKTtcbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXJyb3JzUmVmLnZhbHVlID0ge307XG4gICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKGZvcm1SZWYudmFsdWUpO1xuICAgICAgICB2YWxpZFJlZi52YWx1ZSA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgdmFsaWRSZWYudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVFcnJvcnMgPSB1aS5mb3JtLnRyYW5zZm9ybVZhbGlkYXRlRXJyb3JzKGUpO1xuICAgICAgICBmaWxsR3JvdXBFcnJvcih2YWxpZGF0ZUVycm9ycyk7XG4gICAgICAgIGVycm9yc1JlZi52YWx1ZSA9IHZhbGlkYXRlRXJyb3JzO1xuICAgICAgICBjdHguZW1pdChcInZhbGlkYXRpb25FcnJvclwiLCBzY29wZS52YWx1ZSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHN1Ym1pdCgpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlKCk7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGNsb25lRGVlcCh0b1Jhdyhmb3JtKSk7XG4gICAgICBjb25zdCBzdWJtaXRTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm06IGZvcm1EYXRhIH07XG4gICAgICBsb2dnZXIuZGVidWcoXCJmb3JtIHN1Ym1pdFwiLCBKU09OLnN0cmluZ2lmeShmb3JtKSk7XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtRGF0YSwga2V5KTtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVSZXNvbHZlKSB7XG4gICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBpdGVtLnZhbHVlUmVzb2x2ZSh7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIC4uLnN1Ym1pdFNjb3BlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmICEocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmJlZm9yZVN1Ym1pdCkge1xuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBwcm9wcy5iZWZvcmVTdWJtaXQoc3VibWl0U2NvcGUpO1xuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL+enu+mZpOS4jeWFgeiuuOaPkOS6pOeahOWtl+autVxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zdWJtaXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdW5zZXQoZm9ybURhdGEsIGtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5zdWJtaXQgPT09IHRydWUpIHtcbiAgICAgICAgICAvL+iuvue9ruW8uuWItuaPkOS6pOeahOWtl+autVxuICAgICAgICAgIHNldChmb3JtRGF0YSwga2V5LCBmb3JtRGF0YVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wcy5kb1N1Ym1pdCkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBwcm9wcy5kb1N1Ym1pdChzdWJtaXRTY29wZSk7XG4gICAgICAgIHN1Ym1pdFNjb3BlLnJlcyA9IHJlcztcbiAgICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwic3VibWl0XCIsIHN1Ym1pdFNjb3BlKTtcbiAgICAgIGlmIChwcm9wcy5hZnRlclN1Ym1pdCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgcHJvcHMuYWZ0ZXJTdWJtaXQoc3VibWl0U2NvcGUpO1xuICAgICAgICBpZiAoc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwic3VjY2Vzc1wiLCBzdWJtaXRTY29wZSk7XG5cbiAgICAgIHJldHVybiBzdWJtaXRTY29wZTtcbiAgICB9XG5cbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgLy8gaW1tZWRpYXRlIHZhbHVlQ2hhbmdl6Kem5Y+RXG4gICAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVDaGFuZ2UgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWVDaGFuZ2UgPSBpdGVtLnZhbHVlQ2hhbmdlO1xuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgJiYgdmFsdWVDaGFuZ2UuaW1tZWRpYXRlID09PSB0cnVlICYmIHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0geyBrZXksIHZhbHVlOiBmb3JtW2tleV0sIGZvcm1SZWY6IHByb3h5LCAuLi5zY29wZS52YWx1ZSwgaW1tZWRpYXRlOiB0cnVlIH07XG4gICAgICAgICAgaWYgKHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xuICAgICAgICAgICAgdmFsdWVDaGFuZ2UuaGFuZGxlKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZm9ybUl0ZW1TaG93KGl0ZW06IGFueSkge1xuICAgICAgaWYgKGl0ZW0gJiYgdW5yZWYoaXRlbS5zaG93KSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdyb3VwSXRlbVNob3coZ3JvdXBJdGVtOiBhbnkpIHtcbiAgICAgIGlmICghZ3JvdXBJdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHVucmVmKGdyb3VwSXRlbS5zaG93KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBrZXkgb2YgZ3JvdXBJdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtrZXldID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0ZpZWxkU2hvdyA9IGZvcm1JdGVtU2hvdyhjb21wdXRlZENvbHVtbnMudmFsdWVba2V5XSk7XG4gICAgICAgIGlmIChpc0ZpZWxkU2hvdykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLndhdGNoKSB7XG4gICAgICB3YXRjaChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9LFxuICAgICAgICAobmV3VmFsLCBvbGRWYWwpID0+IHtcbiAgICAgICAgICBpZiAocHJvcHMud2F0Y2gpIHtcbiAgICAgICAgICAgIHByb3BzLndhdGNoKHNjb3BlLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkZWVwOiB0cnVlLFxuICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGlydHkoKSB7XG4gICAgICBjb25zdCBiZWZvcmUgPSBKU09OLnN0cmluZ2lmeShpbml0aWFsRm9ybSk7XG4gICAgICBjb25zdCBhZnRlciA9IEpTT04uc3RyaW5naWZ5KGZvcm0pO1xuICAgICAgcmV0dXJuIGJlZm9yZSAhPT0gYWZ0ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWVyZ2VkU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLnNsb3RzLCBjdHguc2xvdHMpO1xuICAgIH0pO1xuXG4gICAgY3R4LmVtaXQoXCJpbml0XCIsIHNjb3BlLnZhbHVlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBnZXQoZm9ybSwga2V5KTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHNldChmb3JtLCBrZXksIHZhbHVlKTtcbiAgICAgICAgZG9WYWx1ZUNoYW5nZShrZXksIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICB1aSxcbiAgICAgIHZhbGlkUmVmLFxuICAgICAgZXJyb3JzUmVmLFxuICAgICAgZm9ybVJlZixcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcbiAgICAgIGNvbXB1dGVkRGVmYXVsdENvbHVtbnMsXG4gICAgICBzdWJtaXQsXG4gICAgICByZXNldCxcbiAgICAgIGdldEZvcm1SZWYsXG4gICAgICBzY29wZSxcbiAgICAgIGJ1aWxkSXRlbVNjb3BlLFxuICAgICAgZ3JvdXBBY3RpdmVLZXksXG4gICAgICBmb3JtLFxuICAgICAgZm9ybUl0ZW1SZWZzLFxuICAgICAgZ2V0Rm9ybURhdGEsXG4gICAgICBzZXRGb3JtRGF0YSxcbiAgICAgIGdldENvbXBvbmVudFJlZixcbiAgICAgIG1lcmdlQ29sLFxuICAgICAgdmFsaWRhdGUsXG4gICAgICBjb21wdXRlZEdyb3VwLFxuICAgICAgZ2V0Q29udGV4dEZuLFxuICAgICAgZm9ybUl0ZW1TaG93LFxuICAgICAgZ3JvdXBJdGVtU2hvdyxcbiAgICAgIGlzRGlydHksXG4gICAgICBtZXJnZWRTbG90c1xuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWZvcm0ge1xuICAuZWwtY29sbGFwc2UtaXRlbV9fY29udGVudCB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMzBweDtcbiAgfVxuXG4gIC5mcy1mb3JtLWludmFsaWQge1xuICB9XG5cbiAgLmZzLWZvcm0taXRlbS1jb21wb25lbnQge1xuICAgIC5hbnQtcGlja2VyLFxuICAgIC5hbnQtaW5wdXQtYWZmaXgtd3JhcHBlcixcbiAgICAuYW50LWlucHV0LW51bWJlcixcbiAgICAuZWwtY2FzY2FkZXIsXG4gICAgLmVsLWRhdGUtZWRpdG9yLFxuICAgIC5lbC1pbnB1dC1udW1iZXIsXG4gICAgLmVsLWlucHV0LFxuICAgID4gLmVsLXNlbGVjdCxcbiAgICA+IC5uLXNlbGVjdCxcbiAgICAubi1kYXRlLXBpY2tlcixcbiAgICAubi1pbnB1dC1udW1iZXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vLmVsLWRhdGUtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcbiAgLy8gIHdpZHRoOiAxMDAlO1xuICAvL31cbn1cblxuLmZzLWZvcm0tZ3JpZCB7XG4gIC5mcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA1MCUgNTAlO1xuICAgIC8vIGdhcDogMCAyMHB4OyAvL+WIl+mXtOi3nSAyMHB4XG4gICAgLmZzLWNvbCB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBhbnRkdlxuICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgIGZsZXg6IG5vbmU7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVsZW1lbnRcbiAgLmVsLXJvdzo6YWZ0ZXIsXG4gIC5lbC1yb3c6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLmZzLWZvcm0tZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIC5mcy1yb3cge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZnMtZm9ybS1mbGV4IHtcbiAgICAuZnMtcm93IHtcbiAgICAgIC5mcy1jb2wge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gIC5mcy1mb3JtLWZsZXgge1xuICAgIC5mcy1yb3cge1xuICAgICAgLmZzLWNvbCB7XG4gICAgICAgIC8vLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xuICAgICAgICAvLyAgZmxleDogbm9uZTtcbiAgICAgICAgLy99XG4gICAgICAgIC8vLmFudC1mb3JtLWl0ZW0gLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIC8vICBmbGV4OiAxO1xuICAgICAgICAvLyAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAvL31cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxuICAgIHJlZj1cImZvcm1SZWZcIlxuICAgIGNsYXNzPVwiZnMtZm9ybVwiXG4gICAgOmNsYXNzPVwie1xuICAgICAgJ2ZzLWZvcm0tZ3JpZCc6IGRpc3BsYXkgPT09ICdncmlkJyxcbiAgICAgICdmcy1mb3JtLWZsZXgnOiBkaXNwbGF5ID09PSAnZmxleCcsXG4gICAgICAnZnMtZm9ybS1pbnZhbGlkJzogdmFsaWRSZWYgPT09IGZhbHNlXG4gICAgfVwiXG4gICAgb25zdWJtaXQ9XCJldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgOm1vZGVsPVwiZm9ybVwiXG4gID5cbiAgICA8IS0tIHJvdyAtLT5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgY2xhc3M9XCJmcy1yb3dcIiB2LWJpbmQ9XCJyb3dcIj5cbiAgICAgIDwhLS0gY29sIC0tPlxuICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiaXRlbSBpbiBjb21wdXRlZERlZmF1bHRDb2x1bW5zXCIgOmtleT1cIml0ZW0/LmtleVwiPlxuICAgICAgICA8ZnMtZm9ybS1pdGVtLWNvbFxuICAgICAgICAgIDpyZWY9XCJcbiAgICAgICAgICAgIChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGZvcm1JdGVtUmVmc1tpdGVtLmtleV0gPSBlbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiXG4gICAgICAgICAgOmNvbD1cIm1lcmdlQ29sKGl0ZW0uY29sKVwiXG4gICAgICAgICAgOml0ZW09XCJpdGVtXCJcbiAgICAgICAgICA6aGVscGVyPVwiaGVscGVyXCJcbiAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwgaXRlbS5rZXkpXCJcbiAgICAgICAgICA6c2xvdHM9XCJtZXJnZWRTbG90c1snZm9ybV8nICsgaXRlbS5rZXldXCJcbiAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxuICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJzZXQoZm9ybSwgaXRlbS5rZXksICRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2NvbXBvbmVudD5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb21wdXRlZEdyb3VwLndyYXBwZXIucGFyZW50XCJcbiAgICAgIHYtaWY9XCJjb21wdXRlZEdyb3VwLndyYXBwZXJcIlxuICAgICAgdi1tb2RlbDpbdWkuY29sbGFwc2UubW9kZWxWYWx1ZV09XCJncm91cEFjdGl2ZUtleVwiXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgIHYtYmluZD1cImNvbXB1dGVkR3JvdXBcIlxuICAgID5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihncm91cEl0ZW0sIGdyb3VwS2V5KSBvZiBjb21wdXRlZEdyb3VwLmdyb3Vwc1wiIDprZXk9XCJncm91cEtleVwiPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyLmNoaWxkXCJcbiAgICAgICAgICB2LWlmPVwiZ3JvdXBJdGVtU2hvdyhncm91cEl0ZW0pXCJcbiAgICAgICAgICA6W3VpLmNvbGxhcHNlLmtleU5hbWVdPVwiZ3JvdXBLZXlcIlxuICAgICAgICAgIHYtYmluZD1cImdyb3VwSXRlbVwiXG4gICAgICAgICAgOmNsYXNzPVwieyAnZnMtZm9ybS1ncm91cC1lcnJvcic6IGVycm9yc1JlZlsnZ3JvdXAuJyArIGdyb3VwS2V5XSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBzbG90TmFtZSkgb2YgZ3JvdXBJdGVtLnNsb3RzXCIgOmtleT1cInNsb3ROYW1lXCIgI1tzbG90TmFtZV09XCJzY29wZVwiPlxuICAgICAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJpdGVtXCIgOnNjb3BlPVwieyAuLi5zY29wZSwgaGFzRXJyb3I6IGVycm9yc1JlZlsnZ3JvdXAuJyArIGdyb3VwS2V5XSB9XCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwhLS0gcm93IC0tPlxuICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLXJvd1wiIHYtYmluZD1cInJvd1wiPlxuICAgICAgICAgICAgPCEtLSBjb2wgLS0+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJrZXkgaW4gZ3JvdXBJdGVtLmNvbHVtbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICAgIDxmcy1mb3JtLWl0ZW0tY29sXG4gICAgICAgICAgICAgICAgdi1pZj1cImNvbXB1dGVkQ29sdW1uc1trZXldXCJcbiAgICAgICAgICAgICAgICA6cmVmPVwiXG4gICAgICAgICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtSXRlbVJlZnNba2V5XSA9IGVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA6Y29sPVwibWVyZ2VDb2woY29tcHV0ZWRDb2x1bW5zW2tleV0uY29sKVwiXG4gICAgICAgICAgICAgICAgOml0ZW09XCJjb21wdXRlZENvbHVtbnNba2V5XVwiXG4gICAgICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0KGZvcm0sIGtleSlcIlxuICAgICAgICAgICAgICAgIDpzbG90cz1cIm1lcmdlZFNsb3RzWydmb3JtXycgKyBrZXldXCJcbiAgICAgICAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxuICAgICAgICAgICAgICAgIDpoZWxwZXI9XCJoZWxwZXJcIlxuICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJzZXQoZm9ybSwga2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIGRlZmluZUNvbXBvbmVudCxcbiAgZ2V0Q3VycmVudEluc3RhbmNlLFxuICBvbk1vdW50ZWQsXG4gIHJlYWN0aXZlLFxuICBSZWYsXG4gIHJlZixcbiAgdG9SYXcsXG4gIHVucmVmLFxuICBVbndyYXBOZXN0ZWRSZWZzLFxuICB3YXRjaFxufSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBlYWNoLCBzZXQsIGNsb25lRGVlcCwgZW50cmllcywgZ2V0LCB1bnNldCwgZm9yRWFjaCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBDb21wdXRlVmFsdWUsIHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgbG9nZ2VyIGZyb20gXCIuLi8uLi91dGlscy91dGlsLmxvZ1wiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBGb3JtU2NvcGVDb250ZXh0LCBTZXRGb3JtRGF0YU9wdGlvbnMsIHVzZVVpLCB1dGlscyB9IGZyb20gXCIuLi8uLi9pbmRleFwiO1xuXG4vKipcbiAqIOmFjee9ruWMlueahOihqOWNlee7hOS7tlxuICog5pq06Zyy55qE5pa55rOV77yaXG4gKiByZWYuc3VibWl0KCkgPSDmj5DkuqTooajljZVcbiAqIHJlZi5yZXNldCgpID0g6YeN572u6KGo5Y2VXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNGb3JtXCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5Yid5aeL6KGo5Y2V5pWw5o2uXG4gICAgICoqL1xuICAgIGluaXRpYWxGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlrZfmrrXmqKHniYhcbiAgICAgKiB7XG4gICAgICogICBrZXk6e1xuICAgICAqICAgICB0aXRsZTogXCLlrZfmrrXlkI3np7BcIixcbiAgICAgKiAgICAgY29tcG9uZW50OntcbiAgICAgKiAgICAgICBuYW1lOlwi57uE5Lu25ZCN56ewXCJcbiAgICAgKiAgICAgICAuLi7nu4Tku7blj4LmlbBcbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKiAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a2X5q615YiG57uEXG4gICAgICoge1xuICAgICAqICAgdHlwZToneHh4JywgLy/liIbnu4TlsZXnpLrnsbvlnotcbiAgICAgKiAgIGdyb3Vwczp7IC8v5YiG57uE5pWw5o2uXG4gICAgICogICAgIGdyb3VwS2V5OnsgdGl0bGU6J3h4eCcsY29sdW1uczpbJ2ZpZWxkS2V5JywnZmllbGRLZXknXX1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgZ3JvdXA6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6YeN572u6KGo5Y2V5ZCO55qE5pON5L2cXG4gICAgICovXG4gICAgZG9SZXNldDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWHu+S/neWtmOaMiemSru+8jOihqOWNleagoemqjOWJjeaJp+ihjOaTjeS9nO+8iGFzeW5j77yJXG4gICAgICovXG4gICAgYmVmb3JlVmFsaWRhdGU6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajljZXmoKHpqozlrozlrozmiJDlkI7vvIzmj5DkuqTliY3lpITnkIbvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGJlZm9yZVN1Ym1pdDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWHu+S/neWtmOaMiemSruaXtuaJp+ihjOaTjeS9nO+8iGFzeW5j77yJXG4gICAgICovXG4gICAgZG9TdWJtaXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajljZXmj5DkuqTlkI7lpITnkIbvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGFmdGVyU3VibWl0OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe95YaF5a65XG4gICAgICovXG4gICAgc2xvdHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5biD5bGA5pa55byP44CQZmxleHxncmlk44CRXG4gICAgICovXG4gICAgZGlzcGxheToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJmbGV4XCIgLy8gZmxleFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bqP5Y+377yM57yW6L6R5pe25Lya5Lyg5YWlXG4gICAgICovXG4gICAgaW5kZXg6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qih5byPIFthZGQsZWRpdCx2aWV3LOiHquWumuS5iV1cbiAgICAgKi9cbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGEtcm936YWN572uXG4gICAgICovXG4gICAgcm93OiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGVsLWNvbHxhLWNvbOmFjee9ru+8jOWPr+mFjee9rui3qOWIl1xuICAgICAqL1xuICAgIGNvbDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBmb3JtSXRlbeeahOWFrOWFsemFjee9rlxuICAgICAqL1xuICAgIGZvcm1JdGVtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGhlbHBlcuS9jee9ru+8mntwb3NpdGlvbjonbGFiZWwnfVxuICAgICAqL1xuICAgIGhlbHBlcjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJyZXNldFwiLCBcInN1Ym1pdFwiLCBcInN1Y2Nlc3NcIiwgXCJ2YWxpZGF0aW9uRXJyb3JcIiwgXCJ2YWx1ZS1jaGFuZ2VcIiwgXCJpbml0XCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgQXN5bmNDb21wdXRlVmFsdWUsIGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcbiAgICBjb25zdCBmb3JtUmVmID0gcmVmKCk7XG4gICAgY29uc3QgZm9ybTogVW53cmFwTmVzdGVkUmVmczxhbnk+ID0gcmVhY3RpdmUoe30pO1xuICAgIGNvbnN0IHsgcHJveHkgfSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuXG4gICAgLy8gdXRpbHMudHJhY2UoXCJmcy1mb3JtXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxuICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiAoaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlIHx8IGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBDb21wdXRlVmFsdWUpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKFwiZm9ybS52YWx1ZemFjee9ruS4jeaUr+aMgUNvbXB1dGUvQXN5bmNDb21wdXRl57G75Z6L55qE5Yqo5oCB6K6h566XXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCkge1xuICAgICAgY29uc3QgZm9ybSA9IHt9O1xuICAgICAgLy8g5Yid5aeL5pWw5o2u6LWL5YC8XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZlZhbHVlID0gdW5yZWYoaXRlbS52YWx1ZSk7XG4gICAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0KGZvcm0sIGtleSwgZGVmVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG1lcmdlKGZvcm0sIGNsb25lRGVlcChwcm9wcy5pbml0aWFsRm9ybSkpO1xuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xuICAgIHNldEZvcm1EYXRhKGluaXRpYWxGb3JtKTtcblxuICAgIGNvbnN0IHNjb3BlOiBSZWY8Rm9ybVNjb3BlQ29udGV4dD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByb3c6IGluaXRpYWxGb3JtLFxuICAgICAgICBmb3JtLFxuICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgICAgIG1vZGU6IHByb3BzLm1vZGUgfHwgXCJhZGRcIixcbiAgICAgICAgYXR0cnM6IGN0eC5hdHRycyxcbiAgICAgICAgZ2V0Q29tcG9uZW50UmVmXG4gICAgICB9IGFzIEZvcm1TY29wZUNvbnRleHQ7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKSB7XG4gICAgICByZXR1cm4gc2NvcGUudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XG4gICAgfSk7XG4gICAgLy9mb3JtLnZhbHVlQnVpbGRlclxuXG4gICAgZnVuY3Rpb24gZG9WYWx1ZUJ1aWxkZXIoZm9ybTogYW55KSB7XG4gICAgICBpZiAoZm9ybSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gZ2V0KGZvcm0sIGtleSk7XG4gICAgICAgIGlmIChpdGVtLnZhbHVlQnVpbGRlcikge1xuICAgICAgICAgIGNvbnN0IHJlczogYW55ID0gaXRlbS52YWx1ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICByb3c6IGluaXRpYWxGb3JtLFxuICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgICAgIG1vZGU6IHByb3BzLm1vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgIShyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICAgICAgc2V0KGZvcm0sIGtleSwgcmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEZvcm1EYXRhKCkge1xuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldEZvcm1EYXRhKGZvcm1EYXRhOiBhbnksIG9wdGlvbnM6IFNldEZvcm1EYXRhT3B0aW9ucyA9IHt9KSB7XG4gICAgICBkb1ZhbHVlQnVpbGRlcihmb3JtRGF0YSk7XG5cbiAgICAgIGlmIChvcHRpb25zLm1lcmdlRm9ybSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybSkge1xuICAgICAgICAgIGRlbGV0ZSBmb3JtW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1lcmdlKGZvcm0sIGZvcm1EYXRhKTtcbiAgICAgIGNvbnN0IHsgdmFsdWVDaGFuZ2UgfSA9IG9wdGlvbnM7XG4gICAgICBpZiAodmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgZm9yRWFjaChwcm9wcy5jb2x1bW5zLCAoY29sdW1uOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtW2tleV07XG4gICAgICAgICAgZG9WYWx1ZUNoYW5nZShrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb2woLi4uY29sOiBhbnkpIHtcbiAgICAgIHJldHVybiBtZXJnZSh7fSwgcHJvcHMuY29sLCAuLi5jb2wpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXRlbVNjb3BlKGl0ZW06IGFueSk6IEZvcm1TY29wZUNvbnRleHQge1xuICAgICAgcmV0dXJuIHsga2V5OiBpdGVtLmtleSwgLi4uc2NvcGUudmFsdWUgfTtcbiAgICB9XG5cbiAgICAvLyBkb1ZhbHVlQnVpbGRlcihmb3JtKTtcblxuICAgIC8vIHdhdGNoKFxuICAgIC8vICAgKCkgPT4gcHJvcHMuaW5pdGlhbEZvcm0sXG4gICAgLy8gICAoKSA9PiB7XG4gICAgLy8gICAgIHNldEZvcm1EYXRhKGNyZWF0ZUluaXRpYWxGb3JtKCksIHsgbWVyZ2VGb3JtOiBmYWxzZSB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuXG4gICAgZnVuY3Rpb24gZG9WYWx1ZUNoYW5nZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgY29uc3QgZXZlbnQgPSB7IGtleSwgdmFsdWUsIGZvcm1SZWY6IHByb3h5LCAuLi5zY29wZS52YWx1ZSwgaW1tZWRpYXRlOiBmYWxzZSB9O1xuICAgICAgY3R4LmVtaXQoXCJ2YWx1ZS1jaGFuZ2VcIiwgZXZlbnQpO1xuICAgICAgbGV0IHZhbHVlQ2hhbmdlID0gcHJvcHMuY29sdW1uc1trZXldLnZhbHVlQ2hhbmdlO1xuICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgdmFsdWVDaGFuZ2UoZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xuICAgICAgICAgIHZhbHVlQ2hhbmdlLmhhbmRsZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3JtSXRlbVJlZnM6IFJlZiA9IHJlZih7fSk7XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtSXRlbVJlZihrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGZvcm1JdGVtUmVmcy52YWx1ZVtrZXldLmdldEZvcm1JdGVtUmVmKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVmKGtleTogc3RyaW5nLCBpc0FzeW5jID0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBnZXRGb3JtSXRlbVJlZihrZXkpPy5nZXRDb21wb25lbnRSZWYoaXNBc3luYyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBBY3RpdmVLZXkgPSByZWYoW10pO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxuICAgIGZvckVhY2gocHJvcHMuZ3JvdXA/Lmdyb3VwcywgKGdyb3VwSXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgaWYgKGdyb3VwSXRlbS5jb2xsYXBzZWQgIT09IHRydWUpIHtcbiAgICAgICAgZ3JvdXBBY3RpdmVLZXkudmFsdWUucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBpZiAocHJvcHMuZ3JvdXA/Lmdyb3VwVHlwZSA9PT0gXCJ0YWJzXCIpIHtcbiAgICAgIGdyb3VwQWN0aXZlS2V5LnZhbHVlID0gZ3JvdXBBY3RpdmVLZXkudmFsdWUubGVuZ3RoID4gMCA/IGdyb3VwQWN0aXZlS2V5LnZhbHVlWzBdIDogbnVsbDtcbiAgICB9XG5cbiAgICAvL+aehOW7uuWIhue7hOaVsOaNrlxuICAgIGNvbnN0IGNvbXB1dGVkR3JvdXAgPSBkb0NvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuZ3JvdXA7XG4gICAgICB9LFxuICAgICAgZ2V0Q29udGV4dEZuLFxuICAgICAgbnVsbCxcbiAgICAgIChncm91cCA9IHt9KSA9PiB7XG4gICAgICAgIC8v5om+5Ye65rKh5pyJ5re75Yqg6L+b5YiG57uE55qE5a2X5q61XG4gICAgICAgIGNvbnN0IGdyb3VwZWRLZXlzOiBhbnkgPSB7fTtcbiAgICAgICAgZm9yRWFjaChncm91cD8uZ3JvdXBzLCAoZ3JvdXBJdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZm9yRWFjaChncm91cEl0ZW0uY29sdW1ucywgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtpdGVtXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHV0aWxzLmxvZ2dlci53YXJuKFwi5peg5pWI55qE5YiG57uE5a2X5q6177yaXCIgKyBpdGVtKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBlZEtleXNbaXRlbV0gPSBrZXk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBncm91cC5ncm91cFR5cGU7XG4gICAgICAgIGxldCB3cmFwcGVyID0ge1xuICAgICAgICAgIHBhcmVudDogdWkuY29sbGFwc2UubmFtZSxcbiAgICAgICAgICBjaGlsZDogdWkuY29sbGFwc2VJdGVtLm5hbWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwidGFic1wiKSB7XG4gICAgICAgICAgd3JhcHBlci5wYXJlbnQgPSB1aS50YWJzLm5hbWU7XG4gICAgICAgICAgd3JhcHBlci5jaGlsZCA9IHVpLnRhYlBhbmUubmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAge1xuICAgICAgICAgICAgd3JhcHBlcixcbiAgICAgICAgICAgIGdyb3VwZWRLZXlzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBncm91cFxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb21wdXRlZERlZmF1bHRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgY29sdW1uczogYW55ID0gW107XG4gICAgICAvL2RlZmF1bHQgY29sdW1uc+aOkuW6j1xuICAgICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsICh2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gY2xvbmVEZWVwKHByb3BzLmZvcm1JdGVtIHx8IHt9KTtcbiAgICAgICAgdmFsdWUgPSBtZXJnZShpdGVtLCB2YWx1ZSk7XG4gICAgICAgIHZhbHVlLmtleSA9IGtleTtcbiAgICAgICAgaWYgKHZhbHVlLm9yZGVyID09IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZS5vcmRlciA9IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzID09IG51bGwgfHwgY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXNba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZS5jb2wgPSBtZXJnZUNvbCh2YWx1ZS5jb2wpO1xuICAgICAgfSk7XG4gICAgICAvL+aOkuW6j1xuICAgICAgY29sdW1ucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbHVtbnM7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtUmVmKCkge1xuICAgICAgcmV0dXJuIGZvcm1SZWYudmFsdWU7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgLy8gdWkuZm9ybS5yZXNldFdyYXAoZm9ybVJlZi52YWx1ZSwgeyBmb3JtLCBpbml0aWFsRm9ybTogY3JlYXRlSW5pdGlhbEZvcm0oKSB9KTtcbiAgICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcbiAgICAgIGNvbnN0IGVudHJpZXNSZXQgPSBlbnRyaWVzKGZvcm0pO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB1bnNldChmb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KGZvcm0sIGVudHJ5WzBdLCBpbml0aWFsVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wcy5kb1Jlc2V0KSB7XG4gICAgICAgIGF3YWl0IHByb3BzLmRvUmVzZXQoc2NvcGUudmFsdWUpO1xuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJyZXNldFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZFJlZjogUmVmID0gcmVmKCk7XG4gICAgY29uc3QgZXJyb3JzUmVmOiBSZWYgPSByZWYoe30pO1xuXG4gICAgZnVuY3Rpb24gZmlsbEdyb3VwRXJyb3IoZmllbGRFcnJvcnM6IGFueSkge1xuICAgICAgaWYgKCFjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrZXkgaW4gZmllbGRFcnJvcnMpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5c1trZXldO1xuICAgICAgICBpZiAoZ3JvdXAgIT0gbnVsbCkge1xuICAgICAgICAgIGZpZWxkRXJyb3JzW1wiZ3JvdXAuXCIgKyBncm91cF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVNjb3BlID0geyAuLi5zY29wZS52YWx1ZSwgZm9ybSB9O1xuICAgICAgaWYgKHZhbGlkYXRlU2NvcGUubW9kZSA9PT0gXCJ2aWV3XCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmJlZm9yZVZhbGlkYXRlKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHByb3BzLmJlZm9yZVZhbGlkYXRlKHZhbGlkYXRlU2NvcGUpO1xuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBlcnJvcnNSZWYudmFsdWUgPSB7fTtcbiAgICAgICAgYXdhaXQgdWkuZm9ybS52YWxpZGF0ZVdyYXAoZm9ybVJlZi52YWx1ZSk7XG4gICAgICAgIHZhbGlkUmVmLnZhbHVlID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB2YWxpZFJlZi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCB2YWxpZGF0ZUVycm9ycyA9IHVpLmZvcm0udHJhbnNmb3JtVmFsaWRhdGVFcnJvcnMoZSk7XG4gICAgICAgIGZpbGxHcm91cEVycm9yKHZhbGlkYXRlRXJyb3JzKTtcbiAgICAgICAgZXJyb3JzUmVmLnZhbHVlID0gdmFsaWRhdGVFcnJvcnM7XG4gICAgICAgIGN0eC5lbWl0KFwidmFsaWRhdGlvbkVycm9yXCIsIHNjb3BlLnZhbHVlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gc3VibWl0KCkge1xuICAgICAgYXdhaXQgdmFsaWRhdGUoKTtcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gY2xvbmVEZWVwKHRvUmF3KGZvcm0pKTtcbiAgICAgIGNvbnN0IHN1Ym1pdFNjb3BlID0geyAuLi5zY29wZS52YWx1ZSwgZm9ybTogZm9ybURhdGEgfTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImZvcm0gc3VibWl0XCIsIEpTT04uc3RyaW5naWZ5KGZvcm0pKTtcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gZ2V0KGZvcm1EYXRhLCBrZXkpO1xuICAgICAgICBpZiAoaXRlbS52YWx1ZVJlc29sdmUpIHtcbiAgICAgICAgICBjb25zdCByZXM6IGFueSA9IGl0ZW0udmFsdWVSZXNvbHZlKHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgLi4uc3VibWl0U2NvcGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgIShyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICBzZXQoZm9ybURhdGEsIGtleSwgcmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuYmVmb3JlU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHByb3BzLmJlZm9yZVN1Ym1pdChzdWJtaXRTY29wZSk7XG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8v56e76Zmk5LiN5YWB6K645o+Q5Lqk55qE5a2X5q61XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLnN1Ym1pdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB1bnNldChmb3JtRGF0YSwga2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnN1Ym1pdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIC8v6K6+572u5by65Yi25o+Q5Lqk55qE5a2X5q61XG4gICAgICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIGZvcm1EYXRhW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmRvU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHByb3BzLmRvU3VibWl0KHN1Ym1pdFNjb3BlKTtcbiAgICAgICAgc3VibWl0U2NvcGUucmVzID0gcmVzO1xuICAgICAgICBpZiAocmVzID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJzdWJtaXRcIiwgc3VibWl0U2NvcGUpO1xuICAgICAgaWYgKHByb3BzLmFmdGVyU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBwcm9wcy5hZnRlclN1Ym1pdChzdWJtaXRTY29wZSk7XG4gICAgICAgIGlmIChzdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJzdWNjZXNzXCIsIHN1Ym1pdFNjb3BlKTtcblxuICAgICAgcmV0dXJuIHN1Ym1pdFNjb3BlO1xuICAgIH1cblxuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICAvLyBpbW1lZGlhdGUgdmFsdWVDaGFuZ2Xop6blj5FcbiAgICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZUNoYW5nZSA9IGl0ZW0udmFsdWVDaGFuZ2U7XG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZSAmJiB2YWx1ZUNoYW5nZS5pbW1lZGlhdGUgPT09IHRydWUgJiYgdmFsdWVDaGFuZ2UuaGFuZGxlKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSB7IGtleSwgdmFsdWU6IGZvcm1ba2V5XSwgZm9ybVJlZjogcHJveHksIC4uLnNjb3BlLnZhbHVlLCBpbW1lZGlhdGU6IHRydWUgfTtcbiAgICAgICAgICBpZiAodmFsdWVDaGFuZ2UuaGFuZGxlKSB7XG4gICAgICAgICAgICB2YWx1ZUNoYW5nZS5oYW5kbGUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBmb3JtSXRlbVNob3coaXRlbTogYW55KSB7XG4gICAgICBpZiAoaXRlbSAmJiB1bnJlZihpdGVtLnNob3cpICE9PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ3JvdXBJdGVtU2hvdyhncm91cEl0ZW06IGFueSkge1xuICAgICAgaWYgKCFncm91cEl0ZW0uY29sdW1ucykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodW5yZWYoZ3JvdXBJdGVtLnNob3cpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGtleSBvZiBncm91cEl0ZW0uY29sdW1ucykge1xuICAgICAgICBpZiAoY29tcHV0ZWRDb2x1bW5zLnZhbHVlW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRmllbGRTaG93ID0gZm9ybUl0ZW1TaG93KGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtrZXldKTtcbiAgICAgICAgaWYgKGlzRmllbGRTaG93KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMud2F0Y2gpIHtcbiAgICAgIHdhdGNoKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICAgIH0sXG4gICAgICAgIChuZXdWYWwsIG9sZFZhbCkgPT4ge1xuICAgICAgICAgIGlmIChwcm9wcy53YXRjaCkge1xuICAgICAgICAgICAgcHJvcHMud2F0Y2goc2NvcGUudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGRlZXA6IHRydWUsXG4gICAgICAgICAgaW1tZWRpYXRlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEaXJ0eSgpIHtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IEpTT04uc3RyaW5naWZ5KGluaXRpYWxGb3JtKTtcbiAgICAgIGNvbnN0IGFmdGVyID0gSlNPTi5zdHJpbmdpZnkoZm9ybSk7XG4gICAgICByZXR1cm4gYmVmb3JlICE9PSBhZnRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXJnZWRTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBtZXJnZSh7fSwgcHJvcHMuc2xvdHMsIGN0eC5zbG90cyk7XG4gICAgfSk7XG5cbiAgICBjdHguZW1pdChcImluaXRcIiwgc2NvcGUudmFsdWUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldDogKGZvcm06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGdldChmb3JtLCBrZXkpO1xuICAgICAgfSxcbiAgICAgIHNldDogKGZvcm06IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgc2V0KGZvcm0sIGtleSwgdmFsdWUpO1xuICAgICAgICBkb1ZhbHVlQ2hhbmdlKGtleSwgdmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHVpLFxuICAgICAgdmFsaWRSZWYsXG4gICAgICBlcnJvcnNSZWYsXG4gICAgICBmb3JtUmVmLFxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxuICAgICAgY29tcHV0ZWREZWZhdWx0Q29sdW1ucyxcbiAgICAgIHN1Ym1pdCxcbiAgICAgIHJlc2V0LFxuICAgICAgZ2V0Rm9ybVJlZixcbiAgICAgIHNjb3BlLFxuICAgICAgYnVpbGRJdGVtU2NvcGUsXG4gICAgICBncm91cEFjdGl2ZUtleSxcbiAgICAgIGZvcm0sXG4gICAgICBmb3JtSXRlbVJlZnMsXG4gICAgICBnZXRGb3JtRGF0YSxcbiAgICAgIHNldEZvcm1EYXRhLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgbWVyZ2VDb2wsXG4gICAgICB2YWxpZGF0ZSxcbiAgICAgIGNvbXB1dGVkR3JvdXAsXG4gICAgICBnZXRDb250ZXh0Rm4sXG4gICAgICBmb3JtSXRlbVNob3csXG4gICAgICBncm91cEl0ZW1TaG93LFxuICAgICAgaXNEaXJ0eSxcbiAgICAgIG1lcmdlZFNsb3RzXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtZm9ybSB7XG4gIC5lbC1jb2xsYXBzZS1pdGVtX19jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xuICB9XG5cbiAgLmZzLWZvcm0taW52YWxpZCB7XG4gIH1cblxuICAuZnMtZm9ybS1pdGVtLWNvbXBvbmVudCB7XG4gICAgLmFudC1waWNrZXIsXG4gICAgLmFudC1pbnB1dC1hZmZpeC13cmFwcGVyLFxuICAgIC5hbnQtaW5wdXQtbnVtYmVyLFxuICAgIC5lbC1jYXNjYWRlcixcbiAgICAuZWwtZGF0ZS1lZGl0b3IsXG4gICAgLmVsLWlucHV0LW51bWJlcixcbiAgICAuZWwtaW5wdXQsXG4gICAgPiAuZWwtc2VsZWN0LFxuICAgID4gLm4tc2VsZWN0LFxuICAgIC5uLWRhdGUtcGlja2VyLFxuICAgIC5uLWlucHV0LW51bWJlciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19pY29uIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cbiAgICAuZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19jbG9zZS1pY29uIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAuZWwtcmFuZ2UtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8uZWwtZGF0ZS1lZGl0b3IuZWwtaW5wdXRfX3dyYXBwZXIge1xuICAvLyAgd2lkdGg6IDEwMCU7XG4gIC8vfVxufVxuXG4uZnMtZm9ybS1ncmlkIHtcbiAgLmZzLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDUwJSA1MCU7XG4gICAgLy8gZ2FwOiAwIDIwcHg7IC8v5YiX6Ze06LedIDIwcHhcbiAgICAuZnMtY29sIHtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8vIGFudGR2XG4gICAgLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xuICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgZmxleDogbm9uZTtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbC13cmFwcGVyIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gZWxlbWVudFxuICAuZWwtcm93OjphZnRlcixcbiAgLmVsLXJvdzo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4uZnMtZm9ybS1mbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgLmZzLXJvdyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mcy1mb3JtLWZsZXgge1xuICAgIC5mcy1yb3cge1xuICAgICAgLmZzLWNvbCB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgLmZzLWZvcm0tZmxleCB7XG4gICAgLmZzLXJvdyB7XG4gICAgICAuZnMtY29sIHtcbiAgICAgICAgLy8uYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICAgIC8vICBmbGV4OiBub25lO1xuICAgICAgICAvL31cbiAgICAgICAgLy8uYW50LWZvcm0taXRlbSAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcbiAgICAgICAgLy8gIGZsZXg6IDE7XG4gICAgICAgIC8vICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIC8vfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIlxuICAgIHYtaWY9XCJjb21wdXRlZEl0ZW1cIlxuICAgIGNsYXNzPVwiZnMtZm9ybS1pdGVtXCJcbiAgICA6W3VpLmZvcm1JdGVtLnByb3BdPVwiY29tcHV0ZWRLZXlcIlxuICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbVwiXG4gICAgOnBhdGg9XCJjb21wdXRlZEl0ZW0ua2V5XCJcbiAgICA6cnVsZS1wYXRoPVwiY29tcHV0ZWRJdGVtLmtleVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2xhYmVsPlxuICAgICAgPHNwYW4gdi1pZj1cImNvbXB1dGVkTGFiZWxJc1JlbmRlclwiIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLXRleHRcIj5cbiAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZExhYmVsUmVuZGVyXCI+PC9mcy1yZW5kZXI+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtdGV4dFwiIDp0aXRsZT1cImNvbXB1dGVkTGFiZWxcIj5cbiAgICAgICAge3sgY29tcHV0ZWRMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8Y29tcG9uZW50XG4gICAgICAgIDppcz1cInVpLnRvb2x0aXAubmFtZVwiXG4gICAgICAgIHYtaWY9XCJjb21wdXRlZEl0ZW0uaGVscGVyICYmIGNvbXB1dGVkSGVscGVyUG9zaXRpb24gPT09ICdsYWJlbCdcIlxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEhlbHBlclRvb2x0aXBcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLmNvbnRlbnRdPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oZWxwZXItdG9vbHRpcFwiPlxuICAgICAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC50cmlnZ2VyXT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uXCI+XG4gICAgICAgICAgICA8ZnMtaWNvbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uLWlubmVyXCIgOmljb249XCJ1aS5pY29ucy5xdWVzdGlvblwiPjwvZnMtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tY29udGVudFwiPlxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnRvcFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS50b3BSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLXJlbmRlclwiPlxuICAgICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJjb21wdXRlZEl0ZW0ucHJlZml4UmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnByZWZpeFJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1jb21wb25lbnRcIj5cbiAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cImZvcm1TbG90XCIgOnNsb3RzPVwiZm9ybVNsb3RcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cImNvbXB1dGVkSXRlbS5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlXCI+XG4gICAgICAgICAgICA8ZnMtcmVuZGVyXG4gICAgICAgICAgICAgIHYtaWY9XCJcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIgJiZcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2ggJiZcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2goc2NvcGVGdW5jKCkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5yZW5kZXJcIlxuICAgICAgICAgICAgICA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGZzLXJlbmRlciB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICByZWY9XCJjb21wb25lbnRSZW5kZXJSZWZcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEl0ZW0uY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcbiAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInVwZGF0ZU1vZGVsVmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnN1ZmZpeFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5zdWZmaXhSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5ib3R0b21SZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uYm90dG9tUmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJjb21wdXRlZEl0ZW0uaGVscGVyICYmIGNvbXB1dGVkSGVscGVyUG9zaXRpb24gIT09ICdsYWJlbCdcIj5cbiAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUmVmLCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCBGc1JlbmRlciBmcm9tIFwiLi4vcmVuZGVyL2ZzLXJlbmRlci5qc1wiO1xuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiBmb3JtLWl0ZW3nu4Tku7blsIHoo4VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0Zvcm1JdGVtXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNSZW5kZXIgfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDooajljZXlrZfmrrXlgLwodi1tb2RlbClcbiAgICAgKi9cbiAgICBtb2RlbFZhbHVlOiB7fSxcbiAgICAvKipcbiAgICAgKiDlrZfmrrXphY3nva5cbiAgICAgKi9cbiAgICBpdGVtOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8YW55PixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a2X5q6157uE5Lu25o+S5qe9XG4gICAgICovXG4gICAgZm9ybVNsb3Q6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBnZXRDb250ZXh0Rm46IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWYgPSByZWYoKTtcbiAgICAvLyB1dGlscy50cmFjZShcImZzLWZvcm0taXRlbVwiKTtcbiAgICAvLyBjb25zdCBzY29wZUNvbXB1dGVkOiBSZWY8U2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHt9KTtcblxuICAgIGNvbnN0IHNjb3BlRnVuYyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gcHJvcHMuZ2V0Q29udGV4dEZuID8gcHJvcHMuZ2V0Q29udGV4dEZuKCkgOiB7fTtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBwcm9wcy5tb2RlbFZhbHVlLCBrZXk6IHByb3BzLml0ZW0ua2V5LCAuLi5zY29wZSB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVNb2RlbFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoaXNBc3luYyA9IGZhbHNlKSB7XG4gICAgICBpZiAoaXNBc3luYykge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWZBc3luYygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZi52YWx1ZT8uZ2V0VGFyZ2V0UmVmKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAuLi5wcm9wcy5pdGVtXG4gICAgICB9O1xuICAgICAgZGVsZXRlIHJlcy50aXRsZTtcbiAgICAgIGRlbGV0ZSByZXMubGFiZWw7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtPy5oZWxwZXI/LnBvc2l0aW9uIHx8IChwcm9wcy5oZWxwZXIgYXMgYW55KT8ucG9zaXRpb247XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJUb29sdGlwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5pdGVtLmhlbHBlcj8udG9vbHRpcCwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy50b29sdGlwKTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlZEtleSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5pdGVtID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLml0ZW0ua2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLml0ZW0ua2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmtleTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMuaXRlbS5sYWJlbCB8fCBwcm9wcy5pdGVtLnRpdGxlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxJc1JlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBjb21wdXRlZExhYmVsLnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZExhYmVsUmVuZGVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUoc2NvcGVGdW5jKCkpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICB1cGRhdGVNb2RlbFZhbHVlLFxuICAgICAgc2NvcGVGdW5jLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbixcbiAgICAgIGNvbXB1dGVkSGVscGVyVG9vbHRpcCxcbiAgICAgIGNvbXB1dGVkS2V5LFxuICAgICAgY29tcHV0ZWRMYWJlbElzUmVuZGVyLFxuICAgICAgY29tcHV0ZWRMYWJlbCxcbiAgICAgIGNvbXB1dGVkTGFiZWxSZW5kZXIsXG4gICAgICBjb21wdXRlZEl0ZW1cbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtLWl0ZW0ge1xuICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgLy9saW5lLWhlaWdodDogMTtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLXRleHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgfVxuICAuZWwtZm9ybS1pdGVtIHtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24ge1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbiB7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXIge1xuICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXg6IDE7XG4gICAgLmZzLWZvcm0taXRlbS1yZW5kZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAuZnMtZm9ybS1pdGVtLWNvbXBvbmVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5mcy1mb3JtLWhlbHBlci10b29sdGlwIHtcbiAgLmZzLWZvcm0taGVscGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIlxuICAgIHYtaWY9XCJjb21wdXRlZEl0ZW1cIlxuICAgIGNsYXNzPVwiZnMtZm9ybS1pdGVtXCJcbiAgICA6W3VpLmZvcm1JdGVtLnByb3BdPVwiY29tcHV0ZWRLZXlcIlxuICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbVwiXG4gICAgOnBhdGg9XCJjb21wdXRlZEl0ZW0ua2V5XCJcbiAgICA6cnVsZS1wYXRoPVwiY29tcHV0ZWRJdGVtLmtleVwiXG4gID5cbiAgICA8dGVtcGxhdGUgI2xhYmVsPlxuICAgICAgPHNwYW4gdi1pZj1cImNvbXB1dGVkTGFiZWxJc1JlbmRlclwiIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLXRleHRcIj5cbiAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZExhYmVsUmVuZGVyXCI+PC9mcy1yZW5kZXI+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiB2LWVsc2UgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtdGV4dFwiIDp0aXRsZT1cImNvbXB1dGVkTGFiZWxcIj5cbiAgICAgICAge3sgY29tcHV0ZWRMYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8Y29tcG9uZW50XG4gICAgICAgIDppcz1cInVpLnRvb2x0aXAubmFtZVwiXG4gICAgICAgIHYtaWY9XCJjb21wdXRlZEl0ZW0uaGVscGVyICYmIGNvbXB1dGVkSGVscGVyUG9zaXRpb24gPT09ICdsYWJlbCdcIlxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEhlbHBlclRvb2x0aXBcIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLmNvbnRlbnRdPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oZWxwZXItdG9vbHRpcFwiPlxuICAgICAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC50cmlnZ2VyXT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uXCI+XG4gICAgICAgICAgICA8ZnMtaWNvbiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC1pY29uLWlubmVyXCIgOmljb249XCJ1aS5pY29ucy5xdWVzdGlvblwiPjwvZnMtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tY29udGVudFwiPlxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnRvcFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS50b3BSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLXJlbmRlclwiPlxuICAgICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJjb21wdXRlZEl0ZW0ucHJlZml4UmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnByZWZpeFJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1jb21wb25lbnRcIj5cbiAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgdi1pZj1cImZvcm1TbG90XCIgOnNsb3RzPVwiZm9ybVNsb3RcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cImNvbXB1dGVkSXRlbS5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlXCI+XG4gICAgICAgICAgICA8ZnMtcmVuZGVyXG4gICAgICAgICAgICAgIHYtaWY9XCJcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIgJiZcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2ggJiZcbiAgICAgICAgICAgICAgICBjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIubWF0Y2goc2NvcGVGdW5jKCkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5yZW5kZXJcIlxuICAgICAgICAgICAgICA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGZzLXJlbmRlciB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICByZWY9XCJjb21wb25lbnRSZW5kZXJSZWZcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZEl0ZW0uY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcbiAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInVwZGF0ZU1vZGVsVmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnN1ZmZpeFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5zdWZmaXhSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5ib3R0b21SZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uYm90dG9tUmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJjb21wdXRlZEl0ZW0uaGVscGVyICYmIGNvbXB1dGVkSGVscGVyUG9zaXRpb24gIT09ICdsYWJlbCdcIj5cbiAgICAgICAgPGZzLWZvcm0taGVscGVyIDpoZWxwZXI9XCJjb21wdXRlZEl0ZW0uaGVscGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUmVmLCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCBGc1JlbmRlciBmcm9tIFwiLi4vcmVuZGVyL2ZzLXJlbmRlci5qc1wiO1xuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiBmb3JtLWl0ZW3nu4Tku7blsIHoo4VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0Zvcm1JdGVtXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNSZW5kZXIgfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDooajljZXlrZfmrrXlgLwodi1tb2RlbClcbiAgICAgKi9cbiAgICBtb2RlbFZhbHVlOiB7fSxcbiAgICAvKipcbiAgICAgKiDlrZfmrrXphY3nva5cbiAgICAgKi9cbiAgICBpdGVtOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8YW55PixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a2X5q6157uE5Lu25o+S5qe9XG4gICAgICovXG4gICAgZm9ybVNsb3Q6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBnZXRDb250ZXh0Rm46IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWYgPSByZWYoKTtcbiAgICAvLyB1dGlscy50cmFjZShcImZzLWZvcm0taXRlbVwiKTtcbiAgICAvLyBjb25zdCBzY29wZUNvbXB1dGVkOiBSZWY8U2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHt9KTtcblxuICAgIGNvbnN0IHNjb3BlRnVuYyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gcHJvcHMuZ2V0Q29udGV4dEZuID8gcHJvcHMuZ2V0Q29udGV4dEZuKCkgOiB7fTtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBwcm9wcy5tb2RlbFZhbHVlLCBrZXk6IHByb3BzLml0ZW0ua2V5LCAuLi5zY29wZSB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVNb2RlbFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoaXNBc3luYyA9IGZhbHNlKSB7XG4gICAgICBpZiAoaXNBc3luYykge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWZBc3luYygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZi52YWx1ZT8uZ2V0VGFyZ2V0UmVmKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAuLi5wcm9wcy5pdGVtXG4gICAgICB9O1xuICAgICAgZGVsZXRlIHJlcy50aXRsZTtcbiAgICAgIGRlbGV0ZSByZXMubGFiZWw7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtPy5oZWxwZXI/LnBvc2l0aW9uIHx8IChwcm9wcy5oZWxwZXIgYXMgYW55KT8ucG9zaXRpb247XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJUb29sdGlwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5pdGVtLmhlbHBlcj8udG9vbHRpcCwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy50b29sdGlwKTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlZEtleSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5pdGVtID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLml0ZW0ua2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLml0ZW0ua2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmtleTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMuaXRlbS5sYWJlbCB8fCBwcm9wcy5pdGVtLnRpdGxlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxJc1JlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBjb21wdXRlZExhYmVsLnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZExhYmVsUmVuZGVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUoc2NvcGVGdW5jKCkpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICB1cGRhdGVNb2RlbFZhbHVlLFxuICAgICAgc2NvcGVGdW5jLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbixcbiAgICAgIGNvbXB1dGVkSGVscGVyVG9vbHRpcCxcbiAgICAgIGNvbXB1dGVkS2V5LFxuICAgICAgY29tcHV0ZWRMYWJlbElzUmVuZGVyLFxuICAgICAgY29tcHV0ZWRMYWJlbCxcbiAgICAgIGNvbXB1dGVkTGFiZWxSZW5kZXIsXG4gICAgICBjb21wdXRlZEl0ZW1cbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtLWl0ZW0ge1xuICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgLy9saW5lLWhlaWdodDogMTtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLXRleHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgfVxuICAuZWwtZm9ybS1pdGVtIHtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24ge1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbiB7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXIge1xuICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXg6IDE7XG4gICAgLmZzLWZvcm0taXRlbS1yZW5kZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAuZnMtZm9ybS1pdGVtLWNvbXBvbmVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5mcy1mb3JtLWhlbHBlci10b29sdGlwIHtcbiAgLmZzLWZvcm0taGVscGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cInVpLmNvbC5uYW1lXCJcbiAgICB2LWlmPVwiY29tcHV0ZWRJdGVtICYmIGNvbXB1dGVkSXRlbS5zaG93ICE9PSBmYWxzZVwiXG4gICAgY2xhc3M9XCJmcy1jb2xcIlxuICAgIHYtYmluZD1cIm1lcmdlKGNvbCwgY29tcHV0ZWRJdGVtPy5jb2wpXCJcbiAgPlxuICAgIDxmcy1mb3JtLWl0ZW1cbiAgICAgIHYtaWY9XCJjb21wdXRlZEl0ZW0gJiYgY29tcHV0ZWRJdGVtPy5ibGFuayAhPT0gdHJ1ZVwiXG4gICAgICByZWY9XCJmb3JtSXRlbVJlZlwiXG4gICAgICA6aXRlbT1cImNvbXB1dGVkSXRlbVwiXG4gICAgICA6Zm9ybS1zbG90PVwic2xvdHNcIlxuICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgIDpoZWxwZXI9XCJoZWxwZXJcIlxuICAgICAgdi1iaW5kPVwiYXR0cnNcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgeyB1c2VBdHRycywgZGVmaW5lUHJvcHMsIFByb3BUeXBlLCByZWYsIHByb3ZpZGUgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiQGZhc3QtY3J1ZC91aS1pbnRlcmZhY2VcIjtcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcbiAgLyoqXG4gICAqIOWtl+autemFjee9rlxuICAgKi9cbiAgaXRlbToge1xuICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+LFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICB9LFxuICAvKipcbiAgICog5a2X5q6157uE5Lu25o+S5qe9XG4gICAqL1xuICBzbG90czoge1xuICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICB9LFxuICBnZXRDb250ZXh0Rm46IHtcbiAgICB0eXBlOiBGdW5jdGlvbixcbiAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgfSxcbiAgY29sOiB7XG4gICAgdHlwZTogT2JqZWN0LFxuICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH0sXG4gIGhlbHBlcjoge1xuICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gIH1cbn0pO1xuY29uc3QgeyBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XG5cbmNvbnN0IGNvbXB1dGVkSXRlbSA9IGRvQ29tcHV0ZWQoXG4gICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMuaXRlbTtcbiAgfSxcbiAgKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5nZXRDb250ZXh0Rm4oKTtcbiAgfVxuKTtcblxuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcblxuY29uc3QgYXR0cnMgPSB1c2VBdHRycygpO1xuY29uc3QgZm9ybUl0ZW1SZWYgPSByZWYoKTtcbmZ1bmN0aW9uIGdldEZvcm1JdGVtUmVmKCkge1xuICByZXR1cm4gZm9ybUl0ZW1SZWYudmFsdWU7XG59XG5cbmRlZmluZUV4cG9zZSh7XG4gIGdldEZvcm1JdGVtUmVmXG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtLWl0ZW0tY29sIHtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhlbHBlclwiPlxuICAgIDxwcmUgdi1pZj1cInR5cGVvZiBoZWxwZXIgPT09ICdzdHJpbmcnXCI+e3sgaGVscGVyIH19PC9wcmU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cImhlbHBlci5yZW5kZXJcIj5cbiAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaGVscGVyLnJlbmRlclwiIDpzY29wZT1cInNjb3BlXCIgLz5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxwcmUgdi1lbHNlLWlmPVwiaGVscGVyLnRleHRcIj57eyBoZWxwZXIudGV4dCB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG4vKipcbiAqIOihqOWNleWtl+auteW4ruWKqeivtOaYjue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRm9ybUhlbHBlclwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOW4ruWKqeivtOaYjiwgdGV4dDog6K+05piO5paH5a2XLCByZW5kZXI6IGZ1bmN0aW9uKHNjb3BlKSDoh6rlrprkuYnmuLLmn5NcbiAgICAgKi9cbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IFtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRleHQ6IOivtOaYjuaWh+WtlyxcbiAgICAgICAgICogcmVuZGVyOiBmdW5jdGlvbiAsIOiHquWumuS5iXJlbmRlclxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICog6K+05piO5paH5pysXG4gICAgICAgICAqL1xuICAgICAgICBTdHJpbmdcbiAgICAgIF1cbiAgICB9LFxuICAgIHNjb3BlOiB7fVxuICB9LFxuICBzZXR1cChwcm9wcykge1xuICAgIC8vIHV0aWxzLnRyYWNlKFwiZnMtZm9ybS1pdGVtXCIpO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtZm9ybS1oZWxwZXIge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbWFyZ2luLXRvcDogNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG5cbiAgZm9udC1zaXplOiAxMnB4O1xuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oZWxwZXJcIj5cbiAgICA8cHJlIHYtaWY9XCJ0eXBlb2YgaGVscGVyID09PSAnc3RyaW5nJ1wiPnt7IGhlbHBlciB9fTwvcHJlPlxuICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJoZWxwZXIucmVuZGVyXCI+XG4gICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cImhlbHBlci5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZVwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8cHJlIHYtZWxzZS1pZj1cImhlbHBlci50ZXh0XCI+e3sgaGVscGVyLnRleHQgfX08L3ByZT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiDooajljZXlrZfmrrXluK7liqnor7TmmI7nu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0Zvcm1IZWxwZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDluK7liqnor7TmmI4sIHRleHQ6IOivtOaYjuaWh+WtlywgcmVuZGVyOiBmdW5jdGlvbihzY29wZSkg6Ieq5a6a5LmJ5riy5p+TXG4gICAgICovXG4gICAgaGVscGVyOiB7XG4gICAgICB0eXBlOiBbXG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0ZXh0OiDor7TmmI7mloflrZcsXG4gICAgICAgICAqIHJlbmRlcjogZnVuY3Rpb24gLCDoh6rlrprkuYlyZW5kZXJcbiAgICAgICAgICovXG4gICAgICAgIE9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOivtOaYjuaWh+acrFxuICAgICAgICAgKi9cbiAgICAgICAgU3RyaW5nXG4gICAgICBdXG4gICAgfSxcbiAgICBzY29wZToge31cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICAvLyB1dGlscy50cmFjZShcImZzLWZvcm0taXRlbVwiKTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWZvcm0taGVscGVyIHtcbiAgY29sb3I6ICM3ZTdlN2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIG1hcmdpbi10b3A6IDRweDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4O1xuXG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcHJlIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNGb3JtUHJvdmlkZXJcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPHNsb3Q+PC9zbG90PlxuICA8ZnMtZm9ybS13cmFwcGVyIHYtZm9yPVwiaXRlbSBvZiBmb3JtV3JhcHBlckxpc3RcIiA6a2V5PVwiaXRlbS5pZFwiIHYtYmluZD1cIml0ZW1cIiAvPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHByb3ZpZGUsIFJlZiwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IEZzRm9ybVdyYXBwZXIgZnJvbSBcIi4vZnMtZm9ybS13cmFwcGVyLmpzXCI7XG5pbXBvcnQgeyBPcGVuRGlhbG9nUHJvcHMgfSBmcm9tIFwiLi4vLi4vZFwiO1xuXG47XG5cbmNvbnN0IGZvcm1XcmFwcGVyTGlzdDogUmVmID0gcmVmKHt9KTtcblxuZnVuY3Rpb24gZ2V0TWF4WkluZGV4KCk6IG51bWJlciB7XG4gIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpO1xuICBsZXQgbWF4WmluZGV4ID0gMTA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbWF4WmluZGV4ID0gTWF0aC5tYXgobWF4WmluZGV4LCBlbGVtZW50c1tpXS5zdHlsZS56SW5kZXggfHwgMCk7XG4gIH1cbiAgcmV0dXJuIG1heFppbmRleDtcbn1cblxuY29uc3QgZm9ybVdyYXBwZXJDb250ZXh0ID0gcmVmKHt9KTtcbnByb3ZpZGUoXCJnZXQ6Zm9ybTp3cmFwcGVyOmNvbnRleHRcIiwgKGtleSkgPT4ge1xuICByZXR1cm4gZm9ybVdyYXBwZXJDb250ZXh0LnZhbHVlW2tleV07XG59KTtcblxucHJvdmlkZShcInVzZTpmb3JtOndyYXBwZXJcIiwgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHNldENvbnRleHQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgIGZvcm1XcmFwcGVyQ29udGV4dC52YWx1ZVtrZXldID0gdmFsdWU7XG4gICAgfSxcbiAgICBvcGVuKG9wdHM6IE9wZW5EaWFsb2dQcm9wcykge1xuICAgICAgY29uc3QgaWQgPSBvcHRzLmlkIHx8IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApICsgXCJcIjtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGZvcm1XcmFwcGVyTGlzdC52YWx1ZVtpZF0gPSB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgLy8gekluZGV4OiBnZXRNYXhaSW5kZXgoKSArIDEsXG4gICAgICAgICAgYXN5bmMgb25Nb3VudGVkKGluc3RhbmNlOiBhbnkpIHtcbiAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLm9wZW4ob3B0cyk7XG4gICAgICAgICAgICByZXNvbHZlKGluc3RhbmNlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2xvc2VkKCkge1xuICAgICAgICAgICAgaWYgKCFvcHRzLmlkKSB7XG4gICAgICAgICAgICAgIC8v5aaC5p6c5LiN5piv5Zu65a6aaWTvvIzliJnlhbPpl63lkI7plIDmr4FcbiAgICAgICAgICAgICAgZGVsZXRlIGZvcm1XcmFwcGVyTGlzdC52YWx1ZVtpZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cImNvbnRhaW5lcj8uaXMgfHwgJ2ZzLWxheW91dC1kZWZhdWx0J1wiXG4gICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICBjbGFzcz1cImZzLWNydWQtY29udGFpbmVyXCJcbiAgICB2LWJpbmQ9XCJjb250YWluZXJcIlxuICAgIDpjbGFzcz1cImNvbXB1dGVkQ2xhc3NcIlxuICA+XG4gICAgPHNsb3Q+PC9zbG90PlxuXG4gICAgPHRlbXBsYXRlICNoZWFkZXItdG9wPlxuICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci10b3BcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2hlYWRlci1ib3R0b20+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLW1pZGRsZT5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3NlYXJjaD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLXNlYXJjaFwiPlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInNlYXJjaC5pcyB8fCAnZnMtc2VhcmNoJ1wiIHJlZj1cInNlYXJjaFJlZlwiIHYtYmluZD1cInNlYXJjaFwiIDpzbG90cz1cImNvbXB1dGVkU2VhcmNoU2xvdHNcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjYWN0aW9uYmFyPlxuICAgICAgPGRpdiB2LWlmPVwiYWN0aW9uYmFyICYmIGFjdGlvbmJhci5zaG93ICE9PSBmYWxzZVwiIGNsYXNzPVwiZnMtY3J1ZC1hY3Rpb25iYXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhci1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8ZnMtYWN0aW9uYmFyIHYtYmluZD1cImFjdGlvbmJhclwiIC8+XG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXItcmlnaHRcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICN0b29sYmFyPlxuICAgICAgPGRpdiB2LWlmPVwidG9vbGJhciAmJiB0b29sYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLXRvb2xiYXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXItbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgPGZzLXRvb2xiYXIgcmVmPVwidG9vbGJhclJlZlwiIHYtYmluZD1cInRvb2xiYXJcIiA6c2xvdHM9XCJjb21wdXRlZFRvb2xiYXJTbG90c1wiIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiIC8+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyLXJpZ2h0XCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI3RhYnM+XG4gICAgICA8ZnMtdGFicy1maWx0ZXIgdi1pZj1cInRhYnNCaW5kaW5nLnNob3dcIiByZWY9XCJ0YWJzUmVmXCIgY2xhc3M9XCJmcy10YWJzXCIgdi1iaW5kPVwidGFic0JpbmRpbmdcIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICN0YWJsZT5cbiAgICAgIDxmcy10YWJsZVxuICAgICAgICByZWY9XCJ0YWJsZVJlZlwiXG4gICAgICAgIGNsYXNzPVwiZnMtY3J1ZC10YWJsZVwiXG4gICAgICAgIHYtYmluZD1cImNvbXB1dGVkVGFibGVcIlxuICAgICAgICA6Y29sdW1ucz1cInRhYmxlLmNvbHVtbnNcIlxuICAgICAgICA6bG9hZGluZz1cInRhYmxlLmxvYWRpbmdcIlxuICAgICAgICA6cm93LWhhbmRsZT1cInJvd0hhbmRsZVwiXG4gICAgICAgIDpkYXRhPVwiZGF0YVwiXG4gICAgICAgIDpjZWxsLXNsb3RzPVwiY29tcHV0ZWRDZWxsU2xvdHNcIlxuICAgICAgLz5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNmb3JtPlxuICAgICAgPGRpdiByZWY9XCJpbm5lcldyYXBwZXJSZWZcIiBjbGFzcz1cImZzLWZvcm0td3JhcHBlci1jb250YWluZXJcIiA6Y2xhc3M9XCJ7ICdmcy1mb3JtLWlubmVyLXdyYXBwZXInOiBpc0Zvcm1Jbm5lciB9XCI+XG4gICAgICAgIDxmcy1mb3JtLXdyYXBwZXJcbiAgICAgICAgICByZWY9XCJmb3JtV3JhcHBlclJlZlwiXG4gICAgICAgICAgOnNsb3RzPVwiY29tcHV0ZWRGb3JtU2xvdHNcIlxuICAgICAgICAgIDppbm5lci13cmFwcGVyPVwiaW5uZXJXcmFwcGVyUmVmXCJcbiAgICAgICAgICBAaW5uZXItY2hhbmdlPVwib25Gb3JtSW5uZXJDaGFuZ2VcIlxuICAgICAgICAgIEB2YWx1ZS1jaGFuZ2U9XCIkZW1pdCgnZm9ybS12YWx1ZS1jaGFuZ2UnLCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPCEtLSDnvJbovpHlr7nor53moYYgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNwYWdpbmF0aW9uPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtcGFnaW5hdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnaW5hdGlvbi1sZWZ0XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb24tbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgPCEtLSBwYWdpbmF0aW9uLmN1cnJlbnRQYWdlIOWmguaenOS4uuepuu+8jCBlbGVtZW505Lya5Ye66K2m5ZGKIC0tPlxuICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucGFnaW5hdGlvbi5uYW1lXCIgdi1pZj1cInBhZ2luYXRpb24uc2hvdyAhPT0gZmFsc2VcIiB2LWJpbmQ9XCJwYWdpbmF0aW9uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uLXJpZ2h0XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb24tcmlnaHRcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjZm9vdGVyLXRvcD5cbiAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItdG9wXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNmb290ZXItYm90dG9tPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIFByb3BUeXBlLCBwcm92aWRlLCByZWYsIFNldHVwQ29udGV4dCwgdG9SZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdWlDb250ZXh0IH0gZnJvbSBcIi4uL3VpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi91c2UvdXNlLW1lcmdlXCI7XG5pbXBvcnQgdXRpbExvZyBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uL3V0aWxzL3V0aWwubG9nXCI7XG5pbXBvcnQgeyBSb3dTZWxlY3Rpb25Qcm9wcywgU2V0U2VhcmNoRm9ybURhdGFQcm9wcyB9IGZyb20gXCIuLi9kXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi91c2VcIjtcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8vIHV0aWxzLnRyYWNlKFwiZnMtdGFibGVcIik7XG5jb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuXG5mdW5jdGlvbiB1c2VQcm92aWRlcnMocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgcHJvdmlkZShcImdldDpjb2x1bW5zXCIsICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMudGFibGUuY29sdW1ucztcbiAgfSk7XG4gIHByb3ZpZGUoXCJ1cGRhdGU6Y29sdW1uc1wiLCAoY29sdW1uczogYW55KSA9PiB7XG4gICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sdW1uc1wiLCBjb2x1bW5zKTtcbiAgfSk7XG5cbiAgcHJvdmlkZShcImdldDpjcnVkQmluZGluZ1wiLCAoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlU2VhcmNoKHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XG4gIGNvbnN0IHNlYXJjaFJlZiA9IHJlZigpO1xuICBjb25zdCBnZXRTZWFyY2hSZWYgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZTtcbiAgfTtcblxuICBjb25zdCBnZXRTZWFyY2hGb3JtRGF0YSA9ICgpID0+IHtcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XG4gICAgICByZXR1cm4gc2VhcmNoUmVmLnZhbHVlLmdldEZvcm0oKTtcbiAgICB9XG4gICAgbG9nZ2VyLndhcm4oXCLor7fkvb/nlKhleHBvc2UuZ2V0U2VhcmNoRm9ybURhdGHku6Pmm79cIik7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuXG4gIGNvbnN0IGdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRhID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0VmFsaWRhdGVkRm9ybSgpO1xuICAgIH1cbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YeS7o+abv1wiKTtcbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgLyoqXG4gICAqIOiuvue9rmZvcm3lgLxcbiAgICogQHBhcmFtIGZvcm0gZm9ybeWvueixoVxuICAgKiBAcGFyYW0gb3B0cyA9IHtcbiAgICogICAgaXNNZXJnZTpmYWxzZSDmmK/lkKbkuI7ljp/mnIlmb3Jt5YC85ZCI5bm2LFxuICAgKiB9XG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZWFyY2hGb3JtRGF0YSh7IGZvcm0sIG1lcmdlRm9ybSA9IGZhbHNlIH06IFNldFNlYXJjaEZvcm1EYXRhUHJvcHMpIHtcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XG4gICAgICBzZWFyY2hSZWYudmFsdWUuc2V0Rm9ybShmb3JtLCBtZXJnZUZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2VhcmNoUmVmLFxuICAgIGdldFNlYXJjaFJlZixcbiAgICBnZXRTZWFyY2hGb3JtRGF0YSxcbiAgICBzZXRTZWFyY2hGb3JtRGF0YSxcbiAgICBnZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUYWJzKHNlYXJjaFJldDogYW55LCBwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBjb25zdCB0YWJzQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudGFicyAmJiBwcm9wcy50YWJzLnNob3cgJiYgcHJvcHMudGFicy5uYW1lKSB7XG4gICAgICBsZXQgZGljdCA9IG51bGw7XG4gICAgICBjb25zdCBkZWZhdWx0VGFicyA9IHsgLi4ucHJvcHMudGFicyB9O1xuICAgICAgaWYgKHByb3BzLnNlYXJjaD8uY29sdW1ucyAmJiBwcm9wcy5zZWFyY2g/LmNvbHVtbnNbcHJvcHMudGFicy5uYW1lXT8uY29tcG9uZW50Py5kaWN0KSB7XG4gICAgICAgIGRpY3QgPSBwcm9wcy5zZWFyY2g/LmNvbHVtbnNbcHJvcHMudGFicy5uYW1lXT8uY29tcG9uZW50Py5kaWN0O1xuICAgICAgICBpZiAoZGVmYXVsdFRhYnMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIGRlZmF1bHRUYWJzLnZhbHVlID0gZGljdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMubGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGRlZmF1bHRUYWJzLmxhYmVsID0gZGljdC5sYWJlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMub3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMub3B0aW9ucyA9IGRpY3QuZGF0YSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWZhdWx0VGFicyxcbiAgICAgICAgbW9kZWxWYWx1ZTogcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm0gJiYgcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm1bcHJvcHMudGFicy5uYW1lXSxcbiAgICAgICAgXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgY3R4LmVtaXQoXCJ0YWItY2hhbmdlXCIsIHsgW3Byb3BzLnRhYnMubmFtZV06IHZhbHVlIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2hvdzogZmFsc2VcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0YWJzQmluZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBzbG90RmlsdGVyKGN0eFNsb3RzOiBhbnksIGtleVByZWZpeDogc3RyaW5nKSB7XG4gIGlmICghY3R4U2xvdHMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3Qgc2xvdHM6IGFueSA9IHt9O1xuICBmb3JFYWNoKGN0eFNsb3RzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChrZXlQcmVmaXgpKSB7XG4gICAgICBzbG90c1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNsb3RzO1xufVxuXG5mdW5jdGlvbiB1c2VGaXhlZEhlaWdodChwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH06IGFueSkge1xuICBjb25zdCB1aSA9IHVpQ29udGV4dC5nZXQoKTtcbiAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcbiAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xuICAgIHRhYmxlQ0kgPSB1aS50YWJsZVYyO1xuICB9XG4gIGlmICh0YWJsZUNJLmhhc01heEhlaWdodChwcm9wcy50YWJsZSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgaWYgKCF0YWJsZUNJLmZpeGVkSGVhZGVyTmVlZENvbXB1dGVCb2R5SGVpZ2h0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IG1heEhlaWdodFJlZiA9IHJlZihudWxsKTtcblxuICBmdW5jdGlvbiBjb21wdXRlQm9keUhlaWdodCgpIHtcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xuICAgIGlmICh0YWJsZURvbSA9PSBudWxsIHx8IHRhYmxlRG9tLnF1ZXJ5U2VsZWN0b3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoZWFkRG9tID0gdGFibGVEb20ucXVlcnlTZWxlY3Rvcih0YWJsZUNJLmhlYWRlckRvbVNlbGVjdG9yKTtcbiAgICBpZiAoaGVhZERvbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGFibGVEb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIGNvbnN0IGhlYWRIZWlnaHQgPSBoZWFkRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBtYXhIZWlnaHRSZWYudmFsdWUgPSB0YWJsZUhlaWdodCAtIGhlYWRIZWlnaHQgLSAyICsgKHByb3BzLnRhYmxlLm1heEhlaWdodEFkanVzdCB8fCAwKTtcblxuICAgIHV0aWxMb2cuZGVidWcoXCJ0YWJsZSBtYXggaGVpZ2h0IHJlY29tcHV0ZWQgXCIsIG1heEhlaWdodFJlZi52YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiB3YXRjaEJvZHlIZWlnaHRDaGFuZ2UoKSB7XG4gICAgY29uc3QgdGFibGVEb20gPSB0YWJsZVJlZj8udmFsdWU/LiRlbDtcbiAgICBpZiAodGFibGVEb20gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZVdyYXBwZXJEb20gPSB0YWJsZURvbS5wYXJlbnROb2RlO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgIHV0aWxMb2cuZGVidWcoXCJ0YWJsZSByZXNpemVkXCIsIGVudHJpZXMpO1xuICAgICAgLy8g5q+P5qyh6KKr6KeC5rWL55qE5YWD57Sg5bC65a+45Y+R55Sf5pS55Y+Y6L+Z6YeM6YO95Lya5omn6KGMXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwICYmIGVudHJpZXNbMF0uY29udGVudFJlY3QuaGVpZ2h0ID4gMCkge1xuICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFibGVXcmFwcGVyRG9tKTsgLy8g6KeC5rWLRE9N5YWD57SgXG4gIH1cblxuICBvbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICB3YXRjaEJvZHlIZWlnaHRDaGFuZ2UoKTtcbiAgfSk7XG4gIHJldHVybiB7IG1heEhlaWdodFJlZiwgY29tcHV0ZUJvZHlIZWlnaHQgfTtcbn1cblxuZnVuY3Rpb24gdXNlVGFibGUocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgY29uc3QgdWkgPSB1aUNvbnRleHQuZ2V0KCk7XG4gIGNvbnN0IHRhYmxlUmVmID0gcmVmKCk7XG4gIGNvbnN0IHRvb2xiYXJSZWYgPSByZWYoKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmKCk7XG4gIGNvbnN0IHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9ID0gdXNlRml4ZWRIZWlnaHQocHJvcHMsIGN0eCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH0pO1xuICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICBjb25zdCB0YWJsZVByb3BSZWYgPSB0b1JlZihwcm9wcywgXCJ0YWJsZVwiKTtcbiAgY29uc3QgY29tcHV0ZWRUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBhbnRkdiBuYWl2ZSDpq5jluqboh6rpgILlupTvvIwg5aaC5p6c55So5oi35pyJ6YWN572uc2Nyb2xs77yM5YiZ5LyY5YWI5L2/55So55So5oi36YWN572u55qEXG4gICAgbGV0IGZpeGVkSGVpZ2h0ID0ge307XG4gICAgaWYgKG1heEhlaWdodFJlZj8udmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcbiAgICAgIGlmIChwcm9wcy50YWJsZT8udGFibGVWZXJzaW9uID09PSBcInYyXCIpIHtcbiAgICAgICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XG4gICAgICB9XG4gICAgICBmaXhlZEhlaWdodCA9IHRhYmxlQ0kuYnVpbGRNYXhIZWlnaHQobWF4SGVpZ2h0UmVmLnZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgcEF0dHJzID0gdXRpbHMuZGFzaC5vbWl0KHRhYmxlUHJvcFJlZiwgXCJsb2FkaW5nXCIsIFwiY29sdW1uc1wiLCBcImNvbHVtbnNNYXBcIik7XG5cbiAgICByZXR1cm4gbWVyZ2UoZml4ZWRIZWlnaHQsIHsgLi4uY3R4LmF0dHJzLCAuLi5wQXR0cnMgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGNvbXB1dGVkVG9vbGJhciA9IHRvUmVmKHByb3BzLCBcInRvb2xiYXJcIik7XG5cbiAgY29uc3QgY29tcHV0ZWRDZWxsU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcImNlbGxcIik7XG4gIH0pO1xuXG4gIGNvbnN0IGNvbXB1dGVkRm9ybVNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBzbG90RmlsdGVyKGN0eC5zbG90cywgXCJmb3JtXCIpO1xuICB9KTtcbiAgY29uc3QgY29tcHV0ZWRTZWFyY2hTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwic2VhcmNoXCIpO1xuICB9KTtcbiAgY29uc3QgY29tcHV0ZWRUb29sYmFyU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcInRvb2xiYXJcIik7XG4gIH0pO1xuXG4gIGNvbnN0IGZvcm1XcmFwcGVyUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjbGF6ejogYW55ID0geyBjb21wYWN0OiBwcm9wcy50b29sYmFyLmNvbXBhY3QgIT09IGZhbHNlIH07XG4gICAgaWYgKHByb3BzLmN1c3RvbUNsYXNzKSB7XG4gICAgICBjbGF6eltwcm9wcy5jdXN0b21DbGFzc10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY2xheno7XG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyV3JhcHBlclJlZiA9IHJlZigpO1xuXG4gIGNvbnN0IGlzRm9ybUlubmVyID0gcmVmKGZhbHNlKTtcbiAgY29uc3Qgb25Gb3JtSW5uZXJDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgIGlzRm9ybUlubmVyLnZhbHVlID0gdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZVJlZixcbiAgICBjb250YWluZXJSZWYsXG4gICAgdG9vbGJhclJlZixcbiAgICBjb21wdXRlZFRhYmxlLFxuICAgIGNvbXB1dGVkVG9vbGJhcixcbiAgICBjb21wdXRlZENlbGxTbG90cyxcbiAgICBmb3JtV3JhcHBlclJlZixcbiAgICBpc0Zvcm1Jbm5lcixcbiAgICBvbkZvcm1Jbm5lckNoYW5nZSxcbiAgICBjb21wdXRlZEZvcm1TbG90cyxcbiAgICBjb21wdXRlZFNlYXJjaFNsb3RzLFxuICAgIGNvbXB1dGVkVG9vbGJhclNsb3RzLFxuICAgIGNvbXB1dGVCb2R5SGVpZ2h0LFxuICAgIGNvbXB1dGVkQ2xhc3MsXG4gICAgaW5uZXJXcmFwcGVyUmVmXG4gIH07XG59XG5cbi8qKlxuICogZnMtY3J1ZFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzQ3J1ZFwiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOihqOagvGlkXG4gICAgICovXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCJcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOagvOmFjee9ru+8jOingUZzVGFibGVcbiAgICAgKi9cbiAgICB0YWJsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5qC85pWw5o2uXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9yZXF1aXJlLWRlZmF1bHQtcHJvcFxuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IEFycmF5XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmk43kvZzliJfphY3nva7vvIzop4FGc1Jvd0hhbmRsZVxuICAgICAqL1xuICAgIHJvd0hhbmRsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5qGG6YWN572u77yM6KeBRnNTZWFyY2hcbiAgICAgKi9cbiAgICBzZWFyY2g6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW3peWFt+adoemFjee9ru+8jOingUZzVG9vbGJhclxuICAgICAqL1xuICAgIHRvb2xiYXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWKqOS9nOadoemFjee9ru+8jOingUZzQWN0aW9uYmFyXG4gICAgICovXG4gICAgYWN0aW9uYmFyOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiB0YWJzIGZpbHRlclxuICAgICAqL1xuICAgIHRhYnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOa3u+WKoOihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICBhZGRGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnvJbovpHooajljZXlr7nor53moYbphY3nva7vvIzop4FGc0Zvcm1XcmFwcGVyXG4gICAgICovXG4gICAgZWRpdEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeeci+ihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICB2aWV3Rm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog57+76aG16YWN572uLOaUr+aMgWVsLXBhZ2luYXRpb258YS1wYWdpbmF0aW9u6YWN572uXG4gICAgICovXG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWuueWZqOmFjee9ru+8jOingUZzQ29udGFpbmVyXG4gICAgICovXG4gICAgY29udGFpbmVyOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNydWTljIXoo7nlrrnlmajnmoRjbGFzc1xuICAgICAqL1xuICAgIGN1c3RvbUNsYXNzOiB7fSxcbiAgICAvKipcbiAgICAgKiDkuI3opoHkvKDliLBmcy10YWJsZeWOu1xuICAgICAqL1xuICAgIGZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog5Y+v6YCJ5oupXG4gICAgICovXG4gICAgc2VsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8Um93U2VsZWN0aW9uUHJvcHM+LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6c2VhcmNoXCIsIFwidXBkYXRlOmNvbXBhY3RcIiwgXCJ1cGRhdGU6Y29sdW1uc1wiLCBcImZvcm0tdmFsdWUtY2hhbmdlXCIsIFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJ0YWItY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgdXNlUHJvdmlkZXJzKHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHNlYXJjaCA9IHVzZVNlYXJjaChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB0YWJzID0gdXNlVGFicyhzZWFyY2gsIHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHRhYmxlID0gdXNlVGFibGUocHJvcHMsIGN0eCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgLi4uc2VhcmNoLFxuICAgICAgLi4udGFibGUsXG4gICAgICAuLi50YWJzXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLy/kvZzkuLrmlbDmja7ooajmoLzkvb/nlKjnmoTpooTorr7moLflvI/vvIzpmpDol49mb290ZXLvvIzooajmoLzpq5jluqbnoo7orrDlvZXmlbDlop7liqDogIzlop7liqBcbi5mcy1jcnVkLWFzLXRhYmxlIHtcbiAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IHVuc2V0O1xuXG4gIC5mcy1jcnVkLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5ib3ggLmlubmVyIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICB9XG59XG5cbi5mcy1jcnVkLWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuXG4gICYuY29tcGFjdCB7XG4gICAgLmVsLXRhYmxlLS1ib3JkZXIge1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtaGVhZGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmZzLWNydWQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuZnMtaGVhZGVyLXRvcCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1zZWFyY2gge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICB9XG5cbiAgICAuZnMtaGVhZGVyLW1pZGRsZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtaGVhZGVyLWJvdHRvbSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1hY3Rpb25iYXIge1xuICAgICAgLy8gcGFkZGluZy10b3A6IDVweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAxMDAwMDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBtaW4td2lkdGg6IDFweDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC10b29sYmFyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIGZsZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgLmZzLWNydWQtdGFibGUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5mcy1jcnVkLWZvb3RlciB7XG4gICAgcGFkZGluZzogMTBweCAwO1xuXG4gICAgLmZzLWNydWQtcGFnaW5hdGlvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgLmZzLXBhZ2luYXRpb24tbGVmdCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLmZzLXBhZ2luYXRpb24tcmlnaHQge1xuICAgICAgICBmbGV4OiAwO1xuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbiB7XG4gICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgLmFudC1wYWdpbmF0aW9uLW9wdGlvbnMge1xuICAgICAgICAgIC5hbnQtc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5lbC1wYWdpbmF0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1yaWdodCB7XG4gICAgICAgIGZsZXg6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZnMtY3J1ZC1jb250YWluZXIge1xuICAgIC5ib2R5IHtcbiAgICAgIG92ZXJmbG93LXk6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5hbnQtdGFibGUtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uLWRhdGEtdGFibGUtYmFzZS10YWJsZS1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtaGVhZGVyIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICBmbGV4OiB1bnNldCAhaW1wb3J0YW50O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cImNvbnRhaW5lcj8uaXMgfHwgJ2ZzLWxheW91dC1kZWZhdWx0J1wiXG4gICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICBjbGFzcz1cImZzLWNydWQtY29udGFpbmVyXCJcbiAgICB2LWJpbmQ9XCJjb250YWluZXJcIlxuICAgIDpjbGFzcz1cImNvbXB1dGVkQ2xhc3NcIlxuICA+XG4gICAgPHNsb3Q+PC9zbG90PlxuXG4gICAgPHRlbXBsYXRlICNoZWFkZXItdG9wPlxuICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci10b3BcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2hlYWRlci1ib3R0b20+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLW1pZGRsZT5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbWlkZGxlXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3NlYXJjaD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLXNlYXJjaFwiPlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInNlYXJjaC5pcyB8fCAnZnMtc2VhcmNoJ1wiIHJlZj1cInNlYXJjaFJlZlwiIHYtYmluZD1cInNlYXJjaFwiIDpzbG90cz1cImNvbXB1dGVkU2VhcmNoU2xvdHNcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjYWN0aW9uYmFyPlxuICAgICAgPGRpdiB2LWlmPVwiYWN0aW9uYmFyICYmIGFjdGlvbmJhci5zaG93ICE9PSBmYWxzZVwiIGNsYXNzPVwiZnMtY3J1ZC1hY3Rpb25iYXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhci1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8ZnMtYWN0aW9uYmFyIHYtYmluZD1cImFjdGlvbmJhclwiIC8+XG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXItcmlnaHRcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICN0b29sYmFyPlxuICAgICAgPGRpdiB2LWlmPVwidG9vbGJhciAmJiB0b29sYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLXRvb2xiYXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXItbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgPGZzLXRvb2xiYXIgcmVmPVwidG9vbGJhclJlZlwiIHYtYmluZD1cInRvb2xiYXJcIiA6c2xvdHM9XCJjb21wdXRlZFRvb2xiYXJTbG90c1wiIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiIC8+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyLXJpZ2h0XCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI3RhYnM+XG4gICAgICA8ZnMtdGFicy1maWx0ZXIgdi1pZj1cInRhYnNCaW5kaW5nLnNob3dcIiByZWY9XCJ0YWJzUmVmXCIgY2xhc3M9XCJmcy10YWJzXCIgdi1iaW5kPVwidGFic0JpbmRpbmdcIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICN0YWJsZT5cbiAgICAgIDxmcy10YWJsZVxuICAgICAgICByZWY9XCJ0YWJsZVJlZlwiXG4gICAgICAgIGNsYXNzPVwiZnMtY3J1ZC10YWJsZVwiXG4gICAgICAgIHYtYmluZD1cImNvbXB1dGVkVGFibGVcIlxuICAgICAgICA6Y29sdW1ucz1cInRhYmxlLmNvbHVtbnNcIlxuICAgICAgICA6bG9hZGluZz1cInRhYmxlLmxvYWRpbmdcIlxuICAgICAgICA6cm93LWhhbmRsZT1cInJvd0hhbmRsZVwiXG4gICAgICAgIDpkYXRhPVwiZGF0YVwiXG4gICAgICAgIDpjZWxsLXNsb3RzPVwiY29tcHV0ZWRDZWxsU2xvdHNcIlxuICAgICAgLz5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNmb3JtPlxuICAgICAgPGRpdiByZWY9XCJpbm5lcldyYXBwZXJSZWZcIiBjbGFzcz1cImZzLWZvcm0td3JhcHBlci1jb250YWluZXJcIiA6Y2xhc3M9XCJ7ICdmcy1mb3JtLWlubmVyLXdyYXBwZXInOiBpc0Zvcm1Jbm5lciB9XCI+XG4gICAgICAgIDxmcy1mb3JtLXdyYXBwZXJcbiAgICAgICAgICByZWY9XCJmb3JtV3JhcHBlclJlZlwiXG4gICAgICAgICAgOnNsb3RzPVwiY29tcHV0ZWRGb3JtU2xvdHNcIlxuICAgICAgICAgIDppbm5lci13cmFwcGVyPVwiaW5uZXJXcmFwcGVyUmVmXCJcbiAgICAgICAgICBAaW5uZXItY2hhbmdlPVwib25Gb3JtSW5uZXJDaGFuZ2VcIlxuICAgICAgICAgIEB2YWx1ZS1jaGFuZ2U9XCIkZW1pdCgnZm9ybS12YWx1ZS1jaGFuZ2UnLCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPCEtLSDnvJbovpHlr7nor53moYYgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNwYWdpbmF0aW9uPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtcGFnaW5hdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcGFnaW5hdGlvbi1sZWZ0XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb24tbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgPCEtLSBwYWdpbmF0aW9uLmN1cnJlbnRQYWdlIOWmguaenOS4uuepuu+8jCBlbGVtZW505Lya5Ye66K2m5ZGKIC0tPlxuICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucGFnaW5hdGlvbi5uYW1lXCIgdi1pZj1cInBhZ2luYXRpb24uc2hvdyAhPT0gZmFsc2VcIiB2LWJpbmQ9XCJwYWdpbmF0aW9uXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uLXJpZ2h0XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInBhZ2luYXRpb24tcmlnaHRcIj48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjZm9vdGVyLXRvcD5cbiAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItdG9wXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNmb290ZXItYm90dG9tPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIFByb3BUeXBlLCBwcm92aWRlLCByZWYsIFNldHVwQ29udGV4dCwgdG9SZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdWlDb250ZXh0IH0gZnJvbSBcIi4uL3VpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi91c2UvdXNlLW1lcmdlXCI7XG5pbXBvcnQgdXRpbExvZyBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uL3V0aWxzL3V0aWwubG9nXCI7XG5pbXBvcnQgeyBSb3dTZWxlY3Rpb25Qcm9wcywgU2V0U2VhcmNoRm9ybURhdGFQcm9wcyB9IGZyb20gXCIuLi9kXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi91c2VcIjtcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8vIHV0aWxzLnRyYWNlKFwiZnMtdGFibGVcIik7XG5jb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuXG5mdW5jdGlvbiB1c2VQcm92aWRlcnMocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgcHJvdmlkZShcImdldDpjb2x1bW5zXCIsICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMudGFibGUuY29sdW1ucztcbiAgfSk7XG4gIHByb3ZpZGUoXCJ1cGRhdGU6Y29sdW1uc1wiLCAoY29sdW1uczogYW55KSA9PiB7XG4gICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sdW1uc1wiLCBjb2x1bW5zKTtcbiAgfSk7XG5cbiAgcHJvdmlkZShcImdldDpjcnVkQmluZGluZ1wiLCAoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlU2VhcmNoKHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XG4gIGNvbnN0IHNlYXJjaFJlZiA9IHJlZigpO1xuICBjb25zdCBnZXRTZWFyY2hSZWYgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZTtcbiAgfTtcblxuICBjb25zdCBnZXRTZWFyY2hGb3JtRGF0YSA9ICgpID0+IHtcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XG4gICAgICByZXR1cm4gc2VhcmNoUmVmLnZhbHVlLmdldEZvcm0oKTtcbiAgICB9XG4gICAgbG9nZ2VyLndhcm4oXCLor7fkvb/nlKhleHBvc2UuZ2V0U2VhcmNoRm9ybURhdGHku6Pmm79cIik7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuXG4gIGNvbnN0IGdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRhID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0VmFsaWRhdGVkRm9ybSgpO1xuICAgIH1cbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YeS7o+abv1wiKTtcbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgLyoqXG4gICAqIOiuvue9rmZvcm3lgLxcbiAgICogQHBhcmFtIGZvcm0gZm9ybeWvueixoVxuICAgKiBAcGFyYW0gb3B0cyA9IHtcbiAgICogICAgaXNNZXJnZTpmYWxzZSDmmK/lkKbkuI7ljp/mnIlmb3Jt5YC85ZCI5bm2LFxuICAgKiB9XG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZWFyY2hGb3JtRGF0YSh7IGZvcm0sIG1lcmdlRm9ybSA9IGZhbHNlIH06IFNldFNlYXJjaEZvcm1EYXRhUHJvcHMpIHtcbiAgICBpZiAoc2VhcmNoUmVmLnZhbHVlKSB7XG4gICAgICBzZWFyY2hSZWYudmFsdWUuc2V0Rm9ybShmb3JtLCBtZXJnZUZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2VhcmNoUmVmLFxuICAgIGdldFNlYXJjaFJlZixcbiAgICBnZXRTZWFyY2hGb3JtRGF0YSxcbiAgICBzZXRTZWFyY2hGb3JtRGF0YSxcbiAgICBnZXRTZWFyY2hWYWxpZGF0ZWRGb3JtRGF0YVxuICB9O1xufVxuXG5mdW5jdGlvbiB1c2VUYWJzKHNlYXJjaFJldDogYW55LCBwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBjb25zdCB0YWJzQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudGFicyAmJiBwcm9wcy50YWJzLnNob3cgJiYgcHJvcHMudGFicy5uYW1lKSB7XG4gICAgICBsZXQgZGljdCA9IG51bGw7XG4gICAgICBjb25zdCBkZWZhdWx0VGFicyA9IHsgLi4ucHJvcHMudGFicyB9O1xuICAgICAgaWYgKHByb3BzLnNlYXJjaD8uY29sdW1ucyAmJiBwcm9wcy5zZWFyY2g/LmNvbHVtbnNbcHJvcHMudGFicy5uYW1lXT8uY29tcG9uZW50Py5kaWN0KSB7XG4gICAgICAgIGRpY3QgPSBwcm9wcy5zZWFyY2g/LmNvbHVtbnNbcHJvcHMudGFicy5uYW1lXT8uY29tcG9uZW50Py5kaWN0O1xuICAgICAgICBpZiAoZGVmYXVsdFRhYnMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIGRlZmF1bHRUYWJzLnZhbHVlID0gZGljdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMubGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgIGRlZmF1bHRUYWJzLmxhYmVsID0gZGljdC5sYWJlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdFRhYnMub3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMub3B0aW9ucyA9IGRpY3QuZGF0YSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWZhdWx0VGFicyxcbiAgICAgICAgbW9kZWxWYWx1ZTogcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm0gJiYgcHJvcHMuc2VhcmNoLnZhbGlkYXRlZEZvcm1bcHJvcHMudGFicy5uYW1lXSxcbiAgICAgICAgXCJvblVwZGF0ZTptb2RlbFZhbHVlXCI6ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgY3R4LmVtaXQoXCJ0YWItY2hhbmdlXCIsIHsgW3Byb3BzLnRhYnMubmFtZV06IHZhbHVlIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2hvdzogZmFsc2VcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0YWJzQmluZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBzbG90RmlsdGVyKGN0eFNsb3RzOiBhbnksIGtleVByZWZpeDogc3RyaW5nKSB7XG4gIGlmICghY3R4U2xvdHMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3Qgc2xvdHM6IGFueSA9IHt9O1xuICBmb3JFYWNoKGN0eFNsb3RzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChrZXlQcmVmaXgpKSB7XG4gICAgICBzbG90c1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNsb3RzO1xufVxuXG5mdW5jdGlvbiB1c2VGaXhlZEhlaWdodChwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH06IGFueSkge1xuICBjb25zdCB1aSA9IHVpQ29udGV4dC5nZXQoKTtcbiAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcbiAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xuICAgIHRhYmxlQ0kgPSB1aS50YWJsZVYyO1xuICB9XG4gIGlmICh0YWJsZUNJLmhhc01heEhlaWdodChwcm9wcy50YWJsZSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgaWYgKCF0YWJsZUNJLmZpeGVkSGVhZGVyTmVlZENvbXB1dGVCb2R5SGVpZ2h0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IG1heEhlaWdodFJlZiA9IHJlZihudWxsKTtcblxuICBmdW5jdGlvbiBjb21wdXRlQm9keUhlaWdodCgpIHtcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xuICAgIGlmICh0YWJsZURvbSA9PSBudWxsIHx8IHRhYmxlRG9tLnF1ZXJ5U2VsZWN0b3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoZWFkRG9tID0gdGFibGVEb20ucXVlcnlTZWxlY3Rvcih0YWJsZUNJLmhlYWRlckRvbVNlbGVjdG9yKTtcbiAgICBpZiAoaGVhZERvbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGFibGVEb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIGNvbnN0IGhlYWRIZWlnaHQgPSBoZWFkRG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBtYXhIZWlnaHRSZWYudmFsdWUgPSB0YWJsZUhlaWdodCAtIGhlYWRIZWlnaHQgLSAyICsgKHByb3BzLnRhYmxlLm1heEhlaWdodEFkanVzdCB8fCAwKTtcblxuICAgIHV0aWxMb2cuZGVidWcoXCJ0YWJsZSBtYXggaGVpZ2h0IHJlY29tcHV0ZWQgXCIsIG1heEhlaWdodFJlZi52YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiB3YXRjaEJvZHlIZWlnaHRDaGFuZ2UoKSB7XG4gICAgY29uc3QgdGFibGVEb20gPSB0YWJsZVJlZj8udmFsdWU/LiRlbDtcbiAgICBpZiAodGFibGVEb20gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZVdyYXBwZXJEb20gPSB0YWJsZURvbS5wYXJlbnROb2RlO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgIHV0aWxMb2cuZGVidWcoXCJ0YWJsZSByZXNpemVkXCIsIGVudHJpZXMpO1xuICAgICAgLy8g5q+P5qyh6KKr6KeC5rWL55qE5YWD57Sg5bC65a+45Y+R55Sf5pS55Y+Y6L+Z6YeM6YO95Lya5omn6KGMXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwICYmIGVudHJpZXNbMF0uY29udGVudFJlY3QuaGVpZ2h0ID4gMCkge1xuICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb21wdXRlQm9keUhlaWdodCgpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGFibGVXcmFwcGVyRG9tKTsgLy8g6KeC5rWLRE9N5YWD57SgXG4gIH1cblxuICBvbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICB3YXRjaEJvZHlIZWlnaHRDaGFuZ2UoKTtcbiAgfSk7XG4gIHJldHVybiB7IG1heEhlaWdodFJlZiwgY29tcHV0ZUJvZHlIZWlnaHQgfTtcbn1cblxuZnVuY3Rpb24gdXNlVGFibGUocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgY29uc3QgdWkgPSB1aUNvbnRleHQuZ2V0KCk7XG4gIGNvbnN0IHRhYmxlUmVmID0gcmVmKCk7XG4gIGNvbnN0IHRvb2xiYXJSZWYgPSByZWYoKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmKCk7XG4gIGNvbnN0IHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9ID0gdXNlRml4ZWRIZWlnaHQocHJvcHMsIGN0eCwgeyB0YWJsZVJlZiwgY29udGFpbmVyUmVmIH0pO1xuICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICBjb25zdCB0YWJsZVByb3BSZWYgPSB0b1JlZihwcm9wcywgXCJ0YWJsZVwiKTtcbiAgY29uc3QgY29tcHV0ZWRUYWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyBhbnRkdiBuYWl2ZSDpq5jluqboh6rpgILlupTvvIwg5aaC5p6c55So5oi35pyJ6YWN572uc2Nyb2xs77yM5YiZ5LyY5YWI5L2/55So55So5oi36YWN572u55qEXG4gICAgbGV0IGZpeGVkSGVpZ2h0ID0ge307XG4gICAgaWYgKG1heEhlaWdodFJlZj8udmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcbiAgICAgIGlmIChwcm9wcy50YWJsZT8udGFibGVWZXJzaW9uID09PSBcInYyXCIpIHtcbiAgICAgICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XG4gICAgICB9XG4gICAgICBmaXhlZEhlaWdodCA9IHRhYmxlQ0kuYnVpbGRNYXhIZWlnaHQobWF4SGVpZ2h0UmVmLnZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgcEF0dHJzID0gdXRpbHMuZGFzaC5vbWl0KHRhYmxlUHJvcFJlZiwgXCJsb2FkaW5nXCIsIFwiY29sdW1uc1wiLCBcImNvbHVtbnNNYXBcIik7XG5cbiAgICByZXR1cm4gbWVyZ2UoZml4ZWRIZWlnaHQsIHsgLi4uY3R4LmF0dHJzLCAuLi5wQXR0cnMgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGNvbXB1dGVkVG9vbGJhciA9IHRvUmVmKHByb3BzLCBcInRvb2xiYXJcIik7XG5cbiAgY29uc3QgY29tcHV0ZWRDZWxsU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcImNlbGxcIik7XG4gIH0pO1xuXG4gIGNvbnN0IGNvbXB1dGVkRm9ybVNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBzbG90RmlsdGVyKGN0eC5zbG90cywgXCJmb3JtXCIpO1xuICB9KTtcbiAgY29uc3QgY29tcHV0ZWRTZWFyY2hTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwic2VhcmNoXCIpO1xuICB9KTtcbiAgY29uc3QgY29tcHV0ZWRUb29sYmFyU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcInRvb2xiYXJcIik7XG4gIH0pO1xuXG4gIGNvbnN0IGZvcm1XcmFwcGVyUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjbGF6ejogYW55ID0geyBjb21wYWN0OiBwcm9wcy50b29sYmFyLmNvbXBhY3QgIT09IGZhbHNlIH07XG4gICAgaWYgKHByb3BzLmN1c3RvbUNsYXNzKSB7XG4gICAgICBjbGF6eltwcm9wcy5jdXN0b21DbGFzc10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY2xheno7XG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyV3JhcHBlclJlZiA9IHJlZigpO1xuXG4gIGNvbnN0IGlzRm9ybUlubmVyID0gcmVmKGZhbHNlKTtcbiAgY29uc3Qgb25Gb3JtSW5uZXJDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgIGlzRm9ybUlubmVyLnZhbHVlID0gdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZVJlZixcbiAgICBjb250YWluZXJSZWYsXG4gICAgdG9vbGJhclJlZixcbiAgICBjb21wdXRlZFRhYmxlLFxuICAgIGNvbXB1dGVkVG9vbGJhcixcbiAgICBjb21wdXRlZENlbGxTbG90cyxcbiAgICBmb3JtV3JhcHBlclJlZixcbiAgICBpc0Zvcm1Jbm5lcixcbiAgICBvbkZvcm1Jbm5lckNoYW5nZSxcbiAgICBjb21wdXRlZEZvcm1TbG90cyxcbiAgICBjb21wdXRlZFNlYXJjaFNsb3RzLFxuICAgIGNvbXB1dGVkVG9vbGJhclNsb3RzLFxuICAgIGNvbXB1dGVCb2R5SGVpZ2h0LFxuICAgIGNvbXB1dGVkQ2xhc3MsXG4gICAgaW5uZXJXcmFwcGVyUmVmXG4gIH07XG59XG5cbi8qKlxuICogZnMtY3J1ZFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzQ3J1ZFwiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOihqOagvGlkXG4gICAgICovXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCJcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOagvOmFjee9ru+8jOingUZzVGFibGVcbiAgICAgKi9cbiAgICB0YWJsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5qC85pWw5o2uXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9yZXF1aXJlLWRlZmF1bHQtcHJvcFxuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IEFycmF5XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmk43kvZzliJfphY3nva7vvIzop4FGc1Jvd0hhbmRsZVxuICAgICAqL1xuICAgIHJvd0hhbmRsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5qGG6YWN572u77yM6KeBRnNTZWFyY2hcbiAgICAgKi9cbiAgICBzZWFyY2g6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW3peWFt+adoemFjee9ru+8jOingUZzVG9vbGJhclxuICAgICAqL1xuICAgIHRvb2xiYXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWKqOS9nOadoemFjee9ru+8jOingUZzQWN0aW9uYmFyXG4gICAgICovXG4gICAgYWN0aW9uYmFyOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiB0YWJzIGZpbHRlclxuICAgICAqL1xuICAgIHRhYnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOa3u+WKoOihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICBhZGRGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnvJbovpHooajljZXlr7nor53moYbphY3nva7vvIzop4FGc0Zvcm1XcmFwcGVyXG4gICAgICovXG4gICAgZWRpdEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeeci+ihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICB2aWV3Rm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog57+76aG16YWN572uLOaUr+aMgWVsLXBhZ2luYXRpb258YS1wYWdpbmF0aW9u6YWN572uXG4gICAgICovXG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWuueWZqOmFjee9ru+8jOingUZzQ29udGFpbmVyXG4gICAgICovXG4gICAgY29udGFpbmVyOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNydWTljIXoo7nlrrnlmajnmoRjbGFzc1xuICAgICAqL1xuICAgIGN1c3RvbUNsYXNzOiB7fSxcbiAgICAvKipcbiAgICAgKiDkuI3opoHkvKDliLBmcy10YWJsZeWOu1xuICAgICAqL1xuICAgIGZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog5Y+v6YCJ5oupXG4gICAgICovXG4gICAgc2VsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8Um93U2VsZWN0aW9uUHJvcHM+LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc2hvdzogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6c2VhcmNoXCIsIFwidXBkYXRlOmNvbXBhY3RcIiwgXCJ1cGRhdGU6Y29sdW1uc1wiLCBcImZvcm0tdmFsdWUtY2hhbmdlXCIsIFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJ0YWItY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgdXNlUHJvdmlkZXJzKHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHNlYXJjaCA9IHVzZVNlYXJjaChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB0YWJzID0gdXNlVGFicyhzZWFyY2gsIHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHRhYmxlID0gdXNlVGFibGUocHJvcHMsIGN0eCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgLi4uc2VhcmNoLFxuICAgICAgLi4udGFibGUsXG4gICAgICAuLi50YWJzXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLy/kvZzkuLrmlbDmja7ooajmoLzkvb/nlKjnmoTpooTorr7moLflvI/vvIzpmpDol49mb290ZXLvvIzooajmoLzpq5jluqbnoo7orrDlvZXmlbDlop7liqDogIzlop7liqBcbi5mcy1jcnVkLWFzLXRhYmxlIHtcbiAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IHVuc2V0O1xuXG4gIC5mcy1jcnVkLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5ib3ggLmlubmVyIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICB9XG59XG5cbi5mcy1jcnVkLWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuXG4gICYuY29tcGFjdCB7XG4gICAgLmVsLXRhYmxlLS1ib3JkZXIge1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtaGVhZGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmZzLWNydWQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuZnMtaGVhZGVyLXRvcCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1zZWFyY2gge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICB9XG5cbiAgICAuZnMtaGVhZGVyLW1pZGRsZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtaGVhZGVyLWJvdHRvbSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1hY3Rpb25iYXIge1xuICAgICAgLy8gcGFkZGluZy10b3A6IDVweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAxMDAwMDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBtaW4td2lkdGg6IDFweDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC10b29sYmFyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIGZsZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgLmZzLWNydWQtdGFibGUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5mcy1jcnVkLWZvb3RlciB7XG4gICAgcGFkZGluZzogMTBweCAwO1xuXG4gICAgLmZzLWNydWQtcGFnaW5hdGlvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgLmZzLXBhZ2luYXRpb24tbGVmdCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLmZzLXBhZ2luYXRpb24tcmlnaHQge1xuICAgICAgICBmbGV4OiAwO1xuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbiB7XG4gICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgLmFudC1wYWdpbmF0aW9uLW9wdGlvbnMge1xuICAgICAgICAgIC5hbnQtc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5lbC1wYWdpbmF0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1yaWdodCB7XG4gICAgICAgIGZsZXg6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZnMtY3J1ZC1jb250YWluZXIge1xuICAgIC5ib2R5IHtcbiAgICAgIG92ZXJmbG93LXk6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5hbnQtdGFibGUtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uLWRhdGEtdGFibGUtYmFzZS10YWJsZS1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZzLWNydWQtaGVhZGVyIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICBmbGV4OiB1bnNldCAhaW1wb3J0YW50O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXJvdy1oYW5kbGVcIj5cbiAgICA8c2xvdCBuYW1lPVwiY2VsbC1yb3dIYW5kbGUtbGVmdFwiIHYtYmluZD1cInNjb3BlUmVmXCI+PC9zbG90PlxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRIYW5kbGVCdG5zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2UgJiYgIWlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpXCI+XG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cIml0ZW0ucmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiaXRlbS5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZVJlZlwiIC8+XG4gICAgICAgIDxmcy1idXR0b24gdi1lbHNlIGNsYXNzPVwicm93LWhhbmRsZS1idG5cIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrLnN0b3A9XCJkb0NsaWNrKGl0ZW0sICRldmVudClcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1taWRkbGVcIiB2LWJpbmQ9XCJzY29wZVwiPjwvc2xvdD5cbiAgICA8IS0tIOS4i+aLieaMiemSruiPnOWNlSAtLT5cbiAgICA8c3BhbiB2LWlmPVwiaGFzRHJvcGRvd25CdG5cIiBjbGFzcz1cInJvdy1oYW5kbGUtYnRuIGZzLWhhbmRsZS1yb3ctZHJvcGRvd25cIj5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZHJvcGRvd24ubmFtZVwiIHYtYmluZD1cImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXCI+XG4gICAgICAgIDxmcy1idXR0b24gdi1iaW5kPVwiZHJvcGRvd24ubW9yZVwiIC8+XG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLmRyb3Bkb3duLnNsb3ROYW1lXT5cbiAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICA6aXM9XCJ1aS5kcm9wZG93bk1lbnUubmFtZVwiXG4gICAgICAgICAgICB2LWlmPVwidWkuZHJvcGRvd24ucmVuZGVyTW9kZSA9PT0gJ3Nsb3QnXCJcbiAgICAgICAgICAgIHYtYmluZD1cInVpLmRyb3Bkb3duTWVudS5jb21tYW5kKGRvRHJvcGRvd25JdGVtQ2xpY2spXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkSGFuZGxlQnRuc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICAgICAgOmlzPVwidWkuZHJvcGRvd25JdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlICYmIGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA6W3VpLmRyb3Bkb3duSXRlbS5jb21tYW5kXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJpdGVtLmRyb3Bkb3duSXRlbVwiXG4gICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcm93LWhhbmRsZS1kcm9wZG93bi1pdGVtXCIgdi1iaW5kPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gdi1pZj1cIml0ZW0uaWNvblwiIDppY29uPVwiaXRlbS5pY29uXCIgLz4ge3sgaXRlbS50ZXh0IHx8IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9zcGFuPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1yaWdodFwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2gsIHNvcnRCeSwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgU2NvcGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuXG4vKipcbiAqIOaTjeS9nOWIl+mFjee9rlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzUm93SGFuZGxlXCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5oyJ6ZKu5oqY5Y+g6YWN572uXG4gICAgICovXG4gICAgZHJvcGRvd246IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uXG4gICAgICoge1xuICAgICAqICAgdmlldzp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6MX0sXG4gICAgICogICBlZGl0OnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjoyfSxcbiAgICAgKiAgIHJlbW92ZTp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6M30sXG4gICAgICogICAuLi7oh6rlrprkuYlcbiAgICAgKiB9XG4gICAgICovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7liIbnu4Qs5LiK6Z2i55qEYnV0dG9uc+S4uum7mOiupOWIhue7hFxuICAgICAqICB7XG4gICAgICogICAgZ3JvdXBLZXk6e2J1dHRvbktleTp7fSxidXR0b25LZXkyOnt9fVxuICAgICAqICB9XG4gICAgICovXG4gICAgZ3JvdXA6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2T5YmN5r+A5rS75YiG57uEXG4gICAgICovXG4gICAgYWN0aXZlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcImRlZmF1bHRcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICogc2NvcGVcbiAgICAgKi9cbiAgICBzY29wZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBlbWl0czogW1wiaGFuZGxlXCJdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG5cbiAgICBjb25zdCBzY29wZVJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByb3BzLnNjb3BlLFxuICAgICAgICByb3c6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLnJvd10sXG4gICAgICAgIGluZGV4OiBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF1cbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgZG9DbGljayA9IChpdGVtOiBhbnksICRldmVudD86IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF07XG4gICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xuICAgICAgY29uc3QgZTogU2NvcGVDb250ZXh0ID0geyBrZXk6IGl0ZW0ua2V5LCByb3csIGJ0bjogaXRlbSwgaW5kZXgsIC4uLnByb3BzLnNjb3BlLCBsb2FkaW5nUmVmOiAkZXZlbnQ/LmxvYWRpbmdSZWYgfTtcbiAgICAgIGlmIChpdGVtLmNsaWNrKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmNsaWNrKGUpO1xuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJoYW5kbGVcIiwgZSk7XG4gICAgfTtcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcbiAgICBjb25zdCBwaWNrZWRQcm9wcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRyb3Bkb3duOiBwcm9wcy5kcm9wZG93bixcbiAgICAgICAgYnV0dG9uczogcHJvcHMuYnV0dG9ucyxcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmUsXG4gICAgICAgIGdyb3VwOiBwcm9wcy5ncm91cFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlUHJvcHMgPSBkb0NvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICByZXR1cm4gcGlja2VkUHJvcHMudmFsdWU7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XTtcbiAgICAgICAgY29uc3Qgcm93ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XTtcbiAgICAgICAgcmV0dXJuIHsgLi4ucHJvcHMuc2NvcGUsIGluZGV4LCByb3cgfTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy9jb25zdCBjb21wdXRlUHJvcHMgPSB7IHZhbHVlOiBwcm9wcyB9O1xuICAgIGNvbnN0IGNvbXB1dGVkSGFuZGxlQnRucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGxldCBtZXJnZWRCdG5zID0gbnVsbDtcbiAgICAgIGlmIChjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlID09IG51bGwgfHwgY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZSA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgY29uc3QgZGVmQnRucyA9IHtcbiAgICAgICAgICB2aWV3OiB7XG4gICAgICAgICAgICBrZXk6IFwidmlld1wiLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS52aWV3LnRleHRcIiksXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS52aWV3LnRleHRcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHk6IHtcbiAgICAgICAgICAgIGtleTogXCJjb3B5XCIsXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLmNvcHkudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLmNvcHkudGV4dFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWRpdDoge1xuICAgICAgICAgICAga2V5OiBcImVkaXRcIixcbiAgICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS5lZGl0LnRleHRcIiksXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5lZGl0LnRleHRcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlbW92ZToge1xuICAgICAgICAgICAga2V5OiBcInJlbW92ZVwiLFxuICAgICAgICAgICAgLi4udWkuYnV0dG9uLmNvbG9ycyhcImRhbmdlclwiKSxcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUucmVtb3ZlLnRleHRcIiksXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5yZW1vdmUudGV4dFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbWVyZ2VkQnRucyA9IG1lcmdlKGRlZkJ0bnMsIGNvbXB1dGVQcm9wcy52YWx1ZS5idXR0b25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEJ0bnMgPSBjb21wdXRlUHJvcHMudmFsdWUuZ3JvdXBbY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZV07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ0bnM6IEJ1dHRvblByb3BzW10gPSBbXTtcbiAgICAgIGZvckVhY2gobWVyZ2VkQnRucywgKGl0ZW0sIGtleSkgPT4ge1xuICAgICAgICBpdGVtLmtleSA9IGtleTtcbiAgICAgICAgaWYgKGl0ZW0uc2hvdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnRucy5wdXNoKGl0ZW0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBzb3J0QnkoYnRucywgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWREcm9wZG93bkF0TGVhc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93biA9PSBudWxsIHx8XG4gICAgICAgIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0ID09IG51bGwgfHxcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgPD0gMCB8fFxuICAgICAgICBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWUubGVuZ3RoIDw9IGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgfHwgMDtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBpc0Ryb3Bkb3duQnRuKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgaWYgKGl0ZW0uZHJvcGRvd24gPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoY29tcHV0ZWREcm9wZG93bkF0TGVhc3QudmFsdWUgPiAwICYmIGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LnZhbHVlIDwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGhhc0Ryb3Bkb3duQnRuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWUpIHtcbiAgICAgICAgY29uc3QgaXMgPSBpc0Ryb3Bkb3duQnRuKGl0ZW0sIGluZGV4KTtcbiAgICAgICAgaWYgKGlzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGRvRHJvcGRvd25JdGVtQ2xpY2soJGV2ZW50OiBhbnkpIHtcbiAgICAgIGZvciAobGV0IGJ0biBvZiBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWUpIHtcbiAgICAgICAgaWYgKCRldmVudCA9PT0gYnRuLmtleSkge1xuICAgICAgICAgIGRvQ2xpY2soYnRuKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZERyb3Bkb3duQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGJpbmRpbmc6IGFueSA9IHt9O1xuICAgICAgaWYgKHVpLmRyb3Bkb3duLnJlbmRlck1vZGUgIT09IFwic2xvdFwiKSB7XG4gICAgICAgIC8vIG5haXZlIOmAmui/h29wdGlvbnPphY3nva7mnaXmmL7npLrlrZDpoblcbiAgICAgICAgY29uc3QgYnRucyA9IGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3B0czogQnV0dG9uUHJvcHNbXSA9IFtdO1xuICAgICAgICBmb3JFYWNoKGJ0bnMsICh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUuc2hvdyAhPT0gZmFsc2UgJiYgaXNEcm9wZG93bkJ0bih2YWx1ZSwgaW5kZXgpKSB7XG4gICAgICAgICAgICBvcHRzLnB1c2goe1xuICAgICAgICAgICAgICBbdWkuZHJvcGRvd24udmFsdWVdOiB2YWx1ZS5rZXksXG4gICAgICAgICAgICAgIFt1aS5kcm9wZG93bi5sYWJlbF06IHZhbHVlLnRleHQsXG4gICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS50aXRsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYmluZGluZy5vcHRpb25zID0gb3B0cztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9taXQocHJvcHMuZHJvcGRvd24sIFwibW9yZVwiLCBcImF0TGVhc3RcIiksXG4gICAgICAgIC4uLnVpLmRyb3Bkb3duLmNvbW1hbmQoZG9Ecm9wZG93bkl0ZW1DbGljayksXG4gICAgICAgIC4uLmJpbmRpbmdcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBoYXNEcm9wZG93bkJ0bixcbiAgICAgIGNvbXB1dGVkSGFuZGxlQnRucyxcbiAgICAgIGRvRHJvcGRvd25JdGVtQ2xpY2ssXG4gICAgICBjb21wdXRlZERyb3Bkb3duQXRMZWFzdCxcbiAgICAgIGRvQ2xpY2ssXG4gICAgICBpc0Ryb3Bkb3duQnRuLFxuICAgICAgc2NvcGVSZWYsXG4gICAgICBjb21wdXRlZERyb3Bkb3duQmluZGluZ1xuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXJvdy1oYW5kbGUge1xuICAvLyBkaXNwbGF5OiBmbGV4IDsgLy8g6L+Z6YeM5LiN6IO955SoZmxleO+8jOWQpuWImeS8muegtOWdj2FsaWduOmNlbnRlcumFjee9rlxuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAuZWwtYnV0dG9uICsgLmVsLWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgfVxuICAmID4gKiB7XG4gICAgbWFyZ2luOiAycHg7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICAuZnMtcm93LWhhbmRsZS1kcm9wZG93bi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgLm4tYnV0dG9uIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbjogMnB4O1xuICB9XG5cbiAgLnJvdy1oYW5kbGUtYnRuIHtcbiAgICAuZnMtaWNvbiB7XG4gICAgICBtYXJnaW46IGF1dG87XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtcm93LWhhbmRsZVwiPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1sZWZ0XCIgdi1iaW5kPVwic2NvcGVSZWZcIj48L3Nsb3Q+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBjb21wdXRlZEhhbmRsZUJ0bnNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZSAmJiAhaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleClcIj5cbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiaXRlbS5yZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJpdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlUmVmXCIgLz5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2UgY2xhc3M9XCJyb3ctaGFuZGxlLWJ0blwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2suc3RvcD1cImRvQ2xpY2soaXRlbSwgJGV2ZW50KVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLW1pZGRsZVwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxuICAgIDwhLS0g5LiL5ouJ5oyJ6ZKu6I+c5Y2VIC0tPlxuICAgIDxzcGFuIHYtaWY9XCJoYXNEcm9wZG93bkJ0blwiIGNsYXNzPVwicm93LWhhbmRsZS1idG4gZnMtaGFuZGxlLXJvdy1kcm9wZG93blwiPlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kcm9wZG93bi5uYW1lXCIgdi1iaW5kPVwiY29tcHV0ZWREcm9wZG93bkJpbmRpbmdcIj5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWJpbmQ9XCJkcm9wZG93bi5tb3JlXCIgLz5cbiAgICAgICAgPHRlbXBsYXRlICNbdWkuZHJvcGRvd24uc2xvdE5hbWVdPlxuICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgIDppcz1cInVpLmRyb3Bkb3duTWVudS5uYW1lXCJcbiAgICAgICAgICAgIHYtaWY9XCJ1aS5kcm9wZG93bi5yZW5kZXJNb2RlID09PSAnc2xvdCdcIlxuICAgICAgICAgICAgdi1iaW5kPVwidWkuZHJvcGRvd25NZW51LmNvbW1hbmQoZG9Ecm9wZG93bkl0ZW1DbGljaylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRIYW5kbGVCdG5zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgICA6aXM9XCJ1aS5kcm9wZG93bkl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2UgJiYgaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleClcIlxuICAgICAgICAgICAgICAgIDpbdWkuZHJvcGRvd25JdGVtLmNvbW1hbmRdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uZHJvcGRvd25JdGVtXCJcbiAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1yb3ctaGFuZGxlLWRyb3Bkb3duLWl0ZW1cIiB2LWJpbmQ9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8ZnMtaWNvbiB2LWlmPVwiaXRlbS5pY29uXCIgOmljb249XCJpdGVtLmljb25cIiAvPiB7eyBpdGVtLnRleHQgfHwgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L3NwYW4+XG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLXJpZ2h0XCIgdi1iaW5kPVwic2NvcGVcIj48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZm9yRWFjaCwgc29ydEJ5LCBvbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBTY29wZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5pON5L2c5YiX6YWN572uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNSb3dIYW5kbGVcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7mipjlj6DphY3nva5cbiAgICAgKi9cbiAgICBkcm9wZG93bjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKiB7XG4gICAgICogICB2aWV3OnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjoxfSxcbiAgICAgKiAgIGVkaXQ6ey4uLkZzQnV0dG9uLGNsaWNrOkZ1bmN0aW9uLG9yZGVyOjJ9LFxuICAgICAqICAgcmVtb3ZlOnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjozfSxcbiAgICAgKiAgIC4uLuiHquWumuS5iVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMiemSruWIhue7hCzkuIrpnaLnmoRidXR0b25z5Li66buY6K6k5YiG57uEXG4gICAgICogIHtcbiAgICAgKiAgICBncm91cEtleTp7YnV0dG9uS2V5Ont9LGJ1dHRvbktleTI6e319XG4gICAgICogIH1cbiAgICAgKi9cbiAgICBncm91cDoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlvZPliY3mv4DmtLvliIbnu4RcbiAgICAgKi9cbiAgICBhY3RpdmU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiZGVmYXVsdFwiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBzY29wZVxuICAgICAqL1xuICAgIHNjb3BlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJoYW5kbGVcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcblxuICAgIGNvbnN0IHNjb3BlUmVmID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcHMuc2NvcGUsXG4gICAgICAgIHJvdzogcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XSxcbiAgICAgICAgaW5kZXg6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XVxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCBkb0NsaWNrID0gKGl0ZW06IGFueSwgJGV2ZW50PzogYW55KSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XTtcbiAgICAgIGNvbnN0IHJvdyA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLnJvd107XG4gICAgICBjb25zdCBlOiBTY29wZUNvbnRleHQgPSB7IGtleTogaXRlbS5rZXksIHJvdywgYnRuOiBpdGVtLCBpbmRleCwgLi4ucHJvcHMuc2NvcGUsIGxvYWRpbmdSZWY6ICRldmVudD8ubG9hZGluZ1JlZiB9O1xuICAgICAgaWYgKGl0ZW0uY2xpY2spIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2xpY2soZSk7XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcImhhbmRsZVwiLCBlKTtcbiAgICB9O1xuICAgIGNvbnN0IHsgZG9Db21wdXRlZCB9ID0gdXNlQ29tcHV0ZSgpO1xuICAgIGNvbnN0IHBpY2tlZFByb3BzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHJvcGRvd246IHByb3BzLmRyb3Bkb3duLFxuICAgICAgICBidXR0b25zOiBwcm9wcy5idXR0b25zLFxuICAgICAgICBhY3RpdmU6IHByb3BzLmFjdGl2ZSxcbiAgICAgICAgZ3JvdXA6IHByb3BzLmdyb3VwXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IGRvQ29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwaWNrZWRQcm9wcy52YWx1ZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4uaW5kZXhdO1xuICAgICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xuICAgICAgICByZXR1cm4geyAuLi5wcm9wcy5zY29wZSwgaW5kZXgsIHJvdyB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvL2NvbnN0IGNvbXB1dGVQcm9wcyA9IHsgdmFsdWU6IHByb3BzIH07XG4gICAgY29uc3QgY29tcHV0ZWRIYW5kbGVCdG5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgbGV0IG1lcmdlZEJ0bnMgPSBudWxsO1xuICAgICAgaWYgKGNvbXB1dGVQcm9wcy52YWx1ZS5hY3RpdmUgPT0gbnVsbCB8fCBjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICBjb25zdCBkZWZCdG5zID0ge1xuICAgICAgICAgIHZpZXc6IHtcbiAgICAgICAgICAgIGtleTogXCJ2aWV3XCIsXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weToge1xuICAgICAgICAgICAga2V5OiBcImNvcHlcIixcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpLFxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlZGl0OiB7XG4gICAgICAgICAgICBrZXk6IFwiZWRpdFwiLFxuICAgICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLmVkaXQudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLmVkaXQudGV4dFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICBrZXk6IFwicmVtb3ZlXCIsXG4gICAgICAgICAgICAuLi51aS5idXR0b24uY29sb3JzKFwiZGFuZ2VyXCIpLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS5yZW1vdmUudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnJlbW92ZS50ZXh0XCIpXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBtZXJnZWRCdG5zID0gbWVyZ2UoZGVmQnRucywgY29tcHV0ZVByb3BzLnZhbHVlLmJ1dHRvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkQnRucyA9IGNvbXB1dGVQcm9wcy52YWx1ZS5ncm91cFtjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnRuczogQnV0dG9uUHJvcHNbXSA9IFtdO1xuICAgICAgZm9yRWFjaChtZXJnZWRCdG5zLCAoaXRlbSwga2V5KSA9PiB7XG4gICAgICAgIGl0ZW0ua2V5ID0ga2V5O1xuICAgICAgICBpZiAoaXRlbS5zaG93ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBidG5zLnB1c2goaXRlbSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHNvcnRCeShidG5zLCAoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZERyb3Bkb3duQXRMZWFzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duID09IG51bGwgfHxcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgPT0gbnVsbCB8fFxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCA8PSAwIHx8XG4gICAgICAgIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZS5sZW5ndGggPD0gY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3RcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCB8fCAwO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGlzRHJvcGRvd25CdG4oaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICBpZiAoaXRlbS5kcm9wZG93biA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wdXRlZERyb3Bkb3duQXRMZWFzdC52YWx1ZSA+IDAgJiYgY29tcHV0ZWREcm9wZG93bkF0TGVhc3QudmFsdWUgPCBpbmRleCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaGFzRHJvcGRvd25CdG4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZSkge1xuICAgICAgICBjb25zdCBpcyA9IGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpO1xuICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZG9Ecm9wZG93bkl0ZW1DbGljaygkZXZlbnQ6IGFueSkge1xuICAgICAgZm9yIChsZXQgYnRuIG9mIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZSkge1xuICAgICAgICBpZiAoJGV2ZW50ID09PSBidG4ua2V5KSB7XG4gICAgICAgICAgZG9DbGljayhidG4pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgYmluZGluZzogYW55ID0ge307XG4gICAgICBpZiAodWkuZHJvcGRvd24ucmVuZGVyTW9kZSAhPT0gXCJzbG90XCIpIHtcbiAgICAgICAgLy8gbmFpdmUg6YCa6L+Hb3B0aW9uc+mFjee9ruadpeaYvuekuuWtkOmhuVxuICAgICAgICBjb25zdCBidG5zID0gY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlO1xuICAgICAgICBjb25zdCBvcHRzOiBCdXR0b25Qcm9wc1tdID0gW107XG4gICAgICAgIGZvckVhY2goYnRucywgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICh2YWx1ZS5zaG93ICE9PSBmYWxzZSAmJiBpc0Ryb3Bkb3duQnRuKHZhbHVlLCBpbmRleCkpIHtcbiAgICAgICAgICAgIG9wdHMucHVzaCh7XG4gICAgICAgICAgICAgIFt1aS5kcm9wZG93bi52YWx1ZV06IHZhbHVlLmtleSxcbiAgICAgICAgICAgICAgW3VpLmRyb3Bkb3duLmxhYmVsXTogdmFsdWUudGV4dCxcbiAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlLnRpdGxlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBiaW5kaW5nLm9wdGlvbnMgPSBvcHRzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub21pdChwcm9wcy5kcm9wZG93biwgXCJtb3JlXCIsIFwiYXRMZWFzdFwiKSxcbiAgICAgICAgLi4udWkuZHJvcGRvd24uY29tbWFuZChkb0Ryb3Bkb3duSXRlbUNsaWNrKSxcbiAgICAgICAgLi4uYmluZGluZ1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGhhc0Ryb3Bkb3duQnRuLFxuICAgICAgY29tcHV0ZWRIYW5kbGVCdG5zLFxuICAgICAgZG9Ecm9wZG93bkl0ZW1DbGljayxcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LFxuICAgICAgZG9DbGljayxcbiAgICAgIGlzRHJvcGRvd25CdG4sXG4gICAgICBzY29wZVJlZixcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtcm93LWhhbmRsZSB7XG4gIC8vIGRpc3BsYXk6IGZsZXggOyAvLyDov5nph4zkuI3og73nlKhmbGV477yM5ZCm5YiZ5Lya56C05Z2PYWxpZ246Y2VudGVy6YWN572uXG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5lbC1idXR0b24gKyAuZWwtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG4gICYgPiAqIHtcbiAgICBtYXJnaW46IDJweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5mcy1yb3ctaGFuZGxlLWRyb3Bkb3duLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAubi1idXR0b24ge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAycHg7XG4gIH1cblxuICAucm93LWhhbmRsZS1idG4ge1xuICAgIC5mcy1pY29uIHtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcblxuICBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykge1xuICAgICAgdmFyIGEgPSBbbnVsbF07XG4gICAgICBhLnB1c2guYXBwbHkoYSwgYXJncyk7XG4gICAgICB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7XG4gICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTtcbiAgICAgIGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbihmbikge1xuICByZXR1cm4gRnVuY3Rpb24udG9TdHJpbmcuY2FsbChmbikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7XG4gIHZhciBfY2FjaGUgPSB0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgPyBuZXcgTWFwKCkgOiB1bmRlZmluZWQ7XG5cbiAgX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgICBpZiAoQ2xhc3MgPT09IG51bGwgfHwgIV9pc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzO1xuXG4gICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpO1xuXG4gICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG5cbiAgICBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogV3JhcHBlcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3NldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTtcbiAgfTtcblxuICByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7XG59XG5cbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xudmFyIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKCkge307IC8vIGRvbid0IHByaW50IHdhcm5pbmcgbWVzc2FnZSB3aGVuIGluIHByb2R1Y3Rpb24gZW52IG9yIG5vZGUgcnVudGltZVxuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyh0eXBlLCBlcnJvcnMpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2FybiAmJiB0eXBlb2YgQVNZTkNfVkFMSURBVE9SX05PX1dBUk5JTkcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoZXJyb3JzLmV2ZXJ5KGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ3N0cmluZyc7XG4gICAgICB9KSkge1xuICAgICAgICBjb25zb2xlLndhcm4odHlwZSwgZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpIHtcbiAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHJldHVybiBudWxsO1xuICB2YXIgZmllbGRzID0ge307XG4gIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHZhciBmaWVsZCA9IGVycm9yLmZpZWxkO1xuICAgIGZpZWxkc1tmaWVsZF0gPSBmaWVsZHNbZmllbGRdIHx8IFtdO1xuICAgIGZpZWxkc1tmaWVsZF0ucHVzaChlcnJvcik7XG4gIH0pO1xuICByZXR1cm4gZmllbGRzO1xufVxuZnVuY3Rpb24gZm9ybWF0KHRlbXBsYXRlKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuXG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdGVtcGxhdGUuYXBwbHkobnVsbCwgYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykge1xuICAgIHZhciBzdHIgPSB0ZW1wbGF0ZS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwgZnVuY3Rpb24gKHgpIHtcbiAgICAgIGlmICh4ID09PSAnJSUnKSB7XG4gICAgICAgIHJldHVybiAnJSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChpID49IGxlbikge1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh4KSB7XG4gICAgICAgIGNhc2UgJyVzJzpcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG5cbiAgICAgICAgY2FzZSAnJWQnOlxuICAgICAgICAgIHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcblxuICAgICAgICBjYXNlICclaic6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pO1xuICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBpc05hdGl2ZVN0cmluZ1R5cGUodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ3VybCcgfHwgdHlwZSA9PT0gJ2hleCcgfHwgdHlwZSA9PT0gJ2VtYWlsJyB8fCB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3BhdHRlcm4nO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnYXJyYXknICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICF2YWx1ZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc05hdGl2ZVN0cmluZ1R5cGUodHlwZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYXN5bmNQYXJhbGxlbEFycmF5KGFyciwgZnVuYywgY2FsbGJhY2spIHtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgdmFyIHRvdGFsID0gMDtcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gY291bnQoZXJyb3JzKSB7XG4gICAgcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIGVycm9ycyB8fCBbXSk7XG4gICAgdG90YWwrKztcblxuICAgIGlmICh0b3RhbCA9PT0gYXJyTGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBhcnIuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xuICAgIGZ1bmMoYSwgY291bnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXN5bmNTZXJpYWxBcnJheShhcnIsIGZ1bmMsIGNhbGxiYWNrKSB7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBvcmlnaW5hbCA9IGluZGV4O1xuICAgIGluZGV4ID0gaW5kZXggKyAxO1xuXG4gICAgaWYgKG9yaWdpbmFsIDwgYXJyTGVuZ3RoKSB7XG4gICAgICBmdW5jKGFycltvcmlnaW5hbF0sIG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhbXSk7XG4gICAgfVxuICB9XG5cbiAgbmV4dChbXSk7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5PYmpBcnIob2JqQXJyKSB7XG4gIHZhciByZXQgPSBbXTtcbiAgT2JqZWN0LmtleXMob2JqQXJyKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBvYmpBcnJba10gfHwgW10pO1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxudmFyIEFzeW5jVmFsaWRhdGlvbkVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfRXJyb3IpIHtcbiAgX2luaGVyaXRzTG9vc2UoQXN5bmNWYWxpZGF0aW9uRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gQXN5bmNWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLCBmaWVsZHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9FcnJvci5jYWxsKHRoaXMsICdBc3luYyBWYWxpZGF0aW9uIEVycm9yJykgfHwgdGhpcztcbiAgICBfdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgX3RoaXMuZmllbGRzID0gZmllbGRzO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBBc3luY1ZhbGlkYXRpb25FcnJvcjtcbn0oIC8qI19fUFVSRV9fKi9fd3JhcE5hdGl2ZVN1cGVyKEVycm9yKSk7XG5mdW5jdGlvbiBhc3luY01hcChvYmpBcnIsIG9wdGlvbiwgZnVuYywgY2FsbGJhY2ssIHNvdXJjZSkge1xuICBpZiAob3B0aW9uLmZpcnN0KSB7XG4gICAgdmFyIF9wZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIG5leHQgPSBmdW5jdGlvbiBuZXh0KGVycm9ycykge1xuICAgICAgICBjYWxsYmFjayhlcnJvcnMpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLmxlbmd0aCA/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/IHJ1bGUubWVzc2FnZShydWxlLmZ1bGxGaWVsZCB8fCBydWxlLmZpZWxkKSA6IHJ1bGUubWVzc2FnZSB8fCAocnVsZS5mdWxsRmllbGQgfHwgcnVsZS5maWVsZCkgKyBcIiBmYWlsc1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNiKHJlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBjYihyZXMubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgY29tcGxldGUocmVzdWx0cyk7XG4gICAgfSwgc291cmNlKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VHlwZSA9IGZ1bmN0aW9uIGdldFR5cGUocnVsZSkge1xuICAgIGlmIChydWxlLnR5cGUgPT09IHVuZGVmaW5lZCAmJiBydWxlLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJ1bGUudHlwZSA9ICdwYXR0ZXJuJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nICYmIHJ1bGUudHlwZSAmJiAhdmFsaWRhdG9ycy5oYXNPd25Qcm9wZXJ0eShydWxlLnR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0KCdVbmtub3duIHJ1bGUgdHlwZSAlcycsIHJ1bGUudHlwZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBydWxlLnR5cGUgfHwgJ3N0cmluZyc7XG4gIH07XG5cbiAgX3Byb3RvLmdldFZhbGlkYXRpb25NZXRob2QgPSBmdW5jdGlvbiBnZXRWYWxpZGF0aW9uTWV0aG9kKHJ1bGUpIHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcnVsZS52YWxpZGF0b3I7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhydWxlKTtcbiAgICB2YXIgbWVzc2FnZUluZGV4ID0ga2V5cy5pbmRleE9mKCdtZXNzYWdlJyk7XG5cbiAgICBpZiAobWVzc2FnZUluZGV4ICE9PSAtMSkge1xuICAgICAga2V5cy5zcGxpY2UobWVzc2FnZUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEgJiYga2V5c1swXSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgcmV0dXJuIHZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvcnNbdGhpcy5nZXRUeXBlKHJ1bGUpXSB8fCB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIFNjaGVtYTtcbn0oKTtcblxuU2NoZW1hLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIodHlwZSwgdmFsaWRhdG9yKSB7XG4gIGlmICh0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVnaXN0ZXIgYSB2YWxpZGF0b3IgYnkgdHlwZSwgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICB2YWxpZGF0b3JzW3R5cGVdID0gdmFsaWRhdG9yO1xufTtcblxuU2NoZW1hLndhcm5pbmcgPSB3YXJuaW5nO1xuU2NoZW1hLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG5TY2hlbWEudmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XG5cbmV4cG9ydCB7IFNjaGVtYSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLWVkaXRhYmxlXCI+XG4gICAgPGRpdiB2LWlmPVwiIWVkaXRpbmcgfHwgZGlzYWJsZWRcIiBjbGFzcz1cImZzLWVkaXRhYmxlLWlubmVyIGZzLWVkaXRhYmxlLXBvaW50ZXJcIiB2LWJpbmQ9XCJhY3RpdmVUcmlnZ2VyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtaW5wdXRcIj5cbiAgICAgICAgPGRpdiB2LWlmPVwiZGlydHlcIiBjbGFzcz1cImZzLWVkaXRhYmxlLWRpcnR5XCIgLz5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHYtaWY9XCJ0cmlnZ2VyICYmICFkaXNhYmxlZFwiIGNsYXNzPVwiZnMtZWRpdGFibGUtYWN0aW9uIGZzLWVkaXRhYmxlLWljb25cIj5cbiAgICAgICAgPGZzLWljb24gOmljb249XCJ1aS5pY29ucy5lZGl0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwiZnMtZWRpdGFibGUtaW5uZXJcIiA6Y2xhc3M9XCJ7ICdmcy12YWxpZGF0ZS1lcnJvcic6IGhhc0Vycm9yKCkgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWVkaXRhYmxlLWlucHV0XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJlZGl0XCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtYWN0aW9uXCI+XG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkudG9vbHRpcC5uYW1lXCI+XG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC5jb250ZW50XT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaWNvblwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWxpZGF0ZUVycm9yTWVzc2FnZSgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLnRyaWdnZXJdPlxuICAgICAgICAgICAgPGZzLWljb24gOmNsYXNzPVwieyBoaWRkZW46ICFoYXNFcnJvcigpLCAnZXJyb3ItaWNvbic6IHRydWUgfVwiIHNpemU9XCJtaW5pXCIgOmljb249XCJ1aS5pY29ucy5pbmZvXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzaG93QWN0aW9uXCI+XG4gICAgICAgICAgPGZzLWljb24gdi1pZj1cImxvYWRpbmdcIiBzaXplPVwibWluaVwiIDpzcGluPVwidHJ1ZVwiIDppY29uPVwidWkuaWNvbnMucmVmcmVzaFwiIC8+XG4gICAgICAgICAgPGZzLWljb24gdi1lbHNlIHNpemU9XCJtaW5pXCIgOmljb249XCJ1aS5pY29ucy5jaGVja1wiIEBjbGljaz1cImRvU3VibWl0XCIgLz5cbiAgICAgICAgICA8ZnMtaWNvbiA6Y2xhc3M9XCJ7IGhpZGRlbjogbG9hZGluZyB9XCIgc2l6ZT1cIm1pbmlcIiA6aWNvbj1cInVpLmljb25zLmNsb3NlXCIgQGNsaWNrPVwiZG9DYW5jZWxcIiAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcblxudHlwZSBGc0VkaXRhYmxlUHJvcHMgPSB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZWRpdGluZzogYm9vbGVhbjtcbiAgZGlydHk/OiBib29sZWFuO1xuICB0cmlnZ2VyPzogXCJvbkNsaWNrXCIgfCBcIm9uRGJDbGlja1wiIHwgZmFsc2U7XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICBzaG93QWN0aW9uPzogYm9vbGVhbjtcbiAgdmFsaWRhdGVFcnJvcnM/OiBhbnlbXTtcbn07XG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxGc0VkaXRhYmxlUHJvcHM+KCksIHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBlZGl0aW5nOiBmYWxzZSxcbiAgZGlydHk6IGZhbHNlLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgc2hvd0FjdGlvbjogdHJ1ZSxcbiAgdHJpZ2dlcjogXCJvbkNsaWNrXCIsXG4gIHZhbGlkYXRlRXJyb3JzOiAoKSA9PiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59KTtcblxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IGVtaXRzID0gZGVmaW5lRW1pdHMoW1widXBkYXRlOmVkaXRpbmdcIiwgXCJzdWJtaXRcIiwgXCJjYW5jZWxcIl0pO1xuY29uc3QgYWN0aXZlVHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgaWYgKCFwcm9wcy50cmlnZ2VyKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgW3Byb3BzLnRyaWdnZXJdOiAoKSA9PiB7XG4gICAgICBlbWl0cyhcInVwZGF0ZTplZGl0aW5nXCIsIHRydWUpO1xuICAgIH1cbiAgfTtcbn0pO1xuZnVuY3Rpb24gZG9TdWJtaXQoKSB7XG4gIGVtaXRzKFwic3VibWl0XCIpO1xufVxuZnVuY3Rpb24gZG9DYW5jZWwoKSB7XG4gIGVtaXRzKFwiY2FuY2VsXCIpO1xufVxuZnVuY3Rpb24gaGFzRXJyb3IoKSB7XG4gIHJldHVybiBwcm9wcy52YWxpZGF0ZUVycm9ycz8ubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGdldFZhbGlkYXRlRXJyb3JNZXNzYWdlKCkge1xuICBpZiAocHJvcHMudmFsaWRhdGVFcnJvcnM/Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4gcHJvcHMudmFsaWRhdGVFcnJvcnM/Lm1hcCgoaXRlbSkgPT4gaXRlbS5tZXNzYWdlKS5qb2luKFwiLFwiKTtcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1lZGl0YWJsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAuZnMtZWRpdGFibGUtcG9pbnRlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIC5mcy1lZGl0YWJsZS1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDIzcHg7XG4gICAgLmZzLWVkaXRhYmxlLWRpcnR5IHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgICAgd2lkdGg6IDVweDtcbiAgICAgIGhlaWdodDogNXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IC01cHg7XG4gICAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgfVxuICAgIC5mcy1lZGl0YWJsZS1pbnB1dCB7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cbiAgICAuZnMtZWRpdGFibGUtYWN0aW9uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgaSxcbiAgICAgIC5hbnRpY29uIHtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgICAuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5mcy1lZGl0YWJsZS1pY29uIHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gICAgJjpob3ZlciAuZnMtZWRpdGFibGUtaWNvbiB7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC5lbC1yYWRpbyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgIC5lbC1yYWRpb19fbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mcy12YWxpZGF0ZS1lcnJvciB7XG4gICAgICAuZXJyb3ItaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjZmY0ZDRmO1xuICAgICAgfVxuICAgICAgLmFudC1pbnB1dC1hZmZpeC13cmFwcGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmY0ZDRmO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiKDI1NSAzOCA1IC8gNiUpO1xuICAgICAgfVxuICAgICAgLmVsLWlucHV0X193cmFwcGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmY0ZDRmICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmY0ZDRmIGluc2V0ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAubi1pbnB1dCAubi1pbnB1dF9fc3RhdGUtYm9yZGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmY0ZDRmICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IoMjU1IDM4IDUgLyA2JSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtYWN0aW9uYmFyXCI+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIGluIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgIDxmcy1idXR0b24gdi1pZj1cInZhbHVlLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwidmFsdWVcIiBAY2xpY2s9XCJvbkNsaWNrKGtleSwgdmFsdWUsICRldmVudClcIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkLCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEFjdGlvbmJhckNsaWNrRXZlbnQsIEJ1dHRvbnNQcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNBY3Rpb25iYXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKiB7XG4gICAgICogIGFkZDp7XG4gICAgICogICAgLi4uRnNCdXR0b24sXG4gICAgICogICAgc2hvdzp0cnVlXG4gICAgICogIH0sXG4gICAgICogIGN1c3RvbTp7Li4ufVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7fVxuICB9IGFzIGFueSxcbiAgZW1pdHM6IFtcImFjdGlvblwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eDogYW55KSB7XG4gICAgZnVuY3Rpb24gb25DbGljayhrZXk6IGFueSwgYnRuOiBhbnksICRldmVudDogYW55KSB7XG4gICAgICBjb25zdCBlID0geyBrZXksIGJ0biwgJGV2ZW50LCBsb2FkaW5nUmVmOiAkZXZlbnQ/LmxvYWRpbmdSZWYgfTtcbiAgICAgIGlmIChidG4uY2xpY2spIHtcbiAgICAgICAgYnRuLmNsaWNrKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYnRuLm9uQ2xpY2spIHtcbiAgICAgICAgYnRuLm9uQ2xpY2soZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwiYWN0aW9uXCIsIGUpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnM6IFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGxldCBzb3J0QXJyID0gW107XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMuYnV0dG9ucykge1xuICAgICAgICBzb3J0QXJyLnB1c2goe1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAuLi5wcm9wcy5idXR0b25zW2tleV0sXG4gICAgICAgICAgX2tleToga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc29ydGVkQnV0dG9uczogQnV0dG9uc1Byb3BzPEFjdGlvbmJhckNsaWNrRXZlbnQ+ID0ge307XG5cbiAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvcnRlZEJ1dHRvbnM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBjb21wdXRlZEJ1dHRvbnNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtYWN0aW9uYmFyIHtcbiAgLmZzLWJ1dHRvbiB7XG4gICAgbWFyZ2luOiAycHg7IC8vIOaNouihjOS5i+WQjuS5n+imgeacieS4gOeCuemXtOmalFxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtYWN0aW9uYmFyXCI+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIGluIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgIDxmcy1idXR0b24gdi1pZj1cInZhbHVlLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwidmFsdWVcIiBAY2xpY2s9XCJvbkNsaWNrKGtleSwgdmFsdWUsICRldmVudClcIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkLCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEFjdGlvbmJhckNsaWNrRXZlbnQsIEJ1dHRvbnNQcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNBY3Rpb25iYXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKiB7XG4gICAgICogIGFkZDp7XG4gICAgICogICAgLi4uRnNCdXR0b24sXG4gICAgICogICAgc2hvdzp0cnVlXG4gICAgICogIH0sXG4gICAgICogIGN1c3RvbTp7Li4ufVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7fVxuICB9IGFzIGFueSxcbiAgZW1pdHM6IFtcImFjdGlvblwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eDogYW55KSB7XG4gICAgZnVuY3Rpb24gb25DbGljayhrZXk6IGFueSwgYnRuOiBhbnksICRldmVudDogYW55KSB7XG4gICAgICBjb25zdCBlID0geyBrZXksIGJ0biwgJGV2ZW50LCBsb2FkaW5nUmVmOiAkZXZlbnQ/LmxvYWRpbmdSZWYgfTtcbiAgICAgIGlmIChidG4uY2xpY2spIHtcbiAgICAgICAgYnRuLmNsaWNrKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYnRuLm9uQ2xpY2spIHtcbiAgICAgICAgYnRuLm9uQ2xpY2soZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwiYWN0aW9uXCIsIGUpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnM6IFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGxldCBzb3J0QXJyID0gW107XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMuYnV0dG9ucykge1xuICAgICAgICBzb3J0QXJyLnB1c2goe1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAuLi5wcm9wcy5idXR0b25zW2tleV0sXG4gICAgICAgICAgX2tleToga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc29ydGVkQnV0dG9uczogQnV0dG9uc1Byb3BzPEFjdGlvbmJhckNsaWNrRXZlbnQ+ID0ge307XG5cbiAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvcnRlZEJ1dHRvbnM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBjb21wdXRlZEJ1dHRvbnNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtYWN0aW9uYmFyIHtcbiAgLmZzLWJ1dHRvbiB7XG4gICAgbWFyZ2luOiAycHg7IC8vIOaNouihjOS5i+WQjuS5n+imgeacieS4gOeCuemXtOmalFxuICB9XG59XG48L3N0eWxlPlxuIixudWxsLG51bGwsIjx0ZW1wbGF0ZT5cbiAgPCEtLSDnroDljZXmqKHlvI8gLS0+XG4gIDx0ZW1wbGF0ZSB2LWlmPVwibW9kZSA9PT0gJ3NpbXBsZSdcIj5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgY2xhc3M9XCJmcy10YWJsZS1jb2x1bW5zLWZpbHRlci1zaW1wbGVcIj5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkuY29sLm5hbWVcIlxuICAgICAgICB2LWZvcj1cIihlbGVtZW50LCBrZXkpIGluIGN1cnJlbnRDb2x1bW5zXCJcbiAgICAgICAgdi1zaG93PVwib3JpZ2luYWxbZWxlbWVudC5rZXldPy5fX3Nob3cgIT09IGZhbHNlXCJcbiAgICAgICAgOmtleT1cImtleVwiXG4gICAgICAgIDpzcGFuPVwiNlwiXG4gICAgICA+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJ1aS5jaGVja2JveC5uYW1lXCJcbiAgICAgICAgICB2LW1vZGVsOlt1aS5jaGVja2JveC5tb2RlbFZhbHVlXT1cImVsZW1lbnQuc2hvd1wiXG4gICAgICAgICAgOmRpc2FibGVkPVwib3JpZ2luYWxbZWxlbWVudC5rZXldPy5fX2Rpc2FibGVkID09PSB0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tbGFiZWxcIlxuICAgICAgICAgIDp0aXRsZT1cImJ1aWxkVGV4dChlbGVtZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBidWlsZFRleHQoZWxlbWVudCkgfX1cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L2NvbXBvbmVudD5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmRpdmlkZXIubmFtZVwiIC8+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiPlxuICAgICAgPGZzLWJ1dHRvblxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4XCJcbiAgICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgICA6aWNvbj1cInVpLmljb25zLmNoZWNrXCJcbiAgICAgICAgOnRleHQ9XCJfdGV4dC5jb25maXJtXCJcbiAgICAgICAgQGNsaWNrPVwic2ltcGxlU3VibWl0KClcIlxuICAgICAgLz5cbiAgICAgIDxmcy1idXR0b24gOmljb249XCJ1aS5pY29ucy5yZWZyZXNoXCIgOnRleHQ9XCJfdGV4dC5yZXNldFwiIEBjbGljaz1cInNpbXBsZVJlc2V0XCIgLz5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC90ZW1wbGF0ZT5cbiAgPCEtLSDlrozlhajmqKHlvI8gLS0+XG5cbiAgPGNvbXBvbmVudCA6aXM9XCJjb250YWluZXI/LmlzIHx8ICdmcy1jb2x1bW5zLWZpbHRlci1sYXlvdXQtZGVmYXVsdCdcIiB2LWVsc2Ugdi1iaW5kPVwiY29udGFpbmVyXCI+XG4gICAgPHRlbXBsYXRlICNidXR0b25zPlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtZHJhd2VyLWZvb3RlclwiIDpndXR0ZXI9XCIxMFwiPlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbC5uYW1lXCIgOnNwYW49XCIxMlwiPlxuICAgICAgICAgIDxmcy1idXR0b24gOmljb249XCJ1aS5pY29ucy5yZWZyZXNoXCIgOnRleHQ9XCJfdGV4dC5yZXNldFwiIGJsb2NrIEBjbGljaz1cInJlc2V0XCIgLz5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sLm5hbWVcIiA6c3Bhbj1cIjEyXCI+XG4gICAgICAgICAgPGZzLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIDppY29uPVwidWkuaWNvbnMuY2hlY2tcIiA6dGV4dD1cIl90ZXh0LmNvbmZpcm1cIiBibG9jayBAY2xpY2s9XCJzdWJtaXQoZmFsc2UpXCIgLz5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4vKipcbiAqIEZzVGFibGVDb2x1bW5zRmlsdGVy77yM5YiX6K6+572u57uE5Lu2XG4gKi9cbmltcG9ydCB7IG9taXQsIGZvckVhY2gsIHBpY2sgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgVGFibGVTdG9yZSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvdXRpbC5zdG9yZVwiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi8uLi9sb2NhbGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIG5leHRUaWNrLCBwcm92aWRlLCBSZWYsIHJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vdWlcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcbmltcG9ydCB7IHVzZVJvdXRlIH0gZnJvbSBcInZ1ZS1yb3V0ZXJcIjtcbmltcG9ydCB7XG4gIENvbHVtblByb3BzLFxuICBDb2x1bW5zRmlsdGVyQ29tcG9uZW50UHJvcHMsXG4gIENvbHVtbnNGaWx0ZXJJdGVtLFxuICBDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSxcbiAgVGFibGVDb2x1bW5zUHJvcHNcbn0gZnJvbSBcIi4uLy4uLy4uL2RcIjtcblxuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8Q29sdW1uc0ZpbHRlckNvbXBvbmVudFByb3BzPigpLCB7XG4gIHN0b3JhZ2U6IHRydWUsXG4gIG1vZGU6IFwiZGVmYXVsdFwiLFxuICBjb250YWluZXI6ICgpID0+IHtcbiAgICByZXR1cm4geyBpczogXCJmcy1jb2x1bW5zLWZpbHRlci1sYXlvdXQtZGVmYXVsdFwiIH07XG4gIH1cbn0pO1xuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcInVwZGF0ZTpjb2x1bW5zXCIsIFwidXBkYXRlOnNob3dcIiwgXCJyZXNldFwiLCBcInN1Ym1pdFwiXSk7XG5cbmNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuY29uc3QgdWkgPSB1aUNvbnRleHQuZ2V0KCk7XG5jb25zdCBhY3RpdmUgPSByZWYoZmFsc2UpO1xuY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gIGFjdGl2ZS52YWx1ZSA9IHRydWU7XG59O1xuXG4vLyDmlbDnu4TlvaLlvI/nmoTljp/lp4t0cmVlXG5jb25zdCBvcmlnaW5hbDogUmVmPENvbHVtbnNGaWx0ZXJJdGVtW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gdHJhbnNmb3JtQ29sdW1uc1RyZWUocHJvcHMub3JpZ2luYWxDb2x1bW5zKTtcbn0pO1xuLy/mlbDnu4TlvaLlvI/nmoR0cmVlXG5jb25zdCBjdXJyZW50Q29sdW1uczogUmVmPENvbHVtbnNGaWx0ZXJJdGVtW10+ID0gcmVmKFtdKTtcblxuY29uc3Qgb3JpZ2luYWxDb2x1bW5zTWFwOiBSZWY8UmVjb3JkPHN0cmluZywgQ29sdW1uc0ZpbHRlckl0ZW0+PiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBDb2x1bW5zRmlsdGVySXRlbT4gPSB7fTtcbiAgZWFjaFRyZWUob3JpZ2luYWwudmFsdWUsIChpdGVtOiBDb2x1bW5zRmlsdGVySXRlbSkgPT4ge1xuICAgIG1hcFtpdGVtLl9fa2V5XSA9IGl0ZW07XG4gIH0pO1xuICByZXR1cm4gbWFwO1xufSk7XG5jb25zdCB7IG1lcmdlLCBjbG9uZURlZXAgfSA9IHVzZU1lcmdlKCk7XG5cbmNvbnN0IF90ZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCBkZWYgPSB7XG4gICAgdGl0bGU6IHQoXCJmcy50b29sYmFyLmNvbHVtbkZpbHRlci50aXRsZVwiKSxcbiAgICBmaXhlZDogdChcImZzLnRvb2xiYXIuY29sdW1uRmlsdGVyLmZpeGVkXCIpLFxuICAgIG9yZGVyOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIub3JkZXJcIiksXG4gICAgcmVzZXQ6IHQoXCJmcy50b29sYmFyLmNvbHVtbkZpbHRlci5yZXNldFwiKSxcbiAgICBjb25maXJtOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIuY29uZmlybVwiKSxcbiAgICB1bm5hbWVkOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIudW5uYW1lZFwiKVxuICB9O1xuICBtZXJnZShkZWYsIHByb3BzLnRleHQpO1xuICByZXR1cm4gZGVmO1xufSk7XG5cbmZ1bmN0aW9uIGVhY2hUcmVlKHRyZWU6IGFueSwgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gIGlmICghdHJlZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlKSB7XG4gICAgICBjYWxsYmFjayhpdGVtKTtcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGVhY2hUcmVlKGl0ZW0uY2hpbGRyZW4sIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdHJlZSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRyZWVba2V5XTtcbiAgICAgIGNhbGxiYWNrKGl0ZW0pO1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgZWFjaFRyZWUoaXRlbS5jaGlsZHJlbiwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZENvbHVtbkZpbHRlckl0ZW0oaXRlbTogQ29sdW1uUHJvcHMpOiBDb2x1bW5zRmlsdGVySXRlbSB7XG4gIHJldHVybiB7XG4gICAga2V5OiBpdGVtLmtleSxcbiAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICBmaXhlZDogaXRlbS5maXhlZCA/PyBmYWxzZSxcbiAgICBzaG93OiBpdGVtLnNob3cgPz8gdHJ1ZSxcbiAgICBfX3Nob3c6IGl0ZW0uY29sdW1uU2V0U2hvdyAhPT0gZmFsc2UsXG4gICAgX19kaXNhYmxlZDogaXRlbS5jb2x1bW5TZXREaXNhYmxlZCA/PyBmYWxzZVxuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Ub1RhYmxlQ29sdW1ucyhyZXN1bHQ6IENvbHVtbnNGaWx0ZXJJdGVtW10pIHtcbiAgY29uc3QgY29sdW1uczogVGFibGVDb2x1bW5zUHJvcHMgPSB7fTtcbiAgZm9yRWFjaChyZXN1bHQsIChpdGVtKSA9PiB7XG4gICAgY29uc3QgY29sdW1uOiBDb2x1bW5Qcm9wcyA9IG9taXQoaXRlbSwgXCJjaGlsZHJlblwiLCBcIl9fc2hvd1wiLCBcIl9fZGlzYWJsZWRcIiwgXCJfX3BhcmVudFwiLCBcIl9fa2V5XCIpO1xuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29sdW1uLmNoaWxkcmVuID0gdHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMoaXRlbS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGNvbHVtbnNbaXRlbS5rZXldID0gY29sdW1uO1xuICB9KTtcbiAgcmV0dXJuIGNvbHVtbnM7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNvbHVtbnNUcmVlKHZhbHVlOiBUYWJsZUNvbHVtbnNQcm9wcywgcGFyZW50PzogQ29sdW1uc0ZpbHRlckl0ZW0pOiBDb2x1bW5zRmlsdGVySXRlbVtdIHtcbiAgY29uc3QgY29sdW1uczogQ29sdW1uc0ZpbHRlckl0ZW1bXSA9IFtdO1xuICBmb3JFYWNoKHZhbHVlLCAoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IGJ1aWxkQ29sdW1uRmlsdGVySXRlbShpdGVtKTtcbiAgICBjb2x1bW4uX19wYXJlbnQgPSBwYXJlbnQ7XG4gICAgY29sdW1uLl9fa2V5ID0gYCR7cGFyZW50Py5rZXkgfHwgXCJcIn0uJHtpdGVtLmtleX1gO1xuICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICBjb2x1bW4uY2hpbGRyZW4gPSB0cmFuc2Zvcm1Db2x1bW5zVHJlZShpdGVtLmNoaWxkcmVuLCBjb2x1bW4pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb2x1bW5zO1xufVxuXG5mdW5jdGlvbiBzZXRDdXJyZW50VmFsdWUodmFsdWU6IGFueSkge1xuICBjdXJyZW50Q29sdW1ucy52YWx1ZSA9IHRyYW5zZm9ybUNvbHVtbnNUcmVlKHZhbHVlKTtcbn1cblxuLy8g6L+Y5Y6fXG5hc3luYyBmdW5jdGlvbiByZXNldCgpIHtcbiAgY3VycmVudENvbHVtbnMudmFsdWUgPSB0cmFuc2Zvcm1Db2x1bW5zVHJlZShwcm9wcy5vcmlnaW5hbENvbHVtbnMpO1xuICBhd2FpdCBkb19zYXZlKHRydWUpO1xuICBhd2FpdCBjbGVhclRoaXNTdG9yYWdlKCk7XG4gIGVtaXQoXCJyZXNldFwiKTtcbn1cblxuLy8g56Gu6K6kXG5hc3luYyBmdW5jdGlvbiBkb19zYXZlKG5vU2F2ZSA9IGZhbHNlKSB7XG4gIGlmICghbm9TYXZlKSB7XG4gICAgYXdhaXQgc2F2ZU9wdGlvbnNUb1N0b3JhZ2UoY3VycmVudENvbHVtbnMudmFsdWUpO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcChjdXJyZW50Q29sdW1ucy52YWx1ZSk7XG5cbiAgLy/op6PlhrNuYWl2ZSB1aeS4juWIl+iuvue9ruWGsueqgeeahOmXrumimFxuICBlYWNoVHJlZShyZXN1bHQsIChpdGVtOiBhbnkpID0+IHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgZGVsZXRlIGl0ZW0uX19kaXNhYmxlZDtcbiAgICAgIGRlbGV0ZSBpdGVtLl9fc2hvdztcbiAgICAgIGRlbGV0ZSBpdGVtLl9fcGFyZW50O1xuICAgICAgZGVsZXRlIGl0ZW0uX19rZXk7XG4gICAgfVxuICB9KTtcblxuICBkb0VtaXQocmVzdWx0KTtcbiAgYWN0aXZlLnZhbHVlID0gZmFsc2U7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN1Ym1pdChub1NhdmUgPSBmYWxzZSkge1xuICBjb25zdCBjb2x1bW5zID0gYXdhaXQgZG9fc2F2ZShub1NhdmUpO1xuICBlbWl0KFwic3VibWl0XCIsIHsgY29sdW1ucyB9KTtcbn1cbmNvbnN0IGNvbXB1dGVkT3JpZ2luYWxDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gcHJvcHMub3JpZ2luYWxDb2x1bW5zO1xufSk7XG5wcm92aWRlKENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5LCB7XG4gIG9yaWdpbmFsQ29sdW1uczogY29tcHV0ZWRPcmlnaW5hbENvbHVtbnMsXG4gIG9yaWdpbmFsQ29sdW1uc01hcDogb3JpZ2luYWxDb2x1bW5zTWFwLFxuICBjdXJyZW50Q29sdW1ucyxcbiAgdGV4dDogX3RleHQsXG4gIGFjdGl2ZSxcbiAgc3VibWl0LFxuICByZXNldFxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIHNpbXBsZVN1Ym1pdCgpIHtcbiAgYXdhaXQgc3VibWl0KGZhbHNlKTtcbiAgZW1pdChcInVwZGF0ZTpzaG93XCIsIGZhbHNlKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHNpbXBsZVJlc2V0KCkge1xuICBhd2FpdCByZXNldCgpO1xuICBlbWl0KFwidXBkYXRlOnNob3dcIiwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBkb0VtaXQocmVzdWx0OiBDb2x1bW5zRmlsdGVySXRlbVtdKSB7XG4gIGVtaXQoXCJ1cGRhdGU6Y29sdW1uc1wiLCB0cmFuc2Zvcm1Ub1RhYmxlQ29sdW1ucyhyZXN1bHQpKTtcbn1cblxuY29uc3QgZ2V0Q3J1ZEJpbmRpbmcgPSBpbmplY3QoXCJnZXQ6Y3J1ZEJpbmRpbmdcIiwgKCkgPT4ge1xuICByZXR1cm4geyBpZDogXCJcIiB9O1xufSk7XG5cbmNvbnN0IHN0b3JhZ2VUYWJsZVN0b3JlID0gcmVmKCk7XG5mdW5jdGlvbiBnZXRTdG9yYWdlVGFibGUoKSB7XG4gIC8vcHJvcHMuc3RvcmFnZeaYr+WQpuWunueOsOS6hkNvbHVtbkZpbHRlclN0b3JhZ2Ug5o6l5Y+jXG4gIGNvbnN0IHJlbW90ZVN0b3JhZ2UgPSB0eXBlb2YgcHJvcHMuc3RvcmFnZSA9PT0gXCJvYmplY3RcIiA/IHByb3BzLnN0b3JhZ2UgOiBudWxsO1xuICBjb25zdCBrZXlUeXBlID0gdHlwZW9mIHByb3BzLnN0b3JhZ2UgPT09IFwic3RyaW5nXCIgPyBwcm9wcy5zdG9yYWdlIDogXCJcIjtcbiAgaWYgKHN0b3JhZ2VUYWJsZVN0b3JlLnZhbHVlID09IG51bGwpIHtcbiAgICBjb25zdCByb3V0ZSA9IHVzZVJvdXRlKCk7XG4gICAgc3RvcmFnZVRhYmxlU3RvcmUudmFsdWUgPSBuZXcgVGFibGVTdG9yZSh7XG4gICAgICAkcm91dGVyOiByb3V0ZSxcbiAgICAgIHRhYmxlTmFtZTogXCJjb2x1bW5zRmlsdGVyXCIsXG4gICAgICBrZXlUeXBlOiBrZXlUeXBlLFxuICAgICAgcmVtb3RlU3RvcmFnZVxuICAgIH0pO1xuICB9XG4gIHN0b3JhZ2VUYWJsZVN0b3JlLnZhbHVlLmlkID0gZ2V0Q3J1ZEJpbmRpbmcoKS5pZDtcbiAgcmV0dXJuIHN0b3JhZ2VUYWJsZVN0b3JlLnZhbHVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzYXZlT3B0aW9uc1RvU3RvcmFnZSh2YWx1ZTogYW55KSB7XG4gIGlmIChwcm9wcy5zdG9yYWdlID09PSBmYWxzZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBzdG9yZWRPcHRpb25zOiBhbnkgPSBjbG9uZURlZXAodmFsdWUpO1xuICAvL+WIoOmZpHBhcmVudOW8leeUqFxuICBlYWNoVHJlZShzdG9yZWRPcHRpb25zLCAoaXRlbTogYW55KSA9PiB7XG4gICAgZGVsZXRlIGl0ZW0uX19wYXJlbnQ7XG4gIH0pO1xuXG4gIGF3YWl0IGdldFN0b3JhZ2VUYWJsZSgpLnVwZGF0ZVRhYmxlVmFsdWUoc3RvcmVkT3B0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnNGcm9tU3RvcmFnZSgpIHtcbiAgaWYgKHByb3BzLnN0b3JhZ2UgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiBhd2FpdCBnZXRTdG9yYWdlVGFibGUoKS5nZXRUYWJsZVZhbHVlKCk7XG59XG5hc3luYyBmdW5jdGlvbiBjbGVhclRoaXNTdG9yYWdlKCkge1xuICBhd2FpdCBnZXRTdG9yYWdlVGFibGUoKS5jbGVhclRhYmxlVmFsdWUoKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uc0hhc2goY29sdW1uczogYW55KSB7XG4gIGNvbnN0IGtleXM6IGFueSA9IFtdO1xuICBlYWNoVHJlZShjb2x1bW5zLCAoaXRlbTogYW55KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcGljayhpdGVtLCBcImtleVwiLCBcIl9fc2hvd1wiLCBcIl9fZGlzYWJsZWRcIik7XG4gICAga2V5cy5wdXNoKEpTT04uc3RyaW5naWZ5KHRhcmdldCkpO1xuICB9KTtcbiAga2V5cy5zb3J0KCk7XG4gIGxldCBoYXNoID0gXCJcIjtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGhhc2ggKz0ga2V5O1xuICB9XG4gIHJldHVybiBoYXNoO1xufVxud2F0Y2goXG4gICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcbiAgfSxcbiAgKHZhbHVlKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKHZhbHVlKTtcbiAgfVxuKTtcblxuY29uc3QgaW5pdCA9IGFzeW5jICgpID0+IHtcbiAgc2V0Q3VycmVudFZhbHVlKHByb3BzLmNvbHVtbnMpO1xuICBjb25zdCBzdG9yZWRPcHRpb25zID0gYXdhaXQgZ2V0T3B0aW9uc0Zyb21TdG9yYWdlKCk7XG4gIGlmIChzdG9yZWRPcHRpb25zKSB7XG4gICAgY29uc3Qgc3RvcmVIYXNoID0gZ2V0Q29sdW1uc0hhc2goc3RvcmVkT3B0aW9ucyk7XG4gICAgY29uc3Qgb3B0aW9uSGFzaCA9IGdldENvbHVtbnNIYXNoKG9yaWdpbmFsLnZhbHVlKTtcbiAgICBpZiAob3B0aW9uSGFzaCAhPT0gc3RvcmVIYXNoKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImNvbHVtbnMgY2hhbmdlZCwgaWdub3JlIGxvY2FsIHN0b3JhZ2VcIik7XG4gICAgICAvLyDlpoLmnpzlrZfmrrXliJfmnInov4fkv67mlLnvvIzliJnkuI3kvb/nlKjmnKzlnLDorr7nva5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3VycmVudENvbHVtbnMudmFsdWUgPSBzdG9yZWRPcHRpb25zO1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgYXdhaXQgc3VibWl0KHRydWUpO1xuICB9XG59O1xuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGUoY2hhbmdlOiAoY3VycmVudENvbHVtbnM6IFJlZjxDb2x1bW5zRmlsdGVySXRlbVtdPikgPT4gUHJvbWlzZTx2b2lkPikge1xuICBhd2FpdCBjaGFuZ2UoY3VycmVudENvbHVtbnMpO1xuICBhd2FpdCBkb19zYXZlKCk7XG59XG5cbndhdGNoKFxuICAoKSA9PiB7XG4gICAgcmV0dXJuIG9yaWdpbmFsLnZhbHVlO1xuICB9LFxuICBhc3luYyAodmFsdWUpID0+IHtcbiAgICBhd2FpdCBpbml0KCk7XG4gIH0sXG4gIHtcbiAgICBpbW1lZGlhdGU6IHRydWVcbiAgfVxuKTtcblxuZGVmaW5lRXhwb3NlKHtcbiAgc3RhcnQsXG4gIHNhdmU6IGRvX3NhdmUsXG4gIHVwZGF0ZSxcbiAgb3JpZ2luYWwsXG4gIGNvbHVtbnM6IGN1cnJlbnRDb2x1bW5zXG59KTtcblxuZnVuY3Rpb24gYnVpbGRUZXh0KGVsZW1lbnQ6IGFueSkge1xuICByZXR1cm4gZWxlbWVudC5sYWJlbCB8fCBlbGVtZW50LnRpdGxlIHx8IGVsZW1lbnQua2V5IHx8IF90ZXh0LnZhbHVlLnVubmFtZWQ7XG59XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyLXNpbXBsZSB7XG4gIG1pbi13aWR0aDogNzYwcHg7XG4gIHBhZGRpbmctdG9wOiAyMHB4O1xufVxuXG4uZnMtdGFibGUtY29sdW1ucy1maWx0ZXIge1xuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICBbZmxleH49XCJjcm9zczpjZW50ZXJcIl0ge1xuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIFtmbGV4fj1cIm1haW46anVzdGlmeVwiXSB7XG4gICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cblxuICBbZmxleF0ge1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICBbZmxleC1ib3g9XCIxXCJdIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZmxleC1zaHJpbms6IDE7XG4gIH1cblxuICBbZmxleF0gPiAqIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgLmVsLWRyYXdlcl9fYm9keSB7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG5cbiAgLmZzLWRyYXdlci13cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG5cbiAgLmZzLWRyYXdlci1mb290ZXIge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICAuY29tcG9uZW50LS1saXN0IHtcbiAgICBtYXJnaW46IC0yMHB4O1xuXG4gICAgLml0ZW0tbGFiZWwge1xuICAgICAgZmxleDogMTtcbiAgICAgIG1pbi13aWR0aDogMDtcblxuICAgICAgLmFudC1jaGVja2JveCArIHNwYW4ge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICB9XG4gICAgLml0ZW0tcmlnaHQge1xuICAgICAgZmxleC1zaHJpbms6IDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC50aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuXG4gICAgLmNvbXBvbmVudC0tbGlzdC1pdGVtIHtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxcHg7XG5cbiAgICAgICYuZ2hvc3Qge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICAgIH1cblxuICAgICAgLmNvbXBvbmVudC0tbGlzdC1pdGVtLWhhbmRsZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICBjdXJzb3I6IG1vdmU7XG5cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXRvb2xiYXJcIj5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBvZiBjb21wdXRlZEJ1dHRvbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2VcIj5cbiAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgIDppcz1cInVpLnBvcG92ZXIubmFtZVwiXG4gICAgICAgICAgdi1pZj1cImtleSA9PT0gJ2NvbHVtbnMnICYmIGNvbHVtbnNGaWx0ZXIgJiYgY29sdW1uc0ZpbHRlcj8ubW9kZSA9PT0gJ3NpbXBsZSdcIlxuICAgICAgICAgIHYtbW9kZWw6W3VpLnBvcG92ZXIudmlzaWJsZV09XCJwb3BvdmVyVmlzaWJsZVwiXG4gICAgICAgICAgZGlzcGxheS1kaXJlY3RpdmU9XCJzaG93XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIDp3aWR0aD1cIjc2MFwiXG4gICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnBvcG92ZXIudHJpZ2dlclNsb3ROYW1lXT5cbiAgICAgICAgICAgIDxmcy1idXR0b24gdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cImhhbmRsZVNpbXBsZUNsaWNrXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnBvcG92ZXIuY29udGVudFNsb3ROYW1lXT5cbiAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcbiAgICAgICAgICAgICAgdi1pZj1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICByZWY9XCJjb2x1bW5zRmlsdGVyUmVmXCJcbiAgICAgICAgICAgICAgdi1tb2RlbDpzaG93PVwicG9wb3ZlclZpc2libGVcIlxuICAgICAgICAgICAgICBtb2RlPVwic2ltcGxlXCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwiY29sdW1uc0ZpbHRlclwiXG4gICAgICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIDpzdG9yYWdlPVwic3RvcmFnZVwiXG4gICAgICAgICAgICAgIEB1cGRhdGU6Y29sdW1ucz1cIiRlbWl0KCd1cGRhdGU6Y29sdW1ucycsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2Ugdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uY2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcbiAgICAgIHYtaWY9XCJjb2x1bW5zICYmIGNvbHVtbnNGaWx0ZXI/Lm1vZGUgIT09ICdzaW1wbGUnXCJcbiAgICAgIHJlZj1cImNvbHVtbnNGaWx0ZXJSZWZcIlxuICAgICAgOnN0b3JhZ2U9XCJzdG9yYWdlXCJcbiAgICAgIHYtYmluZD1cImNvbHVtbnNGaWx0ZXJcIlxuICAgICAgOmNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICAgIEB1cGRhdGU6Y29sdW1ucz1cIiRlbWl0KCd1cGRhdGU6Y29sdW1ucycsICRldmVudClcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCBGc1RhYmxlQ29sdW1uc0ZpbHRlciBmcm9tIFwiLi9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9pbmRleC52dWVcIjtcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFByb3BUeXBlLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBCdXR0b25zUHJvcHMsIFRhYmxlQ29sdW1uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbi8qKlxuICog5bel5YW35p2hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNUb29sYmFyXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNUYWJsZUNvbHVtbnNGaWx0ZXIgfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKntcbiAgICAgKiAgIHNlYXJjaDp7fSwg5p+l6K+iXG4gICAgICogICByZWZyZXNoOnt9LCDliLfmlrBcbiAgICAgKiAgIGNvbXBhY3Q6e30sIOe0p+WHkeaooeW8j1xuICAgICAqICAgZXhwb3J0Ont9LCDlr7zlh7pcbiAgICAgKiAgIGNvbHVtbnM6e30g5YiX6K6+572uXG4gICAgICp9XG4gICAgICoqL1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2T5YmN5piv5ZCm57Sn5YeR5qih5byPXG4gICAgICovXG4gICAgY29tcGFjdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIl+mFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxUYWJsZUNvbHVtbnNQcm9wcz4sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuS/neWtmOeUqOaIt+WIl+iuvue9rlxuICAgICAqIOS8oHN0cmluZ+WImeihqOekuuS8oOWFpee8k+WtmOeahOS4u2tleVxuICAgICAqL1xuICAgIHN0b3JhZ2U6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEJvb2xlYW5dLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe9XG4gICAgICovXG4gICAgc2xvdHM6IHt9LFxuXG4gICAgLyoqXG4gICAgICog5YiX6K6+572u6YWN572uXG4gICAgICovXG4gICAgY29sdW1uc0ZpbHRlcjoge1xuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPGFueT5cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6Y29sdW1uc1wiXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4KSB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29sdW1uc0ZpbHRlclJlZjogUmVmID0gcmVmKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRCdXR0b25zOiBCdXR0b25zUHJvcHM8dm9pZD4gPSB7XG4gICAgICAgIGNvbHVtbnM6IHtcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgY29sdW1uc0ZpbHRlclJlZi52YWx1ZS5zdGFydCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgbWVyZ2UoZGVmYXVsdEJ1dHRvbnMsIHByb3BzLmJ1dHRvbnMpO1xuICAgICAgLy8gaWYgKGRlZmF1bHRCdXR0b25zLnNlYXJjaCkge1xuICAgICAgLy8gICBkZWZhdWx0QnV0dG9ucy5zZWFyY2gudHlwZSA9IHByb3BzLnNlYXJjaCA/IFwicHJpbWFyeVwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAvLyB9XG4gICAgICAvLyBpZiAoZGVmYXVsdEJ1dHRvbnMuY29tcGFjdCkge1xuICAgICAgLy8gICBkZWZhdWx0QnV0dG9ucy5jb21wYWN0LnR5cGUgPSBwcm9wcy5jb21wYWN0ID8gXCJwcmltYXJ5XCIgOiBcImRlZmF1bHRcIjtcbiAgICAgIC8vIH1cblxuICAgICAgbGV0IHNvcnRBcnI6IEJ1dHRvblByb3BzW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGRlZmF1bHRCdXR0b25zS2V5IGluIGRlZmF1bHRCdXR0b25zKSB7XG4gICAgICAgIHNvcnRBcnIucHVzaCh7XG4gICAgICAgICAgLi4uZGVmYXVsdEJ1dHRvbnNbZGVmYXVsdEJ1dHRvbnNLZXldLFxuICAgICAgICAgIF9rZXk6IGRlZmF1bHRCdXR0b25zS2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczx2b2lkPiA9IHt9O1xuXG4gICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XG4gICAgICAgIHNvcnRlZEJ1dHRvbnNbX2tleV0gPSBpdGVtO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gc29ydGVkQnV0dG9ucztcbiAgICB9KTtcbiAgICBjb25zdCBwb3BvdmVyVmlzaWJsZSA9IHJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlU2ltcGxlQ2xpY2sgPSAoJGV2ZW50KSA9PiB7XG4gICAgICBpZiAodWkudHlwZSA9PT0gXCJlbGVtZW50XCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcG9wb3ZlclZpc2libGUudmFsdWUgPSAhcG9wb3ZlclZpc2libGUudmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjb2x1bW5zRmlsdGVyUmVmLFxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxuICAgICAgcG9wb3ZlclZpc2libGUsXG4gICAgICBoYW5kbGVTaW1wbGVDbGlja1xuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcblxuICAuZnMtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtdG9vbGJhclwiPlxuICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIG9mIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZVwiPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwidWkucG9wb3Zlci5uYW1lXCJcbiAgICAgICAgICB2LWlmPVwia2V5ID09PSAnY29sdW1ucycgJiYgY29sdW1uc0ZpbHRlciAmJiBjb2x1bW5zRmlsdGVyPy5tb2RlID09PSAnc2ltcGxlJ1wiXG4gICAgICAgICAgdi1tb2RlbDpbdWkucG9wb3Zlci52aXNpYmxlXT1cInBvcG92ZXJWaXNpYmxlXCJcbiAgICAgICAgICBkaXNwbGF5LWRpcmVjdGl2ZT1cInNob3dcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgOndpZHRoPVwiNzYwXCJcbiAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci50cmlnZ2VyU2xvdE5hbWVdPlxuICAgICAgICAgICAgPGZzLWJ1dHRvbiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaGFuZGxlU2ltcGxlQ2xpY2tcIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHRlbXBsYXRlICNbdWkucG9wb3Zlci5jb250ZW50U2xvdE5hbWVdPlxuICAgICAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgICAgICA6aXM9XCJjb2x1bW5zRmlsdGVyLmlzIHx8ICdmcy10YWJsZS1jb2x1bW5zLWZpbHRlcidcIlxuICAgICAgICAgICAgICB2LWlmPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIHJlZj1cImNvbHVtbnNGaWx0ZXJSZWZcIlxuICAgICAgICAgICAgICB2LW1vZGVsOnNob3c9XCJwb3BvdmVyVmlzaWJsZVwiXG4gICAgICAgICAgICAgIG1vZGU9XCJzaW1wbGVcIlxuICAgICAgICAgICAgICB2LWJpbmQ9XCJjb2x1bW5zRmlsdGVyXCJcbiAgICAgICAgICAgICAgOmNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgOnN0b3JhZ2U9XCJzdG9yYWdlXCJcbiAgICAgICAgICAgICAgQHVwZGF0ZTpjb2x1bW5zPVwiJGVtaXQoJ3VwZGF0ZTpjb2x1bW5zJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8ZnMtYnV0dG9uIHYtZWxzZSB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaXRlbS5jbGljaygkZXZlbnQpXCIgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb2x1bW5zRmlsdGVyLmlzIHx8ICdmcy10YWJsZS1jb2x1bW5zLWZpbHRlcidcIlxuICAgICAgdi1pZj1cImNvbHVtbnMgJiYgY29sdW1uc0ZpbHRlcj8ubW9kZSAhPT0gJ3NpbXBsZSdcIlxuICAgICAgcmVmPVwiY29sdW1uc0ZpbHRlclJlZlwiXG4gICAgICA6c3RvcmFnZT1cInN0b3JhZ2VcIlxuICAgICAgdi1iaW5kPVwiY29sdW1uc0ZpbHRlclwiXG4gICAgICA6Y29sdW1ucz1cImNvbHVtbnNcIlxuICAgICAgQHVwZGF0ZTpjb2x1bW5zPVwiJGVtaXQoJ3VwZGF0ZTpjb2x1bW5zJywgJGV2ZW50KVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IEZzVGFibGVDb2x1bW5zRmlsdGVyIGZyb20gXCIuL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2luZGV4LnZ1ZVwiO1xuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgUHJvcFR5cGUsIHJlZiwgUmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgQnV0dG9uUHJvcHMsIEJ1dHRvbnNQcm9wcywgVGFibGVDb2x1bW5zUHJvcHMgfSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiDlt6XlhbfmnaFcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1Rvb2xiYXJcIixcbiAgY29tcG9uZW50czogeyBGc1RhYmxlQ29sdW1uc0ZpbHRlciB9LFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaMiemSrumFjee9rlxuICAgICAqe1xuICAgICAqICAgc2VhcmNoOnt9LCDmn6Xor6JcbiAgICAgKiAgIHJlZnJlc2g6e30sIOWIt+aWsFxuICAgICAqICAgY29tcGFjdDp7fSwg57Sn5YeR5qih5byPXG4gICAgICogICBleHBvcnQ6e30sIOWvvOWHulxuICAgICAqICAgY29sdW1uczp7fSDliJforr7nva5cbiAgICAgKn1cbiAgICAgKiovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlvZPliY3mmK/lkKbntKflh5HmqKHlvI9cbiAgICAgKi9cbiAgICBjb21wYWN0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YiX6YWN572uXG4gICAgICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPFRhYmxlQ29sdW1uc1Byb3BzPixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5L+d5a2Y55So5oi35YiX6K6+572uXG4gICAgICog5Lygc3RyaW5n5YiZ6KGo56S65Lyg5YWl57yT5a2Y55qE5Li7a2V5XG4gICAgICovXG4gICAgc3RvcmFnZToge1xuICAgICAgdHlwZTogW1N0cmluZywgQm9vbGVhbl0sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmj5Lmp71cbiAgICAgKi9cbiAgICBzbG90czoge30sXG5cbiAgICAvKipcbiAgICAgKiDliJforr7nva7phY3nva5cbiAgICAgKi9cbiAgICBjb2x1bW5zRmlsdGVyOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8YW55PlxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTpjb2x1bW5zXCJdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHgpIHtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb2x1bW5zRmlsdGVyUmVmOiBSZWYgPSByZWYoKTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczx2b2lkPiA9IHtcbiAgICAgICAgY29sdW1uczoge1xuICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW5zRmlsdGVyUmVmLnZhbHVlLnN0YXJ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBtZXJnZShkZWZhdWx0QnV0dG9ucywgcHJvcHMuYnV0dG9ucyk7XG4gICAgICAvLyBpZiAoZGVmYXVsdEJ1dHRvbnMuc2VhcmNoKSB7XG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLnNlYXJjaC50eXBlID0gcHJvcHMuc2VhcmNoID8gXCJwcmltYXJ5XCIgOiBcImRlZmF1bHRcIjtcbiAgICAgIC8vIH1cbiAgICAgIC8vIGlmIChkZWZhdWx0QnV0dG9ucy5jb21wYWN0KSB7XG4gICAgICAvLyAgIGRlZmF1bHRCdXR0b25zLmNvbXBhY3QudHlwZSA9IHByb3BzLmNvbXBhY3QgPyBcInByaW1hcnlcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgLy8gfVxuXG4gICAgICBsZXQgc29ydEFycjogQnV0dG9uUHJvcHNbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgZGVmYXVsdEJ1dHRvbnNLZXkgaW4gZGVmYXVsdEJ1dHRvbnMpIHtcbiAgICAgICAgc29ydEFyci5wdXNoKHtcbiAgICAgICAgICAuLi5kZWZhdWx0QnV0dG9uc1tkZWZhdWx0QnV0dG9uc0tleV0sXG4gICAgICAgICAgX2tleTogZGVmYXVsdEJ1dHRvbnNLZXlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc29ydGVkQnV0dG9uczogQnV0dG9uc1Byb3BzPHZvaWQ+ID0ge307XG5cbiAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcbiAgICAgICAgc29ydGVkQnV0dG9uc1tfa2V5XSA9IGl0ZW07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3J0ZWRCdXR0b25zO1xuICAgIH0pO1xuICAgIGNvbnN0IHBvcG92ZXJWaXNpYmxlID0gcmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYW5kbGVTaW1wbGVDbGljayA9ICgkZXZlbnQpID0+IHtcbiAgICAgIGlmICh1aS50eXBlID09PSBcImVsZW1lbnRcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwb3BvdmVyVmlzaWJsZS52YWx1ZSA9ICFwb3BvdmVyVmlzaWJsZS52YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbHVtbnNGaWx0ZXJSZWYsXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXG4gICAgICBwb3BvdmVyVmlzaWJsZSxcbiAgICAgIGhhbmRsZVNpbXBsZUNsaWNrXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXRvb2xiYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIC5mcy1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCIvKiohXG4gKiBTb3J0YWJsZSAxLjE0LjBcbiAqIEBhdXRob3JcdFJ1YmFYYSAgIDx0cmFzaEBydWJheGEub3JnPlxuICogQGF1dGhvclx0b3dlbm0gICAgPG93ZW4yMzM1NUBnbWFpbC5jb20+XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuXG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSB7XG4gICAgICBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iajtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIF90eXBlb2Yob2JqKTtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcblxuICB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG5cbiAgdmFyIGtleSwgaTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gIHJldHVybiBhcnIyO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG52YXIgdmVyc2lvbiA9IFwiMS4xNC4wXCI7XG5cbmZ1bmN0aW9uIHVzZXJBZ2VudChwYXR0ZXJuKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yKSB7XG4gICAgcmV0dXJuICEhIC8qQF9fUFVSRV9fKi9uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKHBhdHRlcm4pO1xuICB9XG59XG5cbnZhciBJRTExT3JMZXNzID0gdXNlckFnZW50KC8oPzpUcmlkZW50LipydlsgOl0/MTFcXC58bXNpZXxpZW1vYmlsZXxXaW5kb3dzIFBob25lKS9pKTtcbnZhciBFZGdlID0gdXNlckFnZW50KC9FZGdlL2kpO1xudmFyIEZpcmVGb3ggPSB1c2VyQWdlbnQoL2ZpcmVmb3gvaSk7XG52YXIgU2FmYXJpID0gdXNlckFnZW50KC9zYWZhcmkvaSkgJiYgIXVzZXJBZ2VudCgvY2hyb21lL2kpICYmICF1c2VyQWdlbnQoL2FuZHJvaWQvaSk7XG52YXIgSU9TID0gdXNlckFnZW50KC9pUChhZHxvZHxob25lKS9pKTtcbnZhciBDaHJvbWVGb3JBbmRyb2lkID0gdXNlckFnZW50KC9jaHJvbWUvaSkgJiYgdXNlckFnZW50KC9hbmRyb2lkL2kpO1xuXG52YXIgY2FwdHVyZU1vZGUgPSB7XG4gIGNhcHR1cmU6IGZhbHNlLFxuICBwYXNzaXZlOiBmYWxzZVxufTtcblxuZnVuY3Rpb24gb24oZWwsIGV2ZW50LCBmbikge1xuICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmbiwgIUlFMTFPckxlc3MgJiYgY2FwdHVyZU1vZGUpO1xufVxuXG5mdW5jdGlvbiBvZmYoZWwsIGV2ZW50LCBmbikge1xuICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBmbiwgIUlFMTFPckxlc3MgJiYgY2FwdHVyZU1vZGUpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKFxuLyoqSFRNTEVsZW1lbnQqL1xuZWwsXG4vKipTdHJpbmcqL1xuc2VsZWN0b3IpIHtcbiAgaWYgKCFzZWxlY3RvcikgcmV0dXJuO1xuICBzZWxlY3RvclswXSA9PT0gJz4nICYmIChzZWxlY3RvciA9IHNlbGVjdG9yLnN1YnN0cmluZygxKSk7XG5cbiAgaWYgKGVsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChlbC5tYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiBlbC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICAgIH0gZWxzZSBpZiAoZWwubXNNYXRjaGVzU2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGVsLm1zTWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIH0gZWxzZSBpZiAoZWwud2Via2l0TWF0Y2hlc1NlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmVudE9ySG9zdChlbCkge1xuICByZXR1cm4gZWwuaG9zdCAmJiBlbCAhPT0gZG9jdW1lbnQgJiYgZWwuaG9zdC5ub2RlVHlwZSA/IGVsLmhvc3QgOiBlbC5wYXJlbnROb2RlO1xufVxuXG5mdW5jdGlvbiBjbG9zZXN0KFxuLyoqSFRNTEVsZW1lbnQqL1xuZWwsXG4vKipTdHJpbmcqL1xuc2VsZWN0b3IsXG4vKipIVE1MRWxlbWVudCovXG5jdHgsIGluY2x1ZGVDVFgpIHtcbiAgaWYgKGVsKSB7XG4gICAgY3R4ID0gY3R4IHx8IGRvY3VtZW50O1xuXG4gICAgZG8ge1xuICAgICAgaWYgKHNlbGVjdG9yICE9IG51bGwgJiYgKHNlbGVjdG9yWzBdID09PSAnPicgPyBlbC5wYXJlbnROb2RlID09PSBjdHggJiYgbWF0Y2hlcyhlbCwgc2VsZWN0b3IpIDogbWF0Y2hlcyhlbCwgc2VsZWN0b3IpKSB8fCBpbmNsdWRlQ1RYICYmIGVsID09PSBjdHgpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWwgPT09IGN0eCkgYnJlYWs7XG4gICAgICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG4gICAgfSB3aGlsZSAoZWwgPSBnZXRQYXJlbnRPckhvc3QoZWwpKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgUl9TUEFDRSA9IC9cXHMrL2c7XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsLCBuYW1lLCBzdGF0ZSkge1xuICBpZiAoZWwgJiYgbmFtZSkge1xuICAgIGlmIChlbC5jbGFzc0xpc3QpIHtcbiAgICAgIGVsLmNsYXNzTGlzdFtzdGF0ZSA/ICdhZGQnIDogJ3JlbW92ZSddKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gKCcgJyArIGVsLmNsYXNzTmFtZSArICcgJykucmVwbGFjZShSX1NQQUNFLCAnICcpLnJlcGxhY2UoJyAnICsgbmFtZSArICcgJywgJyAnKTtcbiAgICAgIGVsLmNsYXNzTmFtZSA9IChjbGFzc05hbWUgKyAoc3RhdGUgPyAnICcgKyBuYW1lIDogJycpKS5yZXBsYWNlKFJfU1BBQ0UsICcgJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNzcyhlbCwgcHJvcCwgdmFsKSB7XG4gIHZhciBzdHlsZSA9IGVsICYmIGVsLnN0eWxlO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIGlmICh2YWwgPT09IHZvaWQgMCkge1xuICAgICAgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUpIHtcbiAgICAgICAgdmFsID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgJycpO1xuICAgICAgfSBlbHNlIGlmIChlbC5jdXJyZW50U3R5bGUpIHtcbiAgICAgICAgdmFsID0gZWwuY3VycmVudFN0eWxlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJvcCA9PT0gdm9pZCAwID8gdmFsIDogdmFsW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIShwcm9wIGluIHN0eWxlKSAmJiBwcm9wLmluZGV4T2YoJ3dlYmtpdCcpID09PSAtMSkge1xuICAgICAgICBwcm9wID0gJy13ZWJraXQtJyArIHByb3A7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlW3Byb3BdID0gdmFsICsgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gJycgOiAncHgnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0cml4KGVsLCBzZWxmT25seSkge1xuICB2YXIgYXBwbGllZFRyYW5zZm9ybXMgPSAnJztcblxuICBpZiAodHlwZW9mIGVsID09PSAnc3RyaW5nJykge1xuICAgIGFwcGxpZWRUcmFuc2Zvcm1zID0gZWw7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHRyYW5zZm9ybSA9IGNzcyhlbCwgJ3RyYW5zZm9ybScpO1xuXG4gICAgICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybSAhPT0gJ25vbmUnKSB7XG4gICAgICAgIGFwcGxpZWRUcmFuc2Zvcm1zID0gdHJhbnNmb3JtICsgJyAnICsgYXBwbGllZFRyYW5zZm9ybXM7XG4gICAgICB9XG4gICAgICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cbiAgICB9IHdoaWxlICghc2VsZk9ubHkgJiYgKGVsID0gZWwucGFyZW50Tm9kZSkpO1xuICB9XG5cbiAgdmFyIG1hdHJpeEZuID0gd2luZG93LkRPTU1hdHJpeCB8fCB3aW5kb3cuV2ViS2l0Q1NTTWF0cml4IHx8IHdpbmRvdy5DU1NNYXRyaXggfHwgd2luZG93Lk1TQ1NTTWF0cml4O1xuICAvKmpzaGludCAtVzA1NiAqL1xuXG4gIHJldHVybiBtYXRyaXhGbiAmJiBuZXcgbWF0cml4Rm4oYXBwbGllZFRyYW5zZm9ybXMpO1xufVxuXG5mdW5jdGlvbiBmaW5kKGN0eCwgdGFnTmFtZSwgaXRlcmF0b3IpIHtcbiAgaWYgKGN0eCkge1xuICAgIHZhciBsaXN0ID0gY3R4LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpLFxuICAgICAgICBpID0gMCxcbiAgICAgICAgbiA9IGxpc3QubGVuZ3RoO1xuXG4gICAgaWYgKGl0ZXJhdG9yKSB7XG4gICAgICBmb3IgKDsgaSA8IG47IGkrKykge1xuICAgICAgICBpdGVyYXRvcihsaXN0W2ldLCBpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpIHtcbiAgdmFyIHNjcm9sbGluZ0VsZW1lbnQgPSBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50O1xuXG4gIGlmIChzY3JvbGxpbmdFbGVtZW50KSB7XG4gICAgcmV0dXJuIHNjcm9sbGluZ0VsZW1lbnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBcImJvdW5kaW5nIGNsaWVudCByZWN0XCIgb2YgZ2l2ZW4gZWxlbWVudFxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgICAgICAgICAgICAgICAgICAgICBUaGUgZWxlbWVudCB3aG9zZSBib3VuZGluZ0NsaWVudFJlY3QgaXMgd2FudGVkXG4gKiBAcGFyYW0gIHtbQm9vbGVhbl19IHJlbGF0aXZlVG9Db250YWluaW5nQmxvY2sgIFdoZXRoZXIgdGhlIHJlY3Qgc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGJsb2NrIG9mIChpbmNsdWRpbmcpIHRoZSBjb250YWluZXJcbiAqIEBwYXJhbSAge1tCb29sZWFuXX0gcmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCAgV2hldGhlciB0aGUgcmVjdCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHJlbGF0aXZlIHBhcmVudCBvZiAoaW5jbHVkaW5nKSB0aGUgY29udGFpZW5yXG4gKiBAcGFyYW0gIHtbQm9vbGVhbl19IHVuZG9TY2FsZSAgICAgICAgICAgICAgICAgIFdoZXRoZXIgdGhlIGNvbnRhaW5lcidzIHNjYWxlKCkgc2hvdWxkIGJlIHVuZG9uZVxuICogQHBhcmFtICB7W0hUTUxFbGVtZW50XX0gY29udGFpbmVyICAgICAgICAgICAgICBUaGUgcGFyZW50IHRoZSBlbGVtZW50IHdpbGwgYmUgcGxhY2VkIGluXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBib3VuZGluZ0NsaWVudFJlY3Qgb2YgZWwsIHdpdGggc3BlY2lmaWVkIGFkanVzdG1lbnRzXG4gKi9cblxuXG5mdW5jdGlvbiBnZXRSZWN0KGVsLCByZWxhdGl2ZVRvQ29udGFpbmluZ0Jsb2NrLCByZWxhdGl2ZVRvTm9uU3RhdGljUGFyZW50LCB1bmRvU2NhbGUsIGNvbnRhaW5lcikge1xuICBpZiAoIWVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAmJiBlbCAhPT0gd2luZG93KSByZXR1cm47XG4gIHZhciBlbFJlY3QsIHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCwgaGVpZ2h0LCB3aWR0aDtcblxuICBpZiAoZWwgIT09IHdpbmRvdyAmJiBlbC5wYXJlbnROb2RlICYmIGVsICE9PSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCkpIHtcbiAgICBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0b3AgPSBlbFJlY3QudG9wO1xuICAgIGxlZnQgPSBlbFJlY3QubGVmdDtcbiAgICBib3R0b20gPSBlbFJlY3QuYm90dG9tO1xuICAgIHJpZ2h0ID0gZWxSZWN0LnJpZ2h0O1xuICAgIGhlaWdodCA9IGVsUmVjdC5oZWlnaHQ7XG4gICAgd2lkdGggPSBlbFJlY3Qud2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgdG9wID0gMDtcbiAgICBsZWZ0ID0gMDtcbiAgICBib3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgcmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgfVxuXG4gIGlmICgocmVsYXRpdmVUb0NvbnRhaW5pbmdCbG9jayB8fCByZWxhdGl2ZVRvTm9uU3RhdGljUGFyZW50KSAmJiBlbCAhPT0gd2luZG93KSB7XG4gICAgLy8gQWRqdXN0IGZvciB0cmFuc2xhdGUoKVxuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lciB8fCBlbC5wYXJlbnROb2RlOyAvLyBzb2x2ZXMgIzExMjMgKHNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM3OTUzODA2LzYwODgzMTIpXG4gICAgLy8gTm90IG5lZWRlZCBvbiA8PSBJRTExXG5cbiAgICBpZiAoIUlFMTFPckxlc3MpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKGNvbnRhaW5lciAmJiBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICYmIChjc3MoY29udGFpbmVyLCAndHJhbnNmb3JtJykgIT09ICdub25lJyB8fCByZWxhdGl2ZVRvTm9uU3RhdGljUGFyZW50ICYmIGNzcyhjb250YWluZXIsICdwb3NpdGlvbicpICE9PSAnc3RhdGljJykpIHtcbiAgICAgICAgICB2YXIgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgLy8gU2V0IHJlbGF0aXZlIHRvIGVkZ2VzIG9mIHBhZGRpbmcgYm94IG9mIGNvbnRhaW5lclxuXG4gICAgICAgICAgdG9wIC09IGNvbnRhaW5lclJlY3QudG9wICsgcGFyc2VJbnQoY3NzKGNvbnRhaW5lciwgJ2JvcmRlci10b3Atd2lkdGgnKSk7XG4gICAgICAgICAgbGVmdCAtPSBjb250YWluZXJSZWN0LmxlZnQgKyBwYXJzZUludChjc3MoY29udGFpbmVyLCAnYm9yZGVyLWxlZnQtd2lkdGgnKSk7XG4gICAgICAgICAgYm90dG9tID0gdG9wICsgZWxSZWN0LmhlaWdodDtcbiAgICAgICAgICByaWdodCA9IGxlZnQgKyBlbFJlY3Qud2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXG4gICAgICB9IHdoaWxlIChjb250YWluZXIgPSBjb250YWluZXIucGFyZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVuZG9TY2FsZSAmJiBlbCAhPT0gd2luZG93KSB7XG4gICAgLy8gQWRqdXN0IGZvciBzY2FsZSgpXG4gICAgdmFyIGVsTWF0cml4ID0gbWF0cml4KGNvbnRhaW5lciB8fCBlbCksXG4gICAgICAgIHNjYWxlWCA9IGVsTWF0cml4ICYmIGVsTWF0cml4LmEsXG4gICAgICAgIHNjYWxlWSA9IGVsTWF0cml4ICYmIGVsTWF0cml4LmQ7XG5cbiAgICBpZiAoZWxNYXRyaXgpIHtcbiAgICAgIHRvcCAvPSBzY2FsZVk7XG4gICAgICBsZWZ0IC89IHNjYWxlWDtcbiAgICAgIHdpZHRoIC89IHNjYWxlWDtcbiAgICAgIGhlaWdodCAvPSBzY2FsZVk7XG4gICAgICBib3R0b20gPSB0b3AgKyBoZWlnaHQ7XG4gICAgICByaWdodCA9IGxlZnQgKyB3aWR0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogdG9wLFxuICAgIGxlZnQ6IGxlZnQsXG4gICAgYm90dG9tOiBib3R0b20sXG4gICAgcmlnaHQ6IHJpZ2h0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYSBzaWRlIG9mIGFuIGVsZW1lbnQgaXMgc2Nyb2xsZWQgcGFzdCBhIHNpZGUgb2YgaXRzIHBhcmVudHNcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSAgZWwgICAgICAgICAgIFRoZSBlbGVtZW50IHdobydzIHNpZGUgYmVpbmcgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgaXMgaW4gcXVlc3Rpb25cbiAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgZWxTaWRlICAgICAgIFNpZGUgb2YgdGhlIGVsZW1lbnQgaW4gcXVlc3Rpb24gKCd0b3AnLCAnbGVmdCcsICdyaWdodCcsICdib3R0b20nKVxuICogQHBhcmFtICB7U3RyaW5nfSAgICAgICBwYXJlbnRTaWRlICAgU2lkZSBvZiB0aGUgcGFyZW50IGluIHF1ZXN0aW9uICgndG9wJywgJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJylcbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSAgICAgICAgICAgICAgIFRoZSBwYXJlbnQgc2Nyb2xsIGVsZW1lbnQgdGhhdCB0aGUgZWwncyBzaWRlIGlzIHNjcm9sbGVkIHBhc3QsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gc3VjaCBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiBpc1Njcm9sbGVkUGFzdChlbCwgZWxTaWRlLCBwYXJlbnRTaWRlKSB7XG4gIHZhciBwYXJlbnQgPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbCwgdHJ1ZSksXG4gICAgICBlbFNpZGVWYWwgPSBnZXRSZWN0KGVsKVtlbFNpZGVdO1xuICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cbiAgd2hpbGUgKHBhcmVudCkge1xuICAgIHZhciBwYXJlbnRTaWRlVmFsID0gZ2V0UmVjdChwYXJlbnQpW3BhcmVudFNpZGVdLFxuICAgICAgICB2aXNpYmxlID0gdm9pZCAwO1xuXG4gICAgaWYgKHBhcmVudFNpZGUgPT09ICd0b3AnIHx8IHBhcmVudFNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgdmlzaWJsZSA9IGVsU2lkZVZhbCA+PSBwYXJlbnRTaWRlVmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpYmxlID0gZWxTaWRlVmFsIDw9IHBhcmVudFNpZGVWYWw7XG4gICAgfVxuXG4gICAgaWYgKCF2aXNpYmxlKSByZXR1cm4gcGFyZW50O1xuICAgIGlmIChwYXJlbnQgPT09IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKSkgYnJlYWs7XG4gICAgcGFyZW50ID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQocGFyZW50LCBmYWxzZSk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEdldHMgbnRoIGNoaWxkIG9mIGVsLCBpZ25vcmluZyBoaWRkZW4gY2hpbGRyZW4sIHNvcnRhYmxlJ3MgZWxlbWVudHMgKGRvZXMgbm90IGlnbm9yZSBjbG9uZSBpZiBpdCdzIHZpc2libGUpXG4gKiBhbmQgbm9uLWRyYWdnYWJsZSBlbGVtZW50c1xuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsICAgICAgIFRoZSBwYXJlbnQgZWxlbWVudFxuICogQHBhcmFtICB7TnVtYmVyfSBjaGlsZE51bSAgICAgIFRoZSBpbmRleCBvZiB0aGUgY2hpbGRcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyAgICAgICBQYXJlbnQgU29ydGFibGUncyBvcHRpb25zXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gICAgICAgICAgVGhlIGNoaWxkIGF0IGluZGV4IGNoaWxkTnVtLCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICovXG5cblxuZnVuY3Rpb24gZ2V0Q2hpbGQoZWwsIGNoaWxkTnVtLCBvcHRpb25zLCBpbmNsdWRlRHJhZ0VsKSB7XG4gIHZhciBjdXJyZW50Q2hpbGQgPSAwLFxuICAgICAgaSA9IDAsXG4gICAgICBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuO1xuXG4gIHdoaWxlIChpIDwgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgaWYgKGNoaWxkcmVuW2ldLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBjaGlsZHJlbltpXSAhPT0gU29ydGFibGUuZ2hvc3QgJiYgKGluY2x1ZGVEcmFnRWwgfHwgY2hpbGRyZW5baV0gIT09IFNvcnRhYmxlLmRyYWdnZWQpICYmIGNsb3Nlc3QoY2hpbGRyZW5baV0sIG9wdGlvbnMuZHJhZ2dhYmxlLCBlbCwgZmFsc2UpKSB7XG4gICAgICBpZiAoY3VycmVudENoaWxkID09PSBjaGlsZE51bSkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW5baV07XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRDaGlsZCsrO1xuICAgIH1cblxuICAgIGkrKztcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBsYXN0IGNoaWxkIGluIHRoZSBlbCwgaWdub3JpbmcgZ2hvc3RFbCBvciBpbnZpc2libGUgZWxlbWVudHMgKGNsb25lcylcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbCAgICAgICBQYXJlbnQgZWxlbWVudFxuICogQHBhcmFtICB7c2VsZWN0b3J9IHNlbGVjdG9yICAgIEFueSBvdGhlciBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gICAgICAgICAgVGhlIGxhc3QgY2hpbGQsIGlnbm9yaW5nIGdob3N0RWxcbiAqL1xuXG5cbmZ1bmN0aW9uIGxhc3RDaGlsZChlbCwgc2VsZWN0b3IpIHtcbiAgdmFyIGxhc3QgPSBlbC5sYXN0RWxlbWVudENoaWxkO1xuXG4gIHdoaWxlIChsYXN0ICYmIChsYXN0ID09PSBTb3J0YWJsZS5naG9zdCB8fCBjc3MobGFzdCwgJ2Rpc3BsYXknKSA9PT0gJ25vbmUnIHx8IHNlbGVjdG9yICYmICFtYXRjaGVzKGxhc3QsIHNlbGVjdG9yKSkpIHtcbiAgICBsYXN0ID0gbGFzdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICB9XG5cbiAgcmV0dXJuIGxhc3QgfHwgbnVsbDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXggb2YgYW4gZWxlbWVudCB3aXRoaW4gaXRzIHBhcmVudCBmb3IgYSBzZWxlY3RlZCBzZXQgb2ZcbiAqIGVsZW1lbnRzXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWxcbiAqIEBwYXJhbSAge3NlbGVjdG9yfSBzZWxlY3RvclxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5cblxuZnVuY3Rpb24gaW5kZXgoZWwsIHNlbGVjdG9yKSB7XG4gIHZhciBpbmRleCA9IDA7XG5cbiAgaWYgKCFlbCB8fCAhZWwucGFyZW50Tm9kZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cblxuICB3aGlsZSAoZWwgPSBlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgaWYgKGVsLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdURU1QTEFURScgJiYgZWwgIT09IFNvcnRhYmxlLmNsb25lICYmICghc2VsZWN0b3IgfHwgbWF0Y2hlcyhlbCwgc2VsZWN0b3IpKSkge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIHNjcm9sbCBvZmZzZXQgb2YgdGhlIGdpdmVuIGVsZW1lbnQsIGFkZGVkIHdpdGggYWxsIHRoZSBzY3JvbGwgb2Zmc2V0cyBvZiBwYXJlbnQgZWxlbWVudHMuXG4gKiBUaGUgdmFsdWUgaXMgcmV0dXJuZWQgaW4gcmVhbCBwaXhlbHMuXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWxcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICBPZmZzZXRzIGluIHRoZSBmb3JtYXQgb2YgW2xlZnQsIHRvcF1cbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJlbGF0aXZlU2Nyb2xsT2Zmc2V0KGVsKSB7XG4gIHZhciBvZmZzZXRMZWZ0ID0gMCxcbiAgICAgIG9mZnNldFRvcCA9IDAsXG4gICAgICB3aW5TY3JvbGxlciA9IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcblxuICBpZiAoZWwpIHtcbiAgICBkbyB7XG4gICAgICB2YXIgZWxNYXRyaXggPSBtYXRyaXgoZWwpLFxuICAgICAgICAgIHNjYWxlWCA9IGVsTWF0cml4LmEsXG4gICAgICAgICAgc2NhbGVZID0gZWxNYXRyaXguZDtcbiAgICAgIG9mZnNldExlZnQgKz0gZWwuc2Nyb2xsTGVmdCAqIHNjYWxlWDtcbiAgICAgIG9mZnNldFRvcCArPSBlbC5zY3JvbGxUb3AgKiBzY2FsZVk7XG4gICAgfSB3aGlsZSAoZWwgIT09IHdpblNjcm9sbGVyICYmIChlbCA9IGVsLnBhcmVudE5vZGUpKTtcbiAgfVxuXG4gIHJldHVybiBbb2Zmc2V0TGVmdCwgb2Zmc2V0VG9wXTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG9iamVjdCB3aXRoaW4gdGhlIGdpdmVuIGFycmF5XG4gKiBAcGFyYW0gIHtBcnJheX0gYXJyICAgQXJyYXkgdGhhdCBtYXkgb3IgbWF5IG5vdCBob2xkIHRoZSBvYmplY3RcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqICBBbiBvYmplY3QgdGhhdCBoYXMgYSBrZXktdmFsdWUgcGFpciB1bmlxdWUgdG8gYW5kIGlkZW50aWNhbCB0byBhIGtleS12YWx1ZSBwYWlyIGluIHRoZSBvYmplY3QgeW91IHdhbnQgdG8gZmluZFxuICogQHJldHVybiB7TnVtYmVyfSAgICAgIFRoZSBpbmRleCBvZiB0aGUgb2JqZWN0IGluIHRoZSBhcnJheSwgb3IgLTFcbiAqL1xuXG5cbmZ1bmN0aW9uIGluZGV4T2ZPYmplY3QoYXJyLCBvYmopIHtcbiAgZm9yICh2YXIgaSBpbiBhcnIpIHtcbiAgICBpZiAoIWFyci5oYXNPd25Qcm9wZXJ0eShpKSkgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkgJiYgb2JqW2tleV0gPT09IGFycltpXVtrZXldKSByZXR1cm4gTnVtYmVyKGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZWwsIGluY2x1ZGVTZWxmKSB7XG4gIC8vIHNraXAgdG8gd2luZG93XG4gIGlmICghZWwgfHwgIWVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkgcmV0dXJuIGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbiAgdmFyIGVsZW0gPSBlbDtcbiAgdmFyIGdvdFNlbGYgPSBmYWxzZTtcblxuICBkbyB7XG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBnZXQgZWxlbSBjc3MgaWYgaXQgaXNuJ3QgZXZlbiBvdmVyZmxvd2luZyBpbiB0aGUgZmlyc3QgcGxhY2UgKHBlcmZvcm1hbmNlKVxuICAgIGlmIChlbGVtLmNsaWVudFdpZHRoIDwgZWxlbS5zY3JvbGxXaWR0aCB8fCBlbGVtLmNsaWVudEhlaWdodCA8IGVsZW0uc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICB2YXIgZWxlbUNTUyA9IGNzcyhlbGVtKTtcblxuICAgICAgaWYgKGVsZW0uY2xpZW50V2lkdGggPCBlbGVtLnNjcm9sbFdpZHRoICYmIChlbGVtQ1NTLm92ZXJmbG93WCA9PSAnYXV0bycgfHwgZWxlbUNTUy5vdmVyZmxvd1ggPT0gJ3Njcm9sbCcpIHx8IGVsZW0uY2xpZW50SGVpZ2h0IDwgZWxlbS5zY3JvbGxIZWlnaHQgJiYgKGVsZW1DU1Mub3ZlcmZsb3dZID09ICdhdXRvJyB8fCBlbGVtQ1NTLm92ZXJmbG93WSA9PSAnc2Nyb2xsJykpIHtcbiAgICAgICAgaWYgKCFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCB8fCBlbGVtID09PSBkb2N1bWVudC5ib2R5KSByZXR1cm4gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuICAgICAgICBpZiAoZ290U2VsZiB8fCBpbmNsdWRlU2VsZikgcmV0dXJuIGVsZW07XG4gICAgICAgIGdvdFNlbGYgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG5cbiAgfSB3aGlsZSAoZWxlbSA9IGVsZW0ucGFyZW50Tm9kZSk7XG5cbiAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbn1cblxuZnVuY3Rpb24gZXh0ZW5kKGRzdCwgc3JjKSB7XG4gIGlmIChkc3QgJiYgc3JjKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgICAgaWYgKHNyYy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGRzdFtrZXldID0gc3JjW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRzdDtcbn1cblxuZnVuY3Rpb24gaXNSZWN0RXF1YWwocmVjdDEsIHJlY3QyKSB7XG4gIHJldHVybiBNYXRoLnJvdW5kKHJlY3QxLnRvcCkgPT09IE1hdGgucm91bmQocmVjdDIudG9wKSAmJiBNYXRoLnJvdW5kKHJlY3QxLmxlZnQpID09PSBNYXRoLnJvdW5kKHJlY3QyLmxlZnQpICYmIE1hdGgucm91bmQocmVjdDEuaGVpZ2h0KSA9PT0gTWF0aC5yb3VuZChyZWN0Mi5oZWlnaHQpICYmIE1hdGgucm91bmQocmVjdDEud2lkdGgpID09PSBNYXRoLnJvdW5kKHJlY3QyLndpZHRoKTtcbn1cblxudmFyIF90aHJvdHRsZVRpbWVvdXQ7XG5cbmZ1bmN0aW9uIHRocm90dGxlKGNhbGxiYWNrLCBtcykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghX3Rocm90dGxlVGltZW91dCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbChfdGhpcywgYXJnc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIF90aHJvdHRsZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3Rocm90dGxlVGltZW91dCA9IHZvaWQgMDtcbiAgICAgIH0sIG1zKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNhbmNlbFRocm90dGxlKCkge1xuICBjbGVhclRpbWVvdXQoX3Rocm90dGxlVGltZW91dCk7XG4gIF90aHJvdHRsZVRpbWVvdXQgPSB2b2lkIDA7XG59XG5cbmZ1bmN0aW9uIHNjcm9sbEJ5KGVsLCB4LCB5KSB7XG4gIGVsLnNjcm9sbExlZnQgKz0geDtcbiAgZWwuc2Nyb2xsVG9wICs9IHk7XG59XG5cbmZ1bmN0aW9uIGNsb25lKGVsKSB7XG4gIHZhciBQb2x5bWVyID0gd2luZG93LlBvbHltZXI7XG4gIHZhciAkID0gd2luZG93LmpRdWVyeSB8fCB3aW5kb3cuWmVwdG87XG5cbiAgaWYgKFBvbHltZXIgJiYgUG9seW1lci5kb20pIHtcbiAgICByZXR1cm4gUG9seW1lci5kb20oZWwpLmNsb25lTm9kZSh0cnVlKTtcbiAgfSBlbHNlIGlmICgkKSB7XG4gICAgcmV0dXJuICQoZWwpLmNsb25lKHRydWUpWzBdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbC5jbG9uZU5vZGUodHJ1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVjdChlbCwgcmVjdCkge1xuICBjc3MoZWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICBjc3MoZWwsICd0b3AnLCByZWN0LnRvcCk7XG4gIGNzcyhlbCwgJ2xlZnQnLCByZWN0LmxlZnQpO1xuICBjc3MoZWwsICd3aWR0aCcsIHJlY3Qud2lkdGgpO1xuICBjc3MoZWwsICdoZWlnaHQnLCByZWN0LmhlaWdodCk7XG59XG5cbmZ1bmN0aW9uIHVuc2V0UmVjdChlbCkge1xuICBjc3MoZWwsICdwb3NpdGlvbicsICcnKTtcbiAgY3NzKGVsLCAndG9wJywgJycpO1xuICBjc3MoZWwsICdsZWZ0JywgJycpO1xuICBjc3MoZWwsICd3aWR0aCcsICcnKTtcbiAgY3NzKGVsLCAnaGVpZ2h0JywgJycpO1xufVxuXG52YXIgZXhwYW5kbyA9ICdTb3J0YWJsZScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuZnVuY3Rpb24gQW5pbWF0aW9uU3RhdGVNYW5hZ2VyKCkge1xuICB2YXIgYW5pbWF0aW9uU3RhdGVzID0gW10sXG4gICAgICBhbmltYXRpb25DYWxsYmFja0lkO1xuICByZXR1cm4ge1xuICAgIGNhcHR1cmVBbmltYXRpb25TdGF0ZTogZnVuY3Rpb24gY2FwdHVyZUFuaW1hdGlvblN0YXRlKCkge1xuICAgICAgYW5pbWF0aW9uU3RhdGVzID0gW107XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbmltYXRpb24pIHJldHVybjtcbiAgICAgIHZhciBjaGlsZHJlbiA9IFtdLnNsaWNlLmNhbGwodGhpcy5lbC5jaGlsZHJlbik7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBpZiAoY3NzKGNoaWxkLCAnZGlzcGxheScpID09PSAnbm9uZScgfHwgY2hpbGQgPT09IFNvcnRhYmxlLmdob3N0KSByZXR1cm47XG4gICAgICAgIGFuaW1hdGlvblN0YXRlcy5wdXNoKHtcbiAgICAgICAgICB0YXJnZXQ6IGNoaWxkLFxuICAgICAgICAgIHJlY3Q6IGdldFJlY3QoY2hpbGQpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhciBmcm9tUmVjdCA9IF9vYmplY3RTcHJlYWQyKHt9LCBhbmltYXRpb25TdGF0ZXNbYW5pbWF0aW9uU3RhdGVzLmxlbmd0aCAtIDFdLnJlY3QpOyAvLyBJZiBhbmltYXRpbmc6IGNvbXBlbnNhdGUgZm9yIGN1cnJlbnQgYW5pbWF0aW9uXG5cblxuICAgICAgICBpZiAoY2hpbGQudGhpc0FuaW1hdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgdmFyIGNoaWxkTWF0cml4ID0gbWF0cml4KGNoaWxkLCB0cnVlKTtcblxuICAgICAgICAgIGlmIChjaGlsZE1hdHJpeCkge1xuICAgICAgICAgICAgZnJvbVJlY3QudG9wIC09IGNoaWxkTWF0cml4LmY7XG4gICAgICAgICAgICBmcm9tUmVjdC5sZWZ0IC09IGNoaWxkTWF0cml4LmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQuZnJvbVJlY3QgPSBmcm9tUmVjdDtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYWRkQW5pbWF0aW9uU3RhdGU6IGZ1bmN0aW9uIGFkZEFuaW1hdGlvblN0YXRlKHN0YXRlKSB7XG4gICAgICBhbmltYXRpb25TdGF0ZXMucHVzaChzdGF0ZSk7XG4gICAgfSxcbiAgICByZW1vdmVBbmltYXRpb25TdGF0ZTogZnVuY3Rpb24gcmVtb3ZlQW5pbWF0aW9uU3RhdGUodGFyZ2V0KSB7XG4gICAgICBhbmltYXRpb25TdGF0ZXMuc3BsaWNlKGluZGV4T2ZPYmplY3QoYW5pbWF0aW9uU3RhdGVzLCB7XG4gICAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgICB9KSwgMSk7XG4gICAgfSxcbiAgICBhbmltYXRlQWxsOiBmdW5jdGlvbiBhbmltYXRlQWxsKGNhbGxiYWNrKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbmltYXRpb24pIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGFuaW1hdGlvbkNhbGxiYWNrSWQpO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBhbmltYXRpbmcgPSBmYWxzZSxcbiAgICAgICAgICBhbmltYXRpb25UaW1lID0gMDtcbiAgICAgIGFuaW1hdGlvblN0YXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICB2YXIgdGltZSA9IDAsXG4gICAgICAgICAgICB0YXJnZXQgPSBzdGF0ZS50YXJnZXQsXG4gICAgICAgICAgICBmcm9tUmVjdCA9IHRhcmdldC5mcm9tUmVjdCxcbiAgICAgICAgICAgIHRvUmVjdCA9IGdldFJlY3QodGFyZ2V0KSxcbiAgICAgICAgICAgIHByZXZGcm9tUmVjdCA9IHRhcmdldC5wcmV2RnJvbVJlY3QsXG4gICAgICAgICAgICBwcmV2VG9SZWN0ID0gdGFyZ2V0LnByZXZUb1JlY3QsXG4gICAgICAgICAgICBhbmltYXRpbmdSZWN0ID0gc3RhdGUucmVjdCxcbiAgICAgICAgICAgIHRhcmdldE1hdHJpeCA9IG1hdHJpeCh0YXJnZXQsIHRydWUpO1xuXG4gICAgICAgIGlmICh0YXJnZXRNYXRyaXgpIHtcbiAgICAgICAgICAvLyBDb21wZW5zYXRlIGZvciBjdXJyZW50IGFuaW1hdGlvblxuICAgICAgICAgIHRvUmVjdC50b3AgLT0gdGFyZ2V0TWF0cml4LmY7XG4gICAgICAgICAgdG9SZWN0LmxlZnQgLT0gdGFyZ2V0TWF0cml4LmU7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXQudG9SZWN0ID0gdG9SZWN0O1xuXG4gICAgICAgIGlmICh0YXJnZXQudGhpc0FuaW1hdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgLy8gQ291bGQgYWxzbyBjaGVjayBpZiBhbmltYXRpbmdSZWN0IGlzIGJldHdlZW4gZnJvbVJlY3QgYW5kIHRvUmVjdFxuICAgICAgICAgIGlmIChpc1JlY3RFcXVhbChwcmV2RnJvbVJlY3QsIHRvUmVjdCkgJiYgIWlzUmVjdEVxdWFsKGZyb21SZWN0LCB0b1JlY3QpICYmIC8vIE1ha2Ugc3VyZSBhbmltYXRpbmdSZWN0IGlzIG9uIGxpbmUgYmV0d2VlbiB0b1JlY3QgJiBmcm9tUmVjdFxuICAgICAgICAgIChhbmltYXRpbmdSZWN0LnRvcCAtIHRvUmVjdC50b3ApIC8gKGFuaW1hdGluZ1JlY3QubGVmdCAtIHRvUmVjdC5sZWZ0KSA9PT0gKGZyb21SZWN0LnRvcCAtIHRvUmVjdC50b3ApIC8gKGZyb21SZWN0LmxlZnQgLSB0b1JlY3QubGVmdCkpIHtcbiAgICAgICAgICAgIC8vIElmIHJldHVybmluZyB0byBzYW1lIHBsYWNlIGFzIHN0YXJ0ZWQgZnJvbSBhbmltYXRpb24gYW5kIG9uIHNhbWUgYXhpc1xuICAgICAgICAgICAgdGltZSA9IGNhbGN1bGF0ZVJlYWxUaW1lKGFuaW1hdGluZ1JlY3QsIHByZXZGcm9tUmVjdCwgcHJldlRvUmVjdCwgX3RoaXMub3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGlmIGZyb21SZWN0ICE9IHRvUmVjdDogYW5pbWF0ZVxuXG5cbiAgICAgICAgaWYgKCFpc1JlY3RFcXVhbCh0b1JlY3QsIGZyb21SZWN0KSkge1xuICAgICAgICAgIHRhcmdldC5wcmV2RnJvbVJlY3QgPSBmcm9tUmVjdDtcbiAgICAgICAgICB0YXJnZXQucHJldlRvUmVjdCA9IHRvUmVjdDtcblxuICAgICAgICAgIGlmICghdGltZSkge1xuICAgICAgICAgICAgdGltZSA9IF90aGlzLm9wdGlvbnMuYW5pbWF0aW9uO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzLmFuaW1hdGUodGFyZ2V0LCBhbmltYXRpbmdSZWN0LCB0b1JlY3QsIHRpbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRpbWUpIHtcbiAgICAgICAgICBhbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgIGFuaW1hdGlvblRpbWUgPSBNYXRoLm1heChhbmltYXRpb25UaW1lLCB0aW1lKTtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGFyZ2V0LmFuaW1hdGlvblJlc2V0VGltZXIpO1xuICAgICAgICAgIHRhcmdldC5hbmltYXRpb25SZXNldFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0YXJnZXQuYW5pbWF0aW9uVGltZSA9IDA7XG4gICAgICAgICAgICB0YXJnZXQucHJldkZyb21SZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHRhcmdldC5mcm9tUmVjdCA9IG51bGw7XG4gICAgICAgICAgICB0YXJnZXQucHJldlRvUmVjdCA9IG51bGw7XG4gICAgICAgICAgICB0YXJnZXQudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gbnVsbDtcbiAgICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgICB0YXJnZXQudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gdGltZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbGVhclRpbWVvdXQoYW5pbWF0aW9uQ2FsbGJhY2tJZCk7XG5cbiAgICAgIGlmICghYW5pbWF0aW5nKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGNhbGxiYWNrKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRpb25DYWxsYmFja0lkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcbiAgICAgICAgfSwgYW5pbWF0aW9uVGltZSk7XG4gICAgICB9XG5cbiAgICAgIGFuaW1hdGlvblN0YXRlcyA9IFtdO1xuICAgIH0sXG4gICAgYW5pbWF0ZTogZnVuY3Rpb24gYW5pbWF0ZSh0YXJnZXQsIGN1cnJlbnRSZWN0LCB0b1JlY3QsIGR1cmF0aW9uKSB7XG4gICAgICBpZiAoZHVyYXRpb24pIHtcbiAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zaXRpb24nLCAnJyk7XG4gICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgIHZhciBlbE1hdHJpeCA9IG1hdHJpeCh0aGlzLmVsKSxcbiAgICAgICAgICAgIHNjYWxlWCA9IGVsTWF0cml4ICYmIGVsTWF0cml4LmEsXG4gICAgICAgICAgICBzY2FsZVkgPSBlbE1hdHJpeCAmJiBlbE1hdHJpeC5kLFxuICAgICAgICAgICAgdHJhbnNsYXRlWCA9IChjdXJyZW50UmVjdC5sZWZ0IC0gdG9SZWN0LmxlZnQpIC8gKHNjYWxlWCB8fCAxKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVkgPSAoY3VycmVudFJlY3QudG9wIC0gdG9SZWN0LnRvcCkgLyAoc2NhbGVZIHx8IDEpO1xuICAgICAgICB0YXJnZXQuYW5pbWF0aW5nWCA9ICEhdHJhbnNsYXRlWDtcbiAgICAgICAgdGFyZ2V0LmFuaW1hdGluZ1kgPSAhIXRyYW5zbGF0ZVk7XG4gICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlM2QoJyArIHRyYW5zbGF0ZVggKyAncHgsJyArIHRyYW5zbGF0ZVkgKyAncHgsMCknKTtcbiAgICAgICAgdGhpcy5mb3JSZXBhaW50RHVtbXkgPSByZXBhaW50KHRhcmdldCk7IC8vIHJlcGFpbnRcblxuICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNpdGlvbicsICd0cmFuc2Zvcm0gJyArIGR1cmF0aW9uICsgJ21zJyArICh0aGlzLm9wdGlvbnMuZWFzaW5nID8gJyAnICsgdGhpcy5vcHRpb25zLmVhc2luZyA6ICcnKSk7XG4gICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlM2QoMCwwLDApJyk7XG4gICAgICAgIHR5cGVvZiB0YXJnZXQuYW5pbWF0ZWQgPT09ICdudW1iZXInICYmIGNsZWFyVGltZW91dCh0YXJnZXQuYW5pbWF0ZWQpO1xuICAgICAgICB0YXJnZXQuYW5pbWF0ZWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNpdGlvbicsICcnKTtcbiAgICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNmb3JtJywgJycpO1xuICAgICAgICAgIHRhcmdldC5hbmltYXRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRhcmdldC5hbmltYXRpbmdYID0gZmFsc2U7XG4gICAgICAgICAgdGFyZ2V0LmFuaW1hdGluZ1kgPSBmYWxzZTtcbiAgICAgICAgfSwgZHVyYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVwYWludCh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldC5vZmZzZXRXaWR0aDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUmVhbFRpbWUoYW5pbWF0aW5nUmVjdCwgZnJvbVJlY3QsIHRvUmVjdCwgb3B0aW9ucykge1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KGZyb21SZWN0LnRvcCAtIGFuaW1hdGluZ1JlY3QudG9wLCAyKSArIE1hdGgucG93KGZyb21SZWN0LmxlZnQgLSBhbmltYXRpbmdSZWN0LmxlZnQsIDIpKSAvIE1hdGguc3FydChNYXRoLnBvdyhmcm9tUmVjdC50b3AgLSB0b1JlY3QudG9wLCAyKSArIE1hdGgucG93KGZyb21SZWN0LmxlZnQgLSB0b1JlY3QubGVmdCwgMikpICogb3B0aW9ucy5hbmltYXRpb247XG59XG5cbnZhciBwbHVnaW5zID0gW107XG52YXIgZGVmYXVsdHMgPSB7XG4gIGluaXRpYWxpemVCeURlZmF1bHQ6IHRydWVcbn07XG52YXIgUGx1Z2luTWFuYWdlciA9IHtcbiAgbW91bnQ6IGZ1bmN0aW9uIG1vdW50KHBsdWdpbikge1xuICAgIC8vIFNldCBkZWZhdWx0IHN0YXRpYyBwcm9wZXJ0aWVzXG4gICAgZm9yICh2YXIgb3B0aW9uIGluIGRlZmF1bHRzKSB7XG4gICAgICBpZiAoZGVmYXVsdHMuaGFzT3duUHJvcGVydHkob3B0aW9uKSAmJiAhKG9wdGlvbiBpbiBwbHVnaW4pKSB7XG4gICAgICAgIHBsdWdpbltvcHRpb25dID0gZGVmYXVsdHNbb3B0aW9uXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIGlmIChwLnBsdWdpbk5hbWUgPT09IHBsdWdpbi5wbHVnaW5OYW1lKSB7XG4gICAgICAgIHRocm93IFwiU29ydGFibGU6IENhbm5vdCBtb3VudCBwbHVnaW4gXCIuY29uY2F0KHBsdWdpbi5wbHVnaW5OYW1lLCBcIiBtb3JlIHRoYW4gb25jZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBwbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgfSxcbiAgcGx1Z2luRXZlbnQ6IGZ1bmN0aW9uIHBsdWdpbkV2ZW50KGV2ZW50TmFtZSwgc29ydGFibGUsIGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmV2ZW50Q2FuY2VsZWQgPSBmYWxzZTtcblxuICAgIGV2dC5jYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5ldmVudENhbmNlbGVkID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIGV2ZW50TmFtZUdsb2JhbCA9IGV2ZW50TmFtZSArICdHbG9iYWwnO1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgICBpZiAoIXNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXSkgcmV0dXJuOyAvLyBGaXJlIGdsb2JhbCBldmVudHMgaWYgaXQgZXhpc3RzIGluIHRoaXMgc29ydGFibGVcblxuICAgICAgaWYgKHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXVtldmVudE5hbWVHbG9iYWxdKSB7XG4gICAgICAgIHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXVtldmVudE5hbWVHbG9iYWxdKF9vYmplY3RTcHJlYWQyKHtcbiAgICAgICAgICBzb3J0YWJsZTogc29ydGFibGVcbiAgICAgICAgfSwgZXZ0KSk7XG4gICAgICB9IC8vIE9ubHkgZmlyZSBwbHVnaW4gZXZlbnQgaWYgcGx1Z2luIGlzIGVuYWJsZWQgaW4gdGhpcyBzb3J0YWJsZSxcbiAgICAgIC8vIGFuZCBwbHVnaW4gaGFzIGV2ZW50IGRlZmluZWRcblxuXG4gICAgICBpZiAoc29ydGFibGUub3B0aW9uc1twbHVnaW4ucGx1Z2luTmFtZV0gJiYgc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdW2V2ZW50TmFtZV0pIHtcbiAgICAgICAgc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdW2V2ZW50TmFtZV0oX29iamVjdFNwcmVhZDIoe1xuICAgICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZVxuICAgICAgICB9LCBldnQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgaW5pdGlhbGl6ZVBsdWdpbnM6IGZ1bmN0aW9uIGluaXRpYWxpemVQbHVnaW5zKHNvcnRhYmxlLCBlbCwgZGVmYXVsdHMsIG9wdGlvbnMpIHtcbiAgICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgdmFyIHBsdWdpbk5hbWUgPSBwbHVnaW4ucGx1Z2luTmFtZTtcbiAgICAgIGlmICghc29ydGFibGUub3B0aW9uc1twbHVnaW5OYW1lXSAmJiAhcGx1Z2luLmluaXRpYWxpemVCeURlZmF1bHQpIHJldHVybjtcbiAgICAgIHZhciBpbml0aWFsaXplZCA9IG5ldyBwbHVnaW4oc29ydGFibGUsIGVsLCBzb3J0YWJsZS5vcHRpb25zKTtcbiAgICAgIGluaXRpYWxpemVkLnNvcnRhYmxlID0gc29ydGFibGU7XG4gICAgICBpbml0aWFsaXplZC5vcHRpb25zID0gc29ydGFibGUub3B0aW9ucztcbiAgICAgIHNvcnRhYmxlW3BsdWdpbk5hbWVdID0gaW5pdGlhbGl6ZWQ7IC8vIEFkZCBkZWZhdWx0IG9wdGlvbnMgZnJvbSBwbHVnaW5cblxuICAgICAgX2V4dGVuZHMoZGVmYXVsdHMsIGluaXRpYWxpemVkLmRlZmF1bHRzKTtcbiAgICB9KTtcblxuICAgIGZvciAodmFyIG9wdGlvbiBpbiBzb3J0YWJsZS5vcHRpb25zKSB7XG4gICAgICBpZiAoIXNvcnRhYmxlLm9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0aW9uKSkgY29udGludWU7XG4gICAgICB2YXIgbW9kaWZpZWQgPSB0aGlzLm1vZGlmeU9wdGlvbihzb3J0YWJsZSwgb3B0aW9uLCBzb3J0YWJsZS5vcHRpb25zW29wdGlvbl0pO1xuXG4gICAgICBpZiAodHlwZW9mIG1vZGlmaWVkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzb3J0YWJsZS5vcHRpb25zW29wdGlvbl0gPSBtb2RpZmllZDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGdldEV2ZW50UHJvcGVydGllczogZnVuY3Rpb24gZ2V0RXZlbnRQcm9wZXJ0aWVzKG5hbWUsIHNvcnRhYmxlKSB7XG4gICAgdmFyIGV2ZW50UHJvcGVydGllcyA9IHt9O1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgICBpZiAodHlwZW9mIHBsdWdpbi5ldmVudFByb3BlcnRpZXMgIT09ICdmdW5jdGlvbicpIHJldHVybjtcblxuICAgICAgX2V4dGVuZHMoZXZlbnRQcm9wZXJ0aWVzLCBwbHVnaW4uZXZlbnRQcm9wZXJ0aWVzLmNhbGwoc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdLCBuYW1lKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGV2ZW50UHJvcGVydGllcztcbiAgfSxcbiAgbW9kaWZ5T3B0aW9uOiBmdW5jdGlvbiBtb2RpZnlPcHRpb24oc29ydGFibGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIG1vZGlmaWVkVmFsdWU7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIC8vIFBsdWdpbiBtdXN0IGV4aXN0IG9uIHRoZSBTb3J0YWJsZVxuICAgICAgaWYgKCFzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV0pIHJldHVybjsgLy8gSWYgc3RhdGljIG9wdGlvbiBsaXN0ZW5lciBleGlzdHMgZm9yIHRoaXMgb3B0aW9uLCBjYWxsIGluIHRoZSBjb250ZXh0IG9mIHRoZSBTb3J0YWJsZSdzIGluc3RhbmNlIG9mIHRoaXMgcGx1Z2luXG5cbiAgICAgIGlmIChwbHVnaW4ub3B0aW9uTGlzdGVuZXJzICYmIHR5cGVvZiBwbHVnaW4ub3B0aW9uTGlzdGVuZXJzW25hbWVdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG1vZGlmaWVkVmFsdWUgPSBwbHVnaW4ub3B0aW9uTGlzdGVuZXJzW25hbWVdLmNhbGwoc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGlmaWVkVmFsdWU7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoX3JlZikge1xuICB2YXIgc29ydGFibGUgPSBfcmVmLnNvcnRhYmxlLFxuICAgICAgcm9vdEVsID0gX3JlZi5yb290RWwsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgdGFyZ2V0RWwgPSBfcmVmLnRhcmdldEVsLFxuICAgICAgY2xvbmVFbCA9IF9yZWYuY2xvbmVFbCxcbiAgICAgIHRvRWwgPSBfcmVmLnRvRWwsXG4gICAgICBmcm9tRWwgPSBfcmVmLmZyb21FbCxcbiAgICAgIG9sZEluZGV4ID0gX3JlZi5vbGRJbmRleCxcbiAgICAgIG5ld0luZGV4ID0gX3JlZi5uZXdJbmRleCxcbiAgICAgIG9sZERyYWdnYWJsZUluZGV4ID0gX3JlZi5vbGREcmFnZ2FibGVJbmRleCxcbiAgICAgIG5ld0RyYWdnYWJsZUluZGV4ID0gX3JlZi5uZXdEcmFnZ2FibGVJbmRleCxcbiAgICAgIG9yaWdpbmFsRXZlbnQgPSBfcmVmLm9yaWdpbmFsRXZlbnQsXG4gICAgICBwdXRTb3J0YWJsZSA9IF9yZWYucHV0U29ydGFibGUsXG4gICAgICBleHRyYUV2ZW50UHJvcGVydGllcyA9IF9yZWYuZXh0cmFFdmVudFByb3BlcnRpZXM7XG4gIHNvcnRhYmxlID0gc29ydGFibGUgfHwgcm9vdEVsICYmIHJvb3RFbFtleHBhbmRvXTtcbiAgaWYgKCFzb3J0YWJsZSkgcmV0dXJuO1xuICB2YXIgZXZ0LFxuICAgICAgb3B0aW9ucyA9IHNvcnRhYmxlLm9wdGlvbnMsXG4gICAgICBvbk5hbWUgPSAnb24nICsgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc3Vic3RyKDEpOyAvLyBTdXBwb3J0IGZvciBuZXcgQ3VzdG9tRXZlbnQgZmVhdHVyZVxuXG4gIGlmICh3aW5kb3cuQ3VzdG9tRXZlbnQgJiYgIUlFMTFPckxlc3MgJiYgIUVkZ2UpIHtcbiAgICBldnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldnQuaW5pdEV2ZW50KG5hbWUsIHRydWUsIHRydWUpO1xuICB9XG5cbiAgZXZ0LnRvID0gdG9FbCB8fCByb290RWw7XG4gIGV2dC5mcm9tID0gZnJvbUVsIHx8IHJvb3RFbDtcbiAgZXZ0Lml0ZW0gPSB0YXJnZXRFbCB8fCByb290RWw7XG4gIGV2dC5jbG9uZSA9IGNsb25lRWw7XG4gIGV2dC5vbGRJbmRleCA9IG9sZEluZGV4O1xuICBldnQubmV3SW5kZXggPSBuZXdJbmRleDtcbiAgZXZ0Lm9sZERyYWdnYWJsZUluZGV4ID0gb2xkRHJhZ2dhYmxlSW5kZXg7XG4gIGV2dC5uZXdEcmFnZ2FibGVJbmRleCA9IG5ld0RyYWdnYWJsZUluZGV4O1xuICBldnQub3JpZ2luYWxFdmVudCA9IG9yaWdpbmFsRXZlbnQ7XG4gIGV2dC5wdWxsTW9kZSA9IHB1dFNvcnRhYmxlID8gcHV0U29ydGFibGUubGFzdFB1dE1vZGUgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGFsbEV2ZW50UHJvcGVydGllcyA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBleHRyYUV2ZW50UHJvcGVydGllcyksIFBsdWdpbk1hbmFnZXIuZ2V0RXZlbnRQcm9wZXJ0aWVzKG5hbWUsIHNvcnRhYmxlKSk7XG5cbiAgZm9yICh2YXIgb3B0aW9uIGluIGFsbEV2ZW50UHJvcGVydGllcykge1xuICAgIGV2dFtvcHRpb25dID0gYWxsRXZlbnRQcm9wZXJ0aWVzW29wdGlvbl07XG4gIH1cblxuICBpZiAocm9vdEVsKSB7XG4gICAgcm9vdEVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zW29uTmFtZV0pIHtcbiAgICBvcHRpb25zW29uTmFtZV0uY2FsbChzb3J0YWJsZSwgZXZ0KTtcbiAgfVxufVxuXG52YXIgX2V4Y2x1ZGVkID0gW1wiZXZ0XCJdO1xuXG52YXIgcGx1Z2luRXZlbnQgPSBmdW5jdGlvbiBwbHVnaW5FdmVudChldmVudE5hbWUsIHNvcnRhYmxlKSB7XG4gIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fSxcbiAgICAgIG9yaWdpbmFsRXZlbnQgPSBfcmVmLmV2dCxcbiAgICAgIGRhdGEgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICBQbHVnaW5NYW5hZ2VyLnBsdWdpbkV2ZW50LmJpbmQoU29ydGFibGUpKGV2ZW50TmFtZSwgc29ydGFibGUsIF9vYmplY3RTcHJlYWQyKHtcbiAgICBkcmFnRWw6IGRyYWdFbCxcbiAgICBwYXJlbnRFbDogcGFyZW50RWwsXG4gICAgZ2hvc3RFbDogZ2hvc3RFbCxcbiAgICByb290RWw6IHJvb3RFbCxcbiAgICBuZXh0RWw6IG5leHRFbCxcbiAgICBsYXN0RG93bkVsOiBsYXN0RG93bkVsLFxuICAgIGNsb25lRWw6IGNsb25lRWwsXG4gICAgY2xvbmVIaWRkZW46IGNsb25lSGlkZGVuLFxuICAgIGRyYWdTdGFydGVkOiBtb3ZlZCxcbiAgICBwdXRTb3J0YWJsZTogcHV0U29ydGFibGUsXG4gICAgYWN0aXZlU29ydGFibGU6IFNvcnRhYmxlLmFjdGl2ZSxcbiAgICBvcmlnaW5hbEV2ZW50OiBvcmlnaW5hbEV2ZW50LFxuICAgIG9sZEluZGV4OiBvbGRJbmRleCxcbiAgICBvbGREcmFnZ2FibGVJbmRleDogb2xkRHJhZ2dhYmxlSW5kZXgsXG4gICAgbmV3SW5kZXg6IG5ld0luZGV4LFxuICAgIG5ld0RyYWdnYWJsZUluZGV4OiBuZXdEcmFnZ2FibGVJbmRleCxcbiAgICBoaWRlR2hvc3RGb3JUYXJnZXQ6IF9oaWRlR2hvc3RGb3JUYXJnZXQsXG4gICAgdW5oaWRlR2hvc3RGb3JUYXJnZXQ6IF91bmhpZGVHaG9zdEZvclRhcmdldCxcbiAgICBjbG9uZU5vd0hpZGRlbjogZnVuY3Rpb24gY2xvbmVOb3dIaWRkZW4oKSB7XG4gICAgICBjbG9uZUhpZGRlbiA9IHRydWU7XG4gICAgfSxcbiAgICBjbG9uZU5vd1Nob3duOiBmdW5jdGlvbiBjbG9uZU5vd1Nob3duKCkge1xuICAgICAgY2xvbmVIaWRkZW4gPSBmYWxzZTtcbiAgICB9LFxuICAgIGRpc3BhdGNoU29ydGFibGVFdmVudDogZnVuY3Rpb24gZGlzcGF0Y2hTb3J0YWJsZUV2ZW50KG5hbWUpIHtcbiAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBvcmlnaW5hbEV2ZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIGRhdGEpKTtcbn07XG5cbmZ1bmN0aW9uIF9kaXNwYXRjaEV2ZW50KGluZm8pIHtcbiAgZGlzcGF0Y2hFdmVudChfb2JqZWN0U3ByZWFkMih7XG4gICAgcHV0U29ydGFibGU6IHB1dFNvcnRhYmxlLFxuICAgIGNsb25lRWw6IGNsb25lRWwsXG4gICAgdGFyZ2V0RWw6IGRyYWdFbCxcbiAgICByb290RWw6IHJvb3RFbCxcbiAgICBvbGRJbmRleDogb2xkSW5kZXgsXG4gICAgb2xkRHJhZ2dhYmxlSW5kZXg6IG9sZERyYWdnYWJsZUluZGV4LFxuICAgIG5ld0luZGV4OiBuZXdJbmRleCxcbiAgICBuZXdEcmFnZ2FibGVJbmRleDogbmV3RHJhZ2dhYmxlSW5kZXhcbiAgfSwgaW5mbykpO1xufVxuXG52YXIgZHJhZ0VsLFxuICAgIHBhcmVudEVsLFxuICAgIGdob3N0RWwsXG4gICAgcm9vdEVsLFxuICAgIG5leHRFbCxcbiAgICBsYXN0RG93bkVsLFxuICAgIGNsb25lRWwsXG4gICAgY2xvbmVIaWRkZW4sXG4gICAgb2xkSW5kZXgsXG4gICAgbmV3SW5kZXgsXG4gICAgb2xkRHJhZ2dhYmxlSW5kZXgsXG4gICAgbmV3RHJhZ2dhYmxlSW5kZXgsXG4gICAgYWN0aXZlR3JvdXAsXG4gICAgcHV0U29ydGFibGUsXG4gICAgYXdhaXRpbmdEcmFnU3RhcnRlZCA9IGZhbHNlLFxuICAgIGlnbm9yZU5leHRDbGljayA9IGZhbHNlLFxuICAgIHNvcnRhYmxlcyA9IFtdLFxuICAgIHRhcEV2dCxcbiAgICB0b3VjaEV2dCxcbiAgICBsYXN0RHgsXG4gICAgbGFzdER5LFxuICAgIHRhcERpc3RhbmNlTGVmdCxcbiAgICB0YXBEaXN0YW5jZVRvcCxcbiAgICBtb3ZlZCxcbiAgICBsYXN0VGFyZ2V0LFxuICAgIGxhc3REaXJlY3Rpb24sXG4gICAgcGFzdEZpcnN0SW52ZXJ0VGhyZXNoID0gZmFsc2UsXG4gICAgaXNDaXJjdW1zdGFudGlhbEludmVydCA9IGZhbHNlLFxuICAgIHRhcmdldE1vdmVEaXN0YW5jZSxcbiAgICAvLyBGb3IgcG9zaXRpb25pbmcgZ2hvc3QgYWJzb2x1dGVseVxuZ2hvc3RSZWxhdGl2ZVBhcmVudCxcbiAgICBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbCA9IFtdLFxuICAgIC8vIChsZWZ0LCB0b3ApXG5fc2lsZW50ID0gZmFsc2UsXG4gICAgc2F2ZWRJbnB1dENoZWNrZWQgPSBbXTtcbi8qKiBAY29uc3QgKi9cblxudmFyIGRvY3VtZW50RXhpc3RzID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyxcbiAgICBQb3NpdGlvbkdob3N0QWJzb2x1dGVseSA9IElPUyxcbiAgICBDU1NGbG9hdFByb3BlcnR5ID0gRWRnZSB8fCBJRTExT3JMZXNzID8gJ2Nzc0Zsb2F0JyA6ICdmbG9hdCcsXG4gICAgLy8gVGhpcyB3aWxsIG5vdCBwYXNzIGZvciBJRTksIGJlY2F1c2UgSUU5IERuRCBvbmx5IHdvcmtzIG9uIGFuY2hvcnNcbnN1cHBvcnREcmFnZ2FibGUgPSBkb2N1bWVudEV4aXN0cyAmJiAhQ2hyb21lRm9yQW5kcm9pZCAmJiAhSU9TICYmICdkcmFnZ2FibGUnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgIHN1cHBvcnRDc3NQb2ludGVyRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIWRvY3VtZW50RXhpc3RzKSByZXR1cm47IC8vIGZhbHNlIHdoZW4gPD0gSUUxMVxuXG4gIGlmIChJRTExT3JMZXNzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgneCcpO1xuICBlbC5zdHlsZS5jc3NUZXh0ID0gJ3BvaW50ZXItZXZlbnRzOmF1dG8nO1xuICByZXR1cm4gZWwuc3R5bGUucG9pbnRlckV2ZW50cyA9PT0gJ2F1dG8nO1xufSgpLFxuICAgIF9kZXRlY3REaXJlY3Rpb24gPSBmdW5jdGlvbiBfZGV0ZWN0RGlyZWN0aW9uKGVsLCBvcHRpb25zKSB7XG4gIHZhciBlbENTUyA9IGNzcyhlbCksXG4gICAgICBlbFdpZHRoID0gcGFyc2VJbnQoZWxDU1Mud2lkdGgpIC0gcGFyc2VJbnQoZWxDU1MucGFkZGluZ0xlZnQpIC0gcGFyc2VJbnQoZWxDU1MucGFkZGluZ1JpZ2h0KSAtIHBhcnNlSW50KGVsQ1NTLmJvcmRlckxlZnRXaWR0aCkgLSBwYXJzZUludChlbENTUy5ib3JkZXJSaWdodFdpZHRoKSxcbiAgICAgIGNoaWxkMSA9IGdldENoaWxkKGVsLCAwLCBvcHRpb25zKSxcbiAgICAgIGNoaWxkMiA9IGdldENoaWxkKGVsLCAxLCBvcHRpb25zKSxcbiAgICAgIGZpcnN0Q2hpbGRDU1MgPSBjaGlsZDEgJiYgY3NzKGNoaWxkMSksXG4gICAgICBzZWNvbmRDaGlsZENTUyA9IGNoaWxkMiAmJiBjc3MoY2hpbGQyKSxcbiAgICAgIGZpcnN0Q2hpbGRXaWR0aCA9IGZpcnN0Q2hpbGRDU1MgJiYgcGFyc2VJbnQoZmlyc3RDaGlsZENTUy5tYXJnaW5MZWZ0KSArIHBhcnNlSW50KGZpcnN0Q2hpbGRDU1MubWFyZ2luUmlnaHQpICsgZ2V0UmVjdChjaGlsZDEpLndpZHRoLFxuICAgICAgc2Vjb25kQ2hpbGRXaWR0aCA9IHNlY29uZENoaWxkQ1NTICYmIHBhcnNlSW50KHNlY29uZENoaWxkQ1NTLm1hcmdpbkxlZnQpICsgcGFyc2VJbnQoc2Vjb25kQ2hpbGRDU1MubWFyZ2luUmlnaHQpICsgZ2V0UmVjdChjaGlsZDIpLndpZHRoO1xuXG4gIGlmIChlbENTUy5kaXNwbGF5ID09PSAnZmxleCcpIHtcbiAgICByZXR1cm4gZWxDU1MuZmxleERpcmVjdGlvbiA9PT0gJ2NvbHVtbicgfHwgZWxDU1MuZmxleERpcmVjdGlvbiA9PT0gJ2NvbHVtbi1yZXZlcnNlJyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gIH1cblxuICBpZiAoZWxDU1MuZGlzcGxheSA9PT0gJ2dyaWQnKSB7XG4gICAgcmV0dXJuIGVsQ1NTLmdyaWRUZW1wbGF0ZUNvbHVtbnMuc3BsaXQoJyAnKS5sZW5ndGggPD0gMSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gIH1cblxuICBpZiAoY2hpbGQxICYmIGZpcnN0Q2hpbGRDU1NbXCJmbG9hdFwiXSAmJiBmaXJzdENoaWxkQ1NTW1wiZmxvYXRcIl0gIT09ICdub25lJykge1xuICAgIHZhciB0b3VjaGluZ1NpZGVDaGlsZDIgPSBmaXJzdENoaWxkQ1NTW1wiZmxvYXRcIl0gPT09ICdsZWZ0JyA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgcmV0dXJuIGNoaWxkMiAmJiAoc2Vjb25kQ2hpbGRDU1MuY2xlYXIgPT09ICdib3RoJyB8fCBzZWNvbmRDaGlsZENTUy5jbGVhciA9PT0gdG91Y2hpbmdTaWRlQ2hpbGQyKSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gIH1cblxuICByZXR1cm4gY2hpbGQxICYmIChmaXJzdENoaWxkQ1NTLmRpc3BsYXkgPT09ICdibG9jaycgfHwgZmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAnZmxleCcgfHwgZmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAndGFibGUnIHx8IGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ2dyaWQnIHx8IGZpcnN0Q2hpbGRXaWR0aCA+PSBlbFdpZHRoICYmIGVsQ1NTW0NTU0Zsb2F0UHJvcGVydHldID09PSAnbm9uZScgfHwgY2hpbGQyICYmIGVsQ1NTW0NTU0Zsb2F0UHJvcGVydHldID09PSAnbm9uZScgJiYgZmlyc3RDaGlsZFdpZHRoICsgc2Vjb25kQ2hpbGRXaWR0aCA+IGVsV2lkdGgpID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcbn0sXG4gICAgX2RyYWdFbEluUm93Q29sdW1uID0gZnVuY3Rpb24gX2RyYWdFbEluUm93Q29sdW1uKGRyYWdSZWN0LCB0YXJnZXRSZWN0LCB2ZXJ0aWNhbCkge1xuICB2YXIgZHJhZ0VsUzFPcHAgPSB2ZXJ0aWNhbCA/IGRyYWdSZWN0LmxlZnQgOiBkcmFnUmVjdC50b3AsXG4gICAgICBkcmFnRWxTMk9wcCA9IHZlcnRpY2FsID8gZHJhZ1JlY3QucmlnaHQgOiBkcmFnUmVjdC5ib3R0b20sXG4gICAgICBkcmFnRWxPcHBMZW5ndGggPSB2ZXJ0aWNhbCA/IGRyYWdSZWN0LndpZHRoIDogZHJhZ1JlY3QuaGVpZ2h0LFxuICAgICAgdGFyZ2V0UzFPcHAgPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3QubGVmdCA6IHRhcmdldFJlY3QudG9wLFxuICAgICAgdGFyZ2V0UzJPcHAgPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3QucmlnaHQgOiB0YXJnZXRSZWN0LmJvdHRvbSxcbiAgICAgIHRhcmdldE9wcExlbmd0aCA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC53aWR0aCA6IHRhcmdldFJlY3QuaGVpZ2h0O1xuICByZXR1cm4gZHJhZ0VsUzFPcHAgPT09IHRhcmdldFMxT3BwIHx8IGRyYWdFbFMyT3BwID09PSB0YXJnZXRTMk9wcCB8fCBkcmFnRWxTMU9wcCArIGRyYWdFbE9wcExlbmd0aCAvIDIgPT09IHRhcmdldFMxT3BwICsgdGFyZ2V0T3BwTGVuZ3RoIC8gMjtcbn0sXG5cbi8qKlxuICogRGV0ZWN0cyBmaXJzdCBuZWFyZXN0IGVtcHR5IHNvcnRhYmxlIHRvIFggYW5kIFkgcG9zaXRpb24gdXNpbmcgZW1wdHlJbnNlcnRUaHJlc2hvbGQuXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHggICAgICBYIHBvc2l0aW9uXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHkgICAgICBZIHBvc2l0aW9uXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gICBFbGVtZW50IG9mIHRoZSBmaXJzdCBmb3VuZCBuZWFyZXN0IFNvcnRhYmxlXG4gKi9cbl9kZXRlY3ROZWFyZXN0RW1wdHlTb3J0YWJsZSA9IGZ1bmN0aW9uIF9kZXRlY3ROZWFyZXN0RW1wdHlTb3J0YWJsZSh4LCB5KSB7XG4gIHZhciByZXQ7XG4gIHNvcnRhYmxlcy5zb21lKGZ1bmN0aW9uIChzb3J0YWJsZSkge1xuICAgIHZhciB0aHJlc2hvbGQgPSBzb3J0YWJsZVtleHBhbmRvXS5vcHRpb25zLmVtcHR5SW5zZXJ0VGhyZXNob2xkO1xuICAgIGlmICghdGhyZXNob2xkIHx8IGxhc3RDaGlsZChzb3J0YWJsZSkpIHJldHVybjtcbiAgICB2YXIgcmVjdCA9IGdldFJlY3Qoc29ydGFibGUpLFxuICAgICAgICBpbnNpZGVIb3Jpem9udGFsbHkgPSB4ID49IHJlY3QubGVmdCAtIHRocmVzaG9sZCAmJiB4IDw9IHJlY3QucmlnaHQgKyB0aHJlc2hvbGQsXG4gICAgICAgIGluc2lkZVZlcnRpY2FsbHkgPSB5ID49IHJlY3QudG9wIC0gdGhyZXNob2xkICYmIHkgPD0gcmVjdC5ib3R0b20gKyB0aHJlc2hvbGQ7XG5cbiAgICBpZiAoaW5zaWRlSG9yaXpvbnRhbGx5ICYmIGluc2lkZVZlcnRpY2FsbHkpIHtcbiAgICAgIHJldHVybiByZXQgPSBzb3J0YWJsZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufSxcbiAgICBfcHJlcGFyZUdyb3VwID0gZnVuY3Rpb24gX3ByZXBhcmVHcm91cChvcHRpb25zKSB7XG4gIGZ1bmN0aW9uIHRvRm4odmFsdWUsIHB1bGwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCkge1xuICAgICAgdmFyIHNhbWVHcm91cCA9IHRvLm9wdGlvbnMuZ3JvdXAubmFtZSAmJiBmcm9tLm9wdGlvbnMuZ3JvdXAubmFtZSAmJiB0by5vcHRpb25zLmdyb3VwLm5hbWUgPT09IGZyb20ub3B0aW9ucy5ncm91cC5uYW1lO1xuXG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiAocHVsbCB8fCBzYW1lR3JvdXApKSB7XG4gICAgICAgIC8vIERlZmF1bHQgcHVsbCB2YWx1ZVxuICAgICAgICAvLyBEZWZhdWx0IHB1bGwgYW5kIHB1dCB2YWx1ZSBpZiBzYW1lIGdyb3VwXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHB1bGwgJiYgdmFsdWUgPT09ICdjbG9uZScpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHRvRm4odmFsdWUodG8sIGZyb20sIGRyYWdFbCwgZXZ0KSwgcHVsbCkodG8sIGZyb20sIGRyYWdFbCwgZXZ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBvdGhlckdyb3VwID0gKHB1bGwgPyB0byA6IGZyb20pLm9wdGlvbnMuZ3JvdXAubmFtZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgPT09IG90aGVyR3JvdXAgfHwgdmFsdWUuam9pbiAmJiB2YWx1ZS5pbmRleE9mKG90aGVyR3JvdXApID4gLTE7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHZhciBncm91cCA9IHt9O1xuICB2YXIgb3JpZ2luYWxHcm91cCA9IG9wdGlvbnMuZ3JvdXA7XG5cbiAgaWYgKCFvcmlnaW5hbEdyb3VwIHx8IF90eXBlb2Yob3JpZ2luYWxHcm91cCkgIT0gJ29iamVjdCcpIHtcbiAgICBvcmlnaW5hbEdyb3VwID0ge1xuICAgICAgbmFtZTogb3JpZ2luYWxHcm91cFxuICAgIH07XG4gIH1cblxuICBncm91cC5uYW1lID0gb3JpZ2luYWxHcm91cC5uYW1lO1xuICBncm91cC5jaGVja1B1bGwgPSB0b0ZuKG9yaWdpbmFsR3JvdXAucHVsbCwgdHJ1ZSk7XG4gIGdyb3VwLmNoZWNrUHV0ID0gdG9GbihvcmlnaW5hbEdyb3VwLnB1dCk7XG4gIGdyb3VwLnJldmVydENsb25lID0gb3JpZ2luYWxHcm91cC5yZXZlcnRDbG9uZTtcbiAgb3B0aW9ucy5ncm91cCA9IGdyb3VwO1xufSxcbiAgICBfaGlkZUdob3N0Rm9yVGFyZ2V0ID0gZnVuY3Rpb24gX2hpZGVHaG9zdEZvclRhcmdldCgpIHtcbiAgaWYgKCFzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cyAmJiBnaG9zdEVsKSB7XG4gICAgY3NzKGdob3N0RWwsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgfVxufSxcbiAgICBfdW5oaWRlR2hvc3RGb3JUYXJnZXQgPSBmdW5jdGlvbiBfdW5oaWRlR2hvc3RGb3JUYXJnZXQoKSB7XG4gIGlmICghc3VwcG9ydENzc1BvaW50ZXJFdmVudHMgJiYgZ2hvc3RFbCkge1xuICAgIGNzcyhnaG9zdEVsLCAnZGlzcGxheScsICcnKTtcbiAgfVxufTsgLy8gIzExODQgZml4IC0gUHJldmVudCBjbGljayBldmVudCBvbiBmYWxsYmFjayBpZiBkcmFnZ2VkIGJ1dCBpdGVtIG5vdCBjaGFuZ2VkIHBvc2l0aW9uXG5cblxuaWYgKGRvY3VtZW50RXhpc3RzKSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmIChpZ25vcmVOZXh0Q2xpY2spIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbiAmJiBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uICYmIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGlnbm9yZU5leHRDbGljayA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgdHJ1ZSk7XG59XG5cbnZhciBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCA9IGZ1bmN0aW9uIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KGV2dCkge1xuICBpZiAoZHJhZ0VsKSB7XG4gICAgZXZ0ID0gZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dDtcblxuICAgIHZhciBuZWFyZXN0ID0gX2RldGVjdE5lYXJlc3RFbXB0eVNvcnRhYmxlKGV2dC5jbGllbnRYLCBldnQuY2xpZW50WSk7XG5cbiAgICBpZiAobmVhcmVzdCkge1xuICAgICAgLy8gQ3JlYXRlIGltaXRhdGlvbiBldmVudFxuICAgICAgdmFyIGV2ZW50ID0ge307XG5cbiAgICAgIGZvciAodmFyIGkgaW4gZXZ0KSB7XG4gICAgICAgIGlmIChldnQuaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICBldmVudFtpXSA9IGV2dFtpXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBldmVudC50YXJnZXQgPSBldmVudC5yb290RWwgPSBuZWFyZXN0O1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQgPSB2b2lkIDA7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSB2b2lkIDA7XG5cbiAgICAgIG5lYXJlc3RbZXhwYW5kb10uX29uRHJhZ092ZXIoZXZlbnQpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIF9jaGVja091dHNpZGVUYXJnZXRFbCA9IGZ1bmN0aW9uIF9jaGVja091dHNpZGVUYXJnZXRFbChldnQpIHtcbiAgaWYgKGRyYWdFbCkge1xuICAgIGRyYWdFbC5wYXJlbnROb2RlW2V4cGFuZG9dLl9pc091dHNpZGVUaGlzRWwoZXZ0LnRhcmdldCk7XG4gIH1cbn07XG4vKipcbiAqIEBjbGFzcyAgU29ydGFibGVcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSAgZWxcbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgW29wdGlvbnNdXG4gKi9cblxuXG5mdW5jdGlvbiBTb3J0YWJsZShlbCwgb3B0aW9ucykge1xuICBpZiAoIShlbCAmJiBlbC5ub2RlVHlwZSAmJiBlbC5ub2RlVHlwZSA9PT0gMSkpIHtcbiAgICB0aHJvdyBcIlNvcnRhYmxlOiBgZWxgIG11c3QgYmUgYW4gSFRNTEVsZW1lbnQsIG5vdCBcIi5jb25jYXQoe30udG9TdHJpbmcuY2FsbChlbCkpO1xuICB9XG5cbiAgdGhpcy5lbCA9IGVsOyAvLyByb290IGVsZW1lbnRcblxuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID0gX2V4dGVuZHMoe30sIG9wdGlvbnMpOyAvLyBFeHBvcnQgaW5zdGFuY2VcblxuICBlbFtleHBhbmRvXSA9IHRoaXM7XG4gIHZhciBkZWZhdWx0cyA9IHtcbiAgICBncm91cDogbnVsbCxcbiAgICBzb3J0OiB0cnVlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBzdG9yZTogbnVsbCxcbiAgICBoYW5kbGU6IG51bGwsXG4gICAgZHJhZ2dhYmxlOiAvXlt1b11sJC9pLnRlc3QoZWwubm9kZU5hbWUpID8gJz5saScgOiAnPionLFxuICAgIHN3YXBUaHJlc2hvbGQ6IDEsXG4gICAgLy8gcGVyY2VudGFnZTsgMCA8PSB4IDw9IDFcbiAgICBpbnZlcnRTd2FwOiBmYWxzZSxcbiAgICAvLyBpbnZlcnQgYWx3YXlzXG4gICAgaW52ZXJ0ZWRTd2FwVGhyZXNob2xkOiBudWxsLFxuICAgIC8vIHdpbGwgYmUgc2V0IHRvIHNhbWUgYXMgc3dhcFRocmVzaG9sZCBpZiBkZWZhdWx0XG4gICAgcmVtb3ZlQ2xvbmVPbkhpZGU6IHRydWUsXG4gICAgZGlyZWN0aW9uOiBmdW5jdGlvbiBkaXJlY3Rpb24oKSB7XG4gICAgICByZXR1cm4gX2RldGVjdERpcmVjdGlvbihlbCwgdGhpcy5vcHRpb25zKTtcbiAgICB9LFxuICAgIGdob3N0Q2xhc3M6ICdzb3J0YWJsZS1naG9zdCcsXG4gICAgY2hvc2VuQ2xhc3M6ICdzb3J0YWJsZS1jaG9zZW4nLFxuICAgIGRyYWdDbGFzczogJ3NvcnRhYmxlLWRyYWcnLFxuICAgIGlnbm9yZTogJ2EsIGltZycsXG4gICAgZmlsdGVyOiBudWxsLFxuICAgIHByZXZlbnRPbkZpbHRlcjogdHJ1ZSxcbiAgICBhbmltYXRpb246IDAsXG4gICAgZWFzaW5nOiBudWxsLFxuICAgIHNldERhdGE6IGZ1bmN0aW9uIHNldERhdGEoZGF0YVRyYW5zZmVyLCBkcmFnRWwpIHtcbiAgICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKCdUZXh0JywgZHJhZ0VsLnRleHRDb250ZW50KTtcbiAgICB9LFxuICAgIGRyb3BCdWJibGU6IGZhbHNlLFxuICAgIGRyYWdvdmVyQnViYmxlOiBmYWxzZSxcbiAgICBkYXRhSWRBdHRyOiAnZGF0YS1pZCcsXG4gICAgZGVsYXk6IDAsXG4gICAgZGVsYXlPblRvdWNoT25seTogZmFsc2UsXG4gICAgdG91Y2hTdGFydFRocmVzaG9sZDogKE51bWJlci5wYXJzZUludCA/IE51bWJlciA6IHdpbmRvdykucGFyc2VJbnQod2luZG93LmRldmljZVBpeGVsUmF0aW8sIDEwKSB8fCAxLFxuICAgIGZvcmNlRmFsbGJhY2s6IGZhbHNlLFxuICAgIGZhbGxiYWNrQ2xhc3M6ICdzb3J0YWJsZS1mYWxsYmFjaycsXG4gICAgZmFsbGJhY2tPbkJvZHk6IGZhbHNlLFxuICAgIGZhbGxiYWNrVG9sZXJhbmNlOiAwLFxuICAgIGZhbGxiYWNrT2Zmc2V0OiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH0sXG4gICAgc3VwcG9ydFBvaW50ZXI6IFNvcnRhYmxlLnN1cHBvcnRQb2ludGVyICE9PSBmYWxzZSAmJiAnUG9pbnRlckV2ZW50JyBpbiB3aW5kb3cgJiYgIVNhZmFyaSxcbiAgICBlbXB0eUluc2VydFRocmVzaG9sZDogNVxuICB9O1xuICBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemVQbHVnaW5zKHRoaXMsIGVsLCBkZWZhdWx0cyk7IC8vIFNldCBkZWZhdWx0IG9wdGlvbnNcblxuICBmb3IgKHZhciBuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgIShuYW1lIGluIG9wdGlvbnMpICYmIChvcHRpb25zW25hbWVdID0gZGVmYXVsdHNbbmFtZV0pO1xuICB9XG5cbiAgX3ByZXBhcmVHcm91cChvcHRpb25zKTsgLy8gQmluZCBhbGwgcHJpdmF0ZSBtZXRob2RzXG5cblxuICBmb3IgKHZhciBmbiBpbiB0aGlzKSB7XG4gICAgaWYgKGZuLmNoYXJBdCgwKSA9PT0gJ18nICYmIHR5cGVvZiB0aGlzW2ZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tmbl0gPSB0aGlzW2ZuXS5iaW5kKHRoaXMpO1xuICAgIH1cbiAgfSAvLyBTZXR1cCBkcmFnIG1vZGVcblxuXG4gIHRoaXMubmF0aXZlRHJhZ2dhYmxlID0gb3B0aW9ucy5mb3JjZUZhbGxiYWNrID8gZmFsc2UgOiBzdXBwb3J0RHJhZ2dhYmxlO1xuXG4gIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgIC8vIFRvdWNoIHN0YXJ0IHRocmVzaG9sZCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBuYXRpdmUgZHJhZ3N0YXJ0IHRocmVzaG9sZFxuICAgIHRoaXMub3B0aW9ucy50b3VjaFN0YXJ0VGhyZXNob2xkID0gMTtcbiAgfSAvLyBCaW5kIGV2ZW50c1xuXG5cbiAgaWYgKG9wdGlvbnMuc3VwcG9ydFBvaW50ZXIpIHtcbiAgICBvbihlbCwgJ3BvaW50ZXJkb3duJywgdGhpcy5fb25UYXBTdGFydCk7XG4gIH0gZWxzZSB7XG4gICAgb24oZWwsICdtb3VzZWRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcbiAgICBvbihlbCwgJ3RvdWNoc3RhcnQnLCB0aGlzLl9vblRhcFN0YXJ0KTtcbiAgfVxuXG4gIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgIG9uKGVsLCAnZHJhZ292ZXInLCB0aGlzKTtcbiAgICBvbihlbCwgJ2RyYWdlbnRlcicsIHRoaXMpO1xuICB9XG5cbiAgc29ydGFibGVzLnB1c2godGhpcy5lbCk7IC8vIFJlc3RvcmUgc29ydGluZ1xuXG4gIG9wdGlvbnMuc3RvcmUgJiYgb3B0aW9ucy5zdG9yZS5nZXQgJiYgdGhpcy5zb3J0KG9wdGlvbnMuc3RvcmUuZ2V0KHRoaXMpIHx8IFtdKTsgLy8gQWRkIGFuaW1hdGlvbiBzdGF0ZSBtYW5hZ2VyXG5cbiAgX2V4dGVuZHModGhpcywgQW5pbWF0aW9uU3RhdGVNYW5hZ2VyKCkpO1xufVxuXG5Tb3J0YWJsZS5wcm90b3R5cGUgPVxuLyoqIEBsZW5kcyBTb3J0YWJsZS5wcm90b3R5cGUgKi9cbntcbiAgY29uc3RydWN0b3I6IFNvcnRhYmxlLFxuICBfaXNPdXRzaWRlVGhpc0VsOiBmdW5jdGlvbiBfaXNPdXRzaWRlVGhpc0VsKHRhcmdldCkge1xuICAgIGlmICghdGhpcy5lbC5jb250YWlucyh0YXJnZXQpICYmIHRhcmdldCAhPT0gdGhpcy5lbCkge1xuICAgICAgbGFzdFRhcmdldCA9IG51bGw7XG4gICAgfVxuICB9LFxuICBfZ2V0RGlyZWN0aW9uOiBmdW5jdGlvbiBfZ2V0RGlyZWN0aW9uKGV2dCwgdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5vcHRpb25zLmRpcmVjdGlvbi5jYWxsKHRoaXMsIGV2dCwgdGFyZ2V0LCBkcmFnRWwpIDogdGhpcy5vcHRpb25zLmRpcmVjdGlvbjtcbiAgfSxcbiAgX29uVGFwU3RhcnQ6IGZ1bmN0aW9uIF9vblRhcFN0YXJ0KFxuICAvKiogRXZlbnR8VG91Y2hFdmVudCAqL1xuICBldnQpIHtcbiAgICBpZiAoIWV2dC5jYW5jZWxhYmxlKSByZXR1cm47XG5cbiAgICB2YXIgX3RoaXMgPSB0aGlzLFxuICAgICAgICBlbCA9IHRoaXMuZWwsXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgIHByZXZlbnRPbkZpbHRlciA9IG9wdGlvbnMucHJldmVudE9uRmlsdGVyLFxuICAgICAgICB0eXBlID0gZXZ0LnR5cGUsXG4gICAgICAgIHRvdWNoID0gZXZ0LnRvdWNoZXMgJiYgZXZ0LnRvdWNoZXNbMF0gfHwgZXZ0LnBvaW50ZXJUeXBlICYmIGV2dC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJyAmJiBldnQsXG4gICAgICAgIHRhcmdldCA9ICh0b3VjaCB8fCBldnQpLnRhcmdldCxcbiAgICAgICAgb3JpZ2luYWxUYXJnZXQgPSBldnQudGFyZ2V0LnNoYWRvd1Jvb3QgJiYgKGV2dC5wYXRoICYmIGV2dC5wYXRoWzBdIHx8IGV2dC5jb21wb3NlZFBhdGggJiYgZXZ0LmNvbXBvc2VkUGF0aCgpWzBdKSB8fCB0YXJnZXQsXG4gICAgICAgIGZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuXG4gICAgX3NhdmVJbnB1dENoZWNrZWRTdGF0ZShlbCk7IC8vIERvbid0IHRyaWdnZXIgc3RhcnQgZXZlbnQgd2hlbiBhbiBlbGVtZW50IGlzIGJlZW4gZHJhZ2dlZCwgb3RoZXJ3aXNlIHRoZSBldnQub2xkaW5kZXggYWx3YXlzIHdyb25nIHdoZW4gc2V0IG9wdGlvbi5ncm91cC5cblxuXG4gICAgaWYgKGRyYWdFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgvbW91c2Vkb3dufHBvaW50ZXJkb3duLy50ZXN0KHR5cGUpICYmIGV2dC5idXR0b24gIT09IDAgfHwgb3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuOyAvLyBvbmx5IGxlZnQgYnV0dG9uIGFuZCBlbmFibGVkXG4gICAgfSAvLyBjYW5jZWwgZG5kIGlmIG9yaWdpbmFsIHRhcmdldCBpcyBjb250ZW50IGVkaXRhYmxlXG5cblxuICAgIGlmIChvcmlnaW5hbFRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gU2FmYXJpIGlnbm9yZXMgZnVydGhlciBldmVudCBoYW5kbGluZyBhZnRlciBtb3VzZWRvd25cblxuXG4gICAgaWYgKCF0aGlzLm5hdGl2ZURyYWdnYWJsZSAmJiBTYWZhcmkgJiYgdGFyZ2V0ICYmIHRhcmdldC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdTRUxFQ1QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGFyZ2V0ID0gY2xvc2VzdCh0YXJnZXQsIG9wdGlvbnMuZHJhZ2dhYmxlLCBlbCwgZmFsc2UpO1xuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuYW5pbWF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGFzdERvd25FbCA9PT0gdGFyZ2V0KSB7XG4gICAgICAvLyBJZ25vcmluZyBkdXBsaWNhdGUgYGRvd25gXG4gICAgICByZXR1cm47XG4gICAgfSAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBkcmFnZ2VkIGVsZW1lbnQgd2l0aGluIGl0cyBwYXJlbnRcblxuXG4gICAgb2xkSW5kZXggPSBpbmRleCh0YXJnZXQpO1xuICAgIG9sZERyYWdnYWJsZUluZGV4ID0gaW5kZXgodGFyZ2V0LCBvcHRpb25zLmRyYWdnYWJsZSk7IC8vIENoZWNrIGZpbHRlclxuXG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChmaWx0ZXIuY2FsbCh0aGlzLCBldnQsIHRhcmdldCwgdGhpcykpIHtcbiAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgIHNvcnRhYmxlOiBfdGhpcyxcbiAgICAgICAgICByb290RWw6IG9yaWdpbmFsVGFyZ2V0LFxuICAgICAgICAgIG5hbWU6ICdmaWx0ZXInLFxuICAgICAgICAgIHRhcmdldEVsOiB0YXJnZXQsXG4gICAgICAgICAgdG9FbDogZWwsXG4gICAgICAgICAgZnJvbUVsOiBlbFxuICAgICAgICB9KTtcblxuICAgICAgICBwbHVnaW5FdmVudCgnZmlsdGVyJywgX3RoaXMsIHtcbiAgICAgICAgICBldnQ6IGV2dFxuICAgICAgICB9KTtcbiAgICAgICAgcHJldmVudE9uRmlsdGVyICYmIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47IC8vIGNhbmNlbCBkbmRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlcikge1xuICAgICAgZmlsdGVyID0gZmlsdGVyLnNwbGl0KCcsJykuc29tZShmdW5jdGlvbiAoY3JpdGVyaWEpIHtcbiAgICAgICAgY3JpdGVyaWEgPSBjbG9zZXN0KG9yaWdpbmFsVGFyZ2V0LCBjcml0ZXJpYS50cmltKCksIGVsLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKGNyaXRlcmlhKSB7XG4gICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgc29ydGFibGU6IF90aGlzLFxuICAgICAgICAgICAgcm9vdEVsOiBjcml0ZXJpYSxcbiAgICAgICAgICAgIG5hbWU6ICdmaWx0ZXInLFxuICAgICAgICAgICAgdGFyZ2V0RWw6IHRhcmdldCxcbiAgICAgICAgICAgIGZyb21FbDogZWwsXG4gICAgICAgICAgICB0b0VsOiBlbFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcGx1Z2luRXZlbnQoJ2ZpbHRlcicsIF90aGlzLCB7XG4gICAgICAgICAgICBldnQ6IGV2dFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICBwcmV2ZW50T25GaWx0ZXIgJiYgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjsgLy8gY2FuY2VsIGRuZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhhbmRsZSAmJiAhY2xvc2VzdChvcmlnaW5hbFRhcmdldCwgb3B0aW9ucy5oYW5kbGUsIGVsLCBmYWxzZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFByZXBhcmUgYGRyYWdzdGFydGBcblxuXG4gICAgdGhpcy5fcHJlcGFyZURyYWdTdGFydChldnQsIHRvdWNoLCB0YXJnZXQpO1xuICB9LFxuICBfcHJlcGFyZURyYWdTdGFydDogZnVuY3Rpb24gX3ByZXBhcmVEcmFnU3RhcnQoXG4gIC8qKiBFdmVudCAqL1xuICBldnQsXG4gIC8qKiBUb3VjaCAqL1xuICB0b3VjaCxcbiAgLyoqIEhUTUxFbGVtZW50ICovXG4gIHRhcmdldCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgIGVsID0gX3RoaXMuZWwsXG4gICAgICAgIG9wdGlvbnMgPSBfdGhpcy5vcHRpb25zLFxuICAgICAgICBvd25lckRvY3VtZW50ID0gZWwub3duZXJEb2N1bWVudCxcbiAgICAgICAgZHJhZ1N0YXJ0Rm47XG5cbiAgICBpZiAodGFyZ2V0ICYmICFkcmFnRWwgJiYgdGFyZ2V0LnBhcmVudE5vZGUgPT09IGVsKSB7XG4gICAgICB2YXIgZHJhZ1JlY3QgPSBnZXRSZWN0KHRhcmdldCk7XG4gICAgICByb290RWwgPSBlbDtcbiAgICAgIGRyYWdFbCA9IHRhcmdldDtcbiAgICAgIHBhcmVudEVsID0gZHJhZ0VsLnBhcmVudE5vZGU7XG4gICAgICBuZXh0RWwgPSBkcmFnRWwubmV4dFNpYmxpbmc7XG4gICAgICBsYXN0RG93bkVsID0gdGFyZ2V0O1xuICAgICAgYWN0aXZlR3JvdXAgPSBvcHRpb25zLmdyb3VwO1xuICAgICAgU29ydGFibGUuZHJhZ2dlZCA9IGRyYWdFbDtcbiAgICAgIHRhcEV2dCA9IHtcbiAgICAgICAgdGFyZ2V0OiBkcmFnRWwsXG4gICAgICAgIGNsaWVudFg6ICh0b3VjaCB8fCBldnQpLmNsaWVudFgsXG4gICAgICAgIGNsaWVudFk6ICh0b3VjaCB8fCBldnQpLmNsaWVudFlcbiAgICAgIH07XG4gICAgICB0YXBEaXN0YW5jZUxlZnQgPSB0YXBFdnQuY2xpZW50WCAtIGRyYWdSZWN0LmxlZnQ7XG4gICAgICB0YXBEaXN0YW5jZVRvcCA9IHRhcEV2dC5jbGllbnRZIC0gZHJhZ1JlY3QudG9wO1xuICAgICAgdGhpcy5fbGFzdFggPSAodG91Y2ggfHwgZXZ0KS5jbGllbnRYO1xuICAgICAgdGhpcy5fbGFzdFkgPSAodG91Y2ggfHwgZXZ0KS5jbGllbnRZO1xuICAgICAgZHJhZ0VsLnN0eWxlWyd3aWxsLWNoYW5nZSddID0gJ2FsbCc7XG5cbiAgICAgIGRyYWdTdGFydEZuID0gZnVuY3Rpb24gZHJhZ1N0YXJ0Rm4oKSB7XG4gICAgICAgIHBsdWdpbkV2ZW50KCdkZWxheUVuZGVkJywgX3RoaXMsIHtcbiAgICAgICAgICBldnQ6IGV2dFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgICAgIF90aGlzLl9vbkRyb3AoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBEZWxheWVkIGRyYWcgaGFzIGJlZW4gdHJpZ2dlcmVkXG4gICAgICAgIC8vIHdlIGNhbiByZS1lbmFibGUgdGhlIGV2ZW50czogdG91Y2htb3ZlL21vdXNlbW92ZVxuXG5cbiAgICAgICAgX3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpO1xuXG4gICAgICAgIGlmICghRmlyZUZveCAmJiBfdGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgICBkcmFnRWwuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICAgICAgfSAvLyBCaW5kIHRoZSBldmVudHM6IGRyYWdzdGFydC9kcmFnZW5kXG5cblxuICAgICAgICBfdGhpcy5fdHJpZ2dlckRyYWdTdGFydChldnQsIHRvdWNoKTsgLy8gRHJhZyBzdGFydCBldmVudFxuXG5cbiAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgIHNvcnRhYmxlOiBfdGhpcyxcbiAgICAgICAgICBuYW1lOiAnY2hvb3NlJyxcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgfSk7IC8vIENob3NlbiBpdGVtXG5cblxuICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuY2hvc2VuQ2xhc3MsIHRydWUpO1xuICAgICAgfTsgLy8gRGlzYWJsZSBcImRyYWdnYWJsZVwiXG5cblxuICAgICAgb3B0aW9ucy5pZ25vcmUuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uIChjcml0ZXJpYSkge1xuICAgICAgICBmaW5kKGRyYWdFbCwgY3JpdGVyaWEudHJpbSgpLCBfZGlzYWJsZURyYWdnYWJsZSk7XG4gICAgICB9KTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICdkcmFnb3ZlcicsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICdtb3VzZW1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2htb3ZlJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCBfdGhpcy5fb25Ecm9wKTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaGVuZCcsIF90aGlzLl9vbkRyb3ApO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgX3RoaXMuX29uRHJvcCk7IC8vIE1ha2UgZHJhZ0VsIGRyYWdnYWJsZSAobXVzdCBiZSBiZWZvcmUgZGVsYXkgZm9yIEZpcmVGb3gpXG5cbiAgICAgIGlmIChGaXJlRm94ICYmIHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy50b3VjaFN0YXJ0VGhyZXNob2xkID0gNDtcbiAgICAgICAgZHJhZ0VsLmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHBsdWdpbkV2ZW50KCdkZWxheVN0YXJ0JywgdGhpcywge1xuICAgICAgICBldnQ6IGV2dFxuICAgICAgfSk7IC8vIERlbGF5IGlzIGltcG9zc2libGUgZm9yIG5hdGl2ZSBEbkQgaW4gRWRnZSBvciBJRVxuXG4gICAgICBpZiAob3B0aW9ucy5kZWxheSAmJiAoIW9wdGlvbnMuZGVsYXlPblRvdWNoT25seSB8fCB0b3VjaCkgJiYgKCF0aGlzLm5hdGl2ZURyYWdnYWJsZSB8fCAhKEVkZ2UgfHwgSUUxMU9yTGVzcykpKSB7XG4gICAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICAgICAgdGhpcy5fb25Ecm9wKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gSWYgdGhlIHVzZXIgbW92ZXMgdGhlIHBvaW50ZXIgb3IgbGV0IGdvIHRoZSBjbGljayBvciB0b3VjaFxuICAgICAgICAvLyBiZWZvcmUgdGhlIGRlbGF5IGhhcyBiZWVuIHJlYWNoZWQ6XG4gICAgICAgIC8vIGRpc2FibGUgdGhlIGRlbGF5ZWQgZHJhZ1xuXG5cbiAgICAgICAgb24ob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCBfdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNoZW5kJywgX3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIF90aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgICAgICBvbihvd25lckRvY3VtZW50LCAnbW91c2Vtb3ZlJywgX3RoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaG1vdmUnLCBfdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICAgICAgb3B0aW9ucy5zdXBwb3J0UG9pbnRlciAmJiBvbihvd25lckRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCBfdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICAgICAgX3RoaXMuX2RyYWdTdGFydFRpbWVyID0gc2V0VGltZW91dChkcmFnU3RhcnRGbiwgb3B0aW9ucy5kZWxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkcmFnU3RhcnRGbigpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcjogZnVuY3Rpb24gX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcihcbiAgLyoqIFRvdWNoRXZlbnR8UG9pbnRlckV2ZW50ICoqL1xuICBlKSB7XG4gICAgdmFyIHRvdWNoID0gZS50b3VjaGVzID8gZS50b3VjaGVzWzBdIDogZTtcblxuICAgIGlmIChNYXRoLm1heChNYXRoLmFicyh0b3VjaC5jbGllbnRYIC0gdGhpcy5fbGFzdFgpLCBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gdGhpcy5fbGFzdFkpKSA+PSBNYXRoLmZsb29yKHRoaXMub3B0aW9ucy50b3VjaFN0YXJ0VGhyZXNob2xkIC8gKHRoaXMubmF0aXZlRHJhZ2dhYmxlICYmIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpKSkge1xuICAgICAgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKCk7XG4gICAgfVxuICB9LFxuICBfZGlzYWJsZURlbGF5ZWREcmFnOiBmdW5jdGlvbiBfZGlzYWJsZURlbGF5ZWREcmFnKCkge1xuICAgIGRyYWdFbCAmJiBfZGlzYWJsZURyYWdnYWJsZShkcmFnRWwpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9kcmFnU3RhcnRUaW1lcik7XG5cbiAgICB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWdFdmVudHMoKTtcbiAgfSxcbiAgX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50czogZnVuY3Rpb24gX2Rpc2FibGVEZWxheWVkRHJhZ0V2ZW50cygpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHRoaXMuZWwub3duZXJEb2N1bWVudDtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fZGVsYXllZERyYWdUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gIH0sXG4gIF90cmlnZ2VyRHJhZ1N0YXJ0OiBmdW5jdGlvbiBfdHJpZ2dlckRyYWdTdGFydChcbiAgLyoqIEV2ZW50ICovXG4gIGV2dCxcbiAgLyoqIFRvdWNoICovXG4gIHRvdWNoKSB7XG4gICAgdG91Y2ggPSB0b3VjaCB8fCBldnQucG9pbnRlclR5cGUgPT0gJ3RvdWNoJyAmJiBldnQ7XG5cbiAgICBpZiAoIXRoaXMubmF0aXZlRHJhZ2dhYmxlIHx8IHRvdWNoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRQb2ludGVyKSB7XG4gICAgICAgIG9uKGRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgICB9IGVsc2UgaWYgKHRvdWNoKSB7XG4gICAgICAgIG9uKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uKGRyYWdFbCwgJ2RyYWdlbmQnLCB0aGlzKTtcbiAgICAgIG9uKHJvb3RFbCwgJ2RyYWdzdGFydCcsIHRoaXMuX29uRHJhZ1N0YXJ0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikge1xuICAgICAgICAvLyBUaW1lb3V0IG5lY2Nlc3NhcnkgZm9yIElFOVxuICAgICAgICBfbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHt9XG4gIH0sXG4gIF9kcmFnU3RhcnRlZDogZnVuY3Rpb24gX2RyYWdTdGFydGVkKGZhbGxiYWNrLCBldnQpIHtcblxuICAgIGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIGlmIChyb290RWwgJiYgZHJhZ0VsKSB7XG4gICAgICBwbHVnaW5FdmVudCgnZHJhZ1N0YXJ0ZWQnLCB0aGlzLCB7XG4gICAgICAgIGV2dDogZXZ0XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgIG9uKGRvY3VtZW50LCAnZHJhZ292ZXInLCBfY2hlY2tPdXRzaWRlVGFyZ2V0RWwpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsgLy8gQXBwbHkgZWZmZWN0XG5cbiAgICAgICFmYWxsYmFjayAmJiB0b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuZHJhZ0NsYXNzLCBmYWxzZSk7XG4gICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIG9wdGlvbnMuZ2hvc3RDbGFzcywgdHJ1ZSk7XG4gICAgICBTb3J0YWJsZS5hY3RpdmUgPSB0aGlzO1xuICAgICAgZmFsbGJhY2sgJiYgdGhpcy5fYXBwZW5kR2hvc3QoKTsgLy8gRHJhZyBzdGFydCBldmVudFxuXG4gICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICBuYW1lOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9udWxsaW5nKCk7XG4gICAgfVxuICB9LFxuICBfZW11bGF0ZURyYWdPdmVyOiBmdW5jdGlvbiBfZW11bGF0ZURyYWdPdmVyKCkge1xuICAgIGlmICh0b3VjaEV2dCkge1xuICAgICAgdGhpcy5fbGFzdFggPSB0b3VjaEV2dC5jbGllbnRYO1xuICAgICAgdGhpcy5fbGFzdFkgPSB0b3VjaEV2dC5jbGllbnRZO1xuXG4gICAgICBfaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG5cbiAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRvdWNoRXZ0LmNsaWVudFgsIHRvdWNoRXZ0LmNsaWVudFkpO1xuICAgICAgdmFyIHBhcmVudCA9IHRhcmdldDtcblxuICAgICAgd2hpbGUgKHRhcmdldCAmJiB0YXJnZXQuc2hhZG93Um9vdCkge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXQuc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KHRvdWNoRXZ0LmNsaWVudFgsIHRvdWNoRXZ0LmNsaWVudFkpO1xuICAgICAgICBpZiAodGFyZ2V0ID09PSBwYXJlbnQpIGJyZWFrO1xuICAgICAgICBwYXJlbnQgPSB0YXJnZXQ7XG4gICAgICB9XG5cbiAgICAgIGRyYWdFbC5wYXJlbnROb2RlW2V4cGFuZG9dLl9pc091dHNpZGVUaGlzRWwodGFyZ2V0KTtcblxuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgaWYgKHBhcmVudFtleHBhbmRvXSkge1xuICAgICAgICAgICAgdmFyIGluc2VydGVkID0gdm9pZCAwO1xuICAgICAgICAgICAgaW5zZXJ0ZWQgPSBwYXJlbnRbZXhwYW5kb10uX29uRHJhZ092ZXIoe1xuICAgICAgICAgICAgICBjbGllbnRYOiB0b3VjaEV2dC5jbGllbnRYLFxuICAgICAgICAgICAgICBjbGllbnRZOiB0b3VjaEV2dC5jbGllbnRZLFxuICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgICAgICAgcm9vdEVsOiBwYXJlbnRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQgJiYgIXRoaXMub3B0aW9ucy5kcmFnb3ZlckJ1YmJsZSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0YXJnZXQgPSBwYXJlbnQ7IC8vIHN0b3JlIGxhc3QgZWxlbWVudFxuICAgICAgICB9XG4gICAgICAgIC8qIGpzaGludCBib3NzOnRydWUgKi9cbiAgICAgICAgd2hpbGUgKHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgX3VuaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG4gICAgfVxuICB9LFxuICBfb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIF9vblRvdWNoTW92ZShcbiAgLyoqVG91Y2hFdmVudCovXG4gIGV2dCkge1xuICAgIGlmICh0YXBFdnQpIHtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICAgIGZhbGxiYWNrVG9sZXJhbmNlID0gb3B0aW9ucy5mYWxsYmFja1RvbGVyYW5jZSxcbiAgICAgICAgICBmYWxsYmFja09mZnNldCA9IG9wdGlvbnMuZmFsbGJhY2tPZmZzZXQsXG4gICAgICAgICAgdG91Y2ggPSBldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0LFxuICAgICAgICAgIGdob3N0TWF0cml4ID0gZ2hvc3RFbCAmJiBtYXRyaXgoZ2hvc3RFbCwgdHJ1ZSksXG4gICAgICAgICAgc2NhbGVYID0gZ2hvc3RFbCAmJiBnaG9zdE1hdHJpeCAmJiBnaG9zdE1hdHJpeC5hLFxuICAgICAgICAgIHNjYWxlWSA9IGdob3N0RWwgJiYgZ2hvc3RNYXRyaXggJiYgZ2hvc3RNYXRyaXguZCxcbiAgICAgICAgICByZWxhdGl2ZVNjcm9sbE9mZnNldCA9IFBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5ICYmIGdob3N0UmVsYXRpdmVQYXJlbnQgJiYgZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQoZ2hvc3RSZWxhdGl2ZVBhcmVudCksXG4gICAgICAgICAgZHggPSAodG91Y2guY2xpZW50WCAtIHRhcEV2dC5jbGllbnRYICsgZmFsbGJhY2tPZmZzZXQueCkgLyAoc2NhbGVYIHx8IDEpICsgKHJlbGF0aXZlU2Nyb2xsT2Zmc2V0ID8gcmVsYXRpdmVTY3JvbGxPZmZzZXRbMF0gLSBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbFswXSA6IDApIC8gKHNjYWxlWCB8fCAxKSxcbiAgICAgICAgICBkeSA9ICh0b3VjaC5jbGllbnRZIC0gdGFwRXZ0LmNsaWVudFkgKyBmYWxsYmFja09mZnNldC55KSAvIChzY2FsZVkgfHwgMSkgKyAocmVsYXRpdmVTY3JvbGxPZmZzZXQgPyByZWxhdGl2ZVNjcm9sbE9mZnNldFsxXSAtIGdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsWzFdIDogMCkgLyAoc2NhbGVZIHx8IDEpOyAvLyBvbmx5IHNldCB0aGUgc3RhdHVzIHRvIGRyYWdnaW5nLCB3aGVuIHdlIGFyZSBhY3R1YWxseSBkcmFnZ2luZ1xuXG4gICAgICBpZiAoIVNvcnRhYmxlLmFjdGl2ZSAmJiAhYXdhaXRpbmdEcmFnU3RhcnRlZCkge1xuICAgICAgICBpZiAoZmFsbGJhY2tUb2xlcmFuY2UgJiYgTWF0aC5tYXgoTWF0aC5hYnModG91Y2guY2xpZW50WCAtIHRoaXMuX2xhc3RYKSwgTWF0aC5hYnModG91Y2guY2xpZW50WSAtIHRoaXMuX2xhc3RZKSkgPCBmYWxsYmFja1RvbGVyYW5jZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uRHJhZ1N0YXJ0KGV2dCwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChnaG9zdEVsKSB7XG4gICAgICAgIGlmIChnaG9zdE1hdHJpeCkge1xuICAgICAgICAgIGdob3N0TWF0cml4LmUgKz0gZHggLSAobGFzdER4IHx8IDApO1xuICAgICAgICAgIGdob3N0TWF0cml4LmYgKz0gZHkgLSAobGFzdER5IHx8IDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdob3N0TWF0cml4ID0ge1xuICAgICAgICAgICAgYTogMSxcbiAgICAgICAgICAgIGI6IDAsXG4gICAgICAgICAgICBjOiAwLFxuICAgICAgICAgICAgZDogMSxcbiAgICAgICAgICAgIGU6IGR4LFxuICAgICAgICAgICAgZjogZHlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNzc01hdHJpeCA9IFwibWF0cml4KFwiLmNvbmNhdChnaG9zdE1hdHJpeC5hLCBcIixcIikuY29uY2F0KGdob3N0TWF0cml4LmIsIFwiLFwiKS5jb25jYXQoZ2hvc3RNYXRyaXguYywgXCIsXCIpLmNvbmNhdChnaG9zdE1hdHJpeC5kLCBcIixcIikuY29uY2F0KGdob3N0TWF0cml4LmUsIFwiLFwiKS5jb25jYXQoZ2hvc3RNYXRyaXguZiwgXCIpXCIpO1xuICAgICAgICBjc3MoZ2hvc3RFbCwgJ3dlYmtpdFRyYW5zZm9ybScsIGNzc01hdHJpeCk7XG4gICAgICAgIGNzcyhnaG9zdEVsLCAnbW96VHJhbnNmb3JtJywgY3NzTWF0cml4KTtcbiAgICAgICAgY3NzKGdob3N0RWwsICdtc1RyYW5zZm9ybScsIGNzc01hdHJpeCk7XG4gICAgICAgIGNzcyhnaG9zdEVsLCAndHJhbnNmb3JtJywgY3NzTWF0cml4KTtcbiAgICAgICAgbGFzdER4ID0gZHg7XG4gICAgICAgIGxhc3REeSA9IGR5O1xuICAgICAgICB0b3VjaEV2dCA9IHRvdWNoO1xuICAgICAgfVxuXG4gICAgICBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH0sXG4gIF9hcHBlbmRHaG9zdDogZnVuY3Rpb24gX2FwcGVuZEdob3N0KCkge1xuICAgIC8vIEJ1ZyBpZiB1c2luZyBzY2FsZSgpOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjM3MDU4XG4gICAgLy8gTm90IGJlaW5nIGFkanVzdGVkIGZvclxuICAgIGlmICghZ2hvc3RFbCkge1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMub3B0aW9ucy5mYWxsYmFja09uQm9keSA/IGRvY3VtZW50LmJvZHkgOiByb290RWwsXG4gICAgICAgICAgcmVjdCA9IGdldFJlY3QoZHJhZ0VsLCB0cnVlLCBQb3NpdGlvbkdob3N0QWJzb2x1dGVseSwgdHJ1ZSwgY29udGFpbmVyKSxcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOyAvLyBQb3NpdGlvbiBhYnNvbHV0ZWx5XG5cbiAgICAgIGlmIChQb3NpdGlvbkdob3N0QWJzb2x1dGVseSkge1xuICAgICAgICAvLyBHZXQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIHBhcmVudFxuICAgICAgICBnaG9zdFJlbGF0aXZlUGFyZW50ID0gY29udGFpbmVyO1xuXG4gICAgICAgIHdoaWxlIChjc3MoZ2hvc3RSZWxhdGl2ZVBhcmVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnICYmIGNzcyhnaG9zdFJlbGF0aXZlUGFyZW50LCAndHJhbnNmb3JtJykgPT09ICdub25lJyAmJiBnaG9zdFJlbGF0aXZlUGFyZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICAgIGdob3N0UmVsYXRpdmVQYXJlbnQgPSBnaG9zdFJlbGF0aXZlUGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ2hvc3RSZWxhdGl2ZVBhcmVudCAhPT0gZG9jdW1lbnQuYm9keSAmJiBnaG9zdFJlbGF0aXZlUGFyZW50ICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgICBpZiAoZ2hvc3RSZWxhdGl2ZVBhcmVudCA9PT0gZG9jdW1lbnQpIGdob3N0UmVsYXRpdmVQYXJlbnQgPSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG4gICAgICAgICAgcmVjdC50b3AgKz0gZ2hvc3RSZWxhdGl2ZVBhcmVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgcmVjdC5sZWZ0ICs9IGdob3N0UmVsYXRpdmVQYXJlbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnaG9zdFJlbGF0aXZlUGFyZW50ID0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2hvc3RSZWxhdGl2ZVBhcmVudEluaXRpYWxTY3JvbGwgPSBnZXRSZWxhdGl2ZVNjcm9sbE9mZnNldChnaG9zdFJlbGF0aXZlUGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgZ2hvc3RFbCA9IGRyYWdFbC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICB0b2dnbGVDbGFzcyhnaG9zdEVsLCBvcHRpb25zLmdob3N0Q2xhc3MsIGZhbHNlKTtcbiAgICAgIHRvZ2dsZUNsYXNzKGdob3N0RWwsIG9wdGlvbnMuZmFsbGJhY2tDbGFzcywgdHJ1ZSk7XG4gICAgICB0b2dnbGVDbGFzcyhnaG9zdEVsLCBvcHRpb25zLmRyYWdDbGFzcywgdHJ1ZSk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3RyYW5zaXRpb24nLCAnJyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3RyYW5zZm9ybScsICcnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnYm94LXNpemluZycsICdib3JkZXItYm94Jyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ21hcmdpbicsIDApO1xuICAgICAgY3NzKGdob3N0RWwsICd0b3AnLCByZWN0LnRvcCk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ2xlZnQnLCByZWN0LmxlZnQpO1xuICAgICAgY3NzKGdob3N0RWwsICd3aWR0aCcsIHJlY3Qud2lkdGgpO1xuICAgICAgY3NzKGdob3N0RWwsICdoZWlnaHQnLCByZWN0LmhlaWdodCk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ29wYWNpdHknLCAnMC44Jyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3Bvc2l0aW9uJywgUG9zaXRpb25HaG9zdEFic29sdXRlbHkgPyAnYWJzb2x1dGUnIDogJ2ZpeGVkJyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3pJbmRleCcsICcxMDAwMDAnKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAncG9pbnRlckV2ZW50cycsICdub25lJyk7XG4gICAgICBTb3J0YWJsZS5naG9zdCA9IGdob3N0RWw7XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZ2hvc3RFbCk7IC8vIFNldCB0cmFuc2Zvcm0tb3JpZ2luXG5cbiAgICAgIGNzcyhnaG9zdEVsLCAndHJhbnNmb3JtLW9yaWdpbicsIHRhcERpc3RhbmNlTGVmdCAvIHBhcnNlSW50KGdob3N0RWwuc3R5bGUud2lkdGgpICogMTAwICsgJyUgJyArIHRhcERpc3RhbmNlVG9wIC8gcGFyc2VJbnQoZ2hvc3RFbC5zdHlsZS5oZWlnaHQpICogMTAwICsgJyUnKTtcbiAgICB9XG4gIH0sXG4gIF9vbkRyYWdTdGFydDogZnVuY3Rpb24gX29uRHJhZ1N0YXJ0KFxuICAvKipFdmVudCovXG4gIGV2dCxcbiAgLyoqYm9vbGVhbiovXG4gIGZhbGxiYWNrKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBkYXRhVHJhbnNmZXIgPSBldnQuZGF0YVRyYW5zZmVyO1xuICAgIHZhciBvcHRpb25zID0gX3RoaXMub3B0aW9ucztcbiAgICBwbHVnaW5FdmVudCgnZHJhZ1N0YXJ0JywgdGhpcywge1xuICAgICAgZXZ0OiBldnRcbiAgICB9KTtcblxuICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICB0aGlzLl9vbkRyb3AoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBsdWdpbkV2ZW50KCdzZXR1cENsb25lJywgdGhpcyk7XG5cbiAgICBpZiAoIVNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgIGNsb25lRWwgPSBjbG9uZShkcmFnRWwpO1xuICAgICAgY2xvbmVFbC5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgICAgIGNsb25lRWwuc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAnJztcblxuICAgICAgdGhpcy5faGlkZUNsb25lKCk7XG5cbiAgICAgIHRvZ2dsZUNsYXNzKGNsb25lRWwsIHRoaXMub3B0aW9ucy5jaG9zZW5DbGFzcywgZmFsc2UpO1xuICAgICAgU29ydGFibGUuY2xvbmUgPSBjbG9uZUVsO1xuICAgIH0gLy8gIzExNDM6IElGcmFtZSBzdXBwb3J0IHdvcmthcm91bmRcblxuXG4gICAgX3RoaXMuY2xvbmVJZCA9IF9uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBwbHVnaW5FdmVudCgnY2xvbmUnLCBfdGhpcyk7XG4gICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoIV90aGlzLm9wdGlvbnMucmVtb3ZlQ2xvbmVPbkhpZGUpIHtcbiAgICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShjbG9uZUVsLCBkcmFnRWwpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5faGlkZUNsb25lKCk7XG5cbiAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgc29ydGFibGU6IF90aGlzLFxuICAgICAgICBuYW1lOiAnY2xvbmUnXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAhZmFsbGJhY2sgJiYgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmRyYWdDbGFzcywgdHJ1ZSk7IC8vIFNldCBwcm9wZXIgZHJvcCBldmVudHNcblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgaWdub3JlTmV4dENsaWNrID0gdHJ1ZTtcbiAgICAgIF90aGlzLl9sb29wSWQgPSBzZXRJbnRlcnZhbChfdGhpcy5fZW11bGF0ZURyYWdPdmVyLCA1MCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVuZG8gd2hhdCB3YXMgc2V0IGluIF9wcmVwYXJlRHJhZ1N0YXJ0IGJlZm9yZSBkcmFnIHN0YXJ0ZWRcbiAgICAgIG9mZihkb2N1bWVudCwgJ21vdXNldXAnLCBfdGhpcy5fb25Ecm9wKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ3RvdWNoZW5kJywgX3RoaXMuX29uRHJvcCk7XG4gICAgICBvZmYoZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIF90aGlzLl9vbkRyb3ApO1xuXG4gICAgICBpZiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIGRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnO1xuICAgICAgICBvcHRpb25zLnNldERhdGEgJiYgb3B0aW9ucy5zZXREYXRhLmNhbGwoX3RoaXMsIGRhdGFUcmFuc2ZlciwgZHJhZ0VsKTtcbiAgICAgIH1cblxuICAgICAgb24oZG9jdW1lbnQsICdkcm9wJywgX3RoaXMpOyAvLyAjMTI3NiBmaXg6XG5cbiAgICAgIGNzcyhkcmFnRWwsICd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlWigwKScpO1xuICAgIH1cblxuICAgIGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgIF90aGlzLl9kcmFnU3RhcnRJZCA9IF9uZXh0VGljayhfdGhpcy5fZHJhZ1N0YXJ0ZWQuYmluZChfdGhpcywgZmFsbGJhY2ssIGV2dCkpO1xuICAgIG9uKGRvY3VtZW50LCAnc2VsZWN0c3RhcnQnLCBfdGhpcyk7XG4gICAgbW92ZWQgPSB0cnVlO1xuXG4gICAgaWYgKFNhZmFyaSkge1xuICAgICAgY3NzKGRvY3VtZW50LmJvZHksICd1c2VyLXNlbGVjdCcsICdub25lJyk7XG4gICAgfVxuICB9LFxuICAvLyBSZXR1cm5zIHRydWUgLSBpZiBubyBmdXJ0aGVyIGFjdGlvbiBpcyBuZWVkZWQgKGVpdGhlciBpbnNlcnRlZCBvciBhbm90aGVyIGNvbmRpdGlvbilcbiAgX29uRHJhZ092ZXI6IGZ1bmN0aW9uIF9vbkRyYWdPdmVyKFxuICAvKipFdmVudCovXG4gIGV2dCkge1xuICAgIHZhciBlbCA9IHRoaXMuZWwsXG4gICAgICAgIHRhcmdldCA9IGV2dC50YXJnZXQsXG4gICAgICAgIGRyYWdSZWN0LFxuICAgICAgICB0YXJnZXRSZWN0LFxuICAgICAgICByZXZlcnQsXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgIGdyb3VwID0gb3B0aW9ucy5ncm91cCxcbiAgICAgICAgYWN0aXZlU29ydGFibGUgPSBTb3J0YWJsZS5hY3RpdmUsXG4gICAgICAgIGlzT3duZXIgPSBhY3RpdmVHcm91cCA9PT0gZ3JvdXAsXG4gICAgICAgIGNhblNvcnQgPSBvcHRpb25zLnNvcnQsXG4gICAgICAgIGZyb21Tb3J0YWJsZSA9IHB1dFNvcnRhYmxlIHx8IGFjdGl2ZVNvcnRhYmxlLFxuICAgICAgICB2ZXJ0aWNhbCxcbiAgICAgICAgX3RoaXMgPSB0aGlzLFxuICAgICAgICBjb21wbGV0ZWRGaXJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKF9zaWxlbnQpIHJldHVybjtcblxuICAgIGZ1bmN0aW9uIGRyYWdPdmVyRXZlbnQobmFtZSwgZXh0cmEpIHtcbiAgICAgIHBsdWdpbkV2ZW50KG5hbWUsIF90aGlzLCBfb2JqZWN0U3ByZWFkMih7XG4gICAgICAgIGV2dDogZXZ0LFxuICAgICAgICBpc093bmVyOiBpc093bmVyLFxuICAgICAgICBheGlzOiB2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgIHJldmVydDogcmV2ZXJ0LFxuICAgICAgICBkcmFnUmVjdDogZHJhZ1JlY3QsXG4gICAgICAgIHRhcmdldFJlY3Q6IHRhcmdldFJlY3QsXG4gICAgICAgIGNhblNvcnQ6IGNhblNvcnQsXG4gICAgICAgIGZyb21Tb3J0YWJsZTogZnJvbVNvcnRhYmxlLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgICAgY29tcGxldGVkOiBjb21wbGV0ZWQsXG4gICAgICAgIG9uTW92ZTogZnVuY3Rpb24gb25Nb3ZlKHRhcmdldCwgYWZ0ZXIpIHtcbiAgICAgICAgICByZXR1cm4gX29uTW92ZShyb290RWwsIGVsLCBkcmFnRWwsIGRyYWdSZWN0LCB0YXJnZXQsIGdldFJlY3QodGFyZ2V0KSwgZXZ0LCBhZnRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNoYW5nZWQ6IGNoYW5nZWRcbiAgICAgIH0sIGV4dHJhKSk7XG4gICAgfSAvLyBDYXB0dXJlIGFuaW1hdGlvbiBzdGF0ZVxuXG5cbiAgICBmdW5jdGlvbiBjYXB0dXJlKCkge1xuICAgICAgZHJhZ092ZXJFdmVudCgnZHJhZ092ZXJBbmltYXRpb25DYXB0dXJlJyk7XG5cbiAgICAgIF90aGlzLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuXG4gICAgICBpZiAoX3RoaXMgIT09IGZyb21Tb3J0YWJsZSkge1xuICAgICAgICBmcm9tU29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgICB9XG4gICAgfSAvLyBSZXR1cm4gaW52b2NhdGlvbiB3aGVuIGRyYWdFbCBpcyBpbnNlcnRlZCAob3IgY29tcGxldGVkKVxuXG5cbiAgICBmdW5jdGlvbiBjb21wbGV0ZWQoaW5zZXJ0aW9uKSB7XG4gICAgICBkcmFnT3ZlckV2ZW50KCdkcmFnT3ZlckNvbXBsZXRlZCcsIHtcbiAgICAgICAgaW5zZXJ0aW9uOiBpbnNlcnRpb25cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgIC8vIENsb25lcyBtdXN0IGJlIGhpZGRlbiBiZWZvcmUgZm9sZGluZyBhbmltYXRpb24gdG8gY2FwdHVyZSBkcmFnUmVjdEFic29sdXRlIHByb3Blcmx5XG4gICAgICAgIGlmIChpc093bmVyKSB7XG4gICAgICAgICAgYWN0aXZlU29ydGFibGUuX2hpZGVDbG9uZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLl9zaG93Q2xvbmUoX3RoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzICE9PSBmcm9tU29ydGFibGUpIHtcbiAgICAgICAgICAvLyBTZXQgZ2hvc3QgY2xhc3MgdG8gbmV3IHNvcnRhYmxlJ3MgZ2hvc3QgY2xhc3NcbiAgICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIHB1dFNvcnRhYmxlID8gcHV0U29ydGFibGUub3B0aW9ucy5naG9zdENsYXNzIDogYWN0aXZlU29ydGFibGUub3B0aW9ucy5naG9zdENsYXNzLCBmYWxzZSk7XG4gICAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmdob3N0Q2xhc3MsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHB1dFNvcnRhYmxlICE9PSBfdGhpcyAmJiBfdGhpcyAhPT0gU29ydGFibGUuYWN0aXZlKSB7XG4gICAgICAgICAgcHV0U29ydGFibGUgPSBfdGhpcztcbiAgICAgICAgfSBlbHNlIGlmIChfdGhpcyA9PT0gU29ydGFibGUuYWN0aXZlICYmIHB1dFNvcnRhYmxlKSB7XG4gICAgICAgICAgcHV0U29ydGFibGUgPSBudWxsO1xuICAgICAgICB9IC8vIEFuaW1hdGlvblxuXG5cbiAgICAgICAgaWYgKGZyb21Tb3J0YWJsZSA9PT0gX3RoaXMpIHtcbiAgICAgICAgICBfdGhpcy5faWdub3JlV2hpbGVBbmltYXRpbmcgPSB0YXJnZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5hbmltYXRlQWxsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkcmFnT3ZlckV2ZW50KCdkcmFnT3ZlckFuaW1hdGlvbkNvbXBsZXRlJyk7XG4gICAgICAgICAgX3RoaXMuX2lnbm9yZVdoaWxlQW5pbWF0aW5nID0gbnVsbDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKF90aGlzICE9PSBmcm9tU29ydGFibGUpIHtcbiAgICAgICAgICBmcm9tU29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICAgICAgICAgIGZyb21Tb3J0YWJsZS5faWdub3JlV2hpbGVBbmltYXRpbmcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IC8vIE51bGwgbGFzdFRhcmdldCBpZiBpdCBpcyBub3QgaW5zaWRlIGEgcHJldmlvdXNseSBzd2FwcGVkIGVsZW1lbnRcblxuXG4gICAgICBpZiAodGFyZ2V0ID09PSBkcmFnRWwgJiYgIWRyYWdFbC5hbmltYXRlZCB8fCB0YXJnZXQgPT09IGVsICYmICF0YXJnZXQuYW5pbWF0ZWQpIHtcbiAgICAgICAgbGFzdFRhcmdldCA9IG51bGw7XG4gICAgICB9IC8vIG5vIGJ1YmJsaW5nIGFuZCBub3QgZmFsbGJhY2tcblxuXG4gICAgICBpZiAoIW9wdGlvbnMuZHJhZ292ZXJCdWJibGUgJiYgIWV2dC5yb290RWwgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudCkge1xuICAgICAgICBkcmFnRWwucGFyZW50Tm9kZVtleHBhbmRvXS5faXNPdXRzaWRlVGhpc0VsKGV2dC50YXJnZXQpOyAvLyBEbyBub3QgZGV0ZWN0IGZvciBlbXB0eSBpbnNlcnQgaWYgYWxyZWFkeSBpbnNlcnRlZFxuXG5cbiAgICAgICAgIWluc2VydGlvbiAmJiBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudChldnQpO1xuICAgICAgfVxuXG4gICAgICAhb3B0aW9ucy5kcmFnb3ZlckJ1YmJsZSAmJiBldnQuc3RvcFByb3BhZ2F0aW9uICYmIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBjb21wbGV0ZWRGaXJlZCA9IHRydWU7XG4gICAgfSAvLyBDYWxsIHdoZW4gZHJhZ0VsIGhhcyBiZWVuIGluc2VydGVkXG5cblxuICAgIGZ1bmN0aW9uIGNoYW5nZWQoKSB7XG4gICAgICBuZXdJbmRleCA9IGluZGV4KGRyYWdFbCk7XG4gICAgICBuZXdEcmFnZ2FibGVJbmRleCA9IGluZGV4KGRyYWdFbCwgb3B0aW9ucy5kcmFnZ2FibGUpO1xuXG4gICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHNvcnRhYmxlOiBfdGhpcyxcbiAgICAgICAgbmFtZTogJ2NoYW5nZScsXG4gICAgICAgIHRvRWw6IGVsLFxuICAgICAgICBuZXdJbmRleDogbmV3SW5kZXgsXG4gICAgICAgIG5ld0RyYWdnYWJsZUluZGV4OiBuZXdEcmFnZ2FibGVJbmRleCxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZXZ0LnByZXZlbnREZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHRhcmdldCA9IGNsb3Nlc3QodGFyZ2V0LCBvcHRpb25zLmRyYWdnYWJsZSwgZWwsIHRydWUpO1xuICAgIGRyYWdPdmVyRXZlbnQoJ2RyYWdPdmVyJyk7XG4gICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHJldHVybiBjb21wbGV0ZWRGaXJlZDtcblxuICAgIGlmIChkcmFnRWwuY29udGFpbnMoZXZ0LnRhcmdldCkgfHwgdGFyZ2V0LmFuaW1hdGVkICYmIHRhcmdldC5hbmltYXRpbmdYICYmIHRhcmdldC5hbmltYXRpbmdZIHx8IF90aGlzLl9pZ25vcmVXaGlsZUFuaW1hdGluZyA9PT0gdGFyZ2V0KSB7XG4gICAgICByZXR1cm4gY29tcGxldGVkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZ25vcmVOZXh0Q2xpY2sgPSBmYWxzZTtcblxuICAgIGlmIChhY3RpdmVTb3J0YWJsZSAmJiAhb3B0aW9ucy5kaXNhYmxlZCAmJiAoaXNPd25lciA/IGNhblNvcnQgfHwgKHJldmVydCA9IHBhcmVudEVsICE9PSByb290RWwpIC8vIFJldmVydGluZyBpdGVtIGludG8gdGhlIG9yaWdpbmFsIGxpc3RcbiAgICA6IHB1dFNvcnRhYmxlID09PSB0aGlzIHx8ICh0aGlzLmxhc3RQdXRNb2RlID0gYWN0aXZlR3JvdXAuY2hlY2tQdWxsKHRoaXMsIGFjdGl2ZVNvcnRhYmxlLCBkcmFnRWwsIGV2dCkpICYmIGdyb3VwLmNoZWNrUHV0KHRoaXMsIGFjdGl2ZVNvcnRhYmxlLCBkcmFnRWwsIGV2dCkpKSB7XG4gICAgICB2ZXJ0aWNhbCA9IHRoaXMuX2dldERpcmVjdGlvbihldnQsIHRhcmdldCkgPT09ICd2ZXJ0aWNhbCc7XG4gICAgICBkcmFnUmVjdCA9IGdldFJlY3QoZHJhZ0VsKTtcbiAgICAgIGRyYWdPdmVyRXZlbnQoJ2RyYWdPdmVyVmFsaWQnKTtcbiAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSByZXR1cm4gY29tcGxldGVkRmlyZWQ7XG5cbiAgICAgIGlmIChyZXZlcnQpIHtcbiAgICAgICAgcGFyZW50RWwgPSByb290RWw7IC8vIGFjdHVhbGl6YXRpb25cblxuICAgICAgICBjYXB0dXJlKCk7XG5cbiAgICAgICAgdGhpcy5faGlkZUNsb25lKCk7XG5cbiAgICAgICAgZHJhZ092ZXJFdmVudCgncmV2ZXJ0Jyk7XG5cbiAgICAgICAgaWYgKCFTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICAgICAgaWYgKG5leHRFbCkge1xuICAgICAgICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShkcmFnRWwsIG5leHRFbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvb3RFbC5hcHBlbmRDaGlsZChkcmFnRWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wbGV0ZWQodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbExhc3RDaGlsZCA9IGxhc3RDaGlsZChlbCwgb3B0aW9ucy5kcmFnZ2FibGUpO1xuXG4gICAgICBpZiAoIWVsTGFzdENoaWxkIHx8IF9naG9zdElzTGFzdChldnQsIHZlcnRpY2FsLCB0aGlzKSAmJiAhZWxMYXN0Q2hpbGQuYW5pbWF0ZWQpIHtcbiAgICAgICAgLy8gSW5zZXJ0IHRvIGVuZCBvZiBsaXN0XG4gICAgICAgIC8vIElmIGFscmVhZHkgYXQgZW5kIG9mIGxpc3Q6IERvIG5vdCBpbnNlcnRcbiAgICAgICAgaWYgKGVsTGFzdENoaWxkID09PSBkcmFnRWwpIHtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKGZhbHNlKTtcbiAgICAgICAgfSAvLyBpZiB0aGVyZSBpcyBhIGxhc3QgZWxlbWVudCwgaXQgaXMgdGhlIHRhcmdldFxuXG5cbiAgICAgICAgaWYgKGVsTGFzdENoaWxkICYmIGVsID09PSBldnQudGFyZ2V0KSB7XG4gICAgICAgICAgdGFyZ2V0ID0gZWxMYXN0Q2hpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgdGFyZ2V0UmVjdCA9IGdldFJlY3QodGFyZ2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgdGFyZ2V0UmVjdCwgZXZ0LCAhIXRhcmdldCkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY2FwdHVyZSgpO1xuICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGRyYWdFbCk7XG4gICAgICAgICAgcGFyZW50RWwgPSBlbDsgLy8gYWN0dWFsaXphdGlvblxuXG4gICAgICAgICAgY2hhbmdlZCgpO1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZWxMYXN0Q2hpbGQgJiYgX2dob3N0SXNGaXJzdChldnQsIHZlcnRpY2FsLCB0aGlzKSkge1xuICAgICAgICAvLyBJbnNlcnQgdG8gc3RhcnQgb2YgbGlzdFxuICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IGdldENoaWxkKGVsLCAwLCBvcHRpb25zLCB0cnVlKTtcblxuICAgICAgICBpZiAoZmlyc3RDaGlsZCA9PT0gZHJhZ0VsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXQgPSBmaXJzdENoaWxkO1xuICAgICAgICB0YXJnZXRSZWN0ID0gZ2V0UmVjdCh0YXJnZXQpO1xuXG4gICAgICAgIGlmIChfb25Nb3ZlKHJvb3RFbCwgZWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldCwgdGFyZ2V0UmVjdCwgZXZ0LCBmYWxzZSkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY2FwdHVyZSgpO1xuICAgICAgICAgIGVsLmluc2VydEJlZm9yZShkcmFnRWwsIGZpcnN0Q2hpbGQpO1xuICAgICAgICAgIHBhcmVudEVsID0gZWw7IC8vIGFjdHVhbGl6YXRpb25cblxuICAgICAgICAgIGNoYW5nZWQoKTtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRhcmdldC5wYXJlbnROb2RlID09PSBlbCkge1xuICAgICAgICB0YXJnZXRSZWN0ID0gZ2V0UmVjdCh0YXJnZXQpO1xuICAgICAgICB2YXIgZGlyZWN0aW9uID0gMCxcbiAgICAgICAgICAgIHRhcmdldEJlZm9yZUZpcnN0U3dhcCxcbiAgICAgICAgICAgIGRpZmZlcmVudExldmVsID0gZHJhZ0VsLnBhcmVudE5vZGUgIT09IGVsLFxuICAgICAgICAgICAgZGlmZmVyZW50Um93Q29sID0gIV9kcmFnRWxJblJvd0NvbHVtbihkcmFnRWwuYW5pbWF0ZWQgJiYgZHJhZ0VsLnRvUmVjdCB8fCBkcmFnUmVjdCwgdGFyZ2V0LmFuaW1hdGVkICYmIHRhcmdldC50b1JlY3QgfHwgdGFyZ2V0UmVjdCwgdmVydGljYWwpLFxuICAgICAgICAgICAgc2lkZTEgPSB2ZXJ0aWNhbCA/ICd0b3AnIDogJ2xlZnQnLFxuICAgICAgICAgICAgc2Nyb2xsZWRQYXN0VG9wID0gaXNTY3JvbGxlZFBhc3QodGFyZ2V0LCAndG9wJywgJ3RvcCcpIHx8IGlzU2Nyb2xsZWRQYXN0KGRyYWdFbCwgJ3RvcCcsICd0b3AnKSxcbiAgICAgICAgICAgIHNjcm9sbEJlZm9yZSA9IHNjcm9sbGVkUGFzdFRvcCA/IHNjcm9sbGVkUGFzdFRvcC5zY3JvbGxUb3AgOiB2b2lkIDA7XG5cbiAgICAgICAgaWYgKGxhc3RUYXJnZXQgIT09IHRhcmdldCkge1xuICAgICAgICAgIHRhcmdldEJlZm9yZUZpcnN0U3dhcCA9IHRhcmdldFJlY3Rbc2lkZTFdO1xuICAgICAgICAgIHBhc3RGaXJzdEludmVydFRocmVzaCA9IGZhbHNlO1xuICAgICAgICAgIGlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQgPSAhZGlmZmVyZW50Um93Q29sICYmIG9wdGlvbnMuaW52ZXJ0U3dhcCB8fCBkaWZmZXJlbnRMZXZlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpcmVjdGlvbiA9IF9nZXRTd2FwRGlyZWN0aW9uKGV2dCwgdGFyZ2V0LCB0YXJnZXRSZWN0LCB2ZXJ0aWNhbCwgZGlmZmVyZW50Um93Q29sID8gMSA6IG9wdGlvbnMuc3dhcFRocmVzaG9sZCwgb3B0aW9ucy5pbnZlcnRlZFN3YXBUaHJlc2hvbGQgPT0gbnVsbCA/IG9wdGlvbnMuc3dhcFRocmVzaG9sZCA6IG9wdGlvbnMuaW52ZXJ0ZWRTd2FwVGhyZXNob2xkLCBpc0NpcmN1bXN0YW50aWFsSW52ZXJ0LCBsYXN0VGFyZ2V0ID09PSB0YXJnZXQpO1xuICAgICAgICB2YXIgc2libGluZztcblxuICAgICAgICBpZiAoZGlyZWN0aW9uICE9PSAwKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGFyZ2V0IGlzIGJlc2lkZSBkcmFnRWwgaW4gcmVzcGVjdGl2ZSBkaXJlY3Rpb24gKGlnbm9yaW5nIGhpZGRlbiBlbGVtZW50cylcbiAgICAgICAgICB2YXIgZHJhZ0luZGV4ID0gaW5kZXgoZHJhZ0VsKTtcblxuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGRyYWdJbmRleCAtPSBkaXJlY3Rpb247XG4gICAgICAgICAgICBzaWJsaW5nID0gcGFyZW50RWwuY2hpbGRyZW5bZHJhZ0luZGV4XTtcbiAgICAgICAgICB9IHdoaWxlIChzaWJsaW5nICYmIChjc3Moc2libGluZywgJ2Rpc3BsYXknKSA9PT0gJ25vbmUnIHx8IHNpYmxpbmcgPT09IGdob3N0RWwpKTtcbiAgICAgICAgfSAvLyBJZiBkcmFnRWwgaXMgYWxyZWFkeSBiZXNpZGUgdGFyZ2V0OiBEbyBub3QgaW5zZXJ0XG5cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAwIHx8IHNpYmxpbmcgPT09IHRhcmdldCkge1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFzdFRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgbGFzdERpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gdGFyZ2V0Lm5leHRFbGVtZW50U2libGluZyxcbiAgICAgICAgICAgIGFmdGVyID0gZmFsc2U7XG4gICAgICAgIGFmdGVyID0gZGlyZWN0aW9uID09PSAxO1xuXG4gICAgICAgIHZhciBtb3ZlVmVjdG9yID0gX29uTW92ZShyb290RWwsIGVsLCBkcmFnRWwsIGRyYWdSZWN0LCB0YXJnZXQsIHRhcmdldFJlY3QsIGV2dCwgYWZ0ZXIpO1xuXG4gICAgICAgIGlmIChtb3ZlVmVjdG9yICE9PSBmYWxzZSkge1xuICAgICAgICAgIGlmIChtb3ZlVmVjdG9yID09PSAxIHx8IG1vdmVWZWN0b3IgPT09IC0xKSB7XG4gICAgICAgICAgICBhZnRlciA9IG1vdmVWZWN0b3IgPT09IDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3NpbGVudCA9IHRydWU7XG4gICAgICAgICAgc2V0VGltZW91dChfdW5zaWxlbnQsIDMwKTtcbiAgICAgICAgICBjYXB0dXJlKCk7XG5cbiAgICAgICAgICBpZiAoYWZ0ZXIgJiYgIW5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkcmFnRWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ0VsLCBhZnRlciA/IG5leHRTaWJsaW5nIDogdGFyZ2V0KTtcbiAgICAgICAgICB9IC8vIFVuZG8gY2hyb21lJ3Mgc2Nyb2xsIGFkanVzdG1lbnQgKGhhcyBubyBlZmZlY3Qgb24gb3RoZXIgYnJvd3NlcnMpXG5cblxuICAgICAgICAgIGlmIChzY3JvbGxlZFBhc3RUb3ApIHtcbiAgICAgICAgICAgIHNjcm9sbEJ5KHNjcm9sbGVkUGFzdFRvcCwgMCwgc2Nyb2xsQmVmb3JlIC0gc2Nyb2xsZWRQYXN0VG9wLnNjcm9sbFRvcCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGFyZW50RWwgPSBkcmFnRWwucGFyZW50Tm9kZTsgLy8gYWN0dWFsaXphdGlvblxuICAgICAgICAgIC8vIG11c3QgYmUgZG9uZSBiZWZvcmUgYW5pbWF0aW9uXG5cbiAgICAgICAgICBpZiAodGFyZ2V0QmVmb3JlRmlyc3RTd2FwICE9PSB1bmRlZmluZWQgJiYgIWlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQpIHtcbiAgICAgICAgICAgIHRhcmdldE1vdmVEaXN0YW5jZSA9IE1hdGguYWJzKHRhcmdldEJlZm9yZUZpcnN0U3dhcCAtIGdldFJlY3QodGFyZ2V0KVtzaWRlMV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoYW5nZWQoKTtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5jb250YWlucyhkcmFnRWwpKSB7XG4gICAgICAgIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgX2lnbm9yZVdoaWxlQW5pbWF0aW5nOiBudWxsLFxuICBfb2ZmTW92ZUV2ZW50czogZnVuY3Rpb24gX29mZk1vdmVFdmVudHMoKSB7XG4gICAgb2ZmKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgIG9mZihkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICBvZmYoZG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICBvZmYoZG9jdW1lbnQsICdkcmFnb3ZlcicsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgICBvZmYoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gICAgb2ZmKGRvY3VtZW50LCAndG91Y2htb3ZlJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICB9LFxuICBfb2ZmVXBFdmVudHM6IGZ1bmN0aW9uIF9vZmZVcEV2ZW50cygpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHRoaXMuZWwub3duZXJEb2N1bWVudDtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9vbkRyb3ApO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9vbkRyb3ApO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAncG9pbnRlcnVwJywgdGhpcy5fb25Ecm9wKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgdGhpcy5fb25Ecm9wKTtcbiAgICBvZmYoZG9jdW1lbnQsICdzZWxlY3RzdGFydCcsIHRoaXMpO1xuICB9LFxuICBfb25Ecm9wOiBmdW5jdGlvbiBfb25Ecm9wKFxuICAvKipFdmVudCovXG4gIGV2dCkge1xuICAgIHZhciBlbCA9IHRoaXMuZWwsXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7IC8vIEdldCB0aGUgaW5kZXggb2YgdGhlIGRyYWdnZWQgZWxlbWVudCB3aXRoaW4gaXRzIHBhcmVudFxuXG4gICAgbmV3SW5kZXggPSBpbmRleChkcmFnRWwpO1xuICAgIG5ld0RyYWdnYWJsZUluZGV4ID0gaW5kZXgoZHJhZ0VsLCBvcHRpb25zLmRyYWdnYWJsZSk7XG4gICAgcGx1Z2luRXZlbnQoJ2Ryb3AnLCB0aGlzLCB7XG4gICAgICBldnQ6IGV2dFxuICAgIH0pO1xuICAgIHBhcmVudEVsID0gZHJhZ0VsICYmIGRyYWdFbC5wYXJlbnROb2RlOyAvLyBHZXQgYWdhaW4gYWZ0ZXIgcGx1Z2luIGV2ZW50XG5cbiAgICBuZXdJbmRleCA9IGluZGV4KGRyYWdFbCk7XG4gICAgbmV3RHJhZ2dhYmxlSW5kZXggPSBpbmRleChkcmFnRWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcblxuICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICB0aGlzLl9udWxsaW5nKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdGluZ0RyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgaXNDaXJjdW1zdGFudGlhbEludmVydCA9IGZhbHNlO1xuICAgIHBhc3RGaXJzdEludmVydFRocmVzaCA9IGZhbHNlO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fbG9vcElkKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fZHJhZ1N0YXJ0VGltZXIpO1xuXG4gICAgX2NhbmNlbE5leHRUaWNrKHRoaXMuY2xvbmVJZCk7XG5cbiAgICBfY2FuY2VsTmV4dFRpY2sodGhpcy5fZHJhZ1N0YXJ0SWQpOyAvLyBVbmJpbmQgZXZlbnRzXG5cblxuICAgIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgb2ZmKGRvY3VtZW50LCAnZHJvcCcsIHRoaXMpO1xuICAgICAgb2ZmKGVsLCAnZHJhZ3N0YXJ0JywgdGhpcy5fb25EcmFnU3RhcnQpO1xuICAgIH1cblxuICAgIHRoaXMuX29mZk1vdmVFdmVudHMoKTtcblxuICAgIHRoaXMuX29mZlVwRXZlbnRzKCk7XG5cbiAgICBpZiAoU2FmYXJpKSB7XG4gICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ3VzZXItc2VsZWN0JywgJycpO1xuICAgIH1cblxuICAgIGNzcyhkcmFnRWwsICd0cmFuc2Zvcm0nLCAnJyk7XG5cbiAgICBpZiAoZXZ0KSB7XG4gICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICFvcHRpb25zLmRyb3BCdWJibGUgJiYgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuXG4gICAgICBnaG9zdEVsICYmIGdob3N0RWwucGFyZW50Tm9kZSAmJiBnaG9zdEVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZ2hvc3RFbCk7XG5cbiAgICAgIGlmIChyb290RWwgPT09IHBhcmVudEVsIHx8IHB1dFNvcnRhYmxlICYmIHB1dFNvcnRhYmxlLmxhc3RQdXRNb2RlICE9PSAnY2xvbmUnKSB7XG4gICAgICAgIC8vIFJlbW92ZSBjbG9uZShzKVxuICAgICAgICBjbG9uZUVsICYmIGNsb25lRWwucGFyZW50Tm9kZSAmJiBjbG9uZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvbmVFbCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkcmFnRWwpIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgICAgb2ZmKGRyYWdFbCwgJ2RyYWdlbmQnLCB0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9kaXNhYmxlRHJhZ2dhYmxlKGRyYWdFbCk7XG5cbiAgICAgICAgZHJhZ0VsLnN0eWxlWyd3aWxsLWNoYW5nZSddID0gJyc7IC8vIFJlbW92ZSBjbGFzc2VzXG4gICAgICAgIC8vIGdob3N0Q2xhc3MgaXMgYWRkZWQgaW4gZHJhZ1N0YXJ0ZWRcblxuICAgICAgICBpZiAobW92ZWQgJiYgIWF3YWl0aW5nRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIHB1dFNvcnRhYmxlID8gcHV0U29ydGFibGUub3B0aW9ucy5naG9zdENsYXNzIDogdGhpcy5vcHRpb25zLmdob3N0Q2xhc3MsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgdGhpcy5vcHRpb25zLmNob3NlbkNsYXNzLCBmYWxzZSk7IC8vIERyYWcgc3RvcCBldmVudFxuXG4gICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICBuYW1lOiAndW5jaG9vc2UnLFxuICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgIG5ld0luZGV4OiBudWxsLFxuICAgICAgICAgIG5ld0RyYWdnYWJsZUluZGV4OiBudWxsLFxuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocm9vdEVsICE9PSBwYXJlbnRFbCkge1xuICAgICAgICAgIGlmIChuZXdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBBZGQgZXZlbnRcbiAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgcm9vdEVsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgbmFtZTogJ2FkZCcsXG4gICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBmcm9tRWw6IHJvb3RFbCxcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICB9KTsgLy8gUmVtb3ZlIGV2ZW50XG5cblxuICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICAgICAgbmFtZTogJ3JlbW92ZScsXG4gICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgIH0pOyAvLyBkcmFnIGZyb20gb25lIGxpc3QgYW5kIGRyb3AgaW50byBhbm90aGVyXG5cblxuICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICByb290RWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBuYW1lOiAnc29ydCcsXG4gICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICBmcm9tRWw6IHJvb3RFbCxcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICAgICAgbmFtZTogJ3NvcnQnLFxuICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5zYXZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG5ld0luZGV4ICE9PSBvbGRJbmRleCkge1xuICAgICAgICAgICAgaWYgKG5ld0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgLy8gZHJhZyAmIGRyb3Agd2l0aGluIHRoZSBzYW1lIGxpc3RcbiAgICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NvcnQnLFxuICAgICAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU29ydGFibGUuYWN0aXZlKSB7XG4gICAgICAgICAgLyoganNoaW50IGVxbnVsbDp0cnVlICovXG4gICAgICAgICAgaWYgKG5ld0luZGV4ID09IG51bGwgfHwgbmV3SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBuZXdJbmRleCA9IG9sZEluZGV4O1xuICAgICAgICAgICAgbmV3RHJhZ2dhYmxlSW5kZXggPSBvbGREcmFnZ2FibGVJbmRleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICAgIG5hbWU6ICdlbmQnLFxuICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICB9KTsgLy8gU2F2ZSBzb3J0aW5nXG5cblxuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbnVsbGluZygpO1xuICB9LFxuICBfbnVsbGluZzogZnVuY3Rpb24gX251bGxpbmcoKSB7XG4gICAgcGx1Z2luRXZlbnQoJ251bGxpbmcnLCB0aGlzKTtcbiAgICByb290RWwgPSBkcmFnRWwgPSBwYXJlbnRFbCA9IGdob3N0RWwgPSBuZXh0RWwgPSBjbG9uZUVsID0gbGFzdERvd25FbCA9IGNsb25lSGlkZGVuID0gdGFwRXZ0ID0gdG91Y2hFdnQgPSBtb3ZlZCA9IG5ld0luZGV4ID0gbmV3RHJhZ2dhYmxlSW5kZXggPSBvbGRJbmRleCA9IG9sZERyYWdnYWJsZUluZGV4ID0gbGFzdFRhcmdldCA9IGxhc3REaXJlY3Rpb24gPSBwdXRTb3J0YWJsZSA9IGFjdGl2ZUdyb3VwID0gU29ydGFibGUuZHJhZ2dlZCA9IFNvcnRhYmxlLmdob3N0ID0gU29ydGFibGUuY2xvbmUgPSBTb3J0YWJsZS5hY3RpdmUgPSBudWxsO1xuICAgIHNhdmVkSW5wdXRDaGVja2VkLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICBlbC5jaGVja2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBzYXZlZElucHV0Q2hlY2tlZC5sZW5ndGggPSBsYXN0RHggPSBsYXN0RHkgPSAwO1xuICB9LFxuICBoYW5kbGVFdmVudDogZnVuY3Rpb24gaGFuZGxlRXZlbnQoXG4gIC8qKkV2ZW50Ki9cbiAgZXZ0KSB7XG4gICAgc3dpdGNoIChldnQudHlwZSkge1xuICAgICAgY2FzZSAnZHJvcCc6XG4gICAgICBjYXNlICdkcmFnZW5kJzpcbiAgICAgICAgdGhpcy5fb25Ecm9wKGV2dCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2RyYWdlbnRlcic6XG4gICAgICBjYXNlICdkcmFnb3Zlcic6XG4gICAgICAgIGlmIChkcmFnRWwpIHtcbiAgICAgICAgICB0aGlzLl9vbkRyYWdPdmVyKGV2dCk7XG5cbiAgICAgICAgICBfZ2xvYmFsRHJhZ092ZXIoZXZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxlY3RzdGFydCc6XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhlIGl0ZW0gaW50byBhbiBhcnJheSBvZiBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtTdHJpbmdbXX1cbiAgICovXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgdmFyIG9yZGVyID0gW10sXG4gICAgICAgIGVsLFxuICAgICAgICBjaGlsZHJlbiA9IHRoaXMuZWwuY2hpbGRyZW4sXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBuID0gY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG4gICAgZm9yICg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGVsID0gY2hpbGRyZW5baV07XG5cbiAgICAgIGlmIChjbG9zZXN0KGVsLCBvcHRpb25zLmRyYWdnYWJsZSwgdGhpcy5lbCwgZmFsc2UpKSB7XG4gICAgICAgIG9yZGVyLnB1c2goZWwuZ2V0QXR0cmlidXRlKG9wdGlvbnMuZGF0YUlkQXR0cikgfHwgX2dlbmVyYXRlSWQoZWwpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXI7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNvcnRzIHRoZSBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGFycmF5LlxuICAgKiBAcGFyYW0gIHtTdHJpbmdbXX0gIG9yZGVyICBvcmRlciBvZiB0aGUgaXRlbXNcbiAgICovXG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQob3JkZXIsIHVzZUFuaW1hdGlvbikge1xuICAgIHZhciBpdGVtcyA9IHt9LFxuICAgICAgICByb290RWwgPSB0aGlzLmVsO1xuICAgIHRoaXMudG9BcnJheSgpLmZvckVhY2goZnVuY3Rpb24gKGlkLCBpKSB7XG4gICAgICB2YXIgZWwgPSByb290RWwuY2hpbGRyZW5baV07XG5cbiAgICAgIGlmIChjbG9zZXN0KGVsLCB0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlLCByb290RWwsIGZhbHNlKSkge1xuICAgICAgICBpdGVtc1tpZF0gPSBlbDtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgICB1c2VBbmltYXRpb24gJiYgdGhpcy5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICBvcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgICAgaWYgKGl0ZW1zW2lkXSkge1xuICAgICAgICByb290RWwucmVtb3ZlQ2hpbGQoaXRlbXNbaWRdKTtcbiAgICAgICAgcm9vdEVsLmFwcGVuZENoaWxkKGl0ZW1zW2lkXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdXNlQW5pbWF0aW9uICYmIHRoaXMuYW5pbWF0ZUFsbCgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBjdXJyZW50IHNvcnRpbmdcbiAgICovXG4gIHNhdmU6IGZ1bmN0aW9uIHNhdmUoKSB7XG4gICAgdmFyIHN0b3JlID0gdGhpcy5vcHRpb25zLnN0b3JlO1xuICAgIHN0b3JlICYmIHN0b3JlLnNldCAmJiBzdG9yZS5zZXQodGhpcyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCwgZ2V0IHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgYnkgdGVzdGluZyB0aGUgZWxlbWVudCBpdHNlbGYgYW5kIHRyYXZlcnNpbmcgdXAgdGhyb3VnaCBpdHMgYW5jZXN0b3JzIGluIHRoZSBET00gdHJlZS5cbiAgICogQHBhcmFtICAge0hUTUxFbGVtZW50fSAgZWxcbiAgICogQHBhcmFtICAge1N0cmluZ30gICAgICAgW3NlbGVjdG9yXSAgZGVmYXVsdDogYG9wdGlvbnMuZHJhZ2dhYmxlYFxuICAgKiBAcmV0dXJucyB7SFRNTEVsZW1lbnR8bnVsbH1cbiAgICovXG4gIGNsb3Nlc3Q6IGZ1bmN0aW9uIGNsb3Nlc3QkMShlbCwgc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gY2xvc2VzdChlbCwgc2VsZWN0b3IgfHwgdGhpcy5vcHRpb25zLmRyYWdnYWJsZSwgdGhpcy5lbCwgZmFsc2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXQvZ2V0IG9wdGlvblxuICAgKiBAcGFyYW0gICB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSAgIHsqfSAgICAgIFt2YWx1ZV1cbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBvcHRpb246IGZ1bmN0aW9uIG9wdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG4gICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBvcHRpb25zW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbW9kaWZpZWRWYWx1ZSA9IFBsdWdpbk1hbmFnZXIubW9kaWZ5T3B0aW9uKHRoaXMsIG5hbWUsIHZhbHVlKTtcblxuICAgICAgaWYgKHR5cGVvZiBtb2RpZmllZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBvcHRpb25zW25hbWVdID0gbW9kaWZpZWRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09ICdncm91cCcpIHtcbiAgICAgICAgX3ByZXBhcmVHcm91cChvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlc3Ryb3lcbiAgICovXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgcGx1Z2luRXZlbnQoJ2Rlc3Ryb3knLCB0aGlzKTtcbiAgICB2YXIgZWwgPSB0aGlzLmVsO1xuICAgIGVsW2V4cGFuZG9dID0gbnVsbDtcbiAgICBvZmYoZWwsICdtb3VzZWRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcbiAgICBvZmYoZWwsICd0b3VjaHN0YXJ0JywgdGhpcy5fb25UYXBTdGFydCk7XG4gICAgb2ZmKGVsLCAncG9pbnRlcmRvd24nLCB0aGlzLl9vblRhcFN0YXJ0KTtcblxuICAgIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgb2ZmKGVsLCAnZHJhZ292ZXInLCB0aGlzKTtcbiAgICAgIG9mZihlbCwgJ2RyYWdlbnRlcicsIHRoaXMpO1xuICAgIH0gLy8gUmVtb3ZlIGRyYWdnYWJsZSBhdHRyaWJ1dGVzXG5cblxuICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWwucXVlcnlTZWxlY3RvckFsbCgnW2RyYWdnYWJsZV0nKSwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RyYWdnYWJsZScpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fb25Ecm9wKCk7XG5cbiAgICB0aGlzLl9kaXNhYmxlRGVsYXllZERyYWdFdmVudHMoKTtcblxuICAgIHNvcnRhYmxlcy5zcGxpY2Uoc29ydGFibGVzLmluZGV4T2YodGhpcy5lbCksIDEpO1xuICAgIHRoaXMuZWwgPSBlbCA9IG51bGw7XG4gIH0sXG4gIF9oaWRlQ2xvbmU6IGZ1bmN0aW9uIF9oaWRlQ2xvbmUoKSB7XG4gICAgaWYgKCFjbG9uZUhpZGRlbikge1xuICAgICAgcGx1Z2luRXZlbnQoJ2hpZGVDbG9uZScsIHRoaXMpO1xuICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHJldHVybjtcbiAgICAgIGNzcyhjbG9uZUVsLCAnZGlzcGxheScsICdub25lJyk7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlQ2xvbmVPbkhpZGUgJiYgY2xvbmVFbC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNsb25lRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9uZUVsKTtcbiAgICAgIH1cblxuICAgICAgY2xvbmVIaWRkZW4gPSB0cnVlO1xuICAgIH1cbiAgfSxcbiAgX3Nob3dDbG9uZTogZnVuY3Rpb24gX3Nob3dDbG9uZShwdXRTb3J0YWJsZSkge1xuICAgIGlmIChwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSAhPT0gJ2Nsb25lJykge1xuICAgICAgdGhpcy5faGlkZUNsb25lKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2xvbmVIaWRkZW4pIHtcbiAgICAgIHBsdWdpbkV2ZW50KCdzaG93Q2xvbmUnLCB0aGlzKTtcbiAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSByZXR1cm47IC8vIHNob3cgY2xvbmUgYXQgZHJhZ0VsIG9yIG9yaWdpbmFsIHBvc2l0aW9uXG5cbiAgICAgIGlmIChkcmFnRWwucGFyZW50Tm9kZSA9PSByb290RWwgJiYgIXRoaXMub3B0aW9ucy5ncm91cC5yZXZlcnRDbG9uZSkge1xuICAgICAgICByb290RWwuaW5zZXJ0QmVmb3JlKGNsb25lRWwsIGRyYWdFbCk7XG4gICAgICB9IGVsc2UgaWYgKG5leHRFbCkge1xuICAgICAgICByb290RWwuaW5zZXJ0QmVmb3JlKGNsb25lRWwsIG5leHRFbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290RWwuYXBwZW5kQ2hpbGQoY2xvbmVFbCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3JvdXAucmV2ZXJ0Q2xvbmUpIHtcbiAgICAgICAgdGhpcy5hbmltYXRlKGRyYWdFbCwgY2xvbmVFbCk7XG4gICAgICB9XG5cbiAgICAgIGNzcyhjbG9uZUVsLCAnZGlzcGxheScsICcnKTtcbiAgICAgIGNsb25lSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfZ2xvYmFsRHJhZ092ZXIoXG4vKipFdmVudCovXG5ldnQpIHtcbiAgaWYgKGV2dC5kYXRhVHJhbnNmZXIpIHtcbiAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG4gIH1cblxuICBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbn1cblxuZnVuY3Rpb24gX29uTW92ZShmcm9tRWwsIHRvRWwsIGRyYWdFbCwgZHJhZ1JlY3QsIHRhcmdldEVsLCB0YXJnZXRSZWN0LCBvcmlnaW5hbEV2ZW50LCB3aWxsSW5zZXJ0QWZ0ZXIpIHtcbiAgdmFyIGV2dCxcbiAgICAgIHNvcnRhYmxlID0gZnJvbUVsW2V4cGFuZG9dLFxuICAgICAgb25Nb3ZlRm4gPSBzb3J0YWJsZS5vcHRpb25zLm9uTW92ZSxcbiAgICAgIHJldFZhbDsgLy8gU3VwcG9ydCBmb3IgbmV3IEN1c3RvbUV2ZW50IGZlYXR1cmVcblxuICBpZiAod2luZG93LkN1c3RvbUV2ZW50ICYmICFJRTExT3JMZXNzICYmICFFZGdlKSB7XG4gICAgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KCdtb3ZlJywge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldnQuaW5pdEV2ZW50KCdtb3ZlJywgdHJ1ZSwgdHJ1ZSk7XG4gIH1cblxuICBldnQudG8gPSB0b0VsO1xuICBldnQuZnJvbSA9IGZyb21FbDtcbiAgZXZ0LmRyYWdnZWQgPSBkcmFnRWw7XG4gIGV2dC5kcmFnZ2VkUmVjdCA9IGRyYWdSZWN0O1xuICBldnQucmVsYXRlZCA9IHRhcmdldEVsIHx8IHRvRWw7XG4gIGV2dC5yZWxhdGVkUmVjdCA9IHRhcmdldFJlY3QgfHwgZ2V0UmVjdCh0b0VsKTtcbiAgZXZ0LndpbGxJbnNlcnRBZnRlciA9IHdpbGxJbnNlcnRBZnRlcjtcbiAgZXZ0Lm9yaWdpbmFsRXZlbnQgPSBvcmlnaW5hbEV2ZW50O1xuICBmcm9tRWwuZGlzcGF0Y2hFdmVudChldnQpO1xuXG4gIGlmIChvbk1vdmVGbikge1xuICAgIHJldFZhbCA9IG9uTW92ZUZuLmNhbGwoc29ydGFibGUsIGV2dCwgb3JpZ2luYWxFdmVudCk7XG4gIH1cblxuICByZXR1cm4gcmV0VmFsO1xufVxuXG5mdW5jdGlvbiBfZGlzYWJsZURyYWdnYWJsZShlbCkge1xuICBlbC5kcmFnZ2FibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gX3Vuc2lsZW50KCkge1xuICBfc2lsZW50ID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIF9naG9zdElzRmlyc3QoZXZ0LCB2ZXJ0aWNhbCwgc29ydGFibGUpIHtcbiAgdmFyIHJlY3QgPSBnZXRSZWN0KGdldENoaWxkKHNvcnRhYmxlLmVsLCAwLCBzb3J0YWJsZS5vcHRpb25zLCB0cnVlKSk7XG4gIHZhciBzcGFjZXIgPSAxMDtcbiAgcmV0dXJuIHZlcnRpY2FsID8gZXZ0LmNsaWVudFggPCByZWN0LmxlZnQgLSBzcGFjZXIgfHwgZXZ0LmNsaWVudFkgPCByZWN0LnRvcCAmJiBldnQuY2xpZW50WCA8IHJlY3QucmlnaHQgOiBldnQuY2xpZW50WSA8IHJlY3QudG9wIC0gc3BhY2VyIHx8IGV2dC5jbGllbnRZIDwgcmVjdC5ib3R0b20gJiYgZXZ0LmNsaWVudFggPCByZWN0LmxlZnQ7XG59XG5cbmZ1bmN0aW9uIF9naG9zdElzTGFzdChldnQsIHZlcnRpY2FsLCBzb3J0YWJsZSkge1xuICB2YXIgcmVjdCA9IGdldFJlY3QobGFzdENoaWxkKHNvcnRhYmxlLmVsLCBzb3J0YWJsZS5vcHRpb25zLmRyYWdnYWJsZSkpO1xuICB2YXIgc3BhY2VyID0gMTA7XG4gIHJldHVybiB2ZXJ0aWNhbCA/IGV2dC5jbGllbnRYID4gcmVjdC5yaWdodCArIHNwYWNlciB8fCBldnQuY2xpZW50WCA8PSByZWN0LnJpZ2h0ICYmIGV2dC5jbGllbnRZID4gcmVjdC5ib3R0b20gJiYgZXZ0LmNsaWVudFggPj0gcmVjdC5sZWZ0IDogZXZ0LmNsaWVudFggPiByZWN0LnJpZ2h0ICYmIGV2dC5jbGllbnRZID4gcmVjdC50b3AgfHwgZXZ0LmNsaWVudFggPD0gcmVjdC5yaWdodCAmJiBldnQuY2xpZW50WSA+IHJlY3QuYm90dG9tICsgc3BhY2VyO1xufVxuXG5mdW5jdGlvbiBfZ2V0U3dhcERpcmVjdGlvbihldnQsIHRhcmdldCwgdGFyZ2V0UmVjdCwgdmVydGljYWwsIHN3YXBUaHJlc2hvbGQsIGludmVydGVkU3dhcFRocmVzaG9sZCwgaW52ZXJ0U3dhcCwgaXNMYXN0VGFyZ2V0KSB7XG4gIHZhciBtb3VzZU9uQXhpcyA9IHZlcnRpY2FsID8gZXZ0LmNsaWVudFkgOiBldnQuY2xpZW50WCxcbiAgICAgIHRhcmdldExlbmd0aCA9IHZlcnRpY2FsID8gdGFyZ2V0UmVjdC5oZWlnaHQgOiB0YXJnZXRSZWN0LndpZHRoLFxuICAgICAgdGFyZ2V0UzEgPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3QudG9wIDogdGFyZ2V0UmVjdC5sZWZ0LFxuICAgICAgdGFyZ2V0UzIgPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3QuYm90dG9tIDogdGFyZ2V0UmVjdC5yaWdodCxcbiAgICAgIGludmVydCA9IGZhbHNlO1xuXG4gIGlmICghaW52ZXJ0U3dhcCkge1xuICAgIC8vIE5ldmVyIGludmVydCBvciBjcmVhdGUgZHJhZ0VsIHNoYWRvdyB3aGVuIHRhcmdldCBtb3ZlbWVuZXQgY2F1c2VzIG1vdXNlIHRvIG1vdmUgcGFzdCB0aGUgZW5kIG9mIHJlZ3VsYXIgc3dhcFRocmVzaG9sZFxuICAgIGlmIChpc0xhc3RUYXJnZXQgJiYgdGFyZ2V0TW92ZURpc3RhbmNlIDwgdGFyZ2V0TGVuZ3RoICogc3dhcFRocmVzaG9sZCkge1xuICAgICAgLy8gbXVsdGlwbGllZCBvbmx5IGJ5IHN3YXBUaHJlc2hvbGQgYmVjYXVzZSBtb3VzZSB3aWxsIGFscmVhZHkgYmUgaW5zaWRlIHRhcmdldCBieSAoMSAtIHRocmVzaG9sZCkgKiB0YXJnZXRMZW5ndGggLyAyXG4gICAgICAvLyBjaGVjayBpZiBwYXN0IGZpcnN0IGludmVydCB0aHJlc2hvbGQgb24gc2lkZSBvcHBvc2l0ZSBvZiBsYXN0RGlyZWN0aW9uXG4gICAgICBpZiAoIXBhc3RGaXJzdEludmVydFRocmVzaCAmJiAobGFzdERpcmVjdGlvbiA9PT0gMSA/IG1vdXNlT25BeGlzID4gdGFyZ2V0UzEgKyB0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyIDogbW91c2VPbkF4aXMgPCB0YXJnZXRTMiAtIHRhcmdldExlbmd0aCAqIGludmVydGVkU3dhcFRocmVzaG9sZCAvIDIpKSB7XG4gICAgICAgIC8vIHBhc3QgZmlyc3QgaW52ZXJ0IHRocmVzaG9sZCwgZG8gbm90IHJlc3RyaWN0IGludmVydGVkIHRocmVzaG9sZCB0byBkcmFnRWwgc2hhZG93XG4gICAgICAgIHBhc3RGaXJzdEludmVydFRocmVzaCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghcGFzdEZpcnN0SW52ZXJ0VGhyZXNoKSB7XG4gICAgICAgIC8vIGRyYWdFbCBzaGFkb3cgKHRhcmdldCBtb3ZlIGRpc3RhbmNlIHNoYWRvdylcbiAgICAgICAgaWYgKGxhc3REaXJlY3Rpb24gPT09IDEgPyBtb3VzZU9uQXhpcyA8IHRhcmdldFMxICsgdGFyZ2V0TW92ZURpc3RhbmNlIC8vIG92ZXIgZHJhZ0VsIHNoYWRvd1xuICAgICAgICA6IG1vdXNlT25BeGlzID4gdGFyZ2V0UzIgLSB0YXJnZXRNb3ZlRGlzdGFuY2UpIHtcbiAgICAgICAgICByZXR1cm4gLWxhc3REaXJlY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludmVydCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlZ3VsYXJcbiAgICAgIGlmIChtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoICogKDEgLSBzd2FwVGhyZXNob2xkKSAvIDIgJiYgbW91c2VPbkF4aXMgPCB0YXJnZXRTMiAtIHRhcmdldExlbmd0aCAqICgxIC0gc3dhcFRocmVzaG9sZCkgLyAyKSB7XG4gICAgICAgIHJldHVybiBfZ2V0SW5zZXJ0RGlyZWN0aW9uKHRhcmdldCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW52ZXJ0ID0gaW52ZXJ0IHx8IGludmVydFN3YXA7XG5cbiAgaWYgKGludmVydCkge1xuICAgIC8vIEludmVydCBvZiByZWd1bGFyXG4gICAgaWYgKG1vdXNlT25BeGlzIDwgdGFyZ2V0UzEgKyB0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyIHx8IG1vdXNlT25BeGlzID4gdGFyZ2V0UzIgLSB0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyKSB7XG4gICAgICByZXR1cm4gbW91c2VPbkF4aXMgPiB0YXJnZXRTMSArIHRhcmdldExlbmd0aCAvIDIgPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG4vKipcbiAqIEdldHMgdGhlIGRpcmVjdGlvbiBkcmFnRWwgbXVzdCBiZSBzd2FwcGVkIHJlbGF0aXZlIHRvIHRhcmdldCBpbiBvcmRlciB0byBtYWtlIGl0XG4gKiBzZWVtIHRoYXQgZHJhZ0VsIGhhcyBiZWVuIFwiaW5zZXJ0ZWRcIiBpbnRvIHRoYXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gdGFyZ2V0ICAgICAgIFRoZSB0YXJnZXQgd2hvc2UgcG9zaXRpb24gZHJhZ0VsIGlzIGJlaW5nIGluc2VydGVkIGF0XG4gKiBAcmV0dXJuIHtOdW1iZXJ9ICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiBkcmFnRWwgbXVzdCBiZSBzd2FwcGVkXG4gKi9cblxuXG5mdW5jdGlvbiBfZ2V0SW5zZXJ0RGlyZWN0aW9uKHRhcmdldCkge1xuICBpZiAoaW5kZXgoZHJhZ0VsKSA8IGluZGV4KHRhcmdldCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn1cbi8qKlxuICogR2VuZXJhdGUgaWRcbiAqIEBwYXJhbSAgIHtIVE1MRWxlbWVudH0gZWxcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cblxuZnVuY3Rpb24gX2dlbmVyYXRlSWQoZWwpIHtcbiAgdmFyIHN0ciA9IGVsLnRhZ05hbWUgKyBlbC5jbGFzc05hbWUgKyBlbC5zcmMgKyBlbC5ocmVmICsgZWwudGV4dENvbnRlbnQsXG4gICAgICBpID0gc3RyLmxlbmd0aCxcbiAgICAgIHN1bSA9IDA7XG5cbiAgd2hpbGUgKGktLSkge1xuICAgIHN1bSArPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBzdW0udG9TdHJpbmcoMzYpO1xufVxuXG5mdW5jdGlvbiBfc2F2ZUlucHV0Q2hlY2tlZFN0YXRlKHJvb3QpIHtcbiAgc2F2ZWRJbnB1dENoZWNrZWQubGVuZ3RoID0gMDtcbiAgdmFyIGlucHV0cyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7XG4gIHZhciBpZHggPSBpbnB1dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChpZHgtLSkge1xuICAgIHZhciBlbCA9IGlucHV0c1tpZHhdO1xuICAgIGVsLmNoZWNrZWQgJiYgc2F2ZWRJbnB1dENoZWNrZWQucHVzaChlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX25leHRUaWNrKGZuKSB7XG4gIHJldHVybiBzZXRUaW1lb3V0KGZuLCAwKTtcbn1cblxuZnVuY3Rpb24gX2NhbmNlbE5leHRUaWNrKGlkKSB7XG4gIHJldHVybiBjbGVhclRpbWVvdXQoaWQpO1xufSAvLyBGaXhlZCAjOTczOlxuXG5cbmlmIChkb2N1bWVudEV4aXN0cykge1xuICBvbihkb2N1bWVudCwgJ3RvdWNobW92ZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICBpZiAoKFNvcnRhYmxlLmFjdGl2ZSB8fCBhd2FpdGluZ0RyYWdTdGFydGVkKSAmJiBldnQuY2FuY2VsYWJsZSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9KTtcbn0gLy8gRXhwb3J0IHV0aWxzXG5cblxuU29ydGFibGUudXRpbHMgPSB7XG4gIG9uOiBvbixcbiAgb2ZmOiBvZmYsXG4gIGNzczogY3NzLFxuICBmaW5kOiBmaW5kLFxuICBpczogZnVuY3Rpb24gaXMoZWwsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuICEhY2xvc2VzdChlbCwgc2VsZWN0b3IsIGVsLCBmYWxzZSk7XG4gIH0sXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0aHJvdHRsZTogdGhyb3R0bGUsXG4gIGNsb3Nlc3Q6IGNsb3Nlc3QsXG4gIHRvZ2dsZUNsYXNzOiB0b2dnbGVDbGFzcyxcbiAgY2xvbmU6IGNsb25lLFxuICBpbmRleDogaW5kZXgsXG4gIG5leHRUaWNrOiBfbmV4dFRpY2ssXG4gIGNhbmNlbE5leHRUaWNrOiBfY2FuY2VsTmV4dFRpY2ssXG4gIGRldGVjdERpcmVjdGlvbjogX2RldGVjdERpcmVjdGlvbixcbiAgZ2V0Q2hpbGQ6IGdldENoaWxkXG59O1xuLyoqXG4gKiBHZXQgdGhlIFNvcnRhYmxlIGluc3RhbmNlIG9mIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50XG4gKiBAcmV0dXJuIHtTb3J0YWJsZXx1bmRlZmluZWR9ICAgICAgICAgVGhlIGluc3RhbmNlIG9mIFNvcnRhYmxlXG4gKi9cblxuU29ydGFibGUuZ2V0ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnRbZXhwYW5kb107XG59O1xuLyoqXG4gKiBNb3VudCBhIHBsdWdpbiB0byBTb3J0YWJsZVxuICogQHBhcmFtICB7Li4uU29ydGFibGVQbHVnaW58U29ydGFibGVQbHVnaW5bXX0gcGx1Z2lucyAgICAgICBQbHVnaW5zIGJlaW5nIG1vdW50ZWRcbiAqL1xuXG5cblNvcnRhYmxlLm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcGx1Z2lucyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBwbHVnaW5zW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKHBsdWdpbnNbMF0uY29uc3RydWN0b3IgPT09IEFycmF5KSBwbHVnaW5zID0gcGx1Z2luc1swXTtcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICBpZiAoIXBsdWdpbi5wcm90b3R5cGUgfHwgIXBsdWdpbi5wcm90b3R5cGUuY29uc3RydWN0b3IpIHtcbiAgICAgIHRocm93IFwiU29ydGFibGU6IE1vdW50ZWQgcGx1Z2luIG11c3QgYmUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiwgbm90IFwiLmNvbmNhdCh7fS50b1N0cmluZy5jYWxsKHBsdWdpbikpO1xuICAgIH1cblxuICAgIGlmIChwbHVnaW4udXRpbHMpIFNvcnRhYmxlLnV0aWxzID0gX29iamVjdFNwcmVhZDIoX29iamVjdFNwcmVhZDIoe30sIFNvcnRhYmxlLnV0aWxzKSwgcGx1Z2luLnV0aWxzKTtcbiAgICBQbHVnaW5NYW5hZ2VyLm1vdW50KHBsdWdpbik7XG4gIH0pO1xufTtcbi8qKlxuICogQ3JlYXRlIHNvcnRhYmxlIGluc3RhbmNlXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSAgZWxcbiAqIEBwYXJhbSB7T2JqZWN0fSAgICAgIFtvcHRpb25zXVxuICovXG5cblxuU29ydGFibGUuY3JlYXRlID0gZnVuY3Rpb24gKGVsLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgU29ydGFibGUoZWwsIG9wdGlvbnMpO1xufTsgLy8gRXhwb3J0XG5cblxuU29ydGFibGUudmVyc2lvbiA9IHZlcnNpb247XG5cbnZhciBhdXRvU2Nyb2xscyA9IFtdLFxuICAgIHNjcm9sbEVsLFxuICAgIHNjcm9sbFJvb3RFbCxcbiAgICBzY3JvbGxpbmcgPSBmYWxzZSxcbiAgICBsYXN0QXV0b1Njcm9sbFgsXG4gICAgbGFzdEF1dG9TY3JvbGxZLFxuICAgIHRvdWNoRXZ0JDEsXG4gICAgcG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWw7XG5cbmZ1bmN0aW9uIEF1dG9TY3JvbGxQbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIEF1dG9TY3JvbGwoKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IHtcbiAgICAgIHNjcm9sbDogdHJ1ZSxcbiAgICAgIGZvcmNlQXV0b1Njcm9sbEZhbGxiYWNrOiBmYWxzZSxcbiAgICAgIHNjcm9sbFNlbnNpdGl2aXR5OiAzMCxcbiAgICAgIHNjcm9sbFNwZWVkOiAxMCxcbiAgICAgIGJ1YmJsZVNjcm9sbDogdHJ1ZVxuICAgIH07IC8vIEJpbmQgYWxsIHByaXZhdGUgbWV0aG9kc1xuXG4gICAgZm9yICh2YXIgZm4gaW4gdGhpcykge1xuICAgICAgaWYgKGZuLmNoYXJBdCgwKSA9PT0gJ18nICYmIHR5cGVvZiB0aGlzW2ZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzW2ZuXSA9IHRoaXNbZm5dLmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQXV0b1Njcm9sbC5wcm90b3R5cGUgPSB7XG4gICAgZHJhZ1N0YXJ0ZWQ6IGZ1bmN0aW9uIGRyYWdTdGFydGVkKF9yZWYpIHtcbiAgICAgIHZhciBvcmlnaW5hbEV2ZW50ID0gX3JlZi5vcmlnaW5hbEV2ZW50O1xuXG4gICAgICBpZiAodGhpcy5zb3J0YWJsZS5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICdkcmFnb3ZlcicsIHRoaXMuX2hhbmRsZUF1dG9TY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdXBwb3J0UG9pbnRlcikge1xuICAgICAgICAgIG9uKGRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsRXZlbnQudG91Y2hlcykge1xuICAgICAgICAgIG9uKGRvY3VtZW50LCAndG91Y2htb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbihkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGRyYWdPdmVyQ29tcGxldGVkOiBmdW5jdGlvbiBkcmFnT3ZlckNvbXBsZXRlZChfcmVmMikge1xuICAgICAgdmFyIG9yaWdpbmFsRXZlbnQgPSBfcmVmMi5vcmlnaW5hbEV2ZW50O1xuXG4gICAgICAvLyBGb3Igd2hlbiBidWJibGluZyBpcyBjYW5jZWxlZCBhbmQgdXNpbmcgZmFsbGJhY2sgKGZhbGxiYWNrICd0b3VjaG1vdmUnIGFsd2F5cyByZWFjaGVkKVxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZHJhZ092ZXJCdWJibGUgJiYgIW9yaWdpbmFsRXZlbnQucm9vdEVsKSB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUF1dG9TY3JvbGwob3JpZ2luYWxFdmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcm9wOiBmdW5jdGlvbiBkcm9wKCkge1xuICAgICAgaWYgKHRoaXMuc29ydGFibGUubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgIG9mZihkb2N1bWVudCwgJ2RyYWdvdmVyJywgdGhpcy5faGFuZGxlQXV0b1Njcm9sbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvZmYoZG9jdW1lbnQsICdwb2ludGVybW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICAgIG9mZihkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICAgIG9mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICB9XG5cbiAgICAgIGNsZWFyUG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwoKTtcbiAgICAgIGNsZWFyQXV0b1Njcm9sbHMoKTtcbiAgICAgIGNhbmNlbFRocm90dGxlKCk7XG4gICAgfSxcbiAgICBudWxsaW5nOiBmdW5jdGlvbiBudWxsaW5nKCkge1xuICAgICAgdG91Y2hFdnQkMSA9IHNjcm9sbFJvb3RFbCA9IHNjcm9sbEVsID0gc2Nyb2xsaW5nID0gcG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgPSBsYXN0QXV0b1Njcm9sbFggPSBsYXN0QXV0b1Njcm9sbFkgPSBudWxsO1xuICAgICAgYXV0b1Njcm9sbHMubGVuZ3RoID0gMDtcbiAgICB9LFxuICAgIF9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGw6IGZ1bmN0aW9uIF9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwoZXZ0KSB7XG4gICAgICB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKGV2dCwgdHJ1ZSk7XG4gICAgfSxcbiAgICBfaGFuZGxlQXV0b1Njcm9sbDogZnVuY3Rpb24gX2hhbmRsZUF1dG9TY3JvbGwoZXZ0LCBmYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHggPSAoZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dCkuY2xpZW50WCxcbiAgICAgICAgICB5ID0gKGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQpLmNsaWVudFksXG4gICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICB0b3VjaEV2dCQxID0gZXZ0OyAvLyBJRSBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgbmF0aXZlIGF1dG9zY3JvbGwsXG4gICAgICAvLyBFZGdlJ3MgYXV0b3Njcm9sbCBzZWVtcyB0b28gY29uZGl0aW9uYWwsXG4gICAgICAvLyBNQUNPUyBTYWZhcmkgZG9lcyBub3QgaGF2ZSBhdXRvc2Nyb2xsLFxuICAgICAgLy8gRmlyZWZveCBhbmQgQ2hyb21lIGFyZSBnb29kXG5cbiAgICAgIGlmIChmYWxsYmFjayB8fCB0aGlzLm9wdGlvbnMuZm9yY2VBdXRvU2Nyb2xsRmFsbGJhY2sgfHwgRWRnZSB8fCBJRTExT3JMZXNzIHx8IFNhZmFyaSkge1xuICAgICAgICBhdXRvU2Nyb2xsKGV2dCwgdGhpcy5vcHRpb25zLCBlbGVtLCBmYWxsYmFjayk7IC8vIExpc3RlbmVyIGZvciBwb2ludGVyIGVsZW1lbnQgY2hhbmdlXG5cbiAgICAgICAgdmFyIG9nRWxlbVNjcm9sbGVyID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZWxlbSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHNjcm9sbGluZyAmJiAoIXBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsIHx8IHggIT09IGxhc3RBdXRvU2Nyb2xsWCB8fCB5ICE9PSBsYXN0QXV0b1Njcm9sbFkpKSB7XG4gICAgICAgICAgcG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgJiYgY2xlYXJQb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCgpOyAvLyBEZXRlY3QgZm9yIHBvaW50ZXIgZWxlbSBjaGFuZ2UsIGVtdWxhdGluZyBuYXRpdmUgRG5EIGJlaGF2aW91clxuXG4gICAgICAgICAgcG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgbmV3RWxlbSA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSksIHRydWUpO1xuXG4gICAgICAgICAgICBpZiAobmV3RWxlbSAhPT0gb2dFbGVtU2Nyb2xsZXIpIHtcbiAgICAgICAgICAgICAgb2dFbGVtU2Nyb2xsZXIgPSBuZXdFbGVtO1xuICAgICAgICAgICAgICBjbGVhckF1dG9TY3JvbGxzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF1dG9TY3JvbGwoZXZ0LCBfdGhpcy5vcHRpb25zLCBuZXdFbGVtLCBmYWxsYmFjayk7XG4gICAgICAgICAgfSwgMTApO1xuICAgICAgICAgIGxhc3RBdXRvU2Nyb2xsWCA9IHg7XG4gICAgICAgICAgbGFzdEF1dG9TY3JvbGxZID0geTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgRG5EIGlzIGVuYWJsZWQgKGFuZCBicm93c2VyIGhhcyBnb29kIGF1dG9zY3JvbGxpbmcpLCBmaXJzdCBhdXRvc2Nyb2xsIHdpbGwgYWxyZWFkeSBzY3JvbGwsIHNvIGdldCBwYXJlbnQgYXV0b3Njcm9sbCBvZiBmaXJzdCBhdXRvc2Nyb2xsXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmJ1YmJsZVNjcm9sbCB8fCBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbGVtLCB0cnVlKSA9PT0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpKSB7XG4gICAgICAgICAgY2xlYXJBdXRvU2Nyb2xscygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dG9TY3JvbGwoZXZ0LCB0aGlzLm9wdGlvbnMsIGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsZW0sIGZhbHNlKSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzKEF1dG9TY3JvbGwsIHtcbiAgICBwbHVnaW5OYW1lOiAnc2Nyb2xsJyxcbiAgICBpbml0aWFsaXplQnlEZWZhdWx0OiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjbGVhckF1dG9TY3JvbGxzKCkge1xuICBhdXRvU2Nyb2xscy5mb3JFYWNoKGZ1bmN0aW9uIChhdXRvU2Nyb2xsKSB7XG4gICAgY2xlYXJJbnRlcnZhbChhdXRvU2Nyb2xsLnBpZCk7XG4gIH0pO1xuICBhdXRvU2Nyb2xscyA9IFtdO1xufVxuXG5mdW5jdGlvbiBjbGVhclBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsKCkge1xuICBjbGVhckludGVydmFsKHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsKTtcbn1cblxudmFyIGF1dG9TY3JvbGwgPSB0aHJvdHRsZShmdW5jdGlvbiAoZXZ0LCBvcHRpb25zLCByb290RWwsIGlzRmFsbGJhY2spIHtcbiAgLy8gQnVnOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01MDU1MjFcbiAgaWYgKCFvcHRpb25zLnNjcm9sbCkgcmV0dXJuO1xuICB2YXIgeCA9IChldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0KS5jbGllbnRYLFxuICAgICAgeSA9IChldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0KS5jbGllbnRZLFxuICAgICAgc2VucyA9IG9wdGlvbnMuc2Nyb2xsU2Vuc2l0aXZpdHksXG4gICAgICBzcGVlZCA9IG9wdGlvbnMuc2Nyb2xsU3BlZWQsXG4gICAgICB3aW5TY3JvbGxlciA9IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbiAgdmFyIHNjcm9sbFRoaXNJbnN0YW5jZSA9IGZhbHNlLFxuICAgICAgc2Nyb2xsQ3VzdG9tRm47IC8vIE5ldyBzY3JvbGwgcm9vdCwgc2V0IHNjcm9sbEVsXG5cbiAgaWYgKHNjcm9sbFJvb3RFbCAhPT0gcm9vdEVsKSB7XG4gICAgc2Nyb2xsUm9vdEVsID0gcm9vdEVsO1xuICAgIGNsZWFyQXV0b1Njcm9sbHMoKTtcbiAgICBzY3JvbGxFbCA9IG9wdGlvbnMuc2Nyb2xsO1xuICAgIHNjcm9sbEN1c3RvbUZuID0gb3B0aW9ucy5zY3JvbGxGbjtcblxuICAgIGlmIChzY3JvbGxFbCA9PT0gdHJ1ZSkge1xuICAgICAgc2Nyb2xsRWwgPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChyb290RWwsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBsYXllcnNPdXQgPSAwO1xuICB2YXIgY3VycmVudFBhcmVudCA9IHNjcm9sbEVsO1xuXG4gIGRvIHtcbiAgICB2YXIgZWwgPSBjdXJyZW50UGFyZW50LFxuICAgICAgICByZWN0ID0gZ2V0UmVjdChlbCksXG4gICAgICAgIHRvcCA9IHJlY3QudG9wLFxuICAgICAgICBib3R0b20gPSByZWN0LmJvdHRvbSxcbiAgICAgICAgbGVmdCA9IHJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQgPSByZWN0LnJpZ2h0LFxuICAgICAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IHJlY3QuaGVpZ2h0LFxuICAgICAgICBjYW5TY3JvbGxYID0gdm9pZCAwLFxuICAgICAgICBjYW5TY3JvbGxZID0gdm9pZCAwLFxuICAgICAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgICBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGVsQ1NTID0gY3NzKGVsKSxcbiAgICAgICAgc2Nyb2xsUG9zWCA9IGVsLnNjcm9sbExlZnQsXG4gICAgICAgIHNjcm9sbFBvc1kgPSBlbC5zY3JvbGxUb3A7XG5cbiAgICBpZiAoZWwgPT09IHdpblNjcm9sbGVyKSB7XG4gICAgICBjYW5TY3JvbGxYID0gd2lkdGggPCBzY3JvbGxXaWR0aCAmJiAoZWxDU1Mub3ZlcmZsb3dYID09PSAnYXV0bycgfHwgZWxDU1Mub3ZlcmZsb3dYID09PSAnc2Nyb2xsJyB8fCBlbENTUy5vdmVyZmxvd1ggPT09ICd2aXNpYmxlJyk7XG4gICAgICBjYW5TY3JvbGxZID0gaGVpZ2h0IDwgc2Nyb2xsSGVpZ2h0ICYmIChlbENTUy5vdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBlbENTUy5vdmVyZmxvd1kgPT09ICdzY3JvbGwnIHx8IGVsQ1NTLm92ZXJmbG93WSA9PT0gJ3Zpc2libGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FuU2Nyb2xsWCA9IHdpZHRoIDwgc2Nyb2xsV2lkdGggJiYgKGVsQ1NTLm92ZXJmbG93WCA9PT0gJ2F1dG8nIHx8IGVsQ1NTLm92ZXJmbG93WCA9PT0gJ3Njcm9sbCcpO1xuICAgICAgY2FuU2Nyb2xsWSA9IGhlaWdodCA8IHNjcm9sbEhlaWdodCAmJiAoZWxDU1Mub3ZlcmZsb3dZID09PSAnYXV0bycgfHwgZWxDU1Mub3ZlcmZsb3dZID09PSAnc2Nyb2xsJyk7XG4gICAgfVxuXG4gICAgdmFyIHZ4ID0gY2FuU2Nyb2xsWCAmJiAoTWF0aC5hYnMocmlnaHQgLSB4KSA8PSBzZW5zICYmIHNjcm9sbFBvc1ggKyB3aWR0aCA8IHNjcm9sbFdpZHRoKSAtIChNYXRoLmFicyhsZWZ0IC0geCkgPD0gc2VucyAmJiAhIXNjcm9sbFBvc1gpO1xuICAgIHZhciB2eSA9IGNhblNjcm9sbFkgJiYgKE1hdGguYWJzKGJvdHRvbSAtIHkpIDw9IHNlbnMgJiYgc2Nyb2xsUG9zWSArIGhlaWdodCA8IHNjcm9sbEhlaWdodCkgLSAoTWF0aC5hYnModG9wIC0geSkgPD0gc2VucyAmJiAhIXNjcm9sbFBvc1kpO1xuXG4gICAgaWYgKCFhdXRvU2Nyb2xsc1tsYXllcnNPdXRdKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBsYXllcnNPdXQ7IGkrKykge1xuICAgICAgICBpZiAoIWF1dG9TY3JvbGxzW2ldKSB7XG4gICAgICAgICAgYXV0b1Njcm9sbHNbaV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ4ICE9IHZ4IHx8IGF1dG9TY3JvbGxzW2xheWVyc091dF0udnkgIT0gdnkgfHwgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5lbCAhPT0gZWwpIHtcbiAgICAgIGF1dG9TY3JvbGxzW2xheWVyc091dF0uZWwgPSBlbDtcbiAgICAgIGF1dG9TY3JvbGxzW2xheWVyc091dF0udnggPSB2eDtcbiAgICAgIGF1dG9TY3JvbGxzW2xheWVyc091dF0udnkgPSB2eTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5waWQpO1xuXG4gICAgICBpZiAodnggIT0gMCB8fCB2eSAhPSAwKSB7XG4gICAgICAgIHNjcm9sbFRoaXNJbnN0YW5jZSA9IHRydWU7XG4gICAgICAgIC8qIGpzaGludCBsb29wZnVuYzp0cnVlICovXG5cbiAgICAgICAgYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS5waWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gZW11bGF0ZSBkcmFnIG92ZXIgZHVyaW5nIGF1dG9zY3JvbGwgKGZhbGxiYWNrKSwgZW11bGF0aW5nIG5hdGl2ZSBEbkQgYmVoYXZpb3VyXG4gICAgICAgICAgaWYgKGlzRmFsbGJhY2sgJiYgdGhpcy5sYXllciA9PT0gMCkge1xuICAgICAgICAgICAgU29ydGFibGUuYWN0aXZlLl9vblRvdWNoTW92ZSh0b3VjaEV2dCQxKTsgLy8gVG8gbW92ZSBnaG9zdCBpZiBpdCBpcyBwb3NpdGlvbmVkIGFic29sdXRlbHlcblxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBzY3JvbGxPZmZzZXRZID0gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnkgPyBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS52eSAqIHNwZWVkIDogMDtcbiAgICAgICAgICB2YXIgc2Nyb2xsT2Zmc2V0WCA9IGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLnZ4ID8gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnggKiBzcGVlZCA6IDA7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHNjcm9sbEN1c3RvbUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsQ3VzdG9tRm4uY2FsbChTb3J0YWJsZS5kcmFnZ2VkLnBhcmVudE5vZGVbZXhwYW5kb10sIHNjcm9sbE9mZnNldFgsIHNjcm9sbE9mZnNldFksIGV2dCwgdG91Y2hFdnQkMSwgYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0uZWwpICE9PSAnY29udGludWUnKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzY3JvbGxCeShhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS5lbCwgc2Nyb2xsT2Zmc2V0WCwgc2Nyb2xsT2Zmc2V0WSk7XG4gICAgICAgIH0uYmluZCh7XG4gICAgICAgICAgbGF5ZXI6IGxheWVyc091dFxuICAgICAgICB9KSwgMjQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxheWVyc091dCsrO1xuICB9IHdoaWxlIChvcHRpb25zLmJ1YmJsZVNjcm9sbCAmJiBjdXJyZW50UGFyZW50ICE9PSB3aW5TY3JvbGxlciAmJiAoY3VycmVudFBhcmVudCA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGN1cnJlbnRQYXJlbnQsIGZhbHNlKSkpO1xuXG4gIHNjcm9sbGluZyA9IHNjcm9sbFRoaXNJbnN0YW5jZTsgLy8gaW4gY2FzZSBhbm90aGVyIGZ1bmN0aW9uIGNhdGNoZXMgc2Nyb2xsaW5nIGFzIGZhbHNlIGluIGJldHdlZW4gd2hlbiBpdCBpcyBub3Rcbn0sIDMwKTtcblxudmFyIGRyb3AgPSBmdW5jdGlvbiBkcm9wKF9yZWYpIHtcbiAgdmFyIG9yaWdpbmFsRXZlbnQgPSBfcmVmLm9yaWdpbmFsRXZlbnQsXG4gICAgICBwdXRTb3J0YWJsZSA9IF9yZWYucHV0U29ydGFibGUsXG4gICAgICBkcmFnRWwgPSBfcmVmLmRyYWdFbCxcbiAgICAgIGFjdGl2ZVNvcnRhYmxlID0gX3JlZi5hY3RpdmVTb3J0YWJsZSxcbiAgICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCA9IF9yZWYuZGlzcGF0Y2hTb3J0YWJsZUV2ZW50LFxuICAgICAgaGlkZUdob3N0Rm9yVGFyZ2V0ID0gX3JlZi5oaWRlR2hvc3RGb3JUYXJnZXQsXG4gICAgICB1bmhpZGVHaG9zdEZvclRhcmdldCA9IF9yZWYudW5oaWRlR2hvc3RGb3JUYXJnZXQ7XG4gIGlmICghb3JpZ2luYWxFdmVudCkgcmV0dXJuO1xuICB2YXIgdG9Tb3J0YWJsZSA9IHB1dFNvcnRhYmxlIHx8IGFjdGl2ZVNvcnRhYmxlO1xuICBoaWRlR2hvc3RGb3JUYXJnZXQoKTtcbiAgdmFyIHRvdWNoID0gb3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlcyAmJiBvcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA/IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gOiBvcmlnaW5hbEV2ZW50O1xuICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTtcbiAgdW5oaWRlR2hvc3RGb3JUYXJnZXQoKTtcblxuICBpZiAodG9Tb3J0YWJsZSAmJiAhdG9Tb3J0YWJsZS5lbC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50KCdzcGlsbCcpO1xuICAgIHRoaXMub25TcGlsbCh7XG4gICAgICBkcmFnRWw6IGRyYWdFbCxcbiAgICAgIHB1dFNvcnRhYmxlOiBwdXRTb3J0YWJsZVxuICAgIH0pO1xuICB9XG59O1xuXG5mdW5jdGlvbiBSZXZlcnQoKSB7fVxuXG5SZXZlcnQucHJvdG90eXBlID0ge1xuICBzdGFydEluZGV4OiBudWxsLFxuICBkcmFnU3RhcnQ6IGZ1bmN0aW9uIGRyYWdTdGFydChfcmVmMikge1xuICAgIHZhciBvbGREcmFnZ2FibGVJbmRleCA9IF9yZWYyLm9sZERyYWdnYWJsZUluZGV4O1xuICAgIHRoaXMuc3RhcnRJbmRleCA9IG9sZERyYWdnYWJsZUluZGV4O1xuICB9LFxuICBvblNwaWxsOiBmdW5jdGlvbiBvblNwaWxsKF9yZWYzKSB7XG4gICAgdmFyIGRyYWdFbCA9IF9yZWYzLmRyYWdFbCxcbiAgICAgICAgcHV0U29ydGFibGUgPSBfcmVmMy5wdXRTb3J0YWJsZTtcbiAgICB0aGlzLnNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuXG4gICAgaWYgKHB1dFNvcnRhYmxlKSB7XG4gICAgICBwdXRTb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICB9XG5cbiAgICB2YXIgbmV4dFNpYmxpbmcgPSBnZXRDaGlsZCh0aGlzLnNvcnRhYmxlLmVsLCB0aGlzLnN0YXJ0SW5kZXgsIHRoaXMub3B0aW9ucyk7XG5cbiAgICBpZiAobmV4dFNpYmxpbmcpIHtcbiAgICAgIHRoaXMuc29ydGFibGUuZWwuaW5zZXJ0QmVmb3JlKGRyYWdFbCwgbmV4dFNpYmxpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnRhYmxlLmVsLmFwcGVuZENoaWxkKGRyYWdFbCk7XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0YWJsZS5hbmltYXRlQWxsKCk7XG5cbiAgICBpZiAocHV0U29ydGFibGUpIHtcbiAgICAgIHB1dFNvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgICB9XG4gIH0sXG4gIGRyb3A6IGRyb3Bcbn07XG5cbl9leHRlbmRzKFJldmVydCwge1xuICBwbHVnaW5OYW1lOiAncmV2ZXJ0T25TcGlsbCdcbn0pO1xuXG5mdW5jdGlvbiBSZW1vdmUoKSB7fVxuXG5SZW1vdmUucHJvdG90eXBlID0ge1xuICBvblNwaWxsOiBmdW5jdGlvbiBvblNwaWxsKF9yZWY0KSB7XG4gICAgdmFyIGRyYWdFbCA9IF9yZWY0LmRyYWdFbCxcbiAgICAgICAgcHV0U29ydGFibGUgPSBfcmVmNC5wdXRTb3J0YWJsZTtcbiAgICB2YXIgcGFyZW50U29ydGFibGUgPSBwdXRTb3J0YWJsZSB8fCB0aGlzLnNvcnRhYmxlO1xuICAgIHBhcmVudFNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgIGRyYWdFbC5wYXJlbnROb2RlICYmIGRyYWdFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRyYWdFbCk7XG4gICAgcGFyZW50U29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICB9LFxuICBkcm9wOiBkcm9wXG59O1xuXG5fZXh0ZW5kcyhSZW1vdmUsIHtcbiAgcGx1Z2luTmFtZTogJ3JlbW92ZU9uU3BpbGwnXG59KTtcblxudmFyIGxhc3RTd2FwRWw7XG5cbmZ1bmN0aW9uIFN3YXBQbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIFN3YXAoKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IHtcbiAgICAgIHN3YXBDbGFzczogJ3NvcnRhYmxlLXN3YXAtaGlnaGxpZ2h0J1xuICAgIH07XG4gIH1cblxuICBTd2FwLnByb3RvdHlwZSA9IHtcbiAgICBkcmFnU3RhcnQ6IGZ1bmN0aW9uIGRyYWdTdGFydChfcmVmKSB7XG4gICAgICB2YXIgZHJhZ0VsID0gX3JlZi5kcmFnRWw7XG4gICAgICBsYXN0U3dhcEVsID0gZHJhZ0VsO1xuICAgIH0sXG4gICAgZHJhZ092ZXJWYWxpZDogZnVuY3Rpb24gZHJhZ092ZXJWYWxpZChfcmVmMikge1xuICAgICAgdmFyIGNvbXBsZXRlZCA9IF9yZWYyLmNvbXBsZXRlZCxcbiAgICAgICAgICB0YXJnZXQgPSBfcmVmMi50YXJnZXQsXG4gICAgICAgICAgb25Nb3ZlID0gX3JlZjIub25Nb3ZlLFxuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlID0gX3JlZjIuYWN0aXZlU29ydGFibGUsXG4gICAgICAgICAgY2hhbmdlZCA9IF9yZWYyLmNoYW5nZWQsXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjIuY2FuY2VsO1xuICAgICAgaWYgKCFhY3RpdmVTb3J0YWJsZS5vcHRpb25zLnN3YXApIHJldHVybjtcbiAgICAgIHZhciBlbCA9IHRoaXMuc29ydGFibGUuZWwsXG4gICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQgIT09IGVsKSB7XG4gICAgICAgIHZhciBwcmV2U3dhcEVsID0gbGFzdFN3YXBFbDtcblxuICAgICAgICBpZiAob25Nb3ZlKHRhcmdldCkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgdG9nZ2xlQ2xhc3ModGFyZ2V0LCBvcHRpb25zLnN3YXBDbGFzcywgdHJ1ZSk7XG4gICAgICAgICAgbGFzdFN3YXBFbCA9IHRhcmdldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsYXN0U3dhcEVsID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmV2U3dhcEVsICYmIHByZXZTd2FwRWwgIT09IGxhc3RTd2FwRWwpIHtcbiAgICAgICAgICB0b2dnbGVDbGFzcyhwcmV2U3dhcEVsLCBvcHRpb25zLnN3YXBDbGFzcywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZWQoKTtcbiAgICAgIGNvbXBsZXRlZCh0cnVlKTtcbiAgICAgIGNhbmNlbCgpO1xuICAgIH0sXG4gICAgZHJvcDogZnVuY3Rpb24gZHJvcChfcmVmMykge1xuICAgICAgdmFyIGFjdGl2ZVNvcnRhYmxlID0gX3JlZjMuYWN0aXZlU29ydGFibGUsXG4gICAgICAgICAgcHV0U29ydGFibGUgPSBfcmVmMy5wdXRTb3J0YWJsZSxcbiAgICAgICAgICBkcmFnRWwgPSBfcmVmMy5kcmFnRWw7XG4gICAgICB2YXIgdG9Tb3J0YWJsZSA9IHB1dFNvcnRhYmxlIHx8IHRoaXMuc29ydGFibGU7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIGxhc3RTd2FwRWwgJiYgdG9nZ2xlQ2xhc3MobGFzdFN3YXBFbCwgb3B0aW9ucy5zd2FwQ2xhc3MsIGZhbHNlKTtcblxuICAgICAgaWYgKGxhc3RTd2FwRWwgJiYgKG9wdGlvbnMuc3dhcCB8fCBwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5vcHRpb25zLnN3YXApKSB7XG4gICAgICAgIGlmIChkcmFnRWwgIT09IGxhc3RTd2FwRWwpIHtcbiAgICAgICAgICB0b1NvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgICAgICAgIGlmICh0b1NvcnRhYmxlICE9PSBhY3RpdmVTb3J0YWJsZSkgYWN0aXZlU29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgICAgICAgc3dhcE5vZGVzKGRyYWdFbCwgbGFzdFN3YXBFbCk7XG4gICAgICAgICAgdG9Tb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gICAgICAgICAgaWYgKHRvU29ydGFibGUgIT09IGFjdGl2ZVNvcnRhYmxlKSBhY3RpdmVTb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG51bGxpbmc6IGZ1bmN0aW9uIG51bGxpbmcoKSB7XG4gICAgICBsYXN0U3dhcEVsID0gbnVsbDtcbiAgICB9XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcyhTd2FwLCB7XG4gICAgcGx1Z2luTmFtZTogJ3N3YXAnLFxuICAgIGV2ZW50UHJvcGVydGllczogZnVuY3Rpb24gZXZlbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3dhcEl0ZW06IGxhc3RTd2FwRWxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc3dhcE5vZGVzKG4xLCBuMikge1xuICB2YXIgcDEgPSBuMS5wYXJlbnROb2RlLFxuICAgICAgcDIgPSBuMi5wYXJlbnROb2RlLFxuICAgICAgaTEsXG4gICAgICBpMjtcbiAgaWYgKCFwMSB8fCAhcDIgfHwgcDEuaXNFcXVhbE5vZGUobjIpIHx8IHAyLmlzRXF1YWxOb2RlKG4xKSkgcmV0dXJuO1xuICBpMSA9IGluZGV4KG4xKTtcbiAgaTIgPSBpbmRleChuMik7XG5cbiAgaWYgKHAxLmlzRXF1YWxOb2RlKHAyKSAmJiBpMSA8IGkyKSB7XG4gICAgaTIrKztcbiAgfVxuXG4gIHAxLmluc2VydEJlZm9yZShuMiwgcDEuY2hpbGRyZW5baTFdKTtcbiAgcDIuaW5zZXJ0QmVmb3JlKG4xLCBwMi5jaGlsZHJlbltpMl0pO1xufVxuXG52YXIgbXVsdGlEcmFnRWxlbWVudHMgPSBbXSxcbiAgICBtdWx0aURyYWdDbG9uZXMgPSBbXSxcbiAgICBsYXN0TXVsdGlEcmFnU2VsZWN0LFxuICAgIC8vIGZvciBzZWxlY3Rpb24gd2l0aCBtb2RpZmllciBrZXkgZG93biAoU0hJRlQpXG5tdWx0aURyYWdTb3J0YWJsZSxcbiAgICBpbml0aWFsRm9sZGluZyA9IGZhbHNlLFxuICAgIC8vIEluaXRpYWwgbXVsdGktZHJhZyBmb2xkIHdoZW4gZHJhZyBzdGFydGVkXG5mb2xkaW5nID0gZmFsc2UsXG4gICAgLy8gRm9sZGluZyBhbnkgb3RoZXIgdGltZVxuZHJhZ1N0YXJ0ZWQgPSBmYWxzZSxcbiAgICBkcmFnRWwkMSxcbiAgICBjbG9uZXNGcm9tUmVjdCxcbiAgICBjbG9uZXNIaWRkZW47XG5cbmZ1bmN0aW9uIE11bHRpRHJhZ1BsdWdpbigpIHtcbiAgZnVuY3Rpb24gTXVsdGlEcmFnKHNvcnRhYmxlKSB7XG4gICAgLy8gQmluZCBhbGwgcHJpdmF0ZSBtZXRob2RzXG4gICAgZm9yICh2YXIgZm4gaW4gdGhpcykge1xuICAgICAgaWYgKGZuLmNoYXJBdCgwKSA9PT0gJ18nICYmIHR5cGVvZiB0aGlzW2ZuXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzW2ZuXSA9IHRoaXNbZm5dLmJpbmQodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNvcnRhYmxlLm9wdGlvbnMuc3VwcG9ydFBvaW50ZXIpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAncG9pbnRlcnVwJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbihkb2N1bWVudCwgJ21vdXNldXAnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgICBvbihkb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgIH1cblxuICAgIG9uKGRvY3VtZW50LCAna2V5ZG93bicsIHRoaXMuX2NoZWNrS2V5RG93bik7XG4gICAgb24oZG9jdW1lbnQsICdrZXl1cCcsIHRoaXMuX2NoZWNrS2V5VXApO1xuICAgIHRoaXMuZGVmYXVsdHMgPSB7XG4gICAgICBzZWxlY3RlZENsYXNzOiAnc29ydGFibGUtc2VsZWN0ZWQnLFxuICAgICAgbXVsdGlEcmFnS2V5OiBudWxsLFxuICAgICAgc2V0RGF0YTogZnVuY3Rpb24gc2V0RGF0YShkYXRhVHJhbnNmZXIsIGRyYWdFbCkge1xuICAgICAgICB2YXIgZGF0YSA9ICcnO1xuXG4gICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggJiYgbXVsdGlEcmFnU29ydGFibGUgPT09IHNvcnRhYmxlKSB7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCwgaSkge1xuICAgICAgICAgICAgZGF0YSArPSAoIWkgPyAnJyA6ICcsICcpICsgbXVsdGlEcmFnRWxlbWVudC50ZXh0Q29udGVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhID0gZHJhZ0VsLnRleHRDb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVRyYW5zZmVyLnNldERhdGEoJ1RleHQnLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgTXVsdGlEcmFnLnByb3RvdHlwZSA9IHtcbiAgICBtdWx0aURyYWdLZXlEb3duOiBmYWxzZSxcbiAgICBpc011bHRpRHJhZzogZmFsc2UsXG4gICAgZGVsYXlTdGFydEdsb2JhbDogZnVuY3Rpb24gZGVsYXlTdGFydEdsb2JhbChfcmVmKSB7XG4gICAgICB2YXIgZHJhZ2dlZCA9IF9yZWYuZHJhZ0VsO1xuICAgICAgZHJhZ0VsJDEgPSBkcmFnZ2VkO1xuICAgIH0sXG4gICAgZGVsYXlFbmRlZDogZnVuY3Rpb24gZGVsYXlFbmRlZCgpIHtcbiAgICAgIHRoaXMuaXNNdWx0aURyYWcgPSB+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihkcmFnRWwkMSk7XG4gICAgfSxcbiAgICBzZXR1cENsb25lOiBmdW5jdGlvbiBzZXR1cENsb25lKF9yZWYyKSB7XG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmMi5zb3J0YWJsZSxcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmMi5jYW5jZWw7XG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcpIHJldHVybjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdWx0aURyYWdFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtdWx0aURyYWdDbG9uZXMucHVzaChjbG9uZShtdWx0aURyYWdFbGVtZW50c1tpXSkpO1xuICAgICAgICBtdWx0aURyYWdDbG9uZXNbaV0uc29ydGFibGVJbmRleCA9IG11bHRpRHJhZ0VsZW1lbnRzW2ldLnNvcnRhYmxlSW5kZXg7XG4gICAgICAgIG11bHRpRHJhZ0Nsb25lc1tpXS5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgICAgICAgbXVsdGlEcmFnQ2xvbmVzW2ldLnN0eWxlWyd3aWxsLWNoYW5nZSddID0gJyc7XG4gICAgICAgIHRvZ2dsZUNsYXNzKG11bHRpRHJhZ0Nsb25lc1tpXSwgdGhpcy5vcHRpb25zLnNlbGVjdGVkQ2xhc3MsIGZhbHNlKTtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudHNbaV0gPT09IGRyYWdFbCQxICYmIHRvZ2dsZUNsYXNzKG11bHRpRHJhZ0Nsb25lc1tpXSwgdGhpcy5vcHRpb25zLmNob3NlbkNsYXNzLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHNvcnRhYmxlLl9oaWRlQ2xvbmUoKTtcblxuICAgICAgY2FuY2VsKCk7XG4gICAgfSxcbiAgICBjbG9uZTogZnVuY3Rpb24gY2xvbmUoX3JlZjMpIHtcbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWYzLnNvcnRhYmxlLFxuICAgICAgICAgIHJvb3RFbCA9IF9yZWYzLnJvb3RFbCxcbiAgICAgICAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQgPSBfcmVmMy5kaXNwYXRjaFNvcnRhYmxlRXZlbnQsXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjMuY2FuY2VsO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlKSB7XG4gICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggJiYgbXVsdGlEcmFnU29ydGFibGUgPT09IHNvcnRhYmxlKSB7XG4gICAgICAgICAgaW5zZXJ0TXVsdGlEcmFnQ2xvbmVzKHRydWUsIHJvb3RFbCk7XG4gICAgICAgICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50KCdjbG9uZScpO1xuICAgICAgICAgIGNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBzaG93Q2xvbmU6IGZ1bmN0aW9uIHNob3dDbG9uZShfcmVmNCkge1xuICAgICAgdmFyIGNsb25lTm93U2hvd24gPSBfcmVmNC5jbG9uZU5vd1Nob3duLFxuICAgICAgICAgIHJvb3RFbCA9IF9yZWY0LnJvb3RFbCxcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmNC5jYW5jZWw7XG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcpIHJldHVybjtcbiAgICAgIGluc2VydE11bHRpRHJhZ0Nsb25lcyhmYWxzZSwgcm9vdEVsKTtcbiAgICAgIG11bHRpRHJhZ0Nsb25lcy5mb3JFYWNoKGZ1bmN0aW9uIChjbG9uZSkge1xuICAgICAgICBjc3MoY2xvbmUsICdkaXNwbGF5JywgJycpO1xuICAgICAgfSk7XG4gICAgICBjbG9uZU5vd1Nob3duKCk7XG4gICAgICBjbG9uZXNIaWRkZW4gPSBmYWxzZTtcbiAgICAgIGNhbmNlbCgpO1xuICAgIH0sXG4gICAgaGlkZUNsb25lOiBmdW5jdGlvbiBoaWRlQ2xvbmUoX3JlZjUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWY1LnNvcnRhYmxlLFxuICAgICAgICAgIGNsb25lTm93SGlkZGVuID0gX3JlZjUuY2xvbmVOb3dIaWRkZW4sXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjUuY2FuY2VsO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnKSByZXR1cm47XG4gICAgICBtdWx0aURyYWdDbG9uZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUpIHtcbiAgICAgICAgY3NzKGNsb25lLCAnZGlzcGxheScsICdub25lJyk7XG5cbiAgICAgICAgaWYgKF90aGlzLm9wdGlvbnMucmVtb3ZlQ2xvbmVPbkhpZGUgJiYgY2xvbmUucGFyZW50Tm9kZSkge1xuICAgICAgICAgIGNsb25lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsb25lTm93SGlkZGVuKCk7XG4gICAgICBjbG9uZXNIaWRkZW4gPSB0cnVlO1xuICAgICAgY2FuY2VsKCk7XG4gICAgfSxcbiAgICBkcmFnU3RhcnRHbG9iYWw6IGZ1bmN0aW9uIGRyYWdTdGFydEdsb2JhbChfcmVmNikge1xuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjYuc29ydGFibGU7XG5cbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZyAmJiBtdWx0aURyYWdTb3J0YWJsZSkge1xuICAgICAgICBtdWx0aURyYWdTb3J0YWJsZS5tdWx0aURyYWcuX2Rlc2VsZWN0TXVsdGlEcmFnKCk7XG4gICAgICB9XG5cbiAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudC5zb3J0YWJsZUluZGV4ID0gaW5kZXgobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICB9KTsgLy8gU29ydCBtdWx0aS1kcmFnIGVsZW1lbnRzXG5cbiAgICAgIG11bHRpRHJhZ0VsZW1lbnRzID0gbXVsdGlEcmFnRWxlbWVudHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5zb3J0YWJsZUluZGV4IC0gYi5zb3J0YWJsZUluZGV4O1xuICAgICAgfSk7XG4gICAgICBkcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgfSxcbiAgICBkcmFnU3RhcnRlZDogZnVuY3Rpb24gZHJhZ1N0YXJ0ZWQoX3JlZjcpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmNy5zb3J0YWJsZTtcbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZykgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNvcnQpIHtcbiAgICAgICAgLy8gQ2FwdHVyZSByZWN0cyxcbiAgICAgICAgLy8gaGlkZSBtdWx0aSBkcmFnIGVsZW1lbnRzIChieSBwb3NpdGlvbmluZyB0aGVtIGFic29sdXRlKSxcbiAgICAgICAgLy8gc2V0IG11bHRpIGRyYWcgZWxlbWVudHMgcmVjdHMgdG8gZHJhZ1JlY3QsXG4gICAgICAgIC8vIHNob3cgbXVsdGkgZHJhZyBlbGVtZW50cyxcbiAgICAgICAgLy8gYW5pbWF0ZSB0byByZWN0cyxcbiAgICAgICAgLy8gdW5zZXQgcmVjdHMgJiByZW1vdmUgZnJvbSBET01cbiAgICAgICAgc29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbmltYXRpb24pIHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudCA9PT0gZHJhZ0VsJDEpIHJldHVybjtcbiAgICAgICAgICAgIGNzcyhtdWx0aURyYWdFbGVtZW50LCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgZHJhZ1JlY3QgPSBnZXRSZWN0KGRyYWdFbCQxLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQgPT09IGRyYWdFbCQxKSByZXR1cm47XG4gICAgICAgICAgICBzZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQsIGRyYWdSZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmb2xkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBpbml0aWFsRm9sZGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc29ydGFibGUuYW5pbWF0ZUFsbChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgaW5pdGlhbEZvbGRpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoX3RoaXMyLm9wdGlvbnMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgdW5zZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IC8vIFJlbW92ZSBhbGwgYXV4aWxpYXJ5IG11bHRpZHJhZyBpdGVtcyBmcm9tIGVsLCBpZiBzb3J0aW5nIGVuYWJsZWRcblxuXG4gICAgICAgIGlmIChfdGhpczIub3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgcmVtb3ZlTXVsdGlEcmFnRWxlbWVudHMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBkcmFnT3ZlcjogZnVuY3Rpb24gZHJhZ092ZXIoX3JlZjgpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBfcmVmOC50YXJnZXQsXG4gICAgICAgICAgY29tcGxldGVkID0gX3JlZjguY29tcGxldGVkLFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWY4LmNhbmNlbDtcblxuICAgICAgaWYgKGZvbGRpbmcgJiYgfm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YodGFyZ2V0KSkge1xuICAgICAgICBjb21wbGV0ZWQoZmFsc2UpO1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJldmVydDogZnVuY3Rpb24gcmV2ZXJ0KF9yZWY5KSB7XG4gICAgICB2YXIgZnJvbVNvcnRhYmxlID0gX3JlZjkuZnJvbVNvcnRhYmxlLFxuICAgICAgICAgIHJvb3RFbCA9IF9yZWY5LnJvb3RFbCxcbiAgICAgICAgICBzb3J0YWJsZSA9IF9yZWY5LnNvcnRhYmxlLFxuICAgICAgICAgIGRyYWdSZWN0ID0gX3JlZjkuZHJhZ1JlY3Q7XG5cbiAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vIFNldHVwIHVuZm9sZCBhbmltYXRpb25cbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgIHNvcnRhYmxlLmFkZEFuaW1hdGlvblN0YXRlKHtcbiAgICAgICAgICAgIHRhcmdldDogbXVsdGlEcmFnRWxlbWVudCxcbiAgICAgICAgICAgIHJlY3Q6IGZvbGRpbmcgPyBnZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQpIDogZHJhZ1JlY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1bnNldFJlY3QobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudC5mcm9tUmVjdCA9IGRyYWdSZWN0O1xuICAgICAgICAgIGZyb21Tb3J0YWJsZS5yZW1vdmVBbmltYXRpb25TdGF0ZShtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZvbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgaW5zZXJ0TXVsdGlEcmFnRWxlbWVudHMoIXRoaXMub3B0aW9ucy5yZW1vdmVDbG9uZU9uSGlkZSwgcm9vdEVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRyYWdPdmVyQ29tcGxldGVkOiBmdW5jdGlvbiBkcmFnT3ZlckNvbXBsZXRlZChfcmVmMTApIHtcbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWYxMC5zb3J0YWJsZSxcbiAgICAgICAgICBpc093bmVyID0gX3JlZjEwLmlzT3duZXIsXG4gICAgICAgICAgaW5zZXJ0aW9uID0gX3JlZjEwLmluc2VydGlvbixcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZSA9IF9yZWYxMC5hY3RpdmVTb3J0YWJsZSxcbiAgICAgICAgICBwYXJlbnRFbCA9IF9yZWYxMC5wYXJlbnRFbCxcbiAgICAgICAgICBwdXRTb3J0YWJsZSA9IF9yZWYxMC5wdXRTb3J0YWJsZTtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG4gICAgICBpZiAoaW5zZXJ0aW9uKSB7XG4gICAgICAgIC8vIENsb25lcyBtdXN0IGJlIGhpZGRlbiBiZWZvcmUgZm9sZGluZyBhbmltYXRpb24gdG8gY2FwdHVyZSBkcmFnUmVjdEFic29sdXRlIHByb3Blcmx5XG4gICAgICAgIGlmIChpc093bmVyKSB7XG4gICAgICAgICAgYWN0aXZlU29ydGFibGUuX2hpZGVDbG9uZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdGlhbEZvbGRpbmcgPSBmYWxzZTsgLy8gSWYgbGVhdmluZyBzb3J0OmZhbHNlIHJvb3QsIG9yIGFscmVhZHkgZm9sZGluZyAtIEZvbGQgdG8gbmV3IGxvY2F0aW9uXG5cbiAgICAgICAgaWYgKG9wdGlvbnMuYW5pbWF0aW9uICYmIG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCA+IDEgJiYgKGZvbGRpbmcgfHwgIWlzT3duZXIgJiYgIWFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuc29ydCAmJiAhcHV0U29ydGFibGUpKSB7XG4gICAgICAgICAgLy8gRm9sZDogU2V0IGFsbCBtdWx0aSBkcmFnIGVsZW1lbnRzJ3MgcmVjdHMgdG8gZHJhZ0VsJ3MgcmVjdCB3aGVuIG11bHRpLWRyYWcgZWxlbWVudHMgYXJlIGludmlzaWJsZVxuICAgICAgICAgIHZhciBkcmFnUmVjdEFic29sdXRlID0gZ2V0UmVjdChkcmFnRWwkMSwgZmFsc2UsIHRydWUsIHRydWUpO1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50ID09PSBkcmFnRWwkMSkgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVjdChtdWx0aURyYWdFbGVtZW50LCBkcmFnUmVjdEFic29sdXRlKTsgLy8gTW92ZSBlbGVtZW50KHMpIHRvIGVuZCBvZiBwYXJlbnRFbCBzbyB0aGF0IGl0IGRvZXMgbm90IGludGVyZmVyZSB3aXRoIG11bHRpLWRyYWcgY2xvbmVzIGluc2VydGlvbiBpZiB0aGV5IGFyZSBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gd2hpbGUgZm9sZGluZywgYW5kIHNvIHRoYXQgd2UgY2FuIGNhcHR1cmUgdGhlbSBhZ2FpbiBiZWNhdXNlIG9sZCBzb3J0YWJsZSB3aWxsIG5vIGxvbmdlciBiZSBmcm9tU29ydGFibGVcblxuICAgICAgICAgICAgcGFyZW50RWwuYXBwZW5kQ2hpbGQobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZm9sZGluZyA9IHRydWU7XG4gICAgICAgIH0gLy8gQ2xvbmVzIG11c3QgYmUgc2hvd24gKGFuZCBjaGVjayB0byByZW1vdmUgbXVsdGkgZHJhZ3MpIGFmdGVyIGZvbGRpbmcgd2hlbiBpbnRlcmZlcmluZyBtdWx0aURyYWdFbGVtZW50cyBhcmUgbW92ZWQgb3V0XG5cblxuICAgICAgICBpZiAoIWlzT3duZXIpIHtcbiAgICAgICAgICAvLyBPbmx5IHJlbW92ZSBpZiBub3QgZm9sZGluZyAoZm9sZGluZyB3aWxsIHJlbW92ZSB0aGVtIGFueXdheXMpXG4gICAgICAgICAgaWYgKCFmb2xkaW5nKSB7XG4gICAgICAgICAgICByZW1vdmVNdWx0aURyYWdFbGVtZW50cygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgY2xvbmVzSGlkZGVuQmVmb3JlID0gY2xvbmVzSGlkZGVuO1xuXG4gICAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5fc2hvd0Nsb25lKHNvcnRhYmxlKTsgLy8gVW5mb2xkIGFuaW1hdGlvbiBmb3IgY2xvbmVzIGlmIHNob3dpbmcgZnJvbSBoaWRkZW5cblxuXG4gICAgICAgICAgICBpZiAoYWN0aXZlU29ydGFibGUub3B0aW9ucy5hbmltYXRpb24gJiYgIWNsb25lc0hpZGRlbiAmJiBjbG9uZXNIaWRkZW5CZWZvcmUpIHtcbiAgICAgICAgICAgICAgbXVsdGlEcmFnQ2xvbmVzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlU29ydGFibGUuYWRkQW5pbWF0aW9uU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBjbG9uZSxcbiAgICAgICAgICAgICAgICAgIHJlY3Q6IGNsb25lc0Zyb21SZWN0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY2xvbmUuZnJvbVJlY3QgPSBjbG9uZXNGcm9tUmVjdDtcbiAgICAgICAgICAgICAgICBjbG9uZS50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aXZlU29ydGFibGUuX3Nob3dDbG9uZShzb3J0YWJsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkcmFnT3ZlckFuaW1hdGlvbkNhcHR1cmU6IGZ1bmN0aW9uIGRyYWdPdmVyQW5pbWF0aW9uQ2FwdHVyZShfcmVmMTEpIHtcbiAgICAgIHZhciBkcmFnUmVjdCA9IF9yZWYxMS5kcmFnUmVjdCxcbiAgICAgICAgICBpc093bmVyID0gX3JlZjExLmlzT3duZXIsXG4gICAgICAgICAgYWN0aXZlU29ydGFibGUgPSBfcmVmMTEuYWN0aXZlU29ydGFibGU7XG4gICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnQudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gbnVsbDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWN0aXZlU29ydGFibGUub3B0aW9ucy5hbmltYXRpb24gJiYgIWlzT3duZXIgJiYgYWN0aXZlU29ydGFibGUubXVsdGlEcmFnLmlzTXVsdGlEcmFnKSB7XG4gICAgICAgIGNsb25lc0Zyb21SZWN0ID0gX2V4dGVuZHMoe30sIGRyYWdSZWN0KTtcbiAgICAgICAgdmFyIGRyYWdNYXRyaXggPSBtYXRyaXgoZHJhZ0VsJDEsIHRydWUpO1xuICAgICAgICBjbG9uZXNGcm9tUmVjdC50b3AgLT0gZHJhZ01hdHJpeC5mO1xuICAgICAgICBjbG9uZXNGcm9tUmVjdC5sZWZ0IC09IGRyYWdNYXRyaXguZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRyYWdPdmVyQW5pbWF0aW9uQ29tcGxldGU6IGZ1bmN0aW9uIGRyYWdPdmVyQW5pbWF0aW9uQ29tcGxldGUoKSB7XG4gICAgICBpZiAoZm9sZGluZykge1xuICAgICAgICBmb2xkaW5nID0gZmFsc2U7XG4gICAgICAgIHJlbW92ZU11bHRpRHJhZ0VsZW1lbnRzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcm9wOiBmdW5jdGlvbiBkcm9wKF9yZWYxMikge1xuICAgICAgdmFyIGV2dCA9IF9yZWYxMi5vcmlnaW5hbEV2ZW50LFxuICAgICAgICAgIHJvb3RFbCA9IF9yZWYxMi5yb290RWwsXG4gICAgICAgICAgcGFyZW50RWwgPSBfcmVmMTIucGFyZW50RWwsXG4gICAgICAgICAgc29ydGFibGUgPSBfcmVmMTIuc29ydGFibGUsXG4gICAgICAgICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50ID0gX3JlZjEyLmRpc3BhdGNoU29ydGFibGVFdmVudCxcbiAgICAgICAgICBvbGRJbmRleCA9IF9yZWYxMi5vbGRJbmRleCxcbiAgICAgICAgICBwdXRTb3J0YWJsZSA9IF9yZWYxMi5wdXRTb3J0YWJsZTtcbiAgICAgIHZhciB0b1NvcnRhYmxlID0gcHV0U29ydGFibGUgfHwgdGhpcy5zb3J0YWJsZTtcbiAgICAgIGlmICghZXZ0KSByZXR1cm47XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICBjaGlsZHJlbiA9IHBhcmVudEVsLmNoaWxkcmVuOyAvLyBNdWx0aS1kcmFnIHNlbGVjdGlvblxuXG4gICAgICBpZiAoIWRyYWdTdGFydGVkKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm11bHRpRHJhZ0tleSAmJiAhdGhpcy5tdWx0aURyYWdLZXlEb3duKSB7XG4gICAgICAgICAgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCQxLCBvcHRpb25zLnNlbGVjdGVkQ2xhc3MsICF+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihkcmFnRWwkMSkpO1xuXG4gICAgICAgIGlmICghfm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZHJhZ0VsJDEpKSB7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMucHVzaChkcmFnRWwkMSk7XG4gICAgICAgICAgZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICBzb3J0YWJsZTogc29ydGFibGUsXG4gICAgICAgICAgICByb290RWw6IHJvb3RFbCxcbiAgICAgICAgICAgIG5hbWU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgdGFyZ2V0RWw6IGRyYWdFbCQxLFxuICAgICAgICAgICAgb3JpZ2luYWxFdnQ6IGV2dFxuICAgICAgICAgIH0pOyAvLyBNb2RpZmllciBhY3RpdmF0ZWQsIHNlbGVjdCBmcm9tIGxhc3QgdG8gZHJhZ0VsXG5cbiAgICAgICAgICBpZiAoZXZ0LnNoaWZ0S2V5ICYmIGxhc3RNdWx0aURyYWdTZWxlY3QgJiYgc29ydGFibGUuZWwuY29udGFpbnMobGFzdE11bHRpRHJhZ1NlbGVjdCkpIHtcbiAgICAgICAgICAgIHZhciBsYXN0SW5kZXggPSBpbmRleChsYXN0TXVsdGlEcmFnU2VsZWN0KSxcbiAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXggPSBpbmRleChkcmFnRWwkMSk7XG5cbiAgICAgICAgICAgIGlmICh+bGFzdEluZGV4ICYmIH5jdXJyZW50SW5kZXggJiYgbGFzdEluZGV4ICE9PSBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgICAgICAgLy8gTXVzdCBpbmNsdWRlIGxhc3RNdWx0aURyYWdTZWxlY3QgKHNlbGVjdCBpdCksIGluIGNhc2UgbW9kaWZpZWQgc2VsZWN0aW9uIGZyb20gbm8gc2VsZWN0aW9uXG4gICAgICAgICAgICAgIC8vIChidXQgcHJldmlvdXMgc2VsZWN0aW9uIGV4aXN0ZWQpXG4gICAgICAgICAgICAgIHZhciBuLCBpO1xuXG4gICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpID0gbGFzdEluZGV4O1xuICAgICAgICAgICAgICAgIG4gPSBjdXJyZW50SW5kZXg7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaSA9IGN1cnJlbnRJbmRleDtcbiAgICAgICAgICAgICAgICBuID0gbGFzdEluZGV4ICsgMTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKH5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGNoaWxkcmVuW2ldKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoY2hpbGRyZW5baV0sIG9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgICAgICBzb3J0YWJsZTogc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICByb290RWw6IHJvb3RFbCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgdGFyZ2V0RWw6IGNoaWxkcmVuW2ldLFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdnQ6IGV2dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RNdWx0aURyYWdTZWxlY3QgPSBkcmFnRWwkMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtdWx0aURyYWdTb3J0YWJsZSA9IHRvU29ydGFibGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuc3BsaWNlKG11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZHJhZ0VsJDEpLCAxKTtcbiAgICAgICAgICBsYXN0TXVsdGlEcmFnU2VsZWN0ID0gbnVsbDtcbiAgICAgICAgICBkaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZSxcbiAgICAgICAgICAgIHJvb3RFbDogcm9vdEVsLFxuICAgICAgICAgICAgbmFtZTogJ2Rlc2VsZWN0JyxcbiAgICAgICAgICAgIHRhcmdldEVsOiBkcmFnRWwkMSxcbiAgICAgICAgICAgIG9yaWdpbmFsRXZ0OiBldnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBNdWx0aS1kcmFnIGRyb3BcblxuXG4gICAgICBpZiAoZHJhZ1N0YXJ0ZWQgJiYgdGhpcy5pc011bHRpRHJhZykge1xuICAgICAgICBmb2xkaW5nID0gZmFsc2U7IC8vIERvIG5vdCBcInVuZm9sZFwiIGFmdGVyIGFyb3VuZCBkcmFnRWwgaWYgcmV2ZXJ0ZWRcblxuICAgICAgICBpZiAoKHBhcmVudEVsW2V4cGFuZG9dLm9wdGlvbnMuc29ydCB8fCBwYXJlbnRFbCAhPT0gcm9vdEVsKSAmJiBtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdmFyIGRyYWdSZWN0ID0gZ2V0UmVjdChkcmFnRWwkMSksXG4gICAgICAgICAgICAgIG11bHRpRHJhZ0luZGV4ID0gaW5kZXgoZHJhZ0VsJDEsICc6bm90KC4nICsgdGhpcy5vcHRpb25zLnNlbGVjdGVkQ2xhc3MgKyAnKScpO1xuICAgICAgICAgIGlmICghaW5pdGlhbEZvbGRpbmcgJiYgb3B0aW9ucy5hbmltYXRpb24pIGRyYWdFbCQxLnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgdG9Tb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcblxuICAgICAgICAgIGlmICghaW5pdGlhbEZvbGRpbmcpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICBkcmFnRWwkMS5mcm9tUmVjdCA9IGRyYWdSZWN0O1xuICAgICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudC50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQgIT09IGRyYWdFbCQxKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IGZvbGRpbmcgPyBnZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQpIDogZHJhZ1JlY3Q7XG4gICAgICAgICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50LmZyb21SZWN0ID0gcmVjdDsgLy8gUHJlcGFyZSB1bmZvbGQgYW5pbWF0aW9uXG5cbiAgICAgICAgICAgICAgICAgIHRvU29ydGFibGUuYWRkQW5pbWF0aW9uU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IG11bHRpRHJhZ0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHJlY3Q6IHJlY3RcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IC8vIE11bHRpIGRyYWcgZWxlbWVudHMgYXJlIG5vdCBuZWNlc3NhcmlseSByZW1vdmVkIGZyb20gdGhlIERPTSBvbiBkcm9wLCBzbyB0byByZWluc2VydFxuICAgICAgICAgICAgLy8gcHJvcGVybHkgdGhleSBtdXN0IGFsbCBiZSByZW1vdmVkXG5cblxuICAgICAgICAgICAgcmVtb3ZlTXVsdGlEcmFnRWxlbWVudHMoKTtcbiAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW211bHRpRHJhZ0luZGV4XSkge1xuICAgICAgICAgICAgICAgIHBhcmVudEVsLmluc2VydEJlZm9yZShtdWx0aURyYWdFbGVtZW50LCBjaGlsZHJlblttdWx0aURyYWdJbmRleF0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudEVsLmFwcGVuZENoaWxkKG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgbXVsdGlEcmFnSW5kZXgrKztcbiAgICAgICAgICAgIH0pOyAvLyBJZiBpbml0aWFsIGZvbGRpbmcgaXMgZG9uZSwgdGhlIGVsZW1lbnRzIG1heSBoYXZlIGNoYW5nZWQgcG9zaXRpb24gYmVjYXVzZSB0aGV5IGFyZSBub3dcbiAgICAgICAgICAgIC8vIHVuZm9sZGluZyBhcm91bmQgZHJhZ0VsLCBldmVuIHRob3VnaCBkcmFnRWwgbWF5IG5vdCBoYXZlIGhpcyBpbmRleCBjaGFuZ2VkLCBzbyB1cGRhdGUgZXZlbnRcbiAgICAgICAgICAgIC8vIG11c3QgYmUgZmlyZWQgaGVyZSBhcyBTb3J0YWJsZSB3aWxsIG5vdC5cblxuICAgICAgICAgICAgaWYgKG9sZEluZGV4ID09PSBpbmRleChkcmFnRWwkMSkpIHtcbiAgICAgICAgICAgICAgdmFyIHVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQuc29ydGFibGVJbmRleCAhPT0gaW5kZXgobXVsdGlEcmFnRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50KCd1cGRhdGUnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gTXVzdCBiZSBkb25lIGFmdGVyIGNhcHR1cmluZyBpbmRpdmlkdWFsIHJlY3RzIChzY3JvbGwgYmFyKVxuXG5cbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICB1bnNldFJlY3QobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdG9Tb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBtdWx0aURyYWdTb3J0YWJsZSA9IHRvU29ydGFibGU7XG4gICAgICB9IC8vIFJlbW92ZSBjbG9uZXMgaWYgbmVjZXNzYXJ5XG5cblxuICAgICAgaWYgKHJvb3RFbCA9PT0gcGFyZW50RWwgfHwgcHV0U29ydGFibGUgJiYgcHV0U29ydGFibGUubGFzdFB1dE1vZGUgIT09ICdjbG9uZScpIHtcbiAgICAgICAgbXVsdGlEcmFnQ2xvbmVzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lKSB7XG4gICAgICAgICAgY2xvbmUucGFyZW50Tm9kZSAmJiBjbG9uZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBudWxsaW5nR2xvYmFsOiBmdW5jdGlvbiBudWxsaW5nR2xvYmFsKCkge1xuICAgICAgdGhpcy5pc011bHRpRHJhZyA9IGRyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgICBtdWx0aURyYWdDbG9uZXMubGVuZ3RoID0gMDtcbiAgICB9LFxuICAgIGRlc3Ryb3lHbG9iYWw6IGZ1bmN0aW9uIGRlc3Ryb3lHbG9iYWwoKSB7XG4gICAgICB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZygpO1xuXG4gICAgICBvZmYoZG9jdW1lbnQsICdwb2ludGVydXAnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgICBvZmYoZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgICAgb2ZmKGRvY3VtZW50LCAndG91Y2hlbmQnLCB0aGlzLl9kZXNlbGVjdE11bHRpRHJhZyk7XG4gICAgICBvZmYoZG9jdW1lbnQsICdrZXlkb3duJywgdGhpcy5fY2hlY2tLZXlEb3duKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ2tleXVwJywgdGhpcy5fY2hlY2tLZXlVcCk7XG4gICAgfSxcbiAgICBfZGVzZWxlY3RNdWx0aURyYWc6IGZ1bmN0aW9uIF9kZXNlbGVjdE11bHRpRHJhZyhldnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZHJhZ1N0YXJ0ZWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZHJhZ1N0YXJ0ZWQpIHJldHVybjsgLy8gT25seSBkZXNlbGVjdCBpZiBzZWxlY3Rpb24gaXMgaW4gdGhpcyBzb3J0YWJsZVxuXG4gICAgICBpZiAobXVsdGlEcmFnU29ydGFibGUgIT09IHRoaXMuc29ydGFibGUpIHJldHVybjsgLy8gT25seSBkZXNlbGVjdCBpZiB0YXJnZXQgaXMgbm90IGl0ZW0gaW4gdGhpcyBzb3J0YWJsZVxuXG4gICAgICBpZiAoZXZ0ICYmIGNsb3Nlc3QoZXZ0LnRhcmdldCwgdGhpcy5vcHRpb25zLmRyYWdnYWJsZSwgdGhpcy5zb3J0YWJsZS5lbCwgZmFsc2UpKSByZXR1cm47IC8vIE9ubHkgZGVzZWxlY3QgaWYgbGVmdCBjbGlja1xuXG4gICAgICBpZiAoZXZ0ICYmIGV2dC5idXR0b24gIT09IDApIHJldHVybjtcblxuICAgICAgd2hpbGUgKG11bHRpRHJhZ0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICB2YXIgZWwgPSBtdWx0aURyYWdFbGVtZW50c1swXTtcbiAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMub3B0aW9ucy5zZWxlY3RlZENsYXNzLCBmYWxzZSk7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnNoaWZ0KCk7XG4gICAgICAgIGRpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLnNvcnRhYmxlLFxuICAgICAgICAgIHJvb3RFbDogdGhpcy5zb3J0YWJsZS5lbCxcbiAgICAgICAgICBuYW1lOiAnZGVzZWxlY3QnLFxuICAgICAgICAgIHRhcmdldEVsOiBlbCxcbiAgICAgICAgICBvcmlnaW5hbEV2dDogZXZ0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgX2NoZWNrS2V5RG93bjogZnVuY3Rpb24gX2NoZWNrS2V5RG93bihldnQpIHtcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLm9wdGlvbnMubXVsdGlEcmFnS2V5KSB7XG4gICAgICAgIHRoaXMubXVsdGlEcmFnS2V5RG93biA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBfY2hlY2tLZXlVcDogZnVuY3Rpb24gX2NoZWNrS2V5VXAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5vcHRpb25zLm11bHRpRHJhZ0tleSkge1xuICAgICAgICB0aGlzLm11bHRpRHJhZ0tleURvd24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcyhNdWx0aURyYWcsIHtcbiAgICAvLyBTdGF0aWMgbWV0aG9kcyAmIHByb3BlcnRpZXNcbiAgICBwbHVnaW5OYW1lOiAnbXVsdGlEcmFnJyxcbiAgICB1dGlsczoge1xuICAgICAgLyoqXG4gICAgICAgKiBTZWxlY3RzIHRoZSBwcm92aWRlZCBtdWx0aS1kcmFnIGl0ZW1cbiAgICAgICAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbCAgICBUaGUgZWxlbWVudCB0byBiZSBzZWxlY3RlZFxuICAgICAgICovXG4gICAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdChlbCkge1xuICAgICAgICB2YXIgc29ydGFibGUgPSBlbC5wYXJlbnROb2RlW2V4cGFuZG9dO1xuICAgICAgICBpZiAoIXNvcnRhYmxlIHx8ICFzb3J0YWJsZS5vcHRpb25zLm11bHRpRHJhZyB8fCB+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihlbCkpIHJldHVybjtcblxuICAgICAgICBpZiAobXVsdGlEcmFnU29ydGFibGUgJiYgbXVsdGlEcmFnU29ydGFibGUgIT09IHNvcnRhYmxlKSB7XG4gICAgICAgICAgbXVsdGlEcmFnU29ydGFibGUubXVsdGlEcmFnLl9kZXNlbGVjdE11bHRpRHJhZygpO1xuXG4gICAgICAgICAgbXVsdGlEcmFnU29ydGFibGUgPSBzb3J0YWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBzb3J0YWJsZS5vcHRpb25zLnNlbGVjdGVkQ2xhc3MsIHRydWUpO1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5wdXNoKGVsKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRGVzZWxlY3RzIHRoZSBwcm92aWRlZCBtdWx0aS1kcmFnIGl0ZW1cbiAgICAgICAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbCAgICBUaGUgZWxlbWVudCB0byBiZSBkZXNlbGVjdGVkXG4gICAgICAgKi9cbiAgICAgIGRlc2VsZWN0OiBmdW5jdGlvbiBkZXNlbGVjdChlbCkge1xuICAgICAgICB2YXIgc29ydGFibGUgPSBlbC5wYXJlbnROb2RlW2V4cGFuZG9dLFxuICAgICAgICAgICAgaW5kZXggPSBtdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGVsKTtcbiAgICAgICAgaWYgKCFzb3J0YWJsZSB8fCAhc29ydGFibGUub3B0aW9ucy5tdWx0aURyYWcgfHwgIX5pbmRleCkgcmV0dXJuO1xuICAgICAgICB0b2dnbGVDbGFzcyhlbCwgc29ydGFibGUub3B0aW9ucy5zZWxlY3RlZENsYXNzLCBmYWxzZSk7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBldmVudFByb3BlcnRpZXM6IGZ1bmN0aW9uIGV2ZW50UHJvcGVydGllcygpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgb2xkSW5kaWNpZXMgPSBbXSxcbiAgICAgICAgICBuZXdJbmRpY2llcyA9IFtdO1xuICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICBvbGRJbmRpY2llcy5wdXNoKHtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50OiBtdWx0aURyYWdFbGVtZW50LFxuICAgICAgICAgIGluZGV4OiBtdWx0aURyYWdFbGVtZW50LnNvcnRhYmxlSW5kZXhcbiAgICAgICAgfSk7IC8vIG11bHRpRHJhZ0VsZW1lbnRzIHdpbGwgYWxyZWFkeSBiZSBzb3J0ZWQgaWYgZm9sZGluZ1xuXG4gICAgICAgIHZhciBuZXdJbmRleDtcblxuICAgICAgICBpZiAoZm9sZGluZyAmJiBtdWx0aURyYWdFbGVtZW50ICE9PSBkcmFnRWwkMSkge1xuICAgICAgICAgIG5ld0luZGV4ID0gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZGluZykge1xuICAgICAgICAgIG5ld0luZGV4ID0gaW5kZXgobXVsdGlEcmFnRWxlbWVudCwgJzpub3QoLicgKyBfdGhpczMub3B0aW9ucy5zZWxlY3RlZENsYXNzICsgJyknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdJbmRleCA9IGluZGV4KG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3SW5kaWNpZXMucHVzaCh7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudDogbXVsdGlEcmFnRWxlbWVudCxcbiAgICAgICAgICBpbmRleDogbmV3SW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiBfdG9Db25zdW1hYmxlQXJyYXkobXVsdGlEcmFnRWxlbWVudHMpLFxuICAgICAgICBjbG9uZXM6IFtdLmNvbmNhdChtdWx0aURyYWdDbG9uZXMpLFxuICAgICAgICBvbGRJbmRpY2llczogb2xkSW5kaWNpZXMsXG4gICAgICAgIG5ld0luZGljaWVzOiBuZXdJbmRpY2llc1xuICAgICAgfTtcbiAgICB9LFxuICAgIG9wdGlvbkxpc3RlbmVyczoge1xuICAgICAgbXVsdGlEcmFnS2V5OiBmdW5jdGlvbiBtdWx0aURyYWdLZXkoa2V5KSB7XG4gICAgICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdjdHJsJykge1xuICAgICAgICAgIGtleSA9ICdDb250cm9sJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGtleSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHIoMSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydE11bHRpRHJhZ0VsZW1lbnRzKGNsb25lc0luc2VydGVkLCByb290RWwpIHtcbiAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCwgaSkge1xuICAgIHZhciB0YXJnZXQgPSByb290RWwuY2hpbGRyZW5bbXVsdGlEcmFnRWxlbWVudC5zb3J0YWJsZUluZGV4ICsgKGNsb25lc0luc2VydGVkID8gTnVtYmVyKGkpIDogMCldO1xuXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShtdWx0aURyYWdFbGVtZW50LCB0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwuYXBwZW5kQ2hpbGQobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cbi8qKlxuICogSW5zZXJ0IG11bHRpLWRyYWcgY2xvbmVzXG4gKiBAcGFyYW0gIHtbQm9vbGVhbl19IGVsZW1lbnRzSW5zZXJ0ZWQgIFdoZXRoZXIgdGhlIG11bHRpLWRyYWcgZWxlbWVudHMgYXJlIGluc2VydGVkXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gcm9vdEVsXG4gKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRNdWx0aURyYWdDbG9uZXMoZWxlbWVudHNJbnNlcnRlZCwgcm9vdEVsKSB7XG4gIG11bHRpRHJhZ0Nsb25lcy5mb3JFYWNoKGZ1bmN0aW9uIChjbG9uZSwgaSkge1xuICAgIHZhciB0YXJnZXQgPSByb290RWwuY2hpbGRyZW5bY2xvbmUuc29ydGFibGVJbmRleCArIChlbGVtZW50c0luc2VydGVkID8gTnVtYmVyKGkpIDogMCldO1xuXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShjbG9uZSwgdGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdEVsLmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVNdWx0aURyYWdFbGVtZW50cygpIHtcbiAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgIGlmIChtdWx0aURyYWdFbGVtZW50ID09PSBkcmFnRWwkMSkgcmV0dXJuO1xuICAgIG11bHRpRHJhZ0VsZW1lbnQucGFyZW50Tm9kZSAmJiBtdWx0aURyYWdFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobXVsdGlEcmFnRWxlbWVudCk7XG4gIH0pO1xufVxuXG5Tb3J0YWJsZS5tb3VudChuZXcgQXV0b1Njcm9sbFBsdWdpbigpKTtcblNvcnRhYmxlLm1vdW50KFJlbW92ZSwgUmV2ZXJ0KTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydGFibGU7XG5leHBvcnQgeyBNdWx0aURyYWdQbHVnaW4gYXMgTXVsdGlEcmFnLCBTb3J0YWJsZSwgU3dhcFBsdWdpbiBhcyBTd2FwIH07XG4iLCJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmltcG9ydCBTb3J0YWJsZSBmcm9tIFwic29ydGFibGVqc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbXBvbmVudCwgVHJhbnNpdGlvbkdyb3VwLCBkZWZpbmVDb21wb25lbnQsIGgsIG5leHRUaWNrIH0gZnJvbSBcInZ1ZVwiO1xuZnVuY3Rpb24gcmVtb3ZlTm9kZShub2RlKSB7XG4gIGlmIChub2RlLnBhcmVudEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICBub2RlLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydE5vZGVBdChmYXRoZXJOb2RlLCBub2RlLCBwb3NpdGlvbikge1xuICBjb25zdCByZWZOb2RlID0gcG9zaXRpb24gPT09IDAgPyBmYXRoZXJOb2RlLmNoaWxkcmVuWzBdIDogZmF0aGVyTm9kZS5jaGlsZHJlbltwb3NpdGlvbiAtIDFdLm5leHRTaWJsaW5nO1xuICBmYXRoZXJOb2RlLmluc2VydEJlZm9yZShub2RlLCByZWZOb2RlKTtcbn1cbmZ1bmN0aW9uIGdldENvbnNvbGUoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5jb25zb2xlO1xuICB9XG4gIHJldHVybiBnbG9iYWwuY29uc29sZTtcbn1cbmNvbnN0IGNvbnNvbGUkMSA9IGdldENvbnNvbGUoKTtcbmZ1bmN0aW9uIGNhY2hlZChmbikge1xuICBjb25zdCBjYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkRm4oc3RyKSB7XG4gICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XG4gIH07XG59XG5jb25zdCByZWdleCA9IC8tKFxcdykvZztcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVkKChzdHIpID0+IHN0ci5yZXBsYWNlKHJlZ2V4LCAoXywgYykgPT4gYy50b1VwcGVyQ2FzZSgpKSk7XG5jb25zdCBtYW5hZ2VBbmRFbWl0JDEgPSBbXCJTdGFydFwiLCBcIkFkZFwiLCBcIlJlbW92ZVwiLCBcIlVwZGF0ZVwiLCBcIkVuZFwiXTtcbmNvbnN0IGVtaXQkMSA9IFtcIkNob29zZVwiLCBcIlVuY2hvb3NlXCIsIFwiU29ydFwiLCBcIkZpbHRlclwiLCBcIkNsb25lXCJdO1xuY29uc3QgbWFuYWdlJDEgPSBbXCJNb3ZlXCJdO1xuY29uc3QgZXZlbnRIYW5kbGVyTmFtZXMgPSBbbWFuYWdlJDEsIG1hbmFnZUFuZEVtaXQkMSwgZW1pdCQxXS5mbGF0TWFwKChldmVudHMyKSA9PiBldmVudHMyKS5tYXAoKGV2dCkgPT4gYG9uJHtldnR9YCk7XG5jb25zdCBldmVudHMgPSB7XG4gIG1hbmFnZTogbWFuYWdlJDEsXG4gIG1hbmFnZUFuZEVtaXQ6IG1hbmFnZUFuZEVtaXQkMSxcbiAgZW1pdDogZW1pdCQxXG59O1xuZnVuY3Rpb24gaXNSZWFkT25seShldmVudE5hbWUpIHtcbiAgcmV0dXJuIGV2ZW50SGFuZGxlck5hbWVzLmluZGV4T2YoZXZlbnROYW1lKSAhPT0gLTE7XG59XG5jb25zdCB0YWdzID0gW1xuICBcImFcIixcbiAgXCJhYmJyXCIsXG4gIFwiYWRkcmVzc1wiLFxuICBcImFyZWFcIixcbiAgXCJhcnRpY2xlXCIsXG4gIFwiYXNpZGVcIixcbiAgXCJhdWRpb1wiLFxuICBcImJcIixcbiAgXCJiYXNlXCIsXG4gIFwiYmRpXCIsXG4gIFwiYmRvXCIsXG4gIFwiYmxvY2txdW90ZVwiLFxuICBcImJvZHlcIixcbiAgXCJiclwiLFxuICBcImJ1dHRvblwiLFxuICBcImNhbnZhc1wiLFxuICBcImNhcHRpb25cIixcbiAgXCJjaXRlXCIsXG4gIFwiY29kZVwiLFxuICBcImNvbFwiLFxuICBcImNvbGdyb3VwXCIsXG4gIFwiZGF0YVwiLFxuICBcImRhdGFsaXN0XCIsXG4gIFwiZGRcIixcbiAgXCJkZWxcIixcbiAgXCJkZXRhaWxzXCIsXG4gIFwiZGZuXCIsXG4gIFwiZGlhbG9nXCIsXG4gIFwiZGl2XCIsXG4gIFwiZGxcIixcbiAgXCJkdFwiLFxuICBcImVtXCIsXG4gIFwiZW1iZWRcIixcbiAgXCJmaWVsZHNldFwiLFxuICBcImZpZ2NhcHRpb25cIixcbiAgXCJmaWd1cmVcIixcbiAgXCJmb290ZXJcIixcbiAgXCJmb3JtXCIsXG4gIFwiaDFcIixcbiAgXCJoMlwiLFxuICBcImgzXCIsXG4gIFwiaDRcIixcbiAgXCJoNVwiLFxuICBcImg2XCIsXG4gIFwiaGVhZFwiLFxuICBcImhlYWRlclwiLFxuICBcImhncm91cFwiLFxuICBcImhyXCIsXG4gIFwiaHRtbFwiLFxuICBcImlcIixcbiAgXCJpZnJhbWVcIixcbiAgXCJpbWdcIixcbiAgXCJpbnB1dFwiLFxuICBcImluc1wiLFxuICBcImtiZFwiLFxuICBcImxhYmVsXCIsXG4gIFwibGVnZW5kXCIsXG4gIFwibGlcIixcbiAgXCJsaW5rXCIsXG4gIFwibWFpblwiLFxuICBcIm1hcFwiLFxuICBcIm1hcmtcIixcbiAgXCJtYXRoXCIsXG4gIFwibWVudVwiLFxuICBcIm1lbnVpdGVtXCIsXG4gIFwibWV0YVwiLFxuICBcIm1ldGVyXCIsXG4gIFwibmF2XCIsXG4gIFwibm9zY3JpcHRcIixcbiAgXCJvYmplY3RcIixcbiAgXCJvbFwiLFxuICBcIm9wdGdyb3VwXCIsXG4gIFwib3B0aW9uXCIsXG4gIFwib3V0cHV0XCIsXG4gIFwicFwiLFxuICBcInBhcmFtXCIsXG4gIFwicGljdHVyZVwiLFxuICBcInByZVwiLFxuICBcInByb2dyZXNzXCIsXG4gIFwicVwiLFxuICBcInJiXCIsXG4gIFwicnBcIixcbiAgXCJydFwiLFxuICBcInJ0Y1wiLFxuICBcInJ1YnlcIixcbiAgXCJzXCIsXG4gIFwic2FtcFwiLFxuICBcInNjcmlwdFwiLFxuICBcInNlY3Rpb25cIixcbiAgXCJzZWxlY3RcIixcbiAgXCJzbG90XCIsXG4gIFwic21hbGxcIixcbiAgXCJzb3VyY2VcIixcbiAgXCJzcGFuXCIsXG4gIFwic3Ryb25nXCIsXG4gIFwic3R5bGVcIixcbiAgXCJzdWJcIixcbiAgXCJzdW1tYXJ5XCIsXG4gIFwic3VwXCIsXG4gIFwic3ZnXCIsXG4gIFwidGFibGVcIixcbiAgXCJ0Ym9keVwiLFxuICBcInRkXCIsXG4gIFwidGVtcGxhdGVcIixcbiAgXCJ0ZXh0YXJlYVwiLFxuICBcInRmb290XCIsXG4gIFwidGhcIixcbiAgXCJ0aGVhZFwiLFxuICBcInRpbWVcIixcbiAgXCJ0aXRsZVwiLFxuICBcInRyXCIsXG4gIFwidHJhY2tcIixcbiAgXCJ1XCIsXG4gIFwidWxcIixcbiAgXCJ2YXJcIixcbiAgXCJ2aWRlb1wiLFxuICBcIndiclwiXG5dO1xuZnVuY3Rpb24gaXNIdG1sVGFnKG5hbWUpIHtcbiAgcmV0dXJuIHRhZ3MuaW5jbHVkZXMobmFtZSk7XG59XG5mdW5jdGlvbiBpc1RyYW5zaXRpb24obmFtZSkge1xuICByZXR1cm4gW1widHJhbnNpdGlvbi1ncm91cFwiLCBcIlRyYW5zaXRpb25Hcm91cFwiXS5pbmNsdWRlcyhuYW1lKTtcbn1cbmZ1bmN0aW9uIGlzSHRtbEF0dHJpYnV0ZSh2YWx1ZSkge1xuICByZXR1cm4gW1wiaWRcIiwgXCJjbGFzc1wiLCBcInJvbGVcIiwgXCJzdHlsZVwiXS5pbmNsdWRlcyh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aChcImRhdGEtXCIpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCJhcmlhLVwiKSB8fCB2YWx1ZS5zdGFydHNXaXRoKFwib25cIik7XG59XG5mdW5jdGlvbiBwcm9qZWN0KGVudHJpZXMpIHtcbiAgcmV0dXJuIGVudHJpZXMucmVkdWNlKChyZXMsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xufVxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50QXR0cmlidXRlcyh7ICRhdHRycywgY29tcG9uZW50RGF0YSA9IHt9IH0pIHtcbiAgY29uc3QgYXR0cmlidXRlcyA9IHByb2plY3QoT2JqZWN0LmVudHJpZXMoJGF0dHJzKS5maWx0ZXIoKFtrZXksIF9dKSA9PiBpc0h0bWxBdHRyaWJ1dGUoa2V5KSkpO1xuICByZXR1cm4gX19zcHJlYWRWYWx1ZXMoX19zcHJlYWRWYWx1ZXMoe30sIGF0dHJpYnV0ZXMpLCBjb21wb25lbnREYXRhKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNvcnRhYmxlT3B0aW9uKHsgJGF0dHJzLCBjYWxsQmFja0J1aWxkZXIgfSkge1xuICBjb25zdCBvcHRpb25zID0gcHJvamVjdChnZXRWYWxpZFNvcnRhYmxlRW50cmllcygkYXR0cnMpKTtcbiAgT2JqZWN0LmVudHJpZXMoY2FsbEJhY2tCdWlsZGVyKS5mb3JFYWNoKChbZXZlbnRUeXBlLCBldmVudEJ1aWxkZXJdKSA9PiB7XG4gICAgZXZlbnRzW2V2ZW50VHlwZV0uZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIG9wdGlvbnNbYG9uJHtldmVudH1gXSA9IGV2ZW50QnVpbGRlcihldmVudCk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBkcmFnZ2FibGUgPSBgW2RhdGEtZHJhZ2dhYmxlXSR7b3B0aW9ucy5kcmFnZ2FibGUgfHwgXCJcIn1gO1xuICByZXR1cm4gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgb3B0aW9ucyksIHtcbiAgICBkcmFnZ2FibGVcbiAgfSk7XG59XG5mdW5jdGlvbiBnZXRWYWxpZFNvcnRhYmxlRW50cmllcyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpLmZpbHRlcigoW2tleSwgX10pID0+ICFpc0h0bWxBdHRyaWJ1dGUoa2V5KSkubWFwKChba2V5LCB2YWx1ZTJdKSA9PiBbY2FtZWxpemUoa2V5KSwgdmFsdWUyXSkuZmlsdGVyKChba2V5LCBfXSkgPT4gIWlzUmVhZE9ubHkoa2V5KSk7XG59XG5jb25zdCBnZXRIdG1sRWxlbWVudEZyb21Ob2RlID0gKG5vZGUpID0+IHtcbiAgY29uc3QgZWwgPSBub2RlLmVsIHx8IEFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikgJiYgbm9kZS5jaGlsZHJlblswXS5lbC5wYXJlbnROb2RlO1xuICBpZiAoIWVsKSB7XG4gICAgY29uc29sZS5lcnJvcihcIlxcdTRGN0ZcXHU3NTI4IHRyYW5zaXRpb24tZ3JvdXAgLCBcXHU5NzAwXFx1ODk4MVxcdTU3MjhzbG90XFx1NEUyRHRlbXBsYXRlXFx1NTE4NVxcdTgxRjNcXHU1QzExMlxcdTVDNDJodG1sXFx1NjgwN1xcdTdCN0VcIik7XG4gIH1cbiAgcmV0dXJuIGVsIHx8IHt9O1xufTtcbmNvbnN0IGFkZENvbnRleHQgPSAoZG9tRWxlbWVudCwgY29udGV4dCkgPT4gZG9tRWxlbWVudC5fX2RyYWdnYWJsZV9jb250ZXh0ID0gY29udGV4dDtcbmNvbnN0IGdldENvbnRleHQgPSAoZG9tRWxlbWVudCkgPT4gZG9tRWxlbWVudC5fX2RyYWdnYWJsZV9jb250ZXh0O1xuY2xhc3MgQ29tcG9uZW50U3RydWN0dXJlIHtcbiAgY29uc3RydWN0b3Ioe1xuICAgIG5vZGVzOiB7IGhlYWRlciwgZGVmYXVsdDogZGVmYXVsdE5vZGVzLCBmb290ZXIgfSxcbiAgICByb290LFxuICAgIHJlYWxMaXN0XG4gIH0pIHtcbiAgICB0aGlzLmRlZmF1bHROb2RlcyA9IGRlZmF1bHROb2RlcztcbiAgICB0aGlzLmNoaWxkcmVuID0gWy4uLmhlYWRlciwgLi4uZGVmYXVsdE5vZGVzLCAuLi5mb290ZXJdO1xuICAgIHRoaXMuZXh0ZXJuYWxDb21wb25lbnQgPSByb290LmV4dGVybmFsQ29tcG9uZW50O1xuICAgIHRoaXMucm9vdFRyYW5zaXRpb24gPSByb290LnRyYW5zaXRpb247XG4gICAgdGhpcy50YWcgPSByb290LnRhZztcbiAgICB0aGlzLnJlYWxMaXN0ID0gcmVhbExpc3Q7XG4gIH1cbiAgZ2V0IF9pc1Jvb3RDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZXJuYWxDb21wb25lbnQgfHwgdGhpcy5yb290VHJhbnNpdGlvbjtcbiAgfVxuICByZW5kZXIoaDIsIGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCB7IHRhZywgY2hpbGRyZW4sIF9pc1Jvb3RDb21wb25lbnQgfSA9IHRoaXM7XG4gICAgY29uc3Qgb3B0aW9uID0gIV9pc1Jvb3RDb21wb25lbnQgPyBjaGlsZHJlbiA6IHsgZGVmYXVsdDogKCkgPT4gY2hpbGRyZW4gfTtcbiAgICByZXR1cm4gaDIodGFnLCBhdHRyaWJ1dGVzLCBvcHRpb24pO1xuICB9XG4gIHVwZGF0ZWQoKSB7XG4gICAgY29uc3QgeyBkZWZhdWx0Tm9kZXMsIHJlYWxMaXN0IH0gPSB0aGlzO1xuICAgIGRlZmF1bHROb2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgYWRkQ29udGV4dChnZXRIdG1sRWxlbWVudEZyb21Ob2RlKG5vZGUpLCB7XG4gICAgICAgIGVsZW1lbnQ6IHJlYWxMaXN0W2luZGV4XSxcbiAgICAgICAgaW5kZXhcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGdldFVuZGVybHlpbmdWbShkb21FbGVtZW50KSB7XG4gICAgcmV0dXJuIGdldENvbnRleHQoZG9tRWxlbWVudCk7XG4gIH1cbiAgZ2V0Vm1JbmRleEZyb21Eb21JbmRleChkb21JbmRleCwgZWxlbWVudCkge1xuICAgIGNvbnN0IHsgZGVmYXVsdE5vZGVzIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBkZWZhdWx0Tm9kZXM7XG4gICAgY29uc3QgZG9tQ2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuO1xuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSBkb21DaGlsZHJlbi5pdGVtKGRvbUluZGV4KTtcbiAgICBpZiAoZG9tRWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dCA9IGdldENvbnRleHQoZG9tRWxlbWVudCk7XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmluZGV4O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgZmlyc3REb21MaXN0RWxlbWVudCA9IGdldEh0bWxFbGVtZW50RnJvbU5vZGUoZGVmYXVsdE5vZGVzWzBdKTtcbiAgICBjb25zdCBpbmRleEZpcnN0RG9tTGlzdEVsZW1lbnQgPSBbLi4uZG9tQ2hpbGRyZW5dLmZpbmRJbmRleCgoZWxlbWVudDIpID0+IGVsZW1lbnQyID09PSBmaXJzdERvbUxpc3RFbGVtZW50KTtcbiAgICByZXR1cm4gZG9tSW5kZXggPCBpbmRleEZpcnN0RG9tTGlzdEVsZW1lbnQgPyAwIDogbGVuZ3RoO1xuICB9XG59XG5mdW5jdGlvbiBnZXRTbG90KHNsb3RzLCBrZXkpIHtcbiAgY29uc3Qgc2xvdFZhbHVlID0gc2xvdHNba2V5XTtcbiAgcmV0dXJuIHNsb3RWYWx1ZSA/IHNsb3RWYWx1ZSgpIDogW107XG59XG5mdW5jdGlvbiBjb21wdXRlTm9kZXMoeyAkc2xvdHMsIHJlYWxMaXN0LCBnZXRLZXkgfSkge1xuICBjb25zdCBub3JtYWxpemVkTGlzdCA9IHJlYWxMaXN0IHx8IFtdO1xuICBjb25zdCBbaGVhZGVyLCBmb290ZXJdID0gW1wiaGVhZGVyXCIsIFwiZm9vdGVyXCJdLm1hcCgobmFtZSkgPT4gZ2V0U2xvdCgkc2xvdHMsIG5hbWUpKTtcbiAgY29uc3QgeyBpdGVtIH0gPSAkc2xvdHM7XG4gIGlmICghaXRlbSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImRyYWdnYWJsZSBlbGVtZW50IG11c3QgaGF2ZSBhbiBpdGVtIHNsb3RcIik7XG4gIH1cbiAgY29uc3QgZGVmYXVsdE5vZGVzID0gbm9ybWFsaXplZExpc3QuZmxhdE1hcCgoZWxlbWVudCwgaW5kZXgpID0+IGl0ZW0oeyBlbGVtZW50LCBpbmRleCB9KS5tYXAoKG5vZGUpID0+IHtcbiAgICBub2RlLmtleSA9IGdldEtleShlbGVtZW50KTtcbiAgICBub2RlLnByb3BzID0gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgbm9kZS5wcm9wcyB8fCB7fSksIHsgXCJkYXRhLWRyYWdnYWJsZVwiOiB0cnVlIH0pO1xuICAgIHJldHVybiBub2RlO1xuICB9KSk7XG4gIGlmIChkZWZhdWx0Tm9kZXMubGVuZ3RoICE9PSBub3JtYWxpemVkTGlzdC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJdGVtIHNsb3QgbXVzdCBoYXZlIG9ubHkgb25lIGNoaWxkXCIpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGVhZGVyLFxuICAgIGZvb3RlcixcbiAgICBkZWZhdWx0OiBkZWZhdWx0Tm9kZXNcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJvb3RJbmZvcm1hdGlvbih0YWcpIHtcbiAgY29uc3QgdHJhbnNpdGlvbiA9IGlzVHJhbnNpdGlvbih0YWcpO1xuICBjb25zdCBleHRlcm5hbENvbXBvbmVudCA9ICFpc0h0bWxUYWcodGFnKSAmJiAhdHJhbnNpdGlvbjtcbiAgcmV0dXJuIHtcbiAgICB0cmFuc2l0aW9uLFxuICAgIGV4dGVybmFsQ29tcG9uZW50LFxuICAgIHRhZzogZXh0ZXJuYWxDb21wb25lbnQgPyByZXNvbHZlQ29tcG9uZW50KHRhZykgOiB0cmFuc2l0aW9uID8gVHJhbnNpdGlvbkdyb3VwIDogdGFnXG4gIH07XG59XG5mdW5jdGlvbiBjb21wdXRlQ29tcG9uZW50U3RydWN0dXJlKHsgJHNsb3RzLCB0YWcsIHJlYWxMaXN0LCBnZXRLZXkgfSkge1xuICBjb25zdCBub2RlcyA9IGNvbXB1dGVOb2Rlcyh7ICRzbG90cywgcmVhbExpc3QsIGdldEtleSB9KTtcbiAgY29uc3Qgcm9vdCA9IGdldFJvb3RJbmZvcm1hdGlvbih0YWcpO1xuICByZXR1cm4gbmV3IENvbXBvbmVudFN0cnVjdHVyZSh7IG5vZGVzLCByb290LCByZWFsTGlzdCB9KTtcbn1cbmZ1bmN0aW9uIGVtaXQoZXZ0TmFtZSwgZXZ0RGF0YSkge1xuICBuZXh0VGljaygoKSA9PiB0aGlzLiRlbWl0KGV2dE5hbWUudG9Mb3dlckNhc2UoKSwgZXZ0RGF0YSkpO1xufVxuZnVuY3Rpb24gbWFuYWdlKGV2dE5hbWUpIHtcbiAgcmV0dXJuIChldnREYXRhLCBvcmlnaW5hbEVsZW1lbnQpID0+IHtcbiAgICBpZiAodGhpcy5yZWFsTGlzdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXNbYG9uRHJhZyR7ZXZ0TmFtZX1gXShldnREYXRhLCBvcmlnaW5hbEVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIG1hbmFnZUFuZEVtaXQoZXZ0TmFtZSkge1xuICBjb25zdCBkZWxlZ2F0ZUNhbGxCYWNrID0gbWFuYWdlLmNhbGwodGhpcywgZXZ0TmFtZSk7XG4gIHJldHVybiAoZXZ0RGF0YSwgb3JpZ2luYWxFbGVtZW50KSA9PiB7XG4gICAgZGVsZWdhdGVDYWxsQmFjay5jYWxsKHRoaXMsIGV2dERhdGEsIG9yaWdpbmFsRWxlbWVudCk7XG4gICAgZW1pdC5jYWxsKHRoaXMsIGV2dE5hbWUsIGV2dERhdGEpO1xuICB9O1xufVxubGV0IGRyYWdnaW5nRWxlbWVudCA9IG51bGw7XG5jb25zdCBwcm9wcyA9IHtcbiAgbGlzdDoge1xuICAgIHR5cGU6IEFycmF5LFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG1vZGVsVmFsdWU6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBpdGVtS2V5OiB7XG4gICAgdHlwZTogW1N0cmluZywgRnVuY3Rpb25dLFxuICAgIHJlcXVpcmVkOiB0cnVlXG4gIH0sXG4gIGNsb25lOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogKG9yaWdpbmFsKSA9PiB7XG4gICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgfVxuICB9LFxuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJkaXZcIlxuICB9LFxuICBtb3ZlOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBjb21wb25lbnREYXRhOiB7XG4gICAgdHlwZTogT2JqZWN0LFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07XG5jb25zdCBlbWl0cyA9IFtcbiAgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLFxuICBcImNoYW5nZVwiLFxuICAuLi5bLi4uZXZlbnRzLm1hbmFnZUFuZEVtaXQsIC4uLmV2ZW50cy5lbWl0XS5tYXAoKGV2dCkgPT4gZXZ0LnRvTG93ZXJDYXNlKCkpXG5dO1xuY29uc3QgZHJhZ2dhYmxlQ29tcG9uZW50ID0gZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJkcmFnZ2FibGVcIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHMsXG4gIGVtaXRzLFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9LFxuICByZW5kZXIoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHsgJHNsb3RzLCAkYXR0cnMsIHRhZywgY29tcG9uZW50RGF0YSwgcmVhbExpc3QsIGdldEtleSB9ID0gdGhpcztcbiAgICAgIGNvbnN0IGNvbXBvbmVudFN0cnVjdHVyZSA9IGNvbXB1dGVDb21wb25lbnRTdHJ1Y3R1cmUoe1xuICAgICAgICAkc2xvdHMsXG4gICAgICAgIHRhZyxcbiAgICAgICAgcmVhbExpc3QsXG4gICAgICAgIGdldEtleVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBvbmVudFN0cnVjdHVyZSA9IGNvbXBvbmVudFN0cnVjdHVyZTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBnZXRDb21wb25lbnRBdHRyaWJ1dGVzKHsgJGF0dHJzLCBjb21wb25lbnREYXRhIH0pO1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFN0cnVjdHVyZS5yZW5kZXIoaCwgYXR0cmlidXRlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybiBoKFwicHJlXCIsIHsgc3R5bGU6IHsgY29sb3I6IFwicmVkXCIgfSB9LCBlcnIuc3RhY2spO1xuICAgIH1cbiAgfSxcbiAgY3JlYXRlZCgpIHtcbiAgICBpZiAodGhpcy5saXN0ICE9PSBudWxsICYmIHRoaXMubW9kZWxWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgY29uc29sZSQxLmVycm9yKFwibW9kZWxWYWx1ZSBhbmQgbGlzdCBwcm9wcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlISBQbGVhc2Ugc2V0IG9uZSBvciBhbm90aGVyLlwiKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyAkYXR0cnMsICRlbCwgY29tcG9uZW50U3RydWN0dXJlIH0gPSB0aGlzO1xuICAgIGNvbXBvbmVudFN0cnVjdHVyZS51cGRhdGVkKCk7XG4gICAgY29uc3Qgc29ydGFibGVPcHRpb25zID0gY3JlYXRlU29ydGFibGVPcHRpb24oe1xuICAgICAgJGF0dHJzLFxuICAgICAgY2FsbEJhY2tCdWlsZGVyOiB7XG4gICAgICAgIG1hbmFnZUFuZEVtaXQ6IChldmVudCkgPT4gbWFuYWdlQW5kRW1pdC5jYWxsKHRoaXMsIGV2ZW50KSxcbiAgICAgICAgZW1pdDogKGV2ZW50KSA9PiBlbWl0LmJpbmQodGhpcywgZXZlbnQpLFxuICAgICAgICBtYW5hZ2U6IChldmVudCkgPT4gbWFuYWdlLmNhbGwodGhpcywgZXZlbnQpXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0RG9tRWxlbWVudCA9ICRlbC5ub2RlVHlwZSA9PT0gMSA/ICRlbCA6ICRlbC5wYXJlbnRFbGVtZW50O1xuICAgIHRoaXMuX3NvcnRhYmxlID0gbmV3IFNvcnRhYmxlKHRhcmdldERvbUVsZW1lbnQsIHNvcnRhYmxlT3B0aW9ucyk7XG4gICAgdGhpcy50YXJnZXREb21FbGVtZW50ID0gdGFyZ2V0RG9tRWxlbWVudDtcbiAgICB0YXJnZXREb21FbGVtZW50Ll9fZHJhZ2dhYmxlX2NvbXBvbmVudF9fID0gdGhpcztcbiAgfSxcbiAgdXBkYXRlZCgpIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0cnVjdHVyZS51cGRhdGVkKCk7XG4gIH0sXG4gIGJlZm9yZVVubW91bnQoKSB7XG4gICAgaWYgKHRoaXMuX3NvcnRhYmxlICE9PSB2b2lkIDApXG4gICAgICB0aGlzLl9zb3J0YWJsZS5kZXN0cm95KCk7XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgcmVhbExpc3QoKSB7XG4gICAgICBjb25zdCB7IGxpc3QgfSA9IHRoaXM7XG4gICAgICByZXR1cm4gbGlzdCA/IGxpc3QgOiB0aGlzLm1vZGVsVmFsdWU7XG4gICAgfSxcbiAgICBnZXRLZXkoKSB7XG4gICAgICBjb25zdCB7IGl0ZW1LZXkgfSA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGl0ZW1LZXkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlbUtleTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoZWxlbWVudCkgPT4gZWxlbWVudFtpdGVtS2V5XTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgJGF0dHJzOiB7XG4gICAgICBoYW5kbGVyKG5ld09wdGlvblZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHsgX3NvcnRhYmxlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIV9zb3J0YWJsZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGdldFZhbGlkU29ydGFibGVFbnRyaWVzKG5ld09wdGlvblZhbHVlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBfc29ydGFibGUub3B0aW9uKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBkZWVwOiB0cnVlXG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0VW5kZXJseWluZ1ZtKGRvbUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0cnVjdHVyZS5nZXRVbmRlcmx5aW5nVm0oZG9tRWxlbWVudCkgfHwgbnVsbDtcbiAgICB9LFxuICAgIGdldFVuZGVybHlpbmdQb3RlbmNpYWxEcmFnZ2FibGVDb21wb25lbnQoaHRtRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGh0bUVsZW1lbnQuX19kcmFnZ2FibGVfY29tcG9uZW50X187XG4gICAgfSxcbiAgICBlbWl0Q2hhbmdlcyhldnQpIHtcbiAgICAgIG5leHRUaWNrKCgpID0+IHRoaXMuJGVtaXQoXCJjaGFuZ2VcIiwgZXZ0KSk7XG4gICAgfSxcbiAgICBhbHRlckxpc3Qob25MaXN0KSB7XG4gICAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICAgIG9uTGlzdCh0aGlzLmxpc3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLnRoaXMubW9kZWxWYWx1ZV07XG4gICAgICBvbkxpc3QobmV3TGlzdCk7XG4gICAgICB0aGlzLiRlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgbmV3TGlzdCk7XG4gICAgfSxcbiAgICBzcGxpY2VMaXN0KCkge1xuICAgICAgY29uc3Qgc3BsaWNlTGlzdCA9IChsaXN0KSA9PiBsaXN0LnNwbGljZSguLi5hcmd1bWVudHMpO1xuICAgICAgdGhpcy5hbHRlckxpc3Qoc3BsaWNlTGlzdCk7XG4gICAgfSxcbiAgICB1cGRhdGVQb3NpdGlvbihvbGRJbmRleCwgbmV3SW5kZXgpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVBvc2l0aW9uID0gKGxpc3QpID0+IGxpc3Quc3BsaWNlKG5ld0luZGV4LCAwLCBsaXN0LnNwbGljZShvbGRJbmRleCwgMSlbMF0pO1xuICAgICAgdGhpcy5hbHRlckxpc3QodXBkYXRlUG9zaXRpb24pO1xuICAgIH0sXG4gICAgZ2V0UmVsYXRlZENvbnRleHRGcm9tTW92ZUV2ZW50KHsgdG8sIHJlbGF0ZWQgfSkge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5nZXRVbmRlcmx5aW5nUG90ZW5jaWFsRHJhZ2dhYmxlQ29tcG9uZW50KHRvKTtcbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybiB7IGNvbXBvbmVudCB9O1xuICAgICAgfVxuICAgICAgY29uc3QgbGlzdCA9IGNvbXBvbmVudC5yZWFsTGlzdDtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7IGxpc3QsIGNvbXBvbmVudCB9O1xuICAgICAgaWYgKHRvICE9PSByZWxhdGVkICYmIGxpc3QpIHtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBjb21wb25lbnQuZ2V0VW5kZXJseWluZ1ZtKHJlbGF0ZWQpIHx8IHt9O1xuICAgICAgICByZXR1cm4gX19zcHJlYWRWYWx1ZXMoX19zcHJlYWRWYWx1ZXMoe30sIGRlc3RpbmF0aW9uKSwgY29udGV4dCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9LFxuICAgIGdldFZtSW5kZXhGcm9tRG9tSW5kZXgoZG9tSW5kZXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0cnVjdHVyZS5nZXRWbUluZGV4RnJvbURvbUluZGV4KGRvbUluZGV4LCB0aGlzLnRhcmdldERvbUVsZW1lbnQpO1xuICAgIH0sXG4gICAgb25EcmFnU3RhcnQoZXZ0KSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmdldFVuZGVybHlpbmdWbShldnQuaXRlbSk7XG4gICAgICBldnQuaXRlbS5fdW5kZXJseWluZ192bV8gPSB0aGlzLmNsb25lKHRoaXMuY29udGV4dC5lbGVtZW50KTtcbiAgICAgIGRyYWdnaW5nRWxlbWVudCA9IGV2dC5pdGVtO1xuICAgIH0sXG4gICAgb25EcmFnQWRkKGV2dCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGV2dC5pdGVtLl91bmRlcmx5aW5nX3ZtXztcbiAgICAgIGlmIChlbGVtZW50ID09PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVtb3ZlTm9kZShldnQuaXRlbSk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuZ2V0Vm1JbmRleEZyb21Eb21JbmRleChldnQubmV3SW5kZXgpO1xuICAgICAgdGhpcy5zcGxpY2VMaXN0KG5ld0luZGV4LCAwLCBlbGVtZW50KTtcbiAgICAgIGNvbnN0IGFkZGVkID0geyBlbGVtZW50LCBuZXdJbmRleCB9O1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlcyh7IGFkZGVkIH0pO1xuICAgIH0sXG4gICAgb25EcmFnUmVtb3ZlKGV2dCkge1xuICAgICAgaW5zZXJ0Tm9kZUF0KHRoaXMuJGVsLCBldnQuaXRlbSwgZXZ0Lm9sZEluZGV4KTtcbiAgICAgIGlmIChldnQucHVsbE1vZGUgPT09IFwiY2xvbmVcIikge1xuICAgICAgICByZW1vdmVOb2RlKGV2dC5jbG9uZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgaW5kZXg6IG9sZEluZGV4LCBlbGVtZW50IH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICB0aGlzLnNwbGljZUxpc3Qob2xkSW5kZXgsIDEpO1xuICAgICAgY29uc3QgcmVtb3ZlZCA9IHsgZWxlbWVudCwgb2xkSW5kZXggfTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZXMoeyByZW1vdmVkIH0pO1xuICAgIH0sXG4gICAgb25EcmFnVXBkYXRlKGV2dCkge1xuICAgICAgcmVtb3ZlTm9kZShldnQuaXRlbSk7XG4gICAgICBpbnNlcnROb2RlQXQoZXZ0LmZyb20sIGV2dC5pdGVtLCBldnQub2xkSW5kZXgpO1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSB0aGlzLmNvbnRleHQuaW5kZXg7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuZ2V0Vm1JbmRleEZyb21Eb21JbmRleChldnQubmV3SW5kZXgpO1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbihvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgY29uc3QgbW92ZWQgPSB7IGVsZW1lbnQ6IHRoaXMuY29udGV4dC5lbGVtZW50LCBvbGRJbmRleCwgbmV3SW5kZXggfTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZXMoeyBtb3ZlZCB9KTtcbiAgICB9LFxuICAgIGNvbXB1dGVGdXR1cmVJbmRleChyZWxhdGVkQ29udGV4dCwgZXZ0KSB7XG4gICAgICBpZiAoIXJlbGF0ZWRDb250ZXh0LmVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBjb25zdCBkb21DaGlsZHJlbiA9IFsuLi5ldnQudG8uY2hpbGRyZW5dLmZpbHRlcigoZWwpID0+IGVsLnN0eWxlW1wiZGlzcGxheVwiXSAhPT0gXCJub25lXCIpO1xuICAgICAgY29uc3QgY3VycmVudERvbUluZGV4ID0gZG9tQ2hpbGRyZW4uaW5kZXhPZihldnQucmVsYXRlZCk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSByZWxhdGVkQ29udGV4dC5jb21wb25lbnQuZ2V0Vm1JbmRleEZyb21Eb21JbmRleChjdXJyZW50RG9tSW5kZXgpO1xuICAgICAgY29uc3QgZHJhZ2dlZEluTGlzdCA9IGRvbUNoaWxkcmVuLmluZGV4T2YoZHJhZ2dpbmdFbGVtZW50KSAhPT0gLTE7XG4gICAgICByZXR1cm4gZHJhZ2dlZEluTGlzdCB8fCAhZXZ0LndpbGxJbnNlcnRBZnRlciA/IGN1cnJlbnRJbmRleCA6IGN1cnJlbnRJbmRleCArIDE7XG4gICAgfSxcbiAgICBvbkRyYWdNb3ZlKGV2dCwgb3JpZ2luYWxFdmVudCkge1xuICAgICAgY29uc3QgeyBtb3ZlLCByZWFsTGlzdCB9ID0gdGhpcztcbiAgICAgIGlmICghbW92ZSB8fCAhcmVhbExpc3QpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZWxhdGVkQ29udGV4dCA9IHRoaXMuZ2V0UmVsYXRlZENvbnRleHRGcm9tTW92ZUV2ZW50KGV2dCk7XG4gICAgICBjb25zdCBmdXR1cmVJbmRleCA9IHRoaXMuY29tcHV0ZUZ1dHVyZUluZGV4KHJlbGF0ZWRDb250ZXh0LCBldnQpO1xuICAgICAgY29uc3QgZHJhZ2dlZENvbnRleHQgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCB0aGlzLmNvbnRleHQpLCB7XG4gICAgICAgIGZ1dHVyZUluZGV4XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlbmRFdmVudCA9IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIGV2dCksIHtcbiAgICAgICAgcmVsYXRlZENvbnRleHQsXG4gICAgICAgIGRyYWdnZWRDb250ZXh0XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtb3ZlKHNlbmRFdmVudCwgb3JpZ2luYWxFdmVudCk7XG4gICAgfSxcbiAgICBvbkRyYWdFbmQoKSB7XG4gICAgICBkcmFnZ2luZ0VsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxufSk7XG5leHBvcnQgeyBkcmFnZ2FibGVDb21wb25lbnQgYXMgZGVmYXVsdCB9O1xuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLmJ1dHRvbkdyb3VwLm5hbWVcIiBjbGFzcz1cImZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlclwiPlxuICAgIDxmcy1idXR0b25cbiAgICAgIHYtZm9yPVwib3B0aW9uIG9mIG9wdGlvbnNcIlxuICAgICAgOmtleT1cIm9wdGlvbi5pY29uXCJcbiAgICAgIDp0eXBlPVwibW9kZWxWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gJ3ByaW1hcnknIDogJ2RlZmF1bHQnXCJcbiAgICAgIDppY29uPVwib3B0aW9uLmljb25cIlxuICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgIEBjbGljaz1cInN1Ym1pdChvcHRpb24udmFsdWUpXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCByZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi8uLi8uLi91c2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1RhYmxlQ29sdW1uc0ZpeGVkQ29udHJvbGxlclwiLFxuICBwcm9wczoge1xuICAgIG1vZGVsVmFsdWU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBlbWl0czogW1widXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJjaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFwibGVmdFwiLFxuICAgICAgICAgIGljb246IHVpLmljb25zLmxlZnQgLy8gJ2VsLWljb24tYXJyb3ctbGVmdCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5jbG9zZSAvLyAnZWwtaWNvbi1jbG9zZSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBcInJpZ2h0XCIsXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMucmlnaHQgLy8gJ2VsLWljb24tYXJyb3ctcmlnaHQnXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBzdWJtaXQodmFsdWU6IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzdWJtaXRcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXIge1xuICAuZnMtYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAycHggIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgbWluLWhlaWdodDogYXV0bztcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b25Hcm91cC5uYW1lXCIgY2xhc3M9XCJmcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXJcIj5cbiAgICA8ZnMtYnV0dG9uXG4gICAgICB2LWZvcj1cIm9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgIDprZXk9XCJvcHRpb24uaWNvblwiXG4gICAgICA6dHlwZT1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J1wiXG4gICAgICA6aWNvbj1cIm9wdGlvbi5pY29uXCJcbiAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICBAY2xpY2s9XCJzdWJtaXQob3B0aW9uLnZhbHVlKVwiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNUYWJsZUNvbHVtbnNGaXhlZENvbnRyb2xsZXJcIixcbiAgcHJvcHM6IHtcbiAgICBtb2RlbFZhbHVlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBvcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBcImxlZnRcIixcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5sZWZ0IC8vICdlbC1pY29uLWFycm93LWxlZnQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMuY2xvc2UgLy8gJ2VsLWljb24tY2xvc2UnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogXCJyaWdodFwiLFxuICAgICAgICAgIGljb246IHVpLmljb25zLnJpZ2h0IC8vICdlbC1pY29uLWFycm93LXJpZ2h0J1xuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gc3VibWl0KHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBvcHRpb25zLFxuICAgICAgc3VibWl0XG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyIHtcbiAgLmZzLWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIG1pbi1oZWlnaHQ6IGF1dG87XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkcmFnZ2FibGUgOmxpc3Q9XCJjb2x1bW5zXCIgaXRlbS1rZXk9XCJrZXlcIiA6bW92ZT1cIm9uRHJhZ2dhYmxlTW92ZVwiPlxuICAgIDx0ZW1wbGF0ZSAjaXRlbT1cInsgZWxlbWVudCwgaW5kZXggfVwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtc2hvdz1cIm9yaWdpbmFsQ29sdW1uc01hcFtlbGVtZW50Ll9fa2V5XT8uX19zaG93ICE9PSBmYWxzZVwiXG4gICAgICAgICAgOnRpdGxlPVwiYnVpbGRUZXh0KGVsZW1lbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC0tbGlzdC1pdGVtXCJcbiAgICAgICAgICBmbGV4PVwibWFpbjpqdXN0aWZ5IGNyb3NzOmNlbnRlclwiXG4gICAgICAgICAgOmk9XCJpbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICA6aXM9XCJ1aS5jaGVja2JveC5uYW1lXCJcbiAgICAgICAgICAgIDpbdWkuY2hlY2tib3gubW9kZWxWYWx1ZV09XCJlbGVtZW50LnNob3dcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwib3JpZ2luYWxDb2x1bW5zTWFwW2VsZW1lbnQuX19rZXldPy5fX2Rpc2FibGVkID09PSB0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1sYWJlbFwiXG4gICAgICAgICAgICA6dGl0bGU9XCJidWlsZFRleHQoZWxlbWVudClcIlxuICAgICAgICAgICAgQFtidWlsZFVwZGF0ZUtleSh1aS5jaGVja2JveC5tb2RlbFZhbHVlKV09XCJ1cGRhdGVDaGVja2VkKGVsZW1lbnQpXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJvbkNoZWNrQ2hhbmdlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYnVpbGRUZXh0KGVsZW1lbnQpIH19XG4gICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tcmlnaHRcIj5cbiAgICAgICAgICAgIDxmcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXJcbiAgICAgICAgICAgICAgdi1pZj1cImlzUm9vdFwiXG4gICAgICAgICAgICAgIHYtbW9kZWw9XCJlbGVtZW50LmZpeGVkXCJcbiAgICAgICAgICAgICAgZmxleC1ib3g9XCIwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkMi1tci0xMFwiXG4gICAgICAgICAgICAgIEBjaGFuZ2U9XCJmaXhlZENoYW5nZShpbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBmbGV4LWJveD1cIjBcIiBjbGFzcz1cImNvbXBvbmVudC0tbGlzdC1pdGVtLWhhbmRsZSBoYW5kbGVcIj5cbiAgICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJ1aS5pY29ucy5zb3J0XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4OyBwYWRkaW5nLWxlZnQ6IDEwcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2VlZVwiPlxuICAgICAgICAgIDxmcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3RcbiAgICAgICAgICAgIHYtaWY9XCJlbGVtZW50LmNoaWxkcmVuXCJcbiAgICAgICAgICAgIDpjb2x1bW5zPVwiZWxlbWVudC5jaGlsZHJlblwiXG4gICAgICAgICAgICBAY2hlY2stY2hhbmdlZD1cIm9uQ2hlY2tDaGFuZ2VkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZHJhZ2dhYmxlPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4vL+S4jeimgeWIoFxuLy9AdHMtaWdub3JlXG5pbXBvcnQgZHJhZ2dhYmxlIGZyb20gXCJ2dWVkcmFnZ2FibGUtZXNcIjtcbmltcG9ydCBGc1RhYmxlQ29sdW1uc0ZpeGVkQ29udHJvbGxlciBmcm9tIFwiLi9mcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXIvaW5kZXgudnVlXCI7XG5pbXBvcnQgeyBDb2x1bW5zRmlsdGVyQ29udGV4dCwgQ29sdW1uc0ZpbHRlckl0ZW0sIENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5IH0gZnJvbSBcIi4uLy4uLy4uL2RcIjtcbmltcG9ydCB7IGluamVjdCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XG5cbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5jb25zdCBlbWl0cyA9IGRlZmluZUVtaXRzKFtcImNoZWNrLWNoYW5nZWRcIiwgXCJmaXhlZC1jaGFuZ2VkXCJdKTtcbnR5cGUgTmVzdExpc3RQcm9wcyA9IHtcbiAgY29sdW1uczogQ29sdW1uc0ZpbHRlckl0ZW1bXTtcbiAgaXNSb290PzogYm9vbGVhbjtcbn07XG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxOZXN0TGlzdFByb3BzPigpLCB7XG4gIGlzUm9vdDogZmFsc2Vcbn0pO1xuY29uc3QgeyBvcmlnaW5hbENvbHVtbnMsIGN1cnJlbnRDb2x1bW5zLCBvcmlnaW5hbENvbHVtbnNNYXAsIHRleHQsIGFjdGl2ZSB9ID1cbiAgaW5qZWN0PENvbHVtbnNGaWx0ZXJDb250ZXh0PihDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSk7XG5mdW5jdGlvbiBidWlsZFRleHQoZWxlbWVudDogYW55KSB7XG4gIHJldHVybiBlbGVtZW50LmxhYmVsIHx8IGVsZW1lbnQudGl0bGUgfHwgZWxlbWVudC5rZXkgfHwgdGV4dC52YWx1ZS51bm5hbWVkO1xufVxuXG5mdW5jdGlvbiBvbkRyYWdnYWJsZU1vdmUoZTogYW55KSB7XG4gIGNvbnN0IGRyYWdlZCA9IGUuZHJhZ2dlZENvbnRleHQuZWxlbWVudDtcbiAgY29uc3QgdGFyZ2V0ID0gZS5yZWxhdGVkQ29udGV4dC5lbGVtZW50O1xuICBjb25zdCBzb3J0ZWQ6IENvbHVtbnNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGN1cnJlbnRDb2x1bW5zLnZhbHVlKSB7XG4gICAgaWYgKGl0ZW0ua2V5ID09PSBkcmFnZWQua2V5KSB7XG4gICAgICBzb3J0ZWQucHVzaCh0YXJnZXQpO1xuICAgIH0gZWxzZSBpZiAoaXRlbS5rZXkgPT09IHRhcmdldC5rZXkpIHtcbiAgICAgIHNvcnRlZC5wdXNoKGRyYWdlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNvcnRlZC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuICAvL+eci2tleeeahOaOkuWIl+aYr+WQpuato+W4uFxuICBsZXQgbGVmdEluZGV4ID0gMDtcbiAgbGV0IHJpZ2h0SW5kZXggPSBzb3J0ZWQubGVuZ3RoIC0gMTtcbiAgbGV0IG1pbk5vdEluZGV4ID0gc29ydGVkLmxlbmd0aCAtIDE7XG4gIGxldCBtYXhOb3RJbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaXRlbSA9IHNvcnRlZFtpXTtcbiAgICBpZiAoaXRlbS5maXhlZCA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIGxlZnRJbmRleCA9IGk7XG4gICAgfSBlbHNlIGlmIChpdGVtLmZpeGVkID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIHJpZ2h0SW5kZXggPSByaWdodEluZGV4ID4gaSA/IGkgOiByaWdodEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW5Ob3RJbmRleCA9IG1pbk5vdEluZGV4ID4gaSA/IGkgOiBtaW5Ob3RJbmRleDtcbiAgICAgIG1heE5vdEluZGV4ID0gbWF4Tm90SW5kZXggPCBpID8gaSA6IG1heE5vdEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGlmIChtaW5Ob3RJbmRleCA8IGxlZnRJbmRleCB8fCBtYXhOb3RJbmRleCA+IHJpZ2h0SW5kZXgpIHtcbiAgICAvL3VpLm1lc3NhZ2UuZXJyb3IoXCLpnZ5maXhlZOWtl+auteS4jeW+l+i2iui/h2ZpeGVk5a2X5q6155qE6aG65bqPXCIpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuZnVuY3Rpb24gYnVpbGRVcGRhdGVLZXkoa2V5KSB7XG4gIHJldHVybiBcInVwZGF0ZTpcIiArIGtleTtcbn1cblxuZnVuY3Rpb24gZmluZEZyb21UcmVlKHRyZWU6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZSkge1xuICAgIGlmIChpdGVtLmtleSA9PT0ga2V5KSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRGcm9tVHJlZShpdGVtLmNoaWxkcmVuLCBrZXkpO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUNoZWNrZWQoZWxlbWVudDogYW55KSB7XG4gIGVsZW1lbnQuc2hvdyA9ICFlbGVtZW50LnNob3c7XG4gIC8v57qn6IGU6YCJ5Lit5ZKM5Y+W5raIXG5cbiAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW4oZWxlbWVudDogYW55KSB7XG4gICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4pIHtcbiAgICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZTogYW55KSA9PiB7XG4gICAgICAgIGlmICghZS5fX3Nob3cgfHwgZS5fX2Rpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGUuc2hvdyA9IGVsZW1lbnQuc2hvdztcbiAgICAgICAgdXBkYXRlQ2hpbGRyZW4oZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgdXBkYXRlQ2hpbGRyZW4oZWxlbWVudCk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlUGFyZW50KGVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC5fX3BhcmVudCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gZWxlbWVudC5fX3BhcmVudDtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcGFyZW50LnNob3cgPSBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKChlOiBhbnkpID0+IGUuX19zaG93ICYmIGUuc2hvdyA9PT0gdHJ1ZSkubGVuZ3RoID4gMDtcbiAgICAgICAgdXBkYXRlUGFyZW50KHBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHVwZGF0ZVBhcmVudChlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIG9uQ2hlY2tDaGFuZ2VkKCkge1xuICBlbWl0cyhcImNoZWNrLWNoYW5nZWRcIik7XG59XG5mdW5jdGlvbiBmaXhlZENoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSB7XG4gIGVtaXRzKFwiZml4ZWQtY2hhbmdlZFwiLCBpbmRleCwgdmFsdWUpO1xufVxuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS5kcmF3ZXIubmFtZVwiXG4gICAgY2xhc3M9XCJmcy1jb2x1bW5zLWZpbHRlci1sYXlvdXQtZGVmYXVsdFwiXG4gICAgOnRpdGxlPVwidGV4dC50aXRsZVwiXG4gICAgdi1iaW5kPVwiZHJhd2VyQmluZFwiXG4gICAgYXBwZW5kLXRvLWJvZHlcbiAgPlxuICAgIDxjb21wb25lbnRcbiAgICAgIDppcz1cInVpLmRyYXdlci5oYXNDb250ZW50V3JhcCB8fCAnZGl2J1wiXG4gICAgICBjbGFzcz1cImZzLWRyYXdlci13cmFwcGVyIGZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyXCJcbiAgICAgIDp0aXRsZT1cInRleHQudGl0bGVcIlxuICAgID5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY2FyZC5uYW1lXCIgc2hhZG93PVwibmV2ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC0tbGlzdFwiPlxuICAgICAgICAgIDxkaXYga2V5PVwiX19maXJzdF9fXCIgY2xhc3M9XCJjb21wb25lbnQtLWxpc3QtaXRlbVwiIGZsZXg9XCJtYWluOmp1c3RpZnkgY3Jvc3M6Y2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiA6c3Bhbj1cIjEyXCI+XG4gICAgICAgICAgICAgIDwhLS0g5YWo6YCJIOWPjemAiSAtLT5cbiAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jaGVja2JveC5uYW1lXCIgOmluZGV0ZXJtaW5hdGU9XCJpc0luZGV0ZXJtaW5hdGVcIiB2LWJpbmQ9XCJjaGVja0FsbEJpbmRcIj5cbiAgICAgICAgICAgICAgICB7eyBzaG93TGVuZ3RoIH19IC8ge3sgYWxsTGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IHRleHQuZml4ZWQgfX0gLyB7eyB0ZXh0Lm9yZGVyIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdFxuICAgICAgICAgICAgOmNvbHVtbnM9XCJjdXJyZW50Q29sdW1uc1wiXG4gICAgICAgICAgICA6aXMtcm9vdD1cInRydWVcIlxuICAgICAgICAgICAgQGNoZWNrLWNoYW5nZWQ9XCJhbGxDaGVja2VkVXBkYXRlXCJcbiAgICAgICAgICAgIEBmaXhlZC1jaGFuZ2VkPVwiZml4ZWRDaGFuZ2VcIlxuICAgICAgICAgID48L2ZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDxzbG90IG5hbWU9XCJidXR0b25zXCI+PC9zbG90PlxuICAgIDwvY29tcG9uZW50PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbi8v5LiN6KaB5YigXG4vL0B0cy1pZ25vcmVcbmltcG9ydCBkcmFnZ2FibGUgZnJvbSBcInZ1ZWRyYWdnYWJsZS1lc1wiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vLi4vdXNlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCByZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgQ29sdW1uc0ZpbHRlclByb3ZpZGVLZXksIENvbHVtbnNGaWx0ZXJDb250ZXh0LCBDb2x1bW5zRmlsdGVyQ29udGFpbmVyUHJvcHMgfSBmcm9tIFwiLi4vLi4vLi4vZC9cIjtcbmltcG9ydCBGc0NvbHVtbnNGaWx0ZXJOZXN0TGlzdCBmcm9tIFwiLi9mcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3QudnVlXCI7XG5cbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5cbmNvbnN0IHsgb3JpZ2luYWxDb2x1bW5zLCBjdXJyZW50Q29sdW1ucywgdGV4dCwgYWN0aXZlIH0gPSBpbmplY3Q8Q29sdW1uc0ZpbHRlckNvbnRleHQ+KENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5KTtcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8Q29sdW1uc0ZpbHRlckNvbnRhaW5lclByb3BzPigpO1xuY29uc3QgZHJhd2VyQmluZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIG1lcmdlKFxuICAgIHtcbiAgICAgIFt1aS5kcmF3ZXIudmlzaWJsZV06IGFjdGl2ZS52YWx1ZSxcbiAgICAgIFtcIm9uVXBkYXRlOlwiICsgdWkuZHJhd2VyLnZpc2libGVdOiAoZTogYW55KSA9PiB7XG4gICAgICAgIGFjdGl2ZS52YWx1ZSA9IGU7XG4gICAgICB9LFxuICAgICAgW3VpLmRyYXdlci53aWR0aF06IHByb3BzLndpZHRoIHx8IFwiNDAwcHhcIlxuICAgIH0sXG4gICAgcHJvcHMuZHJhd2VyXG4gICk7XG59KTtcblxuY29uc3QgY2hlY2tBbGwgPSByZWYoZmFsc2UpO1xuLy8g5YWo6YCJ5ZKM5Y+N6YCJ5Y+R55Sf5Y+Y5YyW5pe26Kem5Y+RXG5mdW5jdGlvbiBvbkNoZWNrQWxsQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgY2hlY2tBbGwudmFsdWUgPSB2YWx1ZTtcbiAgY3VycmVudENvbHVtbnMudmFsdWUgPSBjdXJyZW50Q29sdW1ucy52YWx1ZS5tYXAoKGU6IGFueSkgPT4ge1xuICAgIGlmICghZS5fX3Nob3cgfHwgZS5fX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gICAgZS5zaG93ID0gdmFsdWU7XG4gICAgcmV0dXJuIGU7XG4gIH0pO1xufVxuXG5jb25zdCBjaGVja0FsbEJpbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgW3VpLmNoZWNrYm94Lm1vZGVsVmFsdWVdOiBjaGVja0FsbC52YWx1ZSxcbiAgICBbXCJvblVwZGF0ZTpcIiArIHVpLmNoZWNrYm94Lm1vZGVsVmFsdWVdOiAodjogYW55KSA9PiB7XG4gICAgICBvbkNoZWNrQWxsQ2hhbmdlKHYpO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5jb25zdCBzaG93TGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gY3VycmVudENvbHVtbnMudmFsdWUuZmlsdGVyKChlOiBhbnkpID0+IGUuX19zaG93ICYmIGUuc2hvdyA9PT0gdHJ1ZSkubGVuZ3RoO1xufSk7XG5jb25zdCBhbGxMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiBjdXJyZW50Q29sdW1ucy52YWx1ZS5maWx0ZXIoKGU6IGFueSkgPT4gZS5fX3Nob3cpLmxlbmd0aDtcbn0pO1xuY29uc3QgaXNJbmRldGVybWluYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gc2hvd0xlbmd0aC52YWx1ZSA+IDAgJiYgc2hvd0xlbmd0aC52YWx1ZSA8IGFsbExlbmd0aC52YWx1ZTtcbn0pO1xuXG53YXRjaChcbiAgKCkgPT4ge1xuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlO1xuICB9LFxuICAoKSA9PiB7XG4gICAgYWxsQ2hlY2tlZFVwZGF0ZSgpO1xuICB9LFxuICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4pO1xuXG4vLyBmaXhlZCDlj5jljJbml7bop6blj5FcbmZ1bmN0aW9uIGZpeGVkQ2hhbmdlKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY3VycmVudENvbHVtbnMudmFsdWVbaW5kZXhdLnNob3cgPSB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gXCJsZWZ0XCIpIHtcbiAgICBjdXJyZW50Q29sdW1ucy52YWx1ZS51bnNoaWZ0KGN1cnJlbnRDb2x1bW5zLnZhbHVlLnNwbGljZShpbmRleCwgMSlbMF0pO1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gXCJyaWdodFwiKSB7XG4gICAgY3VycmVudENvbHVtbnMudmFsdWUucHVzaChjdXJyZW50Q29sdW1ucy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpWzBdKTtcbiAgfVxuICBhbGxDaGVja2VkVXBkYXRlKCk7XG59XG5mdW5jdGlvbiBhbGxDaGVja2VkVXBkYXRlKCkge1xuICBjaGVja0FsbC52YWx1ZSA9IHNob3dMZW5ndGgudmFsdWUgPT09IGFsbExlbmd0aC52YWx1ZTtcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtYnRuc1wiPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBidXR0b25zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgIDxmcy1idXR0b24gdi1pZj1cIml0ZW0uc2hvd1wiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLl9jbGljaygkZXZlbnQpXCIgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1NlYXJjaEJ1dHRvbnNcIixcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9XG4gIH0sXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgcmV0dXJuIHsgdWkgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLWJ0bnNcIj5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gYnV0dG9uc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJpdGVtLnNob3dcIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaXRlbS5fY2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvY29tcG9uZW50PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hCdXR0b25zXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfVxuICB9LFxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIHJldHVybiB7IHVpIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2ggZnMtc2VhcmNoLXYyXCI+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2xsYXBzZVRyYW5zaXRpb24ubmFtZVwiPlxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxuICAgICAgICByZWY9XCJzZWFyY2hGb3JtUmVmXCJcbiAgICAgICAgOm1vZGVsPVwiZm9ybURhdGFcIlxuICAgICAgICBvbnN1Ym1pdD1cImV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcbiAgICAgICAgdi1iaW5kPVwib3B0aW9uc1wiXG4gICAgICAgIDpydWxlcz1cImNvbXB1dGVkUnVsZXNcIlxuICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1mb3JtXCJcbiAgICAgID5cbiAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgIDppcz1cImNvbnRhaW5lcj8uaXMgfHwgJ2ZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdCdcIlxuICAgICAgICAgIHYtaWY9XCJzaG93ICE9PSBmYWxzZVwiXG4gICAgICAgICAgdi1iaW5kPVwiY29udGFpbmVyXCJcbiAgICAgICAgICA6Y29sdW1ucz1cImNvbXB1dGVkQ29sdW1uc1wiXG4gICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjc2VhcmNoLWJ1dHRvbnM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBjb21wdXRlZEJ1dHRvbnNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uX2NsaWNrKClcIiAvPlxuICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiAjc2VhcmNoLWxlZnQ+XG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiAjc2VhcmNoLW1pZGRsZT5cbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiAjc2VhcmNoLXJpZ2h0PlxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgIDwvY29tcG9uZW50PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzeFwiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIHJlYWN0aXZlLCByZWYsIFJlZiwgdW5yZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZm9yRWFjaCwgY2xvbmVEZWVwLCBlYWNoLCBrZXlzLCB1bnNldCwgc2V0LCBzb3J0QnksIGVudHJpZXMsIGRlYm91bmNlLCBnZXQgYXMgTG9kYXNoR2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgbG9nZ2VyIGZyb20gXCIuLi8uLi91dGlscy91dGlsLmxvZ1wiO1xuaW1wb3J0IEZzU2VhcmNoQnV0dG9ucyBmcm9tIFwiLi9idXR0b25zLnZ1ZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBCdXR0b25zUHJvcHMsXG4gIFNlYXJjaEV2ZW50Q29udGV4dCxcbiAgU2VhcmNoSXRlbVByb3BzLFxuICBUeXBlTWFwLFxuICBWYWx1ZUNoYW5nZUNvbnRleHQsXG4gIFZhbHVlQ2hhbmdlSGFuZGxlXG59IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XG5cbi8qKlxuICog5p+l6K+i5qGG57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hcIixcbiAgY29tcG9uZW50czogeyBGc1NlYXJjaEJ1dHRvbnMgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDluIPlsYDlrrnlmahcbiAgICAgKi9cbiAgICBjb250YWluZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5Yid5aeL5p+l6K+i5p2h5Lu2XG4gICAgICog54K55Ye76YeN572u77yM5Lya6YeN572u5oiQ6K+l5p2h5Lu2XG4gICAgICovXG4gICAgaW5pdGlhbEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qCh6aqM5ZCO55qE5p+l6K+i6KGo5Y2V5pWw5o2uXG4gICAgICovXG4gICAgdmFsaWRhdGVkRm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajljZXlj4LmlbBcbiAgICAgKiDmlK/mjIFlbC1mb3JtIHwgYS1mb3Jt55qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LlrZfmrrXphY3nva5cbiAgICAgKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMiemSrumFjee9rizlj6/ku6XmoLnmja5vcmRlcuaOkuW6j1xuICAgICAqIGB7c2VhcmNoOnsuLi5Gc0J1dHRvbn0scmVzZXQ6ey4uLkZzQnV0dG9ufX1gXG4gICAgICovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vph43nva7lkI7mmK/lkKbnq4vljbPop6blj5Hmn6Xor6JcbiAgICAgKi9cbiAgICBzZWFyY2hBZnRlclJlc2V0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byA5ZCv6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgYXV0b1NlYXJjaDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWKqOafpeivou+8jOmYsuaKluiuvue9rlxuICAgICAqIOS8oGZhbHNl5YiZ5YWz6Zet6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgZGVib3VuY2U6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmj5Lmp71cbiAgICAgKi9cbiAgICBzbG90czoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S65p+l6K+i5qGGXG4gICAgICovXG4gICAgc2hvdzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWQr+eUqOagoemqjFxuICAgICAqL1xuICAgIHZhbGlkYXRlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbku7vmhI/lgLzlj5jljJblsLHop6blj5HmoKHpqoxcbiAgICAgKi9cbiAgICB2YWxpZGF0ZU9uQ2hhbmdlOiB7XG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YiX55qE5a695bqm6K6+572u77yMc3Bhbj14eFxuICAgICAqL1xuICAgIGNvbDoge30sXG5cbiAgICAvKipcbiAgICAgKiDnu5/kuIDlrZfmrrXnmoRmb3JtSXRlbeWxnuaAp1xuICAgICAqL1xuICAgIGZvcm1JdGVtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5p+l6K+i5LqL5Lu2XG4gICAgICoqL1xuICAgIFwic2VhcmNoXCIsXG4gICAgLyoqXG4gICAgICog5p+l6K+i5LqL5Lu277yM5q2k5LqL5Lu25L6b57O757uf6LCD55SoXG4gICAgICovXG4gICAgXCJfc2VhcmNoXCIsXG4gICAgLyoqXG4gICAgICog6YeN572u5LqL5Lu277yM5L6b55So5oi35L2/55SoXG4gICAgICoqL1xuICAgIFwicmVzZXRcIixcbiAgICAvKipcbiAgICAgKiDph43nva7kuovku7bvvIzmraTkuovku7bkvpvns7vnu5/osIPnlKhcbiAgICAgKi9cbiAgICBcIl9yZXNldFwiLFxuICAgIC8qKlxuICAgICAqIOagoemqjOWksei0peS6i+S7tlxuICAgICAqL1xuICAgIFwidmFsaWRhdGUtZXJyb3JcIixcbiAgICAvKipcbiAgICAgKiDmoKHpqozlkI7nmoTooajljZXmlbDmja7lj5jljJZcbiAgICAgKi9cbiAgICBcInVwZGF0ZTp2YWxpZGF0ZWRGb3JtXCJcbiAgXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgZG9NZXJnZSA9IG1lcmdlO1xuICAgIGNvbnN0IHsgZG9Db21wdXRlZCwgQXN5bmNDb21wdXRlVmFsdWUsIENvbXB1dGVWYWx1ZSB9ID0gdXNlQ29tcHV0ZSgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsICYmIChpdGVtLnZhbHVlIGluc3RhbmNlb2YgQXN5bmNDb21wdXRlVmFsdWUgfHwgaXRlbS52YWx1ZSBpbnN0YW5jZW9mIENvbXB1dGVWYWx1ZSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJzZWFyY2gudmFsdWXphY3nva7kuI3mlK/mjIFDb21wdXRlVmFsdWUvQXN5bmNDb21wdXRl57G75Z6L55qE5Yqo5oCB6K6h566XXCIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKTogYW55IHtcbiAgICAgIC8v6buY6K6k5YC8XG4gICAgICBjb25zdCBmb3JtOiBhbnkgPSB7fTtcblxuICAgICAgZm9yRWFjaChwcm9wcy5jb2x1bW5zLCAoY29sdW1uLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZlZhbHVlID0gdW5yZWYoY29sdW1uLnZhbHVlKTtcbiAgICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnNob3cgIT09IGZhbHNlICYmIGNvbHVtbi5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgICAgLy/pu5jorqTlgLxcbiAgICAgICAgICBmb3JtW2tleV0gPSBkZWZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjbG9uZURlZXAobWVyZ2Uoe30sIHByb3BzLmluaXRpYWxGb3JtLCBmb3JtKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybURhdGEgPSByZWFjdGl2ZShjcmVhdGVJbml0aWFsRm9ybSgpKTtcblxuICAgIGxldCBhdXRvU2VhcmNoOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5zOiBSZWY8VHlwZU1hcDxTZWFyY2hJdGVtUHJvcHM+PiA9IGRvQ29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIG51bGwsXG4gICAgICAoY29sdW1uczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1JdGVtID0gY2xvbmVEZWVwKHByb3BzLmZvcm1JdGVtIHx8IHt9KTtcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIG1lcmdlKGl0ZW0sIGZvcm1JdGVtLCBpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNvbHVtbnMgPSBtZXJnZShmb3JtSXRlbSwgY29sdW1ucyk7XG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAvL+WmguaenOWFs+mXrXZhbGlkYXRl5YiZ5Y675o6JcnVsZXNcbiAgICAgICAgICBmb3JFYWNoKGNvbHVtbnMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlcztcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnJ1bGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5ZCI5bm2Y29sXG4gICAgICAgIGlmIChwcm9wcy5jb2wpIHtcbiAgICAgICAgICBmb3JFYWNoKGNvbHVtbnMsICh2KSA9PiB7XG4gICAgICAgICAgICB2LmNvbCA9IG1lcmdlKHt9LCBwcm9wcy5jb2wsIHYuY29sKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2VsbFJlbmRlclxuICAgICAgICBmb3JFYWNoKGNvbHVtbnMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgaXRlbS5fY2VsbFJlbmRlciA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsUmVuZGVyKGl0ZW0pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8v5a2X5q615o6S5bqPXG4gICAgICAgIGxldCBzb3J0QXJyOiBTZWFyY2hJdGVtUHJvcHNbXSA9IFtdO1xuICAgICAgICBmb3JFYWNoKGNvbHVtbnMsICh2LCBrZXkpID0+IHtcbiAgICAgICAgICB2Ll9rZXkgPSBrZXk7XG4gICAgICAgICAgc29ydEFyci5wdXNoKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvcnRlZENvbHVtbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBTZWFyY2hJdGVtUHJvcHM7XG4gICAgICAgIH0gPSB7fTtcblxuICAgICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcbiAgICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICAgIHNvcnRlZENvbHVtbnNbX2tleV0gPSBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZENvbHVtbnM7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIG9uRm9ybVZhbGlkYXRlZCgpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlZEZvcm0gPSBjbG9uZURlZXAoZm9ybURhdGEpO1xuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6dmFsaWRhdGVkRm9ybVwiLCB2YWxpZGF0ZWRGb3JtKTtcbiAgICB9XG5cbiAgICB3YXRjaChcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLnZhbGlkYXRlZEZvcm07XG4gICAgICB9LFxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgICAgICBkZWxldGUgZm9ybURhdGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBtZXJnZShmb3JtRGF0YSwgdmFsdWUgfHwge30pO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVlcDogdHJ1ZVxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBnZXQgPSAoZm9ybTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIExvZGFzaEdldChmb3JtLCBrZXkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzcGxpdEtleShrZXk6IHN0cmluZykge1xuICAgICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPj0gMCkge1xuICAgICAgICByZXR1cm4ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgLy8gY29uc3QgZGVib3VuY2VWYWxpZGF0ZSA9IGRlYm91bmNlKGFzeW5jICgpID0+IHtcbiAgICAvLyAgIGlmIChhd2FpdCBkb1ZhbGlkYXRlKCkpIHtcbiAgICAvLyAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfSwgNTAwKTtcblxuICAgIGZ1bmN0aW9uIGNlbGxSZW5kZXIoaXRlbTogYW55KSB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcblxuICAgICAgYXN5bmMgZnVuY3Rpb24gX29uVXBkYXRlTW9kZWxWYWx1ZSgkZXZlbnQ6IGFueSkge1xuICAgICAgICAvLyBhd2FpdCBkZWJvdW5jZVZhbGlkYXRlKCk7XG4gICAgICAgIG9uVmFsdWVDaGFuZ2VkKCRldmVudCwgaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF9vbklucHV0KCkge1xuICAgICAgICBvbklucHV0KGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBvbktleXVwKGl0ZW06IGFueSwga2V5OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleS5jb2RlID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciAhPSBmYWxzZSkge1xuICAgICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IGRlZmF1bHRTbG90OiBhbnkgPSBudWxsO1xuICAgICAgaWYgKHByb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XSkge1xuICAgICAgICBkZWZhdWx0U2xvdCA9IDxmcy1zbG90LXJlbmRlciBzbG90cz17cHJvcHMuc2xvdHNbXCJzZWFyY2hfXCIgKyBrZXldfSBzY29wZT17YnVpbGRGaWVsZENvbnRleHQoa2V5KX0gLz47XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0ucmVuZGVyKSB7XG4gICAgICAgIGRlZmF1bHRTbG90ID0gPGZzLXJlbmRlciByZW5kZXItZnVuYz17aXRlbS5yZW5kZXJ9IHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfSAvPjtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5jb21wb25lbnQgJiYgaXRlbS5jb21wb25lbnQuc2hvdyAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGVmYXVsdFNsb3QgPSAoXG4gICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcbiAgICAgICAgICAgIHJlZj17KHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbW9kZWwtdmFsdWU9e2dldChmb3JtRGF0YSwga2V5KX1cbiAgICAgICAgICAgIG9uS2V5dXA9eygkZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBvbktleXVwKGl0ZW0sICRldmVudCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLml0ZW0uY29tcG9uZW50fVxuICAgICAgICAgICAgc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9XG4gICAgICAgICAgICBvblVwZGF0ZTptb2RlbFZhbHVlPXtfb25VcGRhdGVNb2RlbFZhbHVlfVxuICAgICAgICAgICAgb25JbnB1dD17X29uSW5wdXR9XG4gICAgICAgICAgICBvbkNvbXBvc2l0aW9uc3RhcnQ9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKHRydWUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb25lbmQ9eygpID0+IHtcbiAgICAgICAgICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKGZhbHNlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3BsaXRlZEtleSA9IHNwbGl0S2V5KGtleSk7XG5cbiAgICAgIHJldHVybiB1aS5mb3JtSXRlbS5yZW5kZXIoe1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgbGFiZWw6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgW3VpLmZvcm1JdGVtLnByb3BdOiBzcGxpdGVkS2V5LFxuICAgICAgICAgIHBhdGg6IGtleSxcbiAgICAgICAgICBydWxlUGF0aDoga2V5XG4gICAgICAgIH0sXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0U2xvdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaEZvcm1SZWYgPSByZWYoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWZzOiBSZWYgPSByZWYoe30pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleSk/LmdldFRhcmdldFJlZigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpOiBTZWFyY2hFdmVudENvbnRleHQge1xuICAgICAgcmV0dXJuIHsgZm9ybTogZm9ybURhdGEsIHZhbGlkYXRlZEZvcm06IHByb3BzLnZhbGlkYXRlZEZvcm0sIGdldENvbXBvbmVudFJlZiwgZG9TZWFyY2gsIGRvUmVzZXQsIGRvVmFsaWRhdGUgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpZWxkQ29udGV4dChrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHsgLi4uZ2V0Q29udGV4dEZuKCksIGtleSwgdmFsdWU6IGdldChmb3JtRGF0YSwga2V5KSB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvVmFsaWRhdGUoc2lsZW50OiBib29sZWFuID0gZmFsc2UsIHRyaWdnZXI6IHN0cmluZyA9IFwic2VhcmNoXCIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgICAgY3R4LmVtaXQoXCJ2YWxpZGF0ZS1lcnJvclwiLCB7IC4uLmdldENvbnRleHRGbigpLCBlcnJvcjogZSwgdHJpZ2dlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1NlYXJjaCgpIHtcbiAgICAgIGlmIChhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxuICAgICAgICBhdXRvU2VhcmNoLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgICBjdHguZW1pdChcIl9zZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICBjdHguZW1pdChcInNlYXJjaFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9SZXNldCgpIHtcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtRGF0YSk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0KGluaXRpYWxGb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIHVuc2V0KGZvcm1EYXRhLCBlbnRyeVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KGZvcm1EYXRhLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgICBpZiAocHJvcHMucmVzZXQpIHtcbiAgICAgICAgICBwcm9wcy5yZXNldChnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6KGo5Y2V6YeN572u5LqL5Lu2XG4gICAgICAgIGN0eC5lbWl0KFwiX3Jlc2V0XCIsIGdldENvbnRleHRGbigpKTtcbiAgICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XG4gICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ0bnM6IGFueSA9IFtdO1xuICAgICAgY29uc3QgZGVmQnRuT3B0aW9uczogQnV0dG9uc1Byb3BzPFNlYXJjaEV2ZW50Q29udGV4dD4gPSB7XG4gICAgICAgIHNlYXJjaDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2guc2VhcmNoLnRleHRcIikgLy8gJ+afpeivoicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBkb1Jlc2V0KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxuICAgICAgICAgIG9yZGVyOiAyXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBtZXJnZShkZWZCdG5PcHRpb25zLCBwcm9wcy5idXR0b25zKTtcbiAgICAgIGZvciAobGV0IGtleSBpbiBkZWZCdG5PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGJ0biA9IGRlZkJ0bk9wdGlvbnNba2V5XTtcbiAgICAgICAgYnRuLl9jbGljayA9ICgpID0+IHtcbiAgICAgICAgICBidG4uY2xpY2soZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICB9O1xuICAgICAgICBidG5zLnB1c2goYnRuKTtcbiAgICAgIH1cblxuICAgICAgYnRucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBidG5zO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gaW5pdEF1dG9TZWFyY2goKSB7XG4gICAgICBpZiAocHJvcHMuYXV0b1NlYXJjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8g5p6E5bu66Ziy5oqW5p+l6K+i5Ye95pWwXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XG4gICAgICAgIGxldCB3YWl0ID0gcHJvcHMuZGVib3VuY2U/LndhaXQgfHwgNTAwO1xuICAgICAgICBhdXRvU2VhcmNoID0gZGVib3VuY2UoZG9TZWFyY2gsIHdhaXQsIHByb3BzLmRlYm91bmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0QXV0b1NlYXJjaCgpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcbiAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWxpZGF0ZWRGb3JtKCkge1xuICAgICAgcmV0dXJuIHByb3BzLnZhbGlkYXRlZEZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572uZm9ybeWAvFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldEZvcm0obmV3Rm9ybTogYW55LCBtZXJnZSA9IHRydWUpIHtcbiAgICAgIGlmICghbWVyZ2UpIHtcbiAgICAgICAgZWFjaChrZXlzKGZvcm1EYXRhKSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBkZWxldGUgZm9ybURhdGFbaXRlbV07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZG9NZXJnZShmb3JtRGF0YSwgbmV3Rm9ybSk7XG4gICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dEV2ZW50RGlzYWJsZWQgPSByZWYoZmFsc2UpO1xuXG4gICAgY29uc3QgZG9BdXRvU2VhcmNoID0gKCkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiZG8gYXV0byBzZWFyY2gsaW5wdXRFdmVudERpc2FibGVkOlwiLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xuICAgICAgaWYgKGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSAhPT0gdHJ1ZSAmJiBhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivolxuICAgICAgICBhdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uSW5wdXQgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8g6L6T5YWl5rOV55uR5ZCsXG4gICAgY29uc3QgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkID0gKGRpc2FibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgPSBkaXNhYmxlZDtcbiAgICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkOlwiLCBkaXNhYmxlZCk7XG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnksIGl0ZW06IFNlYXJjaEl0ZW1Qcm9wcykge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG4gICAgICBzZXQoZm9ybURhdGEsIGtleSwgdmFsdWUpO1xuXG4gICAgICBjb25zdCBzaWxlbnQgPSBwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlU2lsZW50O1xuICAgICAgLy8gaWYgKHByb3BzLnZhbGlkYXRlT25DaGFuZ2UgJiYgKGF3YWl0IGRvVmFsaWRhdGUoc2lsZW50LCBcImNoYW5nZVwiKSkpIHtcbiAgICAgIC8vICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1EYXRhW2tleV07XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGdldENvbXBvbmVudFJlZihrZXkpO1xuICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZTogVmFsdWVDaGFuZ2VIYW5kbGUgPVxuICAgICAgICAgIGl0ZW0udmFsdWVDaGFuZ2UgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IGl0ZW0udmFsdWVDaGFuZ2UgOiBpdGVtLnZhbHVlQ2hhbmdlLmhhbmRsZTtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRDb250ZXh0Rm4oKTtcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VDb250ZXh0OiBWYWx1ZUNoYW5nZUNvbnRleHQgPSB7XG4gICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgcm93OiBzY29wZS5mb3JtLFxuICAgICAgICAgIGZvcm06IHNjb3BlLmZvcm0sXG4gICAgICAgICAgLi4uc2NvcGUsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGNvbXBvbmVudFJlZixcbiAgICAgICAgICBpbW1lZGlhdGU6IGZhbHNlLFxuICAgICAgICAgIGdldENvbXBvbmVudFJlZixcbiAgICAgICAgICBtb2RlOiBcInNlYXJjaFwiXG4gICAgICAgIH07XG4gICAgICAgIHZhbHVlQ2hhbmdlKHZhbHVlQ2hhbmdlQ29udGV4dCk7XG4gICAgICB9XG4gICAgICAvLyBUT0RPIOeUseS6jnZhbGlkYXRlZEZvcm0g5Y+R5bCE5Ye65Y675ZCO77yM5Lya5pu05pawZm9ybURhdGHnmoTmlbDmja7vvIzmiYDku6XopoHmlL7lnKh2YWx1ZUNoYW5nZeWQjumdoizkuI3nhLbkvJrmrbvlvqrnjq9cbiAgICAgIGlmIChwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlICYmIChhd2FpdCBkb1ZhbGlkYXRlKHNpbGVudCwgXCJjaGFuZ2VcIikpKSB7XG4gICAgICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coXCJpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyOlwiLCBpdGVtLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT0gbnVsbCB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSB0cnVlIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiY2hhbmdlXCIpIHtcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRSdWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLm9wdGlvbnMucnVsZXM7XG4gICAgfSk7XG5cbiAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0LFxuICAgICAgdWksXG4gICAgICBvblZhbHVlQ2hhbmdlZCxcbiAgICAgIGRvVmFsaWRhdGUsXG4gICAgICBkb1NlYXJjaCxcbiAgICAgIGRvUmVzZXQsXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMsXG4gICAgICBnZXRDb21wb25lbnRSZW5kZXJSZWYsXG4gICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICBnZXRGb3JtLFxuICAgICAgZ2V0VmFsaWRhdGVkRm9ybSxcbiAgICAgIHNldEZvcm0sXG4gICAgICBzZWFyY2hGb3JtUmVmLFxuICAgICAgb25JbnB1dCxcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZCxcbiAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCxcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcbiAgICAgIGNvbXB1dGVkQnV0dG9ucyxcbiAgICAgIGNvbXB1dGVkUnVsZXMsXG4gICAgICBidWlsZEZpZWxkQ29udGV4dCxcbiAgICAgIGdldENvbnRleHRGblxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1zZWFyY2gge1xuICAmLmZzLXNlYXJjaC12MiB7XG4gICAgLy9kaXNwbGF5OiBmbGV4O1xuICAgIC8vZmxleC13cmFwOiBub3dyYXA7XG4gICAgLmZzLXNlYXJjaC1idXR0b25zIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICAgIC5zZWFyY2gtbGVmdCB7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1yaWdodCB7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5hbnQtZm9ybS1pbmxpbmUge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cblxuICAgIC5mcy1zZWFyY2gtZm9ybSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgLmFudC1waWNrZXIsXG4gICAgICAuYW50LXNlbGVjdCxcbiAgICAgIC5uLWRhdGUtcGlja2VyLFxuICAgICAgLmVsLXNlbGVjdCxcbiAgICAgIC5lbC1kYXRlLWVkaXRvciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuZWwtcmFuZ2UtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLmFudC1idG4tbG9hZGluZy1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgICB9XG5cbiAgICAgICYuZWwtZm9ybS0tbGFiZWwtdG9wIHtcbiAgICAgICAgLmVsLWZvcm0taXRlbSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmVsLWZvcm0taXRlbSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAmLmVsLWZvcm0tLWlubGluZSB7XG4gICAgICAgIC5lbC1pbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmZzLXNlYXJjaC1jb2wge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgLy8gYW50ZHZcbiAgICAgIC5hbnQtZm9ybS1pdGVtLWV4cGxhaW4sXG4gICAgICAuZWwtZm9ybS1pdGVtX19lcnJvciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgICByaWdodDogOHB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcbiAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tZXhwbGFpbixcbiAgICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubi1mb3JtLWl0ZW0tYmxhbmsge1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkge1xuICAuZnMtc2VhcmNoIHtcbiAgICAuZnMtc2VhcmNoLWZvcm0ge1xuICAgICAgLmZzLXNlYXJjaC1jb2wge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4OiAxMDAlO1xuICAgICAgICAvL2FudGR2XG4gICAgICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoIGZzLXNlYXJjaC12MlwiPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sbGFwc2VUcmFuc2l0aW9uLm5hbWVcIj5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcbiAgICAgICAgcmVmPVwic2VhcmNoRm9ybVJlZlwiXG4gICAgICAgIDptb2RlbD1cImZvcm1EYXRhXCJcbiAgICAgICAgb25zdWJtaXQ9XCJldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgIHYtYmluZD1cIm9wdGlvbnNcIlxuICAgICAgICA6cnVsZXM9XCJjb21wdXRlZFJ1bGVzXCJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJjb250YWluZXI/LmlzIHx8ICdmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHQnXCJcbiAgICAgICAgICB2LWlmPVwic2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgIHYtYmluZD1cImNvbnRhaW5lclwiXG4gICAgICAgICAgOmNvbHVtbnM9XCJjb21wdXRlZENvbHVtbnNcIlxuICAgICAgICAgIDpnZXQtY29udGV4dC1mbj1cImdldENvbnRleHRGblwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgI3NlYXJjaC1idXR0b25zPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1idXR0b25zXCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGZzLWJ1dHRvbiB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLl9jbGljaygpXCIgLz5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgI3NlYXJjaC1sZWZ0PlxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgI3NlYXJjaC1taWRkbGU+XG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgI3NlYXJjaC1yaWdodD5cbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c3hcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCByZWFjdGl2ZSwgcmVmLCBSZWYsIHVucmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2gsIGNsb25lRGVlcCwgZWFjaCwga2V5cywgdW5zZXQsIHNldCwgc29ydEJ5LCBlbnRyaWVzLCBkZWJvdW5jZSwgZ2V0IGFzIExvZGFzaEdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBGc1NlYXJjaEJ1dHRvbnMgZnJvbSBcIi4vYnV0dG9ucy52dWVcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgQnV0dG9uc1Byb3BzLFxuICBTZWFyY2hFdmVudENvbnRleHQsXG4gIFNlYXJjaEl0ZW1Qcm9wcyxcbiAgVHlwZU1hcCxcbiAgVmFsdWVDaGFuZ2VDb250ZXh0LFxuICBWYWx1ZUNoYW5nZUhhbmRsZVxufSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xuXG4vKipcbiAqIOafpeivouahhue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU2VhcmNoXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNTZWFyY2hCdXR0b25zIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5biD5bGA5a655ZmoXG4gICAgICovXG4gICAgY29udGFpbmVyOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIneWni+afpeivouadoeS7tlxuICAgICAqIOeCueWHu+mHjee9ru+8jOS8mumHjee9ruaIkOivpeadoeS7tlxuICAgICAqL1xuICAgIGluaXRpYWxGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagoemqjOWQjueahOafpeivouihqOWNleaVsOaNrlxuICAgICAqL1xuICAgIHZhbGlkYXRlZEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5Y+C5pWwXG4gICAgICog5pSv5oyBZWwtZm9ybSB8IGEtZm9ybeeahOWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5a2X5q616YWN572uXG4gICAgICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva4s5Y+v5Lul5qC55o2ub3JkZXLmjpLluo9cbiAgICAgKiBge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19YFxuICAgICAqL1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Ye76YeN572u5ZCO5piv5ZCm56uL5Y2z6Kem5Y+R5p+l6K+iXG4gICAgICovXG4gICAgc2VhcmNoQWZ0ZXJSZXNldDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8gOWQr+iHquWKqOafpeivolxuICAgICAqL1xuICAgIGF1dG9TZWFyY2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDoh6rliqjmn6Xor6LvvIzpmLLmipborr7nva5cbiAgICAgKiDkvKBmYWxzZeWImeWFs+mXreiHquWKqOafpeivolxuICAgICAqL1xuICAgIGRlYm91bmNlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe9XG4gICAgICovXG4gICAgc2xvdHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuafpeivouahhlxuICAgICAqL1xuICAgIHNob3c6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblkK/nlKjmoKHpqoxcbiAgICAgKi9cbiAgICB2YWxpZGF0ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5Lu75oSP5YC85Y+Y5YyW5bCx6Kem5Y+R5qCh6aqMXG4gICAgICovXG4gICAgdmFsaWRhdGVPbkNoYW5nZToge1xuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIl+eahOWuveW6puiuvue9ru+8jHNwYW49eHhcbiAgICAgKi9cbiAgICBjb2w6IHt9LFxuXG4gICAgLyoqXG4gICAgICog57uf5LiA5a2X5q6155qEZm9ybUl0ZW3lsZ7mgKdcbiAgICAgKi9cbiAgICBmb3JtSXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tlxuICAgICAqKi9cbiAgICBcInNlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tu+8jOatpOS6i+S7tuS+m+ezu+e7n+iwg+eUqFxuICAgICAqL1xuICAgIFwiX3NlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOmHjee9ruS6i+S7tu+8jOS+m+eUqOaIt+S9v+eUqFxuICAgICAqKi9cbiAgICBcInJlc2V0XCIsXG4gICAgLyoqXG4gICAgICog6YeN572u5LqL5Lu277yM5q2k5LqL5Lu25L6b57O757uf6LCD55SoXG4gICAgICovXG4gICAgXCJfcmVzZXRcIixcbiAgICAvKipcbiAgICAgKiDmoKHpqozlpLHotKXkuovku7ZcbiAgICAgKi9cbiAgICBcInZhbGlkYXRlLWVycm9yXCIsXG4gICAgLyoqXG4gICAgICog5qCh6aqM5ZCO55qE6KGo5Y2V5pWw5o2u5Y+Y5YyWXG4gICAgICovXG4gICAgXCJ1cGRhdGU6dmFsaWRhdGVkRm9ybVwiXG4gIF0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGRvTWVyZ2UgPSBtZXJnZTtcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQsIEFzeW5jQ29tcHV0ZVZhbHVlLCBDb21wdXRlVmFsdWUgfSA9IHVzZUNvbXB1dGUoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiAoaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlIHx8IGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBDb21wdXRlVmFsdWUpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKFwic2VhcmNoLnZhbHVl6YWN572u5LiN5pSv5oyBQ29tcHV0ZVZhbHVlL0FzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCk6IGFueSB7XG4gICAgICAvL+m7mOiupOWAvFxuICAgICAgY29uc3QgZm9ybTogYW55ID0ge307XG5cbiAgICAgIGZvckVhY2gocHJvcHMuY29sdW1ucywgKGNvbHVtbiwga2V5KSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGNvbHVtbi52YWx1ZSk7XG4gICAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5zaG93ICE9PSBmYWxzZSAmJiBjb2x1bW4uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZSkge1xuICAgICAgICAgIC8v6buY6K6k5YC8XG4gICAgICAgICAgZm9ybVtrZXldID0gZGVmVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKG1lcmdlKHt9LCBwcm9wcy5pbml0aWFsRm9ybSwgZm9ybSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gcmVhY3RpdmUoY3JlYXRlSW5pdGlhbEZvcm0oKSk7XG5cbiAgICBsZXQgYXV0b1NlYXJjaDogYW55ID0gbnVsbDtcblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uczogUmVmPFR5cGVNYXA8U2VhcmNoSXRlbVByb3BzPj4gPSBkb0NvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcbiAgICAgIH0sXG4gICAgICBnZXRDb250ZXh0Rm4sXG4gICAgICBudWxsLFxuICAgICAgKGNvbHVtbnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtSXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICBtZXJnZShpdGVtLCBmb3JtSXRlbSwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb2x1bW5zID0gbWVyZ2UoZm9ybUl0ZW0sIGNvbHVtbnMpO1xuICAgICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgICAgLy/lpoLmnpzlhbPpl612YWxpZGF0ZeWImeWOu+aOiXJ1bGVzXG4gICAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZXM7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWQiOW5tmNvbFxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XG4gICAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAodikgPT4ge1xuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NlbGxSZW5kZXJcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGl0ZW0uX2NlbGxSZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2VsbFJlbmRlcihpdGVtKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICAvL+Wtl+auteaOkuW6j1xuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAodiwga2V5KSA9PiB7XG4gICAgICAgICAgdi5fa2V5ID0ga2V5O1xuICAgICAgICAgIHNvcnRBcnIucHVzaCh2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogU2VhcmNoSXRlbVByb3BzO1xuICAgICAgICB9ID0ge307XG5cbiAgICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcbiAgICAgICAgICBzb3J0ZWRDb2x1bW5zW19rZXldID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRDb2x1bW5zO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBvbkZvcm1WYWxpZGF0ZWQoKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRGb3JtID0gY2xvbmVEZWVwKGZvcm1EYXRhKTtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOnZhbGlkYXRlZEZvcm1cIiwgdmFsaWRhdGVkRm9ybSk7XG4gICAgfVxuXG4gICAgd2F0Y2goXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy52YWxpZGF0ZWRGb3JtO1xuICAgICAgfSxcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2UoZm9ybURhdGEsIHZhbHVlIHx8IHt9KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlZXA6IHRydWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZ2V0ID0gKGZvcm06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBMb2Rhc2hHZXQoZm9ybSwga2V5KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc3BsaXRLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgICAgcmV0dXJuIGtleS5zcGxpdChcIi5cIik7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGRlYm91bmNlVmFsaWRhdGUgPSBkZWJvdW5jZShhc3luYyAoKSA9PiB7XG4gICAgLy8gICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgLy8gICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgIC8vICAgfVxuICAgIC8vIH0sIDUwMCk7XG5cbiAgICBmdW5jdGlvbiBjZWxsUmVuZGVyKGl0ZW06IGFueSkge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIF9vblVwZGF0ZU1vZGVsVmFsdWUoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gYXdhaXQgZGVib3VuY2VWYWxpZGF0ZSgpO1xuICAgICAgICBvblZhbHVlQ2hhbmdlZCgkZXZlbnQsIGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfb25JbnB1dCgpIHtcbiAgICAgICAgb25JbnB1dChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gb25LZXl1cChpdGVtOiBhbnksIGtleTogYW55KSB7XG4gICAgICAgIGlmIChrZXkuY29kZSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgIT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZhdWx0U2xvdDogYW55ID0gbnVsbDtcbiAgICAgIGlmIChwcm9wcy5zbG90c1tcInNlYXJjaF9cIiArIGtleV0pIHtcbiAgICAgICAgZGVmYXVsdFNsb3QgPSA8ZnMtc2xvdC1yZW5kZXIgc2xvdHM9e3Byb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XX0gc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9IC8+O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLnJlbmRlcikge1xuICAgICAgICBkZWZhdWx0U2xvdCA9IDxmcy1yZW5kZXIgcmVuZGVyLWZ1bmM9e2l0ZW0ucmVuZGVyfSBzY29wZT17YnVpbGRGaWVsZENvbnRleHQoa2V5KX0gLz47XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY29tcG9uZW50ICYmIGl0ZW0uY29tcG9uZW50LnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgIGRlZmF1bHRTbG90ID0gKFxuICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICByZWY9eyh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG1vZGVsLXZhbHVlPXtnZXQoZm9ybURhdGEsIGtleSl9XG4gICAgICAgICAgICBvbktleXVwPXsoJGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgb25LZXl1cChpdGVtLCAkZXZlbnQpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5pdGVtLmNvbXBvbmVudH1cbiAgICAgICAgICAgIHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfVxuICAgICAgICAgICAgb25VcGRhdGU6bW9kZWxWYWx1ZT17X29uVXBkYXRlTW9kZWxWYWx1ZX1cbiAgICAgICAgICAgIG9uSW5wdXQ9e19vbklucHV0fVxuICAgICAgICAgICAgb25Db21wb3NpdGlvbnN0YXJ0PXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNvbXBvc2l0aW9uZW5kPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwbGl0ZWRLZXkgPSBzcGxpdEtleShrZXkpO1xuXG4gICAgICByZXR1cm4gdWkuZm9ybUl0ZW0ucmVuZGVyKHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGxhYmVsOiBpdGVtLnRpdGxlLFxuICAgICAgICAgIFt1aS5mb3JtSXRlbS5wcm9wXTogc3BsaXRlZEtleSxcbiAgICAgICAgICBwYXRoOiBrZXksXG4gICAgICAgICAgcnVsZVBhdGg6IGtleVxuICAgICAgICB9LFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFNsb3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hGb3JtUmVmID0gcmVmKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVuZGVyUmVmczogUmVmID0gcmVmKHt9KTtcblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudFJlbmRlclJlZihrZXkpPy5nZXRUYXJnZXRSZWYoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKTogU2VhcmNoRXZlbnRDb250ZXh0IHtcbiAgICAgIHJldHVybiB7IGZvcm06IGZvcm1EYXRhLCB2YWxpZGF0ZWRGb3JtOiBwcm9wcy52YWxpZGF0ZWRGb3JtLCBnZXRDb21wb25lbnRSZWYsIGRvU2VhcmNoLCBkb1Jlc2V0LCBkb1ZhbGlkYXRlIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaWVsZENvbnRleHQoa2V5OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiB7IC4uLmdldENvbnRleHRGbigpLCBrZXksIHZhbHVlOiBnZXQoZm9ybURhdGEsIGtleSkgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1ZhbGlkYXRlKHNpbGVudDogYm9vbGVhbiA9IGZhbHNlLCB0cmlnZ2VyOiBzdHJpbmcgPSBcInNlYXJjaFwiKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAocHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICBhd2FpdCB1aS5mb3JtLnZhbGlkYXRlV3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgIGN0eC5lbWl0KFwidmFsaWRhdGUtZXJyb3JcIiwgeyAuLi5nZXRDb250ZXh0Rm4oKSwgZXJyb3I6IGUsIHRyaWdnZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9TZWFyY2goKSB7XG4gICAgICBpZiAoYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6Llj5bmtohcbiAgICAgICAgYXV0b1NlYXJjaC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgY3R4LmVtaXQoXCJfc2VhcmNoXCIsIGdldENvbnRleHRGbigpKTtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvUmVzZXQoKSB7XG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybURhdGEpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB1bnNldChmb3JtRGF0YSwgZW50cnlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldChmb3JtRGF0YSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgaWYgKHByb3BzLnJlc2V0KSB7XG4gICAgICAgICAgcHJvcHMucmVzZXQoZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOihqOWNlemHjee9ruS6i+S7tlxuICAgICAgICBjdHguZW1pdChcIl9yZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIGN0eC5lbWl0KFwicmVzZXRcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICBpZiAocHJvcHMuc2VhcmNoQWZ0ZXJSZXNldCkge1xuICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBidG5zOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGRlZkJ0bk9wdGlvbnM6IEJ1dHRvbnNQcm9wczxTZWFyY2hFdmVudENvbnRleHQ+ID0ge1xuICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnNlYXJjaC50ZXh0XCIpIC8vICfmn6Xor6InLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9SZXNldCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5yZXNldC50ZXh0XCIpLCAvLyAn6YeN572uJyxcbiAgICAgICAgICBvcmRlcjogMlxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgbWVyZ2UoZGVmQnRuT3B0aW9ucywgcHJvcHMuYnV0dG9ucyk7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGVmQnRuT3B0aW9ucykge1xuICAgICAgICBjb25zdCBidG4gPSBkZWZCdG5PcHRpb25zW2tleV07XG4gICAgICAgIGJ0bi5fY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgYnRuLmNsaWNrKGdldENvbnRleHRGbigpKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnRucy5wdXNoKGJ0bik7XG4gICAgICB9XG5cbiAgICAgIGJ0bnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYnRucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGluaXRBdXRvU2VhcmNoKCkge1xuICAgICAgaWYgKHByb3BzLmF1dG9TZWFyY2ggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIOaehOW7uumYsuaKluafpeivouWHveaVsFxuICAgICAgaWYgKHByb3BzLmRlYm91bmNlICE9PSBmYWxzZSkge1xuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcbiAgICAgICAgYXV0b1NlYXJjaCA9IGRlYm91bmNlKGRvU2VhcmNoLCB3YWl0LCBwcm9wcy5kZWJvdW5jZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEF1dG9TZWFyY2goKTtcblxuICAgIGZ1bmN0aW9uIGdldEZvcm0oKSB7XG4gICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VmFsaWRhdGVkRm9ybSgpIHtcbiAgICAgIHJldHVybiBwcm9wcy52YWxpZGF0ZWRGb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rmZvcm3lgLxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRGb3JtKG5ld0Zvcm06IGFueSwgbWVyZ2UgPSB0cnVlKSB7XG4gICAgICBpZiAoIW1lcmdlKSB7XG4gICAgICAgIGVhY2goa2V5cyhmb3JtRGF0YSksIChpdGVtKSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2l0ZW1dO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRvTWVyZ2UoZm9ybURhdGEsIG5ld0Zvcm0pO1xuICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcblxuICAgIGNvbnN0IGRvQXV0b1NlYXJjaCA9ICgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcbiAgICAgIGlmIChpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgIT09IHRydWUgJiYgYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6JcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbklucHV0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiaW5wdXRcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi+k+WFpeazleebkeWQrFxuICAgIGNvbnN0IGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCA9IChkaXNhYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlID0gZGlzYWJsZWQ7XG4gICAgICBjb25zb2xlLmxvZyhcImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZDpcIiwgZGlzYWJsZWQpO1xuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBvblZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55LCBpdGVtOiBTZWFyY2hJdGVtUHJvcHMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIHZhbHVlKTtcblxuICAgICAgY29uc3Qgc2lsZW50ID0gcHJvcHMudmFsaWRhdGVPbkNoYW5nZVNpbGVudDtcbiAgICAgIC8vIGlmIChwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlICYmIChhd2FpdCBkb1ZhbGlkYXRlKHNpbGVudCwgXCJjaGFuZ2VcIikpKSB7XG4gICAgICAvLyAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSkge1xuICAgICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtRGF0YVtrZXldO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBnZXRDb21wb25lbnRSZWYoa2V5KTtcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2U6IFZhbHVlQ2hhbmdlSGFuZGxlID1cbiAgICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBpdGVtLnZhbHVlQ2hhbmdlIDogaXRlbS52YWx1ZUNoYW5nZS5oYW5kbGU7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gZ2V0Q29udGV4dEZuKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlQ29udGV4dDogVmFsdWVDaGFuZ2VDb250ZXh0ID0ge1xuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHJvdzogc2NvcGUuZm9ybSxcbiAgICAgICAgICBmb3JtOiBzY29wZS5mb3JtLFxuICAgICAgICAgIC4uLnNjb3BlLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBjb21wb25lbnRSZWYsXG4gICAgICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcbiAgICAgICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICAgICAgbW9kZTogXCJzZWFyY2hcIlxuICAgICAgICB9O1xuICAgICAgICB2YWx1ZUNoYW5nZSh2YWx1ZUNoYW5nZUNvbnRleHQpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETyDnlLHkuo52YWxpZGF0ZWRGb3JtIOWPkeWwhOWHuuWOu+WQju+8jOS8muabtOaWsGZvcm1EYXRh55qE5pWw5o2u77yM5omA5Lul6KaB5pS+5ZyodmFsdWVDaGFuZ2XlkI7pnaIs5LiN54S25Lya5q275b6q546vXG4gICAgICBpZiAocHJvcHMudmFsaWRhdGVPbkNoYW5nZSAmJiAoYXdhaXQgZG9WYWxpZGF0ZShzaWxlbnQsIFwiY2hhbmdlXCIpKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKFwiaXRlbS5hdXRvU2VhcmNoVHJpZ2dlcjpcIiwgaXRlbSwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09IG51bGwgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gdHJ1ZSB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImNoYW5nZVwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkUnVsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xuICAgIH0pO1xuXG4gICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCxcbiAgICAgIHVpLFxuICAgICAgb25WYWx1ZUNoYW5nZWQsXG4gICAgICBkb1ZhbGlkYXRlLFxuICAgICAgZG9TZWFyY2gsXG4gICAgICBkb1Jlc2V0LFxuICAgICAgZm9ybURhdGEsXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWZzLFxuICAgICAgZ2V0Q29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgZ2V0Rm9ybSxcbiAgICAgIGdldFZhbGlkYXRlZEZvcm0sXG4gICAgICBzZXRGb3JtLFxuICAgICAgc2VhcmNoRm9ybVJlZixcbiAgICAgIG9uSW5wdXQsXG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjb21wdXRlZENvbHVtbnMsXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXG4gICAgICBjb21wdXRlZFJ1bGVzLFxuICAgICAgYnVpbGRGaWVsZENvbnRleHQsXG4gICAgICBnZXRDb250ZXh0Rm5cbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtc2VhcmNoIHtcbiAgJi5mcy1zZWFyY2gtdjIge1xuICAgIC8vZGlzcGxheTogZmxleDtcbiAgICAvL2ZsZXgtd3JhcDogbm93cmFwO1xuICAgIC5mcy1zZWFyY2gtYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgICAuc2VhcmNoLWxlZnQge1xuICAgIH1cblxuICAgIC5zZWFyY2gtcmlnaHQge1xuICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAuYW50LWZvcm0taW5saW5lIHtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG5cbiAgICAuZnMtc2VhcmNoLWZvcm0ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgIC5hbnQtcGlja2VyLFxuICAgICAgLmFudC1zZWxlY3QsXG4gICAgICAubi1kYXRlLXBpY2tlcixcbiAgICAgIC5lbC1zZWxlY3QsXG4gICAgICAuZWwtZGF0ZS1lZGl0b3Ige1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hbnQtYnRuLWxvYWRpbmctaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgfVxuXG4gICAgICAmLmVsLWZvcm0tLWxhYmVsLXRvcCB7XG4gICAgICAgIC5lbC1mb3JtLWl0ZW0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5lbC1mb3JtLWl0ZW0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgJi5lbC1mb3JtLS1pbmxpbmUge1xuICAgICAgICAuZWwtaW5wdXQge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIC8vIGFudGR2XG4gICAgICAuYW50LWZvcm0taXRlbS1leHBsYWluLFxuICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDNweDtcbiAgICAgICAgcmlnaHQ6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuZWwtZm9ybS1pdGVtX19lcnJvciB7XG4gICAgICAgIGJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIC5hbnQtZm9ybS1pdGVtLWV4cGxhaW4sXG4gICAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgLmZzLXNlYXJjaCB7XG4gICAgLmZzLXNlYXJjaC1mb3JtIHtcbiAgICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgZmxleDogMTAwJTtcbiAgICAgICAgLy9hbnRkdlxuICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2xsYXBzZVRyYW5zaXRpb24ubmFtZVwiPlxuICAgIDxkaXYgdi1pZj1cInNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1zZWFyY2hcIiA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtbXVsdGktbGluZSc6IGNvbXB1dGVkSXNNdWx0aUxpbmUgfVwiPlxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxuICAgICAgICByZWY9XCJzZWFyY2hGb3JtUmVmXCJcbiAgICAgICAgOm1vZGVsPVwiZm9ybVwiXG4gICAgICAgIHYtYmluZD1cIm9wdGlvbnNcIlxuICAgICAgICA6cnVsZXM9XCJjb21wdXRlZFJ1bGVzXCJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXG4gICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKHRydWUpXCJcbiAgICAgICAgQGNvbXBvc2l0aW9uZW5kPVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKGZhbHNlKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1tYWluXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtY29sbGFwc2UnOiBjb2xsYXBzZSB9XCJcbiAgICAgICAgICAgICAgOnN0eWxlPVwieyBoZWlnaHQ6IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgcmVmPVwiY29sdW1uc1Jvd1JlZlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIGluIGNvbXB1dGVkQ29sdW1uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwiY29tcHV0ZWRDb2xOYW1lXCIgdi1pZj1cIml0ZW0uc2hvdyA9PT0gdHJ1ZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiIHYtYmluZD1cIml0ZW1cIiA6W3VpLmZvcm1JdGVtLnByb3BdPVwia2V5XCIgOmxhYmVsPVwiaXRlbS50aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaF8nICsga2V5XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2hfJyArIGtleV1cIiA6c2NvcGU9XCJ7IC4uLnNlYXJjaEV2ZW50Q29udGV4dFJlZiwga2V5IH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLmNvbXBvbmVudCAmJiBpdGVtLmNvbXBvbmVudC5zaG93ICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlbmRlclJlZnNbaXRlbS5rZXldID0gZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9XCJvbklucHV0KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtbWlkZGxlXCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGZzLXNlYXJjaC1idXR0b25zIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmcy1zZWFyY2gtYnV0dG9ucyB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiBjbGFzcz1cImZzLXNlYXJjaC1hY3Rpb25cIj5cbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgICAgICAgICA8ZnMtYnV0dG9uIDppY29uPVwiY29sbGFwc2UgPyB1aS5pY29ucy5jYXJldFVwIDogdWkuaWNvbnMuY2FyZXREb3duXCIgQGNsaWNrPVwidG9nZ2xlQ29sbGFwc2VcIiAvPlxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlYWN0aXZlLCByZWYsIFJlZiwgdW5yZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBlYWNoLCBmb3JFYWNoLCBzb3J0QnksIGVudHJpZXMsIHVuc2V0LCBzZXQsIGtleXMsIGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBGc1NlYXJjaEJ1dHRvbnMgZnJvbSBcIi4vYnV0dG9ucy52dWVcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgQnV0dG9uc1Byb3BzLCBTZWFyY2hFdmVudENvbnRleHQsIFNlYXJjaEl0ZW1Qcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XG5cbi8qKlxuICog5p+l6K+i5qGG57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hWMVwiLFxuICBjb21wb25lbnRzOiB7IEZzU2VhcmNoQnV0dG9ucyB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWIneWni+afpeivouadoeS7tlxuICAgICAqIOeCueWHu+mHjee9ru+8jOS8mumHjee9ruaIkOivpeadoeS7tlxuICAgICAqL1xuICAgIGluaXRpYWxGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOWNleWPguaVsFxuICAgICAqIOaUr+aMgWVsLWZvcm0gfCBhLWZvcm3nmoTlsZ7mgKdcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeivouWtl+autemFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogdGFic1xuICAgICAqIHsgc2hvdyAsIG9wdGlvbnMsa2V5LCBkZWZhdWx0fVxuICAgICAqL1xuICAgIHRhYnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uLOWPr+S7peagueaNrm9yZGVy5o6S5bqPXG4gICAgICoge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19XG4gICAgICovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vph43nva7lkI7mmK/lkKbnq4vljbPop6blj5Hmn6Xor6JcbiAgICAgKi9cbiAgICBzZWFyY2hBZnRlclJlc2V0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byA5ZCv6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgYXV0b1NlYXJjaDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWKqOafpeivou+8jOmYsuaKluiuvue9rlxuICAgICAqIOS8oGZhbHNl5YiZ5YWz6Zet6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgZGVib3VuY2U6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmj5Lmp71cbiAgICAgKi9cbiAgICBzbG90czoge1xuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S65p+l6K+i5qGGXG4gICAgICovXG4gICAgc2hvdzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWQr+eUqOagoemqjFxuICAgICAqL1xuICAgIHZhbGlkYXRlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5biD5bGALCBzaW5nbGUtbGluZSDljZXooYzvvIwgbXVsdGktbGluZSDlpJrooYzvvIjmlK/mjIHlsZXlvIDmlLbotbfvvIlcbiAgICAgKi9cbiAgICBsYXlvdXQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwic2luZ2xlLWxpbmVcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YiX55qE5a695bqm6K6+572u77yMc3Bhbj14eFxuICAgICAqL1xuICAgIGNvbDoge30sXG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmipjlj6BcbiAgICAgKi9cbiAgICBjb2xsYXBzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tlxuICAgICAqKi9cbiAgICBcInNlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOmHjee9ruS6i+S7tlxuICAgICAqKi9cbiAgICBcInJlc2V0XCIsXG4gICAgXCJjb2xsYXBzZVwiLFxuICAgIFwidXBkYXRlOmNvbGxhcHNlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgLy8g5byC5q2lc2V0dXDpnIDopoHmlL7lnKjnrKzkuIDkuKphd2FpdOS5i+WJjVxuICAgIC8vIG9uTW91bnRlZCBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aC5cbiAgICAvL+S4uuWVpeS8muaciei/meS4quitpuWRilxuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBpZiAoY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSAmJiBjb2x1bW5zUm93UmVmLnZhbHVlKSB7XG4gICAgICAgIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNMaXN0ID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwuY2hpbGRyZW47XG4gICAgICAgIGlmIChjb2x1bW5zTGlzdCAmJiBjb2x1bW5zTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zTGlzdFsxXS5vZmZzZXRIZWlnaHQgKyAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYXV0b1NlYXJjaDogYW55ID0gbnVsbDtcbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpIHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIGNsb25lRGVlcChwcm9wcy5pbml0aWFsRm9ybSB8fCB7fSk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm0gPSByZWFjdGl2ZShjcmVhdGVJbml0aWFsRm9ybSgpKTtcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQsIEFzeW5jQ29tcHV0ZVZhbHVlIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQXN5bmNDb21wdXRlVmFsdWUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJzZWFyY2gudmFsdWXphY3nva7kuI3mlK/mjIFBc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBkb01lcmdlID0gbWVyZ2U7XG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5zID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIG51bGwsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAvL+WmguaenOWFs+mXrXZhbGlkYXRl5YiZ5Y675o6JcnVsZXNcbiAgICAgICAgICBmb3JFYWNoKHZhbHVlLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZXM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5ZCI5bm2Y29sXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XG4gICAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKHYpID0+IHtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL+Wtl+auteaOkuW6j1xuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcbiAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKHYsIGtleSkgPT4ge1xuICAgICAgICAgIHYuX2tleSA9IGtleTtcbiAgICAgICAgICBzb3J0QXJyLnB1c2godik7XG4gICAgICAgIH0pO1xuICAgICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uczoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IFNlYXJjaEl0ZW1Qcm9wcztcbiAgICAgICAgfSA9IHt9O1xuXG4gICAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XG4gICAgICAgICAgc29ydGVkQ29sdW1uc1tfa2V5XSA9IGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc29ydGVkQ29sdW1ucztcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy/pu5jorqTlgLxcbiAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKGNvbHVtbiwga2V5KSA9PiB7XG4gICAgICBpZiAoY29sdW1uLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihjb2x1bW4udmFsdWUpO1xuICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnNob3cgIT09IGZhbHNlICYmIGNvbHVtbi5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgIC8v6buY6K6k5YC8XG4gICAgICAgIGZvcm1ba2V5XSA9IGRlZlZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlYXJjaEZvcm1SZWYgPSByZWYoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWZzOiBSZWYgPSByZWYoe30pO1xuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudFJlbmRlclJlZihrZXkpPy4kcmVmcz8udGFyZ2V0UmVmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpOiBTZWFyY2hFdmVudENvbnRleHQge1xuICAgICAgcmV0dXJuIHsgZm9ybSwgdmFsaWRhdGVkRm9ybTogZm9ybSwgZ2V0Q29tcG9uZW50UmVmLCBkb1ZhbGlkYXRlOiBudWxsIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoRXZlbnRDb250ZXh0UmVmOiBSZWY8U2VhcmNoRXZlbnRDb250ZXh0PiA9IHJlZihnZXRDb250ZXh0Rm4oKSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1NlYXJjaCgpIHtcbiAgICAgIGlmIChhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxuICAgICAgICBhdXRvU2VhcmNoLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUpO1xuICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VhcmNoXCIsIHNlYXJjaEV2ZW50Q29udGV4dFJlZi52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aS5tZXNzYWdlLmVycm9yKHtcbiAgICAgICAgICBtZXNzYWdlOiB0KFwiZnMuc2VhcmNoLmVycm9yLm1lc3NhZ2VcIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb1Jlc2V0KCkge1xuICAgICAgLy8gdWkuZm9ybS5yZXNldFdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSwgeyBmb3JtLCBpbml0aWFsRm9ybTogY3JlYXRlSW5pdGlhbEZvcm0oKSB9KTtcbiAgICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcbiAgICAgIGNvbnN0IGVudHJpZXNSZXQgPSBlbnRyaWVzKGZvcm0pO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB1bnNldChmb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KGZvcm0sIGVudHJ5WzBdLCBpbml0aWFsVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5yZXNldCkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgcHJvcHMucmVzZXQoc2VhcmNoRXZlbnRDb250ZXh0UmVmLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIC8vIOihqOWNlemHjee9ruS6i+S7tlxuICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICBkb1NlYXJjaCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgYnRuczogYW55ID0gW107XG4gICAgICBjb25zdCBkZWZCdG5PcHRpb25zOiBCdXR0b25zUHJvcHM8U2VhcmNoRXZlbnRDb250ZXh0PiA9IHtcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnNlYXJjaC50ZXh0XCIpIC8vICfmn6Xor6InLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBkb1Jlc2V0KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxuICAgICAgICAgIG9yZGVyOiAyXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIG1lcmdlKGRlZkJ0bk9wdGlvbnMsIHByb3BzLmJ1dHRvbnMpO1xuICAgICAgZm9yIChsZXQga2V5IGluIGRlZkJ0bk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgYnRuID0gZGVmQnRuT3B0aW9uc1trZXldO1xuICAgICAgICBidG4uX2NsaWNrID0gKCkgPT4ge1xuICAgICAgICAgIGJ0bi5jbGljayhnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIH07XG4gICAgICAgIGJ0bnMucHVzaChidG4pO1xuICAgICAgfVxuXG4gICAgICBidG5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJ0bnM7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBpbml0QXV0b1NlYXJjaCgpIHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLmF1dG9TZWFyY2ggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIOaehOW7uumYsuaKluafpeivouWHveaVsFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGF1dG9TZWFyY2ggPSBkZWJvdW5jZShkb1NlYXJjaCwgd2FpdCwgcHJvcHMuZGVib3VuY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluaXRBdXRvU2VhcmNoKCk7XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtKCkge1xuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572uZm9ybeWAvFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldEZvcm0obmV3Rm9ybTogYW55LCBtZXJnZSA9IHRydWUpIHtcbiAgICAgIGlmICghbWVyZ2UpIHtcbiAgICAgICAgZWFjaChrZXlzKGZvcm0pLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBmb3JtW2l0ZW1dO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRvTWVyZ2UoZm9ybSwgbmV3Rm9ybSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcblxuICAgIGNvbnN0IGRvQXV0b1NlYXJjaCA9ICgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcbiAgICAgIGlmIChpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgIT09IHRydWUgJiYgYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6JcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbklucHV0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiaW5wdXRcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi+k+WFpeazleebkeWQrFxuICAgIGNvbnN0IGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCA9IChkaXNhYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlID0gZGlzYWJsZWQ7XG4gICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb25WYWx1ZUNoYW5nZWQodmFsdWU6IGFueSwgaXRlbTogU2VhcmNoSXRlbVByb3BzKSB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgIHNldChmb3JtLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1ba2V5XTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gZ2V0Q29tcG9uZW50UmVmKGtleSk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlID0gaXRlbS52YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gaXRlbS52YWx1ZUNoYW5nZSA6IGl0ZW0udmFsdWVDaGFuZ2UuaGFuZGxlO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgdmFsdWVDaGFuZ2UoeyBrZXksIHZhbHVlLCBjb21wb25lbnRSZWYsIC4uLmdldENvbnRleHRGbigpLCBpbW1pZGlhdGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT0gbnVsbCB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSB0cnVlIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiY2hhbmdlXCIpIHtcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRSdWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xuICAgIH0pO1xuXG4gICAgLy8tLS0tLeWkmuihjOaooeW8j+aKmOWPoFxuXG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xuICAgIGNvbnN0IGNvbHVtbnNCb3hIZWlnaHRSZWYgPSByZWYoMCk7XG4gICAgY29uc3QgY29sdW1uc0xpbmVIZWlnaHRSZWYgPSByZWYoMCk7XG5cbiAgICBjb25zdCB0b2dnbGVDb2xsYXBzZSA9ICgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgY3R4LmVtaXQoXCJjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBjb21wdXRlZENvbE5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiKSB7XG4gICAgICAgIHJldHVybiB1aS5jb2wubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcImRpdlwiO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiO1xuICAgICAgLy/kuI3opoHov5nkuKrvvIzkvJrmrbvlvqrnjq/vvIwgJiYgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA+IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFwiYXV0b1wiO1xuICAgICAgfVxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuY29sbGFwc2UpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPyBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlICsgXCJweFwiIDogXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBnZXQoZm9ybSwga2V5KTtcbiAgICAgIH0sXG4gICAgICB1aSxcbiAgICAgIG9uVmFsdWVDaGFuZ2VkLFxuICAgICAgZG9TZWFyY2gsXG4gICAgICBkb1Jlc2V0LFxuICAgICAgZm9ybSxcbiAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMsXG4gICAgICBnZXRDb21wb25lbnRSZW5kZXJSZWYsXG4gICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICBnZXRGb3JtLFxuICAgICAgc2V0Rm9ybSxcbiAgICAgIHNlYXJjaEZvcm1SZWYsXG4gICAgICBvbklucHV0LFxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxuICAgICAgY29tcHV0ZWRSdWxlcyxcbiAgICAgIGNvbHVtbnNSb3dSZWYsXG4gICAgICBjb21wdXRlZENvbHVtbkJveEhlaWdodCxcbiAgICAgIGNvbXB1dGVkQ29sTmFtZSxcbiAgICAgIGNvbXB1dGVkSXNNdWx0aUxpbmUsXG4gICAgICB0b2dnbGVDb2xsYXBzZSxcbiAgICAgIHNlYXJjaEV2ZW50Q29udGV4dFJlZlxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1zZWFyY2gge1xuICAvL2Rpc3BsYXk6IGZsZXg7XG4gIC8vZmxleC13cmFwOiBub3dyYXA7XG4gIC5zZWFyY2gtbGVmdCB7XG4gIH1cbiAgLnNlYXJjaC1yaWdodCB7XG4gICAgZmxleDogMTtcbiAgfVxuICAuYW50LWZvcm0taW5saW5lIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cbiAgLmZzLXNlYXJjaC1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIC8vJiA+ICoge1xuICAgIC8vICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgLy8gIG1hcmdpbi10b3A6IDRweDtcbiAgICAvLyAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIC8vfVxuXG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICB9XG4gICAgfVxuICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgICYgPiAqIHtcbiAgICAgICAgbWFyZ2luOiAwcHggNXB4O1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAxcHggMDtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZWwtZm9ybS1pdGVtIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5lbC1mb3JtLS1pbmxpbmUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuZnMtc2VhcmNoLWJ0bnMge1xuICAgIC5mcy1idXR0b24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgfVxuICB9XG5cbiAgJi5mcy1zZWFyY2gtbXVsdGktbGluZSB7XG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgLmZzLXNlYXJjaC1jb2x1bW5zIHtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICAgIC8vIHRyYW5zaXRpb246IGFsbCAwLjNzIGxpbmVhcjtcbiAgICAgICAgICAvLyB3aWxsLWNoYW5nZTogaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC5mcy1zZWFyY2gtYnRucyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uLWZvcm0taXRlbS1ibGFuayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5mcy1zZWFyY2gtYWN0aW9uIHtcbiAgICAgIC5hbnQtZm9ybS1pdGVtIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5mcy1zZWFyY2gge1xuICAubi1mb3JtLWl0ZW0tYmxhbmsge1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLmNvbGxhcHNlVHJhbnNpdGlvbi5uYW1lXCI+XG4gICAgPGRpdiB2LWlmPVwic2hvdyAhPT0gZmFsc2VcIiBjbGFzcz1cImZzLXNlYXJjaFwiIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1tdWx0aS1saW5lJzogY29tcHV0ZWRJc011bHRpTGluZSB9XCI+XG4gICAgICA8Y29tcG9uZW50XG4gICAgICAgIDppcz1cInVpLmZvcm0ubmFtZVwiXG4gICAgICAgIHJlZj1cInNlYXJjaEZvcm1SZWZcIlxuICAgICAgICA6bW9kZWw9XCJmb3JtXCJcbiAgICAgICAgdi1iaW5kPVwib3B0aW9uc1wiXG4gICAgICAgIDpydWxlcz1cImNvbXB1dGVkUnVsZXNcIlxuICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1mb3JtXCJcbiAgICAgICAgQGNvbXBvc2l0aW9uc3RhcnQ9XCJjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQodHJ1ZSlcIlxuICAgICAgICBAY29tcG9zaXRpb25lbmQ9XCJjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQoZmFsc2UpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1ib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLW1haW5cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtY29sdW1uc1wiXG4gICAgICAgICAgICAgIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1jb2xsYXBzZSc6IGNvbGxhcHNlIH1cIlxuICAgICAgICAgICAgICA6c3R5bGU9XCJ7IGhlaWdodDogY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiByZWY9XCJjb2x1bW5zUm93UmVmXCI+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiBjbGFzcz1cImZzLXNlYXJjaC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1sZWZ0J11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgaW4gY29tcHV0ZWRDb2x1bW5zXCIgOmtleT1cImtleVwiPlxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJjb21wdXRlZENvbE5hbWVcIiB2LWlmPVwiaXRlbS5zaG93ID09PSB0cnVlXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCIgdi1iaW5kPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCIgdi1iaW5kPVwiaXRlbVwiIDpbdWkuZm9ybUl0ZW0ucHJvcF09XCJrZXlcIiA6bGFiZWw9XCJpdGVtLnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoXycgKyBrZXldXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaF8nICsga2V5XVwiIDpzY29wZT1cInsgLi4uc2VhcmNoRXZlbnRDb250ZXh0UmVmLCBrZXkgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uY29tcG9uZW50ICYmIGl0ZW0uY29tcG9uZW50LnNob3cgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVuZGVyUmVmc1tpdGVtLmtleV0gPSBlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1iaW5kPVwiaXRlbS5jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpbnB1dD1cIm9uSW5wdXQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZnMtc2VhcmNoLWJ1dHRvbnMgdi1pZj1cIiFjb21wdXRlZElzTXVsdGlMaW5lXCIgOmJ1dHRvbnM9XCJjb21wdXRlZEJ1dHRvbnNcIj48L2ZzLXNlYXJjaC1idXR0b25zPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZzLXNlYXJjaC1idXR0b25zIHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgOmJ1dHRvbnM9XCJjb21wdXRlZEJ1dHRvbnNcIj48L2ZzLXNlYXJjaC1idXR0b25zPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWFjdGlvblwiPlxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XG4gICAgICAgICAgICAgIDxmcy1idXR0b24gOmljb249XCJjb2xsYXBzZSA/IHVpLmljb25zLmNhcmV0VXAgOiB1aS5pY29ucy5jYXJldERvd25cIiBAY2xpY2s9XCJ0b2dnbGVDb2xsYXBzZVwiIC8+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVhY3RpdmUsIHJlZiwgUmVmLCB1bnJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGVhY2gsIGZvckVhY2gsIHNvcnRCeSwgZW50cmllcywgdW5zZXQsIHNldCwga2V5cywgZ2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgbG9nZ2VyIGZyb20gXCIuLi8uLi91dGlscy91dGlsLmxvZ1wiO1xuaW1wb3J0IEZzU2VhcmNoQnV0dG9ucyBmcm9tIFwiLi9idXR0b25zLnZ1ZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBCdXR0b25zUHJvcHMsIFNlYXJjaEV2ZW50Q29udGV4dCwgU2VhcmNoSXRlbVByb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcblxuLyoqXG4gKiDmn6Xor6LmoYbnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1NlYXJjaFYxXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNTZWFyY2hCdXR0b25zIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5Yid5aeL5p+l6K+i5p2h5Lu2XG4gICAgICog54K55Ye76YeN572u77yM5Lya6YeN572u5oiQ6K+l5p2h5Lu2XG4gICAgICovXG4gICAgaW5pdGlhbEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5Y+C5pWwXG4gICAgICog5pSv5oyBZWwtZm9ybSB8IGEtZm9ybeeahOWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5a2X5q616YWN572uXG4gICAgICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiB0YWJzXG4gICAgICogeyBzaG93ICwgb3B0aW9ucyxrZXksIGRlZmF1bHR9XG4gICAgICovXG4gICAgdGFiczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva4s5Y+v5Lul5qC55o2ub3JkZXLmjpLluo9cbiAgICAgKiB7c2VhcmNoOnsuLi5Gc0J1dHRvbn0scmVzZXQ6ey4uLkZzQnV0dG9ufX1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWHu+mHjee9ruWQjuaYr+WQpueri+WNs+inpuWPkeafpeivolxuICAgICAqL1xuICAgIHNlYXJjaEFmdGVyUmVzZXQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblvIDlkK/oh6rliqjmn6Xor6JcbiAgICAgKi9cbiAgICBhdXRvU2VhcmNoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5p+l6K+i77yM6Ziy5oqW6K6+572uXG4gICAgICog5LygZmFsc2XliJnlhbPpl63oh6rliqjmn6Xor6JcbiAgICAgKi9cbiAgICBkZWJvdW5jZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaPkuanvVxuICAgICAqL1xuICAgIHNsb3RzOiB7XG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrmn6Xor6LmoYZcbiAgICAgKi9cbiAgICBzaG93OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5ZCv55So5qCh6aqMXG4gICAgICovXG4gICAgdmFsaWRhdGU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDluIPlsYAsIHNpbmdsZS1saW5lIOWNleihjO+8jCBtdWx0aS1saW5lIOWkmuihjO+8iOaUr+aMgeWxleW8gOaUtui1t++8iVxuICAgICAqL1xuICAgIGxheW91dDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJzaW5nbGUtbGluZVwiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDliJfnmoTlrr3luqborr7nva7vvIxzcGFuPXh4XG4gICAgICovXG4gICAgY29sOiB7fSxcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaKmOWPoFxuICAgICAqL1xuICAgIGNvbGxhcHNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5p+l6K+i5LqL5Lu2XG4gICAgICoqL1xuICAgIFwic2VhcmNoXCIsXG4gICAgLyoqXG4gICAgICog6YeN572u5LqL5Lu2XG4gICAgICoqL1xuICAgIFwicmVzZXRcIixcbiAgICBcImNvbGxhcHNlXCIsXG4gICAgXCJ1cGRhdGU6Y29sbGFwc2VcIlxuICBdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICAvLyDlvILmraVzZXR1cOmcgOimgeaUvuWcqOesrOS4gOS4qmF3YWl05LmL5YmNXG4gICAgLy8gb25Nb3VudGVkIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2UgdG8gYmUgYXNzb2NpYXRlZCB3aXRoLlxuICAgIC8v5Li65ZWl5Lya5pyJ6L+Z5Liq6K2m5ZGKXG4gICAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAgIGlmIChjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlICYmIGNvbHVtbnNSb3dSZWYudmFsdWUpIHtcbiAgICAgICAgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA9IGNvbHVtbnNSb3dSZWYudmFsdWUuJGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgY29sdW1uc0xpc3QgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5jaGlsZHJlbjtcbiAgICAgICAgaWYgKGNvbHVtbnNMaXN0ICYmIGNvbHVtbnNMaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZSA9IGNvbHVtbnNMaXN0WzFdLm9mZnNldEhlaWdodCArIDI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBhdXRvU2VhcmNoOiBhbnkgPSBudWxsO1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCkge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKHByb3BzLmluaXRpYWxGb3JtIHx8IHt9KTtcbiAgICB9XG4gICAgY29uc3QgZm9ybSA9IHJlYWN0aXZlKGNyZWF0ZUluaXRpYWxGb3JtKCkpO1xuICAgIGNvbnN0IHsgZG9Db21wdXRlZCwgQXN5bmNDb21wdXRlVmFsdWUgfSA9IHVzZUNvbXB1dGUoKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsICYmIGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSkge1xuICAgICAgICBsb2dnZXIud2FybihcInNlYXJjaC52YWx1ZemFjee9ruS4jeaUr+aMgUFzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGRvTWVyZ2UgPSBtZXJnZTtcbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnMgPSBkb0NvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XG4gICAgICB9LFxuICAgICAgZ2V0Q29udGV4dEZuLFxuICAgICAgbnVsbCxcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgIC8v5aaC5p6c5YWz6ZetdmFsaWRhdGXliJnljrvmjolydWxlc1xuICAgICAgICAgIGZvckVhY2godmFsdWUsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlkIjlubZjb2xcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGlmIChwcm9wcy5jb2wpIHtcbiAgICAgICAgICBmb3JFYWNoKHZhbHVlLCAodikgPT4ge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2LmNvbCA9IG1lcmdlKHt9LCBwcm9wcy5jb2wsIHYuY29sKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8v5a2X5q615o6S5bqPXG4gICAgICAgIGxldCBzb3J0QXJyOiBTZWFyY2hJdGVtUHJvcHNbXSA9IFtdO1xuICAgICAgICBmb3JFYWNoKHZhbHVlLCAodiwga2V5KSA9PiB7XG4gICAgICAgICAgdi5fa2V5ID0ga2V5O1xuICAgICAgICAgIHNvcnRBcnIucHVzaCh2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogU2VhcmNoSXRlbVByb3BzO1xuICAgICAgICB9ID0ge307XG5cbiAgICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcbiAgICAgICAgICBzb3J0ZWRDb2x1bW5zW19rZXldID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRDb2x1bW5zO1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvL+m7mOiupOWAvFxuICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAoY29sdW1uLCBrZXkpID0+IHtcbiAgICAgIGlmIChjb2x1bW4udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGNvbHVtbi52YWx1ZSk7XG4gICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uc2hvdyAhPT0gZmFsc2UgJiYgY29sdW1uLmNvbXBvbmVudD8uc2hvdyAhPT0gZmFsc2UpIHtcbiAgICAgICAgLy/pu5jorqTlgLxcbiAgICAgICAgZm9ybVtrZXldID0gZGVmVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2VhcmNoRm9ybVJlZiA9IHJlZigpO1xuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZnM6IFJlZiA9IHJlZih7fSk7XG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleSk/LiRyZWZzPy50YXJnZXRSZWY7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29udGV4dEZuKCk6IFNlYXJjaEV2ZW50Q29udGV4dCB7XG4gICAgICByZXR1cm4geyBmb3JtLCB2YWxpZGF0ZWRGb3JtOiBmb3JtLCBnZXRDb21wb25lbnRSZWYsIGRvVmFsaWRhdGU6IG51bGwgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hFdmVudENvbnRleHRSZWY6IFJlZjxTZWFyY2hFdmVudENvbnRleHQ+ID0gcmVmKGdldENvbnRleHRGbigpKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKCkge1xuICAgICAgaWYgKGF1dG9TZWFyY2gpIHtcbiAgICAgICAgLy8g6Ziy5oqW5p+l6K+i5Y+W5raIXG4gICAgICAgIGF1dG9TZWFyY2guY2FuY2VsKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkID0gYXdhaXQgdWkuZm9ybS52YWxpZGF0ZVdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSk7XG4gICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWFyY2hcIiwgc2VhcmNoRXZlbnRDb250ZXh0UmVmLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVpLm1lc3NhZ2UuZXJyb3Ioe1xuICAgICAgICAgIG1lc3NhZ2U6IHQoXCJmcy5zZWFyY2guZXJyb3IubWVzc2FnZVwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvUmVzZXQoKSB7XG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybSk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0KGluaXRpYWxGb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIHVuc2V0KGZvcm0sIGVudHJ5WzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXQoZm9ybSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLnJlc2V0KSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBwcm9wcy5yZXNldChzZWFyY2hFdmVudENvbnRleHRSZWYudmFsdWUpO1xuICAgICAgfVxuICAgICAgLy8g6KGo5Y2V6YeN572u5LqL5Lu2XG4gICAgICBjdHguZW1pdChcInJlc2V0XCIsIGdldENvbnRleHRGbigpKTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLnNlYXJjaEFmdGVyUmVzZXQpIHtcbiAgICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBidG5zOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGRlZkJ0bk9wdGlvbnM6IEJ1dHRvbnNQcm9wczxTZWFyY2hFdmVudENvbnRleHQ+ID0ge1xuICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2guc2VhcmNoLnRleHRcIikgLy8gJ+afpeivoicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGRvUmVzZXQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2gucmVzZXQudGV4dFwiKSwgLy8gJ+mHjee9ricsXG4gICAgICAgICAgb3JkZXI6IDJcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgbWVyZ2UoZGVmQnRuT3B0aW9ucywgcHJvcHMuYnV0dG9ucyk7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGVmQnRuT3B0aW9ucykge1xuICAgICAgICBjb25zdCBidG4gPSBkZWZCdG5PcHRpb25zW2tleV07XG4gICAgICAgIGJ0bi5fY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgYnRuLmNsaWNrKGdldENvbnRleHRGbigpKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnRucy5wdXNoKGJ0bik7XG4gICAgICB9XG5cbiAgICAgIGJ0bnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYnRucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGluaXRBdXRvU2VhcmNoKCkge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuYXV0b1NlYXJjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8g5p6E5bu66Ziy5oqW5p+l6K+i5Ye95pWwXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5kZWJvdW5jZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGxldCB3YWl0ID0gcHJvcHMuZGVib3VuY2U/LndhaXQgfHwgNTAwO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgYXV0b1NlYXJjaCA9IGRlYm91bmNlKGRvU2VhcmNoLCB3YWl0LCBwcm9wcy5kZWJvdW5jZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEF1dG9TZWFyY2goKTtcblxuICAgIGZ1bmN0aW9uIGdldEZvcm0oKSB7XG4gICAgICByZXR1cm4gZm9ybTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva5mb3Jt5YC8XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Rm9ybShuZXdGb3JtOiBhbnksIG1lcmdlID0gdHJ1ZSkge1xuICAgICAgaWYgKCFtZXJnZSkge1xuICAgICAgICBlYWNoKGtleXMoZm9ybSksIChpdGVtKSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1baXRlbV07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZG9NZXJnZShmb3JtLCBuZXdGb3JtKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dEV2ZW50RGlzYWJsZWQgPSByZWYoZmFsc2UpO1xuXG4gICAgY29uc3QgZG9BdXRvU2VhcmNoID0gKCkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiZG8gYXV0byBzZWFyY2gsaW5wdXRFdmVudERpc2FibGVkOlwiLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xuICAgICAgaWYgKGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSAhPT0gdHJ1ZSAmJiBhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivolxuICAgICAgICBhdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uSW5wdXQgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8g6L6T5YWl5rOV55uR5ZCsXG4gICAgY29uc3QgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkID0gKGRpc2FibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgPSBkaXNhYmxlZDtcbiAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBvblZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55LCBpdGVtOiBTZWFyY2hJdGVtUHJvcHMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgc2V0KGZvcm0sIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKGl0ZW0udmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVtrZXldO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBnZXRDb21wb25lbnRSZWYoa2V5KTtcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UgPSBpdGVtLnZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBpdGVtLnZhbHVlQ2hhbmdlIDogaXRlbS52YWx1ZUNoYW5nZS5oYW5kbGU7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICB2YWx1ZUNoYW5nZSh7IGtleSwgdmFsdWUsIGNvbXBvbmVudFJlZiwgLi4uZ2V0Q29udGV4dEZuKCksIGltbWlkaWF0ZTogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PSBudWxsIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IHRydWUgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJjaGFuZ2VcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZFJ1bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHByb3BzLm9wdGlvbnMucnVsZXM7XG4gICAgfSk7XG5cbiAgICAvLy0tLS0t5aSa6KGM5qih5byP5oqY5Y+gXG5cbiAgICBjb25zdCBjb2x1bW5zUm93UmVmID0gcmVmKCk7XG4gICAgY29uc3QgY29sdW1uc0JveEhlaWdodFJlZiA9IHJlZigwKTtcbiAgICBjb25zdCBjb2x1bW5zTGluZUhlaWdodFJlZiA9IHJlZigwKTtcblxuICAgIGNvbnN0IHRvZ2dsZUNvbGxhcHNlID0gKCkgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBjdHguZW1pdChcInVwZGF0ZTpjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBjdHguZW1pdChcImNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCIpIHtcbiAgICAgICAgcmV0dXJuIHVpLmNvbC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiZGl2XCI7XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZWRJc011bHRpTGluZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCI7XG4gICAgICAvL+S4jeimgei/meS4qu+8jOS8muatu+W+queOr++8jCAmJiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID4gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZENvbHVtbkJveEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICghY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gXCJhdXRvXCI7XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5jb2xsYXBzZSkge1xuICAgICAgICByZXR1cm4gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgPyBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldDogKGZvcm06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGdldChmb3JtLCBrZXkpO1xuICAgICAgfSxcbiAgICAgIHVpLFxuICAgICAgb25WYWx1ZUNoYW5nZWQsXG4gICAgICBkb1NlYXJjaCxcbiAgICAgIGRvUmVzZXQsXG4gICAgICBmb3JtLFxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmcyxcbiAgICAgIGdldENvbXBvbmVudFJlbmRlclJlZixcbiAgICAgIGdldENvbXBvbmVudFJlZixcbiAgICAgIGdldEZvcm0sXG4gICAgICBzZXRGb3JtLFxuICAgICAgc2VhcmNoRm9ybVJlZixcbiAgICAgIG9uSW5wdXQsXG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjb21wdXRlZENvbHVtbnMsXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXG4gICAgICBjb21wdXRlZFJ1bGVzLFxuICAgICAgY29sdW1uc1Jvd1JlZixcbiAgICAgIGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0LFxuICAgICAgY29tcHV0ZWRDb2xOYW1lLFxuICAgICAgY29tcHV0ZWRJc011bHRpTGluZSxcbiAgICAgIHRvZ2dsZUNvbGxhcHNlLFxuICAgICAgc2VhcmNoRXZlbnRDb250ZXh0UmVmXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXNlYXJjaCB7XG4gIC8vZGlzcGxheTogZmxleDtcbiAgLy9mbGV4LXdyYXA6IG5vd3JhcDtcbiAgLnNlYXJjaC1sZWZ0IHtcbiAgfVxuICAuc2VhcmNoLXJpZ2h0IHtcbiAgICBmbGV4OiAxO1xuICB9XG4gIC5hbnQtZm9ybS1pbmxpbmUge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuICAuZnMtc2VhcmNoLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgLy8mID4gKiB7XG4gICAgLy8gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAvLyAgbWFyZ2luLXRvcDogNHB4O1xuICAgIC8vICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgLy99XG5cbiAgICAuZnMtc2VhcmNoLWJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIH1cbiAgICB9XG4gICAgLmZzLXNlYXJjaC1jb2wge1xuICAgICAgJiA+ICoge1xuICAgICAgICBtYXJnaW46IDBweCA1cHg7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIC8vIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5lbC1mb3JtLWl0ZW0ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmVsLWZvcm0tLWlubGluZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC5mcy1zZWFyY2gtYnRucyB7XG4gICAgLmZzLWJ1dHRvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG4gIH1cblxuICAmLmZzLXNlYXJjaC1tdWx0aS1saW5lIHtcbiAgICAuZnMtc2VhcmNoLWJveCB7XG4gICAgICAuZnMtc2VhcmNoLW1haW4ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAuZnMtc2VhcmNoLWNvbHVtbnMge1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgICAgLy8gdHJhbnNpdGlvbjogYWxsIDAuM3MgbGluZWFyO1xuICAgICAgICAgIC8vIHdpbGwtY2hhbmdlOiBoZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLmZzLXNlYXJjaC1idG5zIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICAgIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmZzLXNlYXJjaC1hY3Rpb24ge1xuICAgICAgLmFudC1mb3JtLWl0ZW0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmZzLXNlYXJjaCB7XG4gIC5uLWZvcm0taXRlbS1ibGFuayB7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHRcIiA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtbXVsdGktbGluZSc6IGNvbXB1dGVkSXNNdWx0aUxpbmUgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLW1haW5cIlxuICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtY29sbGFwc2UnOiBjb2xsYXBzZSB9XCJcbiAgICAgICAgOnN0eWxlPVwieyBtYXhIZWlnaHQ6IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0IH1cIlxuICAgICAgPlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgcmVmPVwiY29sdW1uc1Jvd1JlZlwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSDmn6Xor6LlrZfmrrVyZW5kZXLvvIzpnIDopoHlrprkuYlwcm9wcy5jb2x1bW5zIC0tPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIG9mIGNvbHVtbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbC5uYW1lXCIgdi1pZj1cIml0ZW0uc2hvd1wiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIm1lcmdlQ29sKGl0ZW0uY29sKVwiPlxuICAgICAgICAgICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cIml0ZW0uX2NlbGxSZW5kZXJcIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1taWRkbGVcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgIDppcz1cInVpLmNvbC5uYW1lXCJcbiAgICAgICAgICAgIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXBcIlxuICAgICAgICAgICAgdi1iaW5kPVwibWVyZ2VDb2woYWN0aW9uPy5jb2wpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIiA6W3VpLmZvcm1JdGVtLmxhYmVsXT1cImFjdGlvbj8ubGFiZWxcIj5cbiAgICAgICAgICAgICAgPCEtLSDmn6Xor6LmjInpkq7mj5Lmp70tLT5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1idXR0b25zXCIgdi1iaW5kPVwiZ2V0Q29udGV4dEZuKClcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtcmlnaHRcIiB2LWJpbmQ9XCJnZXRDb250ZXh0Rm4oKVwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgY2xhc3M9XCJmcy1zZWFyY2gtYnV0dG9ucy1ncm91cCBmcy1zZWFyY2gtbXVsdGktbGluZS1idXR0b25zXCI+XG4gICAgICAgIDwhLS0g5aSa6KGM5qih5byP5pe255qE5p+l6K+i5oyJ6ZKuLS0+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtYnV0dG9uc1wiPjwvc2xvdD5cbiAgICAgICAgPGZzLWJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJjb2xsYXBzZUJ1dHRvbj8uc2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgIDppY29uPVwiY29sbGFwc2UgPyB1aS5pY29ucy5jYXJldERvd24gOiB1aS5pY29ucy5jYXJldFVwXCJcbiAgICAgICAgICA6dGV4dD1cIlxuICAgICAgICAgICAgY29sbGFwc2VcbiAgICAgICAgICAgICAgPyB0KCdmcy5zZWFyY2guY29udGFpbmVyLmNvbGxhcHNlQnV0dG9uLnRleHQuZXhwYW5kJylcbiAgICAgICAgICAgICAgOiB0KCdmcy5zZWFyY2guY29udGFpbmVyLmNvbGxhcHNlQnV0dG9uLnRleHQuY29sbGFwc2UnKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgdi1iaW5kPVwiY29sbGFwc2VCdXR0b25cIlxuICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUNvbGxhcHNlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1NlYXJjaExheW91dERlZmF1bHRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlLbnvKlcbiAgICAgKi9cbiAgICBjb2xsYXBzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWxleW8gOaMiemSrlxuICAgICAqL1xuICAgIGNvbGxhcHNlQnV0dG9uOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuXG4gICAgYWN0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW4g+WxgOaooeW8j1xuICAgICAqL1xuICAgIGxheW91dDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJzaW5nbGUtbGluZVwiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LlrZfmrrXliJfooajvvIzlj6/ku6Xnsr7nu4bljJboh6rlrprkuYnmn6Xor6LlrZfmrrXluIPlsYBcbiAgICAgKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOm7mOiupOeahGNvbOmFjee9rlxuICAgICAqL1xuICAgIGNvbDoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOiOt+WPluafpeivouS4iuS4i+aWh1xuICAgICAqL1xuICAgIGdldENvbnRleHRGbjoge1xuICAgICAgdHlwZTogRnVuY3Rpb25cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6Y29sbGFwc2VcIiwgXCJjb2xsYXBzZVwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMubGF5b3V0ID09PSBcIm11bHRpLWxpbmVcIjtcbiAgICAgIC8v5LiN6KaB6L+Z5Liq77yM5Lya5q275b6q546v77yMICYmIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZTtcbiAgICB9KTtcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgaWYgKGNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgJiYgY29sdW1uc1Jvd1JlZi52YWx1ZSkge1xuICAgICAgICBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgfHwgIXByb3BzLmNvbGxhcHNlKSB7XG4gICAgICAgIHJldHVybiBcImF1dG9cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2x1bW5zQm94SGVpZ2h0UmVmID0gcmVmKDApO1xuXG4gICAgY29uc3QgdG9nZ2xlQ29sbGFwc2UgPSAoKSA9PiB7XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTpjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgICAgY3R4LmVtaXQoXCJjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbChjb2w6IGFueSkge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5jb2wsIGNvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY29sdW1uc1Jvd1JlZixcbiAgICAgIGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0LFxuICAgICAgY29tcHV0ZWRJc011bHRpTGluZSxcbiAgICAgIHRvZ2dsZUNvbGxhcHNlLFxuICAgICAgbWVyZ2VDb2wsXG4gICAgICB0XG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdCB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC5mcy1zZWFyY2gtYm94IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5mcy1zZWFyY2gtY29sdW1ucyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZzogNHB4IDAgNHB4IDA7XG5cbiAgICAgICAgLmZzLXNlYXJjaC1jb2wge1xuICAgICAgICAgIG1pbi13aWR0aDogMTgwcHg7XG4gICAgICAgICAgJi5mcy1zZWFyY2gtc2xvdCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgICYgPiAqIHtcbiAgICAgICAgICAgIG1hcmdpbjogMHB4IDRweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtYXJnaW46IDRweCAwO1xuXG4gICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuYW50LWlucHV0LW51bWJlcixcbiAgICAgICAgICAuYW50LXBpY2tlcixcbiAgICAgICAgICAuZWwtaW5wdXQtbnVtYmVyLFxuICAgICAgICAgIC5lbC1jYXNjYWRlcixcbiAgICAgICAgICAuZWwtZGF0ZS1lZGl0b3IsXG4gICAgICAgICAgLm4tc2VsZWN0LFxuICAgICAgICAgIC5uLWRhdGUtcGlja2VyLFxuICAgICAgICAgIC5uLWlucHV0LW51bWJlciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZzLXNlYXJjaC1idXR0b25zLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAuZnMtYnV0dG9uIHtcbiAgICAgIG1hcmdpbjogMCAycHggMCAycHg7XG4gICAgfVxuICB9XG5cbiAgJi5mcy1zZWFyY2gtbXVsdGktbGluZSB7XG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZTtcbiAgICAgICAgJi5mcy1zZWFyY2gtY29sbGFwc2Uge1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDQycHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5hbnQtZm9ybS1pdGVtIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIC5hbnQtZm9ybS1yb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5hbnQtZm9ybS1pdGVtLXJvdyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdFwiIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1tdWx0aS1saW5lJzogY29tcHV0ZWRJc011bHRpTGluZSB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1ib3hcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtbWFpblwiXG4gICAgICAgIDpjbGFzcz1cInsgJ2ZzLXNlYXJjaC1jb2xsYXBzZSc6IGNvbGxhcHNlIH1cIlxuICAgICAgICA6c3R5bGU9XCJ7IG1heEhlaWdodDogY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgfVwiXG4gICAgICA+XG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiByZWY9XCJjb2x1bW5zUm93UmVmXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sdW1uc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1sZWZ0XCI+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8IS0tIOafpeivouWtl+autXJlbmRlcu+8jOmcgOimgeWumuS5iXByb3BzLmNvbHVtbnMgLS0+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgb2YgY29sdW1uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sLm5hbWVcIiB2LWlmPVwiaXRlbS5zaG93XCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCIgdi1iaW5kPVwibWVyZ2VDb2woaXRlbS5jb2wpXCI+XG4gICAgICAgICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaXRlbS5fY2VsbFJlbmRlclwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1zbG90XCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLW1pZGRsZVwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgICAgOmlzPVwidWkuY29sLm5hbWVcIlxuICAgICAgICAgICAgdi1pZj1cIiFjb21wdXRlZElzTXVsdGlMaW5lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtYnV0dG9ucy1ncm91cFwiXG4gICAgICAgICAgICB2LWJpbmQ9XCJtZXJnZUNvbChhY3Rpb24/LmNvbClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiIDpbdWkuZm9ybUl0ZW0ubGFiZWxdPVwiYWN0aW9uPy5sYWJlbFwiPlxuICAgICAgICAgICAgICA8IS0tIOafpeivouaMiemSruaPkuanvS0tPlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWJ1dHRvbnNcIiB2LWJpbmQ9XCJnZXRDb250ZXh0Rm4oKVwiPjwvc2xvdD5cbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1yaWdodFwiIHYtYmluZD1cImdldENvbnRleHRGbigpXCI+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiBjbGFzcz1cImZzLXNlYXJjaC1idXR0b25zLWdyb3VwIGZzLXNlYXJjaC1tdWx0aS1saW5lLWJ1dHRvbnNcIj5cbiAgICAgICAgPCEtLSDlpJrooYzmqKHlvI/ml7bnmoTmn6Xor6LmjInpkq4tLT5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1idXR0b25zXCI+PC9zbG90PlxuICAgICAgICA8ZnMtYnV0dG9uXG4gICAgICAgICAgdi1pZj1cImNvbGxhcHNlQnV0dG9uPy5zaG93ICE9PSBmYWxzZVwiXG4gICAgICAgICAgOmljb249XCJjb2xsYXBzZSA/IHVpLmljb25zLmNhcmV0RG93biA6IHVpLmljb25zLmNhcmV0VXBcIlxuICAgICAgICAgIDp0ZXh0PVwiXG4gICAgICAgICAgICBjb2xsYXBzZVxuICAgICAgICAgICAgICA/IHQoJ2ZzLnNlYXJjaC5jb250YWluZXIuY29sbGFwc2VCdXR0b24udGV4dC5leHBhbmQnKVxuICAgICAgICAgICAgICA6IHQoJ2ZzLnNlYXJjaC5jb250YWluZXIuY29sbGFwc2VCdXR0b24udGV4dC5jb2xsYXBzZScpXG4gICAgICAgICAgXCJcbiAgICAgICAgICB2LWJpbmQ9XCJjb2xsYXBzZUJ1dHRvblwiXG4gICAgICAgICAgQGNsaWNrPVwidG9nZ2xlQ29sbGFwc2VcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG9uTW91bnRlZCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU2VhcmNoTGF5b3V0RGVmYXVsdFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuaUtue8qVxuICAgICAqL1xuICAgIGNvbGxhcHNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bGV5byA5oyJ6ZKuXG4gICAgICovXG4gICAgY29sbGFwc2VCdXR0b246IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG5cbiAgICBhY3Rpb246IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5biD5bGA5qih5byPXG4gICAgICovXG4gICAgbGF5b3V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcInNpbmdsZS1saW5lXCJcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeivouWtl+auteWIl+ihqO+8jOWPr+S7peeyvue7huWMluiHquWumuS5ieafpeivouWtl+auteW4g+WxgFxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6buY6K6k55qEY29s6YWN572uXG4gICAgICovXG4gICAgY29sOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog6I635Y+W5p+l6K+i5LiK5LiL5paHXG4gICAgICovXG4gICAgZ2V0Q29udGV4dEZuOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvblxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTpjb2xsYXBzZVwiLCBcImNvbGxhcHNlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb2x1bW5zUm93UmVmID0gcmVmKCk7XG4gICAgY29uc3QgY29tcHV0ZWRJc011bHRpTGluZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiO1xuICAgICAgLy/kuI3opoHov5nkuKrvvIzkvJrmrbvlvqrnjq/vvIwgJiYgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA+IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlO1xuICAgIH0pO1xuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBpZiAoY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSAmJiBjb2x1bW5zUm93UmVmLnZhbHVlKSB7XG4gICAgICAgIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZENvbHVtbkJveEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmICghY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSB8fCAhcHJvcHMuY29sbGFwc2UpIHtcbiAgICAgICAgcmV0dXJuIFwiYXV0b1wiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPyBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlICsgXCJweFwiIDogXCJcIjtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbHVtbnNCb3hIZWlnaHRSZWYgPSByZWYoMCk7XG5cbiAgICBjb25zdCB0b2dnbGVDb2xsYXBzZSA9ICgpID0+IHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOmNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XG4gICAgICBjdHguZW1pdChcImNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29sKGNvbDogYW55KSB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLmNvbCwgY29sKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjb2x1bW5zUm93UmVmLFxuICAgICAgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQsXG4gICAgICBjb21wdXRlZElzTXVsdGlMaW5lLFxuICAgICAgdG9nZ2xlQ29sbGFwc2UsXG4gICAgICBtZXJnZUNvbCxcbiAgICAgIHRcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtc2VhcmNoLWxheW91dC1kZWZhdWx0IHtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLmZzLXNlYXJjaC1ib3gge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuZnMtc2VhcmNoLW1haW4ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLmZzLXNlYXJjaC1jb2x1bW5zIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiA0cHggMCA0cHggMDtcblxuICAgICAgICAuZnMtc2VhcmNoLWNvbCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAxODBweDtcbiAgICAgICAgICAmLmZzLXNlYXJjaC1zbG90IHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgJiA+ICoge1xuICAgICAgICAgICAgbWFyZ2luOiAwcHggNHB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1hcmdpbjogNHB4IDA7XG5cbiAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5hbnQtaW5wdXQtbnVtYmVyLFxuICAgICAgICAgIC5hbnQtcGlja2VyLFxuICAgICAgICAgIC5lbC1pbnB1dC1udW1iZXIsXG4gICAgICAgICAgLmVsLWNhc2NhZGVyLFxuICAgICAgICAgIC5lbC1kYXRlLWVkaXRvcixcbiAgICAgICAgICAubi1zZWxlY3QsXG4gICAgICAgICAgLm4tZGF0ZS1waWNrZXIsXG4gICAgICAgICAgLm4taW5wdXQtbnVtYmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19pY29uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuZWwtZGF0ZS1lZGl0b3IgLmVsLXJhbmdlX19jbG9zZS1pY29uIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5mcy1idXR0b24ge1xuICAgICAgbWFyZ2luOiAwIDJweCAwIDJweDtcbiAgICB9XG4gIH1cblxuICAmLmZzLXNlYXJjaC1tdWx0aS1saW5lIHtcbiAgICAuZnMtc2VhcmNoLWJveCB7XG4gICAgICAuZnMtc2VhcmNoLW1haW4ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlO1xuICAgICAgICAmLmZzLXNlYXJjaC1jb2xsYXBzZSB7XG4gICAgICAgICAgbWF4LWhlaWdodDogNDJweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmFudC1mb3JtLWl0ZW0ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgLmFudC1mb3JtLXJvdyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLmFudC1mb3JtLWl0ZW0tcm93IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAuYW50LWZvcm0taXRlbS1jb250cm9sIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNUYWJzRmlsdGVyXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2Vcbn0pO1xuPC9zY3JpcHQ+XG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy10YWJzLWZpbHRlclwiPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkudGFicy5uYW1lXCIgdi1iaW5kPVwiYmluZGluZ1wiPlxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS50YWJQYW5lLm5hbWVcIlxuICAgICAgICB2LWlmPVwiZGVmYXVsdE9wdGlvbi5zaG93XCJcbiAgICAgICAgOlt1aS50YWJQYW5lLmtleV09XCJfX0RFRkFVTFRfX1wiXG4gICAgICAgIDpbdWkudGFiUGFuZS50YWJdPVwiZGVmYXVsdE9wdGlvbi5sYWJlbFwiXG4gICAgICAvPlxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS50YWJQYW5lLm5hbWVcIlxuICAgICAgICB2LWZvcj1cIihpdGVtLCBpbmRleCkgb2Ygb3B0aW9uc1wiXG4gICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgIDpbdWkudGFiUGFuZS5rZXldPVwiZ2V0VmFsdWUoaXRlbSlcIlxuICAgICAgICA6W3VpLnRhYlBhbmUudGFiXT1cImdldExhYmVsKGl0ZW0pXCJcbiAgICAgIC8+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgeyBjb21wdXRlZCwgdXNlQXR0cnMgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSwgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG47XG5cbnR5cGUgVGFic0ZpbHRlckRlZmF1bHRPcHRpb24gPSB7IHNob3c/OiBib29sZWFuOyB2YWx1ZT86IGFueTsgbGFiZWw/OiBzdHJpbmcgfTtcbnR5cGUgVGFic0ZpbHRlck9wdGlvbiA9IHsgdmFsdWU6IGFueTsgbGFiZWw6IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH07XG5pbnRlcmZhY2UgVGFic0ZpbHRlclByb3BzIHtcbiAgbmFtZTogc3RyaW5nOyAvL+afpeivouWtl+auteeahGtleSxzZWFyY2jlj4LmlbBrZXlcbiAgc2hvdz86IGJvb2xlYW47XG4gIGRlZmF1bHRPcHRpb24/OiBUYWJzRmlsdGVyRGVmYXVsdE9wdGlvbjtcbiAgb3B0aW9uczogVGFic0ZpbHRlck9wdGlvbltdO1xuICBtb2RlbFZhbHVlOiBhbnk7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuY29uc3QgYXR0cnMgPSB1c2VBdHRycygpO1xuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFRhYnNGaWx0ZXJQcm9wcz4oKSwge1xuICBzaG93OiBmYWxzZSxcbiAgdmFsdWU6IFwidmFsdWVcIixcbiAgbGFiZWw6IFwibGFiZWxcIixcbiAgZGVmYXVsdE9wdGlvbjogdW5kZWZpbmVkLFxuICBvcHRpb25zOiAoKSA9PiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59KTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgZGVmID0ge1xuICAgIHNob3c6IHRydWUsXG4gICAgdmFsdWU6IG51bGwsXG4gICAgbGFiZWw6IFwi5YWo6YOoXCJcbiAgfSBhcyBUYWJzRmlsdGVyRGVmYXVsdE9wdGlvbjtcbiAgcmV0dXJuIG1lcmdlKGRlZiwgcHJvcHMuZGVmYXVsdE9wdGlvbiB8fCB7fSk7XG59KTtcblxuY29uc3QgX19ERUZBVUxUX18gPSBcIl9kZWZhdWx0X2tleV9cIjtcbmNvbnN0IGJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHZhbHVlID1cbiAgICBwcm9wcy5tb2RlbFZhbHVlID09IG51bGwgfHwgcHJvcHMubW9kZWxWYWx1ZSA9PT0gZGVmYXVsdE9wdGlvbi52YWx1ZS52YWx1ZSA/IF9fREVGQVVMVF9fIDogcHJvcHMubW9kZWxWYWx1ZTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcImNhcmRcIixcbiAgICAuLi5hdHRycyxcbiAgICBbdWkudGFicy5tb2RlbFZhbHVlXTogdmFsdWUsXG4gICAgW1wib25VcGRhdGU6XCIgKyB1aS50YWJzLm1vZGVsVmFsdWVdOiBvblVwZGF0ZUFjdGl2ZUtleVxuICB9O1xufSk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcImNoYW5nZVwiXSk7XG5cbmZ1bmN0aW9uIG9uVXBkYXRlQWN0aXZlS2V5KHZhbHVlOiBhbnkpIHtcbiAgaWYgKF9fREVGQVVMVF9fID09PSB2YWx1ZSkge1xuICAgIHZhbHVlID0gZGVmYXVsdE9wdGlvbi52YWx1ZS52YWx1ZTtcbiAgfVxuICBjb25zdCBvbGRWYWx1ZSA9IHByb3BzLm1vZGVsVmFsdWU7XG4gIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XG4gIGlmIChvbGRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICBlbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZShvcHRpb246IFRhYnNGaWx0ZXJPcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbltwcm9wcy52YWx1ZV07XG59XG5mdW5jdGlvbiBnZXRMYWJlbChvcHRpb246IFRhYnNGaWx0ZXJPcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbltwcm9wcy5sYWJlbF07XG59XG5cbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdGFicy1maWx0ZXIge1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICAvL3dpZHRoOiAxMDAlO1xuICAuYW50LXRhYnMgPiAuYW50LXRhYnMtbmF2LFxuICAuYW50LXRhYnMgPiBkaXYgPiAuYW50LXRhYnMtbmF2IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLmVsLXRhYnMtLWNhcmQgPiAuZWwtdGFic19faGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLm4tdGFiLXBhbmUge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzSWNvblNlbGVjdG9yXCJcbn0pO1xuPC9zY3JpcHQ+XG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1pY29uLXNlbGVjdG9yXCI+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5pbnB1dC5uYW1lXCIgdi1iaW5kPVwiaW5wdXRCaW5kaW5nXCIgY2xhc3M9XCJmcy1pY29uLXNlbGVjdG9yLXNlYXJjaFwiIEBjbGljaz1cImhhbmRsZU9wZW5cIj5cbiAgICAgIDx0ZW1wbGF0ZSAjcHJlZml4PlxuICAgICAgICA8ZnMtaWNvbiB2LWlmPVwibW9kZWxWYWx1ZVwiIGNsYXNzPVwiZnMtaWNvbi1zZWxlY3Rvci1pbnB1dC1wcmVmaXhcIiA6aWNvbj1cIm1vZGVsVmFsdWVcIj48L2ZzLWljb24+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvY29tcG9uZW50PlxuXG4gICAgPGRpdiB2LWlmPVwiZGlhbG9nT3BlbmVkXCIgY2xhc3M9XCJmcy1pY29uLXNlbGVjdG9yLWRpYWxvZ1wiPlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kaWFsb2cubmFtZVwiIHByZXNldD1cImRpYWxvZ1wiIHRpdGxlPVwi6YCJ5oup5Zu+5qCHXCIgdi1iaW5kPVwiY29tcHV0ZWREaWFsb2dcIiA6Zm9vdGVyPVwibnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaWNvbi1zZWxlY3Rvci1kaWFsb2ctY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXRhYnMtYm94IG10LTEwXCI+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnRhYnMubmFtZVwiIHYtYmluZD1cImNvbXB1dGVUYWJzXCIgdHlwZT1cImNhcmRcIj5cbiAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS50YWJQYW5lLm5hbWVcIiBrZXk9XCJhbGxcIiA6W3VpLnRhYlBhbmUua2V5XT1cIidhbGwnXCIgOlt1aS50YWJQYW5lLnRhYl09XCIn5YWo6YOoJ1wiPlxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIDppcz1cInVpLnRhYlBhbmUubmFtZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJzZXQgb2YgaWNvblNldHNcIlxuICAgICAgICAgICAgICAgIDprZXk9XCJzZXRcIlxuICAgICAgICAgICAgICAgIDpbdWkudGFiUGFuZS5rZXldPVwic2V0XCJcbiAgICAgICAgICAgICAgICA6W3VpLnRhYlBhbmUudGFiXT1cInNldFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ib3hcIj5cbiAgICAgICAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIDppcz1cInVpLmlucHV0Lm5hbWVcIlxuICAgICAgICAgICAgICAgIHYtbW9kZWw6W3VpLmlucHV0Lm1vZGVsVmFsdWVdPVwic2VhcmNoS2V5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLmkJzntKLlm77moIcsIOWPjOWHu+mAieaLqVwiXG4gICAgICAgICAgICAgICAgQGtleWRvd24uZW50ZXI9XCJoYW5kbGVTZWFyY2hcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHRlbXBsYXRlICNzdWZmaXg+XG4gICAgICAgICAgICAgICAgICA8ZnMtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgc2l6ZT1cInNtYWxsXCIgOmljb249XCJ1aS5pY29ucy5zZWFyY2hcIiBAY2xpY2s9XCJoYW5kbGVTZWFyY2hcIj48L2ZzLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIOWbvuagh+minOiJsu+8mlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwiY29sb3JJdGVtIGluIGNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiY29sb3JJdGVtXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7IGFjdGl2ZTogY29sb3JJdGVtID09PSBjdXJyZW50Q29sb3IgfVwiXG4gICAgICAgICAgICAgICAgICA6c3R5bGU9XCJ7IGJhY2tncm91bmRDb2xvcjogY29sb3JJdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ29sb3JDaGFuZ2UoY29sb3JJdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29sb3JJdGVtID8gXCJcIiA6IFwi5pegXCIgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICAgICAgICA6aXM9XCJ1aS5pbnB1dC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMHB4XCJcbiAgICAgICAgICAgICAgICAgIDppY29uPVwidWkuaWNvbnMuc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIDpbdWkuaW5wdXQubW9kZWxWYWx1ZV09XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlQ29sb3JDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvY29tcG9uZW50PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwiaWNvbiBpbiBwYWdlci5yZWNvcmRzXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cInsgYWN0aXZlOiBpY29uID09PSBjdXJyZW50SWNvbiB9XCJcbiAgICAgICAgICAgICAgICAgIDp0aXRsZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlSWNvblNlbGVjdChpY29uLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgQGRibGNsaWNrPVwiaGFuZGxlSWNvblNlbGVjdChpY29uLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJjdXJyZW50Q29sb3IgPyBgJHtpY29ufToke2N1cnJlbnRDb2xvcn1gIDogaWNvblwiIGNsYXNzPVwidGV4dC0yeGxcIj48L2ZzLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkLW1vcmVcIj5cbiAgICAgICAgICAgICAgICA8ZnMtbG9hZGluZyB2LWlmPVwicGFnZXIubG9hZGluZ1wiIDpsb2FkaW5nPVwicGFnZXIubG9hZGluZ1wiIHRleHQ9XCLliqDovb3kuK1cIiAvPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwicGFnZXIudG90YWwgPT0gbnVsbCB8fCBwYWdlci50b3RhbCA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PuaaguaXoOaVsOaNrjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwicGFnZXIudG90YWwgPiBwYWdlci5zdGFydCArIHBhZ2VyLmxpbWl0XCIgQGNsaWNrPVwibG9hZE1vcmVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+5Yqg6L295pu05aSaPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxmcy1idXR0b24gdHlwZT1cInByaW1hcnlcIiBAY2xpY2s9XCJvbkNvbmZpcm1cIj7noa7lrpo8L2ZzLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCJAZmFzdC1jcnVkL3VpLWludGVyZmFjZVwiO1xuaW1wb3J0IHsgcmVmLCB1c2VBdHRycywgUmVmLCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcblxuO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1widXBkYXRlOm1vZGVsVmFsdWVcIl0pO1xuY29uc3QgZGVmYXVsdExpbWl0ID0gMTM2O1xuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gIG1vZGVsVmFsdWU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJcIlxuICB9LFxuICBkaWFsb2c6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICB9LFxuICB0YWJzOiB7XG4gICAgdHlwZTogT2JqZWN0LFxuICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgfSxcbiAgLy8g6ZmQ5Yi25q+P6aG15pi+56S65pWw6YePXG4gIGxpbWl0OiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIGRlZmF1bHQ6IDEzNlxuICB9LFxuICBpY29uU2V0czoge1xuICAgIHR5cGU6IEFycmF5PHN0cmluZz4sXG4gICAgZGVmYXVsdDogKCkgPT4gW1xuICAgICAgXCJsb2dvc1wiLFxuICAgICAgXCJmYS1icmFuZHNcIixcbiAgICAgIFwiZmEtc29saWRcIixcbiAgICAgIFwiZmEtcmVndWxhclwiLFxuICAgICAgXCJjYXJib25cIixcbiAgICAgIFwiaW9uXCIsXG4gICAgICBcImFudC1kZXNpZ25cIixcbiAgICAgIFwibWRpXCIsXG4gICAgICBcInR3ZW1vamlcIixcbiAgICAgIFwic3ZnLXNwaW5uZXJzXCJcbiAgICBdXG4gIH0sXG4gIGFwaVByb3ZpZGVyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ25cIlxuICB9LFxuICBjb2xvcnM6IHtcbiAgICB0eXBlOiBBcnJheTxzdHJpbmc+LFxuICAgIGRlZmF1bHQ6ICgpID0+IFtcbiAgICAgIFwiXCIsXG4gICAgICBcIiMwMDdBRkZcIixcbiAgICAgIFwiIzM0Qzc1OVwiLFxuICAgICAgXCIjRkY5NTAwXCIsXG4gICAgICBcIiNGRjNCMzBcIixcbiAgICAgIFwiI0ZGQ0MwMFwiLFxuICAgICAgXCIjNDI0MjQyXCIsXG4gICAgICBcIiM4RThFOTNcIixcbiAgICAgIFwiI0FGNTJERVwiLFxuICAgICAgXCIjNUFDOEZBXCIsXG4gICAgICBcIiNBMjg0NUVcIlxuICAgIF1cbiAgfVxufSk7XG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG5jb25zdCBkaWFsb2dPcGVuZWQgPSByZWYoZmFsc2UpO1xuY29uc3QgY29tcHV0ZWREaWFsb2cgPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IDEwMjQsXG4gICAgc3R5bGU6IHtcbiAgICAgIHdpZHRoOiBcIjEwMjRweFwiXG4gICAgfSxcbiAgICAuLi5wcm9wcy5kaWFsb2csXG4gICAgW3VpLmRpYWxvZy52aXNpYmxlXTogZGlhbG9nT3BlbmVkLnZhbHVlLFxuICAgIFtgb25VcGRhdGU6JHt1aS5kaWFsb2cudmlzaWJsZX1gXTogKHZhbDogYm9vbGVhbikgPT4ge1xuICAgICAgZGlhbG9nT3BlbmVkLnZhbHVlID0gdmFsO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5jb25zdCBmb3JtSXRlbUNvbnRleHQgPSB1aS5mb3JtSXRlbS5pbmplY3RGb3JtSXRlbUNvbnRleHQoKTtcbmNvbnN0IGlucHV0QmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5hdHRycyxcbiAgICBbdWkuaW5wdXQubW9kZWxWYWx1ZV06IHByb3BzLm1vZGVsVmFsdWUsXG4gICAgW2BvblVwZGF0ZToke3VpLmlucHV0Lm1vZGVsVmFsdWV9YF06ICh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgZW1pdENoYW5nZSh2YWwpO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5jb25zdCBlbWl0Q2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gIGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWwpO1xuICBmb3JtSXRlbUNvbnRleHQ/Lm9uQ2hhbmdlKCk7XG59O1xuXG5jb25zdCBoYW5kbGVPcGVuID0gKCkgPT4ge1xuICBkaWFsb2dPcGVuZWQudmFsdWUgPSB0cnVlO1xuICBpZiAocHJvcHMuaWNvblNldHMubGVuZ3RoID4gMCAmJiBwYWdlci52YWx1ZS5yZWNvcmRzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uVGFiQ2hhbmdlKHByb3BzLmljb25TZXRzWzBdIGFzIHN0cmluZyk7XG4gIH1cbiAgLy/liJ3lp4vljJZ2YWx1ZVxuICBjb25zdCBhcnIgPSBwcm9wcy5tb2RlbFZhbHVlPy5zcGxpdChcIjpcIikgfHwgW107XG4gIGlmIChhcnIubGVuZ3RoID49IDIpIHtcbiAgICBjdXJyZW50SWNvbi52YWx1ZSA9IGFyclswXSArIFwiOlwiICsgYXJyWzFdO1xuICAgIGN1cnJlbnRDb2xvci52YWx1ZSA9IGFyclsyXTtcbiAgfSBlbHNlIHtcbiAgICBjdXJyZW50SWNvbi52YWx1ZSA9IHByb3BzLm1vZGVsVmFsdWU7XG4gICAgY3VycmVudENvbG9yLnZhbHVlID0gXCJcIjtcbiAgfVxufTtcblxuY29uc3QgYXR0cnMgPSB1c2VBdHRycygpO1xuXG5jb25zdCBhcGkgPSB7XG4gIGFzeW5jIGdldENvbGxlY3Rpb25zKCkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3Byb3BzLmFwaVByb3ZpZGVyfS9jb2xsZWN0aW9uc2ApO1xuICAgIHJldHVybiBhd2FpdCByZXMuanNvbigpO1xuICB9LFxuICBhc3luYyBnZXRJY29ucyhwcmVmaXg6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3Byb3BzLmFwaVByb3ZpZGVyfS9jb2xsZWN0aW9uP3ByZWZpeD0ke3ByZWZpeH1gKTtcbiAgICByZXR1cm4gYXdhaXQgcmVzLmpzb24oKTtcbiAgfSxcbiAgYXN5bmMgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcsIHBhZ2VyOiBhbnkpIHtcbiAgICBjb25zdCBzdGFydCA9IHBhZ2VyLnN0YXJ0ID8/IDA7XG4gICAgY29uc3QgbGltaXQgPSBwYWdlci5saW1pdCA/PyA1MDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hcGlQcm92aWRlcn0vc2VhcmNoP3F1ZXJ5PSR7cXVlcnl9JnN0YXJ0PSR7c3RhcnR9JmxpbWl0PSR7bGltaXR9YCk7XG4gICAgcmV0dXJuIGF3YWl0IHJlcy5qc29uKCk7XG4gIH1cbn07XG5cbmNvbnN0IGljb25TdG9yZTogUmVmID0gcmVmKHt9KTtcblxuY29uc3QgbG9hZEljb25TZXQgPSBhc3luYyAocHJlZml4OiBzdHJpbmcpID0+IHtcbiAgbGV0IHNldHMgPSBpY29uU3RvcmUudmFsdWVbcHJlZml4XTtcbiAgaWYgKCFzZXRzKSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgYXBpLmdldEljb25zKHByZWZpeCk7XG4gICAgY29uc3QgdW5jYXRlZ29yaWVzID0gcmVzLnVuY2F0ZWdvcml6ZWQgPz8gW107XG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IHJlcy5jYXRlZ29yaWVzID8/IFtdO1xuICAgIHNldHMgPSB1bmNhdGVnb3JpZXM7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2F0ZWdvcmllcykge1xuICAgICAgc2V0cyA9IHNldHMuY29uY2F0KGNhdGVnb3JpZXNba2V5XSk7XG4gICAgfVxuICAgIHNldHMgPSBzZXRzLm1hcCgoaXRlbTogYW55KSA9PiBgJHtwcmVmaXh9OiR7aXRlbX1gKTtcbiAgICBpY29uU3RvcmUudmFsdWVbcHJlZml4XSA9IHNldHM7XG4gIH1cbiAgcmV0dXJuIHNldHM7XG59O1xuXG5jb25zdCBzZWFyY2hLZXkgPSByZWYoXCJcIik7XG5jb25zdCB0YWJLZXkgPSByZWYoXCJhbGxcIik7XG5jb25zdCBvblRhYkNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICB0YWJLZXkudmFsdWUgPSBrZXk7XG4gIHNlYXJjaEtleS52YWx1ZSA9IFwiXCI7XG4gIHJlc2V0UGFnZXIoKTtcbiAgaGFuZGxlU2VhcmNoKCk7XG59O1xuXG5jb25zdCByZXNldFBhZ2VyID0gKCkgPT4ge1xuICBwYWdlci52YWx1ZS5zdGFydCA9IDA7XG4gIHBhZ2VyLnZhbHVlLnJlY29yZHMgPSBbXTtcbiAgcGFnZXIudmFsdWUudG90YWwgPSAwO1xuICBwYWdlci52YWx1ZS5saW1pdCA9IHByb3BzLmxpbWl0ID8/IGRlZmF1bHRMaW1pdDtcbn07XG5cbmNvbnN0IHBhZ2VyID0gcmVmKHtcbiAgbG9hZGluZzogZmFsc2UsXG4gIHN0YXJ0OiAwLFxuICBsaW1pdDogcHJvcHMubGltaXQgPz8gZGVmYXVsdExpbWl0LFxuICB0b3RhbDogbnVsbCxcbiAgcXVlcnk6IFwiXCIsXG4gIHJlY29yZHM6IFtdXG59KTtcblxuY29uc3QgaGFuZGxlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICBpZiAocGFnZXIudmFsdWUubG9hZGluZykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocGFnZXIudmFsdWUucXVlcnkgIT09IHNlYXJjaEtleS52YWx1ZSkge1xuICAgIC8v6YeN572uc3RhcnRcbiAgICByZXNldFBhZ2VyKCk7XG4gIH1cblxuICBwYWdlci52YWx1ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBkb1NlYXJjaCgpO1xuICAgIHBhZ2VyLnZhbHVlLnJlY29yZHMgPSBwYWdlci52YWx1ZS5yZWNvcmRzLmNvbmNhdChyZXMuaWNvbnMpO1xuICAgIHBhZ2VyLnZhbHVlLnRvdGFsID0gcmVzLnRvdGFsO1xuICAgIHBhZ2VyLnZhbHVlLmxpbWl0ID0gcmVzLmxpbWl0O1xuICAgIHBhZ2VyLnZhbHVlLnF1ZXJ5ID0gc2VhcmNoS2V5LnZhbHVlO1xuICB9IGZpbmFsbHkge1xuICAgIHBhZ2VyLnZhbHVlLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxufTtcblxuYXN5bmMgZnVuY3Rpb24gZG9TZWFyY2goKSB7XG4gIGlmICh0YWJLZXkudmFsdWUgPT09IFwiYWxsXCIpIHtcbiAgICBpZiAoIXNlYXJjaEtleS52YWx1ZSkge1xuICAgICAgdWkubm90aWZpY2F0aW9uLndhcm4oXCLor7fovpPlhaXmkJzntKLlhbPplK7lrZdcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBhcGkuc2VhcmNoKHNlYXJjaEtleS52YWx1ZSwgcGFnZXIudmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhd2FpdCBnZXRQYWdlckZyb21JY29uU2V0KHRhYktleS52YWx1ZSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZXJGcm9tSWNvblNldChwcmVmaXg6IHN0cmluZykge1xuICBjb25zdCBpY29ucyA9IGF3YWl0IGxvYWRJY29uU2V0KHByZWZpeCk7XG4gIGxldCBmaWx0ZXJzID0gaWNvbnM7XG4gIGlmIChzZWFyY2hLZXkudmFsdWUpIHtcbiAgICBmaWx0ZXJzID0gaWNvbnMuZmlsdGVyKChpY29uOiBzdHJpbmcpID0+IGljb24uaW5jbHVkZXMoc2VhcmNoS2V5LnZhbHVlKSk7XG4gIH1cbiAgbGV0IGVuZCA9IHBhZ2VyLnZhbHVlLnN0YXJ0ICsgcGFnZXIudmFsdWUubGltaXQ7XG4gIGlmIChlbmQgPiBmaWx0ZXJzLmxlbmd0aCkge1xuICAgIGVuZCA9IGZpbHRlcnMubGVuZ3RoO1xuICB9XG4gIGNvbnN0IHBhZ2VySWNvbnMgPSBmaWx0ZXJzLnNsaWNlKHBhZ2VyLnZhbHVlLnN0YXJ0LCBlbmQpO1xuICByZXR1cm4ge1xuICAgIGljb25zOiBwYWdlckljb25zLFxuICAgIHRvdGFsOiBmaWx0ZXJzLmxlbmd0aCxcbiAgICBsaW1pdDogcGFnZXIudmFsdWUubGltaXQsXG4gICAgc3RhcnQ6IHBhZ2VyLnZhbHVlLnN0YXJ0XG4gIH07XG59XG5cbmNvbnN0IGN1cnJlbnRJY29uID0gcmVmKFwiXCIpO1xuY29uc3QgY3VycmVudENvbG9yID0gcmVmKFwiXCIpO1xuY29uc3QgaGFuZGxlSWNvblNlbGVjdCA9IChpY29uOiBzdHJpbmcsIGNvbmZpcm0gPSBmYWxzZSkgPT4ge1xuICBjdXJyZW50SWNvbi52YWx1ZSA9IGljb247XG4gIGlmIChjb25maXJtKSB7XG4gICAgb25Db25maXJtKCk7XG4gIH1cbn07XG5cbmNvbnN0IG9uQ29uZmlybSA9ICgpID0+IHtcbiAgZGlhbG9nT3BlbmVkLnZhbHVlID0gZmFsc2U7XG4gIGxldCB2YWx1ZSA9IGN1cnJlbnRJY29uLnZhbHVlO1xuICBpZiAoY3VycmVudENvbG9yLnZhbHVlKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSArIFwiOlwiICsgY3VycmVudENvbG9yLnZhbHVlO1xuICB9XG4gIGVtaXRDaGFuZ2UodmFsdWUpO1xufTtcblxuY29uc3QgaGFuZGxlQ29sb3JDaGFuZ2UgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBjdXJyZW50Q29sb3IudmFsdWUgPSBjb2xvcjtcbn07XG5cbmNvbnN0IGxvYWRNb3JlID0gYXN5bmMgKCkgPT4ge1xuICBwYWdlci52YWx1ZS5zdGFydCArPSBwYWdlci52YWx1ZS5saW1pdDtcbiAgYXdhaXQgaGFuZGxlU2VhcmNoKCk7XG59O1xuXG5jb25zdCBjb21wdXRlVGFicyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcy50YWJzLFxuICAgIFt1aS50YWJzLm1vZGVsVmFsdWVdOiB0YWJLZXkudmFsdWUsXG4gICAgW2BvblVwZGF0ZToke3VpLnRhYnMubW9kZWxWYWx1ZX1gXTogb25UYWJDaGFuZ2VcbiAgfTtcbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1pY29uLXNlbGVjdG9yIHtcbiAgLmZzLWljb24tc2VsZWN0b3ItaW5wdXQtcHJlZml4IHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIH1cbn1cbi5mcy1pY29uLXNlbGVjdG9yLWRpYWxvZy1jb250ZW50IHtcbiAgLmljb24tdGFicy1ib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4taGVpZ2h0OiA1MDBweDtcbiAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuXG4gICAgLnNlYXJjaC1ib3gge1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA1cHg7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgLnNlYXJjaC1pbnB1dCB7XG4gICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICB9XG5cbiAgICAgIC5jb2xvci1zZWxlY3Qge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNXB4O1xuICAgICAgICAuY29sb3ItaXRlbSB7XG4gICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2EyZjdmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCA1cHggI2EyZjdmZjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNDA5ZWZmO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDVweCAjNDA5ZWZmO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5sb2FkLW1vcmUge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC5pY29uLWNvbnRhaW5lciB7XG4gICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgZmxleDogMTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNGU3ZWQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAuaWNvbi1saXN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgLmljb24taXRlbSB7XG4gICAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgbWFyZ2luOiAycHg7XG4gICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzQwOWVmZjtcbiAgICAgICAgICAgIC8vc2hhZG93XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgNXB4ICM0MDllZmY7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzZjYjNmODtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmZzLWljb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgICAgICBtYXgtd2lkdGg6IDk2JTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA5NiU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkucmFkaW9Hcm91cC5uYW1lXCIgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIj5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb21wdXRlZFJhZGlvTmFtZVwiXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcbiAgICAgIHJlZj1cInJhZGlvUmVmXCJcbiAgICAgIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICA6W3VpLnJhZGlvLnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcbiAgICA+XG4gICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxuICAgIDwvY29tcG9uZW50PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG4vKipcbiAqIOWtl+WFuOWNlemAieahhlxuICog5pSv5oyBZWwtcmFkaW8tZ3JvdXB8YS1yYWRpby1ncm91cOeahOWPguaVsFxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RSYWRpb1wiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcblxuICAgIC8qKlxuICAgICAqIHJhZGlv57uE5Lu25ZCN56ewXG4gICAgICogYW50ZHbkvb/nlKhidXR0b27moLflvI/nmoTml7blgJnmnInnlKhcbiAgICAgKiDljbPlsIblup/lvIMs6K+35L2/55Sob3B0aW9uTmFtZVxuICAgICAqL1xuICAgIHJhZGlvTmFtZToge30sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcbiAgICAgKi9cbiAgICBvcHRpb25OYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uUHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5cbiAgICBpZiAocHJvcHMucmFkaW9OYW1lKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCLlj4LmlbByYWRpb05hbWXljbPlsIblup/lvIPvvIzor7fmlLnmiJBvcHRpb25OYW1lXCIpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZFJhZGlvTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25OYW1lID8/IHByb3BzLnJhZGlvTmFtZSA/PyB1aS5yYWRpby5uYW1lO1xuICAgIH0pO1xuXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4LCB1aS5yYWRpb0dyb3VwLm1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUudGFyZ2V0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudGFyZ2V0LnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCAmJiBkaWN0LmRhdGFNYXBbdmFsdWVdKSB7XG4gICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFt2YWx1ZV07XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY29tcHV0ZWRSYWRpb05hbWUsXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLnJhZGlvR3JvdXAubmFtZVwiIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCI+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29tcHV0ZWRSYWRpb05hbWVcIlxuICAgICAgdi1mb3I9XCJpdGVtIG9mIGNvbXB1dGVkT3B0aW9uc1wiXG4gICAgICByZWY9XCJyYWRpb1JlZlwiXG4gICAgICA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIlxuICAgICAgOlt1aS5yYWRpby52YWx1ZV09XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICB2LWJpbmQ9XCJvcHRpb25Qcm9wc1wiXG4gICAgPlxuICAgICAge3sgZ2V0TGFiZWwoaXRlbSkgfX1cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vdWlcIjtcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiDlrZflhbjljZXpgInmoYZcbiAqIOaUr+aMgWVsLXJhZGlvLWdyb3VwfGEtcmFkaW8tZ3JvdXDnmoTlj4LmlbBcbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0UmFkaW9cIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmlbDmja7lrZflhbjphY3nva5cbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDlj6/pgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXG5cbiAgICAvKipcbiAgICAgKiByYWRpb+e7hOS7tuWQjeensFxuICAgICAqIGFudGR25L2/55SoYnV0dG9u5qC35byP55qE5pe25YCZ5pyJ55SoXG4gICAgICog5Y2z5bCG5bqf5byDLOivt+S9v+eUqG9wdGlvbk5hbWVcbiAgICAgKi9cbiAgICByYWRpb05hbWU6IHt9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE57uE5Lu25ZCN56ewXG4gICAgICovXG4gICAgb3B0aW9uTmFtZToge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvblByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDovazmjaJEaWN0RGF0YVxuICAgICAqL1xuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImRpY3QtY2hhbmdlXCIsXG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lgLzlj5jljJbkuovku7bvvIzlj6/ku6Xojrflj5bliLDlvZPliY3pgInkuK3nmoRvcHRpb27lr7nosaFcbiAgICAgKi9cbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiY2hhbmdlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG4gICAgaWYgKHByb3BzLnJhZGlvTmFtZSkge1xuICAgICAgY29uc29sZS53YXJuKFwi5Y+C5pWwcmFkaW9OYW1l5Y2z5bCG5bqf5byD77yM6K+35pS55oiQb3B0aW9uTmFtZVwiKTtcbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRSYWRpb05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9uTmFtZSA/PyBwcm9wcy5yYWRpb05hbWUgPz8gdWkucmFkaW8ubmFtZTtcbiAgICB9KTtcblxuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkucmFkaW9Hcm91cC5tb2RlbFZhbHVlKTtcbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnRhcmdldCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRhcmdldC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXAgJiYgZGljdC5kYXRhTWFwW3ZhbHVlXSkge1xuICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbdmFsdWVdO1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBvcHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbXB1dGVkUmFkaW9OYW1lLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjxzY3JpcHQgbGFuZz1cInRzeFwiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RTZWxlY3RcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPHJlbmRlcj48L3JlbmRlcj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c3hcIiBzZXR1cD5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiwgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsIHVzZUF0dHJzIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjpgInmi6nmoYZcbiAqIOaUr+aMgWVsLXNlbGVjdHxhLXNlbGVjdOeahOWxnuaAp+mFjee9rlxuICovXG5cbjtcblxudHlwZSBQcm9wc1R5cGUgPSB7XG4gIC8qKlxuICAgKiDlrZflhbhcbiAgICovXG4gIGRpY3Q/OiBhbnk7XG4gIC8qKlxuICAgKiDlj6/pgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICovXG4gIG9wdGlvbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogc2VsZWN057uE5Lu255qE5o+S5qe9XG4gICAqL1xuICBzbG90cz86IGFueTtcblxuICAvKipcbiAgICog6Ieq5a6a5LmJbGFiZWznmoRyZW5kZXLmlrnms5VcbiAgICovXG4gIHJlbmRlckxhYmVsPzogKGl0ZW06IGFueSkgPT4gYW55O1xuICAvKipcbiAgICog6L2s5o2iRGljdERhdGFcbiAgICovXG4gIHRyYW5zZm9ybURpY3REYXRhPzogKGl0ZW06IGFueSkgPT4gYW55O1xufTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wc1R5cGU+KCk7XG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1wiZGljdC1jaGFuZ2VcIiwgXCJzZWxlY3RlZC1jaGFuZ2VcIiwgXCJjaGFuZ2VcIl0pO1xuXG5jb25zdCBzZWxlY3RSZWYgPSByZWYoKTtcbmNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuY29uc3QgY29tcHV0ZWRQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcHJvcHMucGxhY2Vob2xkZXIgfHwgdChcImZzLmNvbXBvbmVudC5zZWxlY3QucGxhY2Vob2xkZXJcIik7XG59KTtcblxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKTtcbmNvbnN0IGN0eCA9IHtcbiAgZW1pdCxcbiAgYXR0cnNcbn07XG5jb25zdCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuc2VsZWN0Lm1vZGVsVmFsdWUpO1xuY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG5cbmNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICBlbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgLy/lpoLmnpzmmK/mlbDnu4RcbiAgaWYgKHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBvcHRzID0gW107XG4gICAgZm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG4gICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXAgJiYgZGljdC5kYXRhTWFwW3ZdKSB7XG4gICAgICAgIG9wdHMucHVzaChkaWN0LmRhdGFNYXBbdl0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCAmJiBkaWN0LmRhdGFNYXBbdmFsdWVdKSB7XG4gICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW3ZhbHVlXTtcbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XG4gIH0gZWxzZSB7XG4gICAgZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgfVxufTtcblxuY29uc3QgdGVtcFNsb3RzID0gZGVmaW5lU2xvdHMoKTtcblxuZGVmaW5lRXhwb3NlKHtcbiAgc2VsZWN0UmVmLFxuICBjb21wdXRlZFBsYWNlaG9sZGVyLFxuICAuLi51c2VkRGljdCxcbiAgY29tcHV0ZWRPcHRpb25zLFxuICBvblNlbGVjdGVkQ2hhbmdlXG59KTtcblxuY29uc3QgcmVuZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICBjb25zdCBzZWxlY3RDb21wID0gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodWkuc2VsZWN0Lm5hbWUpO1xuICBjb25zdCB2TW9kZWwgPSB1aS5zZWxlY3QubW9kZWxWYWx1ZTtcbiAgaWYgKHVpLm9wdGlvbi5uYW1lID09IG51bGwpIHtcbiAgICAvL25haXZlIHVpXG4gICAgLy/ku6VvcHRpb25z5Y+C5pWw5L2c5Li6b3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb21wdXRlZE9wdGlvbnMudmFsdWUgfHwgW107XG4gICAgY29uc3QgYmluZGluZzogYW55ID0ge1xuICAgICAgW2BvblVwZGF0ZToke3ZNb2RlbH1gXTogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHRoaXMuJGVtaXQoYG9uVXBkYXRlOiR7dk1vZGVsfWAsIHZhbHVlKTtcbiAgICAgICAgb25TZWxlY3RlZENoYW5nZSh2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgLi4uYXR0cnNcbiAgICB9O1xuICAgIGNvbnN0IHRoaXNTbG90cyA9IHtcbiAgICAgIC4uLnRlbXBTbG90cyxcbiAgICAgIC4uLnByb3BzLnNsb3RzXG4gICAgfTtcbiAgICByZXR1cm4gKFxuICAgICAgPHNlbGVjdENvbXBcbiAgICAgICAgcmVmPXtcInNlbGVjdFJlZlwifVxuICAgICAgICBwbGFjZWhvbGRlcj17Y29tcHV0ZWRQbGFjZWhvbGRlci52YWx1ZX1cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgcmVuZGVyTGFiZWw9e3Byb3BzLnJlbmRlckxhYmVsfVxuICAgICAgICB2LXNsb3RzPXt0aGlzU2xvdHN9XG4gICAgICAgIHsuLi5iaW5kaW5nfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4gIC8vIG9wdGlvbnMg5Li65a2Q57uE5Lu2XG4gIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgY29uc3Qgb3B0aW9uQ29tcCA9IHJlc29sdmVEeW5hbWljQ29tcG9uZW50KHVpLm9wdGlvbi5uYW1lKTtcbiAgY29uc3QgY29zID0gY29tcHV0ZWRPcHRpb25zLnZhbHVlIHx8IFtdO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29zKSB7XG4gICAgY29uc3Qgb3B0aW9uID0gKFxuICAgICAgPG9wdGlvbkNvbXAgey4uLml0ZW19IHZhbHVlPXt1c2VkRGljdC5nZXRWYWx1ZShpdGVtKX0gbGFiZWw9e3VzZWREaWN0LmdldExhYmVsKGl0ZW0pfT5cbiAgICAgICAge3Byb3BzLnJlbmRlckxhYmVsID8gcHJvcHMucmVuZGVyTGFiZWwoaXRlbSkgOiB1c2VkRGljdC5nZXRMYWJlbChpdGVtKX1cbiAgICAgIDwvb3B0aW9uQ29tcD5cbiAgICApO1xuICAgIG9wdGlvbnMucHVzaChvcHRpb24pO1xuICB9XG4gIGNvbnN0IHRoaXNTbG90cyA9IHtcbiAgICBkZWZhdWx0OiAoKSA9PiBvcHRpb25zLFxuICAgIC4uLnRlbXBTbG90cyxcbiAgICAuLi5wcm9wcy5zbG90c1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxzZWxlY3RDb21wXG4gICAgICByZWY9e1wic2VsZWN0UmVmXCJ9XG4gICAgICBwbGFjZWhvbGRlcj17Y29tcHV0ZWRQbGFjZWhvbGRlci52YWx1ZX1cbiAgICAgIHYtc2xvdHM9e3RoaXNTbG90c31cbiAgICAgIG9uQ2hhbmdlPXtvblNlbGVjdGVkQ2hhbmdlfVxuICAgICAgey4uLmF0dHJzfVxuICAgIC8+XG4gICk7XG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5hbnQtc2VsZWN0LW11bHRpcGxlIHtcbiAgbWluLXdpZHRoOiAxMDBweDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzcGFuIGNsYXNzPVwiZnMtdmFsdWVzLWZvcm1hdFwiPlxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbVJlbmRlclwiPlxuICAgICAgPGZzLXJlbmRlciB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCIgOnJlbmRlci1mdW5jPVwiaXRlbVJlbmRlclwiIDpzY29wZT1cIml0ZW1cIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cInR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgPHNwYW4gdi1mb3I9XCJpdGVtIGluIGNvbXB1dGVkVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwidWkudGFnLm5hbWVcIlxuICAgICAgICAgIGNsYXNzPVwiZnMtdGFnXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIDpjbG9zYWJsZT1cImNsb3NhYmxlXCJcbiAgICAgICAgICB2LWJpbmQ9XCJpdGVtXCJcbiAgICAgICAgICA6aWNvbj1cIm51bGxcIlxuICAgICAgICAgIDpuYW1lPVwibnVsbFwiXG4gICAgICAgICAgQGNsb3NlPVwiZG9DbG9zZShpbmRleCwgaXRlbSlcIlxuICAgICAgICAgIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgIDxmcy1pY29uIDppY29uPVwiaXRlbS5pY29uXCIgOnNwaW49XCJpdGVtLmljb25TcGluXCIgY2xhc3M9XCJmcy10YWctaWNvblwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGZvckVhY2gsIG9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5mdW5jdGlvbiBnZXRIYXNoQ29kZShzdHI6IHN0cmluZykge1xuICBpZiAoc3RyID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KHN0cik7XG4gIH1cbiAgbGV0IGhhc2ggPSAwO1xuICBsZXQgaTtcbiAgbGV0IGNocjtcbiAgbGV0IGxlbjtcbiAgaWYgKHN0ci5sZW5ndGggPT09IDApIHJldHVybiBoYXNoO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjaHIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hyO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpO1xufVxuXG5mdW5jdGlvbiBidWlsZEFycmF5VmFsdWUocHJvcHM6IGFueSkge1xuICBsZXQgdmFsdWVBcnIgPSBbXTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5tb2RlbFZhbHVlID09PSBcInN0cmluZ1wiICYmIHByb3BzLm11bHRpcGxlICYmIHByb3BzLnNlcGFyYXRvciAhPSBudWxsICYmIHByb3BzLnNlcGFyYXRvciAhPT0gXCJcIikge1xuICAgIHZhbHVlQXJyID0gcHJvcHMubW9kZWxWYWx1ZS5zcGxpdChwcm9wcy5zZXBhcmF0b3IpO1xuICB9IGVsc2UgaWYgKHByb3BzLm1vZGVsVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIC8vIOacrOadpeWwseaYr+aVsOe7hOeahFxuICAgIHZhbHVlQXJyID0gcHJvcHMubW9kZWxWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZUFyciA9IFtwcm9wcy5tb2RlbFZhbHVlXTtcbiAgfVxuICByZXR1cm4gdmFsdWVBcnI7XG59XG5cbi8qKlxuICogdmFsdWXmoLzlvI/ljJblsZXnpLrnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1ZhbHVlc0Zvcm1hdFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWAvFxuICAgICAqL1xuICAgIG1vZGVsVmFsdWU6IHt9LFxuICAgIC8qKlxuICAgICAqIOWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqL1xuICAgIG11bHRpcGxlOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAvKipcbiAgICAgKiDliIbpmpTnrKY8YnIvPlxuICAgICAqIOWkmumAieaXtu+8jOWmguaenHZhbHVl5Li6c3RyaW5n77yM5YiZ5Lul6K+l5YiG6ZqU56ym5YiG5Ymy5oiQ5aSa5Liq5bGV56S6PGJyLz5cbiAgICAgKiDkvKDlhaXnqbrlrZfnrKbkuLLvvIzooajnpLrkuI3liIblibI8YnIvPlxuICAgICAqL1xuICAgIHNlcGFyYXRvcjogeyBkZWZhdWx0OiBcIixcIiB9LFxuXG4gICAgLyoqXG4gICAgICog6aKc6ImyXG4gICAgICogZWxlbWVudD3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXIgLGluZm/jgJFcbiAgICAgKiBhbnRkdj3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCBibHVlLHJlZCwuLi7jgJFcbiAgICAgKiDphY3nva5hdXRv77yM5YiZ6Ieq5Yqo5qC55o2udmFsdWXlgLxoYXNoY29kZeWIhumFjeminOiJsuWAvFxuICAgICAqL1xuICAgIGNvbG9yOiB7fSxcbiAgICAvKipcbiAgICAgKiDmlYjmnpzvvIjku4VlbGVtZW5077yJXG4gICAgICoqL1xuICAgIGVmZmVjdDoge30sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5p+T6Imy6aKc6Imy5YC85YiX6KGoXG4gICAgICovXG4gICAgYXV0b0NvbG9yczoge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWKqOS4u+mimOWIl+ihqO+8iOS7hWVsZW1lbnTvvIlcbiAgICAgKiDjgJAgbGlnaHQsIHBsYWluIOOAkVxuICAgICAqL1xuICAgIGF1dG9FZmZlY3RzOiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5pi+56S657G75Z6L77ya44CQdGV4dCwgdGFn44CRXG4gICAgICovXG4gICAgdHlwZToge1xuICAgICAgZGVmYXVsdDogXCJ0YWdcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YC855qE57G75Z6L77yM44CQIHZhbHVlIHwgb2JqZWN044CRXG4gICAgICovXG4gICAgdmFsdWVUeXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW9k3ZhbHVl5YC85LiN5Zyo5a2X5YW45Lit5pe26buY6K6k5pi+56S655qE5paH5pysXG4gICAgICovXG4gICAgZGVmYXVsdExhYmVsOiB7fSxcblxuICAgIC8qKlxuICAgICAqIGxhYmVs6Ieq5a6a5LmJcmVuZGVyXG4gICAgICovXG4gICAgbGFiZWxGb3JtYXR0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnpgInpoblyZW5kZXJcbiAgICAgKi9cbiAgICBpdGVtUmVuZGVyOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvblxuICAgIH0sXG5cbiAgICBjbG9zYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBlbWl0czogW1wiY2xpY2tcIiwgXCJkaWN0LWNoYW5nZVwiLCBcImNsb3NlXCIsIFwidXBkYXRlOm1vZGVsVmFsdWVcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgLy8gdHJhY2UudHJhY2UoXCJ2YWx1ZXMtZm9ybWF0XCIpO1xuICAgIC8vIGNvbnNvbGUubG9nKFwidmFsdWVzLWZvcm1hdCBpbml0XCIsIHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIC8vY29uc3QgZGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBDT0xPUl9MSVNUID0gdWkudGFnLmNvbG9ycztcbiAgICBjb25zdCBFRkZFQ1RfTElTVCA9IFtcInBsYWluXCIsIFwibGlnaHRcIl07XG5cbiAgICBjb25zdCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyBnZXRDb2xvciwgZ2V0VmFsdWUsIHJlbW92ZVByb3BWYWx1ZSB9ID0gdXNlZERpY3Q7XG4gICAgdXNlZERpY3Qud2F0Y2hWYWx1ZSgpO1xuICAgIGZ1bmN0aW9uIHNldENvbG9yKHByb3BzOiBhbnksIGl0ZW06IGFueSkge1xuICAgICAgaWYgKCFpdGVtLmVmZmVjdCAmJiBwcm9wcy5lZmZlY3QpIHtcbiAgICAgICAgaXRlbS5lZmZlY3QgPSBwcm9wcy5lZmZlY3Q7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlS2V5ID0gdWkudGFnLnR5cGU7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKGl0ZW0pO1xuICAgICAgaWYgKGNvbG9yICE9IG51bGwpIHtcbiAgICAgICAgLy/lpoLmnpzlt7Lnu4/phY3nva7kuoZjb2xvclxuICAgICAgICBpZiAodHlwZW9mIGNvbG9yICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy/lsIbljp/mnInnmoRjb2xvcuWtl+auteWIoOaOie+8jOmBv+WFjW5haXZlIGNvbG9y5oql6ZSZXG4gICAgICAgIHJlbW92ZVByb3BWYWx1ZShpdGVtLCBcImNvbG9yXCIpO1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gY29sb3I7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jb2xvciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgY29uc3QgaGFzaGNvZGUgPSBnZXRIYXNoQ29kZShnZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGFzaGNvZGVcIiwgZ2V0VmFsdWUoaXRlbSksIGhhc2hjb2RlKTtcbiAgICAgICAgY29uc3QgY29sb3JzID0gcHJvcHMuYXV0b0NvbG9ycyA/IHByb3BzLmF1dG9Db2xvcnMgOiBDT0xPUl9MSVNUO1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gY29sb3JzW2hhc2hjb2RlICUgY29sb3JzLmxlbmd0aF07XG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBwcm9wcy5hdXRvRWZmZWN0cyA/IHByb3BzLmF1dG9FZmZlY3RzIDogRUZGRUNUX0xJU1Q7XG4gICAgICAgIGl0ZW0uZWZmZWN0ID0gZWZmZWN0c1tNYXRoLmZsb29yKGhhc2hjb2RlIC8gY29sb3JzLmxlbmd0aCkgJSBlZmZlY3RzLmxlbmd0aF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gcHJvcHMuY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRWYWx1ZUl0ZW1zOiBSZWY8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLnZhbHVlVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSAmJiAhQXJyYXkuaXNBcnJheShwcm9wcy5tb2RlbFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBbcHJvcHMubW9kZWxWYWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BzLm1vZGVsVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSA9PSBudWxsIHx8IHByb3BzLm1vZGVsVmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWVBcnIgPSBidWlsZEFycmF5VmFsdWUocHJvcHMpO1xuXG4gICAgICBsZXQgb3B0aW9ucyA9IFtdO1xuXG4gICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wcy5kaWN0Py52YWx1ZSB8fCBcInZhbHVlXCI7XG4gICAgICBjb25zdCBsYWJlbFByb3AgPSBwcm9wcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCI7XG5cbiAgICAgIGlmIChkaWN0KSB7XG4gICAgICAgIG9wdGlvbnMgPSBkaWN0LmdldE5vZGVzRnJvbURhdGFNYXAodmFsdWVBcnIpO1xuICAgICAgICAvL+iuvue9rum7mOiupGxhYmVsXG4gICAgICAgIGZvckVhY2gob3B0aW9ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbVtsYWJlbFByb3BdID09IG51bGwpIHtcbiAgICAgICAgICAgIGl0ZW1bbGFiZWxQcm9wXSA9IHByb3BzLmRlZmF1bHRMYWJlbCB8fCBpdGVtW3ZhbHVlUHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh2YWx1ZUFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgICBbdmFsdWVQcm9wXTogaXRlbSxcbiAgICAgICAgICAgICAgW2xhYmVsUHJvcF06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbG9yZnVsT3B0aW9uczogYW55ID0gW107XG4gICAgICBmb3JFYWNoKG9wdGlvbnMsIChpdGVtKSA9PiB7XG4gICAgICAgIGNvbG9yZnVsT3B0aW9ucy5wdXNoKG9taXQoaXRlbSwgXCJjaGlsZHJlblwiKSk7XG4gICAgICB9KTtcbiAgICAgIGZvckVhY2goY29sb3JmdWxPcHRpb25zLCAoaXRlbSkgPT4ge1xuICAgICAgICBzZXRDb2xvcihwcm9wcywgaXRlbSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb2xvcmZ1bE9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBkb0NsaWNrKGl0ZW06IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJjbGlja1wiLCB7IGl0ZW06IGl0ZW0gfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRvQ2xvc2UoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgICBjdHguZW1pdChcImNsb3NlXCIsIHsgaXRlbSwgaW5kZXggfSk7XG4gICAgICBjb25zdCBuZXdWYWx1ZXM6IGFueVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcbiAgICAgICAgICBuZXdWYWx1ZXMucHVzaChnZXRWYWx1ZShjb21wdXRlZFZhbHVlSXRlbXMudmFsdWVbaV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdWYWx1ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgZG9DbGljayxcbiAgICAgIGNvbXB1dGVkVmFsdWVJdGVtcyxcbiAgICAgIGRvQ2xvc2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdmFsdWVzLWZvcm1hdCAuZnMtdGFnIHtcbiAgbWFyZ2luOiAycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLmZzLXRhZy1pY29uIHtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJmcy12YWx1ZXMtZm9ybWF0XCI+XG4gICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtUmVuZGVyXCI+XG4gICAgICA8ZnMtcmVuZGVyIHYtZm9yPVwiaXRlbSBpbiBjb21wdXRlZFZhbHVlSXRlbXNcIiA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIiA6cmVuZGVyLWZ1bmM9XCJpdGVtUmVuZGVyXCIgOnNjb3BlPVwiaXRlbVwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwidHlwZSA9PT0gJ3RleHQnXCI+XG4gICAgICA8c3BhbiB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCIgQGNsaWNrPVwiZG9DbGljayhpdGVtKVwiPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCI+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJ1aS50YWcubmFtZVwiXG4gICAgICAgICAgY2xhc3M9XCJmcy10YWdcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgOmNsb3NhYmxlPVwiY2xvc2FibGVcIlxuICAgICAgICAgIHYtYmluZD1cIml0ZW1cIlxuICAgICAgICAgIDppY29uPVwibnVsbFwiXG4gICAgICAgICAgOm5hbWU9XCJudWxsXCJcbiAgICAgICAgICBAY2xvc2U9XCJkb0Nsb3NlKGluZGV4LCBpdGVtKVwiXG4gICAgICAgICAgQGNsaWNrPVwiZG9DbGljayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJpdGVtLmljb25cIiA6c3Bpbj1cIml0ZW0uaWNvblNwaW5cIiBjbGFzcz1cImZzLXRhZy1pY29uXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIHt7IGdldExhYmVsKGl0ZW0pIH19XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZm9yRWFjaCwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmZ1bmN0aW9uIGdldEhhc2hDb2RlKHN0cjogc3RyaW5nKSB7XG4gIGlmIChzdHIgPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgc3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyKTtcbiAgfVxuICBsZXQgaGFzaCA9IDA7XG4gIGxldCBpO1xuICBsZXQgY2hyO1xuICBsZXQgbGVuO1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2g7XG4gIGZvciAoaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNociA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXJyYXlWYWx1ZShwcm9wczogYW55KSB7XG4gIGxldCB2YWx1ZUFyciA9IFtdO1xuICBpZiAodHlwZW9mIHByb3BzLm1vZGVsVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcHJvcHMubXVsdGlwbGUgJiYgcHJvcHMuc2VwYXJhdG9yICE9IG51bGwgJiYgcHJvcHMuc2VwYXJhdG9yICE9PSBcIlwiKSB7XG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlLnNwbGl0KHByb3BzLnNlcGFyYXRvcik7XG4gIH0gZWxzZSBpZiAocHJvcHMubW9kZWxWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgLy8g5pys5p2l5bCx5piv5pWw57uE55qEXG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlQXJyID0gW3Byb3BzLm1vZGVsVmFsdWVdO1xuICB9XG4gIHJldHVybiB2YWx1ZUFycjtcbn1cblxuLyoqXG4gKiB2YWx1ZeagvOW8j+WMluWxleekuue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzVmFsdWVzRm9ybWF0XCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5YC8XG4gICAgICovXG4gICAgbW9kZWxWYWx1ZToge30sXG4gICAgLyoqXG4gICAgICog5a2X5YW46YWN572uXG4gICAgICovXG4gICAgZGljdDoge30sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICovXG4gICAgbXVsdGlwbGU6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIC8qKlxuICAgICAqIOWIhumalOespjxici8+XG4gICAgICog5aSa6YCJ5pe277yM5aaC5p6cdmFsdWXkuLpzdHJpbmfvvIzliJnku6Xor6XliIbpmpTnrKbliIblibLmiJDlpJrkuKrlsZXnpLo8YnIvPlxuICAgICAqIOS8oOWFpeepuuWtl+espuS4su+8jOihqOekuuS4jeWIhuWJsjxici8+XG4gICAgICovXG4gICAgc2VwYXJhdG9yOiB7IGRlZmF1bHQ6IFwiLFwiIH0sXG5cbiAgICAvKipcbiAgICAgKiDpopzoibJcbiAgICAgKiBlbGVtZW50PeOAkGF1dG8sIHByaW1hcnksIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlciAsaW5mb+OAkVxuICAgICAqIGFudGR2PeOAkGF1dG8sIHByaW1hcnksIHN1Y2Nlc3MsIGJsdWUscmVkLC4uLuOAkVxuICAgICAqIOmFjee9rmF1dG/vvIzliJnoh6rliqjmoLnmja52YWx1ZeWAvGhhc2hjb2Rl5YiG6YWN6aKc6Imy5YC8XG4gICAgICovXG4gICAgY29sb3I6IHt9LFxuICAgIC8qKlxuICAgICAqIOaViOaenO+8iOS7hWVsZW1lbnTvvIlcbiAgICAgKiovXG4gICAgZWZmZWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDoh6rliqjmn5PoibLpopzoibLlgLzliJfooahcbiAgICAgKi9cbiAgICBhdXRvQ29sb3JzOiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5Li76aKY5YiX6KGo77yI5LuFZWxlbWVudO+8iVxuICAgICAqIOOAkCBsaWdodCwgcGxhaW4g44CRXG4gICAgICovXG4gICAgYXV0b0VmZmVjdHM6IHtcbiAgICAgIHR5cGU6IEFycmF5XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmL7npLrnsbvlnovvvJrjgJB0ZXh0LCB0YWfjgJFcbiAgICAgKi9cbiAgICB0eXBlOiB7XG4gICAgICBkZWZhdWx0OiBcInRhZ1wiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlgLznmoTnsbvlnovvvIzjgJAgdmFsdWUgfCBvYmplY3TjgJFcbiAgICAgKi9cbiAgICB2YWx1ZVR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2TdmFsdWXlgLzkuI3lnKjlrZflhbjkuK3ml7bpu5jorqTmmL7npLrnmoTmlofmnKxcbiAgICAgKi9cbiAgICBkZWZhdWx0TGFiZWw6IHt9LFxuXG4gICAgLyoqXG4gICAgICogbGFiZWzoh6rlrprkuYlyZW5kZXJcbiAgICAgKi9cbiAgICBsYWJlbEZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogRnVuY3Rpb25cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iemAiemhuXJlbmRlclxuICAgICAqL1xuICAgIGl0ZW1SZW5kZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfSxcblxuICAgIGNsb3NhYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJjbGlja1wiLCBcImRpY3QtY2hhbmdlXCIsIFwiY2xvc2VcIiwgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcbiAgICAvLyB0cmFjZS50cmFjZShcInZhbHVlcy1mb3JtYXRcIik7XG4gICAgLy8gY29uc29sZS5sb2coXCJ2YWx1ZXMtZm9ybWF0IGluaXRcIiwgcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgLy9jb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IENPTE9SX0xJU1QgPSB1aS50YWcuY29sb3JzO1xuICAgIGNvbnN0IEVGRkVDVF9MSVNUID0gW1wicGxhaW5cIiwgXCJsaWdodFwiXTtcblxuICAgIGNvbnN0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB7IGdldENvbG9yLCBnZXRWYWx1ZSwgcmVtb3ZlUHJvcFZhbHVlIH0gPSB1c2VkRGljdDtcbiAgICB1c2VkRGljdC53YXRjaFZhbHVlKCk7XG4gICAgZnVuY3Rpb24gc2V0Q29sb3IocHJvcHM6IGFueSwgaXRlbTogYW55KSB7XG4gICAgICBpZiAoIWl0ZW0uZWZmZWN0ICYmIHByb3BzLmVmZmVjdCkge1xuICAgICAgICBpdGVtLmVmZmVjdCA9IHByb3BzLmVmZmVjdDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGVLZXkgPSB1aS50YWcudHlwZTtcbiAgICAgIGNvbnN0IGNvbG9yID0gZ2V0Q29sb3IoaXRlbSk7XG4gICAgICBpZiAoY29sb3IgIT0gbnVsbCkge1xuICAgICAgICAvL+WmguaenOW3sue7j+mFjee9ruS6hmNvbG9yXG4gICAgICAgIGlmICh0eXBlb2YgY29sb3IgIT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvL+WwhuWOn+acieeahGNvbG9y5a2X5q615Yig5o6J77yM6YG/5YWNbmFpdmUgY29sb3LmiqXplJlcbiAgICAgICAgcmVtb3ZlUHJvcFZhbHVlKGl0ZW0sIFwiY29sb3JcIik7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcjtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNvbG9yID09PSBcImF1dG9cIikge1xuICAgICAgICBjb25zdCBoYXNoY29kZSA9IGdldEhhc2hDb2RlKGdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJoYXNoY29kZVwiLCBnZXRWYWx1ZShpdGVtKSwgaGFzaGNvZGUpO1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBwcm9wcy5hdXRvQ29sb3JzID8gcHJvcHMuYXV0b0NvbG9ycyA6IENPTE9SX0xJU1Q7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcnNbaGFzaGNvZGUgJSBjb2xvcnMubGVuZ3RoXTtcbiAgICAgICAgY29uc3QgZWZmZWN0cyA9IHByb3BzLmF1dG9FZmZlY3RzID8gcHJvcHMuYXV0b0VmZmVjdHMgOiBFRkZFQ1RfTElTVDtcbiAgICAgICAgaXRlbS5lZmZlY3QgPSBlZmZlY3RzW01hdGguZmxvb3IoaGFzaGNvZGUgLyBjb2xvcnMubGVuZ3RoKSAlIGVmZmVjdHMubGVuZ3RoXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBwcm9wcy5jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZFZhbHVlSXRlbXM6IFJlZjxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChwcm9wcy5tb2RlbFZhbHVlICYmICFBcnJheS5pc0FycmF5KHByb3BzLm1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIFtwcm9wcy5tb2RlbFZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHMubW9kZWxWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgIGlmIChwcm9wcy5tb2RlbFZhbHVlID09IG51bGwgfHwgcHJvcHMubW9kZWxWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZUFyciA9IGJ1aWxkQXJyYXlWYWx1ZShwcm9wcyk7XG5cbiAgICAgIGxldCBvcHRpb25zID0gW107XG5cbiAgICAgIGNvbnN0IHZhbHVlUHJvcCA9IHByb3BzLmRpY3Q/LnZhbHVlIHx8IFwidmFsdWVcIjtcbiAgICAgIGNvbnN0IGxhYmVsUHJvcCA9IHByb3BzLmRpY3Q/LmxhYmVsIHx8IFwibGFiZWxcIjtcblxuICAgICAgaWYgKGRpY3QpIHtcbiAgICAgICAgb3B0aW9ucyA9IGRpY3QuZ2V0Tm9kZXNGcm9tRGF0YU1hcCh2YWx1ZUFycik7XG4gICAgICAgIC8v6K6+572u6buY6K6kbGFiZWxcbiAgICAgICAgZm9yRWFjaChvcHRpb25zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtW2xhYmVsUHJvcF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgaXRlbVtsYWJlbFByb3BdID0gcHJvcHMuZGVmYXVsdExhYmVsIHx8IGl0ZW1bdmFsdWVQcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IFtdO1xuICAgICAgICBmb3JFYWNoKHZhbHVlQXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIFt2YWx1ZVByb3BdOiBpdGVtLFxuICAgICAgICAgICAgICBbbGFiZWxQcm9wXTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29sb3JmdWxPcHRpb25zOiBhbnkgPSBbXTtcbiAgICAgIGZvckVhY2gob3B0aW9ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgY29sb3JmdWxPcHRpb25zLnB1c2gob21pdChpdGVtLCBcImNoaWxkcmVuXCIpKTtcbiAgICAgIH0pO1xuICAgICAgZm9yRWFjaChjb2xvcmZ1bE9wdGlvbnMsIChpdGVtKSA9PiB7XG4gICAgICAgIHNldENvbG9yKHByb3BzLCBpdGVtKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbG9yZnVsT3B0aW9ucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGRvQ2xpY2soaXRlbTogYW55KSB7XG4gICAgICBjdHguZW1pdChcImNsaWNrXCIsIHsgaXRlbTogaXRlbSB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZG9DbG9zZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwiY2xvc2VcIiwgeyBpdGVtLCBpbmRleCB9KTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlczogYW55W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpICE9PSBpbmRleCkge1xuICAgICAgICAgIG5ld1ZhbHVlcy5wdXNoKGdldFZhbHVlKGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZVtpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG5ld1ZhbHVlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBkb0NsaWNrLFxuICAgICAgY29tcHV0ZWRWYWx1ZUl0ZW1zLFxuICAgICAgZG9DbG9zZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy12YWx1ZXMtZm9ybWF0IC5mcy10YWcge1xuICBtYXJnaW46IDJweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAuZnMtdGFnLWljb24ge1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3Bhbj5cbiAgICA8dGVtcGxhdGUgdi1pZj1cImNvbXB1dGVkTXVsdGlwbGVcIj5cbiAgICAgIDxkaXYgdi1mb3I9XCIoTGFiZWxzLCBJbmRleCkgaW4gbXVsdGlwbGVMYWJlbHNcIiA6a2V5PVwiSW5kZXhcIj5cbiAgICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIExhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgIDxzcGFuIHYtaWY9XCJpbmRleCAhPT0gMFwiPiAvIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGxhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICA8c3BhbiB2LWlmPVwiaW5kZXggIT09IDBcIj4gLyA8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog57qn6IGU5pWw5o2u5qC85byP5YyW5bGV56S657uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJGb3JtYXRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiAgIOWAvDxici8+XG4gICAgICogICDljZXpgInml7YgJzEsMiwzJyDmiJYgWzEsMiwzXTxici8+XG4gICAgICogICDlpJrpgIlbWzEsMiwzXSxbNCw1LDZdXTxici8+XG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG1vZGVsVmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmU6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqICB2YWx1ZeeahOWIhumalOespjxici8+XG4gICAgICogIOWkmumAieaXtu+8jOWmguaenHZhbHVl5Li6c3RyaW5n77yM5YiZ5Lul6K+l5YiG6ZqU56ym5YiG5Ymy5oiQ5aSa5Liq5bGV56S6PGJyLz5cbiAgICAgKiAg5Lyg5YWl56m65a2X56ym5Liy77yM6KGo56S65LiN5YiG5YmyPGJyLz5cbiAgICAgKi9cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2VwYXJhdG9yOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogXCIsXCIsIHJlcXVpcmU6IGZhbHNlIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG11bHRpcGxlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgLyoqXG4gICAgICog5pWw5o2u5a2X5YW4XG4gICAgICovXG4gICAgZGljdDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgcmVxdWlyZTogZmFsc2VcbiAgICB9XG4gIH0gYXMgYW55LFxuICBlbWl0czogW1wiZGljdC1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHByb3BzLmRpY3Q/LmdldE5vZGVzQnlWYWx1ZXMpIHtcbiAgICAgIGRpY3Qud2F0Y2hWYWx1ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkTXVsdGlwbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcHJvcHMubXVsdGlwbGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGljdCxcbiAgICAgIGNvbXB1dGVkTXVsdGlwbGVcbiAgICB9O1xuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBsYWJlbHMoKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodGhpcy5tb2RlbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRWYWx1ZUl0ZW0odGhpcy5tb2RlbFZhbHVlKTtcbiAgICB9LFxuICAgIG11bHRpcGxlTGFiZWxzKCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFyci5wdXNoKHRoaXMuYnVpbGRWYWx1ZUl0ZW0oaXRlbSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRWYWx1ZUFycih2YWx1ZXM6IGFueSkge1xuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICB2YWx1ZXMgPSBbXTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgaXRlbSkge1xuICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzdWIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdmFsdWVzID0gdGhpcy5tb2RlbFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbGV0IGFyciA9IG51bGw7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNlcGFyYXRvciAhPSBudWxsICYmIHRoaXMuc2VwYXJhdG9yICE9PSBcIlwiKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgYXJyID0gdmFsdWVzLnNwbGl0KHRoaXMuc2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgYXJyID0gdmFsdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyID0gW3ZhbHVlc107XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sXG4gICAgYnVpbGRWYWx1ZUl0ZW0odmFsdWVzOiBhbnkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGFyciA9IHRoaXMuZ2V0VmFsdWVBcnIodmFsdWVzKTtcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZGljdCA9IHRoaXMuZ2V0RGljdCgpO1xuICAgICAgaWYgKGRpY3QpIHtcbiAgICAgICAgcmV0dXJuIGRpY3QuZ2V0Tm9kZXNGcm9tRGF0YU1hcChhcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4+XG4gICAgPHRlbXBsYXRlIHYtaWY9XCJjb21wdXRlZE11bHRpcGxlXCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKExhYmVscywgSW5kZXgpIGluIG11bHRpcGxlTGFiZWxzXCIgOmtleT1cIkluZGV4XCI+XG4gICAgICAgIDxzcGFuIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBMYWJlbHNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgICA8c3BhbiB2LWlmPVwiaW5kZXggIT09IDBcIj4gLyA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDxzcGFuIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBsYWJlbHNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgPHNwYW4gdi1pZj1cImluZGV4ICE9PSAwXCI+IC8gPC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG4vKipcbiAqIOe6p+iBlOaVsOaNruagvOW8j+WMluWxleekuue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdENhc2NhZGVyRm9ybWF0XCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICogICDlgLw8YnIvPlxuICAgICAqICAg5Y2V6YCJ5pe2ICcxLDIsMycg5oiWIFsxLDIsM108YnIvPlxuICAgICAqICAg5aSa6YCJW1sxLDIsM10sWzQsNSw2XV08YnIvPlxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBtb2RlbFZhbHVlOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICByZXF1aXJlOiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiAgdmFsdWXnmoTliIbpmpTnrKY8YnIvPlxuICAgICAqICDlpJrpgInml7bvvIzlpoLmnpx2YWx1ZeS4unN0cmluZ++8jOWImeS7peivpeWIhumalOespuWIhuWJsuaIkOWkmuS4quWxleekujxici8+XG4gICAgICogIOS8oOWFpeepuuWtl+espuS4su+8jOihqOekuuS4jeWIhuWJsjxici8+XG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNlcGFyYXRvcjogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IFwiLFwiLCByZXF1aXJlOiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBtdWx0aXBsZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmU6IGZhbHNlXG4gICAgfVxuICB9IGFzIGFueSxcbiAgZW1pdHM6IFtcImRpY3QtY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgZGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChwcm9wcy5kaWN0Py5nZXROb2Rlc0J5VmFsdWVzKSB7XG4gICAgICBkaWN0LndhdGNoVmFsdWUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZE11bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHByb3BzLm11bHRpcGxlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRpY3QsXG4gICAgICBjb21wdXRlZE11bHRpcGxlXG4gICAgfTtcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWxzKCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkVmFsdWVJdGVtKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgfSxcbiAgICBtdWx0aXBsZUxhYmVscygpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhcnIucHVzaCh0aGlzLmJ1aWxkVmFsdWVJdGVtKGl0ZW0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0VmFsdWVBcnIodmFsdWVzOiBhbnkpIHtcbiAgICAgIGlmICh2YWx1ZXMgPT0gbnVsbCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIGl0ZW0pIHtcbiAgICAgICAgICAgICAgdmFsdWVzLnB1c2goc3ViKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHZhbHVlcyA9IHRoaXMubW9kZWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGxldCBhcnIgPSBudWxsO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZXMgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLnNlcGFyYXRvciAhPT0gXCJcIikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFyciA9IHZhbHVlcy5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGFyciA9IHZhbHVlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyciA9IFt2YWx1ZXNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LFxuICAgIGJ1aWxkVmFsdWVJdGVtKHZhbHVlczogYW55KSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLmdldFZhbHVlQXJyKHZhbHVlcyk7XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGRpY3QgPSB0aGlzLmdldERpY3QoKTtcbiAgICAgIGlmIChkaWN0KSB7XG4gICAgICAgIHJldHVybiBkaWN0LmdldE5vZGVzRnJvbURhdGFNYXAoYXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS5jYXNjYWRlci5uYW1lXCJcbiAgICByZWY9XCJjYXNjYWRlclJlZlwiXG4gICAgOm9wdGlvbnM9XCJjb21wdXRlZE9wdGlvbnNcIlxuICAgIHYtYmluZD1cImZpZWxkTmFtZXNCaW5kZXJcIlxuICAgIEBjaGFuZ2U9XCJvblNlbGVjdENoYW5nZVwiXG4gIC8+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDlrZflhbjnuqfogZTnu4Tku7ZcbiAqIOaUr+aMgWVsLWNhc2NhZGVyfGEtY2FzY2FkZXLnu4Tku7bnmoTlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RDYXNjYWRlclwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAvKipcbiAgICAgKiDovazmjaJEaWN0RGF0YVxuICAgICAqL1xuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImRpY3QtY2hhbmdlXCIsXG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lgLzlj5jljJbkuovku7bvvIzlj6/ku6Xojrflj5bliLDlvZPliY3pgInkuK3nmoRvcHRpb27lr7nosaFcbiAgICAgKi9cbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiY2hhbmdlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IGNhc2NhZGVyUmVmID0gcmVmKCk7XG4gICAgY29uc3QgZGljdFVzZVJldCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBmaWVsZE5hbWVzQmluZGVyID0gcmVmKCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChwcm9wcy5kaWN0KSB7XG4gICAgICBmaWVsZE5hbWVzQmluZGVyLnZhbHVlID0gdWkuY2FzY2FkZXIuZmllbGROYW1lcyh7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdmFsdWU6IHByb3BzLmRpY3QudmFsdWUsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbGFiZWw6IHByb3BzLmRpY3QubGFiZWwsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY2hpbGRyZW46IHByb3BzLmRpY3QuY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSBkaWN0VXNlUmV0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuXG4gICAgZnVuY3Rpb24gb25TZWxlY3RDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgZGljdCA9IGRpY3RVc2VSZXQuZ2V0RGljdCgpO1xuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XG4gICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjYXNjYWRlclJlZixcbiAgICAgIC4uLmRpY3RVc2VSZXQsXG4gICAgICBmaWVsZE5hbWVzQmluZGVyLFxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxuICAgICAgb25TZWxlY3RDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuY2FzY2FkZXIubmFtZVwiXG4gICAgcmVmPVwiY2FzY2FkZXJSZWZcIlxuICAgIDpvcHRpb25zPVwiY29tcHV0ZWRPcHRpb25zXCJcbiAgICB2LWJpbmQ9XCJmaWVsZE5hbWVzQmluZGVyXCJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RDaGFuZ2VcIlxuICAvPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog5a2X5YW457qn6IGU57uE5Lu2XG4gKiDmlK/mjIFlbC1jYXNjYWRlcnxhLWNhc2NhZGVy57uE5Lu255qE5Y+C5pWwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlrZflhbjphY3nva5cbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDpgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCBjYXNjYWRlclJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGRpY3RVc2VSZXQgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgZmllbGROYW1lc0JpbmRlciA9IHJlZigpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAocHJvcHMuZGljdCkge1xuICAgICAgZmllbGROYW1lc0JpbmRlci52YWx1ZSA9IHVpLmNhc2NhZGVyLmZpZWxkTmFtZXMoe1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHZhbHVlOiBwcm9wcy5kaWN0LnZhbHVlLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxhYmVsOiBwcm9wcy5kaWN0LmxhYmVsLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNoaWxkcmVuOiBwcm9wcy5kaWN0LmNoaWxkcmVuXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gZGljdFVzZVJldC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGZ1bmN0aW9uIG9uU2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIGNvbnN0IGRpY3QgPSBkaWN0VXNlUmV0LmdldERpY3QoKTtcbiAgICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xuICAgICAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChvcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY2FzY2FkZXJSZWYsXG4gICAgICAuLi5kaWN0VXNlUmV0LFxuICAgICAgZmllbGROYW1lc0JpbmRlcixcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0Q2hhbmdlXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jaGVja2JveEdyb3VwLm5hbWVcIiBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiPlxuICAgIDxjb21wb25lbnRcbiAgICAgIDppcz1cIm9wdGlvbk5hbWUgfHwgdWkuY2hlY2tib3gubmFtZVwiXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcbiAgICAgIHJlZj1cImNoZWNrYm94UmVmXCJcbiAgICAgIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICA6W3VpLmNoZWNrYm94LnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcbiAgICAgID57eyBnZXRMYWJlbChpdGVtKSB9fTwvY29tcG9uZW50XG4gICAgPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuXG4vKipcbiAqIOWtl+WFuGNoZWNrYm94XG4gKiDmlK/mjIFlbC1jaGVja2JveHxhLWNoZWNrYm945Y+C5pWwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2hlY2tib3hcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlrZflhbhcbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDpgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiB1bmRlZmluZWQsIHJlcXVpcmU6IGZhbHNlIH0sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcbiAgICAgKi9cbiAgICBvcHRpb25OYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uUHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgsIHVpLmNoZWNrYm94R3JvdXAubW9kZWxWYWx1ZSk7XG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XG4gICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLmNoZWNrYm94R3JvdXAubmFtZVwiIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCI+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwib3B0aW9uTmFtZSB8fCB1aS5jaGVja2JveC5uYW1lXCJcbiAgICAgIHYtZm9yPVwiaXRlbSBvZiBjb21wdXRlZE9wdGlvbnNcIlxuICAgICAgcmVmPVwiY2hlY2tib3hSZWZcIlxuICAgICAgOmtleT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIDpbdWkuY2hlY2tib3gudmFsdWVdPVwiZ2V0VmFsdWUoaXRlbSlcIlxuICAgICAgdi1iaW5kPVwib3B0aW9uUHJvcHNcIlxuICAgICAgPnt7IGdldExhYmVsKGl0ZW0pIH19PC9jb21wb25lbnRcbiAgICA+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5a2X5YW4Y2hlY2tib3hcbiAqIOaUr+aMgWVsLWNoZWNrYm94fGEtY2hlY2tib3jlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RDaGVja2JveFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6IHVuZGVmaW5lZCwgcmVxdWlyZTogZmFsc2UgfSxcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOe7hOS7tuWQjeensFxuICAgICAqL1xuICAgIG9wdGlvbk5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTlsZ7mgKdcbiAgICAgKi9cbiAgICBvcHRpb25Qcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuY2hlY2tib3hHcm91cC5tb2RlbFZhbHVlKTtcbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcbiAgICBjb25zdCBvblNlbGVjdGVkQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcbiAgICAgICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxuICAgICAgb25TZWxlY3RlZENoYW5nZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkuc3dpdGNoLm5hbWVcIiByZWY9XCJzd2l0Y2hSZWZcIiB2LWJpbmQ9XCJiaW5kaW5nXCIgLz5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IERpY3RPcHRpb25zLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjlvIDlhbNcbiAqIOaUr+aMgWVsLXN3aXRjaHxhLXN3aXRjaOeahOWxnuaAp1xuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdFN3aXRjaFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOesrOS4gOS4quS4uuW8gOWQr1xuICAgICAqIOesrOS6jOS4quS4uuWFs+mXrVxuICAgICAqL1xuICAgIGRpY3Q6IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxEaWN0T3B0aW9uczxhbnk+PlxuICAgIH0sXG4gICAgb3B0aW9uczoge30sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0gYXMgYW55LFxuICBlbWl0czogW1wiZGljdC1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuc3dpdGNoLm1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgY29tcHV0ZWRPcHRpb25zXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBfYWN0aXZlKCkge1xuICAgICAgaWYgKHRoaXMuY29tcHV0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRPcHRpb25zWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgX2luQWN0aXZlKCkge1xuICAgICAgaWYgKHRoaXMuY29tcHV0ZWRPcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRPcHRpb25zWzFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgYmluZGluZygpIHtcbiAgICAgIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZVRleHRdOiB0aGlzLl9hY3RpdmVbdGhpcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guaW5hY3RpdmVUZXh0XTogdGhpcy5faW5BY3RpdmVbdGhpcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guYWN0aXZlQ29sb3JdOiB0aGlzLl9hY3RpdmVbdGhpcy5kaWN0Py5jb2xvciB8fCBcImNvbG9yXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guaW5hY3RpdmVDb2xvcl06IHRoaXMuX2luQWN0aXZlW3RoaXMuZGljdD8uY29sb3IgfHwgXCJjb2xvclwiXSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZVZhbHVlXTogdGhpcy5fYWN0aXZlW3RoaXMuZGljdD8udmFsdWUgfHwgXCJ2YWx1ZVwiXSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmluYWN0aXZlVmFsdWVdOiB0aGlzLl9pbkFjdGl2ZVt0aGlzLmRpY3Q/LnZhbHVlIHx8IFwidmFsdWVcIl1cbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcbjwvc2NyaXB0PiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4+e3sgZG9Gb3JtYXQgfX08L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDml6XmnJ/moLzlvI/ljJblsZXnpLrnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RhdGVGb3JtYXRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDml6XmnJ/ml7bpl7TlgLzvvIzmlK/mjIFsb25nLHN0cmluZyxkYXRl562J77yM55SxZGF5anPovazljJZcbiAgICAgKi9cbiAgICBtb2RlbFZhbHVlOiB7IHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqICDovpPlhaXmoLzlvI/ljJbvvIzkuI3kvKDliJnnlLFkYXlqc+iHquWKqOi9rOWMllxuICAgICAqL1xuICAgIHZhbHVlRm9ybWF0OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogdW5kZWZpbmVkLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAvKipcbiAgICAgKiAg6L6T5Ye65qC85byP5YyWXG4gICAgICovXG4gICAgZm9ybWF0OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogXCJZWVlZLU1NLUREIEhIOm1tOnNzXCIsIHJlcXVpcmVkOiBmYWxzZSB9XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW06IHt9XG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBkb0Zvcm1hdCgpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT0gbnVsbCB8fCB0aGlzLm1vZGVsVmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBsZXQgZGF0ZSA9IG51bGw7XG4gICAgICBpZiAodGhpcy52YWx1ZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgIGRhdGUgPSBkYXlqcyh0aGlzLm1vZGVsVmFsdWUsIHRoaXMudmFsdWVGb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IGRheWpzKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgIH1cbiAgfSBhcyBhbnksXG4gIGNyZWF0ZWQoKSB7fSxcbiAgbWV0aG9kczoge31cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS50cmVlU2VsZWN0Lm5hbWVcIlxuICAgIHJlZj1cInRyZWVSZWZcIlxuICAgIDpbdWkudHJlZVNlbGVjdC5vcHRpb25zXT1cImNvbXB1dGVkT3B0aW9uc1wiXG4gICAgOnBsYWNlaG9sZGVyPVwiY29tcHV0ZWRQbGFjZWhvbGRlclwiXG4gICAgdi1iaW5kPVwiY29tcHV0ZWRCaW5kaW5nXCJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiXG4gID5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIodmFsdWUsIGtleSkgb2Ygc2xvdHNcIiA6a2V5PVwia2V5XCIgI1trZXldPVwic2NvcGVcIj5cbiAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJ2YWx1ZVwiIDpzY29wZT1cInNjb3BlXCI+PC9mcy1zbG90LXJlbmRlcj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjmoJHpgInmi6nnu4Tku7ZcbiAqIOaUr+aMgSBhLXRyZWUtc2VsZWN0IOWPguaVsFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdFRyZWVcIixcbiAgY29tcG9uZW50czoge30sXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5pWw5o2u5a2X5YW4XG4gICAgICovXG4gICAgZGljdDoge30sXG4gICAgLyoqXG4gICAgICog5Y+v6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXG4gICAgICovXG4gICAgb3B0aW9uczogeyB0eXBlOiBBcnJheSB9LFxuICAgIC8qKlxuICAgICAqIHBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIC8vIHJlbmRlciAoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMucmVuZGVyRnVuYyh7IGRhdGE6IHRoaXMuZGF0YSwgZGF0YU1hcDogdGhpcy5kYXRhTWFwLCBzY29wZTogdGhpcy5zY29wZSwgYXR0cnM6IHRoaXMuJGF0dHJzIH0pXG4gIC8vIH0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkUGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMucGxhY2Vob2xkZXIgfHwgdChcImZzLmNvbXBvbmVudC5zZWxlY3QucGxhY2Vob2xkZXJcIik7XG4gICAgfSk7XG5cbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xuXG4gICAgY29uc3Qgc2xvdHMgPSBjdHguc2xvdHM7XG5cbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICByZXR1cm4gdWkudHJlZVNlbGVjdC5idWlsZE9wdGlvbktleXNOYW1lQmluZGluZyh7XG4gICAgICAgIGxhYmVsOiBkaWN0LmxhYmVsLFxuICAgICAgICB2YWx1ZTogZGljdC52YWx1ZSxcbiAgICAgICAgY2hpbGRyZW46IGRpY3QuY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwKSB7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xuICAgICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgZGljdC5kYXRhTWFwW3ZhbHVlXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgdHJlZVJlZiA9IHJlZigpO1xuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbXB1dGVkQmluZGluZyxcbiAgICAgIGNvbXB1dGVkUGxhY2Vob2xkZXIsXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2UsXG4gICAgICBzbG90cyxcbiAgICAgIHRyZWVSZWZcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkudHJlZVNlbGVjdC5uYW1lXCJcbiAgICByZWY9XCJ0cmVlUmVmXCJcbiAgICA6W3VpLnRyZWVTZWxlY3Qub3B0aW9uc109XCJjb21wdXRlZE9wdGlvbnNcIlxuICAgIDpwbGFjZWhvbGRlcj1cImNvbXB1dGVkUGxhY2Vob2xkZXJcIlxuICAgIHYtYmluZD1cImNvbXB1dGVkQmluZGluZ1wiXG4gICAgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIlxuICA+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIG9mIHNsb3RzXCIgOmtleT1cImtleVwiICNba2V5XT1cInNjb3BlXCI+XG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwidmFsdWVcIiA6c2NvcGU9XCJzY29wZVwiPjwvZnMtc2xvdC1yZW5kZXI+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5a2X5YW45qCR6YCJ5oup57uE5Lu2XG4gKiDmlK/mjIEgYS10cmVlLXNlbGVjdCDlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RUcmVlXCIsXG4gIGNvbXBvbmVudHM6IHt9LFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAvKipcbiAgICAgKiBwbGFjZWhvbGRlclxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICAvLyByZW5kZXIgKCkge1xuICAvLyAgIHJldHVybiB0aGlzLnJlbmRlckZ1bmMoeyBkYXRhOiB0aGlzLmRhdGEsIGRhdGFNYXA6IHRoaXMuZGF0YU1hcCwgc2NvcGU6IHRoaXMuc2NvcGUsIGF0dHJzOiB0aGlzLiRhdHRycyB9KVxuICAvLyB9LFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBjb21wdXRlZFBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLnBsYWNlaG9sZGVyIHx8IHQoXCJmcy5jb21wb25lbnQuc2VsZWN0LnBsYWNlaG9sZGVyXCIpO1xuICAgIH0pO1xuXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcblxuICAgIGNvbnN0IHNsb3RzID0gY3R4LnNsb3RzO1xuXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG5cbiAgICBjb25zdCBjb21wdXRlZEJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xuICAgICAgcmV0dXJuIHVpLnRyZWVTZWxlY3QuYnVpbGRPcHRpb25LZXlzTmFtZUJpbmRpbmcoe1xuICAgICAgICBsYWJlbDogZGljdC5sYWJlbCxcbiAgICAgICAgdmFsdWU6IGRpY3QudmFsdWUsXG4gICAgICAgIGNoaWxkcmVuOiBkaWN0LmNoaWxkcmVuXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcbiAgICAgICAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIGRpY3QuZGF0YU1hcFt2YWx1ZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHRyZWVSZWYgPSByZWYoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjb21wdXRlZEJpbmRpbmcsXG4gICAgICBjb21wdXRlZFBsYWNlaG9sZGVyLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlLFxuICAgICAgc2xvdHMsXG4gICAgICB0cmVlUmVmXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXRhYmxlLXNlbGVjdFwiPlxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIXNsb3RzPy5kZWZhdWx0ICYmICF2aWV3TW9kZVwiPlxuICAgICAgPGZzLWRpY3Qtc2VsZWN0XG4gICAgICAgIHJlZj1cImRpY3RTZWxlY3RSZWZcIlxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZFNlbGVjdFwiXG4gICAgICAgIDpvcGVuPVwiZmFsc2VcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIDpyZWFkb25seT1cInJlYWRvbmx5XCJcbiAgICAgICAgOmRpY3Q9XCJkaWN0XCJcbiAgICAgICAgQGNsaWNrPVwib3BlblRhYmxlU2VsZWN0XCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8c2xvdCB2LWJpbmQ9XCJzY29wZVJlZlwiPjwvc2xvdD5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLnNraXBWYWxpZGF0aW9uV3JhcHBlclwiPlxuICAgICAgPGZzLWZvcm0td3JhcHBlciByZWY9XCJmb3JtV3JhcHBlclJlZlwiIHYtYmluZD1cImZvcm1XcmFwcGVyT3B0aW9uc1wiIEBjbG9zZWQ9XCJvbkNsb3NlXCIgQG9wZW49XCJvbk9wZW5cIj5cbiAgICAgICAgPHRlbXBsYXRlICNmb3JtLWJvZHktdG9wPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImRpYWxvZ09wZW4gfHwgZGVzdHJveU9uQ2xvc2UgPT09IGZhbHNlXCIgOnN0eWxlPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6IGhlaWdodCB8fCAnNzB2aCcgfVwiPlxuICAgICAgICAgICAgPGZzLWNydWQgcmVmPVwiY3J1ZFJlZlwiIHYtYmluZD1cImNydWRCaW5kaW5nXCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLXRvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzaG93Q3VycmVudCAhPT0gZmFsc2UgJiYgIXZpZXdNb2RlXCIgY2xhc3M9XCJmcy10YWJsZS1zZWxlY3QtY3VycmVudFwiPlxuICAgICAgICAgICAgICAgICAg5b2T5YmN6YCJ5Lit77yaXG4gICAgICAgICAgICAgICAgICA8ZnMtdmFsdWVzLWZvcm1hdFxuICAgICAgICAgICAgICAgICAgICByZWY9XCJ2YWx1ZXNGb3JtYXRSZWZcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRSb3dLZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgOmRpY3Q9XCJkaWN0XCJcbiAgICAgICAgICAgICAgICAgICAgOmNsb3NhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHYtYmluZD1cImNvbXB1dGVkVmFsdWVzRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgID48L2ZzLXZhbHVlcy1mb3JtYXQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWNydWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2ZzLWZvcm0td3JhcHBlcj5cbiAgICAgIDwhLS0gICAgICA8Y29tcG9uZW50IDppcz1cInVpLmRpYWxvZy5uYW1lXCIgdi1tb2RlbDpbdWkuZGlhbG9nLnZpc2libGVdPVwiZGlhbG9nT3BlblwiIHYtYmluZD1cImNvbXB1dGVkRGlhbG9nQmluZGluZ1wiPi0tPlxuICAgICAgPCEtLSAgICAgICAgPHRlbXBsYXRlICNbdWkuZGlhbG9nLmZvb3RlclNsb3ROYW1lXT4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b24ubmFtZVwiIHYtaWY9XCIhdmlld01vZGVcIiBAY2xpY2s9XCJkaWFsb2dPcGVuID0gZmFsc2VcIj7lj5bmtog8L2NvbXBvbmVudD4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b24ubmFtZVwiIHR5cGU9XCJwcmltYXJ5XCIgQGNsaWNrPVwib25Pa1wiPuehruiupDwvY29tcG9uZW50Pi0tPlxuICAgICAgPCEtLSAgICAgICAgPC90ZW1wbGF0ZT4tLT5cbiAgICAgIDwhLS0gICAgICA8L2NvbXBvbmVudD4tLT5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHN4XCIgc2V0dXA+XG5pbXBvcnQgeyBEaWN0LCB1c2VDb21wdXRlLCB1c2VGc0FzeW5jLCB1c2VGc1JlZiwgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIG5leHRUaWNrLCByZWYsIFJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBDcmVhdGVDcnVkT3B0aW9ucywgRHluYW1pY2FsbHlDcnVkT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuXG50eXBlIEZzVGFibGVTZWxlY3RQcm9wcyA9IHtcbiAgLyoqXG4gICAqIG1vZGVsVmFsdWVcbiAgICovXG4gIG1vZGVsVmFsdWU6IGFueTtcbiAgLyoqXG4gICAqIGNydWRPcHRpb25z5Yib5bu65pa55rOVXG4gICAqL1xuICBjcmVhdGVDcnVkT3B0aW9uczogQ3JlYXRlQ3J1ZE9wdGlvbnM7XG4gIC8qKlxuICAgKiBjcnVkT3B0aW9ucyDopobnm5bphY3nva5cbiAgICovXG4gIGNydWRPcHRpb25zT3ZlcnJpZGU/OiBEeW5hbWljYWxseUNydWRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiDmiZPlvIDlr7nor53moYbliY3vvIzlj6/ku6Xkv67mlLnphY3nva5cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGJlZm9yZU9wZW4/OiAob3B0aW9uczoge1xuICAgIGNydWRPcHRpb25zOiBEeW5hbWljYWxseUNydWRPcHRpb25zO1xuICAgIHNlbGVjdGVkUm93S2V5czogYW55O1xuICAgIG9wZW46IGFueTtcbiAgICBvcGVuZWQ6IGFueTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0pID0+IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiDmlbDmja7lrZflhbhcbiAgICog5b+F6aCI6YWN572uYGdldE5vZGVzQnlWYWx1ZXNg5Y+C5pWwLOS9oOmcgOimgeWunueOsO+8muagueaNrmlk5YiX6KGo5ZCR5ZCO5Y+w6K+35rGC5aSa6KGM5pWw5o2u5bm26L+U5ZueXG4gICAqIGBkaWN0LnZhbHVl5b+F6aG75LiOdGFibGUucm93S2V55LiA6Ie0YFxuICAgKi9cbiAgZGljdDogRGljdDtcbiAgLyoqXG4gICAqIOmAieaLqeahhiBmcy1kaWN0LXNlbGVjdOmFjee9rlxuICAgKi9cbiAgc2VsZWN0PzogYW55O1xuXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrpgInmi6nmoYZcbiAgICog5pyJ5pe25YCZ5L2g5Y+q5piv5oOz6KaB6YKj5Liq6YCJ5oup55qERGlhbG9n77yM6YKj5LmI5L2g5Y+v5Lul6ZqQ6JePc2VsZWN077yM54S25ZCO6Ieq5a6a5LmJ5r+A5rS75pa55byPXG4gICAqL1xuICBzaG93U2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOWvueivneahhumFjee9rlxuICAgKi9cbiAgZGlhbG9nPzogYW55O1xuXG4gIC8qKlxuICAgKiDlr7nor53moYbkuK3mmK/lkKbmmL7npLrlvZPliY3pgInkuK3lgLxcbiAgICovXG4gIHNob3dDdXJyZW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOW9k+WJjemAieS4reWAvCBmcy12YWx1ZXMtZm9ybWF057uE5Lu2IOmFjee9rlxuICAgKi9cbiAgdmFsdWVzRm9ybWF0PzogYW55O1xuXG4gIC8qKlxuICAgKiBjcnVk6auY5bqmXG4gICAqL1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmmK/lkKblpJrpgIlcbiAgICovXG4gIG11bHRpcGxlPzogYm9vbGVhbjsgLy/ljZXpgInov5jmmK/lpJrpgIlcbiAgLyoqXG4gICAqIOi3qOmhtemAieS4rVxuICAgKi9cbiAgY3Jvc3NQYWdlPzogYm9vbGVhbjsgLy/ot6jpobXpgInkuK1cblxuICAvKipcbiAgICog5Y+v6YCJLGVsZW1lbnQtcGx1c+W/heS8oFxuICAgKi9cbiAgcm93S2V5Pzogc3RyaW5nO1xuXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICByZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIOWAvOexu+Wei1xuICAgKi9cbiAgdmFsdWVUeXBlPzogXCJ2YWx1ZVwiIHwgXCJvYmplY3RcIjtcblxuICAvKipcbiAgICog5piv5ZCm5p+l55yL5qih5byPXG4gICAqL1xuICB2aWV3TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmn6XnnIvmqKHlvI/kuIvmmK/lkKbop6blj5FjaGFuZ2Xkuovku7ZcbiAgICovXG4gIGVtaXRPblZpZXdNb2RlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRhYmxl5piv5ZCm6Lef6ZqP56qX5Y+j5YWz6Zet6ICM6ZSA5q+BXG4gICAqL1xuICBkZXN0cm95T25DbG9zZT86IGJvb2xlYW47XG59O1xuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8RnNUYWJsZVNlbGVjdFByb3BzPigpLCB7XG4gIGNyb3NzUGFnZTogdHJ1ZSxcbiAgcm93S2V5OiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgcmVhZG9ubHk6IGZhbHNlLFxuICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgdmFsdWVzRm9ybWF0OiB1bmRlZmluZWQsXG4gIGRpYWxvZzogdW5kZWZpbmVkLFxuICBzZWxlY3Q6IHVuZGVmaW5lZCxcbiAgY3J1ZE9wdGlvbnNPdmVycmlkZTogdW5kZWZpbmVkLFxuICB2YWx1ZVR5cGU6IFwidmFsdWVcIixcbiAgc2hvd1NlbGVjdDogdHJ1ZSxcbiAgc2hvd0N1cnJlbnQ6IHRydWUsXG4gIHZpZXdNb2RlOiBmYWxzZSxcbiAgZW1pdE9uVmlld01vZGVsOiB0cnVlLFxuICBkZXN0cm95T25DbG9zZTogdHJ1ZSxcbiAgLyoqXG4gICAqIGNyZWF0ZUNydWRPcHRpb25z5pa55rOV5piv5ZCM5q2l6L+Y5piv5byC5q2lXG4gICAqL1xuICBJc1N5bmNDcmVhdGU6IGZhbHNlXG59KTtcblxuY29uc3Qgc2xvdHMgPSBkZWZpbmVTbG90czx7XG4gIC8qKmBcbiAgICog6buY6K6k5o+S5qe9XG4gICAqIGBgYGpzXG4gICAqIHNjb3BlID0ge1xuICAgKiAgLy/mmK/lkKblt7LmiZPlvIBcbiAgICogIG9wZW5lZDpib29sZWFuLFxuICAgKiAgLy/miZPlvIDmlrnms5VcbiAgICogIG9wZW46KCk9PnZvaWRcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGRlZmF1bHQ6IGFueTtcbn0+KCk7XG5cbmNvbnN0IGVtaXRzID0gZGVmaW5lRW1pdHMoW1xuICBcImNoYW5nZVwiLFxuICBcInVwZGF0ZTptb2RlbFZhbHVlXCIsXG4gIC8qIOmAieS4reihjOWPmOWMluS6i+S7tiAqL1xuICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAvKuWvueivneahhuWNs+WwhuWFs+mXrSovXG4gIFwiZGlhbG9nLWNsb3NlXCIsXG4gIC8q5a+56K+d5qGG5bey5YWz6ZetKi9cbiAgXCJkaWFsb2ctY2xvc2VkXCIsXG4gIC8q5a+56K+d5qGG5YWz6ZetKi9cbiAgXCJjbG9zZVwiXG5dKTtcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5jb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbmNvbnN0IGRpY3RTZWxlY3RSZWYgPSByZWYoKTtcbmNvbnN0IHZhbHVlc0Zvcm1hdFJlZiA9IHJlZigpO1xuY29uc3QgZGlhbG9nT3BlbiA9IHJlZihmYWxzZSk7XG5cbmZ1bmN0aW9uIG9uQ2xvc2UoKSB7XG4gIGRpYWxvZ09wZW4udmFsdWUgPSBmYWxzZTtcbiAgZW1pdHMoXCJjbG9zZVwiLCBnZXRTY29wZUNvbnRleHQoKSk7XG59XG5mdW5jdGlvbiBvbk9wZW4oKSB7XG4gIGRpYWxvZ09wZW4udmFsdWUgPSB0cnVlO1xufVxuXG5jb25zdCB7IGNydWRSZWYsIGNydWRCaW5kaW5nLCBjcnVkRXhwb3NlIH0gPSB1c2VGc1JlZigpO1xuXG5mdW5jdGlvbiBpbml0U2VsZWN0ZWRLZXlzKG1vZGVsVmFsdWU6IGFueSkge1xuICBpZiAobW9kZWxWYWx1ZSA9PSBudWxsIHx8IChBcnJheS5pc0FycmF5KG1vZGVsVmFsdWUpICYmIG1vZGVsVmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gW107XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb3BzLm11bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBtb2RlbFZhbHVlIHx8IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBbbW9kZWxWYWx1ZV07XG4gICAgfVxuICAgIGlmIChwcm9wcy52YWx1ZVR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHNlbGVjdGVkUm93S2V5cy52YWx1ZSA9IHNlbGVjdGVkUm93S2V5cy52YWx1ZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmRpY3QuZ2V0VmFsdWUoaXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgZm9ybVdyYXBwZXJSZWYgPSByZWYoKTtcbmNvbnN0IGZvcm1XcmFwcGVyT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB3cmFwcGVyOiB7fVxuICB9O1xufSk7XG5cbmNvbnN0IG9wZW5UYWJsZVNlbGVjdCA9IGFzeW5jIChvcGVuT3B0aW9uczogeyBjcnVkT3B0aW9ucz86IER5bmFtaWNhbGx5Q3J1ZE9wdGlvbnM7IGNvbnRleHQ/OiBhbnkgfSA9IHt9KSA9PiB7XG4gIGlmIChwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy5yZWFkb25seSB8fCBwcm9wcy5zZWxlY3Q/LmRpc2FibGVkIHx8IHByb3BzLnNlbGVjdD8ucmVhZG9ubHkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb3BzLmRpY3QgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIuW/hemhu+mFjee9rmRpY3TvvIzkuJTlv4XpobvphY3nva5kaWN0LmdldE5vZGVzQnlWYWx1ZXNcIik7XG4gIH1cblxuICBjb25zdCByZXQgPSBhd2FpdCB1c2VGc0FzeW5jKHtcbiAgICBjcnVkQmluZGluZyxcbiAgICBjcnVkUmVmLFxuICAgIGNyZWF0ZUNydWRPcHRpb25zOiBwcm9wcy5jcmVhdGVDcnVkT3B0aW9ucyxcbiAgICBjcnVkT3B0aW9uc092ZXJyaWRlOiBidWlsZE1lcmdlZENydWRPcHRpb25zKCksXG4gICAgY29udGV4dDoge1xuICAgICAgdCxcbiAgICAgIHVpLFxuICAgICAgLi4ub3Blbk9wdGlvbnM/LmNvbnRleHRcbiAgICB9LFxuICAgIGNydWRFeHBvc2VcbiAgfSk7XG5cbiAgaW5pdFNlbGVjdGVkS2V5cyhwcm9wcy5tb2RlbFZhbHVlKTtcbiAgaWYgKHByb3BzLmJlZm9yZU9wZW4pIHtcbiAgICBhd2FpdCBwcm9wcy5iZWZvcmVPcGVuKHtcbiAgICAgIGNydWRPcHRpb25zOiBvcGVuT3B0aW9ucz8uY3J1ZE9wdGlvbnMsXG4gICAgICAuLi5nZXRTY29wZUNvbnRleHQoKVxuICAgIH0pO1xuICB9XG4gIGlmIChvcGVuT3B0aW9ucykge1xuICAgIHJldC5hcHBlbmRDcnVkT3B0aW9ucyhvcGVuT3B0aW9ucz8uY3J1ZE9wdGlvbnMpO1xuICB9XG4gIGNvbnN0IHdyYXBwZXJPcHRpb25zID0gbWVyZ2UoXG4gICAge1xuICAgICAgd3JhcHBlcjoge1xuICAgICAgICB0aXRsZTogcHJvcHMudmlld01vZGUgPyB0KFwiZnMuZXh0ZW5kcy50YWJsZVNlbGVjdC52aWV3XCIpIDogdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3Quc2VsZWN0XCIpLFxuICAgICAgICB3aWR0aDogXCI4MCVcIixcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICBpczogdWkuZGlhbG9nLm5hbWUsXG4gICAgICAgIGZvb3RlcjogZmFsc2UsXG4gICAgICAgIC4uLnVpLmZvcm1XcmFwcGVyLmJ1aWxkSW5pdEJpbmQodWkuZGlhbG9nLm5hbWUpLFxuICAgICAgICBidXR0b25zOiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHNob3c6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYW5jZWw6IHtcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0LmNhbmNlbFwiKSxcbiAgICAgICAgICAgIGFzeW5jIGNsaWNrKCkge1xuICAgICAgICAgICAgICBmb3JtV3JhcHBlclJlZi52YWx1ZS5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb2s6IHtcbiAgICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3Qub2tcIiksXG4gICAgICAgICAgICBhc3luYyBjbGljaygpIHtcbiAgICAgICAgICAgICAgYXdhaXQgb25PaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgd3JhcHBlcjogcHJvcHMuZGlhbG9nXG4gICAgfVxuICApO1xuICBmb3JtV3JhcHBlclJlZi52YWx1ZS5vcGVuKHdyYXBwZXJPcHRpb25zKTtcblxuICBhd2FpdCBuZXh0VGljaygpO1xuICBhd2FpdCBjcnVkRXhwb3NlLmRvUmVmcmVzaCgpO1xuICByZXR1cm4gcmV0O1xufTtcblxuY29uc3QgY29tcHV0ZWRWYWx1ZXNGb3JtYXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMudmFsdWVzRm9ybWF0XG4gIH07XG59KTtcblxuY29uc3QgY29tcHV0ZWRTZWxlY3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IHVwZGF0ZUtleSA9IGBvblVwZGF0ZToke3VpLnNlbGVjdC5tb2RlbFZhbHVlfWA7XG5cbiAgbGV0IHZhbHVlID0gcHJvcHMubW9kZWxWYWx1ZTtcbiAgaWYgKHByb3BzLnZhbHVlVHlwZSA9PT0gXCJvYmplY3RcIiAmJiBwcm9wcy5tb2RlbFZhbHVlKSB7XG4gICAgaWYgKHByb3BzLm11bHRpcGxlKSB7XG4gICAgICB2YWx1ZSA9IHByb3BzLm1vZGVsVmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmRpY3QuZ2V0VmFsdWUoaXRlbSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBwcm9wcy5kaWN0LmdldFZhbHVlKHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIFt1aS5zZWxlY3QubW9kZWxWYWx1ZV06IHZhbHVlLFxuICAgIFt1cGRhdGVLZXldOiAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgZW1pdHMoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XG4gICAgfSxcbiAgICBbdWkuc2VsZWN0LmNsZWFyYWJsZV06IHRydWUsXG4gICAgLi4udWkuc2VsZWN0LmJ1aWxkTXVsdGlCaW5kaW5nKHByb3BzLm11bHRpcGxlKSxcbiAgICBzaG93OiBmYWxzZSxcbiAgICAuLi5wcm9wcy5zZWxlY3RcbiAgfTtcbn0pO1xuXG53YXRjaChcbiAgKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5tb2RlbFZhbHVlO1xuICB9LFxuICBhc3luYyAodmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IHNlbGVjdGVkUm93S2V5cy52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbml0U2VsZWN0ZWRLZXlzKHZhbHVlKTtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGF3YWl0IHByb3BzLmRpY3QuYXBwZW5kQnlWYWx1ZXMoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlKTtcbiAgICAvLyBkaWN0U2VsZWN0UmVmLnZhbHVlLnJlbG9hZERpY3QoKTtcbiAgfVxuKTtcbmNvbnN0IHNlbGVjdGVkUm93S2V5czogUmVmPGFueVtdPiA9IHJlZihbXSk7XG5cbmZ1bmN0aW9uIGdldFJvd0tleSgpIHtcbiAgcmV0dXJuIHByb3BzLnJvd0tleSB8fCBjcnVkQmluZGluZy52YWx1ZS50YWJsZS5yb3dLZXkgfHwgXCJpZFwiO1xufVxuY29uc3QgcmVmcmVzaGluZyA9IHJlZihmYWxzZSk7XG5cbmZ1bmN0aW9uIGJ1aWxkTWVyZ2VkQ3J1ZE9wdGlvbnMoKSB7XG4gIGxldCB0YWJsZUNJID0gdWkudGFibGU7XG4gIGlmIChjcnVkQmluZGluZy52YWx1ZT8udGFibGU/LnRhYmxlVmVyc2lvbiA9PT0gXCJ2MlwiKSB7XG4gICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XG4gIH1cbiAgbGV0IHNlbGVjdGlvbk9wdGlvbnMgPSB0YWJsZUNJLmJ1aWxkU2VsZWN0aW9uQ3J1ZE9wdGlvbnMoe1xuICAgIGNyb3NzUGFnZTogcHJvcHMuY3Jvc3NQYWdlLFxuICAgIHNlbGVjdE9uQ2xpY2tSb3c6IHRydWUsXG4gICAgZ2V0Um93S2V5LFxuICAgIGdldFBhZ2VEYXRhKCkge1xuICAgICAgcmV0dXJuIGNydWRCaW5kaW5nLnZhbHVlLmRhdGE7XG4gICAgfSxcbiAgICB1c2VDb21wdXRlOiB1c2VDb21wdXRlLFxuICAgIG11bHRpcGxlOiBwcm9wcy5tdWx0aXBsZSxcbiAgICBzZWxlY3RlZFJvd0tleXMsXG4gICAgb25TZWxlY3RlZEtleXNDaGFuZ2VkOiBhc3luYyAoY2hhbmdlZCkgPT4ge1xuICAgICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gWy4uLmNoYW5nZWRdO1xuICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgIGF3YWl0IHByb3BzLmRpY3QuYXBwZW5kQnlWYWx1ZXMoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlKTtcbiAgICAgIC8vIGlmICh2YWx1ZXNGb3JtYXRSZWYudmFsdWUpIHtcbiAgICAgIC8vICAgdmFsdWVzRm9ybWF0UmVmLnZhbHVlLnJlbG9hZERpY3QoKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBjcnVkT3B0aW9ucyA9IHtcbiAgICB0YWJsZToge1xuICAgICAgYXN5bmMgb25SZWZyZXNoZWQoKSB7XG4gICAgICAgIGlmICh0YWJsZUNJLnNldFNlbGVjdGVkUm93cykge1xuICAgICAgICAgIHJlZnJlc2hpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgICBjb25zdCBiYXNlVGFibGVSZWYgPSBjcnVkRXhwb3NlLmdldEJhc2VUYWJsZVJlZigpO1xuICAgICAgICAgIHRhYmxlQ0kuc2V0U2VsZWN0ZWRSb3dzKHtcbiAgICAgICAgICAgIGdldFJvd0tleSxcbiAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wcy5tdWx0aXBsZSxcbiAgICAgICAgICAgIHRhYmxlUmVmOiBiYXNlVGFibGVSZWYsXG4gICAgICAgICAgICBzZWxlY3RlZFJvd0tleXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZWZyZXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBtZXJnZShjcnVkT3B0aW9ucywgc2VsZWN0aW9uT3B0aW9ucywgcHJvcHMuY3J1ZE9wdGlvbnNPdmVycmlkZSk7XG59XG5cbmNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG5cbmFzeW5jIGZ1bmN0aW9uIG9uT2soKSB7XG4gIGlmIChwcm9wcy5kaWN0LmxvYWRpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHZhbHVlID0gbnVsbDtcbiAgbGV0IHJvd3MgPSBudWxsO1xuICBpZiAoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgdmFsdWUgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLnZhbHVlXTtcblxuICAgIHJvd3MgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5kaWN0LmdldERpY3RNYXAoKVtpdGVtXTtcbiAgICB9KTtcbiAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB2YWx1ZSA9IHJvd3M7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm11bHRpcGxlICE9PSB0cnVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhbHVlID0gdmFsdWVbMF07XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwcm9wcy52aWV3TW9kZSB8fCBwcm9wcy5lbWl0T25WaWV3TW9kZWwpIHtcbiAgICAvL+mdnnZpZXfmqKHlvI/kuIvvvIzpnIDopoHmm7TmlrB2YWx1ZVxuICAgIGVtaXRzKFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIGVtaXRzKFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICBlbWl0cyhcInNlbGVjdGVkLWNoYW5nZVwiLCByb3dzKTtcbiAgfVxuICBsZXQgc2NvcGUgPSB7XG4gICAgdmFsdWUsXG4gICAgcm93cyxcbiAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cy52YWx1ZVxuICB9O1xuICBlbWl0cyhcImRpYWxvZy1jbG9zZVwiLCBzY29wZSk7XG4gIGF3YWl0IG5leHRUaWNrKCk7XG4gIGF3YWl0IGZvcm1XcmFwcGVyUmVmLnZhbHVlLmNsb3NlKCk7XG4gIGVtaXRzKFwiZGlhbG9nLWNsb3NlZFwiLCBzY29wZSk7XG59XG5cbmNvbnN0IGdldFNjb3BlQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuZWQ6IGRpYWxvZ09wZW4sXG4gICAgb3Blbjogb3BlblRhYmxlU2VsZWN0LFxuICAgIHNlbGVjdGVkUm93S2V5cyxcbiAgICBkaWN0U2VsZWN0UmVmLFxuICAgIHZhbHVlc0Zvcm1hdFJlZixcbiAgICBjcnVkUmVmLFxuICAgIGNydWRCaW5kaW5nLFxuICAgIGNydWRFeHBvc2VcbiAgfTtcbn07XG5cbmNvbnN0IHNjb3BlUmVmID0gcmVmKGdldFNjb3BlQ29udGV4dCgpKTtcbmRlZmluZUV4cG9zZShzY29wZVJlZi52YWx1ZSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXRhYmxlLXNlbGVjdCB7XG4gIHdpZHRoOiAxMDAlO1xuICAuZWwtZGlhbG9nX19ib2R5IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxufVxuLmZzLXRhYmxlLXNlbGVjdC1jdXJyZW50IHtcbiAgLy9ib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xuICAvL2JvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogMTBweCAwO1xufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xuICAvKipcbiAgICog5Y+v57yW6L6R6YCJ5oup5ZmoXG4gICAqL1xuICBuYW1lOiBcIkZzRWRpdGFibGVTZWxlY3RcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLWVkaXRhYmxlLXNlbGVjdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgIDxmcy1kaWN0LXNlbGVjdCA6dmFsdWU9XCJtb2RlbFZhbHVlXCIgOmRpY3Q9XCJkaWN0XCIgdi1iaW5kPVwiZGljdFNlbGVjdFwiIEB1cGRhdGU6dmFsdWU9XCJkb1VwZGF0ZVwiPjwvZnMtZGljdC1zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZnMtdGFibGUtc2VsZWN0XG4gICAgICBjbGFzcz1cInRhYmxlLXNlbGVjdFwiXG4gICAgICA6bW9kZWwtdmFsdWU9XCJtb2RlbFZhbHVlXCJcbiAgICAgIDpkaWN0PVwiZGljdFwiXG4gICAgICA6ZGVzdHJveS1vbi1jbG9zZT1cImZhbHNlXCJcbiAgICAgIGhlaWdodD1cIjQwMHB4XCJcbiAgICAgIHYtYmluZD1cInRhYmxlU2VsZWN0XCJcbiAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJkb1VwZGF0ZVwiXG4gICAgICBAZGlhbG9nLWNsb3NlZD1cImRvUmVmcmVzaFwiXG4gICAgPlxuICAgICAgPHRlbXBsYXRlICNkZWZhdWx0PVwic2NvcGVcIj5cbiAgICAgICAgPGZzLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIGljb249XCJhbnQtZGVzaWduOmVkaXQtb3V0bGluZWRcIiB2LWJpbmQ9XCJidXR0b25cIiBAY2xpY2s9XCJzY29wZS5vcGVuXCI+PC9mcy1idXR0b24+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvZnMtdGFibGUtc2VsZWN0PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcbiAgLyoqXG4gICAqIOWAvFxuICAgKi9cbiAgbW9kZWxWYWx1ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIOaVsOaNruWtl+WFuFxuICAgKi9cbiAgZGljdDogYW55O1xuICAvKipcbiAgICogdGFibGUtc2VsZWN05Y+C5pWwXG4gICAqL1xuICB0YWJsZVNlbGVjdDogYW55O1xuICAvKipcbiAgICogZGljdC1zZWxlY3Tlj4LmlbBcbiAgICovXG4gIGRpY3RTZWxlY3Q/OiBhbnk7XG4gIC8qKlxuICAgKiDmjInpkq7lj4LmlbBcbiAgICovXG4gIGJ1dHRvbj86IGFueTtcbn0+KCk7XG5cbjtcblxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFtcbiAgLyoqXG4gICAqIOWFs+mXreWvueivneahhuaXtuinpuWPkVxuICAgKi9cbiAgXCJyZWZyZXNoXCIsXG4gIFwidXBkYXRlOm1vZGVsVmFsdWVcIlxuXSk7XG5mdW5jdGlvbiBkb1JlZnJlc2goKSB7XG4gIGVtaXQoXCJyZWZyZXNoXCIpO1xuICBwcm9wcy5kaWN0Py5yZWxvYWREaWN0KCk7XG59XG5cbmZ1bmN0aW9uIGRvVXBkYXRlKHZhbHVlOiBhbnkpIHtcbiAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1lZGl0YWJsZS1zZWxlY3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIC5zZWxlY3Qge1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLnRhYmxlLXNlbGVjdCB7XG4gICAgZmxleDogMDtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICB9XG59XG48L3N0eWxlPlxuIixudWxsLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vKlxuICDmraTku6PnoIHmnaXmupDkuo5pdmlld+ihqOagvOe7hOS7tueahENTVuWvvOWHuumDqOWIhlxuICBodHRwczovL2dpdGh1Yi5jb20vaXZpZXcvaXZpZXdcbiovXG5cbmZ1bmN0aW9uIGhhcyAoYnJvd3Nlcikge1xuICAgIGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBpZiAoYnJvd3NlciA9PT0gJ2llJykge1xuICAgICAgICBjb25zdCBpc0lFID0gdWEuaW5kZXhPZignY29tcGF0aWJsZScpID4gLTEgJiYgdWEuaW5kZXhPZignTVNJRScpID4gLTE7XG4gICAgICAgIGlmIChpc0lFKSB7XG4gICAgICAgICAgICBjb25zdCByZUlFID0gbmV3IFJlZ0V4cCgnTVNJRSAoXFxcXGQrXFxcXC5cXFxcZCspOycpO1xuICAgICAgICAgICAgcmVJRS50ZXN0KHVhKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KFJlZ0V4cFsnJDEnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdWEuaW5kZXhPZihicm93c2VyKSA+IC0xO1xuICAgIH1cbn1cblxuY29uc3QgY3N2ID0ge1xuICAgIF9pc0lFMTEgKCkge1xuICAgICAgICBsZXQgaWV2ID0gMDtcbiAgICAgICAgY29uc3QgaWVvbGQgPSAoL01TSUUgKFxcZCtcXC5cXGQrKTsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpO1xuICAgICAgICBjb25zdCB0cmlkZW50ID0gISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50XFwvNy4wLyk7XG4gICAgICAgIGNvbnN0IHJ2ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdydjoxMS4wJyk7XG5cbiAgICAgICAgaWYgKGllb2xkKSB7XG4gICAgICAgICAgICBpZXYgPSBOdW1iZXIoUmVnRXhwLiQxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignTVNJRSAxMCcpICE9PSAtMSkge1xuICAgICAgICAgICAgaWV2ID0gMTA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyaWRlbnQgJiYgcnYgIT09IC0xKSB7XG4gICAgICAgICAgICBpZXYgPSAxMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZXYgPT09IDExO1xuICAgIH0sXG5cbiAgICBfaXNFZGdlICgpIHtcbiAgICAgICAgcmV0dXJuIC9FZGdlLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH0sXG5cbiAgICBfZ2V0RG93bmxvYWRVcmwgKHRleHQpIHtcbiAgICAgICAgY29uc3QgQk9NID0gJ1xcdUZFRkYnO1xuICAgICAgICAvLyBBZGQgQk9NIHRvIHRleHQgZm9yIG9wZW4gaW4gZXhjZWwgY29ycmVjdGx5XG4gICAgICAgIGlmICh3aW5kb3cuQmxvYiAmJiB3aW5kb3cuVVJMICYmIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKSB7XG4gICAgICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IEJsb2IoW0JPTSArIHRleHRdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgICAgICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChjc3ZEYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnZGF0YTphdHRhY2htZW50L2NzdjtjaGFyc2V0PXV0Zi04LCcgKyBCT00gKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZG93bmxvYWQgKGZpbGVuYW1lLCB0ZXh0KSB7XG4gICAgICAgIGlmIChoYXMoJ2llJykgJiYgaGFzKCdpZScpIDwgMTApIHtcbiAgICAgICAgICAgIC8vIGhhcyBtb2R1bGUgdW5hYmxlIGlkZW50aWZ5IGllMTEgYW5kIEVkZ2VcbiAgICAgICAgICAgIGNvbnN0IG9XaW4gPSB3aW5kb3cudG9wLm9wZW4oJ2Fib3V0OmJsYW5rJywgJ19ibGFuaycpO1xuICAgICAgICAgICAgb1dpbi5kb2N1bWVudC5jaGFyc2V0ID0gJ3V0Zi04JztcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQud3JpdGUodGV4dCk7XG4gICAgICAgICAgICBvV2luLmRvY3VtZW50LmNsb3NlKCk7XG4gICAgICAgICAgICBvV2luLmRvY3VtZW50LmV4ZWNDb21tYW5kKCdTYXZlQXMnLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gICAgICAgICAgICBvV2luLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzKCdpZScpID09PSAxMCB8fCB0aGlzLl9pc0lFMTEoKSB8fCB0aGlzLl9pc0VkZ2UoKSkge1xuICAgICAgICAgICAgY29uc3QgQk9NID0gJ1xcdUZFRkYnO1xuICAgICAgICAgICAgY29uc3QgY3N2RGF0YSA9IG5ldyBCbG9iKFtCT00gKyB0ZXh0XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgICAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoY3N2RGF0YSwgZmlsZW5hbWUgKyAnLmNzdicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZSArICcuY3N2JztcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHRoaXMuX2dldERvd25sb2FkVXJsKHRleHQpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjc3Y7IiwiLypcbiAgaW5zcGlyZWQgYnkgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmVhY3QtY3N2LWRvd25sb2FkZXJcbiAgbm93IHJlbW92ZWQgZnJvbSBHaXRodWJcbiAgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2l2aWV3L2l2aWV3XG4qL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5jb25zdCBuZXdMaW5lID0gJ1xcclxcbic7XG5jb25zdCBhcHBlbmRMaW5lID0gKGNvbnRlbnQsIHJvdywgeyBzZXBhcmF0b3IsIHF1b3RlZCB9KSA9PiB7XG4gICAgY29uc3QgbGluZSA9IHJvdy5tYXAoZGF0YSA9PiB7XG4gICAgICAgIGlmICghcXVvdGVkKSByZXR1cm4gZGF0YTtcbiAgICAgICAgLy8gcXVvdGUgZGF0YVxuICAgICAgICBkYXRhID0gdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnID8gZGF0YS5yZXBsYWNlKC9cIi9nLCAnXCInKSA6IGRhdGE7XG4gICAgICAgIHJldHVybiBgXCIke2RhdGF9XCJgO1xuICAgIH0pO1xuICAgIGNvbnRlbnQucHVzaChsaW5lLmpvaW4oc2VwYXJhdG9yKSk7XG59O1xuXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgICBzZXBhcmF0b3I6ICcsJyxcbiAgICBxdW90ZWQ6IGZhbHNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjc3YoY29sdW1ucywgZGF0YXMsIG9wdGlvbnMsIG5vSGVhZGVyID0gZmFsc2UpIHtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuICAgIGxldCBjb2x1bW5PcmRlcjtcbiAgICBjb25zdCBjb250ZW50ID0gW107XG4gICAgY29uc3QgY29sdW1uID0gW107XG5cbiAgICBpZiAoY29sdW1ucykge1xuICAgICAgICBjb2x1bW5PcmRlciA9IGNvbHVtbnMubWFwKHYgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykgcmV0dXJuIHY7XG4gICAgICAgICAgICBpZiAoIW5vSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLnB1c2godHlwZW9mIHYubGFiZWwgIT09ICd1bmRlZmluZWQnID8gdi5sYWJlbCA6IHYucHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdi5wcm9wO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbHVtbi5sZW5ndGggPiAwKSBhcHBlbmRMaW5lKGNvbnRlbnQsIGNvbHVtbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uT3JkZXIgPSBbXTtcbiAgICAgICAgZGF0YXMuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyID0gY29sdW1uT3JkZXIuY29uY2F0KE9iamVjdC5rZXlzKHYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjb2x1bW5PcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5PcmRlciA9IGNvbHVtbk9yZGVyLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleCk7XG4gICAgICAgICAgICBpZiAoIW5vSGVhZGVyKSBhcHBlbmRMaW5lKGNvbnRlbnQsIGNvbHVtbk9yZGVyLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFzKSkge1xuICAgICAgICBkYXRhcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm93KSkge1xuICAgICAgICAgICAgICAgIHJvdyA9IGNvbHVtbk9yZGVyLm1hcChrID0+ICh0eXBlb2Ygcm93W2tdICE9PSAndW5kZWZpbmVkJyA/IHJvd1trXSA6ICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBlbmRMaW5lKGNvbnRlbnQsIHJvdywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29udGVudC5qb2luKG5ld0xpbmUpO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cbi8qIEJsb2IuanNcbiAqIEEgQmxvYiBpbXBsZW1lbnRhdGlvbi5cbiAqIDIwMTQtMDUtMjdcbiAqXG4gKiBCeSBFbGkgR3JleSwgaHR0cDovL2VsaWdyZXkuY29tXG4gKiBCeSBEZXZpbiBTYW1hcmluLCBodHRwczovL2dpdGh1Yi5jb20vZWJveWpyXG4gKiBMaWNlbnNlOiBYMTEvTUlUXG4gKiAgIFNlZSBMSUNFTlNFLm1kXG4gKi9cblxuLypnbG9iYWwgc2VsZiwgdW5lc2NhcGUgKi9cbi8qanNsaW50IGJpdHdpc2U6IHRydWUsIHJlZ2V4cDogdHJ1ZSwgY29uZnVzaW9uOiB0cnVlLCBlczU6IHRydWUsIHZhcnM6IHRydWUsIHdoaXRlOiB0cnVlLFxuIHBsdXNwbHVzOiB0cnVlICovXG5cbi8qISBAc291cmNlIGh0dHA6Ly9wdXJsLmVsaWdyZXkuY29tL2dpdGh1Yi9CbG9iLmpzL2Jsb2IvbWFzdGVyL0Jsb2IuanMgKi9cblxuKGZ1bmN0aW9uICh2aWV3KSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICB2aWV3LlVSTCA9IHZpZXcuVVJMIHx8IHZpZXcud2Via2l0VVJMO1xuXG4gICAgaWYgKHZpZXcuQmxvYiAmJiB2aWV3LlVSTCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IEJsb2I7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuXG4gICAgLy8gSW50ZXJuYWxseSB3ZSB1c2UgYSBCbG9iQnVpbGRlciBpbXBsZW1lbnRhdGlvbiB0byBiYXNlIEJsb2Igb2ZmIG9mXG4gICAgLy8gaW4gb3JkZXIgdG8gc3VwcG9ydCBvbGRlciBicm93c2VycyB0aGF0IG9ubHkgaGF2ZSBCbG9iQnVpbGRlclxuICAgIHZhciBCbG9iQnVpbGRlciA9IHZpZXcuQmxvYkJ1aWxkZXIgfHwgdmlldy5XZWJLaXRCbG9iQnVpbGRlciB8fCB2aWV3Lk1vekJsb2JCdWlsZGVyIHx8IChmdW5jdGlvbih2aWV3KSB7XG4gICAgICAgICAgICB2YXJcbiAgICAgICAgICAgICAgICBnZXRfY2xhc3MgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpLm1hdGNoKC9eXFxbb2JqZWN0XFxzKC4qKVxcXSQvKVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBGYWtlQmxvYkJ1aWxkZXIgPSBmdW5jdGlvbiBCbG9iQnVpbGRlcigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICwgRmFrZUJsb2IgPSBmdW5jdGlvbiBCbG9iKGRhdGEsIHR5cGUsIGVuY29kaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l6ZSA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICwgRkJCX3Byb3RvID0gRmFrZUJsb2JCdWlsZGVyLnByb3RvdHlwZVxuICAgICAgICAgICAgICAgICwgRkJfcHJvdG8gPSBGYWtlQmxvYi5wcm90b3R5cGVcbiAgICAgICAgICAgICAgICAsIEZpbGVSZWFkZXJTeW5jID0gdmlldy5GaWxlUmVhZGVyU3luY1xuICAgICAgICAgICAgICAgICwgRmlsZUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlID0gdGhpc1t0aGlzLm5hbWUgPSB0eXBlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBmaWxlX2V4X2NvZGVzID0gKFxuICAgICAgICAgICAgICAgICAgICBcIk5PVF9GT1VORF9FUlIgU0VDVVJJVFlfRVJSIEFCT1JUX0VSUiBOT1RfUkVBREFCTEVfRVJSIEVOQ09ESU5HX0VSUiBcIlxuICAgICAgICAgICAgICAgICAgICArIFwiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIElOVkFMSURfU1RBVEVfRVJSIFNZTlRBWF9FUlJcIlxuICAgICAgICAgICAgICAgICkuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAgICAgLCBmaWxlX2V4X2NvZGUgPSBmaWxlX2V4X2NvZGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICwgcmVhbF9VUkwgPSB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3XG4gICAgICAgICAgICAgICAgLCByZWFsX2NyZWF0ZV9vYmplY3RfVVJMID0gcmVhbF9VUkwuY3JlYXRlT2JqZWN0VVJMXG4gICAgICAgICAgICAgICAgLCByZWFsX3Jldm9rZV9vYmplY3RfVVJMID0gcmVhbF9VUkwucmV2b2tlT2JqZWN0VVJMXG4gICAgICAgICAgICAgICAgLCBVUkwgPSByZWFsX1VSTFxuICAgICAgICAgICAgICAgICwgYnRvYSA9IHZpZXcuYnRvYVxuICAgICAgICAgICAgICAgICwgYXRvYiA9IHZpZXcuYXRvYlxuXG4gICAgICAgICAgICAgICAgLCBBcnJheUJ1ZmZlciA9IHZpZXcuQXJyYXlCdWZmZXJcbiAgICAgICAgICAgICAgICAsIFVpbnQ4QXJyYXkgPSB2aWV3LlVpbnQ4QXJyYXlcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICBGYWtlQmxvYi5mYWtlID0gRkJfcHJvdG8uZmFrZSA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoZmlsZV9leF9jb2RlLS0pIHtcbiAgICAgICAgICAgICAgICBGaWxlRXhjZXB0aW9uLnByb3RvdHlwZVtmaWxlX2V4X2NvZGVzW2ZpbGVfZXhfY29kZV1dID0gZmlsZV9leF9jb2RlICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVhbF9VUkwuY3JlYXRlT2JqZWN0VVJMKSB7XG4gICAgICAgICAgICAgICAgVVJMID0gdmlldy5VUkwgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwgPSBmdW5jdGlvbihibG9iKSB7XG4gICAgICAgICAgICAgICAgdmFyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBibG9iLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgLCBkYXRhX1VSSV9oZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYmxvYiBpbnN0YW5jZW9mIEZha2VCbG9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFfVVJJX2hlYWRlciA9IFwiZGF0YTpcIiArIHR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9iLmVuY29kaW5nID09PSBcImJhc2U2NFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCI7YmFzZTY0LFwiICsgYmxvYi5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2IuZW5jb2RpbmcgPT09IFwiVVJJXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIixcIiArIGRlY29kZVVSSUNvbXBvbmVudChibG9iLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGlmIChidG9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCI7YmFzZTY0LFwiICsgYnRvYShibG9iLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfVVJJX2hlYWRlciArIFwiLFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGJsb2IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlYWxfY3JlYXRlX29iamVjdF9VUkwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxfY3JlYXRlX29iamVjdF9VUkwuY2FsbChyZWFsX1VSTCwgYmxvYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwgPSBmdW5jdGlvbihvYmplY3RfVVJMKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdF9VUkwuc3Vic3RyaW5nKDAsIDUpICE9PSBcImRhdGE6XCIgJiYgcmVhbF9yZXZva2Vfb2JqZWN0X1VSTCkge1xuICAgICAgICAgICAgICAgICAgICByZWFsX3Jldm9rZV9vYmplY3RfVVJMLmNhbGwocmVhbF9VUkwsIG9iamVjdF9VUkwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBGQkJfcHJvdG8uYXBwZW5kID0gZnVuY3Rpb24oZGF0YS8qLCBlbmRpbmdzKi8pIHtcbiAgICAgICAgICAgICAgICB2YXIgYmIgPSB0aGlzLmRhdGE7XG4gICAgICAgICAgICAgICAgLy8gZGVjb2RlIGRhdGEgdG8gYSBiaW5hcnkgc3RyaW5nXG4gICAgICAgICAgICAgICAgaWYgKFVpbnQ4QXJyYXkgJiYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGkgPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGJ1Zl9sZW4gPSBidWYubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgYnVmX2xlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJiLnB1c2goc3RyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdldF9jbGFzcyhkYXRhKSA9PT0gXCJCbG9iXCIgfHwgZ2V0X2NsYXNzKGRhdGEpID09PSBcIkZpbGVcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoRmlsZVJlYWRlclN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmciA9IG5ldyBGaWxlUmVhZGVyU3luYztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLnB1c2goZnIucmVhZEFzQmluYXJ5U3RyaW5nKGRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzeW5jIEZpbGVSZWFkZXIgd29uJ3Qgd29yayBhcyBCbG9iQnVpbGRlciBpcyBzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRmlsZUV4Y2VwdGlvbihcIk5PVF9SRUFEQUJMRV9FUlJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBGYWtlQmxvYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lbmNvZGluZyA9PT0gXCJiYXNlNjRcIiAmJiBhdG9iKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGF0b2IoZGF0YS5kYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5lbmNvZGluZyA9PT0gXCJVUklcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChkZWNvZGVVUklDb21wb25lbnQoZGF0YS5kYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5lbmNvZGluZyA9PT0gXCJyYXdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChkYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhICs9IFwiXCI7IC8vIGNvbnZlcnQgdW5zdXBwb3J0ZWQgdHlwZXMgdG8gc3RyaW5nc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGRlY29kZSBVVEYtMTYgdG8gYmluYXJ5IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkYXRhKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBGQkJfcHJvdG8uZ2V0QmxvYiA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZUJsb2IodGhpcy5kYXRhLmpvaW4oXCJcIiksIHR5cGUsIFwicmF3XCIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCQl9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIltvYmplY3QgQmxvYkJ1aWxkZXJdXCI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJfcHJvdG8uc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kLCB0eXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChhcmdzIDwgMykge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlQmxvYihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhLnNsaWNlKHN0YXJ0LCBhcmdzID4gMSA/IGVuZCA6IHRoaXMuZGF0YS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICwgdHlwZVxuICAgICAgICAgICAgICAgICAgICAsIHRoaXMuZW5jb2RpbmdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW29iamVjdCBCbG9iXVwiO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCX3Byb3RvLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaXplID0gdGhpcy5kYXRhLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIEZha2VCbG9iQnVpbGRlcjtcbiAgICAgICAgfSh2aWV3KSk7XG5cbiAgICB2aWV3LkJsb2IgPSBmdW5jdGlvbiBCbG9iKGJsb2JQYXJ0cywgb3B0aW9ucykge1xuICAgICAgICB2YXIgdHlwZSA9IG9wdGlvbnMgPyAob3B0aW9ucy50eXBlIHx8IFwiXCIpIDogXCJcIjtcbiAgICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKTtcbiAgICAgICAgaWYgKGJsb2JQYXJ0cykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGJsb2JQYXJ0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJsb2JQYXJ0c1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0QmxvYih0eXBlKTtcbiAgICB9O1xufSh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmIHx8IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93IHx8IHRoaXMuY29udGVudCB8fCB0aGlzKSk7XG4iLCIoZnVuY3Rpb24oYSxiKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGIpO2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGV4cG9ydHMpYigpO2Vsc2V7YigpLGEuRmlsZVNhdmVyPXtleHBvcnRzOnt9fS5leHBvcnRzfX0pKHRoaXMsZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBiKGEsYil7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIGI/Yj17YXV0b0JvbTohMX06XCJvYmplY3RcIiE9dHlwZW9mIGImJihjb25zb2xlLndhcm4oXCJEZXByZWNhdGVkOiBFeHBlY3RlZCB0aGlyZCBhcmd1bWVudCB0byBiZSBhIG9iamVjdFwiKSxiPXthdXRvQm9tOiFifSksYi5hdXRvQm9tJiYvXlxccyooPzp0ZXh0XFwvXFxTKnxhcHBsaWNhdGlvblxcL3htbHxcXFMqXFwvXFxTKlxcK3htbClcXHMqOy4qY2hhcnNldFxccyo9XFxzKnV0Zi04L2kudGVzdChhLnR5cGUpP25ldyBCbG9iKFtcIlxcdUZFRkZcIixhXSx7dHlwZTphLnR5cGV9KTphfWZ1bmN0aW9uIGMoYSxiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9wZW4oXCJHRVRcIixhKSxkLnJlc3BvbnNlVHlwZT1cImJsb2JcIixkLm9ubG9hZD1mdW5jdGlvbigpe2coZC5yZXNwb25zZSxiLGMpfSxkLm9uZXJyb3I9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKFwiY291bGQgbm90IGRvd25sb2FkIGZpbGVcIil9LGQuc2VuZCgpfWZ1bmN0aW9uIGQoYSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbihcIkhFQURcIixhLCExKTt0cnl7Yi5zZW5kKCl9Y2F0Y2goYSl7fXJldHVybiAyMDA8PWIuc3RhdHVzJiYyOTk+PWIuc3RhdHVzfWZ1bmN0aW9uIGUoYSl7dHJ5e2EuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKX1jYXRjaChjKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFdmVudChcIk1vdXNlRXZlbnRzXCIpO2IuaW5pdE1vdXNlRXZlbnQoXCJjbGlja1wiLCEwLCEwLHdpbmRvdywwLDAsMCw4MCwyMCwhMSwhMSwhMSwhMSwwLG51bGwpLGEuZGlzcGF0Y2hFdmVudChiKX19dmFyIGY9XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93LndpbmRvdz09PXdpbmRvdz93aW5kb3c6XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYuc2VsZj09PXNlbGY/c2VsZjpcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwuZ2xvYmFsPT09Z2xvYmFsP2dsb2JhbDp2b2lkIDAsYT1mLm5hdmlnYXRvciYmL01hY2ludG9zaC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmL0FwcGxlV2ViS2l0Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhL1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxnPWYuc2F2ZUFzfHwoXCJvYmplY3RcIiE9dHlwZW9mIHdpbmRvd3x8d2luZG93IT09Zj9mdW5jdGlvbigpe306XCJkb3dubG9hZFwiaW4gSFRNTEFuY2hvckVsZW1lbnQucHJvdG90eXBlJiYhYT9mdW5jdGlvbihiLGcsaCl7dmFyIGk9Zi5VUkx8fGYud2Via2l0VVJMLGo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7Zz1nfHxiLm5hbWV8fFwiZG93bmxvYWRcIixqLmRvd25sb2FkPWcsai5yZWw9XCJub29wZW5lclwiLFwic3RyaW5nXCI9PXR5cGVvZiBiPyhqLmhyZWY9YixqLm9yaWdpbj09PWxvY2F0aW9uLm9yaWdpbj9lKGopOmQoai5ocmVmKT9jKGIsZyxoKTplKGosai50YXJnZXQ9XCJfYmxhbmtcIikpOihqLmhyZWY9aS5jcmVhdGVPYmplY3RVUkwoYiksc2V0VGltZW91dChmdW5jdGlvbigpe2kucmV2b2tlT2JqZWN0VVJMKGouaHJlZil9LDRFNCksc2V0VGltZW91dChmdW5jdGlvbigpe2Uoail9LDApKX06XCJtc1NhdmVPck9wZW5CbG9iXCJpbiBuYXZpZ2F0b3I/ZnVuY3Rpb24oZixnLGgpe2lmKGc9Z3x8Zi5uYW1lfHxcImRvd25sb2FkXCIsXCJzdHJpbmdcIiE9dHlwZW9mIGYpbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYihmLGgpLGcpO2Vsc2UgaWYoZChmKSljKGYsZyxoKTtlbHNle3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2kuaHJlZj1mLGkudGFyZ2V0PVwiX2JsYW5rXCIsc2V0VGltZW91dChmdW5jdGlvbigpe2UoaSl9KX19OmZ1bmN0aW9uKGIsZCxlLGcpe2lmKGc9Z3x8b3BlbihcIlwiLFwiX2JsYW5rXCIpLGcmJihnLmRvY3VtZW50LnRpdGxlPWcuZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9XCJkb3dubG9hZGluZy4uLlwiKSxcInN0cmluZ1wiPT10eXBlb2YgYilyZXR1cm4gYyhiLGQsZSk7dmFyIGg9XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIj09PWIudHlwZSxpPS9jb25zdHJ1Y3Rvci9pLnRlc3QoZi5IVE1MRWxlbWVudCl8fGYuc2FmYXJpLGo9L0NyaU9TXFwvW1xcZF0rLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKChqfHxoJiZpfHxhKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEZpbGVSZWFkZXIpe3ZhciBrPW5ldyBGaWxlUmVhZGVyO2sub25sb2FkZW5kPWZ1bmN0aW9uKCl7dmFyIGE9ay5yZXN1bHQ7YT1qP2E6YS5yZXBsYWNlKC9eZGF0YTpbXjtdKjsvLFwiZGF0YTphdHRhY2htZW50L2ZpbGU7XCIpLGc/Zy5sb2NhdGlvbi5ocmVmPWE6bG9jYXRpb249YSxnPW51bGx9LGsucmVhZEFzRGF0YVVSTChiKX1lbHNle3ZhciBsPWYuVVJMfHxmLndlYmtpdFVSTCxtPWwuY3JlYXRlT2JqZWN0VVJMKGIpO2c/Zy5sb2NhdGlvbj1tOmxvY2F0aW9uLmhyZWY9bSxnPW51bGwsc2V0VGltZW91dChmdW5jdGlvbigpe2wucmV2b2tlT2JqZWN0VVJMKG0pfSw0RTQpfX0pO2Yuc2F2ZUFzPWcuc2F2ZUFzPWcsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmKG1vZHVsZS5leHBvcnRzPWcpfSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbGVTYXZlci5taW4uanMubWFwIiwiLyohIHhsc3guanMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLyogdmltOiBzZXQgdHM9MjogKi9cbi8qZXhwb3J0ZWQgWExTWCAqL1xuLypnbG9iYWwgcHJvY2VzczpmYWxzZSwgQnVmZmVyOmZhbHNlLCBBcnJheUJ1ZmZlcjpmYWxzZSwgRGF0YVZpZXc6ZmFsc2UsIERlbm86ZmFsc2UgKi9cbnZhciBYTFNYID0ge307XG5YTFNYLnZlcnNpb24gPSAnMC4xOC41JztcbnZhciBjdXJyZW50X2NvZGVwYWdlID0gMTIwMCwgY3VycmVudF9hbnNpID0gMTI1MjtcblxudmFyIFZBTElEX0FOU0kgPSBbIDg3NCwgOTMyLCA5MzYsIDk0OSwgOTUwLCAxMjUwLCAxMjUxLCAxMjUyLCAxMjUzLCAxMjU0LCAxMjU1LCAxMjU2LCAxMjU3LCAxMjU4LCAxMDAwMCBdO1xuLyogRUNNQS0zNzYgUGFydCBJIDE4LjQuMSBjaGFyc2V0IHRvIGNvZGVwYWdlIG1hcHBpbmcgKi9cbnZhciBDUzJDUCA9ICh7XG5cdC8qOjpbKi8wLyo6Ol0qLzogICAgMTI1MiwgLyogQU5TSSAqL1xuXHQvKjo6WyovMS8qOjpdKi86ICAgNjUwMDEsIC8qIERFRkFVTFQgKi9cblx0Lyo6OlsqLzIvKjo6XSovOiAgIDY1MDAxLCAvKiBTWU1CT0wgKi9cblx0Lyo6OlsqLzc3Lyo6Ol0qLzogIDEwMDAwLCAvKiBNQUMgKi9cblx0Lyo6OlsqLzEyOC8qOjpdKi86ICAgOTMyLCAvKiBTSElGVEpJUyAqL1xuXHQvKjo6WyovMTI5Lyo6Ol0qLzogICA5NDksIC8qIEhBTkdVTCAqL1xuXHQvKjo6WyovMTMwLyo6Ol0qLzogIDEzNjEsIC8qIEpPSEFCICovXG5cdC8qOjpbKi8xMzQvKjo6XSovOiAgIDkzNiwgLyogR0IyMzEyICovXG5cdC8qOjpbKi8xMzYvKjo6XSovOiAgIDk1MCwgLyogQ0hJTkVTRUJJRzUgKi9cblx0Lyo6OlsqLzE2MS8qOjpdKi86ICAxMjUzLCAvKiBHUkVFSyAqL1xuXHQvKjo6WyovMTYyLyo6Ol0qLzogIDEyNTQsIC8qIFRVUktJU0ggKi9cblx0Lyo6OlsqLzE2My8qOjpdKi86ICAxMjU4LCAvKiBWSUVUTkFNRVNFICovXG5cdC8qOjpbKi8xNzcvKjo6XSovOiAgMTI1NSwgLyogSEVCUkVXICovXG5cdC8qOjpbKi8xNzgvKjo6XSovOiAgMTI1NiwgLyogQVJBQklDICovXG5cdC8qOjpbKi8xODYvKjo6XSovOiAgMTI1NywgLyogQkFMVElDICovXG5cdC8qOjpbKi8yMDQvKjo6XSovOiAgMTI1MSwgLyogUlVTU0lBTiAqL1xuXHQvKjo6WyovMjIyLyo6Ol0qLzogICA4NzQsIC8qIFRIQUkgKi9cblx0Lyo6OlsqLzIzOC8qOjpdKi86ICAxMjUwLCAvKiBFQVNURVVST1BFICovXG5cdC8qOjpbKi8yNTUvKjo6XSovOiAgMTI1MiwgLyogT0VNICovXG5cdC8qOjpbKi82OS8qOjpdKi86ICAgNjk2OSAgLyogTUlTQyAqL1xufS8qOmFueSovKTtcblxudmFyIHNldF9hbnNpID0gZnVuY3Rpb24oY3AvKjpudW1iZXIqLykgeyBpZihWQUxJRF9BTlNJLmluZGV4T2YoY3ApID09IC0xKSByZXR1cm47IGN1cnJlbnRfYW5zaSA9IENTMkNQWzBdID0gY3A7IH07XG5mdW5jdGlvbiByZXNldF9hbnNpKCkgeyBzZXRfYW5zaSgxMjUyKTsgfVxuXG52YXIgc2V0X2NwID0gZnVuY3Rpb24oY3AvKjpudW1iZXIqLykgeyBjdXJyZW50X2NvZGVwYWdlID0gY3A7IHNldF9hbnNpKGNwKTsgfTtcbmZ1bmN0aW9uIHJlc2V0X2NwKCkgeyBzZXRfY3AoMTIwMCk7IHJlc2V0X2Fuc2koKTsgfVxuXG5mdW5jdGlvbiBjaGFyX2NvZGVzKGRhdGEvKjpzdHJpbmcqLykvKjpBcnJheTxudW1iZXI+Ki8geyB2YXIgby8qOkFycmF5PG51bWJlcj4qLyA9IFtdOyBmb3IodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgKytpKSBvW2ldID0gZGF0YS5jaGFyQ29kZUF0KGkpOyByZXR1cm4gbzsgfVxuXG5mdW5jdGlvbiB1dGYxNmxlcmVhZChkYXRhLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgKGRhdGEubGVuZ3RoPj4xKTsgKytpKSBvW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhLmNoYXJDb2RlQXQoMippKSArIChkYXRhLmNoYXJDb2RlQXQoMippKzEpPDw4KSk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB1dGYxNmJlcmVhZChkYXRhLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgKGRhdGEubGVuZ3RoPj4xKTsgKytpKSBvW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhLmNoYXJDb2RlQXQoMippKzEpICsgKGRhdGEuY2hhckNvZGVBdCgyKmkpPDw4KSk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbnZhciBkZWJvbSA9IGZ1bmN0aW9uKGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBjMSA9IGRhdGEuY2hhckNvZGVBdCgwKSwgYzIgPSBkYXRhLmNoYXJDb2RlQXQoMSk7XG5cdGlmKGMxID09IDB4RkYgJiYgYzIgPT0gMHhGRSkgcmV0dXJuIHV0ZjE2bGVyZWFkKGRhdGEuc2xpY2UoMikpO1xuXHRpZihjMSA9PSAweEZFICYmIGMyID09IDB4RkYpIHJldHVybiB1dGYxNmJlcmVhZChkYXRhLnNsaWNlKDIpKTtcblx0aWYoYzEgPT0gMHhGRUZGKSByZXR1cm4gZGF0YS5zbGljZSgxKTtcblx0cmV0dXJuIGRhdGE7XG59O1xuXG52YXIgX2dldGNoYXIgPSBmdW5jdGlvbiBfZ2MxKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHgpOyB9O1xudmFyIF9nZXRhbnNpID0gZnVuY3Rpb24gX2dhMSh4Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh4KTsgfTtcblxudmFyICRjcHRhYmxlO1xuZnVuY3Rpb24gc2V0X2NwdGFibGUoY3B0YWJsZSkge1xuXHQkY3B0YWJsZSA9IGNwdGFibGU7XG5cdHNldF9jcCA9IGZ1bmN0aW9uKGNwLyo6bnVtYmVyKi8pIHsgY3VycmVudF9jb2RlcGFnZSA9IGNwOyBzZXRfYW5zaShjcCk7IH07XG5cdGRlYm9tID0gZnVuY3Rpb24oZGF0YS8qOnN0cmluZyovKSB7XG5cdFx0aWYoZGF0YS5jaGFyQ29kZUF0KDApID09PSAweEZGICYmIGRhdGEuY2hhckNvZGVBdCgxKSA9PT0gMHhGRSkgeyByZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGNoYXJfY29kZXMoZGF0YS5zbGljZSgyKSkpOyB9XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH07XG5cdF9nZXRjaGFyID0gZnVuY3Rpb24gX2djMih4Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRcdGlmKGN1cnJlbnRfY29kZXBhZ2UgPT09IDEyMDApIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHgpO1xuXHRcdHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jb2RlcGFnZSwgW3gmMjU1LHg+PjhdKVswXTtcblx0fTtcblx0X2dldGFuc2kgPSBmdW5jdGlvbiBfZ2EyKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdFx0cmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2Fuc2ksIFt4XSlbMF07XG5cdH07XG5cdGNwZG9pdCgpO1xufVxuZXhwb3J0IHsgc2V0X2NwdGFibGUgfTtcbnZhciBERU5TRSA9IG51bGw7XG52YXIgRElGX1hMID0gdHJ1ZTtcbnZhciBCYXNlNjRfbWFwID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO1xuZnVuY3Rpb24gQmFzZTY0X2VuY29kZShpbnB1dCkge1xuICB2YXIgbyA9IFwiXCI7XG4gIHZhciBjMSA9IDAsIGMyID0gMCwgYzMgPSAwLCBlMSA9IDAsIGUyID0gMCwgZTMgPSAwLCBlNCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyApIHtcbiAgICBjMSA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcbiAgICBlMSA9IGMxID4+IDI7XG4gICAgYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7XG4gICAgZTIgPSAoYzEgJiAzKSA8PCA0IHwgYzIgPj4gNDtcbiAgICBjMyA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcbiAgICBlMyA9IChjMiAmIDE1KSA8PCAyIHwgYzMgPj4gNjtcbiAgICBlNCA9IGMzICYgNjM7XG4gICAgaWYgKGlzTmFOKGMyKSkge1xuICAgICAgZTMgPSBlNCA9IDY0O1xuICAgIH0gZWxzZSBpZiAoaXNOYU4oYzMpKSB7XG4gICAgICBlNCA9IDY0O1xuICAgIH1cbiAgICBvICs9IEJhc2U2NF9tYXAuY2hhckF0KGUxKSArIEJhc2U2NF9tYXAuY2hhckF0KGUyKSArIEJhc2U2NF9tYXAuY2hhckF0KGUzKSArIEJhc2U2NF9tYXAuY2hhckF0KGU0KTtcbiAgfVxuICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIEJhc2U2NF9kZWNvZGUoaW5wdXQpIHtcbiAgdmFyIG8gPSBcIlwiO1xuICB2YXIgYzEgPSAwLCBjMiA9IDAsIGMzID0gMCwgZTEgPSAwLCBlMiA9IDAsIGUzID0gMCwgZTQgPSAwO1xuICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teXFx3XFwrXFwvXFw9XS9nLCBcIlwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7ICkge1xuICAgIGUxID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBlMiA9IEJhc2U2NF9tYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG4gICAgYzEgPSBlMSA8PCAyIHwgZTIgPj4gNDtcbiAgICBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYzEpO1xuICAgIGUzID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBjMiA9IChlMiAmIDE1KSA8PCA0IHwgZTMgPj4gMjtcbiAgICBpZiAoZTMgIT09IDY0KSB7XG4gICAgICBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYzIpO1xuICAgIH1cbiAgICBlNCA9IEJhc2U2NF9tYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG4gICAgYzMgPSAoZTMgJiAzKSA8PCA2IHwgZTQ7XG4gICAgaWYgKGU0ICE9PSA2NCkge1xuICAgICAgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG87XG59XG52YXIgaGFzX2J1ZiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7IHJldHVybiB0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnICYmICEhcHJvY2Vzcy52ZXJzaW9ucy5ub2RlOyB9KSgpO1xuXG52YXIgQnVmZmVyX2Zyb20gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRpZih0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuXHRcdHZhciBuYmZzID0gIUJ1ZmZlci5mcm9tO1xuXHRcdGlmKCFuYmZzKSB0cnkgeyBCdWZmZXIuZnJvbShcImZvb1wiLCBcInV0ZjhcIik7IH0gY2F0Y2goZSkgeyBuYmZzID0gdHJ1ZTsgfVxuXHRcdHJldHVybiBuYmZzID8gZnVuY3Rpb24oYnVmLCBlbmMpIHsgcmV0dXJuIChlbmMpID8gbmV3IEJ1ZmZlcihidWYsIGVuYykgOiBuZXcgQnVmZmVyKGJ1Zik7IH0gOiBCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlcik7XG5cdH1cblx0cmV0dXJuIGZ1bmN0aW9uKCkge307XG59KSgpO1xuXG5cbmZ1bmN0aW9uIG5ld19yYXdfYnVmKGxlbi8qOm51bWJlciovKSB7XG5cdC8qIGpzaGludCAtVzA1NiAqL1xuXHRpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyLmFsbG9jID8gQnVmZmVyLmFsbG9jKGxlbikgOiBuZXcgQnVmZmVyKGxlbik7XG5cdHJldHVybiB0eXBlb2YgVWludDhBcnJheSAhPSBcInVuZGVmaW5lZFwiID8gbmV3IFVpbnQ4QXJyYXkobGVuKSA6IG5ldyBBcnJheShsZW4pO1xuXHQvKiBqc2hpbnQgK1cwNTYgKi9cbn1cblxuZnVuY3Rpb24gbmV3X3Vuc2FmZV9idWYobGVuLyo6bnVtYmVyKi8pIHtcblx0LyoganNoaW50IC1XMDU2ICovXG5cdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUgPyBCdWZmZXIuYWxsb2NVbnNhZmUobGVuKSA6IG5ldyBCdWZmZXIobGVuKTtcblx0cmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVWludDhBcnJheShsZW4pIDogbmV3IEFycmF5KGxlbik7XG5cdC8qIGpzaGludCArVzA1NiAqL1xufVxuXG52YXIgczJhID0gZnVuY3Rpb24gczJhKHMvKjpzdHJpbmcqLykvKjphbnkqLyB7XG5cdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXJfZnJvbShzLCBcImJpbmFyeVwiKTtcblx0cmV0dXJuIHMuc3BsaXQoXCJcIikubWFwKGZ1bmN0aW9uKHgvKjpzdHJpbmcqLykvKjpudW1iZXIqL3sgcmV0dXJuIHguY2hhckNvZGVBdCgwKSAmIDB4ZmY7IH0pO1xufTtcblxuZnVuY3Rpb24gczJhYihzLyo6c3RyaW5nKi8pLyo6YW55Ki8ge1xuXHRpZih0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gczJhKHMpO1xuXHR2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKHMubGVuZ3RoKSwgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG5cdGZvciAodmFyIGk9MDsgaSE9cy5sZW5ndGg7ICsraSkgdmlld1tpXSA9IHMuY2hhckNvZGVBdChpKSAmIDB4RkY7XG5cdHJldHVybiBidWY7XG59XG5cbmZ1bmN0aW9uIGEycyhkYXRhLyo6YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRpZihBcnJheS5pc0FycmF5KGRhdGEpKSByZXR1cm4gZGF0YS5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjKTsgfSkuam9pbihcIlwiKTtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTsgZm9yKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG9baV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGFbaV0pOyByZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBhMnUoZGF0YS8qOkFycmF5PG51bWJlcj4qLykvKjpVaW50OEFycmF5Ki8ge1xuXHRpZih0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkXCIpO1xuXHRyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7XG59XG5cbmZ1bmN0aW9uIGFiMmEoZGF0YS8qOkFycmF5QnVmZmVyfFVpbnQ4QXJyYXkqLykvKjpBcnJheTxudW1iZXI+Ki8ge1xuXHRpZih0eXBlb2YgQXJyYXlCdWZmZXIgPT0gJ3VuZGVmaW5lZCcpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkXCIpO1xuXHRpZihkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHJldHVybiBhYjJhKG5ldyBVaW50OEFycmF5KGRhdGEpKTtcblx0Lyo6OiBpZihkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHR2YXIgbyA9IG5ldyBBcnJheShkYXRhLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBvW2ldID0gZGF0YVtpXTtcblx0cmV0dXJuIG87XG59XG5cbnZhciBiY29uY2F0ID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGJ1ZnMpIHsgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmcy5tYXAoZnVuY3Rpb24oYnVmKSB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoYnVmKSA/IGJ1ZiA6IEJ1ZmZlcl9mcm9tKGJ1Zik7IH0pKTsgfSA6IGZ1bmN0aW9uKGJ1ZnMpIHtcblx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHR2YXIgaSA9IDAsIG1heGxlbiA9IDA7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkgbWF4bGVuICs9IGJ1ZnNbaV0ubGVuZ3RoO1xuXHRcdHZhciBvID0gbmV3IFVpbnQ4QXJyYXkobWF4bGVuKTtcblx0XHR2YXIgbGVuID0gMDtcblx0XHRmb3IoaSA9IDAsIG1heGxlbiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgbWF4bGVuICs9IGxlbiwgKytpKSB7XG5cdFx0XHRsZW4gPSBidWZzW2ldLmxlbmd0aDtcblx0XHRcdGlmKGJ1ZnNbaV0gaW5zdGFuY2VvZiBVaW50OEFycmF5KSBvLnNldChidWZzW2ldLCBtYXhsZW4pO1xuXHRcdFx0ZWxzZSBpZih0eXBlb2YgYnVmc1tpXSA9PSBcInN0cmluZ1wiKSB7IHRocm93IFwid3RmXCI7IH1cblx0XHRcdGVsc2Ugby5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmc1tpXSksIG1heGxlbik7XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cdHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGJ1ZnMubWFwKGZ1bmN0aW9uKGJ1ZikgeyByZXR1cm4gQXJyYXkuaXNBcnJheShidWYpID8gYnVmIDogW10uc2xpY2UuY2FsbChidWYpOyB9KSk7XG59O1xuXG5mdW5jdGlvbiB1dGY4ZGVjb2RlKGNvbnRlbnQvKjpzdHJpbmcqLykge1xuXHR2YXIgb3V0ID0gW10sIHdpZHggPSAwLCBMID0gY29udGVudC5sZW5ndGggKyAyNTA7XG5cdHZhciBvID0gbmV3X3Jhd19idWYoY29udGVudC5sZW5ndGggKyAyNTUpO1xuXHRmb3IodmFyIHJpZHggPSAwOyByaWR4IDwgY29udGVudC5sZW5ndGg7ICsrcmlkeCkge1xuXHRcdHZhciBjID0gY29udGVudC5jaGFyQ29kZUF0KHJpZHgpO1xuXHRcdGlmKGMgPCAweDgwKSBvW3dpZHgrK10gPSBjO1xuXHRcdGVsc2UgaWYoYyA8IDB4ODAwKSB7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTkyfCgoYz4+NikmMzEpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KGMmNjMpKTtcblx0XHR9IGVsc2UgaWYoYyA+PSAweEQ4MDAgJiYgYyA8IDB4RTAwMCkge1xuXHRcdFx0YyA9IChjJjEwMjMpKzY0O1xuXHRcdFx0dmFyIGQgPSBjb250ZW50LmNoYXJDb2RlQXQoKytyaWR4KSYxMDIzO1xuXHRcdFx0b1t3aWR4KytdID0gKDI0MHwoKGM+PjgpJjcpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KChjPj4yKSY2MykpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoKGQ+PjYpJjE1KXwoKGMmMyk8PDQpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KGQmNjMpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1t3aWR4KytdID0gKDIyNHwoKGM+PjEyKSYxNSkpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoKGM+PjYpJjYzKSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fChjJjYzKSk7XG5cdFx0fVxuXHRcdGlmKHdpZHggPiBMKSB7XG5cdFx0XHRvdXQucHVzaChvLnNsaWNlKDAsIHdpZHgpKTtcblx0XHRcdHdpZHggPSAwO1xuXHRcdFx0byA9IG5ld19yYXdfYnVmKDY1NTM1KTtcblx0XHRcdEwgPSA2NTUzMDtcblx0XHR9XG5cdH1cblx0b3V0LnB1c2goby5zbGljZSgwLCB3aWR4KSk7XG5cdHJldHVybiBiY29uY2F0KG91dCk7XG59XG5cbnZhciBjaHIwID0gL1xcdTAwMDAvZywgY2hyMSA9IC9bXFx1MDAwMS1cXHUwMDA2XS9nO1xuLyo6OlxuZGVjbGFyZSB0eXBlIEJsb2NrID0gYW55O1xuZGVjbGFyZSB0eXBlIEJ1ZkFycmF5ID0ge1xuXHRuZXdibGsoc3o6bnVtYmVyKTpCbG9jaztcblx0bmV4dChzejpudW1iZXIpOkJsb2NrO1xuXHRlbmQoKTphbnk7XG5cdHB1c2goYnVmOkJsb2NrKTp2b2lkO1xufTtcblxudHlwZSBSZWNvcmRIb3BwZXJDQiA9IHsoZDphbnksIFJuOnN0cmluZywgUlQ6bnVtYmVyKTo/Ym9vbGVhbjt9O1xuXG50eXBlIEV2ZXJ0VHlwZSA9IHtbc3RyaW5nXTpzdHJpbmd9O1xudHlwZSBFdmVydE51bVR5cGUgPSB7W3N0cmluZ106bnVtYmVyfTtcbnR5cGUgRXZlcnRBcnJUeXBlID0ge1tzdHJpbmddOkFycmF5PHN0cmluZz59O1xuXG50eXBlIFN0cmluZ0NvbnYgPSB7KHN0cmluZyk6c3RyaW5nfTtcblxuKi9cbi8qIHNzZi5qcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKmpzaGludCAtVzA0MSAqL1xuZnVuY3Rpb24gX3N0cnJldih4Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyB2YXIgbyA9IFwiXCIsIGkgPSB4Lmxlbmd0aC0xOyB3aGlsZShpPj0wKSBvICs9IHguY2hhckF0KGktLSk7IHJldHVybiBvOyB9XG5mdW5jdGlvbiBwYWQwKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIit2OyByZXR1cm4gdC5sZW5ndGg+PWQ/dDpmaWxsKCcwJyxkLXQubGVuZ3RoKSt0O31cbmZ1bmN0aW9uIHBhZF8odi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7cmV0dXJuIHQubGVuZ3RoPj1kP3Q6ZmlsbCgnICcsZC10Lmxlbmd0aCkrdDt9XG5mdW5jdGlvbiBycGFkXyh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrdjsgcmV0dXJuIHQubGVuZ3RoPj1kP3Q6dCtmaWxsKCcgJyxkLXQubGVuZ3RoKTt9XG5mdW5jdGlvbiBwYWQwcjEodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK01hdGgucm91bmQodik7IHJldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJzAnLGQtdC5sZW5ndGgpK3Q7fVxuZnVuY3Rpb24gcGFkMHIyKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIit2OyByZXR1cm4gdC5sZW5ndGg+PWQ/dDpmaWxsKCcwJyxkLXQubGVuZ3RoKSt0O31cbnZhciBwMl8zMiA9IC8qI19fUFVSRV9fKi9NYXRoLnBvdygyLDMyKTtcbmZ1bmN0aW9uIHBhZDByKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97aWYodj5wMl8zMnx8djwtcDJfMzIpIHJldHVybiBwYWQwcjEodixkKTsgdmFyIGkgPSBNYXRoLnJvdW5kKHYpOyByZXR1cm4gcGFkMHIyKGksZCk7IH1cbi8qIHllcywgaW4gMjAyMiB0aGlzIGlzIHN0aWxsIGZhc3RlciB0aGFuIHN0cmluZyBjb21wYXJlICovXG5mdW5jdGlvbiBTU0ZfaXNnZW5lcmFsKHMvKjpzdHJpbmcqLywgaS8qOj9udW1iZXIqLykvKjpib29sZWFuKi8geyBpID0gaSB8fCAwOyByZXR1cm4gcy5sZW5ndGggPj0gNyArIGkgJiYgKHMuY2hhckNvZGVBdChpKXwzMikgPT09IDEwMyAmJiAocy5jaGFyQ29kZUF0KGkrMSl8MzIpID09PSAxMDEgJiYgKHMuY2hhckNvZGVBdChpKzIpfDMyKSA9PT0gMTEwICYmIChzLmNoYXJDb2RlQXQoaSszKXwzMikgPT09IDEwMSAmJiAocy5jaGFyQ29kZUF0KGkrNCl8MzIpID09PSAxMTQgJiYgKHMuY2hhckNvZGVBdChpKzUpfDMyKSA9PT0gOTcgJiYgKHMuY2hhckNvZGVBdChpKzYpfDMyKSA9PT0gMTA4OyB9XG52YXIgZGF5cy8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW1xuXHRbJ1N1bicsICdTdW5kYXknXSxcblx0WydNb24nLCAnTW9uZGF5J10sXG5cdFsnVHVlJywgJ1R1ZXNkYXknXSxcblx0WydXZWQnLCAnV2VkbmVzZGF5J10sXG5cdFsnVGh1JywgJ1RodXJzZGF5J10sXG5cdFsnRnJpJywgJ0ZyaWRheSddLFxuXHRbJ1NhdCcsICdTYXR1cmRheSddXG5dO1xudmFyIG1vbnRocy8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW1xuXHRbJ0onLCAnSmFuJywgJ0phbnVhcnknXSxcblx0WydGJywgJ0ZlYicsICdGZWJydWFyeSddLFxuXHRbJ00nLCAnTWFyJywgJ01hcmNoJ10sXG5cdFsnQScsICdBcHInLCAnQXByaWwnXSxcblx0WydNJywgJ01heScsICdNYXknXSxcblx0WydKJywgJ0p1bicsICdKdW5lJ10sXG5cdFsnSicsICdKdWwnLCAnSnVseSddLFxuXHRbJ0EnLCAnQXVnJywgJ0F1Z3VzdCddLFxuXHRbJ1MnLCAnU2VwJywgJ1NlcHRlbWJlciddLFxuXHRbJ08nLCAnT2N0JywgJ09jdG9iZXInXSxcblx0WydOJywgJ05vdicsICdOb3ZlbWJlciddLFxuXHRbJ0QnLCAnRGVjJywgJ0RlY2VtYmVyJ11cbl07XG5mdW5jdGlvbiBTU0ZfaW5pdF90YWJsZSh0Lyo6YW55Ki8pIHtcblx0aWYoIXQpIHQgPSB7fTtcblx0dFswXT0gICdHZW5lcmFsJztcblx0dFsxXT0gICcwJztcblx0dFsyXT0gICcwLjAwJztcblx0dFszXT0gICcjLCMjMCc7XG5cdHRbNF09ICAnIywjIzAuMDAnO1xuXHR0WzldPSAgJzAlJztcblx0dFsxMF09ICcwLjAwJSc7XG5cdHRbMTFdPSAnMC4wMEUrMDAnO1xuXHR0WzEyXT0gJyMgPy8/Jztcblx0dFsxM109ICcjID8/Lz8/Jztcblx0dFsxNF09ICdtL2QveXknO1xuXHR0WzE1XT0gJ2QtbW1tLXl5Jztcblx0dFsxNl09ICdkLW1tbSc7XG5cdHRbMTddPSAnbW1tLXl5Jztcblx0dFsxOF09ICdoOm1tIEFNL1BNJztcblx0dFsxOV09ICdoOm1tOnNzIEFNL1BNJztcblx0dFsyMF09ICdoOm1tJztcblx0dFsyMV09ICdoOm1tOnNzJztcblx0dFsyMl09ICdtL2QveXkgaDptbSc7XG5cdHRbMzddPSAnIywjIzAgOygjLCMjMCknO1xuXHR0WzM4XT0gJyMsIyMwIDtbUmVkXSgjLCMjMCknO1xuXHR0WzM5XT0gJyMsIyMwLjAwOygjLCMjMC4wMCknO1xuXHR0WzQwXT0gJyMsIyMwLjAwO1tSZWRdKCMsIyMwLjAwKSc7XG5cdHRbNDVdPSAnbW06c3MnO1xuXHR0WzQ2XT0gJ1toXTptbTpzcyc7XG5cdHRbNDddPSAnbW1zcy4wJztcblx0dFs0OF09ICcjIzAuMEUrMCc7XG5cdHRbNDldPSAnQCc7XG5cdHRbNTZdPSAnXCLkuIrljYgv5LiL5Y2IIFwiaGhcIuaZglwibW1cIuWIhlwic3NcIuenkiBcIic7XG5cdHJldHVybiB0O1xufVxuLyogcmVwZWF0ZWQgdG8gc2F0aWF0ZSB3ZWJwYWNrICovXG52YXIgdGFibGVfZm10ID0ge1xuXHQwOiAgJ0dlbmVyYWwnLFxuXHQxOiAgJzAnLFxuXHQyOiAgJzAuMDAnLFxuXHQzOiAgJyMsIyMwJyxcblx0NDogICcjLCMjMC4wMCcsXG5cdDk6ICAnMCUnLFxuXHQxMDogJzAuMDAlJyxcblx0MTE6ICcwLjAwRSswMCcsXG5cdDEyOiAnIyA/Lz8nLFxuXHQxMzogJyMgPz8vPz8nLFxuXHQxNDogJ20vZC95eScsXG5cdDE1OiAnZC1tbW0teXknLFxuXHQxNjogJ2QtbW1tJyxcblx0MTc6ICdtbW0teXknLFxuXHQxODogJ2g6bW0gQU0vUE0nLFxuXHQxOTogJ2g6bW06c3MgQU0vUE0nLFxuXHQyMDogJ2g6bW0nLFxuXHQyMTogJ2g6bW06c3MnLFxuXHQyMjogJ20vZC95eSBoOm1tJyxcblx0Mzc6ICcjLCMjMCA7KCMsIyMwKScsXG5cdDM4OiAnIywjIzAgO1tSZWRdKCMsIyMwKScsXG5cdDM5OiAnIywjIzAuMDA7KCMsIyMwLjAwKScsXG5cdDQwOiAnIywjIzAuMDA7W1JlZF0oIywjIzAuMDApJyxcblx0NDU6ICdtbTpzcycsXG5cdDQ2OiAnW2hdOm1tOnNzJyxcblx0NDc6ICdtbXNzLjAnLFxuXHQ0ODogJyMjMC4wRSswJyxcblx0NDk6ICdAJyxcblx0NTY6ICdcIuS4iuWNiC/kuIvljYggXCJoaFwi5pmCXCJtbVwi5YiGXCJzc1wi56eSIFwiJ1xufTtcblxuLyogRGVmYXVsdHMgZGV0ZXJtaW5lZCBieSBzeXN0ZW1hdGljYWxseSB0ZXN0aW5nIGluIEV4Y2VsIDIwMTkgKi9cblxuLyogVGhlc2UgZm9ybWF0cyBhcHBlYXIgdG8gZGVmYXVsdCB0byBvdGhlciBmb3JtYXRzIGluIHRoZSB0YWJsZSAqL1xudmFyIFNTRl9kZWZhdWx0X21hcCA9IHtcblx0NTogIDM3LCA2OiAgMzgsIDc6ICAzOSwgODogIDQwLCAgICAgICAgIC8vICA1IC0+IDM3IC4uLiAgOCAtPiA0MFxuXG5cdDIzOiAgMCwgMjQ6ICAwLCAyNTogIDAsIDI2OiAgMCwgICAgICAgICAvLyAyMyAtPiAgMCAuLi4gMjYgLT4gIDBcblxuXHQyNzogMTQsIDI4OiAxNCwgMjk6IDE0LCAzMDogMTQsIDMxOiAxNCwgLy8gMjcgLT4gMTQgLi4uIDMxIC0+IDE0XG5cblx0NTA6IDE0LCA1MTogMTQsIDUyOiAxNCwgNTM6IDE0LCA1NDogMTQsIC8vIDUwIC0+IDE0IC4uLiA1OCAtPiAxNFxuXHQ1NTogMTQsIDU2OiAxNCwgNTc6IDE0LCA1ODogMTQsXG5cdDU5OiAgMSwgNjA6ICAyLCA2MTogIDMsIDYyOiAgNCwgICAgICAgICAvLyA1OSAtPiAgMSAuLi4gNjIgLT4gIDRcblxuXHQ2NzogIDksIDY4OiAxMCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNjcgLT4gIDkgLi4uIDY4IC0+IDEwXG5cdDY5OiAxMiwgNzA6IDEzLCA3MTogMTQsICAgICAgICAgICAgICAgICAvLyA2OSAtPiAxMiAuLi4gNzEgLT4gMTRcblx0NzI6IDE0LCA3MzogMTUsIDc0OiAxNiwgNzU6IDE3LCAgICAgICAgIC8vIDcyIC0+IDE0IC4uLiA3NSAtPiAxN1xuXHQ3NjogMjAsIDc3OiAyMSwgNzg6IDIyLCAgICAgICAgICAgICAgICAgLy8gNzYgLT4gMjAgLi4uIDc4IC0+IDIyXG5cdDc5OiA0NSwgODA6IDQ2LCA4MTogNDcsICAgICAgICAgICAgICAgICAvLyA3OSAtPiA0NSAuLi4gODEgLT4gNDdcblx0ODI6IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDgyIC0+ICAwIC4uLiA2NTUzNiAtPiAwIChvbWl0dGVkKVxufTtcblxuXG4vKiBUaGVzZSBmb3JtYXRzIHRlY2huaWNhbGx5IHJlZmVyIHRvIEFjY291bnRpbmcgZm9ybWF0cyB3aXRoIG5vIGVxdWl2YWxlbnQgKi9cbnZhciBTU0ZfZGVmYXVsdF9zdHIgPSB7XG5cdC8vICA1IC0tIEN1cnJlbmN5LCAgIDAgZGVjaW1hbCwgYmxhY2sgbmVnYXRpdmVcblx0NTogICdcIiRcIiMsIyMwXyk7XFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHQ2MzogJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cblx0Ly8gIDYgLS0gQ3VycmVuY3ksICAgMCBkZWNpbWFsLCByZWQgICBuZWdhdGl2ZVxuXHQ2OiAgJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0NjQ6ICdcIiRcIiMsIyMwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cblx0Ly8gIDcgLS0gQ3VycmVuY3ksICAgMiBkZWNpbWFsLCBibGFjayBuZWdhdGl2ZVxuXHQ3OiAgJ1wiJFwiIywjIzAuMDBfKTtcXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdDY1OiAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblxuXHQvLyAgOCAtLSBDdXJyZW5jeSwgICAyIGRlY2ltYWwsIHJlZCAgIG5lZ2F0aXZlXG5cdDg6ICAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHQ2NjogJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblxuXHQvLyA0MSAtLSBBY2NvdW50aW5nLCAwIGRlY2ltYWwsIE5vIFN5bWJvbFxuXHQ0MTogJ18oKiAjLCMjMF8pO18oKiBcXFxcKCMsIyMwXFxcXCk7XygqIFwiLVwiXyk7XyhAXyknLFxuXG5cdC8vIDQyIC0tIEFjY291bnRpbmcsIDAgZGVjaW1hbCwgJCAgU3ltYm9sXG5cdDQyOiAnXyhcIiRcIiogIywjIzBfKTtfKFwiJFwiKiBcXFxcKCMsIyMwXFxcXCk7XyhcIiRcIiogXCItXCJfKTtfKEBfKScsXG5cblx0Ly8gNDMgLS0gQWNjb3VudGluZywgMiBkZWNpbWFsLCBObyBTeW1ib2xcblx0NDM6ICdfKCogIywjIzAuMDBfKTtfKCogXFxcXCgjLCMjMC4wMFxcXFwpO18oKiBcIi1cIj8/Xyk7XyhAXyknLFxuXG5cdC8vIDQ0IC0tIEFjY291bnRpbmcsIDIgZGVjaW1hbCwgJCAgU3ltYm9sXG5cdDQ0OiAnXyhcIiRcIiogIywjIzAuMDBfKTtfKFwiJFwiKiBcXFxcKCMsIyMwLjAwXFxcXCk7XyhcIiRcIiogXCItXCI/P18pO18oQF8pJ1xufTtcblxuZnVuY3Rpb24gU1NGX2ZyYWMoeC8qOm51bWJlciovLCBELyo6bnVtYmVyKi8sIG1peGVkLyo6P2Jvb2xlYW4qLykvKjpBcnJheTxudW1iZXI+Ki8ge1xuXHR2YXIgc2duID0geCA8IDAgPyAtMSA6IDE7XG5cdHZhciBCID0geCAqIHNnbjtcblx0dmFyIFBfMiA9IDAsIFBfMSA9IDEsIFAgPSAwO1xuXHR2YXIgUV8yID0gMSwgUV8xID0gMCwgUSA9IDA7XG5cdHZhciBBID0gTWF0aC5mbG9vcihCKTtcblx0d2hpbGUoUV8xIDwgRCkge1xuXHRcdEEgPSBNYXRoLmZsb29yKEIpO1xuXHRcdFAgPSBBICogUF8xICsgUF8yO1xuXHRcdFEgPSBBICogUV8xICsgUV8yO1xuXHRcdGlmKChCIC0gQSkgPCAwLjAwMDAwMDA1KSBicmVhaztcblx0XHRCID0gMSAvIChCIC0gQSk7XG5cdFx0UF8yID0gUF8xOyBQXzEgPSBQO1xuXHRcdFFfMiA9IFFfMTsgUV8xID0gUTtcblx0fVxuXHRpZihRID4gRCkgeyBpZihRXzEgPiBEKSB7IFEgPSBRXzI7IFAgPSBQXzI7IH0gZWxzZSB7IFEgPSBRXzE7IFAgPSBQXzE7IH0gfVxuXHRpZighbWl4ZWQpIHJldHVybiBbMCwgc2duICogUCwgUV07XG5cdHZhciBxID0gTWF0aC5mbG9vcihzZ24gKiBQL1EpO1xuXHRyZXR1cm4gW3EsIHNnbipQIC0gcSpRLCBRXTtcbn1cbmZ1bmN0aW9uIFNTRl9wYXJzZV9kYXRlX2NvZGUodi8qOm51bWJlciovLG9wdHMvKjo/YW55Ki8sYjIvKjo/Ym9vbGVhbiovKSB7XG5cdGlmKHYgPiAyOTU4NDY1IHx8IHYgPCAwKSByZXR1cm4gbnVsbDtcblx0dmFyIGRhdGUgPSAodnwwKSwgdGltZSA9IE1hdGguZmxvb3IoODY0MDAgKiAodiAtIGRhdGUpKSwgZG93PTA7XG5cdHZhciBkb3V0PVtdO1xuXHR2YXIgb3V0PXtEOmRhdGUsIFQ6dGltZSwgdTo4NjQwMCoodi1kYXRlKS10aW1lLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07XG5cdGlmKE1hdGguYWJzKG91dC51KSA8IDFlLTYpIG91dC51ID0gMDtcblx0aWYob3B0cyAmJiBvcHRzLmRhdGUxOTA0KSBkYXRlICs9IDE0NjI7XG5cdGlmKG91dC51ID4gMC45OTk5KSB7XG5cdFx0b3V0LnUgPSAwO1xuXHRcdGlmKCsrdGltZSA9PSA4NjQwMCkgeyBvdXQuVCA9IHRpbWUgPSAwOyArK2RhdGU7ICsrb3V0LkQ7IH1cblx0fVxuXHRpZihkYXRlID09PSA2MCkge2RvdXQgPSBiMiA/IFsxMzE3LDEwLDI5XSA6IFsxOTAwLDIsMjldOyBkb3c9Mzt9XG5cdGVsc2UgaWYoZGF0ZSA9PT0gMCkge2RvdXQgPSBiMiA/IFsxMzE3LDgsMjldIDogWzE5MDAsMSwwXTsgZG93PTY7fVxuXHRlbHNlIHtcblx0XHRpZihkYXRlID4gNjApIC0tZGF0ZTtcblx0XHQvKiAxID0gSmFuIDEgMTkwMCBpbiBHcmVnb3JpYW4gKi9cblx0XHR2YXIgZCA9IG5ldyBEYXRlKDE5MDAsIDAsIDEpO1xuXHRcdGQuc2V0RGF0ZShkLmdldERhdGUoKSArIGRhdGUgLSAxKTtcblx0XHRkb3V0ID0gW2QuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpKzEsZC5nZXREYXRlKCldO1xuXHRcdGRvdyA9IGQuZ2V0RGF5KCk7XG5cdFx0aWYoZGF0ZSA8IDYwKSBkb3cgPSAoZG93ICsgNikgJSA3O1xuXHRcdGlmKGIyKSBkb3cgPSBTU0ZfZml4X2hpanJpKGQsIGRvdXQpO1xuXHR9XG5cdG91dC55ID0gZG91dFswXTsgb3V0Lm0gPSBkb3V0WzFdOyBvdXQuZCA9IGRvdXRbMl07XG5cdG91dC5TID0gdGltZSAlIDYwOyB0aW1lID0gTWF0aC5mbG9vcih0aW1lIC8gNjApO1xuXHRvdXQuTSA9IHRpbWUgJSA2MDsgdGltZSA9IE1hdGguZmxvb3IodGltZSAvIDYwKTtcblx0b3V0LkggPSB0aW1lO1xuXHRvdXQucSA9IGRvdztcblx0cmV0dXJuIG91dDtcbn1cbnZhciBTU0ZiYXNlZGF0ZSA9IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgxODk5LCAxMSwgMzEsIDAsIDAsIDApO1xudmFyIFNTRmRudGhyZXNoID0gLyojX19QVVJFX18qL1NTRmJhc2VkYXRlLmdldFRpbWUoKTtcbnZhciBTU0ZiYXNlMTkwNCA9IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgxOTAwLCAyLCAxLCAwLCAwLCAwKTtcbmZ1bmN0aW9uIGRhdGVudW1fbG9jYWwodi8qOkRhdGUqLywgZGF0ZTE5MDQvKjo/Ym9vbGVhbiovKS8qOm51bWJlciovIHtcblx0dmFyIGVwb2NoID0gLyojX19QVVJFX18qL3YuZ2V0VGltZSgpO1xuXHRpZihkYXRlMTkwNCkgZXBvY2ggLT0gMTQ2MSoyNCo2MCo2MCoxMDAwO1xuXHRlbHNlIGlmKHYgPj0gU1NGYmFzZTE5MDQpIGVwb2NoICs9IDI0KjYwKjYwKjEwMDA7XG5cdHJldHVybiAoZXBvY2ggLSAoU1NGZG50aHJlc2ggKyAoLyojX19QVVJFX18qL3YuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIC8qI19fUFVSRV9fKi9TU0ZiYXNlZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpKSAqIDYwMDAwKSkgLyAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG59XG4vKiBFQ01BLTM3NiAxOC44LjMwIG51bUZtdCovXG4vKiBOb3RlOiBgdG9QcmVjaXNpb25gIHVzZXMgc3RhbmRhcmQgZm9ybSB3aGVuIHByZWMgPiBFIGFuZCBFID49IC02ICovXG4vKiBleHBvbmVudCA+PSAtOSBhbmQgPD0gOSAqL1xuZnVuY3Rpb24gU1NGX3N0cmlwX2RlY2ltYWwoby8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIChvLmluZGV4T2YoXCIuXCIpID09IC0xKSA/IG8gOiBvLnJlcGxhY2UoLyg/OlxcLjAqfChcXC5cXGQqWzEtOV0pMCspJC8sIFwiJDFcIik7XG59XG5cbi8qIEdlbmVyYWwgRXhwb25lbnRpYWwgYWx3YXlzIHNob3dzIDIgZGlnaXRzIGV4cCBhbmQgdHJpbXMgdGhlIG1hbnRpc3NhICovXG5mdW5jdGlvbiBTU0Zfbm9ybWFsaXplX2V4cChvLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihvLmluZGV4T2YoXCJFXCIpID09IC0xKSByZXR1cm4gbztcblx0cmV0dXJuIG8ucmVwbGFjZSgvKD86XFwuMCp8KFxcLlxcZCpbMS05XSkwKylbRWVdLyxcIiQxRVwiKS5yZXBsYWNlKC8oRVsrLV0pKFxcZCkkLyxcIiQxMCQyXCIpO1xufVxuXG4vKiBleHBvbmVudCA+PSAtOSBhbmQgPD0gOSAqL1xuZnVuY3Rpb24gU1NGX3NtYWxsX2V4cCh2Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgdyA9ICh2PDA/MTI6MTEpO1xuXHR2YXIgbyA9IFNTRl9zdHJpcF9kZWNpbWFsKHYudG9GaXhlZCgxMikpOyBpZihvLmxlbmd0aCA8PSB3KSByZXR1cm4gbztcblx0byA9IHYudG9QcmVjaXNpb24oMTApOyBpZihvLmxlbmd0aCA8PSB3KSByZXR1cm4gbztcblx0cmV0dXJuIHYudG9FeHBvbmVudGlhbCg1KTtcbn1cblxuLyogZXhwb25lbnQgPj0gMTEgb3IgPD0gLTEwIGxpa2VseSBleHBvbmVudGlhbCAqL1xuZnVuY3Rpb24gU1NGX2xhcmdlX2V4cCh2Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFNTRl9zdHJpcF9kZWNpbWFsKHYudG9GaXhlZCgxMSkpO1xuXHRyZXR1cm4gKG8ubGVuZ3RoID4gKHY8MD8xMjoxMSkgfHwgbyA9PT0gXCIwXCIgfHwgbyA9PT0gXCItMFwiKSA/IHYudG9QcmVjaXNpb24oNikgOiBvO1xufVxuXG5mdW5jdGlvbiBTU0ZfZ2VuZXJhbF9udW0odi8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0dmFyIFYgPSBNYXRoLmZsb29yKE1hdGgubG9nKE1hdGguYWJzKHYpKSpNYXRoLkxPRzEwRSksIG87XG5cblx0aWYoViA+PSAtNCAmJiBWIDw9IC0xKSBvID0gdi50b1ByZWNpc2lvbigxMCtWKTtcblx0ZWxzZSBpZihNYXRoLmFicyhWKSA8PSA5KSBvID0gU1NGX3NtYWxsX2V4cCh2KTtcblx0ZWxzZSBpZihWID09PSAxMCkgbyA9IHYudG9GaXhlZCgxMCkuc3Vic3RyKDAsMTIpO1xuXHRlbHNlIG8gPSBTU0ZfbGFyZ2VfZXhwKHYpO1xuXG5cdHJldHVybiBTU0Zfc3RyaXBfZGVjaW1hbChTU0Zfbm9ybWFsaXplX2V4cChvLnRvVXBwZXJDYXNlKCkpKTtcbn1cblxuXG4vKlxuXHRcIkdlbmVyYWxcIiBydWxlczpcblx0LSB0ZXh0IGlzIHBhc3NlZCB0aHJvdWdoIChcIkBcIilcblx0LSBib29sZWFucyBhcmUgcmVuZGVyZWQgYXMgVFJVRS9GQUxTRVxuXHQtIFwidXAgdG8gMTEgY2hhcmFjdGVyc1wiIGRpc3BsYXllZCBmb3IgbnVtYmVyc1xuXHQtIERlZmF1bHQgZGF0ZSBmb3JtYXQgKGNvZGUgMTQpIHVzZWQgZm9yIERhdGVzXG5cblx0VGhlIGxvbmdlc3QgMzItYml0IGludGVnZXIgdGV4dCBpcyBcIi0yMTQ3NDgzNjQ4XCIsIGV4YWN0bHkgMTEgY2hhcnNcblx0VE9ETzogdGVjaG5pY2FsbHkgdGhlIGRpc3BsYXkgZGVwZW5kcyBvbiB0aGUgd2lkdGggb2YgdGhlIGNlbGxcbiovXG5mdW5jdGlvbiBTU0ZfZ2VuZXJhbCh2Lyo6YW55Ki8sIG9wdHMvKjphbnkqLykge1xuXHRzd2l0Y2godHlwZW9mIHYpIHtcblx0XHRjYXNlICdzdHJpbmcnOiByZXR1cm4gdjtcblx0XHRjYXNlICdib29sZWFuJzogcmV0dXJuIHYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIjtcblx0XHRjYXNlICdudW1iZXInOiByZXR1cm4gKHZ8MCkgPT09IHYgPyB2LnRvU3RyaW5nKDEwKSA6IFNTRl9nZW5lcmFsX251bSh2KTtcblx0XHRjYXNlICd1bmRlZmluZWQnOiByZXR1cm4gXCJcIjtcblx0XHRjYXNlICdvYmplY3QnOlxuXHRcdFx0aWYodiA9PSBudWxsKSByZXR1cm4gXCJcIjtcblx0XHRcdGlmKHYgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gU1NGX2Zvcm1hdCgxNCwgZGF0ZW51bV9sb2NhbCh2LCBvcHRzICYmIG9wdHMuZGF0ZTE5MDQpLCBvcHRzKTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCB2YWx1ZSBpbiBHZW5lcmFsIGZvcm1hdDogXCIgKyB2KTtcbn1cblxuZnVuY3Rpb24gU1NGX2ZpeF9oaWpyaShkYXRlLyo6RGF0ZSovLCBvLyo6W251bWJlciwgbnVtYmVyLCBudW1iZXJdKi8pIHtcbiAgLyogVE9ETzogcHJvcGVybHkgYWRqdXN0IHkvbS9kIGFuZCAgKi9cbiAgb1swXSAtPSA1ODE7XG4gIHZhciBkb3cgPSBkYXRlLmdldERheSgpO1xuICBpZihkYXRlIDwgNjApIGRvdyA9IChkb3cgKyA2KSAlIDc7XG4gIHJldHVybiBkb3c7XG59XG4vL3ZhciBUSEFJX0RJR0lUUyA9IFwiXFx1MEU1MFxcdTBFNTFcXHUwRTUyXFx1MEU1M1xcdTBFNTRcXHUwRTU1XFx1MEU1NlxcdTBFNTdcXHUwRTU4XFx1MEU1OVwiLnNwbGl0KFwiXCIpO1xuZnVuY3Rpb24gU1NGX3dyaXRlX2RhdGUodHlwZS8qOm51bWJlciovLCBmbXQvKjpzdHJpbmcqLywgdmFsLCBzczAvKjo/bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbz1cIlwiLCBzcz0wLCB0dD0wLCB5ID0gdmFsLnksIG91dCwgb3V0bCA9IDA7XG5cdHN3aXRjaCh0eXBlKSB7XG5cdFx0Y2FzZSA5ODogLyogJ2InIGJ1ZGRoaXN0IHllYXIgKi9cblx0XHRcdHkgPSB2YWwueSArIDU0Mztcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIDEyMTogLyogJ3knIHllYXIgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IHkgJSAxMDA7IG91dGwgPSAyOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IG91dCA9IHkgJSAxMDAwMDsgb3V0bCA9IDQ7IGJyZWFrO1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSAxMDk6IC8qICdtJyBtb250aCAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0gdmFsLm07IG91dGwgPSBmbXQubGVuZ3RoOyBicmVhaztcblx0XHRcdGNhc2UgMzogcmV0dXJuIG1vbnRoc1t2YWwubS0xXVsxXTtcblx0XHRcdGNhc2UgNTogcmV0dXJuIG1vbnRoc1t2YWwubS0xXVswXTtcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBtb250aHNbdmFsLm0tMV1bMl07XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDEwMDogLyogJ2QnIGRheSAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0gdmFsLmQ7IG91dGwgPSBmbXQubGVuZ3RoOyBicmVhaztcblx0XHRcdGNhc2UgMzogcmV0dXJuIGRheXNbdmFsLnFdWzBdO1xuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRheXNbdmFsLnFdWzFdO1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSAxMDQ6IC8qICdoJyAxMi1ob3VyICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSAxKyh2YWwuSCsxMSklMTI7IG91dGwgPSBmbXQubGVuZ3RoOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93ICdiYWQgaG91ciBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDcyOiAvKiAnSCcgMjQtaG91ciAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0gdmFsLkg7IG91dGwgPSBmbXQubGVuZ3RoOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93ICdiYWQgaG91ciBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDc3OiAvKiAnTScgbWludXRlcyAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0gdmFsLk07IG91dGwgPSBmbXQubGVuZ3RoOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93ICdiYWQgbWludXRlIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgMTE1OiAvKiAncycgc2Vjb25kcyAqL1xuXHRcdFx0aWYoZm10ICE9ICdzJyAmJiBmbXQgIT0gJ3NzJyAmJiBmbXQgIT0gJy4wJyAmJiBmbXQgIT0gJy4wMCcgJiYgZm10ICE9ICcuMDAwJykgdGhyb3cgJ2JhZCBzZWNvbmQgZm9ybWF0OiAnICsgZm10O1xuXHRcdFx0aWYodmFsLnUgPT09IDAgJiYgKGZtdCA9PSBcInNcIiB8fCBmbXQgPT0gXCJzc1wiKSkgcmV0dXJuIHBhZDAodmFsLlMsIGZtdC5sZW5ndGgpO1xuXHRcdFx0Lyo6OmlmKCFzczApIHNzMCA9IDA7ICovXG5cdFx0XHRpZihzczAgPj0gMikgdHQgPSBzczAgPT09IDMgPyAxMDAwIDogMTAwO1xuXHRcdFx0ZWxzZSB0dCA9IHNzMCA9PT0gMSA/IDEwIDogMTtcblx0XHRcdHNzID0gTWF0aC5yb3VuZCgodHQpKih2YWwuUyArIHZhbC51KSk7XG5cdFx0XHRpZihzcyA+PSA2MCp0dCkgc3MgPSAwO1xuXHRcdFx0aWYoZm10ID09PSAncycpIHJldHVybiBzcyA9PT0gMCA/IFwiMFwiIDogXCJcIitzcy90dDtcblx0XHRcdG8gPSBwYWQwKHNzLDIgKyBzczApO1xuXHRcdFx0aWYoZm10ID09PSAnc3MnKSByZXR1cm4gby5zdWJzdHIoMCwyKTtcblx0XHRcdHJldHVybiBcIi5cIiArIG8uc3Vic3RyKDIsZm10Lmxlbmd0aC0xKTtcblx0XHRjYXNlIDkwOiAvKiAnWicgYWJzb2x1dGUgdGltZSAqL1xuXHRcdHN3aXRjaChmbXQpIHtcblx0XHRcdGNhc2UgJ1toXSc6IGNhc2UgJ1toaF0nOiBvdXQgPSB2YWwuRCoyNCt2YWwuSDsgYnJlYWs7XG5cdFx0XHRjYXNlICdbbV0nOiBjYXNlICdbbW1dJzogb3V0ID0gKHZhbC5EKjI0K3ZhbC5IKSo2MCt2YWwuTTsgYnJlYWs7XG5cdFx0XHRjYXNlICdbc10nOiBjYXNlICdbc3NdJzogb3V0ID0gKCh2YWwuRCoyNCt2YWwuSCkqNjArdmFsLk0pKjYwK01hdGgucm91bmQodmFsLlMrdmFsLnUpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93ICdiYWQgYWJzdGltZSBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0fSBvdXRsID0gZm10Lmxlbmd0aCA9PT0gMyA/IDEgOiAyOyBicmVhaztcblx0XHRjYXNlIDEwMTogLyogJ2UnIGVyYSAqL1xuXHRcdFx0b3V0ID0geTsgb3V0bCA9IDE7IGJyZWFrO1xuXHR9XG5cdHZhciBvdXRzdHIgPSBvdXRsID4gMCA/IHBhZDAob3V0LCBvdXRsKSA6IFwiXCI7XG5cdHJldHVybiBvdXRzdHI7XG59XG5cblxuLypqc2hpbnQgLVcwODYgKi9cbi8qanNoaW50ICtXMDg2ICovXG5mdW5jdGlvbiBjb21tYWlmeShzLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgdyA9IDM7XG5cdGlmKHMubGVuZ3RoIDw9IHcpIHJldHVybiBzO1xuXHR2YXIgaiA9IChzLmxlbmd0aCAlIHcpLCBvID0gcy5zdWJzdHIoMCxqKTtcblx0Zm9yKDsgaiE9cy5sZW5ndGg7IGorPXcpIG8rPShvLmxlbmd0aCA+IDAgPyBcIixcIiA6IFwiXCIpICsgcy5zdWJzdHIoaix3KTtcblx0cmV0dXJuIG87XG59XG52YXIgcGN0MSA9IC8lL2c7XG5mdW5jdGlvbiB3cml0ZV9udW1fcGN0KHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgc2ZtdCA9IGZtdC5yZXBsYWNlKHBjdDEsXCJcIiksIG11bCA9IGZtdC5sZW5ndGggLSBzZm10Lmxlbmd0aDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBzZm10LCB2YWwgKiBNYXRoLnBvdygxMCwyKm11bCkpICsgZmlsbChcIiVcIixtdWwpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9udW1fY20odHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBpZHggPSBmbXQubGVuZ3RoIC0gMTtcblx0d2hpbGUoZm10LmNoYXJDb2RlQXQoaWR4LTEpID09PSA0NCkgLS1pZHg7XG5cdHJldHVybiB3cml0ZV9udW0odHlwZSwgZm10LnN1YnN0cigwLGlkeCksIHZhbCAvIE1hdGgucG93KDEwLDMqKGZtdC5sZW5ndGgtaWR4KSkpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9udW1fZXhwKGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIG8vKjpzdHJpbmcqLztcblx0dmFyIGlkeCA9IGZtdC5pbmRleE9mKFwiRVwiKSAtIGZtdC5pbmRleE9mKFwiLlwiKSAtIDE7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMC4wRVxcKzAkLykpIHtcblx0XHRpZih2YWwgPT0gMCkgcmV0dXJuIFwiMC4wRSswXCI7XG5cdFx0ZWxzZSBpZih2YWwgPCAwKSByZXR1cm4gXCItXCIgKyB3cml0ZV9udW1fZXhwKGZtdCwgLXZhbCk7XG5cdFx0dmFyIHBlcmlvZCA9IGZtdC5pbmRleE9mKFwiLlwiKTsgaWYocGVyaW9kID09PSAtMSkgcGVyaW9kPWZtdC5pbmRleE9mKCdFJyk7XG5cdFx0dmFyIGVlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpKk1hdGguTE9HMTBFKSVwZXJpb2Q7XG5cdFx0aWYoZWUgPCAwKSBlZSArPSBwZXJpb2Q7XG5cdFx0byA9ICh2YWwvTWF0aC5wb3coMTAsZWUpKS50b1ByZWNpc2lvbihpZHgrMSsocGVyaW9kK2VlKSVwZXJpb2QpO1xuXHRcdGlmKG8uaW5kZXhPZihcImVcIikgPT09IC0xKSB7XG5cdFx0XHR2YXIgZmFrZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpO1xuXHRcdFx0aWYoby5pbmRleE9mKFwiLlwiKSA9PT0gLTEpIG8gPSBvLmNoYXJBdCgwKSArIFwiLlwiICsgby5zdWJzdHIoMSkgKyBcIkUrXCIgKyAoZmFrZWUgLSBvLmxlbmd0aCtlZSk7XG5cdFx0XHRlbHNlIG8gKz0gXCJFK1wiICsgKGZha2VlIC0gZWUpO1xuXHRcdFx0d2hpbGUoby5zdWJzdHIoMCwyKSA9PT0gXCIwLlwiKSB7XG5cdFx0XHRcdG8gPSBvLmNoYXJBdCgwKSArIG8uc3Vic3RyKDIscGVyaW9kKSArIFwiLlwiICsgby5zdWJzdHIoMitwZXJpb2QpO1xuXHRcdFx0XHRvID0gby5yZXBsYWNlKC9eMCsoWzEtOV0pLyxcIiQxXCIpLnJlcGxhY2UoL14wK1xcLi8sXCIwLlwiKTtcblx0XHRcdH1cblx0XHRcdG8gPSBvLnJlcGxhY2UoL1xcKy0vLFwiLVwiKTtcblx0XHR9XG5cdFx0byA9IG8ucmVwbGFjZSgvXihbKy1dPykoXFxkKilcXC4oXFxkKilbRWVdLyxmdW5jdGlvbigkJCwkMSwkMiwkMykgeyByZXR1cm4gJDEgKyAkMiArICQzLnN1YnN0cigwLChwZXJpb2QrZWUpJXBlcmlvZCkgKyBcIi5cIiArICQzLnN1YnN0cihlZSkgKyBcIkVcIjsgfSk7XG5cdH0gZWxzZSBvID0gdmFsLnRvRXhwb25lbnRpYWwoaWR4KTtcblx0aWYoZm10Lm1hdGNoKC9FXFwrMDAkLykgJiYgby5tYXRjaCgvZVsrLV1cXGQkLykpIG8gPSBvLnN1YnN0cigwLG8ubGVuZ3RoLTEpICsgXCIwXCIgKyBvLmNoYXJBdChvLmxlbmd0aC0xKTtcblx0aWYoZm10Lm1hdGNoKC9FXFwtLykgJiYgby5tYXRjaCgvZVxcKy8pKSBvID0gby5yZXBsYWNlKC9lXFwrLyxcImVcIik7XG5cdHJldHVybiBvLnJlcGxhY2UoXCJlXCIsXCJFXCIpO1xufVxudmFyIGZyYWMxID0gLyMgKFxcPyspKCA/KVxcLyggPykoXFxkKykvO1xuZnVuY3Rpb24gd3JpdGVfbnVtX2YxKHIvKjpBcnJheTxzdHJpbmc+Ki8sIGF2YWwvKjpudW1iZXIqLywgc2lnbi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGRlbiA9IHBhcnNlSW50KHJbNF0sMTApLCByciA9IE1hdGgucm91bmQoYXZhbCAqIGRlbiksIGJhc2UgPSBNYXRoLmZsb29yKHJyL2Rlbik7XG5cdHZhciBteW4gPSAocnIgLSBiYXNlKmRlbiksIG15ZCA9IGRlbjtcblx0cmV0dXJuIHNpZ24gKyAoYmFzZSA9PT0gMCA/IFwiXCIgOiBcIlwiK2Jhc2UpICsgXCIgXCIgKyAobXluID09PSAwID8gZmlsbChcIiBcIiwgclsxXS5sZW5ndGggKyAxICsgcls0XS5sZW5ndGgpIDogcGFkXyhteW4sclsxXS5sZW5ndGgpICsgclsyXSArIFwiL1wiICsgclszXSArIHBhZDAobXlkLHJbNF0ubGVuZ3RoKSk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fZjIoci8qOkFycmF5PHN0cmluZz4qLywgYXZhbC8qOm51bWJlciovLCBzaWduLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gc2lnbiArIChhdmFsID09PSAwID8gXCJcIiA6IFwiXCIrYXZhbCkgKyBmaWxsKFwiIFwiLCByWzFdLmxlbmd0aCArIDIgKyByWzRdLmxlbmd0aCk7XG59XG52YXIgZGVjMSA9IC9eIyowKlxcLihbMCNdKykvO1xudmFyIGNsb3NlcGFyZW4gPSAvXFwpLipbMCNdLztcbnZhciBwaG9uZSA9IC9cXCgjIyNcXCkgIyMjXFxcXD8tIyMjIy87XG5mdW5jdGlvbiBoYXNocShzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gXCJcIiwgY2M7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gc3RyLmxlbmd0aDsgKytpKSBzd2l0Y2goKGNjPXN0ci5jaGFyQ29kZUF0KGkpKSkge1xuXHRcdGNhc2UgMzU6IGJyZWFrO1xuXHRcdGNhc2UgNjM6IG8rPSBcIiBcIjsgYnJlYWs7XG5cdFx0Y2FzZSA0ODogbys9IFwiMFwiOyBicmVhaztcblx0XHRkZWZhdWx0OiBvKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjYyk7XG5cdH1cblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBybmQodmFsLyo6bnVtYmVyKi8sIGQvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHZhciBkZCA9IE1hdGgucG93KDEwLGQpOyByZXR1cm4gXCJcIisoTWF0aC5yb3VuZCh2YWwgKiBkZCkvZGQpOyB9XG5mdW5jdGlvbiBkZWModmFsLyo6bnVtYmVyKi8sIGQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBfZnJhYyA9IHZhbCAtIE1hdGguZmxvb3IodmFsKSwgZGQgPSBNYXRoLnBvdygxMCxkKTtcblx0aWYgKGQgPCAoJycgKyBNYXRoLnJvdW5kKF9mcmFjICogZGQpKS5sZW5ndGgpIHJldHVybiAwO1xuXHRyZXR1cm4gTWF0aC5yb3VuZChfZnJhYyAqIGRkKTtcbn1cbmZ1bmN0aW9uIGNhcnJ5KHZhbC8qOm51bWJlciovLCBkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHRpZiAoZCA8ICgnJyArIE1hdGgucm91bmQoKHZhbC1NYXRoLmZsb29yKHZhbCkpKk1hdGgucG93KDEwLGQpKSkubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblx0cmV0dXJuIDA7XG59XG5mdW5jdGlvbiBmbHIodmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHRpZih2YWwgPCAyMTQ3NDgzNjQ3ICYmIHZhbCA+IC0yMTQ3NDgzNjQ4KSByZXR1cm4gXCJcIisodmFsID49IDAgPyAodmFsfDApIDogKHZhbC0xfDApKTtcblx0cmV0dXJuIFwiXCIrTWF0aC5mbG9vcih2YWwpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2ZsdCh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHR5cGUuY2hhckNvZGVBdCgwKSA9PT0gNDAgJiYgIWZtdC5tYXRjaChjbG9zZXBhcmVuKSkge1xuXHRcdHZhciBmZm10ID0gZm10LnJlcGxhY2UoL1xcKCAqLyxcIlwiKS5yZXBsYWNlKC8gXFwpLyxcIlwiKS5yZXBsYWNlKC9cXCkvLFwiXCIpO1xuXHRcdGlmKHZhbCA+PSAwKSByZXR1cm4gd3JpdGVfbnVtX2ZsdCgnbicsIGZmbXQsIHZhbCk7XG5cdFx0cmV0dXJuICcoJyArIHdyaXRlX251bV9mbHQoJ24nLCBmZm10LCAtdmFsKSArICcpJztcblx0fVxuXHRpZihmbXQuY2hhckNvZGVBdChmbXQubGVuZ3RoIC0gMSkgPT09IDQ0KSByZXR1cm4gd3JpdGVfbnVtX2NtKHR5cGUsIGZtdCwgdmFsKTtcblx0aWYoZm10LmluZGV4T2YoJyUnKSAhPT0gLTEpIHJldHVybiB3cml0ZV9udW1fcGN0KHR5cGUsIGZtdCwgdmFsKTtcblx0aWYoZm10LmluZGV4T2YoJ0UnKSAhPT0gLTEpIHJldHVybiB3cml0ZV9udW1fZXhwKGZtdCwgdmFsKTtcblx0aWYoZm10LmNoYXJDb2RlQXQoMCkgPT09IDM2KSByZXR1cm4gXCIkXCIrd3JpdGVfbnVtX2ZsdCh0eXBlLGZtdC5zdWJzdHIoZm10LmNoYXJBdCgxKT09JyAnPzI6MSksdmFsKTtcblx0dmFyIG87XG5cdHZhciByLyo6P0FycmF5PHN0cmluZz4qLywgcmksIGZmLCBhdmFsID0gTWF0aC5hYnModmFsKSwgc2lnbiA9IHZhbCA8IDAgPyBcIi1cIiA6IFwiXCI7XG5cdGlmKGZtdC5tYXRjaCgvXjAwKyQvKSkgcmV0dXJuIHNpZ24gKyBwYWQwcihhdmFsLGZtdC5sZW5ndGgpO1xuXHRpZihmbXQubWF0Y2goL15bIz9dKyQvKSkge1xuXHRcdG8gPSBwYWQwcih2YWwsMCk7IGlmKG8gPT09IFwiMFwiKSBvID0gXCJcIjtcblx0XHRyZXR1cm4gby5sZW5ndGggPiBmbXQubGVuZ3RoID8gbyA6IGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKGZyYWMxKSkpIHJldHVybiB3cml0ZV9udW1fZjEociwgYXZhbCwgc2lnbik7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMCskLykpIHJldHVybiBzaWduICsgcGFkMHIoYXZhbCxmbXQubGVuZ3RoIC0gZm10LmluZGV4T2YoXCIwXCIpKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goZGVjMSkpKSB7XG5cdFx0byA9IHJuZCh2YWwsIHJbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXFwuXSspJC8sXCIkMS5cIitoYXNocShyWzFdKSkucmVwbGFjZSgvXFwuJC8sXCIuXCIraGFzaHEoclsxXSkpLnJlcGxhY2UoL1xcLihcXGQqKSQvLGZ1bmN0aW9uKCQkLCAkMSkgeyByZXR1cm4gXCIuXCIgKyAkMSArIGZpbGwoXCIwXCIsIGhhc2hxKC8qOjooKi9yLyo6Onx8W1wiXCJdKSovWzFdKS5sZW5ndGgtJDEubGVuZ3RoKTsgfSk7XG5cdFx0cmV0dXJuIGZtdC5pbmRleE9mKFwiMC5cIikgIT09IC0xID8gbyA6IG8ucmVwbGFjZSgvXjBcXC4vLFwiLlwiKTtcblx0fVxuXHRmbXQgPSBmbXQucmVwbGFjZSgvXiMrKFswLl0pLywgXCIkMVwiKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oMCopXFwuKCMqKSQvKSkpIHtcblx0XHRyZXR1cm4gc2lnbiArIHJuZChhdmFsLCByWzJdLmxlbmd0aCkucmVwbGFjZSgvXFwuKFxcZCpbMS05XSkwKiQvLFwiLiQxXCIpLnJlcGxhY2UoL14oLT9cXGQqKSQvLFwiJDEuXCIpLnJlcGxhY2UoL14wXFwuLyxyWzFdLmxlbmd0aD9cIjAuXCI6XCIuXCIpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eI3sxLDN9LCMjMChcXC4/KSQvKSkpIHJldHVybiBzaWduICsgY29tbWFpZnkocGFkMHIoYXZhbCwwKSk7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIywjIzBcXC4oWyMwXSowKSQvKSkpIHtcblx0XHRyZXR1cm4gdmFsIDwgMCA/IFwiLVwiICsgd3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQsIC12YWwpIDogY29tbWFpZnkoXCJcIisoTWF0aC5mbG9vcih2YWwpICsgY2FycnkodmFsLCByWzFdLmxlbmd0aCkpKSArIFwiLlwiICsgcGFkMChkZWModmFsLCByWzFdLmxlbmd0aCksclsxXS5sZW5ndGgpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIywjKiwjMC8pKSkgcmV0dXJuIHdyaXRlX251bV9mbHQodHlwZSxmbXQucmVwbGFjZSgvXiMsIyosLyxcIlwiKSx2YWwpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbMCNdKykoXFxcXD8tKFswI10rKSkrJC8pKSkge1xuXHRcdG8gPSBfc3RycmV2KHdyaXRlX251bV9mbHQodHlwZSwgZm10LnJlcGxhY2UoL1tcXFxcLV0vZyxcIlwiKSwgdmFsKSk7XG5cdFx0cmkgPSAwO1xuXHRcdHJldHVybiBfc3RycmV2KF9zdHJyZXYoZm10LnJlcGxhY2UoL1xcXFwvZyxcIlwiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHgpe3JldHVybiByaTxvLmxlbmd0aD9vLmNoYXJBdChyaSsrKTp4PT09JzAnPycwJzpcIlwiO30pKTtcblx0fVxuXHRpZihmbXQubWF0Y2gocGhvbmUpKSB7XG5cdFx0byA9IHdyaXRlX251bV9mbHQodHlwZSwgXCIjIyMjIyMjIyMjXCIsIHZhbCk7XG5cdFx0cmV0dXJuIFwiKFwiICsgby5zdWJzdHIoMCwzKSArIFwiKSBcIiArIG8uc3Vic3RyKDMsIDMpICsgXCItXCIgKyBvLnN1YnN0cig2KTtcblx0fVxuXHR2YXIgb2EgPSBcIlwiO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oLyo6OlN0cmluZygqL3JbNF0vKjo6KSovLmxlbmd0aCw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCBmYWxzZSk7XG5cdFx0byA9IFwiXCIgKyBzaWduO1xuXHRcdG9hID0gd3JpdGVfbnVtKFwiblwiLCAvKjo6U3RyaW5nKCovclsxXS8qOjopKi8sIGZmWzFdKTtcblx0XHRpZihvYS5jaGFyQXQob2EubGVuZ3RoLTEpID09IFwiIFwiKSBvYSA9IG9hLnN1YnN0cigwLG9hLmxlbmd0aC0xKSArIFwiMFwiO1xuXHRcdG8gKz0gb2EgKyAvKjo6U3RyaW5nKCovclsyXS8qOjopKi8gKyBcIi9cIiArIC8qOjpTdHJpbmcoKi9yWzNdLyo6OikqLztcblx0XHRvYSA9IHJwYWRfKGZmWzJdLHJpKTtcblx0XHRpZihvYS5sZW5ndGggPCByWzRdLmxlbmd0aCkgb2EgPSBoYXNocShyWzRdLnN1YnN0cihyWzRdLmxlbmd0aC1vYS5sZW5ndGgpKSArIG9hO1xuXHRcdG8gKz0gb2E7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jIChbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oTWF0aC5tYXgoclsxXS5sZW5ndGgsIHJbNF0ubGVuZ3RoKSw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCB0cnVlKTtcblx0XHRyZXR1cm4gc2lnbiArIChmZlswXXx8KGZmWzFdID8gXCJcIiA6IFwiMFwiKSkgKyBcIiBcIiArIChmZlsxXSA/IHBhZF8oZmZbMV0scmkpICsgclsyXSArIFwiL1wiICsgclszXSArIHJwYWRfKGZmWzJdLHJpKTogZmlsbChcIiBcIiwgMipyaSsxICsgclsyXS5sZW5ndGggKyByWzNdLmxlbmd0aCkpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eWyMwP10rJC8pKSkge1xuXHRcdG8gPSBwYWQwcih2YWwsIDApO1xuXHRcdGlmKGZtdC5sZW5ndGggPD0gby5sZW5ndGgpIHJldHVybiBvO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsZm10Lmxlbmd0aC1vLmxlbmd0aCkpICsgbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzA/XSspXFwuKFsjMF0rKSQvKSkpIHtcblx0XHRvID0gXCJcIiArIHZhbC50b0ZpeGVkKE1hdGgubWluKHJbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLyxcIiQxXCIpO1xuXHRcdHJpID0gby5pbmRleE9mKFwiLlwiKTtcblx0XHR2YXIgbHJlcyA9IGZtdC5pbmRleE9mKFwiLlwiKSAtIHJpLCBycmVzID0gZm10Lmxlbmd0aCAtIG8ubGVuZ3RoIC0gbHJlcztcblx0XHRyZXR1cm4gaGFzaHEoZm10LnN1YnN0cigwLGxyZXMpICsgbyArIGZtdC5zdWJzdHIoZm10Lmxlbmd0aC1ycmVzKSk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14wMCwwMDBcXC4oWyMwXSowKSQvKSkpIHtcblx0XHRyaSA9IGRlYyh2YWwsIHJbMV0ubGVuZ3RoKTtcblx0XHRyZXR1cm4gdmFsIDwgMCA/IFwiLVwiICsgd3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQsIC12YWwpIDogY29tbWFpZnkoZmxyKHZhbCkpLnJlcGxhY2UoL15cXGQsXFxkezN9JC8sXCIwJCZcIikucmVwbGFjZSgvXlxcZCokLyxmdW5jdGlvbigkJCkgeyByZXR1cm4gXCIwMCxcIiArICgkJC5sZW5ndGggPCAzID8gcGFkMCgwLDMtJCQubGVuZ3RoKSA6IFwiXCIpICsgJCQ7IH0pICsgXCIuXCIgKyBwYWQwKHJpLHJbMV0ubGVuZ3RoKTtcblx0fVxuXHRzd2l0Y2goZm10KSB7XG5cdFx0Y2FzZSBcIiMjIywjIzAuMDBcIjogcmV0dXJuIHdyaXRlX251bV9mbHQodHlwZSwgXCIjLCMjMC4wMFwiLCB2YWwpO1xuXHRcdGNhc2UgXCIjIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMjLCMjI1wiOlxuXHRcdGNhc2UgXCIjLCMjI1wiOiB2YXIgeCA9IGNvbW1haWZ5KHBhZDByKGF2YWwsMCkpOyByZXR1cm4geCAhPT0gXCIwXCIgPyBzaWduICsgeCA6IFwiXCI7XG5cdFx0Y2FzZSBcIiMjIywjIyMuMDBcIjogcmV0dXJuIHdyaXRlX251bV9mbHQodHlwZSwgXCIjIyMsIyMwLjAwXCIsdmFsKS5yZXBsYWNlKC9eMFxcLi8sXCIuXCIpO1xuXHRcdGNhc2UgXCIjLCMjIy4wMFwiOiByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMsIyMwLjAwXCIsdmFsKS5yZXBsYWNlKC9eMFxcLi8sXCIuXCIpO1xuXHRcdGRlZmF1bHQ6XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgZm9ybWF0IHxcIiArIGZtdCArIFwifFwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9jbTIodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBpZHggPSBmbXQubGVuZ3RoIC0gMTtcblx0d2hpbGUoZm10LmNoYXJDb2RlQXQoaWR4LTEpID09PSA0NCkgLS1pZHg7XG5cdHJldHVybiB3cml0ZV9udW0odHlwZSwgZm10LnN1YnN0cigwLGlkeCksIHZhbCAvIE1hdGgucG93KDEwLDMqKGZtdC5sZW5ndGgtaWR4KSkpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX3BjdDIodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzZm10ID0gZm10LnJlcGxhY2UocGN0MSxcIlwiKSwgbXVsID0gZm10Lmxlbmd0aCAtIHNmbXQubGVuZ3RoO1xuXHRyZXR1cm4gd3JpdGVfbnVtKHR5cGUsIHNmbXQsIHZhbCAqIE1hdGgucG93KDEwLDIqbXVsKSkgKyBmaWxsKFwiJVwiLG11bCk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fZXhwMihmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBvLyo6c3RyaW5nKi87XG5cdHZhciBpZHggPSBmbXQuaW5kZXhPZihcIkVcIikgLSBmbXQuaW5kZXhPZihcIi5cIikgLSAxO1xuXHRpZihmbXQubWF0Y2goL14jKzAuMEVcXCswJC8pKSB7XG5cdFx0aWYodmFsID09IDApIHJldHVybiBcIjAuMEUrMFwiO1xuXHRcdGVsc2UgaWYodmFsIDwgMCkgcmV0dXJuIFwiLVwiICsgd3JpdGVfbnVtX2V4cDIoZm10LCAtdmFsKTtcblx0XHR2YXIgcGVyaW9kID0gZm10LmluZGV4T2YoXCIuXCIpOyBpZihwZXJpb2QgPT09IC0xKSBwZXJpb2Q9Zm10LmluZGV4T2YoJ0UnKTtcblx0XHR2YXIgZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpJXBlcmlvZDtcblx0XHRpZihlZSA8IDApIGVlICs9IHBlcmlvZDtcblx0XHRvID0gKHZhbC9NYXRoLnBvdygxMCxlZSkpLnRvUHJlY2lzaW9uKGlkeCsxKyhwZXJpb2QrZWUpJXBlcmlvZCk7XG5cdFx0aWYoIW8ubWF0Y2goL1tFZV0vKSkge1xuXHRcdFx0dmFyIGZha2VlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpKk1hdGguTE9HMTBFKTtcblx0XHRcdGlmKG8uaW5kZXhPZihcIi5cIikgPT09IC0xKSBvID0gby5jaGFyQXQoMCkgKyBcIi5cIiArIG8uc3Vic3RyKDEpICsgXCJFK1wiICsgKGZha2VlIC0gby5sZW5ndGgrZWUpO1xuXHRcdFx0ZWxzZSBvICs9IFwiRStcIiArIChmYWtlZSAtIGVlKTtcblx0XHRcdG8gPSBvLnJlcGxhY2UoL1xcKy0vLFwiLVwiKTtcblx0XHR9XG5cdFx0byA9IG8ucmVwbGFjZSgvXihbKy1dPykoXFxkKilcXC4oXFxkKilbRWVdLyxmdW5jdGlvbigkJCwkMSwkMiwkMykgeyByZXR1cm4gJDEgKyAkMiArICQzLnN1YnN0cigwLChwZXJpb2QrZWUpJXBlcmlvZCkgKyBcIi5cIiArICQzLnN1YnN0cihlZSkgKyBcIkVcIjsgfSk7XG5cdH0gZWxzZSBvID0gdmFsLnRvRXhwb25lbnRpYWwoaWR4KTtcblx0aWYoZm10Lm1hdGNoKC9FXFwrMDAkLykgJiYgby5tYXRjaCgvZVsrLV1cXGQkLykpIG8gPSBvLnN1YnN0cigwLG8ubGVuZ3RoLTEpICsgXCIwXCIgKyBvLmNoYXJBdChvLmxlbmd0aC0xKTtcblx0aWYoZm10Lm1hdGNoKC9FXFwtLykgJiYgby5tYXRjaCgvZVxcKy8pKSBvID0gby5yZXBsYWNlKC9lXFwrLyxcImVcIik7XG5cdHJldHVybiBvLnJlcGxhY2UoXCJlXCIsXCJFXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2ludCh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHR5cGUuY2hhckNvZGVBdCgwKSA9PT0gNDAgJiYgIWZtdC5tYXRjaChjbG9zZXBhcmVuKSkge1xuXHRcdHZhciBmZm10ID0gZm10LnJlcGxhY2UoL1xcKCAqLyxcIlwiKS5yZXBsYWNlKC8gXFwpLyxcIlwiKS5yZXBsYWNlKC9cXCkvLFwiXCIpO1xuXHRcdGlmKHZhbCA+PSAwKSByZXR1cm4gd3JpdGVfbnVtX2ludCgnbicsIGZmbXQsIHZhbCk7XG5cdFx0cmV0dXJuICcoJyArIHdyaXRlX251bV9pbnQoJ24nLCBmZm10LCAtdmFsKSArICcpJztcblx0fVxuXHRpZihmbXQuY2hhckNvZGVBdChmbXQubGVuZ3RoIC0gMSkgPT09IDQ0KSByZXR1cm4gd3JpdGVfbnVtX2NtMih0eXBlLCBmbXQsIHZhbCk7XG5cdGlmKGZtdC5pbmRleE9mKCclJykgIT09IC0xKSByZXR1cm4gd3JpdGVfbnVtX3BjdDIodHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignRScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9leHAyKGZtdCwgdmFsKTtcblx0aWYoZm10LmNoYXJDb2RlQXQoMCkgPT09IDM2KSByZXR1cm4gXCIkXCIrd3JpdGVfbnVtX2ludCh0eXBlLGZtdC5zdWJzdHIoZm10LmNoYXJBdCgxKT09JyAnPzI6MSksdmFsKTtcblx0dmFyIG87XG5cdHZhciByLyo6P0FycmF5PHN0cmluZz4qLywgcmksIGZmLCBhdmFsID0gTWF0aC5hYnModmFsKSwgc2lnbiA9IHZhbCA8IDAgPyBcIi1cIiA6IFwiXCI7XG5cdGlmKGZtdC5tYXRjaCgvXjAwKyQvKSkgcmV0dXJuIHNpZ24gKyBwYWQwKGF2YWwsZm10Lmxlbmd0aCk7XG5cdGlmKGZtdC5tYXRjaCgvXlsjP10rJC8pKSB7XG5cdFx0byA9IChcIlwiK3ZhbCk7IGlmKHZhbCA9PT0gMCkgbyA9IFwiXCI7XG5cdFx0cmV0dXJuIG8ubGVuZ3RoID4gZm10Lmxlbmd0aCA/IG8gOiBoYXNocShmbXQuc3Vic3RyKDAsZm10Lmxlbmd0aC1vLmxlbmd0aCkpICsgbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaChmcmFjMSkpKSByZXR1cm4gd3JpdGVfbnVtX2YyKHIsIGF2YWwsIHNpZ24pO1xuXHRpZihmbXQubWF0Y2goL14jKzArJC8pKSByZXR1cm4gc2lnbiArIHBhZDAoYXZhbCxmbXQubGVuZ3RoIC0gZm10LmluZGV4T2YoXCIwXCIpKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goZGVjMSkpKSB7XG5cdFx0Lyo6OiBpZighQXJyYXkuaXNBcnJheShyKSkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0byA9IChcIlwiK3ZhbCkucmVwbGFjZSgvXihbXlxcLl0rKSQvLFwiJDEuXCIraGFzaHEoclsxXSkpLnJlcGxhY2UoL1xcLiQvLFwiLlwiK2hhc2hxKHJbMV0pKTtcblx0XHRvID0gby5yZXBsYWNlKC9cXC4oXFxkKikkLyxmdW5jdGlvbigkJCwgJDEpIHtcblx0XHQvKjo6IGlmKCFBcnJheS5pc0FycmF5KHIpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHJldHVybiBcIi5cIiArICQxICsgZmlsbChcIjBcIiwgaGFzaHEoclsxXSkubGVuZ3RoLSQxLmxlbmd0aCk7IH0pO1xuXHRcdHJldHVybiBmbXQuaW5kZXhPZihcIjAuXCIpICE9PSAtMSA/IG8gOiBvLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdH1cblx0Zm10ID0gZm10LnJlcGxhY2UoL14jKyhbMC5dKS8sIFwiJDFcIik7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKDAqKVxcLigjKikkLykpKSB7XG5cdFx0cmV0dXJuIHNpZ24gKyAoXCJcIithdmFsKS5yZXBsYWNlKC9cXC4oXFxkKlsxLTldKTAqJC8sXCIuJDFcIikucmVwbGFjZSgvXigtP1xcZCopJC8sXCIkMS5cIikucmVwbGFjZSgvXjBcXC4vLHJbMV0ubGVuZ3RoP1wiMC5cIjpcIi5cIik7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jezEsM30sIyMwKFxcLj8pJC8pKSkgcmV0dXJuIHNpZ24gKyBjb21tYWlmeSgoXCJcIithdmFsKSk7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIywjIzBcXC4oWyMwXSowKSQvKSkpIHtcblx0XHRyZXR1cm4gdmFsIDwgMCA/IFwiLVwiICsgd3JpdGVfbnVtX2ludCh0eXBlLCBmbXQsIC12YWwpIDogY29tbWFpZnkoKFwiXCIrdmFsKSkgKyBcIi5cIiArIGZpbGwoJzAnLHJbMV0ubGVuZ3RoKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiMsIyosIzAvKSkpIHJldHVybiB3cml0ZV9udW1faW50KHR5cGUsZm10LnJlcGxhY2UoL14jLCMqLC8sXCJcIiksdmFsKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWzAjXSspKFxcXFw/LShbMCNdKykpKyQvKSkpIHtcblx0XHRvID0gX3N0cnJldih3cml0ZV9udW1faW50KHR5cGUsIGZtdC5yZXBsYWNlKC9bXFxcXC1dL2csXCJcIiksIHZhbCkpO1xuXHRcdHJpID0gMDtcblx0XHRyZXR1cm4gX3N0cnJldihfc3RycmV2KGZtdC5yZXBsYWNlKC9cXFxcL2csXCJcIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbih4KXtyZXR1cm4gcmk8by5sZW5ndGg/by5jaGFyQXQocmkrKyk6eD09PScwJz8nMCc6XCJcIjt9KSk7XG5cdH1cblx0aWYoZm10Lm1hdGNoKHBob25lKSkge1xuXHRcdG8gPSB3cml0ZV9udW1faW50KHR5cGUsIFwiIyMjIyMjIyMjI1wiLCB2YWwpO1xuXHRcdHJldHVybiBcIihcIiArIG8uc3Vic3RyKDAsMykgKyBcIikgXCIgKyBvLnN1YnN0cigzLCAzKSArIFwiLVwiICsgby5zdWJzdHIoNik7XG5cdH1cblx0dmFyIG9hID0gXCJcIjtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWyMwP10rKSggPylcXC8oID8pKFsjMD9dKykvKSkpIHtcblx0XHRyaSA9IE1hdGgubWluKC8qOjpTdHJpbmcoKi9yWzRdLyo6OikqLy5sZW5ndGgsNyk7XG5cdFx0ZmYgPSBTU0ZfZnJhYyhhdmFsLCBNYXRoLnBvdygxMCxyaSktMSwgZmFsc2UpO1xuXHRcdG8gPSBcIlwiICsgc2lnbjtcblx0XHRvYSA9IHdyaXRlX251bShcIm5cIiwgLyo6OlN0cmluZygqL3JbMV0vKjo6KSovLCBmZlsxXSk7XG5cdFx0aWYob2EuY2hhckF0KG9hLmxlbmd0aC0xKSA9PSBcIiBcIikgb2EgPSBvYS5zdWJzdHIoMCxvYS5sZW5ndGgtMSkgKyBcIjBcIjtcblx0XHRvICs9IG9hICsgLyo6OlN0cmluZygqL3JbMl0vKjo6KSovICsgXCIvXCIgKyAvKjo6U3RyaW5nKCovclszXS8qOjopKi87XG5cdFx0b2EgPSBycGFkXyhmZlsyXSxyaSk7XG5cdFx0aWYob2EubGVuZ3RoIDwgcls0XS5sZW5ndGgpIG9hID0gaGFzaHEocls0XS5zdWJzdHIocls0XS5sZW5ndGgtb2EubGVuZ3RoKSkgKyBvYTtcblx0XHRvICs9IG9hO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIyAoWyMwP10rKSggPylcXC8oID8pKFsjMD9dKykvKSkpIHtcblx0XHRyaSA9IE1hdGgubWluKE1hdGgubWF4KHJbMV0ubGVuZ3RoLCByWzRdLmxlbmd0aCksNyk7XG5cdFx0ZmYgPSBTU0ZfZnJhYyhhdmFsLCBNYXRoLnBvdygxMCxyaSktMSwgdHJ1ZSk7XG5cdFx0cmV0dXJuIHNpZ24gKyAoZmZbMF18fChmZlsxXSA/IFwiXCIgOiBcIjBcIikpICsgXCIgXCIgKyAoZmZbMV0gPyBwYWRfKGZmWzFdLHJpKSArIHJbMl0gKyBcIi9cIiArIHJbM10gKyBycGFkXyhmZlsyXSxyaSk6IGZpbGwoXCIgXCIsIDIqcmkrMSArIHJbMl0ubGVuZ3RoICsgclszXS5sZW5ndGgpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXlsjMD9dKyQvKSkpIHtcblx0XHRvID0gXCJcIiArIHZhbDtcblx0XHRpZihmbXQubGVuZ3RoIDw9IG8ubGVuZ3RoKSByZXR1cm4gbztcblx0XHRyZXR1cm4gaGFzaHEoZm10LnN1YnN0cigwLGZtdC5sZW5ndGgtby5sZW5ndGgpKSArIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14oWyMwXSspXFwuKFsjMF0rKSQvKSkpIHtcblx0XHRvID0gXCJcIiArIHZhbC50b0ZpeGVkKE1hdGgubWluKHJbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLyxcIiQxXCIpO1xuXHRcdHJpID0gby5pbmRleE9mKFwiLlwiKTtcblx0XHR2YXIgbHJlcyA9IGZtdC5pbmRleE9mKFwiLlwiKSAtIHJpLCBycmVzID0gZm10Lmxlbmd0aCAtIG8ubGVuZ3RoIC0gbHJlcztcblx0XHRyZXR1cm4gaGFzaHEoZm10LnN1YnN0cigwLGxyZXMpICsgbyArIGZtdC5zdWJzdHIoZm10Lmxlbmd0aC1ycmVzKSk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14wMCwwMDBcXC4oWyMwXSowKSQvKSkpIHtcblx0XHRyZXR1cm4gdmFsIDwgMCA/IFwiLVwiICsgd3JpdGVfbnVtX2ludCh0eXBlLCBmbXQsIC12YWwpIDogY29tbWFpZnkoXCJcIit2YWwpLnJlcGxhY2UoL15cXGQsXFxkezN9JC8sXCIwJCZcIikucmVwbGFjZSgvXlxcZCokLyxmdW5jdGlvbigkJCkgeyByZXR1cm4gXCIwMCxcIiArICgkJC5sZW5ndGggPCAzID8gcGFkMCgwLDMtJCQubGVuZ3RoKSA6IFwiXCIpICsgJCQ7IH0pICsgXCIuXCIgKyBwYWQwKDAsclsxXS5sZW5ndGgpO1xuXHR9XG5cdHN3aXRjaChmbXQpIHtcblx0XHRjYXNlIFwiIyMjLCMjI1wiOlxuXHRcdGNhc2UgXCIjIywjIyNcIjpcblx0XHRjYXNlIFwiIywjIyNcIjogdmFyIHggPSBjb21tYWlmeShcIlwiK2F2YWwpOyByZXR1cm4geCAhPT0gXCIwXCIgPyBzaWduICsgeCA6IFwiXCI7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGlmKGZtdC5tYXRjaCgvXFwuWzAjP10qJC8pKSByZXR1cm4gd3JpdGVfbnVtX2ludCh0eXBlLCBmbXQuc2xpY2UoMCxmbXQubGFzdEluZGV4T2YoXCIuXCIpKSwgdmFsKSArIGhhc2hxKGZtdC5zbGljZShmbXQubGFzdEluZGV4T2YoXCIuXCIpKSk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgZm9ybWF0IHxcIiArIGZtdCArIFwifFwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bSh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiAodmFsfDApID09PSB2YWwgPyB3cml0ZV9udW1faW50KHR5cGUsIGZtdCwgdmFsKSA6IHdyaXRlX251bV9mbHQodHlwZSwgZm10LCB2YWwpO1xufVxuZnVuY3Rpb24gU1NGX3NwbGl0X2ZtdChmbXQvKjpzdHJpbmcqLykvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBpbl9zdHIgPSBmYWxzZS8qLCBjYyovO1xuXHRmb3IodmFyIGkgPSAwLCBqID0gMDsgaSA8IGZtdC5sZW5ndGg7ICsraSkgc3dpdGNoKCgvKmNjPSovZm10LmNoYXJDb2RlQXQoaSkpKSB7XG5cdFx0Y2FzZSAzNDogLyogJ1wiJyAqL1xuXHRcdFx0aW5fc3RyID0gIWluX3N0cjsgYnJlYWs7XG5cdFx0Y2FzZSA5NTogY2FzZSA0MjogY2FzZSA5MjogLyogJ18nICcqJyAnXFxcXCcgKi9cblx0XHRcdCsraTsgYnJlYWs7XG5cdFx0Y2FzZSA1OTogLyogJzsnICovXG5cdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSBmbXQuc3Vic3RyKGosaS1qKTtcblx0XHRcdGogPSBpKzE7XG5cdH1cblx0b3V0W291dC5sZW5ndGhdID0gZm10LnN1YnN0cihqKTtcblx0aWYoaW5fc3RyID09PSB0cnVlKSB0aHJvdyBuZXcgRXJyb3IoXCJGb3JtYXQgfFwiICsgZm10ICsgXCJ8IHVudGVybWluYXRlZCBzdHJpbmcgXCIpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG52YXIgU1NGX2Fic3RpbWUgPSAvXFxbW0hoTW1Tc1xcdTBFMEFcXHUwRTE5XFx1MEUxN10qXFxdLztcbmZ1bmN0aW9uIGZtdF9pc19kYXRlKGZtdC8qOnN0cmluZyovKS8qOmJvb2xlYW4qLyB7XG5cdHZhciBpID0gMCwgLypjYyA9IDAsKi8gYyA9IFwiXCIsIG8gPSBcIlwiO1xuXHR3aGlsZShpIDwgZm10Lmxlbmd0aCkge1xuXHRcdHN3aXRjaCgoYyA9IGZtdC5jaGFyQXQoaSkpKSB7XG5cdFx0XHRjYXNlICdHJzogaWYoU1NGX2lzZ2VuZXJhbChmbXQsIGkpKSBpKz0gNjsgaSsrOyBicmVhaztcblx0XHRcdGNhc2UgJ1wiJzogZm9yKDsoLypjYz0qL2ZtdC5jaGFyQ29kZUF0KCsraSkpICE9PSAzNCAmJiBpIDwgZm10Lmxlbmd0aDspey8qZW1wdHkqL30gKytpOyBicmVhaztcblx0XHRcdGNhc2UgJ1xcXFwnOiBpKz0yOyBicmVhaztcblx0XHRcdGNhc2UgJ18nOiBpKz0yOyBicmVhaztcblx0XHRcdGNhc2UgJ0AnOiArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQic6IGNhc2UgJ2InOlxuXHRcdFx0XHRpZihmbXQuY2hhckF0KGkrMSkgPT09IFwiMVwiIHx8IGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIyXCIpIHJldHVybiB0cnVlO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdNJzogY2FzZSAnRCc6IGNhc2UgJ1knOiBjYXNlICdIJzogY2FzZSAnUyc6IGNhc2UgJ0UnOlxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdtJzogY2FzZSAnZCc6IGNhc2UgJ3knOiBjYXNlICdoJzogY2FzZSAncyc6IGNhc2UgJ2UnOiBjYXNlICdnJzogcmV0dXJuIHRydWU7XG5cdFx0XHRjYXNlICdBJzogY2FzZSAnYSc6IGNhc2UgJ+S4iic6XG5cdFx0XHRcdGlmKGZtdC5zdWJzdHIoaSwgMykudG9VcHBlckNhc2UoKSA9PT0gXCJBL1BcIikgcmV0dXJuIHRydWU7XG5cdFx0XHRcdGlmKGZtdC5zdWJzdHIoaSwgNSkudG9VcHBlckNhc2UoKSA9PT0gXCJBTS9QTVwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCA1KS50b1VwcGVyQ2FzZSgpID09PSBcIuS4iuWNiC/kuIvljYhcIikgcmV0dXJuIHRydWU7XG5cdFx0XHRcdCsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdbJzpcblx0XHRcdFx0byA9IGM7XG5cdFx0XHRcdHdoaWxlKGZtdC5jaGFyQXQoaSsrKSAhPT0gJ10nICYmIGkgPCBmbXQubGVuZ3RoKSBvICs9IGZtdC5jaGFyQXQoaSk7XG5cdFx0XHRcdGlmKG8ubWF0Y2goU1NGX2Fic3RpbWUpKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICcuJzpcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnMCc6IGNhc2UgJyMnOlxuXHRcdFx0XHR3aGlsZShpIDwgZm10Lmxlbmd0aCAmJiAoXCIwIz8uLEUrLSVcIi5pbmRleE9mKGM9Zm10LmNoYXJBdCgrK2kpKSA+IC0xIHx8IChjPT0nXFxcXCcgJiYgZm10LmNoYXJBdChpKzEpID09IFwiLVwiICYmIFwiMCNcIi5pbmRleE9mKGZtdC5jaGFyQXQoaSsyKSk+LTEpKSl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPyc6IHdoaWxlKGZtdC5jaGFyQXQoKytpKSA9PT0gYyl7LyogZW1wdHkgKi99IGJyZWFrO1xuXHRcdFx0Y2FzZSAnKic6ICsraTsgaWYoZm10LmNoYXJBdChpKSA9PSAnICcgfHwgZm10LmNoYXJBdChpKSA9PSAnKicpICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICcoJzogY2FzZSAnKSc6ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuXHRcdFx0XHR3aGlsZShpIDwgZm10Lmxlbmd0aCAmJiBcIjAxMjM0NTY3ODlcIi5pbmRleE9mKGZtdC5jaGFyQXQoKytpKSkgPiAtMSl7LyogZW1wdHkgKi99IGJyZWFrO1xuXHRcdFx0Y2FzZSAnICc6ICsraTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiArK2k7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGV2YWxfZm10KGZtdC8qOnN0cmluZyovLCB2Lyo6YW55Ki8sIG9wdHMvKjphbnkqLywgZmxlbi8qOm51bWJlciovKSB7XG5cdHZhciBvdXQgPSBbXSwgbyA9IFwiXCIsIGkgPSAwLCBjID0gXCJcIiwgbHN0PSd0JywgZHQsIGosIGNjO1xuXHR2YXIgaHI9J0gnO1xuXHQvKiBUb2tlbml6ZSAqL1xuXHR3aGlsZShpIDwgZm10Lmxlbmd0aCkge1xuXHRcdHN3aXRjaCgoYyA9IGZtdC5jaGFyQXQoaSkpKSB7XG5cdFx0XHRjYXNlICdHJzogLyogR2VuZXJhbCAqL1xuXHRcdFx0XHRpZighU1NGX2lzZ2VuZXJhbChmbXQsIGkpKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCBjaGFyYWN0ZXIgJyArIGMgKyAnIGluICcgK2ZtdCk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidHJywgdjonR2VuZXJhbCd9OyBpKz03OyBicmVhaztcblx0XHRcdGNhc2UgJ1wiJzogLyogTGl0ZXJhbCB0ZXh0ICovXG5cdFx0XHRcdGZvcihvPVwiXCI7KGNjPWZtdC5jaGFyQ29kZUF0KCsraSkpICE9PSAzNCAmJiBpIDwgZm10Lmxlbmd0aDspIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjYyk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0JywgdjpvfTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJ1xcXFwnOiB2YXIgdyA9IGZtdC5jaGFyQXQoKytpKSwgdCA9ICh3ID09PSBcIihcIiB8fCB3ID09PSBcIilcIikgPyB3IDogJ3QnO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDp0LCB2Ond9OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXyc6IG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0JywgdjpcIiBcIn07IGkrPTI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQCc6IC8qIFRleHQgUGxhY2Vob2xkZXIgKi9cblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J1QnLCB2OnZ9OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQic6IGNhc2UgJ2InOlxuXHRcdFx0XHRpZihmbXQuY2hhckF0KGkrMSkgPT09IFwiMVwiIHx8IGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIyXCIpIHtcblx0XHRcdFx0XHRpZihkdD09bnVsbCkgeyBkdD1TU0ZfcGFyc2VfZGF0ZV9jb2RlKHYsIG9wdHMsIGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIyXCIpOyBpZihkdD09bnVsbCkgcmV0dXJuIFwiXCI7IH1cblx0XHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonWCcsIHY6Zm10LnN1YnN0cihpLDIpfTsgbHN0ID0gYzsgaSs9MjsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnTSc6IGNhc2UgJ0QnOiBjYXNlICdZJzogY2FzZSAnSCc6IGNhc2UgJ1MnOiBjYXNlICdFJzpcblx0XHRcdFx0YyA9IGMudG9Mb3dlckNhc2UoKTtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnbSc6IGNhc2UgJ2QnOiBjYXNlICd5JzogY2FzZSAnaCc6IGNhc2UgJ3MnOiBjYXNlICdlJzogY2FzZSAnZyc6XG5cdFx0XHRcdGlmKHYgPCAwKSByZXR1cm4gXCJcIjtcblx0XHRcdFx0aWYoZHQ9PW51bGwpIHsgZHQ9U1NGX3BhcnNlX2RhdGVfY29kZSh2LCBvcHRzKTsgaWYoZHQ9PW51bGwpIHJldHVybiBcIlwiOyB9XG5cdFx0XHRcdG8gPSBjOyB3aGlsZSgrK2kgPCBmbXQubGVuZ3RoICYmIGZtdC5jaGFyQXQoaSkudG9Mb3dlckNhc2UoKSA9PT0gYykgbys9Yztcblx0XHRcdFx0aWYoYyA9PT0gJ20nICYmIGxzdC50b0xvd2VyQ2FzZSgpID09PSAnaCcpIGMgPSAnTSc7XG5cdFx0XHRcdGlmKGMgPT09ICdoJykgYyA9IGhyO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDpjLCB2Om99OyBsc3QgPSBjOyBicmVhaztcblx0XHRcdGNhc2UgJ0EnOiBjYXNlICdhJzogY2FzZSAn5LiKJzpcblx0XHRcdFx0dmFyIHE9e3Q6YywgdjpjfTtcblx0XHRcdFx0aWYoZHQ9PW51bGwpIGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cyk7XG5cdFx0XHRcdGlmKGZtdC5zdWJzdHIoaSwgMykudG9VcHBlckNhc2UoKSA9PT0gXCJBL1BcIikgeyBpZihkdCE9bnVsbCkgcS52ID0gZHQuSCA+PSAxMiA/IFwiUFwiIDogXCJBXCI7IHEudCA9ICdUJzsgaHI9J2gnO2krPTM7fVxuXHRcdFx0XHRlbHNlIGlmKGZtdC5zdWJzdHIoaSw1KS50b1VwcGVyQ2FzZSgpID09PSBcIkFNL1BNXCIpIHsgaWYoZHQhPW51bGwpIHEudiA9IGR0LkggPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7IHEudCA9ICdUJzsgaSs9NTsgaHI9J2gnOyB9XG5cdFx0XHRcdGVsc2UgaWYoZm10LnN1YnN0cihpLDUpLnRvVXBwZXJDYXNlKCkgPT09IFwi5LiK5Y2IL+S4i+WNiFwiKSB7IGlmKGR0IT1udWxsKSBxLnYgPSBkdC5IID49IDEyID8gXCLkuIvljYhcIiA6IFwi5LiK5Y2IXCI7IHEudCA9ICdUJzsgaSs9NTsgaHI9J2gnOyB9XG5cdFx0XHRcdGVsc2UgeyBxLnQgPSBcInRcIjsgKytpOyB9XG5cdFx0XHRcdGlmKGR0PT1udWxsICYmIHEudCA9PT0gJ1QnKSByZXR1cm4gXCJcIjtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0gcTsgbHN0ID0gYzsgYnJlYWs7XG5cdFx0XHRjYXNlICdbJzpcblx0XHRcdFx0byA9IGM7XG5cdFx0XHRcdHdoaWxlKGZtdC5jaGFyQXQoaSsrKSAhPT0gJ10nICYmIGkgPCBmbXQubGVuZ3RoKSBvICs9IGZtdC5jaGFyQXQoaSk7XG5cdFx0XHRcdGlmKG8uc2xpY2UoLTEpICE9PSAnXScpIHRocm93ICd1bnRlcm1pbmF0ZWQgXCJbXCIgYmxvY2s6IHwnICsgbyArICd8Jztcblx0XHRcdFx0aWYoby5tYXRjaChTU0ZfYWJzdGltZSkpIHtcblx0XHRcdFx0XHRpZihkdD09bnVsbCkgeyBkdD1TU0ZfcGFyc2VfZGF0ZV9jb2RlKHYsIG9wdHMpOyBpZihkdD09bnVsbCkgcmV0dXJuIFwiXCI7IH1cblx0XHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonWicsIHY6by50b0xvd2VyQ2FzZSgpfTtcblx0XHRcdFx0XHRsc3QgPSBvLmNoYXJBdCgxKTtcblx0XHRcdFx0fSBlbHNlIGlmKG8uaW5kZXhPZihcIiRcIikgPiAtMSkge1xuXHRcdFx0XHRcdG8gPSAoby5tYXRjaCgvXFwkKFteLVxcW1xcXV0qKS8pfHxbXSlbMV18fFwiJFwiO1xuXHRcdFx0XHRcdGlmKCFmbXRfaXNfZGF0ZShmbXQpKSBvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsdjpvfTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8qIE51bWJlcnMgKi9cblx0XHRcdGNhc2UgJy4nOlxuXHRcdFx0XHRpZihkdCAhPSBudWxsKSB7XG5cdFx0XHRcdFx0byA9IGM7IHdoaWxlKCsraSA8IGZtdC5sZW5ndGggJiYgKGM9Zm10LmNoYXJBdChpKSkgPT09IFwiMFwiKSBvICs9IGM7XG5cdFx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J3MnLCB2Om99OyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICcwJzogY2FzZSAnIyc6XG5cdFx0XHRcdG8gPSBjOyB3aGlsZSgrK2kgPCBmbXQubGVuZ3RoICYmIFwiMCM/LixFKy0lXCIuaW5kZXhPZihjPWZtdC5jaGFyQXQoaSkpID4gLTEpIG8gKz0gYztcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J24nLCB2Om99OyBicmVhaztcblx0XHRcdGNhc2UgJz8nOlxuXHRcdFx0XHRvID0gYzsgd2hpbGUoZm10LmNoYXJBdCgrK2kpID09PSBjKSBvKz1jO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDpjLCB2Om99OyBsc3QgPSBjOyBicmVhaztcblx0XHRcdGNhc2UgJyonOiArK2k7IGlmKGZtdC5jaGFyQXQoaSkgPT0gJyAnIHx8IGZtdC5jaGFyQXQoaSkgPT0gJyonKSArK2k7IGJyZWFrOyAvLyAqKlxuXHRcdFx0Y2FzZSAnKCc6IGNhc2UgJyknOiBvdXRbb3V0Lmxlbmd0aF0gPSB7dDooZmxlbj09PTE/J3QnOmMpLCB2OmN9OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5Jzpcblx0XHRcdFx0byA9IGM7IHdoaWxlKGkgPCBmbXQubGVuZ3RoICYmIFwiMDEyMzQ1Njc4OVwiLmluZGV4T2YoZm10LmNoYXJBdCgrK2kpKSA+IC0xKSBvKz1mbXQuY2hhckF0KGkpO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonRCcsIHY6b307IGJyZWFrO1xuXHRcdFx0Y2FzZSAnICc6IG91dFtvdXQubGVuZ3RoXSA9IHt0OmMsIHY6Y307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICckJzogb3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2OickJ307ICsraTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihcIiwkLSsvKCk6IV4mJ357fTw+PeKCrGFjZmlqa2xvcHFydHV2d3h6UFwiLmluZGV4T2YoYykgPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCBjaGFyYWN0ZXIgJyArIGMgKyAnIGluICcgKyBmbXQpO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsIHY6Y307ICsraTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyogU2NhbiBmb3IgZGF0ZS90aW1lIHBhcnRzICovXG5cdHZhciBidCA9IDAsIHNzMCA9IDAsIHNzbTtcblx0Zm9yKGk9b3V0Lmxlbmd0aC0xLCBsc3Q9J3QnOyBpID49IDA7IC0taSkge1xuXHRcdHN3aXRjaChvdXRbaV0udCkge1xuXHRcdFx0Y2FzZSAnaCc6IGNhc2UgJ0gnOiBvdXRbaV0udCA9IGhyOyBsc3Q9J2gnOyBpZihidCA8IDEpIGJ0ID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzJzpcblx0XHRcdFx0aWYoKHNzbT1vdXRbaV0udi5tYXRjaCgvXFwuMCskLykpKSBzczA9TWF0aC5tYXgoc3MwLHNzbVswXS5sZW5ndGgtMSk7XG5cdFx0XHRcdGlmKGJ0IDwgMykgYnQgPSAzO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnZCc6IGNhc2UgJ3knOiBjYXNlICdNJzogY2FzZSAnZSc6IGxzdD1vdXRbaV0udDsgYnJlYWs7XG5cdFx0XHRjYXNlICdtJzogaWYobHN0ID09PSAncycpIHsgb3V0W2ldLnQgPSAnTSc7IGlmKGJ0IDwgMikgYnQgPSAyOyB9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnWCc6IC8qaWYob3V0W2ldLnYgPT09IFwiQjJcIik7Ki9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdaJzpcblx0XHRcdFx0aWYoYnQgPCAxICYmIG91dFtpXS52Lm1hdGNoKC9bSGhdLykpIGJ0ID0gMTtcblx0XHRcdFx0aWYoYnQgPCAyICYmIG91dFtpXS52Lm1hdGNoKC9bTW1dLykpIGJ0ID0gMjtcblx0XHRcdFx0aWYoYnQgPCAzICYmIG91dFtpXS52Lm1hdGNoKC9bU3NdLykpIGJ0ID0gMztcblx0XHR9XG5cdH1cblx0LyogdGltZSByb3VuZGluZyBkZXBlbmRzIG9uIHByZXNlbmNlIG9mIG1pbnV0ZSAvIHNlY29uZCAvIHVzZWMgZmllbGRzICovXG5cdHN3aXRjaChidCkge1xuXHRcdGNhc2UgMDogYnJlYWs7XG5cdFx0Y2FzZSAxOlxuXHRcdFx0Lyo6OmlmKCFkdCkgYnJlYWs7Ki9cblx0XHRcdGlmKGR0LnUgPj0gMC41KSB7IGR0LnUgPSAwOyArK2R0LlM7IH1cblx0XHRcdGlmKGR0LlMgPj0gIDYwKSB7IGR0LlMgPSAwOyArK2R0Lk07IH1cblx0XHRcdGlmKGR0Lk0gPj0gIDYwKSB7IGR0Lk0gPSAwOyArK2R0Lkg7IH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdC8qOjppZighZHQpIGJyZWFrOyovXG5cdFx0XHRpZihkdC51ID49IDAuNSkgeyBkdC51ID0gMDsgKytkdC5TOyB9XG5cdFx0XHRpZihkdC5TID49ICA2MCkgeyBkdC5TID0gMDsgKytkdC5NOyB9XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdC8qIHJlcGxhY2UgZmllbGRzICovXG5cdHZhciBuc3RyID0gXCJcIiwgamo7XG5cdGZvcihpPTA7IGkgPCBvdXQubGVuZ3RoOyArK2kpIHtcblx0XHRzd2l0Y2gob3V0W2ldLnQpIHtcblx0XHRcdGNhc2UgJ3QnOiBjYXNlICdUJzogY2FzZSAnICc6IGNhc2UgJ0QnOiBicmVhaztcblx0XHRcdGNhc2UgJ1gnOiBvdXRbaV0udiA9IFwiXCI7IG91dFtpXS50ID0gXCI7XCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZCc6IGNhc2UgJ20nOiBjYXNlICd5JzogY2FzZSAnaCc6IGNhc2UgJ0gnOiBjYXNlICdNJzogY2FzZSAncyc6IGNhc2UgJ2UnOiBjYXNlICdiJzogY2FzZSAnWic6XG5cdFx0XHRcdC8qOjppZighZHQpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdFx0b3V0W2ldLnYgPSBTU0Zfd3JpdGVfZGF0ZShvdXRbaV0udC5jaGFyQ29kZUF0KDApLCBvdXRbaV0udiwgZHQsIHNzMCk7XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnOyBicmVhaztcblx0XHRcdGNhc2UgJ24nOiBjYXNlICc/Jzpcblx0XHRcdFx0amogPSBpKzE7XG5cdFx0XHRcdHdoaWxlKG91dFtqal0gIT0gbnVsbCAmJiAoXG5cdFx0XHRcdFx0KGM9b3V0W2pqXS50KSA9PT0gXCI/XCIgfHwgYyA9PT0gXCJEXCIgfHxcblx0XHRcdFx0XHQoKGMgPT09IFwiIFwiIHx8IGMgPT09IFwidFwiKSAmJiBvdXRbamorMV0gIT0gbnVsbCAmJiAob3V0W2pqKzFdLnQgPT09ICc/JyB8fCBvdXRbamorMV0udCA9PT0gXCJ0XCIgJiYgb3V0W2pqKzFdLnYgPT09ICcvJykpIHx8XG5cdFx0XHRcdFx0KG91dFtpXS50ID09PSAnKCcgJiYgKGMgPT09ICcgJyB8fCBjID09PSAnbicgfHwgYyA9PT0gJyknKSkgfHxcblx0XHRcdFx0XHQoYyA9PT0gJ3QnICYmIChvdXRbampdLnYgPT09ICcvJyB8fCBvdXRbampdLnYgPT09ICcgJyAmJiBvdXRbamorMV0gIT0gbnVsbCAmJiBvdXRbamorMV0udCA9PSAnPycpKVxuXHRcdFx0XHQpKSB7XG5cdFx0XHRcdFx0b3V0W2ldLnYgKz0gb3V0W2pqXS52O1xuXHRcdFx0XHRcdG91dFtqal0gPSB7djpcIlwiLCB0OlwiO1wifTsgKytqajtcblx0XHRcdFx0fVxuXHRcdFx0XHRuc3RyICs9IG91dFtpXS52O1xuXHRcdFx0XHRpID0gamotMTsgYnJlYWs7XG5cdFx0XHRjYXNlICdHJzogb3V0W2ldLnQgPSAndCc7IG91dFtpXS52ID0gU1NGX2dlbmVyYWwodixvcHRzKTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cdHZhciB2diA9IFwiXCIsIG15diwgb3N0cjtcblx0aWYobnN0ci5sZW5ndGggPiAwKSB7XG5cdFx0aWYobnN0ci5jaGFyQ29kZUF0KDApID09IDQwKSAvKiAnKCcgKi8ge1xuXHRcdFx0bXl2ID0gKHY8MCYmbnN0ci5jaGFyQ29kZUF0KDApID09PSA0NSA/IC12IDogdik7XG5cdFx0XHRvc3RyID0gd3JpdGVfbnVtKCduJywgbnN0ciwgbXl2KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bXl2ID0gKHY8MCAmJiBmbGVuID4gMSA/IC12IDogdik7XG5cdFx0XHRvc3RyID0gd3JpdGVfbnVtKCduJywgbnN0ciwgbXl2KTtcblx0XHRcdGlmKG15diA8IDAgJiYgb3V0WzBdICYmIG91dFswXS50ID09ICd0Jykge1xuXHRcdFx0XHRvc3RyID0gb3N0ci5zdWJzdHIoMSk7XG5cdFx0XHRcdG91dFswXS52ID0gXCItXCIgKyBvdXRbMF0udjtcblx0XHRcdH1cblx0XHR9XG5cdFx0amo9b3N0ci5sZW5ndGgtMTtcblx0XHR2YXIgZGVjcHQgPSBvdXQubGVuZ3RoO1xuXHRcdGZvcihpPTA7IGkgPCBvdXQubGVuZ3RoOyArK2kpIGlmKG91dFtpXSAhPSBudWxsICYmIG91dFtpXS50ICE9ICd0JyAmJiBvdXRbaV0udi5pbmRleE9mKFwiLlwiKSA+IC0xKSB7IGRlY3B0ID0gaTsgYnJlYWs7IH1cblx0XHR2YXIgbGFzdGk9b3V0Lmxlbmd0aDtcblx0XHRpZihkZWNwdCA9PT0gb3V0Lmxlbmd0aCAmJiBvc3RyLmluZGV4T2YoXCJFXCIpID09PSAtMSkge1xuXHRcdFx0Zm9yKGk9b3V0Lmxlbmd0aC0xOyBpPj0gMDstLWkpIHtcblx0XHRcdFx0aWYob3V0W2ldID09IG51bGwgfHwgJ24/Jy5pbmRleE9mKG91dFtpXS50KSA9PT0gLTEpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihqaj49b3V0W2ldLnYubGVuZ3RoLTEpIHsgamogLT0gb3V0W2ldLnYubGVuZ3RoOyBvdXRbaV0udiA9IG9zdHIuc3Vic3RyKGpqKzEsIG91dFtpXS52Lmxlbmd0aCk7IH1cblx0XHRcdFx0ZWxzZSBpZihqaiA8IDApIG91dFtpXS52ID0gXCJcIjtcblx0XHRcdFx0ZWxzZSB7IG91dFtpXS52ID0gb3N0ci5zdWJzdHIoMCwgamorMSk7IGpqID0gLTE7IH1cblx0XHRcdFx0b3V0W2ldLnQgPSAndCc7XG5cdFx0XHRcdGxhc3RpID0gaTtcblx0XHRcdH1cblx0XHRcdGlmKGpqPj0wICYmIGxhc3RpPG91dC5sZW5ndGgpIG91dFtsYXN0aV0udiA9IG9zdHIuc3Vic3RyKDAsamorMSkgKyBvdXRbbGFzdGldLnY7XG5cdFx0fVxuXHRcdGVsc2UgaWYoZGVjcHQgIT09IG91dC5sZW5ndGggJiYgb3N0ci5pbmRleE9mKFwiRVwiKSA9PT0gLTEpIHtcblx0XHRcdGpqID0gb3N0ci5pbmRleE9mKFwiLlwiKS0xO1xuXHRcdFx0Zm9yKGk9ZGVjcHQ7IGk+PSAwOyAtLWkpIHtcblx0XHRcdFx0aWYob3V0W2ldID09IG51bGwgfHwgJ24/Jy5pbmRleE9mKG91dFtpXS50KSA9PT0gLTEpIGNvbnRpbnVlO1xuXHRcdFx0XHRqPW91dFtpXS52LmluZGV4T2YoXCIuXCIpPi0xJiZpPT09ZGVjcHQ/b3V0W2ldLnYuaW5kZXhPZihcIi5cIiktMTpvdXRbaV0udi5sZW5ndGgtMTtcblx0XHRcdFx0dnYgPSBvdXRbaV0udi5zdWJzdHIoaisxKTtcblx0XHRcdFx0Zm9yKDsgaj49MDsgLS1qKSB7XG5cdFx0XHRcdFx0aWYoamo+PTAgJiYgKG91dFtpXS52LmNoYXJBdChqKSA9PT0gXCIwXCIgfHwgb3V0W2ldLnYuY2hhckF0KGopID09PSBcIiNcIikpIHZ2ID0gb3N0ci5jaGFyQXQoamotLSkgKyB2djtcblx0XHRcdFx0fVxuXHRcdFx0XHRvdXRbaV0udiA9IHZ2O1xuXHRcdFx0XHRvdXRbaV0udCA9ICd0Jztcblx0XHRcdFx0bGFzdGkgPSBpO1xuXHRcdFx0fVxuXHRcdFx0aWYoamo+PTAgJiYgbGFzdGk8b3V0Lmxlbmd0aCkgb3V0W2xhc3RpXS52ID0gb3N0ci5zdWJzdHIoMCxqaisxKSArIG91dFtsYXN0aV0udjtcblx0XHRcdGpqID0gb3N0ci5pbmRleE9mKFwiLlwiKSsxO1xuXHRcdFx0Zm9yKGk9ZGVjcHQ7IGk8b3V0Lmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdGlmKG91dFtpXSA9PSBudWxsIHx8ICgnbj8oJy5pbmRleE9mKG91dFtpXS50KSA9PT0gLTEgJiYgaSAhPT0gZGVjcHQpKSBjb250aW51ZTtcblx0XHRcdFx0aj1vdXRbaV0udi5pbmRleE9mKFwiLlwiKT4tMSYmaT09PWRlY3B0P291dFtpXS52LmluZGV4T2YoXCIuXCIpKzE6MDtcblx0XHRcdFx0dnYgPSBvdXRbaV0udi5zdWJzdHIoMCxqKTtcblx0XHRcdFx0Zm9yKDsgajxvdXRbaV0udi5sZW5ndGg7ICsraikge1xuXHRcdFx0XHRcdGlmKGpqPG9zdHIubGVuZ3RoKSB2diArPSBvc3RyLmNoYXJBdChqaisrKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvdXRbaV0udiA9IHZ2O1xuXHRcdFx0XHRvdXRbaV0udCA9ICd0Jztcblx0XHRcdFx0bGFzdGkgPSBpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRmb3IoaT0wOyBpPG91dC5sZW5ndGg7ICsraSkgaWYob3V0W2ldICE9IG51bGwgJiYgJ24/Jy5pbmRleE9mKG91dFtpXS50KT4tMSkge1xuXHRcdG15diA9IChmbGVuID4xICYmIHYgPCAwICYmIGk+MCAmJiBvdXRbaS0xXS52ID09PSBcIi1cIiA/IC12OnYpO1xuXHRcdG91dFtpXS52ID0gd3JpdGVfbnVtKG91dFtpXS50LCBvdXRbaV0udiwgbXl2KTtcblx0XHRvdXRbaV0udCA9ICd0Jztcblx0fVxuXHR2YXIgcmV0dmFsID0gXCJcIjtcblx0Zm9yKGk9MDsgaSAhPT0gb3V0Lmxlbmd0aDsgKytpKSBpZihvdXRbaV0gIT0gbnVsbCkgcmV0dmFsICs9IG91dFtpXS52O1xuXHRyZXR1cm4gcmV0dmFsO1xufVxuXG52YXIgY2ZyZWdleDIgPSAvXFxbKD18Pls9XT98PFs+PV0/KSgtP1xcZCsoPzpcXC5cXGQqKT8pXFxdLztcbmZ1bmN0aW9uIGNoa2NvbmQodiwgcnIpIHtcblx0aWYocnIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXHR2YXIgdGhyZXNoID0gcGFyc2VGbG9hdChyclsyXSk7XG5cdHN3aXRjaChyclsxXSkge1xuXHRcdGNhc2UgXCI9XCI6ICBpZih2ID09IHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHRcdGNhc2UgXCI+XCI6ICBpZih2ID4gIHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHRcdGNhc2UgXCI8XCI6ICBpZih2IDwgIHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHRcdGNhc2UgXCI8PlwiOiBpZih2ICE9IHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHRcdGNhc2UgXCI+PVwiOiBpZih2ID49IHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHRcdGNhc2UgXCI8PVwiOiBpZih2IDw9IHRocmVzaCkgcmV0dXJuIHRydWU7IGJyZWFrO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNob29zZV9mbXQoZi8qOnN0cmluZyovLCB2Lyo6YW55Ki8pIHtcblx0dmFyIGZtdCA9IFNTRl9zcGxpdF9mbXQoZik7XG5cdHZhciBsID0gZm10Lmxlbmd0aCwgbGF0ID0gZm10W2wtMV0uaW5kZXhPZihcIkBcIik7XG5cdGlmKGw8NCAmJiBsYXQ+LTEpIC0tbDtcblx0aWYoZm10Lmxlbmd0aCA+IDQpIHRocm93IG5ldyBFcnJvcihcImNhbm5vdCBmaW5kIHJpZ2h0IGZvcm1hdCBmb3IgfFwiICsgZm10LmpvaW4oXCJ8XCIpICsgXCJ8XCIpO1xuXHRpZih0eXBlb2YgdiAhPT0gXCJudW1iZXJcIikgcmV0dXJuIFs0LCBmbXQubGVuZ3RoID09PSA0IHx8IGxhdD4tMT9mbXRbZm10Lmxlbmd0aC0xXTpcIkBcIl07XG5cdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0Y2FzZSAxOiBmbXQgPSBsYXQ+LTEgPyBbXCJHZW5lcmFsXCIsIFwiR2VuZXJhbFwiLCBcIkdlbmVyYWxcIiwgZm10WzBdXSA6IFtmbXRbMF0sIGZtdFswXSwgZm10WzBdLCBcIkBcIl07IGJyZWFrO1xuXHRcdGNhc2UgMjogZm10ID0gbGF0Pi0xID8gW2ZtdFswXSwgZm10WzBdLCBmbXRbMF0sIGZtdFsxXV0gOiBbZm10WzBdLCBmbXRbMV0sIGZtdFswXSwgXCJAXCJdOyBicmVhaztcblx0XHRjYXNlIDM6IGZtdCA9IGxhdD4tMSA/IFtmbXRbMF0sIGZtdFsxXSwgZm10WzBdLCBmbXRbMl1dIDogW2ZtdFswXSwgZm10WzFdLCBmbXRbMl0sIFwiQFwiXTsgYnJlYWs7XG5cdFx0Y2FzZSA0OiBicmVhaztcblx0fVxuXHR2YXIgZmYgPSB2ID4gMCA/IGZtdFswXSA6IHYgPCAwID8gZm10WzFdIDogZm10WzJdO1xuXHRpZihmbXRbMF0uaW5kZXhPZihcIltcIikgPT09IC0xICYmIGZtdFsxXS5pbmRleE9mKFwiW1wiKSA9PT0gLTEpIHJldHVybiBbbCwgZmZdO1xuXHRpZihmbXRbMF0ubWF0Y2goL1xcW1s9PD5dLykgIT0gbnVsbCB8fCBmbXRbMV0ubWF0Y2goL1xcW1s9PD5dLykgIT0gbnVsbCkge1xuXHRcdHZhciBtMSA9IGZtdFswXS5tYXRjaChjZnJlZ2V4Mik7XG5cdFx0dmFyIG0yID0gZm10WzFdLm1hdGNoKGNmcmVnZXgyKTtcblx0XHRyZXR1cm4gY2hrY29uZCh2LCBtMSkgPyBbbCwgZm10WzBdXSA6IGNoa2NvbmQodiwgbTIpID8gW2wsIGZtdFsxXV0gOiBbbCwgZm10W20xICE9IG51bGwgJiYgbTIgIT0gbnVsbCA/IDIgOiAxXV07XG5cdH1cblx0cmV0dXJuIFtsLCBmZl07XG59XG5mdW5jdGlvbiBTU0ZfZm9ybWF0KGZtdC8qOnN0cmluZ3xudW1iZXIqLyx2Lyo6YW55Ki8sby8qOj9hbnkqLykge1xuXHRpZihvID09IG51bGwpIG8gPSB7fTtcblx0dmFyIHNmbXQgPSBcIlwiO1xuXHRzd2l0Y2godHlwZW9mIGZtdCkge1xuXHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRcdGlmKGZtdCA9PSBcIm0vZC95eVwiICYmIG8uZGF0ZU5GKSBzZm10ID0gby5kYXRlTkY7XG5cdFx0XHRlbHNlIHNmbXQgPSBmbXQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwibnVtYmVyXCI6XG5cdFx0XHRpZihmbXQgPT0gMTQgJiYgby5kYXRlTkYpIHNmbXQgPSBvLmRhdGVORjtcblx0XHRcdGVsc2Ugc2ZtdCA9IChvLnRhYmxlICE9IG51bGwgPyAoby50YWJsZS8qOmFueSovKSA6IHRhYmxlX2ZtdClbZm10XTtcblx0XHRcdGlmKHNmbXQgPT0gbnVsbCkgc2ZtdCA9IChvLnRhYmxlICYmIG8udGFibGVbU1NGX2RlZmF1bHRfbWFwW2ZtdF1dKSB8fCB0YWJsZV9mbXRbU1NGX2RlZmF1bHRfbWFwW2ZtdF1dO1xuXHRcdFx0aWYoc2ZtdCA9PSBudWxsKSBzZm10ID0gU1NGX2RlZmF1bHRfc3RyW2ZtdF0gfHwgXCJHZW5lcmFsXCI7XG5cdFx0XHRicmVhaztcblx0fVxuXHRpZihTU0ZfaXNnZW5lcmFsKHNmbXQsMCkpIHJldHVybiBTU0ZfZ2VuZXJhbCh2LCBvKTtcblx0aWYodiBpbnN0YW5jZW9mIERhdGUpIHYgPSBkYXRlbnVtX2xvY2FsKHYsIG8uZGF0ZTE5MDQpO1xuXHR2YXIgZiA9IGNob29zZV9mbXQoc2ZtdCwgdik7XG5cdGlmKFNTRl9pc2dlbmVyYWwoZlsxXSkpIHJldHVybiBTU0ZfZ2VuZXJhbCh2LCBvKTtcblx0aWYodiA9PT0gdHJ1ZSkgdiA9IFwiVFJVRVwiOyBlbHNlIGlmKHYgPT09IGZhbHNlKSB2ID0gXCJGQUxTRVwiO1xuXHRlbHNlIGlmKHYgPT09IFwiXCIgfHwgdiA9PSBudWxsKSByZXR1cm4gXCJcIjtcblx0cmV0dXJuIGV2YWxfZm10KGZbMV0sIHYsIG8sIGZbMF0pO1xufVxuZnVuY3Rpb24gU1NGX2xvYWQoZm10Lyo6c3RyaW5nKi8sIGlkeC8qOj9udW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdGlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHtcblx0XHRpZHggPSAraWR4IHx8IC0xO1xuLyo6OmlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHJldHVybiAweDE4ODsgKi9cblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgMHgwMTg4OyArK2kpIHtcbi8qOjppZih0eXBlb2YgaWR4ICE9ICdudW1iZXInKSByZXR1cm4gMHgxODg7ICovXG5cdFx0XHRpZih0YWJsZV9mbXRbaV0gPT0gdW5kZWZpbmVkKSB7IGlmKGlkeCA8IDApIGlkeCA9IGk7IGNvbnRpbnVlOyB9XG5cdFx0XHRpZih0YWJsZV9mbXRbaV0gPT0gZm10KSB7IGlkeCA9IGk7IGJyZWFrOyB9XG5cdFx0fVxuLyo6OmlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHJldHVybiAweDE4ODsgKi9cblx0XHRpZihpZHggPCAwKSBpZHggPSAweDE4Nztcblx0fVxuLyo6OmlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHJldHVybiAweDE4ODsgKi9cblx0dGFibGVfZm10W2lkeF0gPSBmbXQ7XG5cdHJldHVybiBpZHg7XG59XG5mdW5jdGlvbiBTU0ZfbG9hZF90YWJsZSh0YmwvKjpTU0ZUYWJsZSovKS8qOnZvaWQqLyB7XG5cdGZvcih2YXIgaT0wOyBpIT0weDAxODg7ICsraSlcblx0XHRpZih0YmxbaV0gIT09IHVuZGVmaW5lZCkgU1NGX2xvYWQodGJsW2ldLCBpKTtcbn1cblxuZnVuY3Rpb24gbWFrZV9zc2YoKSB7XG5cdHRhYmxlX2ZtdCA9IFNTRl9pbml0X3RhYmxlKCk7XG59XG5cbnZhciBTU0YgPSB7XG5cdGZvcm1hdDogU1NGX2Zvcm1hdCxcblx0bG9hZDogU1NGX2xvYWQsXG5cdF90YWJsZTogdGFibGVfZm10LFxuXHRsb2FkX3RhYmxlOiBTU0ZfbG9hZF90YWJsZSxcblx0cGFyc2VfZGF0ZV9jb2RlOiBTU0ZfcGFyc2VfZGF0ZV9jb2RlLFxuXHRpc19kYXRlOiBmbXRfaXNfZGF0ZSxcblx0Z2V0X3RhYmxlOiBmdW5jdGlvbiBnZXRfdGFibGUoKSB7IHJldHVybiBTU0YuX3RhYmxlID0gdGFibGVfZm10OyB9XG59O1xuXG52YXIgU1NGSW1wbGljaXQvKntbbnVtYmVyXTpzdHJpbmd9Ki8gPSAoe1xuXHRcIjVcIjogJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiNlwiOiAnXCIkXCIjLCMjMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHRcIjdcIjogJ1wiJFwiIywjIzAuMDBfKTtcXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFwiOFwiOiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcIjIzXCI6ICdHZW5lcmFsJywgXCIyNFwiOiAnR2VuZXJhbCcsIFwiMjVcIjogJ0dlbmVyYWwnLCBcIjI2XCI6ICdHZW5lcmFsJyxcblx0XCIyN1wiOiAnbS9kL3l5JywgXCIyOFwiOiAnbS9kL3l5JywgXCIyOVwiOiAnbS9kL3l5JywgXCIzMFwiOiAnbS9kL3l5JywgXCIzMVwiOiAnbS9kL3l5Jyxcblx0XCIzMlwiOiAnaDptbTpzcycsIFwiMzNcIjogJ2g6bW06c3MnLCBcIjM0XCI6ICdoOm1tOnNzJywgXCIzNVwiOiAnaDptbTpzcycsXG5cdFwiMzZcIjogJ20vZC95eScsXG5cdFwiNDFcIjogJ18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogXCItXCJfKTtfKEBfKScsXG5cdFwiNDJcIjogJ18oXCIkXCIqICMsIyMwXyk7XyhcIiRcIiogXFwoIywjIzBcXCk7XyhcIiRcIiogXCItXCJfKTtfKEBfKScsXG5cdFwiNDNcIjogJ18oKiAjLCMjMC4wMF8pO18oKiBcXCgjLCMjMC4wMFxcKTtfKCogXCItXCI/P18pO18oQF8pJyxcblx0XCI0NFwiOiAnXyhcIiRcIiogIywjIzAuMDBfKTtfKFwiJFwiKiBcXCgjLCMjMC4wMFxcKTtfKFwiJFwiKiBcIi1cIj8/Xyk7XyhAXyknLFxuXHRcIjUwXCI6ICdtL2QveXknLCBcIjUxXCI6ICdtL2QveXknLCBcIjUyXCI6ICdtL2QveXknLCBcIjUzXCI6ICdtL2QveXknLCBcIjU0XCI6ICdtL2QveXknLFxuXHRcIjU1XCI6ICdtL2QveXknLCBcIjU2XCI6ICdtL2QveXknLCBcIjU3XCI6ICdtL2QveXknLCBcIjU4XCI6ICdtL2QveXknLFxuXHRcIjU5XCI6ICcwJyxcblx0XCI2MFwiOiAnMC4wMCcsXG5cdFwiNjFcIjogJyMsIyMwJyxcblx0XCI2MlwiOiAnIywjIzAuMDAnLFxuXHRcIjYzXCI6ICdcIiRcIiMsIyMwXyk7XFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHRcIjY0XCI6ICdcIiRcIiMsIyMwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiNjVcIjogJ1wiJFwiIywjIzAuMDBfKTtcXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFwiNjZcIjogJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCI2N1wiOiAnMCUnLFxuXHRcIjY4XCI6ICcwLjAwJScsXG5cdFwiNjlcIjogJyMgPy8/Jyxcblx0XCI3MFwiOiAnIyA/Py8/PycsXG5cdFwiNzFcIjogJ20vZC95eScsXG5cdFwiNzJcIjogJ20vZC95eScsXG5cdFwiNzNcIjogJ2QtbW1tLXl5Jyxcblx0XCI3NFwiOiAnZC1tbW0nLFxuXHRcIjc1XCI6ICdtbW0teXknLFxuXHRcIjc2XCI6ICdoOm1tJyxcblx0XCI3N1wiOiAnaDptbTpzcycsXG5cdFwiNzhcIjogJ20vZC95eSBoOm1tJyxcblx0XCI3OVwiOiAnbW06c3MnLFxuXHRcIjgwXCI6ICdbaF06bW06c3MnLFxuXHRcIjgxXCI6ICdtbXNzLjAnXG59Lyo6YW55Ki8pO1xuXG4vKiBkYXRlTkYgcGFyc2UgVE9ETzogbW92ZSB0byBTU0YgKi9cbnZhciBkYXRlTkZyZWdleCA9IC9bZERdK3xbbU1dK3xbeVllRV0rfFtIaF0rfFtTc10rL2c7XG5mdW5jdGlvbiBkYXRlTkZfcmVnZXgoZGF0ZU5GLyo6c3RyaW5nfG51bWJlciovKS8qOlJlZ0V4cCovIHtcblx0dmFyIGZtdCA9IHR5cGVvZiBkYXRlTkYgPT0gXCJudW1iZXJcIiA/IHRhYmxlX2ZtdFtkYXRlTkZdIDogZGF0ZU5GO1xuXHRmbXQgPSBmbXQucmVwbGFjZShkYXRlTkZyZWdleCwgXCIoXFxcXGQrKVwiKTtcblx0cmV0dXJuIG5ldyBSZWdFeHAoXCJeXCIgKyBmbXQgKyBcIiRcIik7XG59XG5mdW5jdGlvbiBkYXRlTkZfZml4KHN0ci8qOnN0cmluZyovLCBkYXRlTkYvKjpzdHJpbmcqLywgbWF0Y2gvKjpBcnJheTxzdHJpbmc+Ki8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgWSA9IC0xLCBtID0gLTEsIGQgPSAtMSwgSCA9IC0xLCBNID0gLTEsIFMgPSAtMTtcblx0KGRhdGVORi5tYXRjaChkYXRlTkZyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4sIGkpIHtcblx0XHR2YXIgdiA9IHBhcnNlSW50KG1hdGNoW2krMV0sIDEwKTtcblx0XHRzd2l0Y2gobi50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSkge1xuXHRcdFx0Y2FzZSAneSc6IFkgPSB2OyBicmVhazsgY2FzZSAnZCc6IGQgPSB2OyBicmVhaztcblx0XHRcdGNhc2UgJ2gnOiBIID0gdjsgYnJlYWs7IGNhc2UgJ3MnOiBTID0gdjsgYnJlYWs7XG5cdFx0XHRjYXNlICdtJzogaWYoSCA+PSAwKSBNID0gdjsgZWxzZSBtID0gdjsgYnJlYWs7XG5cdFx0fVxuXHR9KTtcblx0aWYoUyA+PSAwICYmIE0gPT0gLTEgJiYgbSA+PSAwKSB7IE0gPSBtOyBtID0gLTE7IH1cblx0dmFyIGRhdGVzdHIgPSAoKFwiXCIgKyAoWT49MD9ZOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpKS5zbGljZSgtNCkgKyBcIi1cIiArIChcIjAwXCIgKyAobT49MT9tOjEpKS5zbGljZSgtMikgKyBcIi1cIiArIChcIjAwXCIgKyAoZD49MT9kOjEpKS5zbGljZSgtMikpO1xuXHRpZihkYXRlc3RyLmxlbmd0aCA9PSA3KSBkYXRlc3RyID0gXCIwXCIgKyBkYXRlc3RyO1xuXHRpZihkYXRlc3RyLmxlbmd0aCA9PSA4KSBkYXRlc3RyID0gXCIyMFwiICsgZGF0ZXN0cjtcblx0dmFyIHRpbWVzdHIgPSAoKFwiMDBcIiArIChIPj0wP0g6MCkpLnNsaWNlKC0yKSArIFwiOlwiICsgKFwiMDBcIiArIChNPj0wP006MCkpLnNsaWNlKC0yKSArIFwiOlwiICsgKFwiMDBcIiArIChTPj0wP1M6MCkpLnNsaWNlKC0yKSk7XG5cdGlmKEggPT0gLTEgJiYgTSA9PSAtMSAmJiBTID09IC0xKSByZXR1cm4gZGF0ZXN0cjtcblx0aWYoWSA9PSAtMSAmJiBtID09IC0xICYmIGQgPT0gLTEpIHJldHVybiB0aW1lc3RyO1xuXHRyZXR1cm4gZGF0ZXN0ciArIFwiVFwiICsgdGltZXN0cjtcbn1cblxuLyo6OlxuZGVjbGFyZSB2YXIgUmVhZFNoaWZ0OmFueTtcbmRlY2xhcmUgdmFyIENoZWNrRmllbGQ6YW55O1xuZGVjbGFyZSB2YXIgcHJlcF9ibG9iOmFueTtcbmRlY2xhcmUgdmFyIF9fcmVhZFVJbnQzMkxFOmFueTtcbmRlY2xhcmUgdmFyIF9fcmVhZEludDMyTEU6YW55O1xuZGVjbGFyZSB2YXIgX190b0J1ZmZlcjphbnk7XG5kZWNsYXJlIHZhciBfX3V0ZjE2bGU6YW55O1xuZGVjbGFyZSB2YXIgYmNvbmNhdDphbnk7XG5kZWNsYXJlIHZhciBzMmE6YW55O1xuZGVjbGFyZSB2YXIgY2hyMDphbnk7XG5kZWNsYXJlIHZhciBjaHIxOmFueTtcbmRlY2xhcmUgdmFyIGhhc19idWY6Ym9vbGVhbjtcbmRlY2xhcmUgdmFyIG5ld19idWY6YW55O1xuZGVjbGFyZSB2YXIgbmV3X3Jhd19idWY6YW55O1xuZGVjbGFyZSB2YXIgbmV3X3Vuc2FmZV9idWY6YW55O1xuZGVjbGFyZSB2YXIgQnVmZmVyX2Zyb206YW55O1xuKi9cbi8qIGNmYi5qcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKiB2aW06IHNldCB0cz0yOiAqL1xuLypqc2hpbnQgZXFudWxsOnRydWUgKi9cbi8qZXhwb3J0ZWQgQ0ZCICovXG4vKmdsb2JhbCBVaW50OEFycmF5OmZhbHNlLCBVaW50MTZBcnJheTpmYWxzZSAqL1xuXG4vKjo6XG50eXBlIFNlY3RvckVudHJ5ID0ge1xuXHRuYW1lPzpzdHJpbmc7XG5cdG5vZGVzPzpBcnJheTxudW1iZXI+O1xuXHRkYXRhOlJhd0J5dGVzO1xufTtcbnR5cGUgU2VjdG9yTGlzdCA9IHtcblx0W2s6c3RyaW5nfG51bWJlcl06U2VjdG9yRW50cnk7XG5cdG5hbWU6P3N0cmluZztcblx0ZmF0X2FkZHJzOkFycmF5PG51bWJlcj47XG5cdHNzejpudW1iZXI7XG59XG50eXBlIENGQkZpbGVzID0ge1tuOnN0cmluZ106Q0ZCRW50cnl9O1xuKi9cbi8qIGNyYzMyLmpzIChDKSAyMDE0LXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qIHZpbTogc2V0IHRzPTI6ICovXG4vKmV4cG9ydGVkIENSQzMyICovXG52YXIgQ1JDMzIgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xudmFyIENSQzMyID0ge307XG5DUkMzMi52ZXJzaW9uID0gJzEuMi4wJztcbi8qIHNlZSBwZXJmL2NyYzMydGFibGUuanMgKi9cbi8qZ2xvYmFsIEludDMyQXJyYXkgKi9cbmZ1bmN0aW9uIHNpZ25lZF9jcmNfdGFibGUoKS8qOmFueSovIHtcblx0dmFyIGMgPSAwLCB0YWJsZS8qOkFycmF5PG51bWJlcj4qLyA9IG5ldyBBcnJheSgyNTYpO1xuXG5cdGZvcih2YXIgbiA9MDsgbiAhPSAyNTY7ICsrbil7XG5cdFx0YyA9IG47XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0YyA9ICgoYyYxKSA/ICgtMzA2Njc0OTEyIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG5cdFx0dGFibGVbbl0gPSBjO1xuXHR9XG5cblx0cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IG5ldyBJbnQzMkFycmF5KHRhYmxlKSA6IHRhYmxlO1xufVxuXG52YXIgVDAgPSBzaWduZWRfY3JjX3RhYmxlKCk7XG5mdW5jdGlvbiBzbGljZV9ieV8xNl90YWJsZXMoVCkge1xuXHR2YXIgYyA9IDAsIHYgPSAwLCBuID0gMCwgdGFibGUvKjpBcnJheTxudW1iZXI+Ki8gPSB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgSW50MzJBcnJheSg0MDk2KSA6IG5ldyBBcnJheSg0MDk2KSA7XG5cblx0Zm9yKG4gPSAwOyBuICE9IDI1NjsgKytuKSB0YWJsZVtuXSA9IFRbbl07XG5cdGZvcihuID0gMDsgbiAhPSAyNTY7ICsrbikge1xuXHRcdHYgPSBUW25dO1xuXHRcdGZvcihjID0gMjU2ICsgbjsgYyA8IDQwOTY7IGMgKz0gMjU2KSB2ID0gdGFibGVbY10gPSAodiA+Pj4gOCkgXiBUW3YgJiAweEZGXTtcblx0fVxuXHR2YXIgb3V0ID0gW107XG5cdGZvcihuID0gMTsgbiAhPSAxNjsgKytuKSBvdXRbbiAtIDFdID0gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gdGFibGUuc3ViYXJyYXkobiAqIDI1NiwgbiAqIDI1NiArIDI1NikgOiB0YWJsZS5zbGljZShuICogMjU2LCBuICogMjU2ICsgMjU2KTtcblx0cmV0dXJuIG91dDtcbn1cbnZhciBUVCA9IHNsaWNlX2J5XzE2X3RhYmxlcyhUMCk7XG52YXIgVDEgPSBUVFswXSwgIFQyID0gVFRbMV0sICBUMyA9IFRUWzJdLCAgVDQgPSBUVFszXSwgIFQ1ID0gVFRbNF07XG52YXIgVDYgPSBUVFs1XSwgIFQ3ID0gVFRbNl0sICBUOCA9IFRUWzddLCAgVDkgPSBUVFs4XSwgIFRhID0gVFRbOV07XG52YXIgVGIgPSBUVFsxMF0sIFRjID0gVFRbMTFdLCBUZCA9IFRUWzEyXSwgVGUgPSBUVFsxM10sIFRmID0gVFRbMTRdO1xuZnVuY3Rpb24gY3JjMzJfYnN0cihic3RyLyo6c3RyaW5nKi8sIHNlZWQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBDID0gc2VlZC8qOjogPyAwIDogMCAqLyBeIC0xO1xuXHRmb3IodmFyIGkgPSAwLCBMID0gYnN0ci5sZW5ndGg7IGkgPCBMOykgQyA9IChDPj4+OCkgXiBUMFsoQ15ic3RyLmNoYXJDb2RlQXQoaSsrKSkmMHhGRl07XG5cdHJldHVybiB+Qztcbn1cblxuZnVuY3Rpb24gY3JjMzJfYnVmKEIvKjpVaW50OEFycmF5fEFycmF5PG51bWJlcj4qLywgc2VlZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIEMgPSBzZWVkLyo6OiA/IDAgOiAwICovIF4gLTEsIEwgPSBCLmxlbmd0aCAtIDE1LCBpID0gMDtcblx0Zm9yKDsgaSA8IEw7KSBDID1cblx0XHRUZltCW2krK10gXiAoQyAmIDI1NSldIF5cblx0XHRUZVtCW2krK10gXiAoKEMgPj4gOCkgJiAyNTUpXSBeXG5cdFx0VGRbQltpKytdIF4gKChDID4+IDE2KSAmIDI1NSldIF5cblx0XHRUY1tCW2krK10gXiAoQyA+Pj4gMjQpXSBeXG5cdFx0VGJbQltpKytdXSBeIFRhW0JbaSsrXV0gXiBUOVtCW2krK11dIF4gVDhbQltpKytdXSBeXG5cdFx0VDdbQltpKytdXSBeIFQ2W0JbaSsrXV0gXiBUNVtCW2krK11dIF4gVDRbQltpKytdXSBeXG5cdFx0VDNbQltpKytdXSBeIFQyW0JbaSsrXV0gXiBUMVtCW2krK11dIF4gVDBbQltpKytdXTtcblx0TCArPSAxNTtcblx0d2hpbGUoaSA8IEwpIEMgPSAoQz4+PjgpIF4gVDBbKENeQltpKytdKSYweEZGXTtcblx0cmV0dXJuIH5DO1xufVxuXG5mdW5jdGlvbiBjcmMzMl9zdHIoc3RyLyo6c3RyaW5nKi8sIHNlZWQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBDID0gc2VlZCBeIC0xO1xuXHRmb3IodmFyIGkgPSAwLCBMID0gc3RyLmxlbmd0aCwgYyA9IDAsIGQgPSAwOyBpIDwgTDspIHtcblx0XHRjID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRpZihjIDwgMHg4MCkge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQ15jKSYweEZGXTtcblx0XHR9IGVsc2UgaWYoYyA8IDB4ODAwKSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDE5MnwoKGM+PjYpJjMxKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGMmNjMpKSkmMHhGRl07XG5cdFx0fSBlbHNlIGlmKGMgPj0gMHhEODAwICYmIGMgPCAweEUwMDApIHtcblx0XHRcdGMgPSAoYyYxMDIzKSs2NDsgZCA9IHN0ci5jaGFyQ29kZUF0KGkrKykmMTAyMztcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMjQwfCgoYz4+OCkmNykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoYz4+MikmNjMpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGQ+PjYpJjE1KXwoKGMmMyk8PDQpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoZCY2MykpKSYweEZGXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgyMjR8KChjPj4xMikmMTUpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGM+PjYpJjYzKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGMmNjMpKSkmMHhGRl07XG5cdFx0fVxuXHR9XG5cdHJldHVybiB+Qztcbn1cbkNSQzMyLnRhYmxlID0gVDA7XG5DUkMzMi5ic3RyID0gY3JjMzJfYnN0cjtcbkNSQzMyLmJ1ZiA9IGNyYzMyX2J1ZjtcbkNSQzMyLnN0ciA9IGNyYzMyX3N0cjtcbnJldHVybiBDUkMzMjtcbn0pKCk7XG4vKiBbTVMtQ0ZCXSB2MjAxNzEyMDEgKi9cbnZhciBDRkIgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uIF9DRkIoKXtcbnZhciBleHBvcnRzID0ge307XG5leHBvcnRzLnZlcnNpb24gPSAnMS4yLjEnO1xuLyogW01TLUNGQl0gMi42LjQgKi9cbmZ1bmN0aW9uIG5hbWVjbXAobC8qOnN0cmluZyovLCByLyo6c3RyaW5nKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgTCA9IGwuc3BsaXQoXCIvXCIpLCBSID0gci5zcGxpdChcIi9cIik7XG5cdGZvcih2YXIgaSA9IDAsIGMgPSAwLCBaID0gTWF0aC5taW4oTC5sZW5ndGgsIFIubGVuZ3RoKTsgaSA8IFo7ICsraSkge1xuXHRcdGlmKChjID0gTFtpXS5sZW5ndGggLSBSW2ldLmxlbmd0aCkpIHJldHVybiBjO1xuXHRcdGlmKExbaV0gIT0gUltpXSkgcmV0dXJuIExbaV0gPCBSW2ldID8gLTEgOiAxO1xuXHR9XG5cdHJldHVybiBMLmxlbmd0aCAtIFIubGVuZ3RoO1xufVxuZnVuY3Rpb24gZGlybmFtZShwLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihwLmNoYXJBdChwLmxlbmd0aCAtIDEpID09IFwiL1wiKSByZXR1cm4gKHAuc2xpY2UoMCwtMSkuaW5kZXhPZihcIi9cIikgPT09IC0xKSA/IHAgOiBkaXJuYW1lKHAuc2xpY2UoMCwgLTEpKTtcblx0dmFyIGMgPSBwLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0cmV0dXJuIChjID09PSAtMSkgPyBwIDogcC5zbGljZSgwLCBjKzEpO1xufVxuXG5mdW5jdGlvbiBmaWxlbmFtZShwLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihwLmNoYXJBdChwLmxlbmd0aCAtIDEpID09IFwiL1wiKSByZXR1cm4gZmlsZW5hbWUocC5zbGljZSgwLCAtMSkpO1xuXHR2YXIgYyA9IHAubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRyZXR1cm4gKGMgPT09IC0xKSA/IHAgOiBwLnNsaWNlKGMrMSk7XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogRE9TIERhdGUgZm9ybWF0OlxuICAgaGlnaHxZWVlZWVlZbS5tbW1kZGRkZC5ISEhISE1NTS5NTU1TU1NTU3xsb3dcbiAgIGFkZCAxOTgwIHRvIHN0b3JlZCB5ZWFyXG4gICBzdG9yZWQgc2Vjb25kIHNob3VsZCBiZSBkb3VibGVkXG4qL1xuXG4vKiB3cml0ZSBKUyBkYXRlIHRvIGJ1ZiBhcyBhIERPUyBkYXRlICovXG5mdW5jdGlvbiB3cml0ZV9kb3NfZGF0ZShidWYvKjpDRkJsb2IqLywgZGF0ZS8qOkRhdGV8c3RyaW5nKi8pIHtcblx0aWYodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIpIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcblx0dmFyIGhtcy8qOm51bWJlciovID0gZGF0ZS5nZXRIb3VycygpO1xuXHRobXMgPSBobXMgPDwgNiB8IGRhdGUuZ2V0TWludXRlcygpO1xuXHRobXMgPSBobXMgPDwgNSB8IChkYXRlLmdldFNlY29uZHMoKT4+PjEpO1xuXHRidWYud3JpdGVfc2hpZnQoMiwgaG1zKTtcblx0dmFyIHltZC8qOm51bWJlciovID0gKGRhdGUuZ2V0RnVsbFllYXIoKSAtIDE5ODApO1xuXHR5bWQgPSB5bWQgPDwgNCB8IChkYXRlLmdldE1vbnRoKCkrMSk7XG5cdHltZCA9IHltZCA8PCA1IHwgZGF0ZS5nZXREYXRlKCk7XG5cdGJ1Zi53cml0ZV9zaGlmdCgyLCB5bWQpO1xufVxuXG4vKiByZWFkIGZvdXIgYnl0ZXMgZnJvbSBidWYgYW5kIGludGVycHJldCBhcyBhIERPUyBkYXRlICovXG5mdW5jdGlvbiBwYXJzZV9kb3NfZGF0ZShidWYvKjpDRkJsb2IqLykvKjpEYXRlKi8ge1xuXHR2YXIgaG1zID0gYnVmLnJlYWRfc2hpZnQoMikgJiAweEZGRkY7XG5cdHZhciB5bWQgPSBidWYucmVhZF9zaGlmdCgyKSAmIDB4RkZGRjtcblx0dmFyIHZhbCA9IG5ldyBEYXRlKCk7XG5cdHZhciBkID0geW1kICYgMHgxRjsgeW1kID4+Pj0gNTtcblx0dmFyIG0gPSB5bWQgJiAweDBGOyB5bWQgPj4+PSA0O1xuXHR2YWwuc2V0TWlsbGlzZWNvbmRzKDApO1xuXHR2YWwuc2V0RnVsbFllYXIoeW1kICsgMTk4MCk7XG5cdHZhbC5zZXRNb250aChtLTEpO1xuXHR2YWwuc2V0RGF0ZShkKTtcblx0dmFyIFMgPSBobXMgJiAweDFGOyBobXMgPj4+PSA1O1xuXHR2YXIgTSA9IGhtcyAmIDB4M0Y7IGhtcyA+Pj49IDY7XG5cdHZhbC5zZXRIb3VycyhobXMpO1xuXHR2YWwuc2V0TWludXRlcyhNKTtcblx0dmFsLnNldFNlY29uZHMoUzw8MSk7XG5cdHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBwYXJzZV9leHRyYV9maWVsZChibG9iLyo6Q0ZCbG9iKi8pLyo6YW55Ki8ge1xuXHRwcmVwX2Jsb2IoYmxvYiwgMCk7XG5cdHZhciBvID0gLyo6OigqL3t9Lyo6OiA6YW55KSovO1xuXHR2YXIgZmxhZ3MgPSAwO1xuXHR3aGlsZShibG9iLmwgPD0gYmxvYi5sZW5ndGggLSA0KSB7XG5cdFx0dmFyIHR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0dmFyIHN6ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCB0Z3QgPSBibG9iLmwgKyBzejtcblx0XHR2YXIgcCA9IHt9O1xuXHRcdHN3aXRjaCh0eXBlKSB7XG5cdFx0XHQvKiBVTklYLXN0eWxlIFRpbWVzdGFtcHMgKi9cblx0XHRcdGNhc2UgMHg1NDU1OiB7XG5cdFx0XHRcdGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0XHRpZihmbGFncyAmIDEpIHAubXRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdC8qIGZvciBzb21lIHJlYXNvbiwgQ0QgZmxhZyBjb3JyZXNwb25kcyB0byBMRkggKi9cblx0XHRcdFx0aWYoc3ogPiA1KSB7XG5cdFx0XHRcdFx0aWYoZmxhZ3MgJiAyKSBwLmF0aW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFx0XHRcdGlmKGZsYWdzICYgNCkgcC5jdGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihwLm10aW1lKSBwLm10ID0gbmV3IERhdGUocC5tdGltZSoxMDAwKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRibG9iLmwgPSB0Z3Q7XG5cdFx0b1t0eXBlXSA9IHA7XG5cdH1cblx0cmV0dXJuIG87XG59XG52YXIgZnMvKjo6ID0gcmVxdWlyZSgnZnMnKTsgKi87XG5mdW5jdGlvbiBnZXRfZnMoKSB7IHJldHVybiBmcyB8fCAoZnMgPSB7fSk7IH1cbmZ1bmN0aW9uIHBhcnNlKGZpbGUvKjpSYXdCeXRlcyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5pZihmaWxlWzBdID09IDB4NTAgJiYgZmlsZVsxXSA9PSAweDRiKSByZXR1cm4gcGFyc2VfemlwKGZpbGUsIG9wdGlvbnMpO1xuaWYoKGZpbGVbMF0gfCAweDIwKSA9PSAweDZkICYmIChmaWxlWzFdfDB4MjApID09IDB4NjkpIHJldHVybiBwYXJzZV9tYWQoZmlsZSwgb3B0aW9ucyk7XG5pZihmaWxlLmxlbmd0aCA8IDUxMikgdGhyb3cgbmV3IEVycm9yKFwiQ0ZCIGZpbGUgc2l6ZSBcIiArIGZpbGUubGVuZ3RoICsgXCIgPCA1MTJcIik7XG52YXIgbXZlciA9IDM7XG52YXIgc3N6ID0gNTEyO1xudmFyIG5tZnMgPSAwOyAvLyBudW1iZXIgb2YgbWluaSBGQVQgc2VjdG9yc1xudmFyIGRpZmF0X3NlY19jbnQgPSAwO1xudmFyIGRpcl9zdGFydCA9IDA7XG52YXIgbWluaWZhdF9zdGFydCA9IDA7XG52YXIgZGlmYXRfc3RhcnQgPSAwO1xuXG52YXIgZmF0X2FkZHJzLyo6QXJyYXk8bnVtYmVyPiovID0gW107IC8vIGxvY2F0aW9ucyBvZiBGQVQgc2VjdG9yc1xuXG4vKiBbTVMtQ0ZCXSAyLjIgQ29tcG91bmQgRmlsZSBIZWFkZXIgKi9cbnZhciBibG9iLyo6Q0ZCbG9iKi8gPSAvKjo6KCovZmlsZS5zbGljZSgwLDUxMikvKjo6IDphbnkpKi87XG5wcmVwX2Jsb2IoYmxvYiwgMCk7XG5cbi8qIG1ham9yIHZlcnNpb24gKi9cbnZhciBtdiA9IGNoZWNrX2dldF9tdmVyKGJsb2IpO1xubXZlciA9IG12WzBdO1xuc3dpdGNoKG12ZXIpIHtcblx0Y2FzZSAzOiBzc3ogPSA1MTI7IGJyZWFrOyBjYXNlIDQ6IHNzeiA9IDQwOTY7IGJyZWFrO1xuXHRjYXNlIDA6IGlmKG12WzFdID09IDApIHJldHVybiBwYXJzZV96aXAoZmlsZSwgb3B0aW9ucyk7XG5cdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiTWFqb3IgVmVyc2lvbjogRXhwZWN0ZWQgMyBvciA0IHNhdyBcIiArIG12ZXIpO1xufVxuXG4vKiByZXByb2Nlc3MgaGVhZGVyICovXG5pZihzc3ogIT09IDUxMikgeyBibG9iID0gLyo6OigqL2ZpbGUuc2xpY2UoMCxzc3opLyo6OiA6YW55KSovOyBwcmVwX2Jsb2IoYmxvYiwgMjggLyogYmxvYi5sICovKTsgfVxuLyogU2F2ZSBoZWFkZXIgZm9yIGZpbmFsIG9iamVjdCAqL1xudmFyIGhlYWRlci8qOlJhd0J5dGVzKi8gPSBmaWxlLnNsaWNlKDAsc3N6KTtcblxuY2hlY2tfc2hpZnRzKGJsb2IsIG12ZXIpO1xuXG4vLyBOdW1iZXIgb2YgRGlyZWN0b3J5IFNlY3RvcnNcbnZhciBkaXJfY250Lyo6bnVtYmVyKi8gPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcbmlmKG12ZXIgPT09IDMgJiYgZGlyX2NudCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCcjIERpcmVjdG9yeSBTZWN0b3JzOiBFeHBlY3RlZCAwIHNhdyAnICsgZGlyX2NudCk7XG5cbi8vIE51bWJlciBvZiBGQVQgU2VjdG9yc1xuYmxvYi5sICs9IDQ7XG5cbi8vIEZpcnN0IERpcmVjdG9yeSBTZWN0b3IgTG9jYXRpb25cbmRpcl9zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBUcmFuc2FjdGlvbiBTaWduYXR1cmVcbmJsb2IubCArPSA0O1xuXG4vLyBNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZVxuYmxvYi5jaGsoJzAwMTAwMDAwJywgJ01pbmkgU3RyZWFtIEN1dG9mZiBTaXplOiAnKTtcblxuLy8gRmlyc3QgTWluaSBGQVQgU2VjdG9yIExvY2F0aW9uXG5taW5pZmF0X3N0YXJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIE51bWJlciBvZiBNaW5pIEZBVCBTZWN0b3JzXG5ubWZzID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIEZpcnN0IERJRkFUIHNlY3RvciBsb2NhdGlvblxuZGlmYXRfc3RhcnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gTnVtYmVyIG9mIERJRkFUIFNlY3RvcnNcbmRpZmF0X3NlY19jbnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gR3JhYiBGQVQgU2VjdG9yIExvY2F0aW9uc1xuZm9yKHZhciBxID0gLTEsIGogPSAwOyBqIDwgMTA5OyArK2opIHsgLyogMTA5ID0gKDUxMiAtIGJsb2IubCk+Pj4yOyAqL1xuXHRxID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cdGlmKHE8MCkgYnJlYWs7XG5cdGZhdF9hZGRyc1tqXSA9IHE7XG59XG5cbi8qKiBCcmVhayB0aGUgZmlsZSB1cCBpbnRvIHNlY3RvcnMgKi9cbnZhciBzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8gPSBzZWN0b3JpZnkoZmlsZSwgc3N6KTtcblxuc2xldXRoX2ZhdChkaWZhdF9zdGFydCwgZGlmYXRfc2VjX2NudCwgc2VjdG9ycywgc3N6LCBmYXRfYWRkcnMpO1xuXG4vKiogQ2hhaW5zICovXG52YXIgc2VjdG9yX2xpc3QvKjpTZWN0b3JMaXN0Ki8gPSBtYWtlX3NlY3Rvcl9saXN0KHNlY3RvcnMsIGRpcl9zdGFydCwgZmF0X2FkZHJzLCBzc3opO1xuXG5zZWN0b3JfbGlzdFtkaXJfc3RhcnRdLm5hbWUgPSBcIiFEaXJlY3RvcnlcIjtcbmlmKG5tZnMgPiAwICYmIG1pbmlmYXRfc3RhcnQgIT09IEVORE9GQ0hBSU4pIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RhcnRdLm5hbWUgPSBcIiFNaW5pRkFUXCI7XG5zZWN0b3JfbGlzdFtmYXRfYWRkcnNbMF1dLm5hbWUgPSBcIiFGQVRcIjtcbnNlY3Rvcl9saXN0LmZhdF9hZGRycyA9IGZhdF9hZGRycztcbnNlY3Rvcl9saXN0LnNzeiA9IHNzejtcblxuLyogW01TLUNGQl0gMi42LjEgQ29tcG91bmQgRmlsZSBEaXJlY3RvcnkgRW50cnkgKi9cbnZhciBmaWxlcy8qOkNGQkZpbGVzKi8gPSB7fSwgUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgRmlsZUluZGV4Lyo6Q0ZCRmlsZUluZGV4Ki8gPSBbXSwgRnVsbFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5yZWFkX2RpcmVjdG9yeShkaXJfc3RhcnQsIHNlY3Rvcl9saXN0LCBzZWN0b3JzLCBQYXRocywgbm1mcywgZmlsZXMsIEZpbGVJbmRleCwgbWluaWZhdF9zdGFydCk7XG5cbmJ1aWxkX2Z1bGxfcGF0aHMoRmlsZUluZGV4LCBGdWxsUGF0aHMsIFBhdGhzKTtcblBhdGhzLnNoaWZ0KCk7XG5cbnZhciBvID0ge1xuXHRGaWxlSW5kZXg6IEZpbGVJbmRleCxcblx0RnVsbFBhdGhzOiBGdWxsUGF0aHNcbn07XG5cbi8vICRGbG93SWdub3JlXG5pZihvcHRpb25zICYmIG9wdGlvbnMucmF3KSBvLnJhdyA9IHtoZWFkZXI6IGhlYWRlciwgc2VjdG9yczogc2VjdG9yc307XG5yZXR1cm4gbztcbn0gLy8gcGFyc2VcblxuLyogW01TLUNGQl0gMi4yIENvbXBvdW5kIEZpbGUgSGVhZGVyIC0tIHJlYWQgdXAgdG8gbWFqb3IgdmVyc2lvbiAqL1xuZnVuY3Rpb24gY2hlY2tfZ2V0X212ZXIoYmxvYi8qOkNGQmxvYiovKS8qOltudW1iZXIsIG51bWJlcl0qLyB7XG5cdGlmKGJsb2JbYmxvYi5sXSA9PSAweDUwICYmIGJsb2JbYmxvYi5sICsgMV0gPT0gMHg0YikgcmV0dXJuIFswLCAwXTtcblx0Ly8gaGVhZGVyIHNpZ25hdHVyZSA4XG5cdGJsb2IuY2hrKEhFQURFUl9TSUdOQVRVUkUsICdIZWFkZXIgU2lnbmF0dXJlOiAnKTtcblxuXHQvLyBjbHNpZCAxNlxuXHQvL2Jsb2IuY2hrKEhFQURFUl9DTFNJRCwgJ0NMU0lEOiAnKTtcblx0YmxvYi5sICs9IDE2O1xuXG5cdC8vIG1pbm9yIHZlcnNpb24gMlxuXHR2YXIgbXZlci8qOm51bWJlciovID0gYmxvYi5yZWFkX3NoaWZ0KDIsICd1Jyk7XG5cblx0cmV0dXJuIFtibG9iLnJlYWRfc2hpZnQoMiwndScpLCBtdmVyXTtcbn1cbmZ1bmN0aW9uIGNoZWNrX3NoaWZ0cyhibG9iLyo6Q0ZCbG9iKi8sIG12ZXIvKjpudW1iZXIqLykvKjp2b2lkKi8ge1xuXHR2YXIgc2hpZnQgPSAweDA5O1xuXG5cdC8vIEJ5dGUgT3JkZXJcblx0Ly9ibG9iLmNoaygnZmVmZicsICdCeXRlIE9yZGVyOiAnKTsgLy8gbm90ZTogc29tZSB3cml0ZXJzIHB1dCAweGZmZmZcblx0YmxvYi5sICs9IDI7XG5cblx0Ly8gU2VjdG9yIFNoaWZ0XG5cdHN3aXRjaCgoc2hpZnQgPSBibG9iLnJlYWRfc2hpZnQoMikpKSB7XG5cdFx0Y2FzZSAweDA5OiBpZihtdmVyICE9IDMpIHRocm93IG5ldyBFcnJvcignU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IHNhdyAnICsgc2hpZnQpOyBicmVhaztcblx0XHRjYXNlIDB4MGM6IGlmKG12ZXIgIT0gNCkgdGhyb3cgbmV3IEVycm9yKCdTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDEyIHNhdyAnICsgc2hpZnQpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1NlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBvciAxMiBzYXcgJyArIHNoaWZ0KTtcblx0fVxuXG5cdC8vIE1pbmkgU2VjdG9yIFNoaWZ0XG5cdGJsb2IuY2hrKCcwNjAwJywgJ01pbmkgU2VjdG9yIFNoaWZ0OiAnKTtcblxuXHQvLyBSZXNlcnZlZFxuXHRibG9iLmNoaygnMDAwMDAwMDAwMDAwJywgJ1Jlc2VydmVkOiAnKTtcbn1cblxuLyoqIEJyZWFrIHRoZSBmaWxlIHVwIGludG8gc2VjdG9ycyAqL1xuZnVuY3Rpb24gc2VjdG9yaWZ5KGZpbGUvKjpSYXdCeXRlcyovLCBzc3ovKjpudW1iZXIqLykvKjpBcnJheTxSYXdCeXRlcz4qLyB7XG5cdHZhciBuc2VjdG9ycyA9IE1hdGguY2VpbChmaWxlLmxlbmd0aC9zc3opLTE7XG5cdHZhciBzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8gPSBbXTtcblx0Zm9yKHZhciBpPTE7IGkgPCBuc2VjdG9yczsgKytpKSBzZWN0b3JzW2ktMV0gPSBmaWxlLnNsaWNlKGkqc3N6LChpKzEpKnNzeik7XG5cdHNlY3RvcnNbbnNlY3RvcnMtMV0gPSBmaWxlLnNsaWNlKG5zZWN0b3JzKnNzeik7XG5cdHJldHVybiBzZWN0b3JzO1xufVxuXG4vKiBbTVMtQ0ZCXSAyLjYuNCBSZWQtQmxhY2sgVHJlZSAqL1xuZnVuY3Rpb24gYnVpbGRfZnVsbF9wYXRocyhGSS8qOkNGQkZpbGVJbmRleCovLCBGUC8qOkFycmF5PHN0cmluZz4qLywgUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8pLyo6dm9pZCovIHtcblx0dmFyIGkgPSAwLCBMID0gMCwgUiA9IDAsIEMgPSAwLCBqID0gMCwgcGwgPSBQYXRocy5sZW5ndGg7XG5cdHZhciBkYWQvKjpBcnJheTxudW1iZXI+Ki8gPSBbXSwgcS8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXG5cdGZvcig7IGkgPCBwbDsgKytpKSB7IGRhZFtpXT1xW2ldPWk7IEZQW2ldPVBhdGhzW2ldOyB9XG5cblx0Zm9yKDsgaiA8IHEubGVuZ3RoOyArK2opIHtcblx0XHRpID0gcVtqXTtcblx0XHRMID0gRklbaV0uTDsgUiA9IEZJW2ldLlI7IEMgPSBGSVtpXS5DO1xuXHRcdGlmKGRhZFtpXSA9PT0gaSkge1xuXHRcdFx0aWYoTCAhPT0gLTEgLypOT1NUUkVBTSovICYmIGRhZFtMXSAhPT0gTCkgZGFkW2ldID0gZGFkW0xdO1xuXHRcdFx0aWYoUiAhPT0gLTEgJiYgZGFkW1JdICE9PSBSKSBkYWRbaV0gPSBkYWRbUl07XG5cdFx0fVxuXHRcdGlmKEMgIT09IC0xIC8qTk9TVFJFQU0qLykgZGFkW0NdID0gaTtcblx0XHRpZihMICE9PSAtMSAmJiBpICE9IGRhZFtpXSkgeyBkYWRbTF0gPSBkYWRbaV07IGlmKHEubGFzdEluZGV4T2YoTCkgPCBqKSBxLnB1c2goTCk7IH1cblx0XHRpZihSICE9PSAtMSAmJiBpICE9IGRhZFtpXSkgeyBkYWRbUl0gPSBkYWRbaV07IGlmKHEubGFzdEluZGV4T2YoUikgPCBqKSBxLnB1c2goUik7IH1cblx0fVxuXHRmb3IoaT0xOyBpIDwgcGw7ICsraSkgaWYoZGFkW2ldID09PSBpKSB7XG5cdFx0aWYoUiAhPT0gLTEgLypOT1NUUkVBTSovICYmIGRhZFtSXSAhPT0gUikgZGFkW2ldID0gZGFkW1JdO1xuXHRcdGVsc2UgaWYoTCAhPT0gLTEgJiYgZGFkW0xdICE9PSBMKSBkYWRbaV0gPSBkYWRbTF07XG5cdH1cblxuXHRmb3IoaT0xOyBpIDwgcGw7ICsraSkge1xuXHRcdGlmKEZJW2ldLnR5cGUgPT09IDAgLyogdW5rbm93biAqLykgY29udGludWU7XG5cdFx0aiA9IGk7XG5cdFx0aWYoaiAhPSBkYWRbal0pIGRvIHtcblx0XHRcdGogPSBkYWRbal07XG5cdFx0XHRGUFtpXSA9IEZQW2pdICsgXCIvXCIgKyBGUFtpXTtcblx0XHR9IHdoaWxlIChqICE9PSAwICYmIC0xICE9PSBkYWRbal0gJiYgaiAhPSBkYWRbal0pO1xuXHRcdGRhZFtpXSA9IC0xO1xuXHR9XG5cblx0RlBbMF0gKz0gXCIvXCI7XG5cdGZvcihpPTE7IGkgPCBwbDsgKytpKSB7XG5cdFx0aWYoRklbaV0udHlwZSAhPT0gMiAvKiBzdHJlYW0gKi8pIEZQW2ldICs9IFwiL1wiO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldF9tZmF0X2VudHJ5KGVudHJ5Lyo6Q0ZCRW50cnkqLywgcGF5bG9hZC8qOlJhd0J5dGVzKi8sIG1pbmkvKjo/UmF3Qnl0ZXMqLykvKjpDRkJsb2IqLyB7XG5cdHZhciBzdGFydCA9IGVudHJ5LnN0YXJ0LCBzaXplID0gZW50cnkuc2l6ZTtcblx0Ly9yZXR1cm4gKHBheWxvYWQuc2xpY2Uoc3RhcnQqTVNTWiwgc3RhcnQqTVNTWiArIHNpemUpLyo6YW55Ki8pO1xuXHR2YXIgbyA9IFtdO1xuXHR2YXIgaWR4ID0gc3RhcnQ7XG5cdHdoaWxlKG1pbmkgJiYgc2l6ZSA+IDAgJiYgaWR4ID49IDApIHtcblx0XHRvLnB1c2gocGF5bG9hZC5zbGljZShpZHggKiBNU1NaLCBpZHggKiBNU1NaICsgTVNTWikpO1xuXHRcdHNpemUgLT0gTVNTWjtcblx0XHRpZHggPSBfX3JlYWRJbnQzMkxFKG1pbmksIGlkeCAqIDQpO1xuXHR9XG5cdGlmKG8ubGVuZ3RoID09PSAwKSByZXR1cm4gKG5ld19idWYoMCkvKjphbnkqLyk7XG5cdHJldHVybiAoYmNvbmNhdChvKS5zbGljZSgwLCBlbnRyeS5zaXplKS8qOmFueSovKTtcbn1cblxuLyoqIENoYXNlIGRvd24gdGhlIHJlc3Qgb2YgdGhlIERJRkFUIGNoYWluIHRvIGJ1aWxkIGEgY29tcHJlaGVuc2l2ZSBsaXN0XG4gICAgRElGQVQgY2hhaW5zIGJ5IHN0b3JpbmcgdGhlIG5leHQgc2VjdG9yIG51bWJlciBhcyB0aGUgbGFzdCAzMiBiaXRzICovXG5mdW5jdGlvbiBzbGV1dGhfZmF0KGlkeC8qOm51bWJlciovLCBjbnQvKjpudW1iZXIqLywgc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovLCBzc3ovKjpudW1iZXIqLywgZmF0X2FkZHJzKS8qOnZvaWQqLyB7XG5cdHZhciBxLyo6bnVtYmVyKi8gPSBFTkRPRkNIQUlOO1xuXHRpZihpZHggPT09IEVORE9GQ0hBSU4pIHtcblx0XHRpZihjbnQgIT09IDApIHRocm93IG5ldyBFcnJvcihcIkRJRkFUIGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZFwiKTtcblx0fSBlbHNlIGlmKGlkeCAhPT0gLTEgLypGUkVFU0VDVCovKSB7XG5cdFx0dmFyIHNlY3RvciA9IHNlY3RvcnNbaWR4XSwgbSA9IChzc3o+Pj4yKS0xO1xuXHRcdGlmKCFzZWN0b3IpIHJldHVybjtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgbTsgKytpKSB7XG5cdFx0XHRpZigocSA9IF9fcmVhZEludDMyTEUoc2VjdG9yLGkqNCkpID09PSBFTkRPRkNIQUlOKSBicmVhaztcblx0XHRcdGZhdF9hZGRycy5wdXNoKHEpO1xuXHRcdH1cblx0XHRzbGV1dGhfZmF0KF9fcmVhZEludDMyTEUoc2VjdG9yLHNzei00KSxjbnQgLSAxLCBzZWN0b3JzLCBzc3osIGZhdF9hZGRycyk7XG5cdH1cbn1cblxuLyoqIEZvbGxvdyB0aGUgbGlua2VkIGxpc3Qgb2Ygc2VjdG9ycyBmb3IgYSBnaXZlbiBzdGFydGluZyBwb2ludCAqL1xuZnVuY3Rpb24gZ2V0X3NlY3Rvcl9saXN0KHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgc3RhcnQvKjpudW1iZXIqLywgZmF0X2FkZHJzLyo6QXJyYXk8bnVtYmVyPiovLCBzc3ovKjpudW1iZXIqLywgY2hrZC8qOj9BcnJheTxib29sZWFuPiovKS8qOlNlY3RvckVudHJ5Ki8ge1xuXHR2YXIgYnVmLyo6QXJyYXk8bnVtYmVyPiovID0gW10sIGJ1Zl9jaGFpbi8qOkFycmF5PGFueT4qLyA9IFtdO1xuXHRpZighY2hrZCkgY2hrZCA9IFtdO1xuXHR2YXIgbW9kdWx1cyA9IHNzeiAtIDEsIGogPSAwLCBqaiA9IDA7XG5cdGZvcihqPXN0YXJ0OyBqPj0wOykge1xuXHRcdGNoa2Rbal0gPSB0cnVlO1xuXHRcdGJ1ZltidWYubGVuZ3RoXSA9IGo7XG5cdFx0YnVmX2NoYWluLnB1c2goc2VjdG9yc1tqXSk7XG5cdFx0dmFyIGFkZHIgPSBmYXRfYWRkcnNbTWF0aC5mbG9vcihqKjQvc3N6KV07XG5cdFx0amogPSAoKGoqNCkgJiBtb2R1bHVzKTtcblx0XHRpZihzc3ogPCA0ICsgamopIHRocm93IG5ldyBFcnJvcihcIkZBVCBib3VuZGFyeSBjcm9zc2VkOiBcIiArIGogKyBcIiA0IFwiK3Nzeik7XG5cdFx0aWYoIXNlY3RvcnNbYWRkcl0pIGJyZWFrO1xuXHRcdGogPSBfX3JlYWRJbnQzMkxFKHNlY3RvcnNbYWRkcl0sIGpqKTtcblx0fVxuXHRyZXR1cm4ge25vZGVzOiBidWYsIGRhdGE6X190b0J1ZmZlcihbYnVmX2NoYWluXSl9O1xufVxuXG4vKiogQ2hhc2UgZG93biB0aGUgc2VjdG9yIGxpbmtlZCBsaXN0cyAqL1xuZnVuY3Rpb24gbWFrZV9zZWN0b3JfbGlzdChzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8sIGRpcl9zdGFydC8qOm51bWJlciovLCBmYXRfYWRkcnMvKjpBcnJheTxudW1iZXI+Ki8sIHNzei8qOm51bWJlciovKS8qOlNlY3Rvckxpc3QqLyB7XG5cdHZhciBzbCA9IHNlY3RvcnMubGVuZ3RoLCBzZWN0b3JfbGlzdC8qOlNlY3Rvckxpc3QqLyA9IChbXS8qOmFueSovKTtcblx0dmFyIGNoa2QvKjpBcnJheTxib29sZWFuPiovID0gW10sIGJ1Zi8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBidWZfY2hhaW4vKjpBcnJheTxSYXdCeXRlcz4qLyA9IFtdO1xuXHR2YXIgbW9kdWx1cyA9IHNzeiAtIDEsIGk9MCwgaj0wLCBrPTAsIGpqPTA7XG5cdGZvcihpPTA7IGkgPCBzbDsgKytpKSB7XG5cdFx0YnVmID0gKFtdLyo6QXJyYXk8bnVtYmVyPiovKTtcblx0XHRrID0gKGkgKyBkaXJfc3RhcnQpOyBpZihrID49IHNsKSBrLT1zbDtcblx0XHRpZihjaGtkW2tdKSBjb250aW51ZTtcblx0XHRidWZfY2hhaW4gPSBbXTtcblx0XHR2YXIgc2VlbiA9IFtdO1xuXHRcdGZvcihqPWs7IGo+PTA7KSB7XG5cdFx0XHRzZWVuW2pdID0gdHJ1ZTtcblx0XHRcdGNoa2Rbal0gPSB0cnVlO1xuXHRcdFx0YnVmW2J1Zi5sZW5ndGhdID0gajtcblx0XHRcdGJ1Zl9jaGFpbi5wdXNoKHNlY3RvcnNbal0pO1xuXHRcdFx0dmFyIGFkZHIvKjpudW1iZXIqLyA9IGZhdF9hZGRyc1tNYXRoLmZsb29yKGoqNC9zc3opXTtcblx0XHRcdGpqID0gKChqKjQpICYgbW9kdWx1cyk7XG5cdFx0XHRpZihzc3ogPCA0ICsgamopIHRocm93IG5ldyBFcnJvcihcIkZBVCBib3VuZGFyeSBjcm9zc2VkOiBcIiArIGogKyBcIiA0IFwiK3Nzeik7XG5cdFx0XHRpZighc2VjdG9yc1thZGRyXSkgYnJlYWs7XG5cdFx0XHRqID0gX19yZWFkSW50MzJMRShzZWN0b3JzW2FkZHJdLCBqaik7XG5cdFx0XHRpZihzZWVuW2pdKSBicmVhaztcblx0XHR9XG5cdFx0c2VjdG9yX2xpc3Rba10gPSAoe25vZGVzOiBidWYsIGRhdGE6X190b0J1ZmZlcihbYnVmX2NoYWluXSl9Lyo6U2VjdG9yRW50cnkqLyk7XG5cdH1cblx0cmV0dXJuIHNlY3Rvcl9saXN0O1xufVxuXG4vKiBbTVMtQ0ZCXSAyLjYuMSBDb21wb3VuZCBGaWxlIERpcmVjdG9yeSBFbnRyeSAqL1xuZnVuY3Rpb24gcmVhZF9kaXJlY3RvcnkoZGlyX3N0YXJ0Lyo6bnVtYmVyKi8sIHNlY3Rvcl9saXN0Lyo6U2VjdG9yTGlzdCovLCBzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8sIFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovLCBubWZzLCBmaWxlcywgRmlsZUluZGV4LCBtaW5pKSB7XG5cdHZhciBtaW5pZmF0X3N0b3JlID0gMCwgcGwgPSAoUGF0aHMubGVuZ3RoPzI6MCk7XG5cdHZhciBzZWN0b3IgPSBzZWN0b3JfbGlzdFtkaXJfc3RhcnRdLmRhdGE7XG5cdHZhciBpID0gMCwgbmFtZWxlbiA9IDAsIG5hbWU7XG5cdGZvcig7IGkgPCBzZWN0b3IubGVuZ3RoOyBpKz0gMTI4KSB7XG5cdFx0dmFyIGJsb2IvKjpDRkJsb2IqLyA9IC8qOjooKi9zZWN0b3Iuc2xpY2UoaSwgaSsxMjgpLyo6OiA6YW55KSovO1xuXHRcdHByZXBfYmxvYihibG9iLCA2NCk7XG5cdFx0bmFtZWxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRuYW1lID0gX191dGYxNmxlKGJsb2IsMCxuYW1lbGVuLXBsKTtcblx0XHRQYXRocy5wdXNoKG5hbWUpO1xuXHRcdHZhciBvLyo6Q0ZCRW50cnkqLyA9ICh7XG5cdFx0XHRuYW1lOiAgbmFtZSxcblx0XHRcdHR5cGU6ICBibG9iLnJlYWRfc2hpZnQoMSksXG5cdFx0XHRjb2xvcjogYmxvYi5yZWFkX3NoaWZ0KDEpLFxuXHRcdFx0TDogICAgIGJsb2IucmVhZF9zaGlmdCg0LCAnaScpLFxuXHRcdFx0UjogICAgIGJsb2IucmVhZF9zaGlmdCg0LCAnaScpLFxuXHRcdFx0QzogICAgIGJsb2IucmVhZF9zaGlmdCg0LCAnaScpLFxuXHRcdFx0Y2xzaWQ6IGJsb2IucmVhZF9zaGlmdCgxNiksXG5cdFx0XHRzdGF0ZTogYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRzdGFydDogMCxcblx0XHRcdHNpemU6IDBcblx0XHR9KTtcblx0XHR2YXIgY3RpbWUvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihjdGltZSAhPT0gMCkgby5jdCA9IHJlYWRfZGF0ZShibG9iLCBibG9iLmwtOCk7XG5cdFx0dmFyIG10aW1lLyo6bnVtYmVyKi8gPSBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMikgKyBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYobXRpbWUgIT09IDApIG8ubXQgPSByZWFkX2RhdGUoYmxvYiwgYmxvYi5sLTgpO1xuXHRcdG8uc3RhcnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblx0XHRvLnNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblx0XHRpZihvLnNpemUgPCAwICYmIG8uc3RhcnQgPCAwKSB7IG8uc2l6ZSA9IG8udHlwZSA9IDA7IG8uc3RhcnQgPSBFTkRPRkNIQUlOOyBvLm5hbWUgPSBcIlwiOyB9XG5cdFx0aWYoby50eXBlID09PSA1KSB7IC8qIHJvb3QgKi9cblx0XHRcdG1pbmlmYXRfc3RvcmUgPSBvLnN0YXJ0O1xuXHRcdFx0aWYobm1mcyA+IDAgJiYgbWluaWZhdF9zdG9yZSAhPT0gRU5ET0ZDSEFJTikgc2VjdG9yX2xpc3RbbWluaWZhdF9zdG9yZV0ubmFtZSA9IFwiIVN0cmVhbURhdGFcIjtcblx0XHRcdC8qbWluaWZhdF9zaXplID0gby5zaXplOyovXG5cdFx0fSBlbHNlIGlmKG8uc2l6ZSA+PSA0MDk2IC8qIE1TQ1NaICovKSB7XG5cdFx0XHRvLnN0b3JhZ2UgPSAnZmF0Jztcblx0XHRcdGlmKHNlY3Rvcl9saXN0W28uc3RhcnRdID09PSB1bmRlZmluZWQpIHNlY3Rvcl9saXN0W28uc3RhcnRdID0gZ2V0X3NlY3Rvcl9saXN0KHNlY3RvcnMsIG8uc3RhcnQsIHNlY3Rvcl9saXN0LmZhdF9hZGRycywgc2VjdG9yX2xpc3Quc3N6KTtcblx0XHRcdHNlY3Rvcl9saXN0W28uc3RhcnRdLm5hbWUgPSBvLm5hbWU7XG5cdFx0XHRvLmNvbnRlbnQgPSAoc2VjdG9yX2xpc3Rbby5zdGFydF0uZGF0YS5zbGljZSgwLG8uc2l6ZSkvKjphbnkqLyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG8uc3RvcmFnZSA9ICdtaW5pZmF0Jztcblx0XHRcdGlmKG8uc2l6ZSA8IDApIG8uc2l6ZSA9IDA7XG5cdFx0XHRlbHNlIGlmKG1pbmlmYXRfc3RvcmUgIT09IEVORE9GQ0hBSU4gJiYgby5zdGFydCAhPT0gRU5ET0ZDSEFJTiAmJiBzZWN0b3JfbGlzdFttaW5pZmF0X3N0b3JlXSkge1xuXHRcdFx0XHRvLmNvbnRlbnQgPSBnZXRfbWZhdF9lbnRyeShvLCBzZWN0b3JfbGlzdFttaW5pZmF0X3N0b3JlXS5kYXRhLCAoc2VjdG9yX2xpc3RbbWluaV18fHt9KS5kYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoby5jb250ZW50KSBwcmVwX2Jsb2Ioby5jb250ZW50LCAwKTtcblx0XHRmaWxlc1tuYW1lXSA9IG87XG5cdFx0RmlsZUluZGV4LnB1c2gobyk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZF9kYXRlKGJsb2IvKjpSYXdCeXRlc3xDRkJsb2IqLywgb2Zmc2V0Lyo6bnVtYmVyKi8pLyo6RGF0ZSovIHtcblx0cmV0dXJuIG5ldyBEYXRlKCggKCAoX19yZWFkVUludDMyTEUoYmxvYixvZmZzZXQrNCkvMWU3KSpNYXRoLnBvdygyLDMyKStfX3JlYWRVSW50MzJMRShibG9iLG9mZnNldCkvMWU3ICkgLSAxMTY0NDQ3MzYwMCkqMTAwMCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfZmlsZShmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykge1xuXHRnZXRfZnMoKTtcblx0cmV0dXJuIHBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlbmFtZSksIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZWFkKGJsb2IvKjpSYXdCeXRlc3xzdHJpbmcqLywgb3B0aW9ucy8qOkNGQlJlYWRPcHRzKi8pIHtcblx0dmFyIHR5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudHlwZTtcblx0aWYoIXR5cGUpIHtcblx0XHRpZihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihibG9iKSkgdHlwZSA9IFwiYnVmZmVyXCI7XG5cdH1cblx0c3dpdGNoKHR5cGUgfHwgXCJiYXNlNjRcIikge1xuXHRcdGNhc2UgXCJmaWxlXCI6IC8qOjogaWYodHlwZW9mIGJsb2IgIT09ICdzdHJpbmcnKSB0aHJvdyBcIk11c3QgcGFzcyBhIGZpbGVuYW1lIHdoZW4gdHlwZT0nZmlsZSdcIjsgKi9yZXR1cm4gcmVhZF9maWxlKGJsb2IsIG9wdGlvbnMpO1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogLyo6OiBpZih0eXBlb2YgYmxvYiAhPT0gJ3N0cmluZycpIHRocm93IFwiTXVzdCBwYXNzIGEgYmFzZTY0LWVuY29kZWQgYmluYXJ5IHN0cmluZyB3aGVuIHR5cGU9J2ZpbGUnXCI7ICovcmV0dXJuIHBhcnNlKHMyYShCYXNlNjRfZGVjb2RlKGJsb2IpKSwgb3B0aW9ucyk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiAvKjo6IGlmKHR5cGVvZiBibG9iICE9PSAnc3RyaW5nJykgdGhyb3cgXCJNdXN0IHBhc3MgYSBiaW5hcnkgc3RyaW5nIHdoZW4gdHlwZT0nZmlsZSdcIjsgKi9yZXR1cm4gcGFyc2UoczJhKGJsb2IpLCBvcHRpb25zKTtcblx0fVxuXHRyZXR1cm4gcGFyc2UoLyo6OnR5cGVvZiBibG9iID09ICdzdHJpbmcnID8gbmV3IEJ1ZmZlcihibG9iLCAndXRmLTgnKSA6ICovYmxvYiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGluaXRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRzLyo6P2FueSovKS8qOnZvaWQqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fSwgcm9vdCA9IG8ucm9vdCB8fCBcIlJvb3QgRW50cnlcIjtcblx0aWYoIWNmYi5GdWxsUGF0aHMpIGNmYi5GdWxsUGF0aHMgPSBbXTtcblx0aWYoIWNmYi5GaWxlSW5kZXgpIGNmYi5GaWxlSW5kZXggPSBbXTtcblx0aWYoY2ZiLkZ1bGxQYXRocy5sZW5ndGggIT09IGNmYi5GaWxlSW5kZXgubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoXCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZVwiKTtcblx0aWYoY2ZiLkZ1bGxQYXRocy5sZW5ndGggPT09IDApIHtcblx0XHRjZmIuRnVsbFBhdGhzWzBdID0gcm9vdCArIFwiL1wiO1xuXHRcdGNmYi5GaWxlSW5kZXhbMF0gPSAoeyBuYW1lOiByb290LCB0eXBlOiA1IH0vKjphbnkqLyk7XG5cdH1cblx0aWYoby5DTFNJRCkgY2ZiLkZpbGVJbmRleFswXS5jbHNpZCA9IG8uQ0xTSUQ7XG5cdHNlZWRfY2ZiKGNmYik7XG59XG5mdW5jdGlvbiBzZWVkX2NmYihjZmIvKjpDRkJDb250YWluZXIqLykvKjp2b2lkKi8ge1xuXHR2YXIgbm0gPSBcIlxcdTAwMDFTaDMzdEo1XCI7XG5cdGlmKENGQi5maW5kKGNmYiwgXCIvXCIgKyBubSkpIHJldHVybjtcblx0dmFyIHAgPSBuZXdfYnVmKDQpOyBwWzBdID0gNTU7IHBbMV0gPSBwWzNdID0gNTA7IHBbMl0gPSA1NDtcblx0Y2ZiLkZpbGVJbmRleC5wdXNoKCh7IG5hbWU6IG5tLCB0eXBlOiAyLCBjb250ZW50OnAsIHNpemU6NCwgTDo2OSwgUjo2OSwgQzo2OSB9Lyo6YW55Ki8pKTtcblx0Y2ZiLkZ1bGxQYXRocy5wdXNoKGNmYi5GdWxsUGF0aHNbMF0gKyBubSk7XG5cdHJlYnVpbGRfY2ZiKGNmYik7XG59XG5mdW5jdGlvbiByZWJ1aWxkX2NmYihjZmIvKjpDRkJDb250YWluZXIqLywgZi8qOj9ib29sZWFuKi8pLyo6dm9pZCovIHtcblx0aW5pdF9jZmIoY2ZiKTtcblx0dmFyIGdjID0gZmFsc2UsIHMgPSBmYWxzZTtcblx0Zm9yKHZhciBpID0gY2ZiLkZ1bGxQYXRocy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHRcdHZhciBfZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0c3dpdGNoKF9maWxlLnR5cGUpIHtcblx0XHRcdGNhc2UgMDpcblx0XHRcdFx0aWYocykgZ2MgPSB0cnVlO1xuXHRcdFx0XHRlbHNlIHsgY2ZiLkZpbGVJbmRleC5wb3AoKTsgY2ZiLkZ1bGxQYXRocy5wb3AoKTsgfVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBjYXNlIDU6XG5cdFx0XHRcdHMgPSB0cnVlO1xuXHRcdFx0XHRpZihpc05hTihfZmlsZS5SICogX2ZpbGUuTCAqIF9maWxlLkMpKSBnYyA9IHRydWU7XG5cdFx0XHRcdGlmKF9maWxlLlIgPiAtMSAmJiBfZmlsZS5MID4gLTEgJiYgX2ZpbGUuUiA9PSBfZmlsZS5MKSBnYyA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogZ2MgPSB0cnVlOyBicmVhaztcblx0XHR9XG5cdH1cblx0aWYoIWdjICYmICFmKSByZXR1cm47XG5cblx0dmFyIG5vdyA9IG5ldyBEYXRlKDE5ODcsIDEsIDE5KSwgaiA9IDA7XG5cdC8vIFRyYWNrIHdoaWNoIG5hbWVzIGV4aXN0XG5cdHZhciBmdWxsUGF0aHMgPSBPYmplY3QuY3JlYXRlID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuXHR2YXIgZGF0YS8qOkFycmF5PFtzdHJpbmcsIENGQkVudHJ5XT4qLyA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCBjZmIuRnVsbFBhdGhzLmxlbmd0aDsgKytpKSB7XG5cdFx0ZnVsbFBhdGhzW2NmYi5GdWxsUGF0aHNbaV1dID0gdHJ1ZTtcblx0XHRpZihjZmIuRmlsZUluZGV4W2ldLnR5cGUgPT09IDApIGNvbnRpbnVlO1xuXHRcdGRhdGEucHVzaChbY2ZiLkZ1bGxQYXRoc1tpXSwgY2ZiLkZpbGVJbmRleFtpXV0pO1xuXHR9XG5cdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZGFkID0gZGlybmFtZShkYXRhW2ldWzBdKTtcblx0XHRzID0gZnVsbFBhdGhzW2RhZF07XG5cdFx0aWYoIXMpIHtcblx0XHRcdGRhdGEucHVzaChbZGFkLCAoe1xuXHRcdFx0XHRuYW1lOiBmaWxlbmFtZShkYWQpLnJlcGxhY2UoXCIvXCIsXCJcIiksXG5cdFx0XHRcdHR5cGU6IDEsXG5cdFx0XHRcdGNsc2lkOiBIRUFERVJfQ0xTSUQsXG5cdFx0XHRcdGN0OiBub3csIG10OiBub3csXG5cdFx0XHRcdGNvbnRlbnQ6IG51bGxcblx0XHRcdH0vKjphbnkqLyldKTtcblx0XHRcdC8vIEFkZCBuYW1lIHRvIHNldFxuXHRcdFx0ZnVsbFBhdGhzW2RhZF0gPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdGRhdGEuc29ydChmdW5jdGlvbih4LHkpIHsgcmV0dXJuIG5hbWVjbXAoeFswXSwgeVswXSk7IH0pO1xuXHRjZmIuRnVsbFBhdGhzID0gW107IGNmYi5GaWxlSW5kZXggPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgeyBjZmIuRnVsbFBhdGhzW2ldID0gZGF0YVtpXVswXTsgY2ZiLkZpbGVJbmRleFtpXSA9IGRhdGFbaV1bMV07IH1cblx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBlbHQgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdHZhciBubSA9IGNmYi5GdWxsUGF0aHNbaV07XG5cblx0XHRlbHQubmFtZSA9ICBmaWxlbmFtZShubSkucmVwbGFjZShcIi9cIixcIlwiKTtcblx0XHRlbHQuTCA9IGVsdC5SID0gZWx0LkMgPSAtKGVsdC5jb2xvciA9IDEpO1xuXHRcdGVsdC5zaXplID0gZWx0LmNvbnRlbnQgPyBlbHQuY29udGVudC5sZW5ndGggOiAwO1xuXHRcdGVsdC5zdGFydCA9IDA7XG5cdFx0ZWx0LmNsc2lkID0gKGVsdC5jbHNpZCB8fCBIRUFERVJfQ0xTSUQpO1xuXHRcdGlmKGkgPT09IDApIHtcblx0XHRcdGVsdC5DID0gZGF0YS5sZW5ndGggPiAxID8gMSA6IC0xO1xuXHRcdFx0ZWx0LnNpemUgPSAwO1xuXHRcdFx0ZWx0LnR5cGUgPSA1O1xuXHRcdH0gZWxzZSBpZihubS5zbGljZSgtMSkgPT0gXCIvXCIpIHtcblx0XHRcdGZvcihqPWkrMTtqIDwgZGF0YS5sZW5ndGg7ICsraikgaWYoZGlybmFtZShjZmIuRnVsbFBhdGhzW2pdKT09bm0pIGJyZWFrO1xuXHRcdFx0ZWx0LkMgPSBqID49IGRhdGEubGVuZ3RoID8gLTEgOiBqO1xuXHRcdFx0Zm9yKGo9aSsxO2ogPCBkYXRhLmxlbmd0aDsgKytqKSBpZihkaXJuYW1lKGNmYi5GdWxsUGF0aHNbal0pPT1kaXJuYW1lKG5tKSkgYnJlYWs7XG5cdFx0XHRlbHQuUiA9IGogPj0gZGF0YS5sZW5ndGggPyAtMSA6IGo7XG5cdFx0XHRlbHQudHlwZSA9IDE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmKGRpcm5hbWUoY2ZiLkZ1bGxQYXRoc1tpKzFdfHxcIlwiKSA9PSBkaXJuYW1lKG5tKSkgZWx0LlIgPSBpICsgMTtcblx0XHRcdGVsdC50eXBlID0gMjtcblx0XHR9XG5cdH1cblxufVxuXG5mdW5jdGlvbiBfd3JpdGUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjpSYXdCeXRlc3xzdHJpbmcqLyB7XG5cdHZhciBfb3B0cyA9IG9wdGlvbnMgfHwge307XG5cdC8qIE1BRCBpcyBvcmRlci1zZW5zaXRpdmUsIHNraXAgcmVidWlsZCBhbmQgc29ydCAqL1xuXHRpZihfb3B0cy5maWxlVHlwZSA9PSAnbWFkJykgcmV0dXJuIHdyaXRlX21hZChjZmIsIF9vcHRzKTtcblx0cmVidWlsZF9jZmIoY2ZiKTtcblx0c3dpdGNoKF9vcHRzLmZpbGVUeXBlKSB7XG5cdFx0Y2FzZSAnemlwJzogcmV0dXJuIHdyaXRlX3ppcChjZmIsIF9vcHRzKTtcblx0XHQvL2Nhc2UgJ21hZCc6IHJldHVybiB3cml0ZV9tYWQoY2ZiLCBfb3B0cyk7XG5cdH1cblx0dmFyIEwgPSAoZnVuY3Rpb24oY2ZiLyo6Q0ZCQ29udGFpbmVyKi8pLyo6QXJyYXk8bnVtYmVyPiove1xuXHRcdHZhciBtaW5pX3NpemUgPSAwLCBmYXRfc2l6ZSA9IDA7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRcdGlmKCFmaWxlLmNvbnRlbnQpIGNvbnRpbnVlO1xuXHRcdFx0Lyo6OiBpZihmaWxlLmNvbnRlbnQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHR2YXIgZmxlbiA9IGZpbGUuY29udGVudC5sZW5ndGg7XG5cdFx0XHRpZihmbGVuID4gMCl7XG5cdFx0XHRcdGlmKGZsZW4gPCAweDEwMDApIG1pbmlfc2l6ZSArPSAoZmxlbiArIDB4M0YpID4+IDY7XG5cdFx0XHRcdGVsc2UgZmF0X3NpemUgKz0gKGZsZW4gKyAweDAxRkYpID4+IDk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHZhciBkaXJfY250ID0gKGNmYi5GdWxsUGF0aHMubGVuZ3RoICszKSA+PiAyO1xuXHRcdHZhciBtaW5pX2NudCA9IChtaW5pX3NpemUgKyA3KSA+PiAzO1xuXHRcdHZhciBtZmF0X2NudCA9IChtaW5pX3NpemUgKyAweDdGKSA+PiA3O1xuXHRcdHZhciBmYXRfYmFzZSA9IG1pbmlfY250ICsgZmF0X3NpemUgKyBkaXJfY250ICsgbWZhdF9jbnQ7XG5cdFx0dmFyIGZhdF9jbnQgPSAoZmF0X2Jhc2UgKyAweDdGKSA+PiA3O1xuXHRcdHZhciBkaWZhdF9jbnQgPSBmYXRfY250IDw9IDEwOSA/IDAgOiBNYXRoLmNlaWwoKGZhdF9jbnQtMTA5KS8weDdGKTtcblx0XHR3aGlsZSgoKGZhdF9iYXNlICsgZmF0X2NudCArIGRpZmF0X2NudCArIDB4N0YpID4+IDcpID4gZmF0X2NudCkgZGlmYXRfY250ID0gKytmYXRfY250IDw9IDEwOSA/IDAgOiBNYXRoLmNlaWwoKGZhdF9jbnQtMTA5KS8weDdGKTtcblx0XHR2YXIgTCA9ICBbMSwgZGlmYXRfY250LCBmYXRfY250LCBtZmF0X2NudCwgZGlyX2NudCwgZmF0X3NpemUsIG1pbmlfc2l6ZSwgMF07XG5cdFx0Y2ZiLkZpbGVJbmRleFswXS5zaXplID0gbWluaV9zaXplIDw8IDY7XG5cdFx0TFs3XSA9IChjZmIuRmlsZUluZGV4WzBdLnN0YXJ0PUxbMF0rTFsxXStMWzJdK0xbM10rTFs0XStMWzVdKSsoKExbNl0rNykgPj4gMyk7XG5cdFx0cmV0dXJuIEw7XG5cdH0pKGNmYik7XG5cdHZhciBvID0gbmV3X2J1ZihMWzddIDw8IDkpO1xuXHR2YXIgaSA9IDAsIFQgPSAwO1xuXHR7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgODsgKytpKSBvLndyaXRlX3NoaWZ0KDEsIEhFQURFUl9TSUdbaV0pO1xuXHRcdGZvcihpID0gMDsgaSA8IDg7ICsraSkgby53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAzRSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweDAwMDMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHhGRkZFKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAwOSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweDAwMDYpO1xuXHRcdGZvcihpID0gMDsgaSA8IDM7ICsraSkgby53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFsyXSk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzBdICsgTFsxXSArIExbMl0gKyBMWzNdIC0gMSk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDE8PDEyKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbM10gPyBMWzBdICsgTFsxXSArIExbMl0gLSAxOiBFTkRPRkNIQUlOKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbM10pO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIExbMV0gPyBMWzBdIC0gMTogRU5ET0ZDSEFJTik7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzFdKTtcblx0XHRmb3IoaSA9IDA7IGkgPCAxMDk7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgaSA8IExbMl0gPyBMWzFdICsgaSA6IC0xKTtcblx0fVxuXHRpZihMWzFdKSB7XG5cdFx0Zm9yKFQgPSAwOyBUIDwgTFsxXTsgKytUKSB7XG5cdFx0XHRmb3IoOyBpIDwgMjM2ICsgVCAqIDEyNzsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBpIDwgTFsyXSA/IExbMV0gKyBpIDogLTEpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgtNCwgVCA9PT0gTFsxXSAtIDEgPyBFTkRPRkNIQUlOIDogVCArIDEpO1xuXHRcdH1cblx0fVxuXHR2YXIgY2hhaW5pdCA9IGZ1bmN0aW9uKHcvKjpudW1iZXIqLykvKjp2b2lkKi8ge1xuXHRcdGZvcihUICs9IHc7IGk8VC0xOyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGkrMSk7XG5cdFx0aWYodykgeyArK2k7IG8ud3JpdGVfc2hpZnQoLTQsIEVORE9GQ0hBSU4pOyB9XG5cdH07XG5cdFQgPSBpID0gMDtcblx0Zm9yKFQrPUxbMV07IGk8VDsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBjb25zdHMuRElGU0VDVCk7XG5cdGZvcihUKz1MWzJdOyBpPFQ7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgY29uc3RzLkZBVFNFQ1QpO1xuXHRjaGFpbml0KExbM10pO1xuXHRjaGFpbml0KExbNF0pO1xuXHR2YXIgai8qOm51bWJlciovID0gMCwgZmxlbi8qOm51bWJlciovID0gMDtcblx0dmFyIGZpbGUvKjpDRkJFbnRyeSovID0gY2ZiLkZpbGVJbmRleFswXTtcblx0Zm9yKDsgaiA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2opIHtcblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtqXTtcblx0XHRpZighZmlsZS5jb250ZW50KSBjb250aW51ZTtcblx0XHQvKjo6IGlmKGZpbGUuY29udGVudCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRmbGVuID0gZmlsZS5jb250ZW50Lmxlbmd0aDtcblx0XHRpZihmbGVuIDwgMHgxMDAwKSBjb250aW51ZTtcblx0XHRmaWxlLnN0YXJ0ID0gVDtcblx0XHRjaGFpbml0KChmbGVuICsgMHgwMUZGKSA+PiA5KTtcblx0fVxuXHRjaGFpbml0KChMWzZdICsgNykgPj4gMyk7XG5cdHdoaWxlKG8ubCAmIDB4MUZGKSBvLndyaXRlX3NoaWZ0KC00LCBjb25zdHMuRU5ET0ZDSEFJTik7XG5cdFQgPSBpID0gMDtcblx0Zm9yKGogPSAwOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikge1xuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2pdO1xuXHRcdGlmKCFmaWxlLmNvbnRlbnQpIGNvbnRpbnVlO1xuXHRcdC8qOjogaWYoZmlsZS5jb250ZW50ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGZsZW4gPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuXHRcdGlmKCFmbGVuIHx8IGZsZW4gPj0gMHgxMDAwKSBjb250aW51ZTtcblx0XHRmaWxlLnN0YXJ0ID0gVDtcblx0XHRjaGFpbml0KChmbGVuICsgMHgzRikgPj4gNik7XG5cdH1cblx0d2hpbGUoby5sICYgMHgxRkYpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5FTkRPRkNIQUlOKTtcblx0Zm9yKGkgPSAwOyBpIDwgTFs0XTw8MjsgKytpKSB7XG5cdFx0dmFyIG5tID0gY2ZiLkZ1bGxQYXRoc1tpXTtcblx0XHRpZighbm0gfHwgbm0ubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRmb3IoaiA9IDA7IGogPCAxNzsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdFx0Zm9yKGogPSAwOyBqIDwgMzsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIC0xKTtcblx0XHRcdGZvcihqID0gMDsgaiA8IDEyOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0aWYoaSA9PT0gMCkgZmlsZS5zdGFydCA9IGZpbGUuc2l6ZSA/IGZpbGUuc3RhcnQgLSAxIDogRU5ET0ZDSEFJTjtcblx0XHR2YXIgX25tLyo6c3RyaW5nKi8gPSAoaSA9PT0gMCAmJiBfb3B0cy5yb290KSB8fCBmaWxlLm5hbWU7XG5cdFx0ZmxlbiA9IDIqKF9ubS5sZW5ndGgrMSk7XG5cdFx0by53cml0ZV9zaGlmdCg2NCwgX25tLCBcInV0ZjE2bGVcIik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBmbGVuKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIGZpbGUudHlwZSk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBmaWxlLmNvbG9yKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCBmaWxlLkwpO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIGZpbGUuUik7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgZmlsZS5DKTtcblx0XHRpZighZmlsZS5jbHNpZCkgZm9yKGogPSAwOyBqIDwgNDsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGVsc2Ugby53cml0ZV9zaGlmdCgxNiwgZmlsZS5jbHNpZCwgXCJoZXhcIik7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBmaWxlLnN0YXRlIHx8IDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGZpbGUuc3RhcnQpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlsZS5zaXplKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0fVxuXHRmb3IoaSA9IDE7IGkgPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytpKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0Lyo6OiBpZighZmlsZS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRpZihmaWxlLnNpemUgPj0gMHgxMDAwKSB7XG5cdFx0XHRvLmwgPSAoZmlsZS5zdGFydCsxKSA8PCA5O1xuXHRcdFx0aWYgKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGZpbGUuY29udGVudCkpIHtcblx0XHRcdFx0ZmlsZS5jb250ZW50LmNvcHkobywgby5sLCAwLCBmaWxlLnNpemUpO1xuXHRcdFx0XHQvLyBvIGlzIGEgMC1maWxsZWQgQnVmZmVyIHNvIGp1c3Qgc2V0IG5leHQgb2Zmc2V0XG5cdFx0XHRcdG8ubCArPSAoZmlsZS5zaXplICsgNTExKSAmIC01MTI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmb3IoaiA9IDA7IGogPCBmaWxlLnNpemU7ICsraikgby53cml0ZV9zaGlmdCgxLCBmaWxlLmNvbnRlbnRbal0pO1xuXHRcdFx0XHRmb3IoOyBqICYgMHgxRkY7ICsraikgby53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Zm9yKGkgPSAxOyBpIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraSkge1xuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdC8qOjogaWYoIWZpbGUuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0aWYoZmlsZS5zaXplID4gMCAmJiBmaWxlLnNpemUgPCAweDEwMDApIHtcblx0XHRcdGlmIChoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihmaWxlLmNvbnRlbnQpKSB7XG5cdFx0XHRcdGZpbGUuY29udGVudC5jb3B5KG8sIG8ubCwgMCwgZmlsZS5zaXplKTtcblx0XHRcdFx0Ly8gbyBpcyBhIDAtZmlsbGVkIEJ1ZmZlciBzbyBqdXN0IHNldCBuZXh0IG9mZnNldFxuXHRcdFx0XHRvLmwgKz0gKGZpbGUuc2l6ZSArIDYzKSAmIC02NDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvcihqID0gMDsgaiA8IGZpbGUuc2l6ZTsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIGZpbGUuY29udGVudFtqXSk7XG5cdFx0XHRcdGZvcig7IGogJiAweDNGOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmIChoYXNfYnVmKSB7XG5cdFx0by5sID0gby5sZW5ndGg7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gV2hlbiB1c2luZyBCdWZmZXIsIGFscmVhZHkgMC1maWxsZWRcblx0XHR3aGlsZShvLmwgPCBvLmxlbmd0aCkgby53cml0ZV9zaGlmdCgxLCAwKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1DRkJdIDIuNi40IChVbmljb2RlIDMuMC4xIGNhc2UgY29udmVyc2lvbikgKi9cbmZ1bmN0aW9uIGZpbmQoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIHBhdGgvKjpzdHJpbmcqLykvKjo/Q0ZCRW50cnkqLyB7XG5cdHZhciBVQ0Z1bGxQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IGNmYi5GdWxsUGF0aHMubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgudG9VcHBlckNhc2UoKTsgfSk7XG5cdHZhciBVQ1BhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gVUNGdWxsUGF0aHMubWFwKGZ1bmN0aW9uKHgpIHsgdmFyIHkgPSB4LnNwbGl0KFwiL1wiKTsgcmV0dXJuIHlbeS5sZW5ndGggLSAoeC5zbGljZSgtMSkgPT0gXCIvXCIgPyAyIDogMSldOyB9KTtcblx0dmFyIGsvKjpib29sZWFuKi8gPSBmYWxzZTtcblx0aWYocGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKiBcIi9cIiAqLykgeyBrID0gdHJ1ZTsgcGF0aCA9IFVDRnVsbFBhdGhzWzBdLnNsaWNlKDAsIC0xKSArIHBhdGg7IH1cblx0ZWxzZSBrID0gcGF0aC5pbmRleE9mKFwiL1wiKSAhPT0gLTE7XG5cdHZhciBVQ1BhdGgvKjpzdHJpbmcqLyA9IHBhdGgudG9VcHBlckNhc2UoKTtcblx0dmFyIHcvKjpudW1iZXIqLyA9IGsgPT09IHRydWUgPyBVQ0Z1bGxQYXRocy5pbmRleE9mKFVDUGF0aCkgOiBVQ1BhdGhzLmluZGV4T2YoVUNQYXRoKTtcblx0aWYodyAhPT0gLTEpIHJldHVybiBjZmIuRmlsZUluZGV4W3ddO1xuXG5cdHZhciBtID0gIVVDUGF0aC5tYXRjaChjaHIxKTtcblx0VUNQYXRoID0gVUNQYXRoLnJlcGxhY2UoY2hyMCwnJyk7XG5cdGlmKG0pIFVDUGF0aCA9IFVDUGF0aC5yZXBsYWNlKGNocjEsJyEnKTtcblx0Zm9yKHcgPSAwOyB3IDwgVUNGdWxsUGF0aHMubGVuZ3RoOyArK3cpIHtcblx0XHRpZigobSA/IFVDRnVsbFBhdGhzW3ddLnJlcGxhY2UoY2hyMSwnIScpIDogVUNGdWxsUGF0aHNbd10pLnJlcGxhY2UoY2hyMCwnJykgPT0gVUNQYXRoKSByZXR1cm4gY2ZiLkZpbGVJbmRleFt3XTtcblx0XHRpZigobSA/IFVDUGF0aHNbd10ucmVwbGFjZShjaHIxLCchJykgOiBVQ1BhdGhzW3ddKS5yZXBsYWNlKGNocjAsJycpID09IFVDUGF0aCkgcmV0dXJuIGNmYi5GaWxlSW5kZXhbd107XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG4vKiogQ0ZCIENvbnN0YW50cyAqL1xudmFyIE1TU1ogPSA2NDsgLyogTWluaSBTZWN0b3IgU2l6ZSA9IDE8PDYgKi9cbi8vdmFyIE1TQ1NaID0gNDA5NjsgLyogTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemUgKi9cbi8qIDIuMSBDb21wb3VuZCBGaWxlIFNlY3RvciBOdW1iZXJzIGFuZCBUeXBlcyAqL1xudmFyIEVORE9GQ0hBSU4gPSAtMjtcbi8qIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAqL1xudmFyIEhFQURFUl9TSUdOQVRVUkUgPSAnZDBjZjExZTBhMWIxMWFlMSc7XG52YXIgSEVBREVSX1NJRyA9IFsweEQwLCAweENGLCAweDExLCAweEUwLCAweEExLCAweEIxLCAweDFBLCAweEUxXTtcbnZhciBIRUFERVJfQ0xTSUQgPSAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xudmFyIGNvbnN0cyA9IHtcblx0LyogMi4xIENvbXB1bmQgRmlsZSBTZWN0b3IgTnVtYmVycyBhbmQgVHlwZXMgKi9cblx0TUFYUkVHU0VDVDogLTYsXG5cdERJRlNFQ1Q6IC00LFxuXHRGQVRTRUNUOiAtMyxcblx0RU5ET0ZDSEFJTjogRU5ET0ZDSEFJTixcblx0RlJFRVNFQ1Q6IC0xLFxuXHQvKiAyLjIgQ29tcG91bmQgRmlsZSBIZWFkZXIgKi9cblx0SEVBREVSX1NJR05BVFVSRTogSEVBREVSX1NJR05BVFVSRSxcblx0SEVBREVSX01JTk9SX1ZFUlNJT046ICczZTAwJyxcblx0TUFYUkVHU0lEOiAtNixcblx0Tk9TVFJFQU06IC0xLFxuXHRIRUFERVJfQ0xTSUQ6IEhFQURFUl9DTFNJRCxcblx0LyogMi42LjEgQ29tcG91bmQgRmlsZSBEaXJlY3RvcnkgRW50cnkgKi9cblx0RW50cnlUeXBlczogWyd1bmtub3duJywnc3RvcmFnZScsJ3N0cmVhbScsJ2xvY2tieXRlcycsJ3Byb3BlcnR5Jywncm9vdCddXG59O1xuXG5mdW5jdGlvbiB3cml0ZV9maWxlKGNmYi8qOkNGQkNvbnRhaW5lciovLCBmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRpb25zLyo6Q0ZCV3JpdGVPcHRzKi8pLyo6dm9pZCovIHtcblx0Z2V0X2ZzKCk7XG5cdHZhciBvID0gX3dyaXRlKGNmYiwgb3B0aW9ucyk7XG5cdC8qOjogaWYodHlwZW9mIEJ1ZmZlciA9PSAndW5kZWZpbmVkJyB8fCAhQnVmZmVyLmlzQnVmZmVyKG8pIHx8ICEobyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRmcy53cml0ZUZpbGVTeW5jKGZpbGVuYW1lLCBvKTtcbn1cblxuZnVuY3Rpb24gYTJzKG8vKjpSYXdCeXRlcyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dCA9IG5ldyBBcnJheShvLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBvLmxlbmd0aDsgKytpKSBvdXRbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG9baV0pO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRpb25zLyo6Q0ZCV3JpdGVPcHRzKi8pLyo6UmF3Qnl0ZXN8c3RyaW5nKi8ge1xuXHR2YXIgbyA9IF93cml0ZShjZmIsIG9wdGlvbnMpO1xuXHRzd2l0Y2gob3B0aW9ucyAmJiBvcHRpb25zLnR5cGUgfHwgXCJidWZmZXJcIikge1xuXHRcdGNhc2UgXCJmaWxlXCI6IGdldF9mcygpOyBmcy53cml0ZUZpbGVTeW5jKG9wdGlvbnMuZmlsZW5hbWUsIChvLyo6YW55Ki8pKTsgcmV0dXJuIG87XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IG8gOiBhMnMobyk7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gQmFzZTY0X2VuY29kZSh0eXBlb2YgbyA9PSBcInN0cmluZ1wiID8gbyA6IGEycyhvKSk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiBpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG8pID8gbyA6IEJ1ZmZlcl9mcm9tKG8pO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgXCJhcnJheVwiOiByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IHMyYShvKSA6IG87XG5cdH1cblx0cmV0dXJuIG87XG59XG4vKiBub2RlIDwgOC4xIHpsaWIgZG9lcyBub3QgZXhwb3NlIGJ5dGVzUmVhZCwgc28gZGVmYXVsdCB0byBwdXJlIEpTICovXG52YXIgX3psaWI7XG5mdW5jdGlvbiB1c2VfemxpYih6bGliKSB7IHRyeSB7XG5cdHZhciBJbmZsYXRlUmF3ID0gemxpYi5JbmZsYXRlUmF3O1xuXHR2YXIgSW5mbFJhdyA9IG5ldyBJbmZsYXRlUmF3KCk7XG5cdEluZmxSYXcuX3Byb2Nlc3NDaHVuayhuZXcgVWludDhBcnJheShbMywgMF0pLCBJbmZsUmF3Ll9maW5pc2hGbHVzaEZsYWcpO1xuXHRpZihJbmZsUmF3LmJ5dGVzUmVhZCkgX3psaWIgPSB6bGliO1xuXHRlbHNlIHRocm93IG5ldyBFcnJvcihcInpsaWIgZG9lcyBub3QgZXhwb3NlIGJ5dGVzUmVhZFwiKTtcbn0gY2F0Y2goZSkge2NvbnNvbGUuZXJyb3IoXCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiBcIiArIChlLm1lc3NhZ2UgfHwgZSkpOyB9IH1cblxuZnVuY3Rpb24gX2luZmxhdGVSYXdTeW5jKHBheWxvYWQsIHVzeikge1xuXHRpZighX3psaWIpIHJldHVybiBfaW5mbGF0ZShwYXlsb2FkLCB1c3opO1xuXHR2YXIgSW5mbGF0ZVJhdyA9IF96bGliLkluZmxhdGVSYXc7XG5cdHZhciBJbmZsUmF3ID0gbmV3IEluZmxhdGVSYXcoKTtcblx0dmFyIG91dCA9IEluZmxSYXcuX3Byb2Nlc3NDaHVuayhwYXlsb2FkLnNsaWNlKHBheWxvYWQubCksIEluZmxSYXcuX2ZpbmlzaEZsdXNoRmxhZyk7XG5cdHBheWxvYWQubCArPSBJbmZsUmF3LmJ5dGVzUmVhZDtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gX2RlZmxhdGVSYXdTeW5jKHBheWxvYWQpIHtcblx0cmV0dXJuIF96bGliID8gX3psaWIuZGVmbGF0ZVJhd1N5bmMocGF5bG9hZCkgOiBfZGVmbGF0ZShwYXlsb2FkKTtcbn1cbnZhciBDTEVOX09SREVSID0gWyAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1IF07XG5cbi8qICBMRU5fSUQgPSBbIDI1NywgMjU4LCAyNTksIDI2MCwgMjYxLCAyNjIsIDI2MywgMjY0LCAyNjUsIDI2NiwgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1IF07ICovXG52YXIgTEVOX0xOID0gWyAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICA4LCAgIDksICAxMCwgIDExLCAgMTMgLCAxNSwgIDE3LCAgMTksICAyMywgIDI3LCAgMzEsICAzNSwgIDQzLCAgNTEsICA1OSwgIDY3LCAgODMsICA5OSwgMTE1LCAxMzEsIDE2MywgMTk1LCAyMjcsIDI1OCBdO1xuXG4vKiAgRFNUX0lEID0gWyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDE4LCAgMTksICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjkgXTsgKi9cbnZhciBEU1RfTE4gPSBbICAxLCAgMiwgIDMsICA0LCAgNSwgIDcsICA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSwgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NyBdO1xuXG5mdW5jdGlvbiBiaXRfc3dhcF84KG4pIHsgdmFyIHQgPSAoKCgoKG48PDEpfChuPDwxMSkpICYgMHgyMjExMCkgfCAoKChuPDw1KXwobjw8MTUpKSAmIDB4ODg0NDApKSk7IHJldHVybiAoKHQ+PjE2KSB8ICh0Pj44KSB8dCkmMHhGRjsgfVxuXG52YXIgdXNlX3R5cGVkX2FycmF5cyA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJztcblxudmFyIGJpdHN3YXA4ID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDE8PDgpIDogW107XG5mb3IodmFyIHEgPSAwOyBxIDwgKDE8PDgpOyArK3EpIGJpdHN3YXA4W3FdID0gYml0X3N3YXBfOChxKTtcblxuZnVuY3Rpb24gYml0X3N3YXBfbihuLCBiKSB7XG5cdHZhciByZXYgPSBiaXRzd2FwOFtuICYgMHhGRl07XG5cdGlmKGIgPD0gOCkgcmV0dXJuIHJldiA+Pj4gKDgtYik7XG5cdHJldiA9IChyZXYgPDwgOCkgfCBiaXRzd2FwOFsobj4+OCkmMHhGRl07XG5cdGlmKGIgPD0gMTYpIHJldHVybiByZXYgPj4+ICgxNi1iKTtcblx0cmV2ID0gKHJldiA8PCA4KSB8IGJpdHN3YXA4WyhuPj4xNikmMHhGRl07XG5cdHJldHVybiByZXYgPj4+ICgyNC1iKTtcbn1cblxuLyogaGVscGVycyBmb3IgdW5hbGlnbmVkIGJpdCByZWFkcyAqL1xuZnVuY3Rpb24gcmVhZF9iaXRzXzIoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gNiA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4MDM7IH1cbmZ1bmN0aW9uIHJlYWRfYml0c18zKGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDUgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDA3OyB9XG5mdW5jdGlvbiByZWFkX2JpdHNfNChidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSA0ID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgwRjsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzUoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gMyA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4MUY7IH1cbmZ1bmN0aW9uIHJlYWRfYml0c183KGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDEgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDdGOyB9XG5cbi8qIHdvcmtzIHVwIHRvIG4gPSAzICogOCArIDEgPSAyNSAqL1xuZnVuY3Rpb24gcmVhZF9iaXRzX24oYnVmLCBibCwgbikge1xuXHR2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpLCBmID0gKCgxPDxuKS0xKTtcblx0dmFyIHYgPSBidWZbaF0gPj4+IHc7XG5cdGlmKG4gPCA4IC0gdykgcmV0dXJuIHYgJiBmO1xuXHR2IHw9IGJ1ZltoKzFdPDwoOC13KTtcblx0aWYobiA8IDE2IC0gdykgcmV0dXJuIHYgJiBmO1xuXHR2IHw9IGJ1ZltoKzJdPDwoMTYtdyk7XG5cdGlmKG4gPCAyNCAtIHcpIHJldHVybiB2ICYgZjtcblx0diB8PSBidWZbaCszXTw8KDI0LXcpO1xuXHRyZXR1cm4gdiAmIGY7XG59XG5cbi8qIGhlbHBlcnMgZm9yIHVuYWxpZ25lZCBiaXQgd3JpdGVzICovXG5mdW5jdGlvbiB3cml0ZV9iaXRzXzMoYnVmLCBibCwgdikgeyB2YXIgdyA9IGJsICYgNywgaCA9IGJsID4+PiAzO1xuXHRpZih3IDw9IDUpIGJ1ZltoXSB8PSAodiAmIDcpIDw8IHc7XG5cdGVsc2Uge1xuXHRcdGJ1ZltoXSB8PSAodiA8PCB3KSAmIDB4RkY7XG5cdFx0YnVmW2grMV0gPSAodiY3KSA+PiAoOC13KTtcblx0fVxuXHRyZXR1cm4gYmwgKyAzO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9iaXRzXzEoYnVmLCBibCwgdikge1xuXHR2YXIgdyA9IGJsICYgNywgaCA9IGJsID4+PiAzO1xuXHR2ID0gKHYmMSkgPDwgdztcblx0YnVmW2hdIHw9IHY7XG5cdHJldHVybiBibCArIDE7XG59XG5mdW5jdGlvbiB3cml0ZV9iaXRzXzgoYnVmLCBibCwgdikge1xuXHR2YXIgdyA9IGJsICYgNywgaCA9IGJsID4+PiAzO1xuXHR2IDw8PSB3O1xuXHRidWZbaF0gfD0gIHYgJiAweEZGOyB2ID4+Pj0gODtcblx0YnVmW2grMV0gPSB2O1xuXHRyZXR1cm4gYmwgKyA4O1xufVxuZnVuY3Rpb24gd3JpdGVfYml0c18xNihidWYsIGJsLCB2KSB7XG5cdHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdHYgPDw9IHc7XG5cdGJ1ZltoXSB8PSAgdiAmIDB4RkY7IHYgPj4+PSA4O1xuXHRidWZbaCsxXSA9IHYgJiAweEZGO1xuXHRidWZbaCsyXSA9IHYgPj4+IDg7XG5cdHJldHVybiBibCArIDE2O1xufVxuXG4vKiB1bnRpbCBBcnJheUJ1ZmZlciNyZWFsbG9jIGlzIGEgdGhpbmcsIGZha2UgYSByZWFsbG9jICovXG5mdW5jdGlvbiByZWFsbG9jKGIsIHN6Lyo6bnVtYmVyKi8pIHtcblx0dmFyIEwgPSBiLmxlbmd0aCwgTSA9IDIqTCA+IHN6ID8gMipMIDogc3ogKyA1LCBpID0gMDtcblx0aWYoTCA+PSBzeikgcmV0dXJuIGI7XG5cdGlmKGhhc19idWYpIHtcblx0XHR2YXIgbyA9IG5ld191bnNhZmVfYnVmKE0pO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYoYi5jb3B5KSBiLmNvcHkobyk7XG5cdFx0ZWxzZSBmb3IoOyBpIDwgYi5sZW5ndGg7ICsraSkgb1tpXSA9IGJbaV07XG5cdFx0cmV0dXJuIG87XG5cdH0gZWxzZSBpZih1c2VfdHlwZWRfYXJyYXlzKSB7XG5cdFx0dmFyIGEgPSBuZXcgVWludDhBcnJheShNKTtcblx0XHRpZihhLnNldCkgYS5zZXQoYik7XG5cdFx0ZWxzZSBmb3IoOyBpIDwgTDsgKytpKSBhW2ldID0gYltpXTtcblx0XHRyZXR1cm4gYTtcblx0fVxuXHRiLmxlbmd0aCA9IE07XG5cdHJldHVybiBiO1xufVxuXG4vKiB6ZXJvLWZpbGxlZCBhcnJheXMgZm9yIG9sZGVyIGJyb3dzZXJzICovXG5mdW5jdGlvbiB6ZXJvX2ZpbGxfYXJyYXkobikge1xuXHR2YXIgbyA9IG5ldyBBcnJheShuKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG47ICsraSkgb1tpXSA9IDA7XG5cdHJldHVybiBvO1xufVxuXG4vKiBidWlsZCB0cmVlICh1c2VkIGZvciBsaXRlcmFscyBhbmQgbGVuZ3RocykgKi9cbmZ1bmN0aW9uIGJ1aWxkX3RyZWUoY2xlbnMsIGNtYXAsIE1BWC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIG1heGxlbiA9IDEsIHcgPSAwLCBpID0gMCwgaiA9IDAsIGNjb2RlID0gMCwgTCA9IGNsZW5zLmxlbmd0aDtcblxuXHR2YXIgYmxfY291bnQgID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMikgOiB6ZXJvX2ZpbGxfYXJyYXkoMzIpO1xuXHRmb3IoaSA9IDA7IGkgPCAzMjsgKytpKSBibF9jb3VudFtpXSA9IDA7XG5cblx0Zm9yKGkgPSBMOyBpIDwgTUFYOyArK2kpIGNsZW5zW2ldID0gMDtcblx0TCA9IGNsZW5zLmxlbmd0aDtcblxuXHR2YXIgY3RyZWUgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KEwpIDogemVyb19maWxsX2FycmF5KEwpOyAvLyBbXVxuXG5cdC8qIGJ1aWxkIGNvZGUgdHJlZSAqL1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIHtcblx0XHRibF9jb3VudFsodyA9IGNsZW5zW2ldKV0rKztcblx0XHRpZihtYXhsZW4gPCB3KSBtYXhsZW4gPSB3O1xuXHRcdGN0cmVlW2ldID0gMDtcblx0fVxuXHRibF9jb3VudFswXSA9IDA7XG5cdGZvcihpID0gMTsgaSA8PSBtYXhsZW47ICsraSkgYmxfY291bnRbaSsxNl0gPSAoY2NvZGUgPSAoY2NvZGUgKyBibF9jb3VudFtpLTFdKTw8MSk7XG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkge1xuXHRcdGNjb2RlID0gY2xlbnNbaV07XG5cdFx0aWYoY2NvZGUgIT0gMCkgY3RyZWVbaV0gPSBibF9jb3VudFtjY29kZSsxNl0rKztcblx0fVxuXG5cdC8qIGNtYXBbbWF4bGVuICsgNCBiaXRzXSA9IChvZmYmMTUpICsgKGxpdDw8NCkgcmV2ZXJzZSBtYXBwaW5nICovXG5cdHZhciBjbGVuaSA9IDA7XG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkge1xuXHRcdGNsZW5pID0gY2xlbnNbaV07XG5cdFx0aWYoY2xlbmkgIT0gMCkge1xuXHRcdFx0Y2NvZGUgPSBiaXRfc3dhcF9uKGN0cmVlW2ldLCBtYXhsZW4pPj4obWF4bGVuLWNsZW5pKTtcblx0XHRcdGZvcihqID0gKDE8PChtYXhsZW4gKyA0IC0gY2xlbmkpKSAtIDE7IGo+PTA7IC0tailcblx0XHRcdFx0Y21hcFtjY29kZXwoajw8Y2xlbmkpXSA9IChjbGVuaSYxNSkgfCAoaTw8NCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXhsZW47XG59XG5cbi8qIEZpeGVkIEh1ZmZtYW4gKi9cbnZhciBmaXhfbG1hcCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoNTEyKSA6IHplcm9fZmlsbF9hcnJheSg1MTIpO1xudmFyIGZpeF9kbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMikgIDogemVyb19maWxsX2FycmF5KDMyKTtcbmlmKCF1c2VfdHlwZWRfYXJyYXlzKSB7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCA1MTI7ICsraSkgZml4X2xtYXBbaV0gPSAwO1xuXHRmb3IoaSA9IDA7IGkgPCAzMjsgKytpKSBmaXhfZG1hcFtpXSA9IDA7XG59XG4oZnVuY3Rpb24oKSB7XG5cdHZhciBkbGVucy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHR2YXIgaSA9IDA7XG5cdGZvcig7aTwzMjsgaSsrKSBkbGVucy5wdXNoKDUpO1xuXHRidWlsZF90cmVlKGRsZW5zLCBmaXhfZG1hcCwgMzIpO1xuXG5cdHZhciBjbGVucy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHRpID0gMDtcblx0Zm9yKDsgaTw9MTQzOyBpKyspIGNsZW5zLnB1c2goOCk7XG5cdGZvcig7IGk8PTI1NTsgaSsrKSBjbGVucy5wdXNoKDkpO1xuXHRmb3IoOyBpPD0yNzk7IGkrKykgY2xlbnMucHVzaCg3KTtcblx0Zm9yKDsgaTw9Mjg3OyBpKyspIGNsZW5zLnB1c2goOCk7XG5cdGJ1aWxkX3RyZWUoY2xlbnMsIGZpeF9sbWFwLCAyODgpO1xufSkoKTt2YXIgX2RlZmxhdGVSYXcgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uIF9kZWZsYXRlUmF3SUlGRSgpIHtcblx0dmFyIERTVF9MTl9SRSA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSgweDgwMDApIDogW107XG5cdHZhciBqID0gMCwgayA9IDA7XG5cdGZvcig7IGogPCBEU1RfTE4ubGVuZ3RoIC0gMTsgKytqKSB7XG5cdFx0Zm9yKDsgayA8IERTVF9MTltqKzFdOyArK2spIERTVF9MTl9SRVtrXSA9IGo7XG5cdH1cblx0Zm9yKDtrIDwgMzI3Njg7ICsraykgRFNUX0xOX1JFW2tdID0gMjk7XG5cblx0dmFyIExFTl9MTl9SRSA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSgweDEwMykgOiBbXTtcblx0Zm9yKGogPSAwLCBrID0gMDsgaiA8IExFTl9MTi5sZW5ndGggLSAxOyArK2opIHtcblx0XHRmb3IoOyBrIDwgTEVOX0xOW2orMV07ICsraykgTEVOX0xOX1JFW2tdID0gajtcblx0fVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3N0b3JlZChkYXRhLCBvdXQpIHtcblx0XHR2YXIgYm9mZiA9IDA7XG5cdFx0d2hpbGUoYm9mZiA8IGRhdGEubGVuZ3RoKSB7XG5cdFx0XHR2YXIgTCA9IE1hdGgubWluKDB4RkZGRiwgZGF0YS5sZW5ndGggLSBib2ZmKTtcblx0XHRcdHZhciBoID0gYm9mZiArIEwgPT0gZGF0YS5sZW5ndGg7XG5cdFx0XHRvdXQud3JpdGVfc2hpZnQoMSwgK2gpO1xuXHRcdFx0b3V0LndyaXRlX3NoaWZ0KDIsIEwpO1xuXHRcdFx0b3V0LndyaXRlX3NoaWZ0KDIsICh+TCkgJiAweEZGRkYpO1xuXHRcdFx0d2hpbGUoTC0tID4gMCkgb3V0W291dC5sKytdID0gZGF0YVtib2ZmKytdO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0Lmw7XG5cdH1cblxuXHQvKiBGaXhlZCBIdWZmbWFuICovXG5cdGZ1bmN0aW9uIHdyaXRlX2h1ZmZfZml4ZWQoZGF0YSwgb3V0KSB7XG5cdFx0dmFyIGJsID0gMDtcblx0XHR2YXIgYm9mZiA9IDA7XG5cdFx0dmFyIGFkZHJzID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgweDgwMDApIDogW107XG5cdFx0d2hpbGUoYm9mZiA8IGRhdGEubGVuZ3RoKSB7XG5cdFx0XHR2YXIgTCA9IC8qIGRhdGEubGVuZ3RoIC0gYm9mZjsgKi8gTWF0aC5taW4oMHhGRkZGLCBkYXRhLmxlbmd0aCAtIGJvZmYpO1xuXG5cdFx0XHQvKiB3cml0ZSBhIHN0b3JlZCBibG9jayBmb3Igc2hvcnQgZGF0YSAqL1xuXHRcdFx0aWYoTCA8IDEwKSB7XG5cdFx0XHRcdGJsID0gd3JpdGVfYml0c18zKG91dCwgYmwsICshIShib2ZmICsgTCA9PSBkYXRhLmxlbmd0aCkpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblx0XHRcdFx0aWYoYmwgJiA3KSBibCArPSA4IC0gKGJsICYgNyk7XG5cdFx0XHRcdG91dC5sID0gKGJsIC8gOCkgfCAwO1xuXHRcdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgTCk7XG5cdFx0XHRcdG91dC53cml0ZV9zaGlmdCgyLCAofkwpICYgMHhGRkZGKTtcblx0XHRcdFx0d2hpbGUoTC0tID4gMCkgb3V0W291dC5sKytdID0gZGF0YVtib2ZmKytdO1xuXHRcdFx0XHRibCA9IG91dC5sICogODtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGJsID0gd3JpdGVfYml0c18zKG91dCwgYmwsICshIShib2ZmICsgTCA9PSBkYXRhLmxlbmd0aCkgKyAyKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cdFx0XHR2YXIgaGFzaCA9IDA7XG5cdFx0XHR3aGlsZShMLS0gPiAwKSB7XG5cdFx0XHRcdHZhciBkID0gZGF0YVtib2ZmXTtcblx0XHRcdFx0aGFzaCA9ICgoaGFzaCA8PCA1KSBeIGQpICYgMHg3RkZGO1xuXG5cdFx0XHRcdHZhciBtYXRjaCA9IC0xLCBtbGVuID0gMDtcblxuXHRcdFx0XHRpZigobWF0Y2ggPSBhZGRyc1toYXNoXSkpIHtcblx0XHRcdFx0XHRtYXRjaCB8PSBib2ZmICYgfjB4N0ZGRjtcblx0XHRcdFx0XHRpZihtYXRjaCA+IGJvZmYpIG1hdGNoIC09IDB4ODAwMDtcblx0XHRcdFx0XHRpZihtYXRjaCA8IGJvZmYpIHdoaWxlKGRhdGFbbWF0Y2ggKyBtbGVuXSA9PSBkYXRhW2JvZmYgKyBtbGVuXSAmJiBtbGVuIDwgMjUwKSArK21sZW47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZihtbGVuID4gMikge1xuXHRcdFx0XHRcdC8qIENvcHkgVG9rZW4gICovXG5cdFx0XHRcdFx0ZCA9IExFTl9MTl9SRVttbGVuXTtcblx0XHRcdFx0XHRpZihkIDw9IDIyKSBibCA9IHdyaXRlX2JpdHNfOChvdXQsIGJsLCBiaXRzd2FwOFtkKzFdPj4xKSAtIDE7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaXRzXzgob3V0LCBibCwgMyk7XG5cdFx0XHRcdFx0XHRibCArPSA1O1xuXHRcdFx0XHRcdFx0d3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2QtMjNdPj41KTtcblx0XHRcdFx0XHRcdGJsICs9IDM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBsZW5fZWIgPSAoZCA8IDgpID8gMCA6ICgoZCAtIDQpPj4yKTtcblx0XHRcdFx0XHRpZihsZW5fZWIgPiAwKSB7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaXRzXzE2KG91dCwgYmwsIG1sZW4gLSBMRU5fTE5bZF0pO1xuXHRcdFx0XHRcdFx0YmwgKz0gbGVuX2ViO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGQgPSBEU1RfTE5fUkVbYm9mZiAtIG1hdGNoXTtcblx0XHRcdFx0XHRibCA9IHdyaXRlX2JpdHNfOChvdXQsIGJsLCBiaXRzd2FwOFtkXT4+Myk7XG5cdFx0XHRcdFx0YmwgLT0gMztcblxuXHRcdFx0XHRcdHZhciBkc3RfZWIgPSBkIDwgNCA/IDAgOiAoZC0yKT4+MTtcblx0XHRcdFx0XHRpZihkc3RfZWIgPiAwKSB7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaXRzXzE2KG91dCwgYmwsIGJvZmYgLSBtYXRjaCAtIERTVF9MTltkXSk7XG5cdFx0XHRcdFx0XHRibCArPSBkc3RfZWI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvcih2YXIgcSA9IDA7IHEgPCBtbGVuOyArK3EpIHtcblx0XHRcdFx0XHRcdGFkZHJzW2hhc2hdID0gYm9mZiAmIDB4N0ZGRjtcblx0XHRcdFx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgXiBkYXRhW2JvZmZdKSAmIDB4N0ZGRjtcblx0XHRcdFx0XHRcdCsrYm9mZjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0TC09IG1sZW4gLSAxO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8qIExpdGVyYWwgVG9rZW4gKi9cblx0XHRcdFx0XHRpZihkIDw9IDE0MykgZCA9IGQgKyA0ODtcblx0XHRcdFx0XHRlbHNlIGJsID0gd3JpdGVfYml0c18xKG91dCwgYmwsIDEpO1xuXHRcdFx0XHRcdGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2RdKTtcblx0XHRcdFx0XHRhZGRyc1toYXNoXSA9IGJvZmYgJiAweDdGRkY7XG5cdFx0XHRcdFx0Kytib2ZmO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIDApIC0gMTtcblx0XHR9XG5cdFx0b3V0LmwgPSAoKGJsICsgNykvOCl8MDtcblx0XHRyZXR1cm4gb3V0Lmw7XG5cdH1cblx0cmV0dXJuIGZ1bmN0aW9uIF9kZWZsYXRlUmF3KGRhdGEsIG91dCkge1xuXHRcdGlmKGRhdGEubGVuZ3RoIDwgOCkgcmV0dXJuIHdyaXRlX3N0b3JlZChkYXRhLCBvdXQpO1xuXHRcdHJldHVybiB3cml0ZV9odWZmX2ZpeGVkKGRhdGEsIG91dCk7XG5cdH07XG59KSgpO1xuXG5mdW5jdGlvbiBfZGVmbGF0ZShkYXRhKSB7XG5cdHZhciBidWYgPSBuZXdfYnVmKDUwK01hdGguZmxvb3IoZGF0YS5sZW5ndGgqMS4xKSk7XG5cdHZhciBvZmYgPSBfZGVmbGF0ZVJhdyhkYXRhLCBidWYpO1xuXHRyZXR1cm4gYnVmLnNsaWNlKDAsIG9mZik7XG59XG4vKiBtb2RpZmllZCBpbmZsYXRlIGZ1bmN0aW9uIGFsc28gbW92ZXMgb3JpZ2luYWwgcmVhZCBoZWFkICovXG5cbnZhciBkeW5fbG1hcCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMzI3NjgpIDogemVyb19maWxsX2FycmF5KDMyNzY4KTtcbnZhciBkeW5fZG1hcCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMzI3NjgpIDogemVyb19maWxsX2FycmF5KDMyNzY4KTtcbnZhciBkeW5fY21hcCA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoMTI4KSAgIDogemVyb19maWxsX2FycmF5KDEyOCk7XG52YXIgZHluX2xlbl8xID0gMSwgZHluX2xlbl8yID0gMTtcblxuLyogNS41LjMgRXhwYW5kaW5nIEh1ZmZtYW4gQ29kZXMgKi9cbmZ1bmN0aW9uIGR5bihkYXRhLCBib2ZmLyo6bnVtYmVyKi8pIHtcblx0Lyogbm9tZW5jbGF0dXJlIGZyb20gUkZDMTk1MSByZWZlcnMgdG8gYml0IHZhbHVlczsgdGhlc2UgYXJlIG9mZnNldCBieSB0aGUgaW1wbGljaXQgY29uc3RhbnQgKi9cblx0dmFyIF9ITElUID0gcmVhZF9iaXRzXzUoZGF0YSwgYm9mZikgKyAyNTc7IGJvZmYgKz0gNTtcblx0dmFyIF9IRElTVCA9IHJlYWRfYml0c181KGRhdGEsIGJvZmYpICsgMTsgYm9mZiArPSA1O1xuXHR2YXIgX0hDTEVOID0gcmVhZF9iaXRzXzQoZGF0YSwgYm9mZikgKyA0OyBib2ZmICs9IDQ7XG5cdHZhciB3ID0gMDtcblxuXHQvKiBncmFiIGFuZCBzdG9yZSBjb2RlIGxlbmd0aHMgKi9cblx0dmFyIGNsZW5zID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDE5KSA6IHplcm9fZmlsbF9hcnJheSgxOSk7XG5cdHZhciBjdHJlZSA9IFsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCBdO1xuXHR2YXIgbWF4bGVuID0gMTtcblx0dmFyIGJsX2NvdW50ID0gIHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSg4KSA6IHplcm9fZmlsbF9hcnJheSg4KTtcblx0dmFyIG5leHRfY29kZSA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDhBcnJheSg4KSA6IHplcm9fZmlsbF9hcnJheSg4KTtcblx0dmFyIEwgPSBjbGVucy5sZW5ndGg7IC8qIDE5ICovXG5cdGZvcih2YXIgaSA9IDA7IGkgPCBfSENMRU47ICsraSkge1xuXHRcdGNsZW5zW0NMRU5fT1JERVJbaV1dID0gdyA9IHJlYWRfYml0c18zKGRhdGEsIGJvZmYpO1xuXHRcdGlmKG1heGxlbiA8IHcpIG1heGxlbiA9IHc7XG5cdFx0YmxfY291bnRbd10rKztcblx0XHRib2ZmICs9IDM7XG5cdH1cblxuXHQvKiBidWlsZCBjb2RlIHRyZWUgKi9cblx0dmFyIGNjb2RlID0gMDtcblx0YmxfY291bnRbMF0gPSAwO1xuXHRmb3IoaSA9IDE7IGkgPD0gbWF4bGVuOyArK2kpIG5leHRfY29kZVtpXSA9IGNjb2RlID0gKGNjb2RlICsgYmxfY291bnRbaS0xXSk8PDE7XG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkgaWYoKGNjb2RlID0gY2xlbnNbaV0pICE9IDApIGN0cmVlW2ldID0gbmV4dF9jb2RlW2Njb2RlXSsrO1xuXHQvKiBjbWFwWzcgYml0cyBmcm9tIHN0cmVhbV0gPSAob2ZmJjcpICsgKGxpdDw8MykgKi9cblx0dmFyIGNsZW5pID0gMDtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0Y2xlbmkgPSBjbGVuc1tpXTtcblx0XHRpZihjbGVuaSAhPSAwKSB7XG5cdFx0XHRjY29kZSA9IGJpdHN3YXA4W2N0cmVlW2ldXT4+KDgtY2xlbmkpO1xuXHRcdFx0Zm9yKHZhciBqID0gKDE8PCg3LWNsZW5pKSktMTsgaj49MDsgLS1qKSBkeW5fY21hcFtjY29kZXwoajw8Y2xlbmkpXSA9IChjbGVuaSY3KSB8IChpPDwzKTtcblx0XHR9XG5cdH1cblxuXHQvKiByZWFkIGxpdGVyYWwgYW5kIGRpc3QgY29kZXMgYXQgb25jZSAqL1xuXHR2YXIgaGNvZGVzLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdG1heGxlbiA9IDE7XG5cdGZvcig7IGhjb2Rlcy5sZW5ndGggPCBfSExJVCArIF9IRElTVDspIHtcblx0XHRjY29kZSA9IGR5bl9jbWFwW3JlYWRfYml0c183KGRhdGEsIGJvZmYpXTtcblx0XHRib2ZmICs9IGNjb2RlICYgNztcblx0XHRzd2l0Y2goKGNjb2RlID4+Pj0gMykpIHtcblx0XHRcdGNhc2UgMTY6XG5cdFx0XHRcdHcgPSAzICsgcmVhZF9iaXRzXzIoZGF0YSwgYm9mZik7IGJvZmYgKz0gMjtcblx0XHRcdFx0Y2NvZGUgPSBoY29kZXNbaGNvZGVzLmxlbmd0aCAtIDFdO1xuXHRcdFx0XHR3aGlsZSh3LS0gPiAwKSBoY29kZXMucHVzaChjY29kZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxNzpcblx0XHRcdFx0dyA9IDMgKyByZWFkX2JpdHNfMyhkYXRhLCBib2ZmKTsgYm9mZiArPSAzO1xuXHRcdFx0XHR3aGlsZSh3LS0gPiAwKSBoY29kZXMucHVzaCgwKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDE4OlxuXHRcdFx0XHR3ID0gMTEgKyByZWFkX2JpdHNfNyhkYXRhLCBib2ZmKTsgYm9mZiArPSA3O1xuXHRcdFx0XHR3aGlsZSh3IC0tID4gMCkgaGNvZGVzLnB1c2goMCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aGNvZGVzLnB1c2goY2NvZGUpO1xuXHRcdFx0XHRpZihtYXhsZW4gPCBjY29kZSkgbWF4bGVuID0gY2NvZGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8qIGJ1aWxkIGxpdGVyYWwgLyBsZW5ndGggdHJlZXMgKi9cblx0dmFyIGgxID0gaGNvZGVzLnNsaWNlKDAsIF9ITElUKSwgaDIgPSBoY29kZXMuc2xpY2UoX0hMSVQpO1xuXHRmb3IoaSA9IF9ITElUOyBpIDwgMjg2OyArK2kpIGgxW2ldID0gMDtcblx0Zm9yKGkgPSBfSERJU1Q7IGkgPCAzMDsgKytpKSBoMltpXSA9IDA7XG5cdGR5bl9sZW5fMSA9IGJ1aWxkX3RyZWUoaDEsIGR5bl9sbWFwLCAyODYpO1xuXHRkeW5fbGVuXzIgPSBidWlsZF90cmVlKGgyLCBkeW5fZG1hcCwgMzApO1xuXHRyZXR1cm4gYm9mZjtcbn1cblxuLyogcmV0dXJuIFsgZGF0YSwgYnl0ZXNSZWFkIF0gKi9cbmZ1bmN0aW9uIGluZmxhdGUoZGF0YSwgdXN6Lyo6bnVtYmVyKi8pIHtcblx0Lyogc2hvcnRjaXJjdWl0IGZvciBlbXB0eSBidWZmZXIgWzB4MDMsIDB4MDBdICovXG5cdGlmKGRhdGFbMF0gPT0gMyAmJiAhKGRhdGFbMV0gJiAweDMpKSB7IHJldHVybiBbbmV3X3Jhd19idWYodXN6KSwgMl07IH1cblxuXHQvKiBiaXQgb2Zmc2V0ICovXG5cdHZhciBib2ZmID0gMDtcblxuXHQvKiBoZWFkZXIgaW5jbHVkZXMgZmluYWwgYml0IGFuZCB0eXBlIGJpdHMgKi9cblx0dmFyIGhlYWRlciA9IDA7XG5cblx0dmFyIG91dGJ1ZiA9IG5ld191bnNhZmVfYnVmKHVzeiA/IHVzeiA6ICgxPDwxOCkpO1xuXHR2YXIgd29mZiA9IDA7XG5cdHZhciBPTCA9IG91dGJ1Zi5sZW5ndGg+Pj4wO1xuXHR2YXIgbWF4X2xlbl8xID0gMCwgbWF4X2xlbl8yID0gMDtcblxuXHR3aGlsZSgoaGVhZGVyJjEpID09IDApIHtcblx0XHRoZWFkZXIgPSByZWFkX2JpdHNfMyhkYXRhLCBib2ZmKTsgYm9mZiArPSAzO1xuXHRcdGlmKChoZWFkZXIgPj4+IDEpID09IDApIHtcblx0XHRcdC8qIFN0b3JlZCBibG9jayAqL1xuXHRcdFx0aWYoYm9mZiAmIDcpIGJvZmYgKz0gOCAtIChib2ZmJjcpO1xuXHRcdFx0LyogMiBieXRlcyBzeiwgMiBieXRlcyBiaXQgaW52ZXJzZSAqL1xuXHRcdFx0dmFyIHN6ID0gZGF0YVtib2ZmPj4+M10gfCBkYXRhWyhib2ZmPj4+MykrMV08PDg7XG5cdFx0XHRib2ZmICs9IDMyO1xuXHRcdFx0LyogcHVzaCBzeiBieXRlcyAqL1xuXHRcdFx0aWYoc3ogPiAwKSB7XG5cdFx0XHRcdGlmKCF1c3ogJiYgT0wgPCB3b2ZmICsgc3opIHsgb3V0YnVmID0gcmVhbGxvYyhvdXRidWYsIHdvZmYgKyBzeik7IE9MID0gb3V0YnVmLmxlbmd0aDsgfVxuXHRcdFx0XHR3aGlsZShzei0tID4gMCkgeyBvdXRidWZbd29mZisrXSA9IGRhdGFbYm9mZj4+PjNdOyBib2ZmICs9IDg7IH1cblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH0gZWxzZSBpZigoaGVhZGVyID4+IDEpID09IDEpIHtcblx0XHRcdC8qIEZpeGVkIEh1ZmZtYW4gKi9cblx0XHRcdG1heF9sZW5fMSA9IDk7IG1heF9sZW5fMiA9IDU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8qIER5bmFtaWMgSHVmZm1hbiAqL1xuXHRcdFx0Ym9mZiA9IGR5bihkYXRhLCBib2ZmKTtcblx0XHRcdG1heF9sZW5fMSA9IGR5bl9sZW5fMTsgbWF4X2xlbl8yID0gZHluX2xlbl8yO1xuXHRcdH1cblx0XHRmb3IoOzspIHsgLy8gd2hpbGUodHJ1ZSkgaXMgYXBwYXJlbnRseSBvdXQgb2Ygdm9ndWUgaW4gbW9kZXJuIEpTIGNpcmNsZXNcblx0XHRcdGlmKCF1c3ogJiYgKE9MIDwgd29mZiArIDMyNzY3KSkgeyBvdXRidWYgPSByZWFsbG9jKG91dGJ1Ziwgd29mZiArIDMyNzY3KTsgT0wgPSBvdXRidWYubGVuZ3RoOyB9XG5cdFx0XHQvKiBpbmdlc3QgY29kZSBhbmQgbW92ZSByZWFkIGhlYWQgKi9cblx0XHRcdHZhciBiaXRzID0gcmVhZF9iaXRzX24oZGF0YSwgYm9mZiwgbWF4X2xlbl8xKTtcblx0XHRcdHZhciBjb2RlID0gKGhlYWRlcj4+PjEpID09IDEgPyBmaXhfbG1hcFtiaXRzXSA6IGR5bl9sbWFwW2JpdHNdO1xuXHRcdFx0Ym9mZiArPSBjb2RlICYgMTU7IGNvZGUgPj4+PSA0O1xuXHRcdFx0LyogMC0yNTUgYXJlIGxpdGVyYWxzLCAyNTYgaXMgZW5kIG9mIGJsb2NrIHRva2VuLCAyNTcrIGFyZSBjb3B5IHRva2VucyAqL1xuXHRcdFx0aWYoKChjb2RlPj4+OCkmMHhGRikgPT09IDApIG91dGJ1Zlt3b2ZmKytdID0gY29kZTtcblx0XHRcdGVsc2UgaWYoY29kZSA9PSAyNTYpIGJyZWFrO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGNvZGUgLT0gMjU3O1xuXHRcdFx0XHR2YXIgbGVuX2ViID0gKGNvZGUgPCA4KSA/IDAgOiAoKGNvZGUtNCk+PjIpOyBpZihsZW5fZWIgPiA1KSBsZW5fZWIgPSAwO1xuXHRcdFx0XHR2YXIgdGd0ID0gd29mZiArIExFTl9MTltjb2RlXTtcblx0XHRcdFx0LyogbGVuZ3RoIGV4dHJhIGJpdHMgKi9cblx0XHRcdFx0aWYobGVuX2ViID4gMCkge1xuXHRcdFx0XHRcdHRndCArPSByZWFkX2JpdHNfbihkYXRhLCBib2ZmLCBsZW5fZWIpO1xuXHRcdFx0XHRcdGJvZmYgKz0gbGVuX2ViO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LyogZGlzdCBjb2RlICovXG5cdFx0XHRcdGJpdHMgPSByZWFkX2JpdHNfbihkYXRhLCBib2ZmLCBtYXhfbGVuXzIpO1xuXHRcdFx0XHRjb2RlID0gKGhlYWRlcj4+PjEpID09IDEgPyBmaXhfZG1hcFtiaXRzXSA6IGR5bl9kbWFwW2JpdHNdO1xuXHRcdFx0XHRib2ZmICs9IGNvZGUgJiAxNTsgY29kZSA+Pj49IDQ7XG5cdFx0XHRcdHZhciBkc3RfZWIgPSAoY29kZSA8IDQgPyAwIDogKGNvZGUtMik+PjEpO1xuXHRcdFx0XHR2YXIgZHN0ID0gRFNUX0xOW2NvZGVdO1xuXHRcdFx0XHQvKiBkaXN0IGV4dHJhIGJpdHMgKi9cblx0XHRcdFx0aWYoZHN0X2ViID4gMCkge1xuXHRcdFx0XHRcdGRzdCArPSByZWFkX2JpdHNfbihkYXRhLCBib2ZmLCBkc3RfZWIpO1xuXHRcdFx0XHRcdGJvZmYgKz0gZHN0X2ViO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LyogaW4gdGhlIGNvbW1vbiBjYXNlLCBtYW51YWwgYnl0ZSBjb3B5IGlzIGZhc3RlciB0aGFuIFRBIHNldCAvIEJ1ZmZlciBjb3B5ICovXG5cdFx0XHRcdGlmKCF1c3ogJiYgT0wgPCB0Z3QpIHsgb3V0YnVmID0gcmVhbGxvYyhvdXRidWYsIHRndCArIDEwMCk7IE9MID0gb3V0YnVmLmxlbmd0aDsgfVxuXHRcdFx0XHR3aGlsZSh3b2ZmIDwgdGd0KSB7IG91dGJ1Zlt3b2ZmXSA9IG91dGJ1Zlt3b2ZmIC0gZHN0XTsgKyt3b2ZmOyB9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmKHVzeikgcmV0dXJuIFtvdXRidWYsIChib2ZmKzcpPj4+M107XG5cdHJldHVybiBbb3V0YnVmLnNsaWNlKDAsIHdvZmYpLCAoYm9mZis3KT4+PjNdO1xufVxuXG5mdW5jdGlvbiBfaW5mbGF0ZShwYXlsb2FkLCB1c3opIHtcblx0dmFyIGRhdGEgPSBwYXlsb2FkLnNsaWNlKHBheWxvYWQubHx8MCk7XG5cdHZhciBvdXQgPSBpbmZsYXRlKGRhdGEsIHVzeik7XG5cdHBheWxvYWQubCArPSBvdXRbMV07XG5cdHJldHVybiBvdXRbMF07XG59XG5cbmZ1bmN0aW9uIHdhcm5fb3JfdGhyb3cod3JuLCBtc2cpIHtcblx0aWYod3JuKSB7IGlmKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgY29uc29sZS5lcnJvcihtc2cpOyB9XG5cdGVsc2UgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3ppcChmaWxlLyo6UmF3Qnl0ZXMqLywgb3B0aW9ucy8qOkNGQlJlYWRPcHRzKi8pLyo6Q0ZCQ29udGFpbmVyKi8ge1xuXHR2YXIgYmxvYi8qOkNGQmxvYiovID0gLyo6OigqL2ZpbGUvKjo6IDphbnkpKi87XG5cdHByZXBfYmxvYihibG9iLCAwKTtcblxuXHR2YXIgRmlsZUluZGV4Lyo6Q0ZCRmlsZUluZGV4Ki8gPSBbXSwgRnVsbFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBvID0ge1xuXHRcdEZpbGVJbmRleDogRmlsZUluZGV4LFxuXHRcdEZ1bGxQYXRoczogRnVsbFBhdGhzXG5cdH07XG5cdGluaXRfY2ZiKG8sIHsgcm9vdDogb3B0aW9ucy5yb290IH0pO1xuXG5cdC8qIGZpbmQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5LCBzdGFydCBqdXN0IGFmdGVyIHNpZ25hdHVyZSAqL1xuXHR2YXIgaSA9IGJsb2IubGVuZ3RoIC0gNDtcblx0d2hpbGUoKGJsb2JbaV0gIT0gMHg1MCB8fCBibG9iW2krMV0gIT0gMHg0YiB8fCBibG9iW2krMl0gIT0gMHgwNSB8fCBibG9iW2krM10gIT0gMHgwNikgJiYgaSA+PSAwKSAtLWk7XG5cdGJsb2IubCA9IGkgKyA0O1xuXG5cdC8qIHBhcnNlIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRibG9iLmwgKz0gNDtcblx0dmFyIGZjbnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA2O1xuXHR2YXIgc3RhcnRfY2QgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cblx0LyogcGFyc2UgY2VudHJhbCBkaXJlY3RvcnkgKi9cblx0YmxvYi5sID0gc3RhcnRfY2Q7XG5cblx0Zm9yKGkgPSAwOyBpIDwgZmNudDsgKytpKSB7XG5cdFx0LyogdHJ1c3QgbG9jYWwgZmlsZSBoZWFkZXIgaW5zdGVhZCBvZiBDRCBlbnRyeSAqL1xuXHRcdGJsb2IubCArPSAyMDtcblx0XHR2YXIgY3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciB1c3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIG5hbWVsZW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0dmFyIGVmc3ogPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0dmFyIGZjc3ogPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0YmxvYi5sICs9IDg7XG5cdFx0dmFyIG9mZnNldCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgRUYgPSBwYXJzZV9leHRyYV9maWVsZCgvKjo6KCovYmxvYi5zbGljZShibG9iLmwrbmFtZWxlbiwgYmxvYi5sK25hbWVsZW4rZWZzeikvKjo6IDphbnkpKi8pO1xuXHRcdGJsb2IubCArPSBuYW1lbGVuICsgZWZzeiArIGZjc3o7XG5cblx0XHR2YXIgTCA9IGJsb2IubDtcblx0XHRibG9iLmwgPSBvZmZzZXQgKyA0O1xuXHRcdHBhcnNlX2xvY2FsX2ZpbGUoYmxvYiwgY3N6LCB1c3osIG8sIEVGKTtcblx0XHRibG9iLmwgPSBMO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG5cbi8qIGhlYWQgc3RhcnRzIGp1c3QgYWZ0ZXIgbG9jYWwgZmlsZSBoZWFkZXIgc2lnbmF0dXJlICovXG5mdW5jdGlvbiBwYXJzZV9sb2NhbF9maWxlKGJsb2IvKjpDRkJsb2IqLywgY3N6Lyo6bnVtYmVyKi8sIHVzei8qOm51bWJlciovLCBvLyo6Q0ZCQ29udGFpbmVyKi8sIEVGKSB7XG5cdC8qIFtsb2NhbCBmaWxlIGhlYWRlcl0gKi9cblx0YmxvYi5sICs9IDI7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIG1ldGggPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBkYXRlID0gcGFyc2VfZG9zX2RhdGUoYmxvYik7XG5cblx0aWYoZmxhZ3MgJiAweDIwNDEpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFpJUCBlbmNyeXB0aW9uXCIpO1xuXHR2YXIgY3JjMzIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBfY3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgX3VzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblxuXHR2YXIgbmFtZWxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGVmc3ogPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cblx0Ly8gVE9ETzogZmxhZ3MgJiAoMTw8MTEpIC8vIFVURjhcblx0dmFyIG5hbWUgPSBcIlwiOyBmb3IodmFyIGkgPSAwOyBpIDwgbmFtZWxlbjsgKytpKSBuYW1lICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYmxvYltibG9iLmwrK10pO1xuXHRpZihlZnN6KSB7XG5cdFx0dmFyIGVmID0gcGFyc2VfZXh0cmFfZmllbGQoLyo6OigqL2Jsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwgKyBlZnN6KS8qOjogOmFueSkqLyk7XG5cdFx0aWYoKGVmWzB4NTQ1NV18fHt9KS5tdCkgZGF0ZSA9IGVmWzB4NTQ1NV0ubXQ7XG5cdFx0aWYoKChFRnx8e30pWzB4NTQ1NV18fHt9KS5tdCkgZGF0ZSA9IEVGWzB4NTQ1NV0ubXQ7XG5cdH1cblx0YmxvYi5sICs9IGVmc3o7XG5cblx0LyogW2VuY3J5cHRpb24gaGVhZGVyXSAqL1xuXG5cdC8qIFtmaWxlIGRhdGFdICovXG5cdHZhciBkYXRhID0gYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCArIF9jc3opO1xuXHRzd2l0Y2gobWV0aCkge1xuXHRcdGNhc2UgODogZGF0YSA9IF9pbmZsYXRlUmF3U3luYyhibG9iLCBfdXN6KTsgYnJlYWs7XG5cdFx0Y2FzZSAwOiBicmVhazsgLy8gVE9ETzogc2NhbiBmb3IgbWFnaWMgbnVtYmVyXG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCBcIiArIG1ldGgpO1xuXHR9XG5cblx0LyogW2RhdGEgZGVzY3JpcHRvcl0gKi9cblx0dmFyIHdybiA9IGZhbHNlO1xuXHRpZihmbGFncyAmIDgpIHtcblx0XHRjcmMzMiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRpZihjcmMzMiA9PSAweDA4MDc0YjUwKSB7IGNyYzMyID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyB3cm4gPSB0cnVlOyB9XG5cdFx0X2NzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRfdXN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR9XG5cblx0aWYoX2NzeiAhPSBjc3opIHdhcm5fb3JfdGhyb3cod3JuLCBcIkJhZCBjb21wcmVzc2VkIHNpemU6IFwiICsgY3N6ICsgXCIgIT0gXCIgKyBfY3N6KTtcblx0aWYoX3VzeiAhPSB1c3opIHdhcm5fb3JfdGhyb3cod3JuLCBcIkJhZCB1bmNvbXByZXNzZWQgc2l6ZTogXCIgKyB1c3ogKyBcIiAhPSBcIiArIF91c3opO1xuXHQvL3ZhciBfY3JjMzIgPSBDUkMzMi5idWYoZGF0YSwgMCk7XG5cdC8vaWYoKGNyYzMyPj4wKSAhPSAoX2NyYzMyPj4wKSkgd2Fybl9vcl90aHJvdyh3cm4sIFwiQmFkIENSQzMyIGNoZWNrc3VtOiBcIiArIGNyYzMyICsgXCIgIT0gXCIgKyBfY3JjMzIpO1xuXHRjZmJfYWRkKG8sIG5hbWUsIGRhdGEsIHt1bnNhZmU6IHRydWUsIG10OiBkYXRlfSk7XG59XG5mdW5jdGlvbiB3cml0ZV96aXAoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjpSYXdCeXRlcyovIHtcblx0dmFyIF9vcHRzID0gb3B0aW9ucyB8fCB7fTtcblx0dmFyIG91dCA9IFtdLCBjZGlycyA9IFtdO1xuXHR2YXIgby8qOkNGQmxvYiovID0gbmV3X2J1ZigxKTtcblx0dmFyIG1ldGhvZCA9IChfb3B0cy5jb21wcmVzc2lvbiA/IDggOiAwKSwgZmxhZ3MgPSAwO1xuXHR2YXIgZGVzYyA9IGZhbHNlO1xuXHRpZihkZXNjKSBmbGFncyB8PSA4O1xuXHR2YXIgaSA9IDAsIGogPSAwO1xuXG5cdHZhciBzdGFydF9jZCA9IDAsIGZjbnQgPSAwO1xuXHR2YXIgcm9vdCA9IGNmYi5GdWxsUGF0aHNbMF0sIGZwID0gcm9vdCwgZmkgPSBjZmIuRmlsZUluZGV4WzBdO1xuXHR2YXIgY3JjcyA9IFtdO1xuXHR2YXIgc3pfY2QgPSAwO1xuXG5cdGZvcihpID0gMTsgaSA8IGNmYi5GdWxsUGF0aHMubGVuZ3RoOyArK2kpIHtcblx0XHRmcCA9IGNmYi5GdWxsUGF0aHNbaV0uc2xpY2Uocm9vdC5sZW5ndGgpOyBmaSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0aWYoIWZpLnNpemUgfHwgIWZpLmNvbnRlbnQgfHwgZnAgPT0gXCJcXHUwMDAxU2gzM3RKNVwiKSBjb250aW51ZTtcblx0XHR2YXIgc3RhcnQgPSBzdGFydF9jZDtcblxuXHRcdC8qIFRPRE86IENQNDM3IGZpbGVuYW1lICovXG5cdFx0dmFyIG5hbWVidWYgPSBuZXdfYnVmKGZwLmxlbmd0aCk7XG5cdFx0Zm9yKGogPSAwOyBqIDwgZnAubGVuZ3RoOyArK2opIG5hbWVidWYud3JpdGVfc2hpZnQoMSwgZnAuY2hhckNvZGVBdChqKSAmIDB4N0YpO1xuXHRcdG5hbWVidWYgPSBuYW1lYnVmLnNsaWNlKDAsIG5hbWVidWYubCk7XG5cdFx0Y3Jjc1tmY250XSA9IENSQzMyLmJ1ZigvKjo6KCgqL2ZpLmNvbnRlbnQvKjo6fHxbXSk6YW55KSovLCAwKTtcblxuXHRcdHZhciBvdXRidWYgPSBmaS5jb250ZW50Lyo6Onx8W10qLztcblx0XHRpZihtZXRob2QgPT0gOCkgb3V0YnVmID0gX2RlZmxhdGVSYXdTeW5jKG91dGJ1Zik7XG5cblx0XHQvKiBsb2NhbCBmaWxlIGhlYWRlciAqL1xuXHRcdG8gPSBuZXdfYnVmKDMwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDB4MDQwMzRiNTApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMjApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgZmxhZ3MpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbWV0aG9kKTtcblx0XHQvKiBUT0RPOiBsYXN0IG1vZCBmaWxlIHRpbWUvZGF0ZSAqL1xuXHRcdGlmKGZpLm10KSB3cml0ZV9kb3NfZGF0ZShvLCBmaS5tdCk7XG5cdFx0ZWxzZSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIChmbGFncyAmIDgpID8gMCA6IGNyY3NbZmNudF0pO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgIChmbGFncyAmIDgpID8gMCA6IG91dGJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgIChmbGFncyAmIDgpID8gMCA6IC8qOjooKi9maS5jb250ZW50Lyo6Onx8W10pKi8ubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIG5hbWVidWYubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXG5cdFx0c3RhcnRfY2QgKz0gby5sZW5ndGg7XG5cdFx0b3V0LnB1c2gobyk7XG5cdFx0c3RhcnRfY2QgKz0gbmFtZWJ1Zi5sZW5ndGg7XG5cdFx0b3V0LnB1c2gobmFtZWJ1Zik7XG5cblx0XHQvKiBUT0RPOiBleHRyYSBmaWVsZHM/ICovXG5cblx0XHQvKiBUT0RPOiBlbmNyeXB0aW9uIGhlYWRlciA/ICovXG5cblx0XHRzdGFydF9jZCArPSBvdXRidWYubGVuZ3RoO1xuXHRcdG91dC5wdXNoKG91dGJ1Zik7XG5cblx0XHQvKiBkYXRhIGRlc2NyaXB0b3IgKi9cblx0XHRpZihmbGFncyAmIDgpIHtcblx0XHRcdG8gPSBuZXdfYnVmKDEyKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoLTQsIGNyY3NbZmNudF0pO1xuXHRcdFx0by53cml0ZV9zaGlmdCg0LCBvdXRidWYubGVuZ3RoKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoNCwgLyo6OigqL2ZpLmNvbnRlbnQvKjo6fHxbXSkqLy5sZW5ndGgpO1xuXHRcdFx0c3RhcnRfY2QgKz0gby5sO1xuXHRcdFx0b3V0LnB1c2gobyk7XG5cdFx0fVxuXG5cdFx0LyogY2VudHJhbCBkaXJlY3RvcnkgKi9cblx0XHRvID0gbmV3X2J1Zig0Nik7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAweDAyMDE0YjUwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMjApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgZmxhZ3MpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbWV0aG9kKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBUT0RPOiBsYXN0IG1vZCBmaWxlIHRpbWUvZGF0ZSAqL1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIGNyY3NbZmNudF0pO1xuXG5cdFx0by53cml0ZV9zaGlmdCg0LCBvdXRidWYubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIC8qOjooKi9maS5jb250ZW50Lyo6Onx8W10pKi8ubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIG5hbWVidWYubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBzdGFydCk7XG5cblx0XHRzel9jZCArPSBvLmw7XG5cdFx0Y2RpcnMucHVzaChvKTtcblx0XHRzel9jZCArPSBuYW1lYnVmLmxlbmd0aDtcblx0XHRjZGlycy5wdXNoKG5hbWVidWYpO1xuXHRcdCsrZmNudDtcblx0fVxuXG5cdC8qIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRvID0gbmV3X2J1ZigyMik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMHgwNjA1NGI1MCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZmNudCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZmNudCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3pfY2QpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHN0YXJ0X2NkKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblxuXHRyZXR1cm4gYmNvbmNhdCgoW2Jjb25jYXQoKG91dC8qOmFueSovKSksIGJjb25jYXQoY2RpcnMpLCBvXS8qOmFueSovKSk7XG59XG52YXIgQ29udGVudFR5cGVNYXAgPSAoe1xuXHRcImh0bVwiOiBcInRleHQvaHRtbFwiLFxuXHRcInhtbFwiOiBcInRleHQveG1sXCIsXG5cblx0XCJnaWZcIjogXCJpbWFnZS9naWZcIixcblx0XCJqcGdcIjogXCJpbWFnZS9qcGVnXCIsXG5cdFwicG5nXCI6IFwiaW1hZ2UvcG5nXCIsXG5cblx0XCJtc29cIjogXCJhcHBsaWNhdGlvbi94LW1zb1wiLFxuXHRcInRobXhcIjogXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWVcIixcblx0XCJzaDMzdGo1XCI6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbn0vKjphbnkqLyk7XG5cbmZ1bmN0aW9uIGdldF9jb250ZW50X3R5cGUoZmkvKjpDRkJFbnRyeSovLCBmcC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYoZmkuY3R5cGUpIHJldHVybiBmaS5jdHlwZTtcblxuXHR2YXIgZXh0ID0gZmkubmFtZSB8fCBcIlwiLCBtID0gZXh0Lm1hdGNoKC9cXC4oW15cXC5dKykkLyk7XG5cdGlmKG0gJiYgQ29udGVudFR5cGVNYXBbbVsxXV0pIHJldHVybiBDb250ZW50VHlwZU1hcFttWzFdXTtcblxuXHRpZihmcCkge1xuXHRcdG0gPSAoZXh0ID0gZnApLm1hdGNoKC9bXFwuXFxcXF0oW15cXC5cXFxcXSkrJC8pO1xuXHRcdGlmKG0gJiYgQ29udGVudFR5cGVNYXBbbVsxXV0pIHJldHVybiBDb250ZW50VHlwZU1hcFttWzFdXTtcblx0fVxuXG5cdHJldHVybiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xufVxuXG4vKiA3NiBjaGFyYWN0ZXIgY2h1bmtzIFRPRE86IGludGVydHdpbmUgZW5jb2RpbmcgKi9cbmZ1bmN0aW9uIHdyaXRlX2Jhc2U2NF83Nihic3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgZGF0YSA9IEJhc2U2NF9lbmNvZGUoYnN0cik7XG5cdHZhciBvID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSs9IDc2KSBvLnB1c2goZGF0YS5zbGljZShpLCBpKzc2KSk7XG5cdHJldHVybiBvLmpvaW4oXCJcXHJcXG5cIikgKyBcIlxcclxcblwiO1xufVxuXG4vKlxuUnVsZXMgZm9yIFFQOlxuXHQtIGVzY2FwZSA9IyMgYXBwbGllcyBmb3IgYWxsIG5vbi1kaXNwbGF5IGNoYXJhY3RlcnMgYW5kIGxpdGVyYWwgXCI9XCJcblx0LSBzcGFjZSBvciB0YWIgYXQgZW5kIG9mIGxpbmUgbXVzdCBiZSBlbmNvZGVkXG5cdC0gXFxyXFxuIG5ld2xpbmVzIGNhbiBiZSBwcmVzZXJ2ZWQsIGJ1dCBiYXJlIFxcciBhbmQgXFxuIG11c3QgYmUgZXNjYXBlZFxuXHQtIGxpbmVzIG11c3Qgbm90IGV4Y2VlZCA3NiBjaGFyYWN0ZXJzLCB1c2Ugc29mdCBicmVha3MgPVxcclxcblxuXG5UT0RPOiBTb21lIGZpbGVzIGZyb20gd29yZCBhcHBlYXIgdG8gd3JpdGUgbGluZSBleHRlbnNpb25zIHdpdGggYmFyZSBlcXVhbHM6XG5cbmBgYFxuPHRhYmxlIGNsYXNzPTNETXNvVGFibGVHcmlkIGJvcmRlcj0zRDEgY2VsbHNwYWNpbmc9M0QwIGNlbGxwYWRkaW5nPTNEMCB3aWR0aD1cbj1cIjcwJVwiXG5gYGBcbiovXG5mdW5jdGlvbiB3cml0ZV9xdW90ZWRfcHJpbnRhYmxlKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBlbmNvZGVkID0gdGV4dC5yZXBsYWNlKC9bXFx4MDAtXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUZcXHg3RS1cXHhGRj1dL2csIGZ1bmN0aW9uKGMpIHtcblx0XHR2YXIgdyA9IGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0XHRyZXR1cm4gXCI9XCIgKyAody5sZW5ndGggPT0gMSA/IFwiMFwiICsgdyA6IHcpO1xuXHR9KTtcblxuXHRlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKC8gJC9tZywgXCI9MjBcIikucmVwbGFjZSgvXFx0JC9tZywgXCI9MDlcIik7XG5cblx0aWYoZW5jb2RlZC5jaGFyQXQoMCkgPT0gXCJcXG5cIikgZW5jb2RlZCA9IFwiPTBEXCIgKyBlbmNvZGVkLnNsaWNlKDEpO1xuXHRlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKC9cXHIoPyFcXG4pL21nLCBcIj0wRFwiKS5yZXBsYWNlKC9cXG5cXG4vbWcsIFwiXFxuPTBBXCIpLnJlcGxhY2UoLyhbXlxcclxcbl0pXFxuL21nLCBcIiQxPTBBXCIpO1xuXG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHNwbGl0ID0gZW5jb2RlZC5zcGxpdChcIlxcclxcblwiKTtcblx0Zm9yKHZhciBzaSA9IDA7IHNpIDwgc3BsaXQubGVuZ3RoOyArK3NpKSB7XG5cdFx0dmFyIHN0ciA9IHNwbGl0W3NpXTtcblx0XHRpZihzdHIubGVuZ3RoID09IDApIHsgby5wdXNoKFwiXCIpOyBjb250aW51ZTsgfVxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOykge1xuXHRcdFx0dmFyIGVuZCA9IDc2O1xuXHRcdFx0dmFyIHRtcCA9IHN0ci5zbGljZShpLCBpICsgZW5kKTtcblx0XHRcdGlmKHRtcC5jaGFyQXQoZW5kIC0gMSkgPT0gXCI9XCIpIGVuZCAtLTtcblx0XHRcdGVsc2UgaWYodG1wLmNoYXJBdChlbmQgLSAyKSA9PSBcIj1cIikgZW5kIC09IDI7XG5cdFx0XHRlbHNlIGlmKHRtcC5jaGFyQXQoZW5kIC0gMykgPT0gXCI9XCIpIGVuZCAtPSAzO1xuXHRcdFx0dG1wID0gc3RyLnNsaWNlKGksIGkgKyBlbmQpO1xuXHRcdFx0aSArPSBlbmQ7XG5cdFx0XHRpZihpIDwgc3RyLmxlbmd0aCkgdG1wICs9IFwiPVwiO1xuXHRcdFx0by5wdXNoKHRtcCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG8uam9pbihcIlxcclxcblwiKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX3F1b3RlZF9wcmludGFibGUoZGF0YS8qOkFycmF5PHN0cmluZz4qLykvKjpSYXdCeXRlcyovIHtcblx0dmFyIG8gPSBbXTtcblxuXHQvKiB1bmlmeSBsb25nIGxpbmVzICovXG5cdGZvcih2YXIgZGkgPSAwOyBkaSA8IGRhdGEubGVuZ3RoOyArK2RpKSB7XG5cdFx0dmFyIGxpbmUgPSBkYXRhW2RpXTtcblx0XHR3aGlsZShkaSA8PSBkYXRhLmxlbmd0aCAmJiBsaW5lLmNoYXJBdChsaW5lLmxlbmd0aCAtIDEpID09IFwiPVwiKSBsaW5lID0gbGluZS5zbGljZSgwLCBsaW5lLmxlbmd0aCAtIDEpICsgZGF0YVsrK2RpXTtcblx0XHRvLnB1c2gobGluZSk7XG5cdH1cblxuXHQvKiBkZWNvZGUgKi9cblx0Zm9yKHZhciBvaSA9IDA7IG9pIDwgby5sZW5ndGg7ICsrb2kpIG9bb2ldID0gb1tvaV0ucmVwbGFjZSgvWz1dWzAtOUEtRmEtZl17Mn0vZywgZnVuY3Rpb24oJCQpIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJCQuc2xpY2UoMSksIDE2KSk7IH0pO1xuXHRyZXR1cm4gczJhKG8uam9pbihcIlxcclxcblwiKSk7XG59XG5cblxuZnVuY3Rpb24gcGFyc2VfbWltZShjZmIvKjpDRkJDb250YWluZXIqLywgZGF0YS8qOkFycmF5PHN0cmluZz4qLywgcm9vdC8qOnN0cmluZyovKS8qOnZvaWQqLyB7XG5cdHZhciBmbmFtZSA9IFwiXCIsIGN0ZSA9IFwiXCIsIGN0eXBlID0gXCJcIiwgZmRhdGE7XG5cdHZhciBkaSA9IDA7XG5cdGZvcig7ZGkgPCAxMDsgKytkaSkge1xuXHRcdHZhciBsaW5lID0gZGF0YVtkaV07XG5cdFx0aWYoIWxpbmUgfHwgbGluZS5tYXRjaCgvXlxccyokLykpIGJyZWFrO1xuXHRcdHZhciBtID0gbGluZS5tYXRjaCgvXiguKj8pOlxccyooW15cXHNdLiopJC8pO1xuXHRcdGlmKG0pIHN3aXRjaChtWzFdLnRvTG93ZXJDYXNlKCkpIHtcblx0XHRcdGNhc2UgXCJjb250ZW50LWxvY2F0aW9uXCI6IGZuYW1lID0gbVsyXS50cmltKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImNvbnRlbnQtdHlwZVwiOiBjdHlwZSA9IG1bMl0udHJpbSgpOyBicmVhaztcblx0XHRcdGNhc2UgXCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nXCI6IGN0ZSA9IG1bMl0udHJpbSgpOyBicmVhaztcblx0XHR9XG5cdH1cblx0KytkaTtcblx0c3dpdGNoKGN0ZS50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0Y2FzZSAnYmFzZTY0JzogZmRhdGEgPSBzMmEoQmFzZTY0X2RlY29kZShkYXRhLnNsaWNlKGRpKS5qb2luKFwiXCIpKSk7IGJyZWFrO1xuXHRcdGNhc2UgJ3F1b3RlZC1wcmludGFibGUnOiBmZGF0YSA9IHBhcnNlX3F1b3RlZF9wcmludGFibGUoZGF0YS5zbGljZShkaSkpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIFwiICsgY3RlKTtcblx0fVxuXHR2YXIgZmlsZSA9IGNmYl9hZGQoY2ZiLCBmbmFtZS5zbGljZShyb290Lmxlbmd0aCksIGZkYXRhLCB7dW5zYWZlOiB0cnVlfSk7XG5cdGlmKGN0eXBlKSBmaWxlLmN0eXBlID0gY3R5cGU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX21hZChmaWxlLyo6UmF3Qnl0ZXMqLywgb3B0aW9ucy8qOkNGQlJlYWRPcHRzKi8pLyo6Q0ZCQ29udGFpbmVyKi8ge1xuXHRpZihhMnMoZmlsZS5zbGljZSgwLDEzKSkudG9Mb3dlckNhc2UoKSAhPSBcIm1pbWUtdmVyc2lvbjpcIikgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgTUFEIGhlYWRlclwiKTtcblx0dmFyIHJvb3QgPSAob3B0aW9ucyAmJiBvcHRpb25zLnJvb3QgfHwgXCJcIik7XG5cdC8vICRGbG93SWdub3JlXG5cdHZhciBkYXRhID0gKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGZpbGUpID8gZmlsZS50b1N0cmluZyhcImJpbmFyeVwiKSA6IGEycyhmaWxlKSkuc3BsaXQoXCJcXHJcXG5cIik7XG5cdHZhciBkaSA9IDAsIHJvdyA9IFwiXCI7XG5cblx0LyogaWYgcm9vdCBpcyBub3Qgc3BlY2lmaWVkLCBzY2FuIGZvciB0aGUgY29tbW9uIHByZWZpeCAqL1xuXHRmb3IoZGkgPSAwOyBkaSA8IGRhdGEubGVuZ3RoOyArK2RpKSB7XG5cdFx0cm93ID0gZGF0YVtkaV07XG5cdFx0aWYoIS9eQ29udGVudC1Mb2NhdGlvbjovaS50ZXN0KHJvdykpIGNvbnRpbnVlO1xuXHRcdHJvdyA9IHJvdy5zbGljZShyb3cuaW5kZXhPZihcImZpbGVcIikpO1xuXHRcdGlmKCFyb290KSByb290ID0gcm93LnNsaWNlKDAsIHJvdy5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHRpZihyb3cuc2xpY2UoMCwgcm9vdC5sZW5ndGgpID09IHJvb3QpIGNvbnRpbnVlO1xuXHRcdHdoaWxlKHJvb3QubGVuZ3RoID4gMCkge1xuXHRcdFx0cm9vdCA9IHJvb3Quc2xpY2UoMCwgcm9vdC5sZW5ndGggLSAxKTtcblx0XHRcdHJvb3QgPSByb290LnNsaWNlKDAsIHJvb3QubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0XHRpZihyb3cuc2xpY2UoMCxyb290Lmxlbmd0aCkgPT0gcm9vdCkgYnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0dmFyIG1ib3VuZGFyeSA9IChkYXRhWzFdIHx8IFwiXCIpLm1hdGNoKC9ib3VuZGFyeT1cIiguKj8pXCIvKTtcblx0aWYoIW1ib3VuZGFyeSkgdGhyb3cgbmV3IEVycm9yKFwiTUFEIGNhbm5vdCBmaW5kIGJvdW5kYXJ5XCIpO1xuXHR2YXIgYm91bmRhcnkgPSBcIi0tXCIgKyAobWJvdW5kYXJ5WzFdIHx8IFwiXCIpO1xuXG5cdHZhciBGaWxlSW5kZXgvKjpDRkJGaWxlSW5kZXgqLyA9IFtdLCBGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG8gPSB7XG5cdFx0RmlsZUluZGV4OiBGaWxlSW5kZXgsXG5cdFx0RnVsbFBhdGhzOiBGdWxsUGF0aHNcblx0fTtcblx0aW5pdF9jZmIobyk7XG5cdHZhciBzdGFydF9kaSwgZmNudCA9IDA7XG5cdGZvcihkaSA9IDA7IGRpIDwgZGF0YS5sZW5ndGg7ICsrZGkpIHtcblx0XHR2YXIgbGluZSA9IGRhdGFbZGldO1xuXHRcdGlmKGxpbmUgIT09IGJvdW5kYXJ5ICYmIGxpbmUgIT09IGJvdW5kYXJ5ICsgXCItLVwiKSBjb250aW51ZTtcblx0XHRpZihmY250KyspIHBhcnNlX21pbWUobywgZGF0YS5zbGljZShzdGFydF9kaSwgZGkpLCByb290KTtcblx0XHRzdGFydF9kaSA9IGRpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9tYWQoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fTtcblx0dmFyIGJvdW5kYXJ5ID0gb3B0cy5ib3VuZGFyeSB8fCBcIlNoZWV0SlNcIjtcblx0Ym91bmRhcnkgPSAnLS0tLS0tPScgKyBib3VuZGFyeTtcblxuXHR2YXIgb3V0ID0gW1xuXHRcdCdNSU1FLVZlcnNpb246IDEuMCcsXG5cdFx0J0NvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L3JlbGF0ZWQ7IGJvdW5kYXJ5PVwiJyArIGJvdW5kYXJ5LnNsaWNlKDIpICsgJ1wiJyxcblx0XHQnJyxcblx0XHQnJyxcblx0XHQnJ1xuXHRdO1xuXG5cdHZhciByb290ID0gY2ZiLkZ1bGxQYXRoc1swXSwgZnAgPSByb290LCBmaSA9IGNmYi5GaWxlSW5kZXhbMF07XG5cdGZvcih2YXIgaSA9IDE7IGkgPCBjZmIuRnVsbFBhdGhzLmxlbmd0aDsgKytpKSB7XG5cdFx0ZnAgPSBjZmIuRnVsbFBhdGhzW2ldLnNsaWNlKHJvb3QubGVuZ3RoKTtcblx0XHRmaSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0aWYoIWZpLnNpemUgfHwgIWZpLmNvbnRlbnQgfHwgZnAgPT0gXCJcXHUwMDAxU2gzM3RKNVwiKSBjb250aW51ZTtcblxuXHRcdC8qIE5vcm1hbGl6ZSBmaWxlbmFtZSAqL1xuXHRcdGZwID0gZnAucmVwbGFjZSgvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0UtXFx4RkZdL2csIGZ1bmN0aW9uKGMpIHtcblx0XHRcdHJldHVybiBcIl94XCIgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpICsgXCJfXCI7XG5cdFx0fSkucmVwbGFjZSgvW1xcdTAwODAtXFx1RkZGRl0vZywgZnVuY3Rpb24odSkge1xuXHRcdFx0cmV0dXJuIFwiX3VcIiArIHUuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikgKyBcIl9cIjtcblx0XHR9KTtcblxuXHRcdC8qIEV4dHJhY3QgY29udGVudCBhcyBiaW5hcnkgc3RyaW5nICovXG5cdFx0dmFyIGNhID0gZmkuY29udGVudDtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdHZhciBjc3RyID0gaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoY2EpID8gY2EudG9TdHJpbmcoXCJiaW5hcnlcIikgOiBhMnMoY2EpO1xuXG5cdFx0LyogNC81IG9mIGZpcnN0IDEwMjQgY2hhcnMgYXNjaWkgLT4gcXVvdGVkIHByaW50YWJsZSwgZWxzZSBiYXNlNjQgKi9cblx0XHR2YXIgZGlzcGNudCA9IDAsIEwgPSBNYXRoLm1pbigxMDI0LCBjc3RyLmxlbmd0aCksIGNjID0gMDtcblx0XHRmb3IodmFyIGNzbCA9IDA7IGNzbCA8PSBMOyArK2NzbCkgaWYoKGNjPWNzdHIuY2hhckNvZGVBdChjc2wpKSA+PSAweDIwICYmIGNjIDwgMHg4MCkgKytkaXNwY250O1xuXHRcdHZhciBxcCA9IGRpc3BjbnQgPj0gTCAqIDQgLyA1O1xuXG5cdFx0b3V0LnB1c2goYm91bmRhcnkpO1xuXHRcdG91dC5wdXNoKCdDb250ZW50LUxvY2F0aW9uOiAnICsgKG9wdHMucm9vdCB8fCAnZmlsZTovLy9DOi9TaGVldEpTLycpICsgZnApO1xuXHRcdG91dC5wdXNoKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnICsgKHFwID8gJ3F1b3RlZC1wcmludGFibGUnIDogJ2Jhc2U2NCcpKTtcblx0XHRvdXQucHVzaCgnQ29udGVudC1UeXBlOiAnICsgZ2V0X2NvbnRlbnRfdHlwZShmaSwgZnApKTtcblx0XHRvdXQucHVzaCgnJyk7XG5cblx0XHRvdXQucHVzaChxcCA/IHdyaXRlX3F1b3RlZF9wcmludGFibGUoY3N0cikgOiB3cml0ZV9iYXNlNjRfNzYoY3N0cikpO1xuXHR9XG5cdG91dC5wdXNoKGJvdW5kYXJ5ICsgJy0tXFxyXFxuJyk7XG5cdHJldHVybiBvdXQuam9pbihcIlxcclxcblwiKTtcbn1cbmZ1bmN0aW9uIGNmYl9uZXcob3B0cy8qOj9hbnkqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdHZhciBvLyo6Q0ZCQ29udGFpbmVyKi8gPSAoe30vKjphbnkqLyk7XG5cdGluaXRfY2ZiKG8sIG9wdHMpO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gY2ZiX2FkZChjZmIvKjpDRkJDb250YWluZXIqLywgbmFtZS8qOnN0cmluZyovLCBjb250ZW50Lyo6P1Jhd0J5dGVzKi8sIG9wdHMvKjo/YW55Ki8pLyo6Q0ZCRW50cnkqLyB7XG5cdHZhciB1bnNhZmUgPSBvcHRzICYmIG9wdHMudW5zYWZlO1xuXHRpZighdW5zYWZlKSBpbml0X2NmYihjZmIpO1xuXHR2YXIgZmlsZSA9ICF1bnNhZmUgJiYgQ0ZCLmZpbmQoY2ZiLCBuYW1lKTtcblx0aWYoIWZpbGUpIHtcblx0XHR2YXIgZnBhdGgvKjpzdHJpbmcqLyA9IGNmYi5GdWxsUGF0aHNbMF07XG5cdFx0aWYobmFtZS5zbGljZSgwLCBmcGF0aC5sZW5ndGgpID09IGZwYXRoKSBmcGF0aCA9IG5hbWU7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZihmcGF0aC5zbGljZSgtMSkgIT0gXCIvXCIpIGZwYXRoICs9IFwiL1wiO1xuXHRcdFx0ZnBhdGggPSAoZnBhdGggKyBuYW1lKS5yZXBsYWNlKFwiLy9cIixcIi9cIik7XG5cdFx0fVxuXHRcdGZpbGUgPSAoe25hbWU6IGZpbGVuYW1lKG5hbWUpLCB0eXBlOiAyfS8qOmFueSovKTtcblx0XHRjZmIuRmlsZUluZGV4LnB1c2goZmlsZSk7XG5cdFx0Y2ZiLkZ1bGxQYXRocy5wdXNoKGZwYXRoKTtcblx0XHRpZighdW5zYWZlKSBDRkIudXRpbHMuY2ZiX2djKGNmYik7XG5cdH1cblx0Lyo6OiBpZighZmlsZSkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdGZpbGUuY29udGVudCA9IChjb250ZW50Lyo6YW55Ki8pO1xuXHRmaWxlLnNpemUgPSBjb250ZW50ID8gY29udGVudC5sZW5ndGggOiAwO1xuXHRpZihvcHRzKSB7XG5cdFx0aWYob3B0cy5DTFNJRCkgZmlsZS5jbHNpZCA9IG9wdHMuQ0xTSUQ7XG5cdFx0aWYob3B0cy5tdCkgZmlsZS5tdCA9IG9wdHMubXQ7XG5cdFx0aWYob3B0cy5jdCkgZmlsZS5jdCA9IG9wdHMuY3Q7XG5cdH1cblx0cmV0dXJuIGZpbGU7XG59XG5cbmZ1bmN0aW9uIGNmYl9kZWwoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG5hbWUvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHRpbml0X2NmYihjZmIpO1xuXHR2YXIgZmlsZSA9IENGQi5maW5kKGNmYiwgbmFtZSk7XG5cdGlmKGZpbGUpIGZvcih2YXIgaiA9IDA7IGogPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytqKSBpZihjZmIuRmlsZUluZGV4W2pdID09IGZpbGUpIHtcblx0XHRjZmIuRmlsZUluZGV4LnNwbGljZShqLCAxKTtcblx0XHRjZmIuRnVsbFBhdGhzLnNwbGljZShqLCAxKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNmYl9tb3YoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9sZF9uYW1lLyo6c3RyaW5nKi8sIG5ld19uYW1lLyo6c3RyaW5nKi8pLyo6Ym9vbGVhbiovIHtcblx0aW5pdF9jZmIoY2ZiKTtcblx0dmFyIGZpbGUgPSBDRkIuZmluZChjZmIsIG9sZF9uYW1lKTtcblx0aWYoZmlsZSkgZm9yKHZhciBqID0gMDsgaiA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2opIGlmKGNmYi5GaWxlSW5kZXhbal0gPT0gZmlsZSkge1xuXHRcdGNmYi5GaWxlSW5kZXhbal0ubmFtZSA9IGZpbGVuYW1lKG5ld19uYW1lKTtcblx0XHRjZmIuRnVsbFBhdGhzW2pdID0gbmV3X25hbWU7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjZmJfZ2MoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8pLyo6dm9pZCovIHsgcmVidWlsZF9jZmIoY2ZiLCB0cnVlKTsgfVxuXG5leHBvcnRzLmZpbmQgPSBmaW5kO1xuZXhwb3J0cy5yZWFkID0gcmVhZDtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMud3JpdGUgPSB3cml0ZTtcbmV4cG9ydHMud3JpdGVGaWxlID0gd3JpdGVfZmlsZTtcbmV4cG9ydHMudXRpbHMgPSB7XG5cdGNmYl9uZXc6IGNmYl9uZXcsXG5cdGNmYl9hZGQ6IGNmYl9hZGQsXG5cdGNmYl9kZWw6IGNmYl9kZWwsXG5cdGNmYl9tb3Y6IGNmYl9tb3YsXG5cdGNmYl9nYzogY2ZiX2djLFxuXHRSZWFkU2hpZnQ6IFJlYWRTaGlmdCxcblx0Q2hlY2tGaWVsZDogQ2hlY2tGaWVsZCxcblx0cHJlcF9ibG9iOiBwcmVwX2Jsb2IsXG5cdGJjb25jYXQ6IGJjb25jYXQsXG5cdHVzZV96bGliOiB1c2VfemxpYixcblx0X2RlZmxhdGVSYXc6IF9kZWZsYXRlLFxuXHRfaW5mbGF0ZVJhdzogX2luZmxhdGUsXG5cdGNvbnN0czogY29uc3RzXG59O1xuXG5yZXR1cm4gZXhwb3J0cztcbn0pKCk7XG5cbmxldCBfZnMgPSB2b2lkIDA7XG5mdW5jdGlvbiBzZXRfZnMoZnMpIHsgX2ZzID0gZnM7IH1cbmV4cG9ydCB7IHNldF9mcyB9O1xuXG4vKiBub3JtYWxpemUgZGF0YSBmb3IgYmxvYiBjdG9yICovXG5mdW5jdGlvbiBibG9iaWZ5KGRhdGEpIHtcblx0aWYodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHJldHVybiBzMmFiKGRhdGEpO1xuXHRpZihBcnJheS5pc0FycmF5KGRhdGEpKSByZXR1cm4gYTJ1KGRhdGEpO1xuXHRyZXR1cm4gZGF0YTtcbn1cbi8qIHdyaXRlIG9yIGRvd25sb2FkIGZpbGUgKi9cbmZ1bmN0aW9uIHdyaXRlX2RsKGZuYW1lLyo6c3RyaW5nKi8sIHBheWxvYWQvKjphbnkqLywgZW5jLyo6P3N0cmluZyovKSB7XG5cdC8qZ2xvYmFsIElFX1NhdmVGaWxlLCBCbG9iLCBuYXZpZ2F0b3IsIHNhdmVBcywgZG9jdW1lbnQsIEZpbGUsIGNocm9tZSAqL1xuXHRpZih0eXBlb2YgX2ZzICE9PSAndW5kZWZpbmVkJyAmJiBfZnMud3JpdGVGaWxlU3luYykgcmV0dXJuIGVuYyA/IF9mcy53cml0ZUZpbGVTeW5jKGZuYW1lLCBwYXlsb2FkLCBlbmMpIDogX2ZzLndyaXRlRmlsZVN5bmMoZm5hbWUsIHBheWxvYWQpO1xuXHRpZih0eXBlb2YgRGVubyAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHQvKiBpbiB0aGlzIHNwb3QsIGl0J3Mgc2FmZSB0byBhc3N1bWUgdHlwZWQgYXJyYXlzIGFuZCBUZXh0RW5jb2Rlci9UZXh0RGVjb2RlciBleGlzdCAqL1xuXHRcdGlmKGVuYyAmJiB0eXBlb2YgcGF5bG9hZCA9PSBcInN0cmluZ1wiKSBzd2l0Y2goZW5jKSB7XG5cdFx0XHRjYXNlIFwidXRmOFwiOiBwYXlsb2FkID0gbmV3IFRleHRFbmNvZGVyKGVuYykuZW5jb2RlKHBheWxvYWQpOyBicmVhaztcblx0XHRcdGNhc2UgXCJiaW5hcnlcIjogcGF5bG9hZCA9IHMyYWIocGF5bG9hZCk7IGJyZWFrO1xuXHRcdFx0LyogVE9ETzogYmluYXJ5IGVxdWl2YWxlbnQgKi9cblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGVuY29kaW5nIFwiICsgZW5jKTtcblx0XHR9XG5cdFx0cmV0dXJuIERlbm8ud3JpdGVGaWxlU3luYyhmbmFtZSwgcGF5bG9hZCk7XG5cdH1cblx0dmFyIGRhdGEgPSAoZW5jID09IFwidXRmOFwiKSA/IHV0Zjh3cml0ZShwYXlsb2FkKSA6IHBheWxvYWQ7XG5cdC8qOjogZGVjbGFyZSB2YXIgSUVfU2F2ZUZpbGU6IGFueTsgKi9cblx0aWYodHlwZW9mIElFX1NhdmVGaWxlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIElFX1NhdmVGaWxlKGRhdGEsIGZuYW1lKTtcblx0aWYodHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0dmFyIGJsb2IgPSBuZXcgQmxvYihbYmxvYmlmeShkYXRhKV0sIHt0eXBlOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJ9KTtcblx0XHQvKjo6IGRlY2xhcmUgdmFyIG5hdmlnYXRvcjogYW55OyAqL1xuXHRcdGlmKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci5tc1NhdmVCbG9iKSByZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgZm5hbWUpO1xuXHRcdC8qOjogZGVjbGFyZSB2YXIgc2F2ZUFzOiBhbnk7ICovXG5cdFx0aWYodHlwZW9mIHNhdmVBcyAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBzYXZlQXMoYmxvYiwgZm5hbWUpO1xuXHRcdGlmKHR5cGVvZiBVUkwgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAmJiBVUkwuY3JlYXRlT2JqZWN0VVJMKSB7XG5cdFx0XHR2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblx0XHRcdC8qOjogZGVjbGFyZSB2YXIgY2hyb21lOiBhbnk7ICovXG5cdFx0XHRpZih0eXBlb2YgY2hyb21lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgKGNocm9tZS5kb3dubG9hZHN8fHt9KS5kb3dubG9hZCA9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0aWYoVVJMLnJldm9rZU9iamVjdFVSTCAmJiB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcpIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTsgfSwgNjAwMDApO1xuXHRcdFx0XHRyZXR1cm4gY2hyb21lLmRvd25sb2Fkcy5kb3dubG9hZCh7IHVybDogdXJsLCBmaWxlbmFtZTogZm5hbWUsIHNhdmVBczogdHJ1ZX0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcblx0XHRcdGlmKGEuZG93bmxvYWQgIT0gbnVsbCkge1xuXHRcdFx0XHQvKjo6IGlmKGRvY3VtZW50LmJvZHkgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHRcdGEuZG93bmxvYWQgPSBmbmFtZTsgYS5ocmVmID0gdXJsOyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOyBhLmNsaWNrKCk7XG5cdFx0XHRcdC8qOjogaWYoZG9jdW1lbnQuYm9keSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi8gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcblx0XHRcdFx0aWYoVVJMLnJldm9rZU9iamVjdFVSTCAmJiB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcpIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTsgfSwgNjAwMDApO1xuXHRcdFx0XHRyZXR1cm4gdXJsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyAkRmxvd0lnbm9yZVxuXHRpZih0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBGb2xkZXIgIT09ICd1bmRlZmluZWQnKSB0cnkgeyAvLyBleHRlbmRzY3JpcHRcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdHZhciBvdXQgPSBGaWxlKGZuYW1lKTsgb3V0Lm9wZW4oXCJ3XCIpOyBvdXQuZW5jb2RpbmcgPSBcImJpbmFyeVwiO1xuXHRcdGlmKEFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHBheWxvYWQgPSBhMnMocGF5bG9hZCk7XG5cdFx0b3V0LndyaXRlKHBheWxvYWQpOyBvdXQuY2xvc2UoKTsgcmV0dXJuIHBheWxvYWQ7XG5cdH0gY2F0Y2goZSkgeyBpZighZS5tZXNzYWdlIHx8ICFlLm1lc3NhZ2UubWF0Y2goL29uc3RydWN0LykpIHRocm93IGU7IH1cblx0dGhyb3cgbmV3IEVycm9yKFwiY2Fubm90IHNhdmUgZmlsZSBcIiArIGZuYW1lKTtcbn1cblxuLyogcmVhZCBiaW5hcnkgZGF0YSBmcm9tIGZpbGUgKi9cbmZ1bmN0aW9uIHJlYWRfYmluYXJ5KHBhdGgvKjpzdHJpbmcqLykge1xuXHRpZih0eXBlb2YgX2ZzICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIF9mcy5yZWFkRmlsZVN5bmMocGF0aCk7XG5cdGlmKHR5cGVvZiBEZW5vICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIERlbm8ucmVhZEZpbGVTeW5jKHBhdGgpO1xuXHQvLyAkRmxvd0lnbm9yZVxuXHRpZih0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBGb2xkZXIgIT09ICd1bmRlZmluZWQnKSB0cnkgeyAvLyBleHRlbmRzY3JpcHRcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdHZhciBpbmZpbGUgPSBGaWxlKHBhdGgpOyBpbmZpbGUub3BlbihcInJcIik7IGluZmlsZS5lbmNvZGluZyA9IFwiYmluYXJ5XCI7XG5cdFx0dmFyIGRhdGEgPSBpbmZpbGUucmVhZCgpOyBpbmZpbGUuY2xvc2UoKTtcblx0XHRyZXR1cm4gZGF0YTtcblx0fSBjYXRjaChlKSB7IGlmKCFlLm1lc3NhZ2UgfHwgIWUubWVzc2FnZS5tYXRjaCgvb25zdHJ1Y3QvKSkgdGhyb3cgZTsgfVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWNjZXNzIGZpbGUgXCIgKyBwYXRoKTtcbn1cbmZ1bmN0aW9uIGtleXMoby8qOmFueSovKS8qOkFycmF5PGFueT4qLyB7XG5cdHZhciBrcyA9IE9iamVjdC5rZXlzKG8pLCBvMiA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwga3MubGVuZ3RoOyArK2kpIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrc1tpXSkpIG8yLnB1c2goa3NbaV0pO1xuXHRyZXR1cm4gbzI7XG59XG5cbmZ1bmN0aW9uIGV2ZXJ0X2tleShvYmovKjphbnkqLywga2V5Lyo6c3RyaW5nKi8pLyo6RXZlcnRUeXBlKi8ge1xuXHR2YXIgbyA9IChbXS8qOmFueSovKSwgSyA9IGtleXMob2JqKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gSy5sZW5ndGg7ICsraSkgaWYob1tvYmpbS1tpXV1ba2V5XV0gPT0gbnVsbCkgb1tvYmpbS1tpXV1ba2V5XV0gPSBLW2ldO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZXZlcnQob2JqLyo6YW55Ki8pLyo6RXZlcnRUeXBlKi8ge1xuXHR2YXIgbyA9IChbXS8qOmFueSovKSwgSyA9IGtleXMob2JqKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gSy5sZW5ndGg7ICsraSkgb1tvYmpbS1tpXV1dID0gS1tpXTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIGV2ZXJ0X251bShvYmovKjphbnkqLykvKjpFdmVydE51bVR5cGUqLyB7XG5cdHZhciBvID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSBvW29ialtLW2ldXV0gPSBwYXJzZUludChLW2ldLDEwKTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIGV2ZXJ0X2FycihvYmovKjphbnkqLykvKjpFdmVydEFyclR5cGUqLyB7XG5cdHZhciBvLyo6RXZlcnRBcnJUeXBlKi8gPSAoW10vKjphbnkqLyksIEsgPSBrZXlzKG9iaik7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IEsubGVuZ3RoOyArK2kpIHtcblx0XHRpZihvW29ialtLW2ldXV0gPT0gbnVsbCkgb1tvYmpbS1tpXV1dID0gW107XG5cdFx0b1tvYmpbS1tpXV1dLnB1c2goS1tpXSk7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cbnZhciBiYXNlZGF0ZSA9IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgxODk5LCAxMSwgMzAsIDAsIDAsIDApOyAvLyAyMjA5MTYxNjAwMDAwXG5mdW5jdGlvbiBkYXRlbnVtKHYvKjpEYXRlKi8sIGRhdGUxOTA0Lyo6P2Jvb2xlYW4qLykvKjpudW1iZXIqLyB7XG5cdHZhciBlcG9jaCA9IC8qI19fUFVSRV9fKi92LmdldFRpbWUoKTtcblx0aWYoZGF0ZTE5MDQpIGVwb2NoIC09IDE0NjIqMjQqNjAqNjAqMTAwMDtcblx0dmFyIGRudGhyZXNoID0gLyojX19QVVJFX18qL2Jhc2VkYXRlLmdldFRpbWUoKSArICgvKiNfX1BVUkVfXyovdi5nZXRUaW1lem9uZU9mZnNldCgpIC0gLyojX19QVVJFX18qL2Jhc2VkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAwMDA7XG5cdHJldHVybiAoZXBvY2ggLSBkbnRocmVzaCkgLyAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG59XG52YXIgcmVmZGF0ZSA9IC8qI19fUFVSRV9fKi9uZXcgRGF0ZSgpO1xudmFyIGRudGhyZXNoID0gLyojX19QVVJFX18qL2Jhc2VkYXRlLmdldFRpbWUoKSArICgvKiNfX1BVUkVfXyovcmVmZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gLyojX19QVVJFX18qL2Jhc2VkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAwMDA7XG52YXIgcmVmb2Zmc2V0ID0gLyojX19QVVJFX18qL3JlZmRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbmZ1bmN0aW9uIG51bWRhdGUodi8qOm51bWJlciovKS8qOkRhdGUqLyB7XG5cdHZhciBvdXQgPSBuZXcgRGF0ZSgpO1xuXHRvdXQuc2V0VGltZSh2ICogMjQgKiA2MCAqIDYwICogMTAwMCArIGRudGhyZXNoKTtcblx0aWYgKG91dC5nZXRUaW1lem9uZU9mZnNldCgpICE9PSByZWZvZmZzZXQpIHtcblx0XHRvdXQuc2V0VGltZShvdXQuZ2V0VGltZSgpICsgKG91dC5nZXRUaW1lem9uZU9mZnNldCgpIC0gcmVmb2Zmc2V0KSAqIDYwMDAwKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBJU08gODYwMSBEdXJhdGlvbiAqL1xuZnVuY3Rpb24gcGFyc2VfaXNvZHVyKHMpIHtcblx0dmFyIHNlYyA9IDAsIG10ID0gMCwgdGltZSA9IGZhbHNlO1xuXHR2YXIgbSA9IHMubWF0Y2goL1AoWzAtOVxcLl0rWSk/KFswLTlcXC5dK00pPyhbMC05XFwuXStEKT9UKFswLTlcXC5dK0gpPyhbMC05XFwuXStNKT8oWzAtOVxcLl0rUyk/Lyk7XG5cdGlmKCFtKSB0aHJvdyBuZXcgRXJyb3IoXCJ8XCIgKyBzICsgXCJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0aW9uXCIpO1xuXHRmb3IodmFyIGkgPSAxOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHRpZighbVtpXSkgY29udGludWU7XG5cdFx0bXQgPSAxO1xuXHRcdGlmKGkgPiAzKSB0aW1lID0gdHJ1ZTtcblx0XHRzd2l0Y2gobVtpXS5zbGljZShtW2ldLmxlbmd0aC0xKSkge1xuXHRcdFx0Y2FzZSAnWSc6XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogXCIgKyBtW2ldLnNsaWNlKG1baV0ubGVuZ3RoLTEpKTtcblx0XHRcdGNhc2UgJ0QnOiBtdCAqPSAyNDtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnSCc6IG10ICo9IDYwO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdNJzpcblx0XHRcdFx0aWYoIXRpbWUpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogTVwiKTtcblx0XHRcdFx0ZWxzZSBtdCAqPSA2MDtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnUyc6IGJyZWFrO1xuXHRcdH1cblx0XHRzZWMgKz0gbXQgKiBwYXJzZUludChtW2ldLCAxMCk7XG5cdH1cblx0cmV0dXJuIHNlYztcbn1cblxudmFyIGdvb2RfcGRfZGF0ZV8xID0gLyojX19QVVJFX18qL25ldyBEYXRlKCcyMDE3LTAyLTE5VDE5OjA2OjA5LjAwMFonKTtcbnZhciBnb29kX3BkX2RhdGUgPSAvKiNfX1BVUkVfXyovaXNOYU4oLyojX19QVVJFX18qL2dvb2RfcGRfZGF0ZV8xLmdldEZ1bGxZZWFyKCkpID8gLyojX19QVVJFX18qL25ldyBEYXRlKCcyLzE5LzE3JykgOiBnb29kX3BkX2RhdGVfMTtcbnZhciBnb29kX3BkID0gLyojX19QVVJFX18qL2dvb2RfcGRfZGF0ZS5nZXRGdWxsWWVhcigpID09IDIwMTc7XG4vKiBwYXJzZXMgYSBkYXRlIGFzIGEgbG9jYWwgZGF0ZSAqL1xuZnVuY3Rpb24gcGFyc2VEYXRlKHN0ci8qOnN0cmluZ3xEYXRlKi8sIGZpeGRhdGUvKjo/bnVtYmVyKi8pLyo6RGF0ZSovIHtcblx0dmFyIGQgPSBuZXcgRGF0ZShzdHIpO1xuXHRpZihnb29kX3BkKSB7XG5cdFx0Lyo6OiBpZihmaXhkYXRlID09IG51bGwpIGZpeGRhdGUgPSAwOyAqL1xuXHRcdGlmKGZpeGRhdGUgPiAwKSBkLnNldFRpbWUoZC5nZXRUaW1lKCkgKyBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCAqIDEwMDApO1xuXHRcdGVsc2UgaWYoZml4ZGF0ZSA8IDApIGQuc2V0VGltZShkLmdldFRpbWUoKSAtIGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCk7XG5cdFx0cmV0dXJuIGQ7XG5cdH1cblx0aWYoc3RyIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHN0cjtcblx0aWYoZ29vZF9wZF9kYXRlLmdldEZ1bGxZZWFyKCkgPT0gMTkxNyAmJiAhaXNOYU4oZC5nZXRGdWxsWWVhcigpKSkge1xuXHRcdHZhciBzID0gZC5nZXRGdWxsWWVhcigpO1xuXHRcdGlmKHN0ci5pbmRleE9mKFwiXCIgKyBzKSA+IC0xKSByZXR1cm4gZDtcblx0XHRkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIDEwMCk7IHJldHVybiBkO1xuXHR9XG5cdHZhciBuID0gc3RyLm1hdGNoKC9cXGQrL2cpfHxbXCIyMDE3XCIsXCIyXCIsXCIxOVwiLFwiMFwiLFwiMFwiLFwiMFwiXTtcblx0dmFyIG91dCA9IG5ldyBEYXRlKCtuWzBdLCArblsxXSAtIDEsICtuWzJdLCAoK25bM118fDApLCAoK25bNF18fDApLCAoK25bNV18fDApKTtcblx0aWYoc3RyLmluZGV4T2YoXCJaXCIpID4gLTEpIG91dCA9IG5ldyBEYXRlKG91dC5nZXRUaW1lKCkgLSBvdXQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGNjMnN0cihhcnIvKjpBcnJheTxudW1iZXI+Ki8sIGRlYm9taXQpLyo6c3RyaW5nKi8ge1xuXHRpZihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihhcnIpKSB7XG5cdFx0aWYoZGVib21pdCkge1xuXHRcdFx0aWYoYXJyWzBdID09IDB4RkYgJiYgYXJyWzFdID09IDB4RkUpIHJldHVybiB1dGY4d3JpdGUoYXJyLnNsaWNlKDIpLnRvU3RyaW5nKFwidXRmMTZsZVwiKSk7XG5cdFx0XHRpZihhcnJbMV0gPT0gMHhGRSAmJiBhcnJbMl0gPT0gMHhGRikgcmV0dXJuIHV0Zjh3cml0ZSh1dGYxNmJlcmVhZChhcnIuc2xpY2UoMikudG9TdHJpbmcoXCJiaW5hcnlcIikpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFyci50b1N0cmluZyhcImJpbmFyeVwiKTtcblx0fVxuXG5cdGlmKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgdHJ5IHtcblx0XHRpZihkZWJvbWl0KSB7XG5cdFx0XHRpZihhcnJbMF0gPT0gMHhGRiAmJiBhcnJbMV0gPT0gMHhGRSkgcmV0dXJuIHV0Zjh3cml0ZShuZXcgVGV4dERlY29kZXIoXCJ1dGYtMTZsZVwiKS5kZWNvZGUoYXJyLnNsaWNlKDIpKSk7XG5cdFx0XHRpZihhcnJbMF0gPT0gMHhGRSAmJiBhcnJbMV0gPT0gMHhGRikgcmV0dXJuIHV0Zjh3cml0ZShuZXcgVGV4dERlY29kZXIoXCJ1dGYtMTZiZVwiKS5kZWNvZGUoYXJyLnNsaWNlKDIpKSk7XG5cdFx0fVxuXHRcdHZhciByZXYgPSB7XG5cdFx0XHRcIlxcdTIwYWNcIjogXCJcXHg4MFwiLCBcIlxcdTIwMWFcIjogXCJcXHg4MlwiLCBcIlxcdTAxOTJcIjogXCJcXHg4M1wiLCBcIlxcdTIwMWVcIjogXCJcXHg4NFwiLFxuXHRcdFx0XCJcXHUyMDI2XCI6IFwiXFx4ODVcIiwgXCJcXHUyMDIwXCI6IFwiXFx4ODZcIiwgXCJcXHUyMDIxXCI6IFwiXFx4ODdcIiwgXCJcXHUwMmM2XCI6IFwiXFx4ODhcIixcblx0XHRcdFwiXFx1MjAzMFwiOiBcIlxceDg5XCIsIFwiXFx1MDE2MFwiOiBcIlxceDhhXCIsIFwiXFx1MjAzOVwiOiBcIlxceDhiXCIsIFwiXFx1MDE1MlwiOiBcIlxceDhjXCIsXG5cdFx0XHRcIlxcdTAxN2RcIjogXCJcXHg4ZVwiLCBcIlxcdTIwMThcIjogXCJcXHg5MVwiLCBcIlxcdTIwMTlcIjogXCJcXHg5MlwiLCBcIlxcdTIwMWNcIjogXCJcXHg5M1wiLFxuXHRcdFx0XCJcXHUyMDFkXCI6IFwiXFx4OTRcIiwgXCJcXHUyMDIyXCI6IFwiXFx4OTVcIiwgXCJcXHUyMDEzXCI6IFwiXFx4OTZcIiwgXCJcXHUyMDE0XCI6IFwiXFx4OTdcIixcblx0XHRcdFwiXFx1MDJkY1wiOiBcIlxceDk4XCIsIFwiXFx1MjEyMlwiOiBcIlxceDk5XCIsIFwiXFx1MDE2MVwiOiBcIlxceDlhXCIsIFwiXFx1MjAzYVwiOiBcIlxceDliXCIsXG5cdFx0XHRcIlxcdTAxNTNcIjogXCJcXHg5Y1wiLCBcIlxcdTAxN2VcIjogXCJcXHg5ZVwiLCBcIlxcdTAxNzhcIjogXCJcXHg5ZlwiXG5cdFx0fTtcblx0XHRpZihBcnJheS5pc0FycmF5KGFycikpIGFyciA9IG5ldyBVaW50OEFycmF5KGFycik7XG5cdFx0cmV0dXJuIG5ldyBUZXh0RGVjb2RlcihcImxhdGluMVwiKS5kZWNvZGUoYXJyKS5yZXBsYWNlKC9b4oKs4oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLFveKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk8W+xbhdL2csIGZ1bmN0aW9uKGMpIHsgcmV0dXJuIHJldltjXSB8fCBjOyB9KTtcblx0fSBjYXRjaChlKSB7fVxuXG5cdHZhciBvID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gYXJyLmxlbmd0aDsgKytpKSBvLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhcnJbaV0pKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gZHVwKG8vKjphbnkqLykvKjphbnkqLyB7XG5cdGlmKHR5cGVvZiBKU09OICE9ICd1bmRlZmluZWQnICYmICFBcnJheS5pc0FycmF5KG8pKSByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSk7XG5cdGlmKHR5cGVvZiBvICE9ICdvYmplY3QnIHx8IG8gPT0gbnVsbCkgcmV0dXJuIG87XG5cdGlmKG8gaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmV3IERhdGUoby5nZXRUaW1lKCkpO1xuXHR2YXIgb3V0ID0ge307XG5cdGZvcih2YXIgayBpbiBvKSBpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaykpIG91dFtrXSA9IGR1cChvW2tdKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gZmlsbChjLyo6c3RyaW5nKi8sbC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgdmFyIG8gPSBcIlwiOyB3aGlsZShvLmxlbmd0aCA8IGwpIG8rPWM7IHJldHVybiBvOyB9XG5cbi8qIFRPRE86IHN0cmVzcyB0ZXN0ICovXG5mdW5jdGlvbiBmdXp6eW51bShzLyo6c3RyaW5nKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgdi8qOm51bWJlciovID0gTnVtYmVyKHMpO1xuXHRpZighaXNOYU4odikpIHJldHVybiBpc0Zpbml0ZSh2KSA/IHYgOiBOYU47XG5cdGlmKCEvXFxkLy50ZXN0KHMpKSByZXR1cm4gdjtcblx0dmFyIHd0ID0gMTtcblx0dmFyIHNzID0gcy5yZXBsYWNlKC8oW1xcZF0pLChbXFxkXSkvZyxcIiQxJDJcIikucmVwbGFjZSgvWyRdL2csXCJcIikucmVwbGFjZSgvWyVdL2csIGZ1bmN0aW9uKCkgeyB3dCAqPSAxMDA7IHJldHVybiBcIlwiO30pO1xuXHRpZighaXNOYU4odiA9IE51bWJlcihzcykpKSByZXR1cm4gdiAvIHd0O1xuXHRzcyA9IHNzLnJlcGxhY2UoL1soXSguKilbKV0vLGZ1bmN0aW9uKCQkLCAkMSkgeyB3dCA9IC13dDsgcmV0dXJuICQxO30pO1xuXHRpZighaXNOYU4odiA9IE51bWJlcihzcykpKSByZXR1cm4gdiAvIHd0O1xuXHRyZXR1cm4gdjtcbn1cbnZhciBsb3dlcl9tb250aHMgPSBbJ2phbnVhcnknLCAnZmVicnVhcnknLCAnbWFyY2gnLCAnYXByaWwnLCAnbWF5JywgJ2p1bmUnLCAnanVseScsICdhdWd1c3QnLCAnc2VwdGVtYmVyJywgJ29jdG9iZXInLCAnbm92ZW1iZXInLCAnZGVjZW1iZXInXTtcbmZ1bmN0aW9uIGZ1enp5ZGF0ZShzLyo6c3RyaW5nKi8pLyo6RGF0ZSovIHtcblx0dmFyIG8gPSBuZXcgRGF0ZShzKSwgbiA9IG5ldyBEYXRlKE5hTik7XG5cdHZhciB5ID0gby5nZXRZZWFyKCksIG0gPSBvLmdldE1vbnRoKCksIGQgPSBvLmdldERhdGUoKTtcblx0aWYoaXNOYU4oZCkpIHJldHVybiBuO1xuXHR2YXIgbG93ZXIgPSBzLnRvTG93ZXJDYXNlKCk7XG5cdGlmKGxvd2VyLm1hdGNoKC9qYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYy8pKSB7XG5cdFx0bG93ZXIgPSBsb3dlci5yZXBsYWNlKC9bXmEtel0vZyxcIlwiKS5yZXBsYWNlKC8oW15hLXpdfF4pW2FwXW0/KFteYS16XXwkKS8sXCJcIik7XG5cdFx0aWYobG93ZXIubGVuZ3RoID4gMyAmJiBsb3dlcl9tb250aHMuaW5kZXhPZihsb3dlcikgPT0gLTEpIHJldHVybiBuO1xuXHR9IGVsc2UgaWYobG93ZXIubWF0Y2goL1thLXpdLykpIHJldHVybiBuO1xuXHRpZih5IDwgMCB8fCB5ID4gODA5OSkgcmV0dXJuIG47XG5cdGlmKChtID4gMCB8fCBkID4gMSkgJiYgeSAhPSAxMDEpIHJldHVybiBvO1xuXHRpZihzLm1hdGNoKC9bXi0wLTk6LFxcL1xcXFxdLykpIHJldHVybiBuO1xuXHRyZXR1cm4gbztcbn1cblxudmFyIHNwbGl0X3JlZ2V4ID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIHNhZmVfc3BsaXRfcmVnZXggPSBcImFiYWNhYmFcIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoID09IDU7XG5cdHJldHVybiBmdW5jdGlvbiBzcGxpdF9yZWdleChzdHIvKjpzdHJpbmcqLywgcmUsIGRlZi8qOnN0cmluZyovKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdFx0aWYoc2FmZV9zcGxpdF9yZWdleCB8fCB0eXBlb2YgcmUgPT0gXCJzdHJpbmdcIikgcmV0dXJuIHN0ci5zcGxpdChyZSk7XG5cdFx0dmFyIHAgPSBzdHIuc3BsaXQocmUpLCBvID0gW3BbMF1dO1xuXHRcdGZvcih2YXIgaSA9IDE7IGkgPCBwLmxlbmd0aDsgKytpKSB7IG8ucHVzaChkZWYpOyBvLnB1c2gocFtpXSk7IH1cblx0XHRyZXR1cm4gbztcblx0fTtcbn0pKCk7XG5mdW5jdGlvbiBnZXRkYXRhc3RyKGRhdGEpLyo6P3N0cmluZyovIHtcblx0aWYoIWRhdGEpIHJldHVybiBudWxsO1xuXHRpZihkYXRhLmNvbnRlbnQgJiYgZGF0YS50eXBlKSByZXR1cm4gY2Myc3RyKGRhdGEuY29udGVudCwgdHJ1ZSk7XG5cdGlmKGRhdGEuZGF0YSkgcmV0dXJuIGRlYm9tKGRhdGEuZGF0YSk7XG5cdGlmKGRhdGEuYXNOb2RlQnVmZmVyICYmIGhhc19idWYpIHJldHVybiBkZWJvbShkYXRhLmFzTm9kZUJ1ZmZlcigpLnRvU3RyaW5nKCdiaW5hcnknKSk7XG5cdGlmKGRhdGEuYXNCaW5hcnkpIHJldHVybiBkZWJvbShkYXRhLmFzQmluYXJ5KCkpO1xuXHRpZihkYXRhLl9kYXRhICYmIGRhdGEuX2RhdGEuZ2V0Q29udGVudCkgcmV0dXJuIGRlYm9tKGNjMnN0cihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkYXRhLl9kYXRhLmdldENvbnRlbnQoKSwwKSkpO1xuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0ZGF0YWJpbihkYXRhKSB7XG5cdGlmKCFkYXRhKSByZXR1cm4gbnVsbDtcblx0aWYoZGF0YS5kYXRhKSByZXR1cm4gY2hhcl9jb2RlcyhkYXRhLmRhdGEpO1xuXHRpZihkYXRhLmFzTm9kZUJ1ZmZlciAmJiBoYXNfYnVmKSByZXR1cm4gZGF0YS5hc05vZGVCdWZmZXIoKTtcblx0aWYoZGF0YS5fZGF0YSAmJiBkYXRhLl9kYXRhLmdldENvbnRlbnQpIHtcblx0XHR2YXIgbyA9IGRhdGEuX2RhdGEuZ2V0Q29udGVudCgpO1xuXHRcdGlmKHR5cGVvZiBvID09IFwic3RyaW5nXCIpIHJldHVybiBjaGFyX2NvZGVzKG8pO1xuXHRcdHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvKTtcblx0fVxuXHRpZihkYXRhLmNvbnRlbnQgJiYgZGF0YS50eXBlKSByZXR1cm4gZGF0YS5jb250ZW50O1xuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0ZGF0YShkYXRhKSB7IHJldHVybiAoZGF0YSAmJiBkYXRhLm5hbWUuc2xpY2UoLTQpID09PSBcIi5iaW5cIikgPyBnZXRkYXRhYmluKGRhdGEpIDogZ2V0ZGF0YXN0cihkYXRhKTsgfVxuXG4vKiBQYXJ0IDIgU2VjdGlvbiAxMC4xLjIgXCJNYXBwaW5nIENvbnRlbnQgVHlwZXNcIiBOYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSAqL1xuLyogT0FTSVMgZG9lcyBub3QgY29tbWVudCBvbiBmaWxlbmFtZSBjYXNlIHNlbnNpdGl2aXR5ICovXG5mdW5jdGlvbiBzYWZlZ2V0emlwZmlsZSh6aXAsIGZpbGUvKjpzdHJpbmcqLykge1xuXHR2YXIgayA9IHppcC5GdWxsUGF0aHMgfHwga2V5cyh6aXAuZmlsZXMpO1xuXHR2YXIgZiA9IGZpbGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXFwvXS9nLCAnXFxcXCcpLCBnID0gZi5yZXBsYWNlKC9cXFxcL2csJ1xcLycpO1xuXHRmb3IodmFyIGk9MDsgaTxrLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG4gPSBrW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1xcL10vLFwiXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYoZiA9PSBuIHx8IGcgPT0gbikgcmV0dXJuIHppcC5maWxlcyA/IHppcC5maWxlc1trW2ldXSA6IHppcC5GaWxlSW5kZXhbaV07XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldHppcGZpbGUoemlwLCBmaWxlLyo6c3RyaW5nKi8pIHtcblx0dmFyIG8gPSBzYWZlZ2V0emlwZmlsZSh6aXAsIGZpbGUpO1xuXHRpZihvID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIGZpbGUgXCIgKyBmaWxlICsgXCIgaW4gemlwXCIpO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZ2V0emlwZGF0YSh6aXAsIGZpbGUvKjpzdHJpbmcqLywgc2FmZS8qOj9ib29sZWFuKi8pLyo6YW55Ki8ge1xuXHRpZighc2FmZSkgcmV0dXJuIGdldGRhdGEoZ2V0emlwZmlsZSh6aXAsIGZpbGUpKTtcblx0aWYoIWZpbGUpIHJldHVybiBudWxsO1xuXHR0cnkgeyByZXR1cm4gZ2V0emlwZGF0YSh6aXAsIGZpbGUpOyB9IGNhdGNoKGUpIHsgcmV0dXJuIG51bGw7IH1cbn1cblxuZnVuY3Rpb24gZ2V0emlwc3RyKHppcCwgZmlsZS8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjo/c3RyaW5nKi8ge1xuXHRpZighc2FmZSkgcmV0dXJuIGdldGRhdGFzdHIoZ2V0emlwZmlsZSh6aXAsIGZpbGUpKTtcblx0aWYoIWZpbGUpIHJldHVybiBudWxsO1xuXHR0cnkgeyByZXR1cm4gZ2V0emlwc3RyKHppcCwgZmlsZSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiBnZXR6aXBiaW4oemlwLCBmaWxlLyo6c3RyaW5nKi8sIHNhZmUvKjo/Ym9vbGVhbiovKS8qOmFueSovIHtcblx0aWYoIXNhZmUpIHJldHVybiBnZXRkYXRhYmluKGdldHppcGZpbGUoemlwLCBmaWxlKSk7XG5cdGlmKCFmaWxlKSByZXR1cm4gbnVsbDtcblx0dHJ5IHsgcmV0dXJuIGdldHppcGJpbih6aXAsIGZpbGUpOyB9IGNhdGNoKGUpIHsgcmV0dXJuIG51bGw7IH1cbn1cblxuZnVuY3Rpb24gemlwZW50cmllcyh6aXApIHtcblx0dmFyIGsgPSB6aXAuRnVsbFBhdGhzIHx8IGtleXMoemlwLmZpbGVzKSwgbyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgay5sZW5ndGg7ICsraSkgaWYoa1tpXS5zbGljZSgtMSkgIT0gJy8nKSBvLnB1c2goa1tpXS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcXC9dLywgXCJcIikpO1xuXHRyZXR1cm4gby5zb3J0KCk7XG59XG5cbmZ1bmN0aW9uIHppcF9hZGRfZmlsZSh6aXAsIHBhdGgsIGNvbnRlbnQpIHtcblx0aWYoemlwLkZ1bGxQYXRocykge1xuXHRcdGlmKHR5cGVvZiBjb250ZW50ID09IFwic3RyaW5nXCIpIHtcblx0XHRcdHZhciByZXM7XG5cdFx0XHRpZihoYXNfYnVmKSByZXMgPSBCdWZmZXJfZnJvbShjb250ZW50KTtcblx0XHRcdC8qIFRPRE86IGludmVzdGlnYXRlIHBlcmZvcm1hbmNlIGluIEVkZ2UgMTMgKi9cblx0XHRcdC8vZWxzZSBpZih0eXBlb2YgVGV4dEVuY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHJlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjb250ZW50KTtcblx0XHRcdGVsc2UgcmVzID0gdXRmOGRlY29kZShjb250ZW50KTtcblx0XHRcdHJldHVybiBDRkIudXRpbHMuY2ZiX2FkZCh6aXAsIHBhdGgsIHJlcyk7XG5cdFx0fVxuXHRcdENGQi51dGlscy5jZmJfYWRkKHppcCwgcGF0aCwgY29udGVudCk7XG5cdH1cblx0ZWxzZSB6aXAuZmlsZShwYXRoLCBjb250ZW50KTtcbn1cblxuZnVuY3Rpb24gemlwX25ldygpIHsgcmV0dXJuIENGQi51dGlscy5jZmJfbmV3KCk7IH1cblxuZnVuY3Rpb24gemlwX3JlYWQoZCwgbykge1xuXHRzd2l0Y2goby50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gQ0ZCLnJlYWQoZCwgeyB0eXBlOiBcImJhc2U2NFwiIH0pO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogcmV0dXJuIENGQi5yZWFkKGQsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IGNhc2UgXCJhcnJheVwiOiByZXR1cm4gQ0ZCLnJlYWQoZCwgeyB0eXBlOiBcImJ1ZmZlclwiIH0pO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgby50eXBlKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZV9wYXRoKHBhdGgvKjpzdHJpbmcqLywgYmFzZS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYocGF0aC5jaGFyQXQoMCkgPT0gXCIvXCIpIHJldHVybiBwYXRoLnNsaWNlKDEpO1xuXHR2YXIgcmVzdWx0ID0gYmFzZS5zcGxpdCgnLycpO1xuXHRpZihiYXNlLnNsaWNlKC0xKSAhPSBcIi9cIikgcmVzdWx0LnBvcCgpOyAvLyBmb2xkZXIgcGF0aFxuXHR2YXIgdGFyZ2V0ID0gcGF0aC5zcGxpdCgnLycpO1xuXHR3aGlsZSAodGFyZ2V0Lmxlbmd0aCAhPT0gMCkge1xuXHRcdHZhciBzdGVwID0gdGFyZ2V0LnNoaWZ0KCk7XG5cdFx0aWYgKHN0ZXAgPT09ICcuLicpIHJlc3VsdC5wb3AoKTtcblx0XHRlbHNlIGlmIChzdGVwICE9PSAnLicpIHJlc3VsdC5wdXNoKHN0ZXApO1xuXHR9XG5cdHJldHVybiByZXN1bHQuam9pbignLycpO1xufVxudmFyIFhNTF9IRUFERVIgPSAnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIiBzdGFuZGFsb25lPVwieWVzXCI/Plxcclxcbic7XG52YXIgYXR0cmVnZXhnPS8oW15cIlxccz8+XFwvXSspXFxzKj1cXHMqKCg/OlwiKShbXlwiXSopKD86XCIpfCg/OicpKFteJ10qKSg/OicpfChbXidcIj5cXHNdKykpL2c7XG52YXIgdGFncmVnZXgxPS88W1xcL1xcP10/W2EtekEtWjAtOTpfLV0rKD86XFxzK1teXCJcXHM/PlxcL10rXFxzKj1cXHMqKD86XCJbXlwiXSpcInwnW14nXSonfFteJ1wiPlxccz1dKykpKlxccypbXFwvXFw/XT8+L21nLCB0YWdyZWdleDIgPSAvPFtePl0qPi9nO1xudmFyIHRhZ3JlZ2V4ID0gLyojX19QVVJFX18qL1hNTF9IRUFERVIubWF0Y2godGFncmVnZXgxKSA/IHRhZ3JlZ2V4MSA6IHRhZ3JlZ2V4MjtcbnZhciBuc3JlZ2V4PS88XFx3KjovLCBuc3JlZ2V4MiA9IC88KFxcLz8pXFx3KzovO1xuZnVuY3Rpb24gcGFyc2V4bWx0YWcodGFnLyo6c3RyaW5nKi8sIHNraXBfcm9vdC8qOj9ib29sZWFuKi8sIHNraXBfTEMvKjo/Ym9vbGVhbiovKS8qOmFueSovIHtcblx0dmFyIHogPSAoe30vKjphbnkqLyk7XG5cdHZhciBlcSA9IDAsIGMgPSAwO1xuXHRmb3IoOyBlcSAhPT0gdGFnLmxlbmd0aDsgKytlcSkgaWYoKGMgPSB0YWcuY2hhckNvZGVBdChlcSkpID09PSAzMiB8fCBjID09PSAxMCB8fCBjID09PSAxMykgYnJlYWs7XG5cdGlmKCFza2lwX3Jvb3QpIHpbMF0gPSB0YWcuc2xpY2UoMCwgZXEpO1xuXHRpZihlcSA9PT0gdGFnLmxlbmd0aCkgcmV0dXJuIHo7XG5cdHZhciBtID0gdGFnLm1hdGNoKGF0dHJlZ2V4ZyksIGo9MCwgdj1cIlwiLCBpPTAsIHE9XCJcIiwgY2M9XCJcIiwgcXVvdCA9IDE7XG5cdGlmKG0pIGZvcihpID0gMDsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0Y2MgPSBtW2ldO1xuXHRcdGZvcihjPTA7IGMgIT0gY2MubGVuZ3RoOyArK2MpIGlmKGNjLmNoYXJDb2RlQXQoYykgPT09IDYxKSBicmVhaztcblx0XHRxID0gY2Muc2xpY2UoMCxjKS50cmltKCk7XG5cdFx0d2hpbGUoY2MuY2hhckNvZGVBdChjKzEpID09IDMyKSArK2M7XG5cdFx0cXVvdCA9ICgoZXE9Y2MuY2hhckNvZGVBdChjKzEpKSA9PSAzNCB8fCBlcSA9PSAzOSkgPyAxIDogMDtcblx0XHR2ID0gY2Muc2xpY2UoYysxK3F1b3QsIGNjLmxlbmd0aC1xdW90KTtcblx0XHRmb3Ioaj0wO2ohPXEubGVuZ3RoOysraikgaWYocS5jaGFyQ29kZUF0KGopID09PSA1OCkgYnJlYWs7XG5cdFx0aWYoaj09PXEubGVuZ3RoKSB7XG5cdFx0XHRpZihxLmluZGV4T2YoXCJfXCIpID4gMCkgcSA9IHEuc2xpY2UoMCwgcS5pbmRleE9mKFwiX1wiKSk7IC8vIGZyb20gb2RzXG5cdFx0XHR6W3FdID0gdjtcblx0XHRcdGlmKCFza2lwX0xDKSB6W3EudG9Mb3dlckNhc2UoKV0gPSB2O1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHZhciBrID0gKGo9PT01ICYmIHEuc2xpY2UoMCw1KT09PVwieG1sbnNcIj9cInhtbG5zXCI6XCJcIikrcS5zbGljZShqKzEpO1xuXHRcdFx0aWYoeltrXSAmJiBxLnNsaWNlKGotMyxqKSA9PSBcImV4dFwiKSBjb250aW51ZTsgLy8gZnJvbSBvZHNcblx0XHRcdHpba10gPSB2O1xuXHRcdFx0aWYoIXNraXBfTEMpIHpbay50b0xvd2VyQ2FzZSgpXSA9IHY7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gc3RyaXBfbnMoeC8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHgucmVwbGFjZShuc3JlZ2V4MiwgXCI8JDFcIik7IH1cblxudmFyIGVuY29kaW5ncyA9IHtcblx0JyZxdW90Oyc6ICdcIicsXG5cdCcmYXBvczsnOiBcIidcIixcblx0JyZndDsnOiAnPicsXG5cdCcmbHQ7JzogJzwnLFxuXHQnJmFtcDsnOiAnJidcbn07XG52YXIgcmVuY29kaW5nID0gLyojX19QVVJFX18qL2V2ZXJ0KGVuY29kaW5ncyk7XG4vL3ZhciByZW5jc3RyID0gXCImPD4nXFxcIlwiLnNwbGl0KFwiXCIpO1xuXG4vLyBUT0RPOiBDUCByZW1hcCAobmVlZCB0byByZWFkIGZpbGUgdmVyc2lvbiB0byBkZXRlcm1pbmUgT1MpXG52YXIgdW5lc2NhcGV4bWwvKjpTdHJpbmdDb252Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHQvKiAyMi40LjIuNCBic3RyIChCYXNpYyBTdHJpbmcpICovXG5cdHZhciBlbmNyZWdleCA9IC8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xcZGEtZkEtRl0rKSk7L2lnLCBjb2RlcmVnZXggPSAvX3goW1xcZGEtZkEtRl17NH0pXy9pZztcblx0cmV0dXJuIGZ1bmN0aW9uIHVuZXNjYXBleG1sKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIHMgPSB0ZXh0ICsgJycsIGkgPSBzLmluZGV4T2YoXCI8IVtDREFUQVtcIik7XG5cdFx0aWYoaSA9PSAtMSkgcmV0dXJuIHMucmVwbGFjZShlbmNyZWdleCwgZnVuY3Rpb24oJCQsICQxKSB7IHJldHVybiBlbmNvZGluZ3NbJCRdfHxTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KCQxLCQkLmluZGV4T2YoXCJ4XCIpPi0xPzE2OjEwKSl8fCQkOyB9KS5yZXBsYWNlKGNvZGVyZWdleCxmdW5jdGlvbihtLGMpIHtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjLDE2KSk7fSk7XG5cdFx0dmFyIGogPSBzLmluZGV4T2YoXCJdXT5cIik7XG5cdFx0cmV0dXJuIHVuZXNjYXBleG1sKHMuc2xpY2UoMCwgaSkpICsgcy5zbGljZShpKzksaikgKyB1bmVzY2FwZXhtbChzLnNsaWNlKGorMykpO1xuXHR9O1xufSkoKTtcblxudmFyIGRlY3JlZ2V4PS9bJjw+J1wiXS9nLCBjaGFyZWdleCA9IC9bXFx1MDAwMC1cXHUwMDA4XFx1MDAwYi1cXHUwMDFmXS9nO1xuZnVuY3Rpb24gZXNjYXBleG1sKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3tcblx0dmFyIHMgPSB0ZXh0ICsgJyc7XG5cdHJldHVybiBzLnJlcGxhY2UoZGVjcmVnZXgsIGZ1bmN0aW9uKHkpIHsgcmV0dXJuIHJlbmNvZGluZ1t5XTsgfSkucmVwbGFjZShjaGFyZWdleCxmdW5jdGlvbihzKSB7IHJldHVybiBcIl94XCIgKyAoXCIwMDBcIitzLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkgKyBcIl9cIjt9KTtcbn1cbmZ1bmN0aW9uIGVzY2FwZXhtbHRhZyh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi97IHJldHVybiBlc2NhcGV4bWwodGV4dCkucmVwbGFjZSgvIC9nLFwiX3gwMDIwX1wiKTsgfVxuXG52YXIgaHRtbGNoYXJlZ2V4ID0gL1tcXHUwMDAwLVxcdTAwMWZdL2c7XG5mdW5jdGlvbiBlc2NhcGVodG1sKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3tcblx0dmFyIHMgPSB0ZXh0ICsgJyc7XG5cdHJldHVybiBzLnJlcGxhY2UoZGVjcmVnZXgsIGZ1bmN0aW9uKHkpIHsgcmV0dXJuIHJlbmNvZGluZ1t5XTsgfSkucmVwbGFjZSgvXFxuL2csIFwiPGJyLz5cIikucmVwbGFjZShodG1sY2hhcmVnZXgsZnVuY3Rpb24ocykgeyByZXR1cm4gXCImI3hcIiArIChcIjAwMFwiK3MuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSArIFwiO1wiOyB9KTtcbn1cblxuZnVuY3Rpb24gZXNjYXBleGxtbCh0ZXh0Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzID0gdGV4dCArICcnO1xuXHRyZXR1cm4gcy5yZXBsYWNlKGRlY3JlZ2V4LCBmdW5jdGlvbih5KSB7IHJldHVybiByZW5jb2RpbmdbeV07IH0pLnJlcGxhY2UoaHRtbGNoYXJlZ2V4LGZ1bmN0aW9uKHMpIHsgcmV0dXJuIFwiJiN4XCIgKyAocy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkudG9VcHBlckNhc2UoKSArIFwiO1wiOyB9KTtcbn1cblxuLyogVE9ETzogaGFuZGxlIGNvZGVwYWdlcyAqL1xudmFyIHhsbWxfZml4c3RyLyo6U3RyaW5nQ29udiovID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIGVudHJlZ2V4ID0gLyYjKFxcZCspOy9nO1xuXHRmdW5jdGlvbiBlbnRyZXBsKCQkLyo6c3RyaW5nKi8sJDEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KCQxLDEwKSk7IH1cblx0cmV0dXJuIGZ1bmN0aW9uIHhsbWxfZml4c3RyKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHN0ci5yZXBsYWNlKGVudHJlZ2V4LGVudHJlcGwpOyB9O1xufSkoKTtcbmZ1bmN0aW9uIHhsbWxfdW5maXhzdHIoc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gc3RyLnJlcGxhY2UoLyhcXHJcXG58W1xcclxcbl0pL2csXCJcXCYjMTA7XCIpOyB9XG5cbmZ1bmN0aW9uIHBhcnNleG1sYm9vbCh2YWx1ZS8qOmFueSovKS8qOmJvb2xlYW4qLyB7XG5cdHN3aXRjaCh2YWx1ZSkge1xuXHRcdGNhc2UgMTogY2FzZSB0cnVlOiBjYXNlICcxJzogY2FzZSAndHJ1ZSc6IGNhc2UgJ1RSVUUnOiByZXR1cm4gdHJ1ZTtcblx0XHQvKiBjYXNlICcwJzogY2FzZSAnZmFsc2UnOiBjYXNlICdGQUxTRSc6Ki9cblx0XHRkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXRmOHJlYWRhKG9yaWcvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvdXQgPSBcIlwiLCBpID0gMCwgYyA9IDAsIGQgPSAwLCBlID0gMCwgZiA9IDAsIHcgPSAwO1xuXHR3aGlsZSAoaSA8IG9yaWcubGVuZ3RoKSB7XG5cdFx0YyA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmIChjIDwgMTI4KSB7IG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOyBjb250aW51ZTsgfVxuXHRcdGQgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKTtcblx0XHRpZiAoYz4xOTEgJiYgYzwyMjQpIHsgZiA9ICgoYyAmIDMxKSA8PCA2KTsgZiB8PSAoZCAmIDYzKTsgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZik7IGNvbnRpbnVlOyB9XG5cdFx0ZSA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmIChjIDwgMjQwKSB7IG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDE1KSA8PCAxMikgfCAoKGQgJiA2MykgPDwgNikgfCAoZSAmIDYzKSk7IGNvbnRpbnVlOyB9XG5cdFx0ZiA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdHcgPSAoKChjICYgNykgPDwgMTgpIHwgKChkICYgNjMpIDw8IDEyKSB8ICgoZSAmIDYzKSA8PCA2KSB8IChmICYgNjMpKS02NTUzNjtcblx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4MDAgKyAoKHc+Pj4xMCkmMTAyMykpO1xuXHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4REMwMCArICh3JjEwMjMpKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiB1dGY4cmVhZGIoZGF0YSkge1xuXHR2YXIgb3V0ID0gbmV3X3Jhd19idWYoMipkYXRhLmxlbmd0aCksIHcsIGksIGogPSAxLCBrID0gMCwgd3c9MCwgYztcblx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrPWopIHtcblx0XHRqID0gMTtcblx0XHRpZigoYz1kYXRhLmNoYXJDb2RlQXQoaSkpIDwgMTI4KSB3ID0gYztcblx0XHRlbHNlIGlmKGMgPCAyMjQpIHsgdyA9IChjJjMxKSo2NCsoZGF0YS5jaGFyQ29kZUF0KGkrMSkmNjMpOyBqPTI7IH1cblx0XHRlbHNlIGlmKGMgPCAyNDApIHsgdz0oYyYxNSkqNDA5NisoZGF0YS5jaGFyQ29kZUF0KGkrMSkmNjMpKjY0KyhkYXRhLmNoYXJDb2RlQXQoaSsyKSY2Myk7IGo9MzsgfVxuXHRcdGVsc2UgeyBqID0gNDtcblx0XHRcdHcgPSAoYyAmIDcpKjI2MjE0NCsoZGF0YS5jaGFyQ29kZUF0KGkrMSkmNjMpKjQwOTYrKGRhdGEuY2hhckNvZGVBdChpKzIpJjYzKSo2NCsoZGF0YS5jaGFyQ29kZUF0KGkrMykmNjMpO1xuXHRcdFx0dyAtPSA2NTUzNjsgd3cgPSAweEQ4MDAgKyAoKHc+Pj4xMCkmMTAyMyk7IHcgPSAweERDMDAgKyAodyYxMDIzKTtcblx0XHR9XG5cdFx0aWYod3cgIT09IDApIHsgb3V0W2srK10gPSB3dyYyNTU7IG91dFtrKytdID0gd3c+Pj44OyB3dyA9IDA7IH1cblx0XHRvdXRbaysrXSA9IHclMjU2OyBvdXRbaysrXSA9IHc+Pj44O1xuXHR9XG5cdHJldHVybiBvdXQuc2xpY2UoMCxrKS50b1N0cmluZygndWNzMicpO1xufVxuXG5mdW5jdGlvbiB1dGY4cmVhZGMoZGF0YSkgeyByZXR1cm4gQnVmZmVyX2Zyb20oZGF0YSwgJ2JpbmFyeScpLnRvU3RyaW5nKCd1dGY4Jyk7IH1cblxudmFyIHV0Zjhjb3JwdXMgPSBcImZvbyBiYXIgYmF6XFx1MDBlMlxcdTAwOThcXHUwMDgzXFx1MDBmMFxcdTAwOWZcXHUwMDhkXFx1MDBhM1wiO1xudmFyIHV0ZjhyZWFkID0gaGFzX2J1ZiAmJiAoLyojX19QVVJFX18qL3V0ZjhyZWFkYyh1dGY4Y29ycHVzKSA9PSAvKiNfX1BVUkVfXyovdXRmOHJlYWRhKHV0Zjhjb3JwdXMpICYmIHV0ZjhyZWFkYyB8fCAvKiNfX1BVUkVfXyovdXRmOHJlYWRiKHV0Zjhjb3JwdXMpID09IC8qI19fUFVSRV9fKi91dGY4cmVhZGEodXRmOGNvcnB1cykgJiYgdXRmOHJlYWRiKSB8fCB1dGY4cmVhZGE7XG5cbnZhciB1dGY4d3JpdGUvKjpTdHJpbmdDb252Ki8gPSBoYXNfYnVmID8gZnVuY3Rpb24oZGF0YSkgeyByZXR1cm4gQnVmZmVyX2Zyb20oZGF0YSwgJ3V0ZjgnKS50b1N0cmluZyhcImJpbmFyeVwiKTsgfSA6IGZ1bmN0aW9uKG9yaWcvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgaSA9IDAsIGMgPSAwLCBkID0gMDtcblx0d2hpbGUoaSA8IG9yaWcubGVuZ3RoKSB7XG5cdFx0YyA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdHN3aXRjaCh0cnVlKSB7XG5cdFx0XHRjYXNlIGMgPCAxMjg6IG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpOyBicmVhaztcblx0XHRcdGNhc2UgYyA8IDIwNDg6XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTkyICsgKGMgPj4gNikpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggKyAoYyAmIDYzKSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgYyA+PSA1NTI5NiAmJiBjIDwgNTczNDQ6XG5cdFx0XHRcdGMgLT0gNTUyOTY7IGQgPSBvcmlnLmNoYXJDb2RlQXQoaSsrKSAtIDU2MzIwICsgKGM8PDEwKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyNDAgKyAoKGQgPj4xOCkgJiA3KSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE0NCArICgoZCA+PjEyKSAmIDYzKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArICgoZCA+PiA2KSAmIDYzKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArIChkICYgNjMpKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQgKyAoYyA+PiAxMikpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggKyAoKGMgPj4gNikgJiA2MykpKTtcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggKyAoYyAmIDYzKSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIik7XG59O1xuXG4vLyBtYXRjaGVzIDxmb28+Li4uPC9mb28+IGV4dHJhY3RzIGNvbnRlbnRcbnZhciBtYXRjaHRhZyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBtdGNhY2hlLyo6e1trOnN0cmluZ106UmVnRXhwfSovID0gKHt9Lyo6YW55Ki8pO1xuXHRyZXR1cm4gZnVuY3Rpb24gbWF0Y2h0YWcoZi8qOnN0cmluZyovLGcvKjo/c3RyaW5nKi8pLyo6UmVnRXhwKi8ge1xuXHRcdHZhciB0ID0gZitcInxcIisoZ3x8XCJcIik7XG5cdFx0aWYobXRjYWNoZVt0XSkgcmV0dXJuIG10Y2FjaGVbdF07XG5cdFx0cmV0dXJuIChtdGNhY2hlW3RdID0gbmV3IFJlZ0V4cCgnPCg/OlxcXFx3KzopPycrZisnKD86IHhtbDpzcGFjZT1cInByZXNlcnZlXCIpPyg/OltePl0qKT4oW1xcXFxzXFxcXFNdKj8pPC8oPzpcXFxcdys6KT8nK2YrJz4nLCgoZ3x8XCJcIikvKjphbnkqLykpKTtcblx0fTtcbn0pKCk7XG5cbnZhciBodG1sZGVjb2RlLyo6eyhzOnN0cmluZyk6c3RyaW5nfSovID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIGVudGl0aWVzLyo6QXJyYXk8W1JlZ0V4cCwgc3RyaW5nXT4qLyA9IFtcblx0XHRbJ25ic3AnLCAnICddLCBbJ21pZGRvdCcsICfCtyddLFxuXHRcdFsncXVvdCcsICdcIiddLCBbJ2Fwb3MnLCBcIidcIl0sIFsnZ3QnLCAgICc+J10sIFsnbHQnLCAgICc8J10sIFsnYW1wJywgICcmJ11cblx0XS5tYXAoZnVuY3Rpb24oeC8qOltzdHJpbmcsIHN0cmluZ10qLykgeyByZXR1cm4gW25ldyBSZWdFeHAoJyYnICsgeFswXSArICc7JywgXCJpZ1wiKSwgeFsxXV07IH0pO1xuXHRyZXR1cm4gZnVuY3Rpb24gaHRtbGRlY29kZShzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8gPSBzdHJcblx0XHRcdFx0Ly8gUmVtb3ZlIG5ldyBsaW5lcyBhbmQgc3BhY2VzIGZyb20gc3RhcnQgb2YgY29udGVudFxuXHRcdFx0XHQucmVwbGFjZSgvXltcXHRcXG5cXHIgXSsvLCBcIlwiKVxuXHRcdFx0XHQvLyBSZW1vdmUgbmV3IGxpbmVzIGFuZCBzcGFjZXMgZnJvbSBlbmQgb2YgY29udGVudFxuXHRcdFx0XHQucmVwbGFjZSgvW1xcdFxcblxcciBdKyQvLFwiXCIpXG5cdFx0XHRcdC8vIEFkZGVkIGxpbmUgd2hpY2ggcmVtb3ZlcyBhbnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyBhZnRlciBhbmQgYmVmb3JlIGh0bWwgdGFnc1xuXHRcdFx0XHQucmVwbGFjZSgvPlxccysvZyxcIj5cIikucmVwbGFjZSgvXFxzKzwvZyxcIjxcIilcblx0XHRcdFx0Ly8gUmVwbGFjZSByZW1haW5pbmcgbmV3IGxpbmVzIGFuZCBzcGFjZXMgd2l0aCBzcGFjZVxuXHRcdFx0XHQucmVwbGFjZSgvW1xcdFxcblxcciBdKy9nLCBcIiBcIilcblx0XHRcdFx0Ly8gUmVwbGFjZSA8YnI+IHRhZ3Mgd2l0aCBuZXcgbGluZXNcblx0XHRcdFx0LnJlcGxhY2UoLzxcXHMqW2JCXVtyUl1cXHMqXFwvPz4vZyxcIlxcblwiKVxuXHRcdFx0XHQvLyBTdHJpcCBIVE1MIGVsZW1lbnRzXG5cdFx0XHRcdC5yZXBsYWNlKC88W14+XSo+L2csXCJcIik7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKSBvID0gby5yZXBsYWNlKGVudGl0aWVzW2ldWzBdLCBlbnRpdGllc1tpXVsxXSk7XG5cdFx0cmV0dXJuIG87XG5cdH07XG59KSgpO1xuXG52YXIgdnRyZWdleCA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKXsgdmFyIHZ0X2NhY2hlID0ge307XG5cdHJldHVybiBmdW5jdGlvbiB2dF9yZWdleChidCkge1xuXHRcdGlmKHZ0X2NhY2hlW2J0XSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdnRfY2FjaGVbYnRdO1xuXHRcdHJldHVybiAodnRfY2FjaGVbYnRdID0gbmV3IFJlZ0V4cChcIjwoPzp2dDopP1wiICsgYnQgKyBcIj4oW1xcXFxzXFxcXFNdKj8pPC8oPzp2dDopP1wiICsgYnQgKyBcIj5cIiwgJ2cnKSApO1xufTt9KSgpO1xudmFyIHZ0dnJlZ2V4ID0gLzxcXC8/KD86dnQ6KT92YXJpYW50Pi9nLCB2dG1yZWdleCA9IC88KD86dnQ6KShbXj5dKik+KFtcXHNcXFNdKik8LztcbmZ1bmN0aW9uIHBhcnNlVmVjdG9yKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpBcnJheTx7djpzdHJpbmcsdDpzdHJpbmd9PiovIHtcblx0dmFyIGggPSBwYXJzZXhtbHRhZyhkYXRhKTtcblxuXHR2YXIgbWF0Y2hlcy8qOkFycmF5PHN0cmluZz4qLyA9IGRhdGEubWF0Y2godnRyZWdleChoLmJhc2VUeXBlKSl8fFtdO1xuXHR2YXIgcmVzLyo6QXJyYXk8YW55PiovID0gW107XG5cdGlmKG1hdGNoZXMubGVuZ3RoICE9IGguc2l6ZSkge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmV4cGVjdGVkIHZlY3RvciBsZW5ndGggXCIgKyBtYXRjaGVzLmxlbmd0aCArIFwiICE9IFwiICsgaC5zaXplKTtcblx0XHRyZXR1cm4gcmVzO1xuXHR9XG5cdG1hdGNoZXMuZm9yRWFjaChmdW5jdGlvbih4Lyo6c3RyaW5nKi8pIHtcblx0XHR2YXIgdiA9IHgucmVwbGFjZSh2dHZyZWdleCxcIlwiKS5tYXRjaCh2dG1yZWdleCk7XG5cdFx0aWYodikgcmVzLnB1c2goe3Y6dXRmOHJlYWQodlsyXSksIHQ6dlsxXX0pO1xuXHR9KTtcblx0cmV0dXJuIHJlcztcbn1cblxudmFyIHd0cmVnZXggPSAvKF5cXHN8XFxzJHxcXG4pLztcbmZ1bmN0aW9uIHdyaXRldGFnKGYvKjpzdHJpbmcqLyxnLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gJzwnICsgZiArIChnLm1hdGNoKHd0cmVnZXgpPycgeG1sOnNwYWNlPVwicHJlc2VydmVcIicgOiBcIlwiKSArICc+JyArIGcgKyAnPC8nICsgZiArICc+JzsgfVxuXG5mdW5jdGlvbiB3eHRfaGVscGVyKGgpLyo6c3RyaW5nKi8geyByZXR1cm4ga2V5cyhoKS5tYXAoZnVuY3Rpb24oaykgeyByZXR1cm4gXCIgXCIgKyBrICsgJz1cIicgKyBoW2tdICsgJ1wiJzt9KS5qb2luKFwiXCIpOyB9XG5mdW5jdGlvbiB3cml0ZXh0YWcoZi8qOnN0cmluZyovLGcvKjo/c3RyaW5nKi8saCkgeyByZXR1cm4gJzwnICsgZiArICgoaCAhPSBudWxsKSA/IHd4dF9oZWxwZXIoaCkgOiBcIlwiKSArICgoZyAhPSBudWxsKSA/IChnLm1hdGNoKHd0cmVnZXgpPycgeG1sOnNwYWNlPVwicHJlc2VydmVcIicgOiBcIlwiKSArICc+JyArIGcgKyAnPC8nICsgZiA6IFwiL1wiKSArICc+Jzt9XG5cbmZ1bmN0aW9uIHdyaXRlX3czY2R0ZihkLyo6RGF0ZSovLCB0Lyo6P2Jvb2xlYW4qLykvKjpzdHJpbmcqLyB7IHRyeSB7IHJldHVybiBkLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuXFxkKi8sXCJcIik7IH0gY2F0Y2goZSkgeyBpZih0KSB0aHJvdyBlOyB9IHJldHVybiBcIlwiOyB9XG5cbmZ1bmN0aW9uIHdyaXRlX3Z0KHMsIHhsc3gvKjo/Ym9vbGVhbiovKS8qOnN0cmluZyovIHtcblx0c3dpdGNoKHR5cGVvZiBzKSB7XG5cdFx0Y2FzZSAnc3RyaW5nJzpcblx0XHRcdHZhciBvID0gd3JpdGV4dGFnKCd2dDpscHdzdHInLCBlc2NhcGV4bWwocykpO1xuXHRcdFx0aWYoeGxzeCkgbyA9IG8ucmVwbGFjZSgvJnF1b3Q7L2csIFwiX3gwMDIyX1wiKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdGNhc2UgJ251bWJlcic6IHJldHVybiB3cml0ZXh0YWcoKHN8MCk9PXM/J3Z0Omk0JzondnQ6cjgnLCBlc2NhcGV4bWwoU3RyaW5nKHMpKSk7XG5cdFx0Y2FzZSAnYm9vbGVhbic6IHJldHVybiB3cml0ZXh0YWcoJ3Z0OmJvb2wnLHM/J3RydWUnOidmYWxzZScpO1xuXHR9XG5cdGlmKHMgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gd3JpdGV4dGFnKCd2dDpmaWxldGltZScsIHdyaXRlX3czY2R0ZihzKSk7XG5cdHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBzZXJpYWxpemUgXCIgKyBzKTtcbn1cblxuZnVuY3Rpb24geGxtbF9ub3JtYWxpemUoZCkvKjpzdHJpbmcqLyB7XG5cdGlmKGhhc19idWYgJiYvKjo6dHlwZW9mIEJ1ZmZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkICE9IG51bGwgJiYgZCBpbnN0YW5jZW9mIEJ1ZmZlciAmJiovIEJ1ZmZlci5pc0J1ZmZlcihkKSkgcmV0dXJuIGQudG9TdHJpbmcoJ3V0ZjgnKTtcblx0aWYodHlwZW9mIGQgPT09ICdzdHJpbmcnKSByZXR1cm4gZDtcblx0LyogZHVrdGFwZSAqL1xuXHRpZih0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiB1dGY4cmVhZChhMnMoYWIyYShkKSkpO1xuXHR0aHJvdyBuZXcgRXJyb3IoXCJCYWQgaW5wdXQgZm9ybWF0OiBleHBlY3RlZCBCdWZmZXIgb3Igc3RyaW5nXCIpO1xufVxuLyogVU9TIHVzZXMgQ0pLIGluIHRhZ3MgKi9cbnZhciB4bG1scmVnZXggPSAvPChcXC8/KShbXlxccz8+PCFcXC86XSo6fCkoW15cXHM/PD46XFwvXSspKD86W1xccz86XFwvXVtePl0qKT8+L21nO1xuLy92YXIgeGxtbHJlZ2V4ID0gLzwoXFwvPykoW2EtejAtOV0qOnwpKFxcdyspW14+XSo+L21nO1xuXG52YXIgWE1MTlMgPSAoe1xuXHRDT1JFX1BST1BTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMnLFxuXHRDVVNUX1BST1BTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbS1wcm9wZXJ0aWVzXCIsXG5cdEVYVF9QUk9QUzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzXCIsXG5cdENUOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzJyxcblx0UkVMUzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcycsXG5cdFRDTU5UOiAnaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE4L3RocmVhZGVkY29tbWVudHMnLFxuXHQnZGMnOiAnaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nLFxuXHQnZGN0ZXJtcyc6ICdodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvJyxcblx0J2RjbWl0eXBlJzogJ2h0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS8nLFxuXHQnbXgnOiAnaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvbWFjL2V4Y2VsLzIwMDgvbWFpbicsXG5cdCdyJzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMnLFxuXHQnc2pzJzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvc2hlZXRqcy9jb3JlLXByb3BlcnRpZXMnLFxuXHQndnQnOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMnLFxuXHQneHNpJzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJyxcblx0J3hzZCc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSdcbn0vKjphbnkqLyk7XG5cbnZhciBYTUxOU19tYWluID0gW1xuXHQnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluJyxcblx0J2h0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL3NwcmVhZHNoZWV0bWwvbWFpbicsXG5cdCdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4nLFxuXHQnaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvZXhjZWwvMjAwNi8yJ1xuXTtcblxudmFyIFhMTUxOUyA9ICh7XG5cdCdvJzogICAgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZScsXG5cdCd4JzogICAgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOmV4Y2VsJyxcblx0J3NzJzogICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6c3ByZWFkc2hlZXQnLFxuXHQnZHQnOiAgICd1dWlkOkMyRjQxMDEwLTY1QjMtMTFkMS1BMjlGLTAwQUEwMEMxNDg4MicsXG5cdCdtdic6ICAgJ2h0dHA6Ly9tYWNWbWxTY2hlbWFVcmknLFxuXHQndic6ICAgICd1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCcsXG5cdCdodG1sJzogJ2h0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAnXG59Lyo6YW55Ki8pO1xuZnVuY3Rpb24gcmVhZF9kb3VibGVfbGUoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdHZhciBzID0gMSAtIDIgKiAoYltpZHggKyA3XSA+Pj4gNyk7XG5cdHZhciBlID0gKChiW2lkeCArIDddICYgMHg3ZikgPDwgNCkgKyAoKGJbaWR4ICsgNl0gPj4+IDQpICYgMHgwZik7XG5cdHZhciBtID0gKGJbaWR4KzZdJjB4MGYpO1xuXHRmb3IodmFyIGkgPSA1OyBpID49IDA7IC0taSkgbSA9IG0gKiAyNTYgKyBiW2lkeCArIGldO1xuXHRpZihlID09IDB4N2ZmKSByZXR1cm4gbSA9PSAwID8gKHMgKiBJbmZpbml0eSkgOiBOYU47XG5cdGlmKGUgPT0gMCkgZSA9IC0xMDIyO1xuXHRlbHNlIHsgZSAtPSAxMDIzOyBtICs9IE1hdGgucG93KDIsNTIpOyB9XG5cdHJldHVybiBzICogTWF0aC5wb3coMiwgZSAtIDUyKSAqIG07XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2RvdWJsZV9sZShiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIHYvKjpudW1iZXIqLywgaWR4Lyo6bnVtYmVyKi8pIHtcblx0dmFyIGJzID0gKCgoKHYgPCAwKSB8fCAoMS92ID09IC1JbmZpbml0eSkpID8gMSA6IDApIDw8IDcpLCBlID0gMCwgbSA9IDA7XG5cdHZhciBhdiA9IGJzID8gKC12KSA6IHY7XG5cdGlmKCFpc0Zpbml0ZShhdikpIHsgZSA9IDB4N2ZmOyBtID0gaXNOYU4odikgPyAweDY5NjkgOiAwOyB9XG5cdGVsc2UgaWYoYXYgPT0gMCkgZSA9IG0gPSAwO1xuXHRlbHNlIHtcblx0XHRlID0gTWF0aC5mbG9vcihNYXRoLmxvZyhhdikgLyBNYXRoLkxOMik7XG5cdFx0bSA9IGF2ICogTWF0aC5wb3coMiwgNTIgLSBlKTtcblx0XHRpZigoZSA8PSAtMTAyMykgJiYgKCFpc0Zpbml0ZShtKSB8fCAobSA8IE1hdGgucG93KDIsNTIpKSkpIHsgZSA9IC0xMDIyOyB9XG5cdFx0ZWxzZSB7IG0gLT0gTWF0aC5wb3coMiw1Mik7IGUrPTEwMjM7IH1cblx0fVxuXHRmb3IodmFyIGkgPSAwOyBpIDw9IDU7ICsraSwgbS89MjU2KSBiW2lkeCArIGldID0gbSAmIDB4ZmY7XG5cdGJbaWR4ICsgNl0gPSAoKGUgJiAweDBmKSA8PCA0KSB8IChtICYgMHhmKTtcblx0YltpZHggKyA3XSA9IChlID4+IDQpIHwgYnM7XG59XG5cbnZhciBfX190b0J1ZmZlciA9IGZ1bmN0aW9uKGJ1ZnMvKjpBcnJheTxBcnJheTxSYXdCeXRlcz4gPiovKS8qOlJhd0J5dGVzKi8geyB2YXIgeD1bXSx3PTEwMjQwOyBmb3IodmFyIGk9MDtpPGJ1ZnNbMF0ubGVuZ3RoOysraSkgaWYoYnVmc1swXVtpXSkgZm9yKHZhciBqPTAsTD1idWZzWzBdW2ldLmxlbmd0aDtqPEw7ais9dykgeC5wdXNoLmFwcGx5KHgsIGJ1ZnNbMF1baV0uc2xpY2UoaixqK3cpKTsgcmV0dXJuIHg7IH07XG52YXIgX190b0J1ZmZlciA9IGhhc19idWYgPyBmdW5jdGlvbihidWZzKSB7IHJldHVybiAoYnVmc1swXS5sZW5ndGggPiAwICYmIEJ1ZmZlci5pc0J1ZmZlcihidWZzWzBdWzBdKSkgPyBCdWZmZXIuY29uY2F0KGJ1ZnNbMF0ubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih4KSA/IHggOiBCdWZmZXJfZnJvbSh4KTsgfSkpIDogX19fdG9CdWZmZXIoYnVmcyk7fSA6IF9fX3RvQnVmZmVyO1xuXG52YXIgX19fdXRmMTZsZSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKS8qOnN0cmluZyovIHsgdmFyIHNzLyo6QXJyYXk8c3RyaW5nPiovPVtdOyBmb3IodmFyIGk9czsgaTxlOyBpKz0yKSBzcy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoX19yZWFkVUludDE2TEUoYixpKSkpOyByZXR1cm4gc3Muam9pbihcIlwiKS5yZXBsYWNlKGNocjAsJycpOyB9O1xudmFyIF9fdXRmMTZsZSA9IGhhc19idWYgPyBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX3V0ZjE2bGUoYixzLGUpOyByZXR1cm4gYi50b1N0cmluZygndXRmMTZsZScscyxlKS5yZXBsYWNlKGNocjAsJycpLyoucmVwbGFjZShjaHIxLCchJykqLzsgfSA6IF9fX3V0ZjE2bGU7XG5cbnZhciBfX19oZXhsaWZ5ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgc3MvKjpBcnJheTxzdHJpbmc+Ki89W107IGZvcih2YXIgaT1zOyBpPHMrbDsgKytpKSBzcy5wdXNoKChcIjBcIiArIGJbaV0udG9TdHJpbmcoMTYpKS5zbGljZSgtMikpOyByZXR1cm4gc3Muam9pbihcIlwiKTsgfTtcbnZhciBfX2hleGxpZnkgPSBoYXNfYnVmID8gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiAmJiBiIGluc3RhbmNlb2YgQnVmZmVyKi8gPyBiLnRvU3RyaW5nKCdoZXgnLHMscytsKSA6IF9fX2hleGxpZnkoYixzLGwpOyB9IDogX19faGV4bGlmeTtcblxudmFyIF9fX3V0ZjggPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykgeyB2YXIgc3M9W107IGZvcih2YXIgaT1zOyBpPGU7IGkrKykgc3MucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKF9fcmVhZFVJbnQ4KGIsaSkpKTsgcmV0dXJuIHNzLmpvaW4oXCJcIik7IH07XG52YXIgX191dGY4ID0gaGFzX2J1ZiA/IGZ1bmN0aW9uIHV0ZjhfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIHMvKjpudW1iZXIqLywgZS8qOm51bWJlciovKSB7IHJldHVybiAoQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiAmJiAoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgPyBiLnRvU3RyaW5nKCd1dGY4JyxzLGUpIDogX19fdXRmOChiLHMsZSk7IH0gOiBfX191dGY4O1xuXG52YXIgX19fbHBzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmOChiLCBpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcbnZhciBfX2xwc3RyID0gX19fbHBzdHI7XG5cbnZhciBfX19jcHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGY4KGIsIGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xudmFyIF9fY3BzdHIgPSBfX19jcHN0cjtcblxudmFyIF9fX2xwd3N0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IDIqX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG52YXIgX19scHdzdHIgPSBfX19scHdzdHI7XG5cbnZhciBfX19scHA0ID0gZnVuY3Rpb24gbHBwNF8oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjE2bGUoYiwgaSs0LGkrNCtsZW4pIDogXCJcIjt9O1xudmFyIF9fbHBwNCA9IF9fX2xwcDQ7XG5cbnZhciBfX184bHBwNCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGY4KGIsIGkrNCxpKzQrbGVuKSA6IFwiXCI7fTtcbnZhciBfXzhscHA0ID0gX19fOGxwcDQ7XG5cbnZhciBfX19kb3VibGUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKSB7IHJldHVybiByZWFkX2RvdWJsZV9sZShiLCBpZHgpO307XG52YXIgX19kb3VibGUgPSBfX19kb3VibGU7XG5cbnZhciBpc19idWYgPSBmdW5jdGlvbiBpc19idWZfYShhKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGEpIHx8ICh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhIGluc3RhbmNlb2YgVWludDhBcnJheSk7IH07XG5cbmlmKGhhc19idWYvKjo6ICYmIHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKi8pIHtcblx0X19scHN0ciA9IGZ1bmN0aW9uIGxwc3RyX2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fbHBzdHIoYiwgaSk7IHZhciBsZW4gPSBiLnJlYWRVSW50MzJMRShpKTsgcmV0dXJuIGxlbiA+IDAgPyBiLnRvU3RyaW5nKCd1dGY4JyxpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcblx0X19jcHN0ciA9IGZ1bmN0aW9uIGNwc3RyX2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fY3BzdHIoYiwgaSk7IHZhciBsZW4gPSBiLnJlYWRVSW50MzJMRShpKTsgcmV0dXJuIGxlbiA+IDAgPyBiLnRvU3RyaW5nKCd1dGY4JyxpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcblx0X19scHdzdHIgPSBmdW5jdGlvbiBscHdzdHJfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19scHdzdHIoYiwgaSk7IHZhciBsZW4gPSAyKmIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gYi50b1N0cmluZygndXRmMTZsZScsaSs0LGkrNCtsZW4tMSk7fTtcblx0X19scHA0ID0gZnVuY3Rpb24gbHBwNF9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX2xwcDQoYiwgaSk7IHZhciBsZW4gPSBiLnJlYWRVSW50MzJMRShpKTsgcmV0dXJuIGIudG9TdHJpbmcoJ3V0ZjE2bGUnLGkrNCxpKzQrbGVuKTt9O1xuXHRfXzhscHA0ID0gZnVuY3Rpb24gbHBwNF84YihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX184bHBwNChiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gYi50b1N0cmluZygndXRmOCcsaSs0LGkrNCtsZW4pO307XG5cdF9fZG91YmxlID0gZnVuY3Rpb24gZG91YmxlXyhiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZihCdWZmZXIuaXNCdWZmZXIoYikvKjo6JiYgYiBpbnN0YW5jZW9mIEJ1ZmZlciovKSByZXR1cm4gYi5yZWFkRG91YmxlTEUoaSk7IHJldHVybiBfX19kb3VibGUoYixpKTsgfTtcblx0aXNfYnVmID0gZnVuY3Rpb24gaXNfYnVmX2IoYSkgeyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGEpIHx8IEFycmF5LmlzQXJyYXkoYSkgfHwgKHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiICYmIGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KTsgfTtcbn1cblxuLyogZnJvbSBqcy14bHMgKi9cbmZ1bmN0aW9uIGNwZG9pdCgpIHtcblx0X191dGYxNmxlID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pIHsgcmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBiLnNsaWNlKHMsZSkpLnJlcGxhY2UoY2hyMCwgJycpOyB9O1xuXHRfX3V0ZjggPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykgeyByZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLCBiLnNsaWNlKHMsZSkpOyB9O1xuXHRfX2xwc3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9hbnNpLCBiLnNsaWNlKGkrNCwgaSs0K2xlbi0xKSkgOiBcIlwiO307XG5cdF9fY3BzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NvZGVwYWdlLCBiLnNsaWNlKGkrNCwgaSs0K2xlbi0xKSkgOiBcIlwiO307XG5cdF9fbHB3c3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gMipfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBiLnNsaWNlKGkrNCxpKzQrbGVuLTEpKSA6IFwiXCI7fTtcblx0X19scHA0ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgYi5zbGljZShpKzQsaSs0K2xlbikpIDogXCJcIjt9O1xuXHRfXzhscHA0ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyAkY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsIGIuc2xpY2UoaSs0LGkrNCtsZW4pKSA6IFwiXCI7fTtcbn1cbmlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIGNwZG9pdCgpO1xuXG52YXIgX19yZWFkVUludDggPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgcmV0dXJuIGJbaWR4XTsgfTtcbnZhciBfX3JlYWRVSW50MTZMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gKGJbaWR4KzFdKigxPDw4KSkrYltpZHhdOyB9O1xudmFyIF9fcmVhZEludDE2TEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgdmFyIHUgPSAoYltpZHgrMV0qKDE8PDgpKStiW2lkeF07IHJldHVybiAodSA8IDB4ODAwMCkgPyB1IDogKCgweGZmZmYgLSB1ICsgMSkgKiAtMSk7IH07XG52YXIgX19yZWFkVUludDMyTEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHsgcmV0dXJuIGJbaWR4KzNdKigxPDwyNCkrKGJbaWR4KzJdPDwxNikrKGJbaWR4KzFdPDw4KStiW2lkeF07IH07XG52YXIgX19yZWFkSW50MzJMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gKGJbaWR4KzNdPDwyNCl8KGJbaWR4KzJdPDwxNil8KGJbaWR4KzFdPDw4KXxiW2lkeF07IH07XG52YXIgX19yZWFkSW50MzJCRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gKGJbaWR4XTw8MjQpfChiW2lkeCsxXTw8MTYpfChiW2lkeCsyXTw8OCl8YltpZHgrM107IH07XG5cbmZ1bmN0aW9uIFJlYWRTaGlmdChzaXplLyo6bnVtYmVyKi8sIHQvKjo/c3RyaW5nKi8pLyo6bnVtYmVyfHN0cmluZyovIHtcblx0dmFyIG89XCJcIiwgb0kvKjo6IDpudW1iZXIgPSAwKi8sIG9SLCBvbz1bXSwgdywgdnYsIGksIGxvYztcblx0c3dpdGNoKHQpIHtcblx0XHRjYXNlICdkYmNzJzpcblx0XHRcdGxvYyA9IHRoaXMubDtcblx0XHRcdGlmKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSBvID0gdGhpcy5zbGljZSh0aGlzLmwsIHRoaXMubCsyKnNpemUpLnRvU3RyaW5nKFwidXRmMTZsZVwiKTtcblx0XHRcdGVsc2UgZm9yKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7IG8rPVN0cmluZy5mcm9tQ2hhckNvZGUoX19yZWFkVUludDE2TEUodGhpcywgbG9jKSk7IGxvYys9MjsgfVxuXHRcdFx0c2l6ZSAqPSAyO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICd1dGY4JzogbyA9IF9fdXRmOCh0aGlzLCB0aGlzLmwsIHRoaXMubCArIHNpemUpOyBicmVhaztcblx0XHRjYXNlICd1dGYxNmxlJzogc2l6ZSAqPSAyOyBvID0gX191dGYxNmxlKHRoaXMsIHRoaXMubCwgdGhpcy5sICsgc2l6ZSk7IGJyZWFrO1xuXG5cdFx0Y2FzZSAnd3N0cic6XG5cdFx0XHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSBvID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIHRoaXMuc2xpY2UodGhpcy5sLCB0aGlzLmwrMipzaXplKSk7XG5cdFx0XHRlbHNlIHJldHVybiBSZWFkU2hpZnQuY2FsbCh0aGlzLCBzaXplLCAnZGJjcycpO1xuXHRcdFx0c2l6ZSA9IDIgKiBzaXplOyBicmVhaztcblxuXHRcdC8qIFtNUy1PTEVEU10gMi4xLjQgTGVuZ3RoUHJlZml4ZWRBbnNpU3RyaW5nICovXG5cdFx0Y2FzZSAnbHBzdHItYW5zaSc6IG8gPSBfX2xwc3RyKHRoaXMsIHRoaXMubCk7IHNpemUgPSA0ICsgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgYnJlYWs7XG5cdFx0Y2FzZSAnbHBzdHItY3AnOiBvID0gX19jcHN0cih0aGlzLCB0aGlzLmwpOyBzaXplID0gNCArIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IGJyZWFrO1xuXHRcdC8qIFtNUy1PTEVEU10gMi4xLjUgTGVuZ3RoUHJlZml4ZWRVbmljb2RlU3RyaW5nICovXG5cdFx0Y2FzZSAnbHB3c3RyJzogbyA9IF9fbHB3c3RyKHRoaXMsIHRoaXMubCk7IHNpemUgPSA0ICsgMiAqIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IGJyZWFrO1xuXHRcdC8qIFtNUy1PRkZDUllQVE9dIDIuMS4yIExlbmd0aC1QcmVmaXhlZCBQYWRkZWQgVW5pY29kZSBTdHJpbmcgKFVOSUNPREUtTFAtUDQpICovXG5cdFx0Y2FzZSAnbHBwNCc6IHNpemUgPSA0ICsgIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IG8gPSBfX2xwcDQodGhpcywgdGhpcy5sKTsgaWYoc2l6ZSAmIDB4MDIpIHNpemUgKz0gMjsgYnJlYWs7XG5cdFx0LyogW01TLU9GRkNSWVBUT10gMi4xLjMgTGVuZ3RoLVByZWZpeGVkIFVURi04IFN0cmluZyAoVVRGLTgtTFAtUDQpICovXG5cdFx0Y2FzZSAnOGxwcDQnOiBzaXplID0gNCArICBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBvID0gX184bHBwNCh0aGlzLCB0aGlzLmwpOyBpZihzaXplICYgMHgwMykgc2l6ZSArPSA0IC0gKHNpemUgJiAweDAzKTsgYnJlYWs7XG5cblx0XHRjYXNlICdjc3RyJzogc2l6ZSA9IDA7IG8gPSBcIlwiO1xuXHRcdFx0d2hpbGUoKHc9X19yZWFkVUludDgodGhpcywgdGhpcy5sICsgc2l6ZSsrKSkhPT0wKSBvby5wdXNoKF9nZXRjaGFyKHcpKTtcblx0XHRcdG8gPSBvby5qb2luKFwiXCIpOyBicmVhaztcblx0XHRjYXNlICdfd3N0cic6IHNpemUgPSAwOyBvID0gXCJcIjtcblx0XHRcdHdoaWxlKCh3PV9fcmVhZFVJbnQxNkxFKHRoaXMsdGhpcy5sICtzaXplKSkhPT0wKXtvby5wdXNoKF9nZXRjaGFyKHcpKTtzaXplKz0yO31cblx0XHRcdHNpemUrPTI7IG8gPSBvby5qb2luKFwiXCIpOyBicmVhaztcblxuXHRcdC8qIHNiY3MgYW5kIGRiY3Mgc3VwcG9ydCBjb250aW51ZSByZWNvcmRzIGluIHRoZSBTU1Qgd2F5IFRPRE8gY29kZXBhZ2VzICovXG5cdFx0Y2FzZSAnZGJjcy1jb250JzogbyA9IFwiXCI7IGxvYyA9IHRoaXMubDtcblx0XHRcdGZvcihpID0gMDsgaSA8IHNpemU7ICsraSkge1xuXHRcdFx0XHRpZih0aGlzLmxlbnMgJiYgdGhpcy5sZW5zLmluZGV4T2YobG9jKSAhPT0gLTEpIHtcblx0XHRcdFx0XHR3ID0gX19yZWFkVUludDgodGhpcywgbG9jKTtcblx0XHRcdFx0XHR0aGlzLmwgPSBsb2MgKyAxO1xuXHRcdFx0XHRcdHZ2ID0gUmVhZFNoaWZ0LmNhbGwodGhpcywgc2l6ZS1pLCB3ID8gJ2RiY3MtY29udCcgOiAnc2Jjcy1jb250Jyk7XG5cdFx0XHRcdFx0cmV0dXJuIG9vLmpvaW4oXCJcIikgKyB2djtcblx0XHRcdFx0fVxuXHRcdFx0XHRvby5wdXNoKF9nZXRjaGFyKF9fcmVhZFVJbnQxNkxFKHRoaXMsIGxvYykpKTtcblx0XHRcdFx0bG9jKz0yO1xuXHRcdFx0fSBvID0gb28uam9pbihcIlwiKTsgc2l6ZSAqPSAyOyBicmVhaztcblxuXHRcdGNhc2UgJ2Nwc3RyJzpcblx0XHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0byA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NvZGVwYWdlLCB0aGlzLnNsaWNlKHRoaXMubCwgdGhpcy5sICsgc2l6ZSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnc2Jjcy1jb250JzogbyA9IFwiXCI7IGxvYyA9IHRoaXMubDtcblx0XHRcdGZvcihpID0gMDsgaSAhPSBzaXplOyArK2kpIHtcblx0XHRcdFx0aWYodGhpcy5sZW5zICYmIHRoaXMubGVucy5pbmRleE9mKGxvYykgIT09IC0xKSB7XG5cdFx0XHRcdFx0dyA9IF9fcmVhZFVJbnQ4KHRoaXMsIGxvYyk7XG5cdFx0XHRcdFx0dGhpcy5sID0gbG9jICsgMTtcblx0XHRcdFx0XHR2diA9IFJlYWRTaGlmdC5jYWxsKHRoaXMsIHNpemUtaSwgdyA/ICdkYmNzLWNvbnQnIDogJ3NiY3MtY29udCcpO1xuXHRcdFx0XHRcdHJldHVybiBvby5qb2luKFwiXCIpICsgdnY7XG5cdFx0XHRcdH1cblx0XHRcdFx0b28ucHVzaChfZ2V0Y2hhcihfX3JlYWRVSW50OCh0aGlzLCBsb2MpKSk7XG5cdFx0XHRcdGxvYys9MTtcblx0XHRcdH0gbyA9IG9vLmpvaW4oXCJcIik7IGJyZWFrO1xuXG5cdFx0ZGVmYXVsdDpcblx0c3dpdGNoKHNpemUpIHtcblx0XHRjYXNlIDE6IG9JID0gX19yZWFkVUludDgodGhpcywgdGhpcy5sKTsgdGhpcy5sKys7IHJldHVybiBvSTtcblx0XHRjYXNlIDI6IG9JID0gKHQgPT09ICdpJyA/IF9fcmVhZEludDE2TEUgOiBfX3JlYWRVSW50MTZMRSkodGhpcywgdGhpcy5sKTsgdGhpcy5sICs9IDI7IHJldHVybiBvSTtcblx0XHRjYXNlIDQ6IGNhc2UgLTQ6XG5cdFx0XHRpZih0ID09PSAnaScgfHwgKCh0aGlzW3RoaXMubCszXSAmIDB4ODApPT09MCkpIHsgb0kgPSAoKHNpemUgPiAwKSA/IF9fcmVhZEludDMyTEUgOiBfX3JlYWRJbnQzMkJFKSh0aGlzLCB0aGlzLmwpOyB0aGlzLmwgKz0gNDsgcmV0dXJuIG9JOyB9XG5cdFx0XHRlbHNlIHsgb1IgPSBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyB0aGlzLmwgKz0gNDsgfSByZXR1cm4gb1I7XG5cdFx0Y2FzZSA4OiBjYXNlIC04OlxuXHRcdFx0aWYodCA9PT0gJ2YnKSB7XG5cdFx0XHRcdGlmKHNpemUgPT0gOCkgb1IgPSBfX2RvdWJsZSh0aGlzLCB0aGlzLmwpO1xuXHRcdFx0XHRlbHNlIG9SID0gX19kb3VibGUoW3RoaXNbdGhpcy5sKzddLHRoaXNbdGhpcy5sKzZdLHRoaXNbdGhpcy5sKzVdLHRoaXNbdGhpcy5sKzRdLHRoaXNbdGhpcy5sKzNdLHRoaXNbdGhpcy5sKzJdLHRoaXNbdGhpcy5sKzFdLHRoaXNbdGhpcy5sKzBdXSwgMCk7XG5cdFx0XHRcdHRoaXMubCArPSA4OyByZXR1cm4gb1I7XG5cdFx0XHR9IGVsc2Ugc2l6ZSA9IDg7XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgMTY6IG8gPSBfX2hleGxpZnkodGhpcywgdGhpcy5sLCBzaXplKTsgYnJlYWs7XG5cdH19XG5cdHRoaXMubCs9c2l6ZTsgcmV0dXJuIG87XG59XG5cbnZhciBfX3dyaXRlVUludDMyTEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIHZhbC8qOm51bWJlciovLCBpZHgvKjpudW1iZXIqLykvKjp2b2lkKi8geyBiW2lkeF0gPSAodmFsICYgMHhGRik7IGJbaWR4KzFdID0gKCh2YWwgPj4+IDgpICYgMHhGRik7IGJbaWR4KzJdID0gKCh2YWwgPj4+IDE2KSAmIDB4RkYpOyBiW2lkeCszXSA9ICgodmFsID4+PiAyNCkgJiAweEZGKTsgfTtcbnZhciBfX3dyaXRlSW50MzJMRSAgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIHZhbC8qOm51bWJlciovLCBpZHgvKjpudW1iZXIqLykvKjp2b2lkKi8geyBiW2lkeF0gPSAodmFsICYgMHhGRik7IGJbaWR4KzFdID0gKCh2YWwgPj4gOCkgJiAweEZGKTsgYltpZHgrMl0gPSAoKHZhbCA+PiAxNikgJiAweEZGKTsgYltpZHgrM10gPSAoKHZhbCA+PiAyNCkgJiAweEZGKTsgfTtcbnZhciBfX3dyaXRlVUludDE2TEUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIHZhbC8qOm51bWJlciovLCBpZHgvKjpudW1iZXIqLykvKjp2b2lkKi8geyBiW2lkeF0gPSAodmFsICYgMHhGRik7IGJbaWR4KzFdID0gKCh2YWwgPj4+IDgpICYgMHhGRik7IH07XG5cbmZ1bmN0aW9uIFdyaXRlU2hpZnQodC8qOm51bWJlciovLCB2YWwvKjpzdHJpbmd8bnVtYmVyKi8sIGYvKjo/c3RyaW5nKi8pLyo6YW55Ki8ge1xuXHR2YXIgc2l6ZSA9IDAsIGkgPSAwO1xuXHRpZihmID09PSAnZGJjcycpIHtcblx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRmb3IoaSA9IDA7IGkgIT0gdmFsLmxlbmd0aDsgKytpKSBfX3dyaXRlVUludDE2TEUodGhpcywgdmFsLmNoYXJDb2RlQXQoaSksIHRoaXMubCArIDIgKiBpKTtcblx0XHRzaXplID0gMiAqIHZhbC5sZW5ndGg7XG5cdH0gZWxzZSBpZihmID09PSAnc2JjcycpIHtcblx0XHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnICYmIGN1cnJlbnRfYW5zaSA9PSA4NzQpIHtcblx0XHRcdC8qIFRPRE86IHVzZSB0YWJsZXMgZGlyZWN0bHksIGRvbid0IGVuY29kZSAqL1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdGZvcihpID0gMDsgaSAhPSB2YWwubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0dmFyIGNwcGF5bG9hZCA9ICRjcHRhYmxlLnV0aWxzLmVuY29kZShjdXJyZW50X2Fuc2ksIHZhbC5jaGFyQXQoaSkpO1xuXHRcdFx0XHR0aGlzW3RoaXMubCArIGldID0gY3BwYXlsb2FkWzBdO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHZhbCA9IHZhbC5yZXBsYWNlKC9bXlxceDAwLVxceDdGXS9nLCBcIl9cIik7XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdGZvcihpID0gMDsgaSAhPSB2YWwubGVuZ3RoOyArK2kpIHRoaXNbdGhpcy5sICsgaV0gPSAodmFsLmNoYXJDb2RlQXQoaSkgJiAweEZGKTtcblx0XHR9XG5cdFx0c2l6ZSA9IHZhbC5sZW5ndGg7XG5cdH0gZWxzZSBpZihmID09PSAnaGV4Jykge1xuXHRcdGZvcig7IGkgPCB0OyArK2kpIHtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0XHR0aGlzW3RoaXMubCsrXSA9IChwYXJzZUludCh2YWwuc2xpY2UoMippLCAyKmkrMiksIDE2KXx8MCk7XG5cdFx0fSByZXR1cm4gdGhpcztcblx0fSBlbHNlIGlmKGYgPT09ICd1dGYxNmxlJykge1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHZhciBlbmQvKjpudW1iZXIqLyA9IE1hdGgubWluKHRoaXMubCArIHQsIHRoaXMubGVuZ3RoKTtcblx0XHRcdGZvcihpID0gMDsgaSA8IE1hdGgubWluKHZhbC5sZW5ndGgsIHQpOyArK2kpIHtcblx0XHRcdFx0dmFyIGNjID0gdmFsLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRcdHRoaXNbdGhpcy5sKytdID0gKGNjICYgMHhmZik7XG5cdFx0XHRcdHRoaXNbdGhpcy5sKytdID0gKGNjID4+IDgpO1xuXHRcdFx0fVxuXHRcdFx0d2hpbGUodGhpcy5sIDwgZW5kKSB0aGlzW3RoaXMubCsrXSA9IDA7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0fSBlbHNlIC8qOjogaWYodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICovIHN3aXRjaCh0KSB7XG5cdFx0Y2FzZSAgMTogc2l6ZSA9IDE7IHRoaXNbdGhpcy5sXSA9IHZhbCYweEZGOyBicmVhaztcblx0XHRjYXNlICAyOiBzaXplID0gMjsgdGhpc1t0aGlzLmxdID0gdmFsJjB4RkY7IHZhbCA+Pj49IDg7IHRoaXNbdGhpcy5sKzFdID0gdmFsJjB4RkY7IGJyZWFrO1xuXHRcdGNhc2UgIDM6IHNpemUgPSAzOyB0aGlzW3RoaXMubF0gPSB2YWwmMHhGRjsgdmFsID4+Pj0gODsgdGhpc1t0aGlzLmwrMV0gPSB2YWwmMHhGRjsgdmFsID4+Pj0gODsgdGhpc1t0aGlzLmwrMl0gPSB2YWwmMHhGRjsgYnJlYWs7XG5cdFx0Y2FzZSAgNDogc2l6ZSA9IDQ7IF9fd3JpdGVVSW50MzJMRSh0aGlzLCB2YWwsIHRoaXMubCk7IGJyZWFrO1xuXHRcdGNhc2UgIDg6IHNpemUgPSA4OyBpZihmID09PSAnZicpIHsgd3JpdGVfZG91YmxlX2xlKHRoaXMsIHZhbCwgdGhpcy5sKTsgYnJlYWs7IH1cblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAxNjogYnJlYWs7XG5cdFx0Y2FzZSAtNDogc2l6ZSA9IDQ7IF9fd3JpdGVJbnQzMkxFKHRoaXMsIHZhbCwgdGhpcy5sKTsgYnJlYWs7XG5cdH1cblx0dGhpcy5sICs9IHNpemU7IHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBDaGVja0ZpZWxkKGhleHN0ci8qOnN0cmluZyovLCBmbGQvKjpzdHJpbmcqLykvKjp2b2lkKi8ge1xuXHR2YXIgbSA9IF9faGV4bGlmeSh0aGlzLHRoaXMubCxoZXhzdHIubGVuZ3RoPj4xKTtcblx0aWYobSAhPT0gaGV4c3RyKSB0aHJvdyBuZXcgRXJyb3IoZmxkICsgJ0V4cGVjdGVkICcgKyBoZXhzdHIgKyAnIHNhdyAnICsgbSk7XG5cdHRoaXMubCArPSBoZXhzdHIubGVuZ3RoPj4xO1xufVxuXG5mdW5jdGlvbiBwcmVwX2Jsb2IoYmxvYiwgcG9zLyo6bnVtYmVyKi8pLyo6dm9pZCovIHtcblx0YmxvYi5sID0gcG9zO1xuXHRibG9iLnJlYWRfc2hpZnQgPSAvKjo6KCovUmVhZFNoaWZ0Lyo6OiA6YW55KSovO1xuXHRibG9iLmNoayA9IENoZWNrRmllbGQ7XG5cdGJsb2Iud3JpdGVfc2hpZnQgPSBXcml0ZVNoaWZ0O1xufVxuXG5mdW5jdGlvbiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLyo6OiA6bnVtYmVyLCBvcHRzPzphbnkgKi8pIHsgYmxvYi5sICs9IGxlbmd0aDsgfVxuXG5mdW5jdGlvbiBuZXdfYnVmKHN6Lyo6bnVtYmVyKi8pLyo6QmxvY2sqLyB7XG5cdHZhciBvID0gbmV3X3Jhd19idWYoc3opO1xuXHRwcmVwX2Jsb2IobywgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjQgUmVjb3JkICovXG5mdW5jdGlvbiByZWNvcmRob3BwZXIoZGF0YSwgY2IvKjpSZWNvcmRIb3BwZXJDQiovLCBvcHRzLyo6P2FueSovKSB7XG5cdGlmKCFkYXRhKSByZXR1cm47XG5cdHZhciB0bXBieXRlLCBjbnRieXRlLCBsZW5ndGg7XG5cdHByZXBfYmxvYihkYXRhLCBkYXRhLmwgfHwgMCk7XG5cdHZhciBMID0gZGF0YS5sZW5ndGgsIFJUID0gMCwgdGd0ID0gMDtcblx0d2hpbGUoZGF0YS5sIDwgTCkge1xuXHRcdFJUID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKFJUICYgMHg4MCkgUlQgPSAoUlQgJiAweDdGKSArICgoZGF0YS5yZWFkX3NoaWZ0KDEpICYgMHg3Rik8PDcpO1xuXHRcdHZhciBSID0gWExTQlJlY29yZEVudW1bUlRdIHx8IFhMU0JSZWNvcmRFbnVtWzB4RkZGRl07XG5cdFx0dG1wYnl0ZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0XHRsZW5ndGggPSB0bXBieXRlICYgMHg3Rjtcblx0XHRmb3IoY250Ynl0ZSA9IDE7IGNudGJ5dGUgPDQgJiYgKHRtcGJ5dGUgJiAweDgwKTsgKytjbnRieXRlKSBsZW5ndGggKz0gKCh0bXBieXRlID0gZGF0YS5yZWFkX3NoaWZ0KDEpKSAmIDB4N0YpPDwoNypjbnRieXRlKTtcblx0XHR0Z3QgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdFx0dmFyIGQgPSBSLmYgJiYgUi5mKGRhdGEsIGxlbmd0aCwgb3B0cyk7XG5cdFx0ZGF0YS5sID0gdGd0O1xuXHRcdGlmKGNiKGQsIFIsIFJUKSkgcmV0dXJuO1xuXHR9XG59XG5cbi8qIGNvbnRyb2wgYnVmZmVyIHVzYWdlIGZvciBmaXhlZC1sZW5ndGggYnVmZmVycyAqL1xuZnVuY3Rpb24gYnVmX2FycmF5KCkvKjpCdWZBcnJheSovIHtcblx0dmFyIGJ1ZnMvKjpBcnJheTxCbG9jaz4qLyA9IFtdLCBibGtzeiA9IGhhc19idWYgPyAyNTYgOiAyMDQ4O1xuXHR2YXIgbmV3YmxrID0gZnVuY3Rpb24gYmFfbmV3YmxrKHN6Lyo6bnVtYmVyKi8pLyo6QmxvY2sqLyB7XG5cdFx0dmFyIG8vKjpCbG9jayovID0gKG5ld19idWYoc3opLyo6YW55Ki8pO1xuXHRcdHByZXBfYmxvYihvLCAwKTtcblx0XHRyZXR1cm4gbztcblx0fTtcblxuXHR2YXIgY3VyYnVmLyo6QmxvY2sqLyA9IG5ld2JsayhibGtzeik7XG5cblx0dmFyIGVuZGJ1ZiA9IGZ1bmN0aW9uIGJhX2VuZGJ1ZigpIHtcblx0XHRpZighY3VyYnVmKSByZXR1cm47XG5cdFx0aWYoY3VyYnVmLmxlbmd0aCA+IGN1cmJ1Zi5sKSB7IGN1cmJ1ZiA9IGN1cmJ1Zi5zbGljZSgwLCBjdXJidWYubCk7IGN1cmJ1Zi5sID0gY3VyYnVmLmxlbmd0aDsgfVxuXHRcdGlmKGN1cmJ1Zi5sZW5ndGggPiAwKSBidWZzLnB1c2goY3VyYnVmKTtcblx0XHRjdXJidWYgPSBudWxsO1xuXHR9O1xuXG5cdHZhciBuZXh0ID0gZnVuY3Rpb24gYmFfbmV4dChzei8qOm51bWJlciovKS8qOkJsb2NrKi8ge1xuXHRcdGlmKGN1cmJ1ZiAmJiAoc3ogPCAoY3VyYnVmLmxlbmd0aCAtIGN1cmJ1Zi5sKSkpIHJldHVybiBjdXJidWY7XG5cdFx0ZW5kYnVmKCk7XG5cdFx0cmV0dXJuIChjdXJidWYgPSBuZXdibGsoTWF0aC5tYXgoc3orMSwgYmxrc3opKSk7XG5cdH07XG5cblx0dmFyIGVuZCA9IGZ1bmN0aW9uIGJhX2VuZCgpIHtcblx0XHRlbmRidWYoKTtcblx0XHRyZXR1cm4gYmNvbmNhdChidWZzKTtcblx0fTtcblxuXHR2YXIgcHVzaCA9IGZ1bmN0aW9uIGJhX3B1c2goYnVmKSB7IGVuZGJ1ZigpOyBjdXJidWYgPSBidWY7IGlmKGN1cmJ1Zi5sID09IG51bGwpIGN1cmJ1Zi5sID0gY3VyYnVmLmxlbmd0aDsgbmV4dChibGtzeik7IH07XG5cblx0cmV0dXJuICh7IG5leHQ6bmV4dCwgcHVzaDpwdXNoLCBlbmQ6ZW5kLCBfYnVmczpidWZzIH0vKjphbnkqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3JlY29yZChiYS8qOkJ1ZkFycmF5Ki8sIHR5cGUvKjpudW1iZXIqLywgcGF5bG9hZCwgbGVuZ3RoLyo6P251bWJlciovKSB7XG5cdHZhciB0Lyo6bnVtYmVyKi8gPSArdHlwZSwgbDtcblx0aWYoaXNOYU4odCkpIHJldHVybjsgLy8gVE9ETzogdGhyb3cgc29tZXRoaW5nIGhlcmU/XG5cdGlmKCFsZW5ndGgpIGxlbmd0aCA9IFhMU0JSZWNvcmRFbnVtW3RdLnAgfHwgKHBheWxvYWR8fFtdKS5sZW5ndGggfHwgMDtcblx0bCA9IDEgKyAodCA+PSAweDgwID8gMSA6IDApICsgMS8qICsgbGVuZ3RoKi87XG5cdGlmKGxlbmd0aCA+PSAweDgwKSArK2w7IGlmKGxlbmd0aCA+PSAweDQwMDApICsrbDsgaWYobGVuZ3RoID49IDB4MjAwMDAwKSArK2w7XG5cdHZhciBvID0gYmEubmV4dChsKTtcblx0aWYodCA8PSAweDdGKSBvLndyaXRlX3NoaWZ0KDEsIHQpO1xuXHRlbHNlIHtcblx0XHRvLndyaXRlX3NoaWZ0KDEsICh0ICYgMHg3RikgKyAweDgwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsICh0ID4+IDcpKTtcblx0fVxuXHRmb3IodmFyIGkgPSAwOyBpICE9IDQ7ICsraSkge1xuXHRcdGlmKGxlbmd0aCA+PSAweDgwKSB7IG8ud3JpdGVfc2hpZnQoMSwgKGxlbmd0aCAmIDB4N0YpKzB4ODApOyBsZW5ndGggPj49IDc7IH1cblx0XHRlbHNlIHsgby53cml0ZV9zaGlmdCgxLCBsZW5ndGgpOyBicmVhazsgfVxuXHR9XG5cdGlmKC8qOjogbGVuZ3RoICE9IG51bGwgJiYqL2xlbmd0aCA+IDAgJiYgaXNfYnVmKHBheWxvYWQpKSBiYS5wdXNoKHBheWxvYWQpO1xufVxuLyogWExTIHJhbmdlcyBlbmZvcmNlZCAqL1xuZnVuY3Rpb24gc2hpZnRfY2VsbF94bHMoY2VsbC8qOkNlbGxBZGRyZXNzKi8sIHRndC8qOmFueSovLCBvcHRzLyo6P2FueSovKS8qOkNlbGxBZGRyZXNzKi8ge1xuXHR2YXIgb3V0ID0gZHVwKGNlbGwpO1xuXHRpZih0Z3Qucykge1xuXHRcdGlmKG91dC5jUmVsKSBvdXQuYyArPSB0Z3Qucy5jO1xuXHRcdGlmKG91dC5yUmVsKSBvdXQuciArPSB0Z3Qucy5yO1xuXHR9IGVsc2Uge1xuXHRcdGlmKG91dC5jUmVsKSBvdXQuYyArPSB0Z3QuYztcblx0XHRpZihvdXQuclJlbCkgb3V0LnIgKz0gdGd0LnI7XG5cdH1cblx0aWYoIW9wdHMgfHwgb3B0cy5iaWZmIDwgMTIpIHtcblx0XHR3aGlsZShvdXQuYyA+PSAweDEwMCkgb3V0LmMgLT0gMHgxMDA7XG5cdFx0d2hpbGUob3V0LnIgPj0gMHgxMDAwMCkgb3V0LnIgLT0gMHgxMDAwMDtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBzaGlmdF9yYW5nZV94bHMoY2VsbCwgcmFuZ2UsIG9wdHMpIHtcblx0dmFyIG91dCA9IGR1cChjZWxsKTtcblx0b3V0LnMgPSBzaGlmdF9jZWxsX3hscyhvdXQucywgcmFuZ2Uucywgb3B0cyk7XG5cdG91dC5lID0gc2hpZnRfY2VsbF94bHMob3V0LmUsIHJhbmdlLnMsIG9wdHMpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVfY2VsbF94bHMoYy8qOkNlbGxBZGRyZXNzKi8sIGJpZmYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdGlmKGMuY1JlbCAmJiBjLmMgPCAwKSB7IGMgPSBkdXAoYyk7IHdoaWxlKGMuYyA8IDApIGMuYyArPSAoYmlmZiA+IDgpID8gMHg0MDAwIDogMHgxMDA7IH1cblx0aWYoYy5yUmVsICYmIGMuciA8IDApIHsgYyA9IGR1cChjKTsgd2hpbGUoYy5yIDwgMCkgYy5yICs9IChiaWZmID4gOCkgPyAweDEwMDAwMCA6ICgoYmlmZiA+IDUpID8gMHgxMDAwMCA6IDB4NDAwMCk7IH1cblx0dmFyIHMgPSBlbmNvZGVfY2VsbChjKTtcblx0aWYoIWMuY1JlbCAmJiBjLmNSZWwgIT0gbnVsbCkgcyA9IGZpeF9jb2wocyk7XG5cdGlmKCFjLnJSZWwgJiYgYy5yUmVsICE9IG51bGwpIHMgPSBmaXhfcm93KHMpO1xuXHRyZXR1cm4gcztcbn1cblxuZnVuY3Rpb24gZW5jb2RlX3JhbmdlX3hscyhyLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYoci5zLnIgPT0gMCAmJiAhci5zLnJSZWwpIHtcblx0XHRpZihyLmUuciA9PSAob3B0cy5iaWZmID49IDEyID8gMHhGRkZGRiA6IChvcHRzLmJpZmYgPj0gOCA/IDB4MTAwMDAgOiAweDQwMDApKSAmJiAhci5lLnJSZWwpIHtcblx0XHRcdHJldHVybiAoci5zLmNSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX2NvbChyLnMuYykgKyBcIjpcIiArIChyLmUuY1JlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfY29sKHIuZS5jKTtcblx0XHR9XG5cdH1cblx0aWYoci5zLmMgPT0gMCAmJiAhci5zLmNSZWwpIHtcblx0XHRpZihyLmUuYyA9PSAob3B0cy5iaWZmID49IDEyID8gMHgzRkZGIDogMHhGRikgJiYgIXIuZS5jUmVsKSB7XG5cdFx0XHRyZXR1cm4gKHIucy5yUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9yb3coci5zLnIpICsgXCI6XCIgKyAoci5lLnJSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX3JvdyhyLmUucik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBlbmNvZGVfY2VsbF94bHMoci5zLCBvcHRzLmJpZmYpICsgXCI6XCIgKyBlbmNvZGVfY2VsbF94bHMoci5lLCBvcHRzLmJpZmYpO1xufVxuZnVuY3Rpb24gZGVjb2RlX3Jvdyhyb3dzdHIvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7IHJldHVybiBwYXJzZUludCh1bmZpeF9yb3cocm93c3RyKSwxMCkgLSAxOyB9XG5mdW5jdGlvbiBlbmNvZGVfcm93KHJvdy8qOm51bWJlciovKS8qOnN0cmluZyovIHsgcmV0dXJuIFwiXCIgKyAocm93ICsgMSk7IH1cbmZ1bmN0aW9uIGZpeF9yb3coY3N0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGNzdHIucmVwbGFjZSgvKFtBLVpdfF4pKFxcZCspJC8sXCIkMSQkJDJcIik7IH1cbmZ1bmN0aW9uIHVuZml4X3Jvdyhjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC9cXCQoXFxkKykkLyxcIiQxXCIpOyB9XG5cbmZ1bmN0aW9uIGRlY29kZV9jb2woY29sc3RyLyo6c3RyaW5nKi8pLyo6bnVtYmVyKi8geyB2YXIgYyA9IHVuZml4X2NvbChjb2xzdHIpLCBkID0gMCwgaSA9IDA7IGZvcig7IGkgIT09IGMubGVuZ3RoOyArK2kpIGQgPSAyNipkICsgYy5jaGFyQ29kZUF0KGkpIC0gNjQ7IHJldHVybiBkIC0gMTsgfVxuZnVuY3Rpb24gZW5jb2RlX2NvbChjb2wvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IGlmKGNvbCA8IDApIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgY29sdW1uIFwiICsgY29sKTsgdmFyIHM9XCJcIjsgZm9yKCsrY29sOyBjb2w7IGNvbD1NYXRoLmZsb29yKChjb2wtMSkvMjYpKSBzID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGNvbC0xKSUyNikgKyA2NSkgKyBzOyByZXR1cm4gczsgfVxuZnVuY3Rpb24gZml4X2NvbChjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC9eKFtBLVpdKS8sXCIkJCQxXCIpOyB9XG5mdW5jdGlvbiB1bmZpeF9jb2woY3N0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGNzdHIucmVwbGFjZSgvXlxcJChbQS1aXSkvLFwiJDFcIik7IH1cblxuZnVuY3Rpb24gc3BsaXRfY2VsbChjc3RyLyo6c3RyaW5nKi8pLyo6QXJyYXk8c3RyaW5nPiovIHsgcmV0dXJuIGNzdHIucmVwbGFjZSgvKFxcJD9bQS1aXSopKFxcJD9cXGQqKS8sXCIkMSwkMlwiKS5zcGxpdChcIixcIik7IH1cbi8vZnVuY3Rpb24gZGVjb2RlX2NlbGwoY3N0ci8qOnN0cmluZyovKS8qOkNlbGxBZGRyZXNzKi8geyB2YXIgc3BsdCA9IHNwbGl0X2NlbGwoY3N0cik7IHJldHVybiB7IGM6ZGVjb2RlX2NvbChzcGx0WzBdKSwgcjpkZWNvZGVfcm93KHNwbHRbMV0pIH07IH1cbmZ1bmN0aW9uIGRlY29kZV9jZWxsKGNzdHIvKjpzdHJpbmcqLykvKjpDZWxsQWRkcmVzcyovIHtcblx0dmFyIFIgPSAwLCBDID0gMDtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNzdHIubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgY2MgPSBjc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0aWYoY2MgPj0gNDggJiYgY2MgPD0gNTcpIFIgPSAxMCAqIFIgKyAoY2MgLSA0OCk7XG5cdFx0ZWxzZSBpZihjYyA+PSA2NSAmJiBjYyA8PSA5MCkgQyA9IDI2ICogQyArIChjYyAtIDY0KTtcblx0fVxuXHRyZXR1cm4geyBjOiBDIC0gMSwgcjpSIC0gMSB9O1xufVxuLy9mdW5jdGlvbiBlbmNvZGVfY2VsbChjZWxsLyo6Q2VsbEFkZHJlc3MqLykvKjpzdHJpbmcqLyB7IHJldHVybiBlbmNvZGVfY29sKGNlbGwuYykgKyBlbmNvZGVfcm93KGNlbGwucik7IH1cbmZ1bmN0aW9uIGVuY29kZV9jZWxsKGNlbGwvKjpDZWxsQWRkcmVzcyovKS8qOnN0cmluZyovIHtcblx0dmFyIGNvbCA9IGNlbGwuYyArIDE7XG5cdHZhciBzPVwiXCI7XG5cdGZvcig7IGNvbDsgY29sPSgoY29sLTEpLzI2KXwwKSBzID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGNvbC0xKSUyNikgKyA2NSkgKyBzO1xuXHRyZXR1cm4gcyArIChjZWxsLnIgKyAxKTtcbn1cbmZ1bmN0aW9uIGRlY29kZV9yYW5nZShyYW5nZS8qOnN0cmluZyovKS8qOlJhbmdlKi8ge1xuXHR2YXIgaWR4ID0gcmFuZ2UuaW5kZXhPZihcIjpcIik7XG5cdGlmKGlkeCA9PSAtMSkgcmV0dXJuIHsgczogZGVjb2RlX2NlbGwocmFuZ2UpLCBlOiBkZWNvZGVfY2VsbChyYW5nZSkgfTtcblx0cmV0dXJuIHsgczogZGVjb2RlX2NlbGwocmFuZ2Uuc2xpY2UoMCwgaWR4KSksIGU6IGRlY29kZV9jZWxsKHJhbmdlLnNsaWNlKGlkeCArIDEpKSB9O1xufVxuLyojIGlmIG9ubHkgb25lIGFyZywgaXQgaXMgYXNzdW1lZCB0byBiZSBhIFJhbmdlLiAgSWYgMiBhcmdzLCBib3RoIGFyZSBjZWxsIGFkZHJlc3NlcyAqL1xuZnVuY3Rpb24gZW5jb2RlX3JhbmdlKGNzLyo6Q2VsbEFkZHJTcGVjfFJhbmdlKi8sY2UvKjo/Q2VsbEFkZHJTcGVjKi8pLyo6c3RyaW5nKi8ge1xuXHRpZih0eXBlb2YgY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBjZSA9PT0gJ251bWJlcicpIHtcbi8qOjogaWYoIShjcyBpbnN0YW5jZW9mIFJhbmdlKSkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdHJldHVybiBlbmNvZGVfcmFuZ2UoY3MucywgY3MuZSk7XG5cdH1cbi8qOjogaWYoKGNzIGluc3RhbmNlb2YgUmFuZ2UpKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdGlmKHR5cGVvZiBjcyAhPT0gJ3N0cmluZycpIGNzID0gZW5jb2RlX2NlbGwoKGNzLyo6YW55Ki8pKTtcblx0aWYodHlwZW9mIGNlICE9PSAnc3RyaW5nJykgY2UgPSBlbmNvZGVfY2VsbCgoY2UvKjphbnkqLykpO1xuLyo6OiBpZih0eXBlb2YgY3MgIT09ICdzdHJpbmcnKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG4vKjo6IGlmKHR5cGVvZiBjZSAhPT0gJ3N0cmluZycpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0cmV0dXJuIGNzID09IGNlID8gY3MgOiBjcyArIFwiOlwiICsgY2U7XG59XG5cbmZ1bmN0aW9uIHNhZmVfZGVjb2RlX3JhbmdlKHJhbmdlLyo6c3RyaW5nKi8pLyo6UmFuZ2UqLyB7XG5cdHZhciBvID0ge3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtcblx0dmFyIGlkeCA9IDAsIGkgPSAwLCBjYyA9IDA7XG5cdHZhciBsZW4gPSByYW5nZS5sZW5ndGg7XG5cdGZvcihpZHggPSAwOyBpIDwgbGVuOyArK2kpIHtcblx0XHRpZigoY2M9cmFuZ2UuY2hhckNvZGVBdChpKS02NCkgPCAxIHx8IGNjID4gMjYpIGJyZWFrO1xuXHRcdGlkeCA9IDI2KmlkeCArIGNjO1xuXHR9XG5cdG8ucy5jID0gLS1pZHg7XG5cblx0Zm9yKGlkeCA9IDA7IGkgPCBsZW47ICsraSkge1xuXHRcdGlmKChjYz1yYW5nZS5jaGFyQ29kZUF0KGkpLTQ4KSA8IDAgfHwgY2MgPiA5KSBicmVhaztcblx0XHRpZHggPSAxMCppZHggKyBjYztcblx0fVxuXHRvLnMuciA9IC0taWR4O1xuXG5cdGlmKGkgPT09IGxlbiB8fCBjYyAhPSAxMCkgeyBvLmUuYz1vLnMuYzsgby5lLnI9by5zLnI7IHJldHVybiBvOyB9XG5cdCsraTtcblxuXHRmb3IoaWR4ID0gMDsgaSAhPSBsZW47ICsraSkge1xuXHRcdGlmKChjYz1yYW5nZS5jaGFyQ29kZUF0KGkpLTY0KSA8IDEgfHwgY2MgPiAyNikgYnJlYWs7XG5cdFx0aWR4ID0gMjYqaWR4ICsgY2M7XG5cdH1cblx0by5lLmMgPSAtLWlkeDtcblxuXHRmb3IoaWR4ID0gMDsgaSAhPSBsZW47ICsraSkge1xuXHRcdGlmKChjYz1yYW5nZS5jaGFyQ29kZUF0KGkpLTQ4KSA8IDAgfHwgY2MgPiA5KSBicmVhaztcblx0XHRpZHggPSAxMCppZHggKyBjYztcblx0fVxuXHRvLmUuciA9IC0taWR4O1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gc2FmZV9mb3JtYXRfY2VsbChjZWxsLyo6Q2VsbCovLCB2Lyo6YW55Ki8pIHtcblx0dmFyIHEgPSAoY2VsbC50ID09ICdkJyAmJiB2IGluc3RhbmNlb2YgRGF0ZSk7XG5cdGlmKGNlbGwueiAhPSBudWxsKSB0cnkgeyByZXR1cm4gKGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56LCBxID8gZGF0ZW51bSh2KSA6IHYpKTsgfSBjYXRjaChlKSB7IH1cblx0dHJ5IHsgcmV0dXJuIChjZWxsLncgPSBTU0ZfZm9ybWF0KChjZWxsLlhGfHx7fSkubnVtRm10SWR8fChxID8gMTQgOiAwKSwgIHEgPyBkYXRlbnVtKHYpIDogdikpOyB9IGNhdGNoKGUpIHsgcmV0dXJuICcnK3Y7IH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0X2NlbGwoY2VsbC8qOkNlbGwqLywgdi8qOmFueSovLCBvLyo6YW55Ki8pIHtcblx0aWYoY2VsbCA9PSBudWxsIHx8IGNlbGwudCA9PSBudWxsIHx8IGNlbGwudCA9PSAneicpIHJldHVybiBcIlwiO1xuXHRpZihjZWxsLncgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGNlbGwudztcblx0aWYoY2VsbC50ID09ICdkJyAmJiAhY2VsbC56ICYmIG8gJiYgby5kYXRlTkYpIGNlbGwueiA9IG8uZGF0ZU5GO1xuXHRpZihjZWxsLnQgPT0gXCJlXCIpIHJldHVybiBCRXJyW2NlbGwudl0gfHwgY2VsbC52O1xuXHRpZih2ID09IHVuZGVmaW5lZCkgcmV0dXJuIHNhZmVfZm9ybWF0X2NlbGwoY2VsbCwgY2VsbC52KTtcblx0cmV0dXJuIHNhZmVfZm9ybWF0X2NlbGwoY2VsbCwgdik7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX3dvcmtib29rKHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBuID0gb3B0cyAmJiBvcHRzLnNoZWV0ID8gb3B0cy5zaGVldCA6IFwiU2hlZXQxXCI7XG5cdHZhciBzaGVldHMgPSB7fTsgc2hlZXRzW25dID0gc2hlZXQ7XG5cdHJldHVybiB7IFNoZWV0TmFtZXM6IFtuXSwgU2hlZXRzOiBzaGVldHMgfTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfYWRkX2FvYShfd3MvKjo/V29ya3NoZWV0Ki8sIGRhdGEvKjpBT0EqLywgb3B0cy8qOj9hbnkqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGRlbnNlID0gX3dzID8gQXJyYXkuaXNBcnJheShfd3MpIDogby5kZW5zZTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBkZW5zZSA9PSBudWxsKSBkZW5zZSA9IERFTlNFO1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IF93cyB8fCAoZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLykpO1xuXHR2YXIgX1IgPSAwLCBfQyA9IDA7XG5cdGlmKHdzICYmIG8ub3JpZ2luICE9IG51bGwpIHtcblx0XHRpZih0eXBlb2Ygby5vcmlnaW4gPT0gJ251bWJlcicpIF9SID0gby5vcmlnaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgX29yaWdpbi8qOkNlbGxBZGRyZXNzKi8gPSB0eXBlb2Ygby5vcmlnaW4gPT0gXCJzdHJpbmdcIiA/IGRlY29kZV9jZWxsKG8ub3JpZ2luKSA6IG8ub3JpZ2luO1xuXHRcdFx0X1IgPSBfb3JpZ2luLnI7IF9DID0gX29yaWdpbi5jO1xuXHRcdH1cblx0XHRpZighd3NbXCIhcmVmXCJdKSB3c1tcIiFyZWZcIl0gPSBcIkExOkExXCI7XG5cdH1cblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7czoge2M6MTAwMDAwMDAsIHI6MTAwMDAwMDB9LCBlOiB7YzowLCByOjB9fS8qOmFueSovKTtcblx0aWYod3NbJyFyZWYnXSkge1xuXHRcdHZhciBfcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0XHRyYW5nZS5zLmMgPSBfcmFuZ2Uucy5jO1xuXHRcdHJhbmdlLnMuciA9IF9yYW5nZS5zLnI7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5tYXgocmFuZ2UuZS5jLCBfcmFuZ2UuZS5jKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1heChyYW5nZS5lLnIsIF9yYW5nZS5lLnIpO1xuXHRcdGlmKF9SID09IC0xKSByYW5nZS5lLnIgPSBfUiA9IF9yYW5nZS5lLnIgKyAxO1xuXHR9XG5cdGZvcih2YXIgUiA9IDA7IFIgIT0gZGF0YS5sZW5ndGg7ICsrUikge1xuXHRcdGlmKCFkYXRhW1JdKSBjb250aW51ZTtcblx0XHRpZighQXJyYXkuaXNBcnJheShkYXRhW1JdKSkgdGhyb3cgbmV3IEVycm9yKFwiYW9hX3RvX3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzXCIpO1xuXHRcdGZvcih2YXIgQyA9IDA7IEMgIT0gZGF0YVtSXS5sZW5ndGg7ICsrQykge1xuXHRcdFx0aWYodHlwZW9mIGRhdGFbUl1bQ10gPT09ICd1bmRlZmluZWQnKSBjb250aW51ZTtcblx0XHRcdHZhciBjZWxsLyo6Q2VsbCovID0gKHt2OiBkYXRhW1JdW0NdIH0vKjphbnkqLyk7XG5cdFx0XHR2YXIgX19SID0gX1IgKyBSLCBfX0MgPSBfQyArIEM7XG5cdFx0XHRpZihyYW5nZS5zLnIgPiBfX1IpIHJhbmdlLnMuciA9IF9fUjtcblx0XHRcdGlmKHJhbmdlLnMuYyA+IF9fQykgcmFuZ2Uucy5jID0gX19DO1xuXHRcdFx0aWYocmFuZ2UuZS5yIDwgX19SKSByYW5nZS5lLnIgPSBfX1I7XG5cdFx0XHRpZihyYW5nZS5lLmMgPCBfX0MpIHJhbmdlLmUuYyA9IF9fQztcblx0XHRcdGlmKGRhdGFbUl1bQ10gJiYgdHlwZW9mIGRhdGFbUl1bQ10gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGRhdGFbUl1bQ10pICYmICEoZGF0YVtSXVtDXSBpbnN0YW5jZW9mIERhdGUpKSBjZWxsID0gZGF0YVtSXVtDXTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZihBcnJheS5pc0FycmF5KGNlbGwudikpIHsgY2VsbC5mID0gZGF0YVtSXVtDXVsxXTsgY2VsbC52ID0gY2VsbC52WzBdOyB9XG5cdFx0XHRcdGlmKGNlbGwudiA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmKGNlbGwuZikgY2VsbC50ID0gJ24nO1xuXHRcdFx0XHRcdGVsc2UgaWYoby5udWxsRXJyb3IpIHsgY2VsbC50ID0gJ2UnOyBjZWxsLnYgPSAwOyB9XG5cdFx0XHRcdFx0ZWxzZSBpZighby5zaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0XHRlbHNlIGNlbGwudCA9ICd6Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiBjZWxsLnYgPT09ICdudW1iZXInKSBjZWxsLnQgPSAnbic7XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIGNlbGwudiA9PT0gJ2Jvb2xlYW4nKSBjZWxsLnQgPSAnYic7XG5cdFx0XHRcdGVsc2UgaWYoY2VsbC52IGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHRcdGNlbGwueiA9IG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdFx0aWYoby5jZWxsRGF0ZXMpIHsgY2VsbC50ID0gJ2QnOyBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiwgZGF0ZW51bShjZWxsLnYpKTsgfVxuXHRcdFx0XHRcdGVsc2UgeyBjZWxsLnQgPSAnbic7IGNlbGwudiA9IGRhdGVudW0oY2VsbC52KTsgY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIGNlbGwudik7IH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGNlbGwudCA9ICdzJztcblx0XHRcdH1cblx0XHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRcdGlmKCF3c1tfX1JdKSB3c1tfX1JdID0gW107XG5cdFx0XHRcdGlmKHdzW19fUl1bX19DXSAmJiB3c1tfX1JdW19fQ10ueikgY2VsbC56ID0gd3NbX19SXVtfX0NdLno7XG5cdFx0XHRcdHdzW19fUl1bX19DXSA9IGNlbGw7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgY2VsbF9yZWYgPSBlbmNvZGVfY2VsbCgoe2M6X19DLHI6X19SfS8qOmFueSovKSk7XG5cdFx0XHRcdGlmKHdzW2NlbGxfcmVmXSAmJiB3c1tjZWxsX3JlZl0ueikgY2VsbC56ID0gd3NbY2VsbF9yZWZdLno7XG5cdFx0XHRcdHdzW2NlbGxfcmVmXSA9IGNlbGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmKHJhbmdlLnMuYyA8IDEwMDAwMDAwKSB3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0cmV0dXJuIHdzO1xufVxuZnVuY3Rpb24gYW9hX3RvX3NoZWV0KGRhdGEvKjpBT0EqLywgb3B0cy8qOj9hbnkqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiBzaGVldF9hZGRfYW9hKG51bGwsIGRhdGEsIG9wdHMpOyB9XG5cbmZ1bmN0aW9uIHBhcnNlX0ludDMyTEUoZGF0YSkge1xuXHRyZXR1cm4gZGF0YS5yZWFkX3NoaWZ0KDQsICdpJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9VSW50MzJMRSh4Lyo6bnVtYmVyKi8sIG8pIHtcblx0aWYgKCFvKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCg0LCB4KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTY4ICovXG5mdW5jdGlvbiBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YS8qOjosIGxlbmd0aCovKS8qOnN0cmluZyovIHtcblx0dmFyIGNjaENoYXJhY3RlcnMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBjY2hDaGFyYWN0ZXJzID09PSAwID8gXCJcIiA6IGRhdGEucmVhZF9zaGlmdChjY2hDaGFyYWN0ZXJzLCAnZGJjcycpO1xufVxuZnVuY3Rpb24gd3JpdGVfWExXaWRlU3RyaW5nKGRhdGEvKjpzdHJpbmcqLywgbykge1xuXHR2YXIgX251bGwgPSBmYWxzZTsgaWYgKG8gPT0gbnVsbCkgeyBfbnVsbCA9IHRydWU7IG8gPSBuZXdfYnVmKDQgKyAyICogZGF0YS5sZW5ndGgpOyB9XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5sZW5ndGgpO1xuXHRpZiAoZGF0YS5sZW5ndGggPiAwKSBvLndyaXRlX3NoaWZ0KDAsIGRhdGEsICdkYmNzJyk7XG5cdHJldHVybiBfbnVsbCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTEgKi9cbi8vZnVuY3Rpb24gcGFyc2VfTFBXaWRlU3RyaW5nKGRhdGEvKjo6LCBsZW5ndGgqLykvKjpzdHJpbmcqLyB7XG4vL1x0dmFyIGNjaENoYXJhY3RlcnMgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG4vL1x0cmV0dXJuIGNjaENoYXJhY3RlcnMgPT09IDAgPyBcIlwiIDogZGF0YS5yZWFkX3NoaWZ0KGNjaENoYXJhY3RlcnMsIFwidXRmMTZsZVwiKTtcbi8vfVxuXG4vKiBbTVMtWExTQl0gMi41LjE0MyAqL1xuZnVuY3Rpb24gcGFyc2VfU3RyUnVuKGRhdGEpIHtcblx0cmV0dXJuIHsgaWNoOiBkYXRhLnJlYWRfc2hpZnQoMiksIGlmbnQ6IGRhdGEucmVhZF9zaGlmdCgyKSB9O1xufVxuZnVuY3Rpb24gd3JpdGVfU3RyUnVuKHJ1biwgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHJ1bi5pY2ggfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcnVuLmlmbnQgfHwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjEyMSAqL1xuZnVuY3Rpb24gcGFyc2VfUmljaFN0cihkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykvKjpYTFN0cmluZyovIHtcblx0dmFyIHN0YXJ0ID0gZGF0YS5sO1xuXHR2YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciByZ3NTdHJSdW4gPSBbXTtcblx0dmFyIHogPSAoeyB0OiBzdHIsIGg6IHN0ciB9Lyo6YW55Ki8pO1xuXHRpZiAoKGZsYWdzICYgMSkgIT09IDApIHsgLyogZlJpY2hTdHIgKi9cblx0XHQvKiBUT0RPOiBmb3JtYXR0ZWQgc3RyaW5nICovXG5cdFx0dmFyIGR3U2l6ZVN0clJ1biA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSAhPSBkd1NpemVTdHJSdW47ICsraSkgcmdzU3RyUnVuLnB1c2gocGFyc2VfU3RyUnVuKGRhdGEpKTtcblx0XHR6LnIgPSByZ3NTdHJSdW47XG5cdH1cblx0ZWxzZSB6LnIgPSBbeyBpY2g6IDAsIGlmbnQ6IDAgfV07XG5cdC8vaWYoKGZsYWdzICYgMikgIT09IDApIHsgLyogZkV4dFN0ciAqL1xuXHQvL1x0LyogVE9ETzogcGhvbmV0aWMgc3RyaW5nICovXG5cdC8vfVxuXHRkYXRhLmwgPSBzdGFydCArIGxlbmd0aDtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9SaWNoU3RyKHN0ci8qOlhMU3RyaW5nKi8sIG8vKjo/QmxvY2sqLykvKjpCbG9jayovIHtcblx0LyogVE9ETzogZm9ybWF0dGVkIHN0cmluZyAqL1xuXHR2YXIgX251bGwgPSBmYWxzZTsgaWYgKG8gPT0gbnVsbCkgeyBfbnVsbCA9IHRydWU7IG8gPSBuZXdfYnVmKDE1ICsgNCAqIHN0ci50Lmxlbmd0aCk7IH1cblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKHN0ci50LCBvKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMzI4IEJydENvbW1lbnRUZXh0IChSaWNoU3RyIHcvMSBydW4pICovXG52YXIgcGFyc2VfQnJ0Q29tbWVudFRleHQgPSBwYXJzZV9SaWNoU3RyO1xuZnVuY3Rpb24gd3JpdGVfQnJ0Q29tbWVudFRleHQoc3RyLyo6WExTdHJpbmcqLywgby8qOj9CbG9jayovKS8qOkJsb2NrKi8ge1xuXHQvKiBUT0RPOiBmb3JtYXR0ZWQgc3RyaW5nICovXG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoMjMgKyA0ICogc3RyLnQubGVuZ3RoKTsgfVxuXHRvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoc3RyLnQsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDEpO1xuXHR3cml0ZV9TdHJSdW4oeyBpY2g6IDAsIGlmbnQ6IDAgfSwgbyk7XG5cdHJldHVybiBfbnVsbCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuOSAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQkNlbGwoZGF0YSkvKjphbnkqLyB7XG5cdHZhciBjb2wgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBpU3R5bGVSZWYgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGlTdHlsZVJlZiArPSBkYXRhLnJlYWRfc2hpZnQoMSkgPDwgMTY7XG5cdGRhdGEubCsrOyAvL3ZhciBmUGhTaG93ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4geyBjOiBjb2wsIGlTdHlsZVJlZjogaVN0eWxlUmVmIH07XG59XG5mdW5jdGlvbiB3cml0ZV9YTFNCQ2VsbChjZWxsLyo6YW55Ki8sIG8vKjo/QmxvY2sqLykge1xuXHRpZiAobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0by53cml0ZV9zaGlmdCgtNCwgY2VsbC5jKTtcblx0by53cml0ZV9zaGlmdCgzLCBjZWxsLmlTdHlsZVJlZiB8fCBjZWxsLnMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBmUGhTaG93ICovXG5cdHJldHVybiBvO1xufVxuXG4vKiBTaG9ydCBYTFNCIENlbGwgZG9lcyBub3QgaW5jbHVkZSBjb2x1bW4gKi9cbmZ1bmN0aW9uIHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSkvKjphbnkqLyB7XG5cdHZhciBpU3R5bGVSZWYgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGlTdHlsZVJlZiArPSBkYXRhLnJlYWRfc2hpZnQoMSkgPDwxNjtcblx0ZGF0YS5sKys7IC8vdmFyIGZQaFNob3cgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7IGM6LTEsIGlTdHlsZVJlZjogaVN0eWxlUmVmIH07XG59XG5mdW5jdGlvbiB3cml0ZV9YTFNCU2hvcnRDZWxsKGNlbGwvKjphbnkqLywgby8qOj9CbG9jayovKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMywgY2VsbC5pU3R5bGVSZWYgfHwgY2VsbC5zKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogZlBoU2hvdyAqL1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4yMSAqL1xudmFyIHBhcnNlX1hMU0JDb2RlTmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZztcbnZhciB3cml0ZV9YTFNCQ29kZU5hbWUgPSB3cml0ZV9YTFdpZGVTdHJpbmc7XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTY2ICovXG5mdW5jdGlvbiBwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkYXRhLyo6OiwgbGVuZ3RoKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgY2NoQ2hhcmFjdGVycyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNjaENoYXJhY3RlcnMgPT09IDAgfHwgY2NoQ2hhcmFjdGVycyA9PT0gMHhGRkZGRkZGRiA/IFwiXCIgOiBkYXRhLnJlYWRfc2hpZnQoY2NoQ2hhcmFjdGVycywgJ2RiY3MnKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEvKjpzdHJpbmcqLywgbykge1xuXHR2YXIgX251bGwgPSBmYWxzZTsgaWYgKG8gPT0gbnVsbCkgeyBfbnVsbCA9IHRydWU7IG8gPSBuZXdfYnVmKDEyNyk7IH1cblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLmxlbmd0aCA+IDAgPyBkYXRhLmxlbmd0aCA6IDB4RkZGRkZGRkYpO1xuXHRpZiAoZGF0YS5sZW5ndGggPiAwKSBvLndyaXRlX3NoaWZ0KDAsIGRhdGEsICdkYmNzJyk7XG5cdHJldHVybiBfbnVsbCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTY1ICovXG52YXIgcGFyc2VfWExOYW1lV2lkZVN0cmluZyA9IHBhcnNlX1hMV2lkZVN0cmluZztcbi8vdmFyIHdyaXRlX1hMTmFtZVdpZGVTdHJpbmcgPSB3cml0ZV9YTFdpZGVTdHJpbmc7XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTE0ICovXG52YXIgcGFyc2VfUmVsSUQgPSBwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZztcbnZhciB3cml0ZV9SZWxJRCA9IHdyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nO1xuXG5cbi8qIFtNUy1YTFNdIDIuNS4yMTcgOyBbTVMtWExTQl0gMi41LjEyMiAqL1xuZnVuY3Rpb24gcGFyc2VfUmtOdW1iZXIoZGF0YSkvKjpudW1iZXIqLyB7XG5cdHZhciBiID0gZGF0YS5zbGljZShkYXRhLmwsIGRhdGEubCArIDQpO1xuXHR2YXIgZlgxMDAgPSAoYlswXSAmIDEpLCBmSW50ID0gKGJbMF0gJiAyKTtcblx0ZGF0YS5sICs9IDQ7XG5cdHZhciBSSyA9IGZJbnQgPT09IDAgPyBfX2RvdWJsZShbMCwgMCwgMCwgMCwgKGJbMF0gJiAweEZDKSwgYlsxXSwgYlsyXSwgYlszXV0sIDApIDogX19yZWFkSW50MzJMRShiLCAwKSA+PiAyO1xuXHRyZXR1cm4gZlgxMDAgPyAoUksgLyAxMDApIDogUks7XG59XG5mdW5jdGlvbiB3cml0ZV9Sa051bWJlcihkYXRhLyo6bnVtYmVyKi8sIG8pIHtcblx0aWYgKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdHZhciBmWDEwMCA9IDAsIGZJbnQgPSAwLCBkMTAwID0gZGF0YSAqIDEwMDtcblx0aWYgKChkYXRhID09IChkYXRhIHwgMCkpICYmIChkYXRhID49IC0oMSA8PCAyOSkpICYmIChkYXRhIDwgKDEgPDwgMjkpKSkgeyBmSW50ID0gMTsgfVxuXHRlbHNlIGlmICgoZDEwMCA9PSAoZDEwMCB8IDApKSAmJiAoZDEwMCA+PSAtKDEgPDwgMjkpKSAmJiAoZDEwMCA8ICgxIDw8IDI5KSkpIHsgZkludCA9IDE7IGZYMTAwID0gMTsgfVxuXHRpZiAoZkludCkgby53cml0ZV9zaGlmdCgtNCwgKChmWDEwMCA/IGQxMDAgOiBkYXRhKSA8PCAyKSArIChmWDEwMCArIDIpKTtcblx0ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBSa051bWJlciBcIiArIGRhdGEpOyAvLyBUT0RPXG59XG5cblxuLyogW01TLVhMU0JdIDIuNS4xMTcgUmZYICovXG5mdW5jdGlvbiBwYXJzZV9SZlgoZGF0YSAvKjo6LCBsZW5ndGgqLykvKjpSYW5nZSovIHtcblx0dmFyIGNlbGwvKjpSYW5nZSovID0gKHsgczoge30sIGU6IHt9IH0vKjphbnkqLyk7XG5cdGNlbGwucy5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLmUuciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0Y2VsbC5zLmMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGNlbGwuZS5jID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX1JmWChyLyo6UmFuZ2UqLywgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDE2KTtcblx0by53cml0ZV9zaGlmdCg0LCByLnMucik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgci5lLnIpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIucy5jKTtcblx0by53cml0ZV9zaGlmdCg0LCByLmUuYyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjE1MyBVbmNoZWNrZWRSZlggKi9cbnZhciBwYXJzZV9VbmNoZWNrZWRSZlggPSBwYXJzZV9SZlg7XG52YXIgd3JpdGVfVW5jaGVja2VkUmZYID0gd3JpdGVfUmZYO1xuXG4vKiBbTVMtWExTQl0gMi41LjE1NSBVbmNoZWNrZWRTcVJmWCAqL1xuLy9mdW5jdGlvbiBwYXJzZV9VbmNoZWNrZWRTcVJmWChkYXRhKSB7XG4vL1x0dmFyIGNudCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcbi8vXHR2YXIgb3V0ID0gW107XG4vL1x0Zm9yKHZhciBpID0gMDsgaSA8IGNudDsgKytpKSB7XG4vL1x0XHR2YXIgcm5nID0gcGFyc2VfVW5jaGVja2VkUmZYKGRhdGEpO1xuLy9cdFx0b3V0LnB1c2goZW5jb2RlX3JhbmdlKHJuZykpO1xuLy9cdH1cbi8vXHRyZXR1cm4gb3V0LmpvaW4oXCIsXCIpO1xuLy99XG4vL2Z1bmN0aW9uIHdyaXRlX1VuY2hlY2tlZFNxUmZYKHNxcmZ4Lyo6c3RyaW5nKi8pIHtcbi8vXHR2YXIgcGFydHMgPSBzcXJmeC5zcGxpdCgvXFxzKixcXHMqLyk7XG4vL1x0dmFyIG8gPSBuZXdfYnVmKDQpOyBvLndyaXRlX3NoaWZ0KDQsIHBhcnRzLmxlbmd0aCk7XG4vL1x0dmFyIG91dCA9IFtvXTtcbi8vXHRwYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHJuZykge1xuLy9cdFx0b3V0LnB1c2god3JpdGVfVW5jaGVja2VkUmZYKHNhZmVfZGVjb2RlX3JhbmdlKHJuZykpKTtcbi8vXHR9KTtcbi8vXHRyZXR1cm4gYmNvbmNhdChvdXQpO1xuLy99XG5cbi8qIFtNUy1YTFNdIDIuNS4zNDIgOyBbTVMtWExTQl0gMi41LjE3MSAqL1xuLyogVE9ETzogZXJyb3IgY2hlY2tpbmcsIE5hTiBhbmQgSW5maW5pdHkgdmFsdWVzIGFyZSBub3QgdmFsaWQgWG51bSAqL1xuZnVuY3Rpb24gcGFyc2VfWG51bShkYXRhLyo6OiwgbGVuZ3RoKi8pIHtcblx0aWYoZGF0YS5sZW5ndGggLSBkYXRhLmwgPCA4KSB0aHJvdyBcIlhMUyBYbnVtIEJ1ZmZlciB1bmRlcmZsb3dcIjtcblx0cmV0dXJuIGRhdGEucmVhZF9zaGlmdCg4LCAnZicpO1xufVxuZnVuY3Rpb24gd3JpdGVfWG51bShkYXRhLCBvKSB7IHJldHVybiAobyB8fCBuZXdfYnVmKDgpKS53cml0ZV9zaGlmdCg4LCBkYXRhLCAnZicpOyB9XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzI0IEJydENvbG9yICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDb2xvcihkYXRhLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIG91dCA9IHt9O1xuXHR2YXIgZCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblxuXHQvL3ZhciBmVmFsaWRSR0IgPSBkICYgMTtcblx0dmFyIHhDb2xvclR5cGUgPSBkID4+PiAxO1xuXG5cdHZhciBpbmRleCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG5UUyA9IGRhdGEucmVhZF9zaGlmdCgyLCAnaScpO1xuXHR2YXIgYlIgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBiRyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIGJCID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRkYXRhLmwrKzsgLy92YXIgYkFscGhhID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXG5cdHN3aXRjaCAoeENvbG9yVHlwZSkge1xuXHRcdGNhc2UgMDogb3V0LmF1dG8gPSAxOyBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHRvdXQuaW5kZXggPSBpbmRleDtcblx0XHRcdHZhciBpY3YgPSBYTFNJY3ZbaW5kZXhdO1xuXHRcdFx0LyogYXV0b21hdGljIHBzZXVkbyBpbmRleCA4MSAqL1xuXHRcdFx0aWYgKGljdikgb3V0LnJnYiA9IHJnYjJIZXgoaWN2KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMjpcblx0XHRcdC8qIGlmKCFmVmFsaWRSR0IpIHRocm93IG5ldyBFcnJvcihcImludmFsaWRcIik7ICovXG5cdFx0XHRvdXQucmdiID0gcmdiMkhleChbYlIsIGJHLCBiQl0pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAzOiBvdXQudGhlbWUgPSBpbmRleDsgYnJlYWs7XG5cdH1cblx0aWYgKG5UUyAhPSAwKSBvdXQudGludCA9IG5UUyA+IDAgPyBuVFMgLyAzMjc2NyA6IG5UUyAvIDMyNzY4O1xuXG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDb2xvcihjb2xvciwgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDgpO1xuXHRpZiAoIWNvbG9yIHx8IGNvbG9yLmF1dG8pIHsgby53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTsgcmV0dXJuIG87IH1cblx0aWYgKGNvbG9yLmluZGV4ICE9IG51bGwpIHtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MDIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgY29sb3IuaW5kZXgpO1xuXHR9IGVsc2UgaWYgKGNvbG9yLnRoZW1lICE9IG51bGwpIHtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MDYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgY29sb3IudGhlbWUpO1xuXHR9IGVsc2Uge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwNSk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0fVxuXHR2YXIgblRTID0gY29sb3IudGludCB8fCAwO1xuXHRpZiAoblRTID4gMCkgblRTICo9IDMyNzY3O1xuXHRlbHNlIGlmIChuVFMgPCAwKSBuVFMgKj0gMzI3Njg7XG5cdG8ud3JpdGVfc2hpZnQoMiwgblRTKTtcblx0aWYgKCFjb2xvci5yZ2IgfHwgY29sb3IudGhlbWUgIT0gbnVsbCkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR9IGVsc2Uge1xuXHRcdHZhciByZ2IgPSAoY29sb3IucmdiIHx8ICdGRkZGRkYnKTtcblx0XHRpZiAodHlwZW9mIHJnYiA9PSAnbnVtYmVyJykgcmdiID0gKFwiMDAwMDAwXCIgKyByZ2IudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBwYXJzZUludChyZ2Iuc2xpY2UoMCwgMiksIDE2KSk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBwYXJzZUludChyZ2Iuc2xpY2UoMiwgNCksIDE2KSk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBwYXJzZUludChyZ2Iuc2xpY2UoNCwgNiksIDE2KSk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweEZGKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS41MiAqL1xuZnVuY3Rpb24gcGFyc2VfRm9udEZsYWdzKGRhdGEvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgZCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0ZGF0YS5sKys7XG5cdHZhciBvdXQgPSB7XG5cdFx0ZkJvbGQ6IGQgJiAweDAxLFxuXHRcdGZJdGFsaWM6IGQgJiAweDAyLFxuXHRcdGZVbmRlcmxpbmU6IGQgJiAweDA0LFxuXHRcdGZTdHJpa2VvdXQ6IGQgJiAweDA4LFxuXHRcdGZPdXRsaW5lOiBkICYgMHgxMCxcblx0XHRmU2hhZG93OiBkICYgMHgyMCxcblx0XHRmQ29uZGVuc2U6IGQgJiAweDQwLFxuXHRcdGZFeHRlbmQ6IGQgJiAweDgwXG5cdH07XG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9Gb250RmxhZ3MoZm9udCwgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDIpO1xuXHR2YXIgZ3JiaXQgPVxuXHRcdChmb250Lml0YWxpYyA/IDB4MDIgOiAwKSB8XG5cdFx0KGZvbnQuc3RyaWtlID8gMHgwOCA6IDApIHxcblx0XHQoZm9udC5vdXRsaW5lID8gMHgxMCA6IDApIHxcblx0XHQoZm9udC5zaGFkb3cgPyAweDIwIDogMCkgfFxuXHRcdChmb250LmNvbmRlbnNlID8gMHg0MCA6IDApIHxcblx0XHQoZm9udC5leHRlbmQgPyAweDgwIDogMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZ3JiaXQpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9MRURTXSAyLjMuMSBhbmQgMi4zLjIgKi9cbmZ1bmN0aW9uIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yU3RyaW5nKG8sIHcvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdC8vICRGbG93SWdub3JlXG5cdHZhciBDbGlwRm10ID0geyAyOiBcIkJJVE1BUFwiLCAzOiBcIk1FVEFGSUxFUElDVFwiLCA4OiBcIkRJQlwiLCAxNDogXCJFTkhNRVRBRklMRVwiIH07XG5cdHZhciBtLyo6bnVtYmVyKi8gPSBvLnJlYWRfc2hpZnQoNCk7XG5cdHN3aXRjaCAobSkge1xuXHRcdGNhc2UgMHgwMDAwMDAwMDogcmV0dXJuIFwiXCI7XG5cdFx0Y2FzZSAweGZmZmZmZmZmOiBjYXNlIDB4ZmZmZmZmZmU6IHJldHVybiBDbGlwRm10W28ucmVhZF9zaGlmdCg0KV0gfHwgXCJcIjtcblx0fVxuXHRpZiAobSA+IDB4MTkwKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6IFwiICsgbS50b1N0cmluZygxNikpO1xuXHRvLmwgLT0gNDtcblx0cmV0dXJuIG8ucmVhZF9zaGlmdCgwLCB3ID09IDEgPyBcImxwc3RyXCIgOiBcImxwd3N0clwiKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yQW5zaVN0cmluZyhvKSB7IHJldHVybiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclN0cmluZyhvLCAxKTsgfVxuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JVbmljb2RlU3RyaW5nKG8pIHsgcmV0dXJuIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yU3RyaW5nKG8sIDIpOyB9XG5cbi8qIFtNUy1PTEVQU10gMi4yIFByb3BlcnR5VHlwZSAqL1xuLy8gTm90ZTogc29tZSB0cmVlIHNoYWtlcnMgY2Fubm90IGhhbmRsZSBWVF9WRUNUT1IgfCAkQ09OU1QsIGhlbmNlIGV4dHJhIHZhcnNcbi8vdmFyIFZUX0VNUFRZICAgID0gMHgwMDAwO1xuLy92YXIgVlRfTlVMTCAgICAgPSAweDAwMDE7XG52YXIgVlRfSTIgICAgICAgPSAweDAwMDI7XG52YXIgVlRfSTQgICAgICAgPSAweDAwMDM7XG4vL3ZhciBWVF9SNCAgICAgICA9IDB4MDAwNDtcbi8vdmFyIFZUX1I4ICAgICAgID0gMHgwMDA1O1xuLy92YXIgVlRfQ1kgICAgICAgPSAweDAwMDY7XG4vL3ZhciBWVF9EQVRFICAgICA9IDB4MDAwNztcbi8vdmFyIFZUX0JTVFIgICAgID0gMHgwMDA4O1xuLy92YXIgVlRfRVJST1IgICAgPSAweDAwMEE7XG52YXIgVlRfQk9PTCAgICAgPSAweDAwMEI7XG52YXIgVlRfVkFSSUFOVCAgPSAweDAwMEM7XG4vL3ZhciBWVF9ERUNJTUFMICA9IDB4MDAwRTtcbi8vdmFyIFZUX0kxICAgICAgID0gMHgwMDEwO1xuLy92YXIgVlRfVUkxICAgICAgPSAweDAwMTE7XG4vL3ZhciBWVF9VSTIgICAgICA9IDB4MDAxMjtcbnZhciBWVF9VSTQgICAgICA9IDB4MDAxMztcbi8vdmFyIFZUX0k4ICAgICAgID0gMHgwMDE0O1xuLy92YXIgVlRfVUk4ICAgICAgPSAweDAwMTU7XG4vL3ZhciBWVF9JTlQgICAgICA9IDB4MDAxNjtcbi8vdmFyIFZUX1VJTlQgICAgID0gMHgwMDE3O1xudmFyIFZUX0xQU1RSICAgID0gMHgwMDFFO1xuLy92YXIgVlRfTFBXU1RSICAgPSAweDAwMUY7XG52YXIgVlRfRklMRVRJTUUgPSAweDAwNDA7XG52YXIgVlRfQkxPQiAgICAgPSAweDAwNDE7XG4vL3ZhciBWVF9TVFJFQU0gICA9IDB4MDA0Mjtcbi8vdmFyIFZUX1NUT1JBR0UgID0gMHgwMDQzO1xuLy92YXIgVlRfU1RSRUFNRURfT2JqZWN0ICA9IDB4MDA0NDtcbi8vdmFyIFZUX1NUT1JFRF9PYmplY3QgICAgPSAweDAwNDU7XG4vL3ZhciBWVF9CTE9CX09iamVjdCAgICAgID0gMHgwMDQ2O1xudmFyIFZUX0NGICAgICAgID0gMHgwMDQ3O1xuLy92YXIgVlRfQ0xTSUQgICAgPSAweDAwNDg7XG4vL3ZhciBWVF9WRVJTSU9ORURfU1RSRUFNID0gMHgwMDQ5O1xudmFyIFZUX1ZFQ1RPUiAgID0gMHgxMDAwO1xudmFyIFZUX1ZFQ1RPUl9WQVJJQU5UID0gMHgxMDBDO1xudmFyIFZUX1ZFQ1RPUl9MUFNUUiAgID0gMHgxMDFFO1xuLy92YXIgVlRfQVJSQVkgICAgPSAweDIwMDA7XG5cbnZhciBWVF9TVFJJTkcgICA9IDB4MDA1MDsgLy8gMi4zLjMuMS4xMSBWdFN0cmluZ1xudmFyIFZUX1VTVFIgICAgID0gMHgwMDUxOyAvLyAyLjMuMy4xLjEyIFZ0VW5hbGlnbmVkU3RyaW5nXG52YXIgVlRfQ1VTVE9NICAgPSBbVlRfU1RSSU5HLCBWVF9VU1RSXTtcblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjIuMi4xIERvY3VtZW50IFN1bW1hcnkgSW5mb3JtYXRpb24gUElERFNJICovXG52YXIgRG9jU3VtbWFyeVBJRERTSSA9IHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46ICdDb2RlUGFnZScsIHQ6IFZUX0kyIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOiAnQ2F0ZWdvcnknLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiB7IG46ICdQcmVzZW50YXRpb25Gb3JtYXQnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDQvKjo6XSovOiB7IG46ICdCeXRlQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwNS8qOjpdKi86IHsgbjogJ0xpbmVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogeyBuOiAnUGFyYWdyYXBoQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IHsgbjogJ1NsaWRlQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwOC8qOjpdKi86IHsgbjogJ05vdGVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA5Lyo6Ol0qLzogeyBuOiAnSGlkZGVuQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwYS8qOjpdKi86IHsgbjogJ011bHRpbWVkaWFDbGlwQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgwYi8qOjpdKi86IHsgbjogJ1NjYWxlQ3JvcCcsIHQ6IFZUX0JPT0wgfSxcblx0Lyo6OlsqLzB4MGMvKjo6XSovOiB7IG46ICdIZWFkaW5nUGFpcnMnLCB0OiBWVF9WRUNUT1JfVkFSSUFOVCAvKiBWVF9WRUNUT1IgfCBWVF9WQVJJQU5UICovIH0sXG5cdC8qOjpbKi8weDBkLyo6Ol0qLzogeyBuOiAnVGl0bGVzT2ZQYXJ0cycsIHQ6IFZUX1ZFQ1RPUl9MUFNUUiAvKiBWVF9WRUNUT1IgfCBWVF9MUFNUUiAqLyB9LFxuXHQvKjo6WyovMHgwZS8qOjpdKi86IHsgbjogJ01hbmFnZXInLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MGYvKjo6XSovOiB7IG46ICdDb21wYW55JywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOiAnTGlua3NVcFRvRGF0ZScsIHQ6IFZUX0JPT0wgfSxcblx0Lyo6OlsqLzB4MTEvKjo6XSovOiB7IG46ICdDaGFyYWN0ZXJDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDEzLyo6Ol0qLzogeyBuOiAnU2hhcmVkRG9jJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgxNi8qOjpdKi86IHsgbjogJ0h5cGVybGlua3NDaGFuZ2VkJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgxNy8qOjpdKi86IHsgbjogJ0FwcFZlcnNpb24nLCB0OiBWVF9JNCwgcDogJ3ZlcnNpb24nIH0sXG5cdC8qOjpbKi8weDE4Lyo6Ol0qLzogeyBuOiAnRGlnU2lnJywgdDogVlRfQkxPQiB9LFxuXHQvKjo6WyovMHgxQS8qOjpdKi86IHsgbjogJ0NvbnRlbnRUeXBlJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDFCLyo6Ol0qLzogeyBuOiAnQ29udGVudFN0YXR1cycsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxQy8qOjpdKi86IHsgbjogJ0xhbmd1YWdlJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogeyBuOiAnVmVyc2lvbicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9LFxuXHQvKiBbTVMtT0xFUFNdIDIuMTggKi9cblx0Lyo6OlsqLzB4ODAwMDAwMDAvKjo6XSovOiB7IG46ICdMb2NhbGUnLCB0OiBWVF9VSTQgfSxcblx0Lyo6OlsqLzB4ODAwMDAwMDMvKjo6XSovOiB7IG46ICdCZWhhdmlvcicsIHQ6IFZUX1VJNCB9LFxuXHQvKjo6WyovMHg3MjYyNzI2Mi8qOjpdKi86IHt9XG59O1xuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4xLjEgU3VtbWFyeSBJbmZvcm1hdGlvbiBQcm9wZXJ0eSBTZXQgUElEU0kgKi9cbnZhciBTdW1tYXJ5UElEU0kgPSB7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOiAnQ29kZVBhZ2UnLCB0OiBWVF9JMiB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjogJ1RpdGxlJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOiAnU3ViamVjdCcsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNC8qOjpdKi86IHsgbjogJ0F1dGhvcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNS8qOjpdKi86IHsgbjogJ0tleXdvcmRzJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogeyBuOiAnQ29tbWVudHMnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46ICdUZW1wbGF0ZScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwOC8qOjpdKi86IHsgbjogJ0xhc3RBdXRob3InLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiB7IG46ICdSZXZOdW1iZXInLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MEEvKjo6XSovOiB7IG46ICdFZGl0VGltZScsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogeyBuOiAnTGFzdFByaW50ZWQnLCB0OiBWVF9GSUxFVElNRSB9LFxuXHQvKjo6WyovMHgwQy8qOjpdKi86IHsgbjogJ0NyZWF0ZWREYXRlJywgdDogVlRfRklMRVRJTUUgfSxcblx0Lyo6OlsqLzB4MEQvKjo6XSovOiB7IG46ICdNb2RpZmllZERhdGUnLCB0OiBWVF9GSUxFVElNRSB9LFxuXHQvKjo6WyovMHgwRS8qOjpdKi86IHsgbjogJ1BhZ2VDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDBGLyo6Ol0qLzogeyBuOiAnV29yZENvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46ICdDaGFyQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgxMS8qOjpdKi86IHsgbjogJ1RodW1ibmFpbCcsIHQ6IFZUX0NGIH0sXG5cdC8qOjpbKi8weDEyLyo6Ol0qLzogeyBuOiAnQXBwbGljYXRpb24nLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MTMvKjo6XSovOiB7IG46ICdEb2NTZWN1cml0eScsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge30sXG5cdC8qIFtNUy1PTEVQU10gMi4xOCAqL1xuXHQvKjo6WyovMHg4MDAwMDAwMC8qOjpdKi86IHsgbjogJ0xvY2FsZScsIHQ6IFZUX1VJNCB9LFxuXHQvKjo6WyovMHg4MDAwMDAwMy8qOjpdKi86IHsgbjogJ0JlaGF2aW9yJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDcyNjI3MjYyLyo6Ol0qLzoge31cbn07XG5cbi8qIFtNUy1YTFNdIDIuNC42MyBDb3VudHJ5L1JlZ2lvbiBjb2RlcyAqL1xudmFyIENvdW50cnlFbnVtID0ge1xuXHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogXCJVU1wiLCAvLyBVbml0ZWQgU3RhdGVzXG5cdC8qOjpbKi8weDAwMDIvKjo6XSovOiBcIkNBXCIsIC8vIENhbmFkYVxuXHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogXCJcIiwgLy8gTGF0aW4gQW1lcmljYSAoZXhjZXB0IEJyYXppbClcblx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86IFwiUlVcIiwgLy8gUnVzc2lhXG5cdC8qOjpbKi8weDAwMTQvKjo6XSovOiBcIkVHXCIsIC8vIEVneXB0XG5cdC8qOjpbKi8weDAwMUUvKjo6XSovOiBcIkdSXCIsIC8vIEdyZWVjZVxuXHQvKjo6WyovMHgwMDFGLyo6Ol0qLzogXCJOTFwiLCAvLyBOZXRoZXJsYW5kc1xuXHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogXCJCRVwiLCAvLyBCZWxnaXVtXG5cdC8qOjpbKi8weDAwMjEvKjo6XSovOiBcIkZSXCIsIC8vIEZyYW5jZVxuXHQvKjo6WyovMHgwMDIyLyo6Ol0qLzogXCJFU1wiLCAvLyBTcGFpblxuXHQvKjo6WyovMHgwMDI0Lyo6Ol0qLzogXCJIVVwiLCAvLyBIdW5nYXJ5XG5cdC8qOjpbKi8weDAwMjcvKjo6XSovOiBcIklUXCIsIC8vIEl0YWx5XG5cdC8qOjpbKi8weDAwMjkvKjo6XSovOiBcIkNIXCIsIC8vIFN3aXR6ZXJsYW5kXG5cdC8qOjpbKi8weDAwMkIvKjo6XSovOiBcIkFUXCIsIC8vIEF1c3RyaWFcblx0Lyo6OlsqLzB4MDAyQy8qOjpdKi86IFwiR0JcIiwgLy8gVW5pdGVkIEtpbmdkb21cblx0Lyo6OlsqLzB4MDAyRC8qOjpdKi86IFwiREtcIiwgLy8gRGVubWFya1xuXHQvKjo6WyovMHgwMDJFLyo6Ol0qLzogXCJTRVwiLCAvLyBTd2VkZW5cblx0Lyo6OlsqLzB4MDAyRi8qOjpdKi86IFwiTk9cIiwgLy8gTm9yd2F5XG5cdC8qOjpbKi8weDAwMzAvKjo6XSovOiBcIlBMXCIsIC8vIFBvbGFuZFxuXHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogXCJERVwiLCAvLyBHZXJtYW55XG5cdC8qOjpbKi8weDAwMzQvKjo6XSovOiBcIk1YXCIsIC8vIE1leGljb1xuXHQvKjo6WyovMHgwMDM3Lyo6Ol0qLzogXCJCUlwiLCAvLyBCcmF6aWxcblx0Lyo6OlsqLzB4MDAzZC8qOjpdKi86IFwiQVVcIiwgLy8gQXVzdHJhbGlhXG5cdC8qOjpbKi8weDAwNDAvKjo6XSovOiBcIk5aXCIsIC8vIE5ldyBaZWFsYW5kXG5cdC8qOjpbKi8weDAwNDIvKjo6XSovOiBcIlRIXCIsIC8vIFRoYWlsYW5kXG5cdC8qOjpbKi8weDAwNTEvKjo6XSovOiBcIkpQXCIsIC8vIEphcGFuXG5cdC8qOjpbKi8weDAwNTIvKjo6XSovOiBcIktSXCIsIC8vIEtvcmVhXG5cdC8qOjpbKi8weDAwNTQvKjo6XSovOiBcIlZOXCIsIC8vIFZpZXQgTmFtXG5cdC8qOjpbKi8weDAwNTYvKjo6XSovOiBcIkNOXCIsIC8vIENoaW5hXG5cdC8qOjpbKi8weDAwNUEvKjo6XSovOiBcIlRSXCIsIC8vIFR1cmtleVxuXHQvKjo6WyovMHgwMDY5Lyo6Ol0qLzogXCJKU1wiLCAvLyBSYW1hc3RhblxuXHQvKjo6WyovMHgwMEQ1Lyo6Ol0qLzogXCJEWlwiLCAvLyBBbGdlcmlhXG5cdC8qOjpbKi8weDAwRDgvKjo6XSovOiBcIk1BXCIsIC8vIE1vcm9jY29cblx0Lyo6OlsqLzB4MDBEQS8qOjpdKi86IFwiTFlcIiwgLy8gTGlieWFcblx0Lyo6OlsqLzB4MDE1Ri8qOjpdKi86IFwiUFRcIiwgLy8gUG9ydHVnYWxcblx0Lyo6OlsqLzB4MDE2Mi8qOjpdKi86IFwiSVNcIiwgLy8gSWNlbGFuZFxuXHQvKjo6WyovMHgwMTY2Lyo6Ol0qLzogXCJGSVwiLCAvLyBGaW5sYW5kXG5cdC8qOjpbKi8weDAxQTQvKjo6XSovOiBcIkNaXCIsIC8vIEN6ZWNoIFJlcHVibGljXG5cdC8qOjpbKi8weDAzNzYvKjo6XSovOiBcIlRXXCIsIC8vIFRhaXdhblxuXHQvKjo6WyovMHgwM0MxLyo6Ol0qLzogXCJMQlwiLCAvLyBMZWJhbm9uXG5cdC8qOjpbKi8weDAzQzIvKjo6XSovOiBcIkpPXCIsIC8vIEpvcmRhblxuXHQvKjo6WyovMHgwM0MzLyo6Ol0qLzogXCJTWVwiLCAvLyBTeXJpYVxuXHQvKjo6WyovMHgwM0M0Lyo6Ol0qLzogXCJJUVwiLCAvLyBJcmFxXG5cdC8qOjpbKi8weDAzQzUvKjo6XSovOiBcIktXXCIsIC8vIEt1d2FpdFxuXHQvKjo6WyovMHgwM0M2Lyo6Ol0qLzogXCJTQVwiLCAvLyBTYXVkaSBBcmFiaWFcblx0Lyo6OlsqLzB4MDNDQi8qOjpdKi86IFwiQUVcIiwgLy8gVW5pdGVkIEFyYWIgRW1pcmF0ZXNcblx0Lyo6OlsqLzB4MDNDQy8qOjpdKi86IFwiSUxcIiwgLy8gSXNyYWVsXG5cdC8qOjpbKi8weDAzQ0UvKjo6XSovOiBcIlFBXCIsIC8vIFFhdGFyXG5cdC8qOjpbKi8weDAzRDUvKjo6XSovOiBcIklSXCIsIC8vIElyYW5cblx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IFwiVVNcIiAgLy8gVW5pdGVkIFN0YXRlc1xufTtcblxuLyogW01TLVhMU10gMi41LjEyNyAqL1xudmFyIFhMU0ZpbGxQYXR0ZXJuID0gW1xuXHRudWxsLFxuXHQnc29saWQnLFxuXHQnbWVkaXVtR3JheScsXG5cdCdkYXJrR3JheScsXG5cdCdsaWdodEdyYXknLFxuXHQnZGFya0hvcml6b250YWwnLFxuXHQnZGFya1ZlcnRpY2FsJyxcblx0J2RhcmtEb3duJyxcblx0J2RhcmtVcCcsXG5cdCdkYXJrR3JpZCcsXG5cdCdkYXJrVHJlbGxpcycsXG5cdCdsaWdodEhvcml6b250YWwnLFxuXHQnbGlnaHRWZXJ0aWNhbCcsXG5cdCdsaWdodERvd24nLFxuXHQnbGlnaHRVcCcsXG5cdCdsaWdodEdyaWQnLFxuXHQnbGlnaHRUcmVsbGlzJyxcblx0J2dyYXkxMjUnLFxuXHQnZ3JheTA2MjUnXG5dO1xuXG5mdW5jdGlvbiByZ2JpZnkoYXJyLyo6QXJyYXk8bnVtYmVyPiovKS8qOkFycmF5PFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4qLyB7IHJldHVybiBhcnIubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIFsoeD4+MTYpJjI1NSwoeD4+OCkmMjU1LHgmMjU1XTsgfSk7IH1cblxuLyogW01TLVhMU10gMi41LjE2MSAqL1xuLyogW01TLVhMU0JdIDIuNS43NSBJY3YgKi9cbnZhciBfWExTSWN2ID0gLyojX19QVVJFX18qLyByZ2JpZnkoW1xuXHQvKiBDb2xvciBDb25zdGFudHMgKi9cblx0MHgwMDAwMDAsXG5cdDB4RkZGRkZGLFxuXHQweEZGMDAwMCxcblx0MHgwMEZGMDAsXG5cdDB4MDAwMEZGLFxuXHQweEZGRkYwMCxcblx0MHhGRjAwRkYsXG5cdDB4MDBGRkZGLFxuXG5cdC8qIE92ZXJyaWRhYmxlIERlZmF1bHRzICovXG5cdDB4MDAwMDAwLFxuXHQweEZGRkZGRixcblx0MHhGRjAwMDAsXG5cdDB4MDBGRjAwLFxuXHQweDAwMDBGRixcblx0MHhGRkZGMDAsXG5cdDB4RkYwMEZGLFxuXHQweDAwRkZGRixcblxuXHQweDgwMDAwMCxcblx0MHgwMDgwMDAsXG5cdDB4MDAwMDgwLFxuXHQweDgwODAwMCxcblx0MHg4MDAwODAsXG5cdDB4MDA4MDgwLFxuXHQweEMwQzBDMCxcblx0MHg4MDgwODAsXG5cdDB4OTk5OUZGLFxuXHQweDk5MzM2Nixcblx0MHhGRkZGQ0MsXG5cdDB4Q0NGRkZGLFxuXHQweDY2MDA2Nixcblx0MHhGRjgwODAsXG5cdDB4MDA2NkNDLFxuXHQweENDQ0NGRixcblxuXHQweDAwMDA4MCxcblx0MHhGRjAwRkYsXG5cdDB4RkZGRjAwLFxuXHQweDAwRkZGRixcblx0MHg4MDAwODAsXG5cdDB4ODAwMDAwLFxuXHQweDAwODA4MCxcblx0MHgwMDAwRkYsXG5cdDB4MDBDQ0ZGLFxuXHQweENDRkZGRixcblx0MHhDQ0ZGQ0MsXG5cdDB4RkZGRjk5LFxuXHQweDk5Q0NGRixcblx0MHhGRjk5Q0MsXG5cdDB4Q0M5OUZGLFxuXHQweEZGQ0M5OSxcblxuXHQweDMzNjZGRixcblx0MHgzM0NDQ0MsXG5cdDB4OTlDQzAwLFxuXHQweEZGQ0MwMCxcblx0MHhGRjk5MDAsXG5cdDB4RkY2NjAwLFxuXHQweDY2NjY5OSxcblx0MHg5Njk2OTYsXG5cdDB4MDAzMzY2LFxuXHQweDMzOTk2Nixcblx0MHgwMDMzMDAsXG5cdDB4MzMzMzAwLFxuXHQweDk5MzMwMCxcblx0MHg5OTMzNjYsXG5cdDB4MzMzMzk5LFxuXHQweDMzMzMzMyxcblxuXHQvKiBPdGhlciBlbnRyaWVzIHRvIGFwcGVhc2UgQklGRjgvMTIgKi9cblx0MHhGRkZGRkYsIC8qIDB4NDAgaWN2Rm9yZWdyb3VuZCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0MSBpY3ZCYWNrZ3JvdW5kID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQyIGljdkZyYW1lID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQzIGljdjNEID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ0IGljdjNEVGV4dCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0NSBpY3YzREhpbGl0ZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0NiBpY3YzRFNoYWRvdyA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0NyBpY3ZIaWxpdGUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDggaWN2Q3RsVGV4dCA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0OSBpY3ZDdGxTY3JsID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRBIGljdkN0bEludiA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0QiBpY3ZDdGxCb2R5ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRDIGljdkN0bEZyYW1lID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDREIGljdkN0bEZvcmUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEUgaWN2Q3RsQmFjayA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0RiBpY3ZDdGxOZXV0cmFsICovXG5cdDB4MDAwMDAwLCAvKiAweDUwIGljdkluZm9CayA/PyAqL1xuXHQweDAwMDAwMCAvKiAweDUxIGljdkluZm9UZXh0ID8/ICovXG5dKTtcbnZhciBYTFNJY3YgPSAvKiNfX1BVUkVfXyovZHVwKF9YTFNJY3YpO1xuXG4vKiBbTVMtWExTQl0gMi41Ljk3LjIgKi9cbnZhciBCRXJyID0ge1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IFwiI05VTEwhXCIsXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogXCIjRElWLzAhXCIsXG5cdC8qOjpbKi8weDBGLyo6Ol0qLzogXCIjVkFMVUUhXCIsXG5cdC8qOjpbKi8weDE3Lyo6Ol0qLzogXCIjUkVGIVwiLFxuXHQvKjo6WyovMHgxRC8qOjpdKi86IFwiI05BTUU/XCIsXG5cdC8qOjpbKi8weDI0Lyo6Ol0qLzogXCIjTlVNIVwiLFxuXHQvKjo6WyovMHgyQS8qOjpdKi86IFwiI04vQVwiLFxuXHQvKjo6WyovMHgyQi8qOjpdKi86IFwiI0dFVFRJTkdfREFUQVwiLFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IFwiI1dURj9cIlxufTtcbi8vdmFyIFJCRXJyID0gZXZlcnRfbnVtKEJFcnIpO1xudmFyIFJCRXJyID0ge1xuXHRcIiNOVUxMIVwiOiAgICAgICAgMHgwMCxcblx0XCIjRElWLzAhXCI6ICAgICAgIDB4MDcsXG5cdFwiI1ZBTFVFIVwiOiAgICAgICAweDBGLFxuXHRcIiNSRUYhXCI6ICAgICAgICAgMHgxNyxcblx0XCIjTkFNRT9cIjogICAgICAgIDB4MUQsXG5cdFwiI05VTSFcIjogICAgICAgICAweDI0LFxuXHRcIiNOL0FcIjogICAgICAgICAgMHgyQSxcblx0XCIjR0VUVElOR19EQVRBXCI6IDB4MkIsXG5cdFwiI1dURj9cIjogICAgICAgICAweEZGXG59O1xuXG4vKiBQYXJ0cyBlbnVtZXJhdGVkIGluIE9QQyBzcGVjLCBNUy1YTFNCIGFuZCBNUy1YTFNYICovXG4vKiAxMi4zIFBhcnQgU3VtbWFyeSA8U3ByZWFkc2hlZXRNTD4gKi9cbi8qIDE0LjIgUGFydCBTdW1tYXJ5IDxEcmF3aW5nTUw+ICovXG4vKiBbTVMtWExTWF0gMi4xIFBhcnQgRW51bWVyYXRpb25zIDsgW01TLVhMU0JdIDIuMS43IFBhcnQgRW51bWVyYXRpb24gKi9cbnZhciBjdDJ0eXBlLyp7W3N0cmluZ106c3RyaW5nfSovID0gKHtcblx0LyogV29ya2Jvb2sgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiOiBcIndvcmtib29rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWxcIjogXCJ3b3JrYm9va3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbFwiOiBcIndvcmtib29rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cblx0LyogV29ya3NoZWV0ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbFwiOiBcInNoZWV0c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53b3Jrc2hlZXRcIjogXCJzaGVldHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhXc1wiOiBcIlRPRE9cIiwgLyogQmluYXJ5IEluZGV4ICovXG5cblx0LyogQ2hhcnRzaGVldCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sXCI6IFwiY2hhcnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXRcIjogXCJjaGFydHNcIixcblxuXHQvKiBNYWNyb3NoZWV0ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sXCI6IFwibWFjcm9zXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXRcIjogXCJtYWNyb3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuaW50bG1hY3Jvc2hlZXRcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4TXNcIjogXCJUT0RPXCIsIC8qIEJpbmFyeSBJbmRleCAqL1xuXG5cdC8qIERpYWxvZ3NoZWV0ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZGlhbG9nc2hlZXQreG1sXCI6IFwiZGlhbG9nc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5kaWFsb2dzaGVldFwiOiBcImRpYWxvZ3NcIixcblxuXHQvKiBTaGFyZWQgU3RyaW5ncyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sXCI6IFwic3Ryc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzXCI6IFwic3Ryc1wiLFxuXG5cdC8qIFN0eWxlcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIjogXCJzdHlsZXNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc3R5bGVzXCI6IFwic3R5bGVzXCIsXG5cblx0LyogRmlsZSBQcm9wZXJ0aWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbFwiOiBcImNvcmVwcm9wc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWxcIjogXCJjdXN0cHJvcHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZXh0ZW5kZWQtcHJvcGVydGllcyt4bWxcIjogXCJleHRwcm9wc1wiLFxuXG5cdC8qIEN1c3RvbSBEYXRhIFByb3BlcnRpZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tWG1sUHJvcGVydGllcyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY3VzdG9tUHJvcGVydHlcIjogXCJUT0RPXCIsXG5cblx0LyogQ29tbWVudHMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWxcIjogXCJjb21tZW50c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb21tZW50c1wiOiBcImNvbW1lbnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRocmVhZGVkY29tbWVudHMreG1sXCI6IFwidGhyZWFkZWRjb21tZW50c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5wZXJzb24reG1sXCI6IFwicGVvcGxlXCIsXG5cblx0LyogTWV0YWRhdGEgKFN0b2NrL0dlb2dyYXBoeSBhbmQgRHluYW1pYyBBcnJheSkgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbFwiOiBcIm1ldGFkYXRhXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGFcIjogXCJtZXRhZGF0YVwiLFxuXG5cdC8qIFBpdm90VGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RUYWJsZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdFRhYmxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDaGFydCBPYmplY3RzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydCt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2hhcnQgQ29sb3JzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGNvbG9yc3R5bGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IFN0eWxlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydHN0eWxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDaGFydCBBZHZhbmNlZCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRleCt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2FsY3VsYXRpb24gQ2hhaW4gKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2FsY0NoYWluXCI6IFwiY2FsY2NoYWluc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNhbGNDaGFpbit4bWxcIjogXCJjYWxjY2hhaW5zXCIsXG5cblx0LyogUHJpbnRlciBTZXR0aW5ncyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5nc1wiOiBcIlRPRE9cIixcblxuXHQvKiBBY3RpdmVYICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZlWCt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ3VzdG9tIFRvb2xiYXJzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmF0dGFjaGVkVG9vbGJhcnNcIjogXCJUT0RPXCIsXG5cblx0LyogRXh0ZXJuYWwgRGF0YSBDb25uZWN0aW9ucyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb25uZWN0aW9uc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogRXh0ZXJuYWwgTGlua3MgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZXh0ZXJuYWxMaW5rXCI6IFwibGlua3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbExpbmsreG1sXCI6IFwibGlua3NcIixcblxuXHQvKiBQaXZvdENhY2hlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlUmVjb3Jkc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFF1ZXJ5IFRhYmxlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnF1ZXJ5VGFibGVcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucXVlcnlUYWJsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogU2hhcmVkIFdvcmtib29rICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnVzZXJOYW1lc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25IZWFkZXJzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkxvZ1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkhlYWRlcnMreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uTG9nK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC51c2VyTmFtZXMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFNpbmdsZSBDZWxsIFRhYmxlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlU2luZ2xlQ2VsbHNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVTaW5nbGVDZWxscyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogU2xpY2VyICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlclwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGVcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlcit4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTb3J0IE1hcCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53c1NvcnRNYXBcIjogXCJUT0RPXCIsXG5cblx0LyogVGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFRoZW1lcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZSt4bWxcIjogXCJ0aGVtZXNcIixcblxuXHQvKiBUaGVtZSBPdmVycmlkZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBUaW1lbGluZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZSt4bWxcIjogXCJUT0RPXCIsIC8qIHZlcmlmeSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbFwiOiBcIlRPRE9cIiwgLyogdmVyaWZ5ICovXG5cblx0LyogVkJBICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52YmFQcm9qZWN0XCI6IFwidmJhXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52YmFQcm9qZWN0U2lnbmF0dXJlXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFZvbGF0aWxlIERlcGVuZGVuY2llcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2Uudm9sYXRpbGVEZXBlbmRlbmNpZXNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudm9sYXRpbGVEZXBlbmRlbmNpZXMreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENvbnRyb2wgUHJvcGVydGllcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb250cm9scHJvcGVydGllcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogRGF0YSBNb2RlbCAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFN1cnZleSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5TdXJ2ZXkreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIERyYXdpbmcgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWxcIjogXCJkcmF3aW5nc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUNvbG9ycyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtRGF0YSt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtTGF5b3V0K3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1TdHlsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogVk1MICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmdcIjogXCJUT0RPXCIsXG5cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbFwiOiBcInJlbHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQub2xlT2JqZWN0XCI6IFwiVE9ET1wiLFxuXG5cdC8qIEltYWdlICovXG5cdFwiaW1hZ2UvcG5nXCI6IFwiVE9ET1wiLFxuXG5cdFwic2hlZXRcIjogXCJqc1wiXG59Lyo6YW55Ki8pO1xuXG52YXIgQ1RfTElTVCA9IHtcblx0XHR3b3JrYm9va3M6IHtcblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWxcIixcblx0XHRcdHhsc206IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC5tYWluK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluXCIsXG5cdFx0XHR4bGFtOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWxcIixcblx0XHRcdHhsdHg6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWxcIlxuXHRcdH0sXG5cdFx0c3RyczogeyAvKiBTaGFyZWQgU3RyaW5ncyAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRTdHJpbmdzK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hhcmVkU3RyaW5nc1wiXG5cdFx0fSxcblx0XHRjb21tZW50czogeyAvKiBDb21tZW50cyAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzXCJcblx0XHR9LFxuXHRcdHNoZWV0czogeyAvKiBXb3Jrc2hlZXQgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0XCJcblx0XHR9LFxuXHRcdGNoYXJ0czogeyAvKiBDaGFydHNoZWV0ICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jaGFydHNoZWV0XCJcblx0XHR9LFxuXHRcdGRpYWxvZ3M6IHsgLyogRGlhbG9nc2hlZXQgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZGlhbG9nc2hlZXQreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5kaWFsb2dzaGVldFwiXG5cdFx0fSxcblx0XHRtYWNyb3M6IHsgLyogTWFjcm9zaGVldCAoRXhjZWwgNC4wIE1hY3JvcykgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0XCJcblx0XHR9LFxuXHRcdG1ldGFkYXRhOiB7IC8qIE1ldGFkYXRhIChTdG9jay9HZW9ncmFwaHkgYW5kIER5bmFtaWMgQXJyYXkpICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0TWV0YWRhdGEreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldE1ldGFkYXRhXCJcblx0XHR9LFxuXHRcdHN0eWxlczogeyAvKiBTdHlsZXMgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc3R5bGVzXCJcblx0XHR9XG59O1xuXG5mdW5jdGlvbiBuZXdfY3QoKS8qOmFueSovIHtcblx0cmV0dXJuICh7XG5cdFx0d29ya2Jvb2tzOltdLCBzaGVldHM6W10sIGNoYXJ0czpbXSwgZGlhbG9nczpbXSwgbWFjcm9zOltdLFxuXHRcdHJlbHM6W10sIHN0cnM6W10sIGNvbW1lbnRzOltdLCB0aHJlYWRlZGNvbW1lbnRzOltdLCBsaW5rczpbXSxcblx0XHRjb3JlcHJvcHM6W10sIGV4dHByb3BzOltdLCBjdXN0cHJvcHM6W10sIHRoZW1lczpbXSwgc3R5bGVzOltdLFxuXHRcdGNhbGNjaGFpbnM6W10sIHZiYTogW10sIGRyYXdpbmdzOiBbXSwgbWV0YWRhdGE6IFtdLCBwZW9wbGU6W10sXG5cdFx0VE9ETzpbXSwgeG1sbnM6IFwiXCIgfS8qOmFueSovKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfY3QoZGF0YS8qOj9zdHJpbmcqLykge1xuXHR2YXIgY3QgPSBuZXdfY3QoKTtcblx0aWYoIWRhdGEgfHwgIWRhdGEubWF0Y2gpIHJldHVybiBjdDtcblx0dmFyIGN0ZXh0ID0ge307XG5cdChkYXRhLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHlbMF0ucmVwbGFjZShuc3JlZ2V4LFwiPFwiKSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblx0XHRcdGNhc2UgJzxUeXBlcyc6IGN0LnhtbG5zID0geVsneG1sbnMnICsgKHlbMF0ubWF0Y2goLzwoXFx3Kyk6Lyl8fFtcIlwiLFwiXCJdKVsxXSBdOyBicmVhaztcblx0XHRcdGNhc2UgJzxEZWZhdWx0JzogY3RleHRbeS5FeHRlbnNpb25dID0geS5Db250ZW50VHlwZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8T3ZlcnJpZGUnOlxuXHRcdFx0XHRpZihjdFtjdDJ0eXBlW3kuQ29udGVudFR5cGVdXSAhPT0gdW5kZWZpbmVkKSBjdFtjdDJ0eXBlW3kuQ29udGVudFR5cGVdXS5wdXNoKHkuUGFydE5hbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH0pO1xuXHRpZihjdC54bWxucyAhPT0gWE1MTlMuQ1QpIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gTmFtZXNwYWNlOiBcIiArIGN0LnhtbG5zKTtcblx0Y3QuY2FsY2NoYWluID0gY3QuY2FsY2NoYWlucy5sZW5ndGggPiAwID8gY3QuY2FsY2NoYWluc1swXSA6IFwiXCI7XG5cdGN0LnNzdCA9IGN0LnN0cnMubGVuZ3RoID4gMCA/IGN0LnN0cnNbMF0gOiBcIlwiO1xuXHRjdC5zdHlsZSA9IGN0LnN0eWxlcy5sZW5ndGggPiAwID8gY3Quc3R5bGVzWzBdIDogXCJcIjtcblx0Y3QuZGVmYXVsdHMgPSBjdGV4dDtcblx0ZGVsZXRlIGN0LmNhbGNjaGFpbnM7XG5cdHJldHVybiBjdDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY3QoY3QsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgdHlwZTJjdC8qe1tzdHJpbmddOkFycmF5PHN0cmluZz59Ki8gPSBldmVydF9hcnIoY3QydHlwZSk7XG5cblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgdjtcblx0b1tvLmxlbmd0aF0gPSAoWE1MX0hFQURFUik7XG5cdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKCdUeXBlcycsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOUy5DVCxcblx0XHQneG1sbnM6eHNkJzogWE1MTlMueHNkLFxuXHRcdCd4bWxuczp4c2knOiBYTUxOUy54c2lcblx0fSk7XG5cblx0byA9IG8uY29uY2F0KFtcblx0XHRbJ3htbCcsICdhcHBsaWNhdGlvbi94bWwnXSxcblx0XHRbJ2JpbicsICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluJ10sXG5cdFx0Wyd2bWwnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmcnXSxcblx0XHRbJ2RhdGEnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGEnXSxcblx0XHQvKiBmcm9tIHRlc3QgZmlsZXMgKi9cblx0XHRbJ2JtcCcsICdpbWFnZS9ibXAnXSxcblx0XHRbJ3BuZycsICdpbWFnZS9wbmcnXSxcblx0XHRbJ2dpZicsICdpbWFnZS9naWYnXSxcblx0XHRbJ2VtZicsICdpbWFnZS94LWVtZiddLFxuXHRcdFsnd21mJywgJ2ltYWdlL3gtd21mJ10sXG5cdFx0WydqcGcnLCAnaW1hZ2UvanBlZyddLCBbJ2pwZWcnLCAnaW1hZ2UvanBlZyddLFxuXHRcdFsndGlmJywgJ2ltYWdlL3RpZmYnXSwgWyd0aWZmJywgJ2ltYWdlL3RpZmYnXSxcblx0XHRbJ3BkZicsICdhcHBsaWNhdGlvbi9wZGYnXSxcblx0XHRbJ3JlbHMnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwnXVxuXHRdLm1hcChmdW5jdGlvbih4KSB7XG5cdFx0cmV0dXJuIHdyaXRleHRhZygnRGVmYXVsdCcsIG51bGwsIHsnRXh0ZW5zaW9uJzp4WzBdLCAnQ29udGVudFR5cGUnOiB4WzFdfSk7XG5cdH0pKTtcblxuXHQvKiBvbmx5IHdyaXRlIGZpcnN0IGluc3RhbmNlICovXG5cdHZhciBmMSA9IGZ1bmN0aW9uKHcpIHtcblx0XHRpZihjdFt3XSAmJiBjdFt3XS5sZW5ndGggPiAwKSB7XG5cdFx0XHR2ID0gY3Rbd11bMF07XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ092ZXJyaWRlJywgbnVsbCwge1xuXHRcdFx0XHQnUGFydE5hbWUnOiAodlswXSA9PSAnLycgPyBcIlwiOlwiL1wiKSArIHYsXG5cdFx0XHRcdCdDb250ZW50VHlwZSc6IENUX0xJU1Rbd11bb3B0cy5ib29rVHlwZV0gfHwgQ1RfTElTVFt3XVsneGxzeCddXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qIGJvb2sgdHlwZS1zcGVjaWZpYyAqL1xuXHR2YXIgZjIgPSBmdW5jdGlvbih3KSB7XG5cdFx0KGN0W3ddfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ092ZXJyaWRlJywgbnVsbCwge1xuXHRcdFx0XHQnUGFydE5hbWUnOiAodlswXSA9PSAnLycgPyBcIlwiOlwiL1wiKSArIHYsXG5cdFx0XHRcdCdDb250ZW50VHlwZSc6IENUX0xJU1Rbd11bb3B0cy5ib29rVHlwZV0gfHwgQ1RfTElTVFt3XVsneGxzeCddXG5cdFx0XHR9KSk7XG5cdFx0fSk7XG5cdH07XG5cblx0Lyogc3RhbmRhcmQgdHlwZSAqL1xuXHR2YXIgZjMgPSBmdW5jdGlvbih0KSB7XG5cdFx0KGN0W3RdfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ092ZXJyaWRlJywgbnVsbCwge1xuXHRcdFx0XHQnUGFydE5hbWUnOiAodlswXSA9PSAnLycgPyBcIlwiOlwiL1wiKSArIHYsXG5cdFx0XHRcdCdDb250ZW50VHlwZSc6IHR5cGUyY3RbdF1bMF1cblx0XHRcdH0pKTtcblx0XHR9KTtcblx0fTtcblxuXHRmMSgnd29ya2Jvb2tzJyk7XG5cdGYyKCdzaGVldHMnKTtcblx0ZjIoJ2NoYXJ0cycpO1xuXHRmMygndGhlbWVzJyk7XG5cdFsnc3RycycsICdzdHlsZXMnXS5mb3JFYWNoKGYxKTtcblx0Wydjb3JlcHJvcHMnLCAnZXh0cHJvcHMnLCAnY3VzdHByb3BzJ10uZm9yRWFjaChmMyk7XG5cdGYzKCd2YmEnKTtcblx0ZjMoJ2NvbW1lbnRzJyk7XG5cdGYzKCd0aHJlYWRlZGNvbW1lbnRzJyk7XG5cdGYzKCdkcmF3aW5ncycpO1xuXHRmMignbWV0YWRhdGEnKTtcblx0ZjMoJ3Blb3BsZScpO1xuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvVHlwZXM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIDkuMyBSZWxhdGlvbnNoaXBzICovXG52YXIgUkVMUyA9ICh7XG5cdFdCOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnRcIixcblx0U0hFRVQ6IFwiaHR0cDovL3NoZWV0anMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudFwiLFxuXHRITElOSzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGlua1wiLFxuXHRWTUw6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy92bWxEcmF3aW5nXCIsXG5cdFhQQVRIOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZXJuYWxMaW5rUGF0aFwiLFxuXHRYTUlTUzogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3NpbmdcIixcblx0WExJTks6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmtcIixcblx0Q1hNTDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFwiLFxuXHRDWE1MUDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzXCIsXG5cdENNTlQ6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jb21tZW50c1wiLFxuXHRDT1JFX1BST1BTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXNcIixcblx0RVhUX1BST1BTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlbmRlZC1wcm9wZXJ0aWVzJyxcblx0Q1VTVF9QUk9QUzogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tLXByb3BlcnRpZXMnLFxuXHRTU1Q6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGFyZWRTdHJpbmdzXCIsXG5cdFNUWTogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlc1wiLFxuXHRUSEVNRTogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lXCIsXG5cdENIQVJUOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnRcIixcblx0Q0hBUlRFWDogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE0L3JlbGF0aW9uc2hpcHMvY2hhcnRFeFwiLFxuXHRDUzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXRcIixcblx0V1M6IFtcblx0XHRcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0XCIsXG5cdFx0XCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldFwiXG5cdF0sXG5cdERTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZGlhbG9nc2hlZXRcIixcblx0TVM6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsTWFjcm9zaGVldFwiLFxuXHRJTUc6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9pbWFnZVwiLFxuXHREUkFXOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZHJhd2luZ1wiLFxuXHRYTE1FVEE6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGVldE1ldGFkYXRhXCIsXG5cdFRDTU5UOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTcvMTAvcmVsYXRpb25zaGlwcy90aHJlYWRlZENvbW1lbnRcIixcblx0UEVPUExFOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTcvMTAvcmVsYXRpb25zaGlwcy9wZXJzb25cIixcblx0VkJBOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0XCJcbn0vKjphbnkqLyk7XG5cblxuLyogOS4zLjMgUmVwcmVzZW50aW5nIFJlbGF0aW9uc2hpcHMgKi9cbmZ1bmN0aW9uIGdldF9yZWxzX3BhdGgoZmlsZS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG4gPSBmaWxlLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0cmV0dXJuIGZpbGUuc2xpY2UoMCxuKzEpICsgJ19yZWxzLycgKyBmaWxlLnNsaWNlKG4rMSkgKyBcIi5yZWxzXCI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3JlbHMoZGF0YS8qOj9zdHJpbmcqLywgY3VycmVudEZpbGVQYXRoLyo6c3RyaW5nKi8pIHtcblx0dmFyIHJlbHMgPSB7XCIhaWRcIjp7fX07XG5cdGlmICghZGF0YSkgcmV0dXJuIHJlbHM7XG5cdGlmIChjdXJyZW50RmlsZVBhdGguY2hhckF0KDApICE9PSAnLycpIHtcblx0XHRjdXJyZW50RmlsZVBhdGggPSAnLycrY3VycmVudEZpbGVQYXRoO1xuXHR9XG5cdHZhciBoYXNoID0ge307XG5cblx0KGRhdGEubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHQvKiA5LjMuMi4yIE9QQ19SZWxhdGlvbnNoaXBzICovXG5cdFx0aWYgKHlbMF0gPT09ICc8UmVsYXRpb25zaGlwJykge1xuXHRcdFx0dmFyIHJlbCA9IHt9OyByZWwuVHlwZSA9IHkuVHlwZTsgcmVsLlRhcmdldCA9IHkuVGFyZ2V0OyByZWwuSWQgPSB5LklkOyBpZih5LlRhcmdldE1vZGUpIHJlbC5UYXJnZXRNb2RlID0geS5UYXJnZXRNb2RlO1xuXHRcdFx0dmFyIGNhbm9uaWN0YXJnZXQgPSB5LlRhcmdldE1vZGUgPT09ICdFeHRlcm5hbCcgPyB5LlRhcmdldCA6IHJlc29sdmVfcGF0aCh5LlRhcmdldCwgY3VycmVudEZpbGVQYXRoKTtcblx0XHRcdHJlbHNbY2Fub25pY3RhcmdldF0gPSByZWw7XG5cdFx0XHRoYXNoW3kuSWRdID0gcmVsO1xuXHRcdH1cblx0fSk7XG5cdHJlbHNbXCIhaWRcIl0gPSBoYXNoO1xuXHRyZXR1cm4gcmVscztcbn1cblxuXG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9yZWxzKHJlbHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ1JlbGF0aW9uc2hpcHMnLCBudWxsLCB7XG5cdFx0Ly8neG1sbnM6bnMwJzogWE1MTlMuUkVMUyxcblx0XHQneG1sbnMnOiBYTUxOUy5SRUxTXG5cdH0pXTtcblx0a2V5cyhyZWxzWychaWQnXSkuZm9yRWFjaChmdW5jdGlvbihyaWQpIHtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ1JlbGF0aW9uc2hpcCcsIG51bGwsIHJlbHNbJyFpZCddW3JpZF0pKTtcblx0fSk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9SZWxhdGlvbnNoaXBzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIGFkZF9yZWxzKHJlbHMsIHJJZC8qOm51bWJlciovLCBmLCB0eXBlLCByZWxvYmosIHRhcmdldG1vZGUvKjo/c3RyaW5nKi8pLyo6bnVtYmVyKi8ge1xuXHRpZighcmVsb2JqKSByZWxvYmogPSB7fTtcblx0aWYoIXJlbHNbJyFpZCddKSByZWxzWychaWQnXSA9IHt9O1xuXHRpZighcmVsc1snIWlkeCddKSByZWxzWychaWR4J10gPSAxO1xuXHRpZihySWQgPCAwKSBmb3IocklkID0gcmVsc1snIWlkeCddOyByZWxzWychaWQnXVsncklkJyArIHJJZF07ICsrcklkKXsvKiBlbXB0eSAqL31cblx0cmVsc1snIWlkeCddID0gcklkICsgMTtcblx0cmVsb2JqLklkID0gJ3JJZCcgKyBySWQ7XG5cdHJlbG9iai5UeXBlID0gdHlwZTtcblx0cmVsb2JqLlRhcmdldCA9IGY7XG5cdGlmKHRhcmdldG1vZGUpIHJlbG9iai5UYXJnZXRNb2RlID0gdGFyZ2V0bW9kZTtcblx0ZWxzZSBpZihbUkVMUy5ITElOSywgUkVMUy5YUEFUSCwgUkVMUy5YTUlTU10uaW5kZXhPZihyZWxvYmouVHlwZSkgPiAtMSkgcmVsb2JqLlRhcmdldE1vZGUgPSBcIkV4dGVybmFsXCI7XG5cdGlmKHJlbHNbJyFpZCddW3JlbG9iai5JZF0pIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCByZXdyaXRlIHJJZCBcIiArIHJJZCk7XG5cdHJlbHNbJyFpZCddW3JlbG9iai5JZF0gPSByZWxvYmo7XG5cdHJlbHNbKCcvJyArIHJlbG9iai5UYXJnZXQpLnJlcGxhY2UoXCIvL1wiLFwiL1wiKV0gPSByZWxvYmo7XG5cdHJldHVybiBySWQ7XG59XG4vKiBPcGVuIERvY3VtZW50IEZvcm1hdCBmb3IgT2ZmaWNlIEFwcGxpY2F0aW9ucyAoT3BlbkRvY3VtZW50KSBWZXJzaW9uIDEuMiAqL1xuLyogUGFydCAzIFNlY3Rpb24gNCBNYW5pZmVzdCBGaWxlICovXG52YXIgQ1RfT0RTID0gXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI7XG5mdW5jdGlvbiBwYXJzZV9tYW5pZmVzdChkLCBvcHRzKSB7XG5cdHZhciBzdHIgPSB4bG1sX25vcm1hbGl6ZShkKTtcblx0dmFyIFJuO1xuXHR2YXIgRkV0YWc7XG5cdHdoaWxlKChSbiA9IHhsbWxyZWdleC5leGVjKHN0cikpKSBzd2l0Y2goUm5bM10pIHtcblx0XHRjYXNlICdtYW5pZmVzdCc6IGJyZWFrOyAvLyA0LjIgPG1hbmlmZXN0Om1hbmlmZXN0PlxuXHRcdGNhc2UgJ2ZpbGUtZW50cnknOiAvLyA0LjMgPG1hbmlmZXN0OmZpbGUtZW50cnk+XG5cdFx0XHRGRXRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRpZihGRXRhZy5wYXRoID09ICcvJyAmJiBGRXRhZy50eXBlICE9PSBDVF9PRFMpIHRocm93IG5ldyBFcnJvcihcIlRoaXMgT3BlbkRvY3VtZW50IGlzIG5vdCBhIHNwcmVhZHNoZWV0XCIpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnZW5jcnlwdGlvbi1kYXRhJzogLy8gNC40IDxtYW5pZmVzdDplbmNyeXB0aW9uLWRhdGE+XG5cdFx0Y2FzZSAnYWxnb3JpdGhtJzogLy8gNC41IDxtYW5pZmVzdDphbGdvcml0aG0+XG5cdFx0Y2FzZSAnc3RhcnQta2V5LWdlbmVyYXRpb24nOiAvLyA0LjYgPG1hbmlmZXN0OnN0YXJ0LWtleS1nZW5lcmF0aW9uPlxuXHRcdGNhc2UgJ2tleS1kZXJpdmF0aW9uJzogLy8gNC43IDxtYW5pZmVzdDprZXktZGVyaXZhdGlvbj5cblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIE9EUyBFbmNyeXB0aW9uXCIpO1xuXHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IFJuO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlX21hbmlmZXN0KG1hbmlmZXN0Lyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0by5wdXNoKCc8bWFuaWZlc3Q6bWFuaWZlc3QgeG1sbnM6bWFuaWZlc3Q9XCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1hbmlmZXN0OjEuMFwiIG1hbmlmZXN0OnZlcnNpb249XCIxLjJcIj5cXG4nKTtcblx0by5wdXNoKCcgIDxtYW5pZmVzdDpmaWxlLWVudHJ5IG1hbmlmZXN0OmZ1bGwtcGF0aD1cIi9cIiBtYW5pZmVzdDp2ZXJzaW9uPVwiMS4yXCIgbWFuaWZlc3Q6bWVkaWEtdHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIi8+XFxuJyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBtYW5pZmVzdC5sZW5ndGg7ICsraSkgby5wdXNoKCcgIDxtYW5pZmVzdDpmaWxlLWVudHJ5IG1hbmlmZXN0OmZ1bGwtcGF0aD1cIicgKyBtYW5pZmVzdFtpXVswXSArICdcIiBtYW5pZmVzdDptZWRpYS10eXBlPVwiJyArIG1hbmlmZXN0W2ldWzFdICsgJ1wiLz5cXG4nKTtcblx0by5wdXNoKCc8L21hbmlmZXN0Om1hbmlmZXN0PicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBQYXJ0IDMgU2VjdGlvbiA2IE1ldGFkYXRhIE1hbmlmZXN0IEZpbGUgKi9cbmZ1bmN0aW9uIHdyaXRlX3JkZl90eXBlKGZpbGUvKjpzdHJpbmcqLywgcmVzLyo6c3RyaW5nKi8sIHRhZy8qOj9zdHJpbmcqLykge1xuXHRyZXR1cm4gW1xuXHRcdCcgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PVwiJyArIGZpbGUgKyAnXCI+XFxuJyxcblx0XHQnICAgIDxyZGY6dHlwZSByZGY6cmVzb3VyY2U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvJyArICh0YWcgfHwgXCJvZGZcIikgKyAnIycgKyByZXMgKyAnXCIvPlxcbicsXG5cdFx0JyAgPC9yZGY6RGVzY3JpcHRpb24+XFxuJ1xuXHRdLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9yZGZfaGFzKGJhc2UvKjpzdHJpbmcqLywgZmlsZS8qOnN0cmluZyovKSB7XG5cdHJldHVybiBbXG5cdFx0JyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9XCInICsgYmFzZSArICdcIj5cXG4nLFxuXHRcdCcgICAgPG5zMDpoYXNQYXJ0IHhtbG5zOm5zMD1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjXCIgcmRmOnJlc291cmNlPVwiJyArIGZpbGUgKyAnXCIvPlxcbicsXG5cdFx0JyAgPC9yZGY6RGVzY3JpcHRpb24+XFxuJ1xuXHRdLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9yZGYocmRmKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvLnB1c2goJzxyZGY6UkRGIHhtbG5zOnJkZj1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyNcIj5cXG4nKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSByZGYubGVuZ3RoOyArK2kpIHtcblx0XHRvLnB1c2god3JpdGVfcmRmX3R5cGUocmRmW2ldWzBdLCByZGZbaV1bMV0pKTtcblx0XHRvLnB1c2god3JpdGVfcmRmX2hhcyhcIlwiLHJkZltpXVswXSkpO1xuXHR9XG5cdG8ucHVzaCh3cml0ZV9yZGZfdHlwZShcIlwiLFwiRG9jdW1lbnRcIiwgXCJwa2dcIikpO1xuXHRvLnB1c2goJzwvcmRmOlJERj4nKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFRPRE86IHB1bGwgcHJvcGVydGllcyAqL1xuZnVuY3Rpb24gd3JpdGVfbWV0YV9vZHMoLyo6OiB3YjogV29ya2Jvb2ssIG9wdHM6IGFueSovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuICc8b2ZmaWNlOmRvY3VtZW50LW1ldGEgeG1sbnM6b2ZmaWNlPVwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wXCIgeG1sbnM6bWV0YT1cInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjBcIiB4bWxuczpkYz1cImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgb2ZmaWNlOnZlcnNpb249XCIxLjJcIj48b2ZmaWNlOm1ldGE+PG1ldGE6Z2VuZXJhdG9yPlNoZWV0JyArICdKUyAnICsgWExTWC52ZXJzaW9uICsgJzwvbWV0YTpnZW5lcmF0b3I+PC9vZmZpY2U6bWV0YT48L29mZmljZTpkb2N1bWVudC1tZXRhPic7XG59XG5cbi8qIEVDTUEtMzc2IFBhcnQgSUkgMTEuMSBDb3JlIFByb3BlcnRpZXMgUGFydCAqL1xuLyogW01TLU9TSEFSRURdIDIuMy4zLjIuWzEtMl0uMSAoUElEU0kvUElERFNJKSAqL1xudmFyIENPUkVfUFJPUFMvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtcblx0W1wiY3A6Y2F0ZWdvcnlcIiwgXCJDYXRlZ29yeVwiXSxcblx0W1wiY3A6Y29udGVudFN0YXR1c1wiLCBcIkNvbnRlbnRTdGF0dXNcIl0sXG5cdFtcImNwOmtleXdvcmRzXCIsIFwiS2V5d29yZHNcIl0sXG5cdFtcImNwOmxhc3RNb2RpZmllZEJ5XCIsIFwiTGFzdEF1dGhvclwiXSxcblx0W1wiY3A6bGFzdFByaW50ZWRcIiwgXCJMYXN0UHJpbnRlZFwiXSxcblx0W1wiY3A6cmV2aXNpb25cIiwgXCJSZXZOdW1iZXJcIl0sXG5cdFtcImNwOnZlcnNpb25cIiwgXCJWZXJzaW9uXCJdLFxuXHRbXCJkYzpjcmVhdG9yXCIsIFwiQXV0aG9yXCJdLFxuXHRbXCJkYzpkZXNjcmlwdGlvblwiLCBcIkNvbW1lbnRzXCJdLFxuXHRbXCJkYzppZGVudGlmaWVyXCIsIFwiSWRlbnRpZmllclwiXSxcblx0W1wiZGM6bGFuZ3VhZ2VcIiwgXCJMYW5ndWFnZVwiXSxcblx0W1wiZGM6c3ViamVjdFwiLCBcIlN1YmplY3RcIl0sXG5cdFtcImRjOnRpdGxlXCIsIFwiVGl0bGVcIl0sXG5cdFtcImRjdGVybXM6Y3JlYXRlZFwiLCBcIkNyZWF0ZWREYXRlXCIsICdkYXRlJ10sXG5cdFtcImRjdGVybXM6bW9kaWZpZWRcIiwgXCJNb2RpZmllZERhdGVcIiwgJ2RhdGUnXVxuXTtcblxudmFyIENPUkVfUFJPUFNfUkVHRVgvKjpBcnJheTxSZWdFeHA+Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgciA9IG5ldyBBcnJheShDT1JFX1BST1BTLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGYgPSBDT1JFX1BST1BTW2ldO1xuXHRcdHZhciBnID0gXCIoPzpcIisgZlswXS5zbGljZSgwLGZbMF0uaW5kZXhPZihcIjpcIikpICtcIjopXCIrIGZbMF0uc2xpY2UoZlswXS5pbmRleE9mKFwiOlwiKSsxKTtcblx0XHRyW2ldID0gbmV3IFJlZ0V4cChcIjxcIiArIGcgKyBcIltePl0qPihbXFxcXHNcXFxcU10qPyk8XFwvXCIgKyBnICsgXCI+XCIpO1xuXHR9XG5cdHJldHVybiByO1xufSkoKTtcblxuZnVuY3Rpb24gcGFyc2VfY29yZV9wcm9wcyhkYXRhKSB7XG5cdHZhciBwID0ge307XG5cdGRhdGEgPSB1dGY4cmVhZChkYXRhKTtcblxuXHRmb3IodmFyIGkgPSAwOyBpIDwgQ09SRV9QUk9QUy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBmID0gQ09SRV9QUk9QU1tpXSwgY3VyID0gZGF0YS5tYXRjaChDT1JFX1BST1BTX1JFR0VYW2ldKTtcblx0XHRpZihjdXIgIT0gbnVsbCAmJiBjdXIubGVuZ3RoID4gMCkgcFtmWzFdXSA9IHVuZXNjYXBleG1sKGN1clsxXSk7XG5cdFx0aWYoZlsyXSA9PT0gJ2RhdGUnICYmIHBbZlsxXV0pIHBbZlsxXV0gPSBwYXJzZURhdGUocFtmWzFdXSk7XG5cdH1cblxuXHRyZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gY3BfZG9pdChmLCBnLCBoLCBvLCBwKSB7XG5cdGlmKHBbZl0gIT0gbnVsbCB8fCBnID09IG51bGwgfHwgZyA9PT0gXCJcIikgcmV0dXJuO1xuXHRwW2ZdID0gZztcblx0ZyA9IGVzY2FwZXhtbChnKTtcblx0b1tvLmxlbmd0aF0gPSAoaCA/IHdyaXRleHRhZyhmLGcsaCkgOiB3cml0ZXRhZyhmLGcpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY29yZV9wcm9wcyhjcCwgX29wdHMpIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdjcDpjb3JlUHJvcGVydGllcycsIG51bGwsIHtcblx0XHQvLyd4bWxucyc6IFhNTE5TLkNPUkVfUFJPUFMsXG5cdFx0J3htbG5zOmNwJzogWE1MTlMuQ09SRV9QUk9QUyxcblx0XHQneG1sbnM6ZGMnOiBYTUxOUy5kYyxcblx0XHQneG1sbnM6ZGN0ZXJtcyc6IFhNTE5TLmRjdGVybXMsXG5cdFx0J3htbG5zOmRjbWl0eXBlJzogWE1MTlMuZGNtaXR5cGUsXG5cdFx0J3htbG5zOnhzaSc6IFhNTE5TLnhzaVxuXHR9KV0sIHAgPSB7fTtcblx0aWYoIWNwICYmICFvcHRzLlByb3BzKSByZXR1cm4gby5qb2luKFwiXCIpO1xuXG5cdGlmKGNwKSB7XG5cdFx0aWYoY3AuQ3JlYXRlZERhdGUgIT0gbnVsbCkgY3BfZG9pdChcImRjdGVybXM6Y3JlYXRlZFwiLCB0eXBlb2YgY3AuQ3JlYXRlZERhdGUgPT09IFwic3RyaW5nXCIgPyBjcC5DcmVhdGVkRGF0ZSA6IHdyaXRlX3czY2R0ZihjcC5DcmVhdGVkRGF0ZSwgb3B0cy5XVEYpLCB7XCJ4c2k6dHlwZVwiOlwiZGN0ZXJtczpXM0NEVEZcIn0sIG8sIHApO1xuXHRcdGlmKGNwLk1vZGlmaWVkRGF0ZSAhPSBudWxsKSBjcF9kb2l0KFwiZGN0ZXJtczptb2RpZmllZFwiLCB0eXBlb2YgY3AuTW9kaWZpZWREYXRlID09PSBcInN0cmluZ1wiID8gY3AuTW9kaWZpZWREYXRlIDogd3JpdGVfdzNjZHRmKGNwLk1vZGlmaWVkRGF0ZSwgb3B0cy5XVEYpLCB7XCJ4c2k6dHlwZVwiOlwiZGN0ZXJtczpXM0NEVEZcIn0sIG8sIHApO1xuXHR9XG5cblx0Zm9yKHZhciBpID0gMDsgaSAhPSBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGYgPSBDT1JFX1BST1BTW2ldO1xuXHRcdHZhciB2ID0gb3B0cy5Qcm9wcyAmJiBvcHRzLlByb3BzW2ZbMV1dICE9IG51bGwgPyBvcHRzLlByb3BzW2ZbMV1dIDogY3AgPyBjcFtmWzFdXSA6IG51bGw7XG5cdFx0aWYodiA9PT0gdHJ1ZSkgdiA9IFwiMVwiO1xuXHRcdGVsc2UgaWYodiA9PT0gZmFsc2UpIHYgPSBcIjBcIjtcblx0XHRlbHNlIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpIHYgPSBTdHJpbmcodik7XG5cdFx0aWYodiAhPSBudWxsKSBjcF9kb2l0KGZbMF0sIHYsIG51bGwsIG8sIHApO1xuXHR9XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9jcDpjb3JlUHJvcGVydGllcz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogMTUuMi4xMi4zIEV4dGVuZGVkIEZpbGUgUHJvcGVydGllcyBQYXJ0ICovXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi5bMS0yXS4xIChQSURTSS9QSUREU0kpICovXG52YXIgRVhUX1BST1BTLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFtcIkFwcGxpY2F0aW9uXCIsIFwiQXBwbGljYXRpb25cIiwgXCJzdHJpbmdcIl0sXG5cdFtcIkFwcFZlcnNpb25cIiwgXCJBcHBWZXJzaW9uXCIsIFwic3RyaW5nXCJdLFxuXHRbXCJDb21wYW55XCIsIFwiQ29tcGFueVwiLCBcInN0cmluZ1wiXSxcblx0W1wiRG9jU2VjdXJpdHlcIiwgXCJEb2NTZWN1cml0eVwiLCBcInN0cmluZ1wiXSxcblx0W1wiTWFuYWdlclwiLCBcIk1hbmFnZXJcIiwgXCJzdHJpbmdcIl0sXG5cdFtcIkh5cGVybGlua3NDaGFuZ2VkXCIsIFwiSHlwZXJsaW5rc0NoYW5nZWRcIiwgXCJib29sXCJdLFxuXHRbXCJTaGFyZWREb2NcIiwgXCJTaGFyZWREb2NcIiwgXCJib29sXCJdLFxuXHRbXCJMaW5rc1VwVG9EYXRlXCIsIFwiTGlua3NVcFRvRGF0ZVwiLCBcImJvb2xcIl0sXG5cdFtcIlNjYWxlQ3JvcFwiLCBcIlNjYWxlQ3JvcFwiLCBcImJvb2xcIl0sXG5cdFtcIkhlYWRpbmdQYWlyc1wiLCBcIkhlYWRpbmdQYWlyc1wiLCBcInJhd1wiXSxcblx0W1wiVGl0bGVzT2ZQYXJ0c1wiLCBcIlRpdGxlc09mUGFydHNcIiwgXCJyYXdcIl1cbl07XG5cbnZhciBQc2V1ZG9Qcm9wc1BhaXJzID0gW1xuXHRcIldvcmtzaGVldHNcIiwgIFwiU2hlZXROYW1lc1wiLFxuXHRcIk5hbWVkUmFuZ2VzXCIsIFwiRGVmaW5lZE5hbWVzXCIsXG5cdFwiQ2hhcnRzaGVldHNcIiwgXCJDaGFydE5hbWVzXCJcbl07XG5mdW5jdGlvbiBsb2FkX3Byb3BzX3BhaXJzKEhQLyo6c3RyaW5nfEFycmF5PEFycmF5PGFueT4+Ki8sIFRPUCwgcHJvcHMsIG9wdHMpIHtcblx0dmFyIHYgPSBbXTtcblx0aWYodHlwZW9mIEhQID09IFwic3RyaW5nXCIpIHYgPSBwYXJzZVZlY3RvcihIUCwgb3B0cyk7XG5cdGVsc2UgZm9yKHZhciBqID0gMDsgaiA8IEhQLmxlbmd0aDsgKytqKSB2ID0gdi5jb25jYXQoSFBbal0ubWFwKGZ1bmN0aW9uKGhwKSB7IHJldHVybiB7djpocH07IH0pKTtcblx0dmFyIHBhcnRzID0gKHR5cGVvZiBUT1AgPT0gXCJzdHJpbmdcIikgPyBwYXJzZVZlY3RvcihUT1AsIG9wdHMpLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC52OyB9KSA6IFRPUDtcblx0dmFyIGlkeCA9IDAsIGxlbiA9IDA7XG5cdGlmKHBhcnRzLmxlbmd0aCA+IDApIGZvcih2YXIgaSA9IDA7IGkgIT09IHYubGVuZ3RoOyBpICs9IDIpIHtcblx0XHRsZW4gPSArKHZbaSsxXS52KTtcblx0XHRzd2l0Y2godltpXS52KSB7XG5cdFx0XHRjYXNlIFwiV29ya3NoZWV0c1wiOlxuXHRcdFx0Y2FzZSBcIuW3peS9nOihqFwiOlxuXHRcdFx0Y2FzZSBcItCb0LjRgdGC0YtcIjpcblx0XHRcdGNhc2UgXCLYo9mI2LHYp9mCINin2YTYudmF2YRcIjpcblx0XHRcdGNhc2UgXCLjg6/jg7zjgq/jgrfjg7zjg4hcIjpcblx0XHRcdGNhc2UgXCLXktec15nXldeg15XXqiDXoteR15XXk9eUXCI6XG5cdFx0XHRjYXNlIFwiQXJiZWl0c2Jsw6R0dGVyXCI6XG5cdFx0XHRjYXNlIFwiw4dhbMSxxZ9tYSBTYXlmYWxhcsSxXCI6XG5cdFx0XHRjYXNlIFwiRmV1aWxsZXMgZGUgY2FsY3VsXCI6XG5cdFx0XHRjYXNlIFwiRm9nbGkgZGkgbGF2b3JvXCI6XG5cdFx0XHRjYXNlIFwiRm9saGFzIGRlIGPDoWxjdWxvXCI6XG5cdFx0XHRjYXNlIFwiUGxhbmlsaGFzXCI6XG5cdFx0XHRjYXNlIFwiUmVnbmVhcmtcIjpcblx0XHRcdGNhc2UgXCJIb2phcyBkZSBjw6FsY3Vsb1wiOlxuXHRcdFx0Y2FzZSBcIldlcmtibGFkZW5cIjpcblx0XHRcdFx0cHJvcHMuV29ya3NoZWV0cyA9IGxlbjtcblx0XHRcdFx0cHJvcHMuU2hlZXROYW1lcyA9IHBhcnRzLnNsaWNlKGlkeCwgaWR4ICsgbGVuKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJOYW1lZCBSYW5nZXNcIjpcblx0XHRcdGNhc2UgXCJSYW5nb3MgY29uIG5vbWJyZVwiOlxuXHRcdFx0Y2FzZSBcIuWQjeWJjeS7mOOBjeS4gOimp1wiOlxuXHRcdFx0Y2FzZSBcIkJlbmFubnRlIEJlcmVpY2hlXCI6XG5cdFx0XHRjYXNlIFwiTmF2bmdpdm5lIG9tcsOlZGVyXCI6XG5cdFx0XHRcdHByb3BzLk5hbWVkUmFuZ2VzID0gbGVuO1xuXHRcdFx0XHRwcm9wcy5EZWZpbmVkTmFtZXMgPSBwYXJ0cy5zbGljZShpZHgsIGlkeCArIGxlbik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiQ2hhcnRzXCI6XG5cdFx0XHRjYXNlIFwiRGlhZ3JhbW1lXCI6XG5cdFx0XHRcdHByb3BzLkNoYXJ0c2hlZXRzID0gbGVuO1xuXHRcdFx0XHRwcm9wcy5DaGFydE5hbWVzID0gcGFydHMuc2xpY2UoaWR4LCBpZHggKyBsZW4pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWR4ICs9IGxlbjtcblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZV9leHRfcHJvcHMoZGF0YSwgcCwgb3B0cykge1xuXHR2YXIgcSA9IHt9OyBpZighcCkgcCA9IHt9O1xuXHRkYXRhID0gdXRmOHJlYWQoZGF0YSk7XG5cblx0RVhUX1BST1BTLmZvckVhY2goZnVuY3Rpb24oZikge1xuXHRcdHZhciB4bWwgPSAoZGF0YS5tYXRjaChtYXRjaHRhZyhmWzBdKSl8fFtdKVsxXTtcblx0XHRzd2l0Y2goZlsyXSkge1xuXHRcdFx0Y2FzZSBcInN0cmluZ1wiOiBpZih4bWwpIHBbZlsxXV0gPSB1bmVzY2FwZXhtbCh4bWwpOyBicmVhaztcblx0XHRcdGNhc2UgXCJib29sXCI6IHBbZlsxXV0gPSB4bWwgPT09IFwidHJ1ZVwiOyBicmVhaztcblx0XHRcdGNhc2UgXCJyYXdcIjpcblx0XHRcdFx0dmFyIGN1ciA9IGRhdGEubWF0Y2gobmV3IFJlZ0V4cChcIjxcIiArIGZbMF0gKyBcIltePl0qPihbXFxcXHNcXFxcU10qPyk8XFwvXCIgKyBmWzBdICsgXCI+XCIpKTtcblx0XHRcdFx0aWYoY3VyICYmIGN1ci5sZW5ndGggPiAwKSBxW2ZbMV1dID0gY3VyWzFdO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH0pO1xuXG5cdGlmKHEuSGVhZGluZ1BhaXJzICYmIHEuVGl0bGVzT2ZQYXJ0cykgbG9hZF9wcm9wc19wYWlycyhxLkhlYWRpbmdQYWlycywgcS5UaXRsZXNPZlBhcnRzLCBwLCBvcHRzKTtcblxuXHRyZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfZXh0X3Byb3BzKGNwLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgVyA9IHdyaXRleHRhZztcblx0aWYoIWNwKSBjcCA9IHt9O1xuXHRjcC5BcHBsaWNhdGlvbiA9IFwiU2hlZXRKU1wiO1xuXHRvW28ubGVuZ3RoXSA9IChYTUxfSEVBREVSKTtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdQcm9wZXJ0aWVzJywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TLkVYVF9QUk9QUyxcblx0XHQneG1sbnM6dnQnOiBYTUxOUy52dFxuXHR9KSk7XG5cblx0RVhUX1BST1BTLmZvckVhY2goZnVuY3Rpb24oZikge1xuXHRcdGlmKGNwW2ZbMV1dID09PSB1bmRlZmluZWQpIHJldHVybjtcblx0XHR2YXIgdjtcblx0XHRzd2l0Y2goZlsyXSkge1xuXHRcdFx0Y2FzZSAnc3RyaW5nJzogdiA9IGVzY2FwZXhtbChTdHJpbmcoY3BbZlsxXV0pKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdib29sJzogdiA9IGNwW2ZbMV1dID8gJ3RydWUnIDogJ2ZhbHNlJzsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKHYgIT09IHVuZGVmaW5lZCkgb1tvLmxlbmd0aF0gPSAoVyhmWzBdLCB2KSk7XG5cdH0pO1xuXG5cdC8qIFRPRE86IEhlYWRpbmdQYWlycywgVGl0bGVzT2ZQYXJ0cyAqL1xuXHRvW28ubGVuZ3RoXSA9IChXKCdIZWFkaW5nUGFpcnMnLCBXKCd2dDp2ZWN0b3InLCBXKCd2dDp2YXJpYW50JywgJzx2dDpscHN0cj5Xb3Jrc2hlZXRzPC92dDpscHN0cj4nKStXKCd2dDp2YXJpYW50JywgVygndnQ6aTQnLCBTdHJpbmcoY3AuV29ya3NoZWV0cykpKSwge3NpemU6MiwgYmFzZVR5cGU6XCJ2YXJpYW50XCJ9KSkpO1xuXHRvW28ubGVuZ3RoXSA9IChXKCdUaXRsZXNPZlBhcnRzJywgVygndnQ6dmVjdG9yJywgY3AuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gXCI8dnQ6bHBzdHI+XCIgKyBlc2NhcGV4bWwocykgKyBcIjwvdnQ6bHBzdHI+XCI7IH0pLmpvaW4oXCJcIiksIHtzaXplOiBjcC5Xb3Jrc2hlZXRzLCBiYXNlVHlwZTpcImxwc3RyXCJ9KSkpO1xuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvUHJvcGVydGllcz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogMTUuMi4xMi4yIEN1c3RvbSBGaWxlIFByb3BlcnRpZXMgUGFydCAqL1xudmFyIGN1c3RyZWdleCA9IC88W14+XSs+W148XSovZztcbmZ1bmN0aW9uIHBhcnNlX2N1c3RfcHJvcHMoZGF0YS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHZhciBwID0ge30sIG5hbWUgPSBcIlwiO1xuXHR2YXIgbSA9IGRhdGEubWF0Y2goY3VzdHJlZ2V4KTtcblx0aWYobSkgZm9yKHZhciBpID0gMDsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHggPSBtW2ldLCB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHlbMF0pIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8UHJvcGVydGllcyc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHByb3BlcnR5JzogbmFtZSA9IHVuZXNjYXBleG1sKHkubmFtZSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9wcm9wZXJ0eT4nOiBuYW1lID0gbnVsbDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZiAoeC5pbmRleE9mKCc8dnQ6JykgPT09IDApIHtcblx0XHRcdFx0dmFyIHRva3MgPSB4LnNwbGl0KCc+Jyk7XG5cdFx0XHRcdHZhciB0eXBlID0gdG9rc1swXS5zbGljZSg0KSwgdGV4dCA9IHRva3NbMV07XG5cdFx0XHRcdC8qIDIyLjQuMi4zMiAoQ1RfVmFyaWFudCkuIE9taXQgdGhlIGJpbmFyeSB0eXBlcyBmcm9tIDIyLjQgKFZhcmlhbnQgVHlwZXMpICovXG5cdFx0XHRcdHN3aXRjaCh0eXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbHBzdHInOiBjYXNlICdic3RyJzogY2FzZSAnbHB3c3RyJzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSB1bmVzY2FwZXhtbCh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Jvb2wnOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHBhcnNleG1sYm9vbCh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2kxJzogY2FzZSAnaTInOiBjYXNlICdpNCc6IGNhc2UgJ2k4JzogY2FzZSAnaW50JzogY2FzZSAndWludCc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2VJbnQodGV4dCwgMTApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncjQnOiBjYXNlICdyOCc6IGNhc2UgJ2RlY2ltYWwnOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHBhcnNlRmxvYXQodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWxldGltZSc6IGNhc2UgJ2RhdGUnOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHBhcnNlRGF0ZSh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2N5JzogY2FzZSAnZXJyb3InOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHVuZXNjYXBleG1sKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGlmKHR5cGUuc2xpY2UoLTEpID09ICcvJykgYnJlYWs7XG5cdFx0XHRcdFx0XHRpZihvcHRzLldURiAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIGNvbnNvbGUud2FybignVW5leHBlY3RlZCcsIHgsIHR5cGUsIHRva3MpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYoeC5zbGljZSgwLDIpID09PSBcIjwvXCIpIHsvKiBlbXB0eSAqL1xuXHRcdFx0fSBlbHNlIGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoeCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jdXN0X3Byb3BzKGNwLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdQcm9wZXJ0aWVzJywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TLkNVU1RfUFJPUFMsXG5cdFx0J3htbG5zOnZ0JzogWE1MTlMudnRcblx0fSldO1xuXHRpZighY3ApIHJldHVybiBvLmpvaW4oXCJcIik7XG5cdHZhciBwaWQgPSAxO1xuXHRrZXlzKGNwKS5mb3JFYWNoKGZ1bmN0aW9uIGN1c3Rwcm9wKGspIHsgKytwaWQ7XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdwcm9wZXJ0eScsIHdyaXRlX3Z0KGNwW2tdLCB0cnVlKSwge1xuXHRcdFx0J2ZtdGlkJzogJ3tENUNERDUwNS0yRTlDLTEwMUItOTM5Ny0wODAwMkIyQ0Y5QUV9Jyxcblx0XHRcdCdwaWQnOiBwaWQsXG5cdFx0XHQnbmFtZSc6IGVzY2FwZXhtbChrKVxuXHRcdH0pKTtcblx0fSk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICc8L1Byb3BlcnRpZXM+Jzsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogQ29tbW9uIE5hbWUgLT4gWExNTCBOYW1lICovXG52YXIgWExNTERvY1Byb3BzTWFwID0ge1xuXHRUaXRsZTogJ1RpdGxlJyxcblx0U3ViamVjdDogJ1N1YmplY3QnLFxuXHRBdXRob3I6ICdBdXRob3InLFxuXHRLZXl3b3JkczogJ0tleXdvcmRzJyxcblx0Q29tbWVudHM6ICdEZXNjcmlwdGlvbicsXG5cdExhc3RBdXRob3I6ICdMYXN0QXV0aG9yJyxcblx0UmV2TnVtYmVyOiAnUmV2aXNpb24nLFxuXHRBcHBsaWNhdGlvbjogJ0FwcE5hbWUnLFxuXHQvKiBUb3RhbFRpbWU6ICdUb3RhbFRpbWUnLCAqL1xuXHRMYXN0UHJpbnRlZDogJ0xhc3RQcmludGVkJyxcblx0Q3JlYXRlZERhdGU6ICdDcmVhdGVkJyxcblx0TW9kaWZpZWREYXRlOiAnTGFzdFNhdmVkJyxcblx0LyogUGFnZXMgKi9cblx0LyogV29yZHMgKi9cblx0LyogQ2hhcmFjdGVycyAqL1xuXHRDYXRlZ29yeTogJ0NhdGVnb3J5Jyxcblx0LyogUHJlc2VudGF0aW9uRm9ybWF0ICovXG5cdE1hbmFnZXI6ICdNYW5hZ2VyJyxcblx0Q29tcGFueTogJ0NvbXBhbnknLFxuXHQvKiBHdWlkICovXG5cdC8qIEh5cGVybGlua0Jhc2UgKi9cblx0LyogQnl0ZXMgKi9cblx0LyogTGluZXMgKi9cblx0LyogUGFyYWdyYXBocyAqL1xuXHQvKiBDaGFyYWN0ZXJzV2l0aFNwYWNlcyAqL1xuXHRBcHBWZXJzaW9uOiAnVmVyc2lvbicsXG5cblx0Q29udGVudFN0YXR1czogJ0NvbnRlbnRTdGF0dXMnLCAvKiBOT1RFOiBtaXNzaW5nIGZyb20gc2NoZW1hICovXG5cdElkZW50aWZpZXI6ICdJZGVudGlmaWVyJywgLyogTk9URTogbWlzc2luZyBmcm9tIHNjaGVtYSAqL1xuXHRMYW5ndWFnZTogJ0xhbmd1YWdlJyAvKiBOT1RFOiBtaXNzaW5nIGZyb20gc2NoZW1hICovXG59O1xudmFyIGV2ZXJ0X1hMTUxEUE07XG5cbmZ1bmN0aW9uIHhsbWxfc2V0X3Byb3AoUHJvcHMsIHRhZy8qOnN0cmluZyovLCB2YWwpIHtcblx0aWYoIWV2ZXJ0X1hMTUxEUE0pIGV2ZXJ0X1hMTUxEUE0gPSBldmVydChYTE1MRG9jUHJvcHNNYXApO1xuXHR0YWcgPSBldmVydF9YTE1MRFBNW3RhZ10gfHwgdGFnO1xuXHRQcm9wc1t0YWddID0gdmFsO1xufVxuXG5mdW5jdGlvbiB4bG1sX3dyaXRlX2RvY3Byb3BzKFByb3BzLCBvcHRzKSB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGtleXMoWExNTERvY1Byb3BzTWFwKS5tYXAoZnVuY3Rpb24obSkge1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSBpZihDT1JFX1BST1BTW2ldWzFdID09IG0pIHJldHVybiBDT1JFX1BST1BTW2ldO1xuXHRcdGZvcihpID0gMDsgaSA8IEVYVF9QUk9QUy5sZW5ndGg7ICsraSkgaWYoRVhUX1BST1BTW2ldWzFdID09IG0pIHJldHVybiBFWFRfUFJPUFNbaV07XG5cdFx0dGhyb3cgbTtcblx0fSkuZm9yRWFjaChmdW5jdGlvbihwKSB7XG5cdFx0aWYoUHJvcHNbcFsxXV0gPT0gbnVsbCkgcmV0dXJuO1xuXHRcdHZhciBtID0gb3B0cyAmJiBvcHRzLlByb3BzICYmIG9wdHMuUHJvcHNbcFsxXV0gIT0gbnVsbCA/IG9wdHMuUHJvcHNbcFsxXV0gOiBQcm9wc1twWzFdXTtcblx0XHRzd2l0Y2gocFsyXSkge1xuXHRcdFx0Y2FzZSAnZGF0ZSc6IG0gPSBuZXcgRGF0ZShtKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1xcLlxcZCpaLyxcIlpcIik7IGJyZWFrO1xuXHRcdH1cblx0XHRpZih0eXBlb2YgbSA9PSAnbnVtYmVyJykgbSA9IFN0cmluZyhtKTtcblx0XHRlbHNlIGlmKG0gPT09IHRydWUgfHwgbSA9PT0gZmFsc2UpIHsgbSA9IG0gPyBcIjFcIiA6IFwiMFwiOyB9XG5cdFx0ZWxzZSBpZihtIGluc3RhbmNlb2YgRGF0ZSkgbSA9IG5ldyBEYXRlKG0pLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuXFxkKlovLFwiXCIpO1xuXHRcdG8ucHVzaCh3cml0ZXRhZyhYTE1MRG9jUHJvcHNNYXBbcFsxXV0gfHwgcFsxXSwgbSkpO1xuXHR9KTtcblx0cmV0dXJuIHdyaXRleHRhZygnRG9jdW1lbnRQcm9wZXJ0aWVzJywgby5qb2luKFwiXCIpLCB7eG1sbnM6WExNTE5TLm8gfSk7XG59XG5mdW5jdGlvbiB4bG1sX3dyaXRlX2N1c3Rwcm9wcyhQcm9wcywgQ3VzdHByb3BzLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBCTEFDS0xJU1QgPSBbXCJXb3Jrc2hlZXRzXCIsXCJTaGVldE5hbWVzXCJdO1xuXHR2YXIgVCA9ICdDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMnO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRpZihQcm9wcykga2V5cyhQcm9wcykuZm9yRWFjaChmdW5jdGlvbihrKSB7XG5cdFx0Lyo6OiBpZighUHJvcHMpIHJldHVybjsgKi9cblx0XHRpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFByb3BzLCBrKSkgcmV0dXJuO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSBpZihrID09IENPUkVfUFJPUFNbaV1bMV0pIHJldHVybjtcblx0XHRmb3IoaSA9IDA7IGkgPCBFWFRfUFJPUFMubGVuZ3RoOyArK2kpIGlmKGsgPT0gRVhUX1BST1BTW2ldWzFdKSByZXR1cm47XG5cdFx0Zm9yKGkgPSAwOyBpIDwgQkxBQ0tMSVNULmxlbmd0aDsgKytpKSBpZihrID09IEJMQUNLTElTVFtpXSkgcmV0dXJuO1xuXG5cdFx0dmFyIG0gPSBQcm9wc1trXTtcblx0XHR2YXIgdCA9IFwic3RyaW5nXCI7XG5cdFx0aWYodHlwZW9mIG0gPT0gJ251bWJlcicpIHsgdCA9IFwiZmxvYXRcIjsgbSA9IFN0cmluZyhtKTsgfVxuXHRcdGVsc2UgaWYobSA9PT0gdHJ1ZSB8fCBtID09PSBmYWxzZSkgeyB0ID0gXCJib29sZWFuXCI7IG0gPSBtID8gXCIxXCIgOiBcIjBcIjsgfVxuXHRcdGVsc2UgbSA9IFN0cmluZyhtKTtcblx0XHRvLnB1c2god3JpdGV4dGFnKGVzY2FwZXhtbHRhZyhrKSwgbSwge1wiZHQ6ZHRcIjp0fSkpO1xuXHR9KTtcblx0aWYoQ3VzdHByb3BzKSBrZXlzKEN1c3Rwcm9wcykuZm9yRWFjaChmdW5jdGlvbihrKSB7XG5cdFx0Lyo6OiBpZighQ3VzdHByb3BzKSByZXR1cm47ICovXG5cdFx0aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChDdXN0cHJvcHMsIGspKSByZXR1cm47XG5cdFx0aWYoUHJvcHMgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFByb3BzLCBrKSkgcmV0dXJuO1xuXHRcdHZhciBtID0gQ3VzdHByb3BzW2tdO1xuXHRcdHZhciB0ID0gXCJzdHJpbmdcIjtcblx0XHRpZih0eXBlb2YgbSA9PSAnbnVtYmVyJykgeyB0ID0gXCJmbG9hdFwiOyBtID0gU3RyaW5nKG0pOyB9XG5cdFx0ZWxzZSBpZihtID09PSB0cnVlIHx8IG0gPT09IGZhbHNlKSB7IHQgPSBcImJvb2xlYW5cIjsgbSA9IG0gPyBcIjFcIiA6IFwiMFwiOyB9XG5cdFx0ZWxzZSBpZihtIGluc3RhbmNlb2YgRGF0ZSkgeyB0ID0gXCJkYXRlVGltZS50elwiOyBtID0gbS50b0lTT1N0cmluZygpOyB9XG5cdFx0ZWxzZSBtID0gU3RyaW5nKG0pO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoZXNjYXBleG1sdGFnKGspLCBtLCB7XCJkdDpkdFwiOnR9KSk7XG5cdH0pO1xuXHRyZXR1cm4gJzwnICsgVCArICcgeG1sbnM9XCInICsgWExNTE5TLm8gKyAnXCI+JyArIG8uam9pbihcIlwiKSArICc8LycgKyBUICsgJz4nO1xufVxuLyogW01TLURUWVBdIDIuMy4zIEZJTEVUSU1FICovXG4vKiBbTVMtT0xFRFNdIDIuMS4zIEZJTEVUSU1FIChQYWNrZXQgVmVyc2lvbikgKi9cbi8qIFtNUy1PTEVQU10gMi44IEZJTEVUSU1FIChQYWNrZXQgVmVyc2lvbikgKi9cbmZ1bmN0aW9uIHBhcnNlX0ZJTEVUSU1FKGJsb2IpIHtcblx0dmFyIGR3TG93RGF0ZVRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCksIGR3SGlnaERhdGVUaW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gbmV3IERhdGUoKChkd0hpZ2hEYXRlVGltZS8xZTcqTWF0aC5wb3coMiwzMikgKyBkd0xvd0RhdGVUaW1lLzFlNykgLSAxMTY0NDQ3MzYwMCkqMTAwMCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC4wMDAvLFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfRklMRVRJTUUodGltZS8qOnN0cmluZ3xEYXRlKi8pIHtcblx0dmFyIGRhdGUgPSAodHlwZW9mIHRpbWUgPT0gXCJzdHJpbmdcIikgPyBuZXcgRGF0ZShEYXRlLnBhcnNlKHRpbWUpKSA6IHRpbWU7XG5cdHZhciB0ID0gZGF0ZS5nZXRUaW1lKCkgLyAxMDAwICsgMTE2NDQ0NzM2MDA7XG5cdHZhciBsID0gdCAlIE1hdGgucG93KDIsMzIpLCBoID0gKHQgLSBsKSAvIE1hdGgucG93KDIsMzIpO1xuXHRsICo9IDFlNzsgaCAqPSAxZTc7XG5cdHZhciB3ID0gKGwgLyBNYXRoLnBvdygyLDMyKSkgfCAwO1xuXHRpZih3ID4gMCkgeyBsID0gbCAlIE1hdGgucG93KDIsMzIpOyBoICs9IHc7IH1cblx0dmFyIG8gPSBuZXdfYnVmKDgpOyBvLndyaXRlX3NoaWZ0KDQsIGwpOyBvLndyaXRlX3NoaWZ0KDQsIGgpOyByZXR1cm4gbztcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuNCBMcHN0ciAqL1xuZnVuY3Rpb24gcGFyc2VfbHBzdHIoYmxvYiwgdHlwZSwgcGFkLyo6P251bWJlciovKSB7XG5cdHZhciBzdGFydCA9IGJsb2IubDtcblx0dmFyIHN0ciA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBzdHItY3AnKTtcblx0aWYocGFkKSB3aGlsZSgoYmxvYi5sIC0gc3RhcnQpICYgMykgKytibG9iLmw7XG5cdHJldHVybiBzdHI7XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjYgTHB3c3RyICovXG5mdW5jdGlvbiBwYXJzZV9scHdzdHIoYmxvYiwgdHlwZSwgcGFkKSB7XG5cdHZhciBzdHIgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwd3N0cicpO1xuXHRpZihwYWQpIGJsb2IubCArPSAoNCAtICgoc3RyLmxlbmd0aCsxKSAmIDMpKSAmIDM7XG5cdHJldHVybiBzdHI7XG59XG5cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTEgVnRTdHJpbmcgKi9cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjEyIFZ0VW5hbGlnbmVkU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9WdFN0cmluZ0Jhc2UoYmxvYiwgc3RyaW5nVHlwZSwgcGFkKSB7XG5cdGlmKHN0cmluZ1R5cGUgPT09IDB4MUYgLypWVF9MUFdTVFIqLykgcmV0dXJuIHBhcnNlX2xwd3N0cihibG9iKTtcblx0cmV0dXJuIHBhcnNlX2xwc3RyKGJsb2IsIHN0cmluZ1R5cGUsIHBhZCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX1Z0U3RyaW5nKGJsb2IsIHQvKjpudW1iZXIqLywgcGFkLyo6P2Jvb2xlYW4qLykgeyByZXR1cm4gcGFyc2VfVnRTdHJpbmdCYXNlKGJsb2IsIHQsIHBhZCA9PT0gZmFsc2UgPyAwOiA0KTsgfVxuZnVuY3Rpb24gcGFyc2VfVnRVbmFsaWduZWRTdHJpbmcoYmxvYiwgdC8qOm51bWJlciovKSB7IGlmKCF0KSB0aHJvdyBuZXcgRXJyb3IoXCJWdFVuYWxpZ25lZFN0cmluZyBtdXN0IGhhdmUgcG9zaXRpdmUgbGVuZ3RoXCIpOyByZXR1cm4gcGFyc2VfVnRTdHJpbmdCYXNlKGJsb2IsIHQsIDApOyB9XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjcgVnRWZWNMcHdzdHJWYWx1ZSAqL1xuZnVuY3Rpb24gcGFyc2VfVnRWZWNMcHdzdHJWYWx1ZShibG9iKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBsZW5ndGggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkge1xuXHRcdHZhciBzdGFydCA9IGJsb2IubDtcblx0XHRyZXRbaV0gPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwd3N0cicpLnJlcGxhY2UoY2hyMCwnJyk7XG5cdFx0aWYoKGJsb2IubCAtIHN0YXJ0KSAmIDB4MDIpIGJsb2IubCArPSAyO1xuXHR9XG5cdHJldHVybiByZXQ7XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjkgVnRWZWNVbmFsaWduZWRMcHN0clZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9WdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUoYmxvYikvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgbGVuZ3RoID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgcmV0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHJldFtpXSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBzdHItY3AnKS5yZXBsYWNlKGNocjAsJycpO1xuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4xLjEzIFZ0SGVhZGluZ1BhaXIgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0SGVhZGluZ1BhaXIoYmxvYikge1xuXHR2YXIgc3RhcnQgPSBibG9iLmw7XG5cdHZhciBoZWFkaW5nU3RyaW5nID0gcGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIFZUX1VTVFIpO1xuXHRpZihibG9iW2Jsb2IubF0gPT0gMHgwMCAmJiBibG9iW2Jsb2IubCsxXSA9PSAweDAwICYmICgoYmxvYi5sIC0gc3RhcnQpICYgMHgwMikpIGJsb2IubCArPSAyO1xuXHR2YXIgaGVhZGVyUGFydHMgPSBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgVlRfSTQpO1xuXHRyZXR1cm4gW2hlYWRpbmdTdHJpbmcsIGhlYWRlclBhcnRzXTtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTQgVnRWZWNIZWFkaW5nUGFpclZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9WdFZlY0hlYWRpbmdQYWlyVmFsdWUoYmxvYikge1xuXHR2YXIgY0VsZW1lbnRzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgb3V0ID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBjRWxlbWVudHMgLyAyOyArK2kpIG91dC5wdXNoKHBhcnNlX1Z0SGVhZGluZ1BhaXIoYmxvYikpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMTguMSBEaWN0aW9uYXJ5ICh1c2VzIDIuMTcsIDIuMTYpICovXG5mdW5jdGlvbiBwYXJzZV9kaWN0aW9uYXJ5KGJsb2IsQ29kZVBhZ2UpIHtcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGRpY3QvKjp7W251bWJlcl06c3RyaW5nfSovID0gKHt9Lyo6YW55Ki8pO1xuXHRmb3IodmFyIGogPSAwOyBqICE9IGNudDsgKytqKSB7XG5cdFx0dmFyIHBpZCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdGRpY3RbcGlkXSA9IGJsb2IucmVhZF9zaGlmdChsZW4sIChDb2RlUGFnZSA9PT0gMHg0QjAgPyd1dGYxNmxlJzondXRmOCcpKS5yZXBsYWNlKGNocjAsJycpLnJlcGxhY2UoY2hyMSwnIScpO1xuXHRcdGlmKENvZGVQYWdlID09PSAweDRCMCAmJiAobGVuICUgMikpIGJsb2IubCArPSAyO1xuXHR9XG5cdGlmKGJsb2IubCAmIDMpIGJsb2IubCA9IChibG9iLmw+PjIrMSk8PDI7XG5cdHJldHVybiBkaWN0O1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuOSBCTE9CICovXG5mdW5jdGlvbiBwYXJzZV9CTE9CKGJsb2IpIHtcblx0dmFyIHNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBieXRlcyA9IGJsb2Iuc2xpY2UoYmxvYi5sLGJsb2IubCtzaXplKTtcblx0YmxvYi5sICs9IHNpemU7XG5cdGlmKChzaXplICYgMykgPiAwKSBibG9iLmwgKz0gKDQgLSAoc2l6ZSAmIDMpKSAmIDM7XG5cdHJldHVybiBieXRlcztcbn1cblxuLyogW01TLU9MRVBTXSAyLjExIENsaXBib2FyZERhdGEgKi9cbmZ1bmN0aW9uIHBhcnNlX0NsaXBib2FyZERhdGEoYmxvYikge1xuXHQvLyBUT0RPXG5cdHZhciBvID0ge307XG5cdG8uU2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0Ly9vLkZvcm1hdCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0YmxvYi5sICs9IG8uU2l6ZSArIDMgLSAoby5TaXplIC0gMSkgJSA0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9MRVBTXSAyLjE1IFR5cGVkUHJvcGVydHlWYWx1ZSAqL1xuZnVuY3Rpb24gcGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIHR5cGUvKjpudW1iZXIqLywgX29wdHMpLyo6YW55Ki8ge1xuXHR2YXIgdCA9IGJsb2IucmVhZF9zaGlmdCgyKSwgcmV0LCBvcHRzID0gX29wdHN8fHt9O1xuXHRibG9iLmwgKz0gMjtcblx0aWYodHlwZSAhPT0gVlRfVkFSSUFOVClcblx0aWYodCAhPT0gdHlwZSAmJiBWVF9DVVNUT00uaW5kZXhPZih0eXBlKT09PS0xICYmICEoKHR5cGUgJiAweEZGRkUpID09IDB4MTAxRSAmJiAodCAmIDB4RkZGRSkgPT0gMHgxMDFFKSkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0eXBlICcgKyB0eXBlICsgJyBzYXcgJyArIHQpO1xuXHRzd2l0Y2godHlwZSA9PT0gVlRfVkFSSUFOVCA/IHQgOiB0eXBlKSB7XG5cdFx0Y2FzZSAweDAyIC8qVlRfSTIqLzogcmV0ID0gYmxvYi5yZWFkX3NoaWZ0KDIsICdpJyk7IGlmKCFvcHRzLnJhdykgYmxvYi5sICs9IDI7IHJldHVybiByZXQ7XG5cdFx0Y2FzZSAweDAzIC8qVlRfSTQqLzogcmV0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7IHJldHVybiByZXQ7XG5cdFx0Y2FzZSAweDBCIC8qVlRfQk9PTCovOiByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDQpICE9PSAweDA7XG5cdFx0Y2FzZSAweDEzIC8qVlRfVUk0Ki86IHJldCA9IGJsb2IucmVhZF9zaGlmdCg0KTsgcmV0dXJuIHJldDtcblx0XHRjYXNlIDB4MUUgLypWVF9MUFNUUiovOiByZXR1cm4gcGFyc2VfbHBzdHIoYmxvYiwgdCwgNCkucmVwbGFjZShjaHIwLCcnKTtcblx0XHRjYXNlIDB4MUYgLypWVF9MUFdTVFIqLzogcmV0dXJuIHBhcnNlX2xwd3N0cihibG9iKTtcblx0XHRjYXNlIDB4NDAgLypWVF9GSUxFVElNRSovOiByZXR1cm4gcGFyc2VfRklMRVRJTUUoYmxvYik7XG5cdFx0Y2FzZSAweDQxIC8qVlRfQkxPQiovOiByZXR1cm4gcGFyc2VfQkxPQihibG9iKTtcblx0XHRjYXNlIDB4NDcgLypWVF9DRiovOiByZXR1cm4gcGFyc2VfQ2xpcGJvYXJkRGF0YShibG9iKTtcblx0XHRjYXNlIDB4NTAgLypWVF9TVFJJTkcqLzogcmV0dXJuIHBhcnNlX1Z0U3RyaW5nKGJsb2IsIHQsICFvcHRzLnJhdykucmVwbGFjZShjaHIwLCcnKTtcblx0XHRjYXNlIDB4NTEgLypWVF9VU1RSKi86IHJldHVybiBwYXJzZV9WdFVuYWxpZ25lZFN0cmluZyhibG9iLCB0LyosIDQqLykucmVwbGFjZShjaHIwLCcnKTtcblx0XHRjYXNlIDB4MTAwQyAvKlZUX1ZFQ1RPUnxWVF9WQVJJQU5UKi86IHJldHVybiBwYXJzZV9WdFZlY0hlYWRpbmdQYWlyVmFsdWUoYmxvYik7XG5cdFx0Y2FzZSAweDEwMUUgLypWVF9WRUNUT1J8VlRfTFBTVFIqLzpcblx0XHRjYXNlIDB4MTAxRiAvKlZUX1ZFQ1RPUnxWVF9MUFdTVFIqLzpcblx0XHRcdHJldHVybiB0ID09IDB4MTAxRiA/IHBhcnNlX1Z0VmVjTHB3c3RyVmFsdWUoYmxvYikgOiBwYXJzZV9WdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUoYmxvYik7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVHlwZWRQcm9wZXJ0eVZhbHVlIHVucmVjb2duaXplZCB0eXBlIFwiICsgdHlwZSArIFwiIFwiICsgdCk7XG5cdH1cbn1cbmZ1bmN0aW9uIHdyaXRlX1R5cGVkUHJvcGVydHlWYWx1ZSh0eXBlLyo6bnVtYmVyKi8sIHZhbHVlKSB7XG5cdHZhciBvID0gbmV3X2J1Zig0KSwgcCA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgdHlwZSA9PSAweDUwID8gMHgxRiA6IHR5cGUpO1xuXHRzd2l0Y2godHlwZSkge1xuXHRcdGNhc2UgMHgwMyAvKlZUX0k0Ki86IHAud3JpdGVfc2hpZnQoLTQsIHZhbHVlKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDA1IC8qVlRfSTQqLzogcCA9IG5ld19idWYoOCk7IHAud3JpdGVfc2hpZnQoOCwgdmFsdWUsICdmJyk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwQiAvKlZUX0JPT0wqLzogcC53cml0ZV9zaGlmdCg0LCB2YWx1ZSA/IDB4MDEgOiAweDAwKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDQwIC8qVlRfRklMRVRJTUUqLzogLyo6OiBpZih0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovIHAgPSB3cml0ZV9GSUxFVElNRSh2YWx1ZSk7IGJyZWFrO1xuXHRcdGNhc2UgMHgxRiAvKlZUX0xQV1NUUiovOlxuXHRcdGNhc2UgMHg1MCAvKlZUX1NUUklORyovOlxuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdHAgPSBuZXdfYnVmKDQgKyAyICogKHZhbHVlLmxlbmd0aCArIDEpICsgKHZhbHVlLmxlbmd0aCAlIDIgPyAwIDogMikpO1xuXHRcdFx0cC53cml0ZV9zaGlmdCg0LCB2YWx1ZS5sZW5ndGggKyAxKTtcblx0XHRcdHAud3JpdGVfc2hpZnQoMCwgdmFsdWUsIFwiZGJjc1wiKTtcblx0XHRcdHdoaWxlKHAubCAhPSBwLmxlbmd0aCkgcC53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSBcIiArIHR5cGUgKyBcIiBcIiArIHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gYmNvbmNhdChbbywgcF0pO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMjAgUHJvcGVydHlTZXQgKi9cbmZ1bmN0aW9uIHBhcnNlX1Byb3BlcnR5U2V0KGJsb2IsIFBJRFNJKSB7XG5cdHZhciBzdGFydF9hZGRyID0gYmxvYi5sO1xuXHR2YXIgc2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIE51bVByb3BzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgUHJvcHMgPSBbXSwgaSA9IDA7XG5cdHZhciBDb2RlUGFnZSA9IDA7XG5cdHZhciBEaWN0aW9uYXJ5ID0gLTEsIERpY3RPYmovKjp7W251bWJlcl06c3RyaW5nfSovID0gKHt9Lyo6YW55Ki8pO1xuXHRmb3IoaSA9IDA7IGkgIT0gTnVtUHJvcHM7ICsraSkge1xuXHRcdHZhciBQcm9wSUQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIE9mZnNldCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRQcm9wc1tpXSA9IFtQcm9wSUQsIE9mZnNldCArIHN0YXJ0X2FkZHJdO1xuXHR9XG5cdFByb3BzLnNvcnQoZnVuY3Rpb24oeCx5KSB7IHJldHVybiB4WzFdIC0geVsxXTsgfSk7XG5cdHZhciBQcm9wSCA9IHt9O1xuXHRmb3IoaSA9IDA7IGkgIT0gTnVtUHJvcHM7ICsraSkge1xuXHRcdGlmKGJsb2IubCAhPT0gUHJvcHNbaV1bMV0pIHtcblx0XHRcdHZhciBmYWlsID0gdHJ1ZTtcblx0XHRcdGlmKGk+MCAmJiBQSURTSSkgc3dpdGNoKFBJRFNJW1Byb3BzW2ktMV1bMF1dLnQpIHtcblx0XHRcdFx0Y2FzZSAweDAyIC8qVlRfSTIqLzogaWYoYmxvYi5sKzIgPT09IFByb3BzW2ldWzFdKSB7IGJsb2IubCs9MjsgZmFpbCA9IGZhbHNlOyB9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4NTAgLypWVF9TVFJJTkcqLzogaWYoYmxvYi5sIDw9IFByb3BzW2ldWzFdKSB7IGJsb2IubD1Qcm9wc1tpXVsxXTsgZmFpbCA9IGZhbHNlOyB9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MTAwQyAvKlZUX1ZFQ1RPUnxWVF9WQVJJQU5UKi86IGlmKGJsb2IubCA8PSBQcm9wc1tpXVsxXSkgeyBibG9iLmw9UHJvcHNbaV1bMV07IGZhaWwgPSBmYWxzZTsgfSBicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKCghUElEU0l8fGk9PTApICYmIGJsb2IubCA8PSBQcm9wc1tpXVsxXSkgeyBmYWlsPWZhbHNlOyBibG9iLmwgPSBQcm9wc1tpXVsxXTsgfVxuXHRcdFx0aWYoZmFpbCkgdGhyb3cgbmV3IEVycm9yKFwiUmVhZCBFcnJvcjogRXhwZWN0ZWQgYWRkcmVzcyBcIiArIFByb3BzW2ldWzFdICsgJyBhdCAnICsgYmxvYi5sICsgJyA6JyArIGkpO1xuXHRcdH1cblx0XHRpZihQSURTSSkge1xuXHRcdFx0dmFyIHBpZGRzaSA9IFBJRFNJW1Byb3BzW2ldWzBdXTtcblx0XHRcdFByb3BIW3BpZGRzaS5uXSA9IHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCBwaWRkc2kudCwge3Jhdzp0cnVlfSk7XG5cdFx0XHRpZihwaWRkc2kucCA9PT0gJ3ZlcnNpb24nKSBQcm9wSFtwaWRkc2kubl0gPSBTdHJpbmcoUHJvcEhbcGlkZHNpLm5dID4+IDE2KSArIFwiLlwiICsgKFwiMDAwMFwiICsgU3RyaW5nKFByb3BIW3BpZGRzaS5uXSAmIDB4RkZGRikpLnNsaWNlKC00KTtcblx0XHRcdGlmKHBpZGRzaS5uID09IFwiQ29kZVBhZ2VcIikgc3dpdGNoKFByb3BIW3BpZGRzaS5uXSkge1xuXHRcdFx0XHRjYXNlIDA6IFByb3BIW3BpZGRzaS5uXSA9IDEyNTI7XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDg3NDpcblx0XHRcdFx0Y2FzZSA5MzI6XG5cdFx0XHRcdGNhc2UgOTM2OlxuXHRcdFx0XHRjYXNlIDk0OTpcblx0XHRcdFx0Y2FzZSA5NTA6XG5cdFx0XHRcdGNhc2UgMTI1MDpcblx0XHRcdFx0Y2FzZSAxMjUxOlxuXHRcdFx0XHRjYXNlIDEyNTM6XG5cdFx0XHRcdGNhc2UgMTI1NDpcblx0XHRcdFx0Y2FzZSAxMjU1OlxuXHRcdFx0XHRjYXNlIDEyNTY6XG5cdFx0XHRcdGNhc2UgMTI1Nzpcblx0XHRcdFx0Y2FzZSAxMjU4OlxuXHRcdFx0XHRjYXNlIDEwMDAwOlxuXHRcdFx0XHRjYXNlIDEyMDA6XG5cdFx0XHRcdGNhc2UgMTIwMTpcblx0XHRcdFx0Y2FzZSAxMjUyOlxuXHRcdFx0XHRjYXNlIDY1MDAwOiBjYXNlIC01MzY6XG5cdFx0XHRcdGNhc2UgNjUwMDE6IGNhc2UgLTUzNTpcblx0XHRcdFx0XHRzZXRfY3AoQ29kZVBhZ2UgPSAoUHJvcEhbcGlkZHNpLm5dPj4+MCkgJiAweEZGRkYpOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ29kZVBhZ2U6IFwiICsgUHJvcEhbcGlkZHNpLm5dKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoUHJvcHNbaV1bMF0gPT09IDB4MSkge1xuXHRcdFx0XHRDb2RlUGFnZSA9IFByb3BILkNvZGVQYWdlID0gKHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCBWVF9JMikvKjpudW1iZXIqLyk7XG5cdFx0XHRcdHNldF9jcChDb2RlUGFnZSk7XG5cdFx0XHRcdGlmKERpY3Rpb25hcnkgIT09IC0xKSB7XG5cdFx0XHRcdFx0dmFyIG9sZHBvcyA9IGJsb2IubDtcblx0XHRcdFx0XHRibG9iLmwgPSBQcm9wc1tEaWN0aW9uYXJ5XVsxXTtcblx0XHRcdFx0XHREaWN0T2JqID0gcGFyc2VfZGljdGlvbmFyeShibG9iLENvZGVQYWdlKTtcblx0XHRcdFx0XHRibG9iLmwgPSBvbGRwb3M7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZihQcm9wc1tpXVswXSA9PT0gMCkge1xuXHRcdFx0XHRpZihDb2RlUGFnZSA9PT0gMCkgeyBEaWN0aW9uYXJ5ID0gaTsgYmxvYi5sID0gUHJvcHNbaSsxXVsxXTsgY29udGludWU7IH1cblx0XHRcdFx0RGljdE9iaiA9IHBhcnNlX2RpY3Rpb25hcnkoYmxvYixDb2RlUGFnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgbmFtZSA9IERpY3RPYmpbUHJvcHNbaV1bMF1dO1xuXHRcdFx0XHR2YXIgdmFsO1xuXHRcdFx0XHQvKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4zLjEuMiArIFBST1BWQVJJQU5UICovXG5cdFx0XHRcdHN3aXRjaChibG9iW2Jsb2IubF0pIHtcblx0XHRcdFx0XHRjYXNlIDB4NDEgLypWVF9CTE9CKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZV9CTE9CKGJsb2IpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MUUgLypWVF9MUFNUUiovOiBibG9iLmwgKz0gNDsgdmFsID0gcGFyc2VfVnRTdHJpbmcoYmxvYiwgYmxvYltibG9iLmwtNF0pLnJlcGxhY2UoL1xcdTAwMDArJC8sXCJcIik7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgxRiAvKlZUX0xQV1NUUiovOiBibG9iLmwgKz0gNDsgdmFsID0gcGFyc2VfVnRTdHJpbmcoYmxvYiwgYmxvYltibG9iLmwtNF0pLnJlcGxhY2UoL1xcdTAwMDArJC8sXCJcIik7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgwMyAvKlZUX0k0Ki86IGJsb2IubCArPSA0OyB2YWwgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDEzIC8qVlRfVUk0Ki86IGJsb2IubCArPSA0OyB2YWwgPSBibG9iLnJlYWRfc2hpZnQoNCk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgwNSAvKlZUX1I4Ki86IGJsb2IubCArPSA0OyB2YWwgPSBibG9iLnJlYWRfc2hpZnQoOCwgJ2YnKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDBCIC8qVlRfQk9PTCovOiBibG9iLmwgKz0gNDsgdmFsID0gcGFyc2Vib29sKGJsb2IsIDQpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4NDAgLypWVF9GSUxFVElNRSovOiBibG9iLmwgKz0gNDsgdmFsID0gcGFyc2VEYXRlKHBhcnNlX0ZJTEVUSU1FKGJsb2IpKTsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwidW5wYXJzZWQgdmFsdWU6IFwiICsgYmxvYltibG9iLmxdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRQcm9wSFtuYW1lXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0YmxvYi5sID0gc3RhcnRfYWRkciArIHNpemU7IC8qIHN0ZXAgYWhlYWQgdG8gc2tpcCBwYWRkaW5nICovXG5cdHJldHVybiBQcm9wSDtcbn1cbnZhciBYTFNQU1NraXAgPSBbIFwiQ29kZVBhZ2VcIiwgXCJUaHVtYm5haWxcIiwgXCJfUElEX0xJTktCQVNFXCIsIFwiX1BJRF9ITElOS1NcIiwgXCJTeXN0ZW1JZGVudGlmaWVyXCIsIFwiRk1USURcIiBdOyAvLy5jb25jYXQoUHNldWRvUHJvcHNQYWlycyk7XG5mdW5jdGlvbiBndWVzc19wcm9wZXJ0eV90eXBlKHZhbC8qOmFueSovKS8qOm51bWJlciovIHtcblx0c3dpdGNoKHR5cGVvZiB2YWwpIHtcblx0XHRjYXNlIFwiYm9vbGVhblwiOiByZXR1cm4gMHgwQjtcblx0XHRjYXNlIFwibnVtYmVyXCI6IHJldHVybiAoKHZhbHwwKT09dmFsKSA/IDB4MDMgOiAweDA1O1xuXHRcdGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIDB4MUY7XG5cdFx0Y2FzZSBcIm9iamVjdFwiOiBpZih2YWwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gMHg0MDsgYnJlYWs7XG5cdH1cblx0cmV0dXJuIC0xO1xufVxuZnVuY3Rpb24gd3JpdGVfUHJvcGVydHlTZXQoZW50cmllcywgUkUsIFBJRFNJKSB7XG5cdHZhciBoZHIgPSBuZXdfYnVmKDgpLCBwaWFvID0gW10sIHByb3AgPSBbXTtcblx0dmFyIHN6ID0gOCwgaSA9IDA7XG5cblx0dmFyIHByID0gbmV3X2J1Zig4KSwgcGlvID0gbmV3X2J1Zig4KTtcblx0cHIud3JpdGVfc2hpZnQoNCwgMHgwMDAyKTtcblx0cHIud3JpdGVfc2hpZnQoNCwgMHgwNEIwKTtcblx0cGlvLndyaXRlX3NoaWZ0KDQsIDB4MDAwMSk7XG5cdHByb3AucHVzaChwcik7IHBpYW8ucHVzaChwaW8pO1xuXHRzeiArPSA4ICsgcHIubGVuZ3RoO1xuXG5cdGlmKCFSRSkge1xuXHRcdHBpbyA9IG5ld19idWYoOCk7XG5cdFx0cGlvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdHBpYW8udW5zaGlmdChwaW8pO1xuXG5cdFx0dmFyIGJ1ZnMgPSBbbmV3X2J1Zig0KV07XG5cdFx0YnVmc1swXS53cml0ZV9zaGlmdCg0LCBlbnRyaWVzLmxlbmd0aCk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIHZhbHVlID0gZW50cmllc1tpXVswXTtcblx0XHRcdHByID0gbmV3X2J1Zig0ICsgNCArIDIgKiAodmFsdWUubGVuZ3RoICsgMSkgKyAodmFsdWUubGVuZ3RoICUgMiA/IDAgOiAyKSk7XG5cdFx0XHRwci53cml0ZV9zaGlmdCg0LCBpKzIpO1xuXHRcdFx0cHIud3JpdGVfc2hpZnQoNCwgdmFsdWUubGVuZ3RoICsgMSk7XG5cdFx0XHRwci53cml0ZV9zaGlmdCgwLCB2YWx1ZSwgXCJkYmNzXCIpO1xuXHRcdFx0d2hpbGUocHIubCAhPSBwci5sZW5ndGgpIHByLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0YnVmcy5wdXNoKHByKTtcblx0XHR9XG5cdFx0cHIgPSBiY29uY2F0KGJ1ZnMpO1xuXHRcdHByb3AudW5zaGlmdChwcik7XG5cdFx0c3ogKz0gOCArIHByLmxlbmd0aDtcblx0fVxuXG5cdGZvcihpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHtcblx0XHRpZihSRSAmJiAhUkVbZW50cmllc1tpXVswXV0pIGNvbnRpbnVlO1xuXHRcdGlmKFhMU1BTU2tpcC5pbmRleE9mKGVudHJpZXNbaV1bMF0pID4gLTEgfHwgUHNldWRvUHJvcHNQYWlycy5pbmRleE9mKGVudHJpZXNbaV1bMF0pID4gLTEpIGNvbnRpbnVlO1xuXHRcdGlmKGVudHJpZXNbaV1bMV0gPT0gbnVsbCkgY29udGludWU7XG5cblx0XHR2YXIgdmFsID0gZW50cmllc1tpXVsxXSwgaWR4ID0gMDtcblx0XHRpZihSRSkge1xuXHRcdFx0aWR4ID0gK1JFW2VudHJpZXNbaV1bMF1dO1xuXHRcdFx0dmFyIHBpbmZvID0gKFBJRFNJLyo6OiB8fCB7fSovKVtpZHhdLyo6OiB8fCB7fSAqLztcblx0XHRcdGlmKHBpbmZvLnAgPT0gXCJ2ZXJzaW9uXCIgJiYgdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gXCJzdHJpbmdcIikgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0XHR2YXIgYXJyID0gdmFsLnNwbGl0KFwiLlwiKTtcblx0XHRcdFx0dmFsID0gKCgrYXJyWzBdKTw8MTYpICsgKCgrYXJyWzFdKXx8MCk7XG5cdFx0XHR9XG5cdFx0XHRwciA9IHdyaXRlX1R5cGVkUHJvcGVydHlWYWx1ZShwaW5mby50LCB2YWwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgVCA9IGd1ZXNzX3Byb3BlcnR5X3R5cGUodmFsKTtcblx0XHRcdGlmKFQgPT0gLTEpIHsgVCA9IDB4MUY7IHZhbCA9IFN0cmluZyh2YWwpOyB9XG5cdFx0XHRwciA9IHdyaXRlX1R5cGVkUHJvcGVydHlWYWx1ZShULCB2YWwpO1xuXHRcdH1cblx0XHRwcm9wLnB1c2gocHIpO1xuXG5cdFx0cGlvID0gbmV3X2J1Zig4KTtcblx0XHRwaW8ud3JpdGVfc2hpZnQoNCwgIVJFID8gMitpIDogaWR4KTtcblx0XHRwaWFvLnB1c2gocGlvKTtcblxuXHRcdHN6ICs9IDggKyBwci5sZW5ndGg7XG5cdH1cblxuXHR2YXIgdyA9IDggKiAocHJvcC5sZW5ndGggKyAxKTtcblx0Zm9yKGkgPSAwOyBpIDwgcHJvcC5sZW5ndGg7ICsraSkgeyBwaWFvW2ldLndyaXRlX3NoaWZ0KDQsIHcpOyB3ICs9IHByb3BbaV0ubGVuZ3RoOyB9XG5cdGhkci53cml0ZV9zaGlmdCg0LCBzeik7XG5cdGhkci53cml0ZV9zaGlmdCg0LCBwcm9wLmxlbmd0aCk7XG5cdHJldHVybiBiY29uY2F0KFtoZHJdLmNvbmNhdChwaWFvKS5jb25jYXQocHJvcCkpO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMjEgUHJvcGVydHlTZXRTdHJlYW0gKi9cbmZ1bmN0aW9uIHBhcnNlX1Byb3BlcnR5U2V0U3RyZWFtKGZpbGUsIFBJRFNJLCBjbHNpZCkge1xuXHR2YXIgYmxvYiA9IGZpbGUuY29udGVudDtcblx0aWYoIWJsb2IpIHJldHVybiAoe30vKjphbnkqLyk7XG5cdHByZXBfYmxvYihibG9iLCAwKTtcblxuXHR2YXIgTnVtU2V0cywgRk1USUQwLCBGTVRJRDEsIE9mZnNldDAsIE9mZnNldDEgPSAwO1xuXHRibG9iLmNoaygnZmVmZicsICdCeXRlIE9yZGVyOiAnKTtcblxuXHQvKnZhciB2ZXJzID0gKi9ibG9iLnJlYWRfc2hpZnQoMik7IC8vIFRPRE86IGNoZWNrIHZlcnNpb25cblx0dmFyIFN5c3RlbUlkZW50aWZpZXIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBDTFNJRCA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdGlmKENMU0lEICE9PSBDRkIudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCAmJiBDTFNJRCAhPT0gY2xzaWQpIHRocm93IG5ldyBFcnJvcihcIkJhZCBQcm9wZXJ0eVNldCBDTFNJRCBcIiArIENMU0lEKTtcblx0TnVtU2V0cyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoTnVtU2V0cyAhPT0gMSAmJiBOdW1TZXRzICE9PSAyKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgI1NldHM6IFwiICsgTnVtU2V0cyk7XG5cdEZNVElEMCA9IGJsb2IucmVhZF9zaGlmdCgxNik7IE9mZnNldDAgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cblx0aWYoTnVtU2V0cyA9PT0gMSAmJiBPZmZzZXQwICE9PSBibG9iLmwpIHRocm93IG5ldyBFcnJvcihcIkxlbmd0aCBtaXNtYXRjaDogXCIgKyBPZmZzZXQwICsgXCIgIT09IFwiICsgYmxvYi5sKTtcblx0ZWxzZSBpZihOdW1TZXRzID09PSAyKSB7IEZNVElEMSA9IGJsb2IucmVhZF9zaGlmdCgxNik7IE9mZnNldDEgPSBibG9iLnJlYWRfc2hpZnQoNCk7IH1cblx0dmFyIFBTZXQwID0gcGFyc2VfUHJvcGVydHlTZXQoYmxvYiwgUElEU0kpO1xuXG5cdHZhciBydmFsID0gKHsgU3lzdGVtSWRlbnRpZmllcjogU3lzdGVtSWRlbnRpZmllciB9Lyo6YW55Ki8pO1xuXHRmb3IodmFyIHkgaW4gUFNldDApIHJ2YWxbeV0gPSBQU2V0MFt5XTtcblx0Ly9ydmFsLmJsb2IgPSBibG9iO1xuXHRydmFsLkZNVElEID0gRk1USUQwO1xuXHQvL3J2YWwuUFNldDAgPSBQU2V0MDtcblx0aWYoTnVtU2V0cyA9PT0gMSkgcmV0dXJuIHJ2YWw7XG5cdGlmKE9mZnNldDEgLSBibG9iLmwgPT0gMikgYmxvYi5sICs9IDI7XG5cdGlmKGJsb2IubCAhPT0gT2Zmc2V0MSkgdGhyb3cgbmV3IEVycm9yKFwiTGVuZ3RoIG1pc21hdGNoIDI6IFwiICsgYmxvYi5sICsgXCIgIT09IFwiICsgT2Zmc2V0MSk7XG5cdHZhciBQU2V0MTtcblx0dHJ5IHsgUFNldDEgPSBwYXJzZV9Qcm9wZXJ0eVNldChibG9iLCBudWxsKTsgfSBjYXRjaChlKSB7LyogZW1wdHkgKi99XG5cdGZvcih5IGluIFBTZXQxKSBydmFsW3ldID0gUFNldDFbeV07XG5cdHJ2YWwuRk1USUQgPSBbRk1USUQwLCBGTVRJRDFdOyAvLyBUT0RPOiB2ZXJpZnkgRk1USUQwLzFcblx0cmV0dXJuIHJ2YWw7XG59XG5mdW5jdGlvbiB3cml0ZV9Qcm9wZXJ0eVNldFN0cmVhbShlbnRyaWVzLCBjbHNpZCwgUkUsIFBJRFNJLyo6e1trZXk6c3RyaW5nfG51bWJlcl06YW55fSovLCBlbnRyaWVzMi8qOj9hbnkqLywgY2xzaWQyLyo6P2FueSovKSB7XG5cdHZhciBoZHIgPSBuZXdfYnVmKGVudHJpZXMyID8gNjggOiA0OCk7XG5cdHZhciBidWZzID0gW2hkcl07XG5cdGhkci53cml0ZV9zaGlmdCgyLCAweEZGRkUpO1xuXHRoZHIud3JpdGVfc2hpZnQoMiwgMHgwMDAwKTsgLyogVE9ETzogdHlwZSAxIHByb3BzICovXG5cdGhkci53cml0ZV9zaGlmdCg0LCAweDMyMzYzMjM3KTtcblx0aGRyLndyaXRlX3NoaWZ0KDE2LCBDRkIudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCwgXCJoZXhcIik7XG5cdGhkci53cml0ZV9zaGlmdCg0LCAoZW50cmllczIgPyAyIDogMSkpO1xuXHRoZHIud3JpdGVfc2hpZnQoMTYsIGNsc2lkLCBcImhleFwiKTtcblx0aGRyLndyaXRlX3NoaWZ0KDQsIChlbnRyaWVzMiA/IDY4IDogNDgpKTtcblx0dmFyIHBzMCA9IHdyaXRlX1Byb3BlcnR5U2V0KGVudHJpZXMsIFJFLCBQSURTSSk7XG5cdGJ1ZnMucHVzaChwczApO1xuXG5cdGlmKGVudHJpZXMyKSB7XG5cdFx0dmFyIHBzMSA9IHdyaXRlX1Byb3BlcnR5U2V0KGVudHJpZXMyLCBudWxsLCBudWxsKTtcblx0XHRoZHIud3JpdGVfc2hpZnQoMTYsIGNsc2lkMiwgXCJoZXhcIik7XG5cdFx0aGRyLndyaXRlX3NoaWZ0KDQsIDY4ICsgcHMwLmxlbmd0aCk7XG5cdFx0YnVmcy5wdXNoKHBzMSk7XG5cdH1cblx0cmV0dXJuIGJjb25jYXQoYnVmcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlbm9vcDIoYmxvYiwgbGVuZ3RoKSB7IGJsb2IucmVhZF9zaGlmdChsZW5ndGgpOyByZXR1cm4gbnVsbDsgfVxuZnVuY3Rpb24gd3JpdGV6ZXJvZXMobiwgbykgeyBpZighbykgbz1uZXdfYnVmKG4pOyBmb3IodmFyIGo9MDsgajxuOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgMCk7IHJldHVybiBvOyB9XG5cbmZ1bmN0aW9uIHBhcnNsdXJwKGJsb2IsIGxlbmd0aCwgY2IpIHtcblx0dmFyIGFyciA9IFtdLCB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHdoaWxlKGJsb2IubCA8IHRhcmdldCkgYXJyLnB1c2goY2IoYmxvYiwgdGFyZ2V0IC0gYmxvYi5sKSk7XG5cdGlmKHRhcmdldCAhPT0gYmxvYi5sKSB0aHJvdyBuZXcgRXJyb3IoXCJTbHVycCBlcnJvclwiKTtcblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gcGFyc2Vib29sKGJsb2IsIGxlbmd0aC8qOm51bWJlciovKSB7IHJldHVybiBibG9iLnJlYWRfc2hpZnQobGVuZ3RoKSA9PT0gMHgxOyB9XG5mdW5jdGlvbiB3cml0ZWJvb2wodi8qOmFueSovLCBvKSB7IGlmKCFvKSBvPW5ld19idWYoMik7IG8ud3JpdGVfc2hpZnQoMiwgKyEhdik7IHJldHVybiBvOyB9XG5cbmZ1bmN0aW9uIHBhcnNldWludDE2KGJsb2IvKjo6LCBsZW5ndGg6P251bWJlciwgb3B0czo/YW55Ki8pIHsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdCgyLCAndScpOyB9XG5mdW5jdGlvbiB3cml0ZXVpbnQxNih2Lyo6bnVtYmVyKi8sIG8pIHsgaWYoIW8pIG89bmV3X2J1ZigyKTsgby53cml0ZV9zaGlmdCgyLCB2KTsgcmV0dXJuIG87IH1cbmZ1bmN0aW9uIHBhcnNldWludDE2YShibG9iLCBsZW5ndGgvKjo6IDo/bnVtYmVyLCBvcHRzOj9hbnkqLykgeyByZXR1cm4gcGFyc2x1cnAoYmxvYixsZW5ndGgscGFyc2V1aW50MTYpO31cblxuLyogLS0tIDIuNSBTdHJ1Y3R1cmVzIC0tLSAqL1xuXG4vKiBbTVMtWExTXSAyLjUuMTAgQmVzIChib29sZWFuIG9yIGVycm9yKSAqL1xuZnVuY3Rpb24gcGFyc2VfQmVzKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgdiA9IGJsb2IucmVhZF9zaGlmdCgxKSwgdCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHQgPT09IDB4MDEgPyB2IDogdiA9PT0gMHgwMTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Jlcyh2LCB0Lyo6c3RyaW5nKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDIpO1xuXHRvLndyaXRlX3NoaWZ0KDEsICgodCA9PSAnZScpID8gK3YgOiArISF2KSk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgKCh0ID09ICdlJykgPyAxIDogMCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjI0MCBTaG9ydFhMVW5pY29kZVN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPj0gMTIgPyAyIDogMSk7XG5cdHZhciBlbmNvZGluZyA9ICdzYmNzLWNvbnQnO1xuXHR2YXIgY3AgPSBjdXJyZW50X2NvZGVwYWdlO1xuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA+PSA4KSBjdXJyZW50X2NvZGVwYWdlID0gMTIwMDtcblx0aWYoIW9wdHMgfHwgb3B0cy5iaWZmID09IDggKSB7XG5cdFx0dmFyIGZIaWdoQnl0ZSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRpZihmSGlnaEJ5dGUpIHsgZW5jb2RpbmcgPSAnZGJjcy1jb250JzsgfVxuXHR9IGVsc2UgaWYob3B0cy5iaWZmID09IDEyKSB7XG5cdFx0ZW5jb2RpbmcgPSAnd3N0cic7XG5cdH1cblx0aWYob3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUpIGVuY29kaW5nID0gJ2Nwc3RyJztcblx0dmFyIG8gPSBjY2ggPyBibG9iLnJlYWRfc2hpZnQoY2NoLCBlbmNvZGluZykgOiBcIlwiO1xuXHRjdXJyZW50X2NvZGVwYWdlID0gY3A7XG5cdHJldHVybiBvO1xufVxuXG4vKiAyLjUuMjkzIFhMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKGJsb2IpIHtcblx0dmFyIGNwID0gY3VycmVudF9jb2RlcGFnZTtcblx0Y3VycmVudF9jb2RlcGFnZSA9IDEyMDA7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMiksIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgLypmSGlnaEJ5dGUgPSBmbGFncyAmIDB4MSwqLyBmRXh0U3QgPSBmbGFncyAmIDB4NCwgZlJpY2hTdCA9IGZsYWdzICYgMHg4O1xuXHR2YXIgd2lkdGggPSAxICsgKGZsYWdzICYgMHgxKTsgLy8gMHgwIC0+IHV0ZjgsIDB4MSAtPiBkYmNzXG5cdHZhciBjUnVuID0gMCwgY2JFeHRSc3Q7XG5cdHZhciB6ID0ge307XG5cdGlmKGZSaWNoU3QpIGNSdW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKGZFeHRTdCkgY2JFeHRSc3QgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBlbmNvZGluZyA9IHdpZHRoID09IDIgPyAnZGJjcy1jb250JyA6ICdzYmNzLWNvbnQnO1xuXHR2YXIgbXNnID0gY2NoID09PSAwID8gXCJcIiA6IGJsb2IucmVhZF9zaGlmdChjY2gsIGVuY29kaW5nKTtcblx0aWYoZlJpY2hTdCkgYmxvYi5sICs9IDQgKiBjUnVuOyAvL1RPRE86IHBhcnNlIHRoaXNcblx0aWYoZkV4dFN0KSBibG9iLmwgKz0gY2JFeHRSc3Q7IC8vVE9ETzogcGFyc2UgdGhpc1xuXHR6LnQgPSBtc2c7XG5cdGlmKCFmUmljaFN0KSB7IHoucmF3ID0gXCI8dD5cIiArIHoudCArIFwiPC90PlwiOyB6LnIgPSB6LnQ7IH1cblx0Y3VycmVudF9jb2RlcGFnZSA9IGNwO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyh4bHN0ci8qOjogOlhMU3RyaW5nLCBvcHRzKi8pIHtcblx0dmFyIHN0ciA9ICh4bHN0ci50fHxcIlwiKSwgbmZtdHMgPSAxO1xuXG5cdHZhciBoZHIgPSBuZXdfYnVmKDMgKyAobmZtdHMgPiAxID8gMiA6IDApKTtcblx0aGRyLndyaXRlX3NoaWZ0KDIsIHN0ci5sZW5ndGgpO1xuXHRoZHIud3JpdGVfc2hpZnQoMSwgKG5mbXRzID4gMSA/IDB4MDggOiAweDAwKSB8IDB4MDEpO1xuXHRpZihuZm10cyA+IDEpIGhkci53cml0ZV9zaGlmdCgyLCBuZm10cyk7XG5cblx0dmFyIG90ZXh0ID0gbmV3X2J1ZigyICogc3RyLmxlbmd0aCk7XG5cdG90ZXh0LndyaXRlX3NoaWZ0KDIgKiBzdHIubGVuZ3RoLCBzdHIsICd1dGYxNmxlJyk7XG5cblx0dmFyIG91dCA9IFtoZHIsIG90ZXh0XTtcblxuXHRyZXR1cm4gYmNvbmNhdChvdXQpO1xufVxuXG4vKiAyLjUuMjk2IFhMVW5pY29kZVN0cmluZ05vQ2NoICovXG5mdW5jdGlvbiBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2gsIG9wdHMpIHtcblx0dmFyIHJldHZhbDtcblx0aWYob3B0cykge1xuXHRcdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1KSByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ2Nwc3RyJyk7XG5cdFx0aWYob3B0cy5iaWZmID49IDEyKSByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ2RiY3MtY29udCcpO1xuXHR9XG5cdHZhciBmSGlnaEJ5dGUgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGZIaWdoQnl0ZT09PTApIHsgcmV0dmFsID0gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ3NiY3MtY29udCcpOyB9XG5cdGVsc2UgeyByZXR2YWwgPSBibG9iLnJlYWRfc2hpZnQoY2NoLCAnZGJjcy1jb250Jyk7IH1cblx0cmV0dXJuIHJldHZhbDtcbn1cblxuLyogMi41LjI5NCBYTFVuaWNvZGVTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHRpZihjY2ggPT09IDApIHsgYmxvYi5sKys7IHJldHVybiBcIlwiOyB9XG5cdHJldHVybiBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2gsIG9wdHMpO1xufVxuLyogQklGRjUgb3ZlcnJpZGUgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA+IDUpIHJldHVybiBwYXJzZV9YTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYoY2NoID09PSAwKSB7IGJsb2IubCsrOyByZXR1cm4gXCJcIjsgfVxuXHRyZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgKG9wdHMuYmlmZiA8PSA0IHx8ICFibG9iLmxlbnMgKSA/ICdjcHN0cicgOiAnc2Jjcy1jb250Jyk7XG59XG4vKiBUT0RPOiBCSUZGNSBhbmQgbG93ZXIsIGNvZGVwYWdlIGF3YXJlbmVzcyAqL1xuZnVuY3Rpb24gd3JpdGVfWExVbmljb2RlU3RyaW5nKHN0ciwgb3B0cywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMyArIDIgKiBzdHIubGVuZ3RoKTtcblx0by53cml0ZV9zaGlmdCgyLCBzdHIubGVuZ3RoKTtcblx0by53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgzMSwgc3RyLCAndXRmMTZsZScpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjYxIENvbnRyb2xJbmZvICovXG5mdW5jdGlvbiBwYXJzZV9Db250cm9sSW5mbyhibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRibG9iLmwrKztcblx0dmFyIGFjY2VsID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtmbGFncywgYWNjZWxdO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuNiBVUkxNb25pa2VyIFRPRE86IGZsYWdzICovXG5mdW5jdGlvbiBwYXJzZV9VUkxNb25pa2VyKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDQpLCBzdGFydCA9IGJsb2IubDtcblx0dmFyIGV4dHJhID0gZmFsc2U7XG5cdGlmKGxlbiA+IDI0KSB7XG5cdFx0LyogbG9vayBhaGVhZCAqL1xuXHRcdGJsb2IubCArPSBsZW4gLSAyNDtcblx0XHRpZihibG9iLnJlYWRfc2hpZnQoMTYpID09PSBcIjc5NTg4MWY0M2IxZDdmNDhhZjJjODI1ZGM0ODUyNzYzXCIpIGV4dHJhID0gdHJ1ZTtcblx0XHRibG9iLmwgPSBzdGFydDtcblx0fVxuXHR2YXIgdXJsID0gYmxvYi5yZWFkX3NoaWZ0KChleHRyYT9sZW4tMjQ6bGVuKT4+MSwgJ3V0ZjE2bGUnKS5yZXBsYWNlKGNocjAsXCJcIik7XG5cdGlmKGV4dHJhKSBibG9iLmwgKz0gMjQ7XG5cdHJldHVybiB1cmw7XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy44IEZpbGVNb25pa2VyIFRPRE86IGFsbCBmaWVsZHMgKi9cbmZ1bmN0aW9uIHBhcnNlX0ZpbGVNb25pa2VyKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgY0FudGkgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBwcmVhbWJsZSA9IFwiXCI7IHdoaWxlKGNBbnRpLS0gPiAwKSBwcmVhbWJsZSArPSBcIi4uL1wiO1xuXHR2YXIgYW5zaVBhdGggPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwc3RyLWFuc2knKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGVuZFNlcnZlciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoYmxvYi5yZWFkX3NoaWZ0KDIpICE9IDB4REVBRCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIEZpbGVNb25pa2VyXCIpO1xuXHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKHN6ID09PSAwKSByZXR1cm4gcHJlYW1ibGUgKyBhbnNpUGF0aC5yZXBsYWNlKC9cXFxcL2csXCIvXCIpO1xuXHR2YXIgYnl0ZXMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKGJsb2IucmVhZF9zaGlmdCgyKSAhPSAzKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgRmlsZU1vbmlrZXJcIik7XG5cdHZhciB1bmljb2RlUGF0aCA9IGJsb2IucmVhZF9zaGlmdChieXRlcz4+MSwgJ3V0ZjE2bGUnKS5yZXBsYWNlKGNocjAsXCJcIik7XG5cdHJldHVybiBwcmVhbWJsZSArIHVuaWNvZGVQYXRoO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuMiBIeXBlcmxpbmtNb25pa2VyIFRPRE86IGFsbCB0aGUgbW9uaWtlcnMgKi9cbmZ1bmN0aW9uIHBhcnNlX0h5cGVybGlua01vbmlrZXIoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBjbHNpZCA9IGJsb2IucmVhZF9zaGlmdCgxNik7IGxlbmd0aCAtPSAxNjtcblx0c3dpdGNoKGNsc2lkKSB7XG5cdFx0Y2FzZSBcImUwYzllYTc5ZjliYWNlMTE4YzgyMDBhYTAwNGJhOTBiXCI6IHJldHVybiBwYXJzZV9VUkxNb25pa2VyKGJsb2IsIGxlbmd0aCk7XG5cdFx0Y2FzZSBcIjAzMDMwMDAwMDAwMDAwMDBjMDAwMDAwMDAwMDAwMDQ2XCI6IHJldHVybiBwYXJzZV9GaWxlTW9uaWtlcihibG9iLCBsZW5ndGgpO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIE1vbmlrZXIgXCIgKyBjbHNpZCk7XG5cdH1cbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjkgSHlwZXJsaW5rU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBvID0gbGVuID4gMCA/IGJsb2IucmVhZF9zaGlmdChsZW4sICd1dGYxNmxlJykucmVwbGFjZShjaHIwLCBcIlwiKSA6IFwiXCI7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfSHlwZXJsaW5rU3RyaW5nKHN0ci8qOnN0cmluZyovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig2ICsgc3RyLmxlbmd0aCAqIDIpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDEgKyBzdHIubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgby53cml0ZV9zaGlmdCgyLCBzdHIuY2hhckNvZGVBdChpKSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuMSBIeXBlcmxpbmsgT2JqZWN0ICovXG5mdW5jdGlvbiBwYXJzZV9IeXBlcmxpbmsoYmxvYiwgbGVuZ3RoKS8qOkh5cGVybGluayovIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHNWZXIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKHNWZXIgIT09IDIpIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBzdHJlYW1WZXJzaW9uOiBcIiArIHNWZXIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyO1xuXHR2YXIgZGlzcGxheU5hbWUsIHRhcmdldEZyYW1lTmFtZSwgbW9uaWtlciwgb2xlTW9uaWtlciwgTG9jPVwiXCIsIGd1aWQsIGZpbGVUaW1lO1xuXHRpZihmbGFncyAmIDB4MDAxMCkgZGlzcGxheU5hbWUgPSBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoZmxhZ3MgJiAweDAwODApIHRhcmdldEZyYW1lTmFtZSA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZigoZmxhZ3MgJiAweDAxMDEpID09PSAweDAxMDEpIG1vbmlrZXIgPSBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoKGZsYWdzICYgMHgwMTAxKSA9PT0gMHgwMDAxKSBvbGVNb25pa2VyID0gcGFyc2VfSHlwZXJsaW5rTW9uaWtlcihibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZihmbGFncyAmIDB4MDAwOCkgTG9jID0gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKGZsYWdzICYgMHgwMDIwKSBndWlkID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0aWYoZmxhZ3MgJiAweDAwNDApIGZpbGVUaW1lID0gcGFyc2VfRklMRVRJTUUoYmxvYi8qLCA4Ki8pO1xuXHRibG9iLmwgPSBlbmQ7XG5cdHZhciB0YXJnZXQgPSB0YXJnZXRGcmFtZU5hbWV8fG1vbmlrZXJ8fG9sZU1vbmlrZXJ8fFwiXCI7XG5cdGlmKHRhcmdldCAmJiBMb2MpIHRhcmdldCs9XCIjXCIrTG9jO1xuXHRpZighdGFyZ2V0KSB0YXJnZXQgPSBcIiNcIiArIExvYztcblx0aWYoKGZsYWdzICYgMHgwMDAyKSAmJiB0YXJnZXQuY2hhckF0KDApID09IFwiL1wiICYmIHRhcmdldC5jaGFyQXQoMSkgIT0gXCIvXCIpIHRhcmdldCA9IFwiZmlsZTovL1wiICsgdGFyZ2V0O1xuXHR2YXIgb3V0ID0gKHtUYXJnZXQ6dGFyZ2V0fS8qOmFueSovKTtcblx0aWYoZ3VpZCkgb3V0Lmd1aWQgPSBndWlkO1xuXHRpZihmaWxlVGltZSkgb3V0LnRpbWUgPSBmaWxlVGltZTtcblx0aWYoZGlzcGxheU5hbWUpIG91dC5Ub29sdGlwID0gZGlzcGxheU5hbWU7XG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9IeXBlcmxpbmsoaGwpIHtcblx0dmFyIG91dCA9IG5ld19idWYoNTEyKSwgaSA9IDA7XG5cdHZhciBUYXJnZXQgPSBobC5UYXJnZXQ7XG5cdGlmKFRhcmdldC5zbGljZSgwLDcpID09IFwiZmlsZTovL1wiKSBUYXJnZXQgPSBUYXJnZXQuc2xpY2UoNyk7XG5cdHZhciBoYXNoaWR4ID0gVGFyZ2V0LmluZGV4T2YoXCIjXCIpO1xuXHR2YXIgRiA9IGhhc2hpZHggPiAtMSA/IDB4MWYgOiAweDE3O1xuXHRzd2l0Y2goVGFyZ2V0LmNoYXJBdCgwKSkgeyBjYXNlIFwiI1wiOiBGPTB4MWM7IGJyZWFrOyBjYXNlIFwiLlwiOiBGJj1+MjsgYnJlYWs7IH1cblx0b3V0LndyaXRlX3NoaWZ0KDQsMik7IG91dC53cml0ZV9zaGlmdCg0LCBGKTtcblx0dmFyIGRhdGEgPSBbOCw2ODE1ODI3LDY2MTkyMzcsNDg0OTc4MCw4M107IGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG91dC53cml0ZV9zaGlmdCg0LCBkYXRhW2ldKTtcblx0aWYoRiA9PSAweDFDKSB7XG5cdFx0VGFyZ2V0ID0gVGFyZ2V0LnNsaWNlKDEpO1xuXHRcdHdyaXRlX0h5cGVybGlua1N0cmluZyhUYXJnZXQsIG91dCk7XG5cdH0gZWxzZSBpZihGICYgMHgwMikge1xuXHRcdGRhdGEgPSBcImUwIGM5IGVhIDc5IGY5IGJhIGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiXCIuc3BsaXQoXCIgXCIpO1xuXHRcdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG91dC53cml0ZV9zaGlmdCgxLCBwYXJzZUludChkYXRhW2ldLCAxNikpO1xuXHRcdHZhciBQcmV0YXJnZXQgPSBoYXNoaWR4ID4gLTEgPyBUYXJnZXQuc2xpY2UoMCwgaGFzaGlkeCkgOiBUYXJnZXQ7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIDIqKFByZXRhcmdldC5sZW5ndGggKyAxKSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgUHJldGFyZ2V0Lmxlbmd0aDsgKytpKSBvdXQud3JpdGVfc2hpZnQoMiwgUHJldGFyZ2V0LmNoYXJDb2RlQXQoaSkpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRpZihGICYgMHgwOCkgd3JpdGVfSHlwZXJsaW5rU3RyaW5nKGhhc2hpZHggPiAtMSA/IFRhcmdldC5zbGljZShoYXNoaWR4KzEpOiBcIlwiLCBvdXQpO1xuXHR9IGVsc2Uge1xuXHRcdGRhdGEgPSBcIjAzIDAzIDAwIDAwIDAwIDAwIDAwIDAwIGMwIDAwIDAwIDAwIDAwIDAwIDAwIDQ2XCIuc3BsaXQoXCIgXCIpO1xuXHRcdGZvcihpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG91dC53cml0ZV9zaGlmdCgxLCBwYXJzZUludChkYXRhW2ldLCAxNikpO1xuXHRcdHZhciBQID0gMDtcblx0XHR3aGlsZShUYXJnZXQuc2xpY2UoUCozLFAqMyszKT09XCIuLi9cInx8VGFyZ2V0LnNsaWNlKFAqMyxQKjMrMyk9PVwiLi5cXFxcXCIpICsrUDtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgUCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIFRhcmdldC5sZW5ndGggLSAzICogUCArIDEpO1xuXHRcdGZvcihpID0gMDsgaSA8IFRhcmdldC5sZW5ndGggLSAzICogUDsgKytpKSBvdXQud3JpdGVfc2hpZnQoMSwgVGFyZ2V0LmNoYXJDb2RlQXQoaSArIDMgKiBQKSAmIDB4RkYpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHhGRkZGKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHhERUFEKTtcblx0XHRmb3IoaSA9IDA7IGkgPCA2OyArK2kpIG91dC53cml0ZV9zaGlmdCg0LCAwKTtcblx0fVxuXHRyZXR1cm4gb3V0LnNsaWNlKDAsIG91dC5sKTtcbn1cblxuLyogMi41LjE3OCBMb25nUkdCQSAqL1xuZnVuY3Rpb24gcGFyc2VfTG9uZ1JHQkEoYmxvYi8qOjosIGxlbmd0aCovKSB7IHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCBnID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCBiID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCBhID0gYmxvYi5yZWFkX3NoaWZ0KDEpOyByZXR1cm4gW3IsZyxiLGFdOyB9XG5cbi8qIDIuNS4xNzcgTG9uZ1JHQiAqL1xuZnVuY3Rpb24gcGFyc2VfTG9uZ1JHQihibG9iLCBsZW5ndGgpIHsgdmFyIHggPSBwYXJzZV9Mb25nUkdCQShibG9iLCBsZW5ndGgpOyB4WzNdID0gMDsgcmV0dXJuIHg7IH1cblxuXG4vKiBbTVMtWExTXSAyLjUuMTkgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMU0NlbGwoYmxvYi8qOjosIGxlbmd0aCovKS8qOkNlbGwqLyB7XG5cdHZhciBydyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gMC1pbmRleGVkXG5cdHZhciBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpeGZlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gKHtyOnJ3LCBjOmNvbCwgaXhmZTppeGZlfS8qOmFueSovKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMU0NlbGwoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIGl4ZmUvKjo/bnVtYmVyKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIEMpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGl4ZmV8fDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjEzNCAqL1xuZnVuY3Rpb24gcGFyc2VfZnJ0SGVhZGVyKGJsb2IpIHtcblx0dmFyIHJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7IC8vIFRPRE86IHBhcnNlIHRoZXNlIGZsYWdzXG5cdGJsb2IubCArPSA4O1xuXHRyZXR1cm4ge3R5cGU6IHJ0LCBmbGFnczogZmxhZ3N9O1xufVxuXG5cblxuZnVuY3Rpb24gcGFyc2VfT3B0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cykgeyByZXR1cm4gbGVuZ3RoID09PSAwID8gXCJcIiA6IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgbGVuZ3RoLCBvcHRzKTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMzQ0ICovXG5mdW5jdGlvbiBwYXJzZV9YVEkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB3ID0gb3B0cy5iaWZmID4gOCA/IDQgOiAyO1xuXHR2YXIgaVN1cEJvb2sgPSBibG9iLnJlYWRfc2hpZnQodyksIGl0YWJGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCh3LCdpJyksIGl0YWJMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcsJ2knKTtcblx0cmV0dXJuIFtpU3VwQm9vaywgaXRhYkZpcnN0LCBpdGFiTGFzdF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMTggKi9cbmZ1bmN0aW9uIHBhcnNlX1JrUmVjKGJsb2IpIHtcblx0dmFyIGl4ZmUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBSSyA9IHBhcnNlX1JrTnVtYmVyKGJsb2IpO1xuXHRyZXR1cm4gW2l4ZmUsIFJLXTtcbn1cblxuLyogW01TLVhMU10gMi41LjEgKi9cbmZ1bmN0aW9uIHBhcnNlX0FkZGluVWRmKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gNDsgbGVuZ3RoIC09IDQ7XG5cdHZhciBsID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgdWRmTmFtZSA9IHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciBjYiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0bCAtPSBibG9iLmw7XG5cdGlmKGNiICE9PSBsKSB0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgQWRkaW5VZGY6IHBhZGRpbmcgPSBcIiArIGwgKyBcIiAhPSBcIiArIGNiKTtcblx0YmxvYi5sICs9IGNiO1xuXHRyZXR1cm4gdWRmTmFtZTtcbn1cblxuLyogW01TLVhMU10gMi41LjIwOSBUT0RPOiBDaGVjayBzaXplcyAqL1xuZnVuY3Rpb24gcGFyc2VfUmVmOFUoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciByd0ZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcndMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY29sRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2xMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4ge3M6e2M6Y29sRmlyc3QsIHI6cndGaXJzdH0sIGU6e2M6Y29sTGFzdCxyOnJ3TGFzdH19O1xufVxuZnVuY3Rpb24gd3JpdGVfUmVmOFUoci8qOlJhbmdlKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHIucy5yKTtcblx0by53cml0ZV9zaGlmdCgyLCByLmUucik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5zLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHIuZS5jKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMTEgKi9cbmZ1bmN0aW9uIHBhcnNlX1JlZlUoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciByd0ZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcndMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY29sRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBjb2xMYXN0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4ge3M6e2M6Y29sRmlyc3QsIHI6cndGaXJzdH0sIGU6e2M6Y29sTGFzdCxyOnJ3TGFzdH19O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjA3ICovXG52YXIgcGFyc2VfUmVmID0gcGFyc2VfUmVmVTtcblxuLyogW01TLVhMU10gMi41LjE0MyAqL1xuZnVuY3Rpb24gcGFyc2VfRnRDbW8oYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdGJsb2IubCArPSA0O1xuXHR2YXIgb3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwrPTEyO1xuXHRyZXR1cm4gW2lkLCBvdCwgZmxhZ3NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTQ5ICovXG5mdW5jdGlvbiBwYXJzZV9GdE50cyhibG9iKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0YmxvYi5sICs9IDQ7XG5cdGJsb2IubCArPSAxNjsgLy8gR1VJRCBUT0RPXG5cdG91dC5mU2hhcmVkTm90ZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDQ7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDIgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z0Q2YoYmxvYikge1xuXHR2YXIgb3V0ID0ge307XG5cdGJsb2IubCArPSA0O1xuXHRibG9iLmNmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTQwIC0gMi41LjE1NCBhbmQgZnJpZW5kcyAqL1xuZnVuY3Rpb24gcGFyc2VfRnRTa2lwKGJsb2IpIHsgYmxvYi5sICs9IDI7IGJsb2IubCArPSBibG9iLnJlYWRfc2hpZnQoMik7IH1cbnZhciBGdFRhYiA9IHtcblx0Lyo6OlsqLzB4MDAvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRFbmQgKi9cblx0Lyo6OlsqLzB4MDQvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRNYWNybyAqL1xuXHQvKjo6WyovMHgwNS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEJ1dHRvbiAqL1xuXHQvKjo6WyovMHgwNi8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEdtbyAqL1xuXHQvKjo6WyovMHgwNy8qOjpdKi86IHBhcnNlX0Z0Q2YsICAgICAgICAvKiBGdENmICovXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0UGlvR3JiaXQgKi9cblx0Lyo6OlsqLzB4MDkvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRQaWN0Rm1sYSAqL1xuXHQvKjo6WyovMHgwQS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdENibHMgKi9cblx0Lyo6OlsqLzB4MEIvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRSYm8gKi9cblx0Lyo6OlsqLzB4MEMvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRTYnMgKi9cblx0Lyo6OlsqLzB4MEQvKjo6XSovOiBwYXJzZV9GdE50cywgICAgICAgLyogRnROdHMgKi9cblx0Lyo6OlsqLzB4MEUvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRTYnNGbWxhICovXG5cdC8qOjpbKi8weDBGLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0R2JvRGF0YSAqL1xuXHQvKjo6WyovMHgxMC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEVkb0RhdGEgKi9cblx0Lyo6OlsqLzB4MTEvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRSYm9EYXRhICovXG5cdC8qOjpbKi8weDEyLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0Q2Jsc0RhdGEgKi9cblx0Lyo6OlsqLzB4MTMvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRMYnNEYXRhICovXG5cdC8qOjpbKi8weDE0Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0Q2Jsc0ZtbGEgKi9cblx0Lyo6OlsqLzB4MTUvKjo6XSovOiBwYXJzZV9GdENtb1xufTtcbmZ1bmN0aW9uIHBhcnNlX0Z0QXJyYXkoYmxvYiwgbGVuZ3RoLyo6Oiwgb3QqLykge1xuXHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgZnRzID0gW107XG5cdHdoaWxlKGJsb2IubCA8IHRndCkge1xuXHRcdHZhciBmdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRibG9iLmwtPTI7XG5cdFx0dHJ5IHtcblx0XHRcdGZ0cy5wdXNoKEZ0VGFiW2Z0XShibG9iLCB0Z3QgLSBibG9iLmwpKTtcblx0XHR9IGNhdGNoKGUpIHsgYmxvYi5sID0gdGd0OyByZXR1cm4gZnRzOyB9XG5cdH1cblx0aWYoYmxvYi5sICE9IHRndCkgYmxvYi5sID0gdGd0OyAvL3Rocm93IG5ldyBFcnJvcihcImJhZCBPYmplY3QgRnQtc2VxdWVuY2VcIik7XG5cdHJldHVybiBmdHM7XG59XG5cbi8qIC0tLSAyLjQgUmVjb3JkcyAtLS0gKi9cblxuLyogW01TLVhMU10gMi40LjIxICovXG5mdW5jdGlvbiBwYXJzZV9CT0YoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBvID0ge0JJRkZWZXI6MCwgZHQ6MH07XG5cdG8uQklGRlZlciA9IGJsb2IucmVhZF9zaGlmdCgyKTsgbGVuZ3RoIC09IDI7XG5cdGlmKGxlbmd0aCA+PSAyKSB7IG8uZHQgPSBibG9iLnJlYWRfc2hpZnQoMik7IGJsb2IubCAtPSAyOyB9XG5cdHN3aXRjaChvLkJJRkZWZXIpIHtcblx0XHRjYXNlIDB4MDYwMDogLyogQklGRjggKi9cblx0XHRjYXNlIDB4MDUwMDogLyogQklGRjUgKi9cblx0XHRjYXNlIDB4MDQwMDogLyogQklGRjQgKi9cblx0XHRjYXNlIDB4MDMwMDogLyogQklGRjMgKi9cblx0XHRjYXNlIDB4MDIwMDogLyogQklGRjIgKi9cblx0XHRjYXNlIDB4MDAwMjogY2FzZSAweDAwMDc6IC8qIEJJRkYyICovXG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OiBpZihsZW5ndGggPiA2KSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIEJJRkYgVmVyIFwiICsgby5CSUZGVmVyKTtcblx0fVxuXG5cdGJsb2IucmVhZF9zaGlmdChsZW5ndGgpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JPRih3Yi8qOldvcmtib29rKi8sIHQvKjpudW1iZXIqLywgbykge1xuXHR2YXIgaCA9IDB4MDYwMCwgdyA9IDE2O1xuXHRzd2l0Y2goby5ib29rVHlwZSkge1xuXHRcdGNhc2UgJ2JpZmY4JzogYnJlYWs7XG5cdFx0Y2FzZSAnYmlmZjUnOiBoID0gMHgwNTAwOyB3ID0gODsgYnJlYWs7XG5cdFx0Y2FzZSAnYmlmZjQnOiBoID0gMHgwMDA0OyB3ID0gNjsgYnJlYWs7XG5cdFx0Y2FzZSAnYmlmZjMnOiBoID0gMHgwMDAzOyB3ID0gNjsgYnJlYWs7XG5cdFx0Y2FzZSAnYmlmZjInOiBoID0gMHgwMDAyOyB3ID0gNDsgYnJlYWs7XG5cdFx0Y2FzZSAneGxhJzogYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgQklGRiB2ZXJzaW9uXCIpO1xuXHR9XG5cdHZhciBvdXQgPSBuZXdfYnVmKHcpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgaCk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCB0KTtcblx0aWYodyA+IDQpIG91dC53cml0ZV9zaGlmdCgyLCAweDcyNjIpO1xuXHRpZih3ID4gNikgb3V0LndyaXRlX3NoaWZ0KDIsIDB4MDdDRCk7XG5cdGlmKHcgPiA4KSB7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4QzAwOSk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDAwMSk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDcwNik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDAwMCk7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMTQ2ICovXG5mdW5jdGlvbiBwYXJzZV9JbnRlcmZhY2VIZHIoYmxvYiwgbGVuZ3RoKSB7XG5cdGlmKGxlbmd0aCA9PT0gMCkgcmV0dXJuIDB4MDRiMDtcblx0aWYoKGJsb2IucmVhZF9zaGlmdCgyKSkhPT0weDA0YjApey8qIGVtcHR5ICovfVxuXHRyZXR1cm4gMHgwNGIwO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4zNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX1dyaXRlQWNjZXNzKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmVuYykgeyBibG9iLmwgKz0gbGVuZ3RoOyByZXR1cm4gXCJcIjsgfVxuXHR2YXIgbCA9IGJsb2IubDtcblx0Ly8gVE9ETzogbWFrZSBzdXJlIFhMVW5pY29kZVN0cmluZyBkb2VzbnQgb3ZlcnJ1blxuXHR2YXIgVXNlck5hbWUgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIDAsIG9wdHMpO1xuXHRibG9iLnJlYWRfc2hpZnQobGVuZ3RoICsgbCAtIGJsb2IubCk7XG5cdHJldHVybiBVc2VyTmFtZTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1dyaXRlQWNjZXNzKHMvKjpzdHJpbmcqLywgb3B0cykge1xuXHR2YXIgYjggPSAhb3B0cyB8fCBvcHRzLmJpZmYgPT0gODtcblx0dmFyIG8gPSBuZXdfYnVmKGI4ID8gMTEyIDogNTQpO1xuXHRvLndyaXRlX3NoaWZ0KG9wdHMuYmlmZiA9PSA4ID8gMiA6IDEsIDcpO1xuXHRpZihiOCkgby53cml0ZV9zaGlmdCgxLCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAweDMzMzM2ODUzKTtcblx0by53cml0ZV9zaGlmdCg0LCAoMHgwMDUzNEE3NCB8IChiOCA/IDAgOiAweDIwMDAwMDAwKSkpO1xuXHR3aGlsZShvLmwgPCBvLmxlbmd0aCkgby53cml0ZV9zaGlmdCgxLCAoYjggPyAwIDogMzIpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4zNTEgKi9cbmZ1bmN0aW9uIHBhcnNlX1dzQm9vbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGZsYWdzID0gb3B0cyAmJiBvcHRzLmJpZmYgPT0gOCB8fCBsZW5ndGggPT0gMiA/IGJsb2IucmVhZF9zaGlmdCgyKSA6IChibG9iLmwgKz0gbGVuZ3RoLCAwKTtcblx0cmV0dXJuIHsgZkRpYWxvZzogZmxhZ3MgJiAweDEwLCBmQmVsb3c6IGZsYWdzICYgMHg0MCwgZlJpZ2h0OiBmbGFncyAmIDB4ODAgfTtcbn1cblxuLyogW01TLVhMU10gMi40LjI4ICovXG5mdW5jdGlvbiBwYXJzZV9Cb3VuZFNoZWV0OChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHBvcyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGhpZGRlbiA9IGJsb2IucmVhZF9zaGlmdCgxKSAmIDB4MDM7XG5cdHZhciBkdCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0c3dpdGNoKGR0KSB7XG5cdFx0Y2FzZSAwOiBkdCA9ICdXb3Jrc2hlZXQnOyBicmVhaztcblx0XHRjYXNlIDE6IGR0ID0gJ01hY3Jvc2hlZXQnOyBicmVhaztcblx0XHRjYXNlIDI6IGR0ID0gJ0NoYXJ0c2hlZXQnOyBicmVhaztcblx0XHRjYXNlIDY6IGR0ID0gJ1ZCQU1vZHVsZSc7IGJyZWFrO1xuXHR9XG5cdHZhciBuYW1lID0gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgMCwgb3B0cyk7XG5cdGlmKG5hbWUubGVuZ3RoID09PSAwKSBuYW1lID0gXCJTaGVldDFcIjtcblx0cmV0dXJuIHsgcG9zOnBvcywgaHM6aGlkZGVuLCBkdDpkdCwgbmFtZTpuYW1lIH07XG59XG5mdW5jdGlvbiB3cml0ZV9Cb3VuZFNoZWV0OChkYXRhLCBvcHRzKSB7XG5cdHZhciB3ID0gKCFvcHRzIHx8IG9wdHMuYmlmZiA+PSA4ID8gMiA6IDEpO1xuXHR2YXIgbyA9IG5ld19idWYoOCArIHcgKiBkYXRhLm5hbWUubGVuZ3RoKTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLnBvcyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZGF0YS5ocyB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBkYXRhLmR0KTtcblx0by53cml0ZV9zaGlmdCgxLCBkYXRhLm5hbWUubGVuZ3RoKTtcblx0aWYob3B0cy5iaWZmID49IDgpIG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQodyAqIGRhdGEubmFtZS5sZW5ndGgsIGRhdGEubmFtZSwgb3B0cy5iaWZmIDwgOCA/ICdzYmNzJyA6ICd1dGYxNmxlJyk7XG5cdHZhciBvdXQgPSBvLnNsaWNlKDAsIG8ubCk7XG5cdG91dC5sID0gby5sOyByZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjY1IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1NTVChibG9iLCBsZW5ndGgpLyo6U1NUKi8ge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgdWNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHN0cnMvKjpTU1QqLyA9IChbXS8qOmFueSovKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSB1Y250ICYmIGJsb2IubCA8IGVuZDsgKytpKSB7XG5cdFx0c3Rycy5wdXNoKHBhcnNlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyhibG9iKSk7XG5cdH1cblx0c3Rycy5Db3VudCA9IGNudDsgc3Rycy5VbmlxdWUgPSB1Y250O1xuXHRyZXR1cm4gc3Rycztcbn1cbmZ1bmN0aW9uIHdyaXRlX1NTVChzc3QsIG9wdHMpIHtcblx0dmFyIGhlYWRlciA9IG5ld19idWYoOCk7XG5cdGhlYWRlci53cml0ZV9zaGlmdCg0LCBzc3QuQ291bnQpO1xuXHRoZWFkZXIud3JpdGVfc2hpZnQoNCwgc3N0LlVuaXF1ZSk7XG5cdHZhciBzdHJzID0gW107XG5cdGZvcih2YXIgaiA9IDA7IGogPCBzc3QubGVuZ3RoOyArK2opIHN0cnNbal0gPSB3cml0ZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcoc3N0W2pdLCBvcHRzKTtcblx0dmFyIG8gPSBiY29uY2F0KFtoZWFkZXJdLmNvbmNhdChzdHJzKSk7XG5cdC8qOjooKi9vLyo6OiA6YW55KSovLnBhcnRzID0gW2hlYWRlci5sZW5ndGhdLmNvbmNhdChzdHJzLm1hcChmdW5jdGlvbihzdHIpIHsgcmV0dXJuIHN0ci5sZW5ndGg7IH0pKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMDcgKi9cbmZ1bmN0aW9uIHBhcnNlX0V4dFNTVChibG9iLCBsZW5ndGgpIHtcblx0dmFyIGV4dHNzdCA9IHt9O1xuXHRleHRzc3QuZHNzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IGxlbmd0aC0yO1xuXHRyZXR1cm4gZXh0c3N0O1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4yMjEgVE9ETzogY2hlY2sgQklGRjItNCAqL1xuZnVuY3Rpb24gcGFyc2VfUm93KGJsb2IpIHtcblx0dmFyIHogPSAoe30vKjphbnkqLyk7XG5cdHouciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0ei5jID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR6LmNudCA9IGJsb2IucmVhZF9zaGlmdCgyKSAtIHouYztcblx0dmFyIG1peVJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNDsgLy8gcmVzZXJ2ZWQoMiksIHVudXNlZCgyKVxuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7IC8vIHZhcmlvdXMgZmxhZ3Ncblx0YmxvYi5sICs9IDM7IC8vIHJlc2VydmVkKDgpLCBpeGZlKDEyKSwgZmxhZ3MoNClcblx0aWYoZmxhZ3MgJiAweDA3KSB6LmxldmVsID0gZmxhZ3MgJiAweDA3O1xuXHQvLyBjb2xsYXBzZWQ6IGZsYWdzICYgMHgxMFxuXHRpZihmbGFncyAmIDB4MjApIHouaGlkZGVuID0gdHJ1ZTtcblx0aWYoZmxhZ3MgJiAweDQwKSB6LmhwdCA9IG1peVJ3IC8gMjA7XG5cdHJldHVybiB6O1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xMjUgKi9cbmZ1bmN0aW9uIHBhcnNlX0ZvcmNlRnVsbENhbGN1bGF0aW9uKGJsb2IpIHtcblx0dmFyIGhlYWRlciA9IHBhcnNlX2ZydEhlYWRlcihibG9iKTtcblx0aWYoaGVhZGVyLnR5cGUgIT0gMHgwOEEzKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZ1dHVyZSBSZWNvcmQgXCIgKyBoZWFkZXIudHlwZSk7XG5cdHZhciBmdWxsY2FsYyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGZ1bGxjYWxjICE9PSAweDA7XG59XG5cblxuXG5cblxuLyogW01TLVhMU10gMi40LjIxNSBydCAqL1xuZnVuY3Rpb24gcGFyc2VfUmVjYWxjSWQoYmxvYikge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBibG9iLnJlYWRfc2hpZnQoNCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC44NyAqL1xuZnVuY3Rpb24gcGFyc2VfRGVmYXVsdFJvd0hlaWdodChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGYgPSAwO1xuXHRpZighKG9wdHMgJiYgb3B0cy5iaWZmID09IDIpKSB7XG5cdFx0ZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0fVxuXHR2YXIgbWl5UncgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKChvcHRzICYmIG9wdHMuYmlmZiA9PSAyKSkge1xuXHRcdGYgPSAxIC0gKG1peVJ3ID4+IDE1KTsgbWl5UncgJj0gMHg3ZmZmO1xuXHR9XG5cdHZhciBmbCA9IHtVbnN5bmNlZDpmJjEsRHlaZXJvOihmJjIpPj4xLEV4QXNjOihmJjQpPj4yLEV4RHNjOihmJjgpPj4zfTtcblx0cmV0dXJuIFtmbCwgbWl5UnddO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMzQ1IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1dpbmRvdzEoYmxvYikge1xuXHR2YXIgeFduID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCB5V24gPSBibG9iLnJlYWRfc2hpZnQoMiksIGR4V24gPSBibG9iLnJlYWRfc2hpZnQoMiksIGR5V24gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgaVRhYkN1ciA9IGJsb2IucmVhZF9zaGlmdCgyKSwgaVRhYkZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY3RhYlNlbCA9IGJsb2IucmVhZF9zaGlmdCgyKSwgd1RhYlJhdGlvID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4geyBQb3M6IFt4V24sIHlXbl0sIERpbTogW2R4V24sIGR5V25dLCBGbGFnczogZmxhZ3MsIEN1clRhYjogaVRhYkN1cixcblx0XHRGaXJzdFRhYjogaVRhYkZpcnN0LCBTZWxlY3RlZDogY3RhYlNlbCwgVGFiUmF0aW86IHdUYWJSYXRpbyB9O1xufVxuZnVuY3Rpb24gd3JpdGVfV2luZG93MSgvKjo6b3B0cyovKSB7XG5cdHZhciBvID0gbmV3X2J1ZigxOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHg3MjYwKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDQ0YzApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MzgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MDFmNCk7XG5cdHJldHVybiBvO1xufVxuLyogW01TLVhMU10gMi40LjM0NiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9XaW5kb3cyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8IDUpIHJldHVybiB7fTtcblx0dmFyIGYgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7IFJUTDogZiAmIDB4NDAgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1dpbmRvdzIodmlldykge1xuXHR2YXIgbyA9IG5ld19idWYoMTgpLCBmID0gMHg2YjY7XG5cdGlmKHZpZXcgJiYgdmlldy5SVEwpIGYgfD0gMHg0MDtcblx0by53cml0ZV9zaGlmdCgyLCBmKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCA2NCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTg5IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1BhbmUoLypibG9iLCBsZW5ndGgsIG9wdHMqLykge1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTIyIFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0ZvbnQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBvLyo6YW55Ki8gPSB7XG5cdFx0ZHlIZWlnaHQ6IGJsb2IucmVhZF9zaGlmdCgyKSxcblx0XHRmbDogYmxvYi5yZWFkX3NoaWZ0KDIpXG5cdH07XG5cdHN3aXRjaCgob3B0cyAmJiBvcHRzLmJpZmYpIHx8IDgpIHtcblx0XHRjYXNlIDI6IGJyZWFrO1xuXHRcdGNhc2UgMzogY2FzZSA0OiBibG9iLmwgKz0gMjsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogYmxvYi5sICs9IDEwOyBicmVhaztcblx0fVxuXHRvLm5hbWUgPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9Gb250KGRhdGEsIG9wdHMpIHtcblx0dmFyIG5hbWUgPSBkYXRhLm5hbWUgfHwgXCJBcmlhbFwiO1xuXHR2YXIgYjUgPSAob3B0cyAmJiAob3B0cy5iaWZmID09IDUpKSwgdyA9IChiNSA/ICgxNSArIG5hbWUubGVuZ3RoKSA6ICgxNiArIDIgKiBuYW1lLmxlbmd0aCkpO1xuXHR2YXIgbyA9IG5ld19idWYodyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgKGRhdGEuc3ogfHwgMTIpICogMjApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDQwMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgbmFtZS5sZW5ndGgpO1xuXHRpZighYjUpIG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoKGI1ID8gMSA6IDIpICogbmFtZS5sZW5ndGgsIG5hbWUsIChiNSA/IFwic2Jjc1wiIDogXCJ1dGYxNmxlXCIpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX0xhYmVsU3N0KGJsb2IpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IpO1xuXHRjZWxsLmlzc3QgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfTGFiZWxTc3QoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYvKjpudW1iZXIqLywgb3MvKjpudW1iZXIqLyAvKjo6LCBvcHRzKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDEwKTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgdik7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTQ4ICovXG5mdW5jdGlvbiBwYXJzZV9MYWJlbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmZ3Vlc3MgJiYgb3B0cy5iaWZmID09IDIpIG9wdHMuYmlmZiA9IDU7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0aWYob3B0cy5iaWZmID09IDIpIGJsb2IubCsrO1xuXHR2YXIgc3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nKGJsb2IsIHRhcmdldCAtIGJsb2IubCwgb3B0cyk7XG5cdGNlbGwudmFsID0gc3RyO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0xhYmVsKFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCB2Lyo6c3RyaW5nKi8sIG9zLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIGI4ID0gIW9wdHMgfHwgb3B0cy5iaWZmID09IDg7XG5cdHZhciBvID0gbmV3X2J1Zig2ICsgMiArICgrYjgpICsgKDEgKyBiOCkgKiB2Lmxlbmd0aCk7XG5cdHdyaXRlX1hMU0NlbGwoUiwgQywgb3MsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHYubGVuZ3RoKTtcblx0aWYoYjgpIG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoKDEgKyBiOCkgKiB2Lmxlbmd0aCwgdiwgYjggPyAndXRmMTZsZScgOiAnc2JjcycpO1xuXHRyZXR1cm4gbztcbn1cblxuXG4vKiBbTVMtWExTXSAyLjQuMTI2IE51bWJlciBGb3JtYXRzICovXG5mdW5jdGlvbiBwYXJzZV9Gb3JtYXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBudW1GbXRJZCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZtdHN0ciA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgMCwgb3B0cyk7XG5cdHJldHVybiBbbnVtRm10SWQsIGZtdHN0cl07XG59XG5mdW5jdGlvbiB3cml0ZV9Gb3JtYXQoaS8qOm51bWJlciovLCBmLyo6c3RyaW5nKi8sIG9wdHMsIG8pIHtcblx0dmFyIGI1ID0gKG9wdHMgJiYgKG9wdHMuYmlmZiA9PSA1KSk7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZihiNSA/ICgzICsgZi5sZW5ndGgpIDogKDUgKyAyICogZi5sZW5ndGgpKTtcblx0by53cml0ZV9zaGlmdCgyLCBpKTtcblx0by53cml0ZV9zaGlmdCgoYjUgPyAxIDogMiksIGYubGVuZ3RoKTtcblx0aWYoIWI1KSBvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KChiNSA/IDEgOiAyKSAqIGYubGVuZ3RoLCBmLCAoYjUgPyAnc2JjcycgOiAndXRmMTZsZScpKTtcblx0dmFyIG91dCA9IChvLmxlbmd0aCA+IG8ubCkgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xuXHRpZihvdXQubCA9PSBudWxsKSBvdXQubCA9IG91dC5sZW5ndGg7XG5cdHJldHVybiBvdXQ7XG59XG52YXIgcGFyc2VfQklGRjJGb3JtYXQgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyO1xuXG4vKiBbTVMtWExTXSAyLjQuOTAgKi9cbmZ1bmN0aW9uIHBhcnNlX0RpbWVuc2lvbnMoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciB3ID0gb3B0cy5iaWZmID09IDggfHwgIW9wdHMuYmlmZiA/IDQgOiAyO1xuXHR2YXIgciA9IGJsb2IucmVhZF9zaGlmdCh3KSwgUiA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMiksIEMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCA9IGVuZDtcblx0cmV0dXJuIHtzOiB7cjpyLCBjOmN9LCBlOiB7cjpSLCBjOkN9fTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0RpbWVuc2lvbnMocmFuZ2UsIG9wdHMpIHtcblx0dmFyIHcgPSBvcHRzLmJpZmYgPT0gOCB8fCAhb3B0cy5iaWZmID8gNCA6IDI7XG5cdHZhciBvID0gbmV3X2J1ZigyKncgKyA2KTtcblx0by53cml0ZV9zaGlmdCh3LCByYW5nZS5zLnIpO1xuXHRvLndyaXRlX3NoaWZ0KHcsIHJhbmdlLmUuciArIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHJhbmdlLnMuYyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcmFuZ2UuZS5jICsgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjIwICovXG5mdW5jdGlvbiBwYXJzZV9SSyhibG9iKSB7XG5cdHZhciBydyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcmtyZWMgPSBwYXJzZV9Sa1JlYyhibG9iKTtcblx0cmV0dXJuIHtyOnJ3LCBjOmNvbCwgaXhmZTpya3JlY1swXSwgcmtudW06cmtyZWNbMV19O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTc1ICovXG5mdW5jdGlvbiBwYXJzZV9NdWxSayhibG9iLCBsZW5ndGgpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCAtIDI7XG5cdHZhciBydyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcmtyZWNzID0gW107XG5cdHdoaWxlKGJsb2IubCA8IHRhcmdldCkgcmtyZWNzLnB1c2gocGFyc2VfUmtSZWMoYmxvYikpO1xuXHRpZihibG9iLmwgIT09IHRhcmdldCkgdGhyb3cgbmV3IEVycm9yKFwiTXVsUksgcmVhZCBlcnJvclwiKTtcblx0dmFyIGxhc3Rjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKHJrcmVjcy5sZW5ndGggIT0gbGFzdGNvbCAtIGNvbCArIDEpIHRocm93IG5ldyBFcnJvcihcIk11bFJLIGxlbmd0aCBtaXNtYXRjaFwiKTtcblx0cmV0dXJuIHtyOnJ3LCBjOmNvbCwgQzpsYXN0Y29sLCBya3JlYzpya3JlY3N9O1xufVxuLyogW01TLVhMU10gMi40LjE3NCAqL1xuZnVuY3Rpb24gcGFyc2VfTXVsQmxhbmsoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGggLSAyO1xuXHR2YXIgcncgPSBibG9iLnJlYWRfc2hpZnQoMiksIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGl4ZmVzID0gW107XG5cdHdoaWxlKGJsb2IubCA8IHRhcmdldCkgaXhmZXMucHVzaChibG9iLnJlYWRfc2hpZnQoMikpO1xuXHRpZihibG9iLmwgIT09IHRhcmdldCkgdGhyb3cgbmV3IEVycm9yKFwiTXVsQmxhbmsgcmVhZCBlcnJvclwiKTtcblx0dmFyIGxhc3Rjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGlmKGl4ZmVzLmxlbmd0aCAhPSBsYXN0Y29sIC0gY29sICsgMSkgdGhyb3cgbmV3IEVycm9yKFwiTXVsQmxhbmsgbGVuZ3RoIG1pc21hdGNoXCIpO1xuXHRyZXR1cm4ge3I6cncsIGM6Y29sLCBDOmxhc3Rjb2wsIGl4ZmU6aXhmZXN9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjAgMi41LjI0OSBUT0RPOiBpbnRlcnByZXQgdmFsdWVzIGhlcmUgKi9cbmZ1bmN0aW9uIHBhcnNlX0NlbGxTdHlsZVhGKGJsb2IsIGxlbmd0aCwgc3R5bGUsIG9wdHMpIHtcblx0dmFyIG8gPSB7fTtcblx0dmFyIGEgPSBibG9iLnJlYWRfc2hpZnQoNCksIGIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDQpLCBkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLnBhdHRlcm5UeXBlID0gWExTRmlsbFBhdHRlcm5bYyA+PiAyNl07XG5cblx0aWYoIW9wdHMuY2VsbFN0eWxlcykgcmV0dXJuIG87XG5cdG8uYWxjID0gYSAmIDB4MDc7XG5cdG8uZldyYXAgPSAoYSA+PiAzKSAmIDB4MDE7XG5cdG8uYWxjViA9IChhID4+IDQpICYgMHgwNztcblx0by5mSnVzdExhc3QgPSAoYSA+PiA3KSAmIDB4MDE7XG5cdG8udHJvdCA9IChhID4+IDgpICYgMHhGRjtcblx0by5jSW5kZW50ID0gKGEgPj4gMTYpICYgMHgwRjtcblx0by5mU2hyaW5rVG9GaXQgPSAoYSA+PiAyMCkgJiAweDAxO1xuXHRvLmlSZWFkT3JkZXIgPSAoYSA+PiAyMikgJiAweDAyO1xuXHRvLmZBdHJOdW0gPSAoYSA+PiAyNikgJiAweDAxO1xuXHRvLmZBdHJGbnQgPSAoYSA+PiAyNykgJiAweDAxO1xuXHRvLmZBdHJBbGMgPSAoYSA+PiAyOCkgJiAweDAxO1xuXHRvLmZBdHJCZHIgPSAoYSA+PiAyOSkgJiAweDAxO1xuXHRvLmZBdHJQYXQgPSAoYSA+PiAzMCkgJiAweDAxO1xuXHRvLmZBdHJQcm90ID0gKGEgPj4gMzEpICYgMHgwMTtcblxuXHRvLmRnTGVmdCA9IGIgJiAweDBGO1xuXHRvLmRnUmlnaHQgPSAoYiA+PiA0KSAmIDB4MEY7XG5cdG8uZGdUb3AgPSAoYiA+PiA4KSAmIDB4MEY7XG5cdG8uZGdCb3R0b20gPSAoYiA+PiAxMikgJiAweDBGO1xuXHRvLmljdkxlZnQgPSAoYiA+PiAxNikgJiAweDdGO1xuXHRvLmljdlJpZ2h0ID0gKGIgPj4gMjMpICYgMHg3Rjtcblx0by5ncmJpdERpYWcgPSAoYiA+PiAzMCkgJiAweDAzO1xuXG5cdG8uaWN2VG9wID0gYyAmIDB4N0Y7XG5cdG8uaWN2Qm90dG9tID0gKGMgPj4gNykgJiAweDdGO1xuXHRvLmljdkRpYWcgPSAoYyA+PiAxNCkgJiAweDdGO1xuXHRvLmRnRGlhZyA9IChjID4+IDIxKSAmIDB4MEY7XG5cblx0by5pY3ZGb3JlID0gZCAmIDB4N0Y7XG5cdG8uaWN2QmFjayA9IChkID4+IDcpICYgMHg3Rjtcblx0by5mc3hCdXR0b24gPSAoZCA+PiAxNCkgJiAweDAxO1xuXHRyZXR1cm4gbztcbn1cbi8vZnVuY3Rpb24gcGFyc2VfQ2VsbFhGKGJsb2IsIGxlbmd0aCwgb3B0cykge3JldHVybiBwYXJzZV9DZWxsU3R5bGVYRihibG9iLGxlbmd0aCwwLCBvcHRzKTt9XG4vL2Z1bmN0aW9uIHBhcnNlX1N0eWxlWEYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7cmV0dXJuIHBhcnNlX0NlbGxTdHlsZVhGKGJsb2IsbGVuZ3RoLDEsIG9wdHMpO31cblxuLyogW01TLVhMU10gMi40LjM1MyBUT0RPOiBhY3R1YWxseSBkbyB0aGlzIHJpZ2h0ICovXG5mdW5jdGlvbiBwYXJzZV9YRihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIG8gPSB7fTtcblx0by5pZm50ID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvLm51bUZtdElkID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvLmZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLmZTdHlsZSA9IChvLmZsYWdzID4+IDIpICYgMHgwMTtcblx0bGVuZ3RoIC09IDY7XG5cdG8uZGF0YSA9IHBhcnNlX0NlbGxTdHlsZVhGKGJsb2IsIGxlbmd0aCwgby5mU3R5bGUsIG9wdHMpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX1hGKGRhdGEsIGl4ZmVQLCBvcHRzLCBvKSB7XG5cdHZhciBiNSA9IChvcHRzICYmIChvcHRzLmJpZmYgPT0gNSkpO1xuXHRpZighbykgbyA9IG5ld19idWYoYjUgPyAxNiA6IDIwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0aWYoZGF0YS5zdHlsZSkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgKGRhdGEubnVtRm10SWR8fDApKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4RkZGNCk7XG5cdH0gZWxzZSB7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAoZGF0YS5udW1GbXRJZHx8MCkpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgKGl4ZmVQPDw0KSk7XG5cdH1cblx0dmFyIGYgPSAwO1xuXHRpZihkYXRhLm51bUZtdElkID4gMCAmJiBiNSkgZiB8PSAweDA0MDA7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdGlmKCFiNSkgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMzQgKi9cbmZ1bmN0aW9uIHBhcnNlX0d1dHMoYmxvYikge1xuXHRibG9iLmwgKz0gNDtcblx0dmFyIG91dCA9IFtibG9iLnJlYWRfc2hpZnQoMiksIGJsb2IucmVhZF9zaGlmdCgyKV07XG5cdGlmKG91dFswXSAhPT0gMCkgb3V0WzBdLS07XG5cdGlmKG91dFsxXSAhPT0gMCkgb3V0WzFdLS07XG5cdGlmKG91dFswXSA+IDcgfHwgb3V0WzFdID4gNykgdGhyb3cgbmV3IEVycm9yKFwiQmFkIEd1dHRlcnM6IFwiICsgb3V0LmpvaW4oXCJ8XCIpKTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0d1dHMoZ3V0cy8qOkFycmF5PG51bWJlcj4qLykge1xuXHR2YXIgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZ3V0c1swXSA/IGd1dHNbMF0gKyAxIDogMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZ3V0c1sxXSA/IGd1dHNbMV0gKyAxIDogMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjQgKi9cbmZ1bmN0aW9uIHBhcnNlX0Jvb2xFcnIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0aWYob3B0cy5iaWZmID09IDIgfHwgbGVuZ3RoID09IDkpICsrYmxvYi5sO1xuXHR2YXIgdmFsID0gcGFyc2VfQmVzKGJsb2IsIDIpO1xuXHRjZWxsLnZhbCA9IHZhbDtcblx0Y2VsbC50ID0gKHZhbCA9PT0gdHJ1ZSB8fCB2YWwgPT09IGZhbHNlKSA/ICdiJyA6ICdlJztcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9Cb29sRXJyKFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCB2LCBvcy8qOm51bWJlciovLCBvcHRzLCB0Lyo6c3RyaW5nKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDgpO1xuXHR3cml0ZV9YTFNDZWxsKFIsIEMsIG9zLCBvKTtcblx0d3JpdGVfQmVzKHYsIHQsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE4MCBOdW1iZXIgKi9cbmZ1bmN0aW9uIHBhcnNlX051bWJlcihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmZ3Vlc3MgJiYgb3B0cy5iaWZmID09IDIpIG9wdHMuYmlmZiA9IDU7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0dmFyIHhudW0gPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRjZWxsLnZhbCA9IHhudW07XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfTnVtYmVyKFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCB2LCBvcy8qOjogOm51bWJlciwgb3B0cyovKSB7XG5cdHZhciBvID0gbmV3X2J1ZigxNCk7XG5cdHdyaXRlX1hMU0NlbGwoUiwgQywgb3MsIG8pO1xuXHR3cml0ZV9YbnVtKHYsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxudmFyIHBhcnNlX1hMSGVhZGVyRm9vdGVyID0gcGFyc2VfT3B0WExVbmljb2RlU3RyaW5nOyAvLyBUT0RPOiBwYXJzZSAyLjQuMTM2XG5cbi8qIFtNUy1YTFNdIDIuNC4yNzEgKi9cbmZ1bmN0aW9uIHBhcnNlX1N1cEJvb2soYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjdGFiID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvcHRzLnNiY2NoID0gY2NoO1xuXHRpZihjY2ggPT0gMHgwNDAxIHx8IGNjaCA9PSAweDNBMDEpIHJldHVybiBbY2NoLCBjdGFiXTtcblx0aWYoY2NoIDwgMHgwMSB8fCBjY2ggPjB4ZmYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgU3VwQm9vayB0eXBlOiBcIitjY2gpO1xuXHR2YXIgdmlydFBhdGggPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2gpO1xuXHQvKiBUT0RPOiAyLjUuMjc3IFZpcnR1YWwgUGF0aCAqL1xuXHR2YXIgcmdzdCA9IFtdO1xuXHR3aGlsZShlbmQgPiBibG9iLmwpIHJnc3QucHVzaChwYXJzZV9YTFVuaWNvZGVTdHJpbmcoYmxvYikpO1xuXHRyZXR1cm4gW2NjaCwgY3RhYiwgdmlydFBhdGgsIHJnc3RdO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTA1IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0V4dGVybk5hbWUoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGJvZHk7XG5cdHZhciBvID0gKHtcblx0XHRmQnVpbHRJbjogZmxhZ3MgJiAweDAxLFxuXHRcdGZXYW50QWR2aXNlOiAoZmxhZ3MgPj4+IDEpICYgMHgwMSxcblx0XHRmV2FudFBpY3Q6IChmbGFncyA+Pj4gMikgJiAweDAxLFxuXHRcdGZPbGU6IChmbGFncyA+Pj4gMykgJiAweDAxLFxuXHRcdGZPbGVMaW5rOiAoZmxhZ3MgPj4+IDQpICYgMHgwMSxcblx0XHRjZjogKGZsYWdzID4+PiA1KSAmIDB4M0ZGLFxuXHRcdGZJY29uOiBmbGFncyA+Pj4gMTUgJiAweDAxXG5cdH0vKjphbnkqLyk7XG5cdGlmKG9wdHMuc2JjY2ggPT09IDB4M0EwMSkgYm9keSA9IHBhcnNlX0FkZGluVWRmKGJsb2IsIGxlbmd0aC0yLCBvcHRzKTtcblx0Ly9lbHNlIHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIFN1cEJvb2sgY2NoOiBcIiArIG9wdHMuc2JjY2gpO1xuXHRvLmJvZHkgPSBib2R5IHx8IGJsb2IucmVhZF9zaGlmdChsZW5ndGgtMik7XG5cdGlmKHR5cGVvZiBib2R5ID09PSBcInN0cmluZ1wiKSBvLk5hbWUgPSBib2R5O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE1MCBUT0RPICovXG52YXIgWExTTGJsQnVpbHRJbiA9IFtcblx0XCJfeGxubS5Db25zb2xpZGF0ZV9BcmVhXCIsXG5cdFwiX3hsbm0uQXV0b19PcGVuXCIsXG5cdFwiX3hsbm0uQXV0b19DbG9zZVwiLFxuXHRcIl94bG5tLkV4dHJhY3RcIixcblx0XCJfeGxubS5EYXRhYmFzZVwiLFxuXHRcIl94bG5tLkNyaXRlcmlhXCIsXG5cdFwiX3hsbm0uUHJpbnRfQXJlYVwiLFxuXHRcIl94bG5tLlByaW50X1RpdGxlc1wiLFxuXHRcIl94bG5tLlJlY29yZGVyXCIsXG5cdFwiX3hsbm0uRGF0YV9Gb3JtXCIsXG5cdFwiX3hsbm0uQXV0b19BY3RpdmF0ZVwiLFxuXHRcIl94bG5tLkF1dG9fRGVhY3RpdmF0ZVwiLFxuXHRcIl94bG5tLlNoZWV0X1RpdGxlXCIsXG5cdFwiX3hsbm0uX0ZpbHRlckRhdGFiYXNlXCJcbl07XG5mdW5jdGlvbiBwYXJzZV9MYmwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNoS2V5ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHZhciBpdGFiID0gMDtcblx0aWYoIW9wdHMgfHwgb3B0cy5iaWZmID49IDUpIHtcblx0XHRpZihvcHRzLmJpZmYgIT0gNSkgYmxvYi5sICs9IDI7XG5cdFx0aXRhYiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihvcHRzLmJpZmYgPT0gNSkgYmxvYi5sICs9IDI7XG5cdFx0YmxvYi5sICs9IDQ7XG5cdH1cblx0dmFyIG5hbWUgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBjY2gsIG9wdHMpO1xuXHRpZihmbGFncyAmIDB4MjApIG5hbWUgPSBYTFNMYmxCdWlsdEluW25hbWUuY2hhckNvZGVBdCgwKV07XG5cdHZhciBucGZsZW4gPSB0YXJnZXQgLSBibG9iLmw7IGlmKG9wdHMgJiYgb3B0cy5iaWZmID09IDIpIC0tbnBmbGVuO1xuXHQvKmpzaGludCAtVzAxOCAqL1xuXHR2YXIgcmdjZSA9ICh0YXJnZXQgPT0gYmxvYi5sIHx8IGNjZSA9PT0gMCB8fCAhKG5wZmxlbiA+IDApKSA/IFtdIDogcGFyc2VfTmFtZVBhcnNlZEZvcm11bGEoYmxvYiwgbnBmbGVuLCBvcHRzLCBjY2UpO1xuXHQvKmpzaGludCArVzAxOCAqL1xuXHRyZXR1cm4ge1xuXHRcdGNoS2V5OiBjaEtleSxcblx0XHROYW1lOiBuYW1lLFxuXHRcdGl0YWI6IGl0YWIsXG5cdFx0cmdjZTogcmdjZVxuXHR9O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTA2IFRPRE86IHZlcmlmeSBmaWxlbmFtZSBlbmNvZGluZyAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0ZXJuU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHJldHVybiBwYXJzZV9CSUZGNUV4dGVyblNoZWV0KGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciBvID0gW10sIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCwgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMuYmlmZiA+IDggPyA0IDogMik7XG5cdHdoaWxlKGxlbi0tICE9PSAwKSBvLnB1c2gocGFyc2VfWFRJKGJsb2IsIG9wdHMuYmlmZiA+IDggPyAxMiA6IDYsIG9wdHMpKTtcblx0XHQvLyBbaVN1cEJvb2ssIGl0YWJGaXJzdCwgaXRhYkxhc3RdO1xuXHRpZihibG9iLmwgIT0gdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgRXh0ZXJuU2hlZXQ6IFwiICsgYmxvYi5sICsgXCIgIT0gXCIgKyB0YXJnZXQpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JJRkY1RXh0ZXJuU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKGJsb2JbYmxvYi5sICsgMV0gPT0gMHgwMykgYmxvYltibG9iLmxdKys7XG5cdHZhciBvID0gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0cmV0dXJuIG8uY2hhckNvZGVBdCgwKSA9PSAweDAzID8gby5zbGljZSgxKSA6IG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNzYgVE9ETzogY2hlY2sgb2xkZXIgYmlmZiAqL1xuZnVuY3Rpb24gcGFyc2VfTmFtZUNtdChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgeyBibG9iLmwgKz0gbGVuZ3RoOyByZXR1cm47IH1cblx0dmFyIGNjaE5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjY2hDb21tZW50ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbmFtZSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaE5hbWUsIG9wdHMpO1xuXHR2YXIgY29tbWVudCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaENvbW1lbnQsIG9wdHMpO1xuXHRyZXR1cm4gW25hbWUsIGNvbW1lbnRdO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjYwICovXG5mdW5jdGlvbiBwYXJzZV9TaHJGbWxhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcmVmID0gcGFyc2VfUmVmVShibG9iLCA2KTtcblx0YmxvYi5sKys7XG5cdHZhciBjVXNlID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRsZW5ndGggLT0gODtcblx0cmV0dXJuIFtwYXJzZV9TaGFyZWRQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cyksIGNVc2UsIHJlZl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC40IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0FycmF5KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcmVmID0gcGFyc2VfUmVmKGJsb2IsIDYpO1xuXHQvKiBUT0RPOiBmQWx3YXlzQ2FsYyAqL1xuXHRzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSAyOiBibG9iLmwgKys7IGxlbmd0aCAtPSA3OyBicmVhaztcblx0XHRjYXNlIDM6IGNhc2UgNDogYmxvYi5sICs9IDI7IGxlbmd0aCAtPSA4OyBicmVhaztcblx0XHRkZWZhdWx0OiBibG9iLmwgKz0gNjsgbGVuZ3RoIC09IDEyO1xuXHR9XG5cdHJldHVybiBbcmVmLCBwYXJzZV9BcnJheVBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzLCByZWYpXTtcbn1cblxuLyogW01TLVhMU10gMi40LjE3MyAqL1xuZnVuY3Rpb24gcGFyc2VfTVRSU2V0dGluZ3MoYmxvYikge1xuXHR2YXIgZk1UUkVuYWJsZWQgPSBibG9iLnJlYWRfc2hpZnQoNCkgIT09IDB4MDA7XG5cdHZhciBmVXNlclNldFRocmVhZENvdW50ID0gYmxvYi5yZWFkX3NoaWZ0KDQpICE9PSAweDAwO1xuXHR2YXIgY1VzZXJUaHJlYWRDb3VudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFtmTVRSRW5hYmxlZCwgZlVzZXJTZXRUaHJlYWRDb3VudCwgY1VzZXJUaHJlYWRDb3VudF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xODYgVE9ETzogQklGRjUgKi9cbmZ1bmN0aW9uIHBhcnNlX05vdGVTaChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuO1xuXHR2YXIgcm93ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgaWRPYmogPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBzdEF1dGhvciA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgMCwgb3B0cyk7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFt7cjpyb3csYzpjb2x9LCBzdEF1dGhvciwgaWRPYmosIGZsYWdzXTtcbn1cblxuLyogW01TLVhMU10gMi40LjE3OSAqL1xuZnVuY3Rpb24gcGFyc2VfTm90ZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0LyogVE9ETzogU3VwcG9ydCByZXZpc2lvbnMgKi9cblx0cmV0dXJuIHBhcnNlX05vdGVTaChibG9iLCBsZW5ndGgsIG9wdHMpO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTY4ICovXG5mdW5jdGlvbiBwYXJzZV9NZXJnZUNlbGxzKGJsb2IsIGxlbmd0aCkvKjpBcnJheTxSYW5nZT4qLyB7XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHR2YXIgY21jcyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0d2hpbGUgKGNtY3MtLSkgbWVyZ2VzLnB1c2gocGFyc2VfUmVmOFUoYmxvYixsZW5ndGgpKTtcblx0cmV0dXJuIG1lcmdlcztcbn1cbmZ1bmN0aW9uIHdyaXRlX01lcmdlQ2VsbHMobWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDIgKyBtZXJnZXMubGVuZ3RoICogOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgbWVyZ2VzLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBtZXJnZXMubGVuZ3RoOyArK2kpIHdyaXRlX1JlZjhVKG1lcmdlc1tpXSwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTgxIFRPRE86IHBhcnNlIGFsbCB0aGUgdGhpbmdzISAqL1xuZnVuY3Rpb24gcGFyc2VfT2JqKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzICYmIG9wdHMuYmlmZiA8IDgpIHJldHVybiBwYXJzZV9CSUZGNU9iaihibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgY21vID0gcGFyc2VfRnRDbW8oYmxvYiwgMjIpOyAvLyBpZCwgb3QsIGZsYWdzXG5cdHZhciBmdHMgPSBwYXJzZV9GdEFycmF5KGJsb2IsIGxlbmd0aC0yMiwgY21vWzFdKTtcblx0cmV0dXJuIHsgY21vOiBjbW8sIGZ0OmZ0cyB9O1xufVxuLyogZnJvbSBvbGRlciBzcGVjICovXG52YXIgcGFyc2VfQklGRjVPVCA9IHtcbjB4MDg6IGZ1bmN0aW9uKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRibG9iLmwgKz0gMTA7IC8vIHRvZG9cblx0dmFyIGNmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNDtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGNiUGljdEZtbGEgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZ3JiaXQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0O1xuXHR2YXIgY2NoTmFtZSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0YmxvYi5sICs9IGNjaE5hbWU7IC8vIFRPRE86IHN0TmFtZVxuXHRibG9iLmwgPSB0Z3Q7IC8vIFRPRE86IGZtbGFcblx0cmV0dXJuIHsgZm10OmNmIH07XG59XG59O1xuXG5mdW5jdGlvbiBwYXJzZV9CSUZGNU9iaihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IDQ7IC8vdmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIG90ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaWQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBncmJpdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGNvbEwgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeEwgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciByd1QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeVQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBjb2xSID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZHhSID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgcndCID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZHlCID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY2JNYWNybyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDY7XG5cdGxlbmd0aCAtPSAzNjtcblx0dmFyIGZ0cyA9IFtdO1xuXHRmdHMucHVzaCgocGFyc2VfQklGRjVPVFtvdF18fHBhcnNlbm9vcCkoYmxvYiwgbGVuZ3RoLCBvcHRzKSk7XG5cdHJldHVybiB7IGNtbzogW2lkLCBvdCwgZ3JiaXRdLCBmdDpmdHMgfTtcbn1cblxuLyogW01TLVhMU10gMi40LjMyOSBUT0RPOiBwYXJzZSBwcm9wZXJseSAqL1xuZnVuY3Rpb24gcGFyc2VfVHhPKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcyA9IGJsb2IubDtcblx0dmFyIHRleHRzID0gXCJcIjtcbnRyeSB7XG5cdGJsb2IubCArPSA0O1xuXHR2YXIgb3QgPSAob3B0cy5sYXN0b2JqfHx7Y21vOlswLDBdfSkuY21vWzFdO1xuXHR2YXIgY29udHJvbEluZm87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0aWYoWzAsNSw3LDExLDEyLDE0XS5pbmRleE9mKG90KSA9PSAtMSkgYmxvYi5sICs9IDY7XG5cdGVsc2UgY29udHJvbEluZm8gPSBwYXJzZV9Db250cm9sSW5mbyhibG9iLCA2LCBvcHRzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXHR2YXIgY2NoVGV4dCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0Lyp2YXIgY2JSdW5zID0gKi9ibG9iLnJlYWRfc2hpZnQoMik7XG5cdC8qdmFyIGlmbnRFbXB0eSA9ICovcGFyc2V1aW50MTYoYmxvYiwgMik7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSBsZW47XG5cdC8vdmFyIGZtbGEgPSBwYXJzZV9PYmpGbWxhKGJsb2IsIHMgKyBsZW5ndGggLSBibG9iLmwpO1xuXG5cdGZvcih2YXIgaSA9IDE7IGkgPCBibG9iLmxlbnMubGVuZ3RoLTE7ICsraSkge1xuXHRcdGlmKGJsb2IubC1zICE9IGJsb2IubGVuc1tpXSkgdGhyb3cgbmV3IEVycm9yKFwiVHhPOiBiYWQgY29udGludWUgcmVjb3JkXCIpO1xuXHRcdHZhciBoZHIgPSBibG9iW2Jsb2IubF07XG5cdFx0dmFyIHQgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaChibG9iLCBibG9iLmxlbnNbaSsxXS1ibG9iLmxlbnNbaV0tMSk7XG5cdFx0dGV4dHMgKz0gdDtcblx0XHRpZih0ZXh0cy5sZW5ndGggPj0gKGhkciA/IGNjaFRleHQgOiAyKmNjaFRleHQpKSBicmVhaztcblx0fVxuXHRpZih0ZXh0cy5sZW5ndGggIT09IGNjaFRleHQgJiYgdGV4dHMubGVuZ3RoICE9PSBjY2hUZXh0KjIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJjY2hUZXh0OiBcIiArIGNjaFRleHQgKyBcIiAhPSBcIiArIHRleHRzLmxlbmd0aCk7XG5cdH1cblxuXHRibG9iLmwgPSBzICsgbGVuZ3RoO1xuXHQvKiBbTVMtWExTXSAyLjUuMjcyIFR4T1J1bnMgKi9cbi8vXHR2YXIgcmdUeG9SdW5zID0gW107XG4vL1x0Zm9yKHZhciBqID0gMDsgaiAhPSBjYlJ1bnMvOC0xOyArK2opIGJsb2IubCArPSA4O1xuLy9cdHZhciBjY2hUZXh0MiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcbi8vXHRpZihjY2hUZXh0MiAhPT0gY2NoVGV4dCkgdGhyb3cgbmV3IEVycm9yKFwiVHhPTGFzdFJ1biBtaXNtYXRjaDogXCIgKyBjY2hUZXh0MiArIFwiIFwiICsgY2NoVGV4dCk7XG4vL1x0YmxvYi5sICs9IDY7XG4vL1x0aWYocyArIGxlbmd0aCAhPSBibG9iLmwpIHRocm93IG5ldyBFcnJvcihcIlR4TyBcIiArIChzICsgbGVuZ3RoKSArIFwiLCBhdCBcIiArIGJsb2IubCk7XG5cdHJldHVybiB7IHQ6IHRleHRzIH07XG59IGNhdGNoKGUpIHsgYmxvYi5sID0gcyArIGxlbmd0aDsgcmV0dXJuIHsgdDogdGV4dHMgfTsgfVxufVxuXG4vKiBbTVMtWExTXSAyLjQuMTQwICovXG5mdW5jdGlvbiBwYXJzZV9ITGluayhibG9iLCBsZW5ndGgpIHtcblx0dmFyIHJlZiA9IHBhcnNlX1JlZjhVKGJsb2IsIDgpO1xuXHRibG9iLmwgKz0gMTY7IC8qIENMU0lEICovXG5cdHZhciBobGluayA9IHBhcnNlX0h5cGVybGluayhibG9iLCBsZW5ndGgtMjQpO1xuXHRyZXR1cm4gW3JlZiwgaGxpbmtdO1xufVxuZnVuY3Rpb24gd3JpdGVfSExpbmsoaGwpIHtcblx0dmFyIE8gPSBuZXdfYnVmKDI0KTtcblx0dmFyIHJlZiA9IGRlY29kZV9jZWxsKGhsWzBdKTtcblx0Ty53cml0ZV9zaGlmdCgyLCByZWYucik7IE8ud3JpdGVfc2hpZnQoMiwgcmVmLnIpO1xuXHRPLndyaXRlX3NoaWZ0KDIsIHJlZi5jKTsgTy53cml0ZV9zaGlmdCgyLCByZWYuYyk7XG5cdHZhciBjbHNpZCA9IFwiZDAgYzkgZWEgNzkgZjkgYmEgY2UgMTEgOGMgODIgMDAgYWEgMDAgNGIgYTkgMGJcIi5zcGxpdChcIiBcIik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBPLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KGNsc2lkW2ldLCAxNikpO1xuXHRyZXR1cm4gYmNvbmNhdChbTywgd3JpdGVfSHlwZXJsaW5rKGhsWzFdKV0pO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xNDEgKi9cbmZ1bmN0aW9uIHBhcnNlX0hMaW5rVG9vbHRpcChibG9iLCBsZW5ndGgpIHtcblx0YmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgcmVmID0gcGFyc2VfUmVmOFUoYmxvYiwgOCk7XG5cdHZhciB3elRvb2x0aXAgPSBibG9iLnJlYWRfc2hpZnQoKGxlbmd0aC0xMCkvMiwgJ2RiY3MtY29udCcpO1xuXHR3elRvb2x0aXAgPSB3elRvb2x0aXAucmVwbGFjZShjaHIwLFwiXCIpO1xuXHRyZXR1cm4gW3JlZiwgd3pUb29sdGlwXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0hMaW5rVG9vbHRpcChobCkge1xuXHR2YXIgVFQgPSBobFsxXS5Ub29sdGlwO1xuXHR2YXIgTyA9IG5ld19idWYoMTAgKyAyICogKFRULmxlbmd0aCArIDEpKTtcblx0Ty53cml0ZV9zaGlmdCgyLCAweDA4MDApO1xuXHR2YXIgcmVmID0gZGVjb2RlX2NlbGwoaGxbMF0pO1xuXHRPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTsgTy53cml0ZV9zaGlmdCgyLCByZWYucik7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5jKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IFRULmxlbmd0aDsgKytpKSBPLndyaXRlX3NoaWZ0KDIsIFRULmNoYXJDb2RlQXQoaSkpO1xuXHRPLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gTztcbn1cblxuLyogW01TLVhMU10gMi40LjYzICovXG5mdW5jdGlvbiBwYXJzZV9Db3VudHJ5KGJsb2IpLyo6W3N0cmluZ3xudW1iZXIsIHN0cmluZ3xudW1iZXJdKi8ge1xuXHR2YXIgbyA9IFswLDBdLCBkO1xuXHRkID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvWzBdID0gQ291bnRyeUVudW1bZF0gfHwgZDtcblx0ZCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1sxXSA9IENvdW50cnlFbnVtW2RdIHx8IGQ7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQ291bnRyeShvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCgyLCAweDAxKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDAxKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC41MCBDbHJ0Q2xpZW50ICovXG5mdW5jdGlvbiBwYXJzZV9DbHJ0Q2xpZW50KGJsb2IpIHtcblx0dmFyIGNjdiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIG8gPSBbXTtcblx0d2hpbGUoY2N2LS0+MCkgby5wdXNoKHBhcnNlX0xvbmdSR0IoYmxvYiwgOCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE4OCAqL1xuZnVuY3Rpb24gcGFyc2VfUGFsZXR0ZShibG9iKSB7XG5cdHZhciBjY3YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBvID0gW107XG5cdHdoaWxlKGNjdi0tPjApIG8ucHVzaChwYXJzZV9Mb25nUkdCKGJsb2IsIDgpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4zNTQgKi9cbmZ1bmN0aW9uIHBhcnNlX1hGQ1JDKGJsb2IpIHtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBvID0ge2N4ZnM6MCwgY3JjOjB9O1xuXHRvLmN4ZnMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8uY3JjID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjUzIFRPRE86IHBhcnNlIGZsYWdzICovXG4vKiBbTVMtWExTQl0gMi40LjMyMyBUT0RPOiBwYXJzZSBmbGFncyAqL1xuZnVuY3Rpb24gcGFyc2VfQ29sSW5mbyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYoIW9wdHMuY2VsbFN0eWxlcykgcmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xuXHR2YXIgdyA9IG9wdHMgJiYgb3B0cy5iaWZmID49IDEyID8gNCA6IDI7XG5cdHZhciBjb2xGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGNvbExhc3QgPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBjb2xkeCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGl4ZmUgPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYodyA9PSAyKSBibG9iLmwgKz0gMjtcblx0dmFyIG8gPSAoe3M6Y29sRmlyc3QsIGU6Y29sTGFzdCwgdzpjb2xkeCwgaXhmZTppeGZlLCBmbGFnczpmbGFnc30vKjphbnkqLyk7XG5cdGlmKG9wdHMuYmlmZiA+PSA1IHx8ICFvcHRzLmJpZmYpIG8ubGV2ZWwgPSAoZmxhZ3MgPj4gOCkgJiAweDc7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQ29sSW5mbyhjb2wsIGlkeCkge1xuXHR2YXIgbyA9IG5ld19idWYoMTIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGlkeCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaWR4KTtcblx0by53cml0ZV9zaGlmdCgyLCBjb2wud2lkdGggKiAyNTYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHR2YXIgZiA9IDA7XG5cdGlmKGNvbC5oaWRkZW4pIGYgfD0gMTtcblx0by53cml0ZV9zaGlmdCgxLCBmKTtcblx0ZiA9IGNvbC5sZXZlbCB8fCAwO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjI1NyAqL1xuZnVuY3Rpb24gcGFyc2VfU2V0dXAoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBvID0ge307XG5cdGlmKGxlbmd0aCA8IDMyKSByZXR1cm4gbztcblx0YmxvYi5sICs9IDE2O1xuXHRvLmhlYWRlciA9IHBhcnNlX1hudW0oYmxvYiwgOCk7XG5cdG8uZm9vdGVyID0gcGFyc2VfWG51bShibG9iLCA4KTtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjYxICovXG5mdW5jdGlvbiBwYXJzZV9TaHRQcm9wcyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGRlZiA9IHthcmVhOmZhbHNlfTtcblx0aWYob3B0cy5iaWZmICE9IDUpIHsgYmxvYi5sICs9IGxlbmd0aDsgcmV0dXJuIGRlZjsgfVxuXHR2YXIgZCA9IGJsb2IucmVhZF9zaGlmdCgxKTsgYmxvYi5sICs9IDM7XG5cdGlmKChkICYgMHgxMCkpIGRlZi5hcmVhID0gdHJ1ZTtcblx0cmV0dXJuIGRlZjtcbn1cblxuLyogW01TLVhMU10gMi40LjI0MSAqL1xuZnVuY3Rpb24gd3JpdGVfUlJUYWJJZChuLyo6bnVtYmVyKi8pIHtcblx0dmFyIG91dCA9IG5ld19idWYoMiAqIG4pO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBvdXQud3JpdGVfc2hpZnQoMiwgaSsxKTtcblx0cmV0dXJuIG91dDtcbn1cblxudmFyIHBhcnNlX0JsYW5rID0gcGFyc2VfWExTQ2VsbDsgLyogW01TLVhMU10gMi40LjIwIEp1c3QgdGhlIGNlbGwgKi9cbnZhciBwYXJzZV9TY2wgPSBwYXJzZXVpbnQxNmE7IC8qIFtNUy1YTFNdIDIuNC4yNDcgbnVtLCBkZW4gKi9cbnZhciBwYXJzZV9TdHJpbmcgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmc7IC8qIFtNUy1YTFNdIDIuNC4yNjggKi9cblxuLyogLS0tIFNwZWNpZmljIHRvIHZlcnNpb25zIGJlZm9yZSBCSUZGOCAtLS0gKi9cbmZ1bmN0aW9uIHBhcnNlX0ltRGF0YShibG9iKSB7XG5cdHZhciBjZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGVudiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGxjYiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIG8gPSB7Zm10OmNmLCBlbnY6ZW52LCBsZW46bGNiLCBkYXRhOmJsb2Iuc2xpY2UoYmxvYi5sLGJsb2IubCtsY2IpfTtcblx0YmxvYi5sICs9IGxjYjtcblx0cmV0dXJuIG87XG59XG5cbi8qIEJJRkYyXz8/PyB3aGVyZSA/Pz8gaXMgdGhlIG5hbWUgZnJvbSBbWExTXSAqL1xuZnVuY3Rpb24gcGFyc2VfQklGRjJTVFIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZmd1ZXNzICYmIG9wdHMuYmlmZiA9PSA1KSBvcHRzLmJpZmYgPSAyO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdCsrYmxvYi5sO1xuXHR2YXIgc3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCBsZW5ndGgtNywgb3B0cyk7XG5cdGNlbGwudCA9ICdzdHInO1xuXHRjZWxsLnZhbCA9IHN0cjtcblx0cmV0dXJuIGNlbGw7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkYyTlVNKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdCsrYmxvYi5sO1xuXHR2YXIgbnVtID0gcGFyc2VfWG51bShibG9iLCA4KTtcblx0Y2VsbC50ID0gJ24nO1xuXHRjZWxsLnZhbCA9IG51bTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9CSUZGMk5VTShyLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLywgdmFsLyo6bnVtYmVyKi8pIHtcblx0dmFyIG91dCA9IG5ld19idWYoMTUpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDgsIHZhbCwgJ2YnKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQklGRjJJTlQoYmxvYikge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYiwgNik7XG5cdCsrYmxvYi5sO1xuXHR2YXIgbnVtID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRjZWxsLnQgPSAnbic7XG5cdGNlbGwudmFsID0gbnVtO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JJRkYySU5UKHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovLCB2YWwvKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfQklGRjJDZWxsKG91dCwgciwgYyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCB2YWwpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CSUZGMlNUUklORyhibG9iKSB7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGNjaCA9PT0gMCkgeyBibG9iLmwrKzsgcmV0dXJuIFwiXCI7IH1cblx0cmV0dXJuIGJsb2IucmVhZF9zaGlmdChjY2gsICdzYmNzLWNvbnQnKTtcbn1cblxuLyogVE9ETzogY29udmVydCB0byBCSUZGOCBmb250IHN0cnVjdCAqL1xuZnVuY3Rpb24gcGFyc2VfQklGRjJGT05UWFRSQShibG9iLCBsZW5ndGgpIHtcblx0YmxvYi5sICs9IDY7IC8vIHVua25vd25cblx0YmxvYi5sICs9IDI7IC8vIGZvbnQgd2VpZ2h0IFwiYmxzXCJcblx0YmxvYi5sICs9IDE7IC8vIGNoYXJzZXRcblx0YmxvYi5sICs9IDM7IC8vIHVua25vd25cblx0YmxvYi5sICs9IDE7IC8vIGZvbnQgZmFtaWx5XG5cdGJsb2IubCArPSBsZW5ndGggLSAxMztcbn1cblxuLyogVE9ETzogcGFyc2UgcmljaCB0ZXh0IHJ1bnMgKi9cbmZ1bmN0aW9uIHBhcnNlX1JTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHN0ciA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cyk7XG5cdGJsb2IubCA9IGVuZDtcblx0Y2VsbC50ID0gJ3N0cic7XG5cdGNlbGwudmFsID0gc3RyO1xuXHRyZXR1cm4gY2VsbDtcbn1cbi8qIGZyb20ganMtaGFyYiAoQykgMjAxNC1wcmVzZW50ICBTaGVldEpTICovXG52YXIgREJGX1NVUFBPUlRFRF9WRVJTSU9OUyA9IFsweDAyLCAweDAzLCAweDMwLCAweDMxLCAweDgzLCAweDhCLCAweDhDLCAweEY1XTtcbnZhciBEQkYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xudmFyIGRiZl9jb2RlcGFnZV9tYXAgPSB7XG5cdC8qIENvZGUgUGFnZXMgU3VwcG9ydGVkIGJ5IFZpc3VhbCBGb3hQcm8gKi9cblx0Lyo6OlsqLzB4MDEvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDAyLyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogIDEyNTIsICAgICAgICAgICAvKjo6WyovMHgwNC8qOjpdKi86IDEwMDAwLFxuXHQvKjo6WyovMHg2NC8qOjpdKi86ICAgODUyLCAgICAgICAgICAgLyo6OlsqLzB4NjUvKjo6XSovOiAgIDg2Nixcblx0Lyo6OlsqLzB4NjYvKjo6XSovOiAgIDg2NSwgICAgICAgICAgIC8qOjpbKi8weDY3Lyo6Ol0qLzogICA4NjEsXG5cdC8qOjpbKi8weDY4Lyo6Ol0qLzogICA4OTUsICAgICAgICAgICAvKjo6WyovMHg2OS8qOjpdKi86ICAgNjIwLFxuXHQvKjo6WyovMHg2QS8qOjpdKi86ICAgNzM3LCAgICAgICAgICAgLyo6OlsqLzB4NkIvKjo6XSovOiAgIDg1Nyxcblx0Lyo6OlsqLzB4NzgvKjo6XSovOiAgIDk1MCwgICAgICAgICAgIC8qOjpbKi8weDc5Lyo6Ol0qLzogICA5NDksXG5cdC8qOjpbKi8weDdBLyo6Ol0qLzogICA5MzYsICAgICAgICAgICAvKjo6WyovMHg3Qi8qOjpdKi86ICAgOTMyLFxuXHQvKjo6WyovMHg3Qy8qOjpdKi86ICAgODc0LCAgICAgICAgICAgLyo6OlsqLzB4N0QvKjo6XSovOiAgMTI1NSxcblx0Lyo6OlsqLzB4N0UvKjo6XSovOiAgMTI1NiwgICAgICAgICAgIC8qOjpbKi8weDk2Lyo6Ol0qLzogMTAwMDcsXG5cdC8qOjpbKi8weDk3Lyo6Ol0qLzogMTAwMjksICAgICAgICAgICAvKjo6WyovMHg5OC8qOjpdKi86IDEwMDA2LFxuXHQvKjo6WyovMHhDOC8qOjpdKi86ICAxMjUwLCAgICAgICAgICAgLyo6OlsqLzB4QzkvKjo6XSovOiAgMTI1MSxcblx0Lyo6OlsqLzB4Q0EvKjo6XSovOiAgMTI1NCwgICAgICAgICAgIC8qOjpbKi8weENCLyo6Ol0qLzogIDEyNTMsXG5cblx0Lyogc2hhcGVmaWxlIERCRiBleHRlbnNpb24gKi9cblx0Lyo6OlsqLzB4MDAvKjo6XSovOiAyMDEyNywgICAgICAgICAgIC8qOjpbKi8weDA4Lyo6Ol0qLzogICA4NjUsXG5cdC8qOjpbKi8weDA5Lyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgwQS8qOjpdKi86ICAgODUwLFxuXHQvKjo6WyovMHgwQi8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MEQvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MEUvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDBGLyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxMS8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxMi8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MTMvKjo6XSovOiAgIDkzMixcblx0Lyo6OlsqLzB4MTQvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDE1Lyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDE2Lyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxNy8qOjpdKi86ICAgODY1LFxuXHQvKjo6WyovMHgxOC8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MTkvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MUEvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDFCLyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDFDLyo6Ol0qLzogICA4NjMsICAgICAgICAgICAvKjo6WyovMHgxRC8qOjpdKi86ICAgODUwLFxuXHQvKjo6WyovMHgxRi8qOjpdKi86ICAgODUyLCAgICAgICAgICAgLyo6OlsqLzB4MjIvKjo6XSovOiAgIDg1Mixcblx0Lyo6OlsqLzB4MjMvKjo6XSovOiAgIDg1MiwgICAgICAgICAgIC8qOjpbKi8weDI0Lyo6Ol0qLzogICA4NjAsXG5cdC8qOjpbKi8weDI1Lyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgyNi8qOjpdKi86ICAgODY2LFxuXHQvKjo6WyovMHgzNy8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4NDAvKjo6XSovOiAgIDg1Mixcblx0Lyo6OlsqLzB4NEQvKjo6XSovOiAgIDkzNiwgICAgICAgICAgIC8qOjpbKi8weDRFLyo6Ol0qLzogICA5NDksXG5cdC8qOjpbKi8weDRGLyo6Ol0qLzogICA5NTAsICAgICAgICAgICAvKjo6WyovMHg1MC8qOjpdKi86ICAgODc0LFxuXHQvKjo6WyovMHg1Ny8qOjpdKi86ICAxMjUyLCAgICAgICAgICAgLyo6OlsqLzB4NTgvKjo6XSovOiAgMTI1Mixcblx0Lyo6OlsqLzB4NTkvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDZDLyo6Ol0qLzogICA4NjMsXG5cdC8qOjpbKi8weDg2Lyo6Ol0qLzogICA3MzcsICAgICAgICAgICAvKjo6WyovMHg4Ny8qOjpdKi86ICAgODUyLFxuXHQvKjo6WyovMHg4OC8qOjpdKi86ICAgODU3LCAgICAgICAgICAgLyo6OlsqLzB4Q0MvKjo6XSovOiAgMTI1NyxcblxuXHQvKjo6WyovMHhGRi8qOjpdKi86IDE2OTY5XG59O1xudmFyIGRiZl9yZXZlcnNlX21hcCA9IGV2ZXJ0KHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDAyLyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogIDEyNTIsICAgICAgICAgICAvKjo6WyovMHgwNC8qOjpdKi86IDEwMDAwLFxuXHQvKjo6WyovMHg2NC8qOjpdKi86ICAgODUyLCAgICAgICAgICAgLyo6OlsqLzB4NjUvKjo6XSovOiAgIDg2Nixcblx0Lyo6OlsqLzB4NjYvKjo6XSovOiAgIDg2NSwgICAgICAgICAgIC8qOjpbKi8weDY3Lyo6Ol0qLzogICA4NjEsXG5cdC8qOjpbKi8weDY4Lyo6Ol0qLzogICA4OTUsICAgICAgICAgICAvKjo6WyovMHg2OS8qOjpdKi86ICAgNjIwLFxuXHQvKjo6WyovMHg2QS8qOjpdKi86ICAgNzM3LCAgICAgICAgICAgLyo6OlsqLzB4NkIvKjo6XSovOiAgIDg1Nyxcblx0Lyo6OlsqLzB4NzgvKjo6XSovOiAgIDk1MCwgICAgICAgICAgIC8qOjpbKi8weDc5Lyo6Ol0qLzogICA5NDksXG5cdC8qOjpbKi8weDdBLyo6Ol0qLzogICA5MzYsICAgICAgICAgICAvKjo6WyovMHg3Qi8qOjpdKi86ICAgOTMyLFxuXHQvKjo6WyovMHg3Qy8qOjpdKi86ICAgODc0LCAgICAgICAgICAgLyo6OlsqLzB4N0QvKjo6XSovOiAgMTI1NSxcblx0Lyo6OlsqLzB4N0UvKjo6XSovOiAgMTI1NiwgICAgICAgICAgIC8qOjpbKi8weDk2Lyo6Ol0qLzogMTAwMDcsXG5cdC8qOjpbKi8weDk3Lyo6Ol0qLzogMTAwMjksICAgICAgICAgICAvKjo6WyovMHg5OC8qOjpdKi86IDEwMDA2LFxuXHQvKjo6WyovMHhDOC8qOjpdKi86ICAxMjUwLCAgICAgICAgICAgLyo6OlsqLzB4QzkvKjo6XSovOiAgMTI1MSxcblx0Lyo6OlsqLzB4Q0EvKjo6XSovOiAgMTI1NCwgICAgICAgICAgIC8qOjpbKi8weENCLyo6Ol0qLzogIDEyNTMsXG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogMjAxMjdcbn0pO1xuLyogVE9ETzogZmluZCBhbiBhY3R1YWwgc3BlY2lmaWNhdGlvbiAqL1xuZnVuY3Rpb24gZGJmX3RvX2FvYShidWYsIG9wdHMpLyo6QU9BKi8ge1xuXHR2YXIgb3V0Lyo6QU9BKi8gPSBbXTtcblx0dmFyIGQvKjpCbG9jayovID0gKG5ld19yYXdfYnVmKDEpLyo6YW55Ki8pO1xuXHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0Y2FzZSAnYmFzZTY0JzogZCA9IHMyYShCYXNlNjRfZGVjb2RlKGJ1ZikpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiBkID0gczJhKGJ1Zik7IGJyZWFrO1xuXHRcdGNhc2UgJ2J1ZmZlcic6XG5cdFx0Y2FzZSAnYXJyYXknOiBkID0gYnVmOyBicmVhaztcblx0fVxuXHRwcmVwX2Jsb2IoZCwgMCk7XG5cblx0LyogaGVhZGVyICovXG5cdHZhciBmdCA9IGQucmVhZF9zaGlmdCgxKTtcblx0dmFyIG1lbW8gPSAhIShmdCAmIDB4ODgpO1xuXHR2YXIgdmZwID0gZmFsc2UsIGw3ID0gZmFsc2U7XG5cdHN3aXRjaChmdCkge1xuXHRcdGNhc2UgMHgwMjogYnJlYWs7IC8vIGRCQVNFIElJXG5cdFx0Y2FzZSAweDAzOiBicmVhazsgLy8gZEJBU0UgSUlJXG5cdFx0Y2FzZSAweDMwOiB2ZnAgPSB0cnVlOyBtZW1vID0gdHJ1ZTsgYnJlYWs7IC8vIFZGUFxuXHRcdGNhc2UgMHgzMTogdmZwID0gdHJ1ZTsgbWVtbyA9IHRydWU7IGJyZWFrOyAvLyBWRlAgd2l0aCBhdXRvaW5jcmVtZW50XG5cdFx0Ly8gMHg0MyBkQkFTRSBJViBTUUwgdGFibGUgZmlsZXNcblx0XHQvLyAweDYzIGRCQVNFIElWIFNRTCBzeXN0ZW0gZmlsZXNcblx0XHRjYXNlIDB4ODM6IGJyZWFrOyAvLyBkQkFTRSBJSUkgd2l0aCBtZW1vXG5cdFx0Y2FzZSAweDhCOiBicmVhazsgLy8gZEJBU0UgSVYgd2l0aCBtZW1vXG5cdFx0Y2FzZSAweDhDOiBsNyA9IHRydWU7IGJyZWFrOyAvLyBkQkFTRSBMZXZlbCA3IHdpdGggbWVtb1xuXHRcdC8vIGNhc2UgMHhDQiBkQkFTRSBJViBTUUwgdGFibGUgZmlsZXMgd2l0aCBtZW1vXG5cdFx0Y2FzZSAweEY1OiBicmVhazsgLy8gRm94UHJvIDIueCB3aXRoIG1lbW9cblx0XHQvLyBjYXNlIDB4RkIgRm94QkFTRVxuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkRCRiBVbnN1cHBvcnRlZCBWZXJzaW9uOiBcIiArIGZ0LnRvU3RyaW5nKDE2KSk7XG5cdH1cblxuXHR2YXIgbnJvdyA9IDAsIGZwb3MgPSAweDAyMDk7XG5cdGlmKGZ0ID09IDB4MDIpIG5yb3cgPSBkLnJlYWRfc2hpZnQoMik7XG5cdGQubCArPSAzOyAvLyBkQkFTRSBJSSBzdG9yZXMgRERNTVlZIGRhdGUsIG90aGVycyB1c2UgWVlNTUREXG5cdGlmKGZ0ICE9IDB4MDIpIG5yb3cgPSBkLnJlYWRfc2hpZnQoNCk7XG5cdGlmKG5yb3cgPiAxMDQ4NTc2KSBucm93ID0gMWU2O1xuXG5cdGlmKGZ0ICE9IDB4MDIpIGZwb3MgPSBkLnJlYWRfc2hpZnQoMik7IC8vIGhlYWRlciBsZW5ndGhcblx0dmFyIHJsZW4gPSBkLnJlYWRfc2hpZnQoMik7IC8vIHJlY29yZCBsZW5ndGhcblxuXHR2YXIgLypmbGFncyA9IDAsKi8gY3VycmVudF9jcCA9IG9wdHMuY29kZXBhZ2UgfHwgMTI1Mjtcblx0aWYoZnQgIT0gMHgwMikgeyAvLyAyMCByZXNlcnZlZCBieXRlc1xuXHRcdGQubCs9MTY7XG5cdFx0LypmbGFncyA9ICovZC5yZWFkX3NoaWZ0KDEpO1xuXHRcdC8vaWYobWVtbyAmJiAoKGZsYWdzICYgMHgwMikgPT09IDApKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgRmxhZ3MgXCIgKyBmbGFncy50b1N0cmluZygxNikgKyBcIiBmdCBcIiArIGZ0LnRvU3RyaW5nKDE2KSk7XG5cblx0XHQvKiBjb2RlcGFnZSBwcmVzZW50IGluIEZveFBybyBhbmQgZEJBU0UgTGV2ZWwgNyAqL1xuXHRcdGlmKGRbZC5sXSAhPT0gMCkgY3VycmVudF9jcCA9IGRiZl9jb2RlcGFnZV9tYXBbZFtkLmxdXTtcblx0XHRkLmwrPTE7XG5cblx0XHRkLmwrPTI7XG5cdH1cblx0aWYobDcpIGQubCArPSAzNjsgLy8gTGV2ZWwgNzogMzIgYnl0ZSBcIkxhbmd1YWdlIGRyaXZlciBuYW1lXCIsIDQgYnl0ZSByZXNlcnZlZFxuXG4vKjo6IHR5cGUgREJGRmllbGQgPSB7IG5hbWU6c3RyaW5nOyBsZW46bnVtYmVyOyB0eXBlOnN0cmluZzsgfSAqL1xuXHR2YXIgZmllbGRzLyo6QXJyYXk8REJGRmllbGQ+Ki8gPSBbXSwgZmllbGQvKjpEQkZGaWVsZCovID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgaGVuZCA9IE1hdGgubWluKGQubGVuZ3RoLCAoZnQgPT0gMHgwMiA/IDB4MjA5IDogKGZwb3MgLSAxMCAtICh2ZnAgPyAyNjQgOiAwKSkpKTtcblx0dmFyIHd3ID0gbDcgPyAzMiA6IDExO1xuXHR3aGlsZShkLmwgPCBoZW5kICYmIGRbZC5sXSAhPSAweDBkKSB7XG5cdFx0ZmllbGQgPSAoe30vKjphbnkqLyk7XG5cdFx0ZmllbGQubmFtZSA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NwLCBkLnNsaWNlKGQubCwgZC5sK3d3KSkucmVwbGFjZSgvW1xcdTAwMDBcXHJcXG5dLiokL2csXCJcIik7XG5cdFx0ZC5sICs9IHd3O1xuXHRcdGZpZWxkLnR5cGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGQucmVhZF9zaGlmdCgxKSk7XG5cdFx0aWYoZnQgIT0gMHgwMiAmJiAhbDcpIGZpZWxkLm9mZnNldCA9IGQucmVhZF9zaGlmdCg0KTtcblx0XHRmaWVsZC5sZW4gPSBkLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYoZnQgPT0gMHgwMikgZmllbGQub2Zmc2V0ID0gZC5yZWFkX3NoaWZ0KDIpO1xuXHRcdGZpZWxkLmRlYyA9IGQucmVhZF9zaGlmdCgxKTtcblx0XHRpZihmaWVsZC5uYW1lLmxlbmd0aCkgZmllbGRzLnB1c2goZmllbGQpO1xuXHRcdGlmKGZ0ICE9IDB4MDIpIGQubCArPSBsNyA/IDEzIDogMTQ7XG5cdFx0c3dpdGNoKGZpZWxkLnR5cGUpIHtcblx0XHRcdGNhc2UgJ0InOiAvLyBEb3VibGUgKFZGUCkgLyBCaW5hcnkgKGRCQVNFIEw3KVxuXHRcdFx0XHRpZigoIXZmcCB8fCBmaWVsZC5sZW4gIT0gOCkgJiYgb3B0cy5XVEYpIGNvbnNvbGUubG9nKCdTa2lwcGluZyAnICsgZmllbGQubmFtZSArICc6JyArIGZpZWxkLnR5cGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0cnOiAvLyBHZW5lcmFsIChGb3hQcm8gYW5kIGRCQVNFIEw3KVxuXHRcdFx0Y2FzZSAnUCc6IC8vIFBpY3R1cmUgKEZveFBybyBhbmQgZEJBU0UgTDcpXG5cdFx0XHRcdGlmKG9wdHMuV1RGKSBjb25zb2xlLmxvZygnU2tpcHBpbmcgJyArIGZpZWxkLm5hbWUgKyAnOicgKyBmaWVsZC50eXBlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICcrJzogLy8gQXV0b2luY3JlbWVudCAoZEJBU0UgTDcgb25seSlcblx0XHRcdGNhc2UgJzAnOiAvLyBfTnVsbEZsYWdzIChWRlAgb25seSlcblx0XHRcdGNhc2UgJ0AnOiAvLyBUaW1lc3RhbXAgKGRCQVNFIEw3IG9ubHkpXG5cdFx0XHRjYXNlICdDJzogLy8gQ2hhcmFjdGVyIChkQkFTRSBJSSlcblx0XHRcdGNhc2UgJ0QnOiAvLyBEYXRlIChkQkFTRSBJSUkpXG5cdFx0XHRjYXNlICdGJzogLy8gRmxvYXQgKGRCQVNFIElWKVxuXHRcdFx0Y2FzZSAnSSc6IC8vIExvbmcgKFZGUCBhbmQgZEJBU0UgTDcpXG5cdFx0XHRjYXNlICdMJzogLy8gTG9naWNhbCAoZEJBU0UgSUkpXG5cdFx0XHRjYXNlICdNJzogLy8gTWVtbyAoZEJBU0UgSUlJKVxuXHRcdFx0Y2FzZSAnTic6IC8vIE51bWJlciAoZEJBU0UgSUkpXG5cdFx0XHRjYXNlICdPJzogLy8gRG91YmxlIChkQkFTRSBMNyBvbmx5KVxuXHRcdFx0Y2FzZSAnVCc6IC8vIERhdGV0aW1lIChWRlAgb25seSlcblx0XHRcdGNhc2UgJ1knOiAvLyBDdXJyZW5jeSAoVkZQIG9ubHkpXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIEZpZWxkIFR5cGU6ICcgKyBmaWVsZC50eXBlKTtcblx0XHR9XG5cdH1cblxuXHRpZihkW2QubF0gIT09IDB4MEQpIGQubCA9IGZwb3MtMTtcblx0aWYoZC5yZWFkX3NoaWZ0KDEpICE9PSAweDBEKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVGVybWluYXRvciBub3QgZm91bmQgXCIgKyBkLmwgKyBcIiBcIiArIGRbZC5sXSk7XG5cdGQubCA9IGZwb3M7XG5cblx0LyogZGF0YSAqL1xuXHR2YXIgUiA9IDAsIEMgPSAwO1xuXHRvdXRbMF0gPSBbXTtcblx0Zm9yKEMgPSAwOyBDICE9IGZpZWxkcy5sZW5ndGg7ICsrQykgb3V0WzBdW0NdID0gZmllbGRzW0NdLm5hbWU7XG5cdHdoaWxlKG5yb3ctLSA+IDApIHtcblx0XHRpZihkW2QubF0gPT09IDB4MkEpIHtcblx0XHRcdC8vIFRPRE86IHJlY29yZCBtYXJrZWQgYXMgZGVsZXRlZCAtLSBjcmVhdGUgYSBoaWRkZW4gcm93P1xuXHRcdFx0ZC5sKz1ybGVuO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdCsrZC5sO1xuXHRcdG91dFsrK1JdID0gW107IEMgPSAwO1xuXHRcdGZvcihDID0gMDsgQyAhPSBmaWVsZHMubGVuZ3RoOyArK0MpIHtcblx0XHRcdHZhciBkZCA9IGQuc2xpY2UoZC5sLCBkLmwrZmllbGRzW0NdLmxlbik7IGQubCs9ZmllbGRzW0NdLmxlbjtcblx0XHRcdHByZXBfYmxvYihkZCwgMCk7XG5cdFx0XHR2YXIgcyA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NwLCBkZCk7XG5cdFx0XHRzd2l0Y2goZmllbGRzW0NdLnR5cGUpIHtcblx0XHRcdFx0Y2FzZSAnQyc6XG5cdFx0XHRcdFx0Ly8gTk9URTogaXQgaXMgY29udmVudGlvbmFsIHRvIHdyaXRlICcgIC8gIC8gICcgZm9yIGVtcHR5IGRhdGVzXG5cdFx0XHRcdFx0aWYocy50cmltKCkubGVuZ3RoKSBvdXRbUl1bQ10gPSBzLnJlcGxhY2UoL1xccyskLyxcIlwiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnRCc6XG5cdFx0XHRcdFx0aWYocy5sZW5ndGggPT09IDgpIG91dFtSXVtDXSA9IG5ldyBEYXRlKCtzLnNsaWNlKDAsNCksICtzLnNsaWNlKDQsNiktMSwgK3Muc2xpY2UoNiw4KSk7XG5cdFx0XHRcdFx0ZWxzZSBvdXRbUl1bQ10gPSBzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdGJzogb3V0W1JdW0NdID0gcGFyc2VGbG9hdChzLnRyaW0oKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICcrJzogY2FzZSAnSSc6IG91dFtSXVtDXSA9IGw3ID8gZGQucmVhZF9zaGlmdCgtNCwgJ2knKSBeIDB4ODAwMDAwMDAgOiBkZC5yZWFkX3NoaWZ0KDQsICdpJyk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdMJzogc3dpdGNoKHMudHJpbSgpLnRvVXBwZXJDYXNlKCkpIHtcblx0XHRcdFx0XHRjYXNlICdZJzogY2FzZSAnVCc6IG91dFtSXVtDXSA9IHRydWU7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ04nOiBjYXNlICdGJzogb3V0W1JdW0NdID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJyc6IGNhc2UgJz8nOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVW5yZWNvZ25pemVkIEw6fFwiICsgcyArIFwifFwiKTtcblx0XHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNJzogLyogVE9ETzogaGFuZGxlIG1lbW8gZmlsZXMgKi9cblx0XHRcdFx0XHRpZighbWVtbykgdGhyb3cgbmV3IEVycm9yKFwiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSBcIiArIGZ0LnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0b3V0W1JdW0NdID0gXCIjI01FTU8jI1wiICsgKGw3ID8gcGFyc2VJbnQocy50cmltKCksIDEwKTogZGQucmVhZF9zaGlmdCg0KSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ04nOlxuXHRcdFx0XHRcdHMgPSBzLnJlcGxhY2UoL1xcdTAwMDAvZyxcIlwiKS50cmltKCk7XG5cdFx0XHRcdFx0Ly8gTk9URTogZEJBU0UgSUkgaW50ZXJwcmV0cyBcIiAgLiAgXCIgYXMgMFxuXHRcdFx0XHRcdGlmKHMgJiYgcyAhPSBcIi5cIikgb3V0W1JdW0NdID0gK3MgfHwgMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0AnOlxuXHRcdFx0XHRcdC8vIE5PVEU6IGRCQVNFIHNwZWNzIGFwcGVhciB0byBiZSBpbmNvcnJlY3Rcblx0XHRcdFx0XHRvdXRbUl1bQ10gPSBuZXcgRGF0ZShkZC5yZWFkX3NoaWZ0KC04LCAnZicpIC0gMHgzODgzMTc1MzM0MDApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdUJzogb3V0W1JdW0NdID0gbmV3IERhdGUoKGRkLnJlYWRfc2hpZnQoNCkgLSAweDI1M0Q4QykgKiAweDUyNjVDMDAgKyBkZC5yZWFkX3NoaWZ0KDQpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1knOiBvdXRbUl1bQ10gPSBkZC5yZWFkX3NoaWZ0KDQsJ2knKS8xZTQgKyAoZGQucmVhZF9zaGlmdCg0LCAnaScpLzFlNCkqTWF0aC5wb3coMiwzMik7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdPJzogb3V0W1JdW0NdID0gLWRkLnJlYWRfc2hpZnQoLTgsICdmJyk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdCJzogaWYodmZwICYmIGZpZWxkc1tDXS5sZW4gPT0gOCkgeyBvdXRbUl1bQ10gPSBkZC5yZWFkX3NoaWZ0KDgsJ2YnKTsgYnJlYWs7IH1cblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgJ0cnOiBjYXNlICdQJzogZGQubCArPSBmaWVsZHNbQ10ubGVuOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnMCc6XG5cdFx0XHRcdFx0aWYoZmllbGRzW0NdLm5hbWUgPT09ICdfTnVsbEZsYWdzJykgYnJlYWs7XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIFwiICsgZmllbGRzW0NdLnR5cGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRpZihmdCAhPSAweDAyKSBpZihkLmwgPCBkLmxlbmd0aCAmJiBkW2QubCsrXSAhPSAweDFBKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgRU9GIE1hcmtlciBtaXNzaW5nIFwiICsgKGQubC0xKSArIFwiIG9mIFwiICsgZC5sZW5ndGggKyBcIiBcIiArIGRbZC5sLTFdLnRvU3RyaW5nKDE2KSk7XG5cdGlmKG9wdHMgJiYgb3B0cy5zaGVldFJvd3MpIG91dCA9IG91dC5zbGljZSgwLCBvcHRzLnNoZWV0Um93cyk7XG5cdG9wdHMuREJGID0gZmllbGRzO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBkYmZfdG9fc2hlZXQoYnVmLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRpZighby5kYXRlTkYpIG8uZGF0ZU5GID0gXCJ5eXl5bW1kZFwiO1xuXHR2YXIgd3MgPSBhb2FfdG9fc2hlZXQoZGJmX3RvX2FvYShidWYsIG8pLCBvKTtcblx0d3NbXCIhY29sc1wiXSA9IG8uREJGLm1hcChmdW5jdGlvbihmaWVsZCkgeyByZXR1cm4ge1xuXHRcdHdjaDogZmllbGQubGVuLFxuXHRcdERCRjogZmllbGRcblx0fTt9KTtcblx0ZGVsZXRlIG8uREJGO1xuXHRyZXR1cm4gd3M7XG59XG5cbmZ1bmN0aW9uIGRiZl90b193b3JrYm9vayhidWYsIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHRyeSB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhkYmZfdG9fc2hlZXQoYnVmLCBvcHRzKSwgb3B0cyk7IH1cblx0Y2F0Y2goZSkgeyBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBlOyB9XG5cdHJldHVybiAoe1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fSk7XG59XG5cbnZhciBfUkxFTiA9IHsgJ0InOiA4LCAnQyc6IDI1MCwgJ0wnOiAxLCAnRCc6IDgsICc/JzogMCwgJyc6IDAgfTtcbmZ1bmN0aW9uIHNoZWV0X3RvX2RiZih3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRpZigrby5jb2RlcGFnZSA+PSAwKSBzZXRfY3AoK28uY29kZXBhZ2UpO1xuXHRpZihvLnR5cGUgPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHdyaXRlIERCRiB0byBKUyBzdHJpbmdcIik7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgYW9hLyo6QU9BKi8gPSBzaGVldF90b19qc29uKHdzLCB7aGVhZGVyOjEsIHJhdzp0cnVlLCBjZWxsRGF0ZXM6dHJ1ZX0pO1xuXHR2YXIgaGVhZGVycyA9IGFvYVswXSwgZGF0YSA9IGFvYS5zbGljZSgxKSwgY29scyA9IHdzW1wiIWNvbHNcIl0gfHwgW107XG5cdHZhciBpID0gMCwgaiA9IDAsIGhjbnQgPSAwLCBybGVuID0gMTtcblx0Zm9yKGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCgoY29sc1tpXXx8e30pLkRCRnx8e30pLm5hbWUpIHsgaGVhZGVyc1tpXSA9IGNvbHNbaV0uREJGLm5hbWU7ICsraGNudDsgY29udGludWU7IH1cblx0XHRpZihoZWFkZXJzW2ldID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdCsraGNudDtcblx0XHRpZih0eXBlb2YgaGVhZGVyc1tpXSA9PT0gJ251bWJlcicpIGhlYWRlcnNbaV0gPSBoZWFkZXJzW2ldLnRvU3RyaW5nKDEwKTtcblx0XHRpZih0eXBlb2YgaGVhZGVyc1tpXSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcIkRCRiBJbnZhbGlkIGNvbHVtbiBuYW1lIFwiICsgaGVhZGVyc1tpXSArIFwiIHxcIiArICh0eXBlb2YgaGVhZGVyc1tpXSkgKyBcInxcIik7XG5cdFx0aWYoaGVhZGVycy5pbmRleE9mKGhlYWRlcnNbaV0pICE9PSBpKSBmb3Ioaj0wOyBqPDEwMjQ7KytqKVxuXHRcdFx0aWYoaGVhZGVycy5pbmRleE9mKGhlYWRlcnNbaV0gKyBcIl9cIiArIGopID09IC0xKSB7IGhlYWRlcnNbaV0gKz0gXCJfXCIgKyBqOyBicmVhazsgfVxuXHR9XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHR2YXIgY29sdHlwZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGNvbHdpZHRocy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHR2YXIgY29sZGVjaW1hbHMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDw9IHJhbmdlLmUuYyAtIHJhbmdlLnMuYzsgKytpKSB7XG5cdFx0dmFyIGd1ZXNzID0gJycsIF9ndWVzcyA9ICcnLCBtYXhsZW4gPSAwO1xuXHRcdHZhciBjb2wvKjpBcnJheTxhbnk+Ki8gPSBbXTtcblx0XHRmb3Ioaj0wOyBqIDwgZGF0YS5sZW5ndGg7ICsraikge1xuXHRcdFx0aWYoZGF0YVtqXVtpXSAhPSBudWxsKSBjb2wucHVzaChkYXRhW2pdW2ldKTtcblx0XHR9XG5cdFx0aWYoY29sLmxlbmd0aCA9PSAwIHx8IGhlYWRlcnNbaV0gPT0gbnVsbCkgeyBjb2x0eXBlc1tpXSA9ICc/JzsgY29udGludWU7IH1cblx0XHRmb3IoaiA9IDA7IGogPCBjb2wubGVuZ3RoOyArK2opIHtcblx0XHRcdHN3aXRjaCh0eXBlb2YgY29sW2pdKSB7XG5cdFx0XHRcdC8qIFRPRE86IGNoZWNrIGlmIEwyIGNvbXBhdCBpcyBkZXNpcmVkICovXG5cdFx0XHRcdGNhc2UgJ251bWJlcic6IF9ndWVzcyA9ICdCJzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3N0cmluZyc6IF9ndWVzcyA9ICdDJzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOiBfZ3Vlc3MgPSAnTCc7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdvYmplY3QnOiBfZ3Vlc3MgPSBjb2xbal0gaW5zdGFuY2VvZiBEYXRlID8gJ0QnIDogJ0MnOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogX2d1ZXNzID0gJ0MnO1xuXHRcdFx0fVxuXHRcdFx0bWF4bGVuID0gTWF0aC5tYXgobWF4bGVuLCBTdHJpbmcoY29sW2pdKS5sZW5ndGgpO1xuXHRcdFx0Z3Vlc3MgPSBndWVzcyAmJiBndWVzcyAhPSBfZ3Vlc3MgPyAnQycgOiBfZ3Vlc3M7XG5cdFx0XHQvL2lmKGd1ZXNzID09ICdDJykgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKG1heGxlbiA+IDI1MCkgbWF4bGVuID0gMjUwO1xuXHRcdF9ndWVzcyA9ICgoY29sc1tpXXx8e30pLkRCRnx8e30pLnR5cGU7XG5cdFx0LyogVE9ETzogbW9yZSBmaW5lIGdyYWluZWQgY29udHJvbCBvdmVyIERCRiB0eXBlIHJlc29sdXRpb24gKi9cblx0XHRpZihfZ3Vlc3MgPT0gJ0MnKSB7XG5cdFx0XHRpZihjb2xzW2ldLkRCRi5sZW4gPiBtYXhsZW4pIG1heGxlbiA9IGNvbHNbaV0uREJGLmxlbjtcblx0XHR9XG5cdFx0aWYoZ3Vlc3MgPT0gJ0InICYmIF9ndWVzcyA9PSAnTicpIHtcblx0XHRcdGd1ZXNzID0gJ04nO1xuXHRcdFx0Y29sZGVjaW1hbHNbaV0gPSBjb2xzW2ldLkRCRi5kZWM7XG5cdFx0XHRtYXhsZW4gPSBjb2xzW2ldLkRCRi5sZW47XG5cdFx0fVxuXHRcdGNvbHdpZHRoc1tpXSA9IGd1ZXNzID09ICdDJyB8fCBfZ3Vlc3MgPT0gJ04nID8gbWF4bGVuIDogKF9STEVOW2d1ZXNzXSB8fCAwKTtcblx0XHRybGVuICs9IGNvbHdpZHRoc1tpXTtcblx0XHRjb2x0eXBlc1tpXSA9IGd1ZXNzO1xuXHR9XG5cblx0dmFyIGggPSBiYS5uZXh0KDMyKTtcblx0aC53cml0ZV9zaGlmdCg0LCAweDEzMDIxMTMwKTtcblx0aC53cml0ZV9zaGlmdCg0LCBkYXRhLmxlbmd0aCk7XG5cdGgud3JpdGVfc2hpZnQoMiwgMjk2ICsgMzIgKiBoY250KTtcblx0aC53cml0ZV9zaGlmdCgyLCBybGVuKTtcblx0Zm9yKGk9MDsgaSA8IDQ7ICsraSkgaC53cml0ZV9zaGlmdCg0LCAwKTtcblx0aC53cml0ZV9zaGlmdCg0LCAweDAwMDAwMDAwIHwgKCgrZGJmX3JldmVyc2VfbWFwWy8qOjpTdHJpbmcoKi9jdXJyZW50X2Fuc2kvKjo6KSovXSB8fCAweDAzKTw8OCkpO1xuXG5cdGZvcihpID0gMCwgaiA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoaGVhZGVyc1tpXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHR2YXIgaGYgPSBiYS5uZXh0KDMyKTtcblx0XHR2YXIgX2YgPSAoaGVhZGVyc1tpXS5zbGljZSgtMTApICsgXCJcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXCIpLnNsaWNlKDAsIDExKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCBfZiwgXCJzYmNzXCIpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIGNvbHR5cGVzW2ldID09ICc/JyA/ICdDJyA6IGNvbHR5cGVzW2ldLCBcInNiY3NcIik7XG5cdFx0aGYud3JpdGVfc2hpZnQoNCwgaik7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgY29sd2lkdGhzW2ldIHx8IF9STEVOW2NvbHR5cGVzW2ldXSB8fCAwKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCBjb2xkZWNpbWFsc1tpXSB8fCAwKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCAweDAyKTtcblx0XHRoZi53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRoZi53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRoZi53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRqICs9IChjb2x3aWR0aHNbaV0gfHwgX1JMRU5bY29sdHlwZXNbaV1dIHx8IDApO1xuXHR9XG5cblx0dmFyIGhiID0gYmEubmV4dCgyNjQpO1xuXHRoYi53cml0ZV9zaGlmdCg0LCAweDAwMDAwMDBEKTtcblx0Zm9yKGk9MDsgaSA8IDY1OysraSkgaGIud3JpdGVfc2hpZnQoNCwgMHgwMDAwMDAwMCk7XG5cdGZvcihpPTA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHJvdXQgPSBiYS5uZXh0KHJsZW4pO1xuXHRcdHJvdXQud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0Zm9yKGo9MDsgajxoZWFkZXJzLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRpZihoZWFkZXJzW2pdID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdFx0c3dpdGNoKGNvbHR5cGVzW2pdKSB7XG5cdFx0XHRcdGNhc2UgJ0wnOiByb3V0LndyaXRlX3NoaWZ0KDEsIGRhdGFbaV1bal0gPT0gbnVsbCA/IDB4M0YgOiBkYXRhW2ldW2pdID8gMHg1NCA6IDB4NDYpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQic6IHJvdXQud3JpdGVfc2hpZnQoOCwgZGF0YVtpXVtqXXx8MCwgJ2YnKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ04nOlxuXHRcdFx0XHRcdHZhciBfbiA9IFwiMFwiO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBkYXRhW2ldW2pdID09IFwibnVtYmVyXCIpIF9uID0gZGF0YVtpXVtqXS50b0ZpeGVkKGNvbGRlY2ltYWxzW2pdfHwwKTtcblx0XHRcdFx0XHRmb3IoaGNudD0wOyBoY250IDwgY29sd2lkdGhzW2pdLV9uLmxlbmd0aDsgKytoY250KSByb3V0LndyaXRlX3NoaWZ0KDEsIDB4MjApO1xuXHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoMSwgX24sIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnRCc6XG5cdFx0XHRcdFx0aWYoIWRhdGFbaV1bal0pIHJvdXQud3JpdGVfc2hpZnQoOCwgXCIwMDAwMDAwMFwiLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDQsIChcIjAwMDBcIitkYXRhW2ldW2pdLmdldEZ1bGxZZWFyKCkpLnNsaWNlKC00KSwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCgyLCAoXCIwMFwiKyhkYXRhW2ldW2pdLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCgyLCAoXCIwMFwiK2RhdGFbaV1bal0uZ2V0RGF0ZSgpKS5zbGljZSgtMiksIFwic2Jjc1wiKTtcblx0XHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdDJzpcblx0XHRcdFx0XHR2YXIgX3MgPSBTdHJpbmcoZGF0YVtpXVtqXSAhPSBudWxsID8gZGF0YVtpXVtqXSA6IFwiXCIpLnNsaWNlKDAsIGNvbHdpZHRoc1tqXSk7XG5cdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCgxLCBfcywgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdGZvcihoY250PTA7IGhjbnQgPCBjb2x3aWR0aHNbal0tX3MubGVuZ3RoOyArK2hjbnQpIHJvdXQud3JpdGVfc2hpZnQoMSwgMHgyMCk7IGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBkYXRhXG5cdH1cblx0YmEubmV4dCgxKS53cml0ZV9zaGlmdCgxLCAweDFBKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBkYmZfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IGRiZl90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19kYmZcblx0fTtcbn0pKCk7XG5cbnZhciBTWUxLID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0LyogVE9ETzogc3RyZXNzIHRlc3Qgc2VxdWVuY2VzICovXG5cdHZhciBzeWxrX2VzY2FwZXMgPSAoe1xuXHRcdEFBOifDgCcsIEJBOifDgScsIENBOifDgicsIERBOjE5NSwgSEE6J8OEJywgSkE6MTk3LFxuXHRcdEFFOifDiCcsIEJFOifDiScsIENFOifDiicsICAgICAgICAgSEU6J8OLJyxcblx0XHRBSTonw4wnLCBCSTonw40nLCBDSTonw44nLCAgICAgICAgIEhJOifDjycsXG5cdFx0QU86J8OSJywgQk86J8OTJywgQ086J8OUJywgRE86MjEzLCBITzonw5YnLFxuXHRcdEFVOifDmScsIEJVOifDmicsIENVOifDmycsICAgICAgICAgSFU6J8OcJyxcblx0XHRBYTonw6AnLCBCYTonw6EnLCBDYTonw6InLCBEYToyMjcsIEhhOifDpCcsIEphOjIyOSxcblx0XHRBZTonw6gnLCBCZTonw6knLCBDZTonw6onLCAgICAgICAgIEhlOifDqycsXG5cdFx0QWk6J8OsJywgQmk6J8OtJywgQ2k6J8OuJywgICAgICAgICBIaTonw68nLFxuXHRcdEFvOifDsicsIEJvOifDsycsIENvOifDtCcsIERvOjI0NSwgSG86J8O2Jyxcblx0XHRBdTonw7knLCBCdTonw7onLCBDdTonw7snLCAgICAgICAgIEh1OifDvCcsXG5cdFx0S0M6J8OHJywgS2M6J8OnJywgcTonw6YnLCAgejonxZMnLCAgYTonw4YnLCAgajonxZInLFxuXHRcdEROOjIwOSwgRG46MjQxLCBIeToyNTUsXG5cdFx0UzoxNjksICBjOjE3MCwgIFI6MTc0LCAgXCJCIFwiOjE4MCxcblx0XHQvKjo6WyovMC8qOjpdKi86MTc2LCAgICAvKjo6WyovMS8qOjpdKi86MTc3LCAgLyo6OlsqLzIvKjo6XSovOjE3OCxcblx0XHQvKjo6WyovMy8qOjpdKi86MTc5LCAgICAvKjo6WyovNS8qOjpdKi86MTgxLCAgLyo6OlsqLzYvKjo6XSovOjE4Mixcblx0XHQvKjo6WyovNy8qOjpdKi86MTgzLCAgICBROjE4NSwgIGs6MTg2LCAgYjoyMDgsICBpOjIxNiwgIGw6MjIyLCAgczoyNDAsICB5OjI0OCxcblx0XHRcIiFcIjoxNjEsICdcIic6MTYyLCBcIiNcIjoxNjMsIFwiKFwiOjE2NCwgXCIlXCI6MTY1LCBcIidcIjoxNjcsIFwiSCBcIjoxNjgsXG5cdFx0XCIrXCI6MTcxLCBcIjtcIjoxODcsIFwiPFwiOjE4OCwgXCI9XCI6MTg5LCBcIj5cIjoxOTAsIFwiP1wiOjE5MSwgXCJ7XCI6MjIzXG5cdH0vKjphbnkqLyk7XG5cdHZhciBzeWxrX2NoYXJfcmVnZXggPSBuZXcgUmVnRXhwKFwiXFx1MDAxQk4oXCIgKyBrZXlzKHN5bGtfZXNjYXBlcykuam9pbihcInxcIikucmVwbGFjZSgvXFx8XFx8XFx8LywgXCJ8XFxcXHx8XCIpLnJlcGxhY2UoLyhbPygpK10pL2csXCJcXFxcJDFcIikgKyBcInxcXFxcfClcIiwgXCJnbVwiKTtcblx0dmFyIHN5bGtfY2hhcl9mbiA9IGZ1bmN0aW9uKF8sICQxKXsgdmFyIG8gPSBzeWxrX2VzY2FwZXNbJDFdOyByZXR1cm4gdHlwZW9mIG8gPT0gXCJudW1iZXJcIiA/IF9nZXRhbnNpKG8pIDogbzsgfTtcblx0dmFyIGRlY29kZV9zeWxrX2NoYXIgPSBmdW5jdGlvbigkJCwgJDEsICQyKSB7IHZhciBuZXdjYyA9ICgoJDEuY2hhckNvZGVBdCgwKSAtIDB4MjApPDw0KSB8ICgkMi5jaGFyQ29kZUF0KDApIC0gMHgzMCk7IHJldHVybiBuZXdjYyA9PSA1OSA/ICQkIDogX2dldGFuc2kobmV3Y2MpOyB9O1xuXHRzeWxrX2VzY2FwZXNbXCJ8XCJdID0gMjU0O1xuXHQvKiBUT0RPOiBmaW5kIGFuIGFjdHVhbCBzcGVjaWZpY2F0aW9uICovXG5cdGZ1bmN0aW9uIHN5bGtfdG9fYW9hKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6W0FPQSwgV29ya3NoZWV0XSovIHtcblx0XHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0XHRjYXNlICdiYXNlNjQnOiByZXR1cm4gc3lsa190b19hb2Ffc3RyKEJhc2U2NF9kZWNvZGUoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihkLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2J1ZmZlcic6IHJldHVybiBzeWxrX3RvX2FvYV9zdHIoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZCkgPyBkLnRvU3RyaW5nKCdiaW5hcnknKSA6IGEycyhkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdhcnJheSc6IHJldHVybiBzeWxrX3RvX2FvYV9zdHIoY2Myc3RyKGQpLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG5cdGZ1bmN0aW9uIHN5bGtfdG9fYW9hX3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpbQU9BLCBXb3Jrc2hlZXRdKi8ge1xuXHRcdHZhciByZWNvcmRzID0gc3RyLnNwbGl0KC9bXFxuXFxyXSsvKSwgUiA9IC0xLCBDID0gLTEsIHJpID0gMCwgcmogPSAwLCBhcnIvKjpBT0EqLyA9IFtdO1xuXHRcdHZhciBmb3JtYXRzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0dmFyIG5leHRfY2VsbF9mb3JtYXQvKjpzdHJpbmd8bnVsbCovID0gbnVsbDtcblx0XHR2YXIgc2h0ID0ge30sIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW10sIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gW10sIGN3Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0dmFyIE12YWwgPSAwLCBqO1xuXHRcdGlmKCtvcHRzLmNvZGVwYWdlID49IDApIHNldF9jcCgrb3B0cy5jb2RlcGFnZSk7XG5cdFx0Zm9yICg7IHJpICE9PSByZWNvcmRzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0TXZhbCA9IDA7XG5cdFx0XHR2YXIgcnN0cj1yZWNvcmRzW3JpXS50cmltKCkucmVwbGFjZSgvXFx4MUIoW1xceDIwLVxceDJGXSkoW1xceDMwLVxceDNGXSkvZywgZGVjb2RlX3N5bGtfY2hhcikucmVwbGFjZShzeWxrX2NoYXJfcmVnZXgsIHN5bGtfY2hhcl9mbik7XG5cdFx0XHR2YXIgcmVjb3JkPXJzdHIucmVwbGFjZSgvOzsvZywgXCJcXHUwMDAwXCIpLnNwbGl0KFwiO1wiKS5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5yZXBsYWNlKC9cXHUwMDAwL2csIFwiO1wiKTsgfSk7XG5cdFx0XHR2YXIgUlQ9cmVjb3JkWzBdLCB2YWw7XG5cdFx0XHRpZihyc3RyLmxlbmd0aCA+IDApIHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAnSUQnOiBicmVhazsgLyogaGVhZGVyICovXG5cdFx0XHRjYXNlICdFJzogYnJlYWs7IC8qIEVPRiAqL1xuXHRcdFx0Y2FzZSAnQic6IGJyZWFrOyAvKiBkaW1lbnNpb25zICovXG5cdFx0XHRjYXNlICdPJzogYnJlYWs7IC8qIG9wdGlvbnM/ICovXG5cdFx0XHRjYXNlICdXJzogYnJlYWs7IC8qIHdpbmRvdz8gKi9cblx0XHRcdGNhc2UgJ1AnOlxuXHRcdFx0XHRpZihyZWNvcmRbMV0uY2hhckF0KDApID09ICdQJylcblx0XHRcdFx0XHRmb3JtYXRzLnB1c2gocnN0ci5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCBcIjtcIikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0MnOlxuXHRcdFx0dmFyIENfc2Vlbl9LID0gZmFsc2UsIENfc2Vlbl9YID0gZmFsc2UsIENfc2Vlbl9TID0gZmFsc2UsIENfc2Vlbl9FID0gZmFsc2UsIF9SID0gLTEsIF9DID0gLTE7XG5cdFx0XHRmb3Iocmo9MTsgcmo8cmVjb3JkLmxlbmd0aDsgKytyaikgc3dpdGNoKHJlY29yZFtyal0uY2hhckF0KDApKSB7XG5cdFx0XHRcdGNhc2UgJ0EnOiBicmVhazsgLy8gVE9ETzogY29tbWVudFxuXHRcdFx0XHRjYXNlICdYJzogQyA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IENfc2Vlbl9YID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1knOlxuXHRcdFx0XHRcdFIgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyBpZighQ19zZWVuX1gpIEMgPSAwO1xuXHRcdFx0XHRcdGZvcihqID0gYXJyLmxlbmd0aDsgaiA8PSBSOyArK2opIGFycltqXSA9IFtdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdLJzpcblx0XHRcdFx0XHR2YWwgPSByZWNvcmRbcmpdLnNsaWNlKDEpO1xuXHRcdFx0XHRcdGlmKHZhbC5jaGFyQXQoMCkgPT09ICdcIicpIHZhbCA9IHZhbC5zbGljZSgxLHZhbC5sZW5ndGggLSAxKTtcblx0XHRcdFx0XHRlbHNlIGlmKHZhbCA9PT0gJ1RSVUUnKSB2YWwgPSB0cnVlO1xuXHRcdFx0XHRcdGVsc2UgaWYodmFsID09PSAnRkFMU0UnKSB2YWwgPSBmYWxzZTtcblx0XHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bSh2YWwpKSkge1xuXHRcdFx0XHRcdFx0dmFsID0gZnV6enludW0odmFsKTtcblx0XHRcdFx0XHRcdGlmKG5leHRfY2VsbF9mb3JtYXQgIT09IG51bGwgJiYgZm10X2lzX2RhdGUobmV4dF9jZWxsX2Zvcm1hdCkpIHZhbCA9IG51bWRhdGUodmFsKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZSh2YWwpLmdldERhdGUoKSkpIHtcblx0XHRcdFx0XHRcdHZhbCA9IHBhcnNlRGF0ZSh2YWwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIiAmJiAoKG9wdHN8fHt9KS50eXBlICE9IFwic3RyaW5nXCIpICYmIChvcHRzfHx7fSkuY29kZXBhZ2UpIHZhbCA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZShvcHRzLmNvZGVwYWdlLCB2YWwpO1xuXHRcdFx0XHRcdENfc2Vlbl9LID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnRSc6XG5cdFx0XHRcdFx0Q19zZWVuX0UgPSB0cnVlO1xuXHRcdFx0XHRcdHZhciBmb3JtdWxhID0gcmNfdG9fYTEocmVjb3JkW3JqXS5zbGljZSgxKSwge3I6UixjOkN9KTtcblx0XHRcdFx0XHRhcnJbUl1bQ10gPSBbYXJyW1JdW0NdLCBmb3JtdWxhXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUyc6XG5cdFx0XHRcdFx0Q19zZWVuX1MgPSB0cnVlO1xuXHRcdFx0XHRcdGFycltSXVtDXSA9IFthcnJbUl1bQ10sIFwiUzVTXCJdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdHJzogYnJlYWs7IC8vIHVua25vd25cblx0XHRcdFx0Y2FzZSAnUic6IF9SID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0MnOiBfQyA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJTWUxLIGJhZCByZWNvcmQgXCIgKyByc3RyKTtcblx0XHRcdH1cblx0XHRcdGlmKENfc2Vlbl9LKSB7XG5cdFx0XHRcdGlmKGFycltSXVtDXSAmJiBhcnJbUl1bQ10ubGVuZ3RoID09IDIpIGFycltSXVtDXVswXSA9IHZhbDtcblx0XHRcdFx0ZWxzZSBhcnJbUl1bQ10gPSB2YWw7XG5cdFx0XHRcdG5leHRfY2VsbF9mb3JtYXQgPSBudWxsO1xuXHRcdFx0fVxuXHRcdFx0aWYoQ19zZWVuX1MpIHtcblx0XHRcdFx0aWYoQ19zZWVuX0UpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGhhdmUgb3duIGZvcm11bGFcIik7XG5cdFx0XHRcdHZhciBzaHJiYXNlID0gX1IgPiAtMSAmJiBhcnJbX1JdW19DXTtcblx0XHRcdFx0aWYoIXNocmJhc2UgfHwgIXNocmJhc2VbMV0pIHRocm93IG5ldyBFcnJvcihcIlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGZpbmQgYmFzZVwiKTtcblx0XHRcdFx0YXJyW1JdW0NdWzFdID0gc2hpZnRfZm9ybXVsYV9zdHIoc2hyYmFzZVsxXSwge3I6IFIgLSBfUiwgYzogQyAtIF9DfSk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ0YnOlxuXHRcdFx0dmFyIEZfc2VlbiA9IDA7XG5cdFx0XHRmb3Iocmo9MTsgcmo8cmVjb3JkLmxlbmd0aDsgKytyaikgc3dpdGNoKHJlY29yZFtyal0uY2hhckF0KDApKSB7XG5cdFx0XHRcdGNhc2UgJ1gnOiBDID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgKytGX3NlZW47IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdZJzpcblx0XHRcdFx0XHRSID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgLypDID0gMDsqL1xuXHRcdFx0XHRcdGZvcihqID0gYXJyLmxlbmd0aDsgaiA8PSBSOyArK2opIGFycltqXSA9IFtdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdNJzogTXZhbCA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpIC8gMjA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdGJzogYnJlYWs7IC8qID8/PyAqL1xuXHRcdFx0XHRjYXNlICdHJzogYnJlYWs7IC8qIGhpZGUgZ3JpZCAqL1xuXHRcdFx0XHRjYXNlICdQJzpcblx0XHRcdFx0XHRuZXh0X2NlbGxfZm9ybWF0ID0gZm9ybWF0c1twYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1MnOiBicmVhazsgLyogY2VsbCBzdHlsZSAqL1xuXHRcdFx0XHRjYXNlICdEJzogYnJlYWs7IC8qIGNvbHVtbiAqL1xuXHRcdFx0XHRjYXNlICdOJzogYnJlYWs7IC8qIGZvbnQgKi9cblx0XHRcdFx0Y2FzZSAnVyc6XG5cdFx0XHRcdFx0Y3cgPSByZWNvcmRbcmpdLnNsaWNlKDEpLnNwbGl0KFwiIFwiKTtcblx0XHRcdFx0XHRmb3IoaiA9IHBhcnNlSW50KGN3WzBdLCAxMCk7IGogPD0gcGFyc2VJbnQoY3dbMV0sIDEwKTsgKytqKSB7XG5cdFx0XHRcdFx0XHRNdmFsID0gcGFyc2VJbnQoY3dbMl0sIDEwKTtcblx0XHRcdFx0XHRcdGNvbGluZm9bai0xXSA9IE12YWwgPT09IDAgPyB7aGlkZGVuOnRydWV9OiB7d2NoOk12YWx9OyBwcm9jZXNzX2NvbChjb2xpbmZvW2otMV0pO1xuXHRcdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0MnOiAvKiBkZWZhdWx0IGNvbHVtbiBmb3JtYXQgKi9cblx0XHRcdFx0XHRDID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTtcblx0XHRcdFx0XHRpZighY29saW5mb1tDXSkgY29saW5mb1tDXSA9IHt9O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdSJzogLyogcm93IHByb3BlcnRpZXMgKi9cblx0XHRcdFx0XHRSID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTtcblx0XHRcdFx0XHRpZighcm93aW5mb1tSXSkgcm93aW5mb1tSXSA9IHt9O1xuXHRcdFx0XHRcdGlmKE12YWwgPiAwKSB7IHJvd2luZm9bUl0uaHB0ID0gTXZhbDsgcm93aW5mb1tSXS5ocHggPSBwdDJweChNdmFsKTsgfVxuXHRcdFx0XHRcdGVsc2UgaWYoTXZhbCA9PT0gMCkgcm93aW5mb1tSXS5oaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJTWUxLIGJhZCByZWNvcmQgXCIgKyByc3RyKTtcblx0XHRcdH1cblx0XHRcdGlmKEZfc2VlbiA8IDEpIG5leHRfY2VsbF9mb3JtYXQgPSBudWxsOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgYmFkIHJlY29yZCBcIiArIHJzdHIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihyb3dpbmZvLmxlbmd0aCA+IDApIHNodFsnIXJvd3MnXSA9IHJvd2luZm87XG5cdFx0aWYoY29saW5mby5sZW5ndGggPiAwKSBzaHRbJyFjb2xzJ10gPSBjb2xpbmZvO1xuXHRcdGlmKG9wdHMgJiYgb3B0cy5zaGVldFJvd3MpIGFyciA9IGFyci5zbGljZSgwLCBvcHRzLnNoZWV0Um93cyk7XG5cdFx0cmV0dXJuIFthcnIsIHNodF07XG5cdH1cblxuXHRmdW5jdGlvbiBzeWxrX3RvX3NoZWV0KGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdHZhciBhb2FzaHQgPSBzeWxrX3RvX2FvYShkLCBvcHRzKTtcblx0XHR2YXIgYW9hID0gYW9hc2h0WzBdLCB3cyA9IGFvYXNodFsxXTtcblx0XHR2YXIgbyA9IGFvYV90b19zaGVldChhb2EsIG9wdHMpO1xuXHRcdGtleXMod3MpLmZvckVhY2goZnVuY3Rpb24oaykgeyBvW2tdID0gd3Nba107IH0pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gc3lsa190b193b3JrYm9vayhkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soc3lsa190b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHRmdW5jdGlvbiB3cml0ZV93c19jZWxsX3N5bGsoY2VsbC8qOkNlbGwqLywgd3MvKjpXb3Jrc2hlZXQqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8vKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBvID0gXCJDO1lcIiArIChSKzEpICsgXCI7WFwiICsgKEMrMSkgKyBcIjtLXCI7XG5cdFx0c3dpdGNoKGNlbGwudCkge1xuXHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdG8gKz0gKGNlbGwudnx8MCk7XG5cdFx0XHRcdGlmKGNlbGwuZiAmJiAhY2VsbC5GKSBvICs9IFwiO0VcIiArIGExX3RvX3JjKGNlbGwuZiwge3I6UiwgYzpDfSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYic6IG8gKz0gY2VsbC52ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZSc6IG8gKz0gY2VsbC53IHx8IGNlbGwudjsgYnJlYWs7XG5cdFx0XHRjYXNlICdkJzogbyArPSAnXCInICsgKGNlbGwudyB8fCBjZWxsLnYpICsgJ1wiJzsgYnJlYWs7XG5cdFx0XHRjYXNlICdzJzogbyArPSAnXCInICsgY2VsbC52LnJlcGxhY2UoL1wiL2csXCJcIikucmVwbGFjZSgvOy9nLCBcIjs7XCIpICsgJ1wiJzsgYnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gd3JpdGVfd3NfY29sc19zeWxrKG91dCwgY29scykge1xuXHRcdGNvbHMuZm9yRWFjaChmdW5jdGlvbihjb2wsIGkpIHtcblx0XHRcdHZhciByZWMgPSBcIkY7V1wiICsgKGkrMSkgKyBcIiBcIiArIChpKzEpICsgXCIgXCI7XG5cdFx0XHRpZihjb2wuaGlkZGVuKSByZWMgKz0gXCIwXCI7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYodHlwZW9mIGNvbC53aWR0aCA9PSAnbnVtYmVyJyAmJiAhY29sLndweCkgY29sLndweCA9IHdpZHRoMnB4KGNvbC53aWR0aCk7XG5cdFx0XHRcdGlmKHR5cGVvZiBjb2wud3B4ID09ICdudW1iZXInICYmICFjb2wud2NoKSBjb2wud2NoID0gcHgyY2hhcihjb2wud3B4KTtcblx0XHRcdFx0aWYodHlwZW9mIGNvbC53Y2ggPT0gJ251bWJlcicpIHJlYyArPSBNYXRoLnJvdW5kKGNvbC53Y2gpO1xuXHRcdFx0fVxuXHRcdFx0aWYocmVjLmNoYXJBdChyZWMubGVuZ3RoIC0gMSkgIT0gXCIgXCIpIG91dC5wdXNoKHJlYyk7XG5cdFx0fSk7XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV93c19yb3dzX3N5bGsob3V0Lyo6QXJyYXk8c3RyaW5nPiovLCByb3dzLyo6QXJyYXk8Um93SW5mbz4qLykge1xuXHRcdHJvd3MuZm9yRWFjaChmdW5jdGlvbihyb3csIGkpIHtcblx0XHRcdHZhciByZWMgPSBcIkY7XCI7XG5cdFx0XHRpZihyb3cuaGlkZGVuKSByZWMgKz0gXCJNMDtcIjtcblx0XHRcdGVsc2UgaWYocm93LmhwdCkgcmVjICs9IFwiTVwiICsgMjAgKiByb3cuaHB0ICsgXCI7XCI7XG5cdFx0XHRlbHNlIGlmKHJvdy5ocHgpIHJlYyArPSBcIk1cIiArIDIwICogcHgycHQocm93LmhweCkgKyBcIjtcIjtcblx0XHRcdGlmKHJlYy5sZW5ndGggPiAyKSBvdXQucHVzaChyZWMgKyBcIlJcIiArIChpKzEpKTtcblx0XHR9KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX3N5bGsod3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9hbnkqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIHByZWFtYmxlLyo6QXJyYXk8c3RyaW5nPiovID0gW1wiSUQ7UFdYTDtOO0VcIl0sIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdHZhciBSUyA9IFwiXFxyXFxuXCI7XG5cblx0XHRwcmVhbWJsZS5wdXNoKFwiUDtQR2VuZXJhbFwiKTtcblx0XHRwcmVhbWJsZS5wdXNoKFwiRjtQMDtERzBHODtNMjU1XCIpO1xuXHRcdGlmKHdzWychY29scyddKSB3cml0ZV93c19jb2xzX3N5bGsocHJlYW1ibGUsIHdzWychY29scyddKTtcblx0XHRpZih3c1snIXJvd3MnXSkgd3JpdGVfd3Nfcm93c19zeWxrKHByZWFtYmxlLCB3c1snIXJvd3MnXSk7XG5cblx0XHRwcmVhbWJsZS5wdXNoKFwiQjtZXCIgKyAoci5lLnIgLSByLnMuciArIDEpICsgXCI7WFwiICsgKHIuZS5jIC0gci5zLmMgKyAxKSArIFwiO0RcIiArIFtyLnMuYyxyLnMucixyLmUuYyxyLmUucl0uam9pbihcIiBcIikpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0dmFyIGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ106IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgKGNlbGwudiA9PSBudWxsICYmICghY2VsbC5mIHx8IGNlbGwuRikpKSBjb250aW51ZTtcblx0XHRcdFx0by5wdXNoKHdyaXRlX3dzX2NlbGxfc3lsayhjZWxsLCB3cywgUiwgQywgb3B0cykpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcHJlYW1ibGUuam9pbihSUykgKyBSUyArIG8uam9pbihSUykgKyBSUyArIFwiRVwiICsgUlM7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBzeWxrX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBzeWxrX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX3N5bGtcblx0fTtcbn0pKCk7XG5cbnZhciBESUYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBkaWZfdG9fYW9hKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6QU9BKi8ge1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHJldHVybiBkaWZfdG9fYW9hX3N0cihCYXNlNjRfZGVjb2RlKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2JpbmFyeSc6IHJldHVybiBkaWZfdG9fYW9hX3N0cihkLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2J1ZmZlcic6IHJldHVybiBkaWZfdG9fYW9hX3N0cihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkKSA/IGQudG9TdHJpbmcoJ2JpbmFyeScpIDogYTJzKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2FycmF5JzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKGNjMnN0cihkKSwgb3B0cyk7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0fVxuXHRmdW5jdGlvbiBkaWZfdG9fYW9hX3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpBT0EqLyB7XG5cdFx0dmFyIHJlY29yZHMgPSBzdHIuc3BsaXQoJ1xcbicpLCBSID0gLTEsIEMgPSAtMSwgcmkgPSAwLCBhcnIvKjpBT0EqLyA9IFtdO1xuXHRcdGZvciAoOyByaSAhPT0gcmVjb3Jkcy5sZW5ndGg7ICsrcmkpIHtcblx0XHRcdGlmIChyZWNvcmRzW3JpXS50cmltKCkgPT09ICdCT1QnKSB7IGFyclsrK1JdID0gW107IEMgPSAwOyBjb250aW51ZTsgfVxuXHRcdFx0aWYgKFIgPCAwKSBjb250aW51ZTtcblx0XHRcdHZhciBtZXRhZGF0YSA9IHJlY29yZHNbcmldLnRyaW0oKS5zcGxpdChcIixcIik7XG5cdFx0XHR2YXIgdHlwZSA9IG1ldGFkYXRhWzBdLCB2YWx1ZSA9IG1ldGFkYXRhWzFdO1xuXHRcdFx0KytyaTtcblx0XHRcdHZhciBkYXRhID0gcmVjb3Jkc1tyaV0gfHwgXCJcIjtcblx0XHRcdHdoaWxlKCgoZGF0YS5tYXRjaCgvW1wiXS9nKXx8W10pLmxlbmd0aCAmIDEpICYmIHJpIDwgcmVjb3Jkcy5sZW5ndGggLSAxKSBkYXRhICs9IFwiXFxuXCIgKyByZWNvcmRzWysrcmldO1xuXHRcdFx0ZGF0YSA9IGRhdGEudHJpbSgpO1xuXHRcdFx0c3dpdGNoICgrdHlwZSkge1xuXHRcdFx0XHRjYXNlIC0xOlxuXHRcdFx0XHRcdGlmIChkYXRhID09PSAnQk9UJykgeyBhcnJbKytSXSA9IFtdOyBDID0gMDsgY29udGludWU7IH1cblx0XHRcdFx0XHRlbHNlIGlmIChkYXRhICE9PSAnRU9EJykgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIERJRiBzcGVjaWFsIGNvbW1hbmQgXCIgKyBkYXRhKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdGlmKGRhdGEgPT09ICdUUlVFJykgYXJyW1JdW0NdID0gdHJ1ZTtcblx0XHRcdFx0XHRlbHNlIGlmKGRhdGEgPT09ICdGQUxTRScpIGFycltSXVtDXSA9IGZhbHNlO1xuXHRcdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKHZhbHVlKSkpIGFycltSXVtDXSA9IGZ1enp5bnVtKHZhbHVlKTtcblx0XHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUodmFsdWUpLmdldERhdGUoKSkpIGFycltSXVtDXSA9IHBhcnNlRGF0ZSh2YWx1ZSk7XG5cdFx0XHRcdFx0ZWxzZSBhcnJbUl1bQ10gPSB2YWx1ZTtcblx0XHRcdFx0XHQrK0M7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0ZGF0YSA9IGRhdGEuc2xpY2UoMSxkYXRhLmxlbmd0aC0xKTtcblx0XHRcdFx0XHRkYXRhID0gZGF0YS5yZXBsYWNlKC9cIlwiL2csICdcIicpO1xuXHRcdFx0XHRcdGlmKERJRl9YTCAmJiBkYXRhICYmIGRhdGEubWF0Y2goL149XCIuKlwiJC8pKSBkYXRhID0gZGF0YS5zbGljZSgyLCAtMSk7XG5cdFx0XHRcdFx0YXJyW1JdW0MrK10gPSBkYXRhICE9PSAnJyA/IGRhdGEgOiBudWxsO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGEgPT09ICdFT0QnKSBicmVhaztcblx0XHR9XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZGlmX3RvX3NoZWV0KHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIGFvYV90b19zaGVldChkaWZfdG9fYW9hKHN0ciwgb3B0cyksIG9wdHMpOyB9XG5cdGZ1bmN0aW9uIGRpZl90b193b3JrYm9vayhzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGRpZl90b19zaGVldChzdHIsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdHZhciBzaGVldF90b19kaWYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRcdHZhciBwdXNoX2ZpZWxkID0gZnVuY3Rpb24gcGYoby8qOkFycmF5PHN0cmluZz4qLywgdG9waWMvKjpzdHJpbmcqLywgdi8qOm51bWJlciovLCBuLyo6bnVtYmVyKi8sIHMvKjpzdHJpbmcqLykge1xuXHRcdFx0by5wdXNoKHRvcGljKTtcblx0XHRcdG8ucHVzaCh2ICsgXCIsXCIgKyBuKTtcblx0XHRcdG8ucHVzaCgnXCInICsgcy5yZXBsYWNlKC9cIi9nLCdcIlwiJykgKyAnXCInKTtcblx0XHR9O1xuXHRcdHZhciBwdXNoX3ZhbHVlID0gZnVuY3Rpb24gcG8oby8qOkFycmF5PHN0cmluZz4qLywgdHlwZS8qOm51bWJlciovLCB2Lyo6YW55Ki8sIHMvKjpzdHJpbmcqLykge1xuXHRcdFx0by5wdXNoKHR5cGUgKyBcIixcIiArIHYpO1xuXHRcdFx0by5wdXNoKHR5cGUgPT0gMSA/ICdcIicgKyBzLnJlcGxhY2UoL1wiL2csJ1wiXCInKSArICdcIicgOiBzKTtcblx0XHR9O1xuXHRcdHJldHVybiBmdW5jdGlvbiBzaGVldF90b19kaWYod3MvKjpXb3Jrc2hlZXQqLy8qOjosIG9wdHM6P2FueSovKS8qOnN0cmluZyovIHtcblx0XHRcdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiVEFCTEVcIiwgMCwgMSwgXCJzaGVldGpzXCIpO1xuXHRcdFx0cHVzaF9maWVsZChvLCBcIlZFQ1RPUlNcIiwgMCwgci5lLnIgLSByLnMuciArIDEsXCJcIik7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiVFVQTEVTXCIsIDAsIHIuZS5jIC0gci5zLmMgKyAxLFwiXCIpO1xuXHRcdFx0cHVzaF9maWVsZChvLCBcIkRBVEFcIiwgMCwgMCxcIlwiKTtcblx0XHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdFx0cHVzaF92YWx1ZShvLCAtMSwgMCwgXCJCT1RcIik7XG5cdFx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRcdGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbY29vcmRdO1xuXHRcdFx0XHRcdGlmKCFjZWxsKSB7IHB1c2hfdmFsdWUobywgMSwgMCwgXCJcIik7IGNvbnRpbnVlO31cblx0XHRcdFx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRcdFx0XHRjYXNlICduJzpcblx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IERJRl9YTCA/IGNlbGwudyA6IGNlbGwudjtcblx0XHRcdFx0XHRcdFx0aWYoIXZhbCAmJiBjZWxsLnYgIT0gbnVsbCkgdmFsID0gY2VsbC52O1xuXHRcdFx0XHRcdFx0XHRpZih2YWwgPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRcdGlmKERJRl9YTCAmJiBjZWxsLmYgJiYgIWNlbGwuRikgcHVzaF92YWx1ZShvLCAxLCAwLCBcIj1cIiArIGNlbGwuZik7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBwdXNoX3ZhbHVlKG8sIDEsIDAsIFwiXCIpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2UgcHVzaF92YWx1ZShvLCAwLCB2YWwsIFwiVlwiKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdiJzpcblx0XHRcdFx0XHRcdFx0cHVzaF92YWx1ZShvLCAwLCBjZWxsLnYgPyAxIDogMCwgY2VsbC52ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCIpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3MnOlxuXHRcdFx0XHRcdFx0XHRwdXNoX3ZhbHVlKG8sIDEsIDAsICghRElGX1hMIHx8IGlzTmFOKGNlbGwudikpID8gY2VsbC52IDogJz1cIicgKyBjZWxsLnYgKyAnXCInKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdkJzpcblx0XHRcdFx0XHRcdFx0aWYoIWNlbGwudykgY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnogfHwgdGFibGVfZm10WzE0XSwgZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkpO1xuXHRcdFx0XHRcdFx0XHRpZihESUZfWEwpIHB1c2hfdmFsdWUobywgMCwgY2VsbC53LCBcIlZcIik7XG5cdFx0XHRcdFx0XHRcdGVsc2UgcHVzaF92YWx1ZShvLCAxLCAwLCBjZWxsLncpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6IHB1c2hfdmFsdWUobywgMSwgMCwgXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRwdXNoX3ZhbHVlKG8sIC0xLCAwLCBcIkVPRFwiKTtcblx0XHRcdHZhciBSUyA9IFwiXFxyXFxuXCI7XG5cdFx0XHR2YXIgb28gPSBvLmpvaW4oUlMpO1xuXHRcdFx0Ly93aGlsZSgob28ubGVuZ3RoICYgMHg3RikgIT0gMCkgb28gKz0gXCJcXDBcIjtcblx0XHRcdHJldHVybiBvbztcblx0XHR9O1xuXHR9KSgpO1xuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBkaWZfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IGRpZl90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19kaWZcblx0fTtcbn0pKCk7XG5cbnZhciBFVEggPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBkZWNvZGUocy8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHMucmVwbGFjZSgvXFxcXGIvZyxcIlxcXFxcIikucmVwbGFjZSgvXFxcXGMvZyxcIjpcIikucmVwbGFjZSgvXFxcXG4vZyxcIlxcblwiKTsgfVxuXHRmdW5jdGlvbiBlbmNvZGUocy8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIHMucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxiXCIpLnJlcGxhY2UoLzovZywgXCJcXFxcY1wiKS5yZXBsYWNlKC9cXG4vZyxcIlxcXFxuXCIpOyB9XG5cblx0ZnVuY3Rpb24gZXRoX3RvX2FvYShzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpBT0EqLyB7XG5cdFx0dmFyIHJlY29yZHMgPSBzdHIuc3BsaXQoJ1xcbicpLCBSID0gLTEsIEMgPSAtMSwgcmkgPSAwLCBhcnIvKjpBT0EqLyA9IFtdO1xuXHRcdGZvciAoOyByaSAhPT0gcmVjb3Jkcy5sZW5ndGg7ICsrcmkpIHtcblx0XHRcdHZhciByZWNvcmQgPSByZWNvcmRzW3JpXS50cmltKCkuc3BsaXQoXCI6XCIpO1xuXHRcdFx0aWYocmVjb3JkWzBdICE9PSAnY2VsbCcpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIGFkZHIgPSBkZWNvZGVfY2VsbChyZWNvcmRbMV0pO1xuXHRcdFx0aWYoYXJyLmxlbmd0aCA8PSBhZGRyLnIpIGZvcihSID0gYXJyLmxlbmd0aDsgUiA8PSBhZGRyLnI7ICsrUikgaWYoIWFycltSXSkgYXJyW1JdID0gW107XG5cdFx0XHRSID0gYWRkci5yOyBDID0gYWRkci5jO1xuXHRcdFx0c3dpdGNoKHJlY29yZFsyXSkge1xuXHRcdFx0XHRjYXNlICd0JzogYXJyW1JdW0NdID0gZGVjb2RlKHJlY29yZFszXSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICd2JzogYXJyW1JdW0NdID0gK3JlY29yZFszXTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3Z0Zic6IHZhciBfZiA9IHJlY29yZFtyZWNvcmQubGVuZ3RoIC0gMV07XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlICd2dGMnOlxuXHRcdFx0XHRcdHN3aXRjaChyZWNvcmRbM10pIHtcblx0XHRcdFx0XHRcdGNhc2UgJ25sJzogYXJyW1JdW0NdID0gK3JlY29yZFs0XSA/IHRydWUgOiBmYWxzZTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OiBhcnJbUl1bQ10gPSArcmVjb3JkWzRdOyBicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYocmVjb3JkWzJdID09ICd2dGYnKSBhcnJbUl1bQ10gPSBbYXJyW1JdW0NdLCBfZl07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKG9wdHMgJiYgb3B0cy5zaGVldFJvd3MpIGFyciA9IGFyci5zbGljZSgwLCBvcHRzLnNoZWV0Um93cyk7XG5cdFx0cmV0dXJuIGFycjtcblx0fVxuXG5cdGZ1bmN0aW9uIGV0aF90b19zaGVldChkLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gYW9hX3RvX3NoZWV0KGV0aF90b19hb2EoZCwgb3B0cyksIG9wdHMpOyB9XG5cdGZ1bmN0aW9uIGV0aF90b193b3JrYm9vayhkLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhldGhfdG9fc2hlZXQoZCwgb3B0cyksIG9wdHMpOyB9XG5cblx0dmFyIGhlYWRlciA9IFtcblx0XHRcInNvY2lhbGNhbGM6dmVyc2lvbjoxLjVcIixcblx0XHRcIk1JTUUtVmVyc2lvbjogMS4wXCIsXG5cdFx0XCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmVcIlxuXHRdLmpvaW4oXCJcXG5cIik7XG5cblx0dmFyIHNlcCA9IFtcblx0XHRcIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmVcIixcblx0XHRcIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiXG5cdF0uam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG5cblx0LyogVE9ETzogdGhlIG90aGVyIHBhcnRzICovXG5cdHZhciBtZXRhID0gW1xuXHRcdFwiIyBTb2NpYWxDYWxjIFNwcmVhZHNoZWV0IENvbnRyb2wgU2F2ZVwiLFxuXHRcdFwicGFydDpzaGVldFwiXG5cdF0uam9pbihcIlxcblwiKTtcblxuXHR2YXIgZW5kID0gXCItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS1cIjtcblxuXHRmdW5jdGlvbiBzaGVldF90b19ldGhfZGF0YSh3cy8qOldvcmtzaGVldCovKS8qOnN0cmluZyovIHtcblx0XHRpZighd3MgfHwgIXdzWychcmVmJ10pIHJldHVybiBcIlwiO1xuXHRcdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIG9vLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGNlbGwsIGNvb3JkID0gXCJcIjtcblx0XHR2YXIgciA9IGRlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0XHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHRcdGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tjb29yZF07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudiA9PSBudWxsIHx8IGNlbGwudCA9PT0gJ3onKSBjb250aW51ZTtcblx0XHRcdFx0b28gPSBbXCJjZWxsXCIsIGNvb3JkLCAndCddO1xuXHRcdFx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRcdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6IG9vLnB1c2goZW5jb2RlKGNlbGwudikpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICduJzpcblx0XHRcdFx0XHRcdGlmKCFjZWxsLmYpIHsgb29bMl09J3YnOyBvb1szXT1jZWxsLnY7IH1cblx0XHRcdFx0XHRcdGVsc2UgeyBvb1syXT0ndnRmJzsgb29bM109J24nOyBvb1s0XT1jZWxsLnY7IG9vWzVdPWVuY29kZShjZWxsLmYpOyB9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdiJzpcblx0XHRcdFx0XHRcdG9vWzJdID0gJ3Z0JysoY2VsbC5mPydmJzonYycpOyBvb1szXT0nbmwnOyBvb1s0XT1jZWxsLnY/XCIxXCI6XCIwXCI7XG5cdFx0XHRcdFx0XHRvb1s1XSA9IGVuY29kZShjZWxsLmZ8fChjZWxsLnY/J1RSVUUnOidGQUxTRScpKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdFx0dmFyIHQgPSBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKTtcblx0XHRcdFx0XHRcdG9vWzJdID0gJ3Z0Yyc7IG9vWzNdID0gJ25kJzsgb29bNF0gPSBcIlwiK3Q7XG5cdFx0XHRcdFx0XHRvb1s1XSA9IGNlbGwudyB8fCBTU0ZfZm9ybWF0KGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdLCB0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2UnOiBjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvLnB1c2gob28uam9pbihcIjpcIikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvLnB1c2goXCJzaGVldDpjOlwiICsgKHIuZS5jLXIucy5jKzEpICsgXCI6cjpcIiArIChyLmUuci1yLnMucisxKSArIFwiOnR2ZjoxXCIpO1xuXHRcdG8ucHVzaChcInZhbHVlZm9ybWF0OjE6dGV4dC13aWtpXCIpO1xuXHRcdC8vby5wdXNoKFwiY29waWVkZnJvbTpcIiArIHdzWychcmVmJ10pOyAvLyBjbGlwYm9hcmQgb25seVxuXHRcdHJldHVybiBvLmpvaW4oXCJcXG5cIik7XG5cdH1cblxuXHRmdW5jdGlvbiBzaGVldF90b19ldGgod3MvKjpXb3Jrc2hlZXQqLy8qOjosIG9wdHM6P2FueSovKS8qOnN0cmluZyovIHtcblx0XHRyZXR1cm4gW2hlYWRlciwgc2VwLCBtZXRhLCBzZXAsIHNoZWV0X3RvX2V0aF9kYXRhKHdzKSwgZW5kXS5qb2luKFwiXFxuXCIpO1xuXHRcdC8vIHJldHVybiBbXCJ2ZXJzaW9uOjEuNVwiLCBzaGVldF90b19ldGhfZGF0YSh3cyldLmpvaW4oXCJcXG5cIik7IC8vIGNsaXBib2FyZCBmb3JtXG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBldGhfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IGV0aF90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19ldGhcblx0fTtcbn0pKCk7XG5cbnZhciBQUk4gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBzZXRfdGV4dF9hcnIoZGF0YS8qOnN0cmluZyovLCBhcnIvKjpBT0EqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIG8vKjphbnkqLykge1xuXHRcdGlmKG8ucmF3KSBhcnJbUl1bQ10gPSBkYXRhO1xuXHRcdGVsc2UgaWYoZGF0YSA9PT0gXCJcIil7LyogZW1wdHkgKi99XG5cdFx0ZWxzZSBpZihkYXRhID09PSAnVFJVRScpIGFycltSXVtDXSA9IHRydWU7XG5cdFx0ZWxzZSBpZihkYXRhID09PSAnRkFMU0UnKSBhcnJbUl1bQ10gPSBmYWxzZTtcblx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bShkYXRhKSkpIGFycltSXVtDXSA9IGZ1enp5bnVtKGRhdGEpO1xuXHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZShkYXRhKS5nZXREYXRlKCkpKSBhcnJbUl1bQ10gPSBwYXJzZURhdGUoZGF0YSk7XG5cdFx0ZWxzZSBhcnJbUl1bQ10gPSBkYXRhO1xuXHR9XG5cblx0ZnVuY3Rpb24gcHJuX3RvX2FvYV9zdHIoZi8qOnN0cmluZyovLCBvcHRzKS8qOkFPQSovIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0dmFyIGFyci8qOkFPQSovID0gKFtdLyo6YW55Ki8pO1xuXHRcdGlmKCFmIHx8IGYubGVuZ3RoID09PSAwKSByZXR1cm4gYXJyO1xuXHRcdHZhciBsaW5lcyA9IGYuc3BsaXQoL1tcXHJcXG5dLyk7XG5cdFx0dmFyIEwgPSBsaW5lcy5sZW5ndGggLSAxO1xuXHRcdHdoaWxlKEwgPj0gMCAmJiBsaW5lc1tMXS5sZW5ndGggPT09IDApIC0tTDtcblx0XHR2YXIgc3RhcnQgPSAxMCwgaWR4ID0gMDtcblx0XHR2YXIgUiA9IDA7XG5cdFx0Zm9yKDsgUiA8PSBMOyArK1IpIHtcblx0XHRcdGlkeCA9IGxpbmVzW1JdLmluZGV4T2YoXCIgXCIpO1xuXHRcdFx0aWYoaWR4ID09IC0xKSBpZHggPSBsaW5lc1tSXS5sZW5ndGg7IGVsc2UgaWR4Kys7XG5cdFx0XHRzdGFydCA9IE1hdGgubWF4KHN0YXJ0LCBpZHgpO1xuXHRcdH1cblx0XHRmb3IoUiA9IDA7IFIgPD0gTDsgKytSKSB7XG5cdFx0XHRhcnJbUl0gPSBbXTtcblx0XHRcdC8qIFRPRE86IGNvbmZpcm0gdGhhdCB3aWR0aHMgYXJlIGFsd2F5cyAxMCAqL1xuXHRcdFx0dmFyIEMgPSAwO1xuXHRcdFx0c2V0X3RleHRfYXJyKGxpbmVzW1JdLnNsaWNlKDAsIHN0YXJ0KS50cmltKCksIGFyciwgUiwgQywgbyk7XG5cdFx0XHRmb3IoQyA9IDE7IEMgPD0gKGxpbmVzW1JdLmxlbmd0aCAtIHN0YXJ0KS8xMCArIDE7ICsrQylcblx0XHRcdFx0c2V0X3RleHRfYXJyKGxpbmVzW1JdLnNsaWNlKHN0YXJ0KyhDLTEpKjEwLHN0YXJ0K0MqMTApLnRyaW0oKSxhcnIsUixDLG8pO1xuXHRcdH1cblx0XHRpZihvLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG8uc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0Ly8gTGlzdCBvZiBhY2NlcHRlZCBDU1Ygc2VwYXJhdG9yc1xuXHR2YXIgZ3Vlc3Nfc2VwcyA9IHtcblx0XHQvKjo6WyovMHgyQy8qOjpdKi86ICcsJyxcblx0XHQvKjo6WyovMHgwOS8qOjpdKi86IFwiXFx0XCIsXG5cdFx0Lyo6OlsqLzB4M0IvKjo6XSovOiAnOycsXG5cdFx0Lyo6OlsqLzB4N0MvKjo6XSovOiAnfCdcblx0fTtcblxuXHQvLyBDU1Ygc2VwYXJhdG9yIHdlaWdodHMgdG8gYmUgdXNlZCBpbiBjYXNlIG9mIGVxdWFsIG51bWJlcnNcblx0dmFyIGd1ZXNzX3NlcF93ZWlnaHRzID0ge1xuXHRcdC8qOjpbKi8weDJDLyo6Ol0qLzogMyxcblx0XHQvKjo6WyovMHgwOS8qOjpdKi86IDIsXG5cdFx0Lyo6OlsqLzB4M0IvKjo6XSovOiAxLFxuXHRcdC8qOjpbKi8weDdDLyo6Ol0qLzogMFxuXHR9O1xuXG5cdGZ1bmN0aW9uIGd1ZXNzX3NlcChzdHIpIHtcblx0XHR2YXIgY250ID0ge30sIGluc3RyID0gZmFsc2UsIGVuZCA9IDAsIGNjID0gMDtcblx0XHRmb3IoO2VuZCA8IHN0ci5sZW5ndGg7KytlbmQpIHtcblx0XHRcdGlmKChjYz1zdHIuY2hhckNvZGVBdChlbmQpKSA9PSAweDIyKSBpbnN0ciA9ICFpbnN0cjtcblx0XHRcdGVsc2UgaWYoIWluc3RyICYmIGNjIGluIGd1ZXNzX3NlcHMpIGNudFtjY10gPSAoY250W2NjXXx8MCkrMTtcblx0XHR9XG5cblx0XHRjYyA9IFtdO1xuXHRcdGZvcihlbmQgaW4gY250KSBpZiAoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjbnQsIGVuZCkgKSB7XG5cdFx0XHRjYy5wdXNoKFsgY250W2VuZF0sIGVuZCBdKTtcblx0XHR9XG5cblx0XHRpZiAoICFjYy5sZW5ndGggKSB7XG5cdFx0XHRjbnQgPSBndWVzc19zZXBfd2VpZ2h0cztcblx0XHRcdGZvcihlbmQgaW4gY250KSBpZiAoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjbnQsIGVuZCkgKSB7XG5cdFx0XHRcdGNjLnB1c2goWyBjbnRbZW5kXSwgZW5kIF0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNjLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYVswXSAtIGJbMF0gfHwgZ3Vlc3Nfc2VwX3dlaWdodHNbYVsxXV0gLSBndWVzc19zZXBfd2VpZ2h0c1tiWzFdXTsgfSk7XG5cblx0XHRyZXR1cm4gZ3Vlc3Nfc2Vwc1tjYy5wb3AoKVsxXV0gfHwgMHgyQztcblx0fVxuXG5cdGZ1bmN0aW9uIGRzdl90b19zaGVldF9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHR2YXIgc2VwID0gXCJcIjtcblx0XHRpZihERU5TRSAhPSBudWxsICYmIG8uZGVuc2UgPT0gbnVsbCkgby5kZW5zZSA9IERFTlNFO1xuXHRcdHZhciB3cy8qOldvcmtzaGVldCovID0gby5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0XHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHtzOiB7YzowLCByOjB9LCBlOiB7YzowLCByOjB9fS8qOmFueSovKTtcblxuXHRcdGlmKHN0ci5zbGljZSgwLDQpID09IFwic2VwPVwiKSB7XG5cdFx0XHQvLyBJZiB0aGUgbGluZSBlbmRzIGluIFxcclxcblxuXHRcdFx0aWYoc3RyLmNoYXJDb2RlQXQoNSkgPT0gMTMgJiYgc3RyLmNoYXJDb2RlQXQoNikgPT0gMTAgKSB7XG5cdFx0XHRcdHNlcCA9IHN0ci5jaGFyQXQoNCk7IHN0ciA9IHN0ci5zbGljZSg3KTtcblx0XHRcdH1cblx0XHRcdC8vIElmIGxpbmUgZW5kcyBpbiBcXHIgT1IgXFxuXG5cdFx0XHRlbHNlIGlmKHN0ci5jaGFyQ29kZUF0KDUpID09IDEzIHx8IHN0ci5jaGFyQ29kZUF0KDUpID09IDEwICkge1xuXHRcdFx0XHRzZXAgPSBzdHIuY2hhckF0KDQpOyBzdHIgPSBzdHIuc2xpY2UoNik7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHNlcCA9IGd1ZXNzX3NlcChzdHIuc2xpY2UoMCwxMDI0KSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYobyAmJiBvLkZTKSBzZXAgPSBvLkZTO1xuXHRcdGVsc2Ugc2VwID0gZ3Vlc3Nfc2VwKHN0ci5zbGljZSgwLDEwMjQpKTtcblx0XHR2YXIgUiA9IDAsIEMgPSAwLCB2ID0gMDtcblx0XHR2YXIgc3RhcnQgPSAwLCBlbmQgPSAwLCBzZXBjYyA9IHNlcC5jaGFyQ29kZUF0KDApLCBpbnN0ciA9IGZhbHNlLCBjYz0wLCBzdGFydGNjPXN0ci5jaGFyQ29kZUF0KDApO1xuXHRcdHN0ciA9IHN0ci5yZXBsYWNlKC9cXHJcXG4vbWcsIFwiXFxuXCIpO1xuXHRcdHZhciBfcmUvKjo/UmVnRXhwKi8gPSBvLmRhdGVORiAhPSBudWxsID8gZGF0ZU5GX3JlZ2V4KG8uZGF0ZU5GKSA6IG51bGw7XG5cdFx0ZnVuY3Rpb24gZmluaXNoX2NlbGwoKSB7XG5cdFx0XHR2YXIgcyA9IHN0ci5zbGljZShzdGFydCwgZW5kKTtcblx0XHRcdHZhciBjZWxsID0gKHt9Lyo6YW55Ki8pO1xuXHRcdFx0aWYocy5jaGFyQXQoMCkgPT0gJ1wiJyAmJiBzLmNoYXJBdChzLmxlbmd0aCAtIDEpID09ICdcIicpIHMgPSBzLnNsaWNlKDEsLTEpLnJlcGxhY2UoL1wiXCIvZywnXCInKTtcblx0XHRcdGlmKHMubGVuZ3RoID09PSAwKSBjZWxsLnQgPSAneic7XG5cdFx0XHRlbHNlIGlmKG8ucmF3KSB7IGNlbGwudCA9ICdzJzsgY2VsbC52ID0gczsgfVxuXHRcdFx0ZWxzZSBpZihzLnRyaW0oKS5sZW5ndGggPT09IDApIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzOyB9XG5cdFx0XHRlbHNlIGlmKHMuY2hhckNvZGVBdCgwKSA9PSAweDNEKSB7XG5cdFx0XHRcdGlmKHMuY2hhckNvZGVBdCgxKSA9PSAweDIyICYmIHMuY2hhckNvZGVBdChzLmxlbmd0aCAtIDEpID09IDB4MjIpIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzLnNsaWNlKDIsLTEpLnJlcGxhY2UoL1wiXCIvZywnXCInKTsgfVxuXHRcdFx0XHRlbHNlIGlmKGZ1enp5Zm1sYShzKSkgeyBjZWxsLnQgPSAnbic7IGNlbGwuZiA9IHMuc2xpY2UoMSk7IH1cblx0XHRcdFx0ZWxzZSB7IGNlbGwudCA9ICdzJzsgY2VsbC52ID0gczsgfSB9XG5cdFx0XHRlbHNlIGlmKHMgPT0gXCJUUlVFXCIpIHsgY2VsbC50ID0gJ2InOyBjZWxsLnYgPSB0cnVlOyB9XG5cdFx0XHRlbHNlIGlmKHMgPT0gXCJGQUxTRVwiKSB7IGNlbGwudCA9ICdiJzsgY2VsbC52ID0gZmFsc2U7IH1cblx0XHRcdGVsc2UgaWYoIWlzTmFOKHYgPSBmdXp6eW51bShzKSkpIHsgY2VsbC50ID0gJ24nOyBpZihvLmNlbGxUZXh0ICE9PSBmYWxzZSkgY2VsbC53ID0gczsgY2VsbC52ID0gdjsgfVxuXHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKHMpLmdldERhdGUoKSkgfHwgX3JlICYmIHMubWF0Y2goX3JlKSkge1xuXHRcdFx0XHRjZWxsLnogPSBvLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0XHR2YXIgayA9IDA7XG5cdFx0XHRcdGlmKF9yZSAmJiBzLm1hdGNoKF9yZSkpeyBzPWRhdGVORl9maXgocywgby5kYXRlTkYsIChzLm1hdGNoKF9yZSl8fFtdKSk7IGs9MTsgfVxuXHRcdFx0XHRpZihvLmNlbGxEYXRlcykgeyBjZWxsLnQgPSAnZCc7IGNlbGwudiA9IHBhcnNlRGF0ZShzLCBrKTsgfVxuXHRcdFx0XHRlbHNlIHsgY2VsbC50ID0gJ24nOyBjZWxsLnYgPSBkYXRlbnVtKHBhcnNlRGF0ZShzLCBrKSk7IH1cblx0XHRcdFx0aWYoby5jZWxsVGV4dCAhPT0gZmFsc2UpIGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56LCBjZWxsLnYgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZW51bShjZWxsLnYpOmNlbGwudik7XG5cdFx0XHRcdGlmKCFvLmNlbGxORikgZGVsZXRlIGNlbGwuejtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNlbGwudCA9ICdzJztcblx0XHRcdFx0Y2VsbC52ID0gcztcblx0XHRcdH1cblx0XHRcdGlmKGNlbGwudCA9PSAneicpe31cblx0XHRcdGVsc2UgaWYoby5kZW5zZSkgeyBpZighd3NbUl0pIHdzW1JdID0gW107IHdzW1JdW0NdID0gY2VsbDsgfVxuXHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7YzpDLHI6Un0pXSA9IGNlbGw7XG5cdFx0XHRzdGFydCA9IGVuZCsxOyBzdGFydGNjID0gc3RyLmNoYXJDb2RlQXQoc3RhcnQpO1xuXHRcdFx0aWYocmFuZ2UuZS5jIDwgQykgcmFuZ2UuZS5jID0gQztcblx0XHRcdGlmKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XG5cdFx0XHRpZihjYyA9PSBzZXBjYykgKytDOyBlbHNlIHsgQyA9IDA7ICsrUjsgaWYoby5zaGVldFJvd3MgJiYgby5zaGVldFJvd3MgPD0gUikgcmV0dXJuIHRydWU7IH1cblx0XHR9XG5cdFx0b3V0ZXI6IGZvcig7ZW5kIDwgc3RyLmxlbmd0aDsrK2VuZCkgc3dpdGNoKChjYz1zdHIuY2hhckNvZGVBdChlbmQpKSkge1xuXHRcdFx0Y2FzZSAweDIyOiBpZihzdGFydGNjID09PSAweDIyKSBpbnN0ciA9ICFpbnN0cjsgYnJlYWs7XG5cdFx0XHRjYXNlIHNlcGNjOiBjYXNlIDB4MGE6IGNhc2UgMHgwZDogaWYoIWluc3RyICYmIGZpbmlzaF9jZWxsKCkpIGJyZWFrIG91dGVyOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGJyZWFrO1xuXHRcdH1cblx0XHRpZihlbmQgLSBzdGFydCA+IDApIGZpbmlzaF9jZWxsKCk7XG5cblx0XHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRyZXR1cm4gd3M7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fc2hlZXRfc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0XHRpZighKG9wdHMgJiYgb3B0cy5QUk4pKSByZXR1cm4gZHN2X3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHRcdGlmKG9wdHMuRlMpIHJldHVybiBkc3ZfdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdFx0aWYoc3RyLnNsaWNlKDAsNCkgPT0gXCJzZXA9XCIpIHJldHVybiBkc3ZfdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdFx0aWYoc3RyLmluZGV4T2YoXCJcXHRcIikgPj0gMCB8fCBzdHIuaW5kZXhPZihcIixcIikgPj0gMCB8fCBzdHIuaW5kZXhPZihcIjtcIikgPj0gMCkgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRyZXR1cm4gYW9hX3RvX3NoZWV0KHBybl90b19hb2Ffc3RyKHN0ciwgb3B0cyksIG9wdHMpO1xuXHR9XG5cblx0ZnVuY3Rpb24gcHJuX3RvX3NoZWV0KGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdHZhciBzdHIgPSBcIlwiLCBieXRlcyA9IG9wdHMudHlwZSA9PSAnc3RyaW5nJyA/IFswLDAsMCwwXSA6IGZpcnN0Ynl0ZShkLCBvcHRzKTtcblx0XHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0XHRjYXNlICdiYXNlNjQnOiBzdHIgPSBCYXNlNjRfZGVjb2RlKGQpOyBicmVhaztcblx0XHRcdGNhc2UgJ2JpbmFyeSc6IHN0ciA9IGQ7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzpcblx0XHRcdFx0aWYob3B0cy5jb2RlcGFnZSA9PSA2NTAwMSkgc3RyID0gZC50b1N0cmluZygndXRmOCcpOyAvLyBUT0RPOiB0ZXN0IGlmIGJ1ZlxuXHRcdFx0XHRlbHNlIGlmKG9wdHMuY29kZXBhZ2UgJiYgdHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgc3RyID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKG9wdHMuY29kZXBhZ2UsIGQpO1xuXHRcdFx0XHRlbHNlIHN0ciA9IGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiBzdHIgPSBjYzJzdHIoZCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnc3RyaW5nJzogc3RyID0gZDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdFx0fVxuXHRcdGlmKGJ5dGVzWzBdID09IDB4RUYgJiYgYnl0ZXNbMV0gPT0gMHhCQiAmJiBieXRlc1syXSA9PSAweEJGKSBzdHIgPSB1dGY4cmVhZChzdHIuc2xpY2UoMykpO1xuXHRcdGVsc2UgaWYob3B0cy50eXBlICE9ICdzdHJpbmcnICYmIG9wdHMudHlwZSAhPSAnYnVmZmVyJyAmJiBvcHRzLmNvZGVwYWdlID09IDY1MDAxKSBzdHIgPSB1dGY4cmVhZChzdHIpO1xuXHRcdGVsc2UgaWYoKG9wdHMudHlwZSA9PSAnYmluYXJ5JykgJiYgdHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJyAmJiBvcHRzLmNvZGVwYWdlKSAgc3RyID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKG9wdHMuY29kZXBhZ2UsICRjcHRhYmxlLnV0aWxzLmVuY29kZSgyODU5MSxzdHIpKTtcblx0XHRpZihzdHIuc2xpY2UoMCwxOSkgPT0gXCJzb2NpYWxjYWxjOnZlcnNpb246XCIpIHJldHVybiBFVEgudG9fc2hlZXQob3B0cy50eXBlID09ICdzdHJpbmcnID8gc3RyIDogdXRmOHJlYWQoc3RyKSwgb3B0cyk7XG5cdFx0cmV0dXJuIHBybl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHBybl90b193b3JrYm9vayhkLyo6UmF3RGF0YSovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2socHJuX3RvX3NoZWV0KGQsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX3Bybih3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0czo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbC8qOkNlbGwqLztcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0XHR2YXIgb28vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0dmFyIGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tjb29yZF07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudiA9PSBudWxsKSB7IG9vLnB1c2goXCIgICAgICAgICAgXCIpOyBjb250aW51ZTsgfVxuXHRcdFx0XHR2YXIgdyA9IChjZWxsLncgfHwgKGZvcm1hdF9jZWxsKGNlbGwpLCBjZWxsLncpIHx8IFwiXCIpLnNsaWNlKDAsMTApO1xuXHRcdFx0XHR3aGlsZSh3Lmxlbmd0aCA8IDEwKSB3ICs9IFwiIFwiO1xuXHRcdFx0XHRvby5wdXNoKHcgKyAoQyA9PT0gMCA/IFwiIFwiIDogXCJcIikpO1xuXHRcdFx0fVxuXHRcdFx0by5wdXNoKG9vLmpvaW4oXCJcIikpO1xuXHRcdH1cblx0XHRyZXR1cm4gby5qb2luKFwiXFxuXCIpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0b193b3JrYm9vazogcHJuX3RvX3dvcmtib29rLFxuXHRcdHRvX3NoZWV0OiBwcm5fdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fcHJuXG5cdH07XG59KSgpO1xuXG4vKiBFeGNlbCBkZWZhdWx0cyB0byBTWUxLIGJ1dCB3YXJucyBpZiBkYXRhIGlzIG5vdCB2YWxpZCAqL1xuZnVuY3Rpb24gcmVhZF93Yl9JRChkLCBvcHRzKSB7XG5cdHZhciBvID0gb3B0cyB8fCB7fSwgT0xEX1dURiA9ICEhby5XVEY7IG8uV1RGID0gdHJ1ZTtcblx0dHJ5IHtcblx0XHR2YXIgb3V0ID0gU1lMSy50b193b3JrYm9vayhkLCBvKTtcblx0XHRvLldURiA9IE9MRF9XVEY7XG5cdFx0cmV0dXJuIG91dDtcblx0fSBjYXRjaChlKSB7XG5cdFx0by5XVEYgPSBPTERfV1RGO1xuXHRcdGlmKCFlLm1lc3NhZ2UubWF0Y2goL1NZTEsgYmFkIHJlY29yZCBJRC8pICYmIE9MRF9XVEYpIHRocm93IGU7XG5cdFx0cmV0dXJuIFBSTi50b193b3JrYm9vayhkLCBvcHRzKTtcblx0fVxufVxuXG52YXIgV0tfID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0ZnVuY3Rpb24gbG90dXNob3BwZXIoZGF0YSwgY2IvKjpSZWNvcmRIb3BwZXJDQiovLCBvcHRzLyo6YW55Ki8pIHtcblx0XHRpZighZGF0YSkgcmV0dXJuO1xuXHRcdHByZXBfYmxvYihkYXRhLCBkYXRhLmwgfHwgMCk7XG5cdFx0dmFyIEVudW0gPSBvcHRzLkVudW0gfHwgV0sxRW51bTtcblx0XHR3aGlsZShkYXRhLmwgPCBkYXRhLmxlbmd0aCkge1xuXHRcdFx0dmFyIFJUID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0dmFyIFIgPSBFbnVtW1JUXSB8fCBFbnVtWzB4RkZGRl07XG5cdFx0XHR2YXIgbGVuZ3RoID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0dmFyIHRndCA9IGRhdGEubCArIGxlbmd0aDtcblx0XHRcdHZhciBkID0gUi5mICYmIFIuZihkYXRhLCBsZW5ndGgsIG9wdHMpO1xuXHRcdFx0ZGF0YS5sID0gdGd0O1xuXHRcdFx0aWYoY2IoZCwgUiwgUlQpKSByZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gbG90dXNfdG9fd29ya2Jvb2soZC8qOlJhd0RhdGEqLywgb3B0cykge1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHJldHVybiBsb3R1c190b193b3JrYm9va19idWYoczJhKEJhc2U2NF9kZWNvZGUoZCkpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2JpbmFyeSc6IHJldHVybiBsb3R1c190b193b3JrYm9va19idWYoczJhKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2J1ZmZlcic6XG5cdFx0XHRjYXNlICdhcnJheSc6IHJldHVybiBsb3R1c190b193b3JrYm9va19idWYoZCwgb3B0cyk7XG5cdFx0fVxuXHRcdHRocm93IFwiVW5zdXBwb3J0ZWQgdHlwZSBcIiArIG9wdHMudHlwZTtcblx0fVxuXG5cdGZ1bmN0aW9uIGxvdHVzX3RvX3dvcmtib29rX2J1ZihkLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHRcdGlmKCFkKSByZXR1cm4gZDtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0aWYoREVOU0UgIT0gbnVsbCAmJiBvLmRlbnNlID09IG51bGwpIG8uZGVuc2UgPSBERU5TRTtcblx0XHR2YXIgcy8qOldvcmtzaGVldCovID0gKChvLmRlbnNlID8gW10gOiB7fSkvKjphbnkqLyksIG4gPSBcIlNoZWV0MVwiLCBuZXh0X24gPSBcIlwiLCBzaWR4ID0gMDtcblx0XHR2YXIgc2hlZXRzID0ge30sIHNuYW1lcyA9IFtdLCByZWFsbmFtZXMgPSBbXTtcblxuXHRcdHZhciByZWZndWVzcyA9IHtzOiB7cjowLCBjOjB9LCBlOiB7cjowLCBjOjB9IH07XG5cdFx0dmFyIHNoZWV0Um93cyA9IG8uc2hlZXRSb3dzIHx8IDA7XG5cblx0XHRpZihkWzJdID09IDB4MDApIHtcblx0XHRcdGlmKGRbM10gPT0gMHgwOCB8fCBkWzNdID09IDB4MDkpIHtcblx0XHRcdFx0aWYoZC5sZW5ndGggPj0gMTYgJiYgZFsxNF0gPT0gMHgwNSAmJiBkWzE1XSA9PT0gMHg2YykgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgV29ya3MgMyBmb3IgTWFjIGZpbGVcIik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYoZFsyXSA9PSAweDAyKSB7XG5cdFx0XHRvLkVudW0gPSBXSzFFbnVtO1xuXHRcdFx0bG90dXNob3BwZXIoZCwgZnVuY3Rpb24odmFsLCBSLCBSVCkgeyBzd2l0Y2goUlQpIHtcblx0XHRcdFx0Y2FzZSAweDAwOiAvKiBCT0YgKi9cblx0XHRcdFx0XHRvLnZlcnMgPSB2YWw7XG5cdFx0XHRcdFx0aWYodmFsID49IDB4MTAwMCkgby5xcHJvID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDA2OiByZWZndWVzcyA9IHZhbDsgYnJlYWs7IC8qIFJBTkdFICovXG5cdFx0XHRcdGNhc2UgMHhDQzogaWYodmFsKSBuZXh0X24gPSB2YWw7IGJyZWFrOyAvKiBTSEVFVE5BTUVDUyAqL1xuXHRcdFx0XHRjYXNlIDB4REU6IG5leHRfbiA9IHZhbDsgYnJlYWs7IC8qIFNIRUVUTkFNRUxQICovXG5cdFx0XHRcdGNhc2UgMHgwRjogLyogTEFCRUwgKi9cblx0XHRcdFx0Y2FzZSAweDMzOiAvKiBTVFJJTkcgKi9cblx0XHRcdFx0XHRpZighby5xcHJvKSB2YWxbMV0udiA9IHZhbFsxXS52LnNsaWNlKDEpO1xuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAweDBEOiAvKiBJTlRFR0VSICovXG5cdFx0XHRcdGNhc2UgMHgwRTogLyogTlVNQkVSICovXG5cdFx0XHRcdGNhc2UgMHgxMDogLyogRk9STVVMQSAqL1xuXHRcdFx0XHRcdC8qIFRPRE86IGFjdHVhbCB0cmFuc2xhdGlvbiBvZiB0aGUgZm9ybWF0IGNvZGUgKi9cblx0XHRcdFx0XHRpZihSVCA9PSAweDBFICYmICh2YWxbMl0gJiAweDcwKSA9PSAweDcwICYmICh2YWxbMl0gJiAweDBGKSA+IDEgJiYgKHZhbFsyXSAmIDB4MEYpIDwgMTUpIHtcblx0XHRcdFx0XHRcdHZhbFsxXS56ID0gby5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdFx0XHRcdGlmKG8uY2VsbERhdGVzKSB7IHZhbFsxXS50ID0gJ2QnOyB2YWxbMV0udiA9IG51bWRhdGUodmFsWzFdLnYpOyB9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYoby5xcHJvKSB7XG5cdFx0XHRcdFx0XHRpZih2YWxbM10gPiBzaWR4KSB7XG5cdFx0XHRcdFx0XHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRcdFx0XHRcdFx0c2hlZXRzW25dID0gcztcblx0XHRcdFx0XHRcdFx0c25hbWVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRcdHMgPSAoby5kZW5zZSA/IFtdIDoge30pO1xuXHRcdFx0XHRcdFx0XHRyZWZndWVzcyA9IHtzOiB7cjowLCBjOjB9LCBlOiB7cjowLCBjOjB9IH07XG5cdFx0XHRcdFx0XHRcdHNpZHggPSB2YWxbM107IG4gPSBuZXh0X24gfHwgXCJTaGVldFwiICsgKHNpZHggKyAxKTsgbmV4dF9uID0gXCJcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YXIgdG1wY2VsbCA9IG8uZGVuc2UgPyAoc1t2YWxbMF0ucl18fFtdKVt2YWxbMF0uY10gOiBzW2VuY29kZV9jZWxsKHZhbFswXSldO1xuXHRcdFx0XHRcdGlmKHRtcGNlbGwpIHtcblx0XHRcdFx0XHRcdHRtcGNlbGwudCA9IHZhbFsxXS50OyB0bXBjZWxsLnYgPSB2YWxbMV0udjtcblx0XHRcdFx0XHRcdGlmKHZhbFsxXS56ICE9IG51bGwpIHRtcGNlbGwueiA9IHZhbFsxXS56O1xuXHRcdFx0XHRcdFx0aWYodmFsWzFdLmYgIT0gbnVsbCkgdG1wY2VsbC5mID0gdmFsWzFdLmY7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoby5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIXNbdmFsWzBdLnJdKSBzW3ZhbFswXS5yXSA9IFtdO1xuXHRcdFx0XHRcdFx0c1t2YWxbMF0ucl1bdmFsWzBdLmNdID0gdmFsWzFdO1xuXHRcdFx0XHRcdH0gZWxzZSBzW2VuY29kZV9jZWxsKHZhbFswXSldID0gdmFsWzFdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0fX0sIG8pO1xuXHRcdH0gZWxzZSBpZihkWzJdID09IDB4MUEgfHwgZFsyXSA9PSAweDBFKSB7XG5cdFx0XHRvLkVudW0gPSBXSzNFbnVtO1xuXHRcdFx0aWYoZFsyXSA9PSAweDBFKSB7IG8ucXBybyA9IHRydWU7IGQubCA9IDA7IH1cblx0XHRcdGxvdHVzaG9wcGVyKGQsIGZ1bmN0aW9uKHZhbCwgUiwgUlQpIHsgc3dpdGNoKFJUKSB7XG5cdFx0XHRcdGNhc2UgMHhDQzogbiA9IHZhbDsgYnJlYWs7IC8qIFNIRUVUTkFNRUNTICovXG5cdFx0XHRcdGNhc2UgMHgxNjogLyogTEFCRUwxNiAqL1xuXHRcdFx0XHRcdHZhbFsxXS52ID0gdmFsWzFdLnYuc2xpY2UoMSk7XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDB4MTc6IC8qIE5VTUJFUjE3ICovXG5cdFx0XHRcdGNhc2UgMHgxODogLyogTlVNQkVSMTggKi9cblx0XHRcdFx0Y2FzZSAweDE5OiAvKiBGT1JNVUxBMTkgKi9cblx0XHRcdFx0Y2FzZSAweDI1OiAvKiBOVU1CRVIyNSAqL1xuXHRcdFx0XHRjYXNlIDB4Mjc6IC8qIE5VTUJFUjI3ICovXG5cdFx0XHRcdGNhc2UgMHgyODogLyogRk9STVVMQTI4ICovXG5cdFx0XHRcdFx0aWYodmFsWzNdID4gc2lkeCkge1xuXHRcdFx0XHRcdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdFx0XHRcdFx0c2hlZXRzW25dID0gcztcblx0XHRcdFx0XHRcdHNuYW1lcy5wdXNoKG4pO1xuXHRcdFx0XHRcdFx0cyA9IChvLmRlbnNlID8gW10gOiB7fSk7XG5cdFx0XHRcdFx0XHRyZWZndWVzcyA9IHtzOiB7cjowLCBjOjB9LCBlOiB7cjowLCBjOjB9IH07XG5cdFx0XHRcdFx0XHRzaWR4ID0gdmFsWzNdOyBuID0gXCJTaGVldFwiICsgKHNpZHggKyAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoc2hlZXRSb3dzID4gMCAmJiB2YWxbMF0uciA+PSBzaGVldFJvd3MpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKG8uZGVuc2UpIHtcblx0XHRcdFx0XHRcdGlmKCFzW3ZhbFswXS5yXSkgc1t2YWxbMF0ucl0gPSBbXTtcblx0XHRcdFx0XHRcdHNbdmFsWzBdLnJdW3ZhbFswXS5jXSA9IHZhbFsxXTtcblx0XHRcdFx0XHR9IGVsc2Ugc1tlbmNvZGVfY2VsbCh2YWxbMF0pXSA9IHZhbFsxXTtcblx0XHRcdFx0XHRpZihyZWZndWVzcy5lLmMgPCB2YWxbMF0uYykgcmVmZ3Vlc3MuZS5jID0gdmFsWzBdLmM7XG5cdFx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5yIDwgdmFsWzBdLnIpIHJlZmd1ZXNzLmUuciA9IHZhbFswXS5yO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MUI6IC8qIFhGT1JNQVQgKi9cblx0XHRcdFx0XHRpZih2YWxbMHgzNmIwXSkgcmVhbG5hbWVzW3ZhbFsweDM2YjBdWzBdXSA9IHZhbFsweDM2YjBdWzFdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDYwMTogLyogU0hFRVRJTkZPUVAgKi9cblx0XHRcdFx0XHRyZWFsbmFtZXNbdmFsWzBdXSA9IHZhbFsxXTsgaWYodmFsWzBdID09IHNpZHgpIG4gPSB2YWxbMV07IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBicmVhaztcblx0XHRcdH19LCBvKTtcblx0XHR9IGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIExPVFVTIEJPRiBcIiArIGRbMl0pO1xuXHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRzaGVldHNbbmV4dF9uIHx8IG5dID0gcztcblx0XHRzbmFtZXMucHVzaChuZXh0X24gfHwgbik7XG5cdFx0aWYoIXJlYWxuYW1lcy5sZW5ndGgpIHJldHVybiB7IFNoZWV0TmFtZXM6IHNuYW1lcywgU2hlZXRzOiBzaGVldHMgfTtcblx0XHR2YXIgb3NoZWV0cyA9IHt9LCBybmFtZXMgPSBbXTtcblx0XHQvKiBUT0RPOiB2ZXJpZnkgbm8gY29sbGlzaW9ucyAqL1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCByZWFsbmFtZXMubGVuZ3RoOyArK2kpIGlmKHNoZWV0c1tzbmFtZXNbaV1dKSB7XG5cdFx0XHRybmFtZXMucHVzaChyZWFsbmFtZXNbaV0gfHwgc25hbWVzW2ldKTtcblx0XHRcdG9zaGVldHNbcmVhbG5hbWVzW2ldXSA9IHNoZWV0c1tyZWFsbmFtZXNbaV1dIHx8IHNoZWV0c1tzbmFtZXNbaV1dO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRybmFtZXMucHVzaChyZWFsbmFtZXNbaV0pO1xuXHRcdFx0b3NoZWV0c1tyZWFsbmFtZXNbaV1dID0gKHsgXCIhcmVmXCI6IFwiQTFcIiB9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgU2hlZXROYW1lczogcm5hbWVzLCBTaGVldHM6IG9zaGVldHMgfTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX3drMSh3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0aWYoK28uY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvLmNvZGVwYWdlKTtcblx0XHRpZihvLnR5cGUgPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmdcIik7XG5cdFx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdFx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHR2YXIgY29scyA9IFtdO1xuXG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAsIHdyaXRlX0JPRl9XSzEoMHgwNDA2KSk7XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDYsIHdyaXRlX1JBTkdFKHJhbmdlKSk7XG5cdFx0dmFyIG1heF9SID0gTWF0aC5taW4ocmFuZ2UuZS5yLCA4MTkxKTtcblx0XHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gbWF4X1I7ICsrUikge1xuXHRcdFx0dmFyIHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0XHR2YXIgcmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnQgPT0gXCJ6XCIpIGNvbnRpbnVlO1xuXHRcdFx0XHQvKiBUT0RPOiBmb3JtdWxhIHJlY29yZHMgKi9cblx0XHRcdFx0aWYoY2VsbC50ID09IFwiblwiKSB7XG5cdFx0XHRcdFx0aWYoKGNlbGwudnwwKT09Y2VsbC52ICYmIGNlbGwudiA+PSAtMzI3NjggJiYgY2VsbC52IDw9IDMyNzY3KSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwZCwgd3JpdGVfSU5URUdFUihSLCBDLCBjZWxsLnYpKTtcblx0XHRcdFx0XHRlbHNlIHdyaXRlX2JpZmZfcmVjKGJhLCAweDBlLCB3cml0ZV9OVU1CRVIoUiwgQywgY2VsbC52KSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFyIHN0ciA9IGZvcm1hdF9jZWxsKGNlbGwpO1xuXHRcdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDBGLCB3cml0ZV9MQUJFTChSLCBDLCBzdHIuc2xpY2UoMCwgMjM5KSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDEpO1xuXHRcdHJldHVybiBiYS5lbmQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGJvb2tfdG9fd2szKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdGlmKCtvLmNvZGVwYWdlID49IDApIHNldF9jcCgrby5jb2RlcGFnZSk7XG5cdFx0aWYoby50eXBlID09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nXCIpO1xuXHRcdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAsIHdyaXRlX0JPRl9XSzMod2IpKTtcblxuXHRcdGZvcih2YXIgaSA9IDAsIGNudCA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBpZigod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dIHx8IHt9KVtcIiFyZWZcIl0pIHdyaXRlX2JpZmZfcmVjKGJhLCAweDFiLCB3cml0ZV9YRk9STUFUX1NIRUVUTkFNRSh3Yi5TaGVldE5hbWVzW2ldLCBjbnQrKykpO1xuXG5cdFx0dmFyIHdzaWR4ID0gMDtcblx0XHRmb3IoaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgd3MgPSB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV07XG5cdFx0XHRpZighd3MgfHwgIXdzW1wiIXJlZlwiXSkgY29udGludWU7XG5cdFx0XHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0XHR2YXIgY29scyA9IFtdO1xuXHRcdFx0dmFyIG1heF9SID0gTWF0aC5taW4ocmFuZ2UuZS5yLCA4MTkxKTtcblx0XHRcdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSBtYXhfUjsgKytSKSB7XG5cdFx0XHRcdHZhciByciA9IGVuY29kZV9yb3coUik7XG5cdFx0XHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRcdFx0dmFyIHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudCA9PSBcInpcIikgY29udGludWU7XG5cdFx0XHRcdFx0LyogVE9ETzogRk9STVVMQTE5IE5VTUJFUjE4IHJlY29yZHMgKi9cblx0XHRcdFx0XHRpZihjZWxsLnQgPT0gXCJuXCIpIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDE3LCB3cml0ZV9OVU1CRVJfMTcoUiwgQywgd3NpZHgsIGNlbGwudikpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2YXIgc3RyID0gZm9ybWF0X2NlbGwoY2VsbCk7XG5cdFx0XHRcdFx0XHQvKiBUT0RPOiBtYXggbGVuPyAqL1xuXHRcdFx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MTYsIHdyaXRlX0xBQkVMXzE2KFIsIEMsIHdzaWR4LCBzdHIuc2xpY2UoMCwgMjM5KSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Kyt3c2lkeDtcblx0XHR9XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMSk7XG5cdFx0cmV0dXJuIGJhLmVuZCgpO1xuXHR9XG5cblxuXHRmdW5jdGlvbiB3cml0ZV9CT0ZfV0sxKHYvKjpudW1iZXIqLykge1xuXHRcdHZhciBvdXQgPSBuZXdfYnVmKDIpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCB2KTtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gd3JpdGVfQk9GX1dLMyh3Yi8qOldvcmtib29rKi8pIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1ZigyNik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MTAwMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDAwNCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIDB4MDAwMCk7XG5cdFx0dmFyIHJvd3MgPSAwLCBjb2xzID0gMCwgd3NjbnQgPSAwO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgbmFtZSA9IHdiLlNoZWV0TmFtZXNbaV07XG5cdFx0XHR2YXIgd3MgPSB3Yi5TaGVldHNbbmFtZV07XG5cdFx0XHRpZighd3MgfHwgIXdzW1wiIXJlZlwiXSkgY29udGludWU7XG5cdFx0XHQrK3dzY250O1xuXHRcdFx0dmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0XHRpZihyb3dzIDwgcmFuZ2UuZS5yKSByb3dzID0gcmFuZ2UuZS5yO1xuXHRcdFx0aWYoY29scyA8IHJhbmdlLmUuYykgY29scyA9IHJhbmdlLmUuYztcblx0XHR9XG5cdFx0aWYocm93cyA+IDgxOTEpIHJvd3MgPSA4MTkxO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCByb3dzKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMSwgd3NjbnQpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCBjb2xzKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDB4MDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCAweDAxKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMSwgMHgwMik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfUkFOR0UoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSB7czp7YzowLHI6MH0sZTp7YzowLHI6MH19O1xuXHRcdGlmKGxlbmd0aCA9PSA4ICYmIG9wdHMucXBybykge1xuXHRcdFx0by5zLmMgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRibG9iLmwrKztcblx0XHRcdG8ucy5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0by5lLmMgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRibG9iLmwrKztcblx0XHRcdG8uZS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHRcdG8ucy5jID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdG8ucy5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKGxlbmd0aCA9PSAxMiAmJiBvcHRzLnFwcm8pIGJsb2IubCArPSAyO1xuXHRcdG8uZS5jID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdG8uZS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKGxlbmd0aCA9PSAxMiAmJiBvcHRzLnFwcm8pIGJsb2IubCArPSAyO1xuXHRcdGlmKG8ucy5jID09IDB4RkZGRikgby5zLmMgPSBvLmUuYyA9IG8ucy5yID0gby5lLnIgPSAwO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX1JBTkdFKHJhbmdlKSB7XG5cdFx0dmFyIG91dCA9IG5ld19idWYoOCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJhbmdlLnMuYyk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJhbmdlLnMucik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJhbmdlLmUuYyk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJhbmdlLmUucik7XG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSBbe2M6MCxyOjB9LCB7dDonbicsdjowfSwgMCwgMF07XG5cdFx0aWYob3B0cy5xcHJvICYmIG9wdHMudmVycyAhPSAweDUxMjApIHtcblx0XHRcdG9bMF0uYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bM10gPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRvWzBdLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRibG9iLmwrPTI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9bMl0gPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRvWzBdLmMgPSBibG9iLnJlYWRfc2hpZnQoMik7IG9bMF0uciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9MQUJFTChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdG9bMV0udCA9ICdzJztcblx0XHRpZihvcHRzLnZlcnMgPT0gMHg1MTIwKSB7XG5cdFx0XHRibG9iLmwrKztcblx0XHRcdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQobGVuLCAndXRmOCcpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHRcdGlmKG9wdHMucXBybykgYmxvYi5sKys7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KHRndCAtIGJsb2IubCwgJ2NzdHInKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9MQUJFTChSLCBDLCBzKSB7XG5cdFx0LyogVE9ETzogZW5jb2RpbmcgKi9cblx0XHR2YXIgbyA9IG5ld19idWYoNyArIHMubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MjcpOyAvLyA/P1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBvLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgY2MgPSBzLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDEsIGNjID49IDB4ODAgPyAweDVGIDogY2MpO1xuXHRcdH1cblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfSU5URUdFUihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQoMiwgJ2knKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9JTlRFR0VSKFIsIEMsIHYpIHtcblx0XHR2YXIgbyA9IG5ld19idWYoNyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweEZGKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIEMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCB2LCAnaScpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCg4LCAnZicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX05VTUJFUihSLCBDLCB2KSB7XG5cdFx0dmFyIG8gPSBuZXdfYnVmKDEzKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDgsIHYsICdmJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9GT1JNVUxBKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0LyogVE9ETzogZm9ybXVsYSAqL1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCg4LCAnZicpO1xuXHRcdGlmKG9wdHMucXBybykgYmxvYi5sID0gdGd0O1xuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIGZsZW4gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHR3azFfZm1sYV90b19jc2YoYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCArIGZsZW4pLCBvKTtcblx0XHRcdGJsb2IubCArPSBmbGVuO1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHdrMV9wYXJzZV9yYyhCLCBWLCBjb2wpIHtcblx0XHR2YXIgcmVsID0gViAmIDB4ODAwMDtcblx0XHRWICY9IH4weDgwMDA7XG5cdFx0ViA9IChyZWwgPyBCIDogMCkgKyAoKFYgPj0gMHgyMDAwKSA/IFYgLSAweDQwMDAgOiBWKTtcblx0XHRyZXR1cm4gKHJlbCA/IFwiXCIgOiBcIiRcIikgKyAoY29sID8gZW5jb2RlX2NvbChWKSA6IGVuY29kZV9yb3coVikpO1xuXHR9XG5cdC8qIHZhciBvcHJlYyA9IFtcblx0XHQ4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA2LCA0LCA0LCA1LCA1LCA3LCAzLCAzLFxuXHRcdDMsIDMsIDMsIDMsIDEsIDEsIDIsIDYsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDhcblx0XTsgKi9cblx0LyogVE9ETzogZmxlc2ggb3V0ICovXG5cdHZhciBGdW5jVGFiID0ge1xuXHRcdDB4MzM6IFtcIkZBTFNFXCIsIDBdLFxuXHRcdDB4MzQ6IFtcIlRSVUVcIiwgMF0sXG5cdFx0MHg0NjogW1wiTEVOXCIsIDFdLFxuXHRcdDB4NTA6IFtcIlNVTVwiLCA2OV0sXG5cdFx0MHg1MTogW1wiQVZFUkFHRUFcIiwgNjldLFxuXHRcdDB4NTI6IFtcIkNPVU5UQVwiLCA2OV0sXG5cdFx0MHg1MzogW1wiTUlOQVwiLCA2OV0sXG5cdFx0MHg1NDogW1wiTUFYQVwiLCA2OV0sXG5cdFx0MHg2RjogW1wiVFwiLCAxXVxuXHR9O1xuXHR2YXIgQmluT3BUYWIgPSBbXG5cdFx0ICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbWl4ZWQtc3BhY2VzLWFuZC10YWJzXG5cdFx0ICBcIlwiLCAgXCIrXCIsICBcIi1cIiwgIFwiKlwiLCAgXCIvXCIsICBcIl5cIiwgIFwiPVwiLCBcIjw+XCIsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbWl4ZWQtc3BhY2VzLWFuZC10YWJzXG5cdFx0XCI8PVwiLCBcIj49XCIsICBcIjxcIiwgIFwiPlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbWl4ZWQtc3BhY2VzLWFuZC10YWJzXG5cdFx0IFwiJlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbWl4ZWQtc3BhY2VzLWFuZC10YWJzXG5cdF07XG5cblx0ZnVuY3Rpb24gd2sxX2ZtbGFfdG9fY3NmKGJsb2IsIG8pIHtcblx0XHRwcmVwX2Jsb2IoYmxvYiwgMCk7XG5cdFx0dmFyIG91dCA9IFtdLCBhcmdjID0gMCwgUiA9IFwiXCIsIEMgPSBcIlwiLCBhcmdMID0gXCJcIiwgYXJnUiA9IFwiXCI7XG5cdFx0d2hpbGUoYmxvYi5sIDwgYmxvYi5sZW5ndGgpIHtcblx0XHRcdHZhciBjYyA9IGJsb2JbYmxvYi5sKytdO1xuXHRcdFx0c3dpdGNoKGNjKSB7XG5cdFx0XHRcdGNhc2UgMHgwMDogb3V0LnB1c2goYmxvYi5yZWFkX3NoaWZ0KDgsICdmJykpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxOiB7XG5cdFx0XHRcdFx0QyA9IHdrMV9wYXJzZV9yYyhvWzBdLmMsIGJsb2IucmVhZF9zaGlmdCgyKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0UiA9IHdrMV9wYXJzZV9yYyhvWzBdLnIsIGJsb2IucmVhZF9zaGlmdCgyKSwgZmFsc2UpO1xuXHRcdFx0XHRcdG91dC5wdXNoKEMgKyBSKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyOiB7XG5cdFx0XHRcdFx0dmFyIGMgPSB3azFfcGFyc2VfcmMob1swXS5jLCBibG9iLnJlYWRfc2hpZnQoMiksIHRydWUpO1xuXHRcdFx0XHRcdHZhciByID0gd2sxX3BhcnNlX3JjKG9bMF0uciwgYmxvYi5yZWFkX3NoaWZ0KDIpLCBmYWxzZSk7XG5cdFx0XHRcdFx0QyA9IHdrMV9wYXJzZV9yYyhvWzBdLmMsIGJsb2IucmVhZF9zaGlmdCgyKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0UiA9IHdrMV9wYXJzZV9yYyhvWzBdLnIsIGJsb2IucmVhZF9zaGlmdCgyKSwgZmFsc2UpO1xuXHRcdFx0XHRcdG91dC5wdXNoKGMgKyByICsgXCI6XCIgKyBDICsgUik7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMzpcblx0XHRcdFx0XHRpZihibG9iLmwgPCBibG9iLmxlbmd0aCkgeyBjb25zb2xlLmVycm9yKFwiV0sxIHByZW1hdHVyZSBmb3JtdWxhIGVuZFwiKTsgcmV0dXJuOyB9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNDogb3V0LnB1c2goXCIoXCIgKyBvdXQucG9wKCkgKyBcIilcIik7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDU6IG91dC5wdXNoKGJsb2IucmVhZF9zaGlmdCgyKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDY6IHtcblx0XHRcdFx0XHQvKiBUT0RPOiB0ZXh0IGVuY29kaW5nICovXG5cdFx0XHRcdFx0dmFyIFogPSBcIlwiOyB3aGlsZSgoY2MgPSBibG9iW2Jsb2IubCsrXSkpIFogKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjYyk7XG5cdFx0XHRcdFx0b3V0LnB1c2goJ1wiJyArIFoucmVwbGFjZSgvXCIvZywgJ1wiXCInKSArICdcIicpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwODogb3V0LnB1c2goXCItXCIgKyBvdXQucG9wKCkpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDE3OiBvdXQucHVzaChcIitcIiArIG91dC5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MTY6IG91dC5wdXNoKFwiTk9UKFwiICsgb3V0LnBvcCgpICsgXCIpXCIpOyBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MTQ6IGNhc2UgMHgxNToge1xuXHRcdFx0XHRcdGFyZ1IgPSBvdXQucG9wKCk7IGFyZ0wgPSBvdXQucG9wKCk7XG5cdFx0XHRcdFx0b3V0LnB1c2goW1wiQU5EXCIsIFwiT1JcIl1bY2MgLSAweDE0XSArIFwiKFwiICsgYXJnTCArIFwiLFwiICsgYXJnUiArIFwiKVwiKTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGlmKGNjIDwgMHgyMCAmJiBCaW5PcFRhYltjY10pIHtcblx0XHRcdFx0XHRcdGFyZ1IgPSBvdXQucG9wKCk7IGFyZ0wgPSBvdXQucG9wKCk7XG5cdFx0XHRcdFx0XHRvdXQucHVzaChhcmdMICsgQmluT3BUYWJbY2NdICsgYXJnUik7XG5cdFx0XHRcdFx0fSBlbHNlIGlmKEZ1bmNUYWJbY2NdKSB7XG5cdFx0XHRcdFx0XHRhcmdjID0gRnVuY1RhYltjY11bMV07XG5cdFx0XHRcdFx0XHRpZihhcmdjID09IDY5KSBhcmdjID0gYmxvYltibG9iLmwrK107XG5cdFx0XHRcdFx0XHRpZihhcmdjID4gb3V0Lmxlbmd0aCkgeyBjb25zb2xlLmVycm9yKFwiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIDB4XCIgKyBjYy50b1N0cmluZygxNikgKyBcIjp8XCIgKyBvdXQuam9pbihcInxcIikgKyBcInxcIik7IHJldHVybjsgfVxuXHRcdFx0XHRcdFx0dmFyIGFyZ3MgPSBvdXQuc2xpY2UoLWFyZ2MpO1xuXHRcdFx0XHRcdFx0b3V0Lmxlbmd0aCAtPSBhcmdjO1xuXHRcdFx0XHRcdFx0b3V0LnB1c2goRnVuY1RhYltjY11bMF0gKyBcIihcIiArIGFyZ3Muam9pbihcIixcIikgKyBcIilcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYoY2MgPD0gMHgwNykgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJXSzEgaW52YWxpZCBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdGVsc2UgaWYoY2MgPD0gMHgxOCkgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJXSzEgdW5zdXBwb3J0ZWQgb3AgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdGVsc2UgaWYoY2MgPD0gMHgxRSkgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJXSzEgaW52YWxpZCBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdGVsc2UgaWYoY2MgPD0gMHg3MykgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJXSzEgdW5zdXBwb3J0ZWQgZnVuY3Rpb24gb3Bjb2RlIFwiICsgY2MudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHQvLyBwb3NzaWJsZSBmdXR1cmUgZnVuY3Rpb25zID8/XG5cdFx0XHRcdFx0ZWxzZSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlIFwiICsgY2MudG9TdHJpbmcoMTYpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYob3V0Lmxlbmd0aCA9PSAxKSBvWzFdLmYgPSBcIlwiICsgb3V0WzBdO1xuXHRcdGVsc2UgY29uc29sZS5lcnJvcihcIldLMSBiYWQgZm9ybXVsYSBwYXJzZSB8XCIgKyBvdXQuam9pbihcInxcIikgKyBcInxcIik7XG5cdH1cblxuXG5cdGZ1bmN0aW9uIHBhcnNlX2NlbGxfMyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0XHR2YXIgbyA9IFt7YzowLHI6MH0sIHt0OiduJyx2OjB9LCAwXTtcblx0XHRvWzBdLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7IG9bM10gPSBibG9iW2Jsb2IubCsrXTsgb1swXS5jID0gYmxvYltibG9iLmwrK107XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9MQUJFTF8xNihibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdG9bMV0udCA9ICdzJztcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQobGVuZ3RoIC0gNCwgJ2NzdHInKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9MQUJFTF8xNihSLCBDLCB3c2lkeCwgcykge1xuXHRcdC8qIFRPRE86IGVuY29kaW5nICovXG5cdFx0dmFyIG8gPSBuZXdfYnVmKDYgKyBzLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHdzaWR4KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIEMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgyNyk7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBjYyA9IHMuY2hhckNvZGVBdChpKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoMSwgY2MgPj0gMHg4MCA/IDB4NUYgOiBjYyk7XG5cdFx0fVxuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVJfMTgoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsXzMoYmxvYiwgbGVuZ3RoKTtcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0dmFyIHYgPSBvWzFdLnYgPj4gMTtcblx0XHRpZihvWzFdLnYgJiAweDEpIHtcblx0XHRcdHN3aXRjaCh2ICYgMHgwNykge1xuXHRcdFx0XHRjYXNlIDA6IHYgPSAodiA+PiAzKSAqIDUwMDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6IHYgPSAodiA+PiAzKSAqIDUwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMjogdiA9ICh2ID4+IDMpIC8gMjA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDM6IHYgPSAodiA+PiAzKSAvIDIwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNDogdiA9ICh2ID4+IDMpIC8gMjAwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNTogdiA9ICh2ID4+IDMpIC8gMjAwMDA7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDY6IHYgPSAodiA+PiAzKSAvIDE2OyBicmVhaztcblx0XHRcdFx0Y2FzZSA3OiB2ID0gKHYgPj4gMykgLyA2NDsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG9bMV0udiA9IHY7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVJfMTcoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsXzMoYmxvYiwgbGVuZ3RoKTtcblx0XHR2YXIgdjEgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIHYyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKGUgPT0gMHhGRkZGKSB7XG5cdFx0XHRpZih2MSA9PT0gMCAmJiB2MiA9PT0gMHhDMDAwMDAwMCkgeyBvWzFdLnQgPSBcImVcIjsgb1sxXS52ID0gMHgwRjsgfSAvLyBFUlIgLT4gI1ZBTFVFIVxuXHRcdFx0ZWxzZSBpZih2MSA9PT0gMCAmJiB2MiA9PT0gMHhEMDAwMDAwMCkgeyBvWzFdLnQgPSBcImVcIjsgb1sxXS52ID0gMHgyQTsgfSAvLyBOQSAtPiAjTi9BXG5cdFx0XHRlbHNlIG9bMV0udiA9IDA7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0dmFyIHMgPSBlICYgMHg4MDAwOyBlID0gKGUmMHg3RkZGKSAtIDE2NDQ2O1xuXHRcdG9bMV0udiA9ICgxIC0gcyoyKSAqICh2MiAqIE1hdGgucG93KDIsIGUrMzIpICsgdjEgKiBNYXRoLnBvdygyLCBlKSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfTlVNQkVSXzE3KFIsIEMsIHdzaWR4LCB2KSB7XG5cdFx0dmFyIG8gPSBuZXdfYnVmKDE0KTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgd3NpZHgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgQyk7XG5cdFx0aWYodiA9PSAwKSB7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoMiwgMHhGRkZGKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHR2YXIgcyA9IDAsIGUgPSAwLCB2MSA9IDAsIHYyID0gMDtcblx0XHRpZih2IDwgMCkgeyBzID0gMTsgdiA9IC12OyB9XG5cdFx0ZSA9IE1hdGgubG9nMih2KSB8IDA7XG5cdFx0diAvPSBNYXRoLnBvdygyLCBlLTMxKTtcblx0XHR2MiA9ICh2KT4+PjA7XG5cdFx0aWYoKHYyJjB4ODAwMDAwMDApID09IDApIHsgdi89MjsgKytlOyB2MiA9IHYgPj4+IDA7IH1cblx0XHR2IC09IHYyO1xuXHRcdHYyIHw9IDB4ODAwMDAwMDA7XG5cdFx0djIgPj4+PSAwO1xuXHRcdHYgKj0gTWF0aC5wb3coMiwgMzIpO1xuXHRcdHYxID0gdj4+PjA7XG5cdFx0by53cml0ZV9zaGlmdCg0LCB2MSk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCB2Mik7XG5cdFx0ZSArPSAweDNGRkYgKyAocyA/IDB4ODAwMCA6IDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgZSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9GT1JNVUxBXzE5KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfTlVNQkVSXzE3KGJsb2IsIDE0KTtcblx0XHRibG9iLmwgKz0gbGVuZ3RoIC0gMTQ7IC8qIFRPRE86IFdLMyBmb3JtdWxhICovXG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVJfMjUoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsXzMoYmxvYiwgbGVuZ3RoKTtcblx0XHR2YXIgdjEgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0b1sxXS52ID0gdjEgPj4gNjtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8yNyhibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdHZhciB2MSA9IGJsb2IucmVhZF9zaGlmdCg4LCdmJyk7XG5cdFx0b1sxXS52ID0gdjE7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9GT1JNVUxBXzI4KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfTlVNQkVSXzI3KGJsb2IsIDE0KTtcblx0XHRibG9iLmwgKz0gbGVuZ3RoIC0gMTA7IC8qIFRPRE86IGZvcm11bGEgKi9cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1NIRUVUTkFNRUNTKGJsb2IsIGxlbmd0aCkge1xuXHRcdHJldHVybiBibG9iW2Jsb2IubCArIGxlbmd0aCAtIDFdID09IDAgPyBibG9iLnJlYWRfc2hpZnQobGVuZ3RoLCAnY3N0cicpIDogXCJcIjtcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1NIRUVUTkFNRUxQKGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBsZW4gPSBibG9iW2Jsb2IubCsrXTtcblx0XHRpZihsZW4gPiBsZW5ndGggLSAxKSBsZW4gPSBsZW5ndGggLSAxO1xuXHRcdHZhciBvID0gXCJcIjsgd2hpbGUoby5sZW5ndGggPCBsZW4pIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShibG9iW2Jsb2IubCsrXSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9TSEVFVElORk9RUChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHRpZighb3B0cy5xcHJvIHx8IGxlbmd0aCA8IDIxKSByZXR1cm47XG5cdFx0dmFyIGlkID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdGJsb2IubCArPSAxNztcblx0XHRibG9iLmwgKz0gMTsgLy92YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdGJsb2IubCArPSAyO1xuXHRcdHZhciBubSA9IGJsb2IucmVhZF9zaGlmdChsZW5ndGggLSAyMSwgJ2NzdHInKTtcblx0XHRyZXR1cm4gW2lkLCBubV07XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9YRk9STUFUKGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0ge30sIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0XHR3aGlsZShibG9iLmwgPCB0Z3QpIHtcblx0XHRcdHZhciBkdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdGlmKGR0ID09IDB4MzZiMCkge1xuXHRcdFx0XHRvW2R0XSA9IFswLCBcIlwiXTtcblx0XHRcdFx0b1tkdF1bMF0gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRcdHdoaWxlKGJsb2JbYmxvYi5sXSkgeyBvW2R0XVsxXSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJsb2JbYmxvYi5sXSk7IGJsb2IubCsrOyB9IGJsb2IubCsrO1xuXHRcdFx0fVxuXHRcdFx0Ly8gVE9ETzogMHgzYTk5ID8/XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX1hGT1JNQVRfU0hFRVROQU1FKG5hbWUsIHdzaWR4KSB7XG5cdFx0dmFyIG91dCA9IG5ld19idWYoNSArIG5hbWUubGVuZ3RoKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgzNmIwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgd3NpZHgpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgY2MgPSBuYW1lLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRvdXRbb3V0LmwrK10gPSBjYyA+IDB4N0YgPyAweDVGIDogY2M7XG5cdFx0fVxuXHRcdG91dFtvdXQubCsrXSA9IDA7XG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdHZhciBXSzFFbnVtID0ge1xuXHRcdC8qOjpbKi8weDAwMDAvKjo6XSovOiB7IG46XCJCT0ZcIiwgZjpwYXJzZXVpbnQxNiB9LFxuXHRcdC8qOjpbKi8weDAwMDEvKjo6XSovOiB7IG46XCJFT0ZcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDIvKjo6XSovOiB7IG46XCJDQUxDTU9ERVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IHsgbjpcIkNBTENPUkRFUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgbjpcIlNQTElUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA1Lyo6Ol0qLzogeyBuOlwiU1lOQ1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNi8qOjpdKi86IHsgbjpcIlJBTkdFXCIsIGY6cGFyc2VfUkFOR0UgfSxcblx0XHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogeyBuOlwiV0lORE9XMVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOC8qOjpdKi86IHsgbjpcIkNPTFcxXCIgfSxcblx0XHQvKjo6WyovMHgwMDA5Lyo6Ol0qLzogeyBuOlwiV0lOVFdPXCIgfSxcblx0XHQvKjo6WyovMHgwMDBBLyo6Ol0qLzogeyBuOlwiQ09MVzJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEIvKjo6XSovOiB7IG46XCJOQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDBDLyo6Ol0qLzogeyBuOlwiQkxBTktcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEQvKjo6XSovOiB7IG46XCJJTlRFR0VSXCIsIGY6cGFyc2VfSU5URUdFUiB9LFxuXHRcdC8qOjpbKi8weDAwMEUvKjo6XSovOiB7IG46XCJOVU1CRVJcIiwgZjpwYXJzZV9OVU1CRVIgfSxcblx0XHQvKjo6WyovMHgwMDBGLyo6Ol0qLzogeyBuOlwiTEFCRUxcIiwgZjpwYXJzZV9MQUJFTCB9LFxuXHRcdC8qOjpbKi8weDAwMTAvKjo6XSovOiB7IG46XCJGT1JNVUxBXCIsIGY6cGFyc2VfRk9STVVMQSB9LFxuXHRcdC8qOjpbKi8weDAwMTgvKjo6XSovOiB7IG46XCJUQUJMRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxOS8qOjpdKi86IHsgbjpcIk9SQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxQS8qOjpdKi86IHsgbjpcIlBSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxQi8qOjpdKi86IHsgbjpcIlNSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxQy8qOjpdKi86IHsgbjpcIkZSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxRC8qOjpdKi86IHsgbjpcIktSQU5HRTFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IG46XCJIUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjMvKjo6XSovOiB7IG46XCJLUkFOR0UyXCIgfSxcblx0XHQvKjo6WyovMHgwMDI0Lyo6Ol0qLzogeyBuOlwiUFJPVEVDXCIgfSxcblx0XHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyBuOlwiRk9PVEVSXCIgfSxcblx0XHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyBuOlwiSEVBREVSXCIgfSxcblx0XHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogeyBuOlwiU0VUVVBcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IG46XCJNQVJHSU5TXCIgfSxcblx0XHQvKjo6WyovMHgwMDI5Lyo6Ol0qLzogeyBuOlwiTEFCRUxGTVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkEvKjo6XSovOiB7IG46XCJUSVRMRVNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkIvKjo6XSovOiB7IG46XCJTSEVFVEpTXCIgfSxcblx0XHQvKjo6WyovMHgwMDJELyo6Ol0qLzogeyBuOlwiR1JBUEhcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkUvKjo6XSovOiB7IG46XCJOR1JBUEhcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkYvKjo6XSovOiB7IG46XCJDQUxDQ09VTlRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzAvKjo6XSovOiB7IG46XCJVTkZPUk1BVFRFRFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzMS8qOjpdKi86IHsgbjpcIkNVUlNPUlcxMlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzMi8qOjpdKi86IHsgbjpcIldJTkRPV1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzMy8qOjpdKi86IHsgbjpcIlNUUklOR1wiLCBmOnBhcnNlX0xBQkVMIH0sXG5cdFx0Lyo6OlsqLzB4MDAzNy8qOjpdKi86IHsgbjpcIlBBU1NXT1JEXCIgfSxcblx0XHQvKjo6WyovMHgwMDM4Lyo6Ol0qLzogeyBuOlwiTE9DS0VEXCIgfSxcblx0XHQvKjo6WyovMHgwMDNDLyo6Ol0qLzogeyBuOlwiUVVFUllcIiB9LFxuXHRcdC8qOjpbKi8weDAwM0QvKjo6XSovOiB7IG46XCJRVUVSWU5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwM0UvKjo6XSovOiB7IG46XCJQUklOVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzRi8qOjpdKi86IHsgbjpcIlBSSU5UTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IHsgbjpcIkdSQVBIMlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0MS8qOjpdKi86IHsgbjpcIkdSQVBITkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IHsgbjpcIlpPT01cIiB9LFxuXHRcdC8qOjpbKi8weDAwNDMvKjo6XSovOiB7IG46XCJTWU1TUExJVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0NC8qOjpdKi86IHsgbjpcIk5TUk9XU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0NS8qOjpdKi86IHsgbjpcIk5TQ09MU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0Ni8qOjpdKi86IHsgbjpcIlJVTEVSXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ3Lyo6Ol0qLzogeyBuOlwiTk5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDgvKjo6XSovOiB7IG46XCJBQ09NTVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0OS8qOjpdKi86IHsgbjpcIkFNQUNST1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0QS8qOjpdKi86IHsgbjpcIlBBUlNFXCIgfSxcblx0XHQvKjo6WyovMHgwMDY2Lyo6Ol0qLzogeyBuOlwiUFJBTkdFUz8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDY3Lyo6Ol0qLzogeyBuOlwiUlJBTkdFUz8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDY4Lyo6Ol0qLzogeyBuOlwiRk5BTUU/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA2OS8qOjpdKi86IHsgbjpcIk1SQU5HRVM/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDQy8qOjpdKi86IHsgbjpcIlNIRUVUTkFNRUNTXCIsIGY6cGFyc2VfU0hFRVROQU1FQ1MgfSxcblx0XHQvKjo6WyovMHgwMERFLyo6Ol0qLzogeyBuOlwiU0hFRVROQU1FTFBcIiwgZjpwYXJzZV9TSEVFVE5BTUVMUCB9LFxuXHRcdC8qOjpbKi8weEZGRkYvKjo6XSovOiB7IG46XCJcIiB9XG5cdH07XG5cblx0dmFyIFdLM0VudW0gPSB7XG5cdFx0Lyo6OlsqLzB4MDAwMC8qOjpdKi86IHsgbjpcIkJPRlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgbjpcIkVPRlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgbjpcIlBBU1NXT1JEXCIgfSxcblx0XHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogeyBuOlwiQ0FMQ1NFVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgbjpcIldJTkRPV1NFVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgbjpcIlNIRUVUQ0VMTFBUUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwNi8qOjpdKi86IHsgbjpcIlNIRUVUTEFZT1VUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogeyBuOlwiQ09MVU1OV0lEVEhcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDgvKjo6XSovOiB7IG46XCJISURERU5DT0xVTU5cIiB9LFxuXHRcdC8qOjpbKi8weDAwMDkvKjo6XSovOiB7IG46XCJVU0VSUkFOR0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEEvKjo6XSovOiB7IG46XCJTWVNURU1SQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQi8qOjpdKi86IHsgbjpcIlpFUk9GT1JDRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQy8qOjpdKi86IHsgbjpcIlNPUlRLRVlESVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEQvKjo6XSovOiB7IG46XCJGSUxFU0VBTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRS8qOjpdKi86IHsgbjpcIkRBVEFGSUxMTlVNU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRi8qOjpdKi86IHsgbjpcIlBSSU5UTUFJTlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMC8qOjpdKi86IHsgbjpcIlBSSU5UU1RSSU5HXCIgfSxcblx0XHQvKjo6WyovMHgwMDExLyo6Ol0qLzogeyBuOlwiR1JBUEhNQUlOXCIgfSxcblx0XHQvKjo6WyovMHgwMDEyLyo6Ol0qLzogeyBuOlwiR1JBUEhTVFJJTkdcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IHsgbjpcIkVSUkNFTExcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTUvKjo6XSovOiB7IG46XCJOQUNFTExcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTYvKjo6XSovOiB7IG46XCJMQUJFTDE2XCIsIGY6cGFyc2VfTEFCRUxfMTZ9LFxuXHRcdC8qOjpbKi8weDAwMTcvKjo6XSovOiB7IG46XCJOVU1CRVIxN1wiLCBmOnBhcnNlX05VTUJFUl8xNyB9LFxuXHRcdC8qOjpbKi8weDAwMTgvKjo6XSovOiB7IG46XCJOVU1CRVIxOFwiLCBmOnBhcnNlX05VTUJFUl8xOCB9LFxuXHRcdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IG46XCJGT1JNVUxBMTlcIiwgZjpwYXJzZV9GT1JNVUxBXzE5fSxcblx0XHQvKjo6WyovMHgwMDFBLyo6Ol0qLzogeyBuOlwiRk9STVVMQTFBXCIgfSxcblx0XHQvKjo6WyovMHgwMDFCLyo6Ol0qLzogeyBuOlwiWEZPUk1BVFwiLCBmOnBhcnNlX1hGT1JNQVQgfSxcblx0XHQvKjo6WyovMHgwMDFDLyo6Ol0qLzogeyBuOlwiRFRMQUJFTE1JU0NcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUQvKjo6XSovOiB7IG46XCJEVExBQkVMQ0VMTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxRS8qOjpdKi86IHsgbjpcIkdSQVBIV0lORE9XXCIgfSxcblx0XHQvKjo6WyovMHgwMDFGLyo6Ol0qLzogeyBuOlwiQ1BBXCIgfSxcblx0XHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogeyBuOlwiTFBMQVVUT1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IHsgbjpcIlFVRVJZXCIgfSxcblx0XHQvKjo6WyovMHgwMDIyLyo6Ol0qLzogeyBuOlwiSElEREVOU0hFRVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyNS8qOjpdKi86IHsgbjpcIk5VTUJFUjI1XCIsIGY6cGFyc2VfTlVNQkVSXzI1IH0sXG5cdFx0Lyo6OlsqLzB4MDAyNi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogeyBuOlwiTlVNQkVSMjdcIiwgZjpwYXJzZV9OVU1CRVJfMjcgfSxcblx0XHQvKjo6WyovMHgwMDI4Lyo6Ol0qLzogeyBuOlwiRk9STVVMQTI4XCIsIGY6cGFyc2VfRk9STVVMQV8yOCB9LFxuXHRcdC8qOjpbKi8weDAwOEUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5My8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDk2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTcvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5OC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDk5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOUEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5Qi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDlDLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQTMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBBRS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEFGLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQjAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEI4Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQjkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCQS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEJCLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQkMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEM5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQ0MvKjo6XSovOiB7IG46XCJTSEVFVE5BTUVDU1wiLCBmOnBhcnNlX1NIRUVUTkFNRUNTIH0sXG5cdFx0Lyo6OlsqLzB4MDBDRC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMENFLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQ0YvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBEMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA1Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwNy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwQi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBDLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwRi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTgwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4Ni8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTg5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxOEMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjAyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjA1Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4MS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjgyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4NC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg1Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4Ny8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg4Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5My8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjk0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5Ni8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjk5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOUEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDMwMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMzA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA2MDEvKjo6XSovOiB7IG46XCJTSEVFVElORk9RUFwiLCBmOnBhcnNlX1NIRUVUSU5GT1FQIH0sXG5cdFx0Lyo6OlsqLzB4MDY0MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNjQyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3MDEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwMi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzAzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3MDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDc4MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwODAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA4MDEvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDgwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwQTgwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDJBRjYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MzIzMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHg2RTQ5Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDZGNDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IHsgbjpcIlwiIH1cblx0fTtcblx0cmV0dXJuIHtcblx0XHRzaGVldF90b193azE6IHNoZWV0X3RvX3drMSxcblx0XHRib29rX3RvX3drMzogYm9va190b193azMsXG5cdFx0dG9fd29ya2Jvb2s6IGxvdHVzX3RvX3dvcmtib29rXG5cdH07XG59KSgpO1xuLyogMTguNC43IHJQciBDVF9SUHJFbHQgKi9cbmZ1bmN0aW9uIHBhcnNlX3JwcihycHIpIHtcblx0dmFyIGZvbnQgPSB7fSwgbSA9IHJwci5tYXRjaCh0YWdyZWdleCksIGkgPSAwO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRpZihtKSBmb3IoO2khPW0ubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKG1baV0pO1xuXHRcdHN3aXRjaCh5WzBdLnJlcGxhY2UoL1xcdyo6L2csXCJcIikpIHtcblx0XHRcdC8qIDE4LjguMTIgY29uZGVuc2UgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHQvKiAqKiBub3QgcmVxdWlyZWQgLiAqL1xuXHRcdFx0Y2FzZSAnPGNvbmRlbnNlJzogYnJlYWs7XG5cdFx0XHQvKiAxOC44LjE3IGV4dGVuZCBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdC8qICoqIG5vdCByZXF1aXJlZCAuICovXG5cdFx0XHRjYXNlICc8ZXh0ZW5kJzogYnJlYWs7XG5cdFx0XHQvKiAxOC44LjM2IHNoYWRvdyBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdC8qICoqIG5vdCByZXF1aXJlZCAuICovXG5cdFx0XHRjYXNlICc8c2hhZG93Jzpcblx0XHRcdFx0aWYoIXkudmFsKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPHNoYWRvdz4nOlxuXHRcdFx0Y2FzZSAnPHNoYWRvdy8+JzogZm9udC5zaGFkb3cgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvc2hhZG93Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEgY2hhcnNldCBDVF9JbnRQcm9wZXJ0eSBUT0RPICovXG5cdFx0XHRjYXNlICc8Y2hhcnNldCc6XG5cdFx0XHRcdGlmKHkudmFsID09ICcxJykgYnJlYWs7XG5cdFx0XHRcdGZvbnQuY3AgPSBDUzJDUFtwYXJzZUludCh5LnZhbCwgMTApXTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMiBvdXRsaW5lIENUX0Jvb2xlYW5Qcm9wZXJ0eSBUT0RPICovXG5cdFx0XHRjYXNlICc8b3V0bGluZSc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxvdXRsaW5lPic6XG5cdFx0XHRjYXNlICc8b3V0bGluZS8+JzogZm9udC5vdXRsaW5lID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L291dGxpbmU+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuNSByRm9udCBDVF9Gb250TmFtZSAqL1xuXHRcdFx0Y2FzZSAnPHJGb250JzogZm9udC5uYW1lID0geS52YWw7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjExIHN6IENUX0ZvbnRTaXplICovXG5cdFx0XHRjYXNlICc8c3onOiBmb250LnN6ID0geS52YWw7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEwIHN0cmlrZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxzdHJpa2UnOlxuXHRcdFx0XHRpZigheS52YWwpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8c3RyaWtlPic6XG5cdFx0XHRjYXNlICc8c3RyaWtlLz4nOiBmb250LnN0cmlrZSA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zdHJpa2U+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTMgdSBDVF9VbmRlcmxpbmVQcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHUnOlxuXHRcdFx0XHRpZigheS52YWwpIGJyZWFrO1xuXHRcdFx0XHRzd2l0Y2goeS52YWwpIHtcblx0XHRcdFx0XHRjYXNlICdkb3VibGUnOiBmb250LnV2YWwgPSBcImRvdWJsZVwiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaW5nbGVBY2NvdW50aW5nJzogZm9udC51dmFsID0gXCJzaW5nbGUtYWNjb3VudGluZ1wiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb3VibGVBY2NvdW50aW5nJzogZm9udC51dmFsID0gXCJkb3VibGUtYWNjb3VudGluZ1wiOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8dT4nOlxuXHRcdFx0Y2FzZSAnPHUvPic6IGZvbnQudSA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC91Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjIgYiAqL1xuXHRcdFx0Y2FzZSAnPGInOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMCcpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8Yj4nOlxuXHRcdFx0Y2FzZSAnPGIvPic6IGZvbnQuYiA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9iPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI2IGkgKi9cblx0XHRcdGNhc2UgJzxpJzpcblx0XHRcdFx0aWYoeS52YWwgPT0gJzAnKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPGk+Jzpcblx0XHRcdGNhc2UgJzxpLz4nOiBmb250LmkgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvaT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMy4xLjE1IGNvbG9yIENUX0NvbG9yIFRPRE86IHRpbnQsIHRoZW1lLCBhdXRvLCBpbmRleGVkICovXG5cdFx0XHRjYXNlICc8Y29sb3InOlxuXHRcdFx0XHRpZih5LnJnYikgZm9udC5jb2xvciA9IHkucmdiLnNsaWNlKDIsOCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbG9yPic6IGNhc2UgJzxjb2xvci8+JzogY2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xOCBmYW1pbHkgU1RfRm9udEZhbWlseSAqL1xuXHRcdFx0Y2FzZSAnPGZhbWlseSc6IGZvbnQuZmFtaWx5ID0geS52YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZhbWlseT4nOiBjYXNlICc8ZmFtaWx5Lz4nOiBjYXNlICc8L2ZhbWlseT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xNCB2ZXJ0QWxpZ24gQ1RfVmVydGljYWxBbGlnbkZvbnRQcm9wZXJ0eSBUT0RPICovXG5cdFx0XHRjYXNlICc8dmVydEFsaWduJzogZm9udC52YWxpZ24gPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8dmVydEFsaWduPic6IGNhc2UgJzx2ZXJ0QWxpZ24vPic6IGNhc2UgJzwvdmVydEFsaWduPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM1IHNjaGVtZSBDVF9Gb250U2NoZW1lIFRPRE8gKi9cblx0XHRcdGNhc2UgJzxzY2hlbWUnOiBicmVhaztcblx0XHRcdGNhc2UgJzxzY2hlbWU+JzogY2FzZSAnPHNjaGVtZS8+JzogY2FzZSAnPC9zY2hlbWU+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKHlbMF0uY2hhckNvZGVBdCgxKSAhPT0gNDcgJiYgIXBhc3MpIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIHJpY2ggZm9ybWF0ICcgKyB5WzBdKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZvbnQ7XG59XG5cbnZhciBwYXJzZV9ycyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciB0cmVnZXggPSBtYXRjaHRhZyhcInRcIiksIHJwcmVnZXggPSBtYXRjaHRhZyhcInJQclwiKTtcblx0LyogMTguNC40IHIgQ1RfUkVsdCAqL1xuXHRmdW5jdGlvbiBwYXJzZV9yKHIpIHtcblx0XHQvKiAxOC40LjEyIHQgU1RfWHN0cmluZyAqL1xuXHRcdHZhciB0ID0gci5tYXRjaCh0cmVnZXgpLyosIGNwID0gNjUwMDEqLztcblx0XHRpZighdCkgcmV0dXJuIHt0Olwic1wiLCB2OlwiXCJ9O1xuXG5cdFx0dmFyIG8vKjpDZWxsKi8gPSAoe3Q6J3MnLCB2OnVuZXNjYXBleG1sKHRbMV0pfS8qOmFueSovKTtcblx0XHR2YXIgcnByID0gci5tYXRjaChycHJlZ2V4KTtcblx0XHRpZihycHIpIG8ucyA9IHBhcnNlX3JwcihycHJbMV0pO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdHZhciBycmVnZXggPSAvPCg/Olxcdys6KT9yPi9nLCByZW5kID0gLzxcXC8oPzpcXHcrOik/cj4vO1xuXHRyZXR1cm4gZnVuY3Rpb24gcGFyc2VfcnMocnMpIHtcblx0XHRyZXR1cm4gcnMucmVwbGFjZShycmVnZXgsXCJcIikuc3BsaXQocmVuZCkubWFwKHBhcnNlX3IpLmZpbHRlcihmdW5jdGlvbihyKSB7IHJldHVybiByLnY7IH0pO1xuXHR9O1xufSkoKTtcblxuXG4vKiBQYXJzZSBhIGxpc3Qgb2YgPHI+IHRhZ3MgKi9cbnZhciByc190b19odG1sID0gLyojX19QVVJFX18qLyhmdW5jdGlvbiBwYXJzZV9yc19mYWN0b3J5KCkge1xuXHR2YXIgbmxyZWdleCA9IC8oXFxyXFxufFxcbikvZztcblx0ZnVuY3Rpb24gcGFyc2VfcnByMihmb250LCBpbnRybywgb3V0cm8pIHtcblx0XHR2YXIgc3R5bGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblxuXHRcdGlmKGZvbnQudSkgc3R5bGUucHVzaChcInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1wiKTtcblx0XHRpZihmb250LnV2YWwpIHN0eWxlLnB1c2goXCJ0ZXh0LXVuZGVybGluZS1zdHlsZTpcIiArIGZvbnQudXZhbCArIFwiO1wiKTtcblx0XHRpZihmb250LnN6KSBzdHlsZS5wdXNoKFwiZm9udC1zaXplOlwiICsgZm9udC5zeiArIFwicHQ7XCIpO1xuXHRcdGlmKGZvbnQub3V0bGluZSkgc3R5bGUucHVzaChcInRleHQtZWZmZWN0OiBvdXRsaW5lO1wiKTtcblx0XHRpZihmb250LnNoYWRvdykgc3R5bGUucHVzaChcInRleHQtc2hhZG93OiBhdXRvO1wiKTtcblx0XHRpbnRyby5wdXNoKCc8c3BhbiBzdHlsZT1cIicgKyBzdHlsZS5qb2luKFwiXCIpICsgJ1wiPicpO1xuXG5cdFx0aWYoZm9udC5iKSB7IGludHJvLnB1c2goXCI8Yj5cIik7IG91dHJvLnB1c2goXCI8L2I+XCIpOyB9XG5cdFx0aWYoZm9udC5pKSB7IGludHJvLnB1c2goXCI8aT5cIik7IG91dHJvLnB1c2goXCI8L2k+XCIpOyB9XG5cdFx0aWYoZm9udC5zdHJpa2UpIHsgaW50cm8ucHVzaChcIjxzPlwiKTsgb3V0cm8ucHVzaChcIjwvcz5cIik7IH1cblxuXHRcdHZhciBhbGlnbiA9IGZvbnQudmFsaWduIHx8IFwiXCI7XG5cdFx0aWYoYWxpZ24gPT0gXCJzdXBlcnNjcmlwdFwiIHx8IGFsaWduID09IFwic3VwZXJcIikgYWxpZ24gPSBcInN1cFwiO1xuXHRcdGVsc2UgaWYoYWxpZ24gPT0gXCJzdWJzY3JpcHRcIikgYWxpZ24gPSBcInN1YlwiO1xuXHRcdGlmKGFsaWduICE9IFwiXCIpIHsgaW50cm8ucHVzaChcIjxcIiArIGFsaWduICsgXCI+XCIpOyBvdXRyby5wdXNoKFwiPC9cIiArIGFsaWduICsgXCI+XCIpOyB9XG5cblx0XHRvdXRyby5wdXNoKFwiPC9zcGFuPlwiKTtcblx0XHRyZXR1cm4gZm9udDtcblx0fVxuXG5cdC8qIDE4LjQuNCByIENUX1JFbHQgKi9cblx0ZnVuY3Rpb24gcl90b19odG1sKHIpIHtcblx0XHR2YXIgdGVybXMvKjpbQXJyYXk8c3RyaW5nPiwgc3RyaW5nLCBBcnJheTxzdHJpbmc+XSovID0gW1tdLHIudixbXV07XG5cdFx0aWYoIXIudikgcmV0dXJuIFwiXCI7XG5cblx0XHRpZihyLnMpIHBhcnNlX3JwcjIoci5zLCB0ZXJtc1swXSwgdGVybXNbMl0pO1xuXG5cdFx0cmV0dXJuIHRlcm1zWzBdLmpvaW4oXCJcIikgKyB0ZXJtc1sxXS5yZXBsYWNlKG5scmVnZXgsJzxici8+JykgKyB0ZXJtc1syXS5qb2luKFwiXCIpO1xuXHR9XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHBhcnNlX3JzKHJzKSB7XG5cdFx0cmV0dXJuIHJzLm1hcChyX3RvX2h0bWwpLmpvaW4oXCJcIik7XG5cdH07XG59KSgpO1xuXG4vKiAxOC40Ljggc2kgQ1RfUnN0ICovXG52YXIgc2l0cmVnZXggPSAvPCg/Olxcdys6KT90W14+XSo+KFtePF0qKTxcXC8oPzpcXHcrOik/dD4vZywgc2lycmVnZXggPSAvPCg/Olxcdys6KT9yPi87XG52YXIgc2lycGhyZWdleCA9IC88KD86XFx3KzopP3JQaC4qPz4oW1xcc1xcU10qPyk8XFwvKD86XFx3KzopP3JQaD4vZztcbmZ1bmN0aW9uIHBhcnNlX3NpKHgsIG9wdHMpIHtcblx0dmFyIGh0bWwgPSBvcHRzID8gb3B0cy5jZWxsSFRNTCA6IHRydWU7XG5cdHZhciB6ID0ge307XG5cdGlmKCF4KSByZXR1cm4geyB0OiBcIlwiIH07XG5cdC8vdmFyIHk7XG5cdC8qIDE4LjQuMTIgdCBTVF9Yc3RyaW5nIChQbGFpbnRleHQgU3RyaW5nKSAqL1xuXHQvLyBUT0RPOiBpcyB3aGl0ZXNwYWNlIGFjdHVhbGx5IHZhbGlkIGhlcmU/XG5cdGlmKHgubWF0Y2goL15cXHMqPCg/Olxcdys6KT90W14+XSo+LykpIHtcblx0XHR6LnQgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZCh4LnNsaWNlKHguaW5kZXhPZihcIj5cIikrMSkuc3BsaXQoLzxcXC8oPzpcXHcrOik/dD4vKVswXXx8XCJcIikpO1xuXHRcdHouciA9IHV0ZjhyZWFkKHgpO1xuXHRcdGlmKGh0bWwpIHouaCA9IGVzY2FwZWh0bWwoei50KTtcblx0fVxuXHQvKiAxOC40LjQgciBDVF9SRWx0IChSaWNoIFRleHQgUnVuKSAqL1xuXHRlbHNlIGlmKCgvKnkgPSAqL3gubWF0Y2goc2lycmVnZXgpKSkge1xuXHRcdHouciA9IHV0ZjhyZWFkKHgpO1xuXHRcdHoudCA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKCh4LnJlcGxhY2Uoc2lycGhyZWdleCwgJycpLm1hdGNoKHNpdHJlZ2V4KXx8W10pLmpvaW4oXCJcIikucmVwbGFjZSh0YWdyZWdleCxcIlwiKSkpO1xuXHRcdGlmKGh0bWwpIHouaCA9IHJzX3RvX2h0bWwocGFyc2VfcnMoei5yKSk7XG5cdH1cblx0LyogMTguNC4zIHBob25ldGljUHIgQ1RfUGhvbmV0aWNQciAoVE9ETzogbmVlZGVkIGZvciBBc2lhbiBzdXBwb3J0KSAqL1xuXHQvKiAxOC40LjYgclBoIENUX1Bob25ldGljUnVuIChUT0RPOiBuZWVkZWQgZm9yIEFzaWFuIHN1cHBvcnQpICovXG5cdHJldHVybiB6O1xufVxuXG4vKiAxOC40IFNoYXJlZCBTdHJpbmcgVGFibGUgKi9cbnZhciBzc3RyMCA9IC88KD86XFx3KzopP3NzdChbXj5dKik+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP3NzdD4vO1xudmFyIHNzdHIxID0gLzwoPzpcXHcrOik/KD86c2l8c3N0SXRlbSk+L2c7XG52YXIgc3N0cjIgPSAvPFxcLyg/Olxcdys6KT8oPzpzaXxzc3RJdGVtKT4vO1xuZnVuY3Rpb24gcGFyc2Vfc3N0X3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpLyo6U1NUKi8ge1xuXHR2YXIgcy8qOlNTVCovID0gKFtdLyo6YW55Ki8pLCBzcyA9IFwiXCI7XG5cdGlmKCFkYXRhKSByZXR1cm4gcztcblx0LyogMTguNC45IHNzdCBDVF9Tc3QgKi9cblx0dmFyIHNzdCA9IGRhdGEubWF0Y2goc3N0cjApO1xuXHRpZihzc3QpIHtcblx0XHRzcyA9IHNzdFsyXS5yZXBsYWNlKHNzdHIxLFwiXCIpLnNwbGl0KHNzdHIyKTtcblx0XHRmb3IodmFyIGkgPSAwOyBpICE9IHNzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgbyA9IHBhcnNlX3NpKHNzW2ldLnRyaW0oKSwgb3B0cyk7XG5cdFx0XHRpZihvICE9IG51bGwpIHNbcy5sZW5ndGhdID0gbztcblx0XHR9XG5cdFx0c3N0ID0gcGFyc2V4bWx0YWcoc3N0WzFdKTsgcy5Db3VudCA9IHNzdC5jb3VudDsgcy5VbmlxdWUgPSBzc3QudW5pcXVlQ291bnQ7XG5cdH1cblx0cmV0dXJuIHM7XG59XG5cbnZhciBzdHJheXdzcmVnZXggPSAvXlxcc3xcXHMkfFtcXHRcXG5cXHJdLztcbmZ1bmN0aW9uIHdyaXRlX3NzdF94bWwoc3N0Lyo6U1NUKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighb3B0cy5ib29rU1NUKSByZXR1cm4gXCJcIjtcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc3N0JywgbnVsbCwge1xuXHRcdHhtbG5zOiBYTUxOU19tYWluWzBdLFxuXHRcdGNvdW50OiBzc3QuQ291bnQsXG5cdFx0dW5pcXVlQ291bnQ6IHNzdC5VbmlxdWVcblx0fSkpO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHNzdC5sZW5ndGg7ICsraSkgeyBpZihzc3RbaV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0dmFyIHMvKjpYTFN0cmluZyovID0gc3N0W2ldO1xuXHRcdHZhciBzaXRhZyA9IFwiPHNpPlwiO1xuXHRcdGlmKHMucikgc2l0YWcgKz0gcy5yO1xuXHRcdGVsc2Uge1xuXHRcdFx0c2l0YWcgKz0gXCI8dFwiO1xuXHRcdFx0aWYoIXMudCkgcy50ID0gXCJcIjtcblx0XHRcdGlmKHMudC5tYXRjaChzdHJheXdzcmVnZXgpKSBzaXRhZyArPSAnIHhtbDpzcGFjZT1cInByZXNlcnZlXCInO1xuXHRcdFx0c2l0YWcgKz0gXCI+XCIgKyBlc2NhcGV4bWwocy50KSArIFwiPC90PlwiO1xuXHRcdH1cblx0XHRzaXRhZyArPSBcIjwvc2k+XCI7XG5cdFx0b1tvLmxlbmd0aF0gPSAoc2l0YWcpO1xuXHR9XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9zc3Q+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMjIxIEJydEJlZ2luU3N0ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRCZWdpblNzdChkYXRhKSB7XG5cdHJldHVybiBbZGF0YS5yZWFkX3NoaWZ0KDQpLCBkYXRhLnJlYWRfc2hpZnQoNCldO1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuNDUgU2hhcmVkIFN0cmluZ3MgKi9cbmZ1bmN0aW9uIHBhcnNlX3NzdF9iaW4oZGF0YSwgb3B0cykvKjpTU1QqLyB7XG5cdHZhciBzLyo6U1NUKi8gPSAoW10vKjphbnkqLyk7XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfc3N0KHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMDlGOiAvKiBCcnRCZWdpblNzdCAqL1xuXHRcdFx0XHRzLkNvdW50ID0gdmFsWzBdOyBzLlVuaXF1ZSA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAxMzogLyogQnJ0U1NUSXRlbSAqL1xuXHRcdFx0XHRzLnB1c2godmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDBBMDogLyogQnJ0RW5kU3N0ICovXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogQnJ0RlJUQmVnaW4gKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qIEJydEZSVEVuZCAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQpe31cblx0XHRcdFx0aWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpblNzdChzc3QsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHNzdC5Db3VudCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3N0LlVuaXF1ZSk7XG5cdHJldHVybiBvO1xufVxuXG52YXIgd3JpdGVfQnJ0U1NUSXRlbSA9IHdyaXRlX1JpY2hTdHI7XG5cbmZ1bmN0aW9uIHdyaXRlX3NzdF9iaW4oc3N0Lyo6Oiwgb3B0cyovKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5RiAvKiBCcnRCZWdpblNzdCAqLywgd3JpdGVfQnJ0QmVnaW5Tc3Qoc3N0KSk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBzc3QubGVuZ3RoOyArK2kpIHdyaXRlX3JlY29yZChiYSwgMHgwMDEzIC8qIEJydFNTVEl0ZW0gKi8sIHdyaXRlX0JydFNTVEl0ZW0oc3N0W2ldKSk7XG5cdC8qIEZSVFNTVCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBBMCAvKiBCcnRFbmRTc3QgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBfSlMyQU5TSShzdHIvKjpzdHJpbmcqLykvKjpBcnJheTxudW1iZXI+Ki8ge1xuXHRpZih0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gJGNwdGFibGUudXRpbHMuZW5jb2RlKGN1cnJlbnRfYW5zaSwgc3RyKTtcblx0dmFyIG8vKjpBcnJheTxudW1iZXI+Ki8gPSBbXSwgb28gPSBzdHIuc3BsaXQoXCJcIik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBvby5sZW5ndGg7ICsraSkgb1tpXSA9IG9vW2ldLmNoYXJDb2RlQXQoMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNCBWZXJzaW9uICovXG5mdW5jdGlvbiBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIGxlbmd0aC8qOj9udW1iZXIqLykge1xuXHR2YXIgby8qOmFueSovID0ge307XG5cdG8uTWFqb3IgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8uTWlub3IgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdC8qOjogaWYobGVuZ3RoID09IG51bGwpIHJldHVybiBvOyAqL1xuXHRpZihsZW5ndGggPj0gNCkgYmxvYi5sICs9IGxlbmd0aCAtIDQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNSBEYXRhU3BhY2VWZXJzaW9uSW5mbyAqL1xuZnVuY3Rpb24gcGFyc2VfRGF0YVNwYWNlVmVyc2lvbkluZm8oYmxvYikge1xuXHR2YXIgbyA9IHt9O1xuXHRvLmlkID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0Jyk7XG5cdG8uUiA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdG8uVSA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdG8uVyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNi4xIERhdGFTcGFjZU1hcEVudHJ5IFN0cnVjdHVyZSAqL1xuZnVuY3Rpb24gcGFyc2VfRGF0YVNwYWNlTWFwRW50cnkoYmxvYikge1xuXHR2YXIgbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuIC0gNDtcblx0dmFyIG8gPSB7fTtcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGNvbXBzLyo6QXJyYXk8e3Q6bnVtYmVyLCB2OnN0cmluZ30+Ki8gPSBbXTtcblx0LyogW01TLU9GRkNSWVBUT10gMi4xLjYuMiBEYXRhU3BhY2VSZWZlcmVuY2VDb21wb25lbnQgU3RydWN0dXJlICovXG5cdHdoaWxlKGNudC0tID4gMCkgY29tcHMucHVzaCh7IHQ6IGJsb2IucmVhZF9zaGlmdCg0KSwgdjogYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0JykgfSk7XG5cdG8ubmFtZSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpO1xuXHRvLmNvbXBzID0gY29tcHM7XG5cdGlmKGJsb2IubCAhPSBlbmQpIHRocm93IG5ldyBFcnJvcihcIkJhZCBEYXRhU3BhY2VNYXBFbnRyeTogXCIgKyBibG9iLmwgKyBcIiAhPSBcIiArIGVuZCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNiBEYXRhU3BhY2VNYXAgKi9cbmZ1bmN0aW9uIHBhcnNlX0RhdGFTcGFjZU1hcChibG9iKSB7XG5cdHZhciBvID0gW107XG5cdGJsb2IubCArPSA0OyAvLyBtdXN0IGJlIDB4OFxuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR3aGlsZShjbnQtLSA+IDApIG8ucHVzaChwYXJzZV9EYXRhU3BhY2VNYXBFbnRyeShibG9iKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNyBEYXRhU3BhY2VEZWZpbml0aW9uICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VEZWZpbml0aW9uKGJsb2IpLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0YmxvYi5sICs9IDQ7IC8vIG11c3QgYmUgMHg4XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHdoaWxlKGNudC0tID4gMCkgby5wdXNoKGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS44IERhdGFTcGFjZURlZmluaXRpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX1RyYW5zZm9ybUluZm9IZWFkZXIoYmxvYikge1xuXHR2YXIgbyA9IHt9O1xuXHQvKnZhciBsZW4gPSAqL2Jsb2IucmVhZF9zaGlmdCg0KTtcblx0YmxvYi5sICs9IDQ7IC8vIG11c3QgYmUgMHgxXG5cdG8uaWQgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5uYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0Jyk7XG5cdG8uUiA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdG8uVSA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdG8uVyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9QcmltYXJ5KGJsb2IpIHtcblx0LyogW01TLU9GRkNSWVBUT10gMi4yLjYgSVJNRFNUcmFuc2Zvcm1JbmZvICovXG5cdHZhciBoZHIgPSBwYXJzZV9UcmFuc2Zvcm1JbmZvSGVhZGVyKGJsb2IpO1xuXHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuOSBFbmNyeXB0aW9uVHJhbnNmb3JtSW5mbyAqL1xuXHRoZHIuZW5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMCwgJzhscHA0Jyk7XG5cdGhkci5ibGtzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aGRyLmNtb2RlID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihibG9iLnJlYWRfc2hpZnQoNCkgIT0gMHgwNCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkICFQcmltYXJ5IHJlY29yZFwiKTtcblx0cmV0dXJuIGhkcjtcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjIgRW5jcnlwdGlvbiBIZWFkZXIgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY3J5cHRpb25IZWFkZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIG8gPSB7fTtcblx0by5GbGFncyA9IChibG9iLnJlYWRfc2hpZnQoNCkgJiAweDNGKTtcblx0YmxvYi5sICs9IDQ7XG5cdG8uQWxnSUQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciB2YWxpZCA9IGZhbHNlO1xuXHRzd2l0Y2goby5BbGdJRCkge1xuXHRcdGNhc2UgMHg2NjBFOiBjYXNlIDB4NjYwRjogY2FzZSAweDY2MTA6IHZhbGlkID0gKG8uRmxhZ3MgPT0gMHgyNCk7IGJyZWFrO1xuXHRcdGNhc2UgMHg2ODAxOiB2YWxpZCA9IChvLkZsYWdzID09IDB4MDQpOyBicmVhaztcblx0XHRjYXNlIDA6IHZhbGlkID0gKG8uRmxhZ3MgPT0gMHgxMCB8fCBvLkZsYWdzID09IDB4MDQgfHwgby5GbGFncyA9PSAweDI0KTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgJ1VucmVjb2duaXplZCBlbmNyeXB0aW9uIGFsZ29yaXRobTogJyArIG8uQWxnSUQ7XG5cdH1cblx0aWYoIXZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJFbmNyeXB0aW9uIEZsYWdzL0FsZ0lEIG1pc21hdGNoXCIpO1xuXHRvLkFsZ0lESGFzaCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0by5LZXlTaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRvLlByb3ZpZGVyVHlwZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0YmxvYi5sICs9IDg7XG5cdG8uQ1NQTmFtZSA9IGJsb2IucmVhZF9zaGlmdCgodGd0LWJsb2IubCk+PjEsICd1dGYxNmxlJyk7XG5cdGJsb2IubCA9IHRndDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy4zIEVuY3J5cHRpb24gVmVyaWZpZXIgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY3J5cHRpb25WZXJpZmllcihibG9iLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgbyA9IHt9LCB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdGJsb2IubCArPSA0OyAvLyBTYWx0U2l6ZSBtdXN0IGJlIDB4MTBcblx0by5TYWx0ID0gYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCsxNik7IGJsb2IubCArPSAxNjtcblx0by5WZXJpZmllciA9IGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwrMTYpOyBibG9iLmwgKz0gMTY7XG5cdC8qdmFyIHN6ID0gKi9ibG9iLnJlYWRfc2hpZnQoNCk7XG5cdG8uVmVyaWZpZXJIYXNoID0gYmxvYi5zbGljZShibG9iLmwsIHRndCk7IGJsb2IubCA9IHRndDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy40LiogRW5jcnlwdGlvbkluZm8gU3RyZWFtICovXG5mdW5jdGlvbiBwYXJzZV9FbmNyeXB0aW9uSW5mbyhibG9iKSB7XG5cdHZhciB2ZXJzID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iKTtcblx0c3dpdGNoKHZlcnMuTWlub3IpIHtcblx0XHRjYXNlIDB4MDI6IHJldHVybiBbdmVycy5NaW5vciwgcGFyc2VfRW5jSW5mb1N0ZChibG9iLCB2ZXJzKV07XG5cdFx0Y2FzZSAweDAzOiByZXR1cm4gW3ZlcnMuTWlub3IsIHBhcnNlX0VuY0luZm9FeHQoYmxvYiwgdmVycyldO1xuXHRcdGNhc2UgMHgwNDogcmV0dXJuIFt2ZXJzLk1pbm9yLCBwYXJzZV9FbmNJbmZvQWdsKGJsb2IsIHZlcnMpXTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSB1bnJlY29nbml6ZWQgVmVyc2lvbjogXCIgKyB2ZXJzLk1pbm9yKTtcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuNSAgRW5jcnlwdGlvbkluZm8gU3RyZWFtIChTdGFuZGFyZCBFbmNyeXB0aW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jSW5mb1N0ZChibG9iLyo6OiwgdmVycyovKSB7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoKGZsYWdzICYgMHgzRikgIT0gMHgyNCkgdGhyb3cgbmV3IEVycm9yKFwiRW5jcnlwdGlvbkluZm8gbWlzbWF0Y2hcIik7XG5cdHZhciBzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0Ly92YXIgdGd0ID0gYmxvYi5sICsgc3o7XG5cdHZhciBoZHIgPSBwYXJzZV9FbmNyeXB0aW9uSGVhZGVyKGJsb2IsIHN6KTtcblx0dmFyIHZlcmlmaWVyID0gcGFyc2VfRW5jcnlwdGlvblZlcmlmaWVyKGJsb2IsIGJsb2IubGVuZ3RoIC0gYmxvYi5sKTtcblx0cmV0dXJuIHsgdDpcIlN0ZFwiLCBoOmhkciwgdjp2ZXJpZmllciB9O1xufVxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuNiAgRW5jcnlwdGlvbkluZm8gU3RyZWFtIChFeHRlbnNpYmxlIEVuY3J5cHRpb24pICovXG5mdW5jdGlvbiBwYXJzZV9FbmNJbmZvRXh0KC8qOjpibG9iLCB2ZXJzKi8pIHsgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQ6IEVDTUEtMzc2IEV4dGVuc2libGVcIik7IH1cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy40LjEwIEVuY3J5cHRpb25JbmZvIFN0cmVhbSAoQWdpbGUgRW5jcnlwdGlvbikgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY0luZm9BZ2woYmxvYi8qOjosIHZlcnMqLykge1xuXHR2YXIgS2V5RGF0YSA9IFtcInNhbHRTaXplXCIsXCJibG9ja1NpemVcIixcImtleUJpdHNcIixcImhhc2hTaXplXCIsXCJjaXBoZXJBbGdvcml0aG1cIixcImNpcGhlckNoYWluaW5nXCIsXCJoYXNoQWxnb3JpdGhtXCIsXCJzYWx0VmFsdWVcIl07XG5cdGJsb2IubCs9NDtcblx0dmFyIHhtbCA9IGJsb2IucmVhZF9zaGlmdChibG9iLmxlbmd0aCAtIGJsb2IubCwgJ3V0ZjgnKTtcblx0dmFyIG8gPSB7fTtcblx0eG1sLnJlcGxhY2UodGFncmVnZXgsIGZ1bmN0aW9uIHhtbF9hZ2lsZSh4KSB7XG5cdFx0dmFyIHkvKjphbnkqLyA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblx0XHRcdGNhc2UgJzxlbmNyeXB0aW9uJzogY2FzZSAnPC9lbmNyeXB0aW9uPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGtleURhdGEnOiBLZXlEYXRhLmZvckVhY2goZnVuY3Rpb24oaykgeyBvW2tdID0geVtrXTsgfSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGRhdGFJbnRlZ3JpdHknOiBvLmVuY3J5cHRlZEhtYWNLZXkgPSB5LmVuY3J5cHRlZEhtYWNLZXk7IG8uZW5jcnlwdGVkSG1hY1ZhbHVlID0geS5lbmNyeXB0ZWRIbWFjVmFsdWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGtleUVuY3J5cHRvcnM+JzogY2FzZSAnPGtleUVuY3J5cHRvcnMnOiBvLmVuY3MgPSBbXTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2tleUVuY3J5cHRvcnM+JzogYnJlYWs7XG5cblx0XHRcdGNhc2UgJzxrZXlFbmNyeXB0b3InOiBvLnVyaSA9IHkudXJpOyBicmVhaztcblx0XHRcdGNhc2UgJzwva2V5RW5jcnlwdG9yPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGVuY3J5cHRlZEtleSc6IG8uZW5jcy5wdXNoKHkpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IHlbMF07XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy41LjEgUkM0IENyeXB0b0FQSSBFbmNyeXB0aW9uIEhlYWRlciAqL1xuZnVuY3Rpb24gcGFyc2VfUkM0Q3J5cHRvSGVhZGVyKGJsb2IsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciBvID0ge307XG5cdHZhciB2ZXJzID0gby5FbmNyeXB0aW9uVmVyc2lvbkluZm8gPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpOyBsZW5ndGggLT0gNDtcblx0aWYodmVycy5NaW5vciAhPSAyKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCBtaW5vciB2ZXJzaW9uIGNvZGU6ICcgKyB2ZXJzLk1pbm9yKTtcblx0aWYodmVycy5NYWpvciA+IDQgfHwgdmVycy5NYWpvciA8IDIpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIG1ham9yIHZlcnNpb24gY29kZTogJyArIHZlcnMuTWFqb3IpO1xuXHRvLkZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyBsZW5ndGggLT0gNDtcblx0dmFyIHN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyBsZW5ndGggLT0gNDtcblx0by5FbmNyeXB0aW9uSGVhZGVyID0gcGFyc2VfRW5jcnlwdGlvbkhlYWRlcihibG9iLCBzeik7IGxlbmd0aCAtPSBzejtcblx0by5FbmNyeXB0aW9uVmVyaWZpZXIgPSBwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIoYmxvYiwgbGVuZ3RoKTtcblx0cmV0dXJuIG87XG59XG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNi4xIFJDNCBFbmNyeXB0aW9uIEhlYWRlciAqL1xuZnVuY3Rpb24gcGFyc2VfUkM0SGVhZGVyKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgdmVycyA9IG8uRW5jcnlwdGlvblZlcnNpb25JbmZvID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0aWYodmVycy5NYWpvciAhPSAxIHx8IHZlcnMuTWlub3IgIT0gMSkgdGhyb3cgJ3VucmVjb2duaXplZCB2ZXJzaW9uIGNvZGUgJyArIHZlcnMuTWFqb3IgKyAnIDogJyArIHZlcnMuTWlub3I7XG5cdG8uU2FsdCA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdG8uRW5jcnlwdGVkVmVyaWZpZXIgPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRvLkVuY3J5cHRlZFZlcmlmaWVySGFzaCA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNy4xIEJpbmFyeSBEb2N1bWVudCBQYXNzd29yZCBWZXJpZmllciBEZXJpdmF0aW9uICovXG5mdW5jdGlvbiBjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxKFBhc3N3b3JkLyo6c3RyaW5nKi8pIHtcblx0dmFyIFZlcmlmaWVyID0gMHgwMDAwLCBQYXNzd29yZEFycmF5O1xuXHR2YXIgUGFzc3dvcmREZWNvZGVkID0gX0pTMkFOU0koUGFzc3dvcmQpO1xuXHR2YXIgbGVuID0gUGFzc3dvcmREZWNvZGVkLmxlbmd0aCArIDEsIGksIFBhc3N3b3JkQnl0ZTtcblx0dmFyIEludGVybWVkaWF0ZTEsIEludGVybWVkaWF0ZTIsIEludGVybWVkaWF0ZTM7XG5cdFBhc3N3b3JkQXJyYXkgPSBuZXdfcmF3X2J1ZihsZW4pO1xuXHRQYXNzd29yZEFycmF5WzBdID0gUGFzc3dvcmREZWNvZGVkLmxlbmd0aDtcblx0Zm9yKGkgPSAxOyBpICE9IGxlbjsgKytpKSBQYXNzd29yZEFycmF5W2ldID0gUGFzc3dvcmREZWNvZGVkW2ktMV07XG5cdGZvcihpID0gbGVuLTE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0UGFzc3dvcmRCeXRlID0gUGFzc3dvcmRBcnJheVtpXTtcblx0XHRJbnRlcm1lZGlhdGUxID0gKChWZXJpZmllciAmIDB4NDAwMCkgPT09IDB4MDAwMCkgPyAwIDogMTtcblx0XHRJbnRlcm1lZGlhdGUyID0gKFZlcmlmaWVyIDw8IDEpICYgMHg3RkZGO1xuXHRcdEludGVybWVkaWF0ZTMgPSBJbnRlcm1lZGlhdGUxIHwgSW50ZXJtZWRpYXRlMjtcblx0XHRWZXJpZmllciA9IEludGVybWVkaWF0ZTMgXiBQYXNzd29yZEJ5dGU7XG5cdH1cblx0cmV0dXJuIFZlcmlmaWVyIF4gMHhDRTRCO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNy4yIEJpbmFyeSBEb2N1bWVudCBYT1IgQXJyYXkgSW5pdGlhbGl6YXRpb24gKi9cbnZhciBjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMSA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBQYWRBcnJheSA9IFsweEJCLCAweEZGLCAweEZGLCAweEJBLCAweEZGLCAweEZGLCAweEI5LCAweDgwLCAweDAwLCAweEJFLCAweDBGLCAweDAwLCAweEJGLCAweDBGLCAweDAwXTtcblx0dmFyIEluaXRpYWxDb2RlID0gWzB4RTFGMCwgMHgxRDBGLCAweENDOUMsIDB4ODRDMCwgMHgxMTBDLCAweDBFMTAsIDB4RjFDRSwgMHgzMTNFLCAweDE4NzIsIDB4RTEzOSwgMHhENDBGLCAweDg0RjksIDB4MjgwQywgMHhBOTZBLCAweDRFQzNdO1xuXHR2YXIgWG9yTWF0cml4ID0gWzB4QUVGQywgMHg0REQ5LCAweDlCQjIsIDB4Mjc0NSwgMHg0RThBLCAweDlEMTQsIDB4MkEwOSwgMHg3QjYxLCAweEY2QzIsIDB4RkRBNSwgMHhFQjZCLCAweEM2RjcsIDB4OURDRiwgMHgyQkJGLCAweDQ1NjMsIDB4OEFDNiwgMHgwNUFELCAweDBCNUEsIDB4MTZCNCwgMHgyRDY4LCAweDVBRDAsIDB4MDM3NSwgMHgwNkVBLCAweDBERDQsIDB4MUJBOCwgMHgzNzUwLCAweDZFQTAsIDB4REQ0MCwgMHhEODQ5LCAweEEwQjMsIDB4NTE0NywgMHhBMjhFLCAweDU1M0QsIDB4QUE3QSwgMHg0NEQ1LCAweDZGNDUsIDB4REU4QSwgMHhBRDM1LCAweDRBNEIsIDB4OTQ5NiwgMHgzOTBELCAweDcyMUEsIDB4RUIyMywgMHhDNjY3LCAweDlDRUYsIDB4MjlGRiwgMHg1M0ZFLCAweEE3RkMsIDB4NUZEOSwgMHg0N0QzLCAweDhGQTYsIDB4MEY2RCwgMHgxRURBLCAweDNEQjQsIDB4N0I2OCwgMHhGNkQwLCAweEI4NjEsIDB4NjBFMywgMHhDMUM2LCAweDkzQUQsIDB4Mzc3QiwgMHg2RUY2LCAweERERUMsIDB4NDVBMCwgMHg4QjQwLCAweDA2QTEsIDB4MEQ0MiwgMHgxQTg0LCAweDM1MDgsIDB4NkExMCwgMHhBQTUxLCAweDQ0ODMsIDB4ODkwNiwgMHgwMjJELCAweDA0NUEsIDB4MDhCNCwgMHgxMTY4LCAweDc2QjQsIDB4RUQ2OCwgMHhDQUYxLCAweDg1QzMsIDB4MUJBNywgMHgzNzRFLCAweDZFOUMsIDB4MzczMCwgMHg2RTYwLCAweERDQzAsIDB4QTlBMSwgMHg0MzYzLCAweDg2QzYsIDB4MURBRCwgMHgzMzMxLCAweDY2NjIsIDB4Q0NDNCwgMHg4OUE5LCAweDAzNzMsIDB4MDZFNiwgMHgwRENDLCAweDEwMjEsIDB4MjA0MiwgMHg0MDg0LCAweDgxMDgsIDB4MTIzMSwgMHgyNDYyLCAweDQ4QzRdO1xuXHR2YXIgUm9yID0gZnVuY3Rpb24oQnl0ZSkgeyByZXR1cm4gKChCeXRlLzIpIHwgKEJ5dGUqMTI4KSkgJiAweEZGOyB9O1xuXHR2YXIgWG9yUm9yID0gZnVuY3Rpb24oYnl0ZTEsIGJ5dGUyKSB7IHJldHVybiBSb3IoYnl0ZTEgXiBieXRlMik7IH07XG5cdHZhciBDcmVhdGVYb3JLZXlfTWV0aG9kMSA9IGZ1bmN0aW9uKFBhc3N3b3JkKSB7XG5cdFx0dmFyIFhvcktleSA9IEluaXRpYWxDb2RlW1Bhc3N3b3JkLmxlbmd0aCAtIDFdO1xuXHRcdHZhciBDdXJyZW50RWxlbWVudCA9IDB4Njg7XG5cdFx0Zm9yKHZhciBpID0gUGFzc3dvcmQubGVuZ3RoLTE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHR2YXIgQ2hhciA9IFBhc3N3b3JkW2ldO1xuXHRcdFx0Zm9yKHZhciBqID0gMDsgaiAhPSA3OyArK2opIHtcblx0XHRcdFx0aWYoQ2hhciAmIDB4NDApIFhvcktleSBePSBYb3JNYXRyaXhbQ3VycmVudEVsZW1lbnRdO1xuXHRcdFx0XHRDaGFyICo9IDI7IC0tQ3VycmVudEVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBYb3JLZXk7XG5cdH07XG5cdHJldHVybiBmdW5jdGlvbihwYXNzd29yZC8qOnN0cmluZyovKSB7XG5cdFx0dmFyIFBhc3N3b3JkID0gX0pTMkFOU0kocGFzc3dvcmQpO1xuXHRcdHZhciBYb3JLZXkgPSBDcmVhdGVYb3JLZXlfTWV0aG9kMShQYXNzd29yZCk7XG5cdFx0dmFyIEluZGV4ID0gUGFzc3dvcmQubGVuZ3RoO1xuXHRcdHZhciBPYmZ1c2NhdGlvbkFycmF5ID0gbmV3X3Jhd19idWYoMTYpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgIT0gMTY7ICsraSkgT2JmdXNjYXRpb25BcnJheVtpXSA9IDB4MDA7XG5cdFx0dmFyIFRlbXAsIFBhc3N3b3JkTGFzdENoYXIsIFBhZEluZGV4O1xuXHRcdGlmKChJbmRleCAmIDEpID09PSAxKSB7XG5cdFx0XHRUZW1wID0gWG9yS2V5ID4+IDg7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYWRBcnJheVswXSwgVGVtcCk7XG5cdFx0XHQtLUluZGV4O1xuXHRcdFx0VGVtcCA9IFhvcktleSAmIDB4RkY7XG5cdFx0XHRQYXNzd29yZExhc3RDaGFyID0gUGFzc3dvcmRbUGFzc3dvcmQubGVuZ3RoIC0gMV07XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZExhc3RDaGFyLCBUZW1wKTtcblx0XHR9XG5cdFx0d2hpbGUoSW5kZXggPiAwKSB7XG5cdFx0XHQtLUluZGV4O1xuXHRcdFx0VGVtcCA9IFhvcktleSA+PiA4O1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFzc3dvcmRbSW5kZXhdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ICYgMHhGRjtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhc3N3b3JkW0luZGV4XSwgVGVtcCk7XG5cdFx0fVxuXHRcdEluZGV4ID0gMTU7XG5cdFx0UGFkSW5kZXggPSAxNSAtIFBhc3N3b3JkLmxlbmd0aDtcblx0XHR3aGlsZShQYWRJbmRleCA+IDApIHtcblx0XHRcdFRlbXAgPSBYb3JLZXkgPj4gODtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhZEFycmF5W1BhZEluZGV4XSwgVGVtcCk7XG5cdFx0XHQtLUluZGV4O1xuXHRcdFx0LS1QYWRJbmRleDtcblx0XHRcdFRlbXAgPSBYb3JLZXkgJiAweEZGO1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFzc3dvcmRbSW5kZXhdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHQtLVBhZEluZGV4O1xuXHRcdH1cblx0XHRyZXR1cm4gT2JmdXNjYXRpb25BcnJheTtcblx0fTtcbn0pKCk7XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy43LjMgQmluYXJ5IERvY3VtZW50IFhPUiBEYXRhIFRyYW5zZm9ybWF0aW9uIE1ldGhvZCAxICovXG52YXIgY3J5cHRvX0RlY3J5cHREYXRhX01ldGhvZDEgPSBmdW5jdGlvbihwYXNzd29yZC8qOnN0cmluZyovLCBEYXRhLCBYb3JBcnJheUluZGV4LCBYb3JBcnJheSwgTykge1xuXHQvKiBJZiBYb3JBcnJheSBpcyBzZXQsIHVzZSBpdDsgaWYgTyBpcyBub3Qgc2V0LCBtYWtlIGNoYW5nZXMgaW4tcGxhY2UgKi9cblx0aWYoIU8pIE8gPSBEYXRhO1xuXHRpZighWG9yQXJyYXkpIFhvckFycmF5ID0gY3J5cHRvX0NyZWF0ZVhvckFycmF5X01ldGhvZDEocGFzc3dvcmQpO1xuXHR2YXIgSW5kZXgsIFZhbHVlO1xuXHRmb3IoSW5kZXggPSAwOyBJbmRleCAhPSBEYXRhLmxlbmd0aDsgKytJbmRleCkge1xuXHRcdFZhbHVlID0gRGF0YVtJbmRleF07XG5cdFx0VmFsdWUgXj0gWG9yQXJyYXlbWG9yQXJyYXlJbmRleF07XG5cdFx0VmFsdWUgPSAoKFZhbHVlPj41KSB8IChWYWx1ZTw8MykpICYgMHhGRjtcblx0XHRPW0luZGV4XSA9IFZhbHVlO1xuXHRcdCsrWG9yQXJyYXlJbmRleDtcblx0fVxuXHRyZXR1cm4gW08sIFhvckFycmF5SW5kZXgsIFhvckFycmF5XTtcbn07XG5cbnZhciBjcnlwdG9fTWFrZVhvckRlY3J5cHRvciA9IGZ1bmN0aW9uKHBhc3N3b3JkLyo6c3RyaW5nKi8pIHtcblx0dmFyIFhvckFycmF5SW5kZXggPSAwLCBYb3JBcnJheSA9IGNyeXB0b19DcmVhdGVYb3JBcnJheV9NZXRob2QxKHBhc3N3b3JkKTtcblx0cmV0dXJuIGZ1bmN0aW9uKERhdGEpIHtcblx0XHR2YXIgTyA9IGNyeXB0b19EZWNyeXB0RGF0YV9NZXRob2QxKFwiXCIsIERhdGEsIFhvckFycmF5SW5kZXgsIFhvckFycmF5KTtcblx0XHRYb3JBcnJheUluZGV4ID0gT1sxXTtcblx0XHRyZXR1cm4gT1swXTtcblx0fTtcbn07XG5cbi8qIDIuNS4zNDMgKi9cbmZ1bmN0aW9uIHBhcnNlX1hPUk9iZnVzY2F0aW9uKGJsb2IsIGxlbmd0aCwgb3B0cywgb3V0KSB7XG5cdHZhciBvID0gKHsga2V5OiBwYXJzZXVpbnQxNihibG9iKSwgdmVyaWZpY2F0aW9uQnl0ZXM6IHBhcnNldWludDE2KGJsb2IpIH0vKjphbnkqLyk7XG5cdGlmKG9wdHMucGFzc3dvcmQpIG8udmVyaWZpZXIgPSBjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxKG9wdHMucGFzc3dvcmQpO1xuXHRvdXQudmFsaWQgPSBvLnZlcmlmaWNhdGlvbkJ5dGVzID09PSBvLnZlcmlmaWVyO1xuXHRpZihvdXQudmFsaWQpIG91dC5pbnNpdHUgPSBjcnlwdG9fTWFrZVhvckRlY3J5cHRvcihvcHRzLnBhc3N3b3JkKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNC4xMTcgKi9cbmZ1bmN0aW9uIHBhcnNlX0ZpbGVQYXNzSGVhZGVyKGJsb2IsIGxlbmd0aC8qOm51bWJlciovLCBvbykge1xuXHR2YXIgbyA9IG9vIHx8IHt9OyBvLkluZm8gPSBibG9iLnJlYWRfc2hpZnQoMik7IGJsb2IubCAtPSAyO1xuXHRpZihvLkluZm8gPT09IDEpIG8uRGF0YSA9IHBhcnNlX1JDNEhlYWRlcihibG9iLCBsZW5ndGgpO1xuXHRlbHNlIG8uRGF0YSA9IHBhcnNlX1JDNENyeXB0b0hlYWRlcihibG9iLCBsZW5ndGgpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0ZpbGVQYXNzKGJsb2IsIGxlbmd0aC8qOm51bWJlciovLCBvcHRzKSB7XG5cdHZhciBvID0gKHsgVHlwZTogb3B0cy5iaWZmID49IDggPyBibG9iLnJlYWRfc2hpZnQoMikgOiAwIH0vKjphbnkqLyk7IC8qIHdFbmNyeXB0aW9uVHlwZSAqL1xuXHRpZihvLlR5cGUpIHBhcnNlX0ZpbGVQYXNzSGVhZGVyKGJsb2IsIGxlbmd0aC0yLCBvKTtcblx0ZWxzZSBwYXJzZV9YT1JPYmZ1c2NhdGlvbihibG9iLCBvcHRzLmJpZmYgPj0gOCA/IGxlbmd0aCA6IGxlbmd0aCAtIDIsIG9wdHMsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuXG52YXIgUlRGID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0ZnVuY3Rpb24gcnRmX3RvX3NoZWV0KGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHJldHVybiBydGZfdG9fc2hlZXRfc3RyKEJhc2U2NF9kZWNvZGUoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoZCwgb3B0cyk7XG5cdFx0XHRjYXNlICdidWZmZXInOiByZXR1cm4gcnRmX3RvX3NoZWV0X3N0cihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkKSA/IGQudG9TdHJpbmcoJ2JpbmFyeScpIDogYTJzKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2FycmF5JzogIHJldHVybiBydGZfdG9fc2hlZXRfc3RyKGNjMnN0cihkKSwgb3B0cyk7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0fVxuXG5cdC8qIFRPRE86IHRoaXMgaXMgYSBzdHViICovXG5cdGZ1bmN0aW9uIHJ0Zl90b19zaGVldF9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG8uZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cblx0XHR2YXIgcm93cyA9IHN0ci5tYXRjaCgvXFxcXHRyb3dkLio/XFxcXHJvd1xcYi9nKTtcblx0XHRpZighcm93cy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihcIlJURiBtaXNzaW5nIHRhYmxlXCIpO1xuXHRcdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjAsIHI6MH0sIGU6IHtjOjAsIHI6cm93cy5sZW5ndGggLSAxfX0vKjphbnkqLyk7XG5cdFx0cm93cy5mb3JFYWNoKGZ1bmN0aW9uKHJvd3RmLCBSKSB7XG5cdFx0XHRpZihBcnJheS5pc0FycmF5KHdzKSkgd3NbUl0gPSBbXTtcblx0XHRcdHZhciBydGZyZSA9IC9cXFxcXFx3K1xcYi9nO1xuXHRcdFx0dmFyIGxhc3RfaW5kZXggPSAwO1xuXHRcdFx0dmFyIHJlcztcblx0XHRcdHZhciBDID0gLTE7XG5cdFx0XHR3aGlsZSgocmVzID0gcnRmcmUuZXhlYyhyb3d0ZikpKSB7XG5cdFx0XHRcdHN3aXRjaChyZXNbMF0pIHtcblx0XHRcdFx0XHRjYXNlIFwiXFxcXGNlbGxcIjpcblx0XHRcdFx0XHRcdHZhciBkYXRhID0gcm93dGYuc2xpY2UobGFzdF9pbmRleCwgcnRmcmUubGFzdEluZGV4IC0gcmVzWzBdLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZihkYXRhWzBdID09IFwiIFwiKSBkYXRhID0gZGF0YS5zbGljZSgxKTtcblx0XHRcdFx0XHRcdCsrQztcblx0XHRcdFx0XHRcdGlmKGRhdGEubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IHZhbHVlIHBhcnNpbmcsIGluY2x1ZGluZyBjb2RlcGFnZSBhZGp1c3RtZW50c1xuXHRcdFx0XHRcdFx0XHR2YXIgY2VsbCA9IHt2OiBkYXRhLCB0Olwic1wifTtcblx0XHRcdFx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheSh3cykpIHdzW1JdW0NdID0gY2VsbDtcblx0XHRcdFx0XHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7cjpSLCBjOkN9KV0gPSBjZWxsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFzdF9pbmRleCA9IHJ0ZnJlLmxhc3RJbmRleDtcblx0XHRcdH1cblx0XHRcdGlmKEMgPiByYW5nZS5lLmMpIHJhbmdlLmUuYyA9IEM7XG5cdFx0fSk7XG5cdFx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0cmV0dXJuIHdzO1xuXHR9XG5cblx0ZnVuY3Rpb24gcnRmX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhydGZfdG9fc2hlZXQoZCwgb3B0cyksIG9wdHMpOyB9XG5cblx0LyogVE9ETzogdGhpcyBpcyBhIHN0dWIgKi9cblx0ZnVuY3Rpb24gc2hlZXRfdG9fcnRmKHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHZhciBvID0gW1wie1xcXFxydGYxXFxcXGFuc2lcIl07XG5cdFx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbC8qOkNlbGwqLztcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0XHRvLnB1c2goXCJcXFxcdHJvd2RcXFxcdHJhdXRvZml0MVwiKTtcblx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIG8ucHVzaChcIlxcXFxjZWxseFwiICsgKEMrMSkpO1xuXHRcdFx0by5wdXNoKFwiXFxcXHBhcmRcXFxcaW50YmxcIik7XG5cdFx0XHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0dmFyIGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ106IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC52ID09IG51bGwgJiYgKCFjZWxsLmYgfHwgY2VsbC5GKSkgY29udGludWU7XG5cdFx0XHRcdG8ucHVzaChcIiBcIiArIChjZWxsLncgfHwgKGZvcm1hdF9jZWxsKGNlbGwpLCBjZWxsLncpKSk7XG5cdFx0XHRcdG8ucHVzaChcIlxcXFxjZWxsXCIpO1xuXHRcdFx0fVxuXHRcdFx0by5wdXNoKFwiXFxcXHBhcmRcXFxcaW50YmxcXFxccm93XCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gby5qb2luKFwiXCIpICsgXCJ9XCI7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBydGZfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IHJ0Zl90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19ydGZcblx0fTtcbn0pKCk7XG5mdW5jdGlvbiBoZXgyUkdCKGgpIHtcblx0dmFyIG8gPSBoLnNsaWNlKGhbMF09PT1cIiNcIj8xOjApLnNsaWNlKDAsNik7XG5cdHJldHVybiBbcGFyc2VJbnQoby5zbGljZSgwLDIpLDE2KSxwYXJzZUludChvLnNsaWNlKDIsNCksMTYpLHBhcnNlSW50KG8uc2xpY2UoNCw2KSwxNildO1xufVxuZnVuY3Rpb24gcmdiMkhleChyZ2IpIHtcblx0Zm9yKHZhciBpPTAsbz0xOyBpIT0zOyArK2kpIG8gPSBvKjI1NiArIChyZ2JbaV0+MjU1PzI1NTpyZ2JbaV08MD8wOnJnYltpXSk7XG5cdHJldHVybiBvLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLnNsaWNlKDEpO1xufVxuXG5mdW5jdGlvbiByZ2IySFNMKHJnYikge1xuXHR2YXIgUiA9IHJnYlswXS8yNTUsIEcgPSByZ2JbMV0vMjU1LCBCPXJnYlsyXS8yNTU7XG5cdHZhciBNID0gTWF0aC5tYXgoUiwgRywgQiksIG0gPSBNYXRoLm1pbihSLCBHLCBCKSwgQyA9IE0gLSBtO1xuXHRpZihDID09PSAwKSByZXR1cm4gWzAsIDAsIFJdO1xuXG5cdHZhciBINiA9IDAsIFMgPSAwLCBMMiA9IChNICsgbSk7XG5cdFMgPSBDIC8gKEwyID4gMSA/IDIgLSBMMiA6IEwyKTtcblx0c3dpdGNoKE0pe1xuXHRcdGNhc2UgUjogSDYgPSAoKEcgLSBCKSAvIEMgKyA2KSU2OyBicmVhaztcblx0XHRjYXNlIEc6IEg2ID0gKChCIC0gUikgLyBDICsgMik7IGJyZWFrO1xuXHRcdGNhc2UgQjogSDYgPSAoKFIgLSBHKSAvIEMgKyA0KTsgYnJlYWs7XG5cdH1cblx0cmV0dXJuIFtINiAvIDYsIFMsIEwyIC8gMl07XG59XG5cbmZ1bmN0aW9uIGhzbDJSR0IoaHNsKXtcblx0dmFyIEggPSBoc2xbMF0sIFMgPSBoc2xbMV0sIEwgPSBoc2xbMl07XG5cdHZhciBDID0gUyAqIDIgKiAoTCA8IDAuNSA/IEwgOiAxIC0gTCksIG0gPSBMIC0gQy8yO1xuXHR2YXIgcmdiID0gW20sbSxtXSwgaDYgPSA2Kkg7XG5cblx0dmFyIFg7XG5cdGlmKFMgIT09IDApIHN3aXRjaChoNnwwKSB7XG5cdFx0Y2FzZSAwOiBjYXNlIDY6IFggPSBDICogaDY7IHJnYlswXSArPSBDOyByZ2JbMV0gKz0gWDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiBYID0gQyAqICgyIC0gaDYpOyAgIHJnYlswXSArPSBYOyByZ2JbMV0gKz0gQzsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBYID0gQyAqIChoNiAtIDIpOyAgIHJnYlsxXSArPSBDOyByZ2JbMl0gKz0gWDsgYnJlYWs7XG5cdFx0Y2FzZSAzOiBYID0gQyAqICg0IC0gaDYpOyAgIHJnYlsxXSArPSBYOyByZ2JbMl0gKz0gQzsgYnJlYWs7XG5cdFx0Y2FzZSA0OiBYID0gQyAqIChoNiAtIDQpOyAgIHJnYlsyXSArPSBDOyByZ2JbMF0gKz0gWDsgYnJlYWs7XG5cdFx0Y2FzZSA1OiBYID0gQyAqICg2IC0gaDYpOyAgIHJnYlsyXSArPSBYOyByZ2JbMF0gKz0gQzsgYnJlYWs7XG5cdH1cblx0Zm9yKHZhciBpID0gMDsgaSAhPSAzOyArK2kpIHJnYltpXSA9IE1hdGgucm91bmQocmdiW2ldKjI1NSk7XG5cdHJldHVybiByZ2I7XG59XG5cbi8qIDE4LjguMyBiZ0NvbG9yIHRpbnQgYWxnb3JpdGhtICovXG5mdW5jdGlvbiByZ2JfdGludChoZXgsIHRpbnQpIHtcblx0aWYodGludCA9PT0gMCkgcmV0dXJuIGhleDtcblx0dmFyIGhzbCA9IHJnYjJIU0woaGV4MlJHQihoZXgpKTtcblx0aWYgKHRpbnQgPCAwKSBoc2xbMl0gPSBoc2xbMl0gKiAoMSArIHRpbnQpO1xuXHRlbHNlIGhzbFsyXSA9IDEgLSAoMSAtIGhzbFsyXSkgKiAoMSAtIHRpbnQpO1xuXHRyZXR1cm4gcmdiMkhleChoc2wyUkdCKGhzbCkpO1xufVxuXG4vKiAxOC4zLjEuMTMgd2lkdGggY2FsY3VsYXRpb25zICovXG4vKiBbTVMtT0kyOTUwMF0gMi4xLjU5NSBDb2x1bW4gV2lkdGggJiBGb3JtYXR0aW5nICovXG52YXIgREVGX01EVyA9IDYsIE1BWF9NRFcgPSAxNSwgTUlOX01EVyA9IDEsIE1EVyA9IERFRl9NRFc7XG5mdW5jdGlvbiB3aWR0aDJweCh3aWR0aCkgeyByZXR1cm4gTWF0aC5mbG9vcigoIHdpZHRoICsgKE1hdGgucm91bmQoMTI4L01EVykpLzI1NiApKiBNRFcgKTsgfVxuZnVuY3Rpb24gcHgyY2hhcihweCkgeyByZXR1cm4gKE1hdGguZmxvb3IoKHB4IC0gNSkvTURXICogMTAwICsgMC41KSkvMTAwOyB9XG5mdW5jdGlvbiBjaGFyMndpZHRoKGNocikgeyByZXR1cm4gKE1hdGgucm91bmQoKGNociAqIE1EVyArIDUpL01EVyoyNTYpKS8yNTY7IH1cbi8vZnVuY3Rpb24gcHgyY2hhcl8ocHgpIHsgcmV0dXJuICgoKHB4IC0gNSkvTURXICogMTAwICsgMC41KSkvMTAwOyB9XG4vL2Z1bmN0aW9uIGNoYXIyd2lkdGhfKGNocikgeyByZXR1cm4gKCgoY2hyICogTURXICsgNSkvTURXKjI1NikpLzI1NjsgfVxuZnVuY3Rpb24gY3ljbGVfd2lkdGgoY29sbHcpIHsgcmV0dXJuIGNoYXIyd2lkdGgocHgyY2hhcih3aWR0aDJweChjb2xsdykpKTsgfVxuLyogWExTWC9YTFNCL1hMUyBzcGVjaWZ5IHdpZHRoIGluIHVuaXRzIG9mIE1EVyAqL1xuZnVuY3Rpb24gZmluZF9tZHdfY29sdyhjb2xsdykge1xuXHR2YXIgZGVsdGEgPSBNYXRoLmFicyhjb2xsdyAtIGN5Y2xlX3dpZHRoKGNvbGx3KSksIF9NRFcgPSBNRFc7XG5cdGlmKGRlbHRhID4gMC4wMDUpIGZvcihNRFc9TUlOX01EVzsgTURXPE1BWF9NRFc7ICsrTURXKSBpZihNYXRoLmFicyhjb2xsdyAtIGN5Y2xlX3dpZHRoKGNvbGx3KSkgPD0gZGVsdGEpIHsgZGVsdGEgPSBNYXRoLmFicyhjb2xsdyAtIGN5Y2xlX3dpZHRoKGNvbGx3KSk7IF9NRFcgPSBNRFc7IH1cblx0TURXID0gX01EVztcbn1cbi8qIFhMTUwgc3BlY2lmaWVzIHdpZHRoIGluIHRlcm1zIG9mIHBpeGVscyAqL1xuLypmdW5jdGlvbiBmaW5kX21kd193cHgod3B4KSB7XG5cdHZhciBkZWx0YSA9IEluZmluaXR5LCBndWVzcyA9IDAsIF9NRFcgPSBNSU5fTURXO1xuXHRmb3IoTURXPU1JTl9NRFc7IE1EVzxNQVhfTURXOyArK01EVykge1xuXHRcdGd1ZXNzID0gY2hhcjJ3aWR0aF8ocHgyY2hhcl8od3B4KSkqMjU2O1xuXHRcdGd1ZXNzID0gKGd1ZXNzKSAlIDE7XG5cdFx0aWYoZ3Vlc3MgPiAwLjUpIGd1ZXNzLS07XG5cdFx0aWYoTWF0aC5hYnMoZ3Vlc3MpIDwgZGVsdGEpIHsgZGVsdGEgPSBNYXRoLmFicyhndWVzcyk7IF9NRFcgPSBNRFc7IH1cblx0fVxuXHRNRFcgPSBfTURXO1xufSovXG5cbmZ1bmN0aW9uIHByb2Nlc3NfY29sKGNvbGwvKjpDb2xJbmZvKi8pIHtcblx0aWYoY29sbC53aWR0aCkge1xuXHRcdGNvbGwud3B4ID0gd2lkdGgycHgoY29sbC53aWR0aCk7XG5cdFx0Y29sbC53Y2ggPSBweDJjaGFyKGNvbGwud3B4KTtcblx0XHRjb2xsLk1EVyA9IE1EVztcblx0fSBlbHNlIGlmKGNvbGwud3B4KSB7XG5cdFx0Y29sbC53Y2ggPSBweDJjaGFyKGNvbGwud3B4KTtcblx0XHRjb2xsLndpZHRoID0gY2hhcjJ3aWR0aChjb2xsLndjaCk7XG5cdFx0Y29sbC5NRFcgPSBNRFc7XG5cdH0gZWxzZSBpZih0eXBlb2YgY29sbC53Y2ggPT0gJ251bWJlcicpIHtcblx0XHRjb2xsLndpZHRoID0gY2hhcjJ3aWR0aChjb2xsLndjaCk7XG5cdFx0Y29sbC53cHggPSB3aWR0aDJweChjb2xsLndpZHRoKTtcblx0XHRjb2xsLk1EVyA9IE1EVztcblx0fVxuXHRpZihjb2xsLmN1c3RvbVdpZHRoKSBkZWxldGUgY29sbC5jdXN0b21XaWR0aDtcbn1cblxudmFyIERFRl9QUEkgPSA5NiwgUFBJID0gREVGX1BQSTtcbmZ1bmN0aW9uIHB4MnB0KHB4KSB7IHJldHVybiBweCAqIDk2IC8gUFBJOyB9XG5mdW5jdGlvbiBwdDJweChwdCkgeyByZXR1cm4gcHQgKiBQUEkgLyA5NjsgfVxuXG4vKiBbTVMtRVhTUFhNTDNdIDIuNC41NCBTVF9lbm1QYXR0ZXJuICovXG52YXIgWExNTFBhdHRlcm5UeXBlTWFwID0ge1xuXHRcIk5vbmVcIjogXCJub25lXCIsXG5cdFwiU29saWRcIjogXCJzb2xpZFwiLFxuXHRcIkdyYXk1MFwiOiBcIm1lZGl1bUdyYXlcIixcblx0XCJHcmF5NzVcIjogXCJkYXJrR3JheVwiLFxuXHRcIkdyYXkyNVwiOiBcImxpZ2h0R3JheVwiLFxuXHRcIkhvcnpTdHJpcGVcIjogXCJkYXJrSG9yaXpvbnRhbFwiLFxuXHRcIlZlcnRTdHJpcGVcIjogXCJkYXJrVmVydGljYWxcIixcblx0XCJSZXZlcnNlRGlhZ1N0cmlwZVwiOiBcImRhcmtEb3duXCIsXG5cdFwiRGlhZ1N0cmlwZVwiOiBcImRhcmtVcFwiLFxuXHRcIkRpYWdDcm9zc1wiOiBcImRhcmtHcmlkXCIsXG5cdFwiVGhpY2tEaWFnQ3Jvc3NcIjogXCJkYXJrVHJlbGxpc1wiLFxuXHRcIlRoaW5Ib3J6U3RyaXBlXCI6IFwibGlnaHRIb3Jpem9udGFsXCIsXG5cdFwiVGhpblZlcnRTdHJpcGVcIjogXCJsaWdodFZlcnRpY2FsXCIsXG5cdFwiVGhpblJldmVyc2VEaWFnU3RyaXBlXCI6IFwibGlnaHREb3duXCIsXG5cdFwiVGhpbkhvcnpDcm9zc1wiOiBcImxpZ2h0R3JpZFwiXG59O1xuXG4vKiAxOC44LjUgYm9yZGVycyBDVF9Cb3JkZXJzICovXG5mdW5jdGlvbiBwYXJzZV9ib3JkZXJzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKSB7XG5cdHN0eWxlcy5Cb3JkZXJzID0gW107XG5cdHZhciBib3JkZXIgPSB7fTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzxib3JkZXJzJzogY2FzZSAnPGJvcmRlcnM+JzogY2FzZSAnPC9ib3JkZXJzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjQgYm9yZGVyIENUX0JvcmRlciAqL1xuXHRcdFx0Y2FzZSAnPGJvcmRlcic6IGNhc2UgJzxib3JkZXI+JzogY2FzZSAnPGJvcmRlci8+Jzpcblx0XHRcdFx0Ym9yZGVyID0gLyo6OigqL3t9Lyo6OiA6YW55KSovO1xuXHRcdFx0XHRpZih5LmRpYWdvbmFsVXApIGJvcmRlci5kaWFnb25hbFVwID0gcGFyc2V4bWxib29sKHkuZGlhZ29uYWxVcCk7XG5cdFx0XHRcdGlmKHkuZGlhZ29uYWxEb3duKSBib3JkZXIuZGlhZ29uYWxEb3duID0gcGFyc2V4bWxib29sKHkuZGlhZ29uYWxEb3duKTtcblx0XHRcdFx0c3R5bGVzLkJvcmRlcnMucHVzaChib3JkZXIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvYm9yZGVyPic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBub3QgaW4gc3BlYywgYXBwZWFycyB0byBiZSBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGxlZnQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGxlZnQnOiBjYXNlICc8bGVmdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvbGVmdD4nOiBicmVhaztcblxuXHRcdFx0Lyogbm90ZTogbm90IGluIHNwZWMsIGFwcGVhcnMgdG8gYmUgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxyaWdodC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8cmlnaHQnOiBjYXNlICc8cmlnaHQ+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3JpZ2h0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjQzIHRvcCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPHRvcC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8dG9wJzogY2FzZSAnPHRvcD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvdG9wPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjYgYm90dG9tIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8Ym90dG9tLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxib3R0b20nOiBjYXNlICc8Ym90dG9tPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9ib3R0b20+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTMgZGlhZ29uYWwgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxkaWFnb25hbCc6IGNhc2UgJzxkaWFnb25hbD4nOiBjYXNlICc8ZGlhZ29uYWwvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9kaWFnb25hbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yNSBob3Jpem9udGFsIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8aG9yaXpvbnRhbCc6IGNhc2UgJzxob3Jpem9udGFsPic6IGNhc2UgJzxob3Jpem9udGFsLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvaG9yaXpvbnRhbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC40NCB2ZXJ0aWNhbCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPHZlcnRpY2FsJzogY2FzZSAnPHZlcnRpY2FsPic6IGNhc2UgJzx2ZXJ0aWNhbC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3ZlcnRpY2FsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM3IHN0YXJ0IENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8c3RhcnQnOiBjYXNlICc8c3RhcnQ+JzogY2FzZSAnPHN0YXJ0Lz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvc3RhcnQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTYgZW5kIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8ZW5kJzogY2FzZSAnPGVuZD4nOiBjYXNlICc8ZW5kLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvZW5kPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44Lj8gY29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6IGNhc2UgJzxjb2xvcj4nOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxjb2xvci8+JzogY2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikge1xuXHRcdFx0XHRpZighcGFzcykgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGJvcmRlcnMnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKiAxOC44LjIxIGZpbGxzIENUX0ZpbGxzICovXG5mdW5jdGlvbiBwYXJzZV9maWxscyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cykge1xuXHRzdHlsZXMuRmlsbHMgPSBbXTtcblx0dmFyIGZpbGwgPSB7fTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzxmaWxscyc6IGNhc2UgJzxmaWxscz4nOiBjYXNlICc8L2ZpbGxzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjIwIGZpbGwgQ1RfRmlsbCAqL1xuXHRcdFx0Y2FzZSAnPGZpbGw+JzogY2FzZSAnPGZpbGwnOiBjYXNlICc8ZmlsbC8+Jzpcblx0XHRcdFx0ZmlsbCA9IHt9OyBzdHlsZXMuRmlsbHMucHVzaChmaWxsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2ZpbGw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjQgZ3JhZGllbnRGaWxsIENUX0dyYWRpZW50RmlsbCAqL1xuXHRcdFx0Y2FzZSAnPGdyYWRpZW50RmlsbD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxncmFkaWVudEZpbGwnOlxuXHRcdFx0Y2FzZSAnPC9ncmFkaWVudEZpbGw+Jzogc3R5bGVzLkZpbGxzLnB1c2goZmlsbCk7IGZpbGwgPSB7fTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzIgcGF0dGVybkZpbGwgQ1RfUGF0dGVybkZpbGwgKi9cblx0XHRcdGNhc2UgJzxwYXR0ZXJuRmlsbCc6IGNhc2UgJzxwYXR0ZXJuRmlsbD4nOlxuXHRcdFx0XHRpZih5LnBhdHRlcm5UeXBlKSBmaWxsLnBhdHRlcm5UeXBlID0geS5wYXR0ZXJuVHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8cGF0dGVybkZpbGwvPic6IGNhc2UgJzwvcGF0dGVybkZpbGw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMyBiZ0NvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8YmdDb2xvcic6XG5cdFx0XHRcdGlmKCFmaWxsLmJnQ29sb3IpIGZpbGwuYmdDb2xvciA9IHt9O1xuXHRcdFx0XHRpZih5LmluZGV4ZWQpIGZpbGwuYmdDb2xvci5pbmRleGVkID0gcGFyc2VJbnQoeS5pbmRleGVkLCAxMCk7XG5cdFx0XHRcdGlmKHkudGhlbWUpIGZpbGwuYmdDb2xvci50aGVtZSA9IHBhcnNlSW50KHkudGhlbWUsIDEwKTtcblx0XHRcdFx0aWYoeS50aW50KSBmaWxsLmJnQ29sb3IudGludCA9IHBhcnNlRmxvYXQoeS50aW50KTtcblx0XHRcdFx0LyogRXhjZWwgdXNlcyBBUkdCIHN0cmluZ3MgKi9cblx0XHRcdFx0aWYoeS5yZ2IpIGZpbGwuYmdDb2xvci5yZ2IgPSB5LnJnYi5zbGljZSgtNik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGJnQ29sb3IvPic6IGNhc2UgJzwvYmdDb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xOSBmZ0NvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8ZmdDb2xvcic6XG5cdFx0XHRcdGlmKCFmaWxsLmZnQ29sb3IpIGZpbGwuZmdDb2xvciA9IHt9O1xuXHRcdFx0XHRpZih5LnRoZW1lKSBmaWxsLmZnQ29sb3IudGhlbWUgPSBwYXJzZUludCh5LnRoZW1lLCAxMCk7XG5cdFx0XHRcdGlmKHkudGludCkgZmlsbC5mZ0NvbG9yLnRpbnQgPSBwYXJzZUZsb2F0KHkudGludCk7XG5cdFx0XHRcdC8qIEV4Y2VsIHVzZXMgQVJHQiBzdHJpbmdzICovXG5cdFx0XHRcdGlmKHkucmdiICE9IG51bGwpIGZpbGwuZmdDb2xvci5yZ2IgPSB5LnJnYi5zbGljZSgtNik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZnQ29sb3IvPic6IGNhc2UgJzwvZmdDb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zOCBzdG9wIENUX0dyYWRpZW50U3RvcCAqL1xuXHRcdFx0Y2FzZSAnPHN0b3AnOiBjYXNlICc8c3RvcC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L3N0b3A+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguPyBjb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGNvbG9yJzogY2FzZSAnPGNvbG9yLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvY29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHtcblx0XHRcdFx0aWYoIXBhc3MpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBmaWxscycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qIDE4LjguMjMgZm9udHMgQ1RfRm9udHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2ZvbnRzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKSB7XG5cdHN0eWxlcy5Gb250cyA9IFtdO1xuXHR2YXIgZm9udCA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGZvbnRzJzogY2FzZSAnPGZvbnRzPic6IGNhc2UgJzwvZm9udHM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjIgZm9udCBDVF9Gb250ICovXG5cdFx0XHRjYXNlICc8Zm9udCc6IGNhc2UgJzxmb250Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9mb250Pic6IGNhc2UgJzxmb250Lz4nOlxuXHRcdFx0XHRzdHlsZXMuRm9udHMucHVzaChmb250KTtcblx0XHRcdFx0Zm9udCA9IHt9O1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTguOC4yOSBuYW1lIENUX0ZvbnROYW1lICovXG5cdFx0XHRjYXNlICc8bmFtZSc6IGlmKHkudmFsKSBmb250Lm5hbWUgPSB1dGY4cmVhZCh5LnZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPG5hbWUvPic6IGNhc2UgJzwvbmFtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yICBiIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGInOiBmb250LmJvbGQgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxiLz4nOiBmb250LmJvbGQgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguOC4yNiBpIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGknOiBmb250Lml0YWxpYyA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGkvPic6IGZvbnQuaXRhbGljID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTMgdSBDVF9VbmRlcmxpbmVQcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHUnOlxuXHRcdFx0XHRzd2l0Y2goeS52YWwpIHtcblx0XHRcdFx0XHRjYXNlIFwibm9uZVwiOiBmb250LnVuZGVybGluZSA9IDB4MDA7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJzaW5nbGVcIjogZm9udC51bmRlcmxpbmUgPSAweDAxOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiZG91YmxlXCI6IGZvbnQudW5kZXJsaW5lID0gMHgwMjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcInNpbmdsZUFjY291bnRpbmdcIjogZm9udC51bmRlcmxpbmUgPSAweDIxOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiZG91YmxlQWNjb3VudGluZ1wiOiBmb250LnVuZGVybGluZSA9IDB4MjI7IGJyZWFrO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHUvPic6IGZvbnQudW5kZXJsaW5lID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTAgc3RyaWtlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHN0cmlrZSc6IGZvbnQuc3RyaWtlID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c3RyaWtlLz4nOiBmb250LnN0cmlrZSA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjIgIG91dGxpbmUgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8b3V0bGluZSc6IGZvbnQub3V0bGluZSA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPG91dGxpbmUvPic6IGZvbnQub3V0bGluZSA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM2IHNoYWRvdyBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxzaGFkb3cnOiBmb250LnNoYWRvdyA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHNoYWRvdy8+JzogZm9udC5zaGFkb3cgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguOC4xMiBjb25kZW5zZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxjb25kZW5zZSc6IGZvbnQuY29uZGVuc2UgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxjb25kZW5zZS8+JzogZm9udC5jb25kZW5zZSA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE3IGV4dGVuZCBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxleHRlbmQnOiBmb250LmV4dGVuZCA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dGVuZC8+JzogZm9udC5leHRlbmQgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMSBzeiBDVF9Gb250U2l6ZSAqL1xuXHRcdFx0Y2FzZSAnPHN6JzogaWYoeS52YWwpIGZvbnQuc3ogPSAreS52YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHN6Lz4nOiBjYXNlICc8L3N6Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjE0IHZlcnRBbGlnbiBDVF9WZXJ0aWNhbEFsaWduRm9udFByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8dmVydEFsaWduJzogaWYoeS52YWwpIGZvbnQudmVydEFsaWduID0geS52YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHZlcnRBbGlnbi8+JzogY2FzZSAnPC92ZXJ0QWxpZ24+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTggZmFtaWx5IENUX0ZvbnRGYW1pbHkgKi9cblx0XHRcdGNhc2UgJzxmYW1pbHknOiBpZih5LnZhbCkgZm9udC5mYW1pbHkgPSBwYXJzZUludCh5LnZhbCwxMCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZhbWlseS8+JzogY2FzZSAnPC9mYW1pbHk+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzUgc2NoZW1lIENUX0ZvbnRTY2hlbWUgKi9cblx0XHRcdGNhc2UgJzxzY2hlbWUnOiBpZih5LnZhbCkgZm9udC5zY2hlbWUgPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c2NoZW1lLz4nOiBjYXNlICc8L3NjaGVtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xIGNoYXJzZXQgQ1RfSW50UHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxjaGFyc2V0Jzpcblx0XHRcdFx0aWYoeS52YWwgPT0gJzEnKSBicmVhaztcblx0XHRcdFx0eS5jb2RlcGFnZSA9IENTMkNQW3BhcnNlSW50KHkudmFsLCAxMCldO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTguPy4/IGNvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8Y29sb3InOlxuXHRcdFx0XHRpZighZm9udC5jb2xvcikgZm9udC5jb2xvciA9IHt9O1xuXHRcdFx0XHRpZih5LmF1dG8pIGZvbnQuY29sb3IuYXV0byA9IHBhcnNleG1sYm9vbCh5LmF1dG8pO1xuXG5cdFx0XHRcdGlmKHkucmdiKSBmb250LmNvbG9yLnJnYiA9IHkucmdiLnNsaWNlKC02KTtcblx0XHRcdFx0ZWxzZSBpZih5LmluZGV4ZWQpIHtcblx0XHRcdFx0XHRmb250LmNvbG9yLmluZGV4ID0gcGFyc2VJbnQoeS5pbmRleGVkLCAxMCk7XG5cdFx0XHRcdFx0dmFyIGljdiA9IFhMU0ljdltmb250LmNvbG9yLmluZGV4XTtcblx0XHRcdFx0XHRpZihmb250LmNvbG9yLmluZGV4ID09IDgxKSBpY3YgPSBYTFNJY3ZbMV07XG5cdFx0XHRcdFx0aWYoIWljdikgaWN2ID0gWExTSWN2WzFdOyAvL3Rocm93IG5ldyBFcnJvcih4KTsgLy8gbm90ZTogMjA2IGlzIHZhbGlkXG5cdFx0XHRcdFx0Zm9udC5jb2xvci5yZ2IgPSBpY3ZbMF0udG9TdHJpbmcoMTYpICsgaWN2WzFdLnRvU3RyaW5nKDE2KSArIGljdlsyXS50b1N0cmluZygxNik7XG5cdFx0XHRcdH0gZWxzZSBpZih5LnRoZW1lKSB7XG5cdFx0XHRcdFx0Zm9udC5jb2xvci50aGVtZSA9IHBhcnNlSW50KHkudGhlbWUsIDEwKTtcblx0XHRcdFx0XHRpZih5LnRpbnQpIGZvbnQuY29sb3IudGludCA9IHBhcnNlRmxvYXQoeS50aW50KTtcblx0XHRcdFx0XHRpZih5LnRoZW1lICYmIHRoZW1lcy50aGVtZUVsZW1lbnRzICYmIHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSkge1xuXHRcdFx0XHRcdFx0Zm9udC5jb2xvci5yZ2IgPSByZ2JfdGludCh0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbZm9udC5jb2xvci50aGVtZV0ucmdiLCBmb250LmNvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8Y29sb3IvPic6IGNhc2UgJzwvY29sb3I+JzogYnJlYWs7XG5cblx0XHRcdC8qIG5vdGU6IHNvbWV0aW1lcyBtYzpBbHRlcm5hdGVDb250ZW50IGFwcGVhcnMgYmFyZSAqL1xuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L0FsdGVybmF0ZUNvbnRlbnQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikge1xuXHRcdFx0XHRpZighcGFzcykgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGZvbnRzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMTguOC4zMSBudW1GbXRzIENUX051bUZtdHMgKi9cbmZ1bmN0aW9uIHBhcnNlX251bUZtdHModCwgc3R5bGVzLCBvcHRzKSB7XG5cdHN0eWxlcy5OdW1iZXJGbXQgPSBbXTtcblx0dmFyIGsvKkFycmF5PG51bWJlcj4qLyA9IChrZXlzKHRhYmxlX2ZtdCkvKjphbnkqLyk7XG5cdGZvcih2YXIgaT0wOyBpIDwgay5sZW5ndGg7ICsraSkgc3R5bGVzLk51bWJlckZtdFtrW2ldXSA9IHRhYmxlX2ZtdFtrW2ldXTtcblx0dmFyIG0gPSB0WzBdLm1hdGNoKHRhZ3JlZ2V4KTtcblx0aWYoIW0pIHJldHVybjtcblx0Zm9yKGk9MDsgaSA8IG0ubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKG1baV0pO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPG51bUZtdHMnOiBjYXNlICc8L251bUZtdHM+JzogY2FzZSAnPG51bUZtdHMvPic6IGNhc2UgJzxudW1GbXRzPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPG51bUZtdCc6IHtcblx0XHRcdFx0dmFyIGY9dW5lc2NhcGV4bWwodXRmOHJlYWQoeS5mb3JtYXRDb2RlKSksIGo9cGFyc2VJbnQoeS5udW1GbXRJZCwxMCk7XG5cdFx0XHRcdHN0eWxlcy5OdW1iZXJGbXRbal0gPSBmO1xuXHRcdFx0XHRpZihqPjApIHtcblx0XHRcdFx0XHRpZihqID4gMHgxODgpIHtcblx0XHRcdFx0XHRcdGZvcihqID0gMHgxODg7IGogPiAweDNjOyAtLWopIGlmKHN0eWxlcy5OdW1iZXJGbXRbal0gPT0gbnVsbCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRzdHlsZXMuTnVtYmVyRm10W2pdID0gZjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0U1NGX2xvYWQoZixqKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBicmVhaztcblx0XHRcdGNhc2UgJzwvbnVtRm10Pic6IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBudW1GbXRzJyk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlX251bUZtdHMoTkYvKjp7W246bnVtYmVyfHN0cmluZ106c3RyaW5nfSovLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBvID0gW1wiPG51bUZtdHM+XCJdO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Zm9yKHZhciBpID0gclswXTsgaSA8PSByWzFdOyArK2kpIGlmKE5GW2ldICE9IG51bGwpIG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnbnVtRm10JyxudWxsLHtudW1GbXRJZDppLGZvcm1hdENvZGU6ZXNjYXBleG1sKE5GW2ldKX0pKTtcblx0fSk7XG5cdGlmKG8ubGVuZ3RoID09PSAxKSByZXR1cm4gXCJcIjtcblx0b1tvLmxlbmd0aF0gPSAoXCI8L251bUZtdHM+XCIpO1xuXHRvWzBdID0gd3JpdGV4dGFnKCdudW1GbXRzJywgbnVsbCwgeyBjb3VudDpvLmxlbmd0aC0yIH0pLnJlcGxhY2UoXCIvPlwiLCBcIj5cIik7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIDE4LjguMTAgY2VsbFhmcyBDVF9DZWxsWGZzICovXG52YXIgY2VsbFhGX3VpbnQgPSBbIFwibnVtRm10SWRcIiwgXCJmaWxsSWRcIiwgXCJmb250SWRcIiwgXCJib3JkZXJJZFwiLCBcInhmSWRcIiBdO1xudmFyIGNlbGxYRl9ib29sID0gWyBcImFwcGx5QWxpZ25tZW50XCIsIFwiYXBwbHlCb3JkZXJcIiwgXCJhcHBseUZpbGxcIiwgXCJhcHBseUZvbnRcIiwgXCJhcHBseU51bWJlckZvcm1hdFwiLCBcImFwcGx5UHJvdGVjdGlvblwiLCBcInBpdm90QnV0dG9uXCIsIFwicXVvdGVQcmVmaXhcIiBdO1xuZnVuY3Rpb24gcGFyc2VfY2VsbFhmcyh0LCBzdHlsZXMsIG9wdHMpIHtcblx0c3R5bGVzLkNlbGxYZiA9IFtdO1xuXHR2YXIgeGY7XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCksIGkgPSAwO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGNlbGxYZnMnOiBjYXNlICc8Y2VsbFhmcz4nOiBjYXNlICc8Y2VsbFhmcy8+JzogY2FzZSAnPC9jZWxsWGZzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjQ1IHhmIENUX1hmICovXG5cdFx0XHRjYXNlICc8eGYnOiBjYXNlICc8eGYvPic6XG5cdFx0XHRcdHhmID0geTtcblx0XHRcdFx0ZGVsZXRlIHhmWzBdO1xuXHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBjZWxsWEZfdWludC5sZW5ndGg7ICsraSkgaWYoeGZbY2VsbFhGX3VpbnRbaV1dKVxuXHRcdFx0XHRcdHhmW2NlbGxYRl91aW50W2ldXSA9IHBhcnNlSW50KHhmW2NlbGxYRl91aW50W2ldXSwgMTApO1xuXHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBjZWxsWEZfYm9vbC5sZW5ndGg7ICsraSkgaWYoeGZbY2VsbFhGX2Jvb2xbaV1dKVxuXHRcdFx0XHRcdHhmW2NlbGxYRl9ib29sW2ldXSA9IHBhcnNleG1sYm9vbCh4ZltjZWxsWEZfYm9vbFtpXV0pO1xuXHRcdFx0XHRpZihzdHlsZXMuTnVtYmVyRm10ICYmIHhmLm51bUZtdElkID4gMHgxODgpIHtcblx0XHRcdFx0XHRmb3IoaSA9IDB4MTg4OyBpID4gMHgzYzsgLS1pKSBpZihzdHlsZXMuTnVtYmVyRm10W3hmLm51bUZtdElkXSA9PSBzdHlsZXMuTnVtYmVyRm10W2ldKSB7IHhmLm51bUZtdElkID0gaTsgYnJlYWs7IH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzdHlsZXMuQ2VsbFhmLnB1c2goeGYpOyBicmVhaztcblx0XHRcdGNhc2UgJzwveGY+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMSBhbGlnbm1lbnQgQ1RfQ2VsbEFsaWdubWVudCAqL1xuXHRcdFx0Y2FzZSAnPGFsaWdubWVudCc6IGNhc2UgJzxhbGlnbm1lbnQvPic6XG5cdFx0XHRcdHZhciBhbGlnbm1lbnQgPSB7fTtcblx0XHRcdFx0aWYoeS52ZXJ0aWNhbCkgYWxpZ25tZW50LnZlcnRpY2FsID0geS52ZXJ0aWNhbDtcblx0XHRcdFx0aWYoeS5ob3Jpem9udGFsKSBhbGlnbm1lbnQuaG9yaXpvbnRhbCA9IHkuaG9yaXpvbnRhbDtcblx0XHRcdFx0aWYoeS50ZXh0Um90YXRpb24gIT0gbnVsbCkgYWxpZ25tZW50LnRleHRSb3RhdGlvbiA9IHkudGV4dFJvdGF0aW9uO1xuXHRcdFx0XHRpZih5LmluZGVudCkgYWxpZ25tZW50LmluZGVudCA9IHkuaW5kZW50O1xuXHRcdFx0XHRpZih5LndyYXBUZXh0KSBhbGlnbm1lbnQud3JhcFRleHQgPSBwYXJzZXhtbGJvb2woeS53cmFwVGV4dCk7XG5cdFx0XHRcdHhmLmFsaWdubWVudCA9IGFsaWdubWVudDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L2FsaWdubWVudD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zMyBwcm90ZWN0aW9uIENUX0NlbGxQcm90ZWN0aW9uICovXG5cdFx0XHRjYXNlICc8cHJvdGVjdGlvbic6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9wcm90ZWN0aW9uPic6IGNhc2UgJzxwcm90ZWN0aW9uLz4nOiBicmVhaztcblxuXHRcdFx0Lyogbm90ZTogc29tZXRpbWVzIG1jOkFsdGVybmF0ZUNvbnRlbnQgYXBwZWFycyBiYXJlICovXG5cdFx0XHRjYXNlICc8QWx0ZXJuYXRlQ29udGVudCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvQWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gY2VsbFhmcycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NlbGxYZnMoY2VsbFhmcykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnY2VsbFhmcycsbnVsbCkpO1xuXHRjZWxsWGZzLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygneGYnLCBudWxsLCBjKSk7XG5cdH0pO1xuXHRvW28ubGVuZ3RoXSA9IChcIjwvY2VsbFhmcz5cIik7XG5cdGlmKG8ubGVuZ3RoID09PSAyKSByZXR1cm4gXCJcIjtcblx0b1swXSA9IHdyaXRleHRhZygnY2VsbFhmcycsbnVsbCwge2NvdW50Om8ubGVuZ3RoLTJ9KS5yZXBsYWNlKFwiLz5cIixcIj5cIik7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIDE4LjggU3R5bGVzIENUX1N0eWxlc2hlZXQqL1xudmFyIHBhcnNlX3N0eV94bWw9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gbWFrZV9wc3R5eCgpIHtcbnZhciBudW1GbXRSZWdleCA9IC88KD86XFx3KzopP251bUZtdHMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP251bUZtdHM+LztcbnZhciBjZWxsWGZSZWdleCA9IC88KD86XFx3KzopP2NlbGxYZnMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP2NlbGxYZnM+LztcbnZhciBmaWxsc1JlZ2V4ID0gLzwoPzpcXHcrOik/ZmlsbHMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP2ZpbGxzPi87XG52YXIgZm9udHNSZWdleCA9IC88KD86XFx3KzopP2ZvbnRzKFtePl0qKT5bXFxTXFxzXSo/PFxcLyg/Olxcdys6KT9mb250cz4vO1xudmFyIGJvcmRlcnNSZWdleCA9IC88KD86XFx3KzopP2JvcmRlcnMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP2JvcmRlcnM+LztcblxucmV0dXJuIGZ1bmN0aW9uIHBhcnNlX3N0eV94bWwoZGF0YSwgdGhlbWVzLCBvcHRzKSB7XG5cdHZhciBzdHlsZXMgPSB7fTtcblx0aWYoIWRhdGEpIHJldHVybiBzdHlsZXM7XG5cdGRhdGEgPSBkYXRhLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vbWcsXCJcIikucmVwbGFjZSgvPCFET0NUWVBFW15cXFtdKlxcW1teXFxdXSpcXF0+L2dtLFwiXCIpO1xuXHQvKiAxOC44LjM5IHN0eWxlU2hlZXQgQ1RfU3R5bGVzaGVldCAqL1xuXHR2YXIgdDtcblxuXHQvKiAxOC44LjMxIG51bUZtdHMgQ1RfTnVtRm10cyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2gobnVtRm10UmVnZXgpKSkgcGFyc2VfbnVtRm10cyh0LCBzdHlsZXMsIG9wdHMpO1xuXG5cdC8qIDE4LjguMjMgZm9udHMgQ1RfRm9udHMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGZvbnRzUmVnZXgpKSkgcGFyc2VfZm9udHModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpO1xuXG5cdC8qIDE4LjguMjEgZmlsbHMgQ1RfRmlsbHMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGZpbGxzUmVnZXgpKSkgcGFyc2VfZmlsbHModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpO1xuXG5cdC8qIDE4LjguNSAgYm9yZGVycyBDVF9Cb3JkZXJzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChib3JkZXJzUmVnZXgpKSkgcGFyc2VfYm9yZGVycyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cyk7XG5cblx0LyogMTguOC45ICBjZWxsU3R5bGVYZnMgQ1RfQ2VsbFN0eWxlWGZzID8gKi9cblx0LyogMTguOC44ICBjZWxsU3R5bGVzIENUX0NlbGxTdHlsZXMgPyAqL1xuXG5cdC8qIDE4LjguMTAgY2VsbFhmcyBDVF9DZWxsWGZzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChjZWxsWGZSZWdleCkpKSBwYXJzZV9jZWxsWGZzKHQsIHN0eWxlcywgb3B0cyk7XG5cblx0LyogMTguOC4xNSBkeGZzIENUX0R4ZnMgPyAqL1xuXHQvKiAxOC44LjQyIHRhYmxlU3R5bGVzIENUX1RhYmxlU3R5bGVzID8gKi9cblx0LyogMTguOC4xMSBjb2xvcnMgQ1RfQ29sb3JzID8gKi9cblx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cblx0cmV0dXJuIHN0eWxlcztcbn07XG59KSgpO1xuXG5mdW5jdGlvbiB3cml0ZV9zdHlfeG1sKHdiLyo6V29ya2Jvb2sqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnc3R5bGVTaGVldCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczp2dCc6IFhNTE5TLnZ0XG5cdH0pXSwgdztcblx0aWYod2IuU1NGICYmICh3ID0gd3JpdGVfbnVtRm10cyh3Yi5TU0YpKSAhPSBudWxsKSBvW28ubGVuZ3RoXSA9IHc7XG5cdG9bby5sZW5ndGhdID0gKCc8Zm9udHMgY291bnQ9XCIxXCI+PGZvbnQ+PHN6IHZhbD1cIjEyXCIvPjxjb2xvciB0aGVtZT1cIjFcIi8+PG5hbWUgdmFsPVwiQ2FsaWJyaVwiLz48ZmFtaWx5IHZhbD1cIjJcIi8+PHNjaGVtZSB2YWw9XCJtaW5vclwiLz48L2ZvbnQ+PC9mb250cz4nKTtcblx0b1tvLmxlbmd0aF0gPSAoJzxmaWxscyBjb3VudD1cIjJcIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9XCJub25lXCIvPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9XCJncmF5MTI1XCIvPjwvZmlsbD48L2ZpbGxzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGJvcmRlcnMgY291bnQ9XCIxXCI+PGJvcmRlcj48bGVmdC8+PHJpZ2h0Lz48dG9wLz48Ym90dG9tLz48ZGlhZ29uYWwvPjwvYm9yZGVyPjwvYm9yZGVycz4nKTtcblx0b1tvLmxlbmd0aF0gPSAoJzxjZWxsU3R5bGVYZnMgY291bnQ9XCIxXCI+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIvPjwvY2VsbFN0eWxlWGZzPicpO1xuXHRpZigodyA9IHdyaXRlX2NlbGxYZnMob3B0cy5jZWxsWGZzKSkpIG9bby5sZW5ndGhdID0gKHcpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGNlbGxTdHlsZXMgY291bnQ9XCIxXCI+PGNlbGxTdHlsZSBuYW1lPVwiTm9ybWFsXCIgeGZJZD1cIjBcIiBidWlsdGluSWQ9XCIwXCIvPjwvY2VsbFN0eWxlcz4nKTtcblx0b1tvLmxlbmd0aF0gPSAoJzxkeGZzIGNvdW50PVwiMFwiLz4nKTtcblx0b1tvLmxlbmd0aF0gPSAoJzx0YWJsZVN0eWxlcyBjb3VudD1cIjBcIiBkZWZhdWx0VGFibGVTdHlsZT1cIlRhYmxlU3R5bGVNZWRpdW05XCIgZGVmYXVsdFBpdm90U3R5bGU9XCJQaXZvdFN0eWxlTWVkaXVtNFwiLz4nKTtcblxuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAoJzwvc3R5bGVTaGVldD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC42NTcgQnJ0Rm10ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbXQoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIG51bUZtdElkID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgc3RGbXRDb2RlID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEsbGVuZ3RoLTIpO1xuXHRyZXR1cm4gW251bUZtdElkLCBzdEZtdENvZGVdO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Rm10KGkvKjpudW1iZXIqLywgZi8qOnN0cmluZyovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig2ICsgNCAqIGYubGVuZ3RoKTtcblx0by53cml0ZV9zaGlmdCgyLCBpKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGYsIG8pO1xuXHR2YXIgb3V0ID0gKG8ubGVuZ3RoID4gby5sKSA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG5cdGlmKG8ubCA9PSBudWxsKSBvLmwgPSBvLmxlbmd0aDtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTkgQnJ0Rm9udCBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGb250KGRhdGEsIGxlbmd0aC8qOm51bWJlciovLCBvcHRzKSB7XG5cdHZhciBvdXQgPSAoe30vKjphbnkqLyk7XG5cblx0b3V0LnN6ID0gZGF0YS5yZWFkX3NoaWZ0KDIpIC8gMjA7XG5cblx0dmFyIGdyYml0ID0gcGFyc2VfRm9udEZsYWdzKGRhdGEsIDIsIG9wdHMpO1xuXHRpZihncmJpdC5mSXRhbGljKSBvdXQuaXRhbGljID0gMTtcblx0aWYoZ3JiaXQuZkNvbmRlbnNlKSBvdXQuY29uZGVuc2UgPSAxO1xuXHRpZihncmJpdC5mRXh0ZW5kKSBvdXQuZXh0ZW5kID0gMTtcblx0aWYoZ3JiaXQuZlNoYWRvdykgb3V0LnNoYWRvdyA9IDE7XG5cdGlmKGdyYml0LmZPdXRsaW5lKSBvdXQub3V0bGluZSA9IDE7XG5cdGlmKGdyYml0LmZTdHJpa2VvdXQpIG91dC5zdHJpa2UgPSAxO1xuXG5cdHZhciBibHMgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGlmKGJscyA9PT0gMHgwMkJDKSBvdXQuYm9sZCA9IDE7XG5cblx0c3dpdGNoKGRhdGEucmVhZF9zaGlmdCgyKSkge1xuXHRcdC8qIGNhc2UgMDogb3V0LnZlcnRBbGlnbiA9IFwiYmFzZWxpbmVcIjsgYnJlYWs7ICovXG5cdFx0Y2FzZSAxOiBvdXQudmVydEFsaWduID0gXCJzdXBlcnNjcmlwdFwiOyBicmVhaztcblx0XHRjYXNlIDI6IG91dC52ZXJ0QWxpZ24gPSBcInN1YnNjcmlwdFwiOyBicmVhaztcblx0fVxuXG5cdHZhciB1bmRlcmxpbmUgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGlmKHVuZGVybGluZSAhPSAwKSBvdXQudW5kZXJsaW5lID0gdW5kZXJsaW5lO1xuXG5cdHZhciBmYW1pbHkgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGZhbWlseSA+IDApIG91dC5mYW1pbHkgPSBmYW1pbHk7XG5cblx0dmFyIGJDaGFyU2V0ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRpZihiQ2hhclNldCA+IDApIG91dC5jaGFyc2V0ID0gYkNoYXJTZXQ7XG5cblx0ZGF0YS5sKys7XG5cdG91dC5jb2xvciA9IHBhcnNlX0JydENvbG9yKGRhdGEsIDgpO1xuXG5cdHN3aXRjaChkYXRhLnJlYWRfc2hpZnQoMSkpIHtcblx0XHQvKiBjYXNlIDA6IG91dC5zY2hlbWUgPSBcIm5vbmVcIjogYnJlYWs7ICovXG5cdFx0Y2FzZSAxOiBvdXQuc2NoZW1lID0gXCJtYWpvclwiOyBicmVhaztcblx0XHRjYXNlIDI6IG91dC5zY2hlbWUgPSBcIm1pbm9yXCI7IGJyZWFrO1xuXHR9XG5cblx0b3V0Lm5hbWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSwgbGVuZ3RoIC0gMjEpO1xuXG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRGb250KGZvbnQvKjphbnkqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMjUrNCozMik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZm9udC5zeiAqIDIwKTtcblx0d3JpdGVfRm9udEZsYWdzKGZvbnQsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZvbnQuYm9sZCA/IDB4MDJCQyA6IDB4MDE5MCk7XG5cdHZhciBzc3MgPSAwO1xuXHRpZihmb250LnZlcnRBbGlnbiA9PSBcInN1cGVyc2NyaXB0XCIpIHNzcyA9IDE7XG5cdGVsc2UgaWYoZm9udC52ZXJ0QWxpZ24gPT0gXCJzdWJzY3JpcHRcIikgc3NzID0gMjtcblx0by53cml0ZV9zaGlmdCgyLCBzc3MpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZvbnQudW5kZXJsaW5lIHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZvbnQuZmFtaWx5IHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZvbnQuY2hhcnNldCB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0d3JpdGVfQnJ0Q29sb3IoZm9udC5jb2xvciwgbyk7XG5cdHZhciBzY2hlbWUgPSAwO1xuXHRpZihmb250LnNjaGVtZSA9PSBcIm1ham9yXCIpIHNjaGVtZSA9IDE7XG5cdGlmKGZvbnQuc2NoZW1lID09IFwibWlub3JcIikgc2NoZW1lID0gMjtcblx0by53cml0ZV9zaGlmdCgxLCBzY2hlbWUpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoZm9udC5uYW1lLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTAgQnJ0RmlsbCAqL1xudmFyIFhMU0JGaWxsUFROYW1lcyA9IFtcblx0XCJub25lXCIsXG5cdFwic29saWRcIixcblx0XCJtZWRpdW1HcmF5XCIsXG5cdFwiZGFya0dyYXlcIixcblx0XCJsaWdodEdyYXlcIixcblx0XCJkYXJrSG9yaXpvbnRhbFwiLFxuXHRcImRhcmtWZXJ0aWNhbFwiLFxuXHRcImRhcmtEb3duXCIsXG5cdFwiZGFya1VwXCIsXG5cdFwiZGFya0dyaWRcIixcblx0XCJkYXJrVHJlbGxpc1wiLFxuXHRcImxpZ2h0SG9yaXpvbnRhbFwiLFxuXHRcImxpZ2h0VmVydGljYWxcIixcblx0XCJsaWdodERvd25cIixcblx0XCJsaWdodFVwXCIsXG5cdFwibGlnaHRHcmlkXCIsXG5cdFwibGlnaHRUcmVsbGlzXCIsXG5cdFwiZ3JheTEyNVwiLFxuXHRcImdyYXkwNjI1XCJcbl07XG52YXIgcmV2X1hMU0JGaWxsUFROYW1lcy8qOkV2ZXJ0TnVtVHlwZSovO1xuLyogVE9ETzogZ3JhZGllbnQgZmlsbCByZXByZXNlbnRhdGlvbiAqL1xudmFyIHBhcnNlX0JydEZpbGwgPSBwYXJzZW5vb3A7XG5mdW5jdGlvbiB3cml0ZV9CcnRGaWxsKGZpbGwsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDQqMyArIDgqNyArIDE2KjEpO1xuXHRpZighcmV2X1hMU0JGaWxsUFROYW1lcykgcmV2X1hMU0JGaWxsUFROYW1lcyA9IChldmVydChYTFNCRmlsbFBUTmFtZXMpLyo6YW55Ki8pO1xuXHR2YXIgZmxzLyo6bnVtYmVyKi8gPSByZXZfWExTQkZpbGxQVE5hbWVzW2ZpbGwucGF0dGVyblR5cGVdO1xuXHRpZihmbHMgPT0gbnVsbCkgZmxzID0gMHgyODtcblx0by53cml0ZV9zaGlmdCg0LCBmbHMpO1xuXHR2YXIgaiA9IDA7XG5cdGlmKGZscyAhPSAweDI4KSB7XG5cdFx0LyogVE9ETzogY3VzdG9tIEZHIENvbG9yICovXG5cdFx0d3JpdGVfQnJ0Q29sb3Ioe2F1dG86MX0sIG8pO1xuXHRcdC8qIFRPRE86IGN1c3RvbSBCRyBDb2xvciAqL1xuXHRcdHdyaXRlX0JydENvbG9yKHthdXRvOjF9LCBvKTtcblxuXHRcdGZvcig7IGogPCAxMjsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR9IGVsc2Uge1xuXHRcdGZvcig7IGogPCA0OyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cblx0XHRmb3IoOyBqIDwgMTI7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTsgLyogVE9ETyAqL1xuXHRcdC8qIGlHcmFkaWVudFR5cGUgKi9cblx0XHQvKiB4bnVtRGVncmVlICovXG5cdFx0LyogeG51bUZpbGxUb0xlZnQgKi9cblx0XHQvKiB4bnVtRmlsbFRvUmlnaHQgKi9cblx0XHQvKiB4bnVtRmlsbFRvVG9wICovXG5cdFx0LyogeG51bUZpbGxUb0JvdHRvbSAqL1xuXHRcdC8qIGNOdW1TdG9wICovXG5cdFx0LyogeGZpbGxHcmFkaWVudFN0b3AgKi9cblx0fVxuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjgyNCBCcnRYRiAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0WEYoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIHRndCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGl4ZmVQYXJlbnQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZm10ID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRkYXRhLmwgPSB0Z3Q7XG5cdHJldHVybiB7aXhmZTppeGZlUGFyZW50LCBudW1GbXRJZDppZm10IH07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRYRihkYXRhLCBpeGZlUCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGl4ZmVQfHwwKTtcblx0by53cml0ZV9zaGlmdCgyLCBkYXRhLm51bUZtdElkfHwwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTsgLyogaUZvbnQgKi9cblx0by53cml0ZV9zaGlmdCgyLCAwKTsgLyogaUZpbGwgKi9cblx0by53cml0ZV9zaGlmdCgyLCAwKTsgLyogaXhCb3JkZXIgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogdHJvdCAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBpbmRlbnQgKi9cblx0dmFyIGZsb3cgPSAwO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZsb3cpOyAvKiBmbGFncyAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBmbGFncyAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiB4ZkdyYml0QXRyICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjQgQmx4ZiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9CbHhmKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEwKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogZGcgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLyogY29sb3IgKi9cblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLyogY29sb3IgKi9cblx0cmV0dXJuIG87XG59XG4vKiBbTVMtWExTQl0gMi40LjMwMiBCcnRCb3JkZXIgVE9ETyAqL1xudmFyIHBhcnNlX0JydEJvcmRlciA9IHBhcnNlbm9vcDtcbmZ1bmN0aW9uIHdyaXRlX0JydEJvcmRlcihib3JkZXIsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDUxKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogZGlhZ29uYWwgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogdG9wICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIGJvdHRvbSAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiBsZWZ0ICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIHJpZ2h0ICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIGRpYWcgKi9cblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC43NjMgQnJ0U3R5bGUgVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0U3R5bGUoc3R5bGUsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEyKzQqMTApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHN0eWxlLnhmSWQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDEsICtzdHlsZS5idWlsdGluSWQpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBpTGV2ZWwgKi9cblx0d3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoc3R5bGUubmFtZSB8fCBcIlwiLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4yNzIgQnJ0QmVnaW5UYWJsZVN0eWxlcyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5UYWJsZVN0eWxlcyhjbnQsIGRlZlRhYmxlU3R5bGUsIGRlZlBpdm90U3R5bGUpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDQrMjU2KjIqNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgY250KTtcblx0d3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGVmVGFibGVTdHlsZSwgbyk7XG5cdHdyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRlZlBpdm90U3R5bGUsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuNTAgU3R5bGVzICovXG5mdW5jdGlvbiBwYXJzZV9zdHlfYmluKGRhdGEsIHRoZW1lcywgb3B0cykge1xuXHR2YXIgc3R5bGVzID0ge307XG5cdHN0eWxlcy5OdW1iZXJGbXQgPSAoW10vKjphbnkqLyk7XG5cdGZvcih2YXIgeSBpbiB0YWJsZV9mbXQpIHN0eWxlcy5OdW1iZXJGbXRbeV0gPSB0YWJsZV9mbXRbeV07XG5cblx0c3R5bGVzLkNlbGxYZiA9IFtdO1xuXHRzdHlsZXMuRm9udHMgPSBbXTtcblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfc3R5KHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMDJDOiAvKiBCcnRGbXQgKi9cblx0XHRcdFx0c3R5bGVzLk51bWJlckZtdFt2YWxbMF1dID0gdmFsWzFdOyBTU0ZfbG9hZCh2YWxbMV0sIHZhbFswXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMkI6IC8qIEJydEZvbnQgKi9cblx0XHRcdFx0c3R5bGVzLkZvbnRzLnB1c2godmFsKTtcblx0XHRcdFx0aWYodmFsLmNvbG9yLnRoZW1lICE9IG51bGwgJiYgdGhlbWVzICYmIHRoZW1lcy50aGVtZUVsZW1lbnRzICYmIHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSkge1xuXHRcdFx0XHRcdHZhbC5jb2xvci5yZ2IgPSByZ2JfdGludCh0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbdmFsLmNvbG9yLnRoZW1lXS5yZ2IsIHZhbC5jb2xvci50aW50IHx8IDApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDA0MDE6IC8qIEJydEtub3duRm9udHMgKi8gYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyRDogLyogQnJ0RmlsbCAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDJFOiAvKiBCcnRCb3JkZXIgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyRjogLyogQnJ0WEYgKi9cblx0XHRcdFx0aWYoc3RhdGVbc3RhdGUubGVuZ3RoIC0gMV0gPT0gMHgwMjY5IC8qIEJydEJlZ2luQ2VsbFhGcyAqLykge1xuXHRcdFx0XHRcdHN0eWxlcy5DZWxsWGYucHVzaCh2YWwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMzA6IC8qIEJydFN0eWxlICovXG5cdFx0XHRjYXNlIDB4MDFGQjogLyogQnJ0RFhGICovXG5cdFx0XHRjYXNlIDB4MDIzQzogLyogQnJ0TVJVQ29sb3IgKi9cblx0XHRcdGNhc2UgMHgwMURCOiAvKiBCcnRJbmRleGVkQ29sb3IgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwNDkzOiAvKiBCcnREWEYxNCAqL1xuXHRcdFx0Y2FzZSAweDA4MzY6IC8qIEJydERYRjE1ICovXG5cdFx0XHRjYXNlIDB4MDQ2QTogLyogQnJ0U2xpY2VyU3R5bGVFbGVtZW50ICovXG5cdFx0XHRjYXNlIDB4MDIwMDogLyogQnJ0VGFibGVTdHlsZUVsZW1lbnQgKi9cblx0XHRcdGNhc2UgMHgwODJGOiAvKiBCcnRUaW1lbGluZVN0eWxlRWxlbWVudCAqL1xuXHRcdFx0Y2FzZSAweDBDMDA6IC8qIEJydFVpZCAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qIEJydEZSVEJlZ2luICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiBCcnRGUlRFbmQgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI1OiAvKiBCcnRBQ0JlZ2luICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNjogLyogQnJ0QUNFbmQgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCA+IDApIHN0YXRlLnB1c2goUlQpO1xuXHRcdFx0XHRlbHNlIGlmKFIuVCA8IDApIHN0YXRlLnBvcCgpO1xuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IChvcHRzLldURiAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGgtMV0gIT0gMHgwMDI1IC8qIEJydEFDQmVnaW4gKi8pKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gc3R5bGVzO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GTVRTX2JpbihiYSwgTkYvKjo/U1NGVGFibGUqLykge1xuXHRpZighTkYpIHJldHVybjtcblx0dmFyIGNudCA9IDA7XG5cdFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWy8qNjMqLzUwLC8qNjZdLFsxNjQsKi8zOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcblx0XHQvKjo6IGlmKCFORikgcmV0dXJuOyAqL1xuXHRcdGZvcih2YXIgaSA9IHJbMF07IGkgPD0gclsxXTsgKytpKSBpZihORltpXSAhPSBudWxsKSArK2NudDtcblx0fSk7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjcgLyogQnJ0QmVnaW5GbXRzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbLyo2MyovNTAsLyo2Nl0sWzE2NCwqLzM5Ml1dLmZvckVhY2goZnVuY3Rpb24ocikge1xuXHRcdC8qOjogaWYoIU5GKSByZXR1cm47ICovXG5cdFx0Zm9yKHZhciBpID0gclswXTsgaSA8PSByWzFdOyArK2kpIGlmKE5GW2ldICE9IG51bGwpIHdyaXRlX3JlY29yZChiYSwgMHgwMDJDIC8qIEJydEZtdCAqLywgd3JpdGVfQnJ0Rm10KGksIE5GW2ldKSk7XG5cdH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2OCAvKiBCcnRFbmRGbXRzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRk9OVFNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAxO1xuXG5cdGlmKGNudCA9PSAwKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjYzIC8qIEJydEJlZ2luRm9udHMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyQiAvKiBCcnRGb250ICovLCB3cml0ZV9CcnRGb250KHtcblx0XHRzejoxMixcblx0XHRjb2xvcjoge3RoZW1lOjF9LFxuXHRcdG5hbWU6IFwiQ2FsaWJyaVwiLFxuXHRcdGZhbWlseTogMixcblx0XHRzY2hlbWU6IFwibWlub3JcIlxuXHR9KSk7XG5cdC8qIDEqNjU0OTFCcnRGb250IFtBQ0ZPTlRTXSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NCAvKiBCcnRFbmRGb250cyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZJTExTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMjtcblxuXHRpZihjbnQgPT0gMCkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI1QiAvKiBCcnRCZWdpbkZpbGxzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkQgLyogQnJ0RmlsbCAqLywgd3JpdGVfQnJ0RmlsbCh7cGF0dGVyblR5cGU6XCJub25lXCJ9KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJEIC8qIEJydEZpbGwgKi8sIHdyaXRlX0JydEZpbGwoe3BhdHRlcm5UeXBlOlwiZ3JheTEyNVwifSkpO1xuXHQvKiAxKjY1NDMxQnJ0RmlsbCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI1QyAvKiBCcnRFbmRGaWxscyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JPUkRFUlNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAxO1xuXG5cdGlmKGNudCA9PSAwKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY1IC8qIEJydEJlZ2luQm9yZGVycyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJFIC8qIEJydEJvcmRlciAqLywgd3JpdGVfQnJ0Qm9yZGVyKHt9KSk7XG5cdC8qIDEqNjU0MzBCcnRCb3JkZXIgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjYgLyogQnJ0RW5kQm9yZGVycyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NFTExTVFlMRVhGU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjcyIC8qIEJydEJlZ2luQ2VsbFN0eWxlWEZzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkYgLyogQnJ0WEYgKi8sIHdyaXRlX0JydFhGKHtcblx0XHRudW1GbXRJZDogMCxcblx0XHRmb250SWQ6ICAgMCxcblx0XHRmaWxsSWQ6ICAgMCxcblx0XHRib3JkZXJJZDogMFxuXHR9LCAweEZGRkYpKTtcblx0LyogMSo2NTQzMChCcnRYRiAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3MyAvKiBCcnRFbmRDZWxsU3R5bGVYRnMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DRUxMWEZTX2JpbihiYSwgZGF0YSkge1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2OSAvKiBCcnRCZWdpbkNlbGxYRnMgKi8sIHdyaXRlX1VJbnQzMkxFKGRhdGEubGVuZ3RoKSk7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihjKSB7IHdyaXRlX3JlY29yZChiYSwgMHgwMDJGIC8qIEJydFhGICovLCB3cml0ZV9CcnRYRihjLDApKTsgfSk7XG5cdC8qIDEqNjU0MzAoQnJ0WEYgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNkEgLyogQnJ0RW5kQ2VsbFhGcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1NUWUxFU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNkIgLyogQnJ0QmVnaW5TdHlsZXMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAzMCAvKiBCcnRTdHlsZSAqLywgd3JpdGVfQnJ0U3R5bGUoe1xuXHRcdHhmSWQ6MCxcblx0XHRidWlsdGluSWQ6MCxcblx0XHRuYW1lOlwiTm9ybWFsXCJcblx0fSkpO1xuXHQvKiAxKjY1NDMwKEJydFN0eWxlICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjZDIC8qIEJydEVuZFN0eWxlcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0RYRlNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAwO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUY5IC8qIEJydEJlZ2luRFhGcyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdC8qICoyMTQ3NDgzNjQ3KEJydERYRiAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFGQSAvKiBCcnRFbmREWEZzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfVEFCTEVTVFlMRVNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAwO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUZDIC8qIEJydEJlZ2luVGFibGVTdHlsZXMgKi8sIHdyaXRlX0JydEJlZ2luVGFibGVTdHlsZXMoY250LCBcIlRhYmxlU3R5bGVNZWRpdW05XCIsIFwiUGl2b3RTdHlsZU1lZGl1bTRcIikpO1xuXHQvKiAqVEFCTEVTVFlMRSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFGRCAvKiBCcnRFbmRUYWJsZVN0eWxlcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NPTE9SUEFMRVRURV9iaW4oLyo6OmJhLCBkYXRhKi8pIHtcblx0cmV0dXJuO1xuXHQvKiBCcnRCZWdpbkNvbG9yUGFsZXR0ZSBbSU5ERVhFRENPTE9SU10gW01SVUNPTE9SU10gQnJ0RW5kQ29sb3JQYWxldHRlICovXG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy41MCBTdHlsZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX3N0eV9iaW4od2IsIG9wdHMpIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMTE2IC8qIEJydEJlZ2luU3R5bGVTaGVldCAqLyk7XG5cdHdyaXRlX0ZNVFNfYmluKGJhLCB3Yi5TU0YpO1xuXHR3cml0ZV9GT05UU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfRklMTFNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0JPUkRFUlNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0NFTExTVFlMRVhGU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQ0VMTFhGU19iaW4oYmEsIG9wdHMuY2VsbFhmcyk7XG5cdHdyaXRlX1NUWUxFU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfRFhGU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfVEFCTEVTVFlMRVNfYmluKGJhLCB3Yik7XG5cdHdyaXRlX0NPTE9SUEFMRVRURV9iaW4oYmEsIHdiKTtcblx0LyogRlJUU1RZTEVTSEVFVCovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMTE3IC8qIEJydEVuZFN0eWxlU2hlZXQgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG4vKiBFdmVuIHRob3VnaCB0aGVtZSBsYXlvdXQgaXMgZGsxIGx0MSBkazIgbHQyLCB0cnVlIG9yZGVyIGlzIGx0MSBkazEgbHQyIGRrMiAqL1xudmFyIFhMU1hUaGVtZUNsclNjaGVtZSA9IFtcblx0JzwvYTpsdDE+JywgJzwvYTpkazE+JywgJzwvYTpsdDI+JywgJzwvYTpkazI+Jyxcblx0JzwvYTphY2NlbnQxPicsICc8L2E6YWNjZW50Mj4nLCAnPC9hOmFjY2VudDM+Jyxcblx0JzwvYTphY2NlbnQ0PicsICc8L2E6YWNjZW50NT4nLCAnPC9hOmFjY2VudDY+Jyxcblx0JzwvYTpobGluaz4nLCAnPC9hOmZvbEhsaW5rPidcbl07XG4vKiAyMC4xLjYuMiBjbHJTY2hlbWUgQ1RfQ29sb3JTY2hlbWUgKi9cbmZ1bmN0aW9uIHBhcnNlX2NsclNjaGVtZSh0LCB0aGVtZXMsIG9wdHMpIHtcblx0dGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lID0gW107XG5cdHZhciBjb2xvciA9IHt9O1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaCh5WzBdKSB7XG5cdFx0XHQvKiAyMC4xLjYuMiBjbHJTY2hlbWUgKENvbG9yIFNjaGVtZSkgQ1RfQ29sb3JTY2hlbWUgKi9cblx0XHRcdGNhc2UgJzxhOmNsclNjaGVtZSc6IGNhc2UgJzwvYTpjbHJTY2hlbWU+JzogYnJlYWs7XG5cblx0XHRcdC8qIDIwLjEuMi4zLjMyIHNyZ2JDbHIgQ1RfU1JnYkNvbG9yICovXG5cdFx0XHRjYXNlICc8YTpzcmdiQ2xyJzpcblx0XHRcdFx0Y29sb3IucmdiID0geS52YWw7IGJyZWFrO1xuXG5cdFx0XHQvKiAyMC4xLjIuMy4zMyBzeXNDbHIgQ1RfU3lzdGVtQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxhOnN5c0Nscic6XG5cdFx0XHRcdGNvbG9yLnJnYiA9IHkubGFzdENscjsgYnJlYWs7XG5cblx0XHRcdC8qIDIwLjEuNC4xLjEgYWNjZW50MSAoQWNjZW50IDEpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4yIGFjY2VudDIgKEFjY2VudCAyKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMyBhY2NlbnQzIChBY2NlbnQgMykgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjQgYWNjZW50NCAoQWNjZW50IDQpICovXG5cdFx0XHQvKiAyMC4xLjQuMS41IGFjY2VudDUgKEFjY2VudCA1KSAqL1xuXHRcdFx0LyogMjAuMS40LjEuNiBhY2NlbnQ2IChBY2NlbnQgNikgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjkgZGsxIChEYXJrIDEpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4xMCBkazIgKERhcmsgMikgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjE1IGZvbEhsaW5rIChGb2xsb3dlZCBIeXBlcmxpbmspICovXG5cdFx0XHQvKiAyMC4xLjQuMS4xOSBobGluayAoSHlwZXJsaW5rKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMjIgbHQxIChMaWdodCAxKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMjMgbHQyIChMaWdodCAyKSAqL1xuXHRcdFx0Y2FzZSAnPGE6ZGsxPic6IGNhc2UgJzwvYTpkazE+Jzpcblx0XHRcdGNhc2UgJzxhOmx0MT4nOiBjYXNlICc8L2E6bHQxPic6XG5cdFx0XHRjYXNlICc8YTpkazI+JzogY2FzZSAnPC9hOmRrMj4nOlxuXHRcdFx0Y2FzZSAnPGE6bHQyPic6IGNhc2UgJzwvYTpsdDI+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDE+JzogY2FzZSAnPC9hOmFjY2VudDE+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDI+JzogY2FzZSAnPC9hOmFjY2VudDI+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDM+JzogY2FzZSAnPC9hOmFjY2VudDM+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDQ+JzogY2FzZSAnPC9hOmFjY2VudDQ+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDU+JzogY2FzZSAnPC9hOmFjY2VudDU+Jzpcblx0XHRcdGNhc2UgJzxhOmFjY2VudDY+JzogY2FzZSAnPC9hOmFjY2VudDY+Jzpcblx0XHRcdGNhc2UgJzxhOmhsaW5rPic6IGNhc2UgJzwvYTpobGluaz4nOlxuXHRcdFx0Y2FzZSAnPGE6Zm9sSGxpbms+JzogY2FzZSAnPC9hOmZvbEhsaW5rPic6XG5cdFx0XHRcdGlmICh5WzBdLmNoYXJBdCgxKSA9PT0gJy8nKSB7XG5cdFx0XHRcdFx0dGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW1hMU1hUaGVtZUNsclNjaGVtZS5pbmRleE9mKHlbMF0pXSA9IGNvbG9yO1xuXHRcdFx0XHRcdGNvbG9yID0ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29sb3IubmFtZSA9IHlbMF0uc2xpY2UoMywgeVswXS5sZW5ndGggLSAxKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGNsclNjaGVtZScpO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qIDIwLjEuNC4xLjE4IGZvbnRTY2hlbWUgQ1RfRm9udFNjaGVtZSAqL1xuZnVuY3Rpb24gcGFyc2VfZm9udFNjaGVtZSgvKjo6dCwgdGhlbWVzLCBvcHRzKi8pIHsgfVxuXG4vKiAyMC4xLjQuMS4xNSBmbXRTY2hlbWUgQ1RfU3R5bGVNYXRyaXggKi9cbmZ1bmN0aW9uIHBhcnNlX2ZtdFNjaGVtZSgvKjo6dCwgdGhlbWVzLCBvcHRzKi8pIHsgfVxuXG52YXIgY2xyc3JlZ2V4ID0gLzxhOmNsclNjaGVtZShbXj5dKik+W1xcc1xcU10qPFxcL2E6Y2xyU2NoZW1lPi87XG52YXIgZm50c3JlZ2V4ID0gLzxhOmZvbnRTY2hlbWUoW14+XSopPltcXHNcXFNdKjxcXC9hOmZvbnRTY2hlbWU+LztcbnZhciBmbXRzcmVnZXggPSAvPGE6Zm10U2NoZW1lKFtePl0qKT5bXFxzXFxTXSo8XFwvYTpmbXRTY2hlbWU+LztcblxuLyogMjAuMS42LjEwIHRoZW1lRWxlbWVudHMgQ1RfQmFzZVN0eWxlcyAqL1xuZnVuY3Rpb24gcGFyc2VfdGhlbWVFbGVtZW50cyhkYXRhLCB0aGVtZXMsIG9wdHMpIHtcblx0dGhlbWVzLnRoZW1lRWxlbWVudHMgPSB7fTtcblxuXHR2YXIgdDtcblxuXHRbXG5cdFx0LyogY2xyU2NoZW1lIENUX0NvbG9yU2NoZW1lICovXG5cdFx0WydjbHJTY2hlbWUnLCBjbHJzcmVnZXgsIHBhcnNlX2NsclNjaGVtZV0sXG5cdFx0LyogZm9udFNjaGVtZSBDVF9Gb250U2NoZW1lICovXG5cdFx0Wydmb250U2NoZW1lJywgZm50c3JlZ2V4LCBwYXJzZV9mb250U2NoZW1lXSxcblx0XHQvKiBmbXRTY2hlbWUgQ1RfU3R5bGVNYXRyaXggKi9cblx0XHRbJ2ZtdFNjaGVtZScsIGZtdHNyZWdleCwgcGFyc2VfZm10U2NoZW1lXVxuXHRdLmZvckVhY2goZnVuY3Rpb24obSkge1xuXHRcdGlmKCEodD1kYXRhLm1hdGNoKG1bMV0pKSkgdGhyb3cgbmV3IEVycm9yKG1bMF0gKyAnIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzJyk7XG5cdFx0bVsyXSh0LCB0aGVtZXMsIG9wdHMpO1xuXHR9KTtcbn1cblxudmFyIHRoZW1lbHRyZWdleCA9IC88YTp0aGVtZUVsZW1lbnRzKFtePl0qKT5bXFxzXFxTXSo8XFwvYTp0aGVtZUVsZW1lbnRzPi87XG5cbi8qIDE0LjIuNyBUaGVtZSBQYXJ0ICovXG5mdW5jdGlvbiBwYXJzZV90aGVtZV94bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdC8qIDIwLjEuNi45IHRoZW1lIENUX09mZmljZVN0eWxlU2hlZXQgKi9cblx0aWYoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApIGRhdGEgPSB3cml0ZV90aGVtZSgpO1xuXG5cdHZhciB0O1xuXHR2YXIgdGhlbWVzID0ge307XG5cblx0LyogdGhlbWVFbGVtZW50cyBDVF9CYXNlU3R5bGVzICovXG5cdGlmKCEodD1kYXRhLm1hdGNoKHRoZW1lbHRyZWdleCkpKSB0aHJvdyBuZXcgRXJyb3IoJ3RoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lJyk7XG5cdHBhcnNlX3RoZW1lRWxlbWVudHModFswXSwgdGhlbWVzLCBvcHRzKTtcblx0dGhlbWVzLnJhdyA9IGRhdGE7XG5cdHJldHVybiB0aGVtZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3RoZW1lKFRoZW1lcywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKG9wdHMgJiYgb3B0cy50aGVtZVhMU1gpIHJldHVybiBvcHRzLnRoZW1lWExTWDtcblx0aWYoVGhlbWVzICYmIHR5cGVvZiBUaGVtZXMucmF3ID09IFwic3RyaW5nXCIpIHJldHVybiBUaGVtZXMucmF3O1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0b1tvLmxlbmd0aF0gPSAnPGE6dGhlbWUgeG1sbnM6YT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluXCIgbmFtZT1cIk9mZmljZSBUaGVtZVwiPic7XG5cdG9bby5sZW5ndGhdID0gICc8YTp0aGVtZUVsZW1lbnRzPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgICc8YTpjbHJTY2hlbWUgbmFtZT1cIk9mZmljZVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmRrMT48YTpzeXNDbHIgdmFsPVwid2luZG93VGV4dFwiIGxhc3RDbHI9XCIwMDAwMDBcIi8+PC9hOmRrMT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpsdDE+PGE6c3lzQ2xyIHZhbD1cIndpbmRvd1wiIGxhc3RDbHI9XCJGRkZGRkZcIi8+PC9hOmx0MT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpkazI+PGE6c3JnYkNsciB2YWw9XCIxRjQ5N0RcIi8+PC9hOmRrMj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpsdDI+PGE6c3JnYkNsciB2YWw9XCJFRUVDRTFcIi8+PC9hOmx0Mj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQxPjxhOnNyZ2JDbHIgdmFsPVwiNEY4MUJEXCIvPjwvYTphY2NlbnQxPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDI+PGE6c3JnYkNsciB2YWw9XCJDMDUwNERcIi8+PC9hOmFjY2VudDI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD1cIjlCQkI1OVwiLz48L2E6YWNjZW50Mz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQ0PjxhOnNyZ2JDbHIgdmFsPVwiODA2NEEyXCIvPjwvYTphY2NlbnQ0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDU+PGE6c3JnYkNsciB2YWw9XCI0QkFDQzZcIi8+PC9hOmFjY2VudDU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD1cIkY3OTY0NlwiLz48L2E6YWNjZW50Nj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpobGluaz48YTpzcmdiQ2xyIHZhbD1cIjAwMDBGRlwiLz48L2E6aGxpbms+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6Zm9sSGxpbms+PGE6c3JnYkNsciB2YWw9XCI4MDAwODBcIi8+PC9hOmZvbEhsaW5rPic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOmNsclNjaGVtZT4nO1xuXG5cdG9bby5sZW5ndGhdID0gICAnPGE6Zm9udFNjaGVtZSBuYW1lPVwiT2ZmaWNlXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6bWFqb3JGb250Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsYXRpbiB0eXBlZmFjZT1cIkNhbWJyaWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVhIHR5cGVmYWNlPVwiXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpjcyB0eXBlZmFjZT1cIlwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJKcGFuXCIgdHlwZWZhY2U9XCLvvK3vvLMg77yw44K044K344OD44KvXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFuc1wiIHR5cGVmYWNlPVwi5a6L5L2TXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbnRcIiB0eXBlZmFjZT1cIuaWsOe0sOaYjumrlFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGViclwiIHR5cGVmYWNlPVwiVGltZXMgTmV3IFJvbWFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRoYWlcIiB0eXBlZmFjZT1cIlRhaG9tYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJFdGhpXCIgdHlwZWZhY2U9XCJOeWFsYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJCZW5nXCIgdHlwZWZhY2U9XCJWcmluZGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR3VqclwiIHR5cGVmYWNlPVwiU2hydXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIktobXJcIiB0eXBlZmFjZT1cIk1vb2xCb3JhblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJLbmRhXCIgdHlwZWZhY2U9XCJUdW5nYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdXJ1XCIgdHlwZWZhY2U9XCJSYWF2aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJDaGVyXCIgdHlwZWZhY2U9XCJQbGFudGFnZW5ldCBDaGVyb2tlZVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJZaWlpXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgWWkgQmFpdGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRoYWFcIiB0eXBlZmFjZT1cIk1WIEJvbGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiRGV2YVwiIHR5cGVmYWNlPVwiTWFuZ2FsXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGFtbFwiIHR5cGVmYWNlPVwiTGF0aGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiU3lyY1wiIHR5cGVmYWNlPVwiRXN0cmFuZ2VsbyBFZGVzc2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJNbHltXCIgdHlwZWZhY2U9XCJLYXJ0aWthXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkxhb29cIiB0eXBlZmFjZT1cIkRva0NoYW1wYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTW9uZ1wiIHR5cGVmYWNlPVwiTW9uZ29saWFuIEJhaXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlZpZXRcIiB0eXBlZmFjZT1cIlRpbWVzIE5ldyBSb21hblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJVaWdoXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgVWlnaHVyXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkdlb3JcIiB0eXBlZmFjZT1cIlN5bGZhZW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOm1ham9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTptaW5vckZvbnQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxhdGluIHR5cGVmYWNlPVwiQ2FsaWJyaVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWEgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmNzIHR5cGVmYWNlPVwiXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIu+8re+8syDvvLDjgrTjgrfjg4Pjgq9cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFuZ1wiIHR5cGVmYWNlPVwi66eR7J2AIOqzoOuUlVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLlrovkvZNcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFudFwiIHR5cGVmYWNlPVwi5paw57Sw5piO6auUXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkFyYWJcIiB0eXBlZmFjZT1cIkFyaWFsXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhlYnJcIiB0eXBlZmFjZT1cIkFyaWFsXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRoYWlcIiB0eXBlZmFjZT1cIlRhaG9tYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJFdGhpXCIgdHlwZWZhY2U9XCJOeWFsYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJCZW5nXCIgdHlwZWZhY2U9XCJWcmluZGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR3VqclwiIHR5cGVmYWNlPVwiU2hydXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIktobXJcIiB0eXBlZmFjZT1cIkRhdW5QZW5oXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkd1cnVcIiB0eXBlZmFjZT1cIlJhYXZpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNhbnNcIiB0eXBlZmFjZT1cIkV1cGhlbWlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIllpaWlcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBZaSBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaWJ0XCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgSGltYWxheWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJEZXZhXCIgdHlwZWZhY2U9XCJNYW5nYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGVsdVwiIHR5cGVmYWNlPVwiR2F1dGFtaVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJTeXJjXCIgdHlwZWZhY2U9XCJFc3RyYW5nZWxvIEVkZXNzYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJPcnlhXCIgdHlwZWZhY2U9XCJLYWxpbmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTGFvb1wiIHR5cGVmYWNlPVwiRG9rQ2hhbXBhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlNpbmhcIiB0eXBlZmFjZT1cIklza29vbGEgUG90YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVmlldFwiIHR5cGVmYWNlPVwiQXJpYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVWlnaFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFVpZ2h1clwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHZW9yXCIgdHlwZWZhY2U9XCJTeWxmYWVuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTptaW5vckZvbnQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6Zm9udFNjaGVtZT4nO1xuXG5cdG9bby5sZW5ndGhdID0gICAnPGE6Zm10U2NoZW1lIG5hbWU9XCJPZmZpY2VcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpmaWxsU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNTAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjMwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIzNTAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiMzcwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjMwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjE1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzNTAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpsaW4gYW5nPVwiMTYyMDAwMDBcIiBzY2FsZWQ9XCIxXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6Z3JhZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjEwMDAwMFwiLz48YTpzaGFkZSB2YWw9XCIxMDAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjEzMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjUwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjEwMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzUwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6bGluIGFuZz1cIjE2MjAwMDAwXCIgc2NhbGVkPVwiMFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTpmaWxsU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6bG5TdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bG4gdz1cIjk1MjVcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6c2hhZGUgdmFsPVwiOTUwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjEwNTAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PC9hOmxuPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsbiB3PVwiMjU0MDBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PC9hOmxuPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsbiB3PVwiMzgxMDBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PC9hOmxuPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTpsblN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmVmZmVjdFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpvdXRlclNoZHcgYmx1clJhZD1cIjQwMDAwXCIgZGlzdD1cIjIwMDAwXCIgZGlyPVwiNTQwMDAwMFwiIHJvdFdpdGhTaGFwZT1cIjBcIj48YTpzcmdiQ2xyIHZhbD1cIjAwMDAwMFwiPjxhOmFscGhhIHZhbD1cIjM4MDAwXCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOm91dGVyU2hkdyBibHVyUmFkPVwiNDAwMDBcIiBkaXN0PVwiMjMwMDBcIiBkaXI9XCI1NDAwMDAwXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiMzUwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI0MDAwMFwiIGRpc3Q9XCIyMzAwMFwiIGRpcj1cIjU0MDAwMDBcIiByb3RXaXRoU2hhcGU9XCIwXCI+PGE6c3JnYkNsciB2YWw9XCIwMDAwMDBcIj48YTphbHBoYSB2YWw9XCIzNTAwMFwiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOnNjZW5lM2Q+PGE6Y2FtZXJhIHByc3Q9XCJvcnRob2dyYXBoaWNGcm9udFwiPjxhOnJvdCBsYXQ9XCIwXCIgbG9uPVwiMFwiIHJldj1cIjBcIi8+PC9hOmNhbWVyYT48YTpsaWdodFJpZyByaWc9XCJ0aHJlZVB0XCIgZGlyPVwidFwiPjxhOnJvdCBsYXQ9XCIwXCIgbG9uPVwiMFwiIHJldj1cIjEyMDAwMDBcIi8+PC9hOmxpZ2h0UmlnPjwvYTpzY2VuZTNkPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6c3AzZD48YTpiZXZlbFQgdz1cIjYzNTAwXCIgaD1cIjI1NDAwXCIvPjwvYTpzcDNkPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmVmZmVjdFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmJnRmlsbFN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjQwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzNTAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiNDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjQ1MDAwXCIvPjxhOnNoYWRlIHZhbD1cIjk5MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzNTAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMTAwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6c2hhZGUgdmFsPVwiMjAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjI1NTAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOnBhdGggcGF0aD1cImNpcmNsZVwiPjxhOmZpbGxUb1JlY3QgbD1cIjUwMDAwXCIgdD1cIi04MDAwMFwiIHI9XCI1MDAwMFwiIGI9XCIxODAwMDBcIi8+PC9hOnBhdGg+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTpncmFkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiODAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjMwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCIzMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMjAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6cGF0aCBwYXRoPVwiY2lyY2xlXCI+PGE6ZmlsbFRvUmVjdCBsPVwiNTAwMDBcIiB0PVwiNTAwMDBcIiByPVwiNTAwMDBcIiBiPVwiNTAwMDBcIi8+PC9hOnBhdGg+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTpncmFkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6YmdGaWxsU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6Zm10U2NoZW1lPic7XG5cdG9bby5sZW5ndGhdID0gICc8L2E6dGhlbWVFbGVtZW50cz4nO1xuXG5cdG9bby5sZW5ndGhdID0gICc8YTpvYmplY3REZWZhdWx0cz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOnNwRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD1cIjFcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9XCIzXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD1cIjJcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PVwibWlub3JcIj48YTpzY2hlbWVDbHIgdmFsPVwibHQxXCIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpzcERlZj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOmxuRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD1cIjJcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cImFjY2VudDFcIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD1cIjFcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PVwibWlub3JcIj48YTpzY2hlbWVDbHIgdmFsPVwidHgxXCIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpsbkRlZj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAnPC9hOm9iamVjdERlZmF1bHRzPic7XG5cdG9bby5sZW5ndGhdID0gICc8YTpleHRyYUNsclNjaGVtZUxzdC8+Jztcblx0b1tvLmxlbmd0aF0gPSAnPC9hOnRoZW1lPic7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTXSAyLjQuMzI2IFRPRE86IHBheWxvYWQgaXMgYSB6aXAgZmlsZSAqL1xuZnVuY3Rpb24gcGFyc2VfVGhlbWUoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBkd1RoZW1lVmVyc2lvbiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoZHdUaGVtZVZlcnNpb24gPT09IDEyNDIyNikgcmV0dXJuO1xuXHRpZighb3B0cy5jZWxsU3R5bGVzKSB7IGJsb2IubCA9IGVuZDsgcmV0dXJuOyB9XG5cdHZhciBkYXRhID0gYmxvYi5zbGljZShibG9iLmwpO1xuXHRibG9iLmwgPSBlbmQ7XG5cdHZhciB6aXA7IHRyeSB7IHppcCA9IHppcF9yZWFkKGRhdGEsIHt0eXBlOiBcImFycmF5XCJ9KTsgfSBjYXRjaChlKSB7IHJldHVybjsgfVxuXHR2YXIgdGhlbWVYTUwgPSBnZXR6aXBzdHIoemlwLCBcInRoZW1lL3RoZW1lL3RoZW1lMS54bWxcIiwgdHJ1ZSk7XG5cdGlmKCF0aGVtZVhNTCkgcmV0dXJuO1xuXHRyZXR1cm4gcGFyc2VfdGhlbWVfeG1sKHRoZW1lWE1MLCBvcHRzKTtcbn1cblxuLyogMi41LjQ5ICovXG5mdW5jdGlvbiBwYXJzZV9Db2xvclRoZW1lKGJsb2IvKjo6LCBsZW5ndGgqLykgeyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDQpOyB9XG5cbi8qIDIuNS4xNTUgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z1bGxDb2xvckV4dChibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIG8gPSB7fTtcblx0by54Y2xyVHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5uVGludFNoYWRlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRzd2l0Y2goby54Y2xyVHlwZSkge1xuXHRcdGNhc2UgMDogYmxvYi5sICs9IDQ7IGJyZWFrO1xuXHRcdGNhc2UgMTogby54Y2xyVmFsdWUgPSBwYXJzZV9JY3ZYRihibG9iLCA0KTsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBvLnhjbHJWYWx1ZSA9IHBhcnNlX0xvbmdSR0JBKGJsb2IsIDQpOyBicmVhaztcblx0XHRjYXNlIDM6IG8ueGNsclZhbHVlID0gcGFyc2VfQ29sb3JUaGVtZShibG9iLCA0KTsgYnJlYWs7XG5cdFx0Y2FzZSA0OiBibG9iLmwgKz0gNDsgYnJlYWs7XG5cdH1cblx0YmxvYi5sICs9IDg7XG5cdHJldHVybiBvO1xufVxuXG4vKiAyLjUuMTY0IFRPRE86IHJlYWQgNyBiaXRzKi9cbmZ1bmN0aW9uIHBhcnNlX0ljdlhGKGJsb2IsIGxlbmd0aCkge1xuXHRyZXR1cm4gcGFyc2Vub29wKGJsb2IsIGxlbmd0aCk7XG59XG5cbi8qIDIuNS4yODAgKi9cbmZ1bmN0aW9uIHBhcnNlX1hGRXh0R3JhZGllbnQoYmxvYiwgbGVuZ3RoKSB7XG5cdHJldHVybiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKTtcbn1cblxuLyogW01TLVhMU10gMi41LjEwOCAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0UHJvcChibG9iLyo6OiwgbGVuZ3RoKi8pLyo6QXJyYXk8YW55PiovIHtcblx0dmFyIGV4dFR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjYiA9IGJsb2IucmVhZF9zaGlmdCgyKSAtIDQ7XG5cdHZhciBvID0gW2V4dFR5cGVdO1xuXHRzd2l0Y2goZXh0VHlwZSkge1xuXHRcdGNhc2UgMHgwNDogY2FzZSAweDA1OiBjYXNlIDB4MDc6IGNhc2UgMHgwODpcblx0XHRjYXNlIDB4MDk6IGNhc2UgMHgwQTogY2FzZSAweDBCOiBjYXNlIDB4MEQ6XG5cdFx0XHRvWzFdID0gcGFyc2VfRnVsbENvbG9yRXh0KGJsb2IsIGNiKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDA2OiBvWzFdID0gcGFyc2VfWEZFeHRHcmFkaWVudChibG9iLCBjYik7IGJyZWFrO1xuXHRcdGNhc2UgMHgwRTogY2FzZSAweDBGOiBvWzFdID0gYmxvYi5yZWFkX3NoaWZ0KGNiID09PSAxID8gMSA6IDIpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiBcIiArIGV4dFR5cGUgKyBcIiBcIiArIGNiKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxuLyogMi40LjM1NSAqL1xuZnVuY3Rpb24gcGFyc2VfWEZFeHQoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdGJsb2IubCArPSAyO1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBjZXh0cyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGV4dC8qOkFPQSovID0gW107XG5cdHdoaWxlKGNleHRzLS0gPiAwKSBleHQucHVzaChwYXJzZV9FeHRQcm9wKGJsb2IsIGVuZC1ibG9iLmwpKTtcblx0cmV0dXJuIHtpeGZlOml4ZmUsIGV4dDpleHR9O1xufVxuXG4vKiB4ZiBpcyBhbiBYRiwgc2VlIHBhcnNlX1hGRXh0IGZvciB4ZmV4dCAqL1xuZnVuY3Rpb24gdXBkYXRlX3hmZXh0KHhmLCB4ZmV4dCkge1xuXHR4ZmV4dC5mb3JFYWNoKGZ1bmN0aW9uKHhmZSkge1xuXHRcdHN3aXRjaCh4ZmVbMF0pIHsgLyogMi41LjEwOCBleHRQcm9wRGF0YSAqL1xuXHRcdFx0Y2FzZSAweDA0OiBicmVhazsgLyogZm9yZWdyb3VuZCBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDA1OiBicmVhazsgLyogYmFja2dyb3VuZCBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDA2OiBicmVhazsgLyogZ3JhZGllbnQgZmlsbCAqL1xuXHRcdFx0Y2FzZSAweDA3OiBicmVhazsgLyogdG9wIGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDg6IGJyZWFrOyAvKiBib3R0b20gY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwOTogYnJlYWs7IC8qIGxlZnQgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwYTogYnJlYWs7IC8qIHJpZ2h0IGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MGI6IGJyZWFrOyAvKiBkaWFnb25hbCBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDBkOiAvKiB0ZXh0IGNvbG9yICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDBlOiBicmVhazsgLyogZm9udCBzY2hlbWUgKi9cblx0XHRcdGNhc2UgMHgwZjogYnJlYWs7IC8qIGluZGVudGF0aW9uIGxldmVsICovXG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQnJ0TWR0aW5mbyhkYXRhLCBsZW5ndGgpIHtcbiAgcmV0dXJuIHtcbiAgICBmbGFnczogZGF0YS5yZWFkX3NoaWZ0KDQpLFxuICAgIHZlcnNpb246IGRhdGEucmVhZF9zaGlmdCg0KSxcbiAgICBuYW1lOiBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSwgbGVuZ3RoIC0gOClcbiAgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydE1kdGluZm8oZGF0YSkge1xuICB2YXIgbyA9IG5ld19idWYoMTIgKyAyICogZGF0YS5uYW1lLmxlbmd0aCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5mbGFncyk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgZGF0YS52ZXJzaW9uKTtcbiAgd3JpdGVfWExXaWRlU3RyaW5nKGRhdGEubmFtZSwgbyk7XG4gIHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRNZGIoZGF0YSkge1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBjbnQgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG4gIHdoaWxlIChjbnQtLSA+IDApXG4gICAgb3V0LnB1c2goW2RhdGEucmVhZF9zaGlmdCg0KSwgZGF0YS5yZWFkX3NoaWZ0KDQpXSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRNZGIobWRiKSB7XG4gIHZhciBvID0gbmV3X2J1Zig0ICsgOCAqIG1kYi5sZW5ndGgpO1xuICBvLndyaXRlX3NoaWZ0KDQsIG1kYi5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1kYi5sZW5ndGg7ICsraSkge1xuICAgIG8ud3JpdGVfc2hpZnQoNCwgbWRiW2ldWzBdKTtcbiAgICBvLndyaXRlX3NoaWZ0KDQsIG1kYltpXVsxXSk7XG4gIH1cbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbkVzZm1kKGNudCwgbmFtZSkge1xuICB2YXIgbyA9IG5ld19idWYoOCArIDIgKiBuYW1lLmxlbmd0aCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgY250KTtcbiAgd3JpdGVfWExXaWRlU3RyaW5nKG5hbWUsIG8pO1xuICByZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0QmVnaW5Fc21kYihkYXRhKSB7XG4gIGRhdGEubCArPSA0O1xuICByZXR1cm4gZGF0YS5yZWFkX3NoaWZ0KDQpICE9IDA7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbkVzbWRiKGNudCwgY20pIHtcbiAgdmFyIG8gPSBuZXdfYnVmKDgpO1xuICBvLndyaXRlX3NoaWZ0KDQsIGNudCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgY20gPyAxIDogMCk7XG4gIHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfeGxtZXRhX2JpbihkYXRhLCBuYW1lLCBfb3B0cykge1xuICB2YXIgb3V0ID0geyBUeXBlczogW10sIENlbGw6IFtdLCBWYWx1ZTogW10gfTtcbiAgdmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcbiAgdmFyIHN0YXRlID0gW107XG4gIHZhciBwYXNzID0gZmFsc2U7XG4gIHZhciBtZXRhdHlwZSA9IDI7XG4gIHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbih2YWwsIFIsIFJUKSB7XG4gICAgc3dpdGNoIChSVCkge1xuICAgICAgY2FzZSAzMzU6XG4gICAgICAgIG91dC5UeXBlcy5wdXNoKHsgbmFtZTogdmFsLm5hbWUgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1MTpcbiAgICAgICAgdmFsLmZvckVhY2goZnVuY3Rpb24ocikge1xuICAgICAgICAgIGlmIChtZXRhdHlwZSA9PSAxKVxuICAgICAgICAgICAgb3V0LkNlbGwucHVzaCh7IHR5cGU6IG91dC5UeXBlc1tyWzBdIC0gMV0ubmFtZSwgaW5kZXg6IHJbMV0gfSk7XG4gICAgICAgICAgZWxzZSBpZiAobWV0YXR5cGUgPT0gMClcbiAgICAgICAgICAgIG91dC5WYWx1ZS5wdXNoKHsgdHlwZTogb3V0LlR5cGVzW3JbMF0gLSAxXS5uYW1lLCBpbmRleDogclsxXSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzMzc6XG4gICAgICAgIG1ldGF0eXBlID0gdmFsID8gMSA6IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzMzg6XG4gICAgICAgIG1ldGF0eXBlID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM1OlxuICAgICAgICBzdGF0ZS5wdXNoKFJUKTtcbiAgICAgICAgcGFzcyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzNjpcbiAgICAgICAgc3RhdGUucG9wKCk7XG4gICAgICAgIHBhc3MgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoUi5UKSB7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhc3MgfHwgb3B0cy5XVEYgJiYgc3RhdGVbc3RhdGUubGVuZ3RoIC0gMV0gIT0gMzUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX3hsbWV0YV9iaW4oKSB7XG4gIHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzMik7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM0LCB3cml0ZV9VSW50MzJMRSgxKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM1LCB3cml0ZV9CcnRNZHRpbmZvKHtcbiAgICBuYW1lOiBcIlhMREFQUlwiLFxuICAgIHZlcnNpb246IDEyZTQsXG4gICAgZmxhZ3M6IDM0OTY2NTcwNzJcbiAgfSkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzNik7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM5LCB3cml0ZV9CcnRCZWdpbkVzZm1kKDEsIFwiWExEQVBSXCIpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA1Mik7XG4gIHdyaXRlX3JlY29yZChiYSwgMzUsIHdyaXRlX1VJbnQzMkxFKDUxNCkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDQwOTYsIHdyaXRlX1VJbnQzMkxFKDApKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA0MDk3LCB3cml0ZXVpbnQxNigxKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzYpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDUzKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzNDApO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzNywgd3JpdGVfQnJ0QmVnaW5Fc21kYigxLCB0cnVlKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgNTEsIHdyaXRlX0JydE1kYihbWzEsIDBdXSkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDMzOCk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzMzKTtcbiAgcmV0dXJuIGJhLmVuZCgpO1xufVxuZnVuY3Rpb24gcGFyc2VfeGxtZXRhX3htbChkYXRhLCBuYW1lLCBvcHRzKSB7XG4gIHZhciBvdXQgPSB7IFR5cGVzOiBbXSwgQ2VsbDogW10sIFZhbHVlOiBbXSB9O1xuICBpZiAoIWRhdGEpXG4gICAgcmV0dXJuIG91dDtcbiAgdmFyIHBhc3MgPSBmYWxzZTtcbiAgdmFyIG1ldGF0eXBlID0gMjtcbiAgdmFyIGxhc3RtZXRhO1xuICBkYXRhLnJlcGxhY2UodGFncmVnZXgsIGZ1bmN0aW9uKHgpIHtcbiAgICB2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuICAgIHN3aXRjaCAoc3RyaXBfbnMoeVswXSkpIHtcbiAgICAgIGNhc2UgXCI8P3htbFwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8bWV0YWRhdGFcIjpcbiAgICAgIGNhc2UgXCI8L21ldGFkYXRhPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8bWV0YWRhdGFUeXBlc1wiOlxuICAgICAgY2FzZSBcIjwvbWV0YWRhdGFUeXBlcz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPG1ldGFkYXRhVHlwZVwiOlxuICAgICAgICBvdXQuVHlwZXMucHVzaCh7IG5hbWU6IHkubmFtZSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9tZXRhZGF0YVR5cGU+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxmdXR1cmVNZXRhZGF0YVwiOlxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG91dC5UeXBlcy5sZW5ndGg7ICsrailcbiAgICAgICAgICBpZiAob3V0LlR5cGVzW2pdLm5hbWUgPT0geS5uYW1lKVxuICAgICAgICAgICAgbGFzdG1ldGEgPSBvdXQuVHlwZXNbal07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvZnV0dXJlTWV0YWRhdGE+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxiaz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9iaz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPHJjXCI6XG4gICAgICAgIGlmIChtZXRhdHlwZSA9PSAxKVxuICAgICAgICAgIG91dC5DZWxsLnB1c2goeyB0eXBlOiBvdXQuVHlwZXNbeS50IC0gMV0ubmFtZSwgaW5kZXg6ICt5LnYgfSk7XG4gICAgICAgIGVsc2UgaWYgKG1ldGF0eXBlID09IDApXG4gICAgICAgICAgb3V0LlZhbHVlLnB1c2goeyB0eXBlOiBvdXQuVHlwZXNbeS50IC0gMV0ubmFtZSwgaW5kZXg6ICt5LnYgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvcmM+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxjZWxsTWV0YWRhdGFcIjpcbiAgICAgICAgbWV0YXR5cGUgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2NlbGxNZXRhZGF0YT5cIjpcbiAgICAgICAgbWV0YXR5cGUgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8dmFsdWVNZXRhZGF0YVwiOlxuICAgICAgICBtZXRhdHlwZSA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvdmFsdWVNZXRhZGF0YT5cIjpcbiAgICAgICAgbWV0YXR5cGUgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8ZXh0THN0XCI6XG4gICAgICBjYXNlIFwiPGV4dExzdD5cIjpcbiAgICAgIGNhc2UgXCI8L2V4dExzdD5cIjpcbiAgICAgIGNhc2UgXCI8ZXh0THN0Lz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGV4dFwiOlxuICAgICAgICBwYXNzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9leHQ+XCI6XG4gICAgICAgIHBhc3MgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPHJ2YlwiOlxuICAgICAgICBpZiAoIWxhc3RtZXRhKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoIWxhc3RtZXRhLm9mZnNldHMpXG4gICAgICAgICAgbGFzdG1ldGEub2Zmc2V0cyA9IFtdO1xuICAgICAgICBsYXN0bWV0YS5vZmZzZXRzLnB1c2goK3kuaSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCFwYXNzICYmIG9wdHMuV1RGKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVucmVjb2duaXplZCBcIiArIHlbMF0gKyBcIiBpbiBtZXRhZGF0YVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHg7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfeGxtZXRhX3htbCgpIHtcbiAgdmFyIG8gPSBbWE1MX0hFQURFUl07XG4gIG8ucHVzaCgnPG1ldGFkYXRhIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgeG1sbnM6eGxyZD1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNy9yaWNoZGF0YVwiIHhtbG5zOnhkYT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxNy9keW5hbWljYXJyYXlcIj5cXG4gIDxtZXRhZGF0YVR5cGVzIGNvdW50PVwiMVwiPlxcbiAgICA8bWV0YWRhdGFUeXBlIG5hbWU9XCJYTERBUFJcIiBtaW5TdXBwb3J0ZWRWZXJzaW9uPVwiMTIwMDAwXCIgY29weT1cIjFcIiBwYXN0ZUFsbD1cIjFcIiBwYXN0ZVZhbHVlcz1cIjFcIiBtZXJnZT1cIjFcIiBzcGxpdEZpcnN0PVwiMVwiIHJvd0NvbFNoaWZ0PVwiMVwiIGNsZWFyRm9ybWF0cz1cIjFcIiBjbGVhckNvbW1lbnRzPVwiMVwiIGFzc2lnbj1cIjFcIiBjb2VyY2U9XCIxXCIgY2VsbE1ldGE9XCIxXCIvPlxcbiAgPC9tZXRhZGF0YVR5cGVzPlxcbiAgPGZ1dHVyZU1ldGFkYXRhIG5hbWU9XCJYTERBUFJcIiBjb3VudD1cIjFcIj5cXG4gICAgPGJrPlxcbiAgICAgIDxleHRMc3Q+XFxuICAgICAgICA8ZXh0IHVyaT1cIntiZGJiOGNkYy1mYTFlLTQ5NmUtYTg1Ny0zYzNmMzBjMDI5YzN9XCI+XFxuICAgICAgICAgIDx4ZGE6ZHluYW1pY0FycmF5UHJvcGVydGllcyBmRHluYW1pYz1cIjFcIiBmQ29sbGFwc2VkPVwiMFwiLz5cXG4gICAgICAgIDwvZXh0PlxcbiAgICAgIDwvZXh0THN0PlxcbiAgICA8L2JrPlxcbiAgPC9mdXR1cmVNZXRhZGF0YT5cXG4gIDxjZWxsTWV0YWRhdGEgY291bnQ9XCIxXCI+XFxuICAgIDxiaz5cXG4gICAgICA8cmMgdD1cIjFcIiB2PVwiMFwiLz5cXG4gICAgPC9iaz5cXG4gIDwvY2VsbE1ldGFkYXRhPlxcbjwvbWV0YWRhdGE+Jyk7XG4gIHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiAxOC42IENhbGN1bGF0aW9uIENoYWluICovXG5mdW5jdGlvbiBwYXJzZV9jY194bWwoZGF0YS8qOjosIG5hbWUsIG9wdHMqLykvKjpBcnJheTxhbnk+Ki8ge1xuXHR2YXIgZCA9IFtdO1xuXHRpZighZGF0YSkgcmV0dXJuIGQ7XG5cdHZhciBpID0gMTtcblx0KGRhdGEubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblx0XHRcdC8qIDE4LjYuMiAgY2FsY0NoYWluIENUX0NhbGNDaGFpbiAxICovXG5cdFx0XHRjYXNlICc8Y2FsY0NoYWluJzogY2FzZSAnPGNhbGNDaGFpbj4nOiBjYXNlICc8L2NhbGNDaGFpbj4nOiBicmVhaztcblx0XHRcdC8qIDE4LjYuMSAgYyBDVF9DYWxjQ2VsbCAxICovXG5cdFx0XHRjYXNlICc8Yyc6IGRlbGV0ZSB5WzBdOyBpZih5LmkpIGkgPSB5Lmk7IGVsc2UgeS5pID0gaTsgZC5wdXNoKHkpOyBicmVhaztcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZDtcbn1cblxuLy9mdW5jdGlvbiB3cml0ZV9jY194bWwoZGF0YSwgb3B0cykgeyB9XG5cbi8qIFtNUy1YTFNCXSAyLjYuNC4xICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDYWxjQ2hhaW5JdGVtJChkYXRhKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0b3V0LmkgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBjZWxsID0ge307XG5cdGNlbGwuciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0Y2VsbC5jID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRvdXQuciA9IGVuY29kZV9jZWxsKGNlbGwpO1xuXHR2YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGZsYWdzICYgMHgyKSBvdXQubCA9ICcxJztcblx0aWYoZmxhZ3MgJiAweDgpIG91dC5hID0gJzEnO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiAxOC42IENhbGN1bGF0aW9uIENoYWluICovXG5mdW5jdGlvbiBwYXJzZV9jY19iaW4oZGF0YSwgbmFtZSwgb3B0cykge1xuXHR2YXIgb3V0ID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfY2ModmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwM0Y6IC8qICdCcnRDYWxjQ2hhaW5JdGVtJCcgKi9cblx0XHRcdFx0b3V0LnB1c2godmFsKTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8vZnVuY3Rpb24gd3JpdGVfY2NfYmluKGRhdGEsIG9wdHMpIHsgfVxuLyogMTguMTQgU3VwcGxlbWVudGFyeSBXb3JrYm9vayBEYXRhICovXG5mdW5jdGlvbiBwYXJzZV94bGlua194bWwoLyo6OmRhdGEsIHJlbCwgbmFtZTpzdHJpbmcsIF9vcHRzKi8pIHtcblx0Ly92YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHQvL2lmKG9wdHMuV1RGKSB0aHJvdyBcIlhMU1ggRXh0ZXJuYWwgTGlua1wiO1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuMjUgRXh0ZXJuYWwgTGluayAqL1xuZnVuY3Rpb24gcGFyc2VfeGxpbmtfYmluKGRhdGEsIHJlbCwgbmFtZS8qOnN0cmluZyovLCBfb3B0cykge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cblx0dmFyIHBhc3MgPSBmYWxzZSwgZW5kID0gZmFsc2U7XG5cblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIHhsaW5rX3BhcnNlKHZhbCwgUiwgUlQpIHtcblx0XHRpZihlbmQpIHJldHVybjtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMTY3OiAvKiAnQnJ0U3VwVGFicycgKi9cblx0XHRcdGNhc2UgMHgwMTZCOiAvKiAnQnJ0RXh0ZXJuVGFibGVTdGFydCcgKi9cblx0XHRcdGNhc2UgMHgwMTZDOiAvKiAnQnJ0RXh0ZXJuVGFibGVFbmQnICovXG5cdFx0XHRjYXNlIDB4MDE2RTogLyogJ0JydEV4dGVyblJvd0hkcicgKi9cblx0XHRcdGNhc2UgMHgwMTZGOiAvKiAnQnJ0RXh0ZXJuQ2VsbEJsYW5rJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzA6IC8qICdCcnRFeHRlcm5DZWxsUmVhbCcgKi9cblx0XHRcdGNhc2UgMHgwMTcxOiAvKiAnQnJ0RXh0ZXJuQ2VsbEJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDE3MjogLyogJ0JydEV4dGVybkNlbGxFcnJvcicgKi9cblx0XHRcdGNhc2UgMHgwMTczOiAvKiAnQnJ0RXh0ZXJuQ2VsbFN0cmluZycgKi9cblx0XHRcdGNhc2UgMHgwMUQ4OiAvKiAnQnJ0RXh0ZXJuVmFsdWVNZXRhJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDE6IC8qICdCcnRTdXBOYW1lU3RhcnQnICovXG5cdFx0XHRjYXNlIDB4MDI0MjogLyogJ0JydFN1cE5hbWVWYWx1ZVN0YXJ0JyAqL1xuXHRcdFx0Y2FzZSAweDAyNDM6IC8qICdCcnRTdXBOYW1lVmFsdWVFbmQnICovXG5cdFx0XHRjYXNlIDB4MDI0NDogLyogJ0JydFN1cE5hbWVOdW0nICovXG5cdFx0XHRjYXNlIDB4MDI0NTogLyogJ0JydFN1cE5hbWVFcnInICovXG5cdFx0XHRjYXNlIDB4MDI0NjogLyogJ0JydFN1cE5hbWVTdCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ3OiAvKiAnQnJ0U3VwTmFtZU5pbCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ4OiAvKiAnQnJ0U3VwTmFtZUJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDI0OTogLyogJ0JydFN1cE5hbWVGbWxhJyAqL1xuXHRcdFx0Y2FzZSAweDAyNEE6IC8qICdCcnRTdXBOYW1lQml0cycgKi9cblx0XHRcdGNhc2UgMHgwMjRCOiAvKiAnQnJ0U3VwTmFtZUVuZCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0sIG9wdHMpO1xufVxuLyogMjAuNSBEcmF3aW5nTUwgLSBTcHJlYWRzaGVldE1MIERyYXdpbmcgKi9cbi8qIDIwLjUuMi4zNSB3c0RyIENUX0RyYXdpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX2RyYXdpbmcoZGF0YSwgcmVscy8qOmFueSovKSB7XG5cdGlmKCFkYXRhKSByZXR1cm4gXCI/P1wiO1xuXHQvKlxuXHQgIENoYXJ0c2hlZXQgRHJhd2luZzpcblx0ICAgLSAyMC41LjIuMzUgd3NEciBDVF9EcmF3aW5nXG5cdCAgICAtIDIwLjUuMi4xICBhYnNvbHV0ZUFuY2hvciBDVF9BYnNvbHV0ZUFuY2hvclxuXHQgICAgIC0gMjAuNS4yLjE2IGdyYXBoaWNGcmFtZSBDVF9HcmFwaGljYWxPYmplY3RGcmFtZVxuXHQgICAgICAtIDIwLjEuMi4yLjE2IGdyYXBoaWMgQ1RfR3JhcGhpY2FsT2JqZWN0XG5cdCAgICAgICAtIDIwLjEuMi4yLjE3IGdyYXBoaWNEYXRhIENUX0dyYXBoaWNhbE9iamVjdERhdGFcbiAgICAgICAgICAtIGNoYXJ0IHJlZmVyZW5jZVxuXHQgICB0aGUgYWN0dWFsIHR5cGUgaXMgYmFzZWQgb24gdGhlIFVSSSBvZiB0aGUgZ3JhcGhpY0RhdGFcblx0XHRUT0RPOiBoYW5kbGUgZW1iZWRkZWQgY2hhcnRzIGFuZCBvdGhlciB0eXBlcyBvZiBncmFwaGljc1xuXHQqL1xuXHR2YXIgaWQgPSAoZGF0YS5tYXRjaCgvPGM6Y2hhcnQgW14+XSpyOmlkPVwiKFteXCJdKilcIi8pfHxbXCJcIixcIlwiXSlbMV07XG5cblx0cmV0dXJuIHJlbHNbJyFpZCddW2lkXS5UYXJnZXQ7XG59XG5cbi8qIEwuNS41LjIgU3ByZWFkc2hlZXRNTCBDb21tZW50cyArIFZNTCBTY2hlbWEgKi9cbnZhciBfc2hhcGVpZCA9IDEwMjQ7XG5mdW5jdGlvbiB3cml0ZV9jb21tZW50c192bWwocklkLyo6bnVtYmVyKi8sIGNvbW1lbnRzKSB7XG5cdHZhciBjc2l6ZSA9IFsyMTYwMCwgMjE2MDBdO1xuXHQvKiBMLjUuMi4xLjIgUGF0aCBBdHRyaWJ1dGUgKi9cblx0dmFyIGJib3ggPSBbXCJtMCwwbDBcIixjc2l6ZVsxXSxjc2l6ZVswXSxjc2l6ZVsxXSxjc2l6ZVswXSxcIjB4ZVwiXS5qb2luKFwiLFwiKTtcblx0dmFyIG8gPSBbXG5cdFx0d3JpdGV4dGFnKFwieG1sXCIsIG51bGwsIHsgJ3htbG5zOnYnOiBYTE1MTlMudiwgJ3htbG5zOm8nOiBYTE1MTlMubywgJ3htbG5zOngnOiBYTE1MTlMueCwgJ3htbG5zOm12JzogWExNTE5TLm12IH0pLnJlcGxhY2UoL1xcLz4vLFwiPlwiKSxcblx0XHR3cml0ZXh0YWcoXCJvOnNoYXBlbGF5b3V0XCIsIHdyaXRleHRhZyhcIm86aWRtYXBcIiwgbnVsbCwgeyd2OmV4dCc6XCJlZGl0XCIsICdkYXRhJzpySWR9KSwgeyd2OmV4dCc6XCJlZGl0XCJ9KSxcblx0XHR3cml0ZXh0YWcoXCJ2OnNoYXBldHlwZVwiLCBbXG5cdFx0XHR3cml0ZXh0YWcoXCJ2OnN0cm9rZVwiLCBudWxsLCB7am9pbnN0eWxlOlwibWl0ZXJcIn0pLFxuXHRcdFx0d3JpdGV4dGFnKFwidjpwYXRoXCIsIG51bGwsIHtncmFkaWVudHNoYXBlb2s6XCJ0XCIsICdvOmNvbm5lY3R0eXBlJzpcInJlY3RcIn0pXG5cdFx0XS5qb2luKFwiXCIpLCB7aWQ6XCJfeDAwMDBfdDIwMlwiLCAnbzpzcHQnOjIwMiwgY29vcmRzaXplOmNzaXplLmpvaW4oXCIsXCIpLHBhdGg6YmJveH0pXG5cdF07XG5cdHdoaWxlKF9zaGFwZWlkIDwgcklkICogMTAwMCkgX3NoYXBlaWQgKz0gMTAwMDtcblxuXHRjb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0dmFyIGMgPSBkZWNvZGVfY2VsbCh4WzBdKTtcblx0dmFyIGZpbGxvcHRzID0gLyo6OigqL3snY29sb3IyJzpcIiNCRUZGODJcIiwgJ3R5cGUnOlwiZ3JhZGllbnRcIn0vKjo6IDphbnkpKi87XG5cdGlmKGZpbGxvcHRzLnR5cGUgPT0gXCJncmFkaWVudFwiKSBmaWxsb3B0cy5hbmdsZSA9IFwiLTE4MFwiO1xuXHR2YXIgZmlsbHBhcm0gPSBmaWxsb3B0cy50eXBlID09IFwiZ3JhZGllbnRcIiA/IHdyaXRleHRhZyhcIm86ZmlsbFwiLCBudWxsLCB7dHlwZTpcImdyYWRpZW50VW5zY2FsZWRcIiwgJ3Y6ZXh0JzpcInZpZXdcIn0pIDogbnVsbDtcblx0dmFyIGZpbGx4bWwgPSB3cml0ZXh0YWcoJ3Y6ZmlsbCcsIGZpbGxwYXJtLCBmaWxsb3B0cyk7XG5cblx0dmFyIHNoYWRhdGEgPSAoe29uOlwidFwiLCAnb2JzY3VyZWQnOlwidFwifS8qOmFueSovKTtcblx0Kytfc2hhcGVpZDtcblxuXHRvID0gby5jb25jYXQoW1xuXHQnPHY6c2hhcGUnICsgd3h0X2hlbHBlcih7XG5cdFx0aWQ6J194MDAwMF9zJyArIF9zaGFwZWlkLFxuXHRcdHR5cGU6XCIjX3gwMDAwX3QyMDJcIixcblx0XHRzdHlsZTpcInBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tbGVmdDo4MHB0O21hcmdpbi10b3A6NXB0O3dpZHRoOjEwNHB0O2hlaWdodDo2NHB0O3otaW5kZXg6MTBcIiArICh4WzFdLmhpZGRlbiA/IFwiO3Zpc2liaWxpdHk6aGlkZGVuXCIgOiBcIlwiKSAsXG5cdFx0ZmlsbGNvbG9yOlwiI0VDRkFENFwiLFxuXHRcdHN0cm9rZWNvbG9yOlwiI2VkZWFhMVwiXG5cdH0pICsgJz4nLFxuXHRcdGZpbGx4bWwsXG5cdFx0d3JpdGV4dGFnKFwidjpzaGFkb3dcIiwgbnVsbCwgc2hhZGF0YSksXG5cdFx0d3JpdGV4dGFnKFwidjpwYXRoXCIsIG51bGwsIHsnbzpjb25uZWN0dHlwZSc6XCJub25lXCJ9KSxcblx0XHQnPHY6dGV4dGJveD48ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjpsZWZ0XCI+PC9kaXY+PC92OnRleHRib3g+Jyxcblx0XHQnPHg6Q2xpZW50RGF0YSBPYmplY3RUeXBlPVwiTm90ZVwiPicsXG5cdFx0XHQnPHg6TW92ZVdpdGhDZWxscy8+Jyxcblx0XHRcdCc8eDpTaXplV2l0aENlbGxzLz4nLFxuXHRcdFx0LyogUGFydCA0IDE5LjQuMi4zIEFuY2hvciAoQW5jaG9yKSAqL1xuXHRcdFx0d3JpdGV0YWcoJ3g6QW5jaG9yJywgW2MuYysxLCAwLCBjLnIrMSwgMCwgYy5jKzMsIDIwLCBjLnIrNSwgMjBdLmpvaW4oXCIsXCIpKSxcblx0XHRcdHdyaXRldGFnKCd4OkF1dG9GaWxsJywgXCJGYWxzZVwiKSxcblx0XHRcdHdyaXRldGFnKCd4OlJvdycsIFN0cmluZyhjLnIpKSxcblx0XHRcdHdyaXRldGFnKCd4OkNvbHVtbicsIFN0cmluZyhjLmMpKSxcblx0XHRcdHhbMV0uaGlkZGVuID8gJycgOiAnPHg6VmlzaWJsZS8+Jyxcblx0XHQnPC94OkNsaWVudERhdGE+Jyxcblx0JzwvdjpzaGFwZT4nXG5cdF0pOyB9KTtcblx0by5wdXNoKCc8L3htbD4nKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHNoZWV0X2luc2VydF9jb21tZW50cyhzaGVldCwgY29tbWVudHMvKjpBcnJheTxSYXdDb21tZW50PiovLCB0aHJlYWRlZC8qOmJvb2xlYW4qLywgcGVvcGxlLyo6P0FycmF5PGFueT4qLykge1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0dmFyIGNlbGwvKjpDZWxsKi87XG5cdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oY29tbWVudCkge1xuXHRcdHZhciByID0gZGVjb2RlX2NlbGwoY29tbWVudC5yZWYpO1xuXHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRpZighc2hlZXRbci5yXSkgc2hlZXRbci5yXSA9IFtdO1xuXHRcdFx0Y2VsbCA9IHNoZWV0W3Iucl1bci5jXTtcblx0XHR9IGVsc2UgY2VsbCA9IHNoZWV0W2NvbW1lbnQucmVmXTtcblx0XHRpZiAoIWNlbGwpIHtcblx0XHRcdGNlbGwgPSAoe3Q6XCJ6XCJ9Lyo6YW55Ki8pO1xuXHRcdFx0aWYoZGVuc2UpIHNoZWV0W3Iucl1bci5jXSA9IGNlbGw7XG5cdFx0XHRlbHNlIHNoZWV0W2NvbW1lbnQucmVmXSA9IGNlbGw7XG5cdFx0XHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFtcIiFyZWZcIl18fFwiQkRXR08xMDAwMDAxOkExXCIpO1xuXHRcdFx0aWYocmFuZ2Uucy5yID4gci5yKSByYW5nZS5zLnIgPSByLnI7XG5cdFx0XHRpZihyYW5nZS5lLnIgPCByLnIpIHJhbmdlLmUuciA9IHIucjtcblx0XHRcdGlmKHJhbmdlLnMuYyA+IHIuYykgcmFuZ2Uucy5jID0gci5jO1xuXHRcdFx0aWYocmFuZ2UuZS5jIDwgci5jKSByYW5nZS5lLmMgPSByLmM7XG5cdFx0XHR2YXIgZW5jb2RlZCA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRpZiAoZW5jb2RlZCAhPT0gc2hlZXRbXCIhcmVmXCJdKSBzaGVldFtcIiFyZWZcIl0gPSBlbmNvZGVkO1xuXHRcdH1cblxuXHRcdGlmICghY2VsbC5jKSBjZWxsLmMgPSBbXTtcblx0XHR2YXIgby8qOkNvbW1lbnQqLyA9ICh7YTogY29tbWVudC5hdXRob3IsIHQ6IGNvbW1lbnQudCwgcjogY29tbWVudC5yLCBUOiB0aHJlYWRlZH0pO1xuXHRcdGlmKGNvbW1lbnQuaCkgby5oID0gY29tbWVudC5oO1xuXG5cdFx0LyogdGhyZWFkZWQgY29tbWVudHMgYWx3YXlzIG92ZXJyaWRlICovXG5cdFx0Zm9yKHZhciBpID0gY2VsbC5jLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0XHRpZighdGhyZWFkZWQgJiYgY2VsbC5jW2ldLlQpIHJldHVybjtcblx0XHRcdGlmKHRocmVhZGVkICYmICFjZWxsLmNbaV0uVCkgY2VsbC5jLnNwbGljZShpLCAxKTtcblx0XHR9XG5cdFx0aWYodGhyZWFkZWQgJiYgcGVvcGxlKSBmb3IoaSA9IDA7IGkgPCBwZW9wbGUubGVuZ3RoOyArK2kpIHtcblx0XHRcdGlmKG8uYSA9PSBwZW9wbGVbaV0uaWQpIHsgby5hID0gcGVvcGxlW2ldLm5hbWUgfHwgby5hOyBicmVhazsgfVxuXHRcdH1cblx0XHRjZWxsLmMucHVzaChvKTtcblx0fSk7XG59XG5cbi8qIDE4LjcgQ29tbWVudHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2NvbW1lbnRzX3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpLyo6QXJyYXk8UmF3Q29tbWVudD4qLyB7XG5cdC8qIDE4LjcuNiBDVF9Db21tZW50cyAqL1xuXHRpZihkYXRhLm1hdGNoKC88KD86XFx3KzopP2NvbW1lbnRzICpcXC8+LykpIHJldHVybiBbXTtcblx0dmFyIGF1dGhvcnMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGNvbW1lbnRMaXN0Lyo6QXJyYXk8UmF3Q29tbWVudD4qLyA9IFtdO1xuXHR2YXIgYXV0aHRhZyA9IGRhdGEubWF0Y2goLzwoPzpcXHcrOik/YXV0aG9ycz4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/YXV0aG9ycz4vKTtcblx0aWYoYXV0aHRhZyAmJiBhdXRodGFnWzFdKSBhdXRodGFnWzFdLnNwbGl0KC88XFwvXFx3Kjo/YXV0aG9yPi8pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdGlmKHggPT09IFwiXCIgfHwgeC50cmltKCkgPT09IFwiXCIpIHJldHVybjtcblx0XHR2YXIgYSA9IHgubWF0Y2goLzwoPzpcXHcrOik/YXV0aG9yW14+XSo+KC4qKS8pO1xuXHRcdGlmKGEpIGF1dGhvcnMucHVzaChhWzFdKTtcblx0fSk7XG5cdHZhciBjbW50dGFnID0gZGF0YS5tYXRjaCgvPCg/Olxcdys6KT9jb21tZW50TGlzdD4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/Y29tbWVudExpc3Q+Lyk7XG5cdGlmKGNtbnR0YWcgJiYgY21udHRhZ1sxXSkgY21udHRhZ1sxXS5zcGxpdCgvPFxcL1xcdyo6P2NvbW1lbnQ+LykuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0aWYoeCA9PT0gXCJcIiB8fCB4LnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuXHRcdHZhciBjbSA9IHgubWF0Y2goLzwoPzpcXHcrOik/Y29tbWVudFtePl0qPi8pO1xuXHRcdGlmKCFjbSkgcmV0dXJuO1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoY21bMF0pO1xuXHRcdHZhciBjb21tZW50Lyo6UmF3Q29tbWVudCovID0gKHsgYXV0aG9yOiB5LmF1dGhvcklkICYmIGF1dGhvcnNbeS5hdXRob3JJZF0gfHwgXCJzaGVldGpzZ2hvc3RcIiwgcmVmOiB5LnJlZiwgZ3VpZDogeS5ndWlkIH0vKjphbnkqLyk7XG5cdFx0dmFyIGNlbGwgPSBkZWNvZGVfY2VsbCh5LnJlZik7XG5cdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gY2VsbC5yKSByZXR1cm47XG5cdFx0dmFyIHRleHRNYXRjaCA9IHgubWF0Y2goLzwoPzpcXHcrOik/dGV4dD4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/dGV4dD4vKTtcblx0XHR2YXIgcnQgPSAhIXRleHRNYXRjaCAmJiAhIXRleHRNYXRjaFsxXSAmJiBwYXJzZV9zaSh0ZXh0TWF0Y2hbMV0pIHx8IHtyOlwiXCIsdDpcIlwiLGg6XCJcIn07XG5cdFx0Y29tbWVudC5yID0gcnQucjtcblx0XHRpZihydC5yID09IFwiPHQ+PC90PlwiKSBydC50ID0gcnQuaCA9IFwiXCI7XG5cdFx0Y29tbWVudC50ID0gKHJ0LnR8fFwiXCIpLnJlcGxhY2UoL1xcclxcbi9nLFwiXFxuXCIpLnJlcGxhY2UoL1xcci9nLFwiXFxuXCIpO1xuXHRcdGlmKG9wdHMuY2VsbEhUTUwpIGNvbW1lbnQuaCA9IHJ0Lmg7XG5cdFx0Y29tbWVudExpc3QucHVzaChjb21tZW50KTtcblx0fSk7XG5cdHJldHVybiBjb21tZW50TGlzdDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY29tbWVudHNfeG1sKGRhdGEvKjo6LCBvcHRzKi8pIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdjb21tZW50cycsIG51bGwsIHsgJ3htbG5zJzogWE1MTlNfbWFpblswXSB9KV07XG5cblx0dmFyIGlhdXRob3IvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0by5wdXNoKFwiPGF1dGhvcnM+XCIpO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oeCkgeyB4WzFdLmZvckVhY2goZnVuY3Rpb24odykgeyB2YXIgYSA9IGVzY2FwZXhtbCh3LmEpO1xuXHRcdGlmKGlhdXRob3IuaW5kZXhPZihhKSA9PSAtMSkge1xuXHRcdFx0aWF1dGhvci5wdXNoKGEpO1xuXHRcdFx0by5wdXNoKFwiPGF1dGhvcj5cIiArIGEgKyBcIjwvYXV0aG9yPlwiKTtcblx0XHR9XG5cdFx0aWYody5UICYmIHcuSUQgJiYgaWF1dGhvci5pbmRleE9mKFwidGM9XCIgKyB3LklEKSA9PSAtMSkge1xuXHRcdFx0aWF1dGhvci5wdXNoKFwidGM9XCIgKyB3LklEKTtcblx0XHRcdG8ucHVzaChcIjxhdXRob3I+XCIgKyBcInRjPVwiICsgdy5JRCArIFwiPC9hdXRob3I+XCIpO1xuXHRcdH1cblx0fSk7IH0pO1xuXHRpZihpYXV0aG9yLmxlbmd0aCA9PSAwKSB7IGlhdXRob3IucHVzaChcIlNoZWV0SjVcIik7IG8ucHVzaChcIjxhdXRob3I+U2hlZXRKNTwvYXV0aG9yPlwiKTsgfVxuXHRvLnB1c2goXCI8L2F1dGhvcnM+XCIpO1xuXHRvLnB1c2goXCI8Y29tbWVudExpc3Q+XCIpO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oZCkge1xuXHRcdC8qIDE4LjcuMyBDVF9Db21tZW50ICovXG5cdFx0dmFyIGxhc3RhdXRob3IgPSAwLCB0cyA9IFtdO1xuXHRcdGlmKGRbMV1bMF0gJiYgZFsxXVswXS5UICYmIGRbMV1bMF0uSUQpIGxhc3RhdXRob3IgPSBpYXV0aG9yLmluZGV4T2YoXCJ0Yz1cIiArIGRbMV1bMF0uSUQpO1xuXHRcdGVsc2UgZFsxXS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRcdGlmKGMuYSkgbGFzdGF1dGhvciA9IGlhdXRob3IuaW5kZXhPZihlc2NhcGV4bWwoYy5hKSk7XG5cdFx0XHR0cy5wdXNoKGMudHx8XCJcIik7XG5cdFx0fSk7XG5cdFx0by5wdXNoKCc8Y29tbWVudCByZWY9XCInICsgZFswXSArICdcIiBhdXRob3JJZD1cIicgKyBsYXN0YXV0aG9yICsgJ1wiPjx0ZXh0PicpO1xuXHRcdGlmKHRzLmxlbmd0aCA8PSAxKSBvLnB1c2god3JpdGV0YWcoXCJ0XCIsIGVzY2FwZXhtbCh0c1swXXx8XCJcIikpKTtcblx0XHRlbHNlIHtcblx0XHRcdC8qIGJhc2VkIG9uIFRocmVhZGVkIENvbW1lbnRzIC0+IENvbW1lbnRzIHByb2plY3Rpb24gKi9cblx0XHRcdHZhciB0ID0gXCJDb21tZW50OlxcbiAgICBcIiArICh0c1swXSkgKyBcIlxcblwiO1xuXHRcdFx0Zm9yKHZhciBpID0gMTsgaSA8IHRzLmxlbmd0aDsgKytpKSB0ICs9IFwiUmVwbHk6XFxuICAgIFwiICsgdHNbaV0gKyBcIlxcblwiO1xuXHRcdFx0by5wdXNoKHdyaXRldGFnKFwidFwiLCBlc2NhcGV4bWwodCkpKTtcblx0XHR9XG5cdFx0by5wdXNoKCc8L3RleHQ+PC9jb21tZW50PicpO1xuXHR9KTtcblx0by5wdXNoKFwiPC9jb21tZW50TGlzdD5cIik7XG5cdGlmKG8ubGVuZ3RoPjIpIHsgb1tvLmxlbmd0aF0gPSAoJzwvY29tbWVudHM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogW01TLVhMU1hdIDIuMS4xNyAqL1xuZnVuY3Rpb24gcGFyc2VfdGNtbnRfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpBcnJheTxSYXdDb21tZW50PiovIHtcblx0dmFyIG91dCA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlLCBjb21tZW50ID0ge30sIHRpZHggPSAwO1xuXHRkYXRhLnJlcGxhY2UodGFncmVnZXgsIGZ1bmN0aW9uIHhtbF90Y21udCh4LCBpZHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjA3IFRocmVhZGVkQ29tbWVudHMgQ1RfVGhyZWFkZWRDb21tZW50cyAqL1xuXHRcdFx0Y2FzZSAnPFRocmVhZGVkQ29tbWVudHMnOiBicmVhaztcblx0XHRcdGNhc2UgJzwvVGhyZWFkZWRDb21tZW50cz4nOiBicmVhaztcblxuXHRcdFx0LyogMi42LjIwNSB0aHJlYWRlZENvbW1lbnQgQ1RfVGhyZWFkZWRDb21tZW50ICovXG5cdFx0XHRjYXNlICc8dGhyZWFkZWRDb21tZW50JzogY29tbWVudCA9IHthdXRob3I6IHkucGVyc29uSWQsIGd1aWQ6IHkuaWQsIHJlZjogeS5yZWYsIFQ6IDF9OyBicmVhaztcblx0XHRcdGNhc2UgJzwvdGhyZWFkZWRDb21tZW50Pic6IGlmKGNvbW1lbnQudCAhPSBudWxsKSBvdXQucHVzaChjb21tZW50KTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJzx0ZXh0Pic6IGNhc2UgJzx0ZXh0JzogdGlkeCA9IGlkeCArIHgubGVuZ3RoOyBicmVhaztcblx0XHRcdGNhc2UgJzwvdGV4dD4nOiBjb21tZW50LnQgPSBkYXRhLnNsaWNlKHRpZHgsIGlkeCkucmVwbGFjZSgvXFxyXFxuL2csIFwiXFxuXCIpLnJlcGxhY2UoL1xcci9nLCBcIlxcblwiKTsgYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDYgbWVudGlvbnMgQ1RfVGhyZWFkZWRDb21tZW50TWVudGlvbnMgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPG1lbnRpb25zJzogY2FzZSAnPG1lbnRpb25zPic6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvbWVudGlvbnM+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogMi42LjIwMiBtZW50aW9uIENUX01lbnRpb24gVE9ETyAqL1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGNhc2UgJzxleHRMc3QvPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi43ICBleHQgQ1RfRXh0ZW5zaW9uICsgKi9cblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKCFwYXNzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gdGhyZWFkZWQgY29tbWVudHMnKTtcblx0XHR9XG5cdFx0cmV0dXJuIHg7XG5cdH0pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV90Y21udF94bWwoY29tbWVudHMsIHBlb3BsZSwgb3B0cykge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ1RocmVhZGVkQ29tbWVudHMnLCBudWxsLCB7ICd4bWxucyc6IFhNTE5TLlRDTU5UIH0pLnJlcGxhY2UoL1tcXC9dPi8sIFwiPlwiKV07XG5cdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oY2Fycikge1xuXHRcdHZhciByb290aWQgPSBcIlwiO1xuXHRcdChjYXJyWzFdIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMsIGlkeCkge1xuXHRcdFx0aWYoIWMuVCkgeyBkZWxldGUgYy5JRDsgcmV0dXJuOyB9XG5cdFx0XHRpZihjLmEgJiYgcGVvcGxlLmluZGV4T2YoYy5hKSA9PSAtMSkgcGVvcGxlLnB1c2goYy5hKTtcblx0XHRcdHZhciB0Y29wdHMgPSB7XG5cdFx0XHRcdHJlZjogY2FyclswXSxcblx0XHRcdFx0aWQ6IFwiezU0RUU3OTUxLTcyNjItNDIwMC02OTY5LVwiICsgKFwiMDAwMDAwMDAwMDAwXCIgKyBvcHRzLnRjaWQrKykuc2xpY2UoLTEyKSArIFwifVwiXG5cdFx0XHR9O1xuXHRcdFx0aWYoaWR4ID09IDApIHJvb3RpZCA9IHRjb3B0cy5pZDtcblx0XHRcdGVsc2UgdGNvcHRzLnBhcmVudElkID0gcm9vdGlkO1xuXHRcdFx0Yy5JRCA9IHRjb3B0cy5pZDtcblx0XHRcdGlmKGMuYSkgdGNvcHRzLnBlcnNvbklkID0gXCJ7NTRFRTc5NTAtNzI2Mi00MjAwLTY5NjktXCIgKyAoXCIwMDAwMDAwMDAwMDBcIiArIHBlb3BsZS5pbmRleE9mKGMuYSkpLnNsaWNlKC0xMikgKyBcIn1cIjtcblx0XHRcdG8ucHVzaCh3cml0ZXh0YWcoJ3RocmVhZGVkQ29tbWVudCcsIHdyaXRldGFnKCd0ZXh0JywgYy50fHxcIlwiKSwgdGNvcHRzKSk7XG5cdFx0fSk7XG5cdH0pO1xuXHRvLnB1c2goJzwvVGhyZWFkZWRDb21tZW50cz4nKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogW01TLVhMU1hdIDIuMS4xOCAqL1xuZnVuY3Rpb24gcGFyc2VfcGVvcGxlX3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0dmFyIG91dCA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRkYXRhLnJlcGxhY2UodGFncmVnZXgsIGZ1bmN0aW9uIHhtbF90Y21udCh4KSB7XG5cdFx0dmFyIHkvKjphbnkqLyA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblxuXHRcdFx0LyogMi40Ljg1IHBlcnNvbkxpc3QgQ1RfUGVyc29uTGlzdCAqL1xuXHRcdFx0Y2FzZSAnPHBlcnNvbkxpc3QnOiBicmVhaztcblx0XHRcdGNhc2UgJzwvcGVyc29uTGlzdD4nOiBicmVhaztcblxuXHRcdFx0LyogMi42LjIwMyBwZXJzb24gQ1RfUGVyc29uIFRPRE86IHByb3ZpZGVycyAqL1xuXHRcdFx0Y2FzZSAnPHBlcnNvbic6IG91dC5wdXNoKHtuYW1lOiB5LmRpc3BsYXluYW1lLCBpZDogeS5pZCB9KTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3BlcnNvbj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBjYXNlICc8ZXh0THN0Lz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuNyAgZXh0IENUX0V4dGVuc2lvbiArICovXG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcz10cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3M9ZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OiBpZighcGFzcyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIHRocmVhZGVkIGNvbW1lbnRzJyk7XG5cdFx0fVxuXHRcdHJldHVybiB4O1xuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX3Blb3BsZV94bWwocGVvcGxlLyosIG9wdHMqLykge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ3BlcnNvbkxpc3QnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuVENNTlQsXG5cdFx0J3htbG5zOngnOiBYTUxOU19tYWluWzBdXG5cdH0pLnJlcGxhY2UoL1tcXC9dPi8sIFwiPlwiKV07XG5cdHBlb3BsZS5mb3JFYWNoKGZ1bmN0aW9uKHBlcnNvbiwgaWR4KSB7XG5cdFx0by5wdXNoKHdyaXRleHRhZygncGVyc29uJywgbnVsbCwge1xuXHRcdFx0ZGlzcGxheU5hbWU6IHBlcnNvbixcblx0XHRcdGlkOiBcIns1NEVFNzk1MC03MjYyLTQyMDAtNjk2OS1cIiArIChcIjAwMDAwMDAwMDAwMFwiICsgaWR4KS5zbGljZSgtMTIpICsgXCJ9XCIsXG5cdFx0XHR1c2VySWQ6IHBlcnNvbixcblx0XHRcdHByb3ZpZGVySWQ6IFwiTm9uZVwiXG5cdFx0fSkpO1xuXHR9KTtcblx0by5wdXNoKFwiPC9wZXJzb25MaXN0PlwiKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMjggQnJ0QmVnaW5Db21tZW50ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRCZWdpbkNvbW1lbnQoZGF0YSkge1xuXHR2YXIgb3V0ID0ge307XG5cdG91dC5pYXV0aG9yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgcmZ4ID0gcGFyc2VfVW5jaGVja2VkUmZYKGRhdGEsIDE2KTtcblx0b3V0LnJmeCA9IHJmeC5zO1xuXHRvdXQucmVmID0gZW5jb2RlX2NlbGwocmZ4LnMpO1xuXHRkYXRhLmwgKz0gMTY7IC8qdmFyIGd1aWQgPSBwYXJzZV9HVUlEKGRhdGEpOyAqL1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5Db21tZW50KGRhdGEsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigzNik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YVsxXS5pYXV0aG9yKTtcblx0d3JpdGVfVW5jaGVja2VkUmZYKChkYXRhWzBdLyo6YW55Ki8pLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzI3IEJydENvbW1lbnRBdXRob3IgKi9cbnZhciBwYXJzZV9CcnRDb21tZW50QXV0aG9yID0gcGFyc2VfWExXaWRlU3RyaW5nO1xuZnVuY3Rpb24gd3JpdGVfQnJ0Q29tbWVudEF1dGhvcihkYXRhKSB7IHJldHVybiB3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS5zbGljZSgwLCA1NCkpOyB9XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy44IENvbW1lbnRzICovXG5mdW5jdGlvbiBwYXJzZV9jb21tZW50c19iaW4oZGF0YSwgb3B0cykvKjpBcnJheTxSYXdDb21tZW50PiovIHtcblx0dmFyIG91dC8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8gPSBbXTtcblx0dmFyIGF1dGhvcnMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGMgPSB7fTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9jbW50KHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMjc4OiAvKiAnQnJ0Q29tbWVudEF1dGhvcicgKi9cblx0XHRcdFx0YXV0aG9ycy5wdXNoKHZhbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAyN0I6IC8qICdCcnRCZWdpbkNvbW1lbnQnICovXG5cdFx0XHRcdGMgPSB2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAyN0Q6IC8qICdCcnRDb21tZW50VGV4dCcgKi9cblx0XHRcdFx0Yy50ID0gdmFsLnQ7IGMuaCA9IHZhbC5oOyBjLnIgPSB2YWwucjsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDI3QzogLyogJ0JydEVuZENvbW1lbnQnICovXG5cdFx0XHRcdGMuYXV0aG9yID0gYXV0aG9yc1tjLmlhdXRob3JdO1xuXHRcdFx0XHRkZWxldGUgKGMvKjphbnkqLykuaWF1dGhvcjtcblx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgYy5yZnggJiYgb3B0cy5zaGVldFJvd3MgPD0gYy5yZngucikgYnJlYWs7XG5cdFx0XHRcdGlmKCFjLnQpIGMudCA9IFwiXCI7XG5cdFx0XHRcdGRlbGV0ZSBjLnJmeDsgb3V0LnB1c2goYyk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogJ0JydFVpZCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqLyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiAnQnJ0QUNFbmQnICovIGJyZWFrO1xuXG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NvbW1lbnRzX2JpbihkYXRhLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgaWF1dGhvci8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3NCAvKiBCcnRCZWdpbkNvbW1lbnRzICovKTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3NiAvKiBCcnRCZWdpbkNvbW1lbnRBdXRob3JzICovKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGNvbW1lbnQpIHtcblx0XHRjb21tZW50WzFdLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdFx0aWYoaWF1dGhvci5pbmRleE9mKGMuYSkgPiAtMSkgcmV0dXJuO1xuXHRcdFx0aWF1dGhvci5wdXNoKGMuYS5zbGljZSgwLDU0KSk7XG5cdFx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3OCAvKiBCcnRDb21tZW50QXV0aG9yICovLCB3cml0ZV9CcnRDb21tZW50QXV0aG9yKGMuYSkpO1xuXHRcdH0pO1xuXHR9KTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzcgLyogQnJ0RW5kQ29tbWVudEF1dGhvcnMgKi8pO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc5IC8qIEJydEJlZ2luQ29tbWVudExpc3QgKi8pO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oY29tbWVudCkge1xuXHRcdGNvbW1lbnRbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0XHRjLmlhdXRob3IgPSBpYXV0aG9yLmluZGV4T2YoYy5hKTtcblx0XHRcdHZhciByYW5nZSA9IHtzOmRlY29kZV9jZWxsKGNvbW1lbnRbMF0pLGU6ZGVjb2RlX2NlbGwoY29tbWVudFswXSl9O1xuXHRcdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAyN0IgLyogQnJ0QmVnaW5Db21tZW50ICovLCB3cml0ZV9CcnRCZWdpbkNvbW1lbnQoW3JhbmdlLCBjXSkpO1xuXHRcdFx0aWYoYy50ICYmIGMudC5sZW5ndGggPiAwKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDI3RCAvKiBCcnRDb21tZW50VGV4dCAqLywgd3JpdGVfQnJ0Q29tbWVudFRleHQoYykpO1xuXHRcdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAyN0MgLyogQnJ0RW5kQ29tbWVudCAqLyk7XG5cdFx0XHRkZWxldGUgYy5pYXV0aG9yO1xuXHRcdH0pO1xuXHR9KTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyN0EgLyogQnJ0RW5kQ29tbWVudExpc3QgKi8pO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc1IC8qIEJydEVuZENvbW1lbnRzICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxudmFyIENUX1ZCQSA9IFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52YmFQcm9qZWN0XCI7XG5mdW5jdGlvbiBtYWtlX3ZiYV94bHMoY2ZiKSB7XG4gIHZhciBuZXdjZmIgPSBDRkIudXRpbHMuY2ZiX25ldyh7IHJvb3Q6IFwiUlwiIH0pO1xuICBjZmIuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocCwgaSkge1xuICAgIGlmIChwLnNsaWNlKC0xKSA9PT0gXCIvXCIgfHwgIXAubWF0Y2goL19WQkFfUFJPSkVDVF9DVVIvKSlcbiAgICAgIHJldHVybjtcbiAgICB2YXIgbmV3cGF0aCA9IHAucmVwbGFjZSgvXlteXFwvXSovLCBcIlJcIikucmVwbGFjZSgvXFwvX1ZCQV9QUk9KRUNUX0NVUlxcdTAwMDAqLywgXCJcIik7XG4gICAgQ0ZCLnV0aWxzLmNmYl9hZGQobmV3Y2ZiLCBuZXdwYXRoLCBjZmIuRmlsZUluZGV4W2ldLmNvbnRlbnQpO1xuICB9KTtcbiAgcmV0dXJuIENGQi53cml0ZShuZXdjZmIpO1xufVxuZnVuY3Rpb24gZmlsbF92YmFfeGxzKGNmYiwgdmJhKSB7XG4gIHZiYS5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwLCBpKSB7XG4gICAgaWYgKGkgPT0gMClcbiAgICAgIHJldHVybjtcbiAgICB2YXIgbmV3cGF0aCA9IHAucmVwbGFjZSgvW15cXC9dKltcXC9dLywgXCIvX1ZCQV9QUk9KRUNUX0NVUi9cIik7XG4gICAgaWYgKG5ld3BhdGguc2xpY2UoLTEpICE9PSBcIi9cIilcbiAgICAgIENGQi51dGlscy5jZmJfYWRkKGNmYiwgbmV3cGF0aCwgdmJhLkZpbGVJbmRleFtpXS5jb250ZW50KTtcbiAgfSk7XG59XG52YXIgVkJBRk1UUyA9IFtcInhsc2JcIiwgXCJ4bHNtXCIsIFwieGxhbVwiLCBcImJpZmY4XCIsIFwieGxhXCJdO1xuLyogbWFjcm8gYW5kIGRpYWxvZyBzaGVldCBzdHVicyAqL1xuZnVuY3Rpb24gcGFyc2VfZHNfYmluKC8qOjpkYXRhOmFueSwgb3B0cywgaWR4Om51bWJlciwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4geychdHlwZSc6J2RpYWxvZyd9OyB9XG5mdW5jdGlvbiBwYXJzZV9kc194bWwoLyo6OmRhdGE6YW55LCBvcHRzLCBpZHg6bnVtYmVyLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiB7JyF0eXBlJzonZGlhbG9nJ307IH1cbmZ1bmN0aW9uIHBhcnNlX21zX2JpbigvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidtYWNybyd9OyB9XG5mdW5jdGlvbiBwYXJzZV9tc194bWwoLyo6OmRhdGE6YW55LCBvcHRzLCBpZHg6bnVtYmVyLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiB7JyF0eXBlJzonbWFjcm8nfTsgfVxuLyogVE9ETzogaXQgd2lsbCBiZSB1c2VmdWwgdG8gcGFyc2UgdGhlIGZ1bmN0aW9uIHN0ciAqL1xudmFyIHJjX3RvX2ExID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpe1xuXHR2YXIgcmNyZWdleCA9IC8oXnxbXkEtWmEtel9dKVIoXFxbPy0/XFxkK1xcXXxbMS05XVxcZCp8KUMoXFxbPy0/XFxkK1xcXXxbMS05XVxcZCp8KSg/IVtBLVphLXowLTlfXSkvZztcblx0dmFyIHJjYmFzZS8qOkNlbGwqLyA9ICh7cjowLGM6MH0vKjphbnkqLyk7XG5cdGZ1bmN0aW9uIHJjZnVuYygkJCwkMSwkMiwkMykge1xuXHRcdHZhciBjUmVsID0gZmFsc2UsIHJSZWwgPSBmYWxzZTtcblxuXHRcdGlmKCQyLmxlbmd0aCA9PSAwKSByUmVsID0gdHJ1ZTtcblx0XHRlbHNlIGlmKCQyLmNoYXJBdCgwKSA9PSBcIltcIikgeyByUmVsID0gdHJ1ZTsgJDIgPSAkMi5zbGljZSgxLCAtMSk7IH1cblxuXHRcdGlmKCQzLmxlbmd0aCA9PSAwKSBjUmVsID0gdHJ1ZTtcblx0XHRlbHNlIGlmKCQzLmNoYXJBdCgwKSA9PSBcIltcIikgeyBjUmVsID0gdHJ1ZTsgJDMgPSAkMy5zbGljZSgxLCAtMSk7IH1cblxuXHRcdHZhciBSID0gJDIubGVuZ3RoPjA/cGFyc2VJbnQoJDIsMTApfDA6MCwgQyA9ICQzLmxlbmd0aD4wP3BhcnNlSW50KCQzLDEwKXwwOjA7XG5cblx0XHRpZihjUmVsKSBDICs9IHJjYmFzZS5jOyBlbHNlIC0tQztcblx0XHRpZihyUmVsKSBSICs9IHJjYmFzZS5yOyBlbHNlIC0tUjtcblx0XHRyZXR1cm4gJDEgKyAoY1JlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfY29sKEMpICsgKHJSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX3JvdyhSKTtcblx0fVxuXHRyZXR1cm4gZnVuY3Rpb24gcmNfdG9fYTEoZnN0ci8qOnN0cmluZyovLCBiYXNlLyo6Q2VsbCovKS8qOnN0cmluZyovIHtcblx0XHRyY2Jhc2UgPSBiYXNlO1xuXHRcdHJldHVybiBmc3RyLnJlcGxhY2UocmNyZWdleCwgcmNmdW5jKTtcblx0fTtcbn0pKCk7XG5cbnZhciBjcmVmcmVnZXggPSAvKF58W14uX0EtWjAtOV0pKFskXT8pKFtBLVpdezEsMn18W0EtV11bQS1aXXsyfXxYW0EtRV1bQS1aXXxYRltBLURdKShbJF0/KSgxMFswLTNdXFxkezR9fDEwNFswLTddXFxkezN9fDEwNDhbMC00XVxcZHsyfXwxMDQ4NVswLTZdXFxkfDEwNDg1N1swLTZdfFsxLTldXFxkezAsNX0pKD8hW18uXFwoQS1aYS16MC05XSkvZztcbnZhciBhMV90b19yYyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKXtcblx0cmV0dXJuIGZ1bmN0aW9uIGExX3RvX3JjKGZzdHIvKjpzdHJpbmcqLywgYmFzZS8qOkNlbGxBZGRyZXNzKi8pIHtcblx0XHRyZXR1cm4gZnN0ci5yZXBsYWNlKGNyZWZyZWdleCwgZnVuY3Rpb24oJDAsICQxLCAkMiwgJDMsICQ0LCAkNSkge1xuXHRcdFx0dmFyIGMgPSBkZWNvZGVfY29sKCQzKSAtICgkMiA/IDAgOiBiYXNlLmMpO1xuXHRcdFx0dmFyIHIgPSBkZWNvZGVfcm93KCQ1KSAtICgkNCA/IDAgOiBiYXNlLnIpO1xuXHRcdFx0dmFyIFIgPSAociA9PSAwID8gXCJcIiA6ICEkNCA/IFwiW1wiICsgciArIFwiXVwiIDogKHIrMSkpO1xuXHRcdFx0dmFyIEMgPSAoYyA9PSAwID8gXCJcIiA6ICEkMiA/IFwiW1wiICsgYyArIFwiXVwiIDogKGMrMSkpO1xuXHRcdFx0cmV0dXJuICQxICsgXCJSXCIgKyBSICsgXCJDXCIgKyBDO1xuXHRcdH0pO1xuXHR9O1xufSkoKTtcblxuLyogbm8gZGVmaW5lZCBuYW1lIGNhbiBjb2xsaWRlIHdpdGggYSB2YWxpZCBjZWxsIGFkZHJlc3MgQTE6WEZEMTA0ODU3NiAuLi4gZXhjZXB0IExPRzEwISAqL1xuZnVuY3Rpb24gc2hpZnRfZm9ybXVsYV9zdHIoZi8qOnN0cmluZyovLCBkZWx0YS8qOkNlbGwqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiBmLnJlcGxhY2UoY3JlZnJlZ2V4LCBmdW5jdGlvbigkMCwgJDEsICQyLCAkMywgJDQsICQ1KSB7XG5cdFx0cmV0dXJuICQxKygkMj09XCIkXCIgPyAkMiskMyA6IGVuY29kZV9jb2woZGVjb2RlX2NvbCgkMykrZGVsdGEuYykpKygkND09XCIkXCIgPyAkNCskNSA6IGVuY29kZV9yb3coZGVjb2RlX3JvdygkNSkgKyBkZWx0YS5yKSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBzaGlmdF9mb3JtdWxhX3hsc3goZi8qOnN0cmluZyovLCByYW5nZS8qOnN0cmluZyovLCBjZWxsLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgciA9IGRlY29kZV9yYW5nZShyYW5nZSksIHMgPSByLnMsIGMgPSBkZWNvZGVfY2VsbChjZWxsKTtcblx0dmFyIGRlbHRhID0ge3I6Yy5yIC0gcy5yLCBjOmMuYyAtIHMuY307XG5cdHJldHVybiBzaGlmdF9mb3JtdWxhX3N0cihmLCBkZWx0YSk7XG59XG5cbi8qIFRPRE86IHBhcnNlIGZvcm11bGEgKi9cbmZ1bmN0aW9uIGZ1enp5Zm1sYShmLyo6c3RyaW5nKi8pLyo6Ym9vbGVhbiovIHtcblx0aWYoZi5sZW5ndGggPT0gMSkgcmV0dXJuIGZhbHNlO1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gX3hsZm4oZi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIGYucmVwbGFjZSgvX3hsZm5cXC4vZyxcIlwiKTtcbn1cbmZ1bmN0aW9uIHBhcnNlcmVhZDEoYmxvYikgeyBibG9iLmwrPTE7IHJldHVybjsgfVxuXG4vKiBbTVMtWExTXSAyLjUuNTEgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbFJlbFUoYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCA9PSAxID8gMSA6IDIpO1xuXHRyZXR1cm4gW2MgJiAweDNGRkYsIChjID4+IDE0KSAmIDEsIChjID4+IDE1KSAmIDFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNSA7IFtNUy1YTFNCXSAyLjUuOTcuODkgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VBcmVhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdyA9IDI7XG5cdGlmKG9wdHMpIHtcblx0XHRpZihvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgcmV0dXJuIHBhcnNlX1JnY2VBcmVhX0JJRkYyKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0ZWxzZSBpZihvcHRzLmJpZmYgPT0gMTIpIHcgPSA0O1xuXHR9XG5cdHZhciByPWJsb2IucmVhZF9zaGlmdCh3KSwgUj1ibG9iLnJlYWRfc2hpZnQodyk7XG5cdHZhciBjPXBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHZhciBDPXBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHJldHVybiB7IHM6e3I6ciwgYzpjWzBdLCBjUmVsOmNbMV0sIHJSZWw6Y1syXX0sIGU6e3I6UiwgYzpDWzBdLCBjUmVsOkNbMV0sIHJSZWw6Q1syXX0gfTtcbn1cbi8qIEJJRkYgMi01IGVuY29kZXMgZmxhZ3MgaW4gdGhlIHJvdyBmaWVsZCAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUFyZWFfQklGRjIoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciByPXBhcnNlX0NvbFJlbFUoYmxvYiwgMiksIFI9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0dmFyIGM9YmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgQz1ibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7IHM6e3I6clswXSwgYzpjLCBjUmVsOnJbMV0sIHJSZWw6clsyXX0sIGU6e3I6UlswXSwgYzpDLCBjUmVsOlJbMV0sIHJSZWw6UlsyXX0gfTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDUgOyBbTVMtWExTQl0gMi41Ljk3LjkwICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlQXJlYVJlbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlX1JnY2VBcmVhX0JJRkYyKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciByPWJsb2IucmVhZF9zaGlmdChvcHRzLmJpZmYgPT0gMTIgPyA0IDogMiksIFI9YmxvYi5yZWFkX3NoaWZ0KG9wdHMuYmlmZiA9PSAxMiA/IDQgOiAyKTtcblx0dmFyIGM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0dmFyIEM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0cmV0dXJuIHsgczp7cjpyLCBjOmNbMF0sIGNSZWw6Y1sxXSwgclJlbDpjWzJdfSwgZTp7cjpSLCBjOkNbMF0sIGNSZWw6Q1sxXSwgclJlbDpDWzJdfSB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwOSA7IFtNUy1YTFNCXSAyLjUuOTcuOTEgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VMb2MoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUpIHJldHVybiBwYXJzZV9SZ2NlTG9jX0JJRkYyKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDEyID8gNCA6IDIpO1xuXHR2YXIgYyA9IHBhcnNlX0NvbFJlbFUoYmxvYiwgMik7XG5cdHJldHVybiB7cjpyLCBjOmNbMF0sIGNSZWw6Y1sxXSwgclJlbDpjWzJdfTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1JnY2VMb2NfQklGRjIoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciByID0gcGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7cjpyWzBdLCBjOmMsIGNSZWw6clsxXSwgclJlbDpyWzJdfTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDcsIDIuNS40NyAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUVsZkxvYyhibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4ge3I6ciwgYzpjICYgMHhGRiwgZlF1b3RlZDohIShjICYgMHg0MDAwKSwgY1JlbDpjPj4xNSwgclJlbDpjPj4xNSB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjExMSA7IFtNUy1YTFNCXSAyLjUuOTcuOTIgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUxvY1JlbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpZmYgPSBvcHRzICYmIG9wdHMuYmlmZiA/IG9wdHMuYmlmZiA6IDg7XG5cdGlmKGJpZmYgPj0gMiAmJiBiaWZmIDw9IDUpIHJldHVybiBwYXJzZV9SZ2NlTG9jUmVsX0JJRkYyKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KGJpZmYgPj0gMTIgPyA0IDogMik7XG5cdHZhciBjbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNSZWwgPSAoY2wgJiAweDQwMDApID4+IDE0LCByUmVsID0gKGNsICYgMHg4MDAwKSA+PiAxNTtcblx0Y2wgJj0gMHgzRkZGO1xuXHRpZihyUmVsID09IDEpIHdoaWxlKHIgPiAweDdGRkZGKSByIC09IDB4MTAwMDAwO1xuXHRpZihjUmVsID09IDEpIHdoaWxlKGNsID4gMHgxRkZGKSBjbCA9IGNsIC0gMHg0MDAwO1xuXHRyZXR1cm4ge3I6cixjOmNsLGNSZWw6Y1JlbCxyUmVsOnJSZWx9O1xufVxuZnVuY3Rpb24gcGFyc2VfUmdjZUxvY1JlbF9CSUZGMihibG9iLyo6OiwgbGVuZ3RoOm51bWJlciwgb3B0cyovKSB7XG5cdHZhciBybCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciByUmVsID0gKHJsICYgMHg4MDAwKSA+PiAxNSwgY1JlbCA9IChybCAmIDB4NDAwMCkgPj4gMTQ7XG5cdHJsICY9IDB4M0ZGRjtcblx0aWYoclJlbCA9PSAxICYmIHJsID49IDB4MjAwMCkgcmwgPSBybCAtIDB4NDAwMDtcblx0aWYoY1JlbCA9PSAxICYmIGMgPj0gMHg4MCkgYyA9IGMgLSAweDEwMDtcblx0cmV0dXJuIHtyOnJsLGM6YyxjUmVsOmNSZWwsclJlbDpyUmVsfTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4yNyA7IFtNUy1YTFNCXSAyLjUuOTcuMTggKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGFyZWEgPSBwYXJzZV9SZ2NlQXJlYShibG9iLCBvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSA/IDYgOiA4LCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBhcmVhXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4yOCA7IFtNUy1YTFNCXSAyLjUuOTcuMTkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWEzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpO1xuXHR2YXIgdyA9IDg7XG5cdGlmKG9wdHMpIHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDU6IGJsb2IubCArPSAxMjsgdyA9IDY7IGJyZWFrO1xuXHRcdGNhc2UgMTI6IHcgPSAxMjsgYnJlYWs7XG5cdH1cblx0dmFyIGFyZWEgPSBwYXJzZV9SZ2NlQXJlYShibG9iLCB3LCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBpeHRpLCBhcmVhXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4yOSA7IFtNUy1YTFNCXSAyLjUuOTcuMjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWFFcnIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0YmxvYi5sICs9IG9wdHMgJiYgKG9wdHMuYmlmZiA+IDgpID8gMTIgOiAob3B0cy5iaWZmIDwgOCA/IDYgOiA4KTtcblx0cmV0dXJuIFt0eXBlXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzAgOyBbTVMtWExTQl0gMi41Ljk3LjIxICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcmVhRXJyM2QoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciB3ID0gODtcblx0aWYob3B0cykgc3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgNTogYmxvYi5sICs9IDEyOyB3ID0gNjsgYnJlYWs7XG5cdFx0Y2FzZSAxMjogdyA9IDEyOyBicmVhaztcblx0fVxuXHRibG9iLmwgKz0gdztcblx0cmV0dXJuIFt0eXBlLCBpeHRpXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zMSA7IFtNUy1YTFNCXSAyLjUuOTcuMjIgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWFOKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBhcmVhID0gcGFyc2VfUmdjZUFyZWFSZWwoYmxvYiwgbGVuZ3RoIC0gMSwgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgYXJlYV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzIgOyBbTVMtWExTQl0gMi41Ljk3LjIzICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBcnJheShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHRibG9iLmwgKz0gb3B0cy5iaWZmID09IDIgPyA2IDogb3B0cy5iaWZmID09IDEyID8gMTQgOiA3O1xuXHRyZXR1cm4gW3R5cGVdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMzIDsgW01TLVhMU0JdIDIuNS45Ny4yNCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0ckJheGNlbChibG9iKSB7XG5cdHZhciBiaXRTZW1pID0gYmxvYltibG9iLmwrMV0gJiAweDAxOyAvKiAxID0gdm9sYXRpbGUgKi9cblx0dmFyIGJpdEJheGNlbCA9IDE7XG5cdGJsb2IubCArPSA0O1xuXHRyZXR1cm4gW2JpdFNlbWksIGJpdEJheGNlbF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzQgOyBbTVMtWExTQl0gMi41Ljk3LjI1ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyQ2hvb3NlKGJsb2IsIGxlbmd0aCwgb3B0cykvKjpBcnJheTxudW1iZXI+Ki8ge1xuXHRibG9iLmwgKz0yO1xuXHR2YXIgb2Zmc2V0ID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHZhciBvLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdC8qIG9mZnNldCBpcyAxIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzICovXG5cdGZvcih2YXIgaSA9IDA7IGkgPD0gb2Zmc2V0OyArK2kpIG8ucHVzaChibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM1IDsgW01TLVhMU0JdIDIuNS45Ny4yNiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0ckdvdG8oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBiaXRHb3RvID0gKGJsb2JbYmxvYi5sKzFdICYgMHhGRikgPyAxIDogMDtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbYml0R290bywgYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMildO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM2IDsgW01TLVhMU0JdIDIuNS45Ny4yNyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0cklmKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgYml0SWYgPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtiaXRJZiwgYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMildO1xufVxuXG4vKiBbTVMtWExTQl0gMi41Ljk3LjI4ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRySWZFcnJvcihibG9iKSB7XG5cdHZhciBiaXRJZiA9IChibG9iW2Jsb2IubCsxXSAmIDB4RkYpID8gMSA6IDA7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2JpdElmLCBibG9iLnJlYWRfc2hpZnQoMildO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM3IDsgW01TLVhMU0JdIDIuNS45Ny4yOSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNlbWkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBiaXRTZW1pID0gKGJsb2JbYmxvYi5sKzFdICYgMHhGRikgPyAxIDogMDtcblx0YmxvYi5sICs9IG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAzIDogNDtcblx0cmV0dXJuIFtiaXRTZW1pXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC40MCA7IFtNUy1YTFNCXSAyLjUuOTcuMzIgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTcGFjZVR5cGUoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciB0eXBlID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbdHlwZSwgY2NoXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zOCA7IFtNUy1YTFNCXSAyLjUuOTcuMzAgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTcGFjZShibG9iKSB7XG5cdGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHBhcnNlX1B0Z0F0dHJTcGFjZVR5cGUoYmxvYiwgMik7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzkgOyBbTVMtWExTQl0gMi41Ljk3LjMxICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU3BhY2VTZW1pKGJsb2IpIHtcblx0YmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gcGFyc2VfUHRnQXR0clNwYWNlVHlwZShibG9iLCAyKTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC44NCA7IFtNUy1YTFNCXSAyLjUuOTcuNjggVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHQvL3ZhciBwdGcgPSBibG9iW2Jsb2IubF0gJiAweDFGO1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubF0gJiAweDYwKT4+NTtcblx0YmxvYi5sICs9IDE7XG5cdHZhciBsb2MgPSBwYXJzZV9SZ2NlTG9jKGJsb2IsIDAsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGxvY107XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguODggOyBbTVMtWExTQl0gMi41Ljk3LjcyIFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1JlZk4oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sXSAmIDB4NjApPj41O1xuXHRibG9iLmwgKz0gMTtcblx0dmFyIGxvYyA9IHBhcnNlX1JnY2VMb2NSZWwoYmxvYiwgMCwgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgbG9jXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC44NSA7IFtNUy1YTFNCXSAyLjUuOTcuNjkgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmM2QoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sXSAmIDB4NjApPj41O1xuXHRibG9iLmwgKz0gMTtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7IC8vIFh0aUluZGV4XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID09IDUpIGJsb2IubCArPSAxMjtcblx0dmFyIGxvYyA9IHBhcnNlX1JnY2VMb2MoYmxvYiwgMCwgb3B0cyk7IC8vIFRPRE86IG9yIFJnY2VMb2NSZWxcblx0cmV0dXJuIFt0eXBlLCBpeHRpLCBsb2NdO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjIgOyBbTVMtWExTQl0gMi41Ljk3LjQ1IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0Z1bmMoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdC8vdmFyIHB0ZyA9IGJsb2JbYmxvYi5sXSAmIDB4MUY7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sXSAmIDB4NjApPj41O1xuXHRibG9iLmwgKz0gMTtcblx0dmFyIGlmdGFiID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmIDw9IDMgPyAxIDogMik7XG5cdHJldHVybiBbRnRhYkFyZ2NbaWZ0YWJdLCBGdGFiW2lmdGFiXSwgdHlwZV07XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjYzIDsgW01TLVhMU0JdIDIuNS45Ny40NiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdGdW5jVmFyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IGJsb2JbYmxvYi5sKytdO1xuXHR2YXIgY3BhcmFtcyA9IGJsb2IucmVhZF9zaGlmdCgxKSwgdGFiID0gb3B0cyAmJiBvcHRzLmJpZmYgPD0gMyA/IFsodHlwZSA9PSAweDU4ID8gLTEgOiAwKSwgYmxvYi5yZWFkX3NoaWZ0KDEpXTogcGFyc2V0YWIoYmxvYik7XG5cdHJldHVybiBbY3BhcmFtcywgKHRhYlswXSA9PT0gMCA/IEZ0YWIgOiBDZXRhYilbdGFiWzFdXV07XG59XG5cbmZ1bmN0aW9uIHBhcnNldGFiKGJsb2IpIHtcblx0cmV0dXJuIFtibG9iW2Jsb2IubCsxXT4+NywgYmxvYi5yZWFkX3NoaWZ0KDIpICYgMHg3RkZGXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC40MSA7IFtNUy1YTFNCXSAyLjUuOTcuMzMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTdW0oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSBvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMyA6IDQ7IHJldHVybjtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC41OCA7IFtNUy1YTFNCXSAyLjUuOTcuNDAgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0V4cChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sKys7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID09IDEyKSByZXR1cm4gW2Jsb2IucmVhZF9zaGlmdCg0LCAnaScpLCAwXTtcblx0dmFyIHJvdyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNvbCA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHRyZXR1cm4gW3JvdywgY29sXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC41NyA7IFtNUy1YTFNCXSAyLjUuOTcuMzkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0VycihibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gQkVycltibG9iLnJlYWRfc2hpZnQoMSldOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjYgOyBbTVMtWExTQl0gMi41Ljk3LjQ5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdJbnQoYmxvYikgeyBibG9iLmwrKzsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdCgyKTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjQyIDsgW01TLVhMU0JdIDIuNS45Ny4zNCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQm9vbChibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDEpIT09MDt9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzkgOyBbTVMtWExTQl0gMi41Ljk3LjYzICovXG5mdW5jdGlvbiBwYXJzZV9QdGdOdW0oYmxvYikgeyBibG9iLmwrKzsgcmV0dXJuIHBhcnNlX1hudW0oYmxvYiwgOCk7IH1cblxuLyogW01TLVhMU10gMi41LjE5OC44OSA7IFtNUy1YTFNCXSAyLjUuOTcuNzQgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1N0cihibG9iLCBsZW5ndGgsIG9wdHMpIHsgYmxvYi5sKys7IHJldHVybiBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgtMSwgb3B0cyk7IH1cblxuLyogW01TLVhMU10gMi41LjE5Mi4xMTIgKyAyLjUuMTkyLjExezMsNCw1LDYsN30gKi9cbi8qIFtNUy1YTFNCXSAyLjUuOTcuOTMgKyAyLjUuOTcuOXs0LDUsNiw3fSAqL1xuZnVuY3Rpb24gcGFyc2VfU2VyQXIoYmxvYiwgYmlmZi8qOm51bWJlciovKSB7XG5cdHZhciB2YWwgPSBbYmxvYi5yZWFkX3NoaWZ0KDEpXTtcblx0aWYoYmlmZiA9PSAxMikgc3dpdGNoKHZhbFswXSkge1xuXHRcdGNhc2UgMHgwMjogdmFsWzBdID0gMHgwNDsgYnJlYWs7IC8qIFNlckJvb2wgKi9cblx0XHRjYXNlIDB4MDQ6IHZhbFswXSA9IDB4MTA7IGJyZWFrOyAvKiBTZXJFcnIgKi9cblx0XHRjYXNlIDB4MDA6IHZhbFswXSA9IDB4MDE7IGJyZWFrOyAvKiBTZXJOdW0gKi9cblx0XHRjYXNlIDB4MDE6IHZhbFswXSA9IDB4MDI7IGJyZWFrOyAvKiBTZXJTdHIgKi9cblx0fVxuXHRzd2l0Y2godmFsWzBdKSB7XG5cdFx0Y2FzZSAweDA0OiAvKiBTZXJCb29sIC0tIGJvb2xlYW4gKi9cblx0XHRcdHZhbFsxXSA9IHBhcnNlYm9vbChibG9iLCAxKSA/ICdUUlVFJyA6ICdGQUxTRSc7XG5cdFx0XHRpZihiaWZmICE9IDEyKSBibG9iLmwgKz0gNzsgYnJlYWs7XG5cdFx0Y2FzZSAweDI1OiAvKiBhcHBlYXJzIHRvIGJlIGFuIGFsaWFzICovXG5cdFx0Y2FzZSAweDEwOiAvKiBTZXJFcnIgLS0gZXJyb3IgKi9cblx0XHRcdHZhbFsxXSA9IEJFcnJbYmxvYltibG9iLmxdXTtcblx0XHRcdGJsb2IubCArPSAoKGJpZmYgPT0gMTIpID8gNCA6IDgpOyBicmVhaztcblx0XHRjYXNlIDB4MDA6IC8qIFNlck5pbCAtLSBob25lc3RseSwgSSdtIG5vdCBzdXJlIGhvdyB0byByZXByb2R1Y2UgdGhpcyAqL1xuXHRcdFx0YmxvYi5sICs9IDg7IGJyZWFrO1xuXHRcdGNhc2UgMHgwMTogLyogU2VyTnVtIC0tIFhudW0gKi9cblx0XHRcdHZhbFsxXSA9IHBhcnNlX1hudW0oYmxvYiwgOCk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwMjogLyogU2VyU3RyIC0tIFhMVW5pY29kZVN0cmluZyAoPDI1NiBjaGFycykgKi9cblx0XHRcdHZhbFsxXSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgMCwge2JpZmY6YmlmZiA+IDAgJiYgYmlmZiA8IDggPyAyIDogYmlmZn0pOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgU2VyQXI6IFwiICsgdmFsWzBdKTsgLyogVW5yZWFjaGFibGUgKi9cblx0fVxuXHRyZXR1cm4gdmFsO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjYxIDsgW01TLVhMU0JdIDIuNS45Ny40NCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXh0cmFNZW0oYmxvYiwgY2NlLCBvcHRzKSB7XG5cdHZhciBjb3VudCA9IGJsb2IucmVhZF9zaGlmdCgob3B0cy5iaWZmID09IDEyKSA/IDQgOiAyKTtcblx0dmFyIG91dC8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gY291bnQ7ICsraSkgb3V0LnB1c2goKChvcHRzLmJpZmYgPT0gMTIpID8gcGFyc2VfVW5jaGVja2VkUmZYIDogcGFyc2VfUmVmOFUpKGJsb2IsIDgpKTtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC41OSA7IFtNUy1YTFNCXSAyLjUuOTcuNDEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0V4dHJhQXJyYXkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciByb3dzID0gMCwgY29scyA9IDA7XG5cdGlmKG9wdHMuYmlmZiA9PSAxMikge1xuXHRcdHJvd3MgPSBibG9iLnJlYWRfc2hpZnQoNCk7IC8vIERSd1xuXHRcdGNvbHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7IC8vIERDb2xcblx0fSBlbHNlIHtcblx0XHRjb2xzID0gMSArIGJsb2IucmVhZF9zaGlmdCgxKTsgLy9EQ29sQnl0ZVVcblx0XHRyb3dzID0gMSArIGJsb2IucmVhZF9zaGlmdCgyKTsgLy9EUndcblx0fVxuXHRpZihvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPCA4KSB7IC0tcm93czsgaWYoLS1jb2xzID09IDApIGNvbHMgPSAweDEwMDsgfVxuXHQvLyAkRmxvd0lnbm9yZVxuXHRmb3IodmFyIGkgPSAwLCBvLyo6QXJyYXk8QXJyYXk8YW55Pj4qLyA9IFtdOyBpICE9IHJvd3MgJiYgKG9baV0gPSBbXSk7ICsraSlcblx0XHRmb3IodmFyIGogPSAwOyBqICE9IGNvbHM7ICsraikgb1tpXVtqXSA9IHBhcnNlX1NlckFyKGJsb2IsIG9wdHMuYmlmZik7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljc2IDsgW01TLVhMU0JdIDIuNS45Ny42MCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnTmFtZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciB3ID0gKCFvcHRzIHx8IChvcHRzLmJpZmYgPj0gOCkpID8gNCA6IDI7XG5cdHZhciBuYW1laW5kZXggPSBibG9iLnJlYWRfc2hpZnQodyk7XG5cdHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDI6IGJsb2IubCArPSA1OyBicmVhaztcblx0XHRjYXNlIDM6IGNhc2UgNDogYmxvYi5sICs9IDg7IGJyZWFrO1xuXHRcdGNhc2UgNTogYmxvYi5sICs9IDEyOyBicmVhaztcblx0fVxuXHRyZXR1cm4gW3R5cGUsIDAsIG5hbWVpbmRleF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzcgOyBbTVMtWExTQl0gMi41Ljk3LjYxICovXG5mdW5jdGlvbiBwYXJzZV9QdGdOYW1lWChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmID09IDUpIHJldHVybiBwYXJzZV9QdGdOYW1lWF9CSUZGNShibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7IC8vIFh0aUluZGV4XG5cdHZhciBuYW1laW5kZXggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBbdHlwZSwgaXh0aSwgbmFtZWluZGV4XTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z05hbWVYX0JJRkY1KGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMiwgJ2knKTsgLy8gWHRpSW5kZXhcblx0YmxvYi5sICs9IDg7XG5cdHZhciBuYW1laW5kZXggPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAxMjtcblx0cmV0dXJuIFt0eXBlLCBpeHRpLCBuYW1laW5kZXhdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjcwIDsgW01TLVhMU0JdIDIuNS45Ny41NCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnTWVtQXJlYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdGJsb2IubCArPSAob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDMgOiA0KTtcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHRyZXR1cm4gW3R5cGUsIGNjZV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzIgOyBbTVMtWExTQl0gMi41Ljk3LjU2ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdNZW1GdW5jKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpO1xuXHRyZXR1cm4gW3R5cGUsIGNjZV07XG59XG5cblxuLyogW01TLVhMU10gMi41LjE5OC44NiA7IFtNUy1YTFNCXSAyLjUuOTcuNjkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1JlZkVycihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdGJsb2IubCArPSA0O1xuXHRpZihvcHRzLmJpZmYgPCA4KSBibG9iLmwtLTtcblx0aWYob3B0cy5iaWZmID09IDEyKSBibG9iLmwgKz0gMjtcblx0cmV0dXJuIFt0eXBlXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC44NyA7IFtNUy1YTFNCXSAyLjUuOTcuNzEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1JlZkVycjNkKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgdyA9IDQ7XG5cdGlmKG9wdHMpIHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDU6IHcgPSAxNTsgYnJlYWs7XG5cdFx0Y2FzZSAxMjogdyA9IDY7IGJyZWFrO1xuXHR9XG5cdGJsb2IubCArPSB3O1xuXHRyZXR1cm4gW3R5cGUsIGl4dGldO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjcxIDsgW01TLVhMU0JdIDIuNS45Ny41NSAqL1xudmFyIHBhcnNlX1B0Z01lbUVyciA9IHBhcnNlbm9vcDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguNzMgIDsgW01TLVhMU0JdIDIuNS45Ny41NyAqL1xudmFyIHBhcnNlX1B0Z01lbU5vTWVtID0gcGFyc2Vub29wO1xuLyogW01TLVhMU10gMi41LjE5OC45MiAqL1xudmFyIHBhcnNlX1B0Z1RibCA9IHBhcnNlbm9vcDtcblxuZnVuY3Rpb24gcGFyc2VfUHRnRWxmTG9jKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtwYXJzZV9SZ2NlRWxmTG9jKGJsb2IsIDQsIG9wdHMpXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z0VsZk5vb3AoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSA2O1xuXHRyZXR1cm4gW107XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ2ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC40NyAqL1xudmFyIHBhcnNlX1B0Z0VsZkNvbFMgPSBwYXJzZV9QdGdFbGZOb29wO1xuLyogW01TLVhMU10gMi41LjE5OC40OCAqL1xudmFyIHBhcnNlX1B0Z0VsZkNvbFNWID0gcGFyc2VfUHRnRWxmTm9vcDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguNDkgKi9cbnZhciBwYXJzZV9QdGdFbGZDb2xWID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC41MCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRWxmTGVsKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtwYXJzZXVpbnQxNihibG9iKSwgYmxvYi5yZWFkX3NoaWZ0KDIpICYgMHgwMV07XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUxICovXG52YXIgcGFyc2VfUHRnRWxmUmFkaWNhbCA9IHBhcnNlX1B0Z0VsZkxvYztcbi8qIFtNUy1YTFNdIDIuNS4xOTguNTIgKi9cbnZhciBwYXJzZV9QdGdFbGZSYWRpY2FsTGVsID0gcGFyc2VfUHRnRWxmTGVsO1xuLyogW01TLVhMU10gMi41LjE5OC41MyAqL1xudmFyIHBhcnNlX1B0Z0VsZlJhZGljYWxTID0gcGFyc2VfUHRnRWxmTm9vcDtcbi8qIFtNUy1YTFNdIDIuNS4xOTguNTQgKi9cbnZhciBwYXJzZV9QdGdFbGZSdyA9IHBhcnNlX1B0Z0VsZkxvYztcbi8qIFtNUy1YTFNdIDIuNS4xOTguNTUgKi9cbnZhciBwYXJzZV9QdGdFbGZSd1YgPSBwYXJzZV9QdGdFbGZMb2M7XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuNTIgVE9ETyAqL1xudmFyIFB0Z0xpc3RSVCA9IFtcblx0XCJEYXRhXCIsXG5cdFwiQWxsXCIsXG5cdFwiSGVhZGVyc1wiLFxuXHRcIj8/XCIsXG5cdFwiP0RhdGEyXCIsXG5cdFwiPz9cIixcblx0XCI/RGF0YUhlYWRlcnNcIixcblx0XCI/P1wiLFxuXHRcIlRvdGFsc1wiLFxuXHRcIj8/XCIsXG5cdFwiPz9cIixcblx0XCI/P1wiLFxuXHRcIj9EYXRhVG90YWxzXCIsXG5cdFwiPz9cIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiP0N1cnJlbnRcIlxuXTtcbmZ1bmN0aW9uIHBhcnNlX1B0Z0xpc3QoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSAyO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaWR4ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIEMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBydCA9IFB0Z0xpc3RSVFsoZmxhZ3MgPj4gMikgJiAweDFGXTtcblx0cmV0dXJuIHtpeHRpOiBpeHRpLCBjb2x0eXBlOihmbGFncyYweDMpLCBydDpydCwgaWR4OmlkeCwgYzpjLCBDOkN9O1xufVxuLyogW01TLVhMU10gMi41LjE5OC45MSA7IFtNUy1YTFNCXSAyLjUuOTcuNzYgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1N4TmFtZShibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbYmxvYi5yZWFkX3NoaWZ0KDQpXTtcbn1cblxuLyogW1hMU10gb2xkIHNwZWMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z1NoZWV0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gNTtcblx0YmxvYi5sICs9IDI7XG5cdGJsb2IubCArPSAob3B0cy5iaWZmID09IDIgPyAxIDogNCk7XG5cdHJldHVybiBbXCJQVEdTSEVFVFwiXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z0VuZFNoZWV0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gKG9wdHMuYmlmZiA9PSAyID8gNCA6IDUpO1xuXHRyZXR1cm4gW1wiUFRHRU5EU0hFRVRcIl07XG59XG5mdW5jdGlvbiBwYXJzZV9QdGdNZW1BcmVhTihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbU5vTWVtTihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHR5cGUgPSAoYmxvYi5yZWFkX3NoaWZ0KDEpID4+PiA1KSAmIDB4MDM7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJOb29wKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gNDtcblx0cmV0dXJuIFswLCAwXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4yNSA7IFtNUy1YTFNCXSAyLjUuOTcuMTYgKi9cbnZhciBQdGdUeXBlcyA9IHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46J1B0Z0V4cCcsIGY6cGFyc2VfUHRnRXhwIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOidQdGdUYmwnLCBmOnBhcnNlX1B0Z1RibCB9LFxuXHQvKjo6WyovMHgwMy8qOjpdKi86IHsgbjonUHRnQWRkJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOidQdGdTdWInLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDUvKjo6XSovOiB7IG46J1B0Z011bCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwNi8qOjpdKi86IHsgbjonUHRnRGl2JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogeyBuOidQdGdQb3dlcicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwOC8qOjpdKi86IHsgbjonUHRnQ29uY2F0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA5Lyo6Ol0qLzogeyBuOidQdGdMdCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwQS8qOjpdKi86IHsgbjonUHRnTGUnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiB7IG46J1B0Z0VxJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBDLyo6Ol0qLzogeyBuOidQdGdHZScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwRC8qOjpdKi86IHsgbjonUHRnR3QnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEUvKjo6XSovOiB7IG46J1B0Z05lJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBGLyo6Ol0qLzogeyBuOidQdGdJc2VjdCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjonUHRnVW5pb24nLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTEvKjo6XSovOiB7IG46J1B0Z1JhbmdlJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDEyLyo6Ol0qLzogeyBuOidQdGdVcGx1cycsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxMy8qOjpdKi86IHsgbjonUHRnVW1pbnVzJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE0Lyo6Ol0qLzogeyBuOidQdGdQZXJjZW50JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE1Lyo6Ol0qLzogeyBuOidQdGdQYXJlbicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxNi8qOjpdKi86IHsgbjonUHRnTWlzc0FyZycsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxNy8qOjpdKi86IHsgbjonUHRnU3RyJywgZjpwYXJzZV9QdGdTdHIgfSxcblx0Lyo6OlsqLzB4MUEvKjo6XSovOiB7IG46J1B0Z1NoZWV0JywgZjpwYXJzZV9QdGdTaGVldCB9LFxuXHQvKjo6WyovMHgxQi8qOjpdKi86IHsgbjonUHRnRW5kU2hlZXQnLCBmOnBhcnNlX1B0Z0VuZFNoZWV0IH0sXG5cdC8qOjpbKi8weDFDLyo6Ol0qLzogeyBuOidQdGdFcnInLCBmOnBhcnNlX1B0Z0VyciB9LFxuXHQvKjo6WyovMHgxRC8qOjpdKi86IHsgbjonUHRnQm9vbCcsIGY6cGFyc2VfUHRnQm9vbCB9LFxuXHQvKjo6WyovMHgxRS8qOjpdKi86IHsgbjonUHRnSW50JywgZjpwYXJzZV9QdGdJbnQgfSxcblx0Lyo6OlsqLzB4MUYvKjo6XSovOiB7IG46J1B0Z051bScsIGY6cGFyc2VfUHRnTnVtIH0sXG5cdC8qOjpbKi8weDIwLyo6Ol0qLzogeyBuOidQdGdBcnJheScsIGY6cGFyc2VfUHRnQXJyYXkgfSxcblx0Lyo6OlsqLzB4MjEvKjo6XSovOiB7IG46J1B0Z0Z1bmMnLCBmOnBhcnNlX1B0Z0Z1bmMgfSxcblx0Lyo6OlsqLzB4MjIvKjo6XSovOiB7IG46J1B0Z0Z1bmNWYXInLCBmOnBhcnNlX1B0Z0Z1bmNWYXIgfSxcblx0Lyo6OlsqLzB4MjMvKjo6XSovOiB7IG46J1B0Z05hbWUnLCBmOnBhcnNlX1B0Z05hbWUgfSxcblx0Lyo6OlsqLzB4MjQvKjo6XSovOiB7IG46J1B0Z1JlZicsIGY6cGFyc2VfUHRnUmVmIH0sXG5cdC8qOjpbKi8weDI1Lyo6Ol0qLzogeyBuOidQdGdBcmVhJywgZjpwYXJzZV9QdGdBcmVhIH0sXG5cdC8qOjpbKi8weDI2Lyo6Ol0qLzogeyBuOidQdGdNZW1BcmVhJywgZjpwYXJzZV9QdGdNZW1BcmVhIH0sXG5cdC8qOjpbKi8weDI3Lyo6Ol0qLzogeyBuOidQdGdNZW1FcnInLCBmOnBhcnNlX1B0Z01lbUVyciB9LFxuXHQvKjo6WyovMHgyOC8qOjpdKi86IHsgbjonUHRnTWVtTm9NZW0nLCBmOnBhcnNlX1B0Z01lbU5vTWVtIH0sXG5cdC8qOjpbKi8weDI5Lyo6Ol0qLzogeyBuOidQdGdNZW1GdW5jJywgZjpwYXJzZV9QdGdNZW1GdW5jIH0sXG5cdC8qOjpbKi8weDJBLyo6Ol0qLzogeyBuOidQdGdSZWZFcnInLCBmOnBhcnNlX1B0Z1JlZkVyciB9LFxuXHQvKjo6WyovMHgyQi8qOjpdKi86IHsgbjonUHRnQXJlYUVycicsIGY6cGFyc2VfUHRnQXJlYUVyciB9LFxuXHQvKjo6WyovMHgyQy8qOjpdKi86IHsgbjonUHRnUmVmTicsIGY6cGFyc2VfUHRnUmVmTiB9LFxuXHQvKjo6WyovMHgyRC8qOjpdKi86IHsgbjonUHRnQXJlYU4nLCBmOnBhcnNlX1B0Z0FyZWFOIH0sXG5cdC8qOjpbKi8weDJFLyo6Ol0qLzogeyBuOidQdGdNZW1BcmVhTicsIGY6cGFyc2VfUHRnTWVtQXJlYU4gfSxcblx0Lyo6OlsqLzB4MkYvKjo6XSovOiB7IG46J1B0Z01lbU5vTWVtTicsIGY6cGFyc2VfUHRnTWVtTm9NZW1OIH0sXG5cdC8qOjpbKi8weDM5Lyo6Ol0qLzogeyBuOidQdGdOYW1lWCcsIGY6cGFyc2VfUHRnTmFtZVggfSxcblx0Lyo6OlsqLzB4M0EvKjo6XSovOiB7IG46J1B0Z1JlZjNkJywgZjpwYXJzZV9QdGdSZWYzZCB9LFxuXHQvKjo6WyovMHgzQi8qOjpdKi86IHsgbjonUHRnQXJlYTNkJywgZjpwYXJzZV9QdGdBcmVhM2QgfSxcblx0Lyo6OlsqLzB4M0MvKjo6XSovOiB7IG46J1B0Z1JlZkVycjNkJywgZjpwYXJzZV9QdGdSZWZFcnIzZCB9LFxuXHQvKjo6WyovMHgzRC8qOjpdKi86IHsgbjonUHRnQXJlYUVycjNkJywgZjpwYXJzZV9QdGdBcmVhRXJyM2QgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fVxufTtcbi8qIFRoZXNlIGFyZSBkdXBsaWNhdGVkIGluIHRoZSBQdGdUeXBlcyB0YWJsZSAqL1xudmFyIFB0Z0R1cGVzID0ge1xuXHQvKjo6WyovMHg0MC8qOjpdKi86IDB4MjAsIC8qOjpbKi8weDYwLyo6Ol0qLzogMHgyMCxcblx0Lyo6OlsqLzB4NDEvKjo6XSovOiAweDIxLCAvKjo6WyovMHg2MS8qOjpdKi86IDB4MjEsXG5cdC8qOjpbKi8weDQyLyo6Ol0qLzogMHgyMiwgLyo6OlsqLzB4NjIvKjo6XSovOiAweDIyLFxuXHQvKjo6WyovMHg0My8qOjpdKi86IDB4MjMsIC8qOjpbKi8weDYzLyo6Ol0qLzogMHgyMyxcblx0Lyo6OlsqLzB4NDQvKjo6XSovOiAweDI0LCAvKjo6WyovMHg2NC8qOjpdKi86IDB4MjQsXG5cdC8qOjpbKi8weDQ1Lyo6Ol0qLzogMHgyNSwgLyo6OlsqLzB4NjUvKjo6XSovOiAweDI1LFxuXHQvKjo6WyovMHg0Ni8qOjpdKi86IDB4MjYsIC8qOjpbKi8weDY2Lyo6Ol0qLzogMHgyNixcblx0Lyo6OlsqLzB4NDcvKjo6XSovOiAweDI3LCAvKjo6WyovMHg2Ny8qOjpdKi86IDB4MjcsXG5cdC8qOjpbKi8weDQ4Lyo6Ol0qLzogMHgyOCwgLyo6OlsqLzB4NjgvKjo6XSovOiAweDI4LFxuXHQvKjo6WyovMHg0OS8qOjpdKi86IDB4MjksIC8qOjpbKi8weDY5Lyo6Ol0qLzogMHgyOSxcblx0Lyo6OlsqLzB4NEEvKjo6XSovOiAweDJBLCAvKjo6WyovMHg2QS8qOjpdKi86IDB4MkEsXG5cdC8qOjpbKi8weDRCLyo6Ol0qLzogMHgyQiwgLyo6OlsqLzB4NkIvKjo6XSovOiAweDJCLFxuXHQvKjo6WyovMHg0Qy8qOjpdKi86IDB4MkMsIC8qOjpbKi8weDZDLyo6Ol0qLzogMHgyQyxcblx0Lyo6OlsqLzB4NEQvKjo6XSovOiAweDJELCAvKjo6WyovMHg2RC8qOjpdKi86IDB4MkQsXG5cdC8qOjpbKi8weDRFLyo6Ol0qLzogMHgyRSwgLyo6OlsqLzB4NkUvKjo6XSovOiAweDJFLFxuXHQvKjo6WyovMHg0Ri8qOjpdKi86IDB4MkYsIC8qOjpbKi8weDZGLyo6Ol0qLzogMHgyRixcblx0Lyo6OlsqLzB4NTgvKjo6XSovOiAweDIyLCAvKjo6WyovMHg3OC8qOjpdKi86IDB4MjIsXG5cdC8qOjpbKi8weDU5Lyo6Ol0qLzogMHgzOSwgLyo6OlsqLzB4NzkvKjo6XSovOiAweDM5LFxuXHQvKjo6WyovMHg1QS8qOjpdKi86IDB4M0EsIC8qOjpbKi8weDdBLyo6Ol0qLzogMHgzQSxcblx0Lyo6OlsqLzB4NUIvKjo6XSovOiAweDNCLCAvKjo6WyovMHg3Qi8qOjpdKi86IDB4M0IsXG5cdC8qOjpbKi8weDVDLyo6Ol0qLzogMHgzQywgLyo6OlsqLzB4N0MvKjo6XSovOiAweDNDLFxuXHQvKjo6WyovMHg1RC8qOjpdKi86IDB4M0QsIC8qOjpbKi8weDdELyo6Ol0qLzogMHgzRFxufTtcblxudmFyIFB0ZzE4ID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjonUHRnRWxmTGVsJywgZjpwYXJzZV9QdGdFbGZMZWwgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46J1B0Z0VsZlJ3JywgZjpwYXJzZV9QdGdFbGZSdyB9LFxuXHQvKjo6WyovMHgwMy8qOjpdKi86IHsgbjonUHRnRWxmQ29sJywgZjpwYXJzZV9QdGdFbGZDb2wgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46J1B0Z0VsZlJ3VicsIGY6cGFyc2VfUHRnRWxmUndWIH0sXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogeyBuOidQdGdFbGZDb2xWJywgZjpwYXJzZV9QdGdFbGZDb2xWIH0sXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogeyBuOidQdGdFbGZSYWRpY2FsJywgZjpwYXJzZV9QdGdFbGZSYWRpY2FsIH0sXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogeyBuOidQdGdFbGZSYWRpY2FsUycsIGY6cGFyc2VfUHRnRWxmUmFkaWNhbFMgfSxcblx0Lyo6OlsqLzB4MEQvKjo6XSovOiB7IG46J1B0Z0VsZkNvbFMnLCBmOnBhcnNlX1B0Z0VsZkNvbFMgfSxcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiB7IG46J1B0Z0VsZkNvbFNWJywgZjpwYXJzZV9QdGdFbGZDb2xTViB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjonUHRnRWxmUmFkaWNhbExlbCcsIGY6cGFyc2VfUHRnRWxmUmFkaWNhbExlbCB9LFxuXHQvKjo6WyovMHgxOS8qOjpdKi86IHsgbjonUHRnTGlzdCcsIGY6cGFyc2VfUHRnTGlzdCB9LFxuXHQvKjo6WyovMHgxRC8qOjpdKi86IHsgbjonUHRnU3hOYW1lJywgZjpwYXJzZV9QdGdTeE5hbWUgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fVxufTtcbnZhciBQdGcxOSA9IHtcblx0Lyo6OlsqLzB4MDAvKjo6XSovOiB7IG46J1B0Z0F0dHJOb29wJywgZjpwYXJzZV9QdGdBdHRyTm9vcCB9LFxuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjonUHRnQXR0clNlbWknLCBmOnBhcnNlX1B0Z0F0dHJTZW1pIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOidQdGdBdHRySWYnLCBmOnBhcnNlX1B0Z0F0dHJJZiB9LFxuXHQvKjo6WyovMHgwNC8qOjpdKi86IHsgbjonUHRnQXR0ckNob29zZScsIGY6cGFyc2VfUHRnQXR0ckNob29zZSB9LFxuXHQvKjo6WyovMHgwOC8qOjpdKi86IHsgbjonUHRnQXR0ckdvdG8nLCBmOnBhcnNlX1B0Z0F0dHJHb3RvIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOidQdGdBdHRyU3VtJywgZjpwYXJzZV9QdGdBdHRyU3VtIH0sXG5cdC8qOjpbKi8weDIwLyo6Ol0qLzogeyBuOidQdGdBdHRyQmF4Y2VsJywgZjpwYXJzZV9QdGdBdHRyQmF4Y2VsIH0sXG5cdC8qOjpbKi8weDIxLyo6Ol0qLzogeyBuOidQdGdBdHRyQmF4Y2VsJywgZjpwYXJzZV9QdGdBdHRyQmF4Y2VsIH0sXG5cdC8qOjpbKi8weDQwLyo6Ol0qLzogeyBuOidQdGdBdHRyU3BhY2UnLCBmOnBhcnNlX1B0Z0F0dHJTcGFjZSB9LFxuXHQvKjo6WyovMHg0MS8qOjpdKi86IHsgbjonUHRnQXR0clNwYWNlU2VtaScsIGY6cGFyc2VfUHRnQXR0clNwYWNlU2VtaSB9LFxuXHQvKjo6WyovMHg4MC8qOjpdKi86IHsgbjonUHRnQXR0cklmRXJyb3InLCBmOnBhcnNlX1B0Z0F0dHJJZkVycm9yIH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge31cbn07XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTAzIDsgW01TLVhMU0JdIDIuNS45Ny44NyAqL1xuZnVuY3Rpb24gcGFyc2VfUmdiRXh0cmEoYmxvYiwgbGVuZ3RoLCByZ2NlLCBvcHRzKSB7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHJldHVybiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKTtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gcmdjZS5sZW5ndGg7ICsraSkge1xuXHRcdHN3aXRjaChyZ2NlW2ldWzBdKSB7XG5cdFx0XHRjYXNlICdQdGdBcnJheSc6IC8qIFB0Z0FycmF5IC0+IFB0Z0V4dHJhQXJyYXkgKi9cblx0XHRcdFx0cmdjZVtpXVsxXSA9IHBhcnNlX1B0Z0V4dHJhQXJyYXkoYmxvYiwgMCwgb3B0cyk7XG5cdFx0XHRcdG8ucHVzaChyZ2NlW2ldWzFdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdNZW1BcmVhJzogLyogUHRnTWVtQXJlYSAtPiBQdGdFeHRyYU1lbSAqL1xuXHRcdFx0XHRyZ2NlW2ldWzJdID0gcGFyc2VfUHRnRXh0cmFNZW0oYmxvYiwgcmdjZVtpXVsxXSwgb3B0cyk7XG5cdFx0XHRcdG8ucHVzaChyZ2NlW2ldWzJdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdFeHAnOiAvKiBQdGdFeHAgLT4gUHRnRXh0cmFDb2wgKi9cblx0XHRcdFx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gMTIpIHtcblx0XHRcdFx0XHRyZ2NlW2ldWzFdWzFdID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFx0XHRcdG8ucHVzaChyZ2NlW2ldWzFdKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0xpc3QnOiAvKiBUT0RPOiBQdGdMaXN0IC0+IFB0Z0V4dHJhTGlzdCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUmFkaWNhbFMnOiAvKiBUT0RPOiBQdGdFbGZSYWRpY2FsUyAtPiBQdGdFeHRyYUVsZiAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sUyc6IC8qIFRPRE86IFB0Z0VsZkNvbFMgLT4gUHRnRXh0cmFFbGYgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbFNWJzogLyogVE9ETzogUHRnRWxmQ29sU1YgLT4gUHRnRXh0cmFFbGYgKi9cblx0XHRcdFx0dGhyb3cgXCJVbnN1cHBvcnRlZCBcIiArIHJnY2VbaV1bMF07XG5cdFx0XHRkZWZhdWx0OiBicmVhaztcblx0XHR9XG5cdH1cblx0bGVuZ3RoID0gdGFyZ2V0IC0gYmxvYi5sO1xuXHQvKiBub3RlOiB0aGlzIGlzIHRlY2huaWNhbGx5IGFuIGVycm9yIGJ1dCBFeGNlbCBkaXNyZWdhcmRzICovXG5cdC8vaWYodGFyZ2V0ICE9PSBibG9iLmwgJiYgYmxvYi5sICE9PSB0YXJnZXQgLSBsZW5ndGgpIHRocm93IG5ldyBFcnJvcih0YXJnZXQgKyBcIiAhPSBcIiArIGJsb2IubCk7XG5cdGlmKGxlbmd0aCAhPT0gMCkgby5wdXNoKHBhcnNlbm9vcChibG9iLCBsZW5ndGgpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA0IDsgW01TLVhMU0JdIDIuNS45Ny44OCAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIFIsIGlkLCBwdGdzID0gW107XG5cdHdoaWxlKHRhcmdldCAhPSBibG9iLmwpIHtcblx0XHRsZW5ndGggPSB0YXJnZXQgLSBibG9iLmw7XG5cdFx0aWQgPSBibG9iW2Jsb2IubF07XG5cdFx0UiA9IFB0Z1R5cGVzW2lkXSB8fCBQdGdUeXBlc1tQdGdEdXBlc1tpZF1dO1xuXHRcdGlmKGlkID09PSAweDE4IHx8IGlkID09PSAweDE5KSBSID0gKGlkID09PSAweDE4ID8gUHRnMTggOiBQdGcxOSlbYmxvYltibG9iLmwgKyAxXV07XG5cdFx0aWYoIVIgfHwgIVIuZikgeyAvKnB0Z3MucHVzaCovKHBhcnNlbm9vcChibG9iLCBsZW5ndGgpKTsgfVxuXHRcdGVsc2UgeyBwdGdzLnB1c2goW1IubiwgUi5mKGJsb2IsIGxlbmd0aCwgb3B0cyldKTsgfVxuXHR9XG5cdHJldHVybiBwdGdzO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlfYXJyYXkoZi8qOkFycmF5PEFycmF5PHN0cmluZz4+Ki8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgZi5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB4ID0gZltpXSwgci8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdGZvcih2YXIgaiA9IDA7IGogPCB4Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHR2YXIgeSA9IHhbal07XG5cdFx0XHRpZih5KSBzd2l0Y2goeVswXSkge1xuXHRcdFx0XHQvLyBUT0RPOiBoYW5kbGUgZW1iZWRkZWQgcXVvdGVzXG5cdFx0XHRcdGNhc2UgMHgwMjpcblx0XHRcdFx0XHQvKjo6IGlmKHR5cGVvZiB5WzFdICE9ICdzdHJpbmcnKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRcdFx0ci5wdXNoKCdcIicgKyB5WzFdLnJlcGxhY2UoL1wiL2csJ1wiXCInKSArICdcIicpOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogci5wdXNoKHlbMV0pO1xuXHRcdFx0fSBlbHNlIHIucHVzaChcIlwiKTtcblx0XHR9XG5cdFx0by5wdXNoKHIuam9pbihcIixcIikpO1xuXHR9XG5cdHJldHVybiBvLmpvaW4oXCI7XCIpO1xufVxuXG4vKiBbTVMtWExTXSAyLjIuMiA7IFtNUy1YTFNCXSAyLjIuMiBUT0RPICovXG52YXIgUHRnQmluT3AgPSB7XG5cdFB0Z0FkZDogXCIrXCIsXG5cdFB0Z0NvbmNhdDogXCImXCIsXG5cdFB0Z0RpdjogXCIvXCIsXG5cdFB0Z0VxOiBcIj1cIixcblx0UHRnR2U6IFwiPj1cIixcblx0UHRnR3Q6IFwiPlwiLFxuXHRQdGdMZTogXCI8PVwiLFxuXHRQdGdMdDogXCI8XCIsXG5cdFB0Z011bDogXCIqXCIsXG5cdFB0Z05lOiBcIjw+XCIsXG5cdFB0Z1Bvd2VyOiBcIl5cIixcblx0UHRnU3ViOiBcIi1cIlxufTtcblxuLy8gTGlzdCBvZiBpbnZhbGlkIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgdGVzdGVkIGZ1cnRoZXJcbmZ1bmN0aW9uIGZvcm11bGFfcXVvdGVfc2hlZXRfbmFtZShzbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYoIXNuYW1lICYmICEob3B0cyAmJiBvcHRzLmJpZmYgPD0gNSAmJiBvcHRzLmJpZmYgPj0gMikpIHRocm93IG5ldyBFcnJvcihcImVtcHR5IHNoZWV0IG5hbWVcIik7XG5cdGlmICgvW15cXHdcXHU0RTAwLVxcdTlGRkZcXHUzMDQwLVxcdTMwRkZdLy50ZXN0KHNuYW1lKSkgcmV0dXJuIFwiJ1wiICsgc25hbWUgKyBcIidcIjtcblx0cmV0dXJuIHNuYW1lO1xufVxuZnVuY3Rpb24gZ2V0X2l4dGlfcmF3KHN1cGJvb2tzLCBpeHRpLyo6bnVtYmVyKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighc3VwYm9va3MpIHJldHVybiBcIlNIMzNUSlNFUlIwXCI7XG5cdGlmKG9wdHMuYmlmZiA+IDggJiYgKCFzdXBib29rcy5YVEkgfHwgIXN1cGJvb2tzLlhUSVtpeHRpXSkpIHJldHVybiBzdXBib29rcy5TaGVldE5hbWVzW2l4dGldO1xuXHRpZighc3VwYm9va3MuWFRJKSByZXR1cm4gXCJTSDMzVEpTRVJSNlwiO1xuXHR2YXIgWFRJID0gc3VwYm9va3MuWFRJW2l4dGldO1xuXHRpZihvcHRzLmJpZmYgPCA4KSB7XG5cdFx0aWYoaXh0aSA+IDEwMDAwKSBpeHRpLT0gNjU1MzY7XG5cdFx0aWYoaXh0aSA8IDApIGl4dGkgPSAtaXh0aTtcblx0XHRyZXR1cm4gaXh0aSA9PSAwID8gXCJcIiA6IHN1cGJvb2tzLlhUSVtpeHRpIC0gMV07XG5cdH1cblx0aWYoIVhUSSkgcmV0dXJuIFwiU0gzM1RKU0VSUjFcIjtcblx0dmFyIG8gPSBcIlwiO1xuXHRpZihvcHRzLmJpZmYgPiA4KSBzd2l0Y2goc3VwYm9va3NbWFRJWzBdXVswXSkge1xuXHRcdGNhc2UgMHgwMTY1OiAvKiAnQnJ0U3VwU2VsZicgKi9cblx0XHRcdG8gPSBYVElbMV0gPT0gLTEgPyBcIiNSRUZcIiA6IHN1cGJvb2tzLlNoZWV0TmFtZXNbWFRJWzFdXTtcblx0XHRcdHJldHVybiBYVElbMV0gPT0gWFRJWzJdID8gbyA6IG8gKyBcIjpcIiArIHN1cGJvb2tzLlNoZWV0TmFtZXNbWFRJWzJdXTtcblx0XHRjYXNlIDB4MDE2NjogLyogJ0JydFN1cFNhbWUnICovXG5cdFx0XHRpZihvcHRzLlNJRCAhPSBudWxsKSByZXR1cm4gc3VwYm9va3MuU2hlZXROYW1lc1tvcHRzLlNJRF07XG5cdFx0XHRyZXR1cm4gXCJTSDMzVEpTU0FNRVwiICsgc3VwYm9va3NbWFRJWzBdXVswXTtcblx0XHRjYXNlIDB4MDE2MzogLyogJ0JydFN1cEJvb2tTcmMnICovXG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0ZGVmYXVsdDogcmV0dXJuIFwiU0gzM1RKU1NSQ1wiICsgc3VwYm9va3NbWFRJWzBdXVswXTtcblx0fVxuXHRzd2l0Y2goc3VwYm9va3NbWFRJWzBdXVswXVswXSkge1xuXHRcdGNhc2UgMHgwNDAxOlxuXHRcdFx0byA9IFhUSVsxXSA9PSAtMSA/IFwiI1JFRlwiIDogKHN1cGJvb2tzLlNoZWV0TmFtZXNbWFRJWzFdXSB8fCBcIlNIMzNUSlNFUlIzXCIpO1xuXHRcdFx0cmV0dXJuIFhUSVsxXSA9PSBYVElbMl0gPyBvIDogbyArIFwiOlwiICsgc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMl1dO1xuXHRcdGNhc2UgMHgzQTAxOiByZXR1cm4gc3VwYm9va3NbWFRJWzBdXS5zbGljZSgxKS5tYXAoZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gbmFtZS5OYW1lOyB9KS5qb2luKFwiOztcIik7IC8vcmV0dXJuIFwiU0gzM1RKU0VSUjhcIjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYoIXN1cGJvb2tzW1hUSVswXV1bMF1bM10pIHJldHVybiBcIlNIMzNUSlNFUlIyXCI7XG5cdFx0XHRvID0gWFRJWzFdID09IC0xID8gXCIjUkVGXCIgOiAoc3VwYm9va3NbWFRJWzBdXVswXVszXVtYVElbMV1dIHx8IFwiU0gzM1RKU0VSUjRcIik7XG5cdFx0XHRyZXR1cm4gWFRJWzFdID09IFhUSVsyXSA/IG8gOiBvICsgXCI6XCIgKyBzdXBib29rc1tYVElbMF1dWzBdWzNdW1hUSVsyXV07XG5cdH1cbn1cbmZ1bmN0aW9uIGdldF9peHRpKHN1cGJvb2tzLCBpeHRpLyo6bnVtYmVyKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgaXh0aXJhdyA9IGdldF9peHRpX3JhdyhzdXBib29rcywgaXh0aSwgb3B0cyk7XG5cdHJldHVybiBpeHRpcmF3ID09IFwiI1JFRlwiID8gaXh0aXJhdyA6IGZvcm11bGFfcXVvdGVfc2hlZXRfbmFtZShpeHRpcmF3LCBvcHRzKTtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEvKkFycmF5PGFueT4qLywgcmFuZ2UsIGNlbGwvKjphbnkqLywgc3VwYm9va3MsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgYmlmZiA9IChvcHRzICYmIG9wdHMuYmlmZikgfHwgODtcblx0dmFyIF9yYW5nZSA9IC8qcmFuZ2UgIT0gbnVsbCA/IHJhbmdlIDoqLyB7czp7YzowLCByOjB9LGU6e2M6MCwgcjowfX07XG5cdHZhciBzdGFjay8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBlMSwgZTIsIC8qOjp0eXBlLCovIGMvKjpDZWxsQWRkcmVzcyovLCBpeHRpPTAsIG5hbWVpZHg9MCwgciwgc25hbWU9XCJcIjtcblx0aWYoIWZvcm11bGFbMF0gfHwgIWZvcm11bGFbMF1bMF0pIHJldHVybiBcIlwiO1xuXHR2YXIgbGFzdF9zcCA9IC0xLCBzcCA9IFwiXCI7XG5cdGZvcih2YXIgZmYgPSAwLCBmZmxlbiA9IGZvcm11bGFbMF0ubGVuZ3RoOyBmZiA8IGZmbGVuOyArK2ZmKSB7XG5cdFx0dmFyIGYgPSBmb3JtdWxhWzBdW2ZmXTtcblx0XHRzd2l0Y2goZlswXSkge1xuXHRcdFx0Y2FzZSAnUHRnVW1pbnVzJzogLyogW01TLVhMU10gMi41LjE5OC45MyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiLVwiICsgc3RhY2sucG9wKCkpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1VwbHVzJzogLyogW01TLVhMU10gMi41LjE5OC45NSAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiK1wiICsgc3RhY2sucG9wKCkpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1BlcmNlbnQnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjgxICovXG5cdFx0XHRcdHN0YWNrLnB1c2goc3RhY2sucG9wKCkgKyBcIiVcIik7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBZGQnOiAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjI2ICovXG5cdFx0XHRjYXNlICdQdGdDb25jYXQnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQzICovXG5cdFx0XHRjYXNlICdQdGdEaXYnOiAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjQ1ICovXG5cdFx0XHRjYXNlICdQdGdFcSc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjU2ICovXG5cdFx0XHRjYXNlICdQdGdHZSc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjY0ICovXG5cdFx0XHRjYXNlICdQdGdHdCc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjY1ICovXG5cdFx0XHRjYXNlICdQdGdMZSc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjY4ICovXG5cdFx0XHRjYXNlICdQdGdMdCc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjY5ICovXG5cdFx0XHRjYXNlICdQdGdNdWwnOiAgICAvKiBbTVMtWExTXSAyLjUuMTk4Ljc1ICovXG5cdFx0XHRjYXNlICdQdGdOZSc6ICAgICAvKiBbTVMtWExTXSAyLjUuMTk4Ljc4ICovXG5cdFx0XHRjYXNlICdQdGdQb3dlcic6ICAvKiBbTVMtWExTXSAyLjUuMTk4LjgyICovXG5cdFx0XHRjYXNlICdQdGdTdWInOiAgICAvKiBbTVMtWExTXSAyLjUuMTk4LjkwICovXG5cdFx0XHRcdGUxID0gc3RhY2sucG9wKCk7IGUyID0gc3RhY2sucG9wKCk7XG5cdFx0XHRcdGlmKGxhc3Rfc3AgPj0gMCkge1xuXHRcdFx0XHRcdHN3aXRjaChmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzBdKSB7XG5cdFx0XHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdHNwID0gZmlsbChcIiBcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0XHRzcCA9IGZpbGwoXCJcXHJcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3AgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlIFwiICsgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGUyID0gZTIgKyBzcDtcblx0XHRcdFx0XHRsYXN0X3NwID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RhY2sucHVzaChlMitQdGdCaW5PcFtmWzBdXStlMSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdJc2VjdCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjcgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0c3RhY2sucHVzaChlMitcIiBcIitlMSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnVW5pb24nOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljk0ICovXG5cdFx0XHRcdGUxID0gc3RhY2sucG9wKCk7IGUyID0gc3RhY2sucG9wKCk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZTIrXCIsXCIrZTEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1JhbmdlJzogLyogW01TLVhMU10gMi41LjE5OC44MyAqL1xuXHRcdFx0XHRlMSA9IHN0YWNrLnBvcCgpOyBlMiA9IHN0YWNrLnBvcCgpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1wiOlwiK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0F0dHJDaG9vc2UnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM0ICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXR0ckdvdG8nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM1ICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXR0cklmJzogLyogW01TLVhMU10gMi41LjE5OC4zNiAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0F0dHJJZkVycm9yJzogLyogW01TLVhMU0JdIDIuNS45Ny4yOCAqL1xuXHRcdFx0XHRicmVhaztcblxuXG5cdFx0XHRjYXNlICdQdGdSZWYnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg0ICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9jID0gc2hpZnRfY2VsbF94bHMoKGZbMV1bMV0vKjphbnkqLyksIF9yYW5nZSwgb3B0cyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZW5jb2RlX2NlbGxfeGxzKGMsIGJpZmYpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdSZWZOJzogLyogW01TLVhMU10gMi41LjE5OC44OCAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovYyA9IGNlbGwgPyBzaGlmdF9jZWxsX3hscygoZlsxXVsxXS8qOmFueSovKSwgY2VsbCwgb3B0cykgOiAoZlsxXVsxXS8qOmFueSovKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfY2VsbF94bHMoYywgYmlmZikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1JlZjNkJzogLyogW01TLVhMU10gMi41LjE5OC44NSAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovaXh0aSA9IC8qOjpOdW1iZXIoKi9mWzFdWzFdLyo6OikqLzsgYyA9IHNoaWZ0X2NlbGxfeGxzKChmWzFdWzJdLyo6YW55Ki8pLCBfcmFuZ2UsIG9wdHMpO1xuXHRcdFx0XHRzbmFtZSA9IGdldF9peHRpKHN1cGJvb2tzLCBpeHRpLCBvcHRzKTtcblx0XHRcdFx0dmFyIHcgPSBzbmFtZTsgLyogSUU5IGZhaWxzIG9uIGRlZmluZWQgbmFtZXMgKi8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdFx0XHRzdGFjay5wdXNoKHNuYW1lICsgXCIhXCIgKyBlbmNvZGVfY2VsbF94bHMoYywgYmlmZikpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnRnVuYyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjIgKi9cblx0XHRcdGNhc2UgJ1B0Z0Z1bmNWYXInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjYzICovXG5cdFx0XHRcdC8qIGZbMV0gPSBbYXJnYywgZnVuYywgdHlwZV0gKi9cblx0XHRcdFx0dmFyIGFyZ2MvKjpudW1iZXIqLyA9IChmWzFdWzBdLyo6YW55Ki8pLCBmdW5jLyo6c3RyaW5nKi8gPSAoZlsxXVsxXS8qOmFueSovKTtcblx0XHRcdFx0aWYoIWFyZ2MpIGFyZ2MgPSAwO1xuXHRcdFx0XHRhcmdjICY9IDB4N0Y7XG5cdFx0XHRcdHZhciBhcmdzID0gYXJnYyA9PSAwID8gW10gOiBzdGFjay5zbGljZSgtYXJnYyk7XG5cdFx0XHRcdHN0YWNrLmxlbmd0aCAtPSBhcmdjO1xuXHRcdFx0XHRpZihmdW5jID09PSAnVXNlcicpIGZ1bmMgPSBhcmdzLnNoaWZ0KCk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZnVuYyArIFwiKFwiICsgYXJncy5qb2luKFwiLFwiKSArIFwiKVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0Jvb2wnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQyICovXG5cdFx0XHRcdHN0YWNrLnB1c2goZlsxXSA/IFwiVFJVRVwiIDogXCJGQUxTRVwiKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdJbnQnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjY2ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goLyo6OlN0cmluZygqL2ZbMV0vKjo6KSovKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdOdW0nOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljc5IFRPRE86IHByZWNpc2lvbj8gKi9cblx0XHRcdFx0c3RhY2sucHVzaChTdHJpbmcoZlsxXSkpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1N0cic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODkgKi9cblx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0c3RhY2sucHVzaCgnXCInICsgZlsxXS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpICsgJ1wiJyk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnRXJyJzogLyogW01TLVhMU10gMi41LjE5OC41NyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKC8qOjpTdHJpbmcoKi9mWzFdLyo6OikqLyk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXJlYU4nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjMxIFRPRE8gKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL3IgPSBzaGlmdF9yYW5nZV94bHMoZlsxXVsxXSwgY2VsbCA/IHtzOmNlbGx9IDogX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfcmFuZ2VfeGxzKChyLyo6YW55Ki8pLCBvcHRzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXJlYSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMjcgVE9ETzogZml4ZWQgcG9pbnRzICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9yID0gc2hpZnRfcmFuZ2VfeGxzKGZbMV1bMV0sIF9yYW5nZSwgb3B0cyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZW5jb2RlX3JhbmdlX3hscygoci8qOmFueSovKSwgb3B0cykpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0FyZWEzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMjggVE9ETyAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovaXh0aSA9IC8qOjpOdW1iZXIoKi9mWzFdWzFdLyo6OikqLzsgciA9IGZbMV1bMl07XG5cdFx0XHRcdHNuYW1lID0gZ2V0X2l4dGkoc3VwYm9va3MsIGl4dGksIG9wdHMpO1xuXHRcdFx0XHRzdGFjay5wdXNoKHNuYW1lICsgXCIhXCIgKyBlbmNvZGVfcmFuZ2VfeGxzKChyLyo6YW55Ki8pLCBvcHRzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXR0clN1bSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDEgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIlNVTShcIiArIHN0YWNrLnBvcCgpICsgXCIpXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXR0ckJheGNlbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzMgKi9cblx0XHRcdGNhc2UgJ1B0Z0F0dHJTZW1pJzogLyogW01TLVhMU10gMi41LjE5OC4zNyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTmFtZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzYgOyBbTVMtWExTQl0gMi41Ljk3LjYwIFRPRE86IHJldmlzaW9ucyAqL1xuXHRcdFx0XHQvKiBmWzFdID0gdHlwZSwgMCwgbmFtZWluZGV4ICovXG5cdFx0XHRcdG5hbWVpZHggPSAoZlsxXVsyXS8qOmFueSovKTtcblx0XHRcdFx0dmFyIGxibCA9IChzdXBib29rcy5uYW1lc3x8W10pW25hbWVpZHgtMV0gfHwgKHN1cGJvb2tzWzBdfHxbXSlbbmFtZWlkeF07XG5cdFx0XHRcdHZhciBuYW1lID0gbGJsID8gbGJsLk5hbWUgOiBcIlNIMzNUSlNOQU1FXCIgKyBTdHJpbmcobmFtZWlkeCk7XG5cdFx0XHRcdC8qIFtNUy1YTFNCXSAyLjUuOTcuMTAgRnRhYiAtLSBsYXN0IHZlcmlmaWVkIDIwMjIwMjA0ICovXG5cdFx0XHRcdGlmKG5hbWUgJiYgbmFtZS5zbGljZSgwLDYpID09IFwiX3hsZm4uXCIgJiYgIW9wdHMueGxmbikgbmFtZSA9IG5hbWUuc2xpY2UoNik7XG5cdFx0XHRcdHN0YWNrLnB1c2gobmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdOYW1lWCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzcgOyBbTVMtWExTQl0gMi41Ljk3LjYxIFRPRE86IHJldmlzaW9ucyAqL1xuXHRcdFx0XHQvKiBmWzFdID0gdHlwZSwgaXh0aSwgbmFtZWluZGV4ICovXG5cdFx0XHRcdHZhciBib29raWR4Lyo6bnVtYmVyKi8gPSAoZlsxXVsxXS8qOmFueSovKTsgbmFtZWlkeCA9IChmWzFdWzJdLyo6YW55Ki8pOyB2YXIgZXh0ZXJuYm9vaztcblx0XHRcdFx0LyogVE9ETzogUHJvcGVybHkgaGFuZGxlIG1pc3NpbmcgdmFsdWVzIC0tIHRoaXMgc2hvdWxkIGJlIHVzaW5nIGdldF9peHRpX3JhdyBwcmltYXJpbHkgKi9cblx0XHRcdFx0aWYob3B0cy5iaWZmIDw9IDUpIHtcblx0XHRcdFx0XHRpZihib29raWR4IDwgMCkgYm9va2lkeCA9IC1ib29raWR4O1xuXHRcdFx0XHRcdGlmKHN1cGJvb2tzW2Jvb2tpZHhdKSBleHRlcm5ib29rID0gc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFyIG8gPSBcIlwiO1xuXHRcdFx0XHRcdGlmKCgoc3VwYm9va3NbYm9va2lkeF18fFtdKVswXXx8W10pWzBdID09IDB4M0EwMSl7LyogZW1wdHkgKi99XG5cdFx0XHRcdFx0ZWxzZSBpZigoKHN1cGJvb2tzW2Jvb2tpZHhdfHxbXSlbMF18fFtdKVswXSA9PSAweDA0MDEpe1xuXHRcdFx0XHRcdFx0aWYoc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0gJiYgc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0uaXRhYiA+IDApIHtcblx0XHRcdFx0XHRcdFx0byA9IHN1cGJvb2tzLlNoZWV0TmFtZXNbc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0uaXRhYi0xXSArIFwiIVwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIG8gPSBzdXBib29rcy5TaGVldE5hbWVzW25hbWVpZHgtMV0rIFwiIVwiO1xuXHRcdFx0XHRcdGlmKHN1cGJvb2tzW2Jvb2tpZHhdICYmIHN1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdKSBvICs9IHN1cGJvb2tzW2Jvb2tpZHhdW25hbWVpZHhdLk5hbWU7XG5cdFx0XHRcdFx0ZWxzZSBpZihzdXBib29rc1swXSAmJiBzdXBib29rc1swXVtuYW1laWR4XSkgbyArPSBzdXBib29rc1swXVtuYW1laWR4XS5OYW1lO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dmFyIGl4dGlkYXRhID0gKGdldF9peHRpX3JhdyhzdXBib29rcywgYm9va2lkeCwgb3B0cyl8fFwiXCIpLnNwbGl0KFwiOztcIik7XG5cdFx0XHRcdFx0XHRpZihpeHRpZGF0YVtuYW1laWR4IC0gMV0pIG8gPSBpeHRpZGF0YVtuYW1laWR4IC0gMV07IC8vIFRPRE86IGNvbmZpcm0gdGhpcyBpcyBjb3JyZWN0XG5cdFx0XHRcdFx0XHRlbHNlIG8gKz0gXCJTSDMzVEpTRVJSWFwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdGFjay5wdXNoKG8pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKCFleHRlcm5ib29rKSBleHRlcm5ib29rID0ge05hbWU6IFwiU0gzM1RKU0VSUllcIn07XG5cdFx0XHRcdHN0YWNrLnB1c2goZXh0ZXJuYm9vay5OYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z1BhcmVuJzogLyogW01TLVhMU10gMi41LjE5OC44MCAqL1xuXHRcdFx0XHR2YXIgbHAgPSAnKCcsIHJwID0gJyknO1xuXHRcdFx0XHRpZihsYXN0X3NwID49IDApIHtcblx0XHRcdFx0XHRzcCA9IFwiXCI7XG5cdFx0XHRcdFx0c3dpdGNoKGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMF0pIHtcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDI6IGxwID0gZmlsbChcIiBcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBscDsgYnJlYWs7XG5cdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0Y2FzZSAzOiBscCA9IGZpbGwoXCJcXHJcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBscDsgYnJlYWs7XG5cdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0Y2FzZSA0OiBycCA9IGZpbGwoXCIgXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pICsgcnA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdGNhc2UgNTogcnAgPSBmaWxsKFwiXFxyXCIsIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMV0pICsgcnA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSBcIiArIGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRsYXN0X3NwID0gLTE7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RhY2sucHVzaChscCArIHN0YWNrLnBvcCgpICsgcnApOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnUmVmRXJyJzogLyogW01TLVhMU10gMi41LjE5OC44NiAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKCcjUkVGIScpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnUmVmRXJyM2QnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg3ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goJyNSRUYhJyk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdFeHAnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjU4IFRPRE8gKi9cblx0XHRcdFx0YyA9IHtjOihmWzFdWzFdLyo6YW55Ki8pLHI6KGZbMV1bMF0vKjphbnkqLyl9O1xuXHRcdFx0XHR2YXIgcSA9ICh7YzogY2VsbC5jLCByOmNlbGwucn0vKjphbnkqLyk7XG5cdFx0XHRcdGlmKHN1cGJvb2tzLnNoYXJlZGZbZW5jb2RlX2NlbGwoYyldKSB7XG5cdFx0XHRcdFx0dmFyIHBhcnNlZGYgPSAoc3VwYm9va3Muc2hhcmVkZltlbmNvZGVfY2VsbChjKV0pO1xuXHRcdFx0XHRcdHN0YWNrLnB1c2goc3RyaW5naWZ5X2Zvcm11bGEocGFyc2VkZiwgX3JhbmdlLCBxLCBzdXBib29rcywgb3B0cykpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhciBmbmQgPSBmYWxzZTtcblx0XHRcdFx0XHRmb3IoZTE9MDtlMSE9c3VwYm9va3MuYXJyYXlmLmxlbmd0aDsgKytlMSkge1xuXHRcdFx0XHRcdFx0LyogVE9ETzogc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlIHJhbmdlX2hhcyAqL1xuXHRcdFx0XHRcdFx0ZTIgPSBzdXBib29rcy5hcnJheWZbZTFdO1xuXHRcdFx0XHRcdFx0aWYoYy5jIDwgZTJbMF0ucy5jIHx8IGMuYyA+IGUyWzBdLmUuYykgY29udGludWU7XG5cdFx0XHRcdFx0XHRpZihjLnIgPCBlMlswXS5zLnIgfHwgYy5yID4gZTJbMF0uZS5yKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdHN0YWNrLnB1c2goc3RyaW5naWZ5X2Zvcm11bGEoZTJbMV0sIF9yYW5nZSwgcSwgc3VwYm9va3MsIG9wdHMpKTtcblx0XHRcdFx0XHRcdGZuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoIWZuZCkgc3RhY2sucHVzaCgvKjo6U3RyaW5nKCovZlsxXS8qOjopKi8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBcnJheSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzIgVE9ETyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwie1wiICsgc3RyaW5naWZ5X2FycmF5KC8qOjooKi9mWzFdLyo6OiA6YW55KSovKSArIFwifVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z01lbUFyZWEnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjcwIFRPRE86IGNvbmZpcm0gdGhpcyBpcyBhIG5vbi1kaXNwbGF5ICovXG5cdFx0XHRcdC8vc3RhY2sucHVzaChcIihcIiArIGZbMl0ubWFwKGVuY29kZV9yYW5nZSkuam9pbihcIixcIikgKyBcIilcIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBdHRyU3BhY2UnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM4ICovXG5cdFx0XHRjYXNlICdQdGdBdHRyU3BhY2VTZW1pJzogLyogW01TLVhMU10gMi41LjE5OC4zOSAqL1xuXHRcdFx0XHRsYXN0X3NwID0gZmY7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdUYmwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjkyIFRPRE8gKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z01lbUVycic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzEgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z01pc3NBcmcnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljc0ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCJcIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBcmVhRXJyJzogLyogW01TLVhMU10gMi41LjE5OC4yOSAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiI1JFRiFcIik7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBcmVhRXJyM2QnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjMwICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCIjUkVGIVwiKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0xpc3QnOiAvKiBbTVMtWExTQl0gMi41Ljk3LjUyICovXG5cdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdHN0YWNrLnB1c2goXCJUYWJsZVwiICsgZlsxXS5pZHggKyBcIlsjXCIgKyBmWzFdLnJ0ICsgXCJdXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtQXJlYU4nOlxuXHRcdFx0Y2FzZSAnUHRnTWVtTm9NZW1OJzpcblx0XHRcdGNhc2UgJ1B0Z0F0dHJOb29wJzpcblx0XHRcdGNhc2UgJ1B0Z1NoZWV0Jzpcblx0XHRcdGNhc2UgJ1B0Z0VuZFNoZWV0Jzpcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z01lbUZ1bmMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjcyIFRPRE8gKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdNZW1Ob01lbSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzMgVE9ETyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sJzogLyogW01TLVhMU10gMi41LjE5OC40NiAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sUyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDcgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkNvbFNWJzogLyogW01TLVhMU10gMi41LjE5OC40OCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sVic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDkgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZkxlbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTAgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJhZGljYWwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjUxICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsTGVsJzogLyogW01TLVhMU10gMi41LjE5OC41MiAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUmFkaWNhbFMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjUzICovXG5cdFx0XHRjYXNlICdQdGdFbGZSdyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTQgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJ3Vic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTUgKi9cblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgRUxGc1wiKTtcblxuXHRcdFx0Y2FzZSAnUHRnU3hOYW1lJzogLyogW01TLVhMU10gMi41LjE5OC45MSBUT0RPIC0tIGZpbmQgYSB0ZXN0IGNhc2UgKi9cblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogJyArIFN0cmluZyhmKSk7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBGb3JtdWxhIFRva2VuOiAnICsgU3RyaW5nKGYpKTtcblx0XHR9XG5cdFx0dmFyIFB0Z05vbkRpc3AgPSBbJ1B0Z0F0dHJTcGFjZScsICdQdGdBdHRyU3BhY2VTZW1pJywgJ1B0Z0F0dHJHb3RvJ107XG5cdFx0aWYob3B0cy5iaWZmICE9IDMpIGlmKGxhc3Rfc3AgPj0gMCAmJiBQdGdOb25EaXNwLmluZGV4T2YoZm9ybXVsYVswXVtmZl1bMF0pID09IC0xKSB7XG5cdFx0XHRmID0gZm9ybXVsYVswXVtsYXN0X3NwXTtcblx0XHRcdHZhciBfbGVmdCA9IHRydWU7XG5cdFx0XHRzd2l0Y2goZlsxXVswXSkge1xuXHRcdFx0XHQvKiBub3RlOiBzb21lIGJhZCBYTFNCIGZpbGVzIG9taXQgdGhlIFB0Z1BhcmVuICovXG5cdFx0XHRcdGNhc2UgNDogX2xlZnQgPSBmYWxzZTtcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRzcCA9IGZpbGwoXCIgXCIsIGZbMV1bMV0pOyBicmVhaztcblx0XHRcdFx0Y2FzZSA1OiBfbGVmdCA9IGZhbHNlO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdHNwID0gZmlsbChcIlxcclwiLCBmWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0c3AgPSBcIlwiO1xuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSBcIiArIGZbMV1bMF0pO1xuXHRcdFx0fVxuXHRcdFx0c3RhY2sucHVzaCgoX2xlZnQgPyBzcCA6IFwiXCIpICsgc3RhY2sucG9wKCkgKyAoX2xlZnQgPyBcIlwiIDogc3ApKTtcblx0XHRcdGxhc3Rfc3AgPSAtMTtcblx0XHR9XG5cdH1cblx0aWYoc3RhY2subGVuZ3RoID4gMSAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiYmFkIGZvcm11bGEgc3RhY2tcIik7XG5cdHJldHVybiBzdGFja1swXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xIFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0FycmF5UGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMvKjo6LCByZWYqLykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoLCBsZW4gPSBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyO1xuXHR2YXIgcmdjYiwgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KGxlbik7IC8vIGxlbmd0aCBvZiByZ2NlXG5cdGlmKGNjZSA9PSAweEZGRkYpIHJldHVybiBbW10scGFyc2Vub29wKGJsb2IsIGxlbmd0aC0yKV07XG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShibG9iLCBjY2UsIG9wdHMpO1xuXHRpZihsZW5ndGggIT09IGNjZSArIGxlbikgcmdjYiA9IHBhcnNlX1JnYkV4dHJhKGJsb2IsIGxlbmd0aCAtIGNjZSAtIGxlbiwgcmdjZSwgb3B0cyk7XG5cdGJsb2IubCA9IHRhcmdldDtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zIFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1hMU0NlbGxQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoLCBsZW4gPSBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyO1xuXHR2YXIgcmdjYiwgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KGxlbik7IC8vIGxlbmd0aCBvZiByZ2NlXG5cdGlmKGNjZSA9PSAweEZGRkYpIHJldHVybiBbW10scGFyc2Vub29wKGJsb2IsIGxlbmd0aC0yKV07XG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShibG9iLCBjY2UsIG9wdHMpO1xuXHRpZihsZW5ndGggIT09IGNjZSArIGxlbikgcmdjYiA9IHBhcnNlX1JnYkV4dHJhKGJsb2IsIGxlbmd0aCAtIGNjZSAtIGxlbiwgcmdjZSwgb3B0cyk7XG5cdGJsb2IubCA9IHRhcmdldDtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4yMSAqL1xuZnVuY3Rpb24gcGFyc2VfTmFtZVBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzLCBjY2UpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdHZhciByZ2NiO1xuXHRpZih0YXJnZXQgIT09IGJsb2IubCkgcmdjYiA9IHBhcnNlX1JnYkV4dHJhKGJsb2IsIHRhcmdldCAtIGJsb2IubCwgcmdjZSwgb3B0cyk7XG5cdHJldHVybiBbcmdjZSwgcmdjYl07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTE4IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1NoYXJlZFBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciByZ2NiLCBjY2UgPSBibG9iLnJlYWRfc2hpZnQoMik7IC8vIGxlbmd0aCBvZiByZ2NlXG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShibG9iLCBjY2UsIG9wdHMpO1xuXHRpZihjY2UgPT0gMHhGRkZGKSByZXR1cm4gW1tdLHBhcnNlbm9vcChibG9iLCBsZW5ndGgtMildO1xuXHRpZihsZW5ndGggIT09IGNjZSArIDIpIHJnY2IgPSBwYXJzZV9SZ2JFeHRyYShibG9iLCB0YXJnZXQgLSBjY2UgLSAyLCByZ2NlLCBvcHRzKTtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU10gMi41LjEzMyBUT0RPOiBob3cgdG8gZW1pdCBlbXB0eSBzdHJpbmdzPyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9ybXVsYVZhbHVlKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgYjtcblx0aWYoX19yZWFkVUludDE2TEUoYmxvYixibG9iLmwgKyA2KSAhPT0gMHhGRkZGKSByZXR1cm4gW3BhcnNlX1hudW0oYmxvYiksJ24nXTtcblx0c3dpdGNoKGJsb2JbYmxvYi5sXSkge1xuXHRcdGNhc2UgMHgwMDogYmxvYi5sICs9IDg7IHJldHVybiBbXCJTdHJpbmdcIiwgJ3MnXTtcblx0XHRjYXNlIDB4MDE6IGIgPSBibG9iW2Jsb2IubCsyXSA9PT0gMHgxOyBibG9iLmwgKz0gODsgcmV0dXJuIFtiLCdiJ107XG5cdFx0Y2FzZSAweDAyOiBiID0gYmxvYltibG9iLmwrMl07IGJsb2IubCArPSA4OyByZXR1cm4gW2IsJ2UnXTtcblx0XHRjYXNlIDB4MDM6IGJsb2IubCArPSA4OyByZXR1cm4gW1wiXCIsJ3MnXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5mdW5jdGlvbiB3cml0ZV9Gb3JtdWxhVmFsdWUodmFsdWUpIHtcblx0aWYodmFsdWUgPT0gbnVsbCkge1xuXHRcdC8vIEJsYW5rIFN0cmluZyBWYWx1ZVxuXHRcdHZhciBvID0gbmV3X2J1Zig4KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4MDMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHhGRkZGKTtcblx0XHRyZXR1cm4gbztcblx0fSBlbHNlIGlmKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSByZXR1cm4gd3JpdGVfWG51bSh2YWx1ZSk7XG5cdHJldHVybiB3cml0ZV9YbnVtKDApO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTI3IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0Zvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0aWYob3B0cy5iaWZmID09IDIpICsrYmxvYi5sO1xuXHR2YXIgdmFsID0gcGFyc2VfRm9ybXVsYVZhbHVlKGJsb2IsOCk7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYob3B0cy5iaWZmICE9IDIpIHtcblx0XHRibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYob3B0cy5iaWZmID49IDUpIHtcblx0XHRcdC8qdmFyIGNobiA9ICovYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdH1cblx0fVxuXHR2YXIgY2JmID0gcGFyc2VfWExTQ2VsbFBhcnNlZEZvcm11bGEoYmxvYiwgZW5kIC0gYmxvYi5sLCBvcHRzKTtcblx0cmV0dXJuIHtjZWxsOmNlbGwsIHZhbDp2YWxbMF0sIGZvcm11bGE6Y2JmLCBzaGFyZWQ6IChmbGFncyA+PiAzKSAmIDEsIHR0OnZhbFsxXX07XG59XG5mdW5jdGlvbiB3cml0ZV9Gb3JtdWxhKGNlbGwvKjpDZWxsKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLCBvcHRzLCBvcy8qOm51bWJlciovKSB7XG5cdC8vIENlbGxcblx0dmFyIG8xID0gd3JpdGVfWExTQ2VsbChSLCBDLCBvcyk7XG5cblx0Ly8gRm9ybXVsYVZhbHVlXG5cdHZhciBvMiA9IHdyaXRlX0Zvcm11bGFWYWx1ZShjZWxsLnYpO1xuXG5cdC8vIGZsYWdzICsgY2FjaGVcblx0dmFyIG8zID0gbmV3X2J1Zig2KTtcblx0dmFyIGZsYWdzID0gMHgwMSB8IDB4MjA7XG5cdG8zLndyaXRlX3NoaWZ0KDIsIGZsYWdzKTtcblx0bzMud3JpdGVfc2hpZnQoNCwgMCk7XG5cblx0Ly8gQ2VsbFBhcnNlZEZvcm11bGFcblx0dmFyIGJmID0gbmV3X2J1ZihjZWxsLmJmLmxlbmd0aCk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBjZWxsLmJmLmxlbmd0aDsgKytpKSBiZltpXSA9IGNlbGwuYmZbaV07XG5cblx0dmFyIG91dCA9IGJjb25jYXQoW28xLCBvMiwgbzMsIGJmXSk7XG5cdHJldHVybiBvdXQ7XG59XG5cblxuLyogWExTQiBQYXJzZWQgRm9ybXVsYSByZWNvcmRzIGhhdmUgdGhlIHNhbWUgc2hhcGUgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgY2NlID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoZGF0YSwgY2NlLCBvcHRzKTtcblx0dmFyIGNiID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgcmdjYiA9IGNiID4gMCA/IHBhcnNlX1JnYkV4dHJhKGRhdGEsIGNiLCByZ2NlLCBvcHRzKSA6IG51bGw7XG5cdHJldHVybiBbcmdjZSwgcmdjYl07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuMSBBcnJheVBhcnNlZEZvcm11bGEgKi9cbnZhciBwYXJzZV9YTFNCQXJyYXlQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGE7XG4vKiBbTVMtWExTQl0gMi41Ljk3LjQgQ2VsbFBhcnNlZEZvcm11bGEgKi9cbnZhciBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuOCBEVlBhcnNlZEZvcm11bGEgKi9cbi8vdmFyIHBhcnNlX1hMU0JEVlBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuOSBGUlRQYXJzZWRGb3JtdWxhICovXG4vL3ZhciBwYXJzZV9YTFNCRlJUUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhMjtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuMTIgTmFtZVBhcnNlZEZvcm11bGEgKi9cbnZhciBwYXJzZV9YTFNCTmFtZVBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuOTggU2hhcmVkUGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JTaGFyZWRQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGE7XG52YXIgQ2V0YWIgPSB7XG4gIDA6IFwiQkVFUFwiLFxuICAxOiBcIk9QRU5cIixcbiAgMjogXCJPUEVOLkxJTktTXCIsXG4gIDM6IFwiQ0xPU0UuQUxMXCIsXG4gIDQ6IFwiU0FWRVwiLFxuICA1OiBcIlNBVkUuQVNcIixcbiAgNjogXCJGSUxFLkRFTEVURVwiLFxuICA3OiBcIlBBR0UuU0VUVVBcIixcbiAgODogXCJQUklOVFwiLFxuICA5OiBcIlBSSU5URVIuU0VUVVBcIixcbiAgMTA6IFwiUVVJVFwiLFxuICAxMTogXCJORVcuV0lORE9XXCIsXG4gIDEyOiBcIkFSUkFOR0UuQUxMXCIsXG4gIDEzOiBcIldJTkRPVy5TSVpFXCIsXG4gIDE0OiBcIldJTkRPVy5NT1ZFXCIsXG4gIDE1OiBcIkZVTExcIixcbiAgMTY6IFwiQ0xPU0VcIixcbiAgMTc6IFwiUlVOXCIsXG4gIDIyOiBcIlNFVC5QUklOVC5BUkVBXCIsXG4gIDIzOiBcIlNFVC5QUklOVC5USVRMRVNcIixcbiAgMjQ6IFwiU0VULlBBR0UuQlJFQUtcIixcbiAgMjU6IFwiUkVNT1ZFLlBBR0UuQlJFQUtcIixcbiAgMjY6IFwiRk9OVFwiLFxuICAyNzogXCJESVNQTEFZXCIsXG4gIDI4OiBcIlBST1RFQ1QuRE9DVU1FTlRcIixcbiAgMjk6IFwiUFJFQ0lTSU9OXCIsXG4gIDMwOiBcIkExLlIxQzFcIixcbiAgMzE6IFwiQ0FMQ1VMQVRFLk5PV1wiLFxuICAzMjogXCJDQUxDVUxBVElPTlwiLFxuICAzNDogXCJEQVRBLkZJTkRcIixcbiAgMzU6IFwiRVhUUkFDVFwiLFxuICAzNjogXCJEQVRBLkRFTEVURVwiLFxuICAzNzogXCJTRVQuREFUQUJBU0VcIixcbiAgMzg6IFwiU0VULkNSSVRFUklBXCIsXG4gIDM5OiBcIlNPUlRcIixcbiAgNDA6IFwiREFUQS5TRVJJRVNcIixcbiAgNDE6IFwiVEFCTEVcIixcbiAgNDI6IFwiRk9STUFULk5VTUJFUlwiLFxuICA0MzogXCJBTElHTk1FTlRcIixcbiAgNDQ6IFwiU1RZTEVcIixcbiAgNDU6IFwiQk9SREVSXCIsXG4gIDQ2OiBcIkNFTEwuUFJPVEVDVElPTlwiLFxuICA0NzogXCJDT0xVTU4uV0lEVEhcIixcbiAgNDg6IFwiVU5ET1wiLFxuICA0OTogXCJDVVRcIixcbiAgNTA6IFwiQ09QWVwiLFxuICA1MTogXCJQQVNURVwiLFxuICA1MjogXCJDTEVBUlwiLFxuICA1MzogXCJQQVNURS5TUEVDSUFMXCIsXG4gIDU0OiBcIkVESVQuREVMRVRFXCIsXG4gIDU1OiBcIklOU0VSVFwiLFxuICA1NjogXCJGSUxMLlJJR0hUXCIsXG4gIDU3OiBcIkZJTEwuRE9XTlwiLFxuICA2MTogXCJERUZJTkUuTkFNRVwiLFxuICA2MjogXCJDUkVBVEUuTkFNRVNcIixcbiAgNjM6IFwiRk9STVVMQS5HT1RPXCIsXG4gIDY0OiBcIkZPUk1VTEEuRklORFwiLFxuICA2NTogXCJTRUxFQ1QuTEFTVC5DRUxMXCIsXG4gIDY2OiBcIlNIT1cuQUNUSVZFLkNFTExcIixcbiAgNjc6IFwiR0FMTEVSWS5BUkVBXCIsXG4gIDY4OiBcIkdBTExFUlkuQkFSXCIsXG4gIDY5OiBcIkdBTExFUlkuQ09MVU1OXCIsXG4gIDcwOiBcIkdBTExFUlkuTElORVwiLFxuICA3MTogXCJHQUxMRVJZLlBJRVwiLFxuICA3MjogXCJHQUxMRVJZLlNDQVRURVJcIixcbiAgNzM6IFwiQ09NQklOQVRJT05cIixcbiAgNzQ6IFwiUFJFRkVSUkVEXCIsXG4gIDc1OiBcIkFERC5PVkVSTEFZXCIsXG4gIDc2OiBcIkdSSURMSU5FU1wiLFxuICA3NzogXCJTRVQuUFJFRkVSUkVEXCIsXG4gIDc4OiBcIkFYRVNcIixcbiAgNzk6IFwiTEVHRU5EXCIsXG4gIDgwOiBcIkFUVEFDSC5URVhUXCIsXG4gIDgxOiBcIkFERC5BUlJPV1wiLFxuICA4MjogXCJTRUxFQ1QuQ0hBUlRcIixcbiAgODM6IFwiU0VMRUNULlBMT1QuQVJFQVwiLFxuICA4NDogXCJQQVRURVJOU1wiLFxuICA4NTogXCJNQUlOLkNIQVJUXCIsXG4gIDg2OiBcIk9WRVJMQVlcIixcbiAgODc6IFwiU0NBTEVcIixcbiAgODg6IFwiRk9STUFULkxFR0VORFwiLFxuICA4OTogXCJGT1JNQVQuVEVYVFwiLFxuICA5MDogXCJFRElULlJFUEVBVFwiLFxuICA5MTogXCJQQVJTRVwiLFxuICA5MjogXCJKVVNUSUZZXCIsXG4gIDkzOiBcIkhJREVcIixcbiAgOTQ6IFwiVU5ISURFXCIsXG4gIDk1OiBcIldPUktTUEFDRVwiLFxuICA5NjogXCJGT1JNVUxBXCIsXG4gIDk3OiBcIkZPUk1VTEEuRklMTFwiLFxuICA5ODogXCJGT1JNVUxBLkFSUkFZXCIsXG4gIDk5OiBcIkRBVEEuRklORC5ORVhUXCIsXG4gIDEwMDogXCJEQVRBLkZJTkQuUFJFVlwiLFxuICAxMDE6IFwiRk9STVVMQS5GSU5ELk5FWFRcIixcbiAgMTAyOiBcIkZPUk1VTEEuRklORC5QUkVWXCIsXG4gIDEwMzogXCJBQ1RJVkFURVwiLFxuICAxMDQ6IFwiQUNUSVZBVEUuTkVYVFwiLFxuICAxMDU6IFwiQUNUSVZBVEUuUFJFVlwiLFxuICAxMDY6IFwiVU5MT0NLRUQuTkVYVFwiLFxuICAxMDc6IFwiVU5MT0NLRUQuUFJFVlwiLFxuICAxMDg6IFwiQ09QWS5QSUNUVVJFXCIsXG4gIDEwOTogXCJTRUxFQ1RcIixcbiAgMTEwOiBcIkRFTEVURS5OQU1FXCIsXG4gIDExMTogXCJERUxFVEUuRk9STUFUXCIsXG4gIDExMjogXCJWTElORVwiLFxuICAxMTM6IFwiSExJTkVcIixcbiAgMTE0OiBcIlZQQUdFXCIsXG4gIDExNTogXCJIUEFHRVwiLFxuICAxMTY6IFwiVlNDUk9MTFwiLFxuICAxMTc6IFwiSFNDUk9MTFwiLFxuICAxMTg6IFwiQUxFUlRcIixcbiAgMTE5OiBcIk5FV1wiLFxuICAxMjA6IFwiQ0FOQ0VMLkNPUFlcIixcbiAgMTIxOiBcIlNIT1cuQ0xJUEJPQVJEXCIsXG4gIDEyMjogXCJNRVNTQUdFXCIsXG4gIDEyNDogXCJQQVNURS5MSU5LXCIsXG4gIDEyNTogXCJBUFAuQUNUSVZBVEVcIixcbiAgMTI2OiBcIkRFTEVURS5BUlJPV1wiLFxuICAxMjc6IFwiUk9XLkhFSUdIVFwiLFxuICAxMjg6IFwiRk9STUFULk1PVkVcIixcbiAgMTI5OiBcIkZPUk1BVC5TSVpFXCIsXG4gIDEzMDogXCJGT1JNVUxBLlJFUExBQ0VcIixcbiAgMTMxOiBcIlNFTkQuS0VZU1wiLFxuICAxMzI6IFwiU0VMRUNULlNQRUNJQUxcIixcbiAgMTMzOiBcIkFQUExZLk5BTUVTXCIsXG4gIDEzNDogXCJSRVBMQUNFLkZPTlRcIixcbiAgMTM1OiBcIkZSRUVaRS5QQU5FU1wiLFxuICAxMzY6IFwiU0hPVy5JTkZPXCIsXG4gIDEzNzogXCJTUExJVFwiLFxuICAxMzg6IFwiT04uV0lORE9XXCIsXG4gIDEzOTogXCJPTi5EQVRBXCIsXG4gIDE0MDogXCJESVNBQkxFLklOUFVUXCIsXG4gIDE0MjogXCJPVVRMSU5FXCIsXG4gIDE0MzogXCJMSVNULk5BTUVTXCIsXG4gIDE0NDogXCJGSUxFLkNMT1NFXCIsXG4gIDE0NTogXCJTQVZFLldPUktCT09LXCIsXG4gIDE0NjogXCJEQVRBLkZPUk1cIixcbiAgMTQ3OiBcIkNPUFkuQ0hBUlRcIixcbiAgMTQ4OiBcIk9OLlRJTUVcIixcbiAgMTQ5OiBcIldBSVRcIixcbiAgMTUwOiBcIkZPUk1BVC5GT05UXCIsXG4gIDE1MTogXCJGSUxMLlVQXCIsXG4gIDE1MjogXCJGSUxMLkxFRlRcIixcbiAgMTUzOiBcIkRFTEVURS5PVkVSTEFZXCIsXG4gIDE1NTogXCJTSE9SVC5NRU5VU1wiLFxuICAxNTk6IFwiU0VULlVQREFURS5TVEFUVVNcIixcbiAgMTYxOiBcIkNPTE9SLlBBTEVUVEVcIixcbiAgMTYyOiBcIkRFTEVURS5TVFlMRVwiLFxuICAxNjM6IFwiV0lORE9XLlJFU1RPUkVcIixcbiAgMTY0OiBcIldJTkRPVy5NQVhJTUlaRVwiLFxuICAxNjY6IFwiQ0hBTkdFLkxJTktcIixcbiAgMTY3OiBcIkNBTENVTEFURS5ET0NVTUVOVFwiLFxuICAxNjg6IFwiT04uS0VZXCIsXG4gIDE2OTogXCJBUFAuUkVTVE9SRVwiLFxuICAxNzA6IFwiQVBQLk1PVkVcIixcbiAgMTcxOiBcIkFQUC5TSVpFXCIsXG4gIDE3MjogXCJBUFAuTUlOSU1JWkVcIixcbiAgMTczOiBcIkFQUC5NQVhJTUlaRVwiLFxuICAxNzQ6IFwiQlJJTkcuVE8uRlJPTlRcIixcbiAgMTc1OiBcIlNFTkQuVE8uQkFDS1wiLFxuICAxODU6IFwiTUFJTi5DSEFSVC5UWVBFXCIsXG4gIDE4NjogXCJPVkVSTEFZLkNIQVJULlRZUEVcIixcbiAgMTg3OiBcIlNFTEVDVC5FTkRcIixcbiAgMTg4OiBcIk9QRU4uTUFJTFwiLFxuICAxODk6IFwiU0VORC5NQUlMXCIsXG4gIDE5MDogXCJTVEFOREFSRC5GT05UXCIsXG4gIDE5MTogXCJDT05TT0xJREFURVwiLFxuICAxOTI6IFwiU09SVC5TUEVDSUFMXCIsXG4gIDE5MzogXCJHQUxMRVJZLjNELkFSRUFcIixcbiAgMTk0OiBcIkdBTExFUlkuM0QuQ09MVU1OXCIsXG4gIDE5NTogXCJHQUxMRVJZLjNELkxJTkVcIixcbiAgMTk2OiBcIkdBTExFUlkuM0QuUElFXCIsXG4gIDE5NzogXCJWSUVXLjNEXCIsXG4gIDE5ODogXCJHT0FMLlNFRUtcIixcbiAgMTk5OiBcIldPUktHUk9VUFwiLFxuICAyMDA6IFwiRklMTC5HUk9VUFwiLFxuICAyMDE6IFwiVVBEQVRFLkxJTktcIixcbiAgMjAyOiBcIlBST01PVEVcIixcbiAgMjAzOiBcIkRFTU9URVwiLFxuICAyMDQ6IFwiU0hPVy5ERVRBSUxcIixcbiAgMjA2OiBcIlVOR1JPVVBcIixcbiAgMjA3OiBcIk9CSkVDVC5QUk9QRVJUSUVTXCIsXG4gIDIwODogXCJTQVZFLk5FVy5PQkpFQ1RcIixcbiAgMjA5OiBcIlNIQVJFXCIsXG4gIDIxMDogXCJTSEFSRS5OQU1FXCIsXG4gIDIxMTogXCJEVVBMSUNBVEVcIixcbiAgMjEyOiBcIkFQUExZLlNUWUxFXCIsXG4gIDIxMzogXCJBU1NJR04uVE8uT0JKRUNUXCIsXG4gIDIxNDogXCJPQkpFQ1QuUFJPVEVDVElPTlwiLFxuICAyMTU6IFwiSElERS5PQkpFQ1RcIixcbiAgMjE2OiBcIlNFVC5FWFRSQUNUXCIsXG4gIDIxNzogXCJDUkVBVEUuUFVCTElTSEVSXCIsXG4gIDIxODogXCJTVUJTQ1JJQkUuVE9cIixcbiAgMjE5OiBcIkFUVFJJQlVURVNcIixcbiAgMjIwOiBcIlNIT1cuVE9PTEJBUlwiLFxuICAyMjI6IFwiUFJJTlQuUFJFVklFV1wiLFxuICAyMjM6IFwiRURJVC5DT0xPUlwiLFxuICAyMjQ6IFwiU0hPVy5MRVZFTFNcIixcbiAgMjI1OiBcIkZPUk1BVC5NQUlOXCIsXG4gIDIyNjogXCJGT1JNQVQuT1ZFUkxBWVwiLFxuICAyMjc6IFwiT04uUkVDQUxDXCIsXG4gIDIyODogXCJFRElULlNFUklFU1wiLFxuICAyMjk6IFwiREVGSU5FLlNUWUxFXCIsXG4gIDI0MDogXCJMSU5FLlBSSU5UXCIsXG4gIDI0MzogXCJFTlRFUi5EQVRBXCIsXG4gIDI0OTogXCJHQUxMRVJZLlJBREFSXCIsXG4gIDI1MDogXCJNRVJHRS5TVFlMRVNcIixcbiAgMjUxOiBcIkVESVRJT04uT1BUSU9OU1wiLFxuICAyNTI6IFwiUEFTVEUuUElDVFVSRVwiLFxuICAyNTM6IFwiUEFTVEUuUElDVFVSRS5MSU5LXCIsXG4gIDI1NDogXCJTUEVMTElOR1wiLFxuICAyNTY6IFwiWk9PTVwiLFxuICAyNTk6IFwiSU5TRVJULk9CSkVDVFwiLFxuICAyNjA6IFwiV0lORE9XLk1JTklNSVpFXCIsXG4gIDI2NTogXCJTT1VORC5OT1RFXCIsXG4gIDI2NjogXCJTT1VORC5QTEFZXCIsXG4gIDI2NzogXCJGT1JNQVQuU0hBUEVcIixcbiAgMjY4OiBcIkVYVEVORC5QT0xZR09OXCIsXG4gIDI2OTogXCJGT1JNQVQuQVVUT1wiLFxuICAyNzI6IFwiR0FMTEVSWS4zRC5CQVJcIixcbiAgMjczOiBcIkdBTExFUlkuM0QuU1VSRkFDRVwiLFxuICAyNzQ6IFwiRklMTC5BVVRPXCIsXG4gIDI3NjogXCJDVVNUT01JWkUuVE9PTEJBUlwiLFxuICAyNzc6IFwiQURELlRPT0xcIixcbiAgMjc4OiBcIkVESVQuT0JKRUNUXCIsXG4gIDI3OTogXCJPTi5ET1VCTEVDTElDS1wiLFxuICAyODA6IFwiT04uRU5UUllcIixcbiAgMjgxOiBcIldPUktCT09LLkFERFwiLFxuICAyODI6IFwiV09SS0JPT0suTU9WRVwiLFxuICAyODM6IFwiV09SS0JPT0suQ09QWVwiLFxuICAyODQ6IFwiV09SS0JPT0suT1BUSU9OU1wiLFxuICAyODU6IFwiU0FWRS5XT1JLU1BBQ0VcIixcbiAgMjg4OiBcIkNIQVJULldJWkFSRFwiLFxuICAyODk6IFwiREVMRVRFLlRPT0xcIixcbiAgMjkwOiBcIk1PVkUuVE9PTFwiLFxuICAyOTE6IFwiV09SS0JPT0suU0VMRUNUXCIsXG4gIDI5MjogXCJXT1JLQk9PSy5BQ1RJVkFURVwiLFxuICAyOTM6IFwiQVNTSUdOLlRPLlRPT0xcIixcbiAgMjk1OiBcIkNPUFkuVE9PTFwiLFxuICAyOTY6IFwiUkVTRVQuVE9PTFwiLFxuICAyOTc6IFwiQ09OU1RSQUlOLk5VTUVSSUNcIixcbiAgMjk4OiBcIlBBU1RFLlRPT0xcIixcbiAgMzAyOiBcIldPUktCT09LLk5FV1wiLFxuICAzMDU6IFwiU0NFTkFSSU8uQ0VMTFNcIixcbiAgMzA2OiBcIlNDRU5BUklPLkRFTEVURVwiLFxuICAzMDc6IFwiU0NFTkFSSU8uQUREXCIsXG4gIDMwODogXCJTQ0VOQVJJTy5FRElUXCIsXG4gIDMwOTogXCJTQ0VOQVJJTy5TSE9XXCIsXG4gIDMxMDogXCJTQ0VOQVJJTy5TSE9XLk5FWFRcIixcbiAgMzExOiBcIlNDRU5BUklPLlNVTU1BUllcIixcbiAgMzEyOiBcIlBJVk9ULlRBQkxFLldJWkFSRFwiLFxuICAzMTM6IFwiUElWT1QuRklFTEQuUFJPUEVSVElFU1wiLFxuICAzMTQ6IFwiUElWT1QuRklFTERcIixcbiAgMzE1OiBcIlBJVk9ULklURU1cIixcbiAgMzE2OiBcIlBJVk9ULkFERC5GSUVMRFNcIixcbiAgMzE4OiBcIk9QVElPTlMuQ0FMQ1VMQVRJT05cIixcbiAgMzE5OiBcIk9QVElPTlMuRURJVFwiLFxuICAzMjA6IFwiT1BUSU9OUy5WSUVXXCIsXG4gIDMyMTogXCJBRERJTi5NQU5BR0VSXCIsXG4gIDMyMjogXCJNRU5VLkVESVRPUlwiLFxuICAzMjM6IFwiQVRUQUNILlRPT0xCQVJTXCIsXG4gIDMyNDogXCJWQkFBY3RpdmF0ZVwiLFxuICAzMjU6IFwiT1BUSU9OUy5DSEFSVFwiLFxuICAzMjg6IFwiVkJBLklOU0VSVC5GSUxFXCIsXG4gIDMzMDogXCJWQkEuUFJPQ0VEVVJFLkRFRklOSVRJT05cIixcbiAgMzM2OiBcIlJPVVRJTkcuU0xJUFwiLFxuICAzMzg6IFwiUk9VVEUuRE9DVU1FTlRcIixcbiAgMzM5OiBcIk1BSUwuTE9HT05cIixcbiAgMzQyOiBcIklOU0VSVC5QSUNUVVJFXCIsXG4gIDM0MzogXCJFRElULlRPT0xcIixcbiAgMzQ0OiBcIkdBTExFUlkuRE9VR0hOVVRcIixcbiAgMzUwOiBcIkNIQVJULlRSRU5EXCIsXG4gIDM1MjogXCJQSVZPVC5JVEVNLlBST1BFUlRJRVNcIixcbiAgMzU0OiBcIldPUktCT09LLklOU0VSVFwiLFxuICAzNTU6IFwiT1BUSU9OUy5UUkFOU0lUSU9OXCIsXG4gIDM1NjogXCJPUFRJT05TLkdFTkVSQUxcIixcbiAgMzcwOiBcIkZJTFRFUi5BRFZBTkNFRFwiLFxuICAzNzM6IFwiTUFJTC5BREQuTUFJTEVSXCIsXG4gIDM3NDogXCJNQUlMLkRFTEVURS5NQUlMRVJcIixcbiAgMzc1OiBcIk1BSUwuUkVQTFlcIixcbiAgMzc2OiBcIk1BSUwuUkVQTFkuQUxMXCIsXG4gIDM3NzogXCJNQUlMLkZPUldBUkRcIixcbiAgMzc4OiBcIk1BSUwuTkVYVC5MRVRURVJcIixcbiAgMzc5OiBcIkRBVEEuTEFCRUxcIixcbiAgMzgwOiBcIklOU0VSVC5USVRMRVwiLFxuICAzODE6IFwiRk9OVC5QUk9QRVJUSUVTXCIsXG4gIDM4MjogXCJNQUNSTy5PUFRJT05TXCIsXG4gIDM4MzogXCJXT1JLQk9PSy5ISURFXCIsXG4gIDM4NDogXCJXT1JLQk9PSy5VTkhJREVcIixcbiAgMzg1OiBcIldPUktCT09LLkRFTEVURVwiLFxuICAzODY6IFwiV09SS0JPT0suTkFNRVwiLFxuICAzODg6IFwiR0FMTEVSWS5DVVNUT01cIixcbiAgMzkwOiBcIkFERC5DSEFSVC5BVVRPRk9STUFUXCIsXG4gIDM5MTogXCJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVFwiLFxuICAzOTI6IFwiQ0hBUlQuQURELkRBVEFcIixcbiAgMzkzOiBcIkFVVE8uT1VUTElORVwiLFxuICAzOTQ6IFwiVEFCLk9SREVSXCIsXG4gIDM5NTogXCJTSE9XLkRJQUxPR1wiLFxuICAzOTY6IFwiU0VMRUNULkFMTFwiLFxuICAzOTc6IFwiVU5HUk9VUC5TSEVFVFNcIixcbiAgMzk4OiBcIlNVQlRPVEFMLkNSRUFURVwiLFxuICAzOTk6IFwiU1VCVE9UQUwuUkVNT1ZFXCIsXG4gIDQwMDogXCJSRU5BTUUuT0JKRUNUXCIsXG4gIDQxMjogXCJXT1JLQk9PSy5TQ1JPTExcIixcbiAgNDEzOiBcIldPUktCT09LLk5FWFRcIixcbiAgNDE0OiBcIldPUktCT09LLlBSRVZcIixcbiAgNDE1OiBcIldPUktCT09LLlRBQi5TUExJVFwiLFxuICA0MTY6IFwiRlVMTC5TQ1JFRU5cIixcbiAgNDE3OiBcIldPUktCT09LLlBST1RFQ1RcIixcbiAgNDIwOiBcIlNDUk9MTEJBUi5QUk9QRVJUSUVTXCIsXG4gIDQyMTogXCJQSVZPVC5TSE9XLlBBR0VTXCIsXG4gIDQyMjogXCJURVhULlRPLkNPTFVNTlNcIixcbiAgNDIzOiBcIkZPUk1BVC5DSEFSVFRZUEVcIixcbiAgNDI0OiBcIkxJTksuRk9STUFUXCIsXG4gIDQyNTogXCJUUkFDRVIuRElTUExBWVwiLFxuICA0MzA6IFwiVFJBQ0VSLk5BVklHQVRFXCIsXG4gIDQzMTogXCJUUkFDRVIuQ0xFQVJcIixcbiAgNDMyOiBcIlRSQUNFUi5FUlJPUlwiLFxuICA0MzM6IFwiUElWT1QuRklFTEQuR1JPVVBcIixcbiAgNDM0OiBcIlBJVk9ULkZJRUxELlVOR1JPVVBcIixcbiAgNDM1OiBcIkNIRUNLQk9YLlBST1BFUlRJRVNcIixcbiAgNDM2OiBcIkxBQkVMLlBST1BFUlRJRVNcIixcbiAgNDM3OiBcIkxJU1RCT1guUFJPUEVSVElFU1wiLFxuICA0Mzg6IFwiRURJVEJPWC5QUk9QRVJUSUVTXCIsXG4gIDQzOTogXCJQSVZPVC5SRUZSRVNIXCIsXG4gIDQ0MDogXCJMSU5LLkNPTUJPXCIsXG4gIDQ0MTogXCJPUEVOLlRFWFRcIixcbiAgNDQyOiBcIkhJREUuRElBTE9HXCIsXG4gIDQ0MzogXCJTRVQuRElBTE9HLkZPQ1VTXCIsXG4gIDQ0NDogXCJFTkFCTEUuT0JKRUNUXCIsXG4gIDQ0NTogXCJQVVNIQlVUVE9OLlBST1BFUlRJRVNcIixcbiAgNDQ2OiBcIlNFVC5ESUFMT0cuREVGQVVMVFwiLFxuICA0NDc6IFwiRklMVEVSXCIsXG4gIDQ0ODogXCJGSUxURVIuU0hPVy5BTExcIixcbiAgNDQ5OiBcIkNMRUFSLk9VVExJTkVcIixcbiAgNDUwOiBcIkZVTkNUSU9OLldJWkFSRFwiLFxuICA0NTE6IFwiQURELkxJU1QuSVRFTVwiLFxuICA0NTI6IFwiU0VULkxJU1QuSVRFTVwiLFxuICA0NTM6IFwiUkVNT1ZFLkxJU1QuSVRFTVwiLFxuICA0NTQ6IFwiU0VMRUNULkxJU1QuSVRFTVwiLFxuICA0NTU6IFwiU0VULkNPTlRST0wuVkFMVUVcIixcbiAgNDU2OiBcIlNBVkUuQ09QWS5BU1wiLFxuICA0NTg6IFwiT1BUSU9OUy5MSVNUUy5BRERcIixcbiAgNDU5OiBcIk9QVElPTlMuTElTVFMuREVMRVRFXCIsXG4gIDQ2MDogXCJTRVJJRVMuQVhFU1wiLFxuICA0NjE6IFwiU0VSSUVTLlhcIixcbiAgNDYyOiBcIlNFUklFUy5ZXCIsXG4gIDQ2MzogXCJFUlJPUkJBUi5YXCIsXG4gIDQ2NDogXCJFUlJPUkJBUi5ZXCIsXG4gIDQ2NTogXCJGT1JNQVQuQ0hBUlRcIixcbiAgNDY2OiBcIlNFUklFUy5PUkRFUlwiLFxuICA0Njc6IFwiTUFJTC5MT0dPRkZcIixcbiAgNDY4OiBcIkNMRUFSLlJPVVRJTkcuU0xJUFwiLFxuICA0Njk6IFwiQVBQLkFDVElWQVRFLk1JQ1JPU09GVFwiLFxuICA0NzA6IFwiTUFJTC5FRElULk1BSUxFUlwiLFxuICA0NzE6IFwiT04uU0hFRVRcIixcbiAgNDcyOiBcIlNUQU5EQVJELldJRFRIXCIsXG4gIDQ3MzogXCJTQ0VOQVJJTy5NRVJHRVwiLFxuICA0NzQ6IFwiU1VNTUFSWS5JTkZPXCIsXG4gIDQ3NTogXCJGSU5ELkZJTEVcIixcbiAgNDc2OiBcIkFDVElWRS5DRUxMLkZPTlRcIixcbiAgNDc3OiBcIkVOQUJMRS5USVBXSVpBUkRcIixcbiAgNDc4OiBcIlZCQS5NQUtFLkFERElOXCIsXG4gIDQ4MDogXCJJTlNFUlREQVRBVEFCTEVcIixcbiAgNDgxOiBcIldPUktHUk9VUC5PUFRJT05TXCIsXG4gIDQ4MjogXCJNQUlMLlNFTkQuTUFJTEVSXCIsXG4gIDQ4NTogXCJBVVRPQ09SUkVDVFwiLFxuICA0ODk6IFwiUE9TVC5ET0NVTUVOVFwiLFxuICA0OTE6IFwiUElDS0xJU1RcIixcbiAgNDkzOiBcIlZJRVcuU0hPV1wiLFxuICA0OTQ6IFwiVklFVy5ERUZJTkVcIixcbiAgNDk1OiBcIlZJRVcuREVMRVRFXCIsXG4gIDUwOTogXCJTSEVFVC5CQUNLR1JPVU5EXCIsXG4gIDUxMDogXCJJTlNFUlQuTUFQLk9CSkVDVFwiLFxuICA1MTE6IFwiT1BUSU9OUy5NRU5PTk9cIixcbiAgNTE3OiBcIk1TT0NIRUNLU1wiLFxuICA1MTg6IFwiTk9STUFMXCIsXG4gIDUxOTogXCJMQVlPVVRcIixcbiAgNTIwOiBcIlJNLlBSSU5ULkFSRUFcIixcbiAgNTIxOiBcIkNMRUFSLlBSSU5ULkFSRUFcIixcbiAgNTIyOiBcIkFERC5QUklOVC5BUkVBXCIsXG4gIDUyMzogXCJNT1ZFLkJSS1wiLFxuICA1NDU6IFwiSElERUNVUlIuTk9URVwiLFxuICA1NDY6IFwiSElERUFMTC5OT1RFU1wiLFxuICA1NDc6IFwiREVMRVRFLk5PVEVcIixcbiAgNTQ4OiBcIlRSQVZFUlNFLk5PVEVTXCIsXG4gIDU0OTogXCJBQ1RJVkFURS5OT1RFU1wiLFxuICA2MjA6IFwiUFJPVEVDVC5SRVZJU0lPTlNcIixcbiAgNjIxOiBcIlVOUFJPVEVDVC5SRVZJU0lPTlNcIixcbiAgNjQ3OiBcIk9QVElPTlMuTUVcIixcbiAgNjUzOiBcIldFQi5QVUJMSVNIXCIsXG4gIDY2NzogXCJORVdXRUJRVUVSWVwiLFxuICA2NzM6IFwiUElWT1QuVEFCTEUuQ0hBUlRcIixcbiAgNzUzOiBcIk9QVElPTlMuU0FWRVwiLFxuICA3NTU6IFwiT1BUSU9OUy5TUEVMTFwiLFxuICA4MDg6IFwiSElERUFMTC5JTktBTk5PVFNcIlxufTtcbnZhciBGdGFiID0ge1xuICAwOiBcIkNPVU5UXCIsXG4gIDE6IFwiSUZcIixcbiAgMjogXCJJU05BXCIsXG4gIDM6IFwiSVNFUlJPUlwiLFxuICA0OiBcIlNVTVwiLFxuICA1OiBcIkFWRVJBR0VcIixcbiAgNjogXCJNSU5cIixcbiAgNzogXCJNQVhcIixcbiAgODogXCJST1dcIixcbiAgOTogXCJDT0xVTU5cIixcbiAgMTA6IFwiTkFcIixcbiAgMTE6IFwiTlBWXCIsXG4gIDEyOiBcIlNUREVWXCIsXG4gIDEzOiBcIkRPTExBUlwiLFxuICAxNDogXCJGSVhFRFwiLFxuICAxNTogXCJTSU5cIixcbiAgMTY6IFwiQ09TXCIsXG4gIDE3OiBcIlRBTlwiLFxuICAxODogXCJBVEFOXCIsXG4gIDE5OiBcIlBJXCIsXG4gIDIwOiBcIlNRUlRcIixcbiAgMjE6IFwiRVhQXCIsXG4gIDIyOiBcIkxOXCIsXG4gIDIzOiBcIkxPRzEwXCIsXG4gIDI0OiBcIkFCU1wiLFxuICAyNTogXCJJTlRcIixcbiAgMjY6IFwiU0lHTlwiLFxuICAyNzogXCJST1VORFwiLFxuICAyODogXCJMT09LVVBcIixcbiAgMjk6IFwiSU5ERVhcIixcbiAgMzA6IFwiUkVQVFwiLFxuICAzMTogXCJNSURcIixcbiAgMzI6IFwiTEVOXCIsXG4gIDMzOiBcIlZBTFVFXCIsXG4gIDM0OiBcIlRSVUVcIixcbiAgMzU6IFwiRkFMU0VcIixcbiAgMzY6IFwiQU5EXCIsXG4gIDM3OiBcIk9SXCIsXG4gIDM4OiBcIk5PVFwiLFxuICAzOTogXCJNT0RcIixcbiAgNDA6IFwiRENPVU5UXCIsXG4gIDQxOiBcIkRTVU1cIixcbiAgNDI6IFwiREFWRVJBR0VcIixcbiAgNDM6IFwiRE1JTlwiLFxuICA0NDogXCJETUFYXCIsXG4gIDQ1OiBcIkRTVERFVlwiLFxuICA0NjogXCJWQVJcIixcbiAgNDc6IFwiRFZBUlwiLFxuICA0ODogXCJURVhUXCIsXG4gIDQ5OiBcIkxJTkVTVFwiLFxuICA1MDogXCJUUkVORFwiLFxuICA1MTogXCJMT0dFU1RcIixcbiAgNTI6IFwiR1JPV1RIXCIsXG4gIDUzOiBcIkdPVE9cIixcbiAgNTQ6IFwiSEFMVFwiLFxuICA1NTogXCJSRVRVUk5cIixcbiAgNTY6IFwiUFZcIixcbiAgNTc6IFwiRlZcIixcbiAgNTg6IFwiTlBFUlwiLFxuICA1OTogXCJQTVRcIixcbiAgNjA6IFwiUkFURVwiLFxuICA2MTogXCJNSVJSXCIsXG4gIDYyOiBcIklSUlwiLFxuICA2MzogXCJSQU5EXCIsXG4gIDY0OiBcIk1BVENIXCIsXG4gIDY1OiBcIkRBVEVcIixcbiAgNjY6IFwiVElNRVwiLFxuICA2NzogXCJEQVlcIixcbiAgNjg6IFwiTU9OVEhcIixcbiAgNjk6IFwiWUVBUlwiLFxuICA3MDogXCJXRUVLREFZXCIsXG4gIDcxOiBcIkhPVVJcIixcbiAgNzI6IFwiTUlOVVRFXCIsXG4gIDczOiBcIlNFQ09ORFwiLFxuICA3NDogXCJOT1dcIixcbiAgNzU6IFwiQVJFQVNcIixcbiAgNzY6IFwiUk9XU1wiLFxuICA3NzogXCJDT0xVTU5TXCIsXG4gIDc4OiBcIk9GRlNFVFwiLFxuICA3OTogXCJBQlNSRUZcIixcbiAgODA6IFwiUkVMUkVGXCIsXG4gIDgxOiBcIkFSR1VNRU5UXCIsXG4gIDgyOiBcIlNFQVJDSFwiLFxuICA4MzogXCJUUkFOU1BPU0VcIixcbiAgODQ6IFwiRVJST1JcIixcbiAgODU6IFwiU1RFUFwiLFxuICA4NjogXCJUWVBFXCIsXG4gIDg3OiBcIkVDSE9cIixcbiAgODg6IFwiU0VULk5BTUVcIixcbiAgODk6IFwiQ0FMTEVSXCIsXG4gIDkwOiBcIkRFUkVGXCIsXG4gIDkxOiBcIldJTkRPV1NcIixcbiAgOTI6IFwiU0VSSUVTXCIsXG4gIDkzOiBcIkRPQ1VNRU5UU1wiLFxuICA5NDogXCJBQ1RJVkUuQ0VMTFwiLFxuICA5NTogXCJTRUxFQ1RJT05cIixcbiAgOTY6IFwiUkVTVUxUXCIsXG4gIDk3OiBcIkFUQU4yXCIsXG4gIDk4OiBcIkFTSU5cIixcbiAgOTk6IFwiQUNPU1wiLFxuICAxMDA6IFwiQ0hPT1NFXCIsXG4gIDEwMTogXCJITE9PS1VQXCIsXG4gIDEwMjogXCJWTE9PS1VQXCIsXG4gIDEwMzogXCJMSU5LU1wiLFxuICAxMDQ6IFwiSU5QVVRcIixcbiAgMTA1OiBcIklTUkVGXCIsXG4gIDEwNjogXCJHRVQuRk9STVVMQVwiLFxuICAxMDc6IFwiR0VULk5BTUVcIixcbiAgMTA4OiBcIlNFVC5WQUxVRVwiLFxuICAxMDk6IFwiTE9HXCIsXG4gIDExMDogXCJFWEVDXCIsXG4gIDExMTogXCJDSEFSXCIsXG4gIDExMjogXCJMT1dFUlwiLFxuICAxMTM6IFwiVVBQRVJcIixcbiAgMTE0OiBcIlBST1BFUlwiLFxuICAxMTU6IFwiTEVGVFwiLFxuICAxMTY6IFwiUklHSFRcIixcbiAgMTE3OiBcIkVYQUNUXCIsXG4gIDExODogXCJUUklNXCIsXG4gIDExOTogXCJSRVBMQUNFXCIsXG4gIDEyMDogXCJTVUJTVElUVVRFXCIsXG4gIDEyMTogXCJDT0RFXCIsXG4gIDEyMjogXCJOQU1FU1wiLFxuICAxMjM6IFwiRElSRUNUT1JZXCIsXG4gIDEyNDogXCJGSU5EXCIsXG4gIDEyNTogXCJDRUxMXCIsXG4gIDEyNjogXCJJU0VSUlwiLFxuICAxMjc6IFwiSVNURVhUXCIsXG4gIDEyODogXCJJU05VTUJFUlwiLFxuICAxMjk6IFwiSVNCTEFOS1wiLFxuICAxMzA6IFwiVFwiLFxuICAxMzE6IFwiTlwiLFxuICAxMzI6IFwiRk9QRU5cIixcbiAgMTMzOiBcIkZDTE9TRVwiLFxuICAxMzQ6IFwiRlNJWkVcIixcbiAgMTM1OiBcIkZSRUFETE5cIixcbiAgMTM2OiBcIkZSRUFEXCIsXG4gIDEzNzogXCJGV1JJVEVMTlwiLFxuICAxMzg6IFwiRldSSVRFXCIsXG4gIDEzOTogXCJGUE9TXCIsXG4gIDE0MDogXCJEQVRFVkFMVUVcIixcbiAgMTQxOiBcIlRJTUVWQUxVRVwiLFxuICAxNDI6IFwiU0xOXCIsXG4gIDE0MzogXCJTWURcIixcbiAgMTQ0OiBcIkREQlwiLFxuICAxNDU6IFwiR0VULkRFRlwiLFxuICAxNDY6IFwiUkVGVEVYVFwiLFxuICAxNDc6IFwiVEVYVFJFRlwiLFxuICAxNDg6IFwiSU5ESVJFQ1RcIixcbiAgMTQ5OiBcIlJFR0lTVEVSXCIsXG4gIDE1MDogXCJDQUxMXCIsXG4gIDE1MTogXCJBREQuQkFSXCIsXG4gIDE1MjogXCJBREQuTUVOVVwiLFxuICAxNTM6IFwiQURELkNPTU1BTkRcIixcbiAgMTU0OiBcIkVOQUJMRS5DT01NQU5EXCIsXG4gIDE1NTogXCJDSEVDSy5DT01NQU5EXCIsXG4gIDE1NjogXCJSRU5BTUUuQ09NTUFORFwiLFxuICAxNTc6IFwiU0hPVy5CQVJcIixcbiAgMTU4OiBcIkRFTEVURS5NRU5VXCIsXG4gIDE1OTogXCJERUxFVEUuQ09NTUFORFwiLFxuICAxNjA6IFwiR0VULkNIQVJULklURU1cIixcbiAgMTYxOiBcIkRJQUxPRy5CT1hcIixcbiAgMTYyOiBcIkNMRUFOXCIsXG4gIDE2MzogXCJNREVURVJNXCIsXG4gIDE2NDogXCJNSU5WRVJTRVwiLFxuICAxNjU6IFwiTU1VTFRcIixcbiAgMTY2OiBcIkZJTEVTXCIsXG4gIDE2NzogXCJJUE1UXCIsXG4gIDE2ODogXCJQUE1UXCIsXG4gIDE2OTogXCJDT1VOVEFcIixcbiAgMTcwOiBcIkNBTkNFTC5LRVlcIixcbiAgMTcxOiBcIkZPUlwiLFxuICAxNzI6IFwiV0hJTEVcIixcbiAgMTczOiBcIkJSRUFLXCIsXG4gIDE3NDogXCJORVhUXCIsXG4gIDE3NTogXCJJTklUSUFURVwiLFxuICAxNzY6IFwiUkVRVUVTVFwiLFxuICAxNzc6IFwiUE9LRVwiLFxuICAxNzg6IFwiRVhFQ1VURVwiLFxuICAxNzk6IFwiVEVSTUlOQVRFXCIsXG4gIDE4MDogXCJSRVNUQVJUXCIsXG4gIDE4MTogXCJIRUxQXCIsXG4gIDE4MjogXCJHRVQuQkFSXCIsXG4gIDE4MzogXCJQUk9EVUNUXCIsXG4gIDE4NDogXCJGQUNUXCIsXG4gIDE4NTogXCJHRVQuQ0VMTFwiLFxuICAxODY6IFwiR0VULldPUktTUEFDRVwiLFxuICAxODc6IFwiR0VULldJTkRPV1wiLFxuICAxODg6IFwiR0VULkRPQ1VNRU5UXCIsXG4gIDE4OTogXCJEUFJPRFVDVFwiLFxuICAxOTA6IFwiSVNOT05URVhUXCIsXG4gIDE5MTogXCJHRVQuTk9URVwiLFxuICAxOTI6IFwiTk9URVwiLFxuICAxOTM6IFwiU1RERVZQXCIsXG4gIDE5NDogXCJWQVJQXCIsXG4gIDE5NTogXCJEU1RERVZQXCIsXG4gIDE5NjogXCJEVkFSUFwiLFxuICAxOTc6IFwiVFJVTkNcIixcbiAgMTk4OiBcIklTTE9HSUNBTFwiLFxuICAxOTk6IFwiRENPVU5UQVwiLFxuICAyMDA6IFwiREVMRVRFLkJBUlwiLFxuICAyMDE6IFwiVU5SRUdJU1RFUlwiLFxuICAyMDQ6IFwiVVNET0xMQVJcIixcbiAgMjA1OiBcIkZJTkRCXCIsXG4gIDIwNjogXCJTRUFSQ0hCXCIsXG4gIDIwNzogXCJSRVBMQUNFQlwiLFxuICAyMDg6IFwiTEVGVEJcIixcbiAgMjA5OiBcIlJJR0hUQlwiLFxuICAyMTA6IFwiTUlEQlwiLFxuICAyMTE6IFwiTEVOQlwiLFxuICAyMTI6IFwiUk9VTkRVUFwiLFxuICAyMTM6IFwiUk9VTkRET1dOXCIsXG4gIDIxNDogXCJBU0NcIixcbiAgMjE1OiBcIkRCQ1NcIixcbiAgMjE2OiBcIlJBTktcIixcbiAgMjE5OiBcIkFERFJFU1NcIixcbiAgMjIwOiBcIkRBWVMzNjBcIixcbiAgMjIxOiBcIlRPREFZXCIsXG4gIDIyMjogXCJWREJcIixcbiAgMjIzOiBcIkVMU0VcIixcbiAgMjI0OiBcIkVMU0UuSUZcIixcbiAgMjI1OiBcIkVORC5JRlwiLFxuICAyMjY6IFwiRk9SLkNFTExcIixcbiAgMjI3OiBcIk1FRElBTlwiLFxuICAyMjg6IFwiU1VNUFJPRFVDVFwiLFxuICAyMjk6IFwiU0lOSFwiLFxuICAyMzA6IFwiQ09TSFwiLFxuICAyMzE6IFwiVEFOSFwiLFxuICAyMzI6IFwiQVNJTkhcIixcbiAgMjMzOiBcIkFDT1NIXCIsXG4gIDIzNDogXCJBVEFOSFwiLFxuICAyMzU6IFwiREdFVFwiLFxuICAyMzY6IFwiQ1JFQVRFLk9CSkVDVFwiLFxuICAyMzc6IFwiVk9MQVRJTEVcIixcbiAgMjM4OiBcIkxBU1QuRVJST1JcIixcbiAgMjM5OiBcIkNVU1RPTS5VTkRPXCIsXG4gIDI0MDogXCJDVVNUT00uUkVQRUFUXCIsXG4gIDI0MTogXCJGT1JNVUxBLkNPTlZFUlRcIixcbiAgMjQyOiBcIkdFVC5MSU5LLklORk9cIixcbiAgMjQzOiBcIlRFWFQuQk9YXCIsXG4gIDI0NDogXCJJTkZPXCIsXG4gIDI0NTogXCJHUk9VUFwiLFxuICAyNDY6IFwiR0VULk9CSkVDVFwiLFxuICAyNDc6IFwiREJcIixcbiAgMjQ4OiBcIlBBVVNFXCIsXG4gIDI1MTogXCJSRVNVTUVcIixcbiAgMjUyOiBcIkZSRVFVRU5DWVwiLFxuICAyNTM6IFwiQURELlRPT0xCQVJcIixcbiAgMjU0OiBcIkRFTEVURS5UT09MQkFSXCIsXG4gIDI1NTogXCJVc2VyXCIsXG4gIDI1NjogXCJSRVNFVC5UT09MQkFSXCIsXG4gIDI1NzogXCJFVkFMVUFURVwiLFxuICAyNTg6IFwiR0VULlRPT0xCQVJcIixcbiAgMjU5OiBcIkdFVC5UT09MXCIsXG4gIDI2MDogXCJTUEVMTElORy5DSEVDS1wiLFxuICAyNjE6IFwiRVJST1IuVFlQRVwiLFxuICAyNjI6IFwiQVBQLlRJVExFXCIsXG4gIDI2MzogXCJXSU5ET1cuVElUTEVcIixcbiAgMjY0OiBcIlNBVkUuVE9PTEJBUlwiLFxuICAyNjU6IFwiRU5BQkxFLlRPT0xcIixcbiAgMjY2OiBcIlBSRVNTLlRPT0xcIixcbiAgMjY3OiBcIlJFR0lTVEVSLklEXCIsXG4gIDI2ODogXCJHRVQuV09SS0JPT0tcIixcbiAgMjY5OiBcIkFWRURFVlwiLFxuICAyNzA6IFwiQkVUQURJU1RcIixcbiAgMjcxOiBcIkdBTU1BTE5cIixcbiAgMjcyOiBcIkJFVEFJTlZcIixcbiAgMjczOiBcIkJJTk9NRElTVFwiLFxuICAyNzQ6IFwiQ0hJRElTVFwiLFxuICAyNzU6IFwiQ0hJSU5WXCIsXG4gIDI3NjogXCJDT01CSU5cIixcbiAgMjc3OiBcIkNPTkZJREVOQ0VcIixcbiAgMjc4OiBcIkNSSVRCSU5PTVwiLFxuICAyNzk6IFwiRVZFTlwiLFxuICAyODA6IFwiRVhQT05ESVNUXCIsXG4gIDI4MTogXCJGRElTVFwiLFxuICAyODI6IFwiRklOVlwiLFxuICAyODM6IFwiRklTSEVSXCIsXG4gIDI4NDogXCJGSVNIRVJJTlZcIixcbiAgMjg1OiBcIkZMT09SXCIsXG4gIDI4NjogXCJHQU1NQURJU1RcIixcbiAgMjg3OiBcIkdBTU1BSU5WXCIsXG4gIDI4ODogXCJDRUlMSU5HXCIsXG4gIDI4OTogXCJIWVBHRU9NRElTVFwiLFxuICAyOTA6IFwiTE9HTk9STURJU1RcIixcbiAgMjkxOiBcIkxPR0lOVlwiLFxuICAyOTI6IFwiTkVHQklOT01ESVNUXCIsXG4gIDI5MzogXCJOT1JNRElTVFwiLFxuICAyOTQ6IFwiTk9STVNESVNUXCIsXG4gIDI5NTogXCJOT1JNSU5WXCIsXG4gIDI5NjogXCJOT1JNU0lOVlwiLFxuICAyOTc6IFwiU1RBTkRBUkRJWkVcIixcbiAgMjk4OiBcIk9ERFwiLFxuICAyOTk6IFwiUEVSTVVUXCIsXG4gIDMwMDogXCJQT0lTU09OXCIsXG4gIDMwMTogXCJURElTVFwiLFxuICAzMDI6IFwiV0VJQlVMTFwiLFxuICAzMDM6IFwiU1VNWE1ZMlwiLFxuICAzMDQ6IFwiU1VNWDJNWTJcIixcbiAgMzA1OiBcIlNVTVgyUFkyXCIsXG4gIDMwNjogXCJDSElURVNUXCIsXG4gIDMwNzogXCJDT1JSRUxcIixcbiAgMzA4OiBcIkNPVkFSXCIsXG4gIDMwOTogXCJGT1JFQ0FTVFwiLFxuICAzMTA6IFwiRlRFU1RcIixcbiAgMzExOiBcIklOVEVSQ0VQVFwiLFxuICAzMTI6IFwiUEVBUlNPTlwiLFxuICAzMTM6IFwiUlNRXCIsXG4gIDMxNDogXCJTVEVZWFwiLFxuICAzMTU6IFwiU0xPUEVcIixcbiAgMzE2OiBcIlRURVNUXCIsXG4gIDMxNzogXCJQUk9CXCIsXG4gIDMxODogXCJERVZTUVwiLFxuICAzMTk6IFwiR0VPTUVBTlwiLFxuICAzMjA6IFwiSEFSTUVBTlwiLFxuICAzMjE6IFwiU1VNU1FcIixcbiAgMzIyOiBcIktVUlRcIixcbiAgMzIzOiBcIlNLRVdcIixcbiAgMzI0OiBcIlpURVNUXCIsXG4gIDMyNTogXCJMQVJHRVwiLFxuICAzMjY6IFwiU01BTExcIixcbiAgMzI3OiBcIlFVQVJUSUxFXCIsXG4gIDMyODogXCJQRVJDRU5USUxFXCIsXG4gIDMyOTogXCJQRVJDRU5UUkFOS1wiLFxuICAzMzA6IFwiTU9ERVwiLFxuICAzMzE6IFwiVFJJTU1FQU5cIixcbiAgMzMyOiBcIlRJTlZcIixcbiAgMzM0OiBcIk1PVklFLkNPTU1BTkRcIixcbiAgMzM1OiBcIkdFVC5NT1ZJRVwiLFxuICAzMzY6IFwiQ09OQ0FURU5BVEVcIixcbiAgMzM3OiBcIlBPV0VSXCIsXG4gIDMzODogXCJQSVZPVC5BREQuREFUQVwiLFxuICAzMzk6IFwiR0VULlBJVk9ULlRBQkxFXCIsXG4gIDM0MDogXCJHRVQuUElWT1QuRklFTERcIixcbiAgMzQxOiBcIkdFVC5QSVZPVC5JVEVNXCIsXG4gIDM0MjogXCJSQURJQU5TXCIsXG4gIDM0MzogXCJERUdSRUVTXCIsXG4gIDM0NDogXCJTVUJUT1RBTFwiLFxuICAzNDU6IFwiU1VNSUZcIixcbiAgMzQ2OiBcIkNPVU5USUZcIixcbiAgMzQ3OiBcIkNPVU5UQkxBTktcIixcbiAgMzQ4OiBcIlNDRU5BUklPLkdFVFwiLFxuICAzNDk6IFwiT1BUSU9OUy5MSVNUUy5HRVRcIixcbiAgMzUwOiBcIklTUE1UXCIsXG4gIDM1MTogXCJEQVRFRElGXCIsXG4gIDM1MjogXCJEQVRFU1RSSU5HXCIsXG4gIDM1MzogXCJOVU1CRVJTVFJJTkdcIixcbiAgMzU0OiBcIlJPTUFOXCIsXG4gIDM1NTogXCJPUEVOLkRJQUxPR1wiLFxuICAzNTY6IFwiU0FWRS5ESUFMT0dcIixcbiAgMzU3OiBcIlZJRVcuR0VUXCIsXG4gIDM1ODogXCJHRVRQSVZPVERBVEFcIixcbiAgMzU5OiBcIkhZUEVSTElOS1wiLFxuICAzNjA6IFwiUEhPTkVUSUNcIixcbiAgMzYxOiBcIkFWRVJBR0VBXCIsXG4gIDM2MjogXCJNQVhBXCIsXG4gIDM2MzogXCJNSU5BXCIsXG4gIDM2NDogXCJTVERFVlBBXCIsXG4gIDM2NTogXCJWQVJQQVwiLFxuICAzNjY6IFwiU1RERVZBXCIsXG4gIDM2NzogXCJWQVJBXCIsXG4gIDM2ODogXCJCQUhUVEVYVFwiLFxuICAzNjk6IFwiVEhBSURBWU9GV0VFS1wiLFxuICAzNzA6IFwiVEhBSURJR0lUXCIsXG4gIDM3MTogXCJUSEFJTU9OVEhPRllFQVJcIixcbiAgMzcyOiBcIlRIQUlOVU1TT1VORFwiLFxuICAzNzM6IFwiVEhBSU5VTVNUUklOR1wiLFxuICAzNzQ6IFwiVEhBSVNUUklOR0xFTkdUSFwiLFxuICAzNzU6IFwiSVNUSEFJRElHSVRcIixcbiAgMzc2OiBcIlJPVU5EQkFIVERPV05cIixcbiAgMzc3OiBcIlJPVU5EQkFIVFVQXCIsXG4gIDM3ODogXCJUSEFJWUVBUlwiLFxuICAzNzk6IFwiUlREXCIsXG4gIDM4MDogXCJDVUJFVkFMVUVcIixcbiAgMzgxOiBcIkNVQkVNRU1CRVJcIixcbiAgMzgyOiBcIkNVQkVNRU1CRVJQUk9QRVJUWVwiLFxuICAzODM6IFwiQ1VCRVJBTktFRE1FTUJFUlwiLFxuICAzODQ6IFwiSEVYMkJJTlwiLFxuICAzODU6IFwiSEVYMkRFQ1wiLFxuICAzODY6IFwiSEVYMk9DVFwiLFxuICAzODc6IFwiREVDMkJJTlwiLFxuICAzODg6IFwiREVDMkhFWFwiLFxuICAzODk6IFwiREVDMk9DVFwiLFxuICAzOTA6IFwiT0NUMkJJTlwiLFxuICAzOTE6IFwiT0NUMkhFWFwiLFxuICAzOTI6IFwiT0NUMkRFQ1wiLFxuICAzOTM6IFwiQklOMkRFQ1wiLFxuICAzOTQ6IFwiQklOMk9DVFwiLFxuICAzOTU6IFwiQklOMkhFWFwiLFxuICAzOTY6IFwiSU1TVUJcIixcbiAgMzk3OiBcIklNRElWXCIsXG4gIDM5ODogXCJJTVBPV0VSXCIsXG4gIDM5OTogXCJJTUFCU1wiLFxuICA0MDA6IFwiSU1TUVJUXCIsXG4gIDQwMTogXCJJTUxOXCIsXG4gIDQwMjogXCJJTUxPRzJcIixcbiAgNDAzOiBcIklNTE9HMTBcIixcbiAgNDA0OiBcIklNU0lOXCIsXG4gIDQwNTogXCJJTUNPU1wiLFxuICA0MDY6IFwiSU1FWFBcIixcbiAgNDA3OiBcIklNQVJHVU1FTlRcIixcbiAgNDA4OiBcIklNQ09OSlVHQVRFXCIsXG4gIDQwOTogXCJJTUFHSU5BUllcIixcbiAgNDEwOiBcIklNUkVBTFwiLFxuICA0MTE6IFwiQ09NUExFWFwiLFxuICA0MTI6IFwiSU1TVU1cIixcbiAgNDEzOiBcIklNUFJPRFVDVFwiLFxuICA0MTQ6IFwiU0VSSUVTU1VNXCIsXG4gIDQxNTogXCJGQUNURE9VQkxFXCIsXG4gIDQxNjogXCJTUVJUUElcIixcbiAgNDE3OiBcIlFVT1RJRU5UXCIsXG4gIDQxODogXCJERUxUQVwiLFxuICA0MTk6IFwiR0VTVEVQXCIsXG4gIDQyMDogXCJJU0VWRU5cIixcbiAgNDIxOiBcIklTT0REXCIsXG4gIDQyMjogXCJNUk9VTkRcIixcbiAgNDIzOiBcIkVSRlwiLFxuICA0MjQ6IFwiRVJGQ1wiLFxuICA0MjU6IFwiQkVTU0VMSlwiLFxuICA0MjY6IFwiQkVTU0VMS1wiLFxuICA0Mjc6IFwiQkVTU0VMWVwiLFxuICA0Mjg6IFwiQkVTU0VMSVwiLFxuICA0Mjk6IFwiWElSUlwiLFxuICA0MzA6IFwiWE5QVlwiLFxuICA0MzE6IFwiUFJJQ0VNQVRcIixcbiAgNDMyOiBcIllJRUxETUFUXCIsXG4gIDQzMzogXCJJTlRSQVRFXCIsXG4gIDQzNDogXCJSRUNFSVZFRFwiLFxuICA0MzU6IFwiRElTQ1wiLFxuICA0MzY6IFwiUFJJQ0VESVNDXCIsXG4gIDQzNzogXCJZSUVMRERJU0NcIixcbiAgNDM4OiBcIlRCSUxMRVFcIixcbiAgNDM5OiBcIlRCSUxMUFJJQ0VcIixcbiAgNDQwOiBcIlRCSUxMWUlFTERcIixcbiAgNDQxOiBcIlBSSUNFXCIsXG4gIDQ0MjogXCJZSUVMRFwiLFxuICA0NDM6IFwiRE9MTEFSREVcIixcbiAgNDQ0OiBcIkRPTExBUkZSXCIsXG4gIDQ0NTogXCJOT01JTkFMXCIsXG4gIDQ0NjogXCJFRkZFQ1RcIixcbiAgNDQ3OiBcIkNVTVBSSU5DXCIsXG4gIDQ0ODogXCJDVU1JUE1UXCIsXG4gIDQ0OTogXCJFREFURVwiLFxuICA0NTA6IFwiRU9NT05USFwiLFxuICA0NTE6IFwiWUVBUkZSQUNcIixcbiAgNDUyOiBcIkNPVVBEQVlCU1wiLFxuICA0NTM6IFwiQ09VUERBWVNcIixcbiAgNDU0OiBcIkNPVVBEQVlTTkNcIixcbiAgNDU1OiBcIkNPVVBOQ0RcIixcbiAgNDU2OiBcIkNPVVBOVU1cIixcbiAgNDU3OiBcIkNPVVBQQ0RcIixcbiAgNDU4OiBcIkRVUkFUSU9OXCIsXG4gIDQ1OTogXCJNRFVSQVRJT05cIixcbiAgNDYwOiBcIk9ERExQUklDRVwiLFxuICA0NjE6IFwiT0RETFlJRUxEXCIsXG4gIDQ2MjogXCJPRERGUFJJQ0VcIixcbiAgNDYzOiBcIk9EREZZSUVMRFwiLFxuICA0NjQ6IFwiUkFOREJFVFdFRU5cIixcbiAgNDY1OiBcIldFRUtOVU1cIixcbiAgNDY2OiBcIkFNT1JERUdSQ1wiLFxuICA0Njc6IFwiQU1PUkxJTkNcIixcbiAgNDY4OiBcIkNPTlZFUlRcIixcbiAgNzI0OiBcIlNIRUVUSlNcIixcbiAgNDY5OiBcIkFDQ1JJTlRcIixcbiAgNDcwOiBcIkFDQ1JJTlRNXCIsXG4gIDQ3MTogXCJXT1JLREFZXCIsXG4gIDQ3MjogXCJORVRXT1JLREFZU1wiLFxuICA0NzM6IFwiR0NEXCIsXG4gIDQ3NDogXCJNVUxUSU5PTUlBTFwiLFxuICA0NzU6IFwiTENNXCIsXG4gIDQ3NjogXCJGVlNDSEVEVUxFXCIsXG4gIDQ3NzogXCJDVUJFS1BJTUVNQkVSXCIsXG4gIDQ3ODogXCJDVUJFU0VUXCIsXG4gIDQ3OTogXCJDVUJFU0VUQ09VTlRcIixcbiAgNDgwOiBcIklGRVJST1JcIixcbiAgNDgxOiBcIkNPVU5USUZTXCIsXG4gIDQ4MjogXCJTVU1JRlNcIixcbiAgNDgzOiBcIkFWRVJBR0VJRlwiLFxuICA0ODQ6IFwiQVZFUkFHRUlGU1wiXG59O1xudmFyIEZ0YWJBcmdjID0ge1xuICAyOiAxLFxuICAzOiAxLFxuICAxMDogMCxcbiAgMTU6IDEsXG4gIDE2OiAxLFxuICAxNzogMSxcbiAgMTg6IDEsXG4gIDE5OiAwLFxuICAyMDogMSxcbiAgMjE6IDEsXG4gIDIyOiAxLFxuICAyMzogMSxcbiAgMjQ6IDEsXG4gIDI1OiAxLFxuICAyNjogMSxcbiAgMjc6IDIsXG4gIDMwOiAyLFxuICAzMTogMyxcbiAgMzI6IDEsXG4gIDMzOiAxLFxuICAzNDogMCxcbiAgMzU6IDAsXG4gIDM4OiAxLFxuICAzOTogMixcbiAgNDA6IDMsXG4gIDQxOiAzLFxuICA0MjogMyxcbiAgNDM6IDMsXG4gIDQ0OiAzLFxuICA0NTogMyxcbiAgNDc6IDMsXG4gIDQ4OiAyLFxuICA1MzogMSxcbiAgNjE6IDMsXG4gIDYzOiAwLFxuICA2NTogMyxcbiAgNjY6IDMsXG4gIDY3OiAxLFxuICA2ODogMSxcbiAgNjk6IDEsXG4gIDcwOiAxLFxuICA3MTogMSxcbiAgNzI6IDEsXG4gIDczOiAxLFxuICA3NDogMCxcbiAgNzU6IDEsXG4gIDc2OiAxLFxuICA3NzogMSxcbiAgNzk6IDIsXG4gIDgwOiAyLFxuICA4MzogMSxcbiAgODU6IDAsXG4gIDg2OiAxLFxuICA4OTogMCxcbiAgOTA6IDEsXG4gIDk0OiAwLFxuICA5NTogMCxcbiAgOTc6IDIsXG4gIDk4OiAxLFxuICA5OTogMSxcbiAgMTAxOiAzLFxuICAxMDI6IDMsXG4gIDEwNTogMSxcbiAgMTA2OiAxLFxuICAxMDg6IDIsXG4gIDExMTogMSxcbiAgMTEyOiAxLFxuICAxMTM6IDEsXG4gIDExNDogMSxcbiAgMTE3OiAyLFxuICAxMTg6IDEsXG4gIDExOTogNCxcbiAgMTIxOiAxLFxuICAxMjY6IDEsXG4gIDEyNzogMSxcbiAgMTI4OiAxLFxuICAxMjk6IDEsXG4gIDEzMDogMSxcbiAgMTMxOiAxLFxuICAxMzM6IDEsXG4gIDEzNDogMSxcbiAgMTM1OiAxLFxuICAxMzY6IDIsXG4gIDEzNzogMixcbiAgMTM4OiAyLFxuICAxNDA6IDEsXG4gIDE0MTogMSxcbiAgMTQyOiAzLFxuICAxNDM6IDQsXG4gIDE0NDogNCxcbiAgMTYxOiAxLFxuICAxNjI6IDEsXG4gIDE2MzogMSxcbiAgMTY0OiAxLFxuICAxNjU6IDIsXG4gIDE3MjogMSxcbiAgMTc1OiAyLFxuICAxNzY6IDIsXG4gIDE3NzogMyxcbiAgMTc4OiAyLFxuICAxNzk6IDEsXG4gIDE4NDogMSxcbiAgMTg2OiAxLFxuICAxODk6IDMsXG4gIDE5MDogMSxcbiAgMTk1OiAzLFxuICAxOTY6IDMsXG4gIDE5NzogMSxcbiAgMTk4OiAxLFxuICAxOTk6IDMsXG4gIDIwMTogMSxcbiAgMjA3OiA0LFxuICAyMTA6IDMsXG4gIDIxMTogMSxcbiAgMjEyOiAyLFxuICAyMTM6IDIsXG4gIDIxNDogMSxcbiAgMjE1OiAxLFxuICAyMjU6IDAsXG4gIDIyOTogMSxcbiAgMjMwOiAxLFxuICAyMzE6IDEsXG4gIDIzMjogMSxcbiAgMjMzOiAxLFxuICAyMzQ6IDEsXG4gIDIzNTogMyxcbiAgMjQ0OiAxLFxuICAyNDc6IDQsXG4gIDI1MjogMixcbiAgMjU3OiAxLFxuICAyNjE6IDEsXG4gIDI3MTogMSxcbiAgMjczOiA0LFxuICAyNzQ6IDIsXG4gIDI3NTogMixcbiAgMjc2OiAyLFxuICAyNzc6IDMsXG4gIDI3ODogMyxcbiAgMjc5OiAxLFxuICAyODA6IDMsXG4gIDI4MTogMyxcbiAgMjgyOiAzLFxuICAyODM6IDEsXG4gIDI4NDogMSxcbiAgMjg1OiAyLFxuICAyODY6IDQsXG4gIDI4NzogMyxcbiAgMjg4OiAyLFxuICAyODk6IDQsXG4gIDI5MDogMyxcbiAgMjkxOiAzLFxuICAyOTI6IDMsXG4gIDI5MzogNCxcbiAgMjk0OiAxLFxuICAyOTU6IDMsXG4gIDI5NjogMSxcbiAgMjk3OiAzLFxuICAyOTg6IDEsXG4gIDI5OTogMixcbiAgMzAwOiAzLFxuICAzMDE6IDMsXG4gIDMwMjogNCxcbiAgMzAzOiAyLFxuICAzMDQ6IDIsXG4gIDMwNTogMixcbiAgMzA2OiAyLFxuICAzMDc6IDIsXG4gIDMwODogMixcbiAgMzA5OiAzLFxuICAzMTA6IDIsXG4gIDMxMTogMixcbiAgMzEyOiAyLFxuICAzMTM6IDIsXG4gIDMxNDogMixcbiAgMzE1OiAyLFxuICAzMTY6IDQsXG4gIDMyNTogMixcbiAgMzI2OiAyLFxuICAzMjc6IDIsXG4gIDMyODogMixcbiAgMzMxOiAyLFxuICAzMzI6IDIsXG4gIDMzNzogMixcbiAgMzQyOiAxLFxuICAzNDM6IDEsXG4gIDM0NjogMixcbiAgMzQ3OiAxLFxuICAzNTA6IDQsXG4gIDM1MTogMyxcbiAgMzUyOiAxLFxuICAzNTM6IDIsXG4gIDM2MDogMSxcbiAgMzY4OiAxLFxuICAzNjk6IDEsXG4gIDM3MDogMSxcbiAgMzcxOiAxLFxuICAzNzI6IDEsXG4gIDM3MzogMSxcbiAgMzc0OiAxLFxuICAzNzU6IDEsXG4gIDM3NjogMSxcbiAgMzc3OiAxLFxuICAzNzg6IDEsXG4gIDM4MjogMyxcbiAgMzg1OiAxLFxuICAzOTI6IDEsXG4gIDM5MzogMSxcbiAgMzk2OiAyLFxuICAzOTc6IDIsXG4gIDM5ODogMixcbiAgMzk5OiAxLFxuICA0MDA6IDEsXG4gIDQwMTogMSxcbiAgNDAyOiAxLFxuICA0MDM6IDEsXG4gIDQwNDogMSxcbiAgNDA1OiAxLFxuICA0MDY6IDEsXG4gIDQwNzogMSxcbiAgNDA4OiAxLFxuICA0MDk6IDEsXG4gIDQxMDogMSxcbiAgNDE0OiA0LFxuICA0MTU6IDEsXG4gIDQxNjogMSxcbiAgNDE3OiAyLFxuICA0MjA6IDEsXG4gIDQyMTogMSxcbiAgNDIyOiAyLFxuICA0MjQ6IDEsXG4gIDQyNTogMixcbiAgNDI2OiAyLFxuICA0Mjc6IDIsXG4gIDQyODogMixcbiAgNDMwOiAzLFxuICA0Mzg6IDMsXG4gIDQzOTogMyxcbiAgNDQwOiAzLFxuICA0NDM6IDIsXG4gIDQ0NDogMixcbiAgNDQ1OiAyLFxuICA0NDY6IDIsXG4gIDQ0NzogNixcbiAgNDQ4OiA2LFxuICA0NDk6IDIsXG4gIDQ1MDogMixcbiAgNDY0OiAyLFxuICA0Njg6IDMsXG4gIDQ3NjogMixcbiAgNDc5OiAxLFxuICA0ODA6IDIsXG4gIDY1NTM1OiAwXG59O1xuLyogUGFydCAzIFRPRE86IGFjdHVhbGx5IHBhcnNlIGZvcm11bGFlICovXG5mdW5jdGlvbiBvZHNfdG9fY3NmX2Zvcm11bGEoZi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYoZi5zbGljZSgwLDMpID09IFwib2Y6XCIpIGYgPSBmLnNsaWNlKDMpO1xuXHQvKiA1LjIgQmFzaWMgRXhwcmVzc2lvbnMgKi9cblx0aWYoZi5jaGFyQ29kZUF0KDApID09IDYxKSB7XG5cdFx0ZiA9IGYuc2xpY2UoMSk7XG5cdFx0aWYoZi5jaGFyQ29kZUF0KDApID09IDYxKSBmID0gZi5zbGljZSgxKTtcblx0fVxuXHRmID0gZi5yZXBsYWNlKC9DT01cXC5NSUNST1NPRlRcXC4vZywgXCJcIik7XG5cdC8qIFBhcnQgMyBTZWN0aW9uIDUuOCBSZWZlcmVuY2VzICovXG5cdGYgPSBmLnJlcGxhY2UoL1xcWygoPzpcXC5bQS1aXStbMC05XSspKD86OlxcLltBLVpdK1swLTldKyk/KVxcXS9nLCBmdW5jdGlvbigkJCwgJDEpIHsgcmV0dXJuICQxLnJlcGxhY2UoL1xcLi9nLFwiXCIpOyB9KTtcblx0LyogVE9ETzogc29tZXRoaW5nIG90aGVyIHRoYW4gdGhpcyAqL1xuXHRmID0gZi5yZXBsYWNlKC9cXFsuKCNbQS1aXSpbPyFdKVxcXS9nLCBcIiQxXCIpO1xuXHRyZXR1cm4gZi5yZXBsYWNlKC9bO35dL2csXCIsXCIpLnJlcGxhY2UoL1xcfC9nLFwiO1wiKTtcbn1cblxuZnVuY3Rpb24gY3NmX3RvX29kc19mb3JtdWxhKGYvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gXCJvZjo9XCIgKyBmLnJlcGxhY2UoY3JlZnJlZ2V4LCBcIiQxWy4kMiQzJDQkNV1cIikucmVwbGFjZSgvXFxdOlxcWy9nLFwiOlwiKTtcblx0LyogVE9ETzogc29tZXRoaW5nIG90aGVyIHRoYW4gdGhpcyAqL1xuXHRyZXR1cm4gby5yZXBsYWNlKC87L2csIFwifFwiKS5yZXBsYWNlKC8sL2csXCI7XCIpO1xufVxuXG5mdW5jdGlvbiBvZHNfdG9fY3NmXzNEKHIvKjpzdHJpbmcqLykvKjpbc3RyaW5nLCBzdHJpbmddKi8ge1xuXHR2YXIgYSA9IHIuc3BsaXQoXCI6XCIpO1xuXHR2YXIgcyA9IGFbMF0uc3BsaXQoXCIuXCIpWzBdO1xuXHRyZXR1cm4gW3MsIGFbMF0uc3BsaXQoXCIuXCIpWzFdICsgKGEubGVuZ3RoID4gMSA/IChcIjpcIiArIChhWzFdLnNwbGl0KFwiLlwiKVsxXSB8fCBhWzFdLnNwbGl0KFwiLlwiKVswXSkpIDogXCJcIildO1xufVxuXG5mdW5jdGlvbiBjc2ZfdG9fb2RzXzNEKHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiByLnJlcGxhY2UoL1xcLi8sXCIhXCIpO1xufVxuXG52YXIgc3RycyA9IHt9OyAvLyBzaGFyZWQgc3RyaW5nc1xudmFyIF9zc2ZvcHRzID0ge307IC8vIHNwcmVhZHNoZWV0IGZvcm1hdHRpbmcgb3B0aW9uc1xuXG5cbi8qZ2xvYmFsIE1hcCAqL1xudmFyIGJyb3dzZXJfaGFzX01hcCA9IHR5cGVvZiBNYXAgIT09ICd1bmRlZmluZWQnO1xuXG5mdW5jdGlvbiBnZXRfc3N0X2lkKHNzdC8qOlNTVCovLCBzdHIvKjpzdHJpbmcqLywgcmV2KS8qOm51bWJlciovIHtcblx0dmFyIGkgPSAwLCBsZW4gPSBzc3QubGVuZ3RoO1xuXHRpZihyZXYpIHtcblx0XHRpZihicm93c2VyX2hhc19NYXAgPyByZXYuaGFzKHN0cikgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmV2LCBzdHIpKSB7XG5cdFx0XHR2YXIgcmV2YXJyID0gYnJvd3Nlcl9oYXNfTWFwID8gcmV2LmdldChzdHIpIDogcmV2W3N0cl07XG5cdFx0XHRmb3IoOyBpIDwgcmV2YXJyLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdGlmKHNzdFtyZXZhcnJbaV1dLnQgPT09IHN0cikgeyBzc3QuQ291bnQgKys7IHJldHVybiByZXZhcnJbaV07IH1cblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBmb3IoOyBpIDwgbGVuOyArK2kpIHtcblx0XHRpZihzc3RbaV0udCA9PT0gc3RyKSB7IHNzdC5Db3VudCArKzsgcmV0dXJuIGk7IH1cblx0fVxuXHRzc3RbbGVuXSA9ICh7dDpzdHJ9Lyo6YW55Ki8pOyBzc3QuQ291bnQgKys7IHNzdC5VbmlxdWUgKys7XG5cdGlmKHJldikge1xuXHRcdGlmKGJyb3dzZXJfaGFzX01hcCkge1xuXHRcdFx0aWYoIXJldi5oYXMoc3RyKSkgcmV2LnNldChzdHIsIFtdKTtcblx0XHRcdHJldi5nZXQoc3RyKS5wdXNoKGxlbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmV2LCBzdHIpKSByZXZbc3RyXSA9IFtdO1xuXHRcdFx0cmV2W3N0cl0ucHVzaChsZW4pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbGVuO1xufVxuXG5mdW5jdGlvbiBjb2xfb2JqX3coQy8qOm51bWJlciovLCBjb2wpIHtcblx0dmFyIHAgPSAoe21pbjpDKzEsbWF4OkMrMX0vKjphbnkqLyk7XG5cdC8qIHdjaCAoY2hhcnMpLCB3cHggKHBpeGVscykgKi9cblx0dmFyIHdjaCA9IC0xO1xuXHRpZihjb2wuTURXKSBNRFcgPSBjb2wuTURXO1xuXHRpZihjb2wud2lkdGggIT0gbnVsbCkgcC5jdXN0b21XaWR0aCA9IDE7XG5cdGVsc2UgaWYoY29sLndweCAhPSBudWxsKSB3Y2ggPSBweDJjaGFyKGNvbC53cHgpO1xuXHRlbHNlIGlmKGNvbC53Y2ggIT0gbnVsbCkgd2NoID0gY29sLndjaDtcblx0aWYod2NoID4gLTEpIHsgcC53aWR0aCA9IGNoYXIyd2lkdGgod2NoKTsgcC5jdXN0b21XaWR0aCA9IDE7IH1cblx0ZWxzZSBpZihjb2wud2lkdGggIT0gbnVsbCkgcC53aWR0aCA9IGNvbC53aWR0aDtcblx0aWYoY29sLmhpZGRlbikgcC5oaWRkZW4gPSB0cnVlO1xuXHRpZihjb2wubGV2ZWwgIT0gbnVsbCkgeyBwLm91dGxpbmVMZXZlbCA9IHAubGV2ZWwgPSBjb2wubGV2ZWw7IH1cblx0cmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRfbWFyZ2lucyhtYXJnaW5zLyo6TWFyZ2lucyovLCBtb2RlLyo6P3N0cmluZyovKSB7XG5cdGlmKCFtYXJnaW5zKSByZXR1cm47XG5cdHZhciBkZWZzID0gWzAuNywgMC43LCAwLjc1LCAwLjc1LCAwLjMsIDAuM107XG5cdGlmKG1vZGUgPT0gJ3hsbWwnKSBkZWZzID0gWzEsIDEsIDEsIDEsIDAuNSwgMC41XTtcblx0aWYobWFyZ2lucy5sZWZ0ICAgPT0gbnVsbCkgbWFyZ2lucy5sZWZ0ICAgPSBkZWZzWzBdO1xuXHRpZihtYXJnaW5zLnJpZ2h0ICA9PSBudWxsKSBtYXJnaW5zLnJpZ2h0ICA9IGRlZnNbMV07XG5cdGlmKG1hcmdpbnMudG9wICAgID09IG51bGwpIG1hcmdpbnMudG9wICAgID0gZGVmc1syXTtcblx0aWYobWFyZ2lucy5ib3R0b20gPT0gbnVsbCkgbWFyZ2lucy5ib3R0b20gPSBkZWZzWzNdO1xuXHRpZihtYXJnaW5zLmhlYWRlciA9PSBudWxsKSBtYXJnaW5zLmhlYWRlciA9IGRlZnNbNF07XG5cdGlmKG1hcmdpbnMuZm9vdGVyID09IG51bGwpIG1hcmdpbnMuZm9vdGVyID0gZGVmc1s1XTtcbn1cblxuZnVuY3Rpb24gZ2V0X2NlbGxfc3R5bGUoc3R5bGVzLyo6QXJyYXk8YW55PiovLCBjZWxsLyo6Q2VsbCovLCBvcHRzKSB7XG5cdHZhciB6ID0gb3B0cy5yZXZzc2ZbY2VsbC56ICE9IG51bGwgPyBjZWxsLnogOiBcIkdlbmVyYWxcIl07XG5cdHZhciBpID0gMHgzYywgbGVuID0gc3R5bGVzLmxlbmd0aDtcblx0aWYoeiA9PSBudWxsICYmIG9wdHMuc3NmKSB7XG5cdFx0Zm9yKDsgaSA8IDB4MTg4OyArK2kpIGlmKG9wdHMuc3NmW2ldID09IG51bGwpIHtcblx0XHRcdFNTRl9sb2FkKGNlbGwueiwgaSk7XG5cdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0b3B0cy5zc2ZbaV0gPSBjZWxsLno7XG5cdFx0XHRvcHRzLnJldnNzZltjZWxsLnpdID0geiA9IGk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0Zm9yKGkgPSAwOyBpICE9IGxlbjsgKytpKSBpZihzdHlsZXNbaV0ubnVtRm10SWQgPT09IHopIHJldHVybiBpO1xuXHRzdHlsZXNbbGVuXSA9IHtcblx0XHRudW1GbXRJZDp6LFxuXHRcdGZvbnRJZDowLFxuXHRcdGZpbGxJZDowLFxuXHRcdGJvcmRlcklkOjAsXG5cdFx0eGZJZDowLFxuXHRcdGFwcGx5TnVtYmVyRm9ybWF0OjFcblx0fTtcblx0cmV0dXJuIGxlbjtcbn1cblxuZnVuY3Rpb24gc2FmZV9mb3JtYXQocC8qOkNlbGwqLywgZm10aWQvKjpudW1iZXIqLywgZmlsbGlkLyo6P251bWJlciovLCBvcHRzLCB0aGVtZXMsIHN0eWxlcykge1xuXHR0cnkge1xuXHRcdGlmKG9wdHMuY2VsbE5GKSBwLnogPSB0YWJsZV9mbXRbZm10aWRdO1xuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cblx0aWYocC50ID09PSAneicgJiYgIW9wdHMuY2VsbFN0eWxlcykgcmV0dXJuO1xuXHRpZihwLnQgPT09ICdkJyAmJiB0eXBlb2YgcC52ID09PSAnc3RyaW5nJykgcC52ID0gcGFyc2VEYXRlKHAudik7XG5cdGlmKCghb3B0cyB8fCBvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgJiYgcC50ICE9PSAneicpIHRyeSB7XG5cdFx0aWYodGFibGVfZm10W2ZtdGlkXSA9PSBudWxsKSBTU0ZfbG9hZChTU0ZJbXBsaWNpdFtmbXRpZF0gfHwgXCJHZW5lcmFsXCIsIGZtdGlkKTtcblx0XHRpZihwLnQgPT09ICdlJykgcC53ID0gcC53IHx8IEJFcnJbcC52XTtcblx0XHRlbHNlIGlmKGZtdGlkID09PSAwKSB7XG5cdFx0XHRpZihwLnQgPT09ICduJykge1xuXHRcdFx0XHRpZigocC52fDApID09PSBwLnYpIHAudyA9IHAudi50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWxfbnVtKHAudik7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmKHAudCA9PT0gJ2QnKSB7XG5cdFx0XHRcdHZhciBkZCA9IGRhdGVudW0ocC52KTtcblx0XHRcdFx0aWYoKGRkfDApID09PSBkZCkgcC53ID0gZGQudG9TdHJpbmcoMTApO1xuXHRcdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsX251bShkZCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmKHAudiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gXCJcIjtcblx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWwocC52LF9zc2ZvcHRzKTtcblx0XHR9XG5cdFx0ZWxzZSBpZihwLnQgPT09ICdkJykgcC53ID0gU1NGX2Zvcm1hdChmbXRpZCxkYXRlbnVtKHAudiksX3NzZm9wdHMpO1xuXHRcdGVsc2UgcC53ID0gU1NGX2Zvcm1hdChmbXRpZCxwLnYsX3NzZm9wdHMpO1xuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cblx0aWYoIW9wdHMuY2VsbFN0eWxlcykgcmV0dXJuO1xuXHRpZihmaWxsaWQgIT0gbnVsbCkgdHJ5IHtcblx0XHRwLnMgPSBzdHlsZXMuRmlsbHNbZmlsbGlkXTtcblx0XHRpZiAocC5zLmZnQ29sb3IgJiYgcC5zLmZnQ29sb3IudGhlbWUgJiYgIXAucy5mZ0NvbG9yLnJnYikge1xuXHRcdFx0cC5zLmZnQ29sb3IucmdiID0gcmdiX3RpbnQodGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5mZ0NvbG9yLnRoZW1lXS5yZ2IsIHAucy5mZ0NvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRpZihvcHRzLldURikgcC5zLmZnQ29sb3IucmF3X3JnYiA9IHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtwLnMuZmdDb2xvci50aGVtZV0ucmdiO1xuXHRcdH1cblx0XHRpZiAocC5zLmJnQ29sb3IgJiYgcC5zLmJnQ29sb3IudGhlbWUpIHtcblx0XHRcdHAucy5iZ0NvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtwLnMuYmdDb2xvci50aGVtZV0ucmdiLCBwLnMuYmdDb2xvci50aW50IHx8IDApO1xuXHRcdFx0aWYob3B0cy5XVEYpIHAucy5iZ0NvbG9yLnJhd19yZ2IgPSB0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbcC5zLmJnQ29sb3IudGhlbWVdLnJnYjtcblx0XHR9XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURiAmJiBzdHlsZXMuRmlsbHMpIHRocm93IGU7IH1cbn1cblxuZnVuY3Rpb24gY2hlY2tfd3Mod3MvKjpXb3Jrc2hlZXQqLywgc25hbWUvKjpzdHJpbmcqLywgaS8qOm51bWJlciovKSB7XG5cdGlmKHdzICYmIHdzWychcmVmJ10pIHtcblx0XHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0XHRpZihyYW5nZS5lLmMgPCByYW5nZS5zLmMgfHwgcmFuZ2UuZS5yIDwgcmFuZ2Uucy5yKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgcmFuZ2UgKFwiICsgaSArIFwiKTogXCIgKyB3c1snIXJlZiddKTtcblx0fVxufVxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2RpbSh3cy8qOldvcmtzaGVldCovLCBzLyo6c3RyaW5nKi8pIHtcblx0dmFyIGQgPSBzYWZlX2RlY29kZV9yYW5nZShzKTtcblx0aWYoZC5zLnI8PWQuZS5yICYmIGQucy5jPD1kLmUuYyAmJiBkLnMucj49MCAmJiBkLnMuYz49MCkgd3NbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKGQpO1xufVxudmFyIG1lcmdlY3JlZ2V4ID0gLzwoPzpcXHc6KT9tZXJnZUNlbGwgcmVmPVwiW0EtWjAtOTpdK1wiXFxzKltcXC9dPz4vZztcbnZhciBzaGVldGRhdGFyZWdleCA9IC88KD86XFx3KzopP3NoZWV0RGF0YVtePl0qPihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9zaGVldERhdGE+LztcbnZhciBobGlua3JlZ2V4ID0gLzwoPzpcXHc6KT9oeXBlcmxpbmsgW14+XSo+L21nO1xudmFyIGRpbXJlZ2V4ID0gL1wiKFxcdyo6XFx3KilcIi87XG52YXIgY29scmVnZXggPSAvPCg/OlxcdzopP2NvbFxcYltePl0qW1xcL10/Pi9nO1xudmFyIGFmcmVnZXggPSAvPCg/OlxcdzopP2F1dG9GaWx0ZXJbXj5dKihbXFwvXXw+KFtcXHNcXFNdKik8XFwvKD86XFx3Oik/YXV0b0ZpbHRlcik+L2c7XG52YXIgbWFyZ2lucmVnZXg9IC88KD86XFx3Oik/cGFnZU1hcmdpbnNbXj5dKlxcLz4vZztcbnZhciBzaGVldHBycmVnZXggPSAvPCg/OlxcdzopP3NoZWV0UHJcXGIoPzpbXj5hLXpdW14+XSopP1xcLz4vO1xudmFyIHNoZWV0cHJyZWdleDI9IC88KD86XFx3Oik/c2hlZXRQcltePl0qKD86W1xcL118PihbXFxzXFxTXSopPFxcLyg/OlxcdzopP3NoZWV0UHIpPi87XG52YXIgc3ZzcmVnZXggPSAvPCg/OlxcdzopP3NoZWV0Vmlld3NbXj5dKig/OltcXC9dfD4oW1xcc1xcU10qKTxcXC8oPzpcXHc6KT9zaGVldFZpZXdzKT4vO1xuXG4vKiAxOC4zIFdvcmtzaGVldHMgKi9cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbChkYXRhLyo6P3N0cmluZyovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgcmVscywgd2IvKjpXQldCUHJvcHMqLywgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdGlmKCFyZWxzKSByZWxzID0geychaWQnOnt9fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblxuXHQvKiAxOC4zLjEuOTkgd29ya3NoZWV0IENUX1dvcmtzaGVldCAqL1xuXHR2YXIgcyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdHZhciByZWZndWVzcy8qOlJhbmdlKi8gPSAoe3M6IHtyOjIwMDAwMDAsIGM6MjAwMDAwMH0sIGU6IHtyOjAsIGM6MH0gfS8qOmFueSovKTtcblxuXHR2YXIgZGF0YTEgPSBcIlwiLCBkYXRhMiA9IFwiXCI7XG5cdHZhciBtdGNoLyo6P2FueSovID0gZGF0YS5tYXRjaChzaGVldGRhdGFyZWdleCk7XG5cdGlmKG10Y2gpIHtcblx0XHRkYXRhMSA9IGRhdGEuc2xpY2UoMCwgbXRjaC5pbmRleCk7XG5cdFx0ZGF0YTIgPSBkYXRhLnNsaWNlKG10Y2guaW5kZXggKyBtdGNoWzBdLmxlbmd0aCk7XG5cdH0gZWxzZSBkYXRhMSA9IGRhdGEyID0gZGF0YTtcblxuXHQvKiAxOC4zLjEuODIgc2hlZXRQciBDVF9TaGVldFByICovXG5cdHZhciBzaGVldFByID0gZGF0YTEubWF0Y2goc2hlZXRwcnJlZ2V4KTtcblx0aWYoc2hlZXRQcikgcGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQclswXSwgcywgd2IsIGlkeCk7XG5cdGVsc2UgaWYoKHNoZWV0UHIgPSBkYXRhMS5tYXRjaChzaGVldHBycmVnZXgyKSkpIHBhcnNlX3dzX3htbF9zaGVldHByMihzaGVldFByWzBdLCBzaGVldFByWzFdfHxcIlwiLCBzLCB3YiwgaWR4LCBzdHlsZXMsIHRoZW1lcyk7XG5cblx0LyogMTguMy4xLjM1IGRpbWVuc2lvbiBDVF9TaGVldERpbWVuc2lvbiAqL1xuXHR2YXIgcmlkeCA9IChkYXRhMS5tYXRjaCgvPCg/Olxcdyo6KT9kaW1lbnNpb24vKXx8e2luZGV4Oi0xfSkuaW5kZXg7XG5cdGlmKHJpZHggPiAwKSB7XG5cdFx0dmFyIHJlZiA9IGRhdGExLnNsaWNlKHJpZHgscmlkeCs1MCkubWF0Y2goZGltcmVnZXgpO1xuXHRcdGlmKHJlZikgcGFyc2Vfd3NfeG1sX2RpbShzLCByZWZbMV0pO1xuXHR9XG5cblx0LyogMTguMy4xLjg4IHNoZWV0Vmlld3MgQ1RfU2hlZXRWaWV3cyAqL1xuXHR2YXIgc3ZzID0gZGF0YTEubWF0Y2goc3ZzcmVnZXgpO1xuXHRpZihzdnMgJiYgc3ZzWzFdKSBwYXJzZV93c194bWxfc2hlZXR2aWV3cyhzdnNbMV0sIHdiKTtcblxuXHQvKiAxOC4zLjEuMTcgY29scyBDVF9Db2xzICovXG5cdHZhciBjb2x1bW5zLyo6QXJyYXk8Q29sSW5mbz4qLyA9IFtdO1xuXHRpZihvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHQvKiAxOC4zLjEuMTMgY29sIENUX0NvbCAqL1xuXHRcdHZhciBjb2xzID0gZGF0YTEubWF0Y2goY29scmVnZXgpO1xuXHRcdGlmKGNvbHMpIHBhcnNlX3dzX3htbF9jb2xzKGNvbHVtbnMsIGNvbHMpO1xuXHR9XG5cblx0LyogMTguMy4xLjgwIHNoZWV0RGF0YSBDVF9TaGVldERhdGEgPyAqL1xuXHRpZihtdGNoKSBwYXJzZV93c194bWxfZGF0YShtdGNoWzFdLCBzLCBvcHRzLCByZWZndWVzcywgdGhlbWVzLCBzdHlsZXMpO1xuXG5cdC8qIDE4LjMuMS4yICBhdXRvRmlsdGVyIENUX0F1dG9GaWx0ZXIgKi9cblx0dmFyIGFmaWx0ZXIgPSBkYXRhMi5tYXRjaChhZnJlZ2V4KTtcblx0aWYoYWZpbHRlcikgc1snIWF1dG9maWx0ZXInXSA9IHBhcnNlX3dzX3htbF9hdXRvZmlsdGVyKGFmaWx0ZXJbMF0pO1xuXG5cdC8qIDE4LjMuMS41NSBtZXJnZUNlbGxzIENUX01lcmdlQ2VsbHMgKi9cblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBfbWVyZ2UgPSBkYXRhMi5tYXRjaChtZXJnZWNyZWdleCk7XG5cdGlmKF9tZXJnZSkgZm9yKHJpZHggPSAwOyByaWR4ICE9IF9tZXJnZS5sZW5ndGg7ICsrcmlkeClcblx0XHRtZXJnZXNbcmlkeF0gPSBzYWZlX2RlY29kZV9yYW5nZShfbWVyZ2VbcmlkeF0uc2xpY2UoX21lcmdlW3JpZHhdLmluZGV4T2YoXCJcXFwiXCIpKzEpKTtcblxuXHQvKiAxOC4zLjEuNDggaHlwZXJsaW5rcyBDVF9IeXBlcmxpbmtzICovXG5cdHZhciBobGluayA9IGRhdGEyLm1hdGNoKGhsaW5rcmVnZXgpO1xuXHRpZihobGluaykgcGFyc2Vfd3NfeG1sX2hsaW5rcyhzLCBobGluaywgcmVscyk7XG5cblx0LyogMTguMy4xLjYyIHBhZ2VNYXJnaW5zIENUX1BhZ2VNYXJnaW5zICovXG5cdHZhciBtYXJnaW5zID0gZGF0YTIubWF0Y2gobWFyZ2lucmVnZXgpO1xuXHRpZihtYXJnaW5zKSBzWychbWFyZ2lucyddID0gcGFyc2Vfd3NfeG1sX21hcmdpbnMocGFyc2V4bWx0YWcobWFyZ2luc1swXSkpO1xuXG5cdGlmKCFzW1wiIXJlZlwiXSAmJiByZWZndWVzcy5lLmMgPj0gcmVmZ3Vlc3Mucy5jICYmIHJlZmd1ZXNzLmUuciA+PSByZWZndWVzcy5zLnIpIHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0aWYob3B0cy5zaGVldFJvd3MgPiAwICYmIHNbXCIhcmVmXCJdKSB7XG5cdFx0dmFyIHRtcHJlZiA9IHNhZmVfZGVjb2RlX3JhbmdlKHNbXCIhcmVmXCJdKTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyA8PSArdG1wcmVmLmUucikge1xuXHRcdFx0dG1wcmVmLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPiByZWZndWVzcy5lLnIpIHRtcHJlZi5lLnIgPSByZWZndWVzcy5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5yIDwgdG1wcmVmLnMucikgdG1wcmVmLnMuciA9IHRtcHJlZi5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5jID4gcmVmZ3Vlc3MuZS5jKSB0bXByZWYuZS5jID0gcmVmZ3Vlc3MuZS5jO1xuXHRcdFx0aWYodG1wcmVmLmUuYyA8IHRtcHJlZi5zLmMpIHRtcHJlZi5zLmMgPSB0bXByZWYuZS5jO1xuXHRcdFx0c1tcIiFmdWxscmVmXCJdID0gc1tcIiFyZWZcIl07XG5cdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZSh0bXByZWYpO1xuXHRcdH1cblx0fVxuXHRpZihjb2x1bW5zLmxlbmd0aCA+IDApIHNbXCIhY29sc1wiXSA9IGNvbHVtbnM7XG5cdGlmKG1lcmdlcy5sZW5ndGggPiAwKSBzW1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0cmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9tZXJnZXMobWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8pLyo6c3RyaW5nKi8ge1xuXHRpZihtZXJnZXMubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblx0dmFyIG8gPSAnPG1lcmdlQ2VsbHMgY291bnQ9XCInICsgbWVyZ2VzLmxlbmd0aCArICdcIj4nO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IG1lcmdlcy5sZW5ndGg7ICsraSkgbyArPSAnPG1lcmdlQ2VsbCByZWY9XCInICsgZW5jb2RlX3JhbmdlKG1lcmdlc1tpXSkgKyAnXCIvPic7XG5cdHJldHVybiBvICsgJzwvbWVyZ2VDZWxscz4nO1xufVxuXG4vKiAxOC4zLjEuODItMyBzaGVldFByIENUX0NoYXJ0c2hlZXRQciAvIENUX1NoZWV0UHIgKi9cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9zaGVldHByKHNoZWV0UHIvKjpzdHJpbmcqLywgcywgd2IvKjpXQldCUHJvcHMqLywgaWR4Lyo6bnVtYmVyKi8pIHtcblx0dmFyIGRhdGEgPSBwYXJzZXhtbHRhZyhzaGVldFByKTtcblx0aWYoIXdiLlNoZWV0c1tpZHhdKSB3Yi5TaGVldHNbaWR4XSA9IHt9O1xuXHRpZihkYXRhLmNvZGVOYW1lKSB3Yi5TaGVldHNbaWR4XS5Db2RlTmFtZSA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKGRhdGEuY29kZU5hbWUpKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9zaGVldHByMihzaGVldFByLyo6c3RyaW5nKi8sIGJvZHkvKjpzdHJpbmcqLywgcywgd2IvKjpXQldCUHJvcHMqLywgaWR4Lyo6bnVtYmVyKi8pIHtcblx0cGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQci5zbGljZSgwLCBzaGVldFByLmluZGV4T2YoXCI+XCIpKSwgcywgd2IsIGlkeCk7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bWxfc2hlZXRwcih3cywgd2IsIGlkeCwgb3B0cywgbykge1xuXHR2YXIgbmVlZGVkID0gZmFsc2U7XG5cdHZhciBwcm9wcyA9IHt9LCBwYXlsb2FkID0gbnVsbDtcblx0aWYob3B0cy5ib29rVHlwZSAhPT0gJ3hsc3gnICYmIHdiLnZiYXJhdykge1xuXHRcdHZhciBjbmFtZSA9IHdiLlNoZWV0TmFtZXNbaWR4XTtcblx0XHR0cnkgeyBpZih3Yi5Xb3JrYm9vaykgY25hbWUgPSB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5Db2RlTmFtZSB8fCBjbmFtZTsgfSBjYXRjaChlKSB7fVxuXHRcdG5lZWRlZCA9IHRydWU7XG5cdFx0cHJvcHMuY29kZU5hbWUgPSB1dGY4d3JpdGUoZXNjYXBleG1sKGNuYW1lKSk7XG5cdH1cblxuXHRpZih3cyAmJiB3c1tcIiFvdXRsaW5lXCJdKSB7XG5cdFx0dmFyIG91dGxpbmVwcm9wcyA9IHtzdW1tYXJ5QmVsb3c6MSwgc3VtbWFyeVJpZ2h0OjF9O1xuXHRcdGlmKHdzW1wiIW91dGxpbmVcIl0uYWJvdmUpIG91dGxpbmVwcm9wcy5zdW1tYXJ5QmVsb3cgPSAwO1xuXHRcdGlmKHdzW1wiIW91dGxpbmVcIl0ubGVmdCkgb3V0bGluZXByb3BzLnN1bW1hcnlSaWdodCA9IDA7XG5cdFx0cGF5bG9hZCA9IChwYXlsb2FkfHxcIlwiKSArIHdyaXRleHRhZygnb3V0bGluZVByJywgbnVsbCwgb3V0bGluZXByb3BzKTtcblx0fVxuXG5cdGlmKCFuZWVkZWQgJiYgIXBheWxvYWQpIHJldHVybjtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdzaGVldFByJywgcGF5bG9hZCwgcHJvcHMpKTtcbn1cblxuLyogMTguMy4xLjg1IHNoZWV0UHJvdGVjdGlvbiBDVF9TaGVldFByb3RlY3Rpb24gKi9cbnZhciBzaGVldHByb3RfZGVmZmFsc2UgPSBbXCJvYmplY3RzXCIsIFwic2NlbmFyaW9zXCIsIFwic2VsZWN0TG9ja2VkQ2VsbHNcIiwgXCJzZWxlY3RVbmxvY2tlZENlbGxzXCJdO1xudmFyIHNoZWV0cHJvdF9kZWZ0cnVlID0gW1xuXHRcImZvcm1hdENvbHVtbnNcIiwgXCJmb3JtYXRSb3dzXCIsIFwiZm9ybWF0Q2VsbHNcIixcblx0XCJpbnNlcnRDb2x1bW5zXCIsIFwiaW5zZXJ0Um93c1wiLCBcImluc2VydEh5cGVybGlua3NcIixcblx0XCJkZWxldGVDb2x1bW5zXCIsIFwiZGVsZXRlUm93c1wiLFxuXHRcInNvcnRcIiwgXCJhdXRvRmlsdGVyXCIsIFwicGl2b3RUYWJsZXNcIlxuXTtcbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9wcm90ZWN0aW9uKHNwKS8qOnN0cmluZyovIHtcblx0Ly8gYWxnb3JpdGhtTmFtZSwgaGFzaFZhbHVlLCBzYWx0VmFsdWUsIHNwaW5Db3VudFxuXHR2YXIgbyA9ICh7c2hlZXQ6MX0vKjphbnkqLyk7XG5cdHNoZWV0cHJvdF9kZWZmYWxzZS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHsgaWYoc3Bbbl0gIT0gbnVsbCAmJiBzcFtuXSkgb1tuXSA9IFwiMVwiOyB9KTtcblx0c2hlZXRwcm90X2RlZnRydWUuZm9yRWFjaChmdW5jdGlvbihuKSB7IGlmKHNwW25dICE9IG51bGwgJiYgIXNwW25dKSBvW25dID0gXCIwXCI7IH0pO1xuXHQvKiBUT0RPOiBhbGdvcml0aG0gKi9cblx0aWYoc3AucGFzc3dvcmQpIG8ucGFzc3dvcmQgPSBjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxKHNwLnBhc3N3b3JkKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuIHdyaXRleHRhZygnc2hlZXRQcm90ZWN0aW9uJywgbnVsbCwgbyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9obGlua3MocywgZGF0YS8qOkFycmF5PHN0cmluZz4qLywgcmVscykge1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHMpO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGRhdGEubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgdmFsID0gcGFyc2V4bWx0YWcodXRmOHJlYWQoZGF0YVtpXSksIHRydWUpO1xuXHRcdGlmKCF2YWwucmVmKSByZXR1cm47XG5cdFx0dmFyIHJlbCA9ICgocmVscyB8fCB7fSlbJyFpZCddfHxbXSlbdmFsLmlkXTtcblx0XHRpZihyZWwpIHtcblx0XHRcdHZhbC5UYXJnZXQgPSByZWwuVGFyZ2V0O1xuXHRcdFx0aWYodmFsLmxvY2F0aW9uKSB2YWwuVGFyZ2V0ICs9IFwiI1wiK3VuZXNjYXBleG1sKHZhbC5sb2NhdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbC5UYXJnZXQgPSBcIiNcIiArIHVuZXNjYXBleG1sKHZhbC5sb2NhdGlvbik7XG5cdFx0XHRyZWwgPSB7VGFyZ2V0OiB2YWwuVGFyZ2V0LCBUYXJnZXRNb2RlOiAnSW50ZXJuYWwnfTtcblx0XHR9XG5cdFx0dmFsLlJlbCA9IHJlbDtcblx0XHRpZih2YWwudG9vbHRpcCkgeyB2YWwuVG9vbHRpcCA9IHZhbC50b29sdGlwOyBkZWxldGUgdmFsLnRvb2x0aXA7IH1cblx0XHR2YXIgcm5nID0gc2FmZV9kZWNvZGVfcmFuZ2UodmFsLnJlZik7XG5cdFx0Zm9yKHZhciBSPXJuZy5zLnI7Ujw9cm5nLmUucjsrK1IpIGZvcih2YXIgQz1ybmcucy5jO0M8PXJuZy5lLmM7KytDKSB7XG5cdFx0XHR2YXIgYWRkciA9IGVuY29kZV9jZWxsKHtjOkMscjpSfSk7XG5cdFx0XHRpZihkZW5zZSkge1xuXHRcdFx0XHRpZighc1tSXSkgc1tSXSA9IFtdO1xuXHRcdFx0XHRpZighc1tSXVtDXSkgc1tSXVtDXSA9IHt0OlwielwiLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0c1tSXVtDXS5sID0gdmFsO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYoIXNbYWRkcl0pIHNbYWRkcl0gPSB7dDpcInpcIix2OnVuZGVmaW5lZH07XG5cdFx0XHRcdHNbYWRkcl0ubCA9IHZhbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX21hcmdpbnMobWFyZ2luKSB7XG5cdHZhciBvID0ge307XG5cdFtcImxlZnRcIiwgXCJyaWdodFwiLCBcInRvcFwiLCBcImJvdHRvbVwiLCBcImhlYWRlclwiLCBcImZvb3RlclwiXS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHRpZihtYXJnaW5ba10pIG9ba10gPSBwYXJzZUZsb2F0KG1hcmdpbltrXSk7XG5cdH0pO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9tYXJnaW5zKG1hcmdpbikvKjpzdHJpbmcqLyB7XG5cdGRlZmF1bHRfbWFyZ2lucyhtYXJnaW4pO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdwYWdlTWFyZ2lucycsIG51bGwsIG1hcmdpbik7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9jb2xzKGNvbHVtbnMsIGNvbHMpIHtcblx0dmFyIHNlZW5jb2wgPSBmYWxzZTtcblx0Zm9yKHZhciBjb2xpID0gMDsgY29saSAhPSBjb2xzLmxlbmd0aDsgKytjb2xpKSB7XG5cdFx0dmFyIGNvbGwgPSBwYXJzZXhtbHRhZyhjb2xzW2NvbGldLCB0cnVlKTtcblx0XHRpZihjb2xsLmhpZGRlbikgY29sbC5oaWRkZW4gPSBwYXJzZXhtbGJvb2woY29sbC5oaWRkZW4pO1xuXHRcdHZhciBjb2xtPXBhcnNlSW50KGNvbGwubWluLCAxMCktMSwgY29sTT1wYXJzZUludChjb2xsLm1heCwxMCktMTtcblx0XHRpZihjb2xsLm91dGxpbmVMZXZlbCkgY29sbC5sZXZlbCA9ICgrY29sbC5vdXRsaW5lTGV2ZWwgfHwgMCk7XG5cdFx0ZGVsZXRlIGNvbGwubWluOyBkZWxldGUgY29sbC5tYXg7IGNvbGwud2lkdGggPSArY29sbC53aWR0aDtcblx0XHRpZighc2VlbmNvbCAmJiBjb2xsLndpZHRoKSB7IHNlZW5jb2wgPSB0cnVlOyBmaW5kX21kd19jb2x3KGNvbGwud2lkdGgpOyB9XG5cdFx0cHJvY2Vzc19jb2woY29sbCk7XG5cdFx0d2hpbGUoY29sbSA8PSBjb2xNKSBjb2x1bW5zW2NvbG0rK10gPSBkdXAoY29sbCk7XG5cdH1cbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9jb2xzKHdzLCBjb2xzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbXCI8Y29scz5cIl0sIGNvbDtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBjb2xzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoIShjb2wgPSBjb2xzW2ldKSkgY29udGludWU7XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdjb2wnLCBudWxsLCBjb2xfb2JqX3coaSwgY29sKSkpO1xuXHR9XG5cdG9bby5sZW5ndGhdID0gXCI8L2NvbHM+XCI7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzX3htbF9hdXRvZmlsdGVyKGRhdGEvKjpzdHJpbmcqLykge1xuXHR2YXIgbyA9IHsgcmVmOiAoZGF0YS5tYXRjaCgvcmVmPVwiKFteXCJdKilcIi8pfHxbXSlbMV19O1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9hdXRvZmlsdGVyKGRhdGEsIHdzLCB3YiwgaWR4KS8qOnN0cmluZyovIHtcblx0dmFyIHJlZiA9IHR5cGVvZiBkYXRhLnJlZiA9PSBcInN0cmluZ1wiID8gZGF0YS5yZWYgOiBlbmNvZGVfcmFuZ2UoZGF0YS5yZWYpO1xuXHRpZighd2IuV29ya2Jvb2spIHdiLldvcmtib29rID0gKHtTaGVldHM6W119Lyo6YW55Ki8pO1xuXHRpZighd2IuV29ya2Jvb2suTmFtZXMpIHdiLldvcmtib29rLk5hbWVzID0gW107XG5cdHZhciBuYW1lcy8qOiBBcnJheTxhbnk+ICovID0gd2IuV29ya2Jvb2suTmFtZXM7XG5cdHZhciByYW5nZSA9IGRlY29kZV9yYW5nZShyZWYpO1xuXHRpZihyYW5nZS5zLnIgPT0gcmFuZ2UuZS5yKSB7IHJhbmdlLmUuciA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pLmUucjsgcmVmID0gZW5jb2RlX3JhbmdlKHJhbmdlKTsgfVxuXHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbmFtZSA9IG5hbWVzW2ldO1xuXHRcdGlmKG5hbWUuTmFtZSAhPSAnX3hsbm0uX0ZpbHRlckRhdGFiYXNlJykgY29udGludWU7XG5cdFx0aWYobmFtZS5TaGVldCAhPSBpZHgpIGNvbnRpbnVlO1xuXHRcdG5hbWUuUmVmID0gXCInXCIgKyB3Yi5TaGVldE5hbWVzW2lkeF0gKyBcIichXCIgKyByZWY7IGJyZWFrO1xuXHR9XG5cdGlmKGkgPT0gbmFtZXMubGVuZ3RoKSBuYW1lcy5wdXNoKHsgTmFtZTogJ194bG5tLl9GaWx0ZXJEYXRhYmFzZScsIFNoZWV0OiBpZHgsIFJlZjogXCInXCIgKyB3Yi5TaGVldE5hbWVzW2lkeF0gKyBcIichXCIgKyByZWYgIH0pO1xuXHRyZXR1cm4gd3JpdGV4dGFnKFwiYXV0b0ZpbHRlclwiLCBudWxsLCB7cmVmOnJlZn0pO1xufVxuXG4vKiAxOC4zLjEuODggc2hlZXRWaWV3cyBDVF9TaGVldFZpZXdzICovXG4vKiAxOC4zLjEuODcgc2hlZXRWaWV3IENUX1NoZWV0VmlldyAqL1xudmFyIHN2aWV3cmVnZXggPSAvPCg/OlxcdzopP3NoZWV0Vmlldyg/OltePmEtel1bXj5dKik/XFwvPz4vO1xuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX3NoZWV0dmlld3MoZGF0YSwgd2IvKjpXQldCUHJvcHMqLykge1xuXHRpZighd2IuVmlld3MpIHdiLlZpZXdzID0gW3t9XTtcblx0KGRhdGEubWF0Y2goc3ZpZXdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIvKjpzdHJpbmcqLywgaS8qOm51bWJlciovKSB7XG5cdFx0dmFyIHRhZyA9IHBhcnNleG1sdGFnKHIpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYoIXdiLlZpZXdzW2ldKSB3Yi5WaWV3c1tpXSA9IHt9O1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYoK3RhZy56b29tU2NhbGUpIHdiLlZpZXdzW2ldLnpvb20gPSArdGFnLnpvb21TY2FsZTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGlmKHBhcnNleG1sYm9vbCh0YWcucmlnaHRUb0xlZnQpKSB3Yi5WaWV3c1tpXS5SVEwgPSB0cnVlO1xuXHR9KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9zaGVldHZpZXdzKHdzLCBvcHRzLCBpZHgsIHdiKS8qOnN0cmluZyovIHtcblx0dmFyIHN2aWV3ID0gKHt3b3JrYm9va1ZpZXdJZDpcIjBcIn0vKjphbnkqLyk7XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKCgoKHdifHx7fSkuV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdKSBzdmlldy5yaWdodFRvTGVmdCA9IHdiLldvcmtib29rLlZpZXdzWzBdLlJUTCA/IFwiMVwiIDogXCIwXCI7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJzaGVldFZpZXdzXCIsIHdyaXRleHRhZyhcInNoZWV0Vmlld1wiLCBudWxsLCBzdmlldyksIHt9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2NlbGwoY2VsbC8qOkNlbGwqLywgcmVmLCB3cywgb3B0cy8qOjosIGlkeCwgd2IqLykvKjpzdHJpbmcqLyB7XG5cdGlmKGNlbGwuYykgd3NbJyFjb21tZW50cyddLnB1c2goW3JlZiwgY2VsbC5jXSk7XG5cdGlmKGNlbGwudiA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjZWxsLmYgIT09IFwic3RyaW5nXCIgfHwgY2VsbC50ID09PSAneicgJiYgIWNlbGwuZikgcmV0dXJuIFwiXCI7XG5cdHZhciB2diA9IFwiXCI7XG5cdHZhciBvbGR0ID0gY2VsbC50LCBvbGR2ID0gY2VsbC52O1xuXHRpZihjZWxsLnQgIT09IFwielwiKSBzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnYic6IHZ2ID0gY2VsbC52ID8gXCIxXCIgOiBcIjBcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnbic6IHZ2ID0gJycrY2VsbC52OyBicmVhaztcblx0XHRjYXNlICdlJzogdnYgPSBCRXJyW2NlbGwudl07IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOlxuXHRcdFx0aWYob3B0cyAmJiBvcHRzLmNlbGxEYXRlcykgdnYgPSBwYXJzZURhdGUoY2VsbC52LCAtMSkudG9JU09TdHJpbmcoKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRjZWxsID0gZHVwKGNlbGwpO1xuXHRcdFx0XHRjZWxsLnQgPSAnbic7XG5cdFx0XHRcdHZ2ID0gJycrKGNlbGwudiA9IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpKTtcblx0XHRcdH1cblx0XHRcdGlmKHR5cGVvZiBjZWxsLnogPT09ICd1bmRlZmluZWQnKSBjZWxsLnogPSB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDogdnYgPSBjZWxsLnY7IGJyZWFrO1xuXHR9XG5cdHZhciB2ID0gd3JpdGV0YWcoJ3YnLCBlc2NhcGV4bWwodnYpKSwgbyA9ICh7cjpyZWZ9Lyo6YW55Ki8pO1xuXHQvKiBUT0RPOiBjZWxsIHN0eWxlICovXG5cdHZhciBvcyA9IGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGlmKG9zICE9PSAwKSBvLnMgPSBvcztcblx0c3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ24nOiBicmVhaztcblx0XHRjYXNlICdkJzogby50ID0gXCJkXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ2InOiBvLnQgPSBcImJcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnZSc6IG8udCA9IFwiZVwiOyBicmVhaztcblx0XHRjYXNlICd6JzogYnJlYWs7XG5cdFx0ZGVmYXVsdDogaWYoY2VsbC52ID09IG51bGwpIHsgZGVsZXRlIGNlbGwudDsgYnJlYWs7IH1cblx0XHRcdGlmKGNlbGwudi5sZW5ndGggPiAzMjc2NykgdGhyb3cgbmV3IEVycm9yKFwiVGV4dCBsZW5ndGggbXVzdCBub3QgZXhjZWVkIDMyNzY3IGNoYXJhY3RlcnNcIik7XG5cdFx0XHRpZihvcHRzICYmIG9wdHMuYm9va1NTVCkge1xuXHRcdFx0XHR2ID0gd3JpdGV0YWcoJ3YnLCAnJytnZXRfc3N0X2lkKG9wdHMuU3RyaW5ncywgY2VsbC52LCBvcHRzLnJldlN0cmluZ3MpKTtcblx0XHRcdFx0by50ID0gXCJzXCI7IGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0by50ID0gXCJzdHJcIjsgYnJlYWs7XG5cdH1cblx0aWYoY2VsbC50ICE9IG9sZHQpIHsgY2VsbC50ID0gb2xkdDsgY2VsbC52ID0gb2xkdjsgfVxuXHRpZih0eXBlb2YgY2VsbC5mID09IFwic3RyaW5nXCIgJiYgY2VsbC5mKSB7XG5cdFx0dmFyIGZmID0gY2VsbC5GICYmIGNlbGwuRi5zbGljZSgwLCByZWYubGVuZ3RoKSA9PSByZWYgPyB7dDpcImFycmF5XCIsIHJlZjpjZWxsLkZ9IDogbnVsbDtcblx0XHR2ID0gd3JpdGV4dGFnKCdmJywgZXNjYXBleG1sKGNlbGwuZiksIGZmKSArIChjZWxsLnYgIT0gbnVsbCA/IHYgOiBcIlwiKTtcblx0fVxuXHRpZihjZWxsLmwpIHdzWychbGlua3MnXS5wdXNoKFtyZWYsIGNlbGwubF0pO1xuXHRpZihjZWxsLkQpIG8uY20gPSAxO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdjJywgdiwgbyk7XG59XG5cbnZhciBwYXJzZV93c194bWxfZGF0YSA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBjZWxscmVnZXggPSAvPCg/Olxcdys6KT9jWyBcXC8+XS8sIHJvd3JlZ2V4ID0gLzxcXC8oPzpcXHcrOik/cm93Pi87XG5cdHZhciBycmVnZXggPSAvcj1bXCInXShbXlwiJ10qKVtcIiddLywgaXNyZWdleCA9IC88KD86XFx3KzopP2lzPihbXFxTXFxzXSo/KTxcXC8oPzpcXHcrOik/aXM+Lztcblx0dmFyIHJlZnJlZ2V4ID0gL3JlZj1bXCInXShbXlwiJ10qKVtcIiddLztcblx0dmFyIG1hdGNoX3YgPSBtYXRjaHRhZyhcInZcIiksIG1hdGNoX2YgPSBtYXRjaHRhZyhcImZcIik7XG5cbnJldHVybiBmdW5jdGlvbiBwYXJzZV93c194bWxfZGF0YShzZGF0YS8qOnN0cmluZyovLCBzLCBvcHRzLCBndWVzcy8qOlJhbmdlKi8sIHRoZW1lcywgc3R5bGVzKSB7XG5cdHZhciByaSA9IDAsIHggPSBcIlwiLCBjZWxscy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBjcmVmLyo6P0FycmF5PHN0cmluZz4qLyA9IFtdLCBpZHg9MCwgaT0wLCBjYz0wLCBkPVwiXCIsIHAvKjphbnkqLztcblx0dmFyIHRhZywgdGFnciA9IDAsIHRhZ2MgPSAwO1xuXHR2YXIgc3N0ciwgZnRhZztcblx0dmFyIGZtdGlkID0gMCwgZmlsbGlkID0gMDtcblx0dmFyIGRvX2Zvcm1hdCA9IEFycmF5LmlzQXJyYXkoc3R5bGVzLkNlbGxYZiksIGNmO1xuXHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdHZhciBzaGFyZWRmID0gW107XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkocyk7XG5cdHZhciByb3dzLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdLCByb3dvYmogPSB7fSwgcm93cml0ZSA9IGZhbHNlO1xuXHR2YXIgc2hlZXRTdHVicyA9ICEhb3B0cy5zaGVldFN0dWJzO1xuXHRmb3IodmFyIG1hcnIgPSBzZGF0YS5zcGxpdChyb3dyZWdleCksIG10ID0gMCwgbWFycmxlbiA9IG1hcnIubGVuZ3RoOyBtdCAhPSBtYXJybGVuOyArK210KSB7XG5cdFx0eCA9IG1hcnJbbXRdLnRyaW0oKTtcblx0XHR2YXIgeGxlbiA9IHgubGVuZ3RoO1xuXHRcdGlmKHhsZW4gPT09IDApIGNvbnRpbnVlO1xuXG5cdFx0LyogMTguMy4xLjczIHJvdyBDVF9Sb3cgKi9cblx0XHR2YXIgcnN0YXJ0aSA9IDA7XG5cdFx0b3V0YTogZm9yKHJpID0gMDsgcmkgPCB4bGVuOyArK3JpKSBzd2l0Y2goLyp4LmNoYXJDb2RlQXQocmkpKi94W3JpXSkge1xuXHRcdFx0Y2FzZSBcIj5cIiAvKjYyKi86XG5cdFx0XHRcdGlmKC8qeC5jaGFyQ29kZUF0KHJpLTEpICE9IDQ3Ki94W3JpLTFdICE9IFwiL1wiKSB7ICsrcmk7IGJyZWFrIG91dGE7IH1cblx0XHRcdFx0aWYob3B0cyAmJiBvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRcdFx0XHQvLyBUT0RPOiBhdm9pZCBkdXBsaWNhdGlvblxuXHRcdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKHguc2xpY2UocnN0YXJ0aSxyaSksIHRydWUpO1xuXHRcdFx0XHRcdHRhZ3IgPSB0YWcuciAhPSBudWxsID8gcGFyc2VJbnQodGFnLnIsIDEwKSA6IHRhZ3IrMTsgdGFnYyA9IC0xO1xuXHRcdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDwgdGFncikgY29udGludWU7XG5cdFx0XHRcdFx0cm93b2JqID0ge307IHJvd3JpdGUgPSBmYWxzZTtcblx0XHRcdFx0XHRpZih0YWcuaHQpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5ocHQgPSBwYXJzZUZsb2F0KHRhZy5odCk7IHJvd29iai5ocHggPSBwdDJweChyb3dvYmouaHB0KTsgfVxuXHRcdFx0XHRcdGlmKHRhZy5oaWRkZW4gPT0gXCIxXCIpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5oaWRkZW4gPSB0cnVlOyB9XG5cdFx0XHRcdFx0aWYodGFnLm91dGxpbmVMZXZlbCAhPSBudWxsKSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmoubGV2ZWwgPSArdGFnLm91dGxpbmVMZXZlbDsgfVxuXHRcdFx0XHRcdGlmKHJvd3JpdGUpIHJvd3NbdGFnci0xXSA9IHJvd29iajtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCI8XCIgLyo2MCovOiByc3RhcnRpID0gcmk7IGJyZWFrO1xuXHRcdH1cblx0XHRpZihyc3RhcnRpID49IHJpKSBicmVhaztcblx0XHR0YWcgPSBwYXJzZXhtbHRhZyh4LnNsaWNlKHJzdGFydGkscmkpLCB0cnVlKTtcblx0XHR0YWdyID0gdGFnLnIgIT0gbnVsbCA/IHBhcnNlSW50KHRhZy5yLCAxMCkgOiB0YWdyKzE7IHRhZ2MgPSAtMTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8IHRhZ3IpIGNvbnRpbnVlO1xuXHRcdGlmKGd1ZXNzLnMuciA+IHRhZ3IgLSAxKSBndWVzcy5zLnIgPSB0YWdyIC0gMTtcblx0XHRpZihndWVzcy5lLnIgPCB0YWdyIC0gMSkgZ3Vlc3MuZS5yID0gdGFnciAtIDE7XG5cblx0XHRpZihvcHRzICYmIG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdFx0cm93b2JqID0ge307IHJvd3JpdGUgPSBmYWxzZTtcblx0XHRcdGlmKHRhZy5odCkgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhwdCA9IHBhcnNlRmxvYXQodGFnLmh0KTsgcm93b2JqLmhweCA9IHB0MnB4KHJvd29iai5ocHQpOyB9XG5cdFx0XHRpZih0YWcuaGlkZGVuID09IFwiMVwiKSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgfVxuXHRcdFx0aWYodGFnLm91dGxpbmVMZXZlbCAhPSBudWxsKSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmoubGV2ZWwgPSArdGFnLm91dGxpbmVMZXZlbDsgfVxuXHRcdFx0aWYocm93cml0ZSkgcm93c1t0YWdyLTFdID0gcm93b2JqO1xuXHRcdH1cblxuXHRcdC8qIDE4LjMuMS40IGMgQ1RfQ2VsbCAqL1xuXHRcdGNlbGxzID0geC5zbGljZShyaSkuc3BsaXQoY2VsbHJlZ2V4KTtcblx0XHRmb3IodmFyIHJzbGljZSA9IDA7IHJzbGljZSAhPSBjZWxscy5sZW5ndGg7ICsrcnNsaWNlKSBpZihjZWxsc1tyc2xpY2VdLnRyaW0oKS5jaGFyQXQoMCkgIT0gXCI8XCIpIGJyZWFrO1xuXHRcdGNlbGxzID0gY2VsbHMuc2xpY2UocnNsaWNlKTtcblx0XHRmb3IocmkgPSAwOyByaSAhPSBjZWxscy5sZW5ndGg7ICsrcmkpIHtcblx0XHRcdHggPSBjZWxsc1tyaV0udHJpbSgpO1xuXHRcdFx0aWYoeC5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXHRcdFx0Y3JlZiA9IHgubWF0Y2gocnJlZ2V4KTsgaWR4ID0gcmk7IGk9MDsgY2M9MDtcblx0XHRcdHggPSBcIjxjIFwiICsgKHguc2xpY2UoMCwxKT09XCI8XCI/XCI+XCI6XCJcIikgKyB4O1xuXHRcdFx0aWYoY3JlZiAhPSBudWxsICYmIGNyZWYubGVuZ3RoID09PSAyKSB7XG5cdFx0XHRcdGlkeCA9IDA7IGQ9Y3JlZlsxXTtcblx0XHRcdFx0Zm9yKGk9MDsgaSAhPSBkLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdFx0aWYoKGNjPWQuY2hhckNvZGVBdChpKS02NCkgPCAxIHx8IGNjID4gMjYpIGJyZWFrO1xuXHRcdFx0XHRcdGlkeCA9IDI2KmlkeCArIGNjO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC0taWR4O1xuXHRcdFx0XHR0YWdjID0gaWR4O1xuXHRcdFx0fSBlbHNlICsrdGFnYztcblx0XHRcdGZvcihpID0gMDsgaSAhPSB4Lmxlbmd0aDsgKytpKSBpZih4LmNoYXJDb2RlQXQoaSkgPT09IDYyKSBicmVhazsgKytpO1xuXHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoeC5zbGljZSgwLGkpLCB0cnVlKTtcblx0XHRcdGlmKCF0YWcucikgdGFnLnIgPSBlbmNvZGVfY2VsbCh7cjp0YWdyLTEsIGM6dGFnY30pO1xuXHRcdFx0ZCA9IHguc2xpY2UoaSk7XG5cdFx0XHRwID0gKHt0OlwiXCJ9Lyo6YW55Ki8pO1xuXG5cdFx0XHRpZigoY3JlZj1kLm1hdGNoKG1hdGNoX3YpKSE9IG51bGwgJiYgLyo6OmNyZWYgIT0gbnVsbCAmJiAqL2NyZWZbMV0gIT09ICcnKSBwLnY9dW5lc2NhcGV4bWwoY3JlZlsxXSk7XG5cdFx0XHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0XHRcdGlmKChjcmVmPWQubWF0Y2gobWF0Y2hfZikpIT0gbnVsbCAmJiAvKjo6Y3JlZiAhPSBudWxsICYmICovY3JlZlsxXSAhPT0gJycpIHtcblx0XHRcdFx0XHQvKiBUT0RPOiBtYXRjaCBhZ2FpbnN0IFhMU1hGdXR1cmVGdW5jdGlvbnMgKi9cblx0XHRcdFx0XHRwLmY9dW5lc2NhcGV4bWwodXRmOHJlYWQoY3JlZlsxXSkpLnJlcGxhY2UoL1xcclxcbi9nLCBcIlxcblwiKTtcblx0XHRcdFx0XHRpZighb3B0cy54bGZuKSBwLmYgPSBfeGxmbihwLmYpO1xuXHRcdFx0XHRcdGlmKC8qOjpjcmVmICE9IG51bGwgJiYgY3JlZlswXSAhPSBudWxsICYmICovY3JlZlswXS5pbmRleE9mKCd0PVwiYXJyYXlcIicpID4gLTEpIHtcblx0XHRcdFx0XHRcdHAuRiA9IChkLm1hdGNoKHJlZnJlZ2V4KXx8W10pWzFdO1xuXHRcdFx0XHRcdFx0aWYocC5GLmluZGV4T2YoXCI6XCIpID4gLTEpIGFycmF5Zi5wdXNoKFtzYWZlX2RlY29kZV9yYW5nZShwLkYpLCBwLkZdKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYoLyo6OmNyZWYgIT0gbnVsbCAmJiBjcmVmWzBdICE9IG51bGwgJiYgKi9jcmVmWzBdLmluZGV4T2YoJ3Q9XCJzaGFyZWRcIicpID4gLTEpIHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IHBhcnNlIGZvcm11bGFcblx0XHRcdFx0XHRcdGZ0YWcgPSBwYXJzZXhtbHRhZyhjcmVmWzBdKTtcblx0XHRcdFx0XHRcdHZhciBfX19mID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoY3JlZlsxXSkpO1xuXHRcdFx0XHRcdFx0aWYoIW9wdHMueGxmbikgX19fZiA9IF94bGZuKF9fX2YpO1xuXHRcdFx0XHRcdFx0c2hhcmVkZltwYXJzZUludChmdGFnLnNpLCAxMCldID0gW2Z0YWcsIF9fX2YsIHRhZy5yXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZigoY3JlZj1kLm1hdGNoKC88ZltePl0qXFwvPi8pKSkge1xuXHRcdFx0XHRcdGZ0YWcgPSBwYXJzZXhtbHRhZyhjcmVmWzBdKTtcblx0XHRcdFx0XHRpZihzaGFyZWRmW2Z0YWcuc2ldKSBwLmYgPSBzaGlmdF9mb3JtdWxhX3hsc3goc2hhcmVkZltmdGFnLnNpXVsxXSwgc2hhcmVkZltmdGFnLnNpXVsyXS8qWzBdLnJlZiovLCB0YWcucik7XG5cdFx0XHRcdH1cblx0XHRcdFx0LyogVE9ETzogZmFjdG9yIG91dCBjb250YWlucyBsb2dpYyAqL1xuXHRcdFx0XHR2YXIgX3RhZyA9IGRlY29kZV9jZWxsKHRhZy5yKTtcblx0XHRcdFx0Zm9yKGkgPSAwOyBpIDwgYXJyYXlmLmxlbmd0aDsgKytpKVxuXHRcdFx0XHRcdGlmKF90YWcuciA+PSBhcnJheWZbaV1bMF0ucy5yICYmIF90YWcuciA8PSBhcnJheWZbaV1bMF0uZS5yKVxuXHRcdFx0XHRcdFx0aWYoX3RhZy5jID49IGFycmF5ZltpXVswXS5zLmMgJiYgX3RhZy5jIDw9IGFycmF5ZltpXVswXS5lLmMpXG5cdFx0XHRcdFx0XHRcdHAuRiA9IGFycmF5ZltpXVsxXTtcblx0XHRcdH1cblxuXHRcdFx0aWYodGFnLnQgPT0gbnVsbCAmJiBwLnYgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpZihwLmYgfHwgcC5GKSB7XG5cdFx0XHRcdFx0cC52ID0gMDsgcC50ID0gXCJuXCI7XG5cdFx0XHRcdH0gZWxzZSBpZighc2hlZXRTdHVicykgY29udGludWU7XG5cdFx0XHRcdGVsc2UgcC50ID0gXCJ6XCI7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHAudCA9IHRhZy50IHx8IFwiblwiO1xuXHRcdFx0aWYoZ3Vlc3Mucy5jID4gdGFnYykgZ3Vlc3Mucy5jID0gdGFnYztcblx0XHRcdGlmKGd1ZXNzLmUuYyA8IHRhZ2MpIGd1ZXNzLmUuYyA9IHRhZ2M7XG5cdFx0XHQvKiAxOC4xOC4xMSB0IFNUX0NlbGxUeXBlICovXG5cdFx0XHRzd2l0Y2gocC50KSB7XG5cdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdGlmKHAudiA9PSBcIlwiIHx8IHAudiA9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRpZighc2hlZXRTdHVicykgY29udGludWU7XG5cdFx0XHRcdFx0XHRwLnQgPSAneic7XG5cdFx0XHRcdFx0fSBlbHNlIHAudiA9IHBhcnNlRmxvYXQocC52KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncyc6XG5cdFx0XHRcdFx0aWYodHlwZW9mIHAudiA9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdFx0aWYoIXNoZWV0U3R1YnMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0cC50ID0gJ3onO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzc3RyID0gc3Ryc1twYXJzZUludChwLnYsIDEwKV07XG5cdFx0XHRcdFx0XHRwLnYgPSBzc3RyLnQ7XG5cdFx0XHRcdFx0XHRwLnIgPSBzc3RyLnI7XG5cdFx0XHRcdFx0XHRpZihvcHRzLmNlbGxIVE1MKSBwLmggPSBzc3RyLmg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzdHInOlxuXHRcdFx0XHRcdHAudCA9IFwic1wiO1xuXHRcdFx0XHRcdHAudiA9IChwLnYhPW51bGwpID8gdXRmOHJlYWQocC52KSA6ICcnO1xuXHRcdFx0XHRcdGlmKG9wdHMuY2VsbEhUTUwpIHAuaCA9IGVzY2FwZWh0bWwocC52KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnaW5saW5lU3RyJzpcblx0XHRcdFx0XHRjcmVmID0gZC5tYXRjaChpc3JlZ2V4KTtcblx0XHRcdFx0XHRwLnQgPSAncyc7XG5cdFx0XHRcdFx0aWYoY3JlZiAhPSBudWxsICYmIChzc3RyID0gcGFyc2Vfc2koY3JlZlsxXSkpKSB7XG5cdFx0XHRcdFx0XHRwLnYgPSBzc3RyLnQ7XG5cdFx0XHRcdFx0XHRpZihvcHRzLmNlbGxIVE1MKSBwLmggPSBzc3RyLmg7XG5cdFx0XHRcdFx0fSBlbHNlIHAudiA9IFwiXCI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2InOiBwLnYgPSBwYXJzZXhtbGJvb2wocC52KTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdGlmKG9wdHMuY2VsbERhdGVzKSBwLnYgPSBwYXJzZURhdGUocC52LCAxKTtcblx0XHRcdFx0XHRlbHNlIHsgcC52ID0gZGF0ZW51bShwYXJzZURhdGUocC52LCAxKSk7IHAudCA9ICduJzsgfVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvKiBlcnJvciBzdHJpbmcgaW4gLncsIG51bWJlciBpbiAudiAqL1xuXHRcdFx0XHRjYXNlICdlJzpcblx0XHRcdFx0XHRpZighb3B0cyB8fCBvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgcC53ID0gcC52O1xuXHRcdFx0XHRcdHAudiA9IFJCRXJyW3Audl07IGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0LyogZm9ybWF0dGluZyAqL1xuXHRcdFx0Zm10aWQgPSBmaWxsaWQgPSAwO1xuXHRcdFx0Y2YgPSBudWxsO1xuXHRcdFx0aWYoZG9fZm9ybWF0ICYmIHRhZy5zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y2YgPSBzdHlsZXMuQ2VsbFhmW3RhZy5zXTtcblx0XHRcdFx0aWYoY2YgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmKGNmLm51bUZtdElkICE9IG51bGwpIGZtdGlkID0gY2YubnVtRm10SWQ7XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0XHRcdFx0XHRpZihjZi5maWxsSWQgIT0gbnVsbCkgZmlsbGlkID0gY2YuZmlsbElkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0c2FmZV9mb3JtYXQocCwgZm10aWQsIGZpbGxpZCwgb3B0cywgdGhlbWVzLCBzdHlsZXMpO1xuXHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMgJiYgZG9fZm9ybWF0ICYmIHAudCA9PSAnbicgJiYgZm10X2lzX2RhdGUodGFibGVfZm10W2ZtdGlkXSkpIHsgcC50ID0gJ2QnOyBwLnYgPSBudW1kYXRlKHAudik7IH1cblx0XHRcdGlmKHRhZy5jbSAmJiBvcHRzLnhsbWV0YSkge1xuXHRcdFx0XHR2YXIgY20gPSAob3B0cy54bG1ldGEuQ2VsbHx8W10pWyt0YWcuY20tMV07XG5cdFx0XHRcdGlmKGNtICYmIGNtLnR5cGUgPT0gJ1hMREFQUicpIHAuRCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZihkZW5zZSkge1xuXHRcdFx0XHR2YXIgX3IgPSBkZWNvZGVfY2VsbCh0YWcucik7XG5cdFx0XHRcdGlmKCFzW19yLnJdKSBzW19yLnJdID0gW107XG5cdFx0XHRcdHNbX3Iucl1bX3IuY10gPSBwO1xuXHRcdFx0fSBlbHNlIHNbdGFnLnJdID0gcDtcblx0XHR9XG5cdH1cblx0aWYocm93cy5sZW5ndGggPiAwKSBzWychcm93cyddID0gcm93cztcbn07IH0pKCk7XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9kYXRhKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMsIGlkeC8qOm51bWJlciovLCB3Yi8qOldvcmtib29rKi8vKjo6LCByZWxzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCByLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGw9XCJcIiwgcmVmLCByciA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgUj0wLCBDPTAsIHJvd3MgPSB3c1snIXJvd3MnXTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciBwYXJhbXMgPSAoe3I6cnJ9Lyo6YW55Ki8pLCByb3cvKjpSb3dJbmZvKi8sIGhlaWdodCA9IC0xO1xuXHRmb3IoQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdGZvcihSID0gcmFuZ2Uucy5yOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0ciA9IFtdO1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRmb3IoQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0cmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0dmFyIF9jZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbcmVmXTtcblx0XHRcdGlmKF9jZWxsID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXHRcdFx0aWYoKGNlbGwgPSB3cml0ZV93c194bWxfY2VsbChfY2VsbCwgcmVmLCB3cywgb3B0cywgaWR4LCB3YikpICE9IG51bGwpIHIucHVzaChjZWxsKTtcblx0XHR9XG5cdFx0aWYoci5sZW5ndGggPiAwIHx8IChyb3dzICYmIHJvd3NbUl0pKSB7XG5cdFx0XHRwYXJhbXMgPSAoe3I6cnJ9Lyo6YW55Ki8pO1xuXHRcdFx0aWYocm93cyAmJiByb3dzW1JdKSB7XG5cdFx0XHRcdHJvdyA9IHJvd3NbUl07XG5cdFx0XHRcdGlmKHJvdy5oaWRkZW4pIHBhcmFtcy5oaWRkZW4gPSAxO1xuXHRcdFx0XHRoZWlnaHQgPSAtMTtcblx0XHRcdFx0aWYocm93LmhweCkgaGVpZ2h0ID0gcHgycHQocm93LmhweCk7XG5cdFx0XHRcdGVsc2UgaWYocm93LmhwdCkgaGVpZ2h0ID0gcm93LmhwdDtcblx0XHRcdFx0aWYoaGVpZ2h0ID4gLTEpIHsgcGFyYW1zLmh0ID0gaGVpZ2h0OyBwYXJhbXMuY3VzdG9tSGVpZ2h0ID0gMTsgfVxuXHRcdFx0XHRpZihyb3cubGV2ZWwpIHsgcGFyYW1zLm91dGxpbmVMZXZlbCA9IHJvdy5sZXZlbDsgfVxuXHRcdFx0fVxuXHRcdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdyb3cnLCByLmpvaW4oXCJcIiksIHBhcmFtcykpO1xuXHRcdH1cblx0fVxuXHRpZihyb3dzKSBmb3IoOyBSIDwgcm93cy5sZW5ndGg7ICsrUikge1xuXHRcdGlmKHJvd3MgJiYgcm93c1tSXSkge1xuXHRcdFx0cGFyYW1zID0gKHtyOlIrMX0vKjphbnkqLyk7XG5cdFx0XHRyb3cgPSByb3dzW1JdO1xuXHRcdFx0aWYocm93LmhpZGRlbikgcGFyYW1zLmhpZGRlbiA9IDE7XG5cdFx0XHRoZWlnaHQgPSAtMTtcblx0XHRcdGlmIChyb3cuaHB4KSBoZWlnaHQgPSBweDJwdChyb3cuaHB4KTtcblx0XHRcdGVsc2UgaWYgKHJvdy5ocHQpIGhlaWdodCA9IHJvdy5ocHQ7XG5cdFx0XHRpZiAoaGVpZ2h0ID4gLTEpIHsgcGFyYW1zLmh0ID0gaGVpZ2h0OyBwYXJhbXMuY3VzdG9tSGVpZ2h0ID0gMTsgfVxuXHRcdFx0aWYgKHJvdy5sZXZlbCkgeyBwYXJhbXMub3V0bGluZUxldmVsID0gcm93LmxldmVsOyB9XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3JvdycsIFwiXCIsIHBhcmFtcykpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c194bWwoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnd29ya3NoZWV0JywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TX21haW5bMF0sXG5cdFx0J3htbG5zOnInOiBYTUxOUy5yXG5cdH0pXTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF0sIHNpZHggPSAwLCByZGF0YSA9IFwiXCI7XG5cdHZhciB3cyA9IHdiLlNoZWV0c1tzXTtcblx0aWYod3MgPT0gbnVsbCkgd3MgPSB7fTtcblx0dmFyIHJlZiA9IHdzWychcmVmJ10gfHwgJ0ExJztcblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2UocmVmKTtcblx0aWYocmFuZ2UuZS5jID4gMHgzRkZGIHx8IHJhbmdlLmUuciA+IDB4RkZGRkYpIHtcblx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgXCIgKyByZWYgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2XCIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWluKHJhbmdlLmUuYywgMHgzRkZGKTtcblx0XHRyYW5nZS5lLnIgPSBNYXRoLm1pbihyYW5nZS5lLmMsIDB4RkZGRkYpO1xuXHRcdHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdH1cblx0aWYoIXJlbHMpIHJlbHMgPSB7fTtcblx0d3NbJyFjb21tZW50cyddID0gW107XG5cdHZhciBfZHJhd2luZyA9IFtdO1xuXG5cdHdyaXRlX3dzX3htbF9zaGVldHByKHdzLCB3YiwgaWR4LCBvcHRzLCBvKTtcblxuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ2RpbWVuc2lvbicsIG51bGwsIHsncmVmJzogcmVmfSkpO1xuXG5cdG9bby5sZW5ndGhdID0gd3JpdGVfd3NfeG1sX3NoZWV0dmlld3Mod3MsIG9wdHMsIGlkeCwgd2IpO1xuXG5cdC8qIFRPRE86IHN0b3JlIGluIFdCLCBwcm9jZXNzIHN0eWxlcyAqL1xuXHRpZihvcHRzLnNoZWV0Rm9ybWF0KSBvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3NoZWV0Rm9ybWF0UHInLCBudWxsLCB7XG5cdFx0ZGVmYXVsdFJvd0hlaWdodDpvcHRzLnNoZWV0Rm9ybWF0LmRlZmF1bHRSb3dIZWlnaHR8fCcxNicsXG5cdFx0YmFzZUNvbFdpZHRoOm9wdHMuc2hlZXRGb3JtYXQuYmFzZUNvbFdpZHRofHwnMTAnLFxuXHRcdG91dGxpbmVMZXZlbFJvdzpvcHRzLnNoZWV0Rm9ybWF0Lm91dGxpbmVMZXZlbFJvd3x8JzcnXG5cdH0pKTtcblxuXHRpZih3c1snIWNvbHMnXSAhPSBudWxsICYmIHdzWychY29scyddLmxlbmd0aCA+IDApIG9bby5sZW5ndGhdID0gKHdyaXRlX3dzX3htbF9jb2xzKHdzLCB3c1snIWNvbHMnXSkpO1xuXG5cdG9bc2lkeCA9IG8ubGVuZ3RoXSA9ICc8c2hlZXREYXRhLz4nO1xuXHR3c1snIWxpbmtzJ10gPSBbXTtcblx0aWYod3NbJyFyZWYnXSAhPSBudWxsKSB7XG5cdFx0cmRhdGEgPSB3cml0ZV93c194bWxfZGF0YSh3cywgb3B0cywgaWR4LCB3YiwgcmVscyk7XG5cdFx0aWYocmRhdGEubGVuZ3RoID4gMCkgb1tvLmxlbmd0aF0gPSAocmRhdGEpO1xuXHR9XG5cdGlmKG8ubGVuZ3RoPnNpZHgrMSkgeyBvW28ubGVuZ3RoXSA9ICgnPC9zaGVldERhdGE+Jyk7IG9bc2lkeF09b1tzaWR4XS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblxuXHQvKiBzaGVldENhbGNQciAqL1xuXG5cdGlmKHdzWychcHJvdGVjdCddKSBvW28ubGVuZ3RoXSA9IHdyaXRlX3dzX3htbF9wcm90ZWN0aW9uKHdzWychcHJvdGVjdCddKTtcblxuXHQvKiBwcm90ZWN0ZWRSYW5nZXMgKi9cblx0Lyogc2NlbmFyaW9zICovXG5cblx0aWYod3NbJyFhdXRvZmlsdGVyJ10gIT0gbnVsbCkgb1tvLmxlbmd0aF0gPSB3cml0ZV93c194bWxfYXV0b2ZpbHRlcih3c1snIWF1dG9maWx0ZXInXSwgd3MsIHdiLCBpZHgpO1xuXG5cdC8qIHNvcnRTdGF0ZSAqL1xuXHQvKiBkYXRhQ29uc29saWRhdGUgKi9cblx0LyogY3VzdG9tU2hlZXRWaWV3cyAqL1xuXG5cdGlmKHdzWychbWVyZ2VzJ10gIT0gbnVsbCAmJiB3c1snIW1lcmdlcyddLmxlbmd0aCA+IDApIG9bby5sZW5ndGhdID0gKHdyaXRlX3dzX3htbF9tZXJnZXMod3NbJyFtZXJnZXMnXSkpO1xuXG5cdC8qIHBob25ldGljUHIgKi9cblx0LyogY29uZGl0aW9uYWxGb3JtYXR0aW5nICovXG5cdC8qIGRhdGFWYWxpZGF0aW9ucyAqL1xuXG5cdHZhciByZWxjID0gLTEsIHJlbCwgcklkID0gLTE7XG5cdGlmKC8qOjooKi93c1snIWxpbmtzJ10vKjo6fHxbXSkqLy5sZW5ndGggPiAwKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjxoeXBlcmxpbmtzPlwiO1xuXHRcdC8qOjooKi93c1snIWxpbmtzJ10vKjo6fHxbXSkqLy5mb3JFYWNoKGZ1bmN0aW9uKGwpIHtcblx0XHRcdGlmKCFsWzFdLlRhcmdldCkgcmV0dXJuO1xuXHRcdFx0cmVsID0gKHtcInJlZlwiOmxbMF19Lyo6YW55Ki8pO1xuXHRcdFx0aWYobFsxXS5UYXJnZXQuY2hhckF0KDApICE9IFwiI1wiKSB7XG5cdFx0XHRcdHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBlc2NhcGV4bWwobFsxXS5UYXJnZXQpLnJlcGxhY2UoLyMuKiQvLCBcIlwiKSwgUkVMUy5ITElOSyk7XG5cdFx0XHRcdHJlbFtcInI6aWRcIl0gPSBcInJJZFwiK3JJZDtcblx0XHRcdH1cblx0XHRcdGlmKChyZWxjID0gbFsxXS5UYXJnZXQuaW5kZXhPZihcIiNcIikpID4gLTEpIHJlbC5sb2NhdGlvbiA9IGVzY2FwZXhtbChsWzFdLlRhcmdldC5zbGljZShyZWxjKzEpKTtcblx0XHRcdGlmKGxbMV0uVG9vbHRpcCkgcmVsLnRvb2x0aXAgPSBlc2NhcGV4bWwobFsxXS5Ub29sdGlwKTtcblx0XHRcdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKFwiaHlwZXJsaW5rXCIsbnVsbCxyZWwpO1xuXHRcdH0pO1xuXHRcdG9bby5sZW5ndGhdID0gXCI8L2h5cGVybGlua3M+XCI7XG5cdH1cblx0ZGVsZXRlIHdzWychbGlua3MnXTtcblxuXHQvKiBwcmludE9wdGlvbnMgKi9cblxuXHRpZih3c1snIW1hcmdpbnMnXSAhPSBudWxsKSBvW28ubGVuZ3RoXSA9ICB3cml0ZV93c194bWxfbWFyZ2lucyh3c1snIW1hcmdpbnMnXSk7XG5cblx0LyogcGFnZVNldHVwICovXG5cdC8qIGhlYWRlckZvb3RlciAqL1xuXHQvKiByb3dCcmVha3MgKi9cblx0LyogY29sQnJlYWtzICovXG5cdC8qIGN1c3RvbVByb3BlcnRpZXMgKi9cblx0LyogY2VsbFdhdGNoZXMgKi9cblxuXHRpZighb3B0cyB8fCBvcHRzLmlnbm9yZUVDIHx8IChvcHRzLmlnbm9yZUVDID09ICh2b2lkIDApKSkgb1tvLmxlbmd0aF0gPSB3cml0ZXRhZyhcImlnbm9yZWRFcnJvcnNcIiwgd3JpdGV4dGFnKFwiaWdub3JlZEVycm9yXCIsIG51bGwsIHtudW1iZXJTdG9yZWRBc1RleHQ6MSwgc3FyZWY6cmVmfSkpO1xuXG5cdC8qIHNtYXJ0VGFncyAqL1xuXG5cdGlmKF9kcmF3aW5nLmxlbmd0aCA+IDApIHtcblx0XHRySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgXCIuLi9kcmF3aW5ncy9kcmF3aW5nXCIgKyAoaWR4KzEpICsgXCIueG1sXCIsIFJFTFMuRFJBVyk7XG5cdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoXCJkcmF3aW5nXCIsIG51bGwsIHtcInI6aWRcIjpcInJJZFwiICsgcklkfSk7XG5cdFx0d3NbJyFkcmF3aW5nJ10gPSBfZHJhd2luZztcblx0fVxuXG5cdGlmKHdzWychY29tbWVudHMnXS5sZW5ndGggPiAwKSB7XG5cdFx0cklkID0gYWRkX3JlbHMocmVscywgLTEsIFwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZ1wiICsgKGlkeCsxKSArIFwiLnZtbFwiLCBSRUxTLlZNTCk7XG5cdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoXCJsZWdhY3lEcmF3aW5nXCIsIG51bGwsIHtcInI6aWRcIjpcInJJZFwiICsgcklkfSk7XG5cdFx0d3NbJyFsZWdhY3knXSA9IHJJZDtcblx0fVxuXG5cdC8qIGxlZ2FjeURyYXdpbmdIRiAqL1xuXHQvKiBwaWN0dXJlICovXG5cdC8qIG9sZU9iamVjdHMgKi9cblx0LyogY29udHJvbHMgKi9cblx0Lyogd2ViUHVibGlzaEl0ZW1zICovXG5cdC8qIHRhYmxlUGFydHMgKi9cblx0LyogZXh0THN0ICovXG5cblx0aWYoby5sZW5ndGg+MSkgeyBvW28ubGVuZ3RoXSA9ICgnPC93b3Jrc2hlZXQ+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC43MjYgQnJ0Um93SGRyICovXG5mdW5jdGlvbiBwYXJzZV9CcnRSb3dIZHIoZGF0YSwgbGVuZ3RoKSB7XG5cdHZhciB6ID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgdGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR6LnIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGRhdGEubCArPSA0OyAvLyBUT0RPOiBpeGZlXG5cdHZhciBtaXlSdyA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0ZGF0YS5sICs9IDE7IC8vIFRPRE86IHRvcC9ib3QgcGFkZGluZ1xuXHR2YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGRhdGEubCA9IHRndDtcblx0aWYoZmxhZ3MgJiAweDA3KSB6LmxldmVsID0gZmxhZ3MgJiAweDA3O1xuXHRpZihmbGFncyAmIDB4MTApIHouaGlkZGVuID0gdHJ1ZTtcblx0aWYoZmxhZ3MgJiAweDIwKSB6LmhwdCA9IG1peVJ3IC8gMjA7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Um93SGRyKFIvKjpudW1iZXIqLywgcmFuZ2UsIHdzKSB7XG5cdHZhciBvID0gbmV3X2J1ZigxNys4KjE2KTtcblx0dmFyIHJvdyA9ICh3c1snIXJvd3MnXXx8W10pW1JdfHx7fTtcblx0by53cml0ZV9zaGlmdCg0LCBSKTtcblxuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBUT0RPOiBpeGZlICovXG5cblx0dmFyIG1peVJ3ID0gMHgwMTQwO1xuXHRpZihyb3cuaHB4KSBtaXlSdyA9IHB4MnB0KHJvdy5ocHgpICogMjA7XG5cdGVsc2UgaWYocm93LmhwdCkgbWl5UncgPSByb3cuaHB0ICogMjA7XG5cdG8ud3JpdGVfc2hpZnQoMiwgbWl5UncpO1xuXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIHRvcC9ib3QgcGFkZGluZyAqL1xuXG5cdHZhciBmbGFncyA9IDB4MDtcblx0aWYocm93LmxldmVsKSBmbGFncyB8PSByb3cubGV2ZWw7XG5cdGlmKHJvdy5oaWRkZW4pIGZsYWdzIHw9IDB4MTA7XG5cdGlmKHJvdy5ocHggfHwgcm93LmhwdCkgZmxhZ3MgfD0gMHgyMDtcblx0by53cml0ZV9zaGlmdCgxLCBmbGFncyk7XG5cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogcGhvbmV0aWMgZ3VpZGUgKi9cblxuXHQvKiBbTVMtWExTQl0gMi41LjggQnJ0Q29sU3BhbiBleHBsYWlucyB0aGUgbWVjaGFuaXNtICovXG5cdHZhciBuY29sc3BhbiA9IDAsIGxjcyA9IG8ubDtcblx0by5sICs9IDQ7XG5cblx0dmFyIGNhZGRyID0ge3I6UiwgYzowfTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcblx0XHRpZigocmFuZ2Uucy5jID4gKChpKzEpIDw8IDEwKSkgfHwgKHJhbmdlLmUuYyA8IChpIDw8IDEwKSkpIGNvbnRpbnVlO1xuXHRcdHZhciBmaXJzdCA9IC0xLCBsYXN0ID0gLTE7XG5cdFx0Zm9yKHZhciBqID0gKGk8PDEwKTsgaiA8ICgoaSsxKTw8MTApOyArK2opIHtcblx0XHRcdGNhZGRyLmMgPSBqO1xuXHRcdFx0dmFyIGNlbGwgPSBBcnJheS5pc0FycmF5KHdzKSA/ICh3c1tjYWRkci5yXXx8W10pW2NhZGRyLmNdIDogd3NbZW5jb2RlX2NlbGwoY2FkZHIpXTtcblx0XHRcdGlmKGNlbGwpIHsgaWYoZmlyc3QgPCAwKSBmaXJzdCA9IGo7IGxhc3QgPSBqOyB9XG5cdFx0fVxuXHRcdGlmKGZpcnN0IDwgMCkgY29udGludWU7XG5cdFx0KytuY29sc3Bhbjtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGZpcnN0KTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGxhc3QpO1xuXHR9XG5cblx0dmFyIGwgPSBvLmw7XG5cdG8ubCA9IGxjcztcblx0by53cml0ZV9zaGlmdCg0LCBuY29sc3Bhbik7XG5cdG8ubCA9IGw7XG5cblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cbmZ1bmN0aW9uIHdyaXRlX3Jvd19oZWFkZXIoYmEsIHdzLCByYW5nZSwgUikge1xuXHR2YXIgbyA9IHdyaXRlX0JydFJvd0hkcihSLCByYW5nZSwgd3MpO1xuXHRpZigoby5sZW5ndGggPiAxNykgfHwgKHdzWychcm93cyddfHxbXSlbUl0pIHdyaXRlX3JlY29yZChiYSwgMHgwMDAwIC8qIEJydFJvd0hkciAqLywgbyk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuODIwIEJydFdzRGltICovXG52YXIgcGFyc2VfQnJ0V3NEaW0gPSBwYXJzZV9VbmNoZWNrZWRSZlg7XG52YXIgd3JpdGVfQnJ0V3NEaW0gPSB3cml0ZV9VbmNoZWNrZWRSZlg7XG5cbi8qIFtNUy1YTFNCXSAyLjQuODIxIEJydFdzRm10SW5mbyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0V3NGbXRJbmZvKC8qOjpkYXRhLCBsZW5ndGgqLykge1xufVxuLy9mdW5jdGlvbiB3cml0ZV9CcnRXc0ZtdEluZm8od3MsIG8pIHsgfVxuXG4vKiBbTVMtWExTQl0gMi40LjgyMyBCcnRXc1Byb3AgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFdzUHJvcChkYXRhLCBsZW5ndGgpIHtcblx0dmFyIHogPSB7fTtcblx0dmFyIGYgPSBkYXRhW2RhdGEubF07ICsrZGF0YS5sO1xuXHR6LmFib3ZlID0gIShmICYgMHg0MCk7XG5cdHoubGVmdCAgPSAhKGYgJiAweDgwKTtcblx0LyogVE9ETzogcHVsbCBmbGFncyAqL1xuXHRkYXRhLmwgKz0gMTg7XG5cdHoubmFtZSA9IHBhcnNlX1hMU0JDb2RlTmFtZShkYXRhLCBsZW5ndGggLSAxOSk7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0V3NQcm9wKHN0ciwgb3V0bCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDg0KzQqc3RyLmxlbmd0aCk7XG5cdHZhciBmID0gMHhDMDtcblx0aWYob3V0bCkge1xuXHRcdGlmKG91dGwuYWJvdmUpIGYgJj0gfjB4NDA7XG5cdFx0aWYob3V0bC5sZWZ0KSAgZiAmPSB+MHg4MDtcblx0fVxuXHRvLndyaXRlX3NoaWZ0KDEsIGYpO1xuXHRmb3IodmFyIGkgPSAxOyBpIDwgMzsgKytpKSBvLndyaXRlX3NoaWZ0KDEsMCk7XG5cdHdyaXRlX0JydENvbG9yKHthdXRvOjF9LCBvKTtcblx0by53cml0ZV9zaGlmdCgtNCwtMSk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsLTEpO1xuXHR3cml0ZV9YTFNCQ29kZU5hbWUoc3RyLCBvKTtcblx0cmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDYgQnJ0Q2VsbEJsYW5rICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsQmxhbmsoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGxdO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbEJsYW5rKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCk7XG5cdHJldHVybiB3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydEJsYW5rKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGxdO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRCbGFuayhjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDQpO1xuXHRyZXR1cm4gd3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA3IEJydENlbGxCb29sICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsQm9vbChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciBmQm9vbCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFtjZWxsLCBmQm9vbCwgJ2InXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxCb29sKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOSk7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYgPyAxIDogMCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRCb29sKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgZkJvb2wgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgZkJvb2wsICdiJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydEJvb2woY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig1KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgY2VsbC52ID8gMSA6IDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDggQnJ0Q2VsbEVycm9yICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsRXJyb3IoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgYkVycm9yID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW2NlbGwsIGJFcnJvciwgJ2UnXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxFcnJvcihjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDkpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgY2VsbC52KTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydEVycm9yKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgYkVycm9yID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW2NlbGwsIGJFcnJvciwgJ2UnXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0RXJyb3IoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgY2VsbC52KTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0cmV0dXJuIG87XG59XG5cblxuLyogW01TLVhMU0JdIDIuNC4zMTEgQnJ0Q2VsbElzc3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxJc3N0KGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIGlzc3QgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBbY2VsbCwgaXNzdCwgJ3MnXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxJc3N0KGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTIpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgbmNlbGwudik7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRJc3N0KGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgaXNzdCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFtjZWxsLCBpc3N0LCAncyddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRJc3N0KGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCk7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIG5jZWxsLnYpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMTMgQnJ0Q2VsbFJlYWwgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxSZWFsKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWG51bShkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxSZWFsKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTYpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hudW0oY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydFJlYWwoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hudW0oZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICduJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydFJlYWwoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMik7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9YbnVtKGNlbGwudiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMxNCBCcnRDZWxsUmsgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxSayhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1JrTnVtYmVyKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnbiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbFJrKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTIpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1JrTnVtYmVyKGNlbGwudiwgbyk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRSayhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfUmtOdW1iZXIoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICduJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydFJrKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCk7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9Sa051bWJlcihjZWxsLnYsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMjMgQnJ0Q2VsbFJTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxSU3RyaW5nKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfUmljaFN0cihkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ2lzJ107XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzE3IEJydENlbGxTdCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFN0KGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnc3RyJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsU3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMiArIDQgKiBjZWxsLnYubGVuZ3RoKTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoY2VsbC52LCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0U3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ3N0ciddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRTdChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDggKyA0ICogY2VsbC52Lmxlbmd0aCk7XG5cdHdyaXRlX1hMU0JTaG9ydENlbGwobmNlbGwsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoY2VsbC52LCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTMgQnJ0Rm1sYUJvb2wgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtbGFCb29sKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG8gPSBbY2VsbCwgdmFsdWUsICdiJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1NCBCcnRGbWxhRXJyb3IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtbGFFcnJvcihkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0Y2VsbC5yID0gb3B0c1snIXJvdyddO1xuXHR2YXIgdmFsdWUgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnZSddO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0ZGF0YS5sICs9IDI7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzNdID0gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYSwgbnVsbC8qcmFuZ2UqLywgY2VsbCwgb3B0cy5zdXBib29rcywgb3B0cyk7LyogVE9ETyAqL1xuXHR9XG5cdGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTUgQnJ0Rm1sYU51bSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYU51bShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0Y2VsbC5yID0gb3B0c1snIXJvdyddO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YbnVtKGRhdGEpO1xuXHR2YXIgbyA9IFtjZWxsLCB2YWx1ZSwgJ24nXTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdGRhdGEubCArPSAyO1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1szXSA9IHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEsIG51bGwvKnJhbmdlKi8sIGNlbGwsIG9wdHMuc3VwYm9va3MsIG9wdHMpOy8qIFRPRE8gKi9cblx0fVxuXHRlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjU2IEJydEZtbGFTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtbGFTdHJpbmcoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdGNlbGwuciA9IG9wdHNbJyFyb3cnXTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgbyA9IFtjZWxsLCB2YWx1ZSwgJ3N0ciddO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0ZGF0YS5sICs9IDI7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzNdID0gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYSwgbnVsbC8qcmFuZ2UqLywgY2VsbCwgb3B0cy5zdXBib29rcywgb3B0cyk7LyogVE9ETyAqL1xuXHR9XG5cdGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42ODIgQnJ0TWVyZ2VDZWxsICovXG52YXIgcGFyc2VfQnJ0TWVyZ2VDZWxsID0gcGFyc2VfVW5jaGVja2VkUmZYO1xudmFyIHdyaXRlX0JydE1lcmdlQ2VsbCA9IHdyaXRlX1VuY2hlY2tlZFJmWDtcbi8qIFtNUy1YTFNCXSAyLjQuMTA3IEJydEJlZ2luTWVyZ2VDZWxscyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0QmVnaW5NZXJnZUNlbGxzKGNudCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGNudCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY2MiBCcnRITGluayAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0SExpbmsoZGF0YSwgbGVuZ3RoLyo6Oiwgb3B0cyovKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciByZnggPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSwgMTYpO1xuXHR2YXIgcmVsSWQgPSBwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIGxvYyA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIHRvb2x0aXAgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciBkaXNwbGF5ID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHRkYXRhLmwgPSBlbmQ7XG5cdHZhciBvID0gKHtyZng6cmZ4LCByZWxJZDpyZWxJZCwgbG9jOmxvYywgZGlzcGxheTpkaXNwbGF5fS8qOmFueSovKTtcblx0aWYodG9vbHRpcCkgby5Ub29sdGlwID0gdG9vbHRpcDtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRITGluayhsLCBySWQpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDUwKzQqKGxbMV0uVGFyZ2V0Lmxlbmd0aCArIChsWzFdLlRvb2x0aXAgfHwgXCJcIikubGVuZ3RoKSk7XG5cdHdyaXRlX1VuY2hlY2tlZFJmWCh7czpkZWNvZGVfY2VsbChsWzBdKSwgZTpkZWNvZGVfY2VsbChsWzBdKX0sIG8pO1xuXHR3cml0ZV9SZWxJRChcInJJZFwiICsgcklkLCBvKTtcblx0dmFyIGxvY2lkeCA9IGxbMV0uVGFyZ2V0LmluZGV4T2YoXCIjXCIpO1xuXHR2YXIgbG9jID0gbG9jaWR4ID09IC0xID8gXCJcIiA6IGxbMV0uVGFyZ2V0LnNsaWNlKGxvY2lkeCsxKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGxvYyB8fCBcIlwiLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGxbMV0uVG9vbHRpcCB8fCBcIlwiLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFwiXCIsIG8pO1xuXHRyZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY5MiBCcnRQYW5lICovXG5mdW5jdGlvbiBwYXJzZV9CcnRQYW5lKC8qZGF0YSwgbGVuZ3RoLCBvcHRzKi8pIHtcbn1cblxuLyogW01TLVhMU0JdIDIuNC42IEJydEFyckZtbGEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEFyckZtbGEoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciByZnggPSBwYXJzZV9SZlgoZGF0YSwgMTYpO1xuXHR2YXIgZkFsd2F5c0NhbGMgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBvID0gW3JmeF07IG9bMl0gPSBmQWx3YXlzQ2FsYztcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkFycmF5UGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bMV0gPSBmb3JtdWxhO1xuXHR9IGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC43NTAgQnJ0U2hyRm1sYSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0U2hyRm1sYShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIHJmeCA9IHBhcnNlX1VuY2hlY2tlZFJmWChkYXRhLCAxNik7XG5cdHZhciBvID0gW3JmeF07XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JTaGFyZWRQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1sxXSA9IGZvcm11bGE7XG5cdFx0ZGF0YS5sID0gZW5kO1xuXHR9IGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMjMgQnJ0Q29sSW5mbyAqL1xuLyogVE9ETzogb25jZSBYTFMgQ29sSW5mbyBpcyBzZXQsIGNvbWJpbmUgdGhlIGZ1bmN0aW9ucyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0Q29sSW5mbyhDLyo6bnVtYmVyKi8sIGNvbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDE4KTtcblx0dmFyIHAgPSBjb2xfb2JqX3coQywgY29sKTtcblx0by53cml0ZV9zaGlmdCgtNCwgQyk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIEMpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIChwLndpZHRoIHx8IDEwKSAqIDI1Nik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMC8qaXhmZSovKTsgLy8gc3R5bGVcblx0dmFyIGZsYWdzID0gMDtcblx0aWYoY29sLmhpZGRlbikgZmxhZ3MgfD0gMHgwMTtcblx0aWYodHlwZW9mIHAud2lkdGggPT0gJ251bWJlcicpIGZsYWdzIHw9IDB4MDI7XG5cdGlmKGNvbC5sZXZlbCkgZmxhZ3MgfD0gKGNvbC5sZXZlbCA8PCA4KTtcblx0by53cml0ZV9zaGlmdCgyLCBmbGFncyk7IC8vIGJpdCBmbGFnXG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY3OCBCcnRNYXJnaW5zICovXG52YXIgQnJ0TWFyZ2luS2V5cyA9IFtcImxlZnRcIixcInJpZ2h0XCIsXCJ0b3BcIixcImJvdHRvbVwiLFwiaGVhZGVyXCIsXCJmb290ZXJcIl07XG5mdW5jdGlvbiBwYXJzZV9CcnRNYXJnaW5zKGRhdGEvKjo6LCBsZW5ndGgsIG9wdHMqLykvKjpNYXJnaW5zKi8ge1xuXHR2YXIgbWFyZ2lucyA9ICh7fS8qOmFueSovKTtcblx0QnJ0TWFyZ2luS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgbWFyZ2luc1trXSA9IHBhcnNlX1hudW0oZGF0YSwgOCk7IH0pO1xuXHRyZXR1cm4gbWFyZ2lucztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydE1hcmdpbnMobWFyZ2lucy8qOk1hcmdpbnMqLywgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDYqOCk7XG5cdGRlZmF1bHRfbWFyZ2lucyhtYXJnaW5zKTtcblx0QnJ0TWFyZ2luS2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgd3JpdGVfWG51bSgobWFyZ2lucy8qOmFueSovKVtrXSwgbyk7IH0pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4yOTkgQnJ0QmVnaW5Xc1ZpZXcgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luV3NWaWV3KGRhdGEvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgZiA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0ZGF0YS5sICs9IDI4O1xuXHRyZXR1cm4geyBSVEw6IGYgJiAweDIwIH07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbldzVmlldyh3cywgV29ya2Jvb2ssIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigzMCk7XG5cdHZhciBmID0gMHgzOWM7XG5cdGlmKCgoKFdvcmtib29rfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCkgZiB8PSAweDIwO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGYpOyAvLyBiaXQgZmxhZ1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvLyB2aWV3IGZpcnN0IHJvd1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvLyB2aWV3IGZpcnN0IGNvbFxuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvLyBncmlkbGluZSBjb2xvciBJQ1Zcblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAxMDApOyAvLyB6b29tIHNjYWxlXG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8vIHdvcmtib29rIHZpZXcgaWRcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA5IEJydENlbGxJZ25vcmVFQyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbElnbm9yZUVDKHJlZikge1xuXHR2YXIgbyA9IG5ld19idWYoMjQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDEpO1xuXHR3cml0ZV9VbmNoZWNrZWRSZlgocmVmLCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNzQ4IEJydFNoZWV0UHJvdGVjdGlvbiAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0U2hlZXRQcm90ZWN0aW9uKHNwLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTYqNCsyKTtcblx0by53cml0ZV9zaGlmdCgyLCBzcC5wYXNzd29yZCA/IGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEoc3AucGFzc3dvcmQpIDogMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSk7IC8vIHRoaXMgcmVjb3JkIHNob3VsZCBub3QgYmUgd3JpdHRlbiBpZiBubyBwcm90ZWN0aW9uXG5cdFtcblx0XHRbXCJvYmplY3RzXCIsICAgICAgICAgICAgIGZhbHNlXSwgLy8gZk9iamVjdHNcblx0XHRbXCJzY2VuYXJpb3NcIiwgICAgICAgICAgIGZhbHNlXSwgLy8gZlNjZW5hcmlvc1xuXHRcdFtcImZvcm1hdENlbGxzXCIsICAgICAgICAgIHRydWVdLCAvLyBmRm9ybWF0Q2VsbHNcblx0XHRbXCJmb3JtYXRDb2x1bW5zXCIsICAgICAgICB0cnVlXSwgLy8gZkZvcm1hdENvbHVtbnNcblx0XHRbXCJmb3JtYXRSb3dzXCIsICAgICAgICAgICB0cnVlXSwgLy8gZkZvcm1hdFJvd3Ncblx0XHRbXCJpbnNlcnRDb2x1bW5zXCIsICAgICAgICB0cnVlXSwgLy8gZkluc2VydENvbHVtbnNcblx0XHRbXCJpbnNlcnRSb3dzXCIsICAgICAgICAgICB0cnVlXSwgLy8gZkluc2VydFJvd3Ncblx0XHRbXCJpbnNlcnRIeXBlcmxpbmtzXCIsICAgICB0cnVlXSwgLy8gZkluc2VydEh5cGVybGlua3Ncblx0XHRbXCJkZWxldGVDb2x1bW5zXCIsICAgICAgICB0cnVlXSwgLy8gZkRlbGV0ZUNvbHVtbnNcblx0XHRbXCJkZWxldGVSb3dzXCIsICAgICAgICAgICB0cnVlXSwgLy8gZkRlbGV0ZVJvd3Ncblx0XHRbXCJzZWxlY3RMb2NrZWRDZWxsc1wiLCAgIGZhbHNlXSwgLy8gZlNlbExvY2tlZENlbGxzXG5cdFx0W1wic29ydFwiLCAgICAgICAgICAgICAgICAgdHJ1ZV0sIC8vIGZTb3J0XG5cdFx0W1wiYXV0b0ZpbHRlclwiLCAgICAgICAgICAgdHJ1ZV0sIC8vIGZBdXRvRmlsdGVyXG5cdFx0W1wicGl2b3RUYWJsZXNcIiwgICAgICAgICAgdHJ1ZV0sIC8vIGZQaXZvdFRhYmxlc1xuXHRcdFtcInNlbGVjdFVubG9ja2VkQ2VsbHNcIiwgZmFsc2VdICAvLyBmU2VsVW5sb2NrZWRDZWxsc1xuXHRdLmZvckVhY2goZnVuY3Rpb24obikge1xuXHRcdC8qOjogaWYobyA9PSBudWxsKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0aWYoblsxXSkgby53cml0ZV9zaGlmdCg0LCBzcFtuWzBdXSAhPSBudWxsICYmICFzcFtuWzBdXSA/IDEgOiAwKTtcblx0XHRlbHNlICAgICAgby53cml0ZV9zaGlmdCg0LCBzcFtuWzBdXSAhPSBudWxsICYmIHNwW25bMF1dID8gMCA6IDEpO1xuXHR9KTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JydERWYWwoLypkYXRhLCBsZW5ndGgsIG9wdHMqLykge1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0RFZhbDE0KC8qZGF0YSwgbGVuZ3RoLCBvcHRzKi8pIHtcbn1cbi8qIFtNUy1YTFNCXSAyLjEuNy42MSBXb3Jrc2hlZXQgKi9cbmZ1bmN0aW9uIHBhcnNlX3dzX2JpbihkYXRhLCBfb3B0cywgaWR4LCByZWxzLCB3Yi8qOldCV0JQcm9wcyovLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgcy8qOldvcmtzaGVldCovID0gKG9wdHMuZGVuc2UgPyBbXSA6IHt9KTtcblxuXHR2YXIgcmVmO1xuXHR2YXIgcmVmZ3Vlc3MgPSB7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9O1xuXG5cdHZhciBzdGF0ZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlLCBlbmQgPSBmYWxzZTtcblx0dmFyIHJvdywgcCwgY2YsIFIsIEMsIGFkZHIsIHNzdHIsIHJyLCBjZWxsLyo6Q2VsbCovO1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0b3B0cy5iaWZmID0gMTI7XG5cdG9wdHNbJyFyb3cnXSA9IDA7XG5cblx0dmFyIGFpID0gMCwgYWYgPSBmYWxzZTtcblxuXHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdHZhciBzaGFyZWRmID0ge307XG5cdHZhciBzdXBib29rcyA9IG9wdHMuc3VwYm9va3MgfHwgLyo6OigqL3diLyo6OiA6YW55KSovLnN1cGJvb2tzIHx8IChbW11dLyo6YW55Ki8pO1xuXHRzdXBib29rcy5zaGFyZWRmID0gc2hhcmVkZjtcblx0c3VwYm9va3MuYXJyYXlmID0gYXJyYXlmO1xuXHRzdXBib29rcy5TaGVldE5hbWVzID0gd2IuU2hlZXROYW1lcyB8fCB3Yi5TaGVldHMubWFwKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgubmFtZTsgfSk7XG5cdGlmKCFvcHRzLnN1cGJvb2tzKSB7XG5cdFx0b3B0cy5zdXBib29rcyA9IHN1cGJvb2tzO1xuXHRcdGlmKHdiLk5hbWVzKSBmb3IodmFyIGkgPSAwOyBpIDwgd2IuTmFtZXMubGVuZ3RoOyArK2kpIHN1cGJvb2tzWzBdW2krMV0gPSB3Yi5OYW1lc1tpXTtcblx0fVxuXG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IFtdLCByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdO1xuXHR2YXIgc2VlbmNvbCA9IGZhbHNlO1xuXG5cdFhMU0JSZWNvcmRFbnVtWzB4MDAxMF0gPSB7IG46XCJCcnRTaG9ydFJlYWxcIiwgZjpwYXJzZV9CcnRTaG9ydFJlYWwgfTtcblxuXHR2YXIgY20sIHZtO1xuXG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiB3c19wYXJzZSh2YWwsIFJSLCBSVCkge1xuXHRcdGlmKGVuZCkgcmV0dXJuO1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwOTQ6IC8qICdCcnRXc0RpbScgKi9cblx0XHRcdFx0cmVmID0gdmFsOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDAwOiAvKiAnQnJ0Um93SGRyJyAqL1xuXHRcdFx0XHRyb3cgPSB2YWw7XG5cdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IHJvdy5yKSBlbmQ9dHJ1ZTtcblx0XHRcdFx0cnIgPSBlbmNvZGVfcm93KFIgPSByb3cucik7XG5cdFx0XHRcdG9wdHNbJyFyb3cnXSA9IHJvdy5yO1xuXHRcdFx0XHRpZih2YWwuaGlkZGVuIHx8IHZhbC5ocHQgfHwgdmFsLmxldmVsICE9IG51bGwpIHtcblx0XHRcdFx0XHRpZih2YWwuaHB0KSB2YWwuaHB4ID0gcHQycHgodmFsLmhwdCk7XG5cdFx0XHRcdFx0cm93aW5mb1t2YWwucl0gPSB2YWw7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDAyOiAvKiAnQnJ0Q2VsbFJrJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDM6IC8qICdCcnRDZWxsRXJyb3InICovXG5cdFx0XHRjYXNlIDB4MDAwNDogLyogJ0JydENlbGxCb29sJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDU6IC8qICdCcnRDZWxsUmVhbCcgKi9cblx0XHRcdGNhc2UgMHgwMDA2OiAvKiAnQnJ0Q2VsbFN0JyAqL1xuXHRcdFx0Y2FzZSAweDAwMDc6IC8qICdCcnRDZWxsSXNzdCcgKi9cblx0XHRcdGNhc2UgMHgwMDA4OiAvKiAnQnJ0Rm1sYVN0cmluZycgKi9cblx0XHRcdGNhc2UgMHgwMDA5OiAvKiAnQnJ0Rm1sYU51bScgKi9cblx0XHRcdGNhc2UgMHgwMDBBOiAvKiAnQnJ0Rm1sYUJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDAwQjogLyogJ0JydEZtbGFFcnJvcicgKi9cblx0XHRcdGNhc2UgMHgwMDBEOiAvKiAnQnJ0U2hvcnRSaycgKi9cblx0XHRcdGNhc2UgMHgwMDBFOiAvKiAnQnJ0U2hvcnRFcnJvcicgKi9cblx0XHRcdGNhc2UgMHgwMDBGOiAvKiAnQnJ0U2hvcnRCb29sJyAqL1xuXHRcdFx0Y2FzZSAweDAwMTA6IC8qICdCcnRTaG9ydFJlYWwnICovXG5cdFx0XHRjYXNlIDB4MDAxMTogLyogJ0JydFNob3J0U3QnICovXG5cdFx0XHRjYXNlIDB4MDAxMjogLyogJ0JydFNob3J0SXNzdCcgKi9cblx0XHRcdGNhc2UgMHgwMDNFOiAvKiAnQnJ0Q2VsbFJTdHJpbmcnICovXG5cdFx0XHRcdHAgPSAoe3Q6dmFsWzJdfS8qOmFueSovKTtcblx0XHRcdFx0c3dpdGNoKHZhbFsyXSkge1xuXHRcdFx0XHRcdGNhc2UgJ24nOiBwLnYgPSB2YWxbMV07IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3MnOiBzc3RyID0gc3Ryc1t2YWxbMV1dOyBwLnYgPSBzc3RyLnQ7IHAuciA9IHNzdHIucjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYic6IHAudiA9IHZhbFsxXSA/IHRydWUgOiBmYWxzZTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZSc6IHAudiA9IHZhbFsxXTsgaWYob3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpIHAudyA9IEJFcnJbcC52XTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3RyJzogcC50ID0gJ3MnOyBwLnYgPSB2YWxbMV07IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lzJzogcC50ID0gJ3MnOyBwLnYgPSB2YWxbMV0udDsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoKGNmID0gc3R5bGVzLkNlbGxYZlt2YWxbMF0uaVN0eWxlUmVmXSkpIHNhZmVfZm9ybWF0KHAsY2YubnVtRm10SWQsbnVsbCxvcHRzLCB0aGVtZXMsIHN0eWxlcyk7XG5cdFx0XHRcdEMgPSB2YWxbMF0uYyA9PSAtMSA/IEMgKyAxIDogdmFsWzBdLmM7XG5cdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXNbUl0pIHNbUl0gPSBbXTsgc1tSXVtDXSA9IHA7IH1cblx0XHRcdFx0ZWxzZSBzW2VuY29kZV9jb2woQykgKyBycl0gPSBwO1xuXHRcdFx0XHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0XHRcdFx0YWYgPSBmYWxzZTtcblx0XHRcdFx0XHRmb3IoYWkgPSAwOyBhaSA8IGFycmF5Zi5sZW5ndGg7ICsrYWkpIHtcblx0XHRcdFx0XHRcdHZhciBhaWkgPSBhcnJheWZbYWldO1xuXHRcdFx0XHRcdFx0aWYocm93LnIgPj0gYWlpWzBdLnMuciAmJiByb3cuciA8PSBhaWlbMF0uZS5yKVxuXHRcdFx0XHRcdFx0XHRpZihDID49IGFpaVswXS5zLmMgJiYgQyA8PSBhaWlbMF0uZS5jKSB7XG5cdFx0XHRcdFx0XHRcdFx0cC5GID0gZW5jb2RlX3JhbmdlKGFpaVswXSk7IGFmID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZighYWYgJiYgdmFsLmxlbmd0aCA+IDMpIHAuZiA9IHZhbFszXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuciA+IHJvdy5yKSByZWZndWVzcy5zLnIgPSByb3cucjtcblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5jID4gQykgcmVmZ3Vlc3Mucy5jID0gQztcblx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5yIDwgcm93LnIpIHJlZmd1ZXNzLmUuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLmMgPCBDKSByZWZndWVzcy5lLmMgPSBDO1xuXHRcdFx0XHRpZihvcHRzLmNlbGxEYXRlcyAmJiBjZiAmJiBwLnQgPT0gJ24nICYmIGZtdF9pc19kYXRlKHRhYmxlX2ZtdFtjZi5udW1GbXRJZF0pKSB7XG5cdFx0XHRcdFx0dmFyIF9kID0gU1NGX3BhcnNlX2RhdGVfY29kZShwLnYpOyBpZihfZCkgeyBwLnQgPSAnZCc7IHAudiA9IG5ldyBEYXRlKF9kLnksIF9kLm0tMSxfZC5kLF9kLkgsX2QuTSxfZC5TLF9kLnUpOyB9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoY20pIHtcblx0XHRcdFx0XHRpZihjbS50eXBlID09ICdYTERBUFInKSBwLkQgPSB0cnVlO1xuXHRcdFx0XHRcdGNtID0gdm9pZCAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHZtKSB2bSA9IHZvaWQgMDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDAxOiAvKiAnQnJ0Q2VsbEJsYW5rJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEM6IC8qICdCcnRTaG9ydEJsYW5rJyAqL1xuXHRcdFx0XHRpZighb3B0cy5zaGVldFN0dWJzIHx8IHBhc3MpIGJyZWFrO1xuXHRcdFx0XHRwID0gKHt0Oid6Jyx2OnZvaWQgMH0vKjphbnkqLyk7XG5cdFx0XHRcdEMgPSB2YWxbMF0uYyA9PSAtMSA/IEMgKyAxIDogdmFsWzBdLmM7XG5cdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXNbUl0pIHNbUl0gPSBbXTsgc1tSXVtDXSA9IHA7IH1cblx0XHRcdFx0ZWxzZSBzW2VuY29kZV9jb2woQykgKyBycl0gPSBwO1xuXHRcdFx0XHRpZihyZWZndWVzcy5zLnIgPiByb3cucikgcmVmZ3Vlc3Mucy5yID0gcm93LnI7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuYyA+IEMpIHJlZmd1ZXNzLnMuYyA9IEM7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLmUuciA8IHJvdy5yKSByZWZndWVzcy5lLnIgPSByb3cucjtcblx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5jIDwgQykgcmVmZ3Vlc3MuZS5jID0gQztcblx0XHRcdFx0aWYoY20pIHtcblx0XHRcdFx0XHRpZihjbS50eXBlID09ICdYTERBUFInKSBwLkQgPSB0cnVlO1xuXHRcdFx0XHRcdGNtID0gdm9pZCAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHZtKSB2bSA9IHZvaWQgMDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMEIwOiAvKiAnQnJ0TWVyZ2VDZWxsJyAqL1xuXHRcdFx0XHRtZXJnZXMucHVzaCh2YWwpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMzE6IHsgLyogJ0JydENlbGxNZXRhJyAqL1xuXHRcdFx0XHRjbSA9ICgob3B0cy54bG1ldGF8fHt9KS5DZWxsfHxbXSlbdmFsLTFdO1xuXHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxRUU6IC8qICdCcnRITGluaycgKi9cblx0XHRcdFx0dmFyIHJlbCA9IHJlbHNbJyFpZCddW3ZhbC5yZWxJZF07XG5cdFx0XHRcdGlmKHJlbCkge1xuXHRcdFx0XHRcdHZhbC5UYXJnZXQgPSByZWwuVGFyZ2V0O1xuXHRcdFx0XHRcdGlmKHZhbC5sb2MpIHZhbC5UYXJnZXQgKz0gXCIjXCIrdmFsLmxvYztcblx0XHRcdFx0XHR2YWwuUmVsID0gcmVsO1xuXHRcdFx0XHR9IGVsc2UgaWYodmFsLnJlbElkID09ICcnKSB7XG5cdFx0XHRcdFx0dmFsLlRhcmdldCA9IFwiI1wiICsgdmFsLmxvYztcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IoUj12YWwucmZ4LnMucjtSPD12YWwucmZ4LmUucjsrK1IpIGZvcihDPXZhbC5yZngucy5jO0M8PXZhbC5yZnguZS5jOysrQykge1xuXHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdGlmKCFzW1JdKSBzW1JdID0gW107XG5cdFx0XHRcdFx0XHRpZighc1tSXVtDXSkgc1tSXVtDXSA9IHt0Oid6Jyx2OnVuZGVmaW5lZH07XG5cdFx0XHRcdFx0XHRzW1JdW0NdLmwgPSB2YWw7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFkZHIgPSBlbmNvZGVfY2VsbCh7YzpDLHI6Un0pO1xuXHRcdFx0XHRcdFx0aWYoIXNbYWRkcl0pIHNbYWRkcl0gPSB7dDoneicsdjp1bmRlZmluZWR9O1xuXHRcdFx0XHRcdFx0c1thZGRyXS5sID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxQUE6IC8qICdCcnRBcnJGbWxhJyAqL1xuXHRcdFx0XHRpZighb3B0cy5jZWxsRm9ybXVsYSkgYnJlYWs7XG5cdFx0XHRcdGFycmF5Zi5wdXNoKHZhbCk7XG5cdFx0XHRcdGNlbGwgPSAoKG9wdHMuZGVuc2UgPyBzW1JdW0NdIDogc1tlbmNvZGVfY29sKEMpICsgcnJdKS8qOmFueSovKTtcblx0XHRcdFx0Y2VsbC5mID0gc3RyaW5naWZ5X2Zvcm11bGEodmFsWzFdLCByZWZndWVzcywge3I6cm93LnIsIGM6Q30sIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0Y2VsbC5GID0gZW5jb2RlX3JhbmdlKHZhbFswXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAxQUI6IC8qICdCcnRTaHJGbWxhJyAqL1xuXHRcdFx0XHRpZighb3B0cy5jZWxsRm9ybXVsYSkgYnJlYWs7XG5cdFx0XHRcdHNoYXJlZGZbZW5jb2RlX2NlbGwodmFsWzBdLnMpXSA9IHZhbFsxXTtcblx0XHRcdFx0Y2VsbCA9IChvcHRzLmRlbnNlID8gc1tSXVtDXSA6IHNbZW5jb2RlX2NvbChDKSArIHJyXSk7XG5cdFx0XHRcdGNlbGwuZiA9IHN0cmluZ2lmeV9mb3JtdWxhKHZhbFsxXSwgcmVmZ3Vlc3MsIHtyOnJvdy5yLCBjOkN9LCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBpZGVudGljYWwgdG8gJ0NvbEluZm8nIGluIFhMUyAqL1xuXHRcdFx0Y2FzZSAweDAwM0M6IC8qICdCcnRDb2xJbmZvJyAqL1xuXHRcdFx0XHRpZighb3B0cy5jZWxsU3R5bGVzKSBicmVhaztcblx0XHRcdFx0d2hpbGUodmFsLmUgPj0gdmFsLnMpIHtcblx0XHRcdFx0XHRjb2xpbmZvW3ZhbC5lLS1dID0geyB3aWR0aDogdmFsLncvMjU2LCBoaWRkZW46ICEhKHZhbC5mbGFncyAmIDB4MDEpLCBsZXZlbDogdmFsLmxldmVsIH07XG5cdFx0XHRcdFx0aWYoIXNlZW5jb2wpIHsgc2VlbmNvbCA9IHRydWU7IGZpbmRfbWR3X2NvbHcodmFsLncvMjU2KTsgfVxuXHRcdFx0XHRcdHByb2Nlc3NfY29sKGNvbGluZm9bdmFsLmUrMV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDBBMTogLyogJ0JydEJlZ2luQUZpbHRlcicgKi9cblx0XHRcdFx0c1snIWF1dG9maWx0ZXInXSA9IHsgcmVmOmVuY29kZV9yYW5nZSh2YWwpIH07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFEQzogLyogJ0JydE1hcmdpbnMnICovXG5cdFx0XHRcdHNbJyFtYXJnaW5zJ10gPSB2YWw7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA5MzogLyogJ0JydFdzUHJvcCcgKi9cblx0XHRcdFx0aWYoIXdiLlNoZWV0c1tpZHhdKSB3Yi5TaGVldHNbaWR4XSA9IHt9O1xuXHRcdFx0XHRpZih2YWwubmFtZSkgd2IuU2hlZXRzW2lkeF0uQ29kZU5hbWUgPSB2YWwubmFtZTtcblx0XHRcdFx0aWYodmFsLmFib3ZlIHx8IHZhbC5sZWZ0KSBzWychb3V0bGluZSddID0geyBhYm92ZTogdmFsLmFib3ZlLCBsZWZ0OiB2YWwubGVmdCB9O1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwODk6IC8qICdCcnRCZWdpbldzVmlldycgKi9cblx0XHRcdFx0aWYoIXdiLlZpZXdzKSB3Yi5WaWV3cyA9IFt7fV07XG5cdFx0XHRcdGlmKCF3Yi5WaWV3c1swXSkgd2IuVmlld3NbMF0gPSB7fTtcblx0XHRcdFx0aWYodmFsLlJUTCkgd2IuVmlld3NbMF0uUlRMID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMUU1OiAvKiAnQnJ0V3NGbXRJbmZvJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwNDA6IC8qICdCcnREVmFsJyAqL1xuXHRcdFx0Y2FzZSAweDA0MUQ6IC8qICdCcnREVmFsMTQnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA5NzogLyogJ0JydFBhbmUnICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwOTg6IC8qICdCcnRTZWwnICovXG5cdFx0XHRjYXNlIDB4MDBBRjogLyogJ0JydEFGaWx0ZXJEYXRlR3JvdXBJdGVtJyAqL1xuXHRcdFx0Y2FzZSAweDAyODQ6IC8qICdCcnRBY3RpdmVYJyAqL1xuXHRcdFx0Y2FzZSAweDAyNzE6IC8qICdCcnRCaWdOYW1lJyAqL1xuXHRcdFx0Y2FzZSAweDAyMzI6IC8qICdCcnRCa0hpbScgKi9cblx0XHRcdGNhc2UgMHgwMThDOiAvKiAnQnJ0QnJrJyAqL1xuXHRcdFx0Y2FzZSAweDA0NTg6IC8qICdCcnRDRkljb24nICovXG5cdFx0XHRjYXNlIDB4MDQ3QTogLyogJ0JydENGUnVsZUV4dCcgKi9cblx0XHRcdGNhc2UgMHgwMUQ3OiAvKiAnQnJ0Q0ZWTycgKi9cblx0XHRcdGNhc2UgMHgwNDFBOiAvKiAnQnJ0Q0ZWTzE0JyAqL1xuXHRcdFx0Y2FzZSAweDAyODk6IC8qICdCcnRDZWxsSWdub3JlRUMnICovXG5cdFx0XHRjYXNlIDB4MDQ1MTogLyogJ0JydENlbGxJZ25vcmVFQzE0JyAqL1xuXHRcdFx0Y2FzZSAweDAyNEQ6IC8qICdCcnRDZWxsU21hcnRUYWdQcm9wZXJ0eScgKi9cblx0XHRcdGNhc2UgMHgwMjVGOiAvKiAnQnJ0Q2VsbFdhdGNoJyAqL1xuXHRcdFx0Y2FzZSAweDAyMzQ6IC8qICdCcnRDb2xvcicgKi9cblx0XHRcdGNhc2UgMHgwNDFGOiAvKiAnQnJ0Q29sb3IxNCcgKi9cblx0XHRcdGNhc2UgMHgwMEE4OiAvKiAnQnJ0Q29sb3JGaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDBBRTogLyogJ0JydEN1c3RvbUZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwNDlDOiAvKiAnQnJ0Q3VzdG9tRmlsdGVyMTQnICovXG5cdFx0XHRjYXNlIDB4MDFGMzogLyogJ0JydERSZWYnICovXG5cdFx0XHRjYXNlIDB4MDFGQjogLyogJ0JydERYRicgKi9cblx0XHRcdGNhc2UgMHgwMjI2OiAvKiAnQnJ0RHJhd2luZycgKi9cblx0XHRcdGNhc2UgMHgwMEFCOiAvKiAnQnJ0RHluYW1pY0ZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwMEE3OiAvKiAnQnJ0RmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDA0OTk6IC8qICdCcnRGaWx0ZXIxNCcgKi9cblx0XHRcdGNhc2UgMHgwMEE5OiAvKiAnQnJ0SWNvbkZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwNDlEOiAvKiAnQnJ0SWNvbkZpbHRlcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAyMjc6IC8qICdCcnRMZWdhY3lEcmF3aW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjg6IC8qICdCcnRMZWdhY3lEcmF3aW5nSEYnICovXG5cdFx0XHRjYXNlIDB4MDI5NTogLyogJ0JydExpc3RQYXJ0JyAqL1xuXHRcdFx0Y2FzZSAweDAyN0Y6IC8qICdCcnRPbGVPYmplY3QnICovXG5cdFx0XHRjYXNlIDB4MDFERTogLyogJ0JydFBhZ2VTZXR1cCcgKi9cblx0XHRcdGNhc2UgMHgwMjE5OiAvKiAnQnJ0UGhvbmV0aWNJbmZvJyAqL1xuXHRcdFx0Y2FzZSAweDAxREQ6IC8qICdCcnRQcmludE9wdGlvbnMnICovXG5cdFx0XHRjYXNlIDB4MDIxODogLyogJ0JydFJhbmdlUHJvdGVjdGlvbicgKi9cblx0XHRcdGNhc2UgMHgwNDRGOiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uMTQnICovXG5cdFx0XHRjYXNlIDB4MDJBODogLyogJ0JydFJhbmdlUHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwNDUwOiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvMTQnICovXG5cdFx0XHRjYXNlIDB4MDQwMDogLyogJ0JydFJ3RGVzY2VudCcgKi9cblx0XHRcdGNhc2UgMHgwMjk3OiAvKiAnQnJ0U2hlZXRDYWxjUHJvcCcgKi9cblx0XHRcdGNhc2UgMHgwMjE3OiAvKiAnQnJ0U2hlZXRQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTY6IC8qICdCcnRTaGVldFByb3RlY3Rpb25Jc28nICovXG5cdFx0XHRjYXNlIDB4MDFGODogLyogJ0JydFNsYycgKi9cblx0XHRcdGNhc2UgMHgwNDEzOiAvKiAnQnJ0U3BhcmtsaW5lJyAqL1xuXHRcdFx0Y2FzZSAweDAxQUM6IC8qICdCcnRUYWJsZScgKi9cblx0XHRcdGNhc2UgMHgwMEFBOiAvKiAnQnJ0VG9wMTBGaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogJ0JydFVpZCcgKi9cblx0XHRcdGNhc2UgMHgwMDMyOiAvKiAnQnJ0VmFsdWVNZXRhJyAqL1xuXHRcdFx0Y2FzZSAweDA4MTY6IC8qICdCcnRXZWJFeHRlbnNpb24nICovXG5cdFx0XHRjYXNlIDB4MDQxNTogLyogJ0JydFdzRm10SW5mb0V4MTQnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogJ0JydEZSVEVuZCcgKi9cblx0XHRcdFx0cGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI1OiAvKiAnQnJ0QUNCZWdpbicgKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiAnQnJ0QUNFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9LCBvcHRzKTtcblxuXHRkZWxldGUgb3B0cy5zdXBib29rcztcblx0ZGVsZXRlIG9wdHNbJyFyb3cnXTtcblxuXHRpZighc1tcIiFyZWZcIl0gJiYgKHJlZmd1ZXNzLnMuciA8IDIwMDAwMDAgfHwgcmVmICYmIChyZWYuZS5yID4gMCB8fCByZWYuZS5jID4gMCB8fCByZWYucy5yID4gMCB8fCByZWYucy5jID4gMCkpKSBzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWYgfHwgcmVmZ3Vlc3MpO1xuXHRpZihvcHRzLnNoZWV0Um93cyAmJiBzW1wiIXJlZlwiXSkge1xuXHRcdHZhciB0bXByZWYgPSBzYWZlX2RlY29kZV9yYW5nZShzW1wiIXJlZlwiXSk7XG5cdFx0aWYob3B0cy5zaGVldFJvd3MgPD0gK3RtcHJlZi5lLnIpIHtcblx0XHRcdHRtcHJlZi5lLnIgPSBvcHRzLnNoZWV0Um93cyAtIDE7XG5cdFx0XHRpZih0bXByZWYuZS5yID4gcmVmZ3Vlc3MuZS5yKSB0bXByZWYuZS5yID0gcmVmZ3Vlc3MuZS5yO1xuXHRcdFx0aWYodG1wcmVmLmUuciA8IHRtcHJlZi5zLnIpIHRtcHJlZi5zLnIgPSB0bXByZWYuZS5yO1xuXHRcdFx0aWYodG1wcmVmLmUuYyA+IHJlZmd1ZXNzLmUuYykgdG1wcmVmLmUuYyA9IHJlZmd1ZXNzLmUuYztcblx0XHRcdGlmKHRtcHJlZi5lLmMgPCB0bXByZWYucy5jKSB0bXByZWYucy5jID0gdG1wcmVmLmUuYztcblx0XHRcdHNbXCIhZnVsbHJlZlwiXSA9IHNbXCIhcmVmXCJdO1xuXHRcdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UodG1wcmVmKTtcblx0XHR9XG5cdH1cblx0aWYobWVyZ2VzLmxlbmd0aCA+IDApIHNbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRpZihjb2xpbmZvLmxlbmd0aCA+IDApIHNbXCIhY29sc1wiXSA9IGNvbGluZm87XG5cdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgc1tcIiFyb3dzXCJdID0gcm93aW5mbztcblx0cmV0dXJuIHM7XG59XG5cbi8qIFRPRE86IHNvbWV0aGluZyB1c2VmdWwgLS0gdGhpcyBpcyBhIHN0dWIgKi9cbmZ1bmN0aW9uIHdyaXRlX3dzX2Jpbl9jZWxsKGJhLyo6QnVmQXJyYXkqLywgY2VsbC8qOkNlbGwqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIG9wdHMsIHdzLyo6V29ya3NoZWV0Ki8sIGxhc3Rfc2Vlbi8qOmJvb2xlYW4qLykvKjpib29sZWFuKi8ge1xuXHRpZihjZWxsLnYgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuXHR2YXIgdnYgPSBcIlwiO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnYic6IHZ2ID0gY2VsbC52ID8gXCIxXCIgOiBcIjBcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnZCc6IC8vIG5vIEJydENlbGxEYXRlIDooXG5cdFx0XHRjZWxsID0gZHVwKGNlbGwpO1xuXHRcdFx0Y2VsbC56ID0gY2VsbC56IHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRjZWxsLnYgPSBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKTsgY2VsbC50ID0gJ24nO1xuXHRcdFx0YnJlYWs7XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ24nOiBjYXNlICdlJzogdnYgPSAnJytjZWxsLnY7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHZ2ID0gY2VsbC52OyBicmVhaztcblx0fVxuXHR2YXIgby8qOmFueSovID0gKHtyOlIsIGM6Q30vKjphbnkqLyk7XG5cdC8qIFRPRE86IGNlbGwgc3R5bGUgKi9cblx0by5zID0gZ2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCBjZWxsLCBvcHRzKTtcblx0aWYoY2VsbC5sKSB3c1snIWxpbmtzJ10ucHVzaChbZW5jb2RlX2NlbGwobyksIGNlbGwubF0pO1xuXHRpZihjZWxsLmMpIHdzWychY29tbWVudHMnXS5wdXNoKFtlbmNvZGVfY2VsbChvKSwgY2VsbC5jXSk7XG5cdHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzpcblx0XHRcdGlmKG9wdHMuYm9va1NTVCkge1xuXHRcdFx0XHR2diA9IGdldF9zc3RfaWQob3B0cy5TdHJpbmdzLCAoY2VsbC52Lyo6YW55Ki8pLCBvcHRzLnJldlN0cmluZ3MpO1xuXHRcdFx0XHRvLnQgPSBcInNcIjsgby52ID0gdnY7XG5cdFx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTIgLyogQnJ0U2hvcnRJc3N0ICovLCB3cml0ZV9CcnRTaG9ydElzc3QoY2VsbCwgbykpO1xuXHRcdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDA3IC8qIEJydENlbGxJc3N0ICovLCB3cml0ZV9CcnRDZWxsSXNzdChjZWxsLCBvKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvLnQgPSBcInN0clwiO1xuXHRcdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDExIC8qIEJydFNob3J0U3QgKi8sIHdyaXRlX0JydFNob3J0U3QoY2VsbCwgbykpO1xuXHRcdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDA2IC8qIEJydENlbGxTdCAqLywgd3JpdGVfQnJ0Q2VsbFN0KGNlbGwsIG8pKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdGNhc2UgJ24nOlxuXHRcdFx0LyogVE9ETzogZGV0ZXJtaW5lIHRocmVzaG9sZCBmb3IgUmVhbCB2cyBSSyAqL1xuXHRcdFx0aWYoY2VsbC52ID09IChjZWxsLnYgfCAwKSAmJiBjZWxsLnYgPiAtMTAwMCAmJiBjZWxsLnYgPCAxMDAwKSB7XG5cdFx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMEQgLyogQnJ0U2hvcnRSayAqLywgd3JpdGVfQnJ0U2hvcnRSayhjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDIgLyogQnJ0Q2VsbFJrICovLCB3cml0ZV9CcnRDZWxsUmsoY2VsbCwgbykpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAxMCAvKiBCcnRTaG9ydFJlYWwgKi8sIHdyaXRlX0JydFNob3J0UmVhbChjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDUgLyogQnJ0Q2VsbFJlYWwgKi8sIHdyaXRlX0JydENlbGxSZWFsKGNlbGwsIG8pKTtcblx0XHRcdH0gcmV0dXJuIHRydWU7XG5cdFx0Y2FzZSAnYic6XG5cdFx0XHRvLnQgPSBcImJcIjtcblx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMEYgLyogQnJ0U2hvcnRCb29sICovLCB3cml0ZV9CcnRTaG9ydEJvb2woY2VsbCwgbykpO1xuXHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwNCAvKiBCcnRDZWxsQm9vbCAqLywgd3JpdGVfQnJ0Q2VsbEJvb2woY2VsbCwgbykpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSAnZSc6XG5cdFx0XHRvLnQgPSBcImVcIjtcblx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMEUgLyogQnJ0U2hvcnRFcnJvciAqLywgd3JpdGVfQnJ0U2hvcnRFcnJvcihjZWxsLCBvKSk7XG5cdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDAzIC8qIEJydENlbGxFcnJvciAqLywgd3JpdGVfQnJ0Q2VsbEVycm9yKGNlbGwsIG8pKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMEMgLyogQnJ0U2hvcnRCbGFuayAqLywgd3JpdGVfQnJ0U2hvcnRCbGFuayhjZWxsLCBvKSk7XG5cdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDEgLyogQnJ0Q2VsbEJsYW5rICovLCB3cml0ZV9CcnRDZWxsQmxhbmsoY2VsbCwgbykpO1xuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFRBQkxFKGJhLCB3cy8qOldvcmtzaGVldCovLCBpZHgvKjpudW1iZXIqLywgb3B0cy8qOjosIHdiOldvcmtib29rKi8pIHtcblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSB8fCBcIkExXCIpLCByZWYsIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5MSAvKiBCcnRCZWdpblNoZWV0RGF0YSAqLyk7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHR2YXIgY2FwID0gcmFuZ2UuZS5yO1xuXHRpZih3c1snIXJvd3MnXSkgY2FwID0gTWF0aC5tYXgocmFuZ2UuZS5yLCB3c1snIXJvd3MnXS5sZW5ndGggLSAxKTtcblx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IGNhcDsgKytSKSB7XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdC8qIFtBQ0NFTExUQUJMRV0gKi9cblx0XHQvKiBCcnRSb3dIZHIgKi9cblx0XHR3cml0ZV9yb3dfaGVhZGVyKGJhLCB3cywgcmFuZ2UsIFIpO1xuXHRcdHZhciBsYXN0X3NlZW4gPSBmYWxzZTtcblx0XHRpZihSIDw9IHJhbmdlLmUucikgZm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHQvKiAqMTYzODRDRUxMICovXG5cdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0cmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdGlmKCFjZWxsKSB7IGxhc3Rfc2VlbiA9IGZhbHNlOyBjb250aW51ZTsgfVxuXHRcdFx0Lyogd3JpdGUgY2VsbCAqL1xuXHRcdFx0bGFzdF9zZWVuID0gd3JpdGVfd3NfYmluX2NlbGwoYmEsIGNlbGwsIFIsIEMsIG9wdHMsIHdzLCBsYXN0X3NlZW4pO1xuXHRcdH1cblx0fVxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5MiAvKiBCcnRFbmRTaGVldERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9NRVJHRUNFTExTKGJhLCB3cy8qOldvcmtzaGVldCovKSB7XG5cdGlmKCF3cyB8fCAhd3NbJyFtZXJnZXMnXSkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBCMSAvKiBCcnRCZWdpbk1lcmdlQ2VsbHMgKi8sIHdyaXRlX0JydEJlZ2luTWVyZ2VDZWxscyh3c1snIW1lcmdlcyddLmxlbmd0aCkpO1xuXHR3c1snIW1lcmdlcyddLmZvckVhY2goZnVuY3Rpb24obSkgeyB3cml0ZV9yZWNvcmQoYmEsIDB4MDBCMCAvKiBCcnRNZXJnZUNlbGwgKi8sIHdyaXRlX0JydE1lcmdlQ2VsbChtKSk7IH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBCMiAvKiBCcnRFbmRNZXJnZUNlbGxzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ09MSU5GT1MoYmEsIHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBpZHg6bnVtYmVyLCBvcHRzLCB3YjpXb3JrYm9vayovKSB7XG5cdGlmKCF3cyB8fCAhd3NbJyFjb2xzJ10pIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxODYgLyogQnJ0QmVnaW5Db2xJbmZvcyAqLyk7XG5cdHdzWychY29scyddLmZvckVhY2goZnVuY3Rpb24obSwgaSkgeyBpZihtKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAzQyAvKiAnQnJ0Q29sSW5mbycgKi8sIHdyaXRlX0JydENvbEluZm8oaSwgbSkpOyB9KTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxODcgLyogQnJ0RW5kQ29sSW5mb3MgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9JR05PUkVFQ1MoYmEsIHdzLyo6V29ya3NoZWV0Ki8pIHtcblx0aWYoIXdzIHx8ICF3c1snIXJlZiddKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjg4IC8qIEJydEJlZ2luQ2VsbElnbm9yZUVDcyAqLyk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjg5IC8qIEJydENlbGxJZ25vcmVFQyAqLywgd3JpdGVfQnJ0Q2VsbElnbm9yZUVDKHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pKSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjhBIC8qIEJydEVuZENlbGxJZ25vcmVFQ3MgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9ITElOS1MoYmEsIHdzLyo6V29ya3NoZWV0Ki8sIHJlbHMpIHtcblx0LyogKkJydEhMaW5rICovXG5cdHdzWychbGlua3MnXS5mb3JFYWNoKGZ1bmN0aW9uKGwpIHtcblx0XHRpZighbFsxXS5UYXJnZXQpIHJldHVybjtcblx0XHR2YXIgcklkID0gYWRkX3JlbHMocmVscywgLTEsIGxbMV0uVGFyZ2V0LnJlcGxhY2UoLyMuKiQvLCBcIlwiKSwgUkVMUy5ITElOSyk7XG5cdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRUUgLyogQnJ0SExpbmsgKi8sIHdyaXRlX0JydEhMaW5rKGwsIHJJZCkpO1xuXHR9KTtcblx0ZGVsZXRlIHdzWychbGlua3MnXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0xFR0FDWURSQVdJTkcoYmEsIHdzLyo6V29ya3NoZWV0Ki8sIGlkeC8qOm51bWJlciovLCByZWxzKSB7XG5cdC8qIFtCcnRMZWdhY3lEcmF3aW5nXSAqL1xuXHRpZih3c1snIWNvbW1lbnRzJ10ubGVuZ3RoID4gMCkge1xuXHRcdHZhciBySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgXCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nXCIgKyAoaWR4KzEpICsgXCIudm1sXCIsIFJFTFMuVk1MKTtcblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDIyNyAvKiBCcnRMZWdhY3lEcmF3aW5nICovLCB3cml0ZV9SZWxJRChcInJJZFwiICsgcklkKSk7XG5cdFx0d3NbJyFsZWdhY3knXSA9IHJJZDtcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZV9BVVRPRklMVEVSKGJhLCB3cywgd2IsIGlkeCkge1xuXHRpZighd3NbJyFhdXRvZmlsdGVyJ10pIHJldHVybjtcblx0dmFyIGRhdGEgPSB3c1snIWF1dG9maWx0ZXInXTtcblx0dmFyIHJlZiA9IHR5cGVvZiBkYXRhLnJlZiA9PT0gXCJzdHJpbmdcIiA/IGRhdGEucmVmIDogZW5jb2RlX3JhbmdlKGRhdGEucmVmKTtcblxuXHQvKiBVcGRhdGUgRmlsdGVyRGF0YWJhc2UgZGVmaW5lZCBuYW1lIGZvciB0aGUgd29ya3NoZWV0ICovXG5cdGlmKCF3Yi5Xb3JrYm9vaykgd2IuV29ya2Jvb2sgPSAoe1NoZWV0czpbXX0vKjphbnkqLyk7XG5cdGlmKCF3Yi5Xb3JrYm9vay5OYW1lcykgd2IuV29ya2Jvb2suTmFtZXMgPSBbXTtcblx0dmFyIG5hbWVzLyo6IEFycmF5PGFueT4gKi8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHJlZik7XG5cdGlmKHJhbmdlLnMuciA9PSByYW5nZS5lLnIpIHsgcmFuZ2UuZS5yID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSkuZS5yOyByZWYgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpOyB9XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuYW1lID0gbmFtZXNbaV07XG5cdFx0aWYobmFtZS5OYW1lICE9ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnKSBjb250aW51ZTtcblx0XHRpZihuYW1lLlNoZWV0ICE9IGlkeCkgY29udGludWU7XG5cdFx0bmFtZS5SZWYgPSBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZjsgYnJlYWs7XG5cdH1cblx0aWYoaSA9PSBuYW1lcy5sZW5ndGgpIG5hbWVzLnB1c2goeyBOYW1lOiAnX3hsbm0uX0ZpbHRlckRhdGFiYXNlJywgU2hlZXQ6IGlkeCwgUmVmOiBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZiAgfSk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwQTEgLyogQnJ0QmVnaW5BRmlsdGVyICovLCB3cml0ZV9VbmNoZWNrZWRSZlgoc2FmZV9kZWNvZGVfcmFuZ2UocmVmKSkpO1xuXHQvKiAqRklMVEVSQ09MVU1OICovXG5cdC8qIFtTT1JUU1RBVEVdICovXG5cdC8qIEJydEVuZEFGaWx0ZXIgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwQTIgLyogQnJ0RW5kQUZpbHRlciAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1dTVklFV1MyKGJhLCB3cywgV29ya2Jvb2spIHtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODUgLyogQnJ0QmVnaW5Xc1ZpZXdzICovKTtcblx0eyAvKiAxKldTVklFVzIgKi9cblx0XHQvKiBbQUNVSURdICovXG5cdFx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODkgLyogQnJ0QmVnaW5Xc1ZpZXcgKi8sIHdyaXRlX0JydEJlZ2luV3NWaWV3KHdzLCBXb3JrYm9vaykpO1xuXHRcdC8qIFtCcnRQYW5lXSAqL1xuXHRcdC8qICo0QnJ0U2VsICovXG5cdFx0LyogKjRTWFNFTEVDVCAqL1xuXHRcdC8qICpGUlQgKi9cblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4QSAvKiBCcnRFbmRXc1ZpZXcgKi8pO1xuXHR9XG5cdC8qICpGUlQgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODYgLyogQnJ0RW5kV3NWaWV3cyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1dTRk1USU5GTygvKjo6YmEsIHdzKi8pIHtcblx0LyogW0FDV1NGTVRJTkZPXSAqL1xuXHQvLyB3cml0ZV9yZWNvcmQoYmEsIDB4MDFFNSAvKiBCcnRXc0ZtdEluZm8gKi8sIHdyaXRlX0JydFdzRm10SW5mbyh3cykpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9TSEVFVFBST1RFQ1QoYmEsIHdzKSB7XG5cdGlmKCF3c1snIXByb3RlY3QnXSkgcmV0dXJuO1xuXHQvKiBbQnJ0U2hlZXRQcm90ZWN0aW9uSXNvXSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDIxNyAvKiBCcnRTaGVldFByb3RlY3Rpb24gKi8sIHdyaXRlX0JydFNoZWV0UHJvdGVjdGlvbih3c1snIXByb3RlY3QnXSkpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaW4oaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF0sIHdzID0gd2IuU2hlZXRzW3NdIHx8IHt9O1xuXHR2YXIgYy8qOnN0cmluZyovID0gczsgdHJ5IHsgaWYod2IgJiYgd2IuV29ya2Jvb2spIGMgPSB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5Db2RlTmFtZSB8fCBjOyB9IGNhdGNoKGUpIHt9XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSB8fCBcIkExXCIpO1xuXHRpZihyLmUuYyA+IDB4M0ZGRiB8fCByLmUuciA+IDB4RkZGRkYpIHtcblx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgXCIgKyAod3NbJyFyZWYnXSB8fCBcIkExXCIpICsgXCIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6WEZEMTA0ODU3NlwiKTtcblx0XHRyLmUuYyA9IE1hdGgubWluKHIuZS5jLCAweDNGRkYpO1xuXHRcdHIuZS5yID0gTWF0aC5taW4oci5lLmMsIDB4RkZGRkYpO1xuXHR9XG5cdHdzWychbGlua3MnXSA9IFtdO1xuXHQvKiBwYXNzZWQgYmFjayB0byB3cml0ZV96aXAgYW5kIHJlbW92ZWQgdGhlcmUgKi9cblx0d3NbJyFjb21tZW50cyddID0gW107XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgxIC8qIEJydEJlZ2luU2hlZXQgKi8pO1xuXHRpZih3Yi52YmFyYXcgfHwgd3NbJyFvdXRsaW5lJ10pIHdyaXRlX3JlY29yZChiYSwgMHgwMDkzIC8qIEJydFdzUHJvcCAqLywgd3JpdGVfQnJ0V3NQcm9wKGMsIHdzWychb3V0bGluZSddKSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDk0IC8qIEJydFdzRGltICovLCB3cml0ZV9CcnRXc0RpbShyKSk7XG5cdHdyaXRlX1dTVklFV1MyKGJhLCB3cywgd2IuV29ya2Jvb2spO1xuXHR3cml0ZV9XU0ZNVElORk8oYmEsIHdzKTtcblx0d3JpdGVfQ09MSU5GT1MoYmEsIHdzLCBpZHgsIG9wdHMsIHdiKTtcblx0d3JpdGVfQ0VMTFRBQkxFKGJhLCB3cywgaWR4LCBvcHRzLCB3Yik7XG5cdC8qIFtCcnRTaGVldENhbGNQcm9wXSAqL1xuXHR3cml0ZV9TSEVFVFBST1RFQ1QoYmEsIHdzKTtcblx0LyogKihbQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvXSBCcnRSYW5nZVByb3RlY3Rpb24pICovXG5cdC8qIFtTQ0VOTUFOXSAqL1xuXHR3cml0ZV9BVVRPRklMVEVSKGJhLCB3cywgd2IsIGlkeCk7XG5cdC8qIFtTT1JUU1RBVEVdICovXG5cdC8qIFtEQ09OXSAqL1xuXHQvKiBbVVNFUlNIVklFV1NdICovXG5cdHdyaXRlX01FUkdFQ0VMTFMoYmEsIHdzKTtcblx0LyogW0JydFBob25ldGljSW5mb10gKi9cblx0LyogKkNPTkRJVElPTkFMRk9STUFUVElORyAqL1xuXHQvKiBbRFZBTFNdICovXG5cdHdyaXRlX0hMSU5LUyhiYSwgd3MsIHJlbHMpO1xuXHQvKiBbQnJ0UHJpbnRPcHRpb25zXSAqL1xuXHRpZih3c1snIW1hcmdpbnMnXSkgd3JpdGVfcmVjb3JkKGJhLCAweDAxREMgLyogQnJ0TWFyZ2lucyAqLywgd3JpdGVfQnJ0TWFyZ2lucyh3c1snIW1hcmdpbnMnXSkpO1xuXHQvKiBbQnJ0UGFnZVNldHVwXSAqL1xuXHQvKiBbSEVBREVSRk9PVEVSXSAqL1xuXHQvKiBbUldCUktdICovXG5cdC8qIFtDT0xCUktdICovXG5cdC8qICpCcnRCaWdOYW1lICovXG5cdC8qIFtDRUxMV0FUQ0hFU10gKi9cblx0aWYoIW9wdHMgfHwgb3B0cy5pZ25vcmVFQyB8fCAob3B0cy5pZ25vcmVFQyA9PSAodm9pZCAwKSkpIHdyaXRlX0lHTk9SRUVDUyhiYSwgd3MpO1xuXHQvKiBbU01BUlRUQUdTXSAqL1xuXHQvKiBbQnJ0RHJhd2luZ10gKi9cblx0d3JpdGVfTEVHQUNZRFJBV0lORyhiYSwgd3MsIGlkeCwgcmVscyk7XG5cdC8qIFtCcnRMZWdhY3lEcmF3aW5nSEZdICovXG5cdC8qIFtCcnRCa0hpbV0gKi9cblx0LyogW09MRU9CSkVDVFNdICovXG5cdC8qIFtBQ1RJVkVYQ09OVFJPTFNdICovXG5cdC8qIFtXRUJQVUJJVEVNU10gKi9cblx0LyogW0xJU1RQQVJUU10gKi9cblx0LyogRlJUV09SS1NIRUVUICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgyIC8qIEJydEVuZFNoZWV0ICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuZnVuY3Rpb24gcGFyc2VfQ2FjaGUoZGF0YS8qOnN0cmluZyovKS8qOltBcnJheTxudW1iZXJ8c3RyaW5nPiwgc3RyaW5nLCA/c3RyaW5nXSovIHtcblx0dmFyIGNvbC8qOkFycmF5PG51bWJlcnxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG51bSA9IGRhdGEubWF0Y2goL148YzpudW1DYWNoZT4vKTtcblx0dmFyIGY7XG5cblx0LyogMjEuMi4yLjE1MCBwdCBDVF9OdW1WYWwgKi9cblx0KGRhdGEubWF0Y2goLzxjOnB0IGlkeD1cIihcXGQqKVwiPiguKj8pPFxcL2M6cHQ+L21nKXx8W10pLmZvckVhY2goZnVuY3Rpb24ocHQpIHtcblx0XHR2YXIgcSA9IHB0Lm1hdGNoKC88YzpwdCBpZHg9XCIoXFxkKj8pXCI+PGM6dj4oLiopPFxcL2M6dj48XFwvYzpwdD4vKTtcblx0XHRpZighcSkgcmV0dXJuO1xuXHRcdGNvbFsrcVsxXV0gPSBudW0gPyArcVsyXSA6IHFbMl07XG5cdH0pO1xuXG5cdC8qIDIxLjIuMi43MSBmb3JtYXRDb2RlIENUX1hzdHJpbmcgKi9cblx0dmFyIG5mID0gdW5lc2NhcGV4bWwoKGRhdGEubWF0Y2goLzxjOmZvcm1hdENvZGU+KFtcXHNcXFNdKj8pPFxcL2M6Zm9ybWF0Q29kZT4vKSB8fCBbXCJcIixcIkdlbmVyYWxcIl0pWzFdKTtcblxuXHQoZGF0YS5tYXRjaCgvPGM6Zj4oLio/KTxcXC9jOmY+L21nKXx8W10pLmZvckVhY2goZnVuY3Rpb24oRikgeyBmID0gRi5yZXBsYWNlKC88Lio/Pi9nLFwiXCIpOyB9KTtcblxuXHRyZXR1cm4gW2NvbCwgbmYsIGZdO1xufVxuXG4vKiAyMS4yIERyYXdpbmdNTCAtIENoYXJ0cyAqL1xuZnVuY3Rpb24gcGFyc2VfY2hhcnQoZGF0YS8qOj9zdHJpbmcqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzLCByZWxzLCB3YiwgY3NoZWV0KSB7XG5cdHZhciBjcy8qOldvcmtzaGVldCovID0gKChjc2hlZXQgfHwge1wiIXR5cGVcIjpcImNoYXJ0XCJ9KS8qOmFueSovKTtcblx0aWYoIWRhdGEpIHJldHVybiBjc2hlZXQ7XG5cdC8qIDIxLjIuMi4yNyBjaGFydCBDVF9DaGFydCAqL1xuXG5cdHZhciBDID0gMCwgUiA9IDAsIGNvbCA9IFwiQVwiO1xuXHR2YXIgcmVmZ3Vlc3MgPSB7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9O1xuXG5cdC8qIDIxLjIuMi4xMjAgbnVtQ2FjaGUgQ1RfTnVtRGF0YSAqL1xuXHQoZGF0YS5tYXRjaCgvPGM6bnVtQ2FjaGU+W1xcc1xcU10qPzxcXC9jOm51bUNhY2hlPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG5jKSB7XG5cdFx0dmFyIGNhY2hlID0gcGFyc2VfQ2FjaGUobmMpO1xuXHRcdHJlZmd1ZXNzLnMuciA9IHJlZmd1ZXNzLnMuYyA9IDA7XG5cdFx0cmVmZ3Vlc3MuZS5jID0gQztcblx0XHRjb2wgPSBlbmNvZGVfY29sKEMpO1xuXHRcdGNhY2hlWzBdLmZvckVhY2goZnVuY3Rpb24obixpKSB7XG5cdFx0XHRjc1tjb2wgKyBlbmNvZGVfcm93KGkpXSA9IHt0OiduJywgdjpuLCB6OmNhY2hlWzFdIH07XG5cdFx0XHRSID0gaTtcblx0XHR9KTtcblx0XHRpZihyZWZndWVzcy5lLnIgPCBSKSByZWZndWVzcy5lLnIgPSBSO1xuXHRcdCsrQztcblx0fSk7XG5cdGlmKEMgPiAwKSBjc1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRyZXR1cm4gY3M7XG59XG4vKiAxOC4zIFdvcmtzaGVldHMgYWxzbyBjb3ZlcnMgQ2hhcnRzaGVldHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2NzX3htbChkYXRhLyo6P3N0cmluZyovLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgcmVscywgd2IvKjo6LCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHQvKiAxOC4zLjEuMTIgY2hhcnRzaGVldCBDVF9DaGFydFNoZWV0ICovXG5cdGlmKCFyZWxzKSByZWxzID0geychaWQnOnt9fTtcblx0dmFyIHMgPSAoeychdHlwZSc6XCJjaGFydFwiLCAnIWRyYXdlbCc6bnVsbCwgJyFyZWwnOlwiXCJ9Lyo6YW55Ki8pO1xuXHR2YXIgbTtcblxuXHQvKiAxOC4zLjEuODMgc2hlZXRQciBDVF9DaGFydHNoZWV0UHIgKi9cblx0dmFyIHNoZWV0UHIgPSBkYXRhLm1hdGNoKHNoZWV0cHJyZWdleCk7XG5cdGlmKHNoZWV0UHIpIHBhcnNlX3dzX3htbF9zaGVldHByKHNoZWV0UHJbMF0sIHMsIHdiLCBpZHgpO1xuXG5cdC8qIDE4LjMuMS4zNiBkcmF3aW5nIENUX0RyYXdpbmcgKi9cblx0aWYoKG0gPSBkYXRhLm1hdGNoKC9kcmF3aW5nIHI6aWQ9XCIoLio/KVwiLykpKSBzWychcmVsJ10gPSBtWzFdO1xuXG5cdGlmKHJlbHNbJyFpZCddW3NbJyFyZWwnXV0pIHNbJyFkcmF3ZWwnXSA9IHJlbHNbJyFpZCddW3NbJyFyZWwnXV07XG5cdHJldHVybiBzO1xufVxuZnVuY3Rpb24gd3JpdGVfY3NfeG1sKGlkeC8qOm51bWJlciovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ2NoYXJ0c2hlZXQnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQneG1sbnM6cic6IFhNTE5TLnJcblx0fSldO1xuXHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImRyYXdpbmdcIiwgbnVsbCwge1wicjppZFwiOiBcInJJZDFcIn0pO1xuXHRhZGRfcmVscyhyZWxzLCAtMSwgXCIuLi9kcmF3aW5ncy9kcmF3aW5nXCIgKyAoaWR4KzEpICsgXCIueG1sXCIsIFJFTFMuRFJBVyk7XG5cdGlmKG8ubGVuZ3RoPjIpIHsgb1tvLmxlbmd0aF0gPSAoJzwvY2hhcnRzaGVldD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMzMSBCcnRDc1Byb3AgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENzUHJvcChkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHRkYXRhLmwgKz0gMTA7XG5cdHZhciBuYW1lID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEsIGxlbmd0aCAtIDEwKTtcblx0cmV0dXJuIHsgbmFtZTogbmFtZSB9O1xufVxuXG4vKiBbTVMtWExTQl0gMi4xLjcuNyBDaGFydCBTaGVldCAqL1xuZnVuY3Rpb24gcGFyc2VfY3NfYmluKGRhdGEsIG9wdHMsIGlkeC8qOm51bWJlciovLCByZWxzLCB3Yi8qOjosIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8ge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdGlmKCFyZWxzKSByZWxzID0geychaWQnOnt9fTtcblx0dmFyIHMgPSB7JyF0eXBlJzpcImNoYXJ0XCIsICchZHJhd2VsJzpudWxsLCAnIXJlbCc6XCJcIn07XG5cdHZhciBzdGF0ZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gY3NfcGFyc2UodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXG5cdFx0XHRjYXNlIDB4MDIyNjogLyogJ0JydERyYXdpbmcnICovXG5cdFx0XHRcdHNbJyFyZWwnXSA9IHZhbDsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMjhCOiAvKiAnQnJ0Q3NQcm9wJyAqL1xuXHRcdFx0XHRpZighd2IuU2hlZXRzW2lkeF0pIHdiLlNoZWV0c1tpZHhdID0ge307XG5cdFx0XHRcdGlmKHZhbC5uYW1lKSB3Yi5TaGVldHNbaWR4XS5Db2RlTmFtZSA9IHZhbC5uYW1lO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAyMzI6IC8qICdCcnRCa0hpbScgKi9cblx0XHRcdGNhc2UgMHgwMjhDOiAvKiAnQnJ0Q3NQYWdlU2V0dXAnICovXG5cdFx0XHRjYXNlIDB4MDI5RDogLyogJ0JydENzUHJvdGVjdGlvbicgKi9cblx0XHRcdGNhc2UgMHgwMkE3OiAvKiAnQnJ0Q3NQcm90ZWN0aW9uSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjc6IC8qICdCcnRMZWdhY3lEcmF3aW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjg6IC8qICdCcnRMZWdhY3lEcmF3aW5nSEYnICovXG5cdFx0XHRjYXNlIDB4MDFEQzogLyogJ0JydE1hcmdpbnMnICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogJ0JydFVpZCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNjogLyogJ0JydEFDRW5kJyAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCA+IDApIHN0YXRlLnB1c2goUlQpO1xuXHRcdFx0XHRlbHNlIGlmKFIuVCA8IDApIHN0YXRlLnBvcCgpO1xuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0sIG9wdHMpO1xuXG5cdGlmKHJlbHNbJyFpZCddW3NbJyFyZWwnXV0pIHNbJyFkcmF3ZWwnXSA9IHJlbHNbJyFpZCddW3NbJyFyZWwnXV07XG5cdHJldHVybiBzO1xufVxuZnVuY3Rpb24gd3JpdGVfY3NfYmluKC8qOjppZHg6bnVtYmVyLCBvcHRzLCB3YjpXb3JrYm9vaywgcmVscyovKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4MSAvKiBCcnRCZWdpblNoZWV0ICovKTtcblx0LyogW0JydENzUHJvcF0gKi9cblx0LyogQ1NWSUVXUyAqL1xuXHQvKiBbW0JydENzUHJvdGVjdGlvbklzb10gQnJ0Q3NQcm90ZWN0aW9uXSAqL1xuXHQvKiBbVVNFUkNTVklFV1NdICovXG5cdC8qIFtCcnRNYXJnaW5zXSAqL1xuXHQvKiBbQnJ0Q3NQYWdlU2V0dXBdICovXG5cdC8qIFtIRUFERVJGT09URVJdICovXG5cdC8qIEJydERyYXdpbmcgKi9cblx0LyogW0JydExlZ2FjeURyYXdpbmddICovXG5cdC8qIFtCcnRMZWdhY3lEcmF3aW5nSEZdICovXG5cdC8qIFtCcnRCa0hpbV0gKi9cblx0LyogW1dFQlBVQklURU1TXSAqL1xuXHQvKiBGUlRDSEFSVFNIRUVUICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgyIC8qIEJydEVuZFNoZWV0ICovKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuLyogMTguMi4yOCAoQ1RfV29ya2Jvb2tQcm90ZWN0aW9uKSBEZWZhdWx0cyAqL1xudmFyIFdCUHJvcHNEZWYgPSBbXG5cdFsnYWxsb3dSZWZyZXNoUXVlcnknLCAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydhdXRvQ29tcHJlc3NQaWN0dXJlcycsICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ2JhY2t1cEZpbGUnLCAgICAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnY2hlY2tDb21wYXRpYmlsaXR5JywgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydDb2RlTmFtZScsICAgICAgICAgICAgICAgICAgICAnJ10sXG5cdFsnZGF0ZTE5MDQnLCAgICAgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydkZWZhdWx0VGhlbWVWZXJzaW9uJywgICAgICAgICAwLCAgICAgIFwiaW50XCJdLFxuXHRbJ2ZpbHRlclByaXZhY3knLCAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnaGlkZVBpdm90RmllbGRMaXN0JywgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0Wydwcm9tcHRlZFNvbHV0aW9ucycsICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3B1Ymxpc2hJdGVtcycsICAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsncmVmcmVzaEFsbENvbm5lY3Rpb25zJywgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydzYXZlRXh0ZXJuYWxMaW5rVmFsdWVzJywgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzJywgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd0lua0Fubm90YXRpb24nLCAgICAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93T2JqZWN0cycsICAgICAgICAgICAgICAgICAnYWxsJ10sXG5cdFsnc2hvd1Bpdm90Q2hhcnRGaWx0ZXInLCAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0Wyd1cGRhdGVMaW5rcycsICd1c2VyU2V0J11cbl07XG5cbi8qIDE4LjIuMzAgKENUX0Jvb2tWaWV3KSBEZWZhdWx0cyAqL1xudmFyIFdCVmlld0RlZiA9IFtcblx0WydhY3RpdmVUYWInLCAgICAgICAgICAgICAgICAgICAwLCAgICAgIFwiaW50XCJdLFxuXHRbJ2F1dG9GaWx0ZXJEYXRlR3JvdXBpbmcnLCAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnZmlyc3RTaGVldCcsICAgICAgICAgICAgICAgICAgMCwgICAgICBcImludFwiXSxcblx0WydtaW5pbWl6ZWQnLCAgICAgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3Nob3dIb3Jpem9udGFsU2Nyb2xsJywgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd1NoZWV0VGFicycsICAgICAgICAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93VmVydGljYWxTY3JvbGwnLCAgICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3RhYlJhdGlvJywgICAgICAgICAgICAgICAgICAgIDYwMCwgICAgXCJpbnRcIl0sXG5cdFsndmlzaWJpbGl0eScsICAgICAgICAgICAgICAgICAgJ3Zpc2libGUnXVxuXHQvL3dpbmRvd3tIZWlnaHQsV2lkdGh9LCB7eCx5fVdpbmRvd1xuXTtcblxuLyogMTguMi4xOSAoQ1RfU2hlZXQpIERlZmF1bHRzICovXG52YXIgU2hlZXREZWYgPSBbXG5cdC8vWydzdGF0ZScsICd2aXNpYmxlJ11cbl07XG5cbi8qIDE4LjIuMiAgKENUX0NhbGNQcikgRGVmYXVsdHMgKi9cbnZhciBDYWxjUHJEZWYgPSBbXG5cdFsnY2FsY0NvbXBsZXRlZCcsICd0cnVlJ10sXG5cdFsnY2FsY01vZGUnLCAnYXV0byddLFxuXHRbJ2NhbGNPblNhdmUnLCAndHJ1ZSddLFxuXHRbJ2NvbmN1cnJlbnRDYWxjJywgJ3RydWUnXSxcblx0WydmdWxsQ2FsY09uTG9hZCcsICdmYWxzZSddLFxuXHRbJ2Z1bGxQcmVjaXNpb24nLCAndHJ1ZSddLFxuXHRbJ2l0ZXJhdGUnLCAnZmFsc2UnXSxcblx0WydpdGVyYXRlQ291bnQnLCAnMTAwJ10sXG5cdFsnaXRlcmF0ZURlbHRhJywgJzAuMDAxJ10sXG5cdFsncmVmTW9kZScsICdBMSddXG5dO1xuXG4vKiAxOC4yLjMgKENUX0N1c3RvbVdvcmtib29rVmlldykgRGVmYXVsdHMgKi9cbi8qdmFyIEN1c3RvbVdCVmlld0RlZiA9IFtcblx0WydhdXRvVXBkYXRlJywgJ2ZhbHNlJ10sXG5cdFsnY2hhbmdlc1NhdmVkV2luJywgJ2ZhbHNlJ10sXG5cdFsnaW5jbHVkZUhpZGRlblJvd0NvbCcsICd0cnVlJ10sXG5cdFsnaW5jbHVkZVByaW50U2V0dGluZ3MnLCAndHJ1ZSddLFxuXHRbJ21heGltaXplZCcsICdmYWxzZSddLFxuXHRbJ21pbmltaXplZCcsICdmYWxzZSddLFxuXHRbJ29ubHlTeW5jJywgJ2ZhbHNlJ10sXG5cdFsncGVyc29uYWxWaWV3JywgJ2ZhbHNlJ10sXG5cdFsnc2hvd0NvbW1lbnRzJywgJ2NvbW1JbmRpY2F0b3InXSxcblx0WydzaG93Rm9ybXVsYUJhcicsICd0cnVlJ10sXG5cdFsnc2hvd0hvcml6b250YWxTY3JvbGwnLCAndHJ1ZSddLFxuXHRbJ3Nob3dPYmplY3RzJywgJ2FsbCddLFxuXHRbJ3Nob3dTaGVldFRhYnMnLCAndHJ1ZSddLFxuXHRbJ3Nob3dTdGF0dXNiYXInLCAndHJ1ZSddLFxuXHRbJ3Nob3dWZXJ0aWNhbFNjcm9sbCcsICd0cnVlJ10sXG5cdFsndGFiUmF0aW8nLCAnNjAwJ10sXG5cdFsneFdpbmRvdycsICcwJ10sXG5cdFsneVdpbmRvdycsICcwJ11cbl07Ki9cblxuZnVuY3Rpb24gcHVzaF9kZWZhdWx0c19hcnJheSh0YXJnZXQsIGRlZmF1bHRzKSB7XG5cdGZvcih2YXIgaiA9IDA7IGogIT0gdGFyZ2V0Lmxlbmd0aDsgKytqKSB7IHZhciB3ID0gdGFyZ2V0W2pdO1xuXHRcdGZvcih2YXIgaT0wOyBpICE9IGRlZmF1bHRzLmxlbmd0aDsgKytpKSB7IHZhciB6ID0gZGVmYXVsdHNbaV07XG5cdFx0XHRpZih3W3pbMF1dID09IG51bGwpIHdbelswXV0gPSB6WzFdO1xuXHRcdFx0ZWxzZSBzd2l0Y2goelsyXSkge1xuXHRcdFx0Y2FzZSBcImJvb2xcIjogaWYodHlwZW9mIHdbelswXV0gPT0gXCJzdHJpbmdcIikgd1t6WzBdXSA9IHBhcnNleG1sYm9vbCh3W3pbMF1dKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiaW50XCI6IGlmKHR5cGVvZiB3W3pbMF1dID09IFwic3RyaW5nXCIpIHdbelswXV0gPSBwYXJzZUludCh3W3pbMF1dLCAxMCk7IGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuZnVuY3Rpb24gcHVzaF9kZWZhdWx0cyh0YXJnZXQsIGRlZmF1bHRzKSB7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gZGVmYXVsdHMubGVuZ3RoOyArK2kpIHsgdmFyIHogPSBkZWZhdWx0c1tpXTtcblx0XHRpZih0YXJnZXRbelswXV0gPT0gbnVsbCkgdGFyZ2V0W3pbMF1dID0gelsxXTtcblx0XHRlbHNlIHN3aXRjaCh6WzJdKSB7XG5cdFx0XHRjYXNlIFwiYm9vbFwiOiBpZih0eXBlb2YgdGFyZ2V0W3pbMF1dID09IFwic3RyaW5nXCIpIHRhcmdldFt6WzBdXSA9IHBhcnNleG1sYm9vbCh0YXJnZXRbelswXV0pOyBicmVhaztcblx0XHRcdGNhc2UgXCJpbnRcIjogaWYodHlwZW9mIHRhcmdldFt6WzBdXSA9PSBcInN0cmluZ1wiKSB0YXJnZXRbelswXV0gPSBwYXJzZUludCh0YXJnZXRbelswXV0sIDEwKTsgYnJlYWs7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3diX2RlZmF1bHRzKHdiKSB7XG5cdHB1c2hfZGVmYXVsdHMod2IuV0JQcm9wcywgV0JQcm9wc0RlZik7XG5cdHB1c2hfZGVmYXVsdHMod2IuQ2FsY1ByLCBDYWxjUHJEZWYpO1xuXG5cdHB1c2hfZGVmYXVsdHNfYXJyYXkod2IuV0JWaWV3LCBXQlZpZXdEZWYpO1xuXHRwdXNoX2RlZmF1bHRzX2FycmF5KHdiLlNoZWV0cywgU2hlZXREZWYpO1xuXG5cdF9zc2ZvcHRzLmRhdGUxOTA0ID0gcGFyc2V4bWxib29sKHdiLldCUHJvcHMuZGF0ZTE5MDQpO1xufVxuXG5mdW5jdGlvbiBzYWZlMTkwNCh3Yi8qOldvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHQvKiBUT0RPOiBzdG9yZSBkYXRlMTkwNCBzb21ld2hlcmUgZWxzZSAqL1xuXHRpZighd2IuV29ya2Jvb2spIHJldHVybiBcImZhbHNlXCI7XG5cdGlmKCF3Yi5Xb3JrYm9vay5XQlByb3BzKSByZXR1cm4gXCJmYWxzZVwiO1xuXHRyZXR1cm4gcGFyc2V4bWxib29sKHdiLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG59XG5cbnZhciBiYWRjaGFycyA9IC8qI19fUFVSRV9fKi9cIl1bKj9cXC9cXFxcXCIuc3BsaXQoXCJcIik7XG5mdW5jdGlvbiBjaGVja193c19uYW1lKG4vKjpzdHJpbmcqLywgc2FmZS8qOj9ib29sZWFuKi8pLyo6Ym9vbGVhbiovIHtcblx0aWYobi5sZW5ndGggPiAzMSkgeyBpZihzYWZlKSByZXR1cm4gZmFsc2U7IHRocm93IG5ldyBFcnJvcihcIlNoZWV0IG5hbWVzIGNhbm5vdCBleGNlZWQgMzEgY2hhcnNcIik7IH1cblx0dmFyIF9nb29kID0gdHJ1ZTtcblx0YmFkY2hhcnMuZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0aWYobi5pbmRleE9mKGMpID09IC0xKSByZXR1cm47XG5cdFx0aWYoIXNhZmUpIHRocm93IG5ldyBFcnJvcihcIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXFxcIC8gPyAqIFsgXVwiKTtcblx0XHRfZ29vZCA9IGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIF9nb29kO1xufVxuZnVuY3Rpb24gY2hlY2tfd2JfbmFtZXMoTiwgUywgY29kZXMpIHtcblx0Ti5mb3JFYWNoKGZ1bmN0aW9uKG4saSkge1xuXHRcdGNoZWNrX3dzX25hbWUobik7XG5cdFx0Zm9yKHZhciBqID0gMDsgaiA8IGk7ICsraikgaWYobiA9PSBOW2pdKSB0aHJvdyBuZXcgRXJyb3IoXCJEdXBsaWNhdGUgU2hlZXQgTmFtZTogXCIgKyBuKTtcblx0XHRpZihjb2Rlcykge1xuXHRcdFx0dmFyIGNuID0gKFMgJiYgU1tpXSAmJiBTW2ldLkNvZGVOYW1lKSB8fCBuO1xuXHRcdFx0aWYoY24uY2hhckNvZGVBdCgwKSA9PSA5NSAmJiBjbi5sZW5ndGggPiAyMikgdGhyb3cgbmV3IEVycm9yKFwiQmFkIENvZGUgTmFtZTogV29ya3NoZWV0XCIgKyBjbik7XG5cdFx0fVxuXHR9KTtcbn1cbmZ1bmN0aW9uIGNoZWNrX3diKHdiKSB7XG5cdGlmKCF3YiB8fCAhd2IuU2hlZXROYW1lcyB8fCAhd2IuU2hlZXRzKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFdvcmtib29rXCIpO1xuXHRpZighd2IuU2hlZXROYW1lcy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihcIldvcmtib29rIGlzIGVtcHR5XCIpO1xuXHR2YXIgU2hlZXRzID0gKHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cykgfHwgW107XG5cdGNoZWNrX3diX25hbWVzKHdiLlNoZWV0TmFtZXMsIFNoZWV0cywgISF3Yi52YmFyYXcpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkgY2hlY2tfd3Mod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dLCB3Yi5TaGVldE5hbWVzW2ldLCBpKTtcblx0LyogVE9ETzogdmFsaWRhdGUgd29ya2Jvb2sgKi9cbn1cbi8qIDE4LjIgV29ya2Jvb2sgKi9cbnZhciB3Ym5zcmVnZXggPSAvPFxcdys6d29ya2Jvb2svO1xuZnVuY3Rpb24gcGFyc2Vfd2JfeG1sKGRhdGEsIG9wdHMpLyo6V29ya2Jvb2tGaWxlKi8ge1xuXHRpZighZGF0YSkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgZmlsZVwiKTtcblx0dmFyIHdiID0gLyo6OigqL3sgQXBwVmVyc2lvbjp7fSwgV0JQcm9wczp7fSwgV0JWaWV3OltdLCBTaGVldHM6W10sIENhbGNQcjp7fSwgTmFtZXM6W10sIHhtbG5zOiBcIlwiIH0vKjo6KSovO1xuXHR2YXIgcGFzcyA9IGZhbHNlLCB4bWxucyA9IFwieG1sbnNcIjtcblx0dmFyIGRuYW1lID0ge30sIGRuc3RhcnQgPSAwO1xuXHRkYXRhLnJlcGxhY2UodGFncmVnZXgsIGZ1bmN0aW9uIHhtbF93Yih4LCBpZHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjI3IHdvcmtib29rIENUX1dvcmtib29rIDEgKi9cblx0XHRcdGNhc2UgJzx3b3JrYm9vayc6XG5cdFx0XHRcdGlmKHgubWF0Y2god2Juc3JlZ2V4KSkgeG1sbnMgPSBcInhtbG5zXCIgKyB4Lm1hdGNoKC88KFxcdyspOi8pWzFdO1xuXHRcdFx0XHR3Yi54bWxucyA9IHlbeG1sbnNdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvd29ya2Jvb2s+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTMgZmlsZVZlcnNpb24gQ1RfRmlsZVZlcnNpb24gPyAqL1xuXHRcdFx0Y2FzZSAnPGZpbGVWZXJzaW9uJzogZGVsZXRlIHlbMF07IHdiLkFwcFZlcnNpb24gPSB5OyBicmVhaztcblx0XHRcdGNhc2UgJzxmaWxlVmVyc2lvbi8+JzogY2FzZSAnPC9maWxlVmVyc2lvbj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMiBmaWxlU2hhcmluZyBDVF9GaWxlU2hhcmluZyA/ICovXG5cdFx0XHRjYXNlICc8ZmlsZVNoYXJpbmcnOlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxmaWxlU2hhcmluZy8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjggd29ya2Jvb2tQciBDVF9Xb3JrYm9va1ByID8gKi9cblx0XHRcdGNhc2UgJzx3b3JrYm9va1ByJzpcblx0XHRcdGNhc2UgJzx3b3JrYm9va1ByLz4nOlxuXHRcdFx0XHRXQlByb3BzRGVmLmZvckVhY2goZnVuY3Rpb24odykge1xuXHRcdFx0XHRcdGlmKHlbd1swXV0gPT0gbnVsbCkgcmV0dXJuO1xuXHRcdFx0XHRcdHN3aXRjaCh3WzJdKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiYm9vbFwiOiB3Yi5XQlByb3BzW3dbMF1dID0gcGFyc2V4bWxib29sKHlbd1swXV0pOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJpbnRcIjogd2IuV0JQcm9wc1t3WzBdXSA9IHBhcnNlSW50KHlbd1swXV0sIDEwKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OiB3Yi5XQlByb3BzW3dbMF1dID0geVt3WzBdXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZih5LmNvZGVOYW1lKSB3Yi5XQlByb3BzLkNvZGVOYW1lID0gdXRmOHJlYWQoeS5jb2RlTmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC93b3JrYm9va1ByPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjI5IHdvcmtib29rUHJvdGVjdGlvbiBDVF9Xb3JrYm9va1Byb3RlY3Rpb24gPyAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHJvdGVjdGlvbic6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHJvdGVjdGlvbi8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMSAgYm9va1ZpZXdzIENUX0Jvb2tWaWV3cyA/ICovXG5cdFx0XHRjYXNlICc8Ym9va1ZpZXdzJzogY2FzZSAnPGJvb2tWaWV3cz4nOiBjYXNlICc8L2Jvb2tWaWV3cz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMzAgICB3b3JrYm9va1ZpZXcgQ1RfQm9va1ZpZXcgKyAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rVmlldyc6IGNhc2UgJzx3b3JrYm9va1ZpZXcvPic6IGRlbGV0ZSB5WzBdOyB3Yi5XQlZpZXcucHVzaCh5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3dvcmtib29rVmlldz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yMCBzaGVldHMgQ1RfU2hlZXRzIDEgKi9cblx0XHRcdGNhc2UgJzxzaGVldHMnOiBjYXNlICc8c2hlZXRzPic6IGNhc2UgJzwvc2hlZXRzPic6IGJyZWFrOyAvLyBhZ2dyZWdhdGUgc2hlZXRcblx0XHRcdC8qIDE4LjIuMTkgICBzaGVldCBDVF9TaGVldCArICovXG5cdFx0XHRjYXNlICc8c2hlZXQnOlxuXHRcdFx0XHRzd2l0Y2goeS5zdGF0ZSkge1xuXHRcdFx0XHRcdGNhc2UgXCJoaWRkZW5cIjogeS5IaWRkZW4gPSAxOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwidmVyeUhpZGRlblwiOiB5LkhpZGRlbiA9IDI7IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHkuSGlkZGVuID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWxldGUgeS5zdGF0ZTtcblx0XHRcdFx0eS5uYW1lID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoeS5uYW1lKSk7XG5cdFx0XHRcdGRlbGV0ZSB5WzBdOyB3Yi5TaGVldHMucHVzaCh5KTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3NoZWV0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjE1IGZ1bmN0aW9uR3JvdXBzIENUX0Z1bmN0aW9uR3JvdXBzID8gKi9cblx0XHRcdGNhc2UgJzxmdW5jdGlvbkdyb3Vwcyc6IGNhc2UgJzxmdW5jdGlvbkdyb3Vwcy8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjE0ICAgZnVuY3Rpb25Hcm91cCBDVF9GdW5jdGlvbkdyb3VwICsgKi9cblx0XHRcdGNhc2UgJzxmdW5jdGlvbkdyb3VwJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuOSAgZXh0ZXJuYWxSZWZlcmVuY2VzIENUX0V4dGVybmFsUmVmZXJlbmNlcyA/ICovXG5cdFx0XHRjYXNlICc8ZXh0ZXJuYWxSZWZlcmVuY2VzJzogY2FzZSAnPC9leHRlcm5hbFJlZmVyZW5jZXM+JzogY2FzZSAnPGV4dGVybmFsUmVmZXJlbmNlcz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuOCAgICBleHRlcm5hbFJlZmVyZW5jZSBDVF9FeHRlcm5hbFJlZmVyZW5jZSArICovXG5cdFx0XHRjYXNlICc8ZXh0ZXJuYWxSZWZlcmVuY2UnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi42ICBkZWZpbmVkTmFtZXMgQ1RfRGVmaW5lZE5hbWVzID8gKi9cblx0XHRcdGNhc2UgJzxkZWZpbmVkTmFtZXMvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lcz4nOiBjYXNlICc8ZGVmaW5lZE5hbWVzJzogcGFzcz10cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZGVmaW5lZE5hbWVzPic6IHBhc3M9ZmFsc2U7IGJyZWFrO1xuXHRcdFx0LyogMTguMi41ICAgIGRlZmluZWROYW1lIENUX0RlZmluZWROYW1lICsgKi9cblx0XHRcdGNhc2UgJzxkZWZpbmVkTmFtZSc6IHtcblx0XHRcdFx0ZG5hbWUgPSB7fTtcblx0XHRcdFx0ZG5hbWUuTmFtZSA9IHV0ZjhyZWFkKHkubmFtZSk7XG5cdFx0XHRcdGlmKHkuY29tbWVudCkgZG5hbWUuQ29tbWVudCA9IHkuY29tbWVudDtcblx0XHRcdFx0aWYoeS5sb2NhbFNoZWV0SWQpIGRuYW1lLlNoZWV0ID0gK3kubG9jYWxTaGVldElkO1xuXHRcdFx0XHRpZihwYXJzZXhtbGJvb2woeS5oaWRkZW58fFwiMFwiKSkgZG5hbWUuSGlkZGVuID0gdHJ1ZTtcblx0XHRcdFx0ZG5zdGFydCA9IGlkeCArIHgubGVuZ3RoO1xuXHRcdFx0fVx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L2RlZmluZWROYW1lPic6IHtcblx0XHRcdFx0ZG5hbWUuUmVmID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoZGF0YS5zbGljZShkbnN0YXJ0LCBpZHgpKSk7XG5cdFx0XHRcdHdiLk5hbWVzLnB1c2goZG5hbWUpO1xuXHRcdFx0fSBicmVhaztcblx0XHRcdGNhc2UgJzxkZWZpbmVkTmFtZS8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMiAgY2FsY1ByIENUX0NhbGNQciA/ICovXG5cdFx0XHRjYXNlICc8Y2FsY1ByJzogZGVsZXRlIHlbMF07IHdiLkNhbGNQciA9IHk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNhbGNQci8+JzogZGVsZXRlIHlbMF07IHdiLkNhbGNQciA9IHk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9jYWxjUHI+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTYgb2xlU2l6ZSBDVF9PbGVTaXplID8gKHJlZiByZXF1aXJlZCkgKi9cblx0XHRcdGNhc2UgJzxvbGVTaXplJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuNCAgY3VzdG9tV29ya2Jvb2tWaWV3cyBDVF9DdXN0b21Xb3JrYm9va1ZpZXdzID8gKi9cblx0XHRcdGNhc2UgJzxjdXN0b21Xb3JrYm9va1ZpZXdzPic6IGNhc2UgJzwvY3VzdG9tV29ya2Jvb2tWaWV3cz4nOiBjYXNlICc8Y3VzdG9tV29ya2Jvb2tWaWV3cyc6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4zICBjdXN0b21Xb3JrYm9va1ZpZXcgQ1RfQ3VzdG9tV29ya2Jvb2tWaWV3ICsgKi9cblx0XHRcdGNhc2UgJzxjdXN0b21Xb3JrYm9va1ZpZXcnOiBjYXNlICc8L2N1c3RvbVdvcmtib29rVmlldz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xOCBwaXZvdENhY2hlcyBDVF9QaXZvdENhY2hlcyA/ICovXG5cdFx0XHRjYXNlICc8cGl2b3RDYWNoZXM+JzogY2FzZSAnPC9waXZvdENhY2hlcz4nOiBjYXNlICc8cGl2b3RDYWNoZXMnOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMTcgcGl2b3RDYWNoZSBDVF9QaXZvdENhY2hlID8gKi9cblx0XHRcdGNhc2UgJzxwaXZvdENhY2hlJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjEgc21hcnRUYWdQciBDVF9TbWFydFRhZ1ByID8gKi9cblx0XHRcdGNhc2UgJzxzbWFydFRhZ1ByJzogY2FzZSAnPHNtYXJ0VGFnUHIvPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjIzIHNtYXJ0VGFnVHlwZXMgQ1RfU21hcnRUYWdUeXBlcyA/ICovXG5cdFx0XHRjYXNlICc8c21hcnRUYWdUeXBlcyc6IGNhc2UgJzxzbWFydFRhZ1R5cGVzPic6IGNhc2UgJzwvc21hcnRUYWdUeXBlcz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMjIgc21hcnRUYWdUeXBlIENUX1NtYXJ0VGFnVHlwZSA/ICovXG5cdFx0XHRjYXNlICc8c21hcnRUYWdUeXBlJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjQgd2ViUHVibGlzaGluZyBDVF9XZWJQdWJsaXNoaW5nID8gKi9cblx0XHRcdGNhc2UgJzx3ZWJQdWJsaXNoaW5nJzogY2FzZSAnPHdlYlB1Ymxpc2hpbmcvPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjExIGZpbGVSZWNvdmVyeVByIENUX0ZpbGVSZWNvdmVyeVByID8gKi9cblx0XHRcdGNhc2UgJzxmaWxlUmVjb3ZlcnlQcic6IGNhc2UgJzxmaWxlUmVjb3ZlcnlQci8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjYgd2ViUHVibGlzaE9iamVjdHMgQ1RfV2ViUHVibGlzaE9iamVjdHMgPyAqL1xuXHRcdFx0Y2FzZSAnPHdlYlB1Ymxpc2hPYmplY3RzPic6IGNhc2UgJzx3ZWJQdWJsaXNoT2JqZWN0cyc6IGNhc2UgJzwvd2ViUHVibGlzaE9iamVjdHM+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjI1IHdlYlB1Ymxpc2hPYmplY3QgQ1RfV2ViUHVibGlzaE9iamVjdCA/ICovXG5cdFx0XHRjYXNlICc8d2ViUHVibGlzaE9iamVjdCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGNhc2UgJzxleHRMc3QvPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi43ICBleHQgQ1RfRXh0ZW5zaW9uICsgKi9cblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzPXRydWU7IGJyZWFrOyAvL1RPRE86IGNoZWNrIHdpdGggdmVyc2lvbnMgb2YgZXhjZWxcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3M9ZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiBPdGhlcnMgKi9cblx0XHRcdGNhc2UgJzxBcmNoSUQnOiBicmVhaztcblx0XHRcdGNhc2UgJzxBbHRlcm5hdGVDb250ZW50Jzpcblx0XHRcdGNhc2UgJzxBbHRlcm5hdGVDb250ZW50Pic6IHBhc3M9dHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L0FsdGVybmF0ZUNvbnRlbnQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIFRPRE8gKi9cblx0XHRcdGNhc2UgJzxyZXZpc2lvblB0cic6IGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OiBpZighcGFzcyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIHdvcmtib29rJyk7XG5cdFx0fVxuXHRcdHJldHVybiB4O1xuXHR9KTtcblx0aWYoWE1MTlNfbWFpbi5pbmRleE9mKHdiLnhtbG5zKSA9PT0gLTEpIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gTmFtZXNwYWNlOiBcIiArIHdiLnhtbG5zKTtcblxuXHRwYXJzZV93Yl9kZWZhdWx0cyh3Yik7XG5cblx0cmV0dXJuIHdiO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93Yl94bWwod2IvKjpXb3JrYm9vayovLyo6Oiwgb3B0czo/V3JpdGVPcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoJ3dvcmtib29rJywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TX21haW5bMF0sXG5cdFx0Ly8neG1sbnM6bXgnOiBYTUxOUy5teCxcblx0XHQvLyd4bWxuczpzJzogWE1MTlNfbWFpblswXSxcblx0XHQneG1sbnM6cic6IFhNTE5TLnJcblx0fSk7XG5cblx0dmFyIHdyaXRlX25hbWVzID0gKHdiLldvcmtib29rICYmICh3Yi5Xb3JrYm9vay5OYW1lc3x8W10pLmxlbmd0aCA+IDApO1xuXG5cdC8qIGZpbGVWZXJzaW9uICovXG5cdC8qIGZpbGVTaGFyaW5nICovXG5cblx0dmFyIHdvcmtib29rUHIvKjphbnkqLyA9ICh7Y29kZU5hbWU6XCJUaGlzV29ya2Jvb2tcIn0vKjphbnkqLyk7XG5cdGlmKHdiLldvcmtib29rICYmIHdiLldvcmtib29rLldCUHJvcHMpIHtcblx0XHRXQlByb3BzRGVmLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdFx0Lyo6OiBpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLldCUHJvcHMpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdGlmKCh3Yi5Xb3JrYm9vay5XQlByb3BzW3hbMF1dLyo6YW55Ki8pID09IG51bGwpIHJldHVybjtcblx0XHRcdGlmKCh3Yi5Xb3JrYm9vay5XQlByb3BzW3hbMF1dLyo6YW55Ki8pID09IHhbMV0pIHJldHVybjtcblx0XHRcdHdvcmtib29rUHJbeFswXV0gPSAod2IuV29ya2Jvb2suV0JQcm9wc1t4WzBdXS8qOmFueSovKTtcblx0XHR9KTtcblx0XHQvKjo6IGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suV0JQcm9wcykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdGlmKHdiLldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUpIHsgd29ya2Jvb2tQci5jb2RlTmFtZSA9IHdiLldvcmtib29rLldCUHJvcHMuQ29kZU5hbWU7IGRlbGV0ZSB3b3JrYm9va1ByLkNvZGVOYW1lOyB9XG5cdH1cblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCd3b3JrYm9va1ByJywgbnVsbCwgd29ya2Jvb2tQcikpO1xuXG5cdC8qIHdvcmtib29rUHJvdGVjdGlvbiAqL1xuXG5cdHZhciBzaGVldHMgPSB3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5TaGVldHMgfHwgW107XG5cdHZhciBpID0gMDtcblxuXHQvKiBib29rVmlld3Mgb25seSB3cml0dGVuIGlmIGZpcnN0IHdvcmtzaGVldCBpcyBoaWRkZW4gKi9cblx0aWYoc2hlZXRzICYmIHNoZWV0c1swXSAmJiAhIXNoZWV0c1swXS5IaWRkZW4pIHtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPGJvb2tWaWV3cz5cIjtcblx0XHRmb3IoaSA9IDA7IGkgIT0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0aWYoIXNoZWV0c1tpXSkgYnJlYWs7XG5cdFx0XHRpZighc2hlZXRzW2ldLkhpZGRlbikgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKGkgPT0gd2IuU2hlZXROYW1lcy5sZW5ndGgpIGkgPSAwO1xuXHRcdG9bby5sZW5ndGhdID0gJzx3b3JrYm9va1ZpZXcgZmlyc3RTaGVldD1cIicgKyBpICsgJ1wiIGFjdGl2ZVRhYj1cIicgKyBpICsgJ1wiLz4nO1xuXHRcdG9bby5sZW5ndGhdID0gXCI8L2Jvb2tWaWV3cz5cIjtcblx0fVxuXG5cdG9bby5sZW5ndGhdID0gXCI8c2hlZXRzPlwiO1xuXHRmb3IoaSA9IDA7IGkgIT0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBzaHQgPSAoe25hbWU6ZXNjYXBleG1sKHdiLlNoZWV0TmFtZXNbaV0uc2xpY2UoMCwzMSkpfS8qOmFueSovKTtcblx0XHRzaHQuc2hlZXRJZCA9IFwiXCIrKGkrMSk7XG5cdFx0c2h0W1wicjppZFwiXSA9IFwicklkXCIrKGkrMSk7XG5cdFx0aWYoc2hlZXRzW2ldKSBzd2l0Y2goc2hlZXRzW2ldLkhpZGRlbikge1xuXHRcdFx0Y2FzZSAxOiBzaHQuc3RhdGUgPSBcImhpZGRlblwiOyBicmVhaztcblx0XHRcdGNhc2UgMjogc2h0LnN0YXRlID0gXCJ2ZXJ5SGlkZGVuXCI7IGJyZWFrO1xuXHRcdH1cblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3NoZWV0JyxudWxsLHNodCkpO1xuXHR9XG5cdG9bby5sZW5ndGhdID0gXCI8L3NoZWV0cz5cIjtcblxuXHQvKiBmdW5jdGlvbkdyb3VwcyAqL1xuXHQvKiBleHRlcm5hbFJlZmVyZW5jZXMgKi9cblxuXHRpZih3cml0ZV9uYW1lcykge1xuXHRcdG9bby5sZW5ndGhdID0gXCI8ZGVmaW5lZE5hbWVzPlwiO1xuXHRcdGlmKHdiLldvcmtib29rICYmIHdiLldvcmtib29rLk5hbWVzKSB3Yi5Xb3JrYm9vay5OYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKG4pIHtcblx0XHRcdHZhciBkLyo6YW55Ki8gPSB7bmFtZTpuLk5hbWV9O1xuXHRcdFx0aWYobi5Db21tZW50KSBkLmNvbW1lbnQgPSBuLkNvbW1lbnQ7XG5cdFx0XHRpZihuLlNoZWV0ICE9IG51bGwpIGQubG9jYWxTaGVldElkID0gXCJcIituLlNoZWV0O1xuXHRcdFx0aWYobi5IaWRkZW4pIGQuaGlkZGVuID0gXCIxXCI7XG5cdFx0XHRpZighbi5SZWYpIHJldHVybjtcblx0XHRcdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKCdkZWZpbmVkTmFtZScsIGVzY2FwZXhtbChuLlJlZiksIGQpO1xuXHRcdH0pO1xuXHRcdG9bby5sZW5ndGhdID0gXCI8L2RlZmluZWROYW1lcz5cIjtcblx0fVxuXG5cdC8qIGNhbGNQciAqL1xuXHQvKiBvbGVTaXplICovXG5cdC8qIGN1c3RvbVdvcmtib29rVmlld3MgKi9cblx0LyogcGl2b3RDYWNoZXMgKi9cblx0Lyogc21hcnRUYWdQciAqL1xuXHQvKiBzbWFydFRhZ1R5cGVzICovXG5cdC8qIHdlYlB1Ymxpc2hpbmcgKi9cblx0LyogZmlsZVJlY292ZXJ5UHIgKi9cblx0Lyogd2ViUHVibGlzaE9iamVjdHMgKi9cblx0LyogZXh0THN0ICovXG5cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gJzwvd29ya2Jvb2s+Jzsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC4zMDQgQnJ0QnVuZGxlU2ggKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJ1bmRsZVNoKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciB6ID0ge307XG5cdHouSGlkZGVuID0gZGF0YS5yZWFkX3NoaWZ0KDQpOyAvL2hzU3RhdGUgU1RfU2hlZXRTdGF0ZVxuXHR6LmlUYWJJRCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ei5zdHJSZWxJRCA9IHBhcnNlX1JlbElEKGRhdGEsbGVuZ3RoLTgpO1xuXHR6Lm5hbWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0QnVuZGxlU2goZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTI3KTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLkhpZGRlbik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgZGF0YS5pVGFiSUQpO1xuXHR3cml0ZV9SZWxJRChkYXRhLnN0clJlbElELCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKGRhdGEubmFtZS5zbGljZSgwLDMxKSwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuODE1IEJydFdiUHJvcCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0V2JQcm9wKGRhdGEsIGxlbmd0aCkvKjpXQlByb3BzKi8ge1xuXHR2YXIgby8qOldCUHJvcHMqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGZsYWdzID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRvLmRlZmF1bHRUaGVtZVZlcnNpb24gPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBzdHJOYW1lID0gKGxlbmd0aCA+IDgpID8gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpIDogXCJcIjtcblx0aWYoc3RyTmFtZS5sZW5ndGggPiAwKSBvLkNvZGVOYW1lID0gc3RyTmFtZTtcblx0by5hdXRvQ29tcHJlc3NQaWN0dXJlcyA9ICEhKGZsYWdzICYgMHgxMDAwMCk7XG5cdG8uYmFja3VwRmlsZSA9ICEhKGZsYWdzICYgMHg0MCk7XG5cdG8uY2hlY2tDb21wYXRpYmlsaXR5ID0gISEoZmxhZ3MgJiAweDEwMDApO1xuXHRvLmRhdGUxOTA0ID0gISEoZmxhZ3MgJiAweDAxKTtcblx0by5maWx0ZXJQcml2YWN5ID0gISEoZmxhZ3MgJiAweDA4KTtcblx0by5oaWRlUGl2b3RGaWVsZExpc3QgPSAhIShmbGFncyAmIDB4NDAwKTtcblx0by5wcm9tcHRlZFNvbHV0aW9ucyA9ICEhKGZsYWdzICYgMHgxMCk7XG5cdG8ucHVibGlzaEl0ZW1zID0gISEoZmxhZ3MgJiAweDgwMCk7XG5cdG8ucmVmcmVzaEFsbENvbm5lY3Rpb25zID0gISEoZmxhZ3MgJiAweDQwMDAwKTtcblx0by5zYXZlRXh0ZXJuYWxMaW5rVmFsdWVzID0gISEoZmxhZ3MgJiAweDgwKTtcblx0by5zaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcyA9ICEhKGZsYWdzICYgMHgwNCk7XG5cdG8uc2hvd0lua0Fubm90YXRpb24gPSAhIShmbGFncyAmIDB4MjApO1xuXHRvLnNob3dPYmplY3RzID0gW1wiYWxsXCIsIFwicGxhY2Vob2xkZXJzXCIsIFwibm9uZVwiXVsoZmxhZ3MgPj4gMTMpICYgMHgwM107XG5cdG8uc2hvd1Bpdm90Q2hhcnRGaWx0ZXIgPSAhIShmbGFncyAmIDB4ODAwMCk7XG5cdG8udXBkYXRlTGlua3MgPSBbXCJ1c2VyU2V0XCIsIFwibmV2ZXJcIiwgXCJhbHdheXNcIl1bKGZsYWdzID4+IDgpICYgMHgwM107XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0V2JQcm9wKGRhdGEvKjo/V0JQcm9wcyovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1Zig3Mik7XG5cdHZhciBmbGFncyA9IDA7XG5cdGlmKGRhdGEpIHtcblx0XHQvKiBUT0RPOiBtaXJyb3IgcGFyc2VfQnJ0V2JQcm9wIGZpZWxkcyAqL1xuXHRcdGlmKGRhdGEuZmlsdGVyUHJpdmFjeSkgZmxhZ3MgfD0gMHgwODtcblx0fVxuXHRvLndyaXRlX3NoaWZ0KDQsIGZsYWdzKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0d3JpdGVfWExTQkNvZGVOYW1lKGRhdGEgJiYgZGF0YS5Db2RlTmFtZSB8fCBcIlRoaXNXb3JrYm9va1wiLCBvKTtcblx0cmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQnJ0RlJUQXJjaElEJChkYXRhLCBsZW5ndGgpIHtcblx0dmFyIG8gPSB7fTtcblx0ZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRvLkFyY2hJRCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ZGF0YS5sICs9IGxlbmd0aCAtIDg7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY4NyBCcnROYW1lICovXG5mdW5jdGlvbiBwYXJzZV9CcnROYW1lKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHRkYXRhLmwgKz0gNDsgLy92YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGRhdGEubCArPSAxOyAvL3ZhciBjaEtleSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIGl0YWIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBuYW1lID0gcGFyc2VfWExOYW1lV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCTmFtZVBhcnNlZEZvcm11bGEoZGF0YSwgMCwgb3B0cyk7XG5cdHZhciBjb21tZW50ID0gcGFyc2VfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGF0YSk7XG5cdC8vaWYoMCAvKiBmUHJvYyAqLykge1xuXHRcdC8vIHVudXNlZHN0cmluZzE6IFhMTnVsbGFibGVXaWRlU3RyaW5nXG5cdFx0Ly8gZGVzY3JpcHRpb246IFhMTnVsbGFibGVXaWRlU3RyaW5nXG5cdFx0Ly8gaGVscFRvcGljOiBYTE51bGxhYmxlV2lkZVN0cmluZ1xuXHRcdC8vIHVudXNlZHN0cmluZzI6IFhMTnVsbGFibGVXaWRlU3RyaW5nXG5cdC8vfVxuXHRkYXRhLmwgPSBlbmQ7XG5cdHZhciBvdXQgPSAoe05hbWU6bmFtZSwgUHRnOmZvcm11bGF9Lyo6YW55Ki8pO1xuXHRpZihpdGFiIDwgMHhGRkZGRkZGKSBvdXQuU2hlZXQgPSBpdGFiO1xuXHRpZihjb21tZW50KSBvdXQuQ29tbWVudCA9IGNvbW1lbnQ7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy42MSBXb3JrYm9vayAqL1xuZnVuY3Rpb24gcGFyc2Vfd2JfYmluKGRhdGEsIG9wdHMpLyo6V29ya2Jvb2tGaWxlKi8ge1xuXHR2YXIgd2IgPSB7IEFwcFZlcnNpb246e30sIFdCUHJvcHM6e30sIFdCVmlldzpbXSwgU2hlZXRzOltdLCBDYWxjUHI6e30sIHhtbG5zOiBcIlwiIH07XG5cdHZhciBzdGF0ZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXG5cdGlmKCFvcHRzKSBvcHRzID0ge307XG5cdG9wdHMuYmlmZiA9IDEyO1xuXG5cdHZhciBOYW1lcyA9IFtdO1xuXHR2YXIgc3VwYm9va3MgPSAoW1tdXS8qOmFueSovKTtcblx0c3VwYm9va3MuU2hlZXROYW1lcyA9IFtdO1xuXHRzdXBib29rcy5YVEkgPSBbXTtcblxuXHRYTFNCUmVjb3JkRW51bVsweDAwMTBdID0geyBuOlwiQnJ0RlJUQXJjaElEJFwiLCBmOnBhcnNlX0JydEZSVEFyY2hJRCQgfTtcblxuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX3diKHZhbCwgUiwgUlQpIHtcblx0XHRzd2l0Y2goUlQpIHtcblx0XHRcdGNhc2UgMHgwMDlDOiAvKiAnQnJ0QnVuZGxlU2gnICovXG5cdFx0XHRcdHN1cGJvb2tzLlNoZWV0TmFtZXMucHVzaCh2YWwubmFtZSk7XG5cdFx0XHRcdHdiLlNoZWV0cy5wdXNoKHZhbCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA5OTogLyogJ0JydFdiUHJvcCcgKi9cblx0XHRcdFx0d2IuV0JQcm9wcyA9IHZhbDsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDI3OiAvKiAnQnJ0TmFtZScgKi9cblx0XHRcdFx0aWYodmFsLlNoZWV0ICE9IG51bGwpIG9wdHMuU0lEID0gdmFsLlNoZWV0O1xuXHRcdFx0XHR2YWwuUmVmID0gc3RyaW5naWZ5X2Zvcm11bGEodmFsLlB0ZywgbnVsbCwgbnVsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRkZWxldGUgb3B0cy5TSUQ7XG5cdFx0XHRcdGRlbGV0ZSB2YWwuUHRnO1xuXHRcdFx0XHROYW1lcy5wdXNoKHZhbCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDA0MEM6IC8qICdCcnROYW1lRXh0JyAqLyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxNjU6IC8qICdCcnRTdXBTZWxmJyAqL1xuXHRcdFx0Y2FzZSAweDAxNjY6IC8qICdCcnRTdXBTYW1lJyAqL1xuXHRcdFx0Y2FzZSAweDAxNjM6IC8qICdCcnRTdXBCb29rU3JjJyAqL1xuXHRcdFx0Y2FzZSAweDAyOUI6IC8qICdCcnRTdXBBZGRpbicgKi9cblx0XHRcdFx0aWYoIXN1cGJvb2tzWzBdLmxlbmd0aCkgc3VwYm9va3NbMF0gPSBbUlQsIHZhbF07XG5cdFx0XHRcdGVsc2Ugc3VwYm9va3MucHVzaChbUlQsIHZhbF0pO1xuXHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkgPSBbXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDE2QTogLyogJ0JydEV4dGVyblNoZWV0JyAqL1xuXHRcdFx0XHRpZihzdXBib29rcy5sZW5ndGggPT09IDApIHsgc3VwYm9va3NbMF0gPSBbXTsgc3VwYm9va3NbMF0uWFRJID0gW107IH1cblx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJID0gc3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJLmNvbmNhdCh2YWwpO1xuXHRcdFx0XHRzdXBib29rcy5YVEkgPSBzdXBib29rcy5YVEkuY29uY2F0KHZhbCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAxNjk6IC8qICdCcnRQbGFjZWhvbGRlck5hbWUnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDgxNzogLyogJ0JydEFic1BhdGgxNScgKi9cblx0XHRcdGNhc2UgMHgwMDlFOiAvKiAnQnJ0Qm9va1ZpZXcnICovXG5cdFx0XHRjYXNlIDB4MDA4RjogLyogJ0JydEJlZ2luQnVuZGxlU2hzJyAqL1xuXHRcdFx0Y2FzZSAweDAyOTg6IC8qICdCcnRCZWdpbkZuR3JvdXAnICovXG5cdFx0XHRjYXNlIDB4MDE2MTogLyogJ0JydEJlZ2luRXh0ZXJuYWxzJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogY2FzZSAnQnJ0TW9kZWxUaW1lR3JvdXBpbmdDYWxjQ29sJyAqL1xuXHRcdFx0Y2FzZSAweDBDMDA6IC8qICdCcnRVaWQnICovXG5cdFx0XHRjYXNlIDB4MEMwMTogLyogJ0JydFJldmlzaW9uUHRyJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTY6IC8qICdCcnRCb29rUHJvdGVjdGlvbicgKi9cblx0XHRcdGNhc2UgMHgwMkE1OiAvKiAnQnJ0Qm9va1Byb3RlY3Rpb25Jc28nICovXG5cdFx0XHRjYXNlIDB4MDA5RDogLyogJ0JydENhbGNQcm9wJyAqL1xuXHRcdFx0Y2FzZSAweDAyNjI6IC8qICdCcnRDcmFzaFJlY0VycicgKi9cblx0XHRcdGNhc2UgMHgwODAyOiAvKiAnQnJ0RGVjb3VwbGVkUGl2b3RDYWNoZUlEJyAqL1xuXHRcdFx0Y2FzZSAweDAwOUI6IC8qICdCcnRGaWxlUmVjb3ZlcicgKi9cblx0XHRcdGNhc2UgMHgwMjI0OiAvKiAnQnJ0RmlsZVNoYXJpbmcnICovXG5cdFx0XHRjYXNlIDB4MDJBNDogLyogJ0JydEZpbGVTaGFyaW5nSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDAwODA6IC8qICdCcnRGaWxlVmVyc2lvbicgKi9cblx0XHRcdGNhc2UgMHgwMjk5OiAvKiAnQnJ0Rm5Hcm91cCcgKi9cblx0XHRcdGNhc2UgMHgwODUwOiAvKiAnQnJ0TW9kZWxSZWxhdGlvbnNoaXAnICovXG5cdFx0XHRjYXNlIDB4MDg0RDogLyogJ0JydE1vZGVsVGFibGUnICovXG5cdFx0XHRjYXNlIDB4MDIyNTogLyogJ0JydE9sZVNpemUnICovXG5cdFx0XHRjYXNlIDB4MDgwNTogLyogJ0JydFBpdm90VGFibGVSZWYnICovXG5cdFx0XHRjYXNlIDB4MDI1NDogLyogJ0JydFNtYXJ0VGFnVHlwZScgKi9cblx0XHRcdGNhc2UgMHgwODFDOiAvKiAnQnJ0VGFibGVTbGljZXJDYWNoZUlEJyAqL1xuXHRcdFx0Y2FzZSAweDA4MUI6IC8qICdCcnRUYWJsZVNsaWNlckNhY2hlSURzJyAqL1xuXHRcdFx0Y2FzZSAweDA4MjI6IC8qICdCcnRUaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEJyAqL1xuXHRcdFx0Y2FzZSAweDAxOEQ6IC8qICdCcnRVc2VyQm9va1ZpZXcnICovXG5cdFx0XHRjYXNlIDB4MDA5QTogLyogJ0JydFdiRmFjdG9pZCcgKi9cblx0XHRcdGNhc2UgMHgwNDVEOiAvKiAnQnJ0V2JQcm9wMTQnICovXG5cdFx0XHRjYXNlIDB4MDIyOTogLyogJ0JydFdlYk9wdCcgKi9cblx0XHRcdGNhc2UgMHgwODJCOiAvKiAnQnJ0V29ya0Jvb2tQcjE1JyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI1OiAvKiAnQnJ0QUNCZWdpbicgKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiAnQnJ0QUNFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAxMDogLyogJ0JydEZSVEFyY2hJRCQnICovIGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IChvcHRzLldURiAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGgtMV0gIT0gMHgwMDI1IC8qIEJydEFDQmVnaW4gKi8gJiYgc3RhdGVbc3RhdGUubGVuZ3RoLTFdICE9IDB4MDAyMyAvKiBCcnRGUlRCZWdpbiAqLykpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG5cblx0cGFyc2Vfd2JfZGVmYXVsdHMod2IpO1xuXG5cdC8vICRGbG93SWdub3JlXG5cdHdiLk5hbWVzID0gTmFtZXM7XG5cblx0KHdiLyo6YW55Ki8pLnN1cGJvb2tzID0gc3VwYm9va3M7XG5cdHJldHVybiB3Yjtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQlVORExFU0hTKGJhLCB3Yi8qOjosIG9wdHMqLykge1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4RiAvKiBCcnRCZWdpbkJ1bmRsZVNocyAqLyk7XG5cdGZvcih2YXIgaWR4ID0gMDsgaWR4ICE9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2lkeCkge1xuXHRcdHZhciB2aXogPSB3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5TaGVldHMgJiYgd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0gJiYgd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uSGlkZGVuIHx8IDA7XG5cdFx0dmFyIGQgPSB7IEhpZGRlbjogdml6LCBpVGFiSUQ6IGlkeCsxLCBzdHJSZWxJRDogJ3JJZCcgKyAoaWR4KzEpLCBuYW1lOiB3Yi5TaGVldE5hbWVzW2lkeF0gfTtcblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5QyAvKiBCcnRCdW5kbGVTaCAqLywgd3JpdGVfQnJ0QnVuZGxlU2goZCkpO1xuXHR9XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDkwIC8qIEJydEVuZEJ1bmRsZVNocyAqLyk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjQ5IEJydEZpbGVWZXJzaW9uICovXG5mdW5jdGlvbiB3cml0ZV9CcnRGaWxlVmVyc2lvbihkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxMjcpO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IDQ7ICsraSkgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFwiU2hlZXRKU1wiLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFhMU1gudmVyc2lvbiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhYTFNYLnZlcnNpb24sIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoXCI3MjYyXCIsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwMSBCcnRCb29rVmlldyAqL1xuZnVuY3Rpb24gd3JpdGVfQnJ0Qm9va1ZpZXcoaWR4LCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigyOSk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KC00LCA0NjApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICAyODgwMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIDE3NjAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAgNTAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAgaWR4KTtcblx0by53cml0ZV9zaGlmdCg0LCAgaWR4KTtcblx0dmFyIGZsYWdzID0gMHg3ODtcblx0by53cml0ZV9zaGlmdCgxLCAgZmxhZ3MpO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CT09LVklFV1MoYmEsIHdiLyo6Oiwgb3B0cyovKSB7XG5cdC8qIHJlcXVpcmVkIGlmIGhpZGRlbiB0YWIgYXBwZWFycyBiZWZvcmUgdmlzaWJsZSB0YWIgKi9cblx0aWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5TaGVldHMpIHJldHVybjtcblx0dmFyIHNoZWV0cyA9IHdiLldvcmtib29rLlNoZWV0cztcblx0dmFyIGkgPSAwLCB2aXN0YWIgPSAtMSwgaGlkZGVuID0gLTE7XG5cdGZvcig7IGkgPCBzaGVldHMubGVuZ3RoOyArK2kpIHtcblx0XHRpZighc2hlZXRzW2ldIHx8ICFzaGVldHNbaV0uSGlkZGVuICYmIHZpc3RhYiA9PSAtMSkgdmlzdGFiID0gaTtcblx0XHRlbHNlIGlmKHNoZWV0c1tpXS5IaWRkZW4gPT0gMSAmJiBoaWRkZW4gPT0gLTEpIGhpZGRlbiA9IGk7XG5cdH1cblx0aWYoaGlkZGVuID4gdmlzdGFiKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg3IC8qIEJydEJlZ2luQm9va1ZpZXdzICovKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOUUgLyogQnJ0Qm9va1ZpZXcgKi8sIHdyaXRlX0JydEJvb2tWaWV3KHZpc3RhYikpO1xuXHQvKiAxKihCcnRCb29rVmlldyAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4OCAvKiBCcnRFbmRCb29rVmlld3MgKi8pO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwNSBCcnRDYWxjUHJvcCAqL1xuLypmdW5jdGlvbiB3cml0ZV9CcnRDYWxjUHJvcChkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigyNik7XG5cdG8ud3JpdGVfc2hpZnQoNCwwKTsgLy8gZm9yY2UgcmVjYWxjXG5cdG8ud3JpdGVfc2hpZnQoNCwxKTtcblx0by53cml0ZV9zaGlmdCg0LDApO1xuXHR3cml0ZV9YbnVtKDAsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KC00LCAxMDIzKTtcblx0by53cml0ZV9zaGlmdCgxLCAweDMzKTtcblx0by53cml0ZV9zaGlmdCgxLCAweDAwKTtcblx0cmV0dXJuIG87XG59Ki9cblxuLyogW01TLVhMU0JdIDIuNC42NDYgQnJ0RmlsZVJlY292ZXIgKi9cbi8qZnVuY3Rpb24gd3JpdGVfQnJ0RmlsZVJlY292ZXIoZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMSk7XG5cdG8ud3JpdGVfc2hpZnQoMSwwKTtcblx0cmV0dXJuIG87XG59Ki9cblxuLyogW01TLVhMU0JdIDIuMS43LjYxIFdvcmtib29rICovXG5mdW5jdGlvbiB3cml0ZV93Yl9iaW4od2IsIG9wdHMpIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgzIC8qIEJydEJlZ2luQm9vayAqLyk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgwIC8qIEJydEZpbGVWZXJzaW9uICovLCB3cml0ZV9CcnRGaWxlVmVyc2lvbigpKTtcblx0LyogW1tCcnRGaWxlU2hhcmluZ0lzb10gQnJ0RmlsZVNoYXJpbmddICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDk5IC8qIEJydFdiUHJvcCAqLywgd3JpdGVfQnJ0V2JQcm9wKHdiLldvcmtib29rICYmIHdiLldvcmtib29rLldCUHJvcHMgfHwgbnVsbCkpO1xuXHQvKiBbQUNBQlNQQVRIXSAqL1xuXHQvKiBbW0JydEJvb2tQcm90ZWN0aW9uSXNvXSBCcnRCb29rUHJvdGVjdGlvbl0gKi9cblx0d3JpdGVfQk9PS1ZJRVdTKGJhLCB3Yiwgb3B0cyk7XG5cdHdyaXRlX0JVTkRMRVNIUyhiYSwgd2IsIG9wdHMpO1xuXHQvKiBbRk5HUk9VUF0gKi9cblx0LyogW0VYVEVSTkFMU10gKi9cblx0LyogKkJydE5hbWUgKi9cblx0Lyogd3JpdGVfcmVjb3JkKGJhLCAweDAwOUQgQnJ0Q2FsY1Byb3AsIHdyaXRlX0JydENhbGNQcm9wKCkpOyAqL1xuXHQvKiBbQnJ0T2xlU2l6ZV0gKi9cblx0LyogKihCcnRVc2VyQm9va1ZpZXcgKkZSVCkgKi9cblx0LyogW1BJVk9UQ0FDSEVJRFNdICovXG5cdC8qIFtCcnRXYkZhY3RvaWRdICovXG5cdC8qIFtTTUFSVFRBR1RZUEVTXSAqL1xuXHQvKiBbQnJ0V2ViT3B0XSAqL1xuXHQvKiB3cml0ZV9yZWNvcmQoYmEsIDB4MDA5QiBCcnRGaWxlUmVjb3Zlciwgd3JpdGVfQnJ0RmlsZVJlY292ZXIoKSk7ICovXG5cdC8qIFtXRUJQVUJJVEVNU10gKi9cblx0LyogW0NSRVJSU10gKi9cblx0LyogRlJUV09SS0JPT0sgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODQgLyogQnJ0RW5kQm9vayAqLyk7XG5cblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuZnVuY3Rpb24gcGFyc2Vfd2IoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtib29rRmlsZSovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3diX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV93Yl94bWwoKGRhdGEvKjphbnkqLyksIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV93cyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIGlkeC8qOm51bWJlciovLCBvcHRzLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2Vfd3NfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdHJldHVybiBwYXJzZV93c194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfY3MoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBpZHgvKjpudW1iZXIqLywgb3B0cywgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX2NzX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRyZXR1cm4gcGFyc2VfY3NfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX21zKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9tc19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX21zX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9kcyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIGlkeC8qOm51bWJlciovLCBvcHRzLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfZHNfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdHJldHVybiBwYXJzZV9kc194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfc3R5KGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgdGhlbWVzLCBvcHRzKSB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9zdHlfYmluKChkYXRhLyo6YW55Ki8pLCB0aGVtZXMsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2Vfc3R5X3htbCgoZGF0YS8qOmFueSovKSwgdGhlbWVzLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfdGhlbWUoZGF0YS8qOnN0cmluZyovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIHBhcnNlX3RoZW1lX3htbChkYXRhLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfc3N0KGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykvKjpTU1QqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9zc3RfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3NzdF94bWwoKGRhdGEvKjphbnkqLyksIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jbW50KGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykvKjpBcnJheTxSYXdDb21tZW50PiovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX2NvbW1lbnRzX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV9jb21tZW50c194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jYyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX2NjX2JpbigoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV9jY194bWwoKGRhdGEvKjphbnkqLyksIG5hbWUsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV94bGluayhkYXRhLCByZWwsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfeGxpbmtfYmluKChkYXRhLyo6YW55Ki8pLCByZWwsIG5hbWUsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfeGxpbmtfeG1sKChkYXRhLyo6YW55Ki8pLCByZWwsIG5hbWUsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV94bG1ldGEoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV94bG1ldGFfYmluKChkYXRhLyo6YW55Ki8pLCBuYW1lLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3hsbWV0YV94bWwoKGRhdGEvKjphbnkqLyksIG5hbWUsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93Yih3YiwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX3diX2JpbiA6IHdyaXRlX3diX3htbCkod2IsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93cyhkYXRhLyo6bnVtYmVyKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX3dzX2JpbiA6IHdyaXRlX3dzX3htbCkoZGF0YSwgb3B0cywgd2IsIHJlbHMpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIHdyaXRlX2NzKGRhdGEvKjpudW1iZXIqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfY3NfYmluIDogd3JpdGVfY3NfeG1sKShkYXRhLCBvcHRzLCB3YiwgcmVscyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3N0eShkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfc3R5X2JpbiA6IHdyaXRlX3N0eV94bWwpKGRhdGEsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9zc3QoZGF0YS8qOlNTVCovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfc3N0X2JpbiA6IHdyaXRlX3NzdF94bWwpKGRhdGEsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jbW50KGRhdGEvKjpBcnJheTxhbnk+Ki8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9jb21tZW50c19iaW4gOiB3cml0ZV9jb21tZW50c194bWwpKGRhdGEsIG9wdHMpO1xufVxuLypcbmZ1bmN0aW9uIHdyaXRlX2NjKGRhdGEsIG5hbWU6c3RyaW5nLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX2NjX2JpbiA6IHdyaXRlX2NjX3htbCkoZGF0YSwgb3B0cyk7XG59XG4qL1xuXG5mdW5jdGlvbiB3cml0ZV94bG1ldGEobmFtZS8qOnN0cmluZyovKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX3hsbWV0YV9iaW4gOiB3cml0ZV94bG1ldGFfeG1sKSgpO1xufVxudmFyIGF0dHJlZ2V4ZzI9LyhbXFx3Ol0rKT0oKD86XCIpKFteXCJdKikoPzpcIil8KD86JykoW14nXSopKD86JykpL2c7XG52YXIgYXR0cmVnZXgyPS8oW1xcdzpdKyk9KCg/OlwiKSg/OlteXCJdKikoPzpcIil8KD86JykoPzpbXiddKikoPzonKSkvO1xuZnVuY3Rpb24geGxtbF9wYXJzZXhtbHRhZyh0YWcvKjpzdHJpbmcqLywgc2tpcF9yb290Lyo6P2Jvb2xlYW4qLykge1xuXHR2YXIgd29yZHMgPSB0YWcuc3BsaXQoL1xccysvKTtcblx0dmFyIHovKjphbnkqLyA9IChbXS8qOmFueSovKTsgaWYoIXNraXBfcm9vdCkgelswXSA9IHdvcmRzWzBdO1xuXHRpZih3b3Jkcy5sZW5ndGggPT09IDEpIHJldHVybiB6O1xuXHR2YXIgbSA9IHRhZy5tYXRjaChhdHRyZWdleGcyKSwgeSwgaiwgdywgaTtcblx0aWYobSkgZm9yKGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHR5ID0gbVtpXS5tYXRjaChhdHRyZWdleDIpO1xuLyo6OiBpZigheSB8fCAheVsyXSkgY29udGludWU7ICovXG5cdFx0aWYoKGo9eVsxXS5pbmRleE9mKFwiOlwiKSkgPT09IC0xKSB6W3lbMV1dID0geVsyXS5zbGljZSgxLHlbMl0ubGVuZ3RoLTEpO1xuXHRcdGVsc2Uge1xuXHRcdFx0aWYoeVsxXS5zbGljZSgwLDYpID09PSBcInhtbG5zOlwiKSB3ID0gXCJ4bWxuc1wiK3lbMV0uc2xpY2UoNik7XG5cdFx0XHRlbHNlIHcgPSB5WzFdLnNsaWNlKGorMSk7XG5cdFx0XHR6W3ddID0geVsyXS5zbGljZSgxLHlbMl0ubGVuZ3RoLTEpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHhsbWxfcGFyc2V4bWx0YWdvYmoodGFnLyo6c3RyaW5nKi8pIHtcblx0dmFyIHdvcmRzID0gdGFnLnNwbGl0KC9cXHMrLyk7XG5cdHZhciB6ID0ge307XG5cdGlmKHdvcmRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHo7XG5cdHZhciBtID0gdGFnLm1hdGNoKGF0dHJlZ2V4ZzIpLCB5LCBqLCB3LCBpO1xuXHRpZihtKSBmb3IoaSA9IDA7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdHkgPSBtW2ldLm1hdGNoKGF0dHJlZ2V4Mik7XG4vKjo6IGlmKCF5IHx8ICF5WzJdKSBjb250aW51ZTsgKi9cblx0XHRpZigoaj15WzFdLmluZGV4T2YoXCI6XCIpKSA9PT0gLTEpIHpbeVsxXV0gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZih5WzFdLnNsaWNlKDAsNikgPT09IFwieG1sbnM6XCIpIHcgPSBcInhtbG5zXCIreVsxXS5zbGljZSg2KTtcblx0XHRcdGVsc2UgdyA9IHlbMV0uc2xpY2UoaisxKTtcblx0XHRcdHpbd10gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB6O1xufVxuXG4vLyAtLS0tXG5cbi8qIG1hcCBmcm9tIHhsbWwgbmFtZWQgZm9ybWF0cyB0byBTU0YgVE9ETzogbG9jYWxpemUgKi9cbnZhciBYTE1MRm9ybWF0TWFwLyo6IHtbc3RyaW5nXTpzdHJpbmd9Ki87XG5cbmZ1bmN0aW9uIHhsbWxfZm9ybWF0KGZvcm1hdCwgdmFsdWUpLyo6c3RyaW5nKi8ge1xuXHR2YXIgZm10ID0gWExNTEZvcm1hdE1hcFtmb3JtYXRdIHx8IHVuZXNjYXBleG1sKGZvcm1hdCk7XG5cdGlmKGZtdCA9PT0gXCJHZW5lcmFsXCIpIHJldHVybiBTU0ZfZ2VuZXJhbCh2YWx1ZSk7XG5cdHJldHVybiBTU0ZfZm9ybWF0KGZtdCwgdmFsdWUpO1xufVxuXG5mdW5jdGlvbiB4bG1sX3NldF9jdXN0cHJvcChDdXN0cHJvcHMsIGtleSwgY3AsIHZhbC8qOnN0cmluZyovKSB7XG5cdHZhciBvdmFsLyo6YW55Ki8gPSB2YWw7XG5cdHN3aXRjaCgoY3BbMF0ubWF0Y2goL2R0OmR0PVwiKFtcXHcuXSspXCIvKXx8W1wiXCIsXCJcIl0pWzFdKSB7XG5cdFx0Y2FzZSBcImJvb2xlYW5cIjogb3ZhbCA9IHBhcnNleG1sYm9vbCh2YWwpOyBicmVhaztcblx0XHRjYXNlIFwiaTJcIjogY2FzZSBcImludFwiOiBvdmFsID0gcGFyc2VJbnQodmFsLCAxMCk7IGJyZWFrO1xuXHRcdGNhc2UgXCJyNFwiOiBjYXNlIFwiZmxvYXRcIjogb3ZhbCA9IHBhcnNlRmxvYXQodmFsKTsgYnJlYWs7XG5cdFx0Y2FzZSBcImRhdGVcIjogY2FzZSBcImRhdGVUaW1lLnR6XCI6IG92YWwgPSBwYXJzZURhdGUodmFsKTsgYnJlYWs7XG5cdFx0Y2FzZSBcImk4XCI6IGNhc2UgXCJzdHJpbmdcIjogY2FzZSBcImZpeGVkXCI6IGNhc2UgXCJ1dWlkXCI6IGNhc2UgXCJiaW4uYmFzZTY0XCI6IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcImJhZCBjdXN0cHJvcDpcIiArIGNwWzBdKTtcblx0fVxuXHRDdXN0cHJvcHNbdW5lc2NhcGV4bWwoa2V5KV0gPSBvdmFsO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdF94bG1sKGNlbGwvKjpDZWxsKi8sIG5mLCBvKSB7XG5cdGlmKGNlbGwudCA9PT0gJ3onKSByZXR1cm47XG5cdGlmKCFvIHx8IG8uY2VsbFRleHQgIT09IGZhbHNlKSB0cnkge1xuXHRcdGlmKGNlbGwudCA9PT0gJ2UnKSB7IGNlbGwudyA9IGNlbGwudyB8fCBCRXJyW2NlbGwudl07IH1cblx0XHRlbHNlIGlmKG5mID09PSBcIkdlbmVyYWxcIikge1xuXHRcdFx0aWYoY2VsbC50ID09PSAnbicpIHtcblx0XHRcdFx0aWYoKGNlbGwudnwwKSA9PT0gY2VsbC52KSBjZWxsLncgPSBjZWxsLnYudG9TdHJpbmcoMTApO1xuXHRcdFx0XHRlbHNlIGNlbGwudyA9IFNTRl9nZW5lcmFsX251bShjZWxsLnYpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBjZWxsLncgPSBTU0ZfZ2VuZXJhbChjZWxsLnYpO1xuXHRcdH1cblx0XHRlbHNlIGNlbGwudyA9IHhsbWxfZm9ybWF0KG5mfHxcIkdlbmVyYWxcIiwgY2VsbC52KTtcblx0fSBjYXRjaChlKSB7IGlmKG8uV1RGKSB0aHJvdyBlOyB9XG5cdHRyeSB7XG5cdFx0dmFyIHogPSBYTE1MRm9ybWF0TWFwW25mXXx8bmZ8fFwiR2VuZXJhbFwiO1xuXHRcdGlmKG8uY2VsbE5GKSBjZWxsLnogPSB6O1xuXHRcdGlmKG8uY2VsbERhdGVzICYmIGNlbGwudCA9PSAnbicgJiYgZm10X2lzX2RhdGUoeikpIHtcblx0XHRcdHZhciBfZCA9IFNTRl9wYXJzZV9kYXRlX2NvZGUoY2VsbC52KTsgaWYoX2QpIHsgY2VsbC50ID0gJ2QnOyBjZWxsLnYgPSBuZXcgRGF0ZShfZC55LCBfZC5tLTEsX2QuZCxfZC5ILF9kLk0sX2QuUyxfZC51KTsgfVxuXHRcdH1cblx0fSBjYXRjaChlKSB7IGlmKG8uV1RGKSB0aHJvdyBlOyB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3Nfc3R5bGVfeGxtbChzdHlsZXMsIHN0YWcsIG9wdHMpIHtcblx0aWYob3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0aWYoc3RhZy5JbnRlcmlvcikge1xuXHRcdFx0dmFyIEkgPSBzdGFnLkludGVyaW9yO1xuXHRcdFx0aWYoSS5QYXR0ZXJuKSBJLnBhdHRlcm5UeXBlID0gWExNTFBhdHRlcm5UeXBlTWFwW0kuUGF0dGVybl0gfHwgSS5QYXR0ZXJuO1xuXHRcdH1cblx0fVxuXHRzdHlsZXNbc3RhZy5JRF0gPSBzdGFnO1xufVxuXG4vKiBUT0RPOiB0aGVyZSBtdXN0IGV4aXN0IHNvbWUgZm9ybSBvZiBPU1AtYmxlc3NlZCBzcGVjICovXG5mdW5jdGlvbiBwYXJzZV94bG1sX2RhdGEoeG1sLCBzcywgZGF0YSwgY2VsbC8qOmFueSovLCBiYXNlLCBzdHlsZXMsIGNzdHksIHJvdywgYXJyYXlmLCBvKSB7XG5cdHZhciBuZiA9IFwiR2VuZXJhbFwiLCBzaWQgPSBjZWxsLlN0eWxlSUQsIFMgPSB7fTsgbyA9IG8gfHwge307XG5cdHZhciBpbnRlcmlvcnMgPSBbXTtcblx0dmFyIGkgPSAwO1xuXHRpZihzaWQgPT09IHVuZGVmaW5lZCAmJiByb3cpIHNpZCA9IHJvdy5TdHlsZUlEO1xuXHRpZihzaWQgPT09IHVuZGVmaW5lZCAmJiBjc3R5KSBzaWQgPSBjc3R5LlN0eWxlSUQ7XG5cdHdoaWxlKHN0eWxlc1tzaWRdICE9PSB1bmRlZmluZWQpIHtcblx0XHRpZihzdHlsZXNbc2lkXS5uZikgbmYgPSBzdHlsZXNbc2lkXS5uZjtcblx0XHRpZihzdHlsZXNbc2lkXS5JbnRlcmlvcikgaW50ZXJpb3JzLnB1c2goc3R5bGVzW3NpZF0uSW50ZXJpb3IpO1xuXHRcdGlmKCFzdHlsZXNbc2lkXS5QYXJlbnQpIGJyZWFrO1xuXHRcdHNpZCA9IHN0eWxlc1tzaWRdLlBhcmVudDtcblx0fVxuXHRzd2l0Y2goZGF0YS5UeXBlKSB7XG5cdFx0Y2FzZSAnQm9vbGVhbic6XG5cdFx0XHRjZWxsLnQgPSAnYic7XG5cdFx0XHRjZWxsLnYgPSBwYXJzZXhtbGJvb2woeG1sKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ1N0cmluZyc6XG5cdFx0XHRjZWxsLnQgPSAncyc7IGNlbGwuciA9IHhsbWxfZml4c3RyKHVuZXNjYXBleG1sKHhtbCkpO1xuXHRcdFx0Y2VsbC52ID0gKHhtbC5pbmRleE9mKFwiPFwiKSA+IC0xID8gdW5lc2NhcGV4bWwoc3N8fHhtbCkucmVwbGFjZSgvPC4qPz4vZywgXCJcIikgOiBjZWxsLnIpOyAvLyB0b2RvOiBCUiBldGNcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ0RhdGVUaW1lJzpcblx0XHRcdGlmKHhtbC5zbGljZSgtMSkgIT0gXCJaXCIpIHhtbCArPSBcIlpcIjtcblx0XHRcdGNlbGwudiA9IChwYXJzZURhdGUoeG1sKSAtIG5ldyBEYXRlKERhdGUuVVRDKDE4OTksIDExLCAzMCkpKSAvICgyNCAqIDYwICogNjAgKiAxMDAwKTtcblx0XHRcdGlmKGNlbGwudiAhPT0gY2VsbC52KSBjZWxsLnYgPSB1bmVzY2FwZXhtbCh4bWwpO1xuXHRcdFx0ZWxzZSBpZihjZWxsLnY8NjApIGNlbGwudiA9IGNlbGwudiAtMTtcblx0XHRcdGlmKCFuZiB8fCBuZiA9PSBcIkdlbmVyYWxcIikgbmYgPSBcInl5eXktbW0tZGRcIjtcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdOdW1iZXInOlxuXHRcdFx0aWYoY2VsbC52ID09PSB1bmRlZmluZWQpIGNlbGwudj0reG1sO1xuXHRcdFx0aWYoIWNlbGwudCkgY2VsbC50ID0gJ24nO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnRXJyb3InOiBjZWxsLnQgPSAnZSc7IGNlbGwudiA9IFJCRXJyW3htbF07IGlmKG8uY2VsbFRleHQgIT09IGZhbHNlKSBjZWxsLncgPSB4bWw7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRpZih4bWwgPT0gXCJcIiAmJiBzcyA9PSBcIlwiKSB7IGNlbGwudCA9ICd6JzsgfVxuXHRcdFx0ZWxzZSB7IGNlbGwudCA9ICdzJzsgY2VsbC52ID0geGxtbF9maXhzdHIoc3N8fHhtbCk7IH1cblx0XHRcdGJyZWFrO1xuXHR9XG5cdHNhZmVfZm9ybWF0X3hsbWwoY2VsbCwgbmYsIG8pO1xuXHRpZihvLmNlbGxGb3JtdWxhICE9PSBmYWxzZSkge1xuXHRcdGlmKGNlbGwuRm9ybXVsYSkge1xuXHRcdFx0dmFyIGZzdHIgPSB1bmVzY2FwZXhtbChjZWxsLkZvcm11bGEpO1xuXHRcdFx0Lyogc3RyaWN0bHkgc3BlYWtpbmcsIHRoZSBsZWFkaW5nID0gaXMgcmVxdWlyZWQgYnV0IHNvbWUgd3JpdGVycyBvbWl0ICovXG5cdFx0XHRpZihmc3RyLmNoYXJDb2RlQXQoMCkgPT0gNjEgLyogPSAqLykgZnN0ciA9IGZzdHIuc2xpY2UoMSk7XG5cdFx0XHRjZWxsLmYgPSByY190b19hMShmc3RyLCBiYXNlKTtcblx0XHRcdGRlbGV0ZSBjZWxsLkZvcm11bGE7XG5cdFx0XHRpZihjZWxsLkFycmF5UmFuZ2UgPT0gXCJSQ1wiKSBjZWxsLkYgPSByY190b19hMShcIlJDOlJDXCIsIGJhc2UpO1xuXHRcdFx0ZWxzZSBpZihjZWxsLkFycmF5UmFuZ2UpIHtcblx0XHRcdFx0Y2VsbC5GID0gcmNfdG9fYTEoY2VsbC5BcnJheVJhbmdlLCBiYXNlKTtcblx0XHRcdFx0YXJyYXlmLnB1c2goW3NhZmVfZGVjb2RlX3JhbmdlKGNlbGwuRiksIGNlbGwuRl0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IoaSA9IDA7IGkgPCBhcnJheWYubGVuZ3RoOyArK2kpXG5cdFx0XHRcdGlmKGJhc2UuciA+PSBhcnJheWZbaV1bMF0ucy5yICYmIGJhc2UuciA8PSBhcnJheWZbaV1bMF0uZS5yKVxuXHRcdFx0XHRcdGlmKGJhc2UuYyA+PSBhcnJheWZbaV1bMF0ucy5jICYmIGJhc2UuYyA8PSBhcnJheWZbaV1bMF0uZS5jKVxuXHRcdFx0XHRcdFx0Y2VsbC5GID0gYXJyYXlmW2ldWzFdO1xuXHRcdH1cblx0fVxuXHRpZihvLmNlbGxTdHlsZXMpIHtcblx0XHRpbnRlcmlvcnMuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0XHRpZighUy5wYXR0ZXJuVHlwZSAmJiB4LnBhdHRlcm5UeXBlKSBTLnBhdHRlcm5UeXBlID0geC5wYXR0ZXJuVHlwZTtcblx0XHR9KTtcblx0XHRjZWxsLnMgPSBTO1xuXHR9XG5cdGlmKGNlbGwuU3R5bGVJRCAhPT0gdW5kZWZpbmVkKSBjZWxsLml4ZmUgPSBjZWxsLlN0eWxlSUQ7XG59XG5cbmZ1bmN0aW9uIHhsbWxfY2xlYW5fY29tbWVudChjb21tZW50Lyo6YW55Ki8pIHtcblx0Y29tbWVudC50ID0gY29tbWVudC52IHx8IFwiXCI7XG5cdGNvbW1lbnQudCA9IGNvbW1lbnQudC5yZXBsYWNlKC9cXHJcXG4vZyxcIlxcblwiKS5yZXBsYWNlKC9cXHIvZyxcIlxcblwiKTtcblx0Y29tbWVudC52ID0gY29tbWVudC53ID0gY29tbWVudC5peGZlID0gdW5kZWZpbmVkO1xufVxuXG4vKiBUT0RPOiBFdmVyeXRoaW5nICovXG5mdW5jdGlvbiBwYXJzZV94bG1sX3htbChkLCBfb3B0cykvKjpXb3JrYm9vayovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0bWFrZV9zc2YoKTtcblx0dmFyIHN0ciA9IGRlYm9tKHhsbWxfbm9ybWFsaXplKGQpKTtcblx0aWYob3B0cy50eXBlID09ICdiaW5hcnknIHx8IG9wdHMudHlwZSA9PSAnYXJyYXknIHx8IG9wdHMudHlwZSA9PSAnYmFzZTY0Jykge1xuXHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHN0ciA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSwgY2hhcl9jb2RlcyhzdHIpKTtcblx0XHRlbHNlIHN0ciA9IHV0ZjhyZWFkKHN0cik7XG5cdH1cblx0dmFyIG9wZW5pbmcgPSBzdHIuc2xpY2UoMCwgMTAyNCkudG9Mb3dlckNhc2UoKSwgaXNodG1sID0gZmFsc2U7XG5cdG9wZW5pbmcgPSBvcGVuaW5nLnJlcGxhY2UoL1wiLio/XCIvZywgXCJcIik7XG5cdGlmKChvcGVuaW5nLmluZGV4T2YoXCI+XCIpICYgMTAyMykgPiBNYXRoLm1pbigob3BlbmluZy5pbmRleE9mKFwiLFwiKSAmIDEwMjMpLCAob3BlbmluZy5pbmRleE9mKFwiO1wiKSYxMDIzKSkpIHsgdmFyIF9vID0gZHVwKG9wdHMpOyBfby50eXBlID0gXCJzdHJpbmdcIjsgcmV0dXJuIFBSTi50b193b3JrYm9vayhzdHIsIF9vKTsgfVxuXHRpZihvcGVuaW5nLmluZGV4T2YoXCI8P3htbFwiKSA9PSAtMSkgW1wiaHRtbFwiLCBcInRhYmxlXCIsIFwiaGVhZFwiLCBcIm1ldGFcIiwgXCJzY3JpcHRcIiwgXCJzdHlsZVwiLCBcImRpdlwiXS5mb3JFYWNoKGZ1bmN0aW9uKHRhZykgeyBpZihvcGVuaW5nLmluZGV4T2YoXCI8XCIgKyB0YWcpID49IDApIGlzaHRtbCA9IHRydWU7IH0pO1xuXHRpZihpc2h0bWwpIHJldHVybiBodG1sX3RvX3dvcmtib29rKHN0ciwgb3B0cyk7XG5cblx0WExNTEZvcm1hdE1hcCA9ICh7XG5cdFx0XCJHZW5lcmFsIE51bWJlclwiOiBcIkdlbmVyYWxcIixcblx0XHRcIkdlbmVyYWwgRGF0ZVwiOiB0YWJsZV9mbXRbMjJdLFxuXHRcdFwiTG9uZyBEYXRlXCI6IFwiZGRkZCwgbW1tbSBkZCwgeXl5eVwiLFxuXHRcdFwiTWVkaXVtIERhdGVcIjogdGFibGVfZm10WzE1XSxcblx0XHRcIlNob3J0IERhdGVcIjogdGFibGVfZm10WzE0XSxcblx0XHRcIkxvbmcgVGltZVwiOiB0YWJsZV9mbXRbMTldLFxuXHRcdFwiTWVkaXVtIFRpbWVcIjogdGFibGVfZm10WzE4XSxcblx0XHRcIlNob3J0IFRpbWVcIjogdGFibGVfZm10WzIwXSxcblx0XHRcIkN1cnJlbmN5XCI6ICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFx0XCJGaXhlZFwiOiB0YWJsZV9mbXRbMl0sXG5cdFx0XCJTdGFuZGFyZFwiOiB0YWJsZV9mbXRbNF0sXG5cdFx0XCJQZXJjZW50XCI6IHRhYmxlX2ZtdFsxMF0sXG5cdFx0XCJTY2llbnRpZmljXCI6IHRhYmxlX2ZtdFsxMV0sXG5cdFx0XCJZZXMvTm9cIjogJ1wiWWVzXCI7XCJZZXNcIjtcIk5vXCI7QCcsXG5cdFx0XCJUcnVlL0ZhbHNlXCI6ICdcIlRydWVcIjtcIlRydWVcIjtcIkZhbHNlXCI7QCcsXG5cdFx0XCJPbi9PZmZcIjogJ1wiWWVzXCI7XCJZZXNcIjtcIk5vXCI7QCdcblx0fS8qOmFueSovKTtcblxuXG5cdHZhciBSbjtcblx0dmFyIHN0YXRlID0gW10sIHRtcDtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0dmFyIHNoZWV0cyA9IHt9LCBzaGVldG5hbWVzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGN1cnNoZWV0Lyo6V29ya3NoZWV0Ki8gPSAob3B0cy5kZW5zZSA/IFtdIDoge30pLCBzaGVldG5hbWUgPSBcIlwiO1xuXHR2YXIgY2VsbCA9ICh7fS8qOmFueSovKSwgcm93ID0ge307Ly8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXHR2YXIgZHRhZyA9IHhsbWxfcGFyc2V4bWx0YWcoJzxEYXRhIHNzOlR5cGU9XCJTdHJpbmdcIj4nKSwgZGlkeCA9IDA7XG5cdHZhciBjID0gMCwgciA9IDA7XG5cdHZhciByZWZndWVzcy8qOlJhbmdlKi8gPSB7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9O1xuXHR2YXIgc3R5bGVzID0ge30sIHN0YWcgPSB7fTtcblx0dmFyIHNzID0gXCJcIiwgZmlkeCA9IDA7XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHR2YXIgUHJvcHMgPSB7fSwgQ3VzdHByb3BzID0ge30sIHBpZHggPSAwLCBjcCA9IFtdO1xuXHR2YXIgY29tbWVudHMvKjpBcnJheTxDb21tZW50PiovID0gW10sIGNvbW1lbnQvKjpDb21tZW50Ki8gPSAoe30vKjphbnkqLyk7XG5cdHZhciBjc3R5cyA9IFtdLCBjc3R5LCBzZWVuY29sID0gZmFsc2U7XG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW10sIHJvd29iaiA9IHt9LCBjYyA9IDAsIHJyID0gMDtcblx0dmFyIFdvcmtib29rLyo6V0JXQlByb3BzKi8gPSAoeyBTaGVldHM6W10sIFdCUHJvcHM6e2RhdGUxOTA0OmZhbHNlfSB9Lyo6YW55Ki8pLCB3c3Byb3BzID0ge307XG5cdHhsbWxyZWdleC5sYXN0SW5kZXggPSAwO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9tZyxcIlwiKTtcblx0dmFyIHJhd19SbjMgPSBcIlwiO1xuXHR3aGlsZSgoUm4gPSB4bG1scmVnZXguZXhlYyhzdHIpKSkgc3dpdGNoKChSblszXSA9IChyYXdfUm4zID0gUm5bM10pLnRvTG93ZXJDYXNlKCkpKSB7XG5cdFx0Y2FzZSAnZGF0YScgLypjYXNlICdEYXRhJyovOlxuXHRcdFx0aWYocmF3X1JuMyA9PSBcImRhdGFcIikge1xuXHRcdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYoc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzFdKSBicmVhaztcblx0XHRcdGlmKFJuWzFdPT09Jy8nKSBwYXJzZV94bG1sX2RhdGEoc3RyLnNsaWNlKGRpZHgsIFJuLmluZGV4KSwgc3MsIGR0YWcsIHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXT09LypcIkNvbW1lbnRcIiovXCJjb21tZW50XCI/Y29tbWVudDpjZWxsLCB7YzpjLHI6cn0sIHN0eWxlcywgY3N0eXNbY10sIHJvdywgYXJyYXlmLCBvcHRzKTtcblx0XHRcdGVsc2UgeyBzcyA9IFwiXCI7IGR0YWcgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTsgZGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoOyB9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdjZWxsJyAvKmNhc2UgJ0NlbGwnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKGNvbW1lbnRzLmxlbmd0aCA+IDApIGNlbGwuYyA9IGNvbW1lbnRzO1xuXHRcdFx0XHRpZigoIW9wdHMuc2hlZXRSb3dzIHx8IG9wdHMuc2hlZXRSb3dzID4gcikgJiYgY2VsbC52ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbcl0pIGN1cnNoZWV0W3JdID0gW107XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtyXVtjXSA9IGNlbGw7XG5cdFx0XHRcdFx0fSBlbHNlIGN1cnNoZWV0W2VuY29kZV9jb2woYykgKyBlbmNvZGVfcm93KHIpXSA9IGNlbGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoY2VsbC5IUmVmKSB7XG5cdFx0XHRcdFx0Y2VsbC5sID0gKHtUYXJnZXQ6dW5lc2NhcGV4bWwoY2VsbC5IUmVmKX0vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoY2VsbC5IUmVmU2NyZWVuVGlwKSBjZWxsLmwuVG9vbHRpcCA9IGNlbGwuSFJlZlNjcmVlblRpcDtcblx0XHRcdFx0XHRkZWxldGUgY2VsbC5IUmVmOyBkZWxldGUgY2VsbC5IUmVmU2NyZWVuVGlwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKGNlbGwuTWVyZ2VBY3Jvc3MgfHwgY2VsbC5NZXJnZURvd24pIHtcblx0XHRcdFx0XHRjYyA9IGMgKyAocGFyc2VJbnQoY2VsbC5NZXJnZUFjcm9zcywxMCl8MCk7XG5cdFx0XHRcdFx0cnIgPSByICsgKHBhcnNlSW50KGNlbGwuTWVyZ2VEb3duLDEwKXwwKTtcblx0XHRcdFx0XHRtZXJnZXMucHVzaCh7czp7YzpjLHI6cn0sZTp7YzpjYyxyOnJyfX0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKCFvcHRzLnNoZWV0U3R1YnMpIHsgaWYoY2VsbC5NZXJnZUFjcm9zcykgYyA9IGNjICsgMTsgZWxzZSArK2M7IH1cblx0XHRcdFx0ZWxzZSBpZihjZWxsLk1lcmdlQWNyb3NzIHx8IGNlbGwuTWVyZ2VEb3duKSB7XG5cdFx0XHRcdFx0Lyo6OiBpZighY2MpIGNjID0gMDsgaWYoIXJyKSByciA9IDA7ICovXG5cdFx0XHRcdFx0Zm9yKHZhciBjbWEgPSBjOyBjbWEgPD0gY2M7ICsrY21hKSB7XG5cdFx0XHRcdFx0XHRmb3IodmFyIGNtZCA9IHI7IGNtZCA8PSBycjsgKytjbWQpIHtcblx0XHRcdFx0XHRcdFx0aWYoY21hID4gYyB8fCBjbWQgPiByKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0W2NtZF0pIGN1cnNoZWV0W2NtZF0gPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnNoZWV0W2NtZF1bY21hXSA9IHt0Oid6J307XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGN1cnNoZWV0W2VuY29kZV9jb2woY21hKSArIGVuY29kZV9yb3coY21kKV0gPSB7dDoneid9O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGMgPSBjYyArIDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSArK2M7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjZWxsID0geGxtbF9wYXJzZXhtbHRhZ29iaihSblswXSk7XG5cdFx0XHRcdGlmKGNlbGwuSW5kZXgpIGMgPSArY2VsbC5JbmRleCAtIDE7XG5cdFx0XHRcdGlmKGMgPCByZWZndWVzcy5zLmMpIHJlZmd1ZXNzLnMuYyA9IGM7XG5cdFx0XHRcdGlmKGMgPiByZWZndWVzcy5lLmMpIHJlZmd1ZXNzLmUuYyA9IGM7XG5cdFx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSArK2M7XG5cdFx0XHRcdGNvbW1lbnRzID0gW107XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdyb3cnIC8qY2FzZSAnUm93JyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycgfHwgUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIHtcblx0XHRcdFx0aWYociA8IHJlZmd1ZXNzLnMucikgcmVmZ3Vlc3Mucy5yID0gcjtcblx0XHRcdFx0aWYociA+IHJlZmd1ZXNzLmUucikgcmVmZ3Vlc3MuZS5yID0gcjtcblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIHtcblx0XHRcdFx0XHRyb3cgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0XHRpZihyb3cuSW5kZXgpIHIgPSArcm93LkluZGV4IC0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjID0gMDsgKytyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cm93ID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdGlmKHJvdy5JbmRleCkgciA9ICtyb3cuSW5kZXggLSAxO1xuXHRcdFx0XHRyb3dvYmogPSB7fTtcblx0XHRcdFx0aWYocm93LkF1dG9GaXRIZWlnaHQgPT0gXCIwXCIgfHwgcm93LkhlaWdodCkge1xuXHRcdFx0XHRcdHJvd29iai5ocHggPSBwYXJzZUludChyb3cuSGVpZ2h0LCAxMCk7IHJvd29iai5ocHQgPSBweDJwdChyb3dvYmouaHB4KTtcblx0XHRcdFx0XHRyb3dpbmZvW3JdID0gcm93b2JqO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHJvdy5IaWRkZW4gPT0gXCIxXCIpIHsgcm93b2JqLmhpZGRlbiA9IHRydWU7IHJvd2luZm9bcl0gPSByb3dvYmo7IH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3dvcmtzaGVldCcgLypjYXNlICdXb3Jrc2hlZXQnKi86IC8qIFRPRE86IHJlYWQgcmFuZ2UgZnJvbSBGdWxsUm93cy9GdWxsQ29sdW1ucyAqL1xuXHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7XG5cdFx0XHRcdHNoZWV0bmFtZXMucHVzaChzaGVldG5hbWUpO1xuXHRcdFx0XHRpZihyZWZndWVzcy5zLnIgPD0gcmVmZ3Vlc3MuZS5yICYmIHJlZmd1ZXNzLnMuYyA8PSByZWZndWVzcy5lLmMpIHtcblx0XHRcdFx0XHRjdXJzaGVldFtcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IHJlZmd1ZXNzLmUucikge1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhZnVsbHJlZlwiXSA9IGN1cnNoZWV0W1wiIXJlZlwiXTtcblx0XHRcdFx0XHRcdHJlZmd1ZXNzLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKG1lcmdlcy5sZW5ndGgpIGN1cnNoZWV0W1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0XHRcdFx0aWYoY3N0eXMubGVuZ3RoID4gMCkgY3Vyc2hlZXRbXCIhY29sc1wiXSA9IGNzdHlzO1xuXHRcdFx0XHRpZihyb3dpbmZvLmxlbmd0aCA+IDApIGN1cnNoZWV0W1wiIXJvd3NcIl0gPSByb3dpbmZvO1xuXHRcdFx0XHRzaGVldHNbc2hlZXRuYW1lXSA9IGN1cnNoZWV0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVmZ3Vlc3MgPSB7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9O1xuXHRcdFx0XHRyID0gYyA9IDA7XG5cdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0XHR0bXAgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0c2hlZXRuYW1lID0gdW5lc2NhcGV4bWwodG1wLk5hbWUpO1xuXHRcdFx0XHRjdXJzaGVldCA9IChvcHRzLmRlbnNlID8gW10gOiB7fSk7XG5cdFx0XHRcdG1lcmdlcyA9IFtdO1xuXHRcdFx0XHRhcnJheWYgPSBbXTtcblx0XHRcdFx0cm93aW5mbyA9IFtdO1xuXHRcdFx0XHR3c3Byb3BzID0ge25hbWU6c2hlZXRuYW1lLCBIaWRkZW46MH07XG5cdFx0XHRcdFdvcmtib29rLlNoZWV0cy5wdXNoKHdzcHJvcHMpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAndGFibGUnIC8qY2FzZSAnVGFibGUnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdGVsc2UgaWYoUm5bMF0uc2xpY2UoLTIpID09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdGNzdHlzID0gW107IHNlZW5jb2wgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnc3R5bGUnIC8qY2FzZSAnU3R5bGUnKi86XG5cdFx0XHRpZihSblsxXT09PScvJykgcHJvY2Vzc19zdHlsZV94bG1sKHN0eWxlcywgc3RhZywgb3B0cyk7XG5cdFx0XHRlbHNlIHN0YWcgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbnVtYmVyZm9ybWF0JyAvKmNhc2UgJ051bWJlckZvcm1hdCcqLzpcblx0XHRcdHN0YWcubmYgPSB1bmVzY2FwZXhtbCh4bG1sX3BhcnNleG1sdGFnKFJuWzBdKS5Gb3JtYXQgfHwgXCJHZW5lcmFsXCIpO1xuXHRcdFx0aWYoWExNTEZvcm1hdE1hcFtzdGFnLm5mXSkgc3RhZy5uZiA9IFhMTUxGb3JtYXRNYXBbc3RhZy5uZl07XG5cdFx0XHRmb3IodmFyIHNzZmlkeCA9IDA7IHNzZmlkeCAhPSAweDE4ODsgKytzc2ZpZHgpIGlmKHRhYmxlX2ZtdFtzc2ZpZHhdID09IHN0YWcubmYpIGJyZWFrO1xuXHRcdFx0aWYoc3NmaWR4ID09IDB4MTg4KSBmb3Ioc3NmaWR4ID0gMHgzOTsgc3NmaWR4ICE9IDB4MTg4OyArK3NzZmlkeCkgaWYodGFibGVfZm10W3NzZmlkeF0gPT0gbnVsbCkgeyBTU0ZfbG9hZChzdGFnLm5mLCBzc2ZpZHgpOyBicmVhazsgfVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdjb2x1bW4nIC8qY2FzZSAnQ29sdW1uJyovOlxuXHRcdFx0aWYoc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdICE9PSAvKidUYWJsZScqLyd0YWJsZScpIGJyZWFrO1xuXHRcdFx0Y3N0eSA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0aWYoY3N0eS5IaWRkZW4pIHsgY3N0eS5oaWRkZW4gPSB0cnVlOyBkZWxldGUgY3N0eS5IaWRkZW47IH1cblx0XHRcdGlmKGNzdHkuV2lkdGgpIGNzdHkud3B4ID0gcGFyc2VJbnQoY3N0eS5XaWR0aCwgMTApO1xuXHRcdFx0aWYoIXNlZW5jb2wgJiYgY3N0eS53cHggPiAxMCkge1xuXHRcdFx0XHRzZWVuY29sID0gdHJ1ZTsgTURXID0gREVGX01EVzsgLy9maW5kX21kd193cHgoY3N0eS53cHgpO1xuXHRcdFx0XHRmb3IodmFyIF9jb2wgPSAwOyBfY29sIDwgY3N0eXMubGVuZ3RoOyArK19jb2wpIGlmKGNzdHlzW19jb2xdKSBwcm9jZXNzX2NvbChjc3R5c1tfY29sXSk7XG5cdFx0XHR9XG5cdFx0XHRpZihzZWVuY29sKSBwcm9jZXNzX2NvbChjc3R5KTtcblx0XHRcdGNzdHlzWyhjc3R5LkluZGV4LTF8fGNzdHlzLmxlbmd0aCldID0gY3N0eTtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCArY3N0eS5TcGFuOyArK2kpIGNzdHlzW2NzdHlzLmxlbmd0aF0gPSBkdXAoY3N0eSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ25hbWVkcmFuZ2UnIC8qY2FzZSAnTmFtZWRSYW5nZScqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKSBicmVhaztcblx0XHRcdGlmKCFXb3JrYm9vay5OYW1lcykgV29ya2Jvb2suTmFtZXMgPSBbXTtcblx0XHRcdHZhciBfTmFtZWRSYW5nZSA9IHBhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdHZhciBfRGVmaW5lZE5hbWUvKjpEZWZpbmVkTmFtZSovID0gKHtcblx0XHRcdFx0TmFtZTogX05hbWVkUmFuZ2UuTmFtZSxcblx0XHRcdFx0UmVmOiByY190b19hMShfTmFtZWRSYW5nZS5SZWZlcnNUby5zbGljZSgxKSwge3I6MCwgYzowfSlcblx0XHRcdH0vKjphbnkqLyk7XG5cdFx0XHRpZihXb3JrYm9vay5TaGVldHMubGVuZ3RoPjApIF9EZWZpbmVkTmFtZS5TaGVldD1Xb3JrYm9vay5TaGVldHMubGVuZ3RoLTE7XG5cdFx0XHQvKjo6IGlmKFdvcmtib29rLk5hbWVzKSAqL1dvcmtib29rLk5hbWVzLnB1c2goX0RlZmluZWROYW1lKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbmFtZWRjZWxsJyAvKmNhc2UgJ05hbWVkQ2VsbCcqLzogYnJlYWs7XG5cdFx0Y2FzZSAnYicgLypjYXNlICdCJyovOiBicmVhaztcblx0XHRjYXNlICdpJyAvKmNhc2UgJ0knKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3UnIC8qY2FzZSAnVScqLzogYnJlYWs7XG5cdFx0Y2FzZSAncycgLypjYXNlICdTJyovOiBicmVhaztcblx0XHRjYXNlICdlbScgLypjYXNlICdFTScqLzogYnJlYWs7XG5cdFx0Y2FzZSAnaDInIC8qY2FzZSAnSDInKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2gzJyAvKmNhc2UgJ0gzJyovOiBicmVhaztcblx0XHRjYXNlICdzdWInIC8qY2FzZSAnU3ViJyovOiBicmVhaztcblx0XHRjYXNlICdzdXAnIC8qY2FzZSAnU3VwJyovOiBicmVhaztcblx0XHRjYXNlICdzcGFuJyAvKmNhc2UgJ1NwYW4nKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2FsaWdubWVudCcgLypjYXNlICdBbGlnbm1lbnQnKi86XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdib3JkZXJzJyAvKmNhc2UgJ0JvcmRlcnMnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2JvcmRlcicgLypjYXNlICdCb3JkZXInKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2ZvbnQnIC8qY2FzZSAnRm9udCcqLzpcblx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSBicmVhaztcblx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgc3MgKz0gc3RyLnNsaWNlKGZpZHgsIFJuLmluZGV4KTtcblx0XHRcdGVsc2UgZmlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnaW50ZXJpb3InIC8qY2FzZSAnSW50ZXJpb3InKi86XG5cdFx0XHRpZighb3B0cy5jZWxsU3R5bGVzKSBicmVhaztcblx0XHRcdHN0YWcuSW50ZXJpb3IgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3Byb3RlY3Rpb24nIC8qY2FzZSAnUHJvdGVjdGlvbicqLzogYnJlYWs7XG5cblx0XHRjYXNlICdhdXRob3InIC8qY2FzZSAnQXV0aG9yJyovOlxuXHRcdGNhc2UgJ3RpdGxlJyAvKmNhc2UgJ1RpdGxlJyovOlxuXHRcdGNhc2UgJ2Rlc2NyaXB0aW9uJyAvKmNhc2UgJ0Rlc2NyaXB0aW9uJyovOlxuXHRcdGNhc2UgJ2NyZWF0ZWQnIC8qY2FzZSAnQ3JlYXRlZCcqLzpcblx0XHRjYXNlICdrZXl3b3JkcycgLypjYXNlICdLZXl3b3JkcycqLzpcblx0XHRjYXNlICdzdWJqZWN0JyAvKmNhc2UgJ1N1YmplY3QnKi86XG5cdFx0Y2FzZSAnY2F0ZWdvcnknIC8qY2FzZSAnQ2F0ZWdvcnknKi86XG5cdFx0Y2FzZSAnY29tcGFueScgLypjYXNlICdDb21wYW55JyovOlxuXHRcdGNhc2UgJ2xhc3RhdXRob3InIC8qY2FzZSAnTGFzdEF1dGhvcicqLzpcblx0XHRjYXNlICdsYXN0c2F2ZWQnIC8qY2FzZSAnTGFzdFNhdmVkJyovOlxuXHRcdGNhc2UgJ2xhc3RwcmludGVkJyAvKmNhc2UgJ0xhc3RQcmludGVkJyovOlxuXHRcdGNhc2UgJ3ZlcnNpb24nIC8qY2FzZSAnVmVyc2lvbicqLzpcblx0XHRjYXNlICdyZXZpc2lvbicgLypjYXNlICdSZXZpc2lvbicqLzpcblx0XHRjYXNlICd0b3RhbHRpbWUnIC8qY2FzZSAnVG90YWxUaW1lJyovOlxuXHRcdGNhc2UgJ2h5cGVybGlua2Jhc2UnIC8qY2FzZSAnSHlwZXJsaW5rQmFzZScqLzpcblx0XHRjYXNlICdtYW5hZ2VyJyAvKmNhc2UgJ01hbmFnZXInKi86XG5cdFx0Y2FzZSAnY29udGVudHN0YXR1cycgLypjYXNlICdDb250ZW50U3RhdHVzJyovOlxuXHRcdGNhc2UgJ2lkZW50aWZpZXInIC8qY2FzZSAnSWRlbnRpZmllcicqLzpcblx0XHRjYXNlICdsYW5ndWFnZScgLypjYXNlICdMYW5ndWFnZScqLzpcblx0XHRjYXNlICdhcHBuYW1lJyAvKmNhc2UgJ0FwcE5hbWUnKi86XG5cdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHhsbWxfc2V0X3Byb3AoUHJvcHMsIHJhd19SbjMsIHN0ci5zbGljZShwaWR4LCBSbi5pbmRleCkpO1xuXHRcdFx0ZWxzZSBwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdwYXJhZ3JhcGhzJyAvKmNhc2UgJ1BhcmFncmFwaHMnKi86IGJyZWFrO1xuXG5cdFx0Y2FzZSAnc3R5bGVzJyAvKmNhc2UgJ1N0eWxlcycqLzpcblx0XHRjYXNlICd3b3JrYm9vaycgLypjYXNlICdXb3JrYm9vaycqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnY29tbWVudCcgLypjYXNlICdDb21tZW50JyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7XG5cdFx0XHRcdHhsbWxfY2xlYW5fY29tbWVudChjb21tZW50KTtcblx0XHRcdFx0Y29tbWVudHMucHVzaChjb21tZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0XHR0bXAgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0Y29tbWVudCA9ICh7YTp0bXAuQXV0aG9yfS8qOmFueSovKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnYXV0b2ZpbHRlcicgLypjYXNlICdBdXRvRmlsdGVyJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykge1xuXHRcdFx0XHR2YXIgQXV0b0ZpbHRlciA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRjdXJzaGVldFsnIWF1dG9maWx0ZXInXSA9IHsgcmVmOnJjX3RvX2ExKEF1dG9GaWx0ZXIuUmFuZ2UpLnJlcGxhY2UoL1xcJC9nLFwiXCIpIH07XG5cdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ25hbWUnIC8qY2FzZSAnTmFtZScqLzogYnJlYWs7XG5cblx0XHRjYXNlICdkYXRhdmFsaWRhdGlvbicgLypjYXNlICdEYXRhVmFsaWRhdGlvbicqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdwaXhlbHNwZXJpbmNoJyAvKmNhc2UgJ1BpeGVsc1BlckluY2gnKi86XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdjb21wb25lbnRvcHRpb25zJyAvKmNhc2UgJ0NvbXBvbmVudE9wdGlvbnMnKi86XG5cdFx0Y2FzZSAnZG9jdW1lbnRwcm9wZXJ0aWVzJyAvKmNhc2UgJ0RvY3VtZW50UHJvcGVydGllcycqLzpcblx0XHRjYXNlICdjdXN0b21kb2N1bWVudHByb3BlcnRpZXMnIC8qY2FzZSAnQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzJyovOlxuXHRcdGNhc2UgJ29mZmljZWRvY3VtZW50c2V0dGluZ3MnIC8qY2FzZSAnT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncycqLzpcblx0XHRjYXNlICdwaXZvdHRhYmxlJyAvKmNhc2UgJ1Bpdm90VGFibGUnKi86XG5cdFx0Y2FzZSAncGl2b3RjYWNoZScgLypjYXNlICdQaXZvdENhY2hlJyovOlxuXHRcdGNhc2UgJ25hbWVzJyAvKmNhc2UgJ05hbWVzJyovOlxuXHRcdGNhc2UgJ21hcGluZm8nIC8qY2FzZSAnTWFwSW5mbycqLzpcblx0XHRjYXNlICdwYWdlYnJlYWtzJyAvKmNhc2UgJ1BhZ2VCcmVha3MnKi86XG5cdFx0Y2FzZSAncXVlcnl0YWJsZScgLypjYXNlICdRdWVyeVRhYmxlJyovOlxuXHRcdGNhc2UgJ3NvcnRpbmcnIC8qY2FzZSAnU29ydGluZycqLzpcblx0XHRjYXNlICdzY2hlbWEnIC8qY2FzZSAnU2NoZW1hJyovOiAvL2Nhc2UgJ2RhdGEnIC8qY2FzZSAnZGF0YScqLzpcblx0XHRjYXNlICdjb25kaXRpb25hbGZvcm1hdHRpbmcnIC8qY2FzZSAnQ29uZGl0aW9uYWxGb3JtYXR0aW5nJyovOlxuXHRcdGNhc2UgJ3NtYXJ0dGFndHlwZScgLypjYXNlICdTbWFydFRhZ1R5cGUnKi86XG5cdFx0Y2FzZSAnc21hcnR0YWdzJyAvKmNhc2UgJ1NtYXJ0VGFncycqLzpcblx0XHRjYXNlICdleGNlbHdvcmtib29rJyAvKmNhc2UgJ0V4Y2VsV29ya2Jvb2snKi86XG5cdFx0Y2FzZSAnd29ya2Jvb2tvcHRpb25zJyAvKmNhc2UgJ1dvcmtib29rT3B0aW9ucycqLzpcblx0XHRjYXNlICd3b3Jrc2hlZXRvcHRpb25zJyAvKmNhc2UgJ1dvcmtzaGVldE9wdGlvbnMnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdudWxsJyAvKmNhc2UgJ051bGwnKi86IGJyZWFrO1xuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdC8qIEZPRFMgZmlsZSByb290IGlzIDxvZmZpY2U6ZG9jdW1lbnQ+ICovXG5cdFx0XHRpZihzdGF0ZS5sZW5ndGggPT0gMCAmJiBSblszXSA9PSBcImRvY3VtZW50XCIpIHJldHVybiBwYXJzZV9mb2RzKHN0ciwgb3B0cyk7XG5cdFx0XHQvKiBVT1MgZmlsZSByb290IGlzIDx1b2Y6VU9GPiAqL1xuXHRcdFx0aWYoc3RhdGUubGVuZ3RoID09IDAgJiYgUm5bM10gPT0gXCJ1b2ZcIi8qXCJVT0ZcIiovKSByZXR1cm4gcGFyc2VfZm9kcyhzdHIsIG9wdHMpO1xuXG5cdFx0XHR2YXIgc2VlbiA9IHRydWU7XG5cdFx0XHRzd2l0Y2goc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSB7XG5cdFx0XHRcdC8qIE9mZmljZURvY3VtZW50U2V0dGluZ3MgKi9cblx0XHRcdFx0Y2FzZSAnb2ZmaWNlZG9jdW1lbnRzZXR0aW5ncycgLypjYXNlICdPZmZpY2VEb2N1bWVudFNldHRpbmdzJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdhbGxvd3BuZycgLypjYXNlICdBbGxvd1BORycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVtb3ZlcGVyc29uYWxpbmZvcm1hdGlvbicgLypjYXNlICdSZW1vdmVQZXJzb25hbEluZm9ybWF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb3dubG9hZGNvbXBvbmVudHMnIC8qY2FzZSAnRG93bmxvYWRDb21wb25lbnRzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsb2NhdGlvbm9mY29tcG9uZW50cycgLypjYXNlICdMb2NhdGlvbk9mQ29tcG9uZW50cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sb3JzJyAvKmNhc2UgJ0NvbG9ycycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sb3InIC8qY2FzZSAnQ29sb3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2luZGV4JyAvKmNhc2UgJ0luZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZ2InIC8qY2FzZSAnUkdCJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0YXJnZXRzY3JlZW5zaXplJyAvKmNhc2UgJ1RhcmdldFNjcmVlblNpemUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlYWRvbmx5cmVjb21tZW5kZWQnIC8qY2FzZSAnUmVhZE9ubHlSZWNvbW1lbmRlZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIENvbXBvbmVudE9wdGlvbnMgKi9cblx0XHRcdFx0Y2FzZSAnY29tcG9uZW50b3B0aW9ucycgLypjYXNlICdDb21wb25lbnRPcHRpb25zJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICd0b29sYmFyJyAvKmNhc2UgJ1Rvb2xiYXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hpZGVvZmZpY2Vsb2dvJyAvKmNhc2UgJ0hpZGVPZmZpY2VMb2dvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzcHJlYWRzaGVldGF1dG9maXQnIC8qY2FzZSAnU3ByZWFkc2hlZXRBdXRvRml0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYWJlbCcgLypjYXNlICdMYWJlbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FwdGlvbicgLypjYXNlICdDYXB0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXhoZWlnaHQnIC8qY2FzZSAnTWF4SGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXh3aWR0aCcgLypjYXNlICdNYXhXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbmV4dHNoZWV0bnVtYmVyJyAvKmNhc2UgJ05leHRTaGVldE51bWJlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIEV4Y2VsV29ya2Jvb2sgKi9cblx0XHRcdFx0Y2FzZSAnZXhjZWx3b3JrYm9vaycgLypjYXNlICdFeGNlbFdvcmtib29rJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdkYXRlMTkwNCcgLypjYXNlICdEYXRlMTkwNCcqLzpcblx0XHRcdFx0XHRcdC8qOjogaWYoIVdvcmtib29rLldCUHJvcHMpIFdvcmtib29rLldCUHJvcHMgPSB7fTsgKi9cblx0XHRcdFx0XHRcdFdvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2luZG93aGVpZ2h0JyAvKmNhc2UgJ1dpbmRvd0hlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2luZG93d2lkdGgnIC8qY2FzZSAnV2luZG93V2lkdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3dpbmRvd3RvcHgnIC8qY2FzZSAnV2luZG93VG9wWCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2luZG93dG9weScgLypjYXNlICdXaW5kb3dUb3BZJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0YWJyYXRpbycgLypjYXNlICdUYWJSYXRpbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHN0cnVjdHVyZScgLypjYXNlICdQcm90ZWN0U3RydWN0dXJlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0d2luZG93JyAvKmNhc2UgJ1Byb3RlY3RXaW5kb3cnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3R3aW5kb3dzJyAvKmNhc2UgJ1Byb3RlY3RXaW5kb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhY3RpdmVzaGVldCcgLypjYXNlICdBY3RpdmVTaGVldCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGlzcGxheWlua25vdGVzJyAvKmNhc2UgJ0Rpc3BsYXlJbmtOb3RlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlyc3R2aXNpYmxlc2hlZXQnIC8qY2FzZSAnRmlyc3RWaXNpYmxlU2hlZXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3N1cGJvb2snIC8qY2FzZSAnU3VwQm9vaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hlZXRuYW1lJyAvKmNhc2UgJ1NoZWV0TmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hlZXRpbmRleCcgLypjYXNlICdTaGVldEluZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldGluZGV4Zmlyc3QnIC8qY2FzZSAnU2hlZXRJbmRleEZpcnN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldGluZGV4bGFzdCcgLypjYXNlICdTaGVldEluZGV4TGFzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGxsJyAvKmNhc2UgJ0RsbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWNjZXB0bGFiZWxzaW5mb3JtdWxhcycgLypjYXNlICdBY2NlcHRMYWJlbHNJbkZvcm11bGFzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdHNhdmVsaW5rdmFsdWVzJyAvKmNhc2UgJ0RvTm90U2F2ZUxpbmtWYWx1ZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2l0ZXJhdGlvbicgLypjYXNlICdJdGVyYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heGl0ZXJhdGlvbnMnIC8qY2FzZSAnTWF4SXRlcmF0aW9ucycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4Y2hhbmdlJyAvKmNhc2UgJ01heENoYW5nZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGF0aCcgLypjYXNlICdQYXRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd4Y3QnIC8qY2FzZSAnWGN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb3VudCcgLypjYXNlICdDb3VudCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2VsZWN0ZWRzaGVldHMnIC8qY2FzZSAnU2VsZWN0ZWRTaGVldHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NhbGN1bGF0aW9uJyAvKmNhc2UgJ0NhbGN1bGF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd1bmNhbGNlZCcgLypjYXNlICdVbmNhbGNlZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3RhcnR1cHByb21wdCcgLypjYXNlICdTdGFydHVwUHJvbXB0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjcm4nIC8qY2FzZSAnQ3JuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdleHRlcm5uYW1lJyAvKmNhc2UgJ0V4dGVybk5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zvcm11bGEnIC8qY2FzZSAnRm9ybXVsYScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sZmlyc3QnIC8qY2FzZSAnQ29sRmlyc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbGxhc3QnIC8qY2FzZSAnQ29sTGFzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2FudGFkdmlzZScgLypjYXNlICdXYW50QWR2aXNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdib29sZWFuJyAvKmNhc2UgJ0Jvb2xlYW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9yJyAvKmNhc2UgJ0Vycm9yJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZXh0JyAvKmNhc2UgJ1RleHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29sZScgLypjYXNlICdPTEUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vYXV0b3JlY292ZXInIC8qY2FzZSAnTm9BdXRvUmVjb3ZlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHVibGlzaG9iamVjdHMnIC8qY2FzZSAnUHVibGlzaE9iamVjdHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90Y2FsY3VsYXRlYmVmb3Jlc2F2ZScgLypjYXNlICdEb05vdENhbGN1bGF0ZUJlZm9yZVNhdmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcicgLypjYXNlICdOdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZm1vZGVyMWMxJyAvKmNhc2UgJ1JlZk1vZGVSMUMxJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbWJlZHNhdmVzbWFydHRhZ3MnIC8qY2FzZSAnRW1iZWRTYXZlU21hcnRUYWdzJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogV29ya2Jvb2tPcHRpb25zICovXG5cdFx0XHRcdGNhc2UgJ3dvcmtib29rb3B0aW9ucycgLypjYXNlICdXb3JrYm9va09wdGlvbnMnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ293Y3ZlcnNpb24nIC8qY2FzZSAnT1dDVmVyc2lvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGVpZ2h0JyAvKmNhc2UgJ0hlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2lkdGgnIC8qY2FzZSAnV2lkdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBXb3Jrc2hlZXRPcHRpb25zICovXG5cdFx0XHRcdGNhc2UgJ3dvcmtzaGVldG9wdGlvbnMnIC8qY2FzZSAnV29ya3NoZWV0T3B0aW9ucycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJsZScgLypjYXNlICdWaXNpYmxlJyovOlxuXHRcdFx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSBzd2l0Y2goc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiU2hlZXRIaWRkZW5cIjogd3Nwcm9wcy5IaWRkZW4gPSAxOyBicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSBcIlNoZWV0VmVyeUhpZGRlblwiOiB3c3Byb3BzLkhpZGRlbiA9IDI7IGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSBwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdoZWFkZXInIC8qY2FzZSAnSGVhZGVyJyovOlxuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMoY3Vyc2hlZXRbJyFtYXJnaW5zJ109e30sICd4bG1sJyk7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhcnNleG1sdGFnKFJuWzBdKS5NYXJnaW4pKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5oZWFkZXIgPSArcGFyc2V4bWx0YWcoUm5bMF0pLk1hcmdpbjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zvb3RlcicgLypjYXNlICdGb290ZXInKi86XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhjdXJzaGVldFsnIW1hcmdpbnMnXT17fSwgJ3hsbWwnKTtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFyc2V4bWx0YWcoUm5bMF0pLk1hcmdpbikpIGN1cnNoZWV0WychbWFyZ2lucyddLmZvb3RlciA9ICtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFnZW1hcmdpbnMnIC8qY2FzZSAnUGFnZU1hcmdpbnMnKi86XG5cdFx0XHRcdFx0XHR2YXIgcGFnZW1hcmdpbnMgPSBwYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhjdXJzaGVldFsnIW1hcmdpbnMnXT17fSwneGxtbCcpO1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYWdlbWFyZ2lucy5Ub3ApKSBjdXJzaGVldFsnIW1hcmdpbnMnXS50b3AgPSArcGFnZW1hcmdpbnMuVG9wO1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYWdlbWFyZ2lucy5MZWZ0KSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10ubGVmdCA9ICtwYWdlbWFyZ2lucy5MZWZ0O1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYWdlbWFyZ2lucy5SaWdodCkpIGN1cnNoZWV0WychbWFyZ2lucyddLnJpZ2h0ID0gK3BhZ2VtYXJnaW5zLlJpZ2h0O1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYWdlbWFyZ2lucy5Cb3R0b20pKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5ib3R0b20gPSArcGFnZW1hcmdpbnMuQm90dG9tO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGlzcGxheXJpZ2h0dG9sZWZ0JyAvKmNhc2UgJ0Rpc3BsYXlSaWdodFRvTGVmdCcqLzpcblx0XHRcdFx0XHRcdGlmKCFXb3JrYm9vay5WaWV3cykgV29ya2Jvb2suVmlld3MgPSBbXTtcblx0XHRcdFx0XHRcdGlmKCFXb3JrYm9vay5WaWV3c1swXSkgV29ya2Jvb2suVmlld3NbMF0gPSB7fTtcblx0XHRcdFx0XHRcdFdvcmtib29rLlZpZXdzWzBdLlJUTCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ2ZyZWV6ZXBhbmVzJyAvKmNhc2UgJ0ZyZWV6ZVBhbmVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmcm96ZW5ub3NwbGl0JyAvKmNhc2UgJ0Zyb3plbk5vU3BsaXQnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnc3BsaXRob3Jpem9udGFsJyAvKmNhc2UgJ1NwbGl0SG9yaXpvbnRhbCcqLzpcblx0XHRcdFx0XHRjYXNlICdzcGxpdHZlcnRpY2FsJyAvKmNhc2UgJ1NwbGl0VmVydGljYWwnKi86XG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90ZGlzcGxheWdyaWRsaW5lcycgLypjYXNlICdEb05vdERpc3BsYXlHcmlkbGluZXMnKi86XG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ2FjdGl2ZXJvdycgLypjYXNlICdBY3RpdmVSb3cnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FjdGl2ZWNvbCcgLypjYXNlICdBY3RpdmVDb2wnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RvcHJvd2JvdHRvbXBhbmUnIC8qY2FzZSAnVG9wUm93Qm90dG9tUGFuZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGVmdGNvbHVtbnJpZ2h0cGFuZScgLypjYXNlICdMZWZ0Q29sdW1uUmlnaHRQYW5lJyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ3Vuc3luY2VkJyAvKmNhc2UgJ1Vuc3luY2VkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcmludCcgLypjYXNlICdQcmludCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJpbnRlcnJvcnMnIC8qY2FzZSAnUHJpbnRFcnJvcnMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhbmVzJyAvKmNhc2UgJ1BhbmVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzY2FsZScgLypjYXNlICdTY2FsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFuZScgLypjYXNlICdQYW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdudW1iZXInIC8qY2FzZSAnTnVtYmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYXlvdXQnIC8qY2FzZSAnTGF5b3V0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlc2V0dXAnIC8qY2FzZSAnUGFnZVNldHVwJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzZWxlY3RlZCcgLypjYXNlICdTZWxlY3RlZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdG9iamVjdHMnIC8qY2FzZSAnUHJvdGVjdE9iamVjdHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VuYWJsZXNlbGVjdGlvbicgLypjYXNlICdFbmFibGVTZWxlY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3RzY2VuYXJpb3MnIC8qY2FzZSAnUHJvdGVjdFNjZW5hcmlvcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsaWRwcmludGVyaW5mbycgLypjYXNlICdWYWxpZFByaW50ZXJJbmZvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdob3Jpem9udGFscmVzb2x1dGlvbicgLypjYXNlICdIb3Jpem9udGFsUmVzb2x1dGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVydGljYWxyZXNvbHV0aW9uJyAvKmNhc2UgJ1ZlcnRpY2FsUmVzb2x1dGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyb2Zjb3BpZXMnIC8qY2FzZSAnTnVtYmVyb2ZDb3BpZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FjdGl2ZXBhbmUnIC8qY2FzZSAnQWN0aXZlUGFuZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndG9wcm93dmlzaWJsZScgLypjYXNlICdUb3BSb3dWaXNpYmxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsZWZ0Y29sdW1udmlzaWJsZScgLypjYXNlICdMZWZ0Q29sdW1uVmlzaWJsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZml0dG9wYWdlJyAvKmNhc2UgJ0ZpdFRvUGFnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2VzZWxlY3Rpb24nIC8qY2FzZSAnUmFuZ2VTZWxlY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhcGVyc2l6ZWluZGV4JyAvKmNhc2UgJ1BhcGVyU2l6ZUluZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlbGF5b3V0em9vbScgLypjYXNlICdQYWdlTGF5b3V0Wm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFnZWJyZWFrem9vbScgLypjYXNlICdQYWdlQnJlYWtab29tJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWx0ZXJvbicgLypjYXNlICdGaWx0ZXJPbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZml0d2lkdGgnIC8qY2FzZSAnRml0V2lkdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpdGhlaWdodCcgLypjYXNlICdGaXRIZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbW1lbnRzbGF5b3V0JyAvKmNhc2UgJ0NvbW1lbnRzTGF5b3V0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd6b29tJyAvKmNhc2UgJ1pvb20nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xlZnR0b3JpZ2h0JyAvKmNhc2UgJ0xlZnRUb1JpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdncmlkbGluZXMnIC8qY2FzZSAnR3JpZGxpbmVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd3NvcnQnIC8qY2FzZSAnQWxsb3dTb3J0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2ZpbHRlcicgLypjYXNlICdBbGxvd0ZpbHRlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dpbnNlcnRyb3dzJyAvKmNhc2UgJ0FsbG93SW5zZXJ0Um93cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dkZWxldGVyb3dzJyAvKmNhc2UgJ0FsbG93RGVsZXRlUm93cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dpbnNlcnRjb2xzJyAvKmNhc2UgJ0FsbG93SW5zZXJ0Q29scycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dkZWxldGVjb2xzJyAvKmNhc2UgJ0FsbG93RGVsZXRlQ29scycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dpbnNlcnRoeXBlcmxpbmtzJyAvKmNhc2UgJ0FsbG93SW5zZXJ0SHlwZXJsaW5rcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dmb3JtYXRjZWxscycgLypjYXNlICdBbGxvd0Zvcm1hdENlbGxzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd3NpemVjb2xzJyAvKmNhc2UgJ0FsbG93U2l6ZUNvbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93c2l6ZXJvd3MnIC8qY2FzZSAnQWxsb3dTaXplUm93cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9zdW1tYXJ5cm93c2JlbG93ZGV0YWlsJyAvKmNhc2UgJ05vU3VtbWFyeVJvd3NCZWxvd0RldGFpbCcqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtcIiFvdXRsaW5lXCJdKSBjdXJzaGVldFtcIiFvdXRsaW5lXCJdID0ge307XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFvdXRsaW5lXCJdLmFib3ZlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhYmNvbG9yaW5kZXgnIC8qY2FzZSAnVGFiQ29sb3JJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5aGVhZGluZ3MnIC8qY2FzZSAnRG9Ob3REaXNwbGF5SGVhZGluZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Nob3dwYWdlbGF5b3V0em9vbScgLypjYXNlICdTaG93UGFnZUxheW91dFpvb20nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vc3VtbWFyeWNvbHVtbnNyaWdodGRldGFpbCcgLypjYXNlICdOb1N1bW1hcnlDb2x1bW5zUmlnaHREZXRhaWwnKi86XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbXCIhb3V0bGluZVwiXSkgY3Vyc2hlZXRbXCIhb3V0bGluZVwiXSA9IHt9O1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhb3V0bGluZVwiXS5sZWZ0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2JsYWNrYW5kd2hpdGUnIC8qY2FzZSAnQmxhY2tBbmRXaGl0ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5emVyb3MnIC8qY2FzZSAnRG9Ob3REaXNwbGF5WmVyb3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rpc3BsYXlwYWdlYnJlYWsnIC8qY2FzZSAnRGlzcGxheVBhZ2VCcmVhaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncm93Y29saGVhZGluZ3MnIC8qY2FzZSAnUm93Q29sSGVhZGluZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90ZGlzcGxheW91dGxpbmUnIC8qY2FzZSAnRG9Ob3REaXNwbGF5T3V0bGluZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9vcmllbnRhdGlvbicgLypjYXNlICdOb09yaWVudGF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd3VzZXBpdm90dGFibGVzJyAvKmNhc2UgJ0FsbG93VXNlUGl2b3RUYWJsZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3plcm9oZWlnaHQnIC8qY2FzZSAnWmVyb0hlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmlld2FibGVyYW5nZScgLypjYXNlICdWaWV3YWJsZVJhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzZWxlY3Rpb24nIC8qY2FzZSAnU2VsZWN0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0Y29udGVudHMnIC8qY2FzZSAnUHJvdGVjdENvbnRlbnRzJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogUGl2b3RUYWJsZSAqL1xuXHRcdFx0XHRjYXNlICdwaXZvdHRhYmxlJyAvKmNhc2UgJ1Bpdm90VGFibGUnKi86IGNhc2UgJ3Bpdm90Y2FjaGUnIC8qY2FzZSAnUGl2b3RDYWNoZScqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnaW1tZWRpYXRlaXRlbXNvbmRyb3AnIC8qY2FzZSAnSW1tZWRpYXRlSXRlbXNPbkRyb3AnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Nob3dwYWdlbXVsdGlwbGVpdGVtbGFiZWwnIC8qY2FzZSAnU2hvd1BhZ2VNdWx0aXBsZUl0ZW1MYWJlbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tcGFjdHJvd2luZGVudCcgLypjYXNlICdDb21wYWN0Um93SW5kZW50JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsb2NhdGlvbicgLypjYXNlICdMb2NhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGl2b3RmaWVsZCcgLypjYXNlICdQaXZvdEZpZWxkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdvcmllbnRhdGlvbicgLypjYXNlICdPcmllbnRhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGF5b3V0Zm9ybScgLypjYXNlICdMYXlvdXRGb3JtJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uJyAvKmNhc2UgJ0xheW91dFN1YnRvdGFsTG9jYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dGNvbXBhY3Ryb3cnIC8qY2FzZSAnTGF5b3V0Q29tcGFjdFJvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncG9zaXRpb24nIC8qY2FzZSAnUG9zaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Bpdm90aXRlbScgLypjYXNlICdQaXZvdEl0ZW0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RhdGF0eXBlJyAvKmNhc2UgJ0RhdGFUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkYXRhZmllbGQnIC8qY2FzZSAnRGF0YUZpZWxkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzb3VyY2VuYW1lJyAvKmNhc2UgJ1NvdXJjZU5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhcmVudGZpZWxkJyAvKmNhc2UgJ1BhcmVudEZpZWxkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdGxpbmVpdGVtcycgLypjYXNlICdQVExpbmVJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHRsaW5laXRlbScgLypjYXNlICdQVExpbmVJdGVtJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb3VudG9mc2FtZWl0ZW1zJyAvKmNhc2UgJ0NvdW50T2ZTYW1lSXRlbXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2l0ZW0nIC8qY2FzZSAnSXRlbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXRlbXR5cGUnIC8qY2FzZSAnSXRlbVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3B0c291cmNlJyAvKmNhc2UgJ1BUU291cmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYWNoZWluZGV4JyAvKmNhc2UgJ0NhY2hlSW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbnNvbGlkYXRpb25yZWZlcmVuY2UnIC8qY2FzZSAnQ29uc29saWRhdGlvblJlZmVyZW5jZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlsZW5hbWUnIC8qY2FzZSAnRmlsZU5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZmVyZW5jZScgLypjYXNlICdSZWZlcmVuY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vY29sdW1uZ3JhbmQnIC8qY2FzZSAnTm9Db2x1bW5HcmFuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9yb3dncmFuZCcgLypjYXNlICdOb1Jvd0dyYW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdibGFua2xpbmVhZnRlcml0ZW1zJyAvKmNhc2UgJ0JsYW5rTGluZUFmdGVySXRlbXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hpZGRlbicgLypjYXNlICdIaWRkZW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3N1YnRvdGFsJyAvKmNhc2UgJ1N1YnRvdGFsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdiYXNlZmllbGQnIC8qY2FzZSAnQmFzZUZpZWxkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXBjaGlsZGl0ZW1zJyAvKmNhc2UgJ01hcENoaWxkSXRlbXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Z1bmN0aW9uJyAvKmNhc2UgJ0Z1bmN0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNob25maWxlb3BlbicgLypjYXNlICdSZWZyZXNoT25GaWxlT3BlbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJpbnRzZXR0aXRsZXMnIC8qY2FzZSAnUHJpbnRTZXRUaXRsZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21lcmdlbGFiZWxzJyAvKmNhc2UgJ01lcmdlTGFiZWxzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZWZhdWx0dmVyc2lvbicgLypjYXNlICdEZWZhdWx0VmVyc2lvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaG5hbWUnIC8qY2FzZSAnUmVmcmVzaE5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hkYXRlJyAvKmNhc2UgJ1JlZnJlc2hEYXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoZGF0ZWNvcHknIC8qY2FzZSAnUmVmcmVzaERhdGVDb3B5JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9ubGFzdHJlZnJlc2gnIC8qY2FzZSAnVmVyc2lvbkxhc3RSZWZyZXNoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9ubGFzdHVwZGF0ZScgLypjYXNlICdWZXJzaW9uTGFzdFVwZGF0ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbnVwZGF0ZWFibGVtaW4nIC8qY2FzZSAnVmVyc2lvblVwZGF0ZWFibGVNaW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25yZWZyZXNoYWJsZW1pbicgLypjYXNlICdWZXJzaW9uUmVmcmVzaGFibGVNaW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NhbGN1bGF0aW9uJyAvKmNhc2UgJ0NhbGN1bGF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogUGFnZUJyZWFrcyAqL1xuXHRcdFx0XHRjYXNlICdwYWdlYnJlYWtzJyAvKmNhc2UgJ1BhZ2VCcmVha3MnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2NvbGJyZWFrcycgLypjYXNlICdDb2xCcmVha3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbGJyZWFrJyAvKmNhc2UgJ0NvbEJyZWFrJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyb3dicmVha3MnIC8qY2FzZSAnUm93QnJlYWtzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyb3dicmVhaycgLypjYXNlICdSb3dCcmVhaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sc3RhcnQnIC8qY2FzZSAnQ29sU3RhcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbGVuZCcgLypjYXNlICdDb2xFbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2VuZCcgLypjYXNlICdSb3dFbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBBdXRvRmlsdGVyICovXG5cdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXInIC8qY2FzZSAnQXV0b0ZpbHRlcicqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcmNvbHVtbicgLypjYXNlICdBdXRvRmlsdGVyQ29sdW1uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyY29uZGl0aW9uJyAvKmNhc2UgJ0F1dG9GaWx0ZXJDb25kaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXJhbmQnIC8qY2FzZSAnQXV0b0ZpbHRlckFuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcm9yJyAvKmNhc2UgJ0F1dG9GaWx0ZXJPcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFF1ZXJ5VGFibGUgKi9cblx0XHRcdFx0Y2FzZSAncXVlcnl0YWJsZScgLypjYXNlICdRdWVyeVRhYmxlJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdpZCcgLypjYXNlICdJZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2Zvcm1hdGZvbnQnIC8qY2FzZSAnQXV0b0Zvcm1hdEZvbnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9mb3JtYXRwYXR0ZXJuJyAvKmNhc2UgJ0F1dG9Gb3JtYXRQYXR0ZXJuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdxdWVyeXNvdXJjZScgLypjYXNlICdRdWVyeVNvdXJjZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncXVlcnl0eXBlJyAvKmNhc2UgJ1F1ZXJ5VHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW5hYmxlcmVkaXJlY3Rpb25zJyAvKmNhc2UgJ0VuYWJsZVJlZGlyZWN0aW9ucycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaGVkaW54bDknIC8qY2FzZSAnUmVmcmVzaGVkSW5YbDknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VybHN0cmluZycgLypjYXNlICdVUkxTdHJpbmcnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2h0bWx0YWJsZXMnIC8qY2FzZSAnSFRNTFRhYmxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29ubmVjdGlvbicgLypjYXNlICdDb25uZWN0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21tYW5kdGV4dCcgLypjYXNlICdDb21tYW5kVGV4dCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaGluZm8nIC8qY2FzZSAnUmVmcmVzaEluZm8nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25vdGl0bGVzJyAvKmNhc2UgJ05vVGl0bGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICduZXh0aWQnIC8qY2FzZSAnTmV4dElkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2x1bW5pbmZvJyAvKmNhc2UgJ0NvbHVtbkluZm8nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ292ZXJ3cml0ZWNlbGxzJyAvKmNhc2UgJ092ZXJ3cml0ZUNlbGxzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdHByb21wdGZvcmZpbGUnIC8qY2FzZSAnRG9Ob3RQcm9tcHRGb3JGaWxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0ZXh0d2l6YXJkc2V0dGluZ3MnIC8qY2FzZSAnVGV4dFdpemFyZFNldHRpbmdzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzb3VyY2UnIC8qY2FzZSAnU291cmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdudW1iZXInIC8qY2FzZSAnTnVtYmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZWNpbWFsJyAvKmNhc2UgJ0RlY2ltYWwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Rob3VzYW5kc2VwYXJhdG9yJyAvKmNhc2UgJ1Rob3VzYW5kU2VwYXJhdG9yJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0cmFpbGluZ21pbnVzbnVtYmVycycgLypjYXNlICdUcmFpbGluZ01pbnVzTnVtYmVycycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9ybWF0c2V0dGluZ3MnIC8qY2FzZSAnRm9ybWF0U2V0dGluZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpZWxkdHlwZScgLypjYXNlICdGaWVsZFR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RlbGltaXRlcnMnIC8qY2FzZSAnRGVsaW1pdGVycycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGFiJyAvKmNhc2UgJ1RhYicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tbWEnIC8qY2FzZSAnQ29tbWEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9mb3JtYXRuYW1lJyAvKmNhc2UgJ0F1dG9Gb3JtYXROYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9ubGFzdGVkaXQnIC8qY2FzZSAnVmVyc2lvbkxhc3RFZGl0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9ubGFzdHJlZnJlc2gnIC8qY2FzZSAnVmVyc2lvbkxhc3RSZWZyZXNoJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAnZGF0YXZhbGlkYXRpb24nIC8qY2FzZSAnRGF0YVZhbGlkYXRpb24nKi86XG5cdFx0XHRcdHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlJyAvKmNhc2UgJ1JhbmdlJyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ3R5cGUnIC8qY2FzZSAnVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWluJyAvKmNhc2UgJ01pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4JyAvKmNhc2UgJ01heCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc29ydCcgLypjYXNlICdTb3J0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZXNjZW5kaW5nJyAvKmNhc2UgJ0Rlc2NlbmRpbmcnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29yZGVyJyAvKmNhc2UgJ09yZGVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYXNlc2Vuc2l0aXZlJyAvKmNhc2UgJ0Nhc2VTZW5zaXRpdmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlJyAvKmNhc2UgJ1ZhbHVlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcnN0eWxlJyAvKmNhc2UgJ0Vycm9yU3R5bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ybWVzc2FnZScgLypjYXNlICdFcnJvck1lc3NhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ydGl0bGUnIC8qY2FzZSAnRXJyb3JUaXRsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXRtZXNzYWdlJyAvKmNhc2UgJ0lucHV0TWVzc2FnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXR0aXRsZScgLypjYXNlICdJbnB1dFRpdGxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21ib2hpZGUnIC8qY2FzZSAnQ29tYm9IaWRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dGhpZGUnIC8qY2FzZSAnSW5wdXRIaWRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb25kaXRpb24nIC8qY2FzZSAnQ29uZGl0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdxdWFsaWZpZXInIC8qY2FzZSAnUXVhbGlmaWVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd1c2VibGFuaycgLypjYXNlICdVc2VCbGFuaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUxJyAvKmNhc2UgJ1ZhbHVlMScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUyJyAvKmNhc2UgJ1ZhbHVlMicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9ybWF0JyAvKmNhc2UgJ0Zvcm1hdCcqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdjZWxscmFuZ2VsaXN0JyAvKmNhc2UgJ0NlbGxSYW5nZUxpc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRjYXNlICdzb3J0aW5nJyAvKmNhc2UgJ1NvcnRpbmcnKi86XG5cdFx0XHRcdGNhc2UgJ2NvbmRpdGlvbmFsZm9ybWF0dGluZycgLypjYXNlICdDb25kaXRpb25hbEZvcm1hdHRpbmcnKi86XG5cdFx0XHRcdHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlJyAvKmNhc2UgJ1JhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0eXBlJyAvKmNhc2UgJ1R5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21pbicgLypjYXNlICdNaW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heCcgLypjYXNlICdNYXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvcnQnIC8qY2FzZSAnU29ydCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVzY2VuZGluZycgLypjYXNlICdEZXNjZW5kaW5nJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdvcmRlcicgLypjYXNlICdPcmRlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FzZXNlbnNpdGl2ZScgLypjYXNlICdDYXNlU2Vuc2l0aXZlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZScgLypjYXNlICdWYWx1ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3JzdHlsZScgLypjYXNlICdFcnJvclN0eWxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcm1lc3NhZ2UnIC8qY2FzZSAnRXJyb3JNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcnRpdGxlJyAvKmNhc2UgJ0Vycm9yVGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NlbGxyYW5nZWxpc3QnIC8qY2FzZSAnQ2VsbFJhbmdlTGlzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXRtZXNzYWdlJyAvKmNhc2UgJ0lucHV0TWVzc2FnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5wdXR0aXRsZScgLypjYXNlICdJbnB1dFRpdGxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21ib2hpZGUnIC8qY2FzZSAnQ29tYm9IaWRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dGhpZGUnIC8qY2FzZSAnSW5wdXRIaWRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb25kaXRpb24nIC8qY2FzZSAnQ29uZGl0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdxdWFsaWZpZXInIC8qY2FzZSAnUXVhbGlmaWVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd1c2VibGFuaycgLypjYXNlICdVc2VCbGFuaycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUxJyAvKmNhc2UgJ1ZhbHVlMScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUyJyAvKmNhc2UgJ1ZhbHVlMicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9ybWF0JyAvKmNhc2UgJ0Zvcm1hdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIE1hcEluZm8gKHNjaGVtYSkgKi9cblx0XHRcdFx0Y2FzZSAnbWFwaW5mbycgLypjYXNlICdNYXBJbmZvJyovOiBjYXNlICdzY2hlbWEnIC8qY2FzZSAnU2NoZW1hJyovOiBjYXNlICdkYXRhJyAvKmNhc2UgJ2RhdGEnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ21hcCcgLypjYXNlICdNYXAnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VudHJ5JyAvKmNhc2UgJ0VudHJ5JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyYW5nZScgLypjYXNlICdSYW5nZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAneHBhdGgnIC8qY2FzZSAnWFBhdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpZWxkJyAvKmNhc2UgJ0ZpZWxkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd4c2R0eXBlJyAvKmNhc2UgJ1hTRFR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbHRlcm9uJyAvKmNhc2UgJ0ZpbHRlck9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhZ2dyZWdhdGUnIC8qY2FzZSAnQWdncmVnYXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbGVtZW50dHlwZScgLypjYXNlICdFbGVtZW50VHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXR0cmlidXRldHlwZScgLypjYXNlICdBdHRyaWJ1dGVUeXBlJyovOiBicmVhaztcblx0XHRcdFx0LyogVGhlc2UgYXJlIGZyb20geHNkIChYTUwgU2NoZW1hIERlZmluaXRpb24pICovXG5cdFx0XHRcdFx0Y2FzZSAnc2NoZW1hJyAvKmNhc2UgJ3NjaGVtYScqLzpcblx0XHRcdFx0XHRjYXNlICdlbGVtZW50JyAvKmNhc2UgJ2VsZW1lbnQnKi86XG5cdFx0XHRcdFx0Y2FzZSAnY29tcGxleHR5cGUnIC8qY2FzZSAnY29tcGxleFR5cGUnKi86XG5cdFx0XHRcdFx0Y2FzZSAnZGF0YXR5cGUnIC8qY2FzZSAnZGF0YXR5cGUnKi86XG5cdFx0XHRcdFx0Y2FzZSAnYWxsJyAvKmNhc2UgJ2FsbCcqLzpcblx0XHRcdFx0XHRjYXNlICdhdHRyaWJ1dGUnIC8qY2FzZSAnYXR0cmlidXRlJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2V4dGVuZHMnIC8qY2FzZSAnZXh0ZW5kcycqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdyb3cnIC8qY2FzZSAncm93JyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogU21hcnRUYWdzIChjYW4gYmUgYW55dGhpbmcpICovXG5cdFx0XHRcdGNhc2UgJ3NtYXJ0dGFncycgLypjYXNlICdTbWFydFRhZ3MnKi86IGJyZWFrO1xuXG5cdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihzZWVuKSBicmVhaztcblx0XHRcdC8qIEN1c3RvbURvY3VtZW50UHJvcGVydGllcyAqL1xuXHRcdFx0aWYoUm5bM10ubWF0Y2goLyFcXFtDREFUQS8pKSBicmVhaztcblx0XHRcdGlmKCFzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMV0pIHRocm93ICdVbnJlY29nbml6ZWQgdGFnOiAnICsgUm5bM10gKyBcInxcIiArIHN0YXRlLmpvaW4oXCJ8XCIpO1xuXHRcdFx0aWYoc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdPT09LyonQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzJyovJ2N1c3RvbWRvY3VtZW50cHJvcGVydGllcycpIHtcblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHhsbWxfc2V0X2N1c3Rwcm9wKEN1c3Rwcm9wcywgcmF3X1JuMywgY3AsIHN0ci5zbGljZShwaWR4LCBSbi5pbmRleCkpO1xuXHRcdFx0XHRlbHNlIHsgY3AgPSBSbjsgcGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoOyB9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYob3B0cy5XVEYpIHRocm93ICdVbnJlY29nbml6ZWQgdGFnOiAnICsgUm5bM10gKyBcInxcIiArIHN0YXRlLmpvaW4oXCJ8XCIpO1xuXHR9XG5cdHZhciBvdXQgPSAoe30vKjphbnkqLyk7XG5cdGlmKCFvcHRzLmJvb2tTaGVldHMgJiYgIW9wdHMuYm9va1Byb3BzKSBvdXQuU2hlZXRzID0gc2hlZXRzO1xuXHRvdXQuU2hlZXROYW1lcyA9IHNoZWV0bmFtZXM7XG5cdG91dC5Xb3JrYm9vayA9IFdvcmtib29rO1xuXHRvdXQuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdG91dC5Qcm9wcyA9IFByb3BzO1xuXHRvdXQuQ3VzdHByb3BzID0gQ3VzdHByb3BzO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZV94bG1sKGRhdGEvKjpSYXdCeXRlc3xzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9vayovIHtcblx0Zml4X3JlYWRfb3B0cyhvcHRzPW9wdHN8fHt9KTtcblx0c3dpdGNoKG9wdHMudHlwZXx8XCJiYXNlNjRcIikge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIHBhcnNlX3hsbWxfeG1sKEJhc2U2NF9kZWNvZGUoZGF0YSksIG9wdHMpO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogY2FzZSBcImJ1ZmZlclwiOiBjYXNlIFwiZmlsZVwiOiByZXR1cm4gcGFyc2VfeGxtbF94bWwoZGF0YSwgb3B0cyk7XG5cdFx0Y2FzZSBcImFycmF5XCI6IHJldHVybiBwYXJzZV94bG1sX3htbChhMnMoZGF0YSksIG9wdHMpO1xuXHR9XG5cdC8qOjogdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7ICovXG59XG5cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3Byb3BzX3hsbWwod2IvKjpXb3JrYm9vayovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0LyogRG9jdW1lbnRQcm9wZXJ0aWVzICovXG5cdGlmKHdiLlByb3BzKSBvLnB1c2goeGxtbF93cml0ZV9kb2Nwcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHQvKiBDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMgKi9cblx0aWYod2IuQ3VzdHByb3BzKSBvLnB1c2goeGxtbF93cml0ZV9jdXN0cHJvcHMod2IuUHJvcHMsIHdiLkN1c3Rwcm9wcywgb3B0cykpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfd2JfeGxtbCgvKjo6d2IsIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdC8qIE9mZmljZURvY3VtZW50U2V0dGluZ3MgKi9cblx0LyogRXhjZWxXb3JrYm9vayAqL1xuXHRyZXR1cm4gXCJcIjtcbn1cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3N0eV94bG1sKHdiLCBvcHRzKS8qOnN0cmluZyovIHtcblx0LyogU3R5bGVzICovXG5cdHZhciBzdHlsZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbJzxTdHlsZSBzczpJRD1cIkRlZmF1bHRcIiBzczpOYW1lPVwiTm9ybWFsXCI+PE51bWJlckZvcm1hdC8+PC9TdHlsZT4nXTtcblx0b3B0cy5jZWxsWGZzLmZvckVhY2goZnVuY3Rpb24oeGYsIGlkKSB7XG5cdFx0dmFyIHBheWxvYWQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRwYXlsb2FkLnB1c2god3JpdGV4dGFnKCdOdW1iZXJGb3JtYXQnLCBudWxsLCB7XCJzczpGb3JtYXRcIjogZXNjYXBleG1sKHRhYmxlX2ZtdFt4Zi5udW1GbXRJZF0pfSkpO1xuXG5cdFx0dmFyIG8gPSAvKjo6KCove1wic3M6SURcIjogXCJzXCIgKyAoMjEraWQpfS8qOjogOmFueSkqLztcblx0XHRzdHlsZXMucHVzaCh3cml0ZXh0YWcoJ1N0eWxlJywgcGF5bG9hZC5qb2luKFwiXCIpLCBvKSk7XG5cdH0pO1xuXHRyZXR1cm4gd3JpdGV4dGFnKFwiU3R5bGVzXCIsIHN0eWxlcy5qb2luKFwiXCIpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX25hbWVfeGxtbChuKSB7IHJldHVybiB3cml0ZXh0YWcoXCJOYW1lZFJhbmdlXCIsIG51bGwsIHtcInNzOk5hbWVcIjogbi5OYW1lLCBcInNzOlJlZmVyc1RvXCI6XCI9XCIgKyBhMV90b19yYyhuLlJlZiwge3I6MCxjOjB9KX0pOyB9XG5mdW5jdGlvbiB3cml0ZV9uYW1lc194bG1sKHdiLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0aWYoISgod2J8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKSByZXR1cm4gXCJcIjtcblx0Lyo6OiBpZighd2IgfHwgIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5OYW1lcykgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdHZhciBuYW1lcy8qOkFycmF5PGFueT4qLyA9IHdiLldvcmtib29rLk5hbWVzO1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuID0gbmFtZXNbaV07XG5cdFx0aWYobi5TaGVldCAhPSBudWxsKSBjb250aW51ZTtcblx0XHRpZihuLk5hbWUubWF0Y2goL15feGxmblxcLi8pKSBjb250aW51ZTtcblx0XHRvdXQucHVzaCh3cml0ZV9uYW1lX3hsbWwobikpO1xuXHR9XG5cdHJldHVybiB3cml0ZXh0YWcoXCJOYW1lc1wiLCBvdXQuam9pbihcIlwiKSk7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sX25hbWVzKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMsIGlkeC8qOm51bWJlciovLCB3Yi8qOldvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHRpZighd3MpIHJldHVybiBcIlwiO1xuXHRpZighKCh3Ynx8e30pLldvcmtib29rfHx7fSkuTmFtZXMpIHJldHVybiBcIlwiO1xuXHQvKjo6IGlmKCF3YiB8fCAhd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLk5hbWVzKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0dmFyIG5hbWVzLyo6QXJyYXk8YW55PiovID0gd2IuV29ya2Jvb2suTmFtZXM7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG4gPSBuYW1lc1tpXTtcblx0XHRpZihuLlNoZWV0ICE9IGlkeCkgY29udGludWU7XG5cdFx0Lypzd2l0Y2gobi5OYW1lKSB7XG5cdFx0XHRjYXNlIFwiX1wiOiBjb250aW51ZTtcblx0XHR9Ki9cblx0XHRpZihuLk5hbWUubWF0Y2goL15feGxmblxcLi8pKSBjb250aW51ZTtcblx0XHRvdXQucHVzaCh3cml0ZV9uYW1lX3hsbWwobikpO1xuXHR9XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cbi8qIFdvcmtzaGVldE9wdGlvbnMgKi9cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfd3NvcHRzKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMsIGlkeC8qOm51bWJlciovLCB3Yi8qOldvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHRpZighd3MpIHJldHVybiBcIlwiO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHQvKiBOT1RFOiBzcGVjIHRlY2huaWNhbGx5IGFsbG93cyBhbnkgb3JkZXIsIGJ1dCBzdGljayB3aXRoIGltcGxpZWQgb3JkZXIgKi9cblxuXHQvKiBGaXRUb1BhZ2UgKi9cblx0LyogRG9Ob3REaXNwbGF5Q29sSGVhZGVycyAqL1xuXHQvKiBEb05vdERpc3BsYXlSb3dIZWFkZXJzICovXG5cdC8qIFZpZXdhYmxlUmFuZ2UgKi9cblx0LyogU2VsZWN0aW9uICovXG5cdC8qIEdyaWRsaW5lQ29sb3IgKi9cblx0LyogTmFtZSAqL1xuXHQvKiBFeGNlbFdvcmtzaGVldFR5cGUgKi9cblx0LyogSW50bE1hY3JvICovXG5cdC8qIFVuc3luY2VkICovXG5cdC8qIFNlbGVjdGVkICovXG5cdC8qIENvZGVOYW1lICovXG5cblx0aWYod3NbJyFtYXJnaW5zJ10pIHtcblx0XHRvLnB1c2goXCI8UGFnZVNldHVwPlwiKTtcblx0XHRpZih3c1snIW1hcmdpbnMnXS5oZWFkZXIpIG8ucHVzaCh3cml0ZXh0YWcoXCJIZWFkZXJcIiwgbnVsbCwgeyd4Ok1hcmdpbic6d3NbJyFtYXJnaW5zJ10uaGVhZGVyfSkpO1xuXHRcdGlmKHdzWychbWFyZ2lucyddLmZvb3Rlcikgby5wdXNoKHdyaXRleHRhZyhcIkZvb3RlclwiLCBudWxsLCB7J3g6TWFyZ2luJzp3c1snIW1hcmdpbnMnXS5mb290ZXJ9KSk7XG5cdFx0by5wdXNoKHdyaXRleHRhZyhcIlBhZ2VNYXJnaW5zXCIsIG51bGwsIHtcblx0XHRcdCd4OkJvdHRvbSc6IHdzWychbWFyZ2lucyddLmJvdHRvbSB8fCBcIjAuNzVcIixcblx0XHRcdCd4OkxlZnQnOiB3c1snIW1hcmdpbnMnXS5sZWZ0IHx8IFwiMC43XCIsXG5cdFx0XHQneDpSaWdodCc6IHdzWychbWFyZ2lucyddLnJpZ2h0IHx8IFwiMC43XCIsXG5cdFx0XHQneDpUb3AnOiB3c1snIW1hcmdpbnMnXS50b3AgfHwgXCIwLjc1XCJcblx0XHR9KSk7XG5cdFx0by5wdXNoKFwiPC9QYWdlU2V0dXA+XCIpO1xuXHR9XG5cblx0LyogUGFnZVNldHVwICovXG5cdC8qIERpc3BsYXlQYWdlQnJlYWsgKi9cblx0LyogVHJhbnNpdGlvbkV4cHJlc3Npb25FdmFsdWF0aW9uICovXG5cdC8qIFRyYW5zaXRpb25Gb3JtdWxhRW50cnkgKi9cblx0LyogUHJpbnQgKi9cblx0LyogWm9vbSAqL1xuXHQvKiBQYWdlTGF5b3V0Wm9vbSAqL1xuXHQvKiBQYWdlQnJlYWtab29tICovXG5cdC8qIFNob3dQYWdlQnJlYWtab29tICovXG5cdC8qIERlZmF1bHRSb3dIZWlnaHQgKi9cblx0LyogRGVmYXVsdENvbHVtbldpZHRoICovXG5cdC8qIFN0YW5kYXJkV2lkdGggKi9cblxuXHRpZih3YiAmJiB3Yi5Xb3JrYm9vayAmJiB3Yi5Xb3JrYm9vay5TaGVldHMgJiYgd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0pIHtcblx0XHQvKiBWaXNpYmxlICovXG5cdFx0aWYod2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uSGlkZGVuKSBvLnB1c2god3JpdGV4dGFnKFwiVmlzaWJsZVwiLCAod2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uSGlkZGVuID09IDEgPyBcIlNoZWV0SGlkZGVuXCIgOiBcIlNoZWV0VmVyeUhpZGRlblwiKSwge30pKTtcblx0XHRlbHNlIHtcblx0XHRcdC8qIFNlbGVjdGVkICovXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgaWR4OyArK2kpIGlmKHdiLldvcmtib29rLlNoZWV0c1tpXSAmJiAhd2IuV29ya2Jvb2suU2hlZXRzW2ldLkhpZGRlbikgYnJlYWs7XG5cdFx0XHRpZihpID09IGlkeCkgby5wdXNoKFwiPFNlbGVjdGVkLz5cIik7XG5cdFx0fVxuXHR9XG5cblx0LyogTGVmdENvbHVtblZpc2libGUgKi9cblxuXHRpZigoKCgod2J8fHt9KS5Xb3JrYm9va3x8e30pLlZpZXdzfHxbXSlbMF18fHt9KS5SVEwpIG8ucHVzaChcIjxEaXNwbGF5UmlnaHRUb0xlZnQvPlwiKTtcblxuXHQvKiBHcmlkbGluZUNvbG9ySW5kZXggKi9cblx0LyogRGlzcGxheUZvcm11bGFzICovXG5cdC8qIERvTm90RGlzcGxheUdyaWRsaW5lcyAqL1xuXHQvKiBEb05vdERpc3BsYXlIZWFkaW5ncyAqL1xuXHQvKiBEb05vdERpc3BsYXlPdXRsaW5lICovXG5cdC8qIEFwcGx5QXV0b21hdGljT3V0bGluZVN0eWxlcyAqL1xuXHQvKiBOb1N1bW1hcnlSb3dzQmVsb3dEZXRhaWwgKi9cblx0LyogTm9TdW1tYXJ5Q29sdW1uc1JpZ2h0RGV0YWlsICovXG5cdC8qIERvTm90RGlzcGxheVplcm9zICovXG5cdC8qIEFjdGl2ZVJvdyAqL1xuXHQvKiBBY3RpdmVDb2x1bW4gKi9cblx0LyogRmlsdGVyT24gKi9cblx0LyogUmFuZ2VTZWxlY3Rpb24gKi9cblx0LyogVG9wUm93VmlzaWJsZSAqL1xuXHQvKiBUb3BSb3dCb3R0b21QYW5lICovXG5cdC8qIExlZnRDb2x1bW5SaWdodFBhbmUgKi9cblx0LyogQWN0aXZlUGFuZSAqL1xuXHQvKiBTcGxpdEhvcml6b250YWwgKi9cblx0LyogU3BsaXRWZXJ0aWNhbCAqL1xuXHQvKiBGcmVlemVQYW5lcyAqL1xuXHQvKiBGcm96ZW5Ob1NwbGl0ICovXG5cdC8qIFRhYkNvbG9ySW5kZXggKi9cblx0LyogUGFuZXMgKi9cblxuXHQvKiBOT1RFOiBQYXNzd29yZCBub3Qgc3VwcG9ydGVkIGluIFhMTUwgRm9ybWF0ICovXG5cdGlmKHdzWychcHJvdGVjdCddKSB7XG5cdFx0by5wdXNoKHdyaXRldGFnKFwiUHJvdGVjdENvbnRlbnRzXCIsIFwiVHJ1ZVwiKSk7XG5cdFx0aWYod3NbJyFwcm90ZWN0J10ub2JqZWN0cykgby5wdXNoKHdyaXRldGFnKFwiUHJvdGVjdE9iamVjdHNcIiwgXCJUcnVlXCIpKTtcblx0XHRpZih3c1snIXByb3RlY3QnXS5zY2VuYXJpb3MpIG8ucHVzaCh3cml0ZXRhZyhcIlByb3RlY3RTY2VuYXJpb3NcIiwgXCJUcnVlXCIpKTtcblx0XHRpZih3c1snIXByb3RlY3QnXS5zZWxlY3RMb2NrZWRDZWxscyAhPSBudWxsICYmICF3c1snIXByb3RlY3QnXS5zZWxlY3RMb2NrZWRDZWxscykgby5wdXNoKHdyaXRldGFnKFwiRW5hYmxlU2VsZWN0aW9uXCIsIFwiTm9TZWxlY3Rpb25cIikpO1xuXHRcdGVsc2UgaWYod3NbJyFwcm90ZWN0J10uc2VsZWN0VW5sb2NrZWRDZWxscyAhPSBudWxsICYmICF3c1snIXByb3RlY3QnXS5zZWxlY3RVbmxvY2tlZENlbGxzKSBvLnB1c2god3JpdGV0YWcoXCJFbmFibGVTZWxlY3Rpb25cIiwgXCJVbmxvY2tlZENlbGxzXCIpKTtcblx0W1xuXHRcdFsgXCJmb3JtYXRDZWxsc1wiLCBcIkFsbG93Rm9ybWF0Q2VsbHNcIiBdLFxuXHRcdFsgXCJmb3JtYXRDb2x1bW5zXCIsIFwiQWxsb3dTaXplQ29sc1wiIF0sXG5cdFx0WyBcImZvcm1hdFJvd3NcIiwgXCJBbGxvd1NpemVSb3dzXCIgXSxcblx0XHRbIFwiaW5zZXJ0Q29sdW1uc1wiLCBcIkFsbG93SW5zZXJ0Q29sc1wiIF0sXG5cdFx0WyBcImluc2VydFJvd3NcIiwgXCJBbGxvd0luc2VydFJvd3NcIiBdLFxuXHRcdFsgXCJpbnNlcnRIeXBlcmxpbmtzXCIsIFwiQWxsb3dJbnNlcnRIeXBlcmxpbmtzXCIgXSxcblx0XHRbIFwiZGVsZXRlQ29sdW1uc1wiLCBcIkFsbG93RGVsZXRlQ29sc1wiIF0sXG5cdFx0WyBcImRlbGV0ZVJvd3NcIiwgXCJBbGxvd0RlbGV0ZVJvd3NcIiBdLFxuXHRcdFsgXCJzb3J0XCIsIFwiQWxsb3dTb3J0XCIgXSxcblx0XHRbIFwiYXV0b0ZpbHRlclwiLCBcIkFsbG93RmlsdGVyXCIgXSxcblx0XHRbIFwicGl2b3RUYWJsZXNcIiwgXCJBbGxvd1VzZVBpdm90VGFibGVzXCIgXVxuXHRdLmZvckVhY2goZnVuY3Rpb24oeCkgeyBpZih3c1snIXByb3RlY3QnXVt4WzBdXSkgby5wdXNoKFwiPFwiK3hbMV0rXCIvPlwiKTsgfSk7XG5cdH1cblxuXHRpZihvLmxlbmd0aCA9PSAwKSByZXR1cm4gXCJcIjtcblx0cmV0dXJuIHdyaXRleHRhZyhcIldvcmtzaGVldE9wdGlvbnNcIiwgby5qb2luKFwiXCIpLCB7eG1sbnM6WExNTE5TLnh9KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfY29tbWVudChjb21tZW50cy8qOkFycmF5PGFueT4qLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiBjb21tZW50cy5tYXAoZnVuY3Rpb24oYykge1xuXHRcdC8vIFRPRE86IGZvcm1hdHRlZCB0ZXh0XG5cdFx0dmFyIHQgPSB4bG1sX3VuZml4c3RyKGMudHx8XCJcIik7XG5cdFx0dmFyIGQgPXdyaXRleHRhZyhcInNzOkRhdGFcIiwgdCwge1wieG1sbnNcIjpcImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDBcIn0pO1xuXHRcdHJldHVybiB3cml0ZXh0YWcoXCJDb21tZW50XCIsIGQsIHtcInNzOkF1dGhvclwiOmMuYX0pO1xuXHR9KS5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9jZWxsKGNlbGwsIHJlZi8qOnN0cmluZyovLCB3cywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLCBhZGRyKS8qOnN0cmluZyove1xuXHRpZighY2VsbCB8fCAoY2VsbC52ID09IHVuZGVmaW5lZCAmJiBjZWxsLmYgPT0gdW5kZWZpbmVkKSkgcmV0dXJuIFwiXCI7XG5cblx0dmFyIGF0dHIgPSB7fTtcblx0aWYoY2VsbC5mKSBhdHRyW1wic3M6Rm9ybXVsYVwiXSA9IFwiPVwiICsgZXNjYXBleG1sKGExX3RvX3JjKGNlbGwuZiwgYWRkcikpO1xuXHRpZihjZWxsLkYgJiYgY2VsbC5GLnNsaWNlKDAsIHJlZi5sZW5ndGgpID09IHJlZikge1xuXHRcdHZhciBlbmQgPSBkZWNvZGVfY2VsbChjZWxsLkYuc2xpY2UocmVmLmxlbmd0aCArIDEpKTtcblx0XHRhdHRyW1wic3M6QXJyYXlSYW5nZVwiXSA9IFwiUkM6UlwiICsgKGVuZC5yID09IGFkZHIuciA/IFwiXCIgOiBcIltcIiArIChlbmQuciAtIGFkZHIucikgKyBcIl1cIikgKyBcIkNcIiArIChlbmQuYyA9PSBhZGRyLmMgPyBcIlwiIDogXCJbXCIgKyAoZW5kLmMgLSBhZGRyLmMpICsgXCJdXCIpO1xuXHR9XG5cblx0aWYoY2VsbC5sICYmIGNlbGwubC5UYXJnZXQpIHtcblx0XHRhdHRyW1wic3M6SFJlZlwiXSA9IGVzY2FwZXhtbChjZWxsLmwuVGFyZ2V0KTtcblx0XHRpZihjZWxsLmwuVG9vbHRpcCkgYXR0cltcIng6SFJlZlNjcmVlblRpcFwiXSA9IGVzY2FwZXhtbChjZWxsLmwuVG9vbHRpcCk7XG5cdH1cblxuXHRpZih3c1snIW1lcmdlcyddKSB7XG5cdFx0dmFyIG1hcnIgPSB3c1snIW1lcmdlcyddO1xuXHRcdGZvcih2YXIgbWkgPSAwOyBtaSAhPSBtYXJyLmxlbmd0aDsgKyttaSkge1xuXHRcdFx0aWYobWFyclttaV0ucy5jICE9IGFkZHIuYyB8fCBtYXJyW21pXS5zLnIgIT0gYWRkci5yKSBjb250aW51ZTtcblx0XHRcdGlmKG1hcnJbbWldLmUuYyA+IG1hcnJbbWldLnMuYykgYXR0clsnc3M6TWVyZ2VBY3Jvc3MnXSA9IG1hcnJbbWldLmUuYyAtIG1hcnJbbWldLnMuYztcblx0XHRcdGlmKG1hcnJbbWldLmUuciA+IG1hcnJbbWldLnMucikgYXR0clsnc3M6TWVyZ2VEb3duJ10gPSBtYXJyW21pXS5lLnIgLSBtYXJyW21pXS5zLnI7XG5cdFx0fVxuXHR9XG5cblx0dmFyIHQgPSBcIlwiLCBwID0gXCJcIjtcblx0c3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ3onOiBpZighb3B0cy5zaGVldFN0dWJzKSByZXR1cm4gXCJcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnbic6IHQgPSAnTnVtYmVyJzsgcCA9IFN0cmluZyhjZWxsLnYpOyBicmVhaztcblx0XHRjYXNlICdiJzogdCA9ICdCb29sZWFuJzsgcCA9IChjZWxsLnYgPyBcIjFcIiA6IFwiMFwiKTsgYnJlYWs7XG5cdFx0Y2FzZSAnZSc6IHQgPSAnRXJyb3InOyBwID0gQkVycltjZWxsLnZdOyBicmVhaztcblx0XHRjYXNlICdkJzogdCA9ICdEYXRlVGltZSc7IHAgPSBuZXcgRGF0ZShjZWxsLnYpLnRvSVNPU3RyaW5nKCk7IGlmKGNlbGwueiA9PSBudWxsKSBjZWxsLnogPSBjZWxsLnogfHwgdGFibGVfZm10WzE0XTsgYnJlYWs7XG5cdFx0Y2FzZSAncyc6IHQgPSAnU3RyaW5nJzsgcCA9IGVzY2FwZXhsbWwoY2VsbC52fHxcIlwiKTsgYnJlYWs7XG5cdH1cblx0LyogVE9ETzogY2VsbCBzdHlsZSAqL1xuXHR2YXIgb3MgPSBnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIGNlbGwsIG9wdHMpO1xuXHRhdHRyW1wic3M6U3R5bGVJRFwiXSA9IFwic1wiICsgKDIxK29zKTtcblx0YXR0cltcInNzOkluZGV4XCJdID0gYWRkci5jICsgMTtcblx0dmFyIF92ID0gKGNlbGwudiAhPSBudWxsID8gcCA6IFwiXCIpO1xuXHR2YXIgbSA9IGNlbGwudCA9PSAneicgPyBcIlwiIDogKCc8RGF0YSBzczpUeXBlPVwiJyArIHQgKyAnXCI+JyArIF92ICsgJzwvRGF0YT4nKTtcblxuXHRpZigoY2VsbC5jfHxbXSkubGVuZ3RoID4gMCkgbSArPSB3cml0ZV93c194bG1sX2NvbW1lbnQoY2VsbC5jKTtcblxuXHRyZXR1cm4gd3JpdGV4dGFnKFwiQ2VsbFwiLCBtLCBhdHRyKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfcm93KFIvKjpudW1iZXIqLywgcm93KS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSAnPFJvdyBzczpJbmRleD1cIicgKyAoUisxKSArICdcIic7XG5cdGlmKHJvdykge1xuXHRcdGlmKHJvdy5ocHQgJiYgIXJvdy5ocHgpIHJvdy5ocHggPSBwdDJweChyb3cuaHB0KTtcblx0XHRpZihyb3cuaHB4KSBvICs9ICcgc3M6QXV0b0ZpdEhlaWdodD1cIjBcIiBzczpIZWlnaHQ9XCInICsgcm93LmhweCArICdcIic7XG5cdFx0aWYocm93LmhpZGRlbikgbyArPSAnIHNzOkhpZGRlbj1cIjFcIic7XG5cdH1cblx0cmV0dXJuIG8gKyAnPic7XG59XG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV93c194bG1sX3RhYmxlKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMsIGlkeC8qOm51bWJlciovLCB3Yi8qOldvcmtib29rKi8pLyo6c3RyaW5nKi8ge1xuXHRpZighd3NbJyFyZWYnXSkgcmV0dXJuIFwiXCI7XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0dmFyIG1hcnIvKjpBcnJheTxSYW5nZT4qLyA9IHdzWychbWVyZ2VzJ10gfHwgW10sIG1pID0gMDtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0aWYod3NbJyFjb2xzJ10pIHdzWychY29scyddLmZvckVhY2goZnVuY3Rpb24obiwgaSkge1xuXHRcdHByb2Nlc3NfY29sKG4pO1xuXHRcdHZhciB3ID0gISFuLndpZHRoO1xuXHRcdHZhciBwID0gY29sX29ial93KGksIG4pO1xuXHRcdHZhciBrLyo6YW55Ki8gPSB7XCJzczpJbmRleFwiOmkrMX07XG5cdFx0aWYodykga1snc3M6V2lkdGgnXSA9IHdpZHRoMnB4KHAud2lkdGgpO1xuXHRcdGlmKG4uaGlkZGVuKSBrWydzczpIaWRkZW4nXT1cIjFcIjtcblx0XHRvLnB1c2god3JpdGV4dGFnKFwiQ29sdW1uXCIsbnVsbCxrKSk7XG5cdH0pO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0dmFyIHJvdyA9IFt3cml0ZV93c194bG1sX3JvdyhSLCAod3NbJyFyb3dzJ118fFtdKVtSXSldO1xuXHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0dmFyIHNraXAgPSBmYWxzZTtcblx0XHRcdGZvcihtaSA9IDA7IG1pICE9IG1hcnIubGVuZ3RoOyArK21pKSB7XG5cdFx0XHRcdGlmKG1hcnJbbWldLnMuYyA+IEMpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihtYXJyW21pXS5zLnIgPiBSKSBjb250aW51ZTtcblx0XHRcdFx0aWYobWFyclttaV0uZS5jIDwgQykgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLmUuciA8IFIpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihtYXJyW21pXS5zLmMgIT0gQyB8fCBtYXJyW21pXS5zLnIgIT0gUikgc2tpcCA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYoc2tpcCkgY29udGludWU7XG5cdFx0XHR2YXIgYWRkciA9IHtyOlIsYzpDfTtcblx0XHRcdHZhciByZWYgPSBlbmNvZGVfY2VsbChhZGRyKSwgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0cm93LnB1c2god3JpdGVfd3NfeGxtbF9jZWxsKGNlbGwsIHJlZiwgd3MsIG9wdHMsIGlkeCwgd2IsIGFkZHIpKTtcblx0XHR9XG5cdFx0cm93LnB1c2goXCI8L1Jvdz5cIik7XG5cdFx0aWYocm93Lmxlbmd0aCA+IDIpIG8ucHVzaChyb3cuam9pbihcIlwiKSk7XG5cdH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWwoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBzID0gd2IuU2hlZXROYW1lc1tpZHhdO1xuXHR2YXIgd3MgPSB3Yi5TaGVldHNbc107XG5cblx0dmFyIHQvKjpzdHJpbmcqLyA9IHdzID8gd3JpdGVfd3NfeGxtbF9uYW1lcyh3cywgb3B0cywgaWR4LCB3YikgOiBcIlwiO1xuXHRpZih0Lmxlbmd0aCA+IDApIG8ucHVzaChcIjxOYW1lcz5cIiArIHQgKyBcIjwvTmFtZXM+XCIpO1xuXG5cdC8qIFRhYmxlICovXG5cdHQgPSB3cyA/IHdyaXRlX3dzX3hsbWxfdGFibGUod3MsIG9wdHMsIGlkeCwgd2IpIDogXCJcIjtcblx0aWYodC5sZW5ndGggPiAwKSBvLnB1c2goXCI8VGFibGU+XCIgKyB0ICsgXCI8L1RhYmxlPlwiKTtcblxuXHQvKiBXb3Jrc2hlZXRPcHRpb25zICovXG5cdG8ucHVzaCh3cml0ZV93c194bG1sX3dzb3B0cyh3cywgb3B0cywgaWR4LCB3YikpO1xuXG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV94bG1sKHdiLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYoIW9wdHMpIG9wdHMgPSB7fTtcblx0aWYoIXdiLlNTRikgd2IuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdGlmKHdiLlNTRikge1xuXHRcdG1ha2Vfc3NmKCk7IFNTRl9sb2FkX3RhYmxlKHdiLlNTRik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRvcHRzLnJldnNzZiA9IGV2ZXJ0X251bSh3Yi5TU0YpOyBvcHRzLnJldnNzZlt3Yi5TU0ZbNjU1MzVdXSA9IDA7XG5cdFx0b3B0cy5zc2YgPSB3Yi5TU0Y7XG5cdFx0b3B0cy5jZWxsWGZzID0gW107XG5cdFx0Z2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCB7fSwge3JldnNzZjp7XCJHZW5lcmFsXCI6MH19KTtcblx0fVxuXHR2YXIgZC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRkLnB1c2god3JpdGVfcHJvcHNfeGxtbCh3Yiwgb3B0cykpO1xuXHRkLnB1c2god3JpdGVfd2JfeGxtbCh3Yiwgb3B0cykpO1xuXHRkLnB1c2goXCJcIik7XG5cdGQucHVzaChcIlwiKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpXG5cdFx0ZC5wdXNoKHdyaXRleHRhZyhcIldvcmtzaGVldFwiLCB3cml0ZV93c194bG1sKGksIG9wdHMsIHdiKSwge1wic3M6TmFtZVwiOmVzY2FwZXhtbCh3Yi5TaGVldE5hbWVzW2ldKX0pKTtcblx0ZFsyXSA9IHdyaXRlX3N0eV94bG1sKHdiLCBvcHRzKTtcblx0ZFszXSA9IHdyaXRlX25hbWVzX3hsbWwod2IsIG9wdHMpO1xuXHRyZXR1cm4gWE1MX0hFQURFUiArIHdyaXRleHRhZyhcIldvcmtib29rXCIsIGQuam9pbihcIlwiKSwge1xuXHRcdCd4bWxucyc6ICAgICAgWExNTE5TLnNzLFxuXHRcdCd4bWxuczpvJzogICAgWExNTE5TLm8sXG5cdFx0J3htbG5zOngnOiAgICBYTE1MTlMueCxcblx0XHQneG1sbnM6c3MnOiAgIFhMTUxOUy5zcyxcblx0XHQneG1sbnM6ZHQnOiAgIFhMTUxOUy5kdCxcblx0XHQneG1sbnM6aHRtbCc6IFhMTUxOUy5odG1sXG5cdH0pO1xufVxuLyogW01TLU9MRURTXSAyLjMuOCBDb21wT2JqU3RyZWFtICovXG5mdW5jdGlvbiBwYXJzZV9jb21wb2JqKG9iai8qOkNGQkVudHJ5Ki8pIHtcblx0dmFyIHYgPSB7fTtcblx0dmFyIG8gPSBvYmouY29udGVudDtcblx0Lyo6OiBpZihvID09IG51bGwpIHJldHVybjsgKi9cblxuXHQvKiBbTVMtT0xFRFNdIDIuMy43IENvbXBPYmpIZWFkZXIgLS0gQWxsIGZpZWxkcyBNVVNUIGJlIGlnbm9yZWQgKi9cblx0by5sID0gMjg7XG5cblx0di5BbnNpVXNlclR5cGUgPSBvLnJlYWRfc2hpZnQoMCwgXCJscHN0ci1hbnNpXCIpO1xuXHR2LkFuc2lDbGlwYm9hcmRGb3JtYXQgPSBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPckFuc2lTdHJpbmcobyk7XG5cblx0aWYoby5sZW5ndGggLSBvLmwgPD0gNCkgcmV0dXJuIHY7XG5cblx0dmFyIG0vKjpudW1iZXIqLyA9IG8ucmVhZF9zaGlmdCg0KTtcblx0aWYobSA9PSAwIHx8IG0gPiA0MCkgcmV0dXJuIHY7XG5cdG8ubC09NDsgdi5SZXNlcnZlZDEgPSBvLnJlYWRfc2hpZnQoMCwgXCJscHN0ci1hbnNpXCIpO1xuXG5cdGlmKG8ubGVuZ3RoIC0gby5sIDw9IDQpIHJldHVybiB2O1xuXHRtID0gby5yZWFkX3NoaWZ0KDQpO1xuXHRpZihtICE9PSAweDcxYjIzOWY0KSByZXR1cm4gdjtcblx0di5Vbmljb2RlQ2xpcGJvYXJkRm9ybWF0ID0gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JVbmljb2RlU3RyaW5nKG8pO1xuXG5cdG0gPSBvLnJlYWRfc2hpZnQoNCk7XG5cdGlmKG0gPT0gMCB8fCBtID4gNDApIHJldHVybiB2O1xuXHRvLmwtPTQ7IHYuUmVzZXJ2ZWQyID0gby5yZWFkX3NoaWZ0KDAsIFwibHB3c3RyXCIpO1xufVxuXG4vKlxuXHRDb250aW51ZSBsb2dpYyBmb3I6XG5cdC0gMi40LjU4IENvbnRpbnVlICAgICAgICAgIDB4MDAzY1xuXHQtIDIuNC41OSBDb250aW51ZUJpZ05hbWUgICAweDA0M2Ncblx0LSAyLjQuNjAgQ29udGludWVGcnQgICAgICAgMHgwODEyXG5cdC0gMi40LjYxIENvbnRpbnVlRnJ0MTEgICAgIDB4MDg3NVxuXHQtIDIuNC42MiBDb250aW51ZUZydDEyICAgICAweDA4N2ZcbiovXG52YXIgQ09OVElOVUVfUlQgPSBbIDB4MDAzYywgMHgwNDNjLCAweDA4MTIsIDB4MDg3NSwgMHgwODdmIF07XG5mdW5jdGlvbiBzbHVycChSZWNvcmRUeXBlLCBSLCBibG9iLCBsZW5ndGgvKjpudW1iZXIqLywgb3B0cykvKjphbnkqLyB7XG5cdHZhciBsID0gbGVuZ3RoO1xuXHR2YXIgYnVmcyA9IFtdO1xuXHR2YXIgZCA9IGJsb2Iuc2xpY2UoYmxvYi5sLGJsb2IubCtsKTtcblx0aWYob3B0cyAmJiBvcHRzLmVuYyAmJiBvcHRzLmVuYy5pbnNpdHUgJiYgZC5sZW5ndGggPiAwKSBzd2l0Y2goUmVjb3JkVHlwZSkge1xuXHRjYXNlIDB4MDAwOTogY2FzZSAweDAyMDk6IGNhc2UgMHgwNDA5OiBjYXNlIDB4MDgwOS8qIEJPRiAqLzogY2FzZSAweDAwMmYgLyogRmlsZVBhc3MgKi86IGNhc2UgMHgwMTk1IC8qIEZpbGVMb2NrICovOiBjYXNlIDB4MDBlMSAvKiBJbnRlcmZhY2VIZHIgKi86IGNhc2UgMHgwMTk2IC8qIFJSREluZm8gKi86IGNhc2UgMHgwMTM4IC8qIFJSREhlYWQgKi86IGNhc2UgMHgwMTk0IC8qIFVzckV4Y2wgKi86IGNhc2UgMHgwMDBhIC8qIEVPRiAqLzpcblx0XHRicmVhaztcblx0Y2FzZSAweDAwODUgLyogQm91bmRTaGVldDggKi86XG5cdFx0YnJlYWs7XG5cdGRlZmF1bHQ6XG5cdFx0b3B0cy5lbmMuaW5zaXR1KGQpO1xuXHR9XG5cdGJ1ZnMucHVzaChkKTtcblx0YmxvYi5sICs9IGw7XG5cdHZhciBuZXh0cnQgPSBfX3JlYWRVSW50MTZMRShibG9iLGJsb2IubCksIG5leHQgPSBYTFNSZWNvcmRFbnVtW25leHRydF07XG5cdHZhciBzdGFydCA9IDA7XG5cdHdoaWxlKG5leHQgIT0gbnVsbCAmJiBDT05USU5VRV9SVC5pbmRleE9mKG5leHRydCkgPiAtMSkge1xuXHRcdGwgPSBfX3JlYWRVSW50MTZMRShibG9iLGJsb2IubCsyKTtcblx0XHRzdGFydCA9IGJsb2IubCArIDQ7XG5cdFx0aWYobmV4dHJ0ID09IDB4MDgxMiAvKiBDb250aW51ZUZydCAqLykgc3RhcnQgKz0gNDtcblx0XHRlbHNlIGlmKG5leHRydCA9PSAweDA4NzUgfHwgbmV4dHJ0ID09IDB4MDg3Zikge1xuXHRcdFx0c3RhcnQgKz0gMTI7XG5cdFx0fVxuXHRcdGQgPSBibG9iLnNsaWNlKHN0YXJ0LGJsb2IubCs0K2wpO1xuXHRcdGJ1ZnMucHVzaChkKTtcblx0XHRibG9iLmwgKz0gNCtsO1xuXHRcdG5leHQgPSAoWExTUmVjb3JkRW51bVtuZXh0cnQgPSBfX3JlYWRVSW50MTZMRShibG9iLCBibG9iLmwpXSk7XG5cdH1cblx0dmFyIGIgPSAoYmNvbmNhdChidWZzKS8qOmFueSovKTtcblx0cHJlcF9ibG9iKGIsIDApO1xuXHR2YXIgbGwgPSAwOyBiLmxlbnMgPSBbXTtcblx0Zm9yKHZhciBqID0gMDsgaiA8IGJ1ZnMubGVuZ3RoOyArK2opIHsgYi5sZW5zLnB1c2gobGwpOyBsbCArPSBidWZzW2pdLmxlbmd0aDsgfVxuXHRpZihiLmxlbmd0aCA8IGxlbmd0aCkgdGhyb3cgXCJYTFMgUmVjb3JkIDB4XCIgKyBSZWNvcmRUeXBlLnRvU3RyaW5nKDE2KSArIFwiIFRydW5jYXRlZDogXCIgKyBiLmxlbmd0aCArIFwiIDwgXCIgKyBsZW5ndGg7XG5cdHJldHVybiBSLmYoYiwgYi5sZW5ndGgsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdF94ZihwLyo6YW55Ki8sIG9wdHMvKjpQYXJzZU9wdHMqLywgZGF0ZTE5MDQvKjo/Ym9vbGVhbiovKSB7XG5cdGlmKHAudCA9PT0gJ3onKSByZXR1cm47XG5cdGlmKCFwLlhGKSByZXR1cm47XG5cdHZhciBmbXRpZCA9IDA7XG5cdHRyeSB7XG5cdFx0Zm10aWQgPSBwLnogfHwgcC5YRi5udW1GbXRJZCB8fCAwO1xuXHRcdGlmKG9wdHMuY2VsbE5GKSBwLnogPSB0YWJsZV9mbXRbZm10aWRdO1xuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cblx0aWYoIW9wdHMgfHwgb3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpIHRyeSB7XG5cdFx0aWYocC50ID09PSAnZScpIHsgcC53ID0gcC53IHx8IEJFcnJbcC52XTsgfVxuXHRcdGVsc2UgaWYoZm10aWQgPT09IDAgfHwgZm10aWQgPT0gXCJHZW5lcmFsXCIpIHtcblx0XHRcdGlmKHAudCA9PT0gJ24nKSB7XG5cdFx0XHRcdGlmKChwLnZ8MCkgPT09IHAudikgcC53ID0gcC52LnRvU3RyaW5nKDEwKTtcblx0XHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbF9udW0ocC52KTtcblx0XHRcdH1cblx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWwocC52KTtcblx0XHR9XG5cdFx0ZWxzZSBwLncgPSBTU0ZfZm9ybWF0KGZtdGlkLHAudiwge2RhdGUxOTA0OiEhZGF0ZTE5MDQsIGRhdGVORjogb3B0cyAmJiBvcHRzLmRhdGVORn0pO1xuXHR9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cblx0aWYob3B0cy5jZWxsRGF0ZXMgJiYgZm10aWQgJiYgcC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh0YWJsZV9mbXRbZm10aWRdIHx8IFN0cmluZyhmbXRpZCkpKSB7XG5cdFx0dmFyIF9kID0gU1NGX3BhcnNlX2RhdGVfY29kZShwLnYpOyBpZihfZCkgeyBwLnQgPSAnZCc7IHAudiA9IG5ldyBEYXRlKF9kLnksIF9kLm0tMSxfZC5kLF9kLkgsX2QuTSxfZC5TLF9kLnUpOyB9XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFrZV9jZWxsKHZhbCwgaXhmZSwgdCkvKjpDZWxsKi8ge1xuXHRyZXR1cm4gKHt2OnZhbCwgaXhmZTppeGZlLCB0OnR9Lyo6YW55Ki8pO1xufVxuXG4vLyAyLjMuMlxuZnVuY3Rpb24gcGFyc2Vfd29ya2Jvb2soYmxvYiwgb3B0aW9ucy8qOlBhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgd2IgPSAoe29wdHM6e319Lyo6YW55Ki8pO1xuXHR2YXIgU2hlZXRzID0ge307XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0aW9ucy5kZW5zZSA9PSBudWxsKSBvcHRpb25zLmRlbnNlID0gREVOU0U7XG5cdHZhciBvdXQvKjpXb3Jrc2hlZXQqLyA9ICgob3B0aW9ucy5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pO1xuXHR2YXIgRGlyZWN0b3J5ID0ge307XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe30vKjphbnkqLyk7XG5cdHZhciBsYXN0X2Zvcm11bGEgPSBudWxsO1xuXHR2YXIgc3N0Lyo6U1NUKi8gPSAoW10vKjphbnkqLyk7XG5cdHZhciBjdXJfc2hlZXQgPSBcIlwiO1xuXHR2YXIgUHJlYW1ibGUgPSB7fTtcblx0dmFyIGxhc3RjZWxsLCBsYXN0X2NlbGwgPSBcIlwiLCBjYy8qOkNlbGwqLywgY21udCwgcm5nQywgcm5nUjtcblx0dmFyIHNoYXJlZGYgPSB7fTtcblx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHR2YXIgdGVtcF92YWwvKjpDZWxsKi87XG5cdHZhciBjb3VudHJ5O1xuXHR2YXIgWEZzID0gW107IC8qIFhGIHJlY29yZHMgKi9cblx0dmFyIHBhbGV0dGUvKjpBcnJheTxbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+Ki8gPSBbXTtcblx0dmFyIFdvcmtib29rLyo6V0JXQlByb3BzKi8gPSAoeyBTaGVldHM6W10sIFdCUHJvcHM6e2RhdGUxOTA0OmZhbHNlfSwgVmlld3M6W3t9XSB9Lyo6YW55Ki8pLCB3c3Byb3BzID0ge307XG5cdHZhciBnZXRfcmdiID0gZnVuY3Rpb24gZ2V0cmdiKGljdi8qOm51bWJlciovKS8qOltudW1iZXIsIG51bWJlciwgbnVtYmVyXSovIHtcblx0XHRpZihpY3YgPCA4KSByZXR1cm4gWExTSWN2W2ljdl07XG5cdFx0aWYoaWN2IDwgNjQpIHJldHVybiBwYWxldHRlW2ljdi04XSB8fCBYTFNJY3ZbaWN2XTtcblx0XHRyZXR1cm4gWExTSWN2W2ljdl07XG5cdH07XG5cdHZhciBwcm9jZXNzX2NlbGxfc3R5bGUgPSBmdW5jdGlvbiBwY3MoY2VsbCwgbGluZS8qOmFueSovLCBvcHRpb25zKSB7XG5cdFx0dmFyIHhmZCA9IGxpbmUuWEYuZGF0YTtcblx0XHRpZigheGZkIHx8ICF4ZmQucGF0dGVyblR5cGUgfHwgIW9wdGlvbnMgfHwgIW9wdGlvbnMuY2VsbFN0eWxlcykgcmV0dXJuO1xuXHRcdGxpbmUucyA9ICh7fS8qOmFueSovKTtcblx0XHRsaW5lLnMucGF0dGVyblR5cGUgPSB4ZmQucGF0dGVyblR5cGU7XG5cdFx0dmFyIHQ7XG5cdFx0aWYoKHQgPSByZ2IySGV4KGdldF9yZ2IoeGZkLmljdkZvcmUpKSkpIHsgbGluZS5zLmZnQ29sb3IgPSB7cmdiOnR9OyB9XG5cdFx0aWYoKHQgPSByZ2IySGV4KGdldF9yZ2IoeGZkLmljdkJhY2spKSkpIHsgbGluZS5zLmJnQ29sb3IgPSB7cmdiOnR9OyB9XG5cdH07XG5cdHZhciBhZGRjZWxsID0gZnVuY3Rpb24gYWRkY2VsbChjZWxsLyo6YW55Ki8sIGxpbmUvKjphbnkqLywgb3B0aW9ucy8qOmFueSovKSB7XG5cdFx0aWYoZmlsZV9kZXB0aCA+IDEpIHJldHVybjtcblx0XHRpZihvcHRpb25zLnNoZWV0Um93cyAmJiBjZWxsLnIgPj0gb3B0aW9ucy5zaGVldFJvd3MpIHJldHVybjtcblx0XHRpZihvcHRpb25zLmNlbGxTdHlsZXMgJiYgbGluZS5YRiAmJiBsaW5lLlhGLmRhdGEpIHByb2Nlc3NfY2VsbF9zdHlsZShjZWxsLCBsaW5lLCBvcHRpb25zKTtcblx0XHRkZWxldGUgbGluZS5peGZlOyBkZWxldGUgbGluZS5YRjtcblx0XHRsYXN0Y2VsbCA9IGNlbGw7XG5cdFx0bGFzdF9jZWxsID0gZW5jb2RlX2NlbGwoY2VsbCk7XG5cdFx0aWYoIXJhbmdlIHx8ICFyYW5nZS5zIHx8ICFyYW5nZS5lKSByYW5nZSA9IHtzOntyOjAsYzowfSxlOntyOjAsYzowfX07XG5cdFx0aWYoY2VsbC5yIDwgcmFuZ2Uucy5yKSByYW5nZS5zLnIgPSBjZWxsLnI7XG5cdFx0aWYoY2VsbC5jIDwgcmFuZ2Uucy5jKSByYW5nZS5zLmMgPSBjZWxsLmM7XG5cdFx0aWYoY2VsbC5yICsgMSA+IHJhbmdlLmUucikgcmFuZ2UuZS5yID0gY2VsbC5yICsgMTtcblx0XHRpZihjZWxsLmMgKyAxID4gcmFuZ2UuZS5jKSByYW5nZS5lLmMgPSBjZWxsLmMgKyAxO1xuXHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEgJiYgbGluZS5mKSB7XG5cdFx0XHRmb3IodmFyIGFmaSA9IDA7IGFmaSA8IGFycmF5Zi5sZW5ndGg7ICsrYWZpKSB7XG5cdFx0XHRcdGlmKGFycmF5ZlthZmldWzBdLnMuYyA+IGNlbGwuYyB8fCBhcnJheWZbYWZpXVswXS5zLnIgPiBjZWxsLnIpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihhcnJheWZbYWZpXVswXS5lLmMgPCBjZWxsLmMgfHwgYXJyYXlmW2FmaV1bMF0uZS5yIDwgY2VsbC5yKSBjb250aW51ZTtcblx0XHRcdFx0bGluZS5GID0gZW5jb2RlX3JhbmdlKGFycmF5ZlthZmldWzBdKTtcblx0XHRcdFx0aWYoYXJyYXlmW2FmaV1bMF0ucy5jICE9IGNlbGwuYyB8fCBhcnJheWZbYWZpXVswXS5zLnIgIT0gY2VsbC5yKSBkZWxldGUgbGluZS5mO1xuXHRcdFx0XHRpZihsaW5lLmYpIGxpbmUuZiA9IFwiXCIgKyBzdHJpbmdpZnlfZm9ybXVsYShhcnJheWZbYWZpXVsxXSwgcmFuZ2UsIGNlbGwsIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHtcblx0XHRcdGlmKG9wdGlvbnMuZGVuc2UpIHtcblx0XHRcdFx0aWYoIW91dFtjZWxsLnJdKSBvdXRbY2VsbC5yXSA9IFtdO1xuXHRcdFx0XHRvdXRbY2VsbC5yXVtjZWxsLmNdID0gbGluZTtcblx0XHRcdH0gZWxzZSBvdXRbbGFzdF9jZWxsXSA9IGxpbmU7XG5cdFx0fVxuXHR9O1xuXHR2YXIgb3B0cyA9ICh7XG5cdFx0ZW5jOiBmYWxzZSwgLy8gZW5jcnlwdGVkXG5cdFx0c2JjY2g6IDAsIC8vIGNjaCBpbiB0aGUgcHJlY2VkaW5nIFN1cEJvb2tcblx0XHRzbmFtZXM6IFtdLCAvLyBzaGVldG5hbWVzXG5cdFx0c2hhcmVkZjogc2hhcmVkZiwgLy8gc2hhcmVkIGZvcm11bGFlIGJ5IGFkZHJlc3Ncblx0XHRhcnJheWY6IGFycmF5ZiwgLy8gYXJyYXkgZm9ybXVsYWUgYXJyYXlcblx0XHRycnRhYmlkOiBbXSwgLy8gUlJUYWJJZFxuXHRcdGxhc3R1c2VyOiBcIlwiLCAvLyBMYXN0IFVzZXIgZnJvbSBXcml0ZUFjY2Vzc1xuXHRcdGJpZmY6IDgsIC8vIEJJRkYgdmVyc2lvblxuXHRcdGNvZGVwYWdlOiAwLCAvLyBDUCBmcm9tIENvZGVQYWdlIHJlY29yZFxuXHRcdHdpbmxvY2tlZDogMCwgLy8gZkxvY2tXbiBmcm9tIFdpblByb3RlY3Rcblx0XHRjZWxsU3R5bGVzOiAhIW9wdGlvbnMgJiYgISFvcHRpb25zLmNlbGxTdHlsZXMsXG5cdFx0V1RGOiAhIW9wdGlvbnMgJiYgISFvcHRpb25zLnd0ZlxuXHR9Lyo6YW55Ki8pO1xuXHRpZihvcHRpb25zLnBhc3N3b3JkKSBvcHRzLnBhc3N3b3JkID0gb3B0aW9ucy5wYXNzd29yZDtcblx0dmFyIHRoZW1lcztcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBvYmplY3RzID0gW107XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IFtdLCByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IFtdO1xuXHR2YXIgc2VlbmNvbCA9IGZhbHNlO1xuXHR2YXIgc3VwYm9va3MgPSAoW10vKjphbnkqLyk7IC8vIDEtaW5kZXhlZCwgd2lsbCBob2xkIGV4dGVybiBuYW1lc1xuXHRzdXBib29rcy5TaGVldE5hbWVzID0gb3B0cy5zbmFtZXM7XG5cdHN1cGJvb2tzLnNoYXJlZGYgPSBvcHRzLnNoYXJlZGY7XG5cdHN1cGJvb2tzLmFycmF5ZiA9IG9wdHMuYXJyYXlmO1xuXHRzdXBib29rcy5uYW1lcyA9IFtdO1xuXHRzdXBib29rcy5YVEkgPSBbXTtcblx0dmFyIGxhc3RfUlQgPSAwO1xuXHR2YXIgZmlsZV9kZXB0aCA9IDA7IC8qIFRPRE86IG1ha2UgYSByZWFsIHN0YWNrICovXG5cdHZhciBCSUZGMkZtdCA9IDAsIEJJRkYyRm10VGFibGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIEZpbHRlckRhdGFiYXNlcyA9IFtdOyAvKiBUT0RPOiBzb3J0IG91dCBzdXBib29rcyBhbmQgcHJvY2VzcyBlbHNld2hlcmUgKi9cblx0dmFyIGxhc3RfbGJsLyo6P0RlZmluZWROYW1lKi87XG5cblx0LyogZXhwbGljaXQgb3ZlcnJpZGUgZm9yIHNvbWUgYnJva2VuIHdyaXRlcnMgKi9cblx0b3B0cy5jb2RlcGFnZSA9IDEyMDA7XG5cdHNldF9jcCgxMjAwKTtcblx0dmFyIHNlZW5fY29kZXBhZ2UgPSBmYWxzZTtcblx0d2hpbGUoYmxvYi5sIDwgYmxvYi5sZW5ndGggLSAxKSB7XG5cdFx0dmFyIHMgPSBibG9iLmw7XG5cdFx0dmFyIFJlY29yZFR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYoUmVjb3JkVHlwZSA9PT0gMCAmJiBsYXN0X1JUID09PSAweDAwMGEgLyogRU9GICovKSBicmVhaztcblx0XHR2YXIgbGVuZ3RoID0gKGJsb2IubCA9PT0gYmxvYi5sZW5ndGggPyAwIDogYmxvYi5yZWFkX3NoaWZ0KDIpKTtcblx0XHR2YXIgUiA9IFhMU1JlY29yZEVudW1bUmVjb3JkVHlwZV07XG5cdFx0Ly9jb25zb2xlLmxvZyhSZWNvcmRUeXBlLnRvU3RyaW5nKDE2KSwgUmVjb3JkVHlwZSwgUiwgYmxvYi5sLCBsZW5ndGgsIGJsb2IubGVuZ3RoKTtcblx0XHQvL2lmKCFSKSBjb25zb2xlLmxvZyhibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgbGVuZ3RoKSk7XG5cdFx0aWYoUiAmJiBSLmYpIHtcblx0XHRcdGlmKG9wdGlvbnMuYm9va1NoZWV0cykge1xuXHRcdFx0XHRpZihsYXN0X1JUID09PSAweDAwODUgLyogQm91bmRTaGVldDggKi8gJiYgUmVjb3JkVHlwZSAhPT0gMHgwMDg1IC8qIFIubiAhPT0gJ0JvdW5kU2hlZXQ4JyAqLykgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRsYXN0X1JUID0gUmVjb3JkVHlwZTtcblx0XHRcdGlmKFIuciA9PT0gMiB8fCBSLnIgPT0gMTIpIHtcblx0XHRcdFx0dmFyIHJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBsZW5ndGggLT0gMjtcblx0XHRcdFx0aWYoIW9wdHMuZW5jICYmIHJ0ICE9PSBSZWNvcmRUeXBlICYmICgoKHJ0JjB4RkYpPDw4KXwocnQ+PjgpKSAhPT0gUmVjb3JkVHlwZSkgdGhyb3cgbmV3IEVycm9yKFwicnQgbWlzbWF0Y2g6IFwiICsgcnQgKyBcIiE9XCIgKyBSZWNvcmRUeXBlKTtcblx0XHRcdFx0aWYoUi5yID09IDEyKXtcblx0XHRcdFx0XHRibG9iLmwgKz0gMTA7IGxlbmd0aCAtPSAxMDtcblx0XHRcdFx0fSAvLyBza2lwIEZSVFxuXHRcdFx0fVxuXHRcdFx0Ly9jb25zb2xlLmVycm9yKFIsYmxvYi5sLGxlbmd0aCxibG9iLmxlbmd0aCk7XG5cdFx0XHR2YXIgdmFsLyo6YW55Ki8gPSAoe30vKjphbnkqLyk7XG5cdFx0XHRpZihSZWNvcmRUeXBlID09PSAweDAwMGEgLyogRU9GICovKSB2YWwgPSAvKjo6KCovUi5mKGJsb2IsIGxlbmd0aCwgb3B0cykvKjo6IDphbnkpKi87XG5cdFx0XHRlbHNlIHZhbCA9IC8qOjooKi9zbHVycChSZWNvcmRUeXBlLCBSLCBibG9iLCBsZW5ndGgsIG9wdHMpLyo6OiA6YW55KSovO1xuXHRcdFx0Lyo6OiB2YWwgPSAodmFsOmFueSk7ICovXG5cdFx0XHRpZihmaWxlX2RlcHRoID09IDAgJiYgWzB4MDAwOSwgMHgwMjA5LCAweDA0MDksIDB4MDgwOV0uaW5kZXhPZihsYXN0X1JUKSA9PT0gLTEgLyogJ0JPRicgKi8pIGNvbnRpbnVlO1xuXHRcdFx0c3dpdGNoKFJlY29yZFR5cGUpIHtcblx0XHRcdFx0Y2FzZSAweDAwMjIgLyogRGF0ZTE5MDQgKi86XG5cdFx0XHRcdFx0Lyo6OiBpZighV29ya2Jvb2suV0JQcm9wcykgV29ya2Jvb2suV0JQcm9wcyA9IHt9OyAqL1xuXHRcdFx0XHRcdHdiLm9wdHMuRGF0ZTE5MDQgPSBXb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0ID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwODYgLyogV3JpdGVQcm90ZWN0ICovOiB3Yi5vcHRzLldyaXRlUHJvdGVjdCA9IHRydWU7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAyZiAvKiBGaWxlUGFzcyAqLzpcblx0XHRcdFx0XHRpZighb3B0cy5lbmMpIGJsb2IubCA9IDA7XG5cdFx0XHRcdFx0b3B0cy5lbmMgPSB2YWw7XG5cdFx0XHRcdFx0aWYoIW9wdGlvbnMucGFzc3dvcmQpIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkXCIpO1xuXHRcdFx0XHRcdGlmKHZhbC52YWxpZCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJFbmNyeXB0aW9uIHNjaGVtZSB1bnN1cHBvcnRlZFwiKTtcblx0XHRcdFx0XHRpZighdmFsLnZhbGlkKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDVjIC8qIFdyaXRlQWNjZXNzICovOiBvcHRzLmxhc3R1c2VyID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwNDIgLyogQ29kZVBhZ2UgKi86XG5cdFx0XHRcdFx0dmFyIGNwdmFsID0gTnVtYmVyKHZhbCk7XG5cdFx0XHRcdFx0Lyogb3ZlcnJpZGVzIGJhc2VkIG9uIHRlc3QgY2FzZXMgKi9cblx0XHRcdFx0XHRzd2l0Y2goY3B2YWwpIHtcblx0XHRcdFx0XHRcdGNhc2UgMHg1MjEyOiBjcHZhbCA9ICAxMjAwOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgMHg4MDAwOiBjcHZhbCA9IDEwMDAwOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgMHg4MDAxOiBjcHZhbCA9ICAxMjUyOyBicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2V0X2NwKG9wdHMuY29kZXBhZ2UgPSBjcHZhbCk7XG5cdFx0XHRcdFx0c2Vlbl9jb2RlcGFnZSA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMTNkIC8qIFJSVGFiSWQgKi86IG9wdHMucnJ0YWJpZCA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDE5IC8qIFdpblByb3RlY3QgKi86IG9wdHMud2lubG9ja2VkID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYjcgLyogUmVmcmVzaEFsbCAqLzogd2Iub3B0c1tcIlJlZnJlc2hBbGxcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwYyAvKiBDYWxjQ291bnQgKi86IHdiLm9wdHNbXCJDYWxjQ291bnRcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxMCAvKiBDYWxjRGVsdGEgKi86IHdiLm9wdHNbXCJDYWxjRGVsdGFcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxMSAvKiBDYWxjSXRlciAqLzogd2Iub3B0c1tcIkNhbGNJdGVyXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGQgLyogQ2FsY01vZGUgKi86IHdiLm9wdHNbXCJDYWxjTW9kZVwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBlIC8qIENhbGNQcmVjaXNpb24gKi86IHdiLm9wdHNbXCJDYWxjUHJlY2lzaW9uXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwNWYgLyogQ2FsY1NhdmVSZWNhbGMgKi86IHdiLm9wdHNbXCJDYWxjU2F2ZVJlY2FsY1wiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBmIC8qIENhbGNSZWZNb2RlICovOiBvcHRzLkNhbGNSZWZNb2RlID0gdmFsOyBicmVhazsgLy8gVE9ETzogaW1wbGVtZW50IFIxQzFcblx0XHRcdFx0Y2FzZSAweDA4YTMgLyogRm9yY2VGdWxsQ2FsY3VsYXRpb24gKi86IHdiLm9wdHMuRnVsbENhbGMgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4MSAvKiBXc0Jvb2wgKi86XG5cdFx0XHRcdFx0aWYodmFsLmZEaWFsb2cpIG91dFtcIiF0eXBlXCJdID0gXCJkaWFsb2dcIjtcblx0XHRcdFx0XHRpZighdmFsLmZCZWxvdykgKG91dFtcIiFvdXRsaW5lXCJdIHx8IChvdXRbXCIhb3V0bGluZVwiXSA9IHt9KSkuYWJvdmUgPSB0cnVlO1xuXHRcdFx0XHRcdGlmKCF2YWwuZlJpZ2h0KSAob3V0W1wiIW91dGxpbmVcIl0gfHwgKG91dFtcIiFvdXRsaW5lXCJdID0ge30pKS5sZWZ0ID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhazsgLy8gVE9ET1xuXHRcdFx0XHRjYXNlIDB4MDBlMCAvKiBYRiAqLzpcblx0XHRcdFx0XHRYRnMucHVzaCh2YWwpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYWUgLyogU3VwQm9vayAqLzpcblx0XHRcdFx0XHRzdXBib29rcy5wdXNoKFt2YWxdKTtcblx0XHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGgtMV0uWFRJID0gW107XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDIzOiBjYXNlIDB4MDIyMyAvKiBFeHRlcm5OYW1lICovOlxuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aC0xXS5wdXNoKHZhbCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDE4OiBjYXNlIDB4MDIxOCAvKiBMYmwgKi86XG5cdFx0XHRcdFx0bGFzdF9sYmwgPSAoe1xuXHRcdFx0XHRcdFx0TmFtZTogdmFsLk5hbWUsXG5cdFx0XHRcdFx0XHRSZWY6IHN0cmluZ2lmeV9mb3JtdWxhKHZhbC5yZ2NlLHJhbmdlLG51bGwsc3VwYm9va3Msb3B0cylcblx0XHRcdFx0XHR9Lyo6RGVmaW5lZE5hbWUqLyk7XG5cdFx0XHRcdFx0aWYodmFsLml0YWIgPiAwKSBsYXN0X2xibC5TaGVldCA9IHZhbC5pdGFiIC0gMTtcblx0XHRcdFx0XHRzdXBib29rcy5uYW1lcy5wdXNoKGxhc3RfbGJsKTtcblx0XHRcdFx0XHRpZighc3VwYm9va3NbMF0pIHsgc3VwYm9va3NbMF0gPSBbXTsgc3VwYm9va3NbMF0uWFRJID0gW107IH1cblx0XHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGgtMV0ucHVzaCh2YWwpO1xuXHRcdFx0XHRcdGlmKHZhbC5OYW1lID09IFwiX3hsbm0uX0ZpbHRlckRhdGFiYXNlXCIgJiYgdmFsLml0YWIgPiAwKVxuXHRcdFx0XHRcdFx0aWYodmFsLnJnY2UgJiYgdmFsLnJnY2VbMF0gJiYgdmFsLnJnY2VbMF1bMF0gJiYgdmFsLnJnY2VbMF1bMF1bMF0gPT0gJ1B0Z0FyZWEzZCcpXG5cdFx0XHRcdFx0XHRcdEZpbHRlckRhdGFiYXNlc1t2YWwuaXRhYiAtIDFdID0geyByZWY6IGVuY29kZV9yYW5nZSh2YWwucmdjZVswXVswXVsxXVsyXSkgfTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTYgLyogRXh0ZXJuQ291bnQgKi86IG9wdHMuRXh0ZXJuQ291bnQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxNyAvKiBFeHRlcm5TaGVldCAqLzpcblx0XHRcdFx0XHRpZihzdXBib29rcy5sZW5ndGggPT0gMCkgeyBzdXBib29rc1swXSA9IFtdOyBzdXBib29rc1swXS5YVEkgPSBbXTsgfVxuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSSA9IHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSS5jb25jYXQodmFsKTsgc3VwYm9va3MuWFRJID0gc3VwYm9va3MuWFRJLmNvbmNhdCh2YWwpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA4OTQgLyogTmFtZUNtdCAqLzpcblx0XHRcdFx0XHQvKiBUT0RPOiBzZWFyY2ggZm9yIGNvcnJlY3QgbmFtZSAqL1xuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA8IDgpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKGxhc3RfbGJsICE9IG51bGwpIGxhc3RfbGJsLkNvbW1lbnQgPSB2YWxbMV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDEyIC8qIFByb3RlY3QgKi86IG91dFtcIiFwcm90ZWN0XCJdID0gdmFsOyBicmVhazsgLyogZm9yIHNoZWV0IG9yIGJvb2sgKi9cblx0XHRcdFx0Y2FzZSAweDAwMTMgLyogUGFzc3dvcmQgKi86IGlmKHZhbCAhPT0gMCAmJiBvcHRzLldURikgY29uc29sZS5lcnJvcihcIlBhc3N3b3JkIHZlcmlmaWVyOiBcIiArIHZhbCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLzoge1xuXHRcdFx0XHRcdERpcmVjdG9yeVt2YWwucG9zXSA9IHZhbDtcblx0XHRcdFx0XHRvcHRzLnNuYW1lcy5wdXNoKHZhbC5uYW1lKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGEgLyogRU9GICovOiB7XG5cdFx0XHRcdFx0aWYoLS1maWxlX2RlcHRoKSBicmVhaztcblx0XHRcdFx0XHRpZihyYW5nZS5lKSB7XG5cdFx0XHRcdFx0XHRpZihyYW5nZS5lLnIgPiAwICYmIHJhbmdlLmUuYyA+IDApIHtcblx0XHRcdFx0XHRcdFx0cmFuZ2UuZS5yLS07IHJhbmdlLmUuYy0tO1xuXHRcdFx0XHRcdFx0XHRvdXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdFx0XHRcdFx0aWYob3B0aW9ucy5zaGVldFJvd3MgJiYgb3B0aW9ucy5zaGVldFJvd3MgPD0gcmFuZ2UuZS5yKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHRtcHJpID0gcmFuZ2UuZS5yO1xuXHRcdFx0XHRcdFx0XHRcdHJhbmdlLmUuciA9IG9wdGlvbnMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdFx0XHRcdFx0XHRvdXRbXCIhZnVsbHJlZlwiXSA9IG91dFtcIiFyZWZcIl07XG5cdFx0XHRcdFx0XHRcdFx0b3V0W1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gdG1wcmk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmFuZ2UuZS5yKys7IHJhbmdlLmUuYysrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYobWVyZ2VzLmxlbmd0aCA+IDApIG91dFtcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdFx0XHRcdFx0XHRpZihvYmplY3RzLmxlbmd0aCA+IDApIG91dFtcIiFvYmplY3RzXCJdID0gb2JqZWN0cztcblx0XHRcdFx0XHRcdGlmKGNvbGluZm8ubGVuZ3RoID4gMCkgb3V0W1wiIWNvbHNcIl0gPSBjb2xpbmZvO1xuXHRcdFx0XHRcdFx0aWYocm93aW5mby5sZW5ndGggPiAwKSBvdXRbXCIhcm93c1wiXSA9IHJvd2luZm87XG5cdFx0XHRcdFx0XHRXb3JrYm9vay5TaGVldHMucHVzaCh3c3Byb3BzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoY3VyX3NoZWV0ID09PSBcIlwiKSBQcmVhbWJsZSA9IG91dDsgZWxzZSBTaGVldHNbY3VyX3NoZWV0XSA9IG91dDtcblx0XHRcdFx0XHRvdXQgPSAoKG9wdGlvbnMuZGVuc2UgPyBbXSA6IHt9KS8qOmFueSovKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMDk6IGNhc2UgMHgwMjA5OiBjYXNlIDB4MDQwOTogY2FzZSAweDA4MDkgLyogQk9GICovOiB7XG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmID09PSA4KSBvcHRzLmJpZmYgPSB7XG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMDA5Lyo6Ol0qLzoyLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDIwOS8qOjpdKi86Myxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDA0MDkvKjo6XSovOjRcblx0XHRcdFx0XHR9W1JlY29yZFR5cGVdIHx8IHtcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAyMDAvKjo6XSovOjIsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMzAwLyo6Ol0qLzozLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDQwMC8qOjpdKi86NCxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDA1MDAvKjo6XSovOjUsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwNjAwLyo6Ol0qLzo4LFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86Mixcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAwMDcvKjo6XSovOjJcblx0XHRcdFx0XHR9W3ZhbC5CSUZGVmVyXSB8fCA4O1xuXHRcdFx0XHRcdG9wdHMuYmlmZmd1ZXNzID0gdmFsLkJJRkZWZXIgPT0gMDtcblx0XHRcdFx0XHRpZih2YWwuQklGRlZlciA9PSAwICYmIHZhbC5kdCA9PSAweDEwMDApIHsgb3B0cy5iaWZmID0gNTsgc2Vlbl9jb2RlcGFnZSA9IHRydWU7IHNldF9jcChvcHRzLmNvZGVwYWdlID0gMjg1OTEpOyB9XG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmID09IDggJiYgdmFsLkJJRkZWZXIgPT0gMCAmJiB2YWwuZHQgPT0gMTYpIG9wdHMuYmlmZiA9IDI7XG5cdFx0XHRcdFx0aWYoZmlsZV9kZXB0aCsrKSBicmVhaztcblx0XHRcdFx0XHRvdXQgPSAoKG9wdGlvbnMuZGVuc2UgPyBbXSA6IHt9KS8qOmFueSovKTtcblxuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA8IDggJiYgIXNlZW5fY29kZXBhZ2UpIHsgc2Vlbl9jb2RlcGFnZSA9IHRydWU7IHNldF9jcChvcHRzLmNvZGVwYWdlID0gb3B0aW9ucy5jb2RlcGFnZSB8fCAxMjUyKTsgfVxuXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDwgNSB8fCB2YWwuQklGRlZlciA9PSAwICYmIHZhbC5kdCA9PSAweDEwMDApIHtcblx0XHRcdFx0XHRcdGlmKGN1cl9zaGVldCA9PT0gXCJcIikgY3VyX3NoZWV0ID0gXCJTaGVldDFcIjtcblx0XHRcdFx0XHRcdHJhbmdlID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0XHRcdFx0XHRcdC8qIGZha2UgQm91bmRTaGVldDggKi9cblx0XHRcdFx0XHRcdHZhciBmYWtlYnM4ID0ge3BvczogYmxvYi5sIC0gbGVuZ3RoLCBuYW1lOmN1cl9zaGVldH07XG5cdFx0XHRcdFx0XHREaXJlY3RvcnlbZmFrZWJzOC5wb3NdID0gZmFrZWJzODtcblx0XHRcdFx0XHRcdG9wdHMuc25hbWVzLnB1c2goY3VyX3NoZWV0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBjdXJfc2hlZXQgPSAoRGlyZWN0b3J5W3NdIHx8IHtuYW1lOlwiXCJ9KS5uYW1lO1xuXHRcdFx0XHRcdGlmKHZhbC5kdCA9PSAweDIwKSBvdXRbXCIhdHlwZVwiXSA9IFwiY2hhcnRcIjtcblx0XHRcdFx0XHRpZih2YWwuZHQgPT0gMHg0MCkgb3V0W1wiIXR5cGVcIl0gPSBcIm1hY3JvXCI7XG5cdFx0XHRcdFx0bWVyZ2VzID0gW107XG5cdFx0XHRcdFx0b2JqZWN0cyA9IFtdO1xuXHRcdFx0XHRcdG9wdHMuYXJyYXlmID0gYXJyYXlmID0gW107XG5cdFx0XHRcdFx0Y29saW5mbyA9IFtdOyByb3dpbmZvID0gW107XG5cdFx0XHRcdFx0c2VlbmNvbCA9IGZhbHNlO1xuXHRcdFx0XHRcdHdzcHJvcHMgPSB7SGlkZGVuOihEaXJlY3Rvcnlbc118fHtoczowfSkuaHMsIG5hbWU6Y3VyX3NoZWV0IH07XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjAzIC8qIE51bWJlciAqLzogY2FzZSAweDAwMDMgLyogQklGRjJOVU0gKi86IGNhc2UgMHgwMDAyIC8qIEJJRkYySU5UICovOiB7XG5cdFx0XHRcdFx0aWYob3V0W1wiIXR5cGVcIl0gPT0gXCJjaGFydFwiKSBpZihvcHRpb25zLmRlbnNlID8gKG91dFt2YWwucl18fFtdKVt2YWwuY106IG91dFtlbmNvZGVfY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0pXSkgKyt2YWwuYztcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdfHx7fSwgdjp2YWwudmFsLCB0OiduJ30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMDU6IGNhc2UgMHgwMjA1IC8qIEJvb2xFcnIgKi86IHtcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdLCB2OnZhbC52YWwsIHQ6dmFsLnR9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjdlIC8qIFJLICovOiB7XG5cdFx0XHRcdFx0dGVtcF92YWwgPSAoe2l4ZmU6IHZhbC5peGZlLCBYRjogWEZzW3ZhbC5peGZlXSwgdjp2YWwucmtudW0sIHQ6J24nfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBiZCAvKiBNdWxSayAqLzoge1xuXHRcdFx0XHRcdGZvcih2YXIgaiA9IHZhbC5jOyBqIDw9IHZhbC5DOyArK2opIHtcblx0XHRcdFx0XHRcdHZhciBpeGZlID0gdmFsLnJrcmVjW2otdmFsLmNdWzBdO1xuXHRcdFx0XHRcdFx0dGVtcF92YWw9ICh7aXhmZTppeGZlLCBYRjpYRnNbaXhmZV0sIHY6dmFsLnJrcmVjW2otdmFsLmNdWzFdLCB0OiduJ30vKjphbnkqLyk7XG5cdFx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdFx0YWRkY2VsbCh7YzpqLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMDY6IGNhc2UgMHgwMjA2OiBjYXNlIDB4MDQwNiAvKiBGb3JtdWxhICovOiB7XG5cdFx0XHRcdFx0aWYodmFsLnZhbCA9PSAnU3RyaW5nJykgeyBsYXN0X2Zvcm11bGEgPSB2YWw7IGJyZWFrOyB9XG5cdFx0XHRcdFx0dGVtcF92YWwgPSBtYWtlX2NlbGwodmFsLnZhbCwgdmFsLmNlbGwuaXhmZSwgdmFsLnR0KTtcblx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRpZihvcHRpb25zLmNlbGxGb3JtdWxhKSB7XG5cdFx0XHRcdFx0XHR2YXIgX2YgPSB2YWwuZm9ybXVsYTtcblx0XHRcdFx0XHRcdGlmKF9mICYmIF9mWzBdICYmIF9mWzBdWzBdICYmIF9mWzBdWzBdWzBdID09ICdQdGdFeHAnKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBfZnIgPSBfZlswXVswXVsxXVswXSwgX2ZjID0gX2ZbMF1bMF1bMV1bMV07XG5cdFx0XHRcdFx0XHRcdHZhciBfZmUgPSBlbmNvZGVfY2VsbCh7cjpfZnIsIGM6X2ZjfSk7XG5cdFx0XHRcdFx0XHRcdGlmKHNoYXJlZGZbX2ZlXSkgdGVtcF92YWwuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEodmFsLmZvcm11bGEscmFuZ2UsdmFsLmNlbGwsc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdFx0XHRlbHNlIHRlbXBfdmFsLkYgPSAoKG9wdGlvbnMuZGVuc2UgPyAob3V0W19mcl18fFtdKVtfZmNdOiBvdXRbX2ZlXSkgfHwge30pLkY7XG5cdFx0XHRcdFx0XHR9IGVsc2UgdGVtcF92YWwuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEodmFsLmZvcm11bGEscmFuZ2UsdmFsLmNlbGwsc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHZhbC5jZWxsLCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0bGFzdF9mb3JtdWxhID0gdmFsO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwNzogY2FzZSAweDAyMDcgLyogU3RyaW5nICovOiB7XG5cdFx0XHRcdFx0aWYobGFzdF9mb3JtdWxhKSB7IC8qIHRlY2huaWNhbGx5IGFsd2F5cyB0cnVlICovXG5cdFx0XHRcdFx0XHRsYXN0X2Zvcm11bGEudmFsID0gdmFsO1xuXHRcdFx0XHRcdFx0dGVtcF92YWwgPSBtYWtlX2NlbGwodmFsLCBsYXN0X2Zvcm11bGEuY2VsbC5peGZlLCAncycpO1xuXHRcdFx0XHRcdFx0dGVtcF92YWwuWEYgPSBYRnNbdGVtcF92YWwuaXhmZV07XG5cdFx0XHRcdFx0XHRpZihvcHRpb25zLmNlbGxGb3JtdWxhKSB7XG5cdFx0XHRcdFx0XHRcdHRlbXBfdmFsLmYgPSBcIlwiK3N0cmluZ2lmeV9mb3JtdWxhKGxhc3RfZm9ybXVsYS5mb3JtdWxhLCByYW5nZSwgbGFzdF9mb3JtdWxhLmNlbGwsIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0XHRhZGRjZWxsKGxhc3RfZm9ybXVsYS5jZWxsLCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0XHRsYXN0X2Zvcm11bGEgPSBudWxsO1xuXHRcdFx0XHRcdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmcgcmVjb3JkIGV4cGVjdHMgRm9ybXVsYVwiKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMjE6IGNhc2UgMHgwMjIxIC8qIEFycmF5ICovOiB7XG5cdFx0XHRcdFx0YXJyYXlmLnB1c2godmFsKTtcblx0XHRcdFx0XHR2YXIgX2FycmF5c3RhcnQgPSBlbmNvZGVfY2VsbCh2YWxbMF0ucyk7XG5cdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFt2YWxbMF0ucy5yXXx8W10pW3ZhbFswXS5zLmNdIDogb3V0W19hcnJheXN0YXJ0XTtcblx0XHRcdFx0XHRpZihvcHRpb25zLmNlbGxGb3JtdWxhICYmIGNjKSB7XG5cdFx0XHRcdFx0XHRpZighbGFzdF9mb3JtdWxhKSBicmVhazsgLyogdGVjaG5pY2FsbHkgdW5yZWFjaGFibGUgKi9cblx0XHRcdFx0XHRcdGlmKCFfYXJyYXlzdGFydCB8fCAhY2MpIGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2MuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEodmFsWzFdLCByYW5nZSwgdmFsWzBdLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0XHRjYy5GID0gZW5jb2RlX3JhbmdlKHZhbFswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDRiYyAvKiBTaHJGbWxhICovOiB7XG5cdFx0XHRcdFx0aWYoIW9wdGlvbnMuY2VsbEZvcm11bGEpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKGxhc3RfY2VsbCkge1xuXHRcdFx0XHRcdFx0LyogVE9ETzogY2FwdHVyZSByYW5nZSAqL1xuXHRcdFx0XHRcdFx0aWYoIWxhc3RfZm9ybXVsYSkgYnJlYWs7IC8qIHRlY2huaWNhbGx5IHVucmVhY2hhYmxlICovXG5cdFx0XHRcdFx0XHRzaGFyZWRmW2VuY29kZV9jZWxsKGxhc3RfZm9ybXVsYS5jZWxsKV09IHZhbFswXTtcblx0XHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbbGFzdF9mb3JtdWxhLmNlbGwucl18fFtdKVtsYXN0X2Zvcm11bGEuY2VsbC5jXSA6IG91dFtlbmNvZGVfY2VsbChsYXN0X2Zvcm11bGEuY2VsbCldO1xuXHRcdFx0XHRcdFx0KGNjfHx7fSkuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEodmFsWzBdLCByYW5nZSwgbGFzdGNlbGwsIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGZkIC8qIExhYmVsU3N0ICovOlxuXHRcdFx0XHRcdHRlbXBfdmFsPW1ha2VfY2VsbChzc3RbdmFsLmlzc3RdLnQsIHZhbC5peGZlLCAncycpO1xuXHRcdFx0XHRcdGlmKHNzdFt2YWwuaXNzdF0uaCkgdGVtcF92YWwuaCA9IHNzdFt2YWwuaXNzdF0uaDtcblx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDIwMSAvKiBCbGFuayAqLzogaWYob3B0aW9ucy5zaGVldFN0dWJzKSB7XG5cdFx0XHRcdFx0dGVtcF92YWwgPSAoe2l4ZmU6IHZhbC5peGZlLCBYRjogWEZzW3ZhbC5peGZlXSwgdDoneid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGJlIC8qIE11bEJsYW5rICovOiBpZihvcHRpb25zLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHRmb3IodmFyIF9qID0gdmFsLmM7IF9qIDw9IHZhbC5DOyArK19qKSB7XG5cdFx0XHRcdFx0XHR2YXIgX2l4ZmUgPSB2YWwuaXhmZVtfai12YWwuY107XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbD0gKHtpeGZlOl9peGZlLCBYRjpYRnNbX2l4ZmVdLCB0Oid6J30vKjphbnkqLyk7XG5cdFx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdFx0YWRkY2VsbCh7Yzpfaiwgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGQ2IC8qIFJTdHJpbmcgKi86XG5cdFx0XHRcdGNhc2UgMHgwMjA0IC8qIExhYmVsICovOiBjYXNlIDB4MDAwNCAvKiBCSUZGMlNUUiAqLzpcblx0XHRcdFx0XHR0ZW1wX3ZhbD1tYWtlX2NlbGwodmFsLnZhbCwgdmFsLml4ZmUsICdzJyk7XG5cdFx0XHRcdFx0dGVtcF92YWwuWEYgPSBYRnNbdGVtcF92YWwuaXhmZV07XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDAwMDogY2FzZSAweDAyMDAgLyogRGltZW5zaW9ucyAqLzoge1xuXHRcdFx0XHRcdGlmKGZpbGVfZGVwdGggPT09IDEpIHJhbmdlID0gdmFsOyAvKiBUT0RPOiBzdGFjayAqL1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBmYyAvKiBTU1QgKi86IHtcblx0XHRcdFx0XHRzc3QgPSB2YWw7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNDFlIC8qIEZvcm1hdCAqLzogeyAvKiB2YWwgPSBbaWQsIGZtdF0gKi9cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPT0gNCkge1xuXHRcdFx0XHRcdFx0QklGRjJGbXRUYWJsZVtCSUZGMkZtdCsrXSA9IHZhbFsxXTtcblx0XHRcdFx0XHRcdGZvcih2YXIgYjRpZHggPSAwOyBiNGlkeCA8IEJJRkYyRm10ICsgMTYzOyArK2I0aWR4KSBpZih0YWJsZV9mbXRbYjRpZHhdID09IHZhbFsxXSkgYnJlYWs7XG5cdFx0XHRcdFx0XHRpZihiNGlkeCA+PSAxNjMpIFNTRl9sb2FkKHZhbFsxXSwgQklGRjJGbXQgKyAxNjMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIFNTRl9sb2FkKHZhbFsxXSwgdmFsWzBdKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMWUgLyogQklGRjJGT1JNQVQgKi86IHtcblx0XHRcdFx0XHRCSUZGMkZtdFRhYmxlW0JJRkYyRm10KytdID0gdmFsO1xuXHRcdFx0XHRcdGZvcih2YXIgYjJpZHggPSAwOyBiMmlkeCA8IEJJRkYyRm10ICsgMTYzOyArK2IyaWR4KSBpZih0YWJsZV9mbXRbYjJpZHhdID09IHZhbCkgYnJlYWs7XG5cdFx0XHRcdFx0aWYoYjJpZHggPj0gMTYzKSBTU0ZfbG9hZCh2YWwsIEJJRkYyRm10ICsgMTYzKTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDBlNSAvKiBNZXJnZUNlbGxzICovOiBtZXJnZXMgPSBtZXJnZXMuY29uY2F0KHZhbCk7IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMDVkIC8qIE9iaiAqLzogb2JqZWN0c1t2YWwuY21vWzBdXSA9IG9wdHMubGFzdG9iaiA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMWI2IC8qIFR4TyAqLzogb3B0cy5sYXN0b2JqLlR4TyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDdmIC8qIEltRGF0YSAqLzogb3B0cy5sYXN0b2JqLkltRGF0YSA9IHZhbDsgYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDAxYjggLyogSExpbmsgKi86IHtcblx0XHRcdFx0XHRmb3Iocm5nUiA9IHZhbFswXS5zLnI7IHJuZ1IgPD0gdmFsWzBdLmUucjsgKytybmdSKVxuXHRcdFx0XHRcdFx0Zm9yKHJuZ0MgPSB2YWxbMF0ucy5jOyBybmdDIDw9IHZhbFswXS5lLmM7ICsrcm5nQykge1xuXHRcdFx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W3JuZ1JdfHxbXSlbcm5nQ10gOiBvdXRbZW5jb2RlX2NlbGwoe2M6cm5nQyxyOnJuZ1J9KV07XG5cdFx0XHRcdFx0XHRcdGlmKGNjKSBjYy5sID0gdmFsWzFdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDgwMCAvKiBITGlua1Rvb2x0aXAgKi86IHtcblx0XHRcdFx0XHRmb3Iocm5nUiA9IHZhbFswXS5zLnI7IHJuZ1IgPD0gdmFsWzBdLmUucjsgKytybmdSKVxuXHRcdFx0XHRcdFx0Zm9yKHJuZ0MgPSB2YWxbMF0ucy5jOyBybmdDIDw9IHZhbFswXS5lLmM7ICsrcm5nQykge1xuXHRcdFx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W3JuZ1JdfHxbXSlbcm5nQ10gOiBvdXRbZW5jb2RlX2NlbGwoe2M6cm5nQyxyOnJuZ1J9KV07XG5cdFx0XHRcdFx0XHRcdGlmKGNjICYmIGNjLmwpIGNjLmwuVG9vbHRpcCA9IHZhbFsxXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxYyAvKiBOb3RlICovOiB7XG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDw9IDUgJiYgb3B0cy5iaWZmID49IDIpIGJyZWFrOyAvKiBUT0RPOiBCSUZGNSAqL1xuXHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbdmFsWzBdLnJdfHxbXSlbdmFsWzBdLmNdIDogb3V0W2VuY29kZV9jZWxsKHZhbFswXSldO1xuXHRcdFx0XHRcdHZhciBub3Rlb2JqID0gb2JqZWN0c1t2YWxbMl1dO1xuXHRcdFx0XHRcdGlmKCFjYykge1xuXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0XHRpZighb3V0W3ZhbFswXS5yXSkgb3V0W3ZhbFswXS5yXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRjYyA9IG91dFt2YWxbMF0ucl1bdmFsWzBdLmNdID0gKHt0OlwielwifS8qOmFueSovKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNjID0gb3V0W2VuY29kZV9jZWxsKHZhbFswXSldID0gKHt0OlwielwifS8qOmFueSovKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgdmFsWzBdLnIpO1xuXHRcdFx0XHRcdFx0cmFuZ2Uucy5yID0gTWF0aC5taW4ocmFuZ2Uucy5yLCB2YWxbMF0ucik7XG5cdFx0XHRcdFx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIHZhbFswXS5jKTtcblx0XHRcdFx0XHRcdHJhbmdlLnMuYyA9IE1hdGgubWluKHJhbmdlLnMuYywgdmFsWzBdLmMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZighY2MuYykgY2MuYyA9IFtdO1xuXHRcdFx0XHRcdGNtbnQgPSB7YTp2YWxbMV0sdDpub3Rlb2JqLlR4Ty50fTtcblx0XHRcdFx0XHRjYy5jLnB1c2goY21udCk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODdkIC8qIFhGRXh0ICovOiB1cGRhdGVfeGZleHQoWEZzW3ZhbC5peGZlXSwgdmFsLmV4dCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA3ZCAvKiBDb2xJbmZvICovOiB7XG5cdFx0XHRcdFx0aWYoIW9wdHMuY2VsbFN0eWxlcykgYnJlYWs7XG5cdFx0XHRcdFx0d2hpbGUodmFsLmUgPj0gdmFsLnMpIHtcblx0XHRcdFx0XHRcdGNvbGluZm9bdmFsLmUtLV0gPSB7IHdpZHRoOiB2YWwudy8yNTYsIGxldmVsOiAodmFsLmxldmVsIHx8IDApLCBoaWRkZW46ICEhKHZhbC5mbGFncyAmIDEpIH07XG5cdFx0XHRcdFx0XHRpZighc2VlbmNvbCkgeyBzZWVuY29sID0gdHJ1ZTsgZmluZF9tZHdfY29sdyh2YWwudy8yNTYpOyB9XG5cdFx0XHRcdFx0XHRwcm9jZXNzX2NvbChjb2xpbmZvW3ZhbC5lKzFdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjA4IC8qIFJvdyAqLzoge1xuXHRcdFx0XHRcdHZhciByb3dvYmogPSB7fTtcblx0XHRcdFx0XHRpZih2YWwubGV2ZWwgIT0gbnVsbCkgeyByb3dpbmZvW3ZhbC5yXSA9IHJvd29iajsgcm93b2JqLmxldmVsID0gdmFsLmxldmVsOyB9XG5cdFx0XHRcdFx0aWYodmFsLmhpZGRlbikgeyByb3dpbmZvW3ZhbC5yXSA9IHJvd29iajsgcm93b2JqLmhpZGRlbiA9IHRydWU7IH1cblx0XHRcdFx0XHRpZih2YWwuaHB0KSB7XG5cdFx0XHRcdFx0XHRyb3dpbmZvW3ZhbC5yXSA9IHJvd29iajtcblx0XHRcdFx0XHRcdHJvd29iai5ocHQgPSB2YWwuaHB0OyByb3dvYmouaHB4ID0gcHQycHgodmFsLmhwdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAyNiAvKiBMZWZ0TWFyZ2luICovOlxuXHRcdFx0XHRjYXNlIDB4MDAyNyAvKiBSaWdodE1hcmdpbiAqLzpcblx0XHRcdFx0Y2FzZSAweDAwMjggLyogVG9wTWFyZ2luICovOlxuXHRcdFx0XHRjYXNlIDB4MDAyOSAvKiBCb3R0b21NYXJnaW4gKi86XG5cdFx0XHRcdFx0aWYoIW91dFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKG91dFsnIW1hcmdpbnMnXSA9IHt9KTtcblx0XHRcdFx0XHRvdXRbJyFtYXJnaW5zJ11bKHsweDI2OiBcImxlZnRcIiwgMHgyNzpcInJpZ2h0XCIsIDB4Mjg6XCJ0b3BcIiwgMHgyOTpcImJvdHRvbVwifSlbUmVjb3JkVHlwZV1dID0gdmFsO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDBhMSAvKiBTZXR1cCAqLzogLy8gVE9ET1xuXHRcdFx0XHRcdGlmKCFvdXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhvdXRbJyFtYXJnaW5zJ10gPSB7fSk7XG5cdFx0XHRcdFx0b3V0WychbWFyZ2lucyddLmhlYWRlciA9IHZhbC5oZWFkZXI7XG5cdFx0XHRcdFx0b3V0WychbWFyZ2lucyddLmZvb3RlciA9IHZhbC5mb290ZXI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjNlIC8qIFdpbmRvdzIgKi86IC8vIFRPRE9cblx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdGlmKHZhbC5SVEwpIFdvcmtib29rLlZpZXdzWzBdLlJUTCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDkyIC8qIFBhbGV0dGUgKi86IHBhbGV0dGUgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDg5NiAvKiBUaGVtZSAqLzogdGhlbWVzID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwOGMgLyogQ291bnRyeSAqLzogY291bnRyeSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMWJhIC8qIENvZGVOYW1lICovOiB7XG5cdFx0XHRcdFx0Lyo6OiBpZighV29ya2Jvb2suV0JQcm9wcykgV29ya2Jvb2suV0JQcm9wcyA9IHt9OyAqL1xuXHRcdFx0XHRcdGlmKCFjdXJfc2hlZXQpIFdvcmtib29rLldCUHJvcHMuQ29kZU5hbWUgPSB2YWwgfHwgXCJUaGlzV29ya2Jvb2tcIjtcblx0XHRcdFx0XHRlbHNlIHdzcHJvcHMuQ29kZU5hbWUgPSB2YWwgfHwgd3Nwcm9wcy5uYW1lO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZighUikgY29uc29sZS5lcnJvcihcIk1pc3NpbmcgSW5mbyBmb3IgWExTIFJlY29yZCAweFwiICsgUmVjb3JkVHlwZS50b1N0cmluZygxNikpO1xuXHRcdFx0YmxvYi5sICs9IGxlbmd0aDtcblx0XHR9XG5cdH1cblx0d2IuU2hlZXROYW1lcz1rZXlzKERpcmVjdG9yeSkuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIE51bWJlcihhKSAtIE51bWJlcihiKTsgfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBEaXJlY3RvcnlbeF0ubmFtZTt9KTtcblx0aWYoIW9wdGlvbnMuYm9va1NoZWV0cykgd2IuU2hlZXRzPVNoZWV0cztcblx0aWYoIXdiLlNoZWV0TmFtZXMubGVuZ3RoICYmIFByZWFtYmxlW1wiIXJlZlwiXSkge1xuXHRcdHdiLlNoZWV0TmFtZXMucHVzaChcIlNoZWV0MVwiKTtcblx0XHQvKmpzaGludCAtVzA2OSAqL1xuXHRcdGlmKHdiLlNoZWV0cykgd2IuU2hlZXRzW1wiU2hlZXQxXCJdID0gUHJlYW1ibGU7XG5cdFx0Lypqc2hpbnQgK1cwNjkgKi9cblx0fSBlbHNlIHdiLlByZWFtYmxlPVByZWFtYmxlO1xuXHRpZih3Yi5TaGVldHMpIEZpbHRlckRhdGFiYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHIsaSkgeyB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV1bJyFhdXRvZmlsdGVyJ10gPSByOyB9KTtcblx0d2IuU3RyaW5ncyA9IHNzdDtcblx0d2IuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdGlmKG9wdHMuZW5jKSB3Yi5FbmNyeXB0aW9uID0gb3B0cy5lbmM7XG5cdGlmKHRoZW1lcykgd2IuVGhlbWVzID0gdGhlbWVzO1xuXHR3Yi5NZXRhZGF0YSA9IHt9O1xuXHRpZihjb3VudHJ5ICE9PSB1bmRlZmluZWQpIHdiLk1ldGFkYXRhLkNvdW50cnkgPSBjb3VudHJ5O1xuXHRpZihzdXBib29rcy5uYW1lcy5sZW5ndGggPiAwKSBXb3JrYm9vay5OYW1lcyA9IHN1cGJvb2tzLm5hbWVzO1xuXHR3Yi5Xb3JrYm9vayA9IFdvcmtib29rO1xuXHRyZXR1cm4gd2I7XG59XG5cbi8qIFRPRE86IHNwbGl0IHByb3BzKi9cbnZhciBQU0NMU0lEID0ge1xuXHRTSTogXCJlMDg1OWZmMmY5NGY2ODEwYWI5MTA4MDAyYjI3YjNkOVwiLFxuXHREU0k6IFwiMDJkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWVcIixcblx0VURJOiBcIjA1ZDVjZGQ1OWMyZTFiMTA5Mzk3MDgwMDJiMmNmOWFlXCJcbn07XG5mdW5jdGlvbiBwYXJzZV94bHNfcHJvcHMoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIHByb3BzLCBvKSB7XG5cdC8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjIgRG9jdW1lbnQgU3VtbWFyeSBJbmZvcm1hdGlvbiBQcm9wZXJ0eSBTZXQgKi9cblx0dmFyIERTSSA9IENGQi5maW5kKGNmYiwgJy8hRG9jdW1lbnRTdW1tYXJ5SW5mb3JtYXRpb24nKTtcblx0aWYoRFNJICYmIERTSS5zaXplID4gMCkgdHJ5IHtcblx0XHR2YXIgRG9jU3VtbWFyeSA9IHBhcnNlX1Byb3BlcnR5U2V0U3RyZWFtKERTSSwgRG9jU3VtbWFyeVBJRERTSSwgUFNDTFNJRC5EU0kpO1xuXHRcdGZvcih2YXIgZCBpbiBEb2NTdW1tYXJ5KSBwcm9wc1tkXSA9IERvY1N1bW1hcnlbZF07XG5cdH0gY2F0Y2goZSkge2lmKG8uV1RGKSB0aHJvdyBlOy8qIGVtcHR5ICovfVxuXG5cdC8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjEgU3VtbWFyeSBJbmZvcm1hdGlvbiBQcm9wZXJ0eSBTZXQqL1xuXHR2YXIgU0kgPSBDRkIuZmluZChjZmIsICcvIVN1bW1hcnlJbmZvcm1hdGlvbicpO1xuXHRpZihTSSAmJiBTSS5zaXplID4gMCkgdHJ5IHtcblx0XHR2YXIgU3VtbWFyeSA9IHBhcnNlX1Byb3BlcnR5U2V0U3RyZWFtKFNJLCBTdW1tYXJ5UElEU0ksIFBTQ0xTSUQuU0kpO1xuXHRcdGZvcih2YXIgcyBpbiBTdW1tYXJ5KSBpZihwcm9wc1tzXSA9PSBudWxsKSBwcm9wc1tzXSA9IFN1bW1hcnlbc107XG5cdH0gY2F0Y2goZSkge2lmKG8uV1RGKSB0aHJvdyBlOy8qIGVtcHR5ICovfVxuXG5cdGlmKHByb3BzLkhlYWRpbmdQYWlycyAmJiBwcm9wcy5UaXRsZXNPZlBhcnRzKSB7XG5cdFx0bG9hZF9wcm9wc19wYWlycyhwcm9wcy5IZWFkaW5nUGFpcnMsIHByb3BzLlRpdGxlc09mUGFydHMsIHByb3BzLCBvKTtcblx0XHRkZWxldGUgcHJvcHMuSGVhZGluZ1BhaXJzOyBkZWxldGUgcHJvcHMuVGl0bGVzT2ZQYXJ0cztcblx0fVxufVxuZnVuY3Rpb24gd3JpdGVfeGxzX3Byb3BzKHdiLyo6V29ya2Jvb2sqLywgY2ZiLyo6Q0ZCQ29udGFpbmVyKi8pIHtcblx0dmFyIERTRW50cmllcyA9IFtdLCBTRW50cmllcyA9IFtdLCBDRW50cmllcyA9IFtdO1xuXHR2YXIgaSA9IDAsIEtleXM7XG5cdHZhciBEb2NTdW1tYXJ5UkUvKjp7W2tleTpzdHJpbmddOnN0cmluZ30qLyA9IGV2ZXJ0X2tleShEb2NTdW1tYXJ5UElERFNJLCBcIm5cIik7XG5cdHZhciBTdW1tYXJ5UkUvKjp7W2tleTpzdHJpbmddOnN0cmluZ30qLyA9IGV2ZXJ0X2tleShTdW1tYXJ5UElEU0ksIFwiblwiKTtcblx0aWYod2IuUHJvcHMpIHtcblx0XHRLZXlzID0ga2V5cyh3Yi5Qcm9wcyk7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRmb3IoaSA9IDA7IGkgPCBLZXlzLmxlbmd0aDsgKytpKSAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKERvY1N1bW1hcnlSRSwgS2V5c1tpXSkgPyBEU0VudHJpZXMgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoU3VtbWFyeVJFLCBLZXlzW2ldKSA/IFNFbnRyaWVzIDogQ0VudHJpZXMpLnB1c2goW0tleXNbaV0sIHdiLlByb3BzW0tleXNbaV1dXSk7XG5cdH1cblx0aWYod2IuQ3VzdHByb3BzKSB7XG5cdFx0S2V5cyA9IGtleXMod2IuQ3VzdHByb3BzKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGZvcihpID0gMDsgaSA8IEtleXMubGVuZ3RoOyArK2kpIGlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoKHdiLlByb3BzfHx7fSksIEtleXNbaV0pKSAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKERvY1N1bW1hcnlSRSwgS2V5c1tpXSkgPyBEU0VudHJpZXMgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoU3VtbWFyeVJFLCBLZXlzW2ldKSA/IFNFbnRyaWVzIDogQ0VudHJpZXMpLnB1c2goW0tleXNbaV0sIHdiLkN1c3Rwcm9wc1tLZXlzW2ldXV0pO1xuXHR9XG5cdHZhciBDRW50cmllczIgPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDwgQ0VudHJpZXMubGVuZ3RoOyArK2kpIHtcblx0XHRpZihYTFNQU1NraXAuaW5kZXhPZihDRW50cmllc1tpXVswXSkgPiAtMSB8fCBQc2V1ZG9Qcm9wc1BhaXJzLmluZGV4T2YoQ0VudHJpZXNbaV1bMF0pID4gLTEpIGNvbnRpbnVlO1xuXHRcdGlmKENFbnRyaWVzW2ldWzFdID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdENFbnRyaWVzMi5wdXNoKENFbnRyaWVzW2ldKTtcblx0fVxuXHRpZihTRW50cmllcy5sZW5ndGgpIENGQi51dGlscy5jZmJfYWRkKGNmYiwgXCIvXFx1MDAwNVN1bW1hcnlJbmZvcm1hdGlvblwiLCB3cml0ZV9Qcm9wZXJ0eVNldFN0cmVhbShTRW50cmllcywgUFNDTFNJRC5TSSwgU3VtbWFyeVJFLCBTdW1tYXJ5UElEU0kpKTtcblx0aWYoRFNFbnRyaWVzLmxlbmd0aCB8fCBDRW50cmllczIubGVuZ3RoKSBDRkIudXRpbHMuY2ZiX2FkZChjZmIsIFwiL1xcdTAwMDVEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvblwiLCB3cml0ZV9Qcm9wZXJ0eVNldFN0cmVhbShEU0VudHJpZXMsIFBTQ0xTSUQuRFNJLCBEb2NTdW1tYXJ5UkUsIERvY1N1bW1hcnlQSUREU0ksIENFbnRyaWVzMi5sZW5ndGggPyBDRW50cmllczIgOiBudWxsLCBQU0NMU0lELlVESSkpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV94bHNjZmIoY2ZiLyo6YW55Ki8sIG9wdGlvbnMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5pZighb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuZml4X3JlYWRfb3B0cyhvcHRpb25zKTtcbnJlc2V0X2NwKCk7XG5pZihvcHRpb25zLmNvZGVwYWdlKSBzZXRfYW5zaShvcHRpb25zLmNvZGVwYWdlKTtcbnZhciBDb21wT2JqLyo6P0NGQkVudHJ5Ki8sIFdCLyo6P2FueSovO1xuaWYoY2ZiLkZ1bGxQYXRocykge1xuXHRpZihDRkIuZmluZChjZmIsICcvZW5jcnlwdGlvbicpKSB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZFwiKTtcblx0Q29tcE9iaiA9IENGQi5maW5kKGNmYiwgJyFDb21wT2JqJyk7XG5cdFdCID0gQ0ZCLmZpbmQoY2ZiLCAnL1dvcmtib29rJykgfHwgQ0ZCLmZpbmQoY2ZiLCAnL0Jvb2snKTtcbn0gZWxzZSB7XG5cdHN3aXRjaChvcHRpb25zLnR5cGUpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBjZmIgPSBzMmEoQmFzZTY0X2RlY29kZShjZmIpKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYmluYXJ5JzogY2ZiID0gczJhKGNmYik7IGJyZWFrO1xuXHRcdGNhc2UgJ2J1ZmZlcic6IGJyZWFrO1xuXHRcdGNhc2UgJ2FycmF5JzogaWYoIUFycmF5LmlzQXJyYXkoY2ZiKSkgY2ZiID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY2ZiKTsgYnJlYWs7XG5cdH1cblx0cHJlcF9ibG9iKGNmYiwgMCk7XG5cdFdCID0gKHtjb250ZW50OiBjZmJ9Lyo6YW55Ki8pO1xufVxudmFyIC8qOjpDb21wT2JqUCwgKi9Xb3JrYm9va1AvKjo6IDpXb3JrYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTsgKi87XG5cbnZhciBfZGF0YS8qOj9hbnkqLztcbmlmKENvbXBPYmopIC8qOjpDb21wT2JqUCA9ICovcGFyc2VfY29tcG9iaihDb21wT2JqKTtcbmlmKG9wdGlvbnMuYm9va1Byb3BzICYmICFvcHRpb25zLmJvb2tTaGVldHMpIFdvcmtib29rUCA9ICh7fS8qOmFueSovKTtcbmVsc2UvKjo6IGlmKGNmYiBpbnN0YW5jZW9mIENGQkNvbnRhaW5lcikgKi8ge1xuXHR2YXIgVCA9IGhhc19idWYgPyAnYnVmZmVyJyA6ICdhcnJheSc7XG5cdGlmKFdCICYmIFdCLmNvbnRlbnQpIFdvcmtib29rUCA9IHBhcnNlX3dvcmtib29rKFdCLmNvbnRlbnQsIG9wdGlvbnMpO1xuXHQvKiBRdWF0dHJvIFBybyA3LTggKi9cblx0ZWxzZSBpZigoX2RhdGE9Q0ZCLmZpbmQoY2ZiLCAnUGVyZmVjdE9mZmljZV9NQUlOJykpICYmIF9kYXRhLmNvbnRlbnQpIFdvcmtib29rUCA9IFdLXy50b193b3JrYm9vayhfZGF0YS5jb250ZW50LCAob3B0aW9ucy50eXBlID0gVCwgb3B0aW9ucykpO1xuXHQvKiBRdWF0dHJvIFBybyA5ICovXG5cdGVsc2UgaWYoKF9kYXRhPUNGQi5maW5kKGNmYiwgJ05hdGl2ZUNvbnRlbnRfTUFJTicpKSAmJiBfZGF0YS5jb250ZW50KSBXb3JrYm9va1AgPSBXS18udG9fd29ya2Jvb2soX2RhdGEuY29udGVudCwgKG9wdGlvbnMudHlwZSA9IFQsIG9wdGlvbnMpKTtcblx0LyogV29ya3MgNCBmb3IgTWFjICovXG5cdGVsc2UgaWYoKF9kYXRhPUNGQi5maW5kKGNmYiwgJ01OMCcpKSAmJiBfZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBXb3JrcyA0IGZvciBNYWMgZmlsZVwiKTtcblx0ZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBXb3JrYm9vayBzdHJlYW1cIik7XG5cdGlmKG9wdGlvbnMuYm9va1ZCQSAmJiBjZmIuRnVsbFBhdGhzICYmIENGQi5maW5kKGNmYiwgJy9fVkJBX1BST0pFQ1RfQ1VSL1ZCQS9kaXInKSkgV29ya2Jvb2tQLnZiYXJhdyA9IG1ha2VfdmJhX3hscyhjZmIpO1xufVxuXG52YXIgcHJvcHMgPSB7fTtcbmlmKGNmYi5GdWxsUGF0aHMpIHBhcnNlX3hsc19wcm9wcygvKjo6KCgqL2NmYi8qOjogOmFueSk6Q0ZCQ29udGFpbmVyKSovLCBwcm9wcywgb3B0aW9ucyk7XG5cbldvcmtib29rUC5Qcm9wcyA9IFdvcmtib29rUC5DdXN0cHJvcHMgPSBwcm9wczsgLyogVE9ETzogc3BsaXQgdXAgcHJvcGVydGllcyAqL1xuaWYob3B0aW9ucy5ib29rRmlsZXMpIFdvcmtib29rUC5jZmIgPSBjZmI7XG4vKldvcmtib29rUC5Db21wT2JqUCA9IENvbXBPYmpQOyAvLyBUT0RPOiBzdG9yYWdlPyAqL1xucmV0dXJuIFdvcmtib29rUDtcbn1cblxuXG5mdW5jdGlvbiB3cml0ZV94bHNjZmIod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6Q0ZCQ29udGFpbmVyKi8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBjZmIgPSBDRkIudXRpbHMuY2ZiX25ldyh7cm9vdDpcIlJcIn0pO1xuXHR2YXIgd2JwYXRoID0gXCIvV29ya2Jvb2tcIjtcblx0c3dpdGNoKG8uYm9va1R5cGUgfHwgXCJ4bHNcIikge1xuXHRcdGNhc2UgXCJ4bHNcIjogby5ib29rVHlwZSA9IFwiYmlmZjhcIjtcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSBcInhsYVwiOiBpZighby5ib29rVHlwZSkgby5ib29rVHlwZSA9IFwieGxhXCI7XG5cdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgXCJiaWZmOFwiOiB3YnBhdGggPSBcIi9Xb3JrYm9va1wiOyBvLmJpZmYgPSA4OyBicmVhaztcblx0XHRjYXNlIFwiYmlmZjVcIjogd2JwYXRoID0gXCIvQm9va1wiOyBvLmJpZmYgPSA1OyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHR5cGUgXCIgKyBvLmJvb2tUeXBlICsgXCIgZm9yIFhMUyBDRkJcIik7XG5cdH1cblx0Q0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCB3YnBhdGgsIHdyaXRlX2JpZmZfYnVmKHdiLCBvKSk7XG5cdGlmKG8uYmlmZiA9PSA4ICYmICh3Yi5Qcm9wcyB8fCB3Yi5DdXN0cHJvcHMpKSB3cml0ZV94bHNfcHJvcHMod2IsIGNmYik7XG5cdC8vIFRPRE86IFNJLCBEU0ksIENPXG5cdGlmKG8uYmlmZiA9PSA4ICYmIHdiLnZiYXJhdykgZmlsbF92YmFfeGxzKGNmYiwgQ0ZCLnJlYWQod2IudmJhcmF3LCB7dHlwZTogdHlwZW9mIHdiLnZiYXJhdyA9PSBcInN0cmluZ1wiID8gXCJiaW5hcnlcIiA6IFwiYnVmZmVyXCJ9KSk7XG5cdHJldHVybiBjZmI7XG59XG4vKiBbTVMtWExTQl0gMi4zIFJlY29yZCBFbnVtZXJhdGlvbiAqL1xudmFyIFhMU0JSZWNvcmRFbnVtID0ge1xuXHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Um93SGRyXCIsICovIGY6cGFyc2VfQnJ0Um93SGRyIH0sXG5cdC8qOjpbKi8weDAwMDEvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsQmxhbmtcIiwgKi8gZjpwYXJzZV9CcnRDZWxsQmxhbmsgfSxcblx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgLyogbjpcIkJydENlbGxSa1wiLCAqLyBmOnBhcnNlX0JydENlbGxSayB9LFxuXHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbEVycm9yXCIsICovIGY6cGFyc2VfQnJ0Q2VsbEVycm9yIH0sXG5cdC8qOjpbKi8weDAwMDQvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsQm9vbFwiLCAqLyBmOnBhcnNlX0JydENlbGxCb29sIH0sXG5cdC8qOjpbKi8weDAwMDUvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsUmVhbFwiLCAqLyBmOnBhcnNlX0JydENlbGxSZWFsIH0sXG5cdC8qOjpbKi8weDAwMDYvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsU3RcIiwgKi8gZjpwYXJzZV9CcnRDZWxsU3QgfSxcblx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86IHsgLyogbjpcIkJydENlbGxJc3N0XCIsICovIGY6cGFyc2VfQnJ0Q2VsbElzc3QgfSxcblx0Lyo6OlsqLzB4MDAwOC8qOjpdKi86IHsgLyogbjpcIkJydEZtbGFTdHJpbmdcIiwgKi8gZjpwYXJzZV9CcnRGbWxhU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAwMDkvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhTnVtXCIsICovIGY6cGFyc2VfQnJ0Rm1sYU51bSB9LFxuXHQvKjo6WyovMHgwMDBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm1sYUJvb2xcIiwgKi8gZjpwYXJzZV9CcnRGbWxhQm9vbCB9LFxuXHQvKjo6WyovMHgwMDBCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm1sYUVycm9yXCIsICovIGY6cGFyc2VfQnJ0Rm1sYUVycm9yIH0sXG5cdC8qOjpbKi8weDAwMEMvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydEJsYW5rXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRCbGFuayB9LFxuXHQvKjo6WyovMHgwMDBELyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRSa1wiLCAqLyBmOnBhcnNlX0JydFNob3J0UmsgfSxcblx0Lyo6OlsqLzB4MDAwRS8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0RXJyb3JcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydEVycm9yIH0sXG5cdC8qOjpbKi8weDAwMEYvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydEJvb2xcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydEJvb2wgfSxcblx0Lyo6OlsqLzB4MDAxMC8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0UmVhbFwiLCAqLyBmOnBhcnNlX0JydFNob3J0UmVhbCB9LFxuXHQvKjo6WyovMHgwMDExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRTdFwiLCAqLyBmOnBhcnNlX0JydFNob3J0U3QgfSxcblx0Lyo6OlsqLzB4MDAxMi8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0SXNzdFwiLCAqLyBmOnBhcnNlX0JydFNob3J0SXNzdCB9LFxuXHQvKjo6WyovMHgwMDEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1NUSXRlbVwiLCAqLyBmOnBhcnNlX1JpY2hTdHIgfSxcblx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IHsgLyogbjpcIkJydFBDRElNaXNzaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxNS8qOjpdKi86IHsgLyogbjpcIkJydFBDRElOdW1iZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUJvb2xlYW5cIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUVycm9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgLyogbjpcIkJydFBDRElTdHJpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESURhdGV0aW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxQS8qOjpdKi86IHsgLyogbjpcIkJydFBDRElJbmRleFwiICovIH0sXG5cdC8qOjpbKi8weDAwMUIvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQU1pc3NpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFOdW1iZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFCb29sZWFuXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxRS8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBRXJyb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFTdHJpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFEYXRldGltZVwiICovIH0sXG5cdC8qOjpbKi8weDAwMjEvKjo6XSovOiB7IC8qIG46XCJCcnRQQ1JSZWNvcmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENSUmVjb3JkRHRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RlJUQmVnaW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMjQvKjo6XSovOiB7IC8qIG46XCJCcnRGUlRFbmRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QUNCZWdpblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAyNi8qOjpdKi86IHsgLyogbjpcIkJydEFDRW5kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IHsgLyogbjpcIkJydE5hbWVcIiwgKi8gZjpwYXJzZV9CcnROYW1lIH0sXG5cdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleFJvd0Jsb2NrXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyQS8qOjpdKi86IHsgLyogbjpcIkJydEluZGV4QmxvY2tcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm9udFwiLCAqLyBmOnBhcnNlX0JydEZvbnQgfSxcblx0Lyo6OlsqLzB4MDAyQy8qOjpdKi86IHsgLyogbjpcIkJydEZtdFwiLCAqLyBmOnBhcnNlX0JydEZtdCB9LFxuXHQvKjo6WyovMHgwMDJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsbFwiLCAqLyBmOnBhcnNlX0JydEZpbGwgfSxcblx0Lyo6OlsqLzB4MDAyRS8qOjpdKi86IHsgLyogbjpcIkJydEJvcmRlclwiLCAqLyBmOnBhcnNlX0JydEJvcmRlciB9LFxuXHQvKjo6WyovMHgwMDJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0WEZcIiwgKi8gZjpwYXJzZV9CcnRYRiB9LFxuXHQvKjo6WyovMHgwMDMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3R5bGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbE1ldGFcIiwgKi8gZjpwYXJzZV9JbnQzMkxFIH0sXG5cdC8qOjpbKi8weDAwMzIvKjo6XSovOiB7IC8qIG46XCJCcnRWYWx1ZU1ldGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWRiXCIgKi8gZjpwYXJzZV9CcnRNZGIgfSxcblx0Lyo6OlsqLzB4MDAzNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRm1kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRm1kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAzNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAzOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4VHVwbGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMzkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhUdXBsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwM0EvKjo6XSovOiB7IC8qIG46XCJCcnRNZHhNYnJJc3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAzQi8qOjpdKi86IHsgLyogbjpcIkJydFN0clwiICovIH0sXG5cdC8qOjpbKi8weDAwM0MvKjo6XSovOiB7IC8qIG46XCJCcnRDb2xJbmZvXCIsICovIGY6cGFyc2VfQ29sSW5mbyB9LFxuXHQvKjo6WyovMHgwMDNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFJTdHJpbmdcIiwgKi8gZjpwYXJzZV9CcnRDZWxsUlN0cmluZyB9LFxuXHQvKjo6WyovMHgwMDNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2FsY0NoYWluSXRlbSRcIiwgKi8gZjpwYXJzZV9CcnRDYWxjQ2hhaW5JdGVtJCB9LFxuXHQvKjo6WyovMHgwMDQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFZhbFwiLCAqLyBmOnBhcnNlX0JydERWYWwgfSxcblx0Lyo6OlsqLzB4MDA0MS8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxOdW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbFN0clwiICovIH0sXG5cdC8qOjpbKi8weDAwNDMvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsQm9vbFwiICovIH0sXG5cdC8qOjpbKi8weDAwNDQvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsRXJyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0NS8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxEYXRlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0Ni8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxOaWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDgwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVZlcnNpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMDgxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TaGVldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNoZWV0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQm9va1wiLCAqLyBUOjEsIGY6cGFyc2Vub29wLCBwOjAgfSxcblx0Lyo6OlsqLzB4MDA4NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEJvb2tcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDg1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Xc1ZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV3NWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwODcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkJvb2tWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEJvb2tWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwODkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldzVmlld1wiLCAqLyBUOjEsIGY6cGFyc2VfQnJ0QmVnaW5Xc1ZpZXcgfSxcblx0Lyo6OlsqLzB4MDA4QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdzVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwOEIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNzVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDc1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3NWaWV3XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDhFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ3NWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQnVuZGxlU2hzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDkwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQnVuZGxlU2hzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2hlZXREYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDkyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2hlZXREYXRhXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA5My8qOjpdKi86IHsgLyogbjpcIkJydFdzUHJvcFwiLCAqLyBmOnBhcnNlX0JydFdzUHJvcCB9LFxuXHQvKjo6WyovMHgwMDk0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V3NEaW1cIiwgKi8gZjpwYXJzZV9CcnRXc0RpbSwgcDoxNiB9LFxuXHQvKjo6WyovMHgwMDk3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGFuZVwiLCAqLyBmOnBhcnNlX0JydFBhbmUgfSxcblx0Lyo6OlsqLzB4MDA5OC8qOjpdKi86IHsgLyogbjpcIkJydFNlbFwiICovIH0sXG5cdC8qOjpbKi8weDAwOTkvKjo6XSovOiB7IC8qIG46XCJCcnRXYlByb3BcIiwgKi8gZjpwYXJzZV9CcnRXYlByb3AgfSxcblx0Lyo6OlsqLzB4MDA5QS8qOjpdKi86IHsgLyogbjpcIkJydFdiRmFjdG9pZFwiICovIH0sXG5cdC8qOjpbKi8weDAwOUIvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxlUmVjb3ZlclwiICovIH0sXG5cdC8qOjpbKi8weDAwOUMvKjo6XSovOiB7IC8qIG46XCJCcnRCdW5kbGVTaFwiLCAqLyBmOnBhcnNlX0JydEJ1bmRsZVNoIH0sXG5cdC8qOjpbKi8weDAwOUQvKjo6XSovOiB7IC8qIG46XCJCcnRDYWxjUHJvcFwiICovIH0sXG5cdC8qOjpbKi8weDAwOUUvKjo6XSovOiB7IC8qIG46XCJCcnRCb29rVmlld1wiICovIH0sXG5cdC8qOjpbKi8weDAwOUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNzdFwiLCAqLyBUOjEsIGY6cGFyc2VfQnJ0QmVnaW5Tc3QgfSxcblx0Lyo6OlsqLzB4MDBBMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNzdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkFGaWx0ZXJcIiwgKi8gVDoxLCBmOnBhcnNlX1VuY2hlY2tlZFJmWCB9LFxuXHQvKjo6WyovMHgwMEEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQUZpbHRlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZpbHRlckNvbHVtblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBBNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZpbHRlckNvbHVtblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBNy8qOjpdKi86IHsgLyogbjpcIkJydEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQTgvKjo6XSovOiB7IC8qIG46XCJCcnRDb2xvckZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQTkvKjo6XSovOiB7IC8qIG46XCJCcnRJY29uRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBQS8qOjpdKi86IHsgLyogbjpcIkJydFRvcDEwRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBQi8qOjpdKi86IHsgLyogbjpcIkJydER5bmFtaWNGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DdXN0b21GaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ3VzdG9tRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQUUvKjo6XSovOiB7IC8qIG46XCJCcnRDdXN0b21GaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QUZpbHRlckRhdGVHcm91cEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMEIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWVyZ2VDZWxsXCIsICovIGY6cGFyc2VfQnJ0TWVyZ2VDZWxsIH0sXG5cdC8qOjpbKi8weDAwQjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1lcmdlQ2VsbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZXJnZUNlbGxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RDYWNoZURlZlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVEZWZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGaWVsZHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGaWVsZHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGaWVsZFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZpZWxkXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU291cmNlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU291cmNlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU1JhbmdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU1JhbmdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkF0YmxcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGQXRibFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQkYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRElSdW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RJUnVuXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RDYWNoZVJlY29yZHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdENhY2hlUmVjb3Jkc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhpZXJhcmNoaWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESGllcmFyY2hpZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIaWVyYXJjaHlcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIaWVyYXJjaHlcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIRmllbGRzVXNhZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIRmllbGRzVXNhZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FeHRDb25uZWN0aW9uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMENBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0Q29ubmVjdGlvblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQ0IvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDRGJQcm9wc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDRGJQcm9wc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQ0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDT2xhcFByb3BzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMENFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNPbGFwUHJvcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMENGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ29uc29sXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NvbnNvbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDUGFnZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1BhZ2VzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBEMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NQYWdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NQYWdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBENS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NQSXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBENi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDUEl0ZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1NldHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1NldHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1NldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDU2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBEQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMERDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkdyb3VwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBERC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkdJdGVtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBERS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZHSXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMERGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR1JhbmdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkdSYW5nZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZHRGlzY3JldGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR0Rpc2NyZXRlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUdXBsZUNhY2hlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUdXBsZUNhY2hlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VudHJpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDRW50cmllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENFTWVtYmVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENFTWVtYmVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENFTWVtYmVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ0VNZW1iZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDUXVlcmllc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENRdWVyaWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ1F1ZXJ5XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ1F1ZXJ5XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ1NldHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDU2V0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENTZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDU2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY0l0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY0l0ZW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY0l0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSdWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEY4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJ1bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZpbHRlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRmlsdGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUE5hbWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEZFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUE5hbWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUE5hbWVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTmFtZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBOUGFpcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTlBhaXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUE5QYWlyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUE5QYWlyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNXZWJQcm9wc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDV2ViUHJvcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FY1dwVGFibGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNXUFRhYmxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDUGFyYW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNQYXJhbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTBCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1BhcmFtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTBDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNQYXJhbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMEQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREtQSXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RLUElzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENES1BJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENES1BJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGltc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERpbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EaW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREaW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5kZXhQYXJ0RW5kXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDExNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3R5bGVTaGVldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN0eWxlU2hlZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWSXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZJc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVkRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMjAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYUElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFBJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hQSXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFBJc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMjYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWERJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hESXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWERJc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWExJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hMSVJ3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYTElSd3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWExJQ29sc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYTElDb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGb3JtYXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEZvcm1hdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRm9ybWF0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4Rm9ybWF0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4U2VsZWN0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hTZWxlY3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hWRFJ3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFZEUndzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVkRDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVkRDb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYTG9jYXRpb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWExvY2F0aW9uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUSHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxM0QvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRIc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxM0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVEhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxM0YvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRIXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVEhSd3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hUSFJ3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFRIQ29sc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0My8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFRIQ29sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNDQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVERNUFNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRETVBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hURE1QXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hURE1QXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUSEl0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUSEl0ZW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUSEl0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNEIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRISXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNEMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1ldGFkYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTRELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWV0YWRhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTRFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc21kdGluZm9cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNEYvKjo6XSovOiB7IC8qIG46XCJCcnRNZHRpbmZvXCIsICovIGY6cGFyc2VfQnJ0TWR0aW5mbyB9LFxuXHQvKjo6WyovMHgwMTUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNtZHRpbmZvXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNtZGJcIiwgKi8gZjpwYXJzZV9CcnRCZWdpbkVzbWRiLCBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzbWRiXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNmbWRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc2ZtZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNpbmdsZUNlbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2luZ2xlQ2VsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTGlzdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTGlzdENvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0Q29sXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTGlzdENvbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RYbWxDUHJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0WG1sQ1ByXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1Ri8qOjpdKi86IHsgLyogbjpcIkJydExpc3RDQ0ZtbGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdFRyRm1sYVwiICovIH0sXG5cdC8qOjpbKi8weDAxNjEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dGVybmFsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE2Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dGVybmFsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNjMvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBCb29rU3JjXCIsICovIGY6cGFyc2VfUmVsSUR9LFxuXHQvKjo6WyovMHgwMTY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwU2VsZlwiICovIH0sXG5cdC8qOjpbKi8weDAxNjYvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBTYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Ny8qOjpdKi86IHsgLyogbjpcIkJydFN1cFRhYnNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTY4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdXBCb29rXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGxhY2Vob2xkZXJOYW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2QS8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblNoZWV0XCIsICovIGY6cGFyc2VfRXh0ZXJuU2hlZXQgfSxcblx0Lyo6OlsqLzB4MDE2Qi8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblRhYmxlU3RhcnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuVGFibGVFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuUm93SGRyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Ri8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxCbGFua1wiICovIH0sXG5cdC8qOjpbKi8weDAxNzAvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsUmVhbFwiICovIH0sXG5cdC8qOjpbKi8weDAxNzEvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsQm9vbFwiICovIH0sXG5cdC8qOjpbKi8weDAxNzIvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsRXJyb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTczLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbFN0cmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAxNzQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzbWR4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTc1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNtZHhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTc2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhTZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNzcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTc4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhNYnJQcm9wXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTc5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4TWJyUHJvcFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxN0EvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keEtQSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keEtQSVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxN0MvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzc3RyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTdELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNzdHJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTdFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTdGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxODAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RDYWNoZUlEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVklzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTg1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVklzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29sSW5mb3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb2xJbmZvc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxODgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJ3QnJrXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTg5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUndCcmtcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMThBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xCcmtcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxOEIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb2xCcmtcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMThDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QnJrXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE4RC8qOjpdKi86IHsgLyogbjpcIkJydFVzZXJCb29rVmlld1wiICovIH0sXG5cdC8qOjpbKi8weDAxOEUvKjo6XSovOiB7IC8qIG46XCJCcnRJbmZvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE4Ri8qOjpdKi86IHsgLyogbjpcIkJydENVc3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTkwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VXNyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxOTMvKjo6XSovOiB7IC8qIG46XCJCcnRFT0ZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0VUNSXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NS8qOjpdKi86IHsgLyogbjpcIkJydFJSSW5zRGVsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ni8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kSW5zRGVsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ny8qOjpdKi86IHsgLyogbjpcIkJydFJSTW92ZVwiICovIH0sXG5cdC8qOjpbKi8weDAxOTgvKjo6XSovOiB7IC8qIG46XCJCcnRSUkVuZE1vdmVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJDaGdDZWxsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5QS8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kQ2hnQ2VsbFwiICovIH0sXG5cdC8qOjpbKi8weDAxOUIvKjo6XSovOiB7IC8qIG46XCJCcnRSUkhlYWRlclwiICovIH0sXG5cdC8qOjpbKi8weDAxOUMvKjo6XSovOiB7IC8qIG46XCJCcnRSUlVzZXJWaWV3XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5RC8qOjpdKi86IHsgLyogbjpcIkJydFJSUmVuU2hlZXRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJJbnNlcnRTaFwiICovIH0sXG5cdC8qOjpbKi8weDAxOUYvKjo6XSovOiB7IC8qIG46XCJCcnRSUkRlZk5hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJOb3RlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBMS8qOjpdKi86IHsgLyogbjpcIkJydFJSQ29uZmxpY3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJUUVNJRlwiICovIH0sXG5cdC8qOjpbKi8weDAxQTMvKjo6XSovOiB7IC8qIG46XCJCcnRSUkZvcm1hdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTQvKjo6XSovOiB7IC8qIG46XCJCcnRSUkVuZEZvcm1hdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTUvKjo6XSovOiB7IC8qIG46XCJCcnRSUkF1dG9GbXRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2VyU2hWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFBNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlclNoVmlld1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFBOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFVzZXJTaFZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVXNlclNoVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QXJyRm1sYVwiLCAqLyBmOnBhcnNlX0JydEFyckZtbGEgfSxcblx0Lyo6OlsqLzB4MDFBQi8qOjpdKi86IHsgLyogbjpcIkJydFNockZtbGFcIiwgKi8gZjpwYXJzZV9CcnRTaHJGbWxhIH0sXG5cdC8qOjpbKi8weDAxQUMvKjo6XSovOiB7IC8qIG46XCJCcnRUYWJsZVwiICovIH0sXG5cdC8qOjpbKi8weDAxQUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm5lY3Rpb25zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0Q29ubmVjdGlvbnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNNZW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNNZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xldmVsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTGV2ZWxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMZXZlbFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTGV2ZWxcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xHcm91cHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xHcm91cHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xHcm91cFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdyb3VwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMR01lbWJlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xHTWVtYmVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdNZW1iZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIR0xHTWVtYmVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUVNJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUVNJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUVNJUlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSVJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUMzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EZWxldGVkTmFtZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREZWxldGVkTmFtZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EZWxldGVkTmFtZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERlbGV0ZWROYW1lXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUVNJRnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRRU0lGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblFTSUZcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQ0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRRU0lGXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQXV0b1NvcnRTY29wZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZEF1dG9Tb3J0U2NvcGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQ0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DRlJ1bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRDAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDRlJ1bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JY29uU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSWNvblNldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRhdGFiYXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYXRhYmFyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFENS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29sb3JTY2FsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFENi8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbG9yU2NhbGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZWT1wiICovIH0sXG5cdC8qOjpbKi8weDAxRDgvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5WYWx1ZU1ldGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xvclBhbGV0dGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxREEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb2xvclBhbGV0dGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMURCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5kZXhlZENvbG9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFEQy8qOjpdKi86IHsgLyogbjpcIkJydE1hcmdpbnNcIiwgKi8gZjpwYXJzZV9CcnRNYXJnaW5zIH0sXG5cdC8qOjpbKi8weDAxREQvKjo6XSovOiB7IC8qIG46XCJCcnRQcmludE9wdGlvbnNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMURFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGFnZVNldHVwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFERi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSGVhZGVyRm9vdGVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSGVhZGVyRm9vdGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDcnRGb3JtYXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENydEZvcm1hdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ3J0Rm9ybWF0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ3J0Rm9ybWF0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRTUvKjo6XSovOiB7IC8qIG46XCJCcnRXc0ZtdEluZm9cIiwgKi8gZjpwYXJzZV9CcnRXc0ZtdEluZm8gfSxcblx0Lyo6OlsqLzB4MDFFNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTUdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTUdNYXBzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTUdNYXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTUdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRUIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNR1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRUMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1hcFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1hcFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRUUvKjo6XSovOiB7IC8qIG46XCJCcnRITGlua1wiLCAqLyBmOnBhcnNlX0JydEhMaW5rIH0sXG5cdC8qOjpbKi8weDAxRUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRDb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRjAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREQ29uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRFJlZnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRjIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREUmVmc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjMvKjo6XSovOiB7IC8qIG46XCJCcnREUmVmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFGNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2Nlbk1hblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNjZW5NYW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TY3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRjcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTY3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUY4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xjXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFGOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRFhGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZERYRnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFhGXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFGQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGFibGVTdHlsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRkQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUYWJsZVN0eWxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRkUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRhYmxlU3R5bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRkYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUYWJsZVN0eWxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwMC8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlU3R5bGVFbGVtZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwMS8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlU3R5bGVDbGllbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Wb2xEZXBzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sRGVwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMDQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbFR5cGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMDUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRWb2xUeXBlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVm9sTWFpblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIwNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFZvbE1haW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Wb2xUb3BpY1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIwOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFZvbFRvcGljXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwQS8qOjpdKi86IHsgLyogbjpcIkJydFZvbFN1YnRvcGljXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwQi8qOjpdKi86IHsgLyogbjpcIkJydFZvbFJlZlwiICovIH0sXG5cdC8qOjpbKi8weDAyMEMvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xOdW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sRXJyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwRS8qOjpdKi86IHsgLyogbjpcIkJydFZvbFN0clwiICovIH0sXG5cdC8qOjpbKi8weDAyMEYvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2FsY0NoYWluJFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENhbGNDaGFpbiRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Tb3J0U3RhdGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMTMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTb3J0U3RhdGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Tb3J0Q29uZFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNvcnRDb25kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxNi8qOjpdKi86IHsgLyogbjpcIkJydEJvb2tQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxNy8qOjpdKi86IHsgLyogbjpcIkJydFNoZWV0UHJvdGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDAyMTgvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByb3RlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGhvbmV0aWNJbmZvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUeHRXaXpcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMUIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1R4dFdpelwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMUMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVFdGbGRJbmZvTHN0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNUV0ZsZEluZm9Mc3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1R3RmxkSW5mb1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIyNC8qOjpdKi86IHsgLyogbjpcIkJydEZpbGVTaGFyaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyNS8qOjpdKi86IHsgLyogbjpcIkJydE9sZVNpemVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHJhd2luZ1wiLCAqLyBmOnBhcnNlX1JlbElEIH0sXG5cdC8qOjpbKi8weDAyMjcvKjo6XSovOiB7IC8qIG46XCJCcnRMZWdhY3lEcmF3aW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyOC8qOjpdKi86IHsgLyogbjpcIkJydExlZ2FjeURyYXdpbmdIRlwiICovIH0sXG5cdC8qOjpbKi8weDAyMjkvKjo6XSovOiB7IC8qIG46XCJCcnRXZWJPcHRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5XZWJQdWJJdGVtc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIyQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdlYlB1Ykl0ZW1zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIyQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV2ViUHViSXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIyRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdlYlB1Ykl0ZW1cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENvbmRGbXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMkYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENvbmRGbXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDb25kRm10c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMzIvKjo6XSovOiB7IC8qIG46XCJCcnRCa0hpbVwiICovIH0sXG5cdC8qOjpbKi8weDAyMzQvKjo6XSovOiB7IC8qIG46XCJCcnRDb2xvclwiICovIH0sXG5cdC8qOjpbKi8weDAyMzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkluZGV4ZWRDb2xvcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMzYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJbmRleGVkQ29sb3JzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIzOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTVJVQ29sb3JzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTVJVQ29sb3JzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIzQy8qOjpdKi86IHsgLyogbjpcIkJydE1SVUNvbG9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIzRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRFZhbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyM0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREVmFsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNDEvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lU3RhcnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZVZhbHVlU3RhcnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZVZhbHVlRW5kXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0NC8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVOdW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZUVyclwiICovIH0sXG5cdC8qOjpbKi8weDAyNDYvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lU3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZU5pbFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDgvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lQm9vbFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDkvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lRm1sYVwiICovIH0sXG5cdC8qOjpbKi8weDAyNEEvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lQml0c1wiICovIH0sXG5cdC8qOjpbKi8weDAyNEIvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lRW5kXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN1cEJvb2tcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjRELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFNtYXJ0VGFnUHJvcGVydHlcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjRFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsU21hcnRUYWdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNEYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsU21hcnRUYWdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsU21hcnRUYWdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbFNtYXJ0VGFnc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNtYXJ0VGFnc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1My8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNtYXJ0VGFnc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTQvKjo6XSovOiB7IC8qIG46XCJCcnRTbWFydFRhZ1R5cGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbWFydFRhZ1R5cGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU21hcnRUYWdUeXBlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYRklMVEVSXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hGaWx0ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GaWxsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZpbGxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFdhdGNoZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsV2F0Y2hlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNUYvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsV2F0Y2hcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DUkVycnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNjEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDUkVycnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3Jhc2hSZWNFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Gb250c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZvbnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQm9yZGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZEJvcmRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjY3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GbXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjY4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRm10c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxYRnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsWEZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3R5bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3MS8qOjpdKi86IHsgLyogbjpcIkJydEJpZ05hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjcyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsU3R5bGVYRnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNzMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsU3R5bGVYRnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjc0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbW1lbnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29tbWVudEF1dGhvcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNzcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb21tZW50QXV0aG9yc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNzgvKjo6XSovOiB7IC8qIG46XCJCcnRDb21tZW50QXV0aG9yXCIsICovIGY6cGFyc2VfQnJ0Q29tbWVudEF1dGhvciB9LFxuXHQvKjo6WyovMHgwMjc5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50TGlzdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbW1lbnRMaXN0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29tbWVudFwiLCAqLyBUOjEsIGY6cGFyc2VfQnJ0QmVnaW5Db21tZW50fSxcblx0Lyo6OlsqLzB4MDI3Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbW1lbnRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjdELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29tbWVudFRleHRcIiwgKi8gZjpwYXJzZV9CcnRDb21tZW50VGV4dCB9LFxuXHQvKjo6WyovMHgwMjdFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5PbGVPYmplY3RzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjdGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0T2xlT2JqZWN0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI4MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZE9sZU9iamVjdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjgxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeHJ1bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hSdWxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyODMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkFjdGl2ZVhDb250cm9sc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI4NC8qOjpdKi86IHsgLyogbjpcIkJydEFjdGl2ZVhcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjg1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQWN0aXZlWENvbnRyb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VNZW1iZXJzU29ydEJ5XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjg4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsSWdub3JlRUNzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjg5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbElnbm9yZUVDXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI4QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxJZ25vcmVFQ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjhCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3NQcm9wXCIsICovIGY6cGFyc2VfQnJ0Q3NQcm9wIH0sXG5cdC8qOjpbKi8weDAyOEMvKjo6XSovOiB7IC8qIG46XCJCcnRDc1BhZ2VTZXR1cFwiICovIH0sXG5cdC8qOjpbKi8weDAyOEQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJDc1ZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjhFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVXNlckNzVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjhGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2VyQ3NWaWV3XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjkwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVXNlckNzVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBjZFNGQ0lFbnRyaWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjkyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0ZDSUVudHJpZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjkzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENEU0ZDSUVudHJ5XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdFBhcnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjk1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdFBhcnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjk2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTGlzdFBhcnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI5Ny8qOjpdKi86IHsgLyogbjpcIkJydFNoZWV0Q2FsY1Byb3BcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjk4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Gbkdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjk5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm5Hcm91cFwiICovIH0sXG5cdC8qOjpbKi8weDAyOUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGbkdyb3VwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI5Qi8qOjpdKi86IHsgLyogbjpcIkJydFN1cEFkZGluXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5Qy8qOjpdKi86IHsgLyogbjpcIkJydFNYVERNUE9yZGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5RC8qOjpdKi86IHsgLyogbjpcIkJydENzUHJvdGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDAyOUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldzU29ydE1hcFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDJBMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFdzU29ydE1hcFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyQTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJSU29ydFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDJBMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJSU29ydFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyQTMvKjo6XSovOiB7IC8qIG46XCJCcnRSUlNvcnRJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBNC8qOjpdKi86IHsgLyogbjpcIkJydEZpbGVTaGFyaW5nSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBNS8qOjpdKi86IHsgLyogbjpcIkJydEJvb2tQcm90ZWN0aW9uSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBNi8qOjpdKi86IHsgLyogbjpcIkJydFNoZWV0UHJvdGVjdGlvbklzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTcvKjo6XSovOiB7IC8qIG46XCJCcnRDc1Byb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBOS8qOjpdKi86IHsgLyogbjpcIkJydERWYWxMaXN0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwMC8qOjpdKi86IHsgLyogbjpcIkJydFJ3RGVzY2VudFwiICovIH0sXG5cdC8qOjpbKi8weDA0MDEvKjo6XSovOiB7IC8qIG46XCJCcnRLbm93bkZvbnRzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwMi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUdXBsZVNldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQwMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVHVwbGVTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFR1cGxlU2V0SGVhZGVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUdXBsZVNldEhlYWRlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MDYvKjo6XSovOiB7IC8qIG46XCJCcnRTWFR1cGxlU2V0SGVhZGVySXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDA0MDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXREYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUdXBsZVNldERhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFR1cGxlU2V0Um93XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUdXBsZVNldFJvd1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MEIvKjo6XSovOiB7IC8qIG46XCJCcnRTWFR1cGxlU2V0Um93SXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDA0MEMvKjo6XSovOiB7IC8qIG46XCJCcnROYW1lRXh0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwRC8qOjpdKi86IHsgLyogbjpcIkJydFBDREgxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW0xNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQwRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNNZW0xNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MTAvKjo6XSovOiB7IC8qIG46XCJCcnRTWFRIMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TcGFya2xpbmVHcm91cFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNwYXJrbGluZUdyb3VwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQxMy8qOjpdKi86IHsgLyogbjpcIkJydFNwYXJrbGluZVwiICovIH0sXG5cdC8qOjpbKi8weDA0MTQvKjo6XSovOiB7IC8qIG46XCJCcnRTWERJMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0V3NGbXRJbmZvRXgxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MTYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZzE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DRlJ1bGUxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENGUnVsZTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQxQS8qOjpdKi86IHsgLyogbjpcIkJydENGVk8xNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRhdGFiYXIxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQxQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSWNvblNldDE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDFELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFZhbDE0XCIsICovIGY6IHBhcnNlX0JydERWYWwxNCB9LFxuXHQvKjo6WyovMHgwNDFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EVmFsczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q29sb3IxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNwYXJrbGluZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTcGFya2xpbmVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyMi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3BhcmtsaW5lR3JvdXBzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3BhcmtsaW5lR3JvdXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyNS8qOjpdKi86IHsgLyogbjpcIkJydFNYVkQxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MjYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVmlldzE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWaWV3MTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZpZXcxNlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVmlldzE2XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyQS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MkIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0QxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MkMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm4xNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dENvbm4xNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MkUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZUlEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVJRFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZURlZlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlRGVmXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2Vyc0V4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2Vyc0V4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0M0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJFeFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0M0IvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0M0QvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZVBpdm90VGFibGVzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQzRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVPbGFwSW1wbFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlT2xhcEltcGxcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsc0RhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NDEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUxldmVsc0RhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsRGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0My8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlTGV2ZWxEYXRhXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVTaVJhbmdlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlU2lSYW5nZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NDcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVPbGFwSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDA0NDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlU2VsZWN0aW9uc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0QS8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlU2VsZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ0Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlU2VsZWN0aW9uc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NEMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlTmF0aXZlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDRELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVOYXRpdmVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDRFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVOYXRpdmVJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ0Ri8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHJvdGVjdGlvbjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1MC8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHJvdGVjdGlvbklzbzE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1MS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxJZ25vcmVFQzE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1Ny8qOjpdKi86IHsgLyogbjpcIkJydExpc3QxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NTgvKjo6XSovOiB7IC8qIG46XCJCcnRDRkljb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ1RC8qOjpdKi86IHsgLyogbjpcIkJydFdiUHJvcDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hFZGl0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hFZGl0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hFZGl0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRWRpdHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENoYW5nZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ2My8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ2hhbmdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDaGFuZ2VzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDaGFuZ2VzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2Ni8qOjpdKi86IHsgLyogbjpcIkJydFNYVHVwbGVJdGVtc1wiICovIH0sXG5cdC8qOjpbKi8weDA0NjgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlclN0eWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyU3R5bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyU3R5bGVFbGVtZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ2Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3R5bGVTaGVldEV4dDE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3R5bGVTaGVldEV4dDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDZFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVzUGl2b3RDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ2Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29uZGl0aW9uYWxGb3JtYXR0aW5nc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDcxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtRXh0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDcyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbUV4dFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1zRXh0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDc0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbXNFeHRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDc1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENERmllbGQxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0NzYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlclN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlclN0eWxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlclN0eWxlRWxlbWVudHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJTdHlsZUVsZW1lbnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3QS8qOjpdKi86IHsgLyogbjpcIkJydENGUnVsZUV4dFwiICovIH0sXG5cdC8qOjpbKi8weDA0N0IvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdDE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDdDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDb25kRm10MTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDdELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENvbmRGbXRzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0N0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXRzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDgwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Tb3J0Q29uZDE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDgxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU29ydENvbmQxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREVmFsczE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4My8qOjpdKi86IHsgLyogbjpcIkJydEVuZEljb25TZXQxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYXRhYmFyMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDg1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xvclNjYWxlMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0ODYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb2xvclNjYWxlMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDg3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeHJ1bGVzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0ODgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeHJ1bGVzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDg5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUnVsZTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJ1bGUxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OEIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDhDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGaWx0ZXJzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDhELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QUkZpbHRlcjE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDhFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGaWx0ZXIxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OEYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRkl0ZW0xNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ5MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRkl0ZW0xNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxJZ25vcmVFQ3MxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ5Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxJZ25vcmVFQ3MxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OTMvKjo6XSovOiB7IC8qIG46XCJCcnREeGYxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0OTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkR4RjE0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ5NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZER4ZjE0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OTkvKjo6XSovOiB7IC8qIG46XCJCcnRGaWx0ZXIxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0OUEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkN1c3RvbUZpbHRlcnMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ5Qy8qOjpdKi86IHsgLyogbjpcIkJydEN1c3RvbUZpbHRlcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5RC8qOjpdKi86IHsgLyogbjpcIkJydEljb25GaWx0ZXIxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0OUUvKjo6XSovOiB7IC8qIG46XCJCcnRQaXZvdENhY2hlQ29ubmVjdGlvbk5hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EZWNvdXBsZWRQaXZvdENhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGVjb3VwbGVkUGl2b3RDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MDIvKjo6XSovOiB7IC8qIG46XCJCcnREZWNvdXBsZWRQaXZvdENhY2hlSURcIiAqLyB9LFxuXHQvKjo6WyovMHgwODAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdFRhYmxlUmVmc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgwNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90VGFibGVSZWZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwNS8qOjpdKi86IHsgLyogbjpcIkJydFBpdm90VGFibGVSZWZcIiAqLyB9LFxuXHQvKjo6WyovMHgwODA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVCb29rUGl2b3RUYWJsZXNcIiAqLyB9LFxuXHQvKjo6WyovMHgwODA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeHZjZWxsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgwOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4dmNlbGxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3hSb3dcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeFJvd1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MEMvKjo6XSovOiB7IC8qIG46XCJCcnRQY2RDYWxjTWVtMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UXNpMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5XZWJFeHRlbnNpb25zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV2ViRXh0ZW5zaW9uc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MTYvKjo6XSovOiB7IC8qIG46XCJCcnRXZWJFeHRlbnNpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwODE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QWJzUGF0aDE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxOC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RUYWJsZVVJU2V0dGluZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdFRhYmxlVUlTZXR0aW5nc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MUIvKjo6XSovOiB7IC8qIG46XCJCcnRUYWJsZVNsaWNlckNhY2hlSURzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxQy8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlU2xpY2VyQ2FjaGVJRFwiICovIH0sXG5cdC8qOjpbKi8weDA4MUQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRhYmxlU2xpY2VyQ2FjaGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUYWJsZVNsaWNlckNhY2hlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgxRi8qOjpdKi86IHsgLyogbjpcIkJydFN4RmlsdGVyMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyMi8qOjpdKi86IHsgLyogbjpcIkJydFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURcIiAqLyB9LFxuXHQvKjo6WyovMHgwODIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZUNhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lQ2FjaGVJRFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lc0V4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVzRXhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZUV4XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVFeFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MkIvKjo6XSovOiB7IC8qIG46XCJCcnRXb3JrQm9va1ByMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESDE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgyRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVTdHlsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgyRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lU3R5bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGltZWxpbmVTdHlsZUVsZW1lbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwODMwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlc2hlZXRFeHQxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lU3R5bGVzaGVldEV4dDE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzMi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVTdHlsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MzMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZVN0eWxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MzQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lU3R5bGVFbGVtZW50c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lU3R5bGVFbGVtZW50c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MzYvKjo6XSovOiB7IC8qIG46XCJCcnREeGYxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkR4ZnMxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZER4ZnMxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MzkvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZUhpZGVJdGVtc1dpdGhOb0RhdGFcIiAqLyB9LFxuXHQvKjo6WyovMHgwODNBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JdGVtVW5pcXVlTmFtZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4M0IvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJdGVtVW5pcXVlTmFtZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SXRlbVVuaXF1ZU5hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FeHRDb25uMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4M0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uMTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5PbGVkYlByMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NDAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRPbGVkYlByMTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYXRhRmVlZFByMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NDIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYXRhRmVlZFByMTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGV4dFByMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg0NS8qOjpdKi86IHsgLyogbjpcIkJydERiQ29tbWFuZDE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg0Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGJUYWJsZXMxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZERiVGFibGVzMTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RGJUYWJsZTE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg0OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YU1vZGVsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGF0YU1vZGVsXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTW9kZWxUYWJsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFRhYmxlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NEQvKjo6XSovOiB7IC8qIG46XCJCcnRNb2RlbFRhYmxlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg0RS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTW9kZWxSZWxhdGlvbnNoaXBzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODRGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTW9kZWxSZWxhdGlvbnNoaXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1MC8qOjpdKi86IHsgLyogbjpcIkJydE1vZGVsUmVsYXRpb25zaGlwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg1MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUeHRXaXoxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDVHh0V2l6MTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1RXRmxkSW5mb0xzdDE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNUV0ZsZEluZm9Mc3QxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVFdGbGRJbmZvMTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NTYvKjo6XSovOiB7IC8qIG46XCJCcnRGaWVsZExpc3RBY3RpdmVJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg1Ny8qOjpdKi86IHsgLyogbjpcIkJydFBpdm90Q2FjaGVJZFZlcnNpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwODU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hESTE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDg1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTW9kZWxUaW1lR3JvdXBpbmdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTW9kZWxUaW1lR3JvdXBpbmdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFRpbWVHcm91cGluZ1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NUQvKjo6XSovOiB7IC8qIG46XCJCcnRNb2RlbFRpbWVHcm91cGluZ0NhbGNDb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwQzAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VWlkXCIgKi8gfSxcblx0Lyo6OlsqLzB4MEMwMS8qOjpdKi86IHsgLyogbjpcIkJydFJldmlzaW9uUHRyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTAwMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRHluYW1pY0FycmF5UHJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEwMDEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREeW5hbWljQXJyYXlQclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzOEEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hWYWx1ZUJsb2NrXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxMzhCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaFZhbHVlQmxvY2tcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0Q5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5SaWNoRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTNEQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJpY2hGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNEQi8qOjpdKi86IHsgLyogbjpcIkJydFJpY2hGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0RDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5SaWNoRmlsdGVyQ29sdW1uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0RELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaEZpbHRlckNvbHVtblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzREUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkN1c3RvbVJpY2hGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0RGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ3VzdG9tUmljaEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0UwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3VzdG9tUmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzRTEvKjo6XSovOiB7IC8qIG46XCJCcnRUb3AxMFJpY2hGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0UyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHluYW1pY1JpY2hGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0U0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5SaWNoU29ydENvbmRpdGlvblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTNFNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFJpY2hTb3J0Q29uZGl0aW9uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNFNi8qOjpdKi86IHsgLyogbjpcIkJydFJpY2hGaWx0ZXJEYXRlR3JvdXBJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2FsY0ZlYXR1cmVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0U4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2FsY0ZlYXR1cmVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNFOS8qOjpdKi86IHsgLyogbjpcIkJydENhbGNGZWF0dXJlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFQi8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybmFsTGlua3NQclwiICovIH0sXG5cdC8qOjpbKi8weEZGRkYvKjo6XSovOiB7IG46XCJcIiB9XG59O1xuXG4vKiBbTVMtWExTXSAyLjMgUmVjb3JkIEVudW1lcmF0aW9uIChhbmQgb3RoZXIgc291cmNlcykgKi9cbnZhciBYTFNSZWNvcmRFbnVtID0ge1xuXHQvKiBbTVMtWExTXSAyLjMgUmVjb3JkIEVudW1lcmF0aW9uIDIwMjEtMDgtMTcgKi9cblx0Lyo6OlsqLzB4MDAwNi8qOjpdKi86IHsgLyogbjpcIkZvcm11bGFcIiwgKi8gZjpwYXJzZV9Gb3JtdWxhIH0sXG5cdC8qOjpbKi8weDAwMGEvKjo6XSovOiB7IC8qIG46XCJFT0ZcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAwMGMvKjo6XSovOiB7IC8qIG46XCJDYWxjQ291bnRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LCAvL1xuXHQvKjo6WyovMHgwMDBkLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY01vZGVcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LCAvL1xuXHQvKjo6WyovMHgwMDBlLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY1ByZWNpc2lvblwiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMDBmLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY1JlZk1vZGVcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDAxMC8qOjpdKi86IHsgLyogbjpcIkNhbGNEZWx0YVwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy9cblx0Lyo6OlsqLzB4MDAxMS8qOjpdKi86IHsgLyogbjpcIkNhbGNJdGVyXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAwMTIvKjo6XSovOiB7IC8qIG46XCJQcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMTMvKjo6XSovOiB7IC8qIG46XCJQYXNzd29yZFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwMTQvKjo6XSovOiB7IC8qIG46XCJIZWFkZXJcIiwgKi8gZjpwYXJzZV9YTEhlYWRlckZvb3RlciB9LFxuXHQvKjo6WyovMHgwMDE1Lyo6Ol0qLzogeyAvKiBuOlwiRm9vdGVyXCIsICovIGY6cGFyc2VfWExIZWFkZXJGb290ZXIgfSxcblx0Lyo6OlsqLzB4MDAxNy8qOjpdKi86IHsgLyogbjpcIkV4dGVyblNoZWV0XCIsICovIGY6cGFyc2VfRXh0ZXJuU2hlZXQgfSxcblx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgLyogbjpcIkxibFwiLCAqLyBmOnBhcnNlX0xibCB9LFxuXHQvKjo6WyovMHgwMDE5Lyo6Ol0qLzogeyAvKiBuOlwiV2luUHJvdGVjdFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDFhLyo6Ol0qLzogeyAvKiBuOlwiVmVydGljYWxQYWdlQnJlYWtzXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMWIvKjo6XSovOiB7IC8qIG46XCJIb3Jpem9udGFsUGFnZUJyZWFrc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDFjLyo6Ol0qLzogeyAvKiBuOlwiTm90ZVwiLCAqLyBmOnBhcnNlX05vdGUgfSxcblx0Lyo6OlsqLzB4MDAxZC8qOjpdKi86IHsgLyogbjpcIlNlbGVjdGlvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDIyLyo6Ol0qLzogeyAvKiBuOlwiRGF0ZTE5MDRcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgLyogbjpcIkV4dGVybk5hbWVcIiwgKi8gZjpwYXJzZV9FeHRlcm5OYW1lIH0sXG5cdC8qOjpbKi8weDAwMjYvKjo6XSovOiB7IC8qIG46XCJMZWZ0TWFyZ2luXCIsICovIGY6cGFyc2VfWG51bSB9LCAvLyAqXG5cdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IC8qIG46XCJSaWdodE1hcmdpblwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy8gKlxuXHQvKjo6WyovMHgwMDI4Lyo6Ol0qLzogeyAvKiBuOlwiVG9wTWFyZ2luXCIsICovIGY6cGFyc2VfWG51bSB9LCAvLyAqXG5cdC8qOjpbKi8weDAwMjkvKjo6XSovOiB7IC8qIG46XCJCb3R0b21NYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyYS8qOjpdKi86IHsgLyogbjpcIlByaW50Um93Q29sXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMmIvKjo6XSovOiB7IC8qIG46XCJQcmludEdyaWRcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAyZi8qOjpdKi86IHsgLyogbjpcIkZpbGVQYXNzXCIsICovIGY6cGFyc2VfRmlsZVBhc3MgfSxcblx0Lyo6OlsqLzB4MDAzMS8qOjpdKi86IHsgLyogbjpcIkZvbnRcIiwgKi8gZjpwYXJzZV9Gb250IH0sXG5cdC8qOjpbKi8weDAwMzMvKjo6XSovOiB7IC8qIG46XCJQcmludFNpemVcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDNjLyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAzZC8qOjpdKi86IHsgLyogbjpcIldpbmRvdzFcIiwgKi8gZjpwYXJzZV9XaW5kb3cxIH0sXG5cdC8qOjpbKi8weDAwNDAvKjo6XSovOiB7IC8qIG46XCJCYWNrdXBcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDA0MS8qOjpdKi86IHsgLyogbjpcIlBhbmVcIiwgKi8gZjpwYXJzZV9QYW5lIH0sXG5cdC8qOjpbKi8weDAwNDIvKjo6XSovOiB7IC8qIG46XCJDb2RlUGFnZVwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwNGQvKjo6XSovOiB7IC8qIG46XCJQbHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1MC8qOjpdKi86IHsgLyogbjpcIkRDb25cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1MS8qOjpdKi86IHsgLyogbjpcIkRDb25SZWZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Mi8qOjpdKi86IHsgLyogbjpcIkRDb25OYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNTUvKjo6XSovOiB7IC8qIG46XCJEZWZDb2xXaWR0aFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwNTkvKjo6XSovOiB7IC8qIG46XCJYQ1RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1YS8qOjpdKi86IHsgLyogbjpcIkNSTlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDViLyo6Ol0qLzogeyAvKiBuOlwiRmlsZVNoYXJpbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Yy8qOjpdKi86IHsgLyogbjpcIldyaXRlQWNjZXNzXCIsICovIGY6cGFyc2VfV3JpdGVBY2Nlc3MgfSxcblx0Lyo6OlsqLzB4MDA1ZC8qOjpdKi86IHsgLyogbjpcIk9ialwiLCAqLyBmOnBhcnNlX09iaiB9LFxuXHQvKjo6WyovMHgwMDVlLyo6Ol0qLzogeyAvKiBuOlwiVW5jYWxjZWRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Zi8qOjpdKi86IHsgLyogbjpcIkNhbGNTYXZlUmVjYWxjXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAwNjAvKjo6XSovOiB7IC8qIG46XCJUZW1wbGF0ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDYxLyo6Ol0qLzogeyAvKiBuOlwiSW50bFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDYzLyo6Ol0qLzogeyAvKiBuOlwiT2JqUHJvdGVjdFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDdkLyo6Ol0qLzogeyAvKiBuOlwiQ29sSW5mb1wiLCAqLyBmOnBhcnNlX0NvbEluZm8gfSxcblx0Lyo6OlsqLzB4MDA4MC8qOjpdKi86IHsgLyogbjpcIkd1dHNcIiwgKi8gZjpwYXJzZV9HdXRzIH0sXG5cdC8qOjpbKi8weDAwODEvKjo6XSovOiB7IC8qIG46XCJXc0Jvb2xcIiwgKi8gZjpwYXJzZV9Xc0Jvb2wgfSxcblx0Lyo6OlsqLzB4MDA4Mi8qOjpdKi86IHsgLyogbjpcIkdyaWRTZXRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDgzLyo6Ol0qLzogeyAvKiBuOlwiSENlbnRlclwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDg0Lyo6Ol0qLzogeyAvKiBuOlwiVkNlbnRlclwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDg1Lyo6Ol0qLzogeyAvKiBuOlwiQm91bmRTaGVldDhcIiwgKi8gZjpwYXJzZV9Cb3VuZFNoZWV0OCB9LFxuXHQvKjo6WyovMHgwMDg2Lyo6Ol0qLzogeyAvKiBuOlwiV3JpdGVQcm90ZWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwOGMvKjo6XSovOiB7IC8qIG46XCJDb3VudHJ5XCIsICovIGY6cGFyc2VfQ291bnRyeSB9LFxuXHQvKjo6WyovMHgwMDhkLyo6Ol0qLzogeyAvKiBuOlwiSGlkZU9ialwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwOTAvKjo6XSovOiB7IC8qIG46XCJTb3J0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTIvKjo6XSovOiB7IC8qIG46XCJQYWxldHRlXCIsICovIGY6cGFyc2VfUGFsZXR0ZSB9LFxuXHQvKjo6WyovMHgwMDk3Lyo6Ol0qLzogeyAvKiBuOlwiU3luY1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDk4Lyo6Ol0qLzogeyAvKiBuOlwiTFByXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTkvKjo6XSovOiB7IC8qIG46XCJEeEdDb2xcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5YS8qOjpdKi86IHsgLyogbjpcIkZuR3JvdXBOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOWIvKjo6XSovOiB7IC8qIG46XCJGaWx0ZXJNb2RlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOWMvKjo6XSovOiB7IC8qIG46XCJCdWlsdEluRm5Hcm91cENvdW50XCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA5ZC8qOjpdKi86IHsgLyogbjpcIkF1dG9GaWx0ZXJJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOWUvKjo6XSovOiB7IC8qIG46XCJBdXRvRmlsdGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYTAvKjo6XSovOiB7IC8qIG46XCJTY2xcIiwgKi8gZjpwYXJzZV9TY2wgfSxcblx0Lyo6OlsqLzB4MDBhMS8qOjpdKi86IHsgLyogbjpcIlNldHVwXCIsICovIGY6cGFyc2VfU2V0dXAgfSxcblx0Lyo6OlsqLzB4MDBhZS8qOjpdKi86IHsgLyogbjpcIlNjZW5NYW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBhZi8qOjpdKi86IHsgLyogbjpcIlNDRU5BUklPXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjAvKjo6XSovOiB7IC8qIG46XCJTeFZpZXdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiMS8qOjpdKi86IHsgLyogbjpcIlN4dmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiMi8qOjpdKi86IHsgLyogbjpcIlNYVklcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiNC8qOjpdKi86IHsgLyogbjpcIlN4SXZkXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjUvKjo6XSovOiB7IC8qIG46XCJTWExJXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjYvKjo6XSovOiB7IC8qIG46XCJTWFBJXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjgvKjo6XSovOiB7IC8qIG46XCJEb2NSb3V0ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI5Lyo6Ol0qLzogeyAvKiBuOlwiUmVjaXBOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYmQvKjo6XSovOiB7IC8qIG46XCJNdWxSa1wiLCAqLyBmOnBhcnNlX011bFJrIH0sXG5cdC8qOjpbKi8weDAwYmUvKjo6XSovOiB7IC8qIG46XCJNdWxCbGFua1wiLCAqLyBmOnBhcnNlX011bEJsYW5rIH0sXG5cdC8qOjpbKi8weDAwYzEvKjo6XSovOiB7IC8qIG46XCJNbXNcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAwYzUvKjo6XSovOiB7IC8qIG46XCJTWERJXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzYvKjo6XSovOiB7IC8qIG46XCJTWERCXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzcvKjo6XSovOiB7IC8qIG46XCJTWEZEQlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGM4Lyo6Ol0qLzogeyAvKiBuOlwiU1hEQkJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjOS8qOjpdKi86IHsgLyogbjpcIlNYTnVtXCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2EvKjo6XSovOiB7IC8qIG46XCJTeEJvb2xcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDBjYi8qOjpdKi86IHsgLyogbjpcIlN4RXJyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2MvKjo6XSovOiB7IC8qIG46XCJTWEludFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNkLyo6Ol0qLzogeyAvKiBuOlwiU1hTdHJpbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjZS8qOjpdKi86IHsgLyogbjpcIlNYRHRyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2YvKjo6XSovOiB7IC8qIG46XCJTeE5pbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQwLyo6Ol0qLzogeyAvKiBuOlwiU1hUYmxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkMS8qOjpdKi86IHsgLyogbjpcIlNYVEJSR0lJVE1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkMi8qOjpdKi86IHsgLyogbjpcIlN4VGJwZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQzLyo6Ol0qLzogeyAvKiBuOlwiT2JQcm9qXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDUvKjo6XSovOiB7IC8qIG46XCJTWFN0cmVhbUlEXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDcvKjo6XSovOiB7IC8qIG46XCJEQkNlbGxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkOC8qOjpdKi86IHsgLyogbjpcIlNYUm5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDkvKjo6XSovOiB7IC8qIG46XCJTeElzeG9wZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkYS8qOjpdKi86IHsgLyogbjpcIkJvb2tCb29sXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDBkYy8qOjpdKi86IHsgLyogbjpcIkRiT3JQYXJhbVFyeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGRkLyo6Ol0qLzogeyAvKiBuOlwiU2NlbmFyaW9Qcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwZGUvKjo6XSovOiB7IC8qIG46XCJPbGVPYmplY3RTaXplXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZTAvKjo6XSovOiB7IC8qIG46XCJYRlwiLCAqLyBmOnBhcnNlX1hGIH0sXG5cdC8qOjpbKi8weDAwZTEvKjo6XSovOiB7IC8qIG46XCJJbnRlcmZhY2VIZHJcIiwgKi8gZjpwYXJzZV9JbnRlcmZhY2VIZHIgfSxcblx0Lyo6OlsqLzB4MDBlMi8qOjpdKi86IHsgLyogbjpcIkludGVyZmFjZUVuZFwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDBlMy8qOjpdKi86IHsgLyogbjpcIlNYVlNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlNS8qOjpdKi86IHsgLyogbjpcIk1lcmdlQ2VsbHNcIiwgKi8gZjpwYXJzZV9NZXJnZUNlbGxzIH0sXG5cdC8qOjpbKi8weDAwZTkvKjo6XSovOiB7IC8qIG46XCJCa0hpbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGViLyo6Ol0qLzogeyAvKiBuOlwiTXNvRHJhd2luZ0dyb3VwXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWMvKjo6XSovOiB7IC8qIG46XCJNc29EcmF3aW5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWQvKjo6XSovOiB7IC8qIG46XCJNc29EcmF3aW5nU2VsZWN0aW9uXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWYvKjo6XSovOiB7IC8qIG46XCJQaG9uZXRpY0luZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmMC8qOjpdKi86IHsgLyogbjpcIlN4UnVsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGYxLyo6Ol0qLzogeyAvKiBuOlwiU1hFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGYyLyo6Ol0qLzogeyAvKiBuOlwiU3hGaWx0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjQvKjo6XSovOiB7IC8qIG46XCJTeERYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY1Lyo6Ol0qLzogeyAvKiBuOlwiU3hJdG1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmNi8qOjpdKi86IHsgLyogbjpcIlN4TmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY3Lyo6Ol0qLzogeyAvKiBuOlwiU3hTZWxlY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmOC8qOjpdKi86IHsgLyogbjpcIlNYUGFpclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY5Lyo6Ol0qLzogeyAvKiBuOlwiU3hGbWxhXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZmIvKjo6XSovOiB7IC8qIG46XCJTeEZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGZjLyo6Ol0qLzogeyAvKiBuOlwiU1NUXCIsICovIGY6cGFyc2VfU1NUIH0sXG5cdC8qOjpbKi8weDAwZmQvKjo6XSovOiB7IC8qIG46XCJMYWJlbFNzdFwiLCAqLyBmOnBhcnNlX0xhYmVsU3N0IH0sXG5cdC8qOjpbKi8weDAwZmYvKjo6XSovOiB7IC8qIG46XCJFeHRTU1RcIiwgKi8gZjpwYXJzZV9FeHRTU1QgfSxcblx0Lyo6OlsqLzB4MDEwMC8qOjpdKi86IHsgLyogbjpcIlNYVkRFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTAzLyo6Ol0qLzogeyAvKiBuOlwiU1hGb3JtdWxhXCIsICovIH0sXG5cdC8qOjpbKi8weDAxMjIvKjo6XSovOiB7IC8qIG46XCJTWERCRXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEzNy8qOjpdKi86IHsgLyogbjpcIlJSREluc0RlbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTM4Lyo6Ol0qLzogeyAvKiBuOlwiUlJESGVhZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTNiLyo6Ol0qLzogeyAvKiBuOlwiUlJEQ2hnQ2VsbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTNkLyo6Ol0qLzogeyAvKiBuOlwiUlJUYWJJZFwiLCAqLyBmOnBhcnNldWludDE2YSB9LFxuXHQvKjo6WyovMHgwMTNlLyo6Ol0qLzogeyAvKiBuOlwiUlJEUmVuU2hlZXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEzZi8qOjpdKi86IHsgLyogbjpcIlJSU29ydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTQwLyo6Ol0qLzogeyAvKiBuOlwiUlJETW92ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRhLyo6Ol0qLzogeyAvKiBuOlwiUlJGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0Yi8qOjpdKi86IHsgLyogbjpcIlJSQXV0b0ZtdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRkLyo6Ol0qLzogeyAvKiBuOlwiUlJJbnNlcnRTaFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRlLyo6Ol0qLzogeyAvKiBuOlwiUlJETW92ZUJlZ2luXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGYvKjo6XSovOiB7IC8qIG46XCJSUkRNb3ZlRW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTAvKjo6XSovOiB7IC8qIG46XCJSUkRJbnNEZWxCZWdpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTUxLyo6Ol0qLzogeyAvKiBuOlwiUlJESW5zRGVsRW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTIvKjo6XSovOiB7IC8qIG46XCJSUkRDb25mbGljdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTUzLyo6Ol0qLzogeyAvKiBuOlwiUlJERGVmTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTU0Lyo6Ol0qLzogeyAvKiBuOlwiUlJEUnN0RXR4cFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTVmLyo6Ol0qLzogeyAvKiBuOlwiTFJuZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTYwLyo6Ol0qLzogeyAvKiBuOlwiVXNlc0VMRnNcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDE2MS8qOjpdKi86IHsgLyogbjpcIkRTRlwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDE5MS8qOjpdKi86IHsgLyogbjpcIkNVc3JcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Mi8qOjpdKi86IHsgLyogbjpcIkNiVXNyXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTMvKjo6XSovOiB7IC8qIG46XCJVc3JJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTQvKjo6XSovOiB7IC8qIG46XCJVc3JFeGNsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTUvKjo6XSovOiB7IC8qIG46XCJGaWxlTG9ja1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTk2Lyo6Ol0qLzogeyAvKiBuOlwiUlJESW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTk3Lyo6Ol0qLzogeyAvKiBuOlwiQkNVc3JzXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTgvKjo6XSovOiB7IC8qIG46XCJVc3JDaGtcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhOS8qOjpdKi86IHsgLyogbjpcIlVzZXJCVmlld1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFhLyo6Ol0qLzogeyAvKiBuOlwiVXNlclNWaWV3QmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhYi8qOjpdKi86IHsgLyogbjpcIlVzZXJTVmlld0VuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFjLyo6Ol0qLzogeyAvKiBuOlwiUlJEVXNlclZpZXdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhZC8qOjpdKi86IHsgLyogbjpcIlFzaVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFlLyo6Ol0qLzogeyAvKiBuOlwiU3VwQm9va1wiLCAqLyBmOnBhcnNlX1N1cEJvb2sgfSxcblx0Lyo6OlsqLzB4MDFhZi8qOjpdKi86IHsgLyogbjpcIlByb3Q0UmV2XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAxYjAvKjo6XSovOiB7IC8qIG46XCJDb25kRm10XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjEvKjo6XSovOiB7IC8qIG46XCJDRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWIyLyo6Ol0qLzogeyAvKiBuOlwiRFZhbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWI1Lyo6Ol0qLzogeyAvKiBuOlwiRENvbkJpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWI2Lyo6Ol0qLzogeyAvKiBuOlwiVHhPXCIsICovIGY6cGFyc2VfVHhPIH0sXG5cdC8qOjpbKi8weDAxYjcvKjo6XSovOiB7IC8qIG46XCJSZWZyZXNoQWxsXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAxYjgvKjo6XSovOiB7IC8qIG46XCJITGlua1wiLCAqLyBmOnBhcnNlX0hMaW5rIH0sXG5cdC8qOjpbKi8weDAxYjkvKjo6XSovOiB7IC8qIG46XCJMZWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiYS8qOjpdKi86IHsgLyogbjpcIkNvZGVOYW1lXCIsICovIGY6cGFyc2VfWExVbmljb2RlU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAxYmIvKjo6XSovOiB7IC8qIG46XCJTWEZEQlR5cGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiYy8qOjpdKi86IHsgLyogbjpcIlByb3Q0UmV2UGFzc1wiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAxYmQvKjo6XSovOiB7IC8qIG46XCJPYk5vTWFjcm9zXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYmUvKjo6XSovOiB7IC8qIG46XCJEdlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWMwLyo6Ol0qLzogeyAvKiBuOlwiRXhjZWw5RmlsZVwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDFjMS8qOjpdKi86IHsgLyogbjpcIlJlY2FsY0lkXCIsICovIGY6cGFyc2VfUmVjYWxjSWQsIHI6Mn0sXG5cdC8qOjpbKi8weDAxYzIvKjo6XSovOiB7IC8qIG46XCJFbnRFeFUyXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMjAwLyo6Ol0qLzogeyAvKiBuOlwiRGltZW5zaW9uc1wiLCAqLyBmOnBhcnNlX0RpbWVuc2lvbnMgfSxcblx0Lyo6OlsqLzB4MDIwMS8qOjpdKi86IHsgLyogbjpcIkJsYW5rXCIsICovIGY6cGFyc2VfQmxhbmsgfSxcblx0Lyo6OlsqLzB4MDIwMy8qOjpdKi86IHsgLyogbjpcIk51bWJlclwiLCAqLyBmOnBhcnNlX051bWJlciB9LFxuXHQvKjo6WyovMHgwMjA0Lyo6Ol0qLzogeyAvKiBuOlwiTGFiZWxcIiwgKi8gZjpwYXJzZV9MYWJlbCB9LFxuXHQvKjo6WyovMHgwMjA1Lyo6Ol0qLzogeyAvKiBuOlwiQm9vbEVyclwiLCAqLyBmOnBhcnNlX0Jvb2xFcnIgfSxcblx0Lyo6OlsqLzB4MDIwNy8qOjpdKi86IHsgLyogbjpcIlN0cmluZ1wiLCAqLyBmOnBhcnNlX1N0cmluZyB9LFxuXHQvKjo6WyovMHgwMjA4Lyo6Ol0qLzogeyAvKiBuOlwiUm93XCIsICovIGY6cGFyc2VfUm93IH0sXG5cdC8qOjpbKi8weDAyMGIvKjo6XSovOiB7IC8qIG46XCJJbmRleFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjIxLyo6Ol0qLzogeyAvKiBuOlwiQXJyYXlcIiwgKi8gZjpwYXJzZV9BcnJheSB9LFxuXHQvKjo6WyovMHgwMjI1Lyo6Ol0qLzogeyAvKiBuOlwiRGVmYXVsdFJvd0hlaWdodFwiLCAqLyBmOnBhcnNlX0RlZmF1bHRSb3dIZWlnaHQgfSxcblx0Lyo6OlsqLzB4MDIzNi8qOjpdKi86IHsgLyogbjpcIlRhYmxlXCIsICovIH0sXG5cdC8qOjpbKi8weDAyM2UvKjo6XSovOiB7IC8qIG46XCJXaW5kb3cyXCIsICovIGY6cGFyc2VfV2luZG93MiB9LFxuXHQvKjo6WyovMHgwMjdlLyo6Ol0qLzogeyAvKiBuOlwiUktcIiwgKi8gZjpwYXJzZV9SSyB9LFxuXHQvKjo6WyovMHgwMjkzLyo6Ol0qLzogeyAvKiBuOlwiU3R5bGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDQxOC8qOjpdKi86IHsgLyogbjpcIkJpZ05hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDQxZS8qOjpdKi86IHsgLyogbjpcIkZvcm1hdFwiLCAqLyBmOnBhcnNlX0Zvcm1hdCB9LFxuXHQvKjo6WyovMHgwNDNjLyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVCaWdOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDA0YmMvKjo6XSovOiB7IC8qIG46XCJTaHJGbWxhXCIsICovIGY6cGFyc2VfU2hyRm1sYSB9LFxuXHQvKjo6WyovMHgwODAwLyo6Ol0qLzogeyAvKiBuOlwiSExpbmtUb29sdGlwXCIsICovIGY6cGFyc2VfSExpbmtUb29sdGlwIH0sXG5cdC8qOjpbKi8weDA4MDEvKjo6XSovOiB7IC8qIG46XCJXZWJQdWJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwMi8qOjpdKi86IHsgLyogbjpcIlFzaVNYVGFnXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDMvKjo6XSovOiB7IC8qIG46XCJEQlF1ZXJ5RXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDQvKjo6XSovOiB7IC8qIG46XCJFeHRTdHJpbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNS8qOjpdKi86IHsgLyogbjpcIlR4dFFyeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA2Lyo6Ol0qLzogeyAvKiBuOlwiUXNpclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA3Lyo6Ol0qLzogeyAvKiBuOlwiUXNpZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA4Lyo6Ol0qLzogeyAvKiBuOlwiUlJEVFFTSUZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwODBhLyo6Ol0qLzogeyAvKiBuOlwiT2xlRGJDb25uXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGIvKjo6XSovOiB7IC8qIG46XCJXT3B0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGMvKjo6XSovOiB7IC8qIG46XCJTWFZpZXdFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODBkLyo6Ol0qLzogeyAvKiBuOlwiU1hUSFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODBlLyo6Ol0qLzogeyAvKiBuOlwiU1hQSUV4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGYvKjo6XSovOiB7IC8qIG46XCJTWFZEVEV4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MTAvKjo6XSovOiB7IC8qIG46XCJTWFZpZXdFeDlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMi8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlRnJ0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MTMvKjo6XSovOiB7IC8qIG46XCJSZWFsVGltZURhdGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1MC8qOjpdKi86IHsgLyogbjpcIkNoYXJ0RnJ0SW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODUxLyo6Ol0qLzogeyAvKiBuOlwiRnJ0V3JhcHBlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODUyLyo6Ol0qLzogeyAvKiBuOlwiU3RhcnRCbG9ja1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODUzLyo6Ol0qLzogeyAvKiBuOlwiRW5kQmxvY2tcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1NC8qOjpdKi86IHsgLyogbjpcIlN0YXJ0T2JqZWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTUvKjo6XSovOiB7IC8qIG46XCJFbmRPYmplY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1Ni8qOjpdKi86IHsgLyogbjpcIkNhdExhYlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU3Lyo6Ol0qLzogeyAvKiBuOlwiWU11bHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1OC8qOjpdKi86IHsgLyogbjpcIlNYVmlld0xpbmtcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1OS8qOjpdKi86IHsgLyogbjpcIlBpdm90Q2hhcnRCaXRzXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NWEvKjo6XSovOiB7IC8qIG46XCJGcnRGb250TGlzdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODYyLyo6Ol0qLzogeyAvKiBuOlwiU2hlZXRFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2My8qOjpdKi86IHsgLyogbjpcIkJvb2tFeHRcIiwgKi8gcjoxMn0sXG5cdC8qOjpbKi8weDA4NjQvKjo6XSovOiB7IC8qIG46XCJTWEFkZGxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2NS8qOjpdKi86IHsgLyogbjpcIkNyRXJyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjYvKjo6XSovOiB7IC8qIG46XCJIRlBpY3R1cmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Ny8qOjpdKi86IHsgLyogbjpcIkZlYXRIZHJcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDA4NjgvKjo6XSovOiB7IC8qIG46XCJGZWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NmEvKjo6XSovOiB7IC8qIG46XCJEYXRhTGFiRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NmIvKjo6XSovOiB7IC8qIG46XCJEYXRhTGFiRXh0Q29udGVudHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Yy8qOjpdKi86IHsgLyogbjpcIkNlbGxXYXRjaFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODcxLyo6Ol0qLzogeyAvKiBuOlwiRmVhdEhkcjExXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzIvKjo6XSovOiB7IC8qIG46XCJGZWF0dXJlMTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3NC8qOjpdKi86IHsgLyogbjpcIkRyb3BEb3duT2JqSWRzXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzUvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZUZydDExXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzYvKjo6XSovOiB7IC8qIG46XCJEQ29ublwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc3Lyo6Ol0qLzogeyAvKiBuOlwiTGlzdDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzgvKjo6XSovOiB7IC8qIG46XCJGZWF0dXJlMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3OS8qOjpdKi86IHsgLyogbjpcIkNvbmRGbXQxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODdhLyo6Ol0qLzogeyAvKiBuOlwiQ0YxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODdiLyo6Ol0qLzogeyAvKiBuOlwiQ0ZFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODdjLyo6Ol0qLzogeyAvKiBuOlwiWEZDUkNcIiwgKi8gZjpwYXJzZV9YRkNSQywgcjoxMiB9LFxuXHQvKjo6WyovMHgwODdkLyo6Ol0qLzogeyAvKiBuOlwiWEZFeHRcIiwgKi8gZjpwYXJzZV9YRkV4dCwgcjoxMiB9LFxuXHQvKjo6WyovMHgwODdlLyo6Ol0qLzogeyAvKiBuOlwiQXV0b0ZpbHRlcjEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2YvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZUZydDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODQvKjo6XSovOiB7IC8qIG46XCJNRFRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODUvKjo6XSovOiB7IC8qIG46XCJNRFhTdHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Ni8qOjpdKi86IHsgLyogbjpcIk1EWFR1cGxlXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODcvKjo6XSovOiB7IC8qIG46XCJNRFhTZXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4OC8qOjpdKi86IHsgLyogbjpcIk1EWFByb3BcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4OS8qOjpdKi86IHsgLyogbjpcIk1EWEtQSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhhLyo6Ol0qLzogeyAvKiBuOlwiTURCXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OGIvKjo6XSovOiB7IC8qIG46XCJQTFZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Yy8qOjpdKi86IHsgLyogbjpcIkNvbXBhdDEyXCIsICovIGY6cGFyc2Vib29sLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4OGQvKjo6XSovOiB7IC8qIG46XCJEWEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4ZS8qOjpdKi86IHsgLyogbjpcIlRhYmxlU3R5bGVzXCIsICovIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg4Zi8qOjpdKi86IHsgLyogbjpcIlRhYmxlU3R5bGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5MC8qOjpdKi86IHsgLyogbjpcIlRhYmxlU3R5bGVFbGVtZW50XCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTIvKjo6XSovOiB7IC8qIG46XCJTdHlsZUV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODkzLyo6Ol0qLzogeyAvKiBuOlwiTmFtZVB1Ymxpc2hcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5NC8qOjpdKi86IHsgLyogbjpcIk5hbWVDbXRcIiwgKi8gZjpwYXJzZV9OYW1lQ210LCByOjEyIH0sXG5cdC8qOjpbKi8weDA4OTUvKjo6XSovOiB7IC8qIG46XCJTb3J0RGF0YVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk2Lyo6Ol0qLzogeyAvKiBuOlwiVGhlbWVcIiwgKi8gZjpwYXJzZV9UaGVtZSwgcjoxMiB9LFxuXHQvKjo6WyovMHgwODk3Lyo6Ol0qLzogeyAvKiBuOlwiR1VJRFR5cGVMaWJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5OC8qOjpdKi86IHsgLyogbjpcIkZuR3JwMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5OS8qOjpdKi86IHsgLyogbjpcIk5hbWVGbkdycDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OWEvKjo6XSovOiB7IC8qIG46XCJNVFJTZXR0aW5nc1wiLCAqLyBmOnBhcnNlX01UUlNldHRpbmdzLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4OWIvKjo6XSovOiB7IC8qIG46XCJDb21wcmVzc1BpY3R1cmVzXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwODljLyo6Ol0qLzogeyAvKiBuOlwiSGVhZGVyRm9vdGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OWQvKjo6XSovOiB7IC8qIG46XCJDcnRMYXlvdXQxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODllLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TWxGcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5Zi8qOjpdKi86IHsgLyogbjpcIkNydE1sRnJ0Q29udGludWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhhMy8qOjpdKi86IHsgLyogbjpcIkZvcmNlRnVsbENhbGN1bGF0aW9uXCIsICovIGY6cGFyc2VfRm9yY2VGdWxsQ2FsY3VsYXRpb24gfSxcblx0Lyo6OlsqLzB4MDhhNC8qOjpdKi86IHsgLyogbjpcIlNoYXBlUHJvcHNTdHJlYW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhhNS8qOjpdKi86IHsgLyogbjpcIlRleHRQcm9wc1N0cmVhbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGE2Lyo6Ol0qLzogeyAvKiBuOlwiUmljaFRleHRTdHJlYW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhhNy8qOjpdKi86IHsgLyogbjpcIkNydExheW91dDEyQVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDAxLyo6Ol0qLzogeyAvKiBuOlwiVW5pdHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwMi8qOjpdKi86IHsgLyogbjpcIkNoYXJ0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDMvKjo6XSovOiB7IC8qIG46XCJTZXJpZXNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwNi8qOjpdKi86IHsgLyogbjpcIkRhdGFGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwNy8qOjpdKi86IHsgLyogbjpcIkxpbmVGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwOS8qOjpdKi86IHsgLyogbjpcIk1hcmtlckZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDBhLyo6Ol0qLzogeyAvKiBuOlwiQXJlYUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDBiLyo6Ol0qLzogeyAvKiBuOlwiUGllRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGMvKjo6XSovOiB7IC8qIG46XCJBdHRhY2hlZExhYmVsXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGQvKjo6XSovOiB7IC8qIG46XCJTZXJpZXNUZXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTQvKjo6XSovOiB7IC8qIG46XCJDaGFydEZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE1Lyo6Ol0qLzogeyAvKiBuOlwiTGVnZW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTYvKjo6XSovOiB7IC8qIG46XCJTZXJpZXNMaXN0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTcvKjo6XSovOiB7IC8qIG46XCJCYXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxOC8qOjpdKi86IHsgLyogbjpcIkxpbmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxOS8qOjpdKi86IHsgLyogbjpcIlBpZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFhLyo6Ol0qLzogeyAvKiBuOlwiQXJlYVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFiLyo6Ol0qLzogeyAvKiBuOlwiU2NhdHRlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFjLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TGluZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFkLyo6Ol0qLzogeyAvKiBuOlwiQXhpc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFlLyo6Ol0qLzogeyAvKiBuOlwiVGlja1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDFmLyo6Ol0qLzogeyAvKiBuOlwiVmFsdWVSYW5nZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDIwLyo6Ol0qLzogeyAvKiBuOlwiQ2F0U2VyUmFuZ2VcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyMS8qOjpdKi86IHsgLyogbjpcIkF4aXNMaW5lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjIvKjo6XSovOiB7IC8qIG46XCJDcnRMaW5rXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjQvKjo6XSovOiB7IC8qIG46XCJEZWZhdWx0VGV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDI1Lyo6Ol0qLzogeyAvKiBuOlwiVGV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDI2Lyo6Ol0qLzogeyAvKiBuOlwiRm9udFhcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgxMDI3Lyo6Ol0qLzogeyAvKiBuOlwiT2JqZWN0TGlua1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDMyLyo6Ol0qLzogeyAvKiBuOlwiRnJhbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzMy8qOjpdKi86IHsgLyogbjpcIkJlZ2luXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMzQvKjo6XSovOiB7IC8qIG46XCJFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzNS8qOjpdKi86IHsgLyogbjpcIlBsb3RBcmVhXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2EvKjo6XSovOiB7IC8qIG46XCJDaGFydDNkXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2MvKjo6XSovOiB7IC8qIG46XCJQaWNGXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2QvKjo6XSovOiB7IC8qIG46XCJEcm9wQmFyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2UvKjo6XSovOiB7IC8qIG46XCJSYWRhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDNmLyo6Ol0qLzogeyAvKiBuOlwiU3VyZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQwLyo6Ol0qLzogeyAvKiBuOlwiUmFkYXJBcmVhXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDEvKjo6XSovOiB7IC8qIG46XCJBeGlzUGFyZW50XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDMvKjo6XSovOiB7IC8qIG46XCJMZWdlbmRFeGNlcHRpb25cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0NC8qOjpdKi86IHsgLyogbjpcIlNodFByb3BzXCIsICovIGY6cGFyc2VfU2h0UHJvcHMgfSxcblx0Lyo6OlsqLzB4MTA0NS8qOjpdKi86IHsgLyogbjpcIlNlclRvQ3J0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDYvKjo6XSovOiB7IC8qIG46XCJBeGVzVXNlZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQ4Lyo6Ol0qLzogeyAvKiBuOlwiU0Jhc2VSZWZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0YS8qOjpdKi86IHsgLyogbjpcIlNlclBhcmVudFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRiLyo6Ol0qLzogeyAvKiBuOlwiU2VyQXV4VHJlbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0ZS8qOjpdKi86IHsgLyogbjpcIklGbXRSZWNvcmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0Zi8qOjpdKi86IHsgLyogbjpcIlBvc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDUwLyo6Ol0qLzogeyAvKiBuOlwiQWxSdW5zXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNTEvKjo6XSovOiB7IC8qIG46XCJCUkFJXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNWIvKjo6XSovOiB7IC8qIG46XCJTZXJBdXhFcnJCYXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1Yy8qOjpdKi86IHsgLyogbjpcIkNscnRDbGllbnRcIiwgKi8gZjpwYXJzZV9DbHJ0Q2xpZW50IH0sXG5cdC8qOjpbKi8weDEwNWQvKjo6XSovOiB7IC8qIG46XCJTZXJGbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1Zi8qOjpdKi86IHsgLyogbjpcIkNoYXJ0M0RCYXJTaGFwZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDYwLyo6Ol0qLzogeyAvKiBuOlwiRmJpXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjEvKjo6XSovOiB7IC8qIG46XCJCb3BQb3BcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2Mi8qOjpdKi86IHsgLyogbjpcIkF4Y0V4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDYzLyo6Ol0qLzogeyAvKiBuOlwiRGF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjQvKjo6XSovOiB7IC8qIG46XCJQbG90R3Jvd3RoXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjUvKjo6XSovOiB7IC8qIG46XCJTSUluZGV4XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjYvKjo6XSovOiB7IC8qIG46XCJHZWxGcmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDY3Lyo6Ol0qLzogeyAvKiBuOlwiQm9wUG9wQ3VzdG9tXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjgvKjo6XSovOiB7IC8qIG46XCJGYmkyXCIsICovIH0sXG5cblx0Lyo6OlsqLzB4MDAwMC8qOjpdKi86IHsgLyogbjpcIkRpbWVuc2lvbnNcIiwgKi8gZjpwYXJzZV9EaW1lbnNpb25zIH0sXG5cdC8qOjpbKi8weDAwMDEvKjo6XSovOiB7IC8qIG46XCJCSUZGMkJMQU5LXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMDIvKjo6XSovOiB7IC8qIG46XCJCSUZGMklOVFwiLCAqLyBmOnBhcnNlX0JJRkYySU5UIH0sXG5cdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IC8qIG46XCJCSUZGMk5VTVwiLCAqLyBmOnBhcnNlX0JJRkYyTlVNIH0sXG5cdC8qOjpbKi8weDAwMDQvKjo6XSovOiB7IC8qIG46XCJCSUZGMlNUUlwiLCAqLyBmOnBhcnNlX0JJRkYyU1RSIH0sXG5cdC8qOjpbKi8weDAwMDUvKjo6XSovOiB7IC8qIG46XCJCb29sRXJyXCIsICovIGY6cGFyc2VfQm9vbEVyciB9LFxuXHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogeyAvKiBuOlwiU3RyaW5nXCIsICovIGY6cGFyc2VfQklGRjJTVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDAwOC8qOjpdKi86IHsgLyogbjpcIkJJRkYyUk9XXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMDkvKjo6XSovOiB7IC8qIG46XCJCT0ZcIiwgKi8gZjpwYXJzZV9CT0YgfSxcblx0Lyo6OlsqLzB4MDAwYi8qOjpdKi86IHsgLyogbjpcIkluZGV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAwMTYvKjo6XSovOiB7IC8qIG46XCJFeHRlcm5Db3VudFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwMWUvKjo6XSovOiB7IC8qIG46XCJCSUZGMkZPUk1BVFwiLCAqLyBmOnBhcnNlX0JJRkYyRm9ybWF0IH0sXG5cdC8qOjpbKi8weDAwMWYvKjo6XSovOiB7IC8qIG46XCJCSUZGMkZNVENOVFwiLCAqLyB9LCAvKiAxNi1iaXQgY250IG9mIEJJRkYyRk9STUFUIHJlY29yZHMgKi9cblx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IHsgLyogbjpcIkJJRkYyQ09MSU5GT1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDIxLyo6Ol0qLzogeyAvKiBuOlwiQXJyYXlcIiwgKi8gZjpwYXJzZV9BcnJheSB9LFxuXHQvKjo6WyovMHgwMDI0Lyo6Ol0qLzogeyAvKiBuOlwiQ09MV0lEVEhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAyNS8qOjpdKi86IHsgLyogbjpcIkRlZmF1bHRSb3dIZWlnaHRcIiwgKi8gZjpwYXJzZV9EZWZhdWx0Um93SGVpZ2h0IH0sXG5cdC8vIDB4MmMgPz9cblx0Ly8gMHgyZCA/P1xuXHQvLyAweDJlID8/XG5cdC8vIDB4MzAgRk9OVENPVU5UOiBudW1iZXIgb2YgZm9udHNcblx0Lyo6OlsqLzB4MDAzMi8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk9OVFhUUkFcIiwgKi8gZjpwYXJzZV9CSUZGMkZPTlRYVFJBIH0sXG5cdC8vIDB4MzU6IElORk9PUFRTXG5cdC8vIDB4MzY6IFRBQkxFIChCSUZGMiBvbmx5KVxuXHQvLyAweDM3OiBUQUJMRTIgKEJJRkYyIG9ubHkpXG5cdC8vIDB4Mzg6IFdOREVTS1xuXHQvLyAweDM5ID8/XG5cdC8vIDB4M2E6IEJFR0lOUFJFRlxuXHQvLyAweDNiOiBFTkRQUkVGXG5cdC8qOjpbKi8weDAwM2UvKjo6XSovOiB7IC8qIG46XCJCSUZGMldJTkRPVzJcIiwgKi8gfSxcblx0Ly8gMHgzZiA/P1xuXHQvLyAweDQ2OiBTSE9XU0NST0xMXG5cdC8vIDB4NDc6IFNIT1dGT1JNVUxBXG5cdC8vIDB4NDg6IFNUQVRVU0JBUlxuXHQvLyAweDQ5OiBTSE9SVE1FTlVTXG5cdC8vIDB4NEE6XG5cdC8vIDB4NEI6XG5cdC8vIDB4NEM6XG5cdC8vIDB4NEU6XG5cdC8vIDB4NEY6XG5cdC8vIDB4NTg6IFRPT0xCQVIgKEJJRkYzKVxuXG5cdC8qIC0gLSAtICovXG5cdC8qOjpbKi8weDAwMzQvKjo6XSovOiB7IC8qIG46XCJEREVPYmpOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNDMvKjo6XSovOiB7IC8qIG46XCJCSUZGMlhGXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNDQvKjo6XSovOiB7IC8qIG46XCJCSUZGMlhGSU5ERVhcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDQ1Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjJGT05UQ0xSXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNTYvKjo6XSovOiB7IC8qIG46XCJCSUZGNEZNVENOVFwiLCAqLyB9LCAvKiAxNi1iaXQgY250LCBzaW1pbGFyIHRvIEJJRkYyICovXG5cdC8qOjpbKi8weDAwN2UvKjo6XSovOiB7IC8qIG46XCJSS1wiLCAqLyB9LCAvKiBOb3QgbmVjZXNzYXJpbHkgc2FtZSBhcyAweDAyN2UgKi9cblx0Lyo6OlsqLzB4MDA3Zi8qOjpdKi86IHsgLyogbjpcIkltRGF0YVwiLCAqLyBmOnBhcnNlX0ltRGF0YSB9LFxuXHQvKjo6WyovMHgwMDg3Lyo6Ol0qLzogeyAvKiBuOlwiQWRkaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA4OC8qOjpdKi86IHsgLyogbjpcIkVkZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDg5Lyo6Ol0qLzogeyAvKiBuOlwiUHViXCIsICovIH0sXG5cdC8vIDB4OEFcblx0Ly8gMHg4QiBMSDogYWx0ZXJuYXRlIG1lbnUga2V5IGZsYWcgKEJJRkYzLzQpXG5cdC8vIDB4OEVcblx0Ly8gMHg4RlxuXHQvKjo6WyovMHgwMDkxLyo6Ol0qLzogeyAvKiBuOlwiU3ViXCIsICovIH0sXG5cdC8vIDB4OTMgU1RZTEVcblx0Lyo6OlsqLzB4MDA5NC8qOjpdKi86IHsgLyogbjpcIkxIUmVjb3JkXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTUvKjo6XSovOiB7IC8qIG46XCJMSE5HcmFwaFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDk2Lyo6Ol0qLzogeyAvKiBuOlwiU291bmRcIiwgKi8gfSxcblx0Ly8gMHhBMiBGTlBST1RPOiBmdW5jdGlvbiBwcm90b3R5cGVzIChCSUZGNClcblx0Ly8gMHhBM1xuXHQvLyAweEE4XG5cdC8qOjpbKi8weDAwYTkvKjo6XSovOiB7IC8qIG46XCJDb29yZExpc3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBhYi8qOjpdKi86IHsgLyogbjpcIkdDV1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGJjLyo6Ol0qLzogeyAvKiBuOlwiU2hyRm1sYVwiLCAqLyB9LCAvKiBOb3QgbmVjZXNzYXJpbHkgc2FtZSBhcyAweDA0YmMgKi9cblx0Lyo6OlsqLzB4MDBiZi8qOjpdKi86IHsgLyogbjpcIlRvb2xiYXJIZHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjMC8qOjpdKi86IHsgLyogbjpcIlRvb2xiYXJFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjMi8qOjpdKi86IHsgLyogbjpcIkFkZE1lbnVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjMy8qOjpdKi86IHsgLyogbjpcIkRlbE1lbnVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkNi8qOjpdKi86IHsgLyogbjpcIlJTdHJpbmdcIiwgKi8gZjpwYXJzZV9SU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAwZGYvKjo6XSovOiB7IC8qIG46XCJVRERlc2NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlYS8qOjpdKi86IHsgLyogbjpcIlRhYklkQ29uZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTYyLyo6Ol0qLzogeyAvKiBuOlwiWEw1TW9kaWZ5XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYTUvKjo6XSovOiB7IC8qIG46XCJGaWxlU2hhcmluZzJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDIwNi8qOjpdKi86IHsgLyogbjpcIkZvcm11bGFcIiwgKi8gZjpwYXJzZV9Gb3JtdWxhIH0sXG5cdC8qOjpbKi8weDAyMDkvKjo6XSovOiB7IC8qIG46XCJCT0ZcIiwgKi8gZjpwYXJzZV9CT0YgfSxcblx0Lyo6OlsqLzB4MDIxOC8qOjpdKi86IHsgLyogbjpcIkxibFwiLCAqLyBmOnBhcnNlX0xibCB9LFxuXHQvKjo6WyovMHgwMjIzLyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuTmFtZVwiLCAqLyBmOnBhcnNlX0V4dGVybk5hbWUgfSxcblx0Lyo6OlsqLzB4MDIzMS8qOjpdKi86IHsgLyogbjpcIkZvbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDI0My8qOjpdKi86IHsgLyogbjpcIkJJRkYzWEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDQwNi8qOjpdKi86IHsgLyogbjpcIkZvcm11bGFcIiwgKi8gZjpwYXJzZV9Gb3JtdWxhIH0sXG5cdC8qOjpbKi8weDA0MDkvKjo6XSovOiB7IC8qIG46XCJCT0ZcIiwgKi8gZjpwYXJzZV9CT0YgfSxcblx0Lyo6OlsqLzB4MDQ0My8qOjpdKi86IHsgLyogbjpcIkJJRkY0WEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2ZC8qOjpdKi86IHsgLyogbjpcIkZlYXRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzMvKjo6XSovOiB7IC8qIG46XCJGZWF0SW5mbzExXCIsICovIH0sXG5cdC8qOjpbKi8weDA4ODEvKjo6XSovOiB7IC8qIG46XCJTWEFkZGwxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGMwLyo6Ol0qLzogeyAvKiBuOlwiQXV0b1dlYlB1YlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGMxLyo6Ol0qLzogeyAvKiBuOlwiTGlzdE9ialwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGMyLyo6Ol0qLzogeyAvKiBuOlwiTGlzdEZpZWxkXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzMvKjo6XSovOiB7IC8qIG46XCJMaXN0RFZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNC8qOjpdKi86IHsgLyogbjpcIkxpc3RDb25kRm10XCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzUvKjo6XSovOiB7IC8qIG46XCJMaXN0Q0ZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNi8qOjpdKi86IHsgLyogbjpcIkZNUXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzcvKjo6XSovOiB7IC8qIG46XCJGTVNRcnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjOC8qOjpdKi86IHsgLyogbjpcIlBMVlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM5Lyo6Ol0qLzogeyAvKiBuOlwiTG5FeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjYS8qOjpdKi86IHsgLyogbjpcIk1rckV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGNiLyo6Ol0qLzogeyAvKiBuOlwiQ3J0Q29vcHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhkNi8qOjpdKi86IHsgLyogbjpcIkZSVEFyY2hJZCRcIiwgKi8gcjoxMiB9LFxuXG5cdC8qOjpbKi8weDcyNjIvKjo6XSovOiB7fVxufTtcblxuZnVuY3Rpb24gd3JpdGVfYmlmZl9yZWMoYmEvKjpCdWZBcnJheSovLCB0eXBlLyo6bnVtYmVyKi8sIHBheWxvYWQsIGxlbmd0aC8qOj9udW1iZXIqLykvKjp2b2lkKi8ge1xuXHR2YXIgdC8qOm51bWJlciovID0gdHlwZTtcblx0aWYoaXNOYU4odCkpIHJldHVybjtcblx0dmFyIGxlbiA9IGxlbmd0aCB8fCAocGF5bG9hZHx8W10pLmxlbmd0aCB8fCAwO1xuXHR2YXIgbyA9IGJhLm5leHQoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgbGVuKTtcblx0aWYoLyo6OiBsZW4gIT0gbnVsbCAmJiovbGVuID4gMCAmJiBpc19idWYocGF5bG9hZCkpIGJhLnB1c2gocGF5bG9hZCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2JpZmZfY29udGludWUoYmEvKjpCdWZBcnJheSovLCB0eXBlLyo6bnVtYmVyKi8sIHBheWxvYWQsIGxlbmd0aC8qOj9udW1iZXIqLykvKjp2b2lkKi8ge1xuXHR2YXIgbGVuID0gbGVuZ3RoIHx8IChwYXlsb2FkfHxbXSkubGVuZ3RoIHx8IDA7XG5cdGlmKGxlbiA8PSA4MjI0KSByZXR1cm4gd3JpdGVfYmlmZl9yZWMoYmEsIHR5cGUsIHBheWxvYWQsIGxlbik7XG5cdHZhciB0ID0gdHlwZTtcblx0aWYoaXNOYU4odCkpIHJldHVybjtcblx0dmFyIHBhcnRzID0gcGF5bG9hZC5wYXJ0cyB8fCBbXSwgc2lkeCA9IDA7XG5cdHZhciBpID0gMCwgdyA9IDA7XG5cdHdoaWxlKHcgKyAocGFydHNbc2lkeF0gfHwgODIyNCkgPD0gODIyNCkgeyB3Kz0gKHBhcnRzW3NpZHhdIHx8IDgyMjQpOyBzaWR4Kys7IH1cblx0dmFyIG8gPSBiYS5uZXh0KDQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHcpO1xuXHRiYS5wdXNoKHBheWxvYWQuc2xpY2UoaSwgaSArIHcpKTtcblx0aSArPSB3O1xuXHR3aGlsZShpIDwgbGVuKSB7XG5cdFx0byA9IGJhLm5leHQoNCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweDNjKTsgLy8gVE9ETzogZmlndXJlIG91dCBjb3JyZWN0IGNvbnRpbnVlIHR5cGVcblx0XHR3ID0gMDtcblx0XHR3aGlsZSh3ICsgKHBhcnRzW3NpZHhdIHx8IDgyMjQpIDw9IDgyMjQpIHsgdys9IChwYXJ0c1tzaWR4XSB8fCA4MjI0KTsgc2lkeCsrOyB9XG5cdFx0by53cml0ZV9zaGlmdCgyLCB3KTtcblx0XHRiYS5wdXNoKHBheWxvYWQuc2xpY2UoaSwgaSt3KSk7IGkrPSB3O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovKSB7XG5cdGlmKCFvdXQpIG91dCA9IG5ld19idWYoNyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCByKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIGMpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG91dC53cml0ZV9zaGlmdCgxLCAwKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQklGRjJCRVJSKHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovLCB2YWwsIHQvKjo/c3RyaW5nKi8pIHtcblx0dmFyIG91dCA9IG5ld19idWYoOSk7XG5cdHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIsIGMpO1xuXHR3cml0ZV9CZXModmFsLCB0IHx8ICdiJywgb3V0KTtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogVE9ETzogY29kZXBhZ2UsIGxhcmdlIHN0cmluZ3MgKi9cbmZ1bmN0aW9uIHdyaXRlX0JJRkYyTEFCRUwoci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbCkge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig4ICsgMip2YWwubGVuZ3RoKTtcblx0d3JpdGVfQklGRjJDZWxsKG91dCwgciwgYyk7XG5cdG91dC53cml0ZV9zaGlmdCgxLCB2YWwubGVuZ3RoKTtcblx0b3V0LndyaXRlX3NoaWZ0KHZhbC5sZW5ndGgsIHZhbCwgJ3NiY3MnKTtcblx0cmV0dXJuIG91dC5sIDwgb3V0Lmxlbmd0aCA/IG91dC5zbGljZSgwLCBvdXQubCkgOiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmYyX2NlbGwoYmEvKjpCdWZBcnJheSovLCBjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLy8qOjosIG9wdHMqLykge1xuXHRpZihjZWxsLnYgIT0gbnVsbCkgc3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ2QnOiBjYXNlICduJzpcblx0XHRcdHZhciB2ID0gY2VsbC50ID09ICdkJyA/IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpIDogY2VsbC52O1xuXHRcdFx0aWYoKHYgPT0gKHZ8MCkpICYmICh2ID49IDApICYmICh2IDwgNjU1MzYpKVxuXHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDAyLCB3cml0ZV9CSUZGMklOVChSLCBDLCB2KSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDMsIHdyaXRlX0JJRkYyTlVNKFIsQywgdikpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdGNhc2UgJ2InOiBjYXNlICdlJzogd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwNSwgd3JpdGVfQklGRjJCRVJSKFIsIEMsIGNlbGwudiwgY2VsbC50KSk7IHJldHVybjtcblx0XHQvKiBUT0RPOiBjb2RlcGFnZSwgc3N0ICovXG5cdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDA0LCB3cml0ZV9CSUZGMkxBQkVMKFIsIEMsIChjZWxsLnZ8fFwiXCIpLnNsaWNlKDAsMjU1KSkpO1xuXHRcdFx0cmV0dXJuO1xuXHR9XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDEsIHdyaXRlX0JJRkYyQ2VsbChudWxsLCBSLCBDKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmYyKGJhLyo6QnVmQXJyYXkqLywgd3MvKjpXb3Jrc2hlZXQqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMvKjo6LCB3YjpXb3JrYm9vayovKSB7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIiksIHJlZi8qOnN0cmluZyovLCByciA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0aWYocmFuZ2UuZS5jID4gMHhGRiB8fCByYW5nZS5lLnIgPiAweDNGRkYpIHtcblx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgXCIgKyAod3NbJyFyZWYnXSB8fCBcIkExXCIpICsgXCIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6SVYxNjM4NFwiKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1pbihyYW5nZS5lLmMsIDB4RkYpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWluKHJhbmdlLmUuYywgMHgzRkZGKTtcblx0XHRyZWYgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHR9XG5cdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0aWYoIWNlbGwpIGNvbnRpbnVlO1xuXHRcdFx0Lyogd3JpdGUgY2VsbCAqL1xuXHRcdFx0d3JpdGVfd3NfYmlmZjJfY2VsbChiYSwgY2VsbCwgUiwgQywgb3B0cyk7XG5cdFx0fVxuXHR9XG59XG5cbi8qIEJhc2VkIG9uIHRlc3QgZmlsZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX2JpZmYyX2J1Zih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdGlmKERFTlNFICE9IG51bGwgJiYgby5kZW5zZSA9PSBudWxsKSBvLmRlbnNlID0gREVOU0U7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgaWR4ID0gMDtcblx0Zm9yKHZhciBpPTA7aTx3Yi5TaGVldE5hbWVzLmxlbmd0aDsrK2kpIGlmKHdiLlNoZWV0TmFtZXNbaV0gPT0gby5zaGVldCkgaWR4PWk7XG5cdGlmKGlkeCA9PSAwICYmICEhby5zaGVldCAmJiB3Yi5TaGVldE5hbWVzWzBdICE9IG8uc2hlZXQpIHRocm93IG5ldyBFcnJvcihcIlNoZWV0IG5vdCBmb3VuZDogXCIgKyBvLnNoZWV0KTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIChvLmJpZmYgPT0gNCA/IDB4MDQwOSA6IChvLmJpZmYgPT0gMyA/IDB4MDIwOSA6IDB4MDAwOSkpLCB3cml0ZV9CT0Yod2IsIDB4MTAsIG8pKTtcblx0LyogLi4uICovXG5cdHdyaXRlX3dzX2JpZmYyKGJhLCB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgaWR4LCBvLCB3Yik7XG5cdC8qIC4uLiAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBBKTtcblx0cmV0dXJuIGJhLmVuZCgpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GT05UU19iaWZmOChiYSwgZGF0YSwgb3B0cykge1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDMxIC8qIEZvbnQgKi8sIHdyaXRlX0ZvbnQoe1xuXHRcdHN6OjEyLFxuXHRcdGNvbG9yOiB7dGhlbWU6MX0sXG5cdFx0bmFtZTogXCJBcmlhbFwiLFxuXHRcdGZhbWlseTogMixcblx0XHRzY2hlbWU6IFwibWlub3JcIlxuXHR9LCBvcHRzKSk7XG59XG5cblxuZnVuY3Rpb24gd3JpdGVfRk1UU19iaWZmOChiYSwgTkYvKjo/U1NGVGFibGUqLywgb3B0cykge1xuXHRpZighTkYpIHJldHVybjtcblx0W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbLyo2MyovNTAsLyo2Nl0sWzE2NCwqLzM5Ml1dLmZvckVhY2goZnVuY3Rpb24ocikge1xuXHRcdC8qOjogaWYoIU5GKSByZXR1cm47ICovXG5cdFx0Zm9yKHZhciBpID0gclswXTsgaSA8PSByWzFdOyArK2kpIGlmKE5GW2ldICE9IG51bGwpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDA0MUUgLyogRm9ybWF0ICovLCB3cml0ZV9Gb3JtYXQoaSwgTkZbaV0sIG9wdHMpKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZFQVQoYmEsIHdzKSB7XG5cdC8qIFtNUy1YTFNdIDIuNC4xMTIgKi9cblx0dmFyIG8gPSBuZXdfYnVmKDE5KTtcblx0by53cml0ZV9zaGlmdCg0LCAweDg2Nyk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMyk7IG8ud3JpdGVfc2hpZnQoMSwgMSk7IG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDA4NjcgLyogRmVhdEhkciAqLywgbyk7XG5cdC8qIFtNUy1YTFNdIDIuNC4xMTEgKi9cblx0byA9IG5ld19idWYoMzkpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4ODY4KTsgby53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAzKTsgby53cml0ZV9zaGlmdCgxLCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAxKTsgby53cml0ZV9zaGlmdCg0LCA0KTsgby53cml0ZV9zaGlmdCgyLCAwKTtcblx0d3JpdGVfUmVmOFUoc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXXx8XCJBMVwiKSwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgNCk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDA4NjggLyogRmVhdCAqLywgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NFTExYRlNfYmlmZjgoYmEsIG9wdHMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwZTAgLyogWEYgKi8sIHdyaXRlX1hGKHtudW1GbXRJZDowLCBzdHlsZTp0cnVlfSwgMCwgb3B0cykpO1xuXHRvcHRzLmNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBlMCAvKiBYRiAqLywgd3JpdGVfWEYoYywgMCwgb3B0cykpO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjhfaGxpbmtzKGJhLyo6QnVmQXJyYXkqLywgd3MpIHtcblx0Zm9yKHZhciBSPTA7IFI8d3NbJyFsaW5rcyddLmxlbmd0aDsgKytSKSB7XG5cdFx0dmFyIEhMID0gd3NbJyFsaW5rcyddW1JdO1xuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxYjggLyogSExpbmsgKi8sIHdyaXRlX0hMaW5rKEhMKSk7XG5cdFx0aWYoSExbMV0uVG9vbHRpcCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDgwMCAvKiBITGlua1Rvb2x0aXAgKi8sIHdyaXRlX0hMaW5rVG9vbHRpcChITCkpO1xuXHR9XG5cdGRlbGV0ZSB3c1snIWxpbmtzJ107XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2NvbHNfYmlmZjgoYmEsIGNvbHMpIHtcblx0aWYoIWNvbHMpIHJldHVybjtcblx0dmFyIGNudCA9IDA7XG5cdGNvbHMuZm9yRWFjaChmdW5jdGlvbihjb2wsIGlkeCkge1xuXHRcdGlmKCsrY250IDw9IDI1NiAmJiBjb2wpIHtcblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwN2QgLyogQ29sSW5mbyAqLywgd3JpdGVfQ29sSW5mbyhjb2xfb2JqX3coaWR4LCBjb2wpLCBpZHgpKTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmOF9jZWxsKGJhLyo6QnVmQXJyYXkqLywgY2VsbC8qOkNlbGwqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIG9zID0gMTYgKyBnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIGNlbGwsIG9wdHMpO1xuXHRpZihjZWxsLnYgPT0gbnVsbCAmJiAhY2VsbC5iZikge1xuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDEgLyogQmxhbmsgKi8sIHdyaXRlX1hMU0NlbGwoUiwgQywgb3MpKTtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYoY2VsbC5iZikgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwNiAvKiBGb3JtdWxhICovLCB3cml0ZV9Gb3JtdWxhKGNlbGwsIFIsIEMsIG9wdHMsIG9zKSk7XG5cdGVsc2Ugc3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ2QnOiBjYXNlICduJzpcblx0XHRcdHZhciB2ID0gY2VsbC50ID09ICdkJyA/IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpIDogY2VsbC52O1xuXHRcdFx0LyogVE9ETzogZW1pdCBSSyBhcyBhcHByb3ByaWF0ZSAqL1xuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwMyAvKiBOdW1iZXIgKi8sIHdyaXRlX051bWJlcihSLCBDLCB2LCBvcywgb3B0cykpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnYic6IGNhc2UgJ2UnOlxuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwNSAvKiBCb29sRXJyICovLCB3cml0ZV9Cb29sRXJyKFIsIEMsIGNlbGwudiwgb3MsIG9wdHMsIGNlbGwudCkpO1xuXHRcdFx0YnJlYWs7XG5cdFx0LyogVE9ETzogY29kZXBhZ2UsIHNzdCAqL1xuXHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOlxuXHRcdFx0aWYob3B0cy5ib29rU1NUKSB7XG5cdFx0XHRcdHZhciBpc3N0ID0gZ2V0X3NzdF9pZChvcHRzLlN0cmluZ3MsIGNlbGwudiwgb3B0cy5yZXZTdHJpbmdzKTtcblx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBmZCAvKiBMYWJlbFNzdCAqLywgd3JpdGVfTGFiZWxTc3QoUiwgQywgaXNzdCwgb3MsIG9wdHMpKTtcblx0XHRcdH0gZWxzZSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjA0IC8qIExhYmVsICovLCB3cml0ZV9MYWJlbChSLCBDLCAoY2VsbC52fHxcIlwiKS5zbGljZSgwLDI1NSksIG9zLCBvcHRzKSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwMSAvKiBCbGFuayAqLywgd3JpdGVfWExTQ2VsbChSLCBDLCBvcykpO1xuXHR9XG59XG5cbi8qIFtNUy1YTFNdIDIuMS43LjIwLjUgKi9cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmY4KGlkeC8qOm51bWJlciovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBzID0gd2IuU2hlZXROYW1lc1tpZHhdLCB3cyA9IHdiLlNoZWV0c1tzXSB8fCB7fTtcblx0dmFyIF9XQi8qOldCV0JQcm9wcyovID0gKCh3Ynx8e30pLldvcmtib29rfHx7fS8qOmFueSovKTtcblx0dmFyIF9zaGVldC8qOldCV1NQcm9wKi8gPSAoKF9XQi5TaGVldHN8fFtdKVtpZHhdfHx7fS8qOmFueSovKTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciBiOCA9IG9wdHMuYmlmZiA9PSA4O1xuXHR2YXIgcmVmLyo6c3RyaW5nKi8sIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIik7XG5cdHZhciBNQVhfUk9XUyA9IGI4ID8gNjU1MzYgOiAxNjM4NDtcblx0aWYocmFuZ2UuZS5jID4gMHhGRiB8fCByYW5nZS5lLnIgPj0gTUFYX1JPV1MpIHtcblx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiUmFuZ2UgXCIgKyAod3NbJyFyZWYnXSB8fCBcIkExXCIpICsgXCIgZXhjZWVkcyBmb3JtYXQgbGltaXQgQTE6SVYxNjM4NFwiKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1pbihyYW5nZS5lLmMsIDB4RkYpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWluKHJhbmdlLmUuYywgTUFYX1JPV1MtMSk7XG5cdH1cblxuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwODA5LCB3cml0ZV9CT0Yod2IsIDB4MTAsIG9wdHMpKTtcblx0LyogW1VuY2FsY2VkXSBJbmRleCAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBkIC8qIENhbGNNb2RlICovLCB3cml0ZXVpbnQxNigxKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMGMgLyogQ2FsY0NvdW50ICovLCB3cml0ZXVpbnQxNigxMDApKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwZiAvKiBDYWxjUmVmTW9kZSAqLywgd3JpdGVib29sKHRydWUpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAxMSAvKiBDYWxjSXRlciAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMTAgLyogQ2FsY0RlbHRhICovLCB3cml0ZV9YbnVtKDAuMDAxKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwNWYgLyogQ2FsY1NhdmVSZWNhbGMgKi8sIHdyaXRlYm9vbCh0cnVlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMmEgLyogUHJpbnRSb3dDb2wgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDJiIC8qIFByaW50R3JpZCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODIgLyogR3JpZFNldCAqLywgd3JpdGV1aW50MTYoMSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDgwIC8qIEd1dHMgKi8sIHdyaXRlX0d1dHMoWzAsMF0pKTtcblx0LyogRGVmYXVsdFJvd0hlaWdodCBXc0Jvb2wgW1N5bmNdIFtMUHJdIFtIb3Jpem9udGFsUGFnZUJyZWFrc10gW1ZlcnRpY2FsUGFnZUJyZWFrc10gKi9cblx0LyogSGVhZGVyIChzdHJpbmcpICovXG5cdC8qIEZvb3RlciAoc3RyaW5nKSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDgzIC8qIEhDZW50ZXIgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDg0IC8qIFZDZW50ZXIgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHQvKiAuLi4gKi9cblx0aWYoYjgpIHdyaXRlX3dzX2NvbHNfYmlmZjgoYmEsIHdzW1wiIWNvbHNcIl0pO1xuXHQvKiAuLi4gKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MjAwLCB3cml0ZV9EaW1lbnNpb25zKHJhbmdlLCBvcHRzKSk7XG5cdC8qIC4uLiAqL1xuXG5cdGlmKGI4KSB3c1snIWxpbmtzJ10gPSBbXTtcblx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRpZighY2VsbCkgY29udGludWU7XG5cdFx0XHQvKiB3cml0ZSBjZWxsICovXG5cdFx0XHR3cml0ZV93c19iaWZmOF9jZWxsKGJhLCBjZWxsLCBSLCBDLCBvcHRzKTtcblx0XHRcdGlmKGI4ICYmIGNlbGwubCkgd3NbJyFsaW5rcyddLnB1c2goW3JlZiwgY2VsbC5sXSk7XG5cdFx0fVxuXHR9XG5cdHZhciBjbmFtZS8qOnN0cmluZyovID0gX3NoZWV0LkNvZGVOYW1lIHx8IF9zaGVldC5uYW1lIHx8IHM7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIzZSAvKiBXaW5kb3cyICovLCB3cml0ZV9XaW5kb3cyKChfV0IuVmlld3N8fFtdKVswXSkpO1xuXHQvKiAuLi4gKi9cblx0aWYoYjggJiYgKHdzWychbWVyZ2VzJ118fFtdKS5sZW5ndGgpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwZTUgLyogTWVyZ2VDZWxscyAqLywgd3JpdGVfTWVyZ2VDZWxscyh3c1snIW1lcmdlcyddKSk7XG5cdC8qIFtMUm5nXSAqUVVFUllUQUJMRSBbUEhPTkVUSUNJTkZPXSBDT05ERk1UUyAqL1xuXHRpZihiOCkgd3JpdGVfd3NfYmlmZjhfaGxpbmtzKGJhLCB3cyk7XG5cdC8qIFtEVkFMXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMWJhIC8qIENvZGVOYW1lICovLCB3cml0ZV9YTFVuaWNvZGVTdHJpbmcoY25hbWUsIG9wdHMpKTtcblx0LyogKldlYlB1YiAqQ2VsbFdhdGNoIFtTaGVldEV4dF0gKi9cblx0aWYoYjgpIHdyaXRlX0ZFQVQoYmEsIHdzKTtcblx0LyogKkZFQVQxMSAqUkVDT1JEMTIgKi9cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwYSAvKiBFT0YgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuMS43LjIwLjMgKi9cbmZ1bmN0aW9uIHdyaXRlX2JpZmY4X2dsb2JhbCh3Yi8qOldvcmtib29rKi8sIGJ1ZnMsIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHR2YXIgQSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgX1dCLyo6V0JXQlByb3BzKi8gPSAoKHdifHx7fSkuV29ya2Jvb2t8fHt9Lyo6YW55Ki8pO1xuXHR2YXIgX3NoZWV0cy8qOkFycmF5PFdCV1NQcm9wPiovID0gKF9XQi5TaGVldHN8fFtdKTtcblx0dmFyIF93Yi8qOldCUHJvcHMqLyA9IC8qOjooKCovX1dCLldCUHJvcHN8fHsvKjo6Q29kZU5hbWU6XCJUaGlzV29ya2Jvb2tcIiovfS8qOjogKTphbnkpKi87XG5cdHZhciBiOCA9IG9wdHMuYmlmZiA9PSA4LCBiNSA9IG9wdHMuYmlmZiA9PSA1O1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDA4MDksIHdyaXRlX0JPRih3YiwgMHgwNSwgb3B0cykpO1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwieGxhXCIpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA4NyAvKiBBZGRpbiAqLyk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBlMSAvKiBJbnRlcmZhY2VIZHIgKi8sIGI4ID8gd3JpdGV1aW50MTYoMHgwNGIwKSA6IG51bGwpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwYzEgLyogTW1zICovLCB3cml0ZXplcm9lcygyKSk7XG5cdGlmKGI1KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAwYmYgLyogVG9vbGJhckhkciAqLyk7XG5cdGlmKGI1KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAwYzAgLyogVG9vbGJhckVuZCAqLyk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBlMiAvKiBJbnRlcmZhY2VFbmQgKi8pO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwNWMgLyogV3JpdGVBY2Nlc3MgKi8sIHdyaXRlX1dyaXRlQWNjZXNzKFwiU2hlZXRKU1wiLCBvcHRzKSk7XG5cdC8qIFtGaWxlU2hhcmluZ10gKi9cblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDQyIC8qIENvZGVQYWdlICovLCB3cml0ZXVpbnQxNihiOCA/IDB4MDRiMCA6IDB4MDRFNCkpO1xuXHQvKiAqMjA0NyBMZWwgKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDE2MSAvKiBEU0YgKi8sIHdyaXRldWludDE2KDApKTtcblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDFjMCAvKiBFeGNlbDlGaWxlICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMTNkIC8qIFJSVGFiSWQgKi8sIHdyaXRlX1JSVGFiSWQod2IuU2hlZXROYW1lcy5sZW5ndGgpKTtcblx0aWYoYjggJiYgd2IudmJhcmF3KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAwZDMgLyogT2JQcm9qICovKTtcblx0LyogW09iTm9NYWNyb3NdICovXG5cdGlmKGI4ICYmIHdiLnZiYXJhdykge1xuXHRcdHZhciBjbmFtZS8qOnN0cmluZyovID0gX3diLkNvZGVOYW1lIHx8IFwiVGhpc1dvcmtib29rXCI7XG5cdFx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMWJhIC8qIENvZGVOYW1lICovLCB3cml0ZV9YTFVuaWNvZGVTdHJpbmcoY25hbWUsIG9wdHMpKTtcblx0fVxuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwOWMgLyogQnVpbHRJbkZuR3JvdXBDb3VudCAqLywgd3JpdGV1aW50MTYoMHgxMSkpO1xuXHQvKiAqRm5Hcm91cE5hbWUgKkZuR3JwMTIgKi9cblx0LyogKkxibCAqL1xuXHQvKiBbT2xlT2JqZWN0U2l6ZV0gKi9cblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDE5IC8qIFdpblByb3RlY3QgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMTIgLyogUHJvdGVjdCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAxMyAvKiBQYXNzd29yZCAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWFmIC8qIFByb3Q0UmV2ICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDFiYyAvKiBQcm90NFJldlBhc3MgKi8sIHdyaXRldWludDE2KDApKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDNkIC8qIFdpbmRvdzEgKi8sIHdyaXRlX1dpbmRvdzEob3B0cykpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwNDAgLyogQmFja3VwICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDhkIC8qIEhpZGVPYmogKi8sIHdyaXRldWludDE2KDApKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDIyIC8qIERhdGUxOTA0ICovLCB3cml0ZWJvb2woc2FmZTE5MDQod2IpPT1cInRydWVcIikpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMGUgLyogQ2FsY1ByZWNpc2lvbiAqLywgd3JpdGVib29sKHRydWUpKTtcblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDFiNyAvKiBSZWZyZXNoQWxsICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMERBIC8qIEJvb2tCb29sICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdC8qIC4uLiAqL1xuXHR3cml0ZV9GT05UU19iaWZmOChBLCB3Yiwgb3B0cyk7XG5cdHdyaXRlX0ZNVFNfYmlmZjgoQSwgd2IuU1NGLCBvcHRzKTtcblx0d3JpdGVfQ0VMTFhGU19iaWZmOChBLCBvcHRzKTtcblx0LyogLi4uICovXG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxNjAgLyogVXNlc0VMRnMgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR2YXIgYSA9IEEuZW5kKCk7XG5cblx0dmFyIEMgPSBidWZfYXJyYXkoKTtcblx0LyogTUVUQURBVEEgW01UUlNldHRpbmdzXSBbRm9yY2VGdWxsQ2FsY3VsYXRpb25dICovXG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhDLCAweDAwOEMsIHdyaXRlX0NvdW50cnkoKSk7XG5cdC8qICpTVVBCT09LICpMQkwgKlJURCBbUmVjYWxjSWRdICpIRlBpY3R1cmUgKk1TT0RSQVdJTkdHUk9VUCAqL1xuXG5cdC8qIEJJRkY4OiBbU1NUICpDb250aW51ZV0gRXh0U1NUICovXG5cdGlmKGI4ICYmIG9wdHMuU3RyaW5ncykgd3JpdGVfYmlmZl9jb250aW51ZShDLCAweDAwRkMsIHdyaXRlX1NTVChvcHRzLlN0cmluZ3MsIG9wdHMpKTtcblxuXHQvKiAqV2ViUHViIFtXT3B0XSBbQ3JFcnJdIFtCb29rRXh0XSAqRmVhdEhkciAqRENvbm4gW1RIRU1FXSBbQ29tcHJlc3NQaWN0dXJlc10gW0NvbXBhdDEyXSBbR1VJRFR5cGVMaWJdICovXG5cdHdyaXRlX2JpZmZfcmVjKEMsIDB4MDAwQSAvKiBFT0YgKi8pO1xuXHR2YXIgYyA9IEMuZW5kKCk7XG5cblx0dmFyIEIgPSBidWZfYXJyYXkoKTtcblx0dmFyIGJsZW4gPSAwLCBqID0gMDtcblx0Zm9yKGogPSAwOyBqIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraikgYmxlbiArPSAoYjggPyAxMiA6IDExKSArIChiOCA/IDIgOiAxKSAqIHdiLlNoZWV0TmFtZXNbal0ubGVuZ3RoO1xuXHR2YXIgc3RhcnQgPSBhLmxlbmd0aCArIGJsZW4gKyBjLmxlbmd0aDtcblx0Zm9yKGogPSAwOyBqIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraikge1xuXHRcdHZhciBfc2hlZXQvKjpXQldTUHJvcCovID0gX3NoZWV0c1tqXSB8fCAoe30vKjphbnkqLyk7XG5cdFx0d3JpdGVfYmlmZl9yZWMoQiwgMHgwMDg1IC8qIEJvdW5kU2hlZXQ4ICovLCB3cml0ZV9Cb3VuZFNoZWV0OCh7cG9zOnN0YXJ0LCBoczpfc2hlZXQuSGlkZGVufHwwLCBkdDowLCBuYW1lOndiLlNoZWV0TmFtZXNbal19LCBvcHRzKSk7XG5cdFx0c3RhcnQgKz0gYnVmc1tqXS5sZW5ndGg7XG5cdH1cblx0LyogMSpCb3VuZFNoZWV0OCAqL1xuXHR2YXIgYiA9IEIuZW5kKCk7XG5cdGlmKGJsZW4gIT0gYi5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihcIkJTOCBcIiArIGJsZW4gKyBcIiAhPSBcIiArIGIubGVuZ3RoKTtcblxuXHR2YXIgb3V0ID0gW107XG5cdGlmKGEubGVuZ3RoKSBvdXQucHVzaChhKTtcblx0aWYoYi5sZW5ndGgpIG91dC5wdXNoKGIpO1xuXHRpZihjLmxlbmd0aCkgb3V0LnB1c2goYyk7XG5cdHJldHVybiBiY29uY2F0KG91dCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuMS43LjIwIFdvcmtib29rIFN0cmVhbSAqL1xuZnVuY3Rpb24gd3JpdGVfYmlmZjhfYnVmKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGJ1ZnMgPSBbXTtcblxuXHRpZih3YiAmJiAhd2IuU1NGKSB7XG5cdFx0d2IuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdH1cblx0aWYod2IgJiYgd2IuU1NGKSB7XG5cdFx0bWFrZV9zc2YoKTsgU1NGX2xvYWRfdGFibGUod2IuU1NGKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdG8ucmV2c3NmID0gZXZlcnRfbnVtKHdiLlNTRik7IG8ucmV2c3NmW3diLlNTRls2NTUzNV1dID0gMDtcblx0XHRvLnNzZiA9IHdiLlNTRjtcblx0fVxuXG5cdG8uU3RyaW5ncyA9IC8qOjooKCovW10vKjo6IDphbnkpOlNTVCkqLzsgby5TdHJpbmdzLkNvdW50ID0gMDsgby5TdHJpbmdzLlVuaXF1ZSA9IDA7XG5cdGZpeF93cml0ZV9vcHRzKG8pO1xuXG5cdG8uY2VsbFhmcyA9IFtdO1xuXHRnZXRfY2VsbF9zdHlsZShvLmNlbGxYZnMsIHt9LCB7cmV2c3NmOntcIkdlbmVyYWxcIjowfX0pO1xuXG5cdGlmKCF3Yi5Qcm9wcykgd2IuUHJvcHMgPSB7fTtcblxuXHRmb3IodmFyIGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkgYnVmc1tidWZzLmxlbmd0aF0gPSB3cml0ZV93c19iaWZmOChpLCBvLCB3Yik7XG5cdGJ1ZnMudW5zaGlmdCh3cml0ZV9iaWZmOF9nbG9iYWwod2IsIGJ1ZnMsIG8pKTtcblx0cmV0dXJuIGJjb25jYXQoYnVmcyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2JpZmZfYnVmKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdGZvcih2YXIgaSA9IDA7IGkgPD0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXTtcblx0XHRpZighd3MgfHwgIXdzW1wiIXJlZlwiXSkgY29udGludWU7XG5cdFx0dmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0aWYocmFuZ2UuZS5jID4gMjU1KSB7IC8vIG5vdGU6IDI1NSBpcyBJVlxuXHRcdGlmKHR5cGVvZiBjb25zb2xlICE9IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS5lcnJvcikgY29uc29sZS5lcnJvcihcIldvcmtzaGVldCAnXCIgKyB3Yi5TaGVldE5hbWVzW2ldICsgXCInIGV4dGVuZHMgYmV5b25kIGNvbHVtbiBJViAoMjU1KS4gIERhdGEgbWF5IGJlIGxvc3QuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0c3dpdGNoKG8uYmlmZiB8fCAyKSB7XG5cdFx0Y2FzZSA4OiBjYXNlIDU6IHJldHVybiB3cml0ZV9iaWZmOF9idWYod2IsIG9wdHMpO1xuXHRcdGNhc2UgNDogY2FzZSAzOiBjYXNlIDI6IHJldHVybiB3cml0ZV9iaWZmMl9idWYod2IsIG9wdHMpO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcImludmFsaWQgdHlwZSBcIiArIG8uYm9va1R5cGUgKyBcIiBmb3IgQklGRlwiKTtcbn1cbi8qIG5vdGU6IGJyb3dzZXIgRE9NIGVsZW1lbnQgY2Fubm90IHNlZSBtc28tIHN0eWxlIGF0dHJzLCBtdXN0IHBhcnNlICovXG5mdW5jdGlvbiBodG1sX3RvX3NoZWV0KHN0ci8qOnN0cmluZyovLCBfb3B0cykvKjpXb3JrYm9vayovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvPCEtLS4qPy0tPi9nLCBcIlwiKTtcblx0dmFyIG10Y2gvKjphbnkqLyA9IHN0ci5tYXRjaCgvPHRhYmxlL2kpO1xuXHRpZighbXRjaCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+XCIpO1xuXHR2YXIgbXRjaDIvKjphbnkqLyA9IHN0ci5tYXRjaCgvPFxcL3RhYmxlL2kpO1xuXHR2YXIgaS8qOm51bWJlciovID0gbXRjaC5pbmRleCwgai8qOm51bWJlciovID0gbXRjaDIgJiYgbXRjaDIuaW5kZXggfHwgc3RyLmxlbmd0aDtcblx0dmFyIHJvd3MgPSBzcGxpdF9yZWdleChzdHIuc2xpY2UoaSwgaiksIC8oOj88dHJbXj5dKj4pL2ksIFwiPHRyPlwiKTtcblx0dmFyIFIgPSAtMSwgQyA9IDAsIFJTID0gMCwgQ1MgPSAwO1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0ge3M6e3I6MTAwMDAwMDAsIGM6MTAwMDAwMDB9LGU6e3I6MCxjOjB9fTtcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdGZvcihpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgcm93ID0gcm93c1tpXS50cmltKCk7XG5cdFx0dmFyIGhkID0gcm93LnNsaWNlKDAsMykudG9Mb3dlckNhc2UoKTtcblx0XHRpZihoZCA9PSBcIjx0clwiKSB7ICsrUjsgaWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gUikgeyAtLVI7IGJyZWFrOyB9IEMgPSAwOyBjb250aW51ZTsgfVxuXHRcdGlmKGhkICE9IFwiPHRkXCIgJiYgaGQgIT0gXCI8dGhcIikgY29udGludWU7XG5cdFx0dmFyIGNlbGxzID0gcm93LnNwbGl0KC88XFwvdFtkaF0+L2kpO1xuXHRcdGZvcihqID0gMDsgaiA8IGNlbGxzLmxlbmd0aDsgKytqKSB7XG5cdFx0XHR2YXIgY2VsbCA9IGNlbGxzW2pdLnRyaW0oKTtcblx0XHRcdGlmKCFjZWxsLm1hdGNoKC88dFtkaF0vaSkpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIG0gPSBjZWxsLCBjYyA9IDA7XG5cdFx0XHQvKiBUT0RPOiBwYXJzZSBzdHlsZXMgZXRjICovXG5cdFx0XHR3aGlsZShtLmNoYXJBdCgwKSA9PSBcIjxcIiAmJiAoY2MgPSBtLmluZGV4T2YoXCI+XCIpKSA+IC0xKSBtID0gbS5zbGljZShjYysxKTtcblx0XHRcdGZvcih2YXIgbWlkeCA9IDA7IG1pZHggPCBtZXJnZXMubGVuZ3RoOyArK21pZHgpIHtcblx0XHRcdFx0dmFyIF9tZXJnZS8qOlJhbmdlKi8gPSBtZXJnZXNbbWlkeF07XG5cdFx0XHRcdGlmKF9tZXJnZS5zLmMgPT0gQyAmJiBfbWVyZ2Uucy5yIDwgUiAmJiBSIDw9IF9tZXJnZS5lLnIpIHsgQyA9IF9tZXJnZS5lLmMgKyAxOyBtaWR4ID0gLTE7IH1cblx0XHRcdH1cblx0XHRcdHZhciB0YWcgPSBwYXJzZXhtbHRhZyhjZWxsLnNsaWNlKDAsIGNlbGwuaW5kZXhPZihcIj5cIikpKTtcblx0XHRcdENTID0gdGFnLmNvbHNwYW4gPyArdGFnLmNvbHNwYW4gOiAxO1xuXHRcdFx0aWYoKFJTID0gK3RhZy5yb3dzcGFuKT4xIHx8IENTPjEpIG1lcmdlcy5wdXNoKHtzOntyOlIsYzpDfSxlOntyOlIgKyAoUlN8fDEpIC0gMSwgYzpDICsgQ1MgLSAxfX0pO1xuXHRcdFx0dmFyIF90Lyo6c3RyaW5nKi8gPSB0YWcudCB8fCB0YWdbXCJkYXRhLXRcIl0gfHwgXCJcIjtcblx0XHRcdC8qIFRPRE86IGdlbmVyYXRlIHN0dWIgY2VsbHMgKi9cblx0XHRcdGlmKCFtLmxlbmd0aCkgeyBDICs9IENTOyBjb250aW51ZTsgfVxuXHRcdFx0bSA9IGh0bWxkZWNvZGUobSk7XG5cdFx0XHRpZihyYW5nZS5zLnIgPiBSKSByYW5nZS5zLnIgPSBSOyBpZihyYW5nZS5lLnIgPCBSKSByYW5nZS5lLnIgPSBSO1xuXHRcdFx0aWYocmFuZ2Uucy5jID4gQykgcmFuZ2Uucy5jID0gQzsgaWYocmFuZ2UuZS5jIDwgQykgcmFuZ2UuZS5jID0gQztcblx0XHRcdGlmKCFtLmxlbmd0aCkgeyBDICs9IENTOyBjb250aW51ZTsgfVxuXHRcdFx0dmFyIG8vKjpDZWxsKi8gPSB7dDoncycsIHY6bX07XG5cdFx0XHRpZihvcHRzLnJhdyB8fCAhbS50cmltKCkubGVuZ3RoIHx8IF90ID09ICdzJyl7fVxuXHRcdFx0ZWxzZSBpZihtID09PSAnVFJVRScpIG8gPSB7dDonYicsIHY6dHJ1ZX07XG5cdFx0XHRlbHNlIGlmKG0gPT09ICdGQUxTRScpIG8gPSB7dDonYicsIHY6ZmFsc2V9O1xuXHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0obSkpKSBvID0ge3Q6J24nLCB2OmZ1enp5bnVtKG0pfTtcblx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZShtKS5nZXREYXRlKCkpKSB7XG5cdFx0XHRcdG8gPSAoe3Q6J2QnLCB2OnBhcnNlRGF0ZShtKX0vKjphbnkqLyk7XG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxEYXRlcykgbyA9ICh7dDonbicsIHY6ZGF0ZW51bShvLnYpfS8qOmFueSovKTtcblx0XHRcdFx0by56ID0gb3B0cy5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdH1cblx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXdzW1JdKSB3c1tSXSA9IFtdOyB3c1tSXVtDXSA9IG87IH1cblx0XHRcdGVsc2Ugd3NbZW5jb2RlX2NlbGwoe3I6UiwgYzpDfSldID0gbztcblx0XHRcdEMgKz0gQ1M7XG5cdFx0fVxuXHR9XG5cdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRpZihtZXJnZXMubGVuZ3RoKSB3c1tcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdHJldHVybiB3cztcbn1cbmZ1bmN0aW9uIG1ha2VfaHRtbF9yb3cod3MvKjpXb3Jrc2hlZXQqLywgci8qOlJhbmdlKi8sIFIvKjpudW1iZXIqLywgby8qOlNoZWV0MkhUTUxPcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgTS8qOkFycmF5PFJhbmdlPiovID0gKHdzWychbWVyZ2VzJ10gfHxbXSk7XG5cdHZhciBvby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0dmFyIFJTID0gMCwgQ1MgPSAwO1xuXHRcdGZvcih2YXIgaiA9IDA7IGogPCBNLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRpZihNW2pdLnMuciA+IFIgfHwgTVtqXS5zLmMgPiBDKSBjb250aW51ZTtcblx0XHRcdGlmKE1bal0uZS5yIDwgUiB8fCBNW2pdLmUuYyA8IEMpIGNvbnRpbnVlO1xuXHRcdFx0aWYoTVtqXS5zLnIgPCBSIHx8IE1bal0ucy5jIDwgQykgeyBSUyA9IC0xOyBicmVhazsgfVxuXHRcdFx0UlMgPSBNW2pdLmUuciAtIE1bal0ucy5yICsgMTsgQ1MgPSBNW2pdLmUuYyAtIE1bal0ucy5jICsgMTsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKFJTIDwgMCkgY29udGludWU7XG5cdFx0dmFyIGNvb3JkID0gZW5jb2RlX2NlbGwoe3I6UixjOkN9KTtcblx0XHR2YXIgY2VsbCA9IG8uZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHQvKiBUT0RPOiBodG1sIGVudGl0aWVzICovXG5cdFx0dmFyIHcgPSAoY2VsbCAmJiBjZWxsLnYgIT0gbnVsbCkgJiYgKGNlbGwuaCB8fCBlc2NhcGVodG1sKGNlbGwudyB8fCAoZm9ybWF0X2NlbGwoY2VsbCksIGNlbGwudykgfHwgXCJcIikpIHx8IFwiXCI7XG5cdFx0dmFyIHNwID0gKHt9Lyo6YW55Ki8pO1xuXHRcdGlmKFJTID4gMSkgc3Aucm93c3BhbiA9IFJTO1xuXHRcdGlmKENTID4gMSkgc3AuY29sc3BhbiA9IENTO1xuXHRcdGlmKG8uZWRpdGFibGUpIHcgPSAnPHNwYW4gY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPicgKyB3ICsgJzwvc3Bhbj4nO1xuXHRcdGVsc2UgaWYoY2VsbCkge1xuXHRcdFx0c3BbXCJkYXRhLXRcIl0gPSBjZWxsICYmIGNlbGwudCB8fCAneic7XG5cdFx0XHRpZihjZWxsLnYgIT0gbnVsbCkgc3BbXCJkYXRhLXZcIl0gPSBjZWxsLnY7XG5cdFx0XHRpZihjZWxsLnogIT0gbnVsbCkgc3BbXCJkYXRhLXpcIl0gPSBjZWxsLno7XG5cdFx0XHRpZihjZWxsLmwgJiYgKGNlbGwubC5UYXJnZXQgfHwgXCIjXCIpLmNoYXJBdCgwKSAhPSBcIiNcIikgdyA9ICc8YSBocmVmPVwiJyArIGNlbGwubC5UYXJnZXQgKydcIj4nICsgdyArICc8L2E+Jztcblx0XHR9XG5cdFx0c3AuaWQgPSAoby5pZCB8fCBcInNqc1wiKSArIFwiLVwiICsgY29vcmQ7XG5cdFx0b28ucHVzaCh3cml0ZXh0YWcoJ3RkJywgdywgc3ApKTtcblx0fVxuXHR2YXIgcHJlYW1ibGUgPSBcIjx0cj5cIjtcblx0cmV0dXJuIHByZWFtYmxlICsgb28uam9pbihcIlwiKSArIFwiPC90cj5cIjtcbn1cblxudmFyIEhUTUxfQkVHSU4gPSAnPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD1cInV0Zi04XCIvPjx0aXRsZT5TaGVldEpTIFRhYmxlIEV4cG9ydDwvdGl0bGU+PC9oZWFkPjxib2R5Pic7XG52YXIgSFRNTF9FTkQgPSAnPC9ib2R5PjwvaHRtbD4nO1xuXG5mdW5jdGlvbiBodG1sX3RvX3dvcmtib29rKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgbXRjaCA9IHN0ci5tYXRjaCgvPHRhYmxlW1xcc1xcU10qPz5bXFxzXFxTXSo/PFxcL3RhYmxlPi9naSk7XG5cdGlmKCFtdGNoIHx8IG10Y2gubGVuZ3RoID09IDApIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPlwiKTtcblx0aWYobXRjaC5sZW5ndGggPT0gMSkgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGh0bWxfdG9fc2hlZXQobXRjaFswXSwgb3B0cyksIG9wdHMpO1xuXHR2YXIgd2IgPSBib29rX25ldygpO1xuXHRtdGNoLmZvckVhY2goZnVuY3Rpb24ocywgaWR4KSB7IGJvb2tfYXBwZW5kX3NoZWV0KHdiLCBodG1sX3RvX3NoZWV0KHMsIG9wdHMpLCBcIlNoZWV0XCIgKyAoaWR4KzEpKTsgfSk7XG5cdHJldHVybiB3Yjtcbn1cblxuZnVuY3Rpb24gbWFrZV9odG1sX3ByZWFtYmxlKHdzLyo6V29ya3NoZWV0Ki8sIFIvKjpSYW5nZSovLCBvLyo6U2hlZXQySFRNTE9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0cmV0dXJuIG91dC5qb2luKFwiXCIpICsgJzx0YWJsZScgKyAobyAmJiBvLmlkID8gJyBpZD1cIicgKyBvLmlkICsgJ1wiJyA6IFwiXCIpICsgJz4nO1xufVxuXG5mdW5jdGlvbiBzaGVldF90b19odG1sKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQySFRNTE9wdHMqLy8qLCB3Yjo/V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGhlYWRlciA9IG8uaGVhZGVyICE9IG51bGwgPyBvLmhlYWRlciA6IEhUTUxfQkVHSU47XG5cdHZhciBmb290ZXIgPSBvLmZvb3RlciAhPSBudWxsID8gby5mb290ZXIgOiBIVE1MX0VORDtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtoZWFkZXJdO1xuXHR2YXIgciA9IGRlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0by5kZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRvdXQucHVzaChtYWtlX2h0bWxfcHJlYW1ibGUod3MsIHIsIG8pKTtcblx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikgb3V0LnB1c2gobWFrZV9odG1sX3Jvdyh3cywgciwgUiwgbykpO1xuXHRvdXQucHVzaChcIjwvdGFibGU+XCIgKyBmb290ZXIpO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X2FkZF9kb20od3MvKjpXb3Jrc2hlZXQqLywgdGFibGUvKjpIVE1MRWxlbWVudCovLCBfb3B0cy8qOj9hbnkqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdGlmKERFTlNFICE9IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0dmFyIG9yX1IgPSAwLCBvcl9DID0gMDtcblx0aWYob3B0cy5vcmlnaW4gIT0gbnVsbCkge1xuXHRcdGlmKHR5cGVvZiBvcHRzLm9yaWdpbiA9PSAnbnVtYmVyJykgb3JfUiA9IG9wdHMub3JpZ2luO1xuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIF9vcmlnaW4vKjpDZWxsQWRkcmVzcyovID0gdHlwZW9mIG9wdHMub3JpZ2luID09IFwic3RyaW5nXCIgPyBkZWNvZGVfY2VsbChvcHRzLm9yaWdpbikgOiBvcHRzLm9yaWdpbjtcblx0XHRcdG9yX1IgPSBfb3JpZ2luLnI7IG9yX0MgPSBfb3JpZ2luLmM7XG5cdFx0fVxuXHR9XG5cblx0dmFyIHJvd3MvKjpIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dFbGVtZW50PiovID0gdGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJyk7XG5cdHZhciBzaGVldFJvd3MgPSBNYXRoLm1pbihvcHRzLnNoZWV0Um93c3x8MTAwMDAwMDAsIHJvd3MubGVuZ3RoKTtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9IHtzOntyOjAsYzowfSxlOntyOm9yX1IsYzpvcl9DfX07XG5cdGlmKHdzW1wiIXJlZlwiXSkge1xuXHRcdHZhciBfcmFuZ2UvKjpSYW5nZSovID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0cmFuZ2Uucy5yID0gTWF0aC5taW4ocmFuZ2Uucy5yLCBfcmFuZ2Uucy5yKTtcblx0XHRyYW5nZS5zLmMgPSBNYXRoLm1pbihyYW5nZS5zLmMsIF9yYW5nZS5zLmMpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgX3JhbmdlLmUucik7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5tYXgocmFuZ2UuZS5jLCBfcmFuZ2UuZS5jKTtcblx0XHRpZihvcl9SID09IC0xKSByYW5nZS5lLnIgPSBvcl9SID0gX3JhbmdlLmUuciArIDE7XG5cdH1cblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW10sIG1pZHggPSAwO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSB3c1tcIiFyb3dzXCJdIHx8ICh3c1tcIiFyb3dzXCJdID0gW10pO1xuXHR2YXIgX1IgPSAwLCBSID0gMCwgX0MgPSAwLCBDID0gMCwgUlMgPSAwLCBDUyA9IDA7XG5cdGlmKCF3c1tcIiFjb2xzXCJdKSB3c1snIWNvbHMnXSA9IFtdO1xuXHRmb3IoOyBfUiA8IHJvd3MubGVuZ3RoICYmIFIgPCBzaGVldFJvd3M7ICsrX1IpIHtcblx0XHR2YXIgcm93Lyo6SFRNTFRhYmxlUm93RWxlbWVudCovID0gcm93c1tfUl07XG5cdFx0aWYgKGlzX2RvbV9lbGVtZW50X2hpZGRlbihyb3cpKSB7XG5cdFx0XHRpZiAob3B0cy5kaXNwbGF5KSBjb250aW51ZTtcblx0XHRcdHJvd2luZm9bUl0gPSB7aGlkZGVuOiB0cnVlfTtcblx0XHR9XG5cdFx0dmFyIGVsdHMvKjpIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVDZWxsRWxlbWVudD4qLyA9IChyb3cuY2hpbGRyZW4vKjphbnkqLyk7XG5cdFx0Zm9yKF9DID0gQyA9IDA7IF9DIDwgZWx0cy5sZW5ndGg7ICsrX0MpIHtcblx0XHRcdHZhciBlbHQvKjpIVE1MVGFibGVDZWxsRWxlbWVudCovID0gZWx0c1tfQ107XG5cdFx0XHRpZiAob3B0cy5kaXNwbGF5ICYmIGlzX2RvbV9lbGVtZW50X2hpZGRlbihlbHQpKSBjb250aW51ZTtcblx0XHRcdHZhciB2Lyo6P3N0cmluZyovID0gZWx0Lmhhc0F0dHJpYnV0ZSgnZGF0YS12JykgPyBlbHQuZ2V0QXR0cmlidXRlKCdkYXRhLXYnKSA6IGVsdC5oYXNBdHRyaWJ1dGUoJ3YnKSA/IGVsdC5nZXRBdHRyaWJ1dGUoJ3YnKSA6IGh0bWxkZWNvZGUoZWx0LmlubmVySFRNTCk7XG5cdFx0XHR2YXIgei8qOj9zdHJpbmcqLyA9IGVsdC5nZXRBdHRyaWJ1dGUoJ2RhdGEteicpIHx8IGVsdC5nZXRBdHRyaWJ1dGUoJ3onKTtcblx0XHRcdGZvcihtaWR4ID0gMDsgbWlkeCA8IG1lcmdlcy5sZW5ndGg7ICsrbWlkeCkge1xuXHRcdFx0XHR2YXIgbS8qOlJhbmdlKi8gPSBtZXJnZXNbbWlkeF07XG5cdFx0XHRcdGlmKG0ucy5jID09IEMgKyBvcl9DICYmIG0ucy5yIDwgUiArIG9yX1IgJiYgUiArIG9yX1IgPD0gbS5lLnIpIHsgQyA9IG0uZS5jKzEgLSBvcl9DOyBtaWR4ID0gLTE7IH1cblx0XHRcdH1cblx0XHRcdC8qIFRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIGV4dHJhY3Qgbm9uc3RhbmRhcmQgbXNvLSBzdHlsZSAqL1xuXHRcdFx0Q1MgPSArZWx0LmdldEF0dHJpYnV0ZShcImNvbHNwYW5cIikgfHwgMTtcblx0XHRcdGlmKCAoKFJTID0gKCtlbHQuZ2V0QXR0cmlidXRlKFwicm93c3BhblwiKSB8fCAxKSkpPjEgfHwgQ1M+MSkgbWVyZ2VzLnB1c2goe3M6e3I6UiArIG9yX1IsYzpDICsgb3JfQ30sZTp7cjpSICsgb3JfUiArIChSU3x8MSkgLSAxLCBjOkMgKyBvcl9DICsgKENTfHwxKSAtIDF9fSk7XG5cdFx0XHR2YXIgby8qOkNlbGwqLyA9IHt0OidzJywgdjp2fTtcblx0XHRcdHZhciBfdC8qOnN0cmluZyovID0gZWx0LmdldEF0dHJpYnV0ZShcImRhdGEtdFwiKSB8fCBlbHQuZ2V0QXR0cmlidXRlKFwidFwiKSB8fCBcIlwiO1xuXHRcdFx0aWYodiAhPSBudWxsKSB7XG5cdFx0XHRcdGlmKHYubGVuZ3RoID09IDApIG8udCA9IF90IHx8ICd6Jztcblx0XHRcdFx0ZWxzZSBpZihvcHRzLnJhdyB8fCB2LnRyaW0oKS5sZW5ndGggPT0gMCB8fCBfdCA9PSBcInNcIil7fVxuXHRcdFx0XHRlbHNlIGlmKHYgPT09ICdUUlVFJykgbyA9IHt0OidiJywgdjp0cnVlfTtcblx0XHRcdFx0ZWxzZSBpZih2ID09PSAnRkFMU0UnKSBvID0ge3Q6J2InLCB2OmZhbHNlfTtcblx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0odikpKSBvID0ge3Q6J24nLCB2OmZ1enp5bnVtKHYpfTtcblx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKHYpLmdldERhdGUoKSkpIHtcblx0XHRcdFx0XHRvID0gKHt0OidkJywgdjpwYXJzZURhdGUodil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKCFvcHRzLmNlbGxEYXRlcykgbyA9ICh7dDonbicsIHY6ZGF0ZW51bShvLnYpfS8qOmFueSovKTtcblx0XHRcdFx0XHRvLnogPSBvcHRzLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZihvLnogPT09IHVuZGVmaW5lZCAmJiB6ICE9IG51bGwpIG8ueiA9IHo7XG5cdFx0XHQvKiBUaGUgZmlyc3QgbGluayBpcyB1c2VkLiAgTGlua3MgYXJlIGFzc3VtZWQgdG8gYmUgZnVsbHkgc3BlY2lmaWVkLlxuXHRcdFx0ICogVE9ETzogVGhlIHJpZ2h0IHdheSB0byBwcm9jZXNzIHJlbGF0aXZlIGxpbmtzIGlzIHRvIG1ha2UgYSBuZXcgPGE+ICovXG5cdFx0XHR2YXIgbCA9IFwiXCIsIEFlbHRzID0gZWx0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiQVwiKTtcblx0XHRcdGlmKEFlbHRzICYmIEFlbHRzLmxlbmd0aCkgZm9yKHZhciBBZWx0aSA9IDA7IEFlbHRpIDwgQWVsdHMubGVuZ3RoOyArK0FlbHRpKVx0aWYoQWVsdHNbQWVsdGldLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHtcblx0XHRcdFx0bCA9IEFlbHRzW0FlbHRpXS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpOyBpZihsLmNoYXJBdCgwKSAhPSBcIiNcIikgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihsICYmIGwuY2hhckF0KDApICE9IFwiI1wiKSBvLmwgPSAoeyBUYXJnZXQ6IGwgfSk7XG5cdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCF3c1tSICsgb3JfUl0pIHdzW1IgKyBvcl9SXSA9IFtdOyB3c1tSICsgb3JfUl1bQyArIG9yX0NdID0gbzsgfVxuXHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7YzpDICsgb3JfQywgcjpSICsgb3JfUn0pXSA9IG87XG5cdFx0XHRpZihyYW5nZS5lLmMgPCBDICsgb3JfQykgcmFuZ2UuZS5jID0gQyArIG9yX0M7XG5cdFx0XHRDICs9IENTO1xuXHRcdH1cblx0XHQrK1I7XG5cdH1cblx0aWYobWVyZ2VzLmxlbmd0aCkgd3NbJyFtZXJnZXMnXSA9ICh3c1tcIiFtZXJnZXNcIl0gfHwgW10pLmNvbmNhdChtZXJnZXMpO1xuXHRyYW5nZS5lLnIgPSBNYXRoLm1heChyYW5nZS5lLnIsIFIgLSAxICsgb3JfUik7XG5cdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRpZihSID49IHNoZWV0Um93cykgd3NbJyFmdWxscmVmJ10gPSBlbmNvZGVfcmFuZ2UoKHJhbmdlLmUuciA9IHJvd3MubGVuZ3RoLV9SK1ItMSArIG9yX1IscmFuZ2UpKTsgLy8gV2UgY2FuIGNvdW50IHRoZSByZWFsIG51bWJlciBvZiByb3dzIHRvIHBhcnNlIGJ1dCB3ZSBkb24ndCB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZVxuXHRyZXR1cm4gd3M7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2RvbV90YWJsZSh0YWJsZS8qOkhUTUxFbGVtZW50Ki8sIF9vcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHRyZXR1cm4gc2hlZXRfYWRkX2RvbSh3cywgdGFibGUsIF9vcHRzKTtcbn1cblxuZnVuY3Rpb24gdGFibGVfdG9fYm9vayh0YWJsZS8qOkhUTUxFbGVtZW50Ki8sIG9wdHMvKjo/YW55Ki8pLyo6V29ya2Jvb2sqLyB7XG5cdHJldHVybiBzaGVldF90b193b3JrYm9vayhwYXJzZV9kb21fdGFibGUodGFibGUsIG9wdHMpLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gaXNfZG9tX2VsZW1lbnRfaGlkZGVuKGVsZW1lbnQvKjpIVE1MRWxlbWVudCovKS8qOmJvb2xlYW4qLyB7XG5cdHZhciBkaXNwbGF5Lyo6c3RyaW5nKi8gPSAnJztcblx0dmFyIGdldF9jb21wdXRlZF9zdHlsZS8qOj9mdW5jdGlvbiovID0gZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbihlbGVtZW50KTtcblx0aWYoZ2V0X2NvbXB1dGVkX3N0eWxlKSBkaXNwbGF5ID0gZ2V0X2NvbXB1dGVkX3N0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKTtcblx0aWYoIWRpc3BsYXkpIGRpc3BsYXkgPSBlbGVtZW50LnN0eWxlICYmIGVsZW1lbnQuc3R5bGUuZGlzcGxheTtcblx0cmV0dXJuIGRpc3BsYXkgPT09ICdub25lJztcbn1cblxuLyogZ2xvYmFsIGdldENvbXB1dGVkU3R5bGUgKi9cbmZ1bmN0aW9uIGdldF9nZXRfY29tcHV0ZWRfc3R5bGVfZnVuY3Rpb24oZWxlbWVudC8qOkhUTUxFbGVtZW50Ki8pLyo6P2Z1bmN0aW9uKi8ge1xuXHQvLyBUaGUgcHJvcGVyIGdldENvbXB1dGVkU3R5bGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIG9uZSBkZWZpbmVkIGluIHRoZSBlbGVtZW50IHdpbmRvd1xuXHRpZihlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgJiYgdHlwZW9mIGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGU7XG5cdC8vIElmIGl0IGlzIG5vdCBhdmFpbGFibGUsIHRyeSB0byBnZXQgb25lIGZyb20gdGhlIGdsb2JhbCBuYW1lc3BhY2Vcblx0aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBnZXRDb21wdXRlZFN0eWxlO1xuXHRyZXR1cm4gbnVsbDtcbn1cbi8qIE9wZW5Eb2N1bWVudCAqL1xuZnVuY3Rpb24gcGFyc2VfdGV4dF9wKHRleHQvKjpzdHJpbmcqLy8qOjosIHRhZyovKS8qOkFycmF5PGFueT4qLyB7XG5cdC8qIDYuMS4yIFdoaXRlIFNwYWNlIENoYXJhY3RlcnMgKi9cblx0dmFyIGZpeGVkID0gdGV4dFxuXHRcdC5yZXBsYWNlKC9bXFx0XFxyXFxuXS9nLCBcIiBcIikudHJpbSgpLnJlcGxhY2UoLyArL2csIFwiIFwiKVxuXHRcdC5yZXBsYWNlKC88dGV4dDpzXFwvPi9nLFwiIFwiKVxuXHRcdC5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz1cIihcXGQrKVwiXFwvPi9nLCBmdW5jdGlvbigkJCwkMSkgeyByZXR1cm4gQXJyYXkocGFyc2VJbnQoJDEsMTApKzEpLmpvaW4oXCIgXCIpOyB9KVxuXHRcdC5yZXBsYWNlKC88dGV4dDp0YWJbXj5dKlxcLz4vZyxcIlxcdFwiKVxuXHRcdC5yZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXFwvPi9nLFwiXFxuXCIpO1xuXHR2YXIgdiA9IHVuZXNjYXBleG1sKGZpeGVkLnJlcGxhY2UoLzxbXj5dKj4vZyxcIlwiKSk7XG5cblx0cmV0dXJuIFt2XTtcbn1cblxudmFyIG51bWJlcl9mb3JtYXRzX29kcyA9IHtcblx0Lyogb2RzIG5hbWU6IFtzaG9ydCBzc2YgZm10LCBsb25nIHNzZiBmbXRdICovXG5cdGRheTogICAgICAgICAgIFtcImRcIiwgICBcImRkXCJdLFxuXHRtb250aDogICAgICAgICBbXCJtXCIsICAgXCJtbVwiXSxcblx0eWVhcjogICAgICAgICAgW1wieVwiLCAgIFwieXlcIl0sXG5cdGhvdXJzOiAgICAgICAgIFtcImhcIiwgICBcImhoXCJdLFxuXHRtaW51dGVzOiAgICAgICBbXCJtXCIsICAgXCJtbVwiXSxcblx0c2Vjb25kczogICAgICAgW1wic1wiLCAgIFwic3NcIl0sXG5cdFwiYW0tcG1cIjogICAgICAgW1wiQS9QXCIsIFwiQU0vUE1cIl0sXG5cdFwiZGF5LW9mLXdlZWtcIjogW1wiZGRkXCIsIFwiZGRkZFwiXSxcblx0ZXJhOiAgICAgICAgICAgW1wiZVwiLCAgIFwiZWVcIl0sXG5cdC8qIHRoZXJlIGlzIG5vIG5hdGl2ZSByZXByZXNlbnRhdGlvbiBvZiBMTyBcIlFcIiBmb3JtYXQgKi9cblx0cXVhcnRlcjogICAgICAgW1wiXFxcXFFtXCIsIFwibVxcXFxcXFwidGggcXVhcnRlclxcXCJcIl1cbn07XG5cblxuZnVuY3Rpb24gcGFyc2VfY29udGVudF94bWwoZC8qOnN0cmluZyovLCBfb3B0cykvKjpXb3JrYm9vayovIHtcblx0XHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRcdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdFx0dmFyIHN0ciA9IHhsbWxfbm9ybWFsaXplKGQpO1xuXHRcdHZhciBzdGF0ZS8qOkFycmF5PGFueT4qLyA9IFtdLCB0bXA7XG5cdFx0dmFyIHRhZy8qOjogPSB7fSovO1xuXHRcdHZhciBORnRhZyA9IHtuYW1lOlwiXCJ9LCBORiA9IFwiXCIsIHBpZHggPSAwO1xuXHRcdHZhciBzaGVldGFnLyo6OiA9IHtuYW1lOlwiXCIsICflkI3np7AnOlwiXCJ9Ki87XG5cdFx0dmFyIHJvd3RhZy8qOjogPSB7J+ihjOWPtyc6XCJcIn0qLztcblx0XHR2YXIgU2hlZXRzID0ge30sIFNoZWV0TmFtZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgd3MgPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciBSbiwgcS8qOjogOmFueSA9ICh7dDpcIlwiLCB2Om51bGwsIHo6bnVsbCwgdzpcIlwiLGM6W10sfTphbnkpKi87XG5cdFx0dmFyIGN0YWcgPSAoe3ZhbHVlOlwiXCJ9Lyo6YW55Ki8pO1xuXHRcdHZhciB0ZXh0cCA9IFwiXCIsIHRleHRwaWR4ID0gMCwgdGV4dHB0YWcvKjo6ID0ge30qLztcblx0XHR2YXIgdGV4dFIgPSBbXTtcblx0XHR2YXIgUiA9IC0xLCBDID0gLTEsIHJhbmdlID0ge3M6IHtyOjEwMDAwMDAsYzoxMDAwMDAwMH0sIGU6IHtyOjAsIGM6MH19O1xuXHRcdHZhciByb3dfb2wgPSAwO1xuXHRcdHZhciBudW1iZXJfZm9ybWF0X21hcCA9IHt9O1xuXHRcdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdLCBtcmFuZ2UgPSB7fSwgbVIgPSAwLCBtQyA9IDA7XG5cdFx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW10sIHJvd3BlYXQgPSAxLCBjb2xwZWF0ID0gMTtcblx0XHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdFx0dmFyIFdCID0ge05hbWVzOltdfTtcblx0XHR2YXIgYXRhZyA9ICh7fS8qOmFueSovKTtcblx0XHR2YXIgX1JlZi8qOltzdHJpbmcsIHN0cmluZ10qLyA9IFtcIlwiLCBcIlwiXTtcblx0XHR2YXIgY29tbWVudHMvKjpBcnJheTxDb21tZW50PiovID0gW10sIGNvbW1lbnQvKjpDb21tZW50Ki8gPSAoe30vKjphbnkqLyk7XG5cdFx0dmFyIGNyZWF0b3IgPSBcIlwiLCBjcmVhdG9yaWR4ID0gMDtcblx0XHR2YXIgaXNzdHViID0gZmFsc2UsIGludGFibGUgPSBmYWxzZTtcblx0XHR2YXIgaSA9IDA7XG5cdFx0eGxtbHJlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cdFx0c3RyID0gc3RyLnJlcGxhY2UoLzwhLS0oW1xcc1xcU10qPyktLT4vbWcsXCJcIikucmVwbGFjZSgvPCFET0NUWVBFW15cXFtdKlxcW1teXFxdXSpcXF0+L2dtLFwiXCIpO1xuXHRcdHdoaWxlKChSbiA9IHhsbWxyZWdleC5leGVjKHN0cikpKSBzd2l0Y2goKFJuWzNdPVJuWzNdLnJlcGxhY2UoL18uKiQvLFwiXCIpKSkge1xuXG5cdFx0XHRjYXNlICd0YWJsZSc6IGNhc2UgJ+W3peS9nOihqCc6IC8vIDkuMS4yIDx0YWJsZTp0YWJsZT5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpIHtcblx0XHRcdFx0XHRpZihyYW5nZS5lLmMgPj0gcmFuZ2Uucy5jICYmIHJhbmdlLmUuciA+PSByYW5nZS5zLnIpIHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdGVsc2Ugd3NbJyFyZWYnXSA9IFwiQTE6QTFcIjtcblx0XHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyA+IDAgJiYgb3B0cy5zaGVldFJvd3MgPD0gcmFuZ2UuZS5yKSB7XG5cdFx0XHRcdFx0XHR3c1snIWZ1bGxyZWYnXSA9IHdzWychcmVmJ107XG5cdFx0XHRcdFx0XHRyYW5nZS5lLnIgPSBvcHRzLnNoZWV0Um93cyAtIDE7XG5cdFx0XHRcdFx0XHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYobWVyZ2VzLmxlbmd0aCkgd3NbJyFtZXJnZXMnXSA9IG1lcmdlcztcblx0XHRcdFx0XHRpZihyb3dpbmZvLmxlbmd0aCkgd3NbXCIhcm93c1wiXSA9IHJvd2luZm87XG5cdFx0XHRcdFx0c2hlZXRhZy5uYW1lID0gc2hlZXRhZ1sn5ZCN56ewJ10gfHwgc2hlZXRhZy5uYW1lO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBKU09OICE9PSAndW5kZWZpbmVkJykgSlNPTi5zdHJpbmdpZnkoc2hlZXRhZyk7XG5cdFx0XHRcdFx0U2hlZXROYW1lcy5wdXNoKHNoZWV0YWcubmFtZSk7XG5cdFx0XHRcdFx0U2hlZXRzW3NoZWV0YWcubmFtZV0gPSB3cztcblx0XHRcdFx0XHRpbnRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtcblx0XHRcdFx0XHRzaGVldGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRSID0gQyA9IC0xO1xuXHRcdFx0XHRcdHJhbmdlLnMuciA9IHJhbmdlLnMuYyA9IDEwMDAwMDAwOyByYW5nZS5lLnIgPSByYW5nZS5lLmMgPSAwO1xuXHRcdFx0XHRcdHdzID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTsgbWVyZ2VzID0gW107XG5cdFx0XHRcdFx0cm93aW5mbyA9IFtdO1xuXHRcdFx0XHRcdGludGFibGUgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICd0YWJsZS1yb3ctZ3JvdXAnOiAvLyA5LjEuOSA8dGFibGU6dGFibGUtcm93LWdyb3VwPlxuXHRcdFx0XHRpZihSblsxXSA9PT0gXCIvXCIpIC0tcm93X29sOyBlbHNlICsrcm93X29sO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3RhYmxlLXJvdyc6IGNhc2UgJ+ihjCc6IC8vIDkuMS4zIDx0YWJsZTp0YWJsZS1yb3c+XG5cdFx0XHRcdGlmKFJuWzFdID09PSAnLycpIHsgUis9cm93cGVhdDsgcm93cGVhdCA9IDE7IGJyZWFrOyB9XG5cdFx0XHRcdHJvd3RhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdGlmKHJvd3RhZ1sn6KGM5Y+3J10pIFIgPSByb3d0YWdbJ+ihjOWPtyddIC0gMTsgZWxzZSBpZihSID09IC0xKSBSID0gMDtcblx0XHRcdFx0cm93cGVhdCA9ICtyb3d0YWdbJ251bWJlci1yb3dzLXJlcGVhdGVkJ10gfHwgMTtcblx0XHRcdFx0LyogVE9ETzogcmVtb3ZlIG1hZ2ljICovXG5cdFx0XHRcdGlmKHJvd3BlYXQgPCAxMCkgZm9yKGkgPSAwOyBpIDwgcm93cGVhdDsgKytpKSBpZihyb3dfb2wgPiAwKSByb3dpbmZvW1IgKyBpXSA9IHtsZXZlbDogcm93X29sfTtcblx0XHRcdFx0QyA9IC0xOyBicmVhaztcblx0XHRcdGNhc2UgJ2NvdmVyZWQtdGFibGUtY2VsbCc6IC8vIDkuMS41IDx0YWJsZTpjb3ZlcmVkLXRhYmxlLWNlbGw+XG5cdFx0XHRcdGlmKFJuWzFdICE9PSAnLycpICsrQztcblx0XHRcdFx0aWYob3B0cy5zaGVldFN0dWJzKSB7XG5cdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighd3NbUl0pIHdzW1JdID0gW107IHdzW1JdW0NdID0ge3Q6J3onfTsgfVxuXHRcdFx0XHRcdGVsc2Ugd3NbZW5jb2RlX2NlbGwoe3I6UixjOkN9KV0gPSB7dDoneid9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dFIgPSBbXTtcblx0XHRcdFx0YnJlYWs7IC8qIHN0dWIgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLWNlbGwnOiBjYXNlICfmlbDmja4nOlxuXHRcdFx0XHRpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpID09PSAnLycpIHtcblx0XHRcdFx0XHQrK0M7XG5cdFx0XHRcdFx0Y3RhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0Y29scGVhdCA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ118fFwiMVwiLCAxMCk7XG5cdFx0XHRcdFx0cSA9ICh7dDoneicsIHY6bnVsbC8qOjogLCB6Om51bGwsIHc6XCJcIixjOltdKi99Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKGN0YWcuZm9ybXVsYSAmJiBvcHRzLmNlbGxGb3JtdWxhICE9IGZhbHNlKSBxLmYgPSBvZHNfdG9fY3NmX2Zvcm11bGEodW5lc2NhcGV4bWwoY3RhZy5mb3JtdWxhKSk7XG5cdFx0XHRcdFx0aWYoKGN0YWdbJ+aVsOaNruexu+WeiyddIHx8IGN0YWdbJ3ZhbHVlLXR5cGUnXSkgPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0cS50ID0gXCJzXCI7IHEudiA9IHVuZXNjYXBleG1sKGN0YWdbJ3N0cmluZy12YWx1ZSddIHx8IFwiXCIpO1xuXHRcdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0XHRpZighd3NbUl0pIHdzW1JdID0gW107XG5cdFx0XHRcdFx0XHRcdHdzW1JdW0NdID0gcTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHdzW2VuY29kZV9jZWxsKHtyOlIsYzpDfSldID0gcTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Qys9IGNvbHBlYXQtMTtcblx0XHRcdFx0fSBlbHNlIGlmKFJuWzFdIT09Jy8nKSB7XG5cdFx0XHRcdFx0KytDO1xuXHRcdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dHBpZHggPSAwOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRcdGNvbHBlYXQgPSAxO1xuXHRcdFx0XHRcdHZhciBycHRSID0gcm93cGVhdCA/IFIgKyByb3dwZWF0IC0gMSA6IFI7XG5cdFx0XHRcdFx0aWYoQyA+IHJhbmdlLmUuYykgcmFuZ2UuZS5jID0gQztcblx0XHRcdFx0XHRpZihDIDwgcmFuZ2Uucy5jKSByYW5nZS5zLmMgPSBDO1xuXHRcdFx0XHRcdGlmKFIgPCByYW5nZS5zLnIpIHJhbmdlLnMuciA9IFI7XG5cdFx0XHRcdFx0aWYocnB0UiA+IHJhbmdlLmUucikgcmFuZ2UuZS5yID0gcnB0Ujtcblx0XHRcdFx0XHRjdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRjb21tZW50cyA9IFtdOyBjb21tZW50ID0gKHt9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdHEgPSAoe3Q6Y3RhZ1sn5pWw5o2u57G75Z6LJ10gfHwgY3RhZ1sndmFsdWUtdHlwZSddLCB2Om51bGwvKjo6ICwgejpudWxsLCB3OlwiXCIsYzpbXSovfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0XHRcdFx0XHRpZihjdGFnLmZvcm11bGEpIGN0YWcuZm9ybXVsYSA9IHVuZXNjYXBleG1sKGN0YWcuZm9ybXVsYSk7XG5cdFx0XHRcdFx0XHRpZihjdGFnWydudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCddICYmIGN0YWdbJ251bWJlci1tYXRyaXgtcm93cy1zcGFubmVkJ10pIHtcblx0XHRcdFx0XHRcdFx0bVIgPSBwYXJzZUludChjdGFnWydudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCddLDEwKSB8fCAwO1xuXHRcdFx0XHRcdFx0XHRtQyA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkJ10sMTApIHx8IDA7XG5cdFx0XHRcdFx0XHRcdG1yYW5nZSA9IHtzOiB7cjpSLGM6Q30sIGU6e3I6UiArIG1SLTEsYzpDICsgbUMtMX19O1xuXHRcdFx0XHRcdFx0XHRxLkYgPSBlbmNvZGVfcmFuZ2UobXJhbmdlKTtcblx0XHRcdFx0XHRcdFx0YXJyYXlmLnB1c2goW21yYW5nZSwgcS5GXSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZihjdGFnLmZvcm11bGEpIHEuZiA9IG9kc190b19jc2ZfZm9ybXVsYShjdGFnLmZvcm11bGEpO1xuXHRcdFx0XHRcdFx0ZWxzZSBmb3IoaSA9IDA7IGkgPCBhcnJheWYubGVuZ3RoOyArK2kpXG5cdFx0XHRcdFx0XHRcdGlmKFIgPj0gYXJyYXlmW2ldWzBdLnMuciAmJiBSIDw9IGFycmF5ZltpXVswXS5lLnIpXG5cdFx0XHRcdFx0XHRcdFx0aWYoQyA+PSBhcnJheWZbaV1bMF0ucy5jICYmIEMgPD0gYXJyYXlmW2ldWzBdLmUuYylcblx0XHRcdFx0XHRcdFx0XHRcdHEuRiA9IGFycmF5ZltpXVsxXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoY3RhZ1snbnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCddIHx8IGN0YWdbJ251bWJlci1yb3dzLXNwYW5uZWQnXSkge1xuXHRcdFx0XHRcdFx0bVIgPSBwYXJzZUludChjdGFnWydudW1iZXItcm93cy1zcGFubmVkJ10sMTApIHx8IDA7XG5cdFx0XHRcdFx0XHRtQyA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdG1yYW5nZSA9IHtzOiB7cjpSLGM6Q30sIGU6e3I6UiArIG1SLTEsYzpDICsgbUMtMX19O1xuXHRcdFx0XHRcdFx0bWVyZ2VzLnB1c2gobXJhbmdlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvKiAxOS42NzUuMiB0YWJsZTpudW1iZXItY29sdW1ucy1yZXBlYXRlZCAqL1xuXHRcdFx0XHRcdGlmKGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ10pIGNvbHBlYXQgPSBwYXJzZUludChjdGFnWydudW1iZXItY29sdW1ucy1yZXBlYXRlZCddLCAxMCk7XG5cblx0XHRcdFx0XHQvKiAxOS4zODUgb2ZmaWNlOnZhbHVlLXR5cGUgKi9cblx0XHRcdFx0XHRzd2l0Y2gocS50KSB7XG5cdFx0XHRcdFx0XHRjYXNlICdib29sZWFuJzogcS50ID0gJ2InOyBxLnYgPSBwYXJzZXhtbGJvb2woY3RhZ1snYm9vbGVhbi12YWx1ZSddKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdmbG9hdCc6IHEudCA9ICduJzsgcS52ID0gcGFyc2VGbG9hdChjdGFnLnZhbHVlKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdwZXJjZW50YWdlJzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZUZsb2F0KGN0YWcudmFsdWUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2N1cnJlbmN5JzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZUZsb2F0KGN0YWcudmFsdWUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2RhdGUnOiBxLnQgPSAnZCc7IHEudiA9IHBhcnNlRGF0ZShjdGFnWydkYXRlLXZhbHVlJ10pO1xuXHRcdFx0XHRcdFx0XHRpZighb3B0cy5jZWxsRGF0ZXMpIHsgcS50ID0gJ24nOyBxLnYgPSBkYXRlbnVtKHEudik7IH1cblx0XHRcdFx0XHRcdFx0cS56ID0gJ20vZC95eSc7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAndGltZSc6IHEudCA9ICduJzsgcS52ID0gcGFyc2VfaXNvZHVyKGN0YWdbJ3RpbWUtdmFsdWUnXSkvODY0MDA7XG5cdFx0XHRcdFx0XHRcdGlmKG9wdHMuY2VsbERhdGVzKSB7IHEudCA9ICdkJzsgcS52ID0gbnVtZGF0ZShxLnYpOyB9XG5cdFx0XHRcdFx0XHRcdHEueiA9ICdISDpNTTpTUyc7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZUZsb2F0KGN0YWdbJ+aVsOaNruaVsOWAvCddKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRpZihxLnQgPT09ICdzdHJpbmcnIHx8IHEudCA9PT0gJ3RleHQnIHx8ICFxLnQpIHtcblx0XHRcdFx0XHRcdFx0XHRxLnQgPSAncyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYoY3RhZ1snc3RyaW5nLXZhbHVlJ10gIT0gbnVsbCkgeyB0ZXh0cCA9IHVuZXNjYXBleG1sKGN0YWdbJ3N0cmluZy12YWx1ZSddKTsgdGV4dFIgPSBbXTsgfVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2YWx1ZSB0eXBlICcgKyBxLnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpc3N0dWIgPSBmYWxzZTtcblx0XHRcdFx0XHRpZihxLnQgPT09ICdzJykge1xuXHRcdFx0XHRcdFx0cS52ID0gdGV4dHAgfHwgJyc7XG5cdFx0XHRcdFx0XHRpZih0ZXh0Ui5sZW5ndGgpIHEuUiA9IHRleHRSO1xuXHRcdFx0XHRcdFx0aXNzdHViID0gdGV4dHBpZHggPT0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoYXRhZy5UYXJnZXQpIHEubCA9IGF0YWc7XG5cdFx0XHRcdFx0aWYoY29tbWVudHMubGVuZ3RoID4gMCkgeyBxLmMgPSBjb21tZW50czsgY29tbWVudHMgPSBbXTsgfVxuXHRcdFx0XHRcdGlmKHRleHRwICYmIG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSBxLncgPSB0ZXh0cDtcblx0XHRcdFx0XHRpZihpc3N0dWIpIHsgcS50ID0gXCJ6XCI7IGRlbGV0ZSBxLnY7IH1cblx0XHRcdFx0XHRpZighaXNzdHViIHx8IG9wdHMuc2hlZXRTdHVicykge1xuXHRcdFx0XHRcdFx0aWYoIShvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSBSKSkge1xuXHRcdFx0XHRcdFx0XHRmb3IodmFyIHJwdCA9IDA7IHJwdCA8IHJvd3BlYXQ7ICsrcnB0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29scGVhdCA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ118fFwiMVwiLCAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYoIXdzW1IgKyBycHRdKSB3c1tSICsgcnB0XSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0d3NbUiArIHJwdF1bQ10gPSBycHQgPT0gMCA/IHEgOiBkdXAocSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR3aGlsZSgtLWNvbHBlYXQgPiAwKSB3c1tSICsgcnB0XVtDICsgY29scGVhdF0gPSBkdXAocSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdzW2VuY29kZV9jZWxsKHtyOlIgKyBycHQsYzpDfSldID0gcTtcblx0XHRcdFx0XHRcdFx0XHRcdHdoaWxlKC0tY29scGVhdCA+IDApIHdzW2VuY29kZV9jZWxsKHtyOlIgKyBycHQsYzpDICsgY29scGVhdH0pXSA9IGR1cChxKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYocmFuZ2UuZS5jIDw9IEMpIHJhbmdlLmUuYyA9IEM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29scGVhdCA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ118fFwiMVwiLCAxMCk7XG5cdFx0XHRcdFx0QyArPSBjb2xwZWF0LTE7IGNvbHBlYXQgPSAwO1xuXHRcdFx0XHRcdHEgPSB7Lyo6OiB0OlwiXCIsIHY6bnVsbCwgejpudWxsLCB3OlwiXCIsYzpbXSovfTtcblx0XHRcdFx0XHR0ZXh0cCA9IFwiXCI7IHRleHRSID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0YXRhZyA9ICh7fS8qOmFueSovKTtcblx0XHRcdFx0YnJlYWs7IC8vIDkuMS40IDx0YWJsZTp0YWJsZS1jZWxsPlxuXG5cdFx0XHQvKiBwdXJlIHN0YXRlICovXG5cdFx0XHRjYXNlICdkb2N1bWVudCc6IC8vIFRPRE86IDxvZmZpY2U6ZG9jdW1lbnQ+IGlzIHRoZSByb290IGZvciBGT0RTXG5cdFx0XHRjYXNlICdkb2N1bWVudC1jb250ZW50JzogY2FzZSAn55S15a2Q6KGo5qC85paH5qGjJzogLy8gMy4xLjMuMiA8b2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQ+XG5cdFx0XHRjYXNlICdzcHJlYWRzaGVldCc6IGNhc2UgJ+S4u+S9kyc6IC8vIDMuNyA8b2ZmaWNlOnNwcmVhZHNoZWV0PlxuXHRcdFx0Y2FzZSAnc2NyaXB0cyc6IC8vIDMuMTIgPG9mZmljZTpzY3JpcHRzPlxuXHRcdFx0Y2FzZSAnc3R5bGVzJzogLy8gVE9ETyA8b2ZmaWNlOnN0eWxlcz5cblx0XHRcdGNhc2UgJ2ZvbnQtZmFjZS1kZWNscyc6IC8vIDMuMTQgPG9mZmljZTpmb250LWZhY2UtZGVjbHM+XG5cdFx0XHRjYXNlICdtYXN0ZXItc3R5bGVzJzogLy8gMy4xNS40IDxvZmZpY2U6bWFzdGVyLXN0eWxlcz4gLS0gcmVsZXZhbnQgZm9yIEZPRFNcblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ2Fubm90YXRpb24nOiAvLyAxNC4xIDxvZmZpY2U6YW5ub3RhdGlvbj5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7XG5cdFx0XHRcdFx0Y29tbWVudC50ID0gdGV4dHA7XG5cdFx0XHRcdFx0aWYodGV4dFIubGVuZ3RoKSAvKjo6KCovY29tbWVudC8qOjogOmFueSkqLy5SID0gdGV4dFI7XG5cdFx0XHRcdFx0Y29tbWVudC5hID0gY3JlYXRvcjtcblx0XHRcdFx0XHRjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSB7c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7fVxuXHRcdFx0XHRjcmVhdG9yID0gXCJcIjsgY3JlYXRvcmlkeCA9IDA7XG5cdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dHBpZHggPSAwOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnY3JlYXRvcic6IC8vIDQuMy4yLjcgPGRjOmNyZWF0b3I+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKSB7IGNyZWF0b3IgPSBzdHIuc2xpY2UoY3JlYXRvcmlkeCxSbi5pbmRleCk7IH1cblx0XHRcdFx0ZWxzZSBjcmVhdG9yaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBpZ25vcmUgc3RhdGUgKi9cblx0XHRcdGNhc2UgJ21ldGEnOiBjYXNlICflhYPmlbDmja4nOiAvLyBUT0RPOiA8b2ZmaWNlOm1ldGE+IDx1b2Y65YWD5pWw5o2uPiBGT0RTL1VPRlxuXHRcdFx0Y2FzZSAnc2V0dGluZ3MnOiAvLyBUT0RPOiA8b2ZmaWNlOnNldHRpbmdzPlxuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0tc2V0JzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1zZXQ+XG5cdFx0XHRjYXNlICdjb25maWctaXRlbS1tYXAtaW5kZXhlZCc6IC8vIFRPRE86IDxvZmZpY2U6Y29uZmlnLWl0ZW0tbWFwLWluZGV4ZWQ+XG5cdFx0XHRjYXNlICdjb25maWctaXRlbS1tYXAtZW50cnknOiAvLyBUT0RPOiA8b2ZmaWNlOmNvbmZpZy1pdGVtLW1hcC1lbnRyeT5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLW1hcC1uYW1lZCc6IC8vIFRPRE86IDxvZmZpY2U6Y29uZmlnLWl0ZW0tbWFwLWVudHJ5PlxuXHRcdFx0Y2FzZSAnc2hhcGVzJzogLy8gOS4yLjggPHRhYmxlOnNoYXBlcz5cblx0XHRcdGNhc2UgJ2ZyYW1lJzogLy8gMTAuNC4yIDxkcmF3OmZyYW1lPlxuXHRcdFx0Y2FzZSAndGV4dC1ib3gnOiAvLyAxMC40LjMgPGRyYXc6dGV4dC1ib3g+XG5cdFx0XHRjYXNlICdpbWFnZSc6IC8vIDEwLjQuNCA8ZHJhdzppbWFnZT5cblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtdGFibGVzJzogLy8gOS42LjIgPHRhYmxlOmRhdGEtcGlsb3QtdGFibGVzPlxuXHRcdFx0Y2FzZSAnbGlzdC1zdHlsZSc6IC8vIDE2LjMwIDx0ZXh0Omxpc3Qtc3R5bGU+XG5cdFx0XHRjYXNlICdmb3JtJzogLy8gMTMuMTMgPGZvcm06Zm9ybT5cblx0XHRcdGNhc2UgJ2RkZS1saW5rcyc6IC8vIDkuOCA8dGFibGU6ZGRlLWxpbmtzPlxuXHRcdFx0Y2FzZSAnZXZlbnQtbGlzdGVuZXJzJzogLy8gVE9ET1xuXHRcdFx0Y2FzZSAnY2hhcnQnOiAvLyBUT0RPXG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBcIkJhZCBzdGF0ZTogXCIrdG1wO31cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0XHR0ZXh0cCA9IFwiXCI7IHRleHRwaWR4ID0gMDsgdGV4dFIgPSBbXTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3NjaWVudGlmaWMtbnVtYmVyJzogLy8gVE9ETzogPG51bWJlcjpzY2llbnRpZmljLW51bWJlcj5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdjdXJyZW5jeS1zeW1ib2wnOiAvLyBUT0RPOiA8bnVtYmVyOmN1cnJlbmN5LXN5bWJvbD5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdjdXJyZW5jeS1zdHlsZSc6IC8vIFRPRE86IDxudW1iZXI6Y3VycmVuY3ktc3R5bGU+XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbnVtYmVyLXN0eWxlJzogLy8gMTYuMjcuMiA8bnVtYmVyOm51bWJlci1zdHlsZT5cblx0XHRcdGNhc2UgJ3BlcmNlbnRhZ2Utc3R5bGUnOiAvLyAxNi4yNy45IDxudW1iZXI6cGVyY2VudGFnZS1zdHlsZT5cblx0XHRcdGNhc2UgJ2RhdGUtc3R5bGUnOiAvLyAxNi4yNy4xMCA8bnVtYmVyOmRhdGUtc3R5bGU+XG5cdFx0XHRjYXNlICd0aW1lLXN0eWxlJzogLy8gMTYuMjcuMTggPG51bWJlcjp0aW1lLXN0eWxlPlxuXHRcdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdFx0bnVtYmVyX2Zvcm1hdF9tYXBbTkZ0YWcubmFtZV0gPSBORjtcblx0XHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBcIkJhZCBzdGF0ZTogXCIrdG1wO1xuXHRcdFx0XHR9IGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSB7XG5cdFx0XHRcdFx0TkYgPSBcIlwiO1xuXHRcdFx0XHRcdE5GdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdzY3JpcHQnOiBicmVhazsgLy8gMy4xMyA8b2ZmaWNlOnNjcmlwdD5cblx0XHRcdGNhc2UgJ2xpYnJhcmllcyc6IGJyZWFrOyAvLyBUT0RPOiA8b29vOmxpYnJhcmllcz5cblx0XHRcdGNhc2UgJ2F1dG9tYXRpYy1zdHlsZXMnOiBicmVhazsgLy8gMy4xNS4zIDxvZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cblxuXHRcdFx0Y2FzZSAnZGVmYXVsdC1zdHlsZSc6IC8vIFRPRE86IDxzdHlsZTpkZWZhdWx0LXN0eWxlPlxuXHRcdFx0Y2FzZSAncGFnZS1sYXlvdXQnOiBicmVhazsgLy8gVE9ETzogPHN0eWxlOnBhZ2UtbGF5b3V0PlxuXHRcdFx0Y2FzZSAnc3R5bGUnOiAvLyAxNi4yIDxzdHlsZTpzdHlsZT5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdtYXAnOiBicmVhazsgLy8gMTYuMyA8c3R5bGU6bWFwPlxuXHRcdFx0Y2FzZSAnZm9udC1mYWNlJzogYnJlYWs7IC8vIDE2LjIxIDxzdHlsZTpmb250LWZhY2U+XG5cblx0XHRcdGNhc2UgJ3BhcmFncmFwaC1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjYgPHN0eWxlOnBhcmFncmFwaC1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4xNSA8c3R5bGU6dGFibGUtcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ3RhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE2IDxzdHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ3RhYmxlLXJvdy1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE3IDxzdHlsZTp0YWJsZS1yb3ctcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ3RhYmxlLWNlbGwtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNy4xOCA8c3R5bGU6dGFibGUtY2VsbC1wcm9wZXJ0aWVzPlxuXG5cdFx0XHRjYXNlICdudW1iZXInOiAvLyAxNi4yNy4zIDxudW1iZXI6bnVtYmVyPlxuXHRcdFx0XHRzd2l0Y2goc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSB7XG5cdFx0XHRcdFx0Y2FzZSAndGltZS1zdHlsZSc6XG5cdFx0XHRcdFx0Y2FzZSAnZGF0ZS1zdHlsZSc6XG5cdFx0XHRcdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0TkYgKz0gbnVtYmVyX2Zvcm1hdHNfb2RzW1JuWzNdXVt0YWcuc3R5bGU9PT0nbG9uZyc/MTowXTsgYnJlYWs7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdGNhc2UgJ2ZyYWN0aW9uJzogYnJlYWs7IC8vIFRPRE8gMTYuMjcuNiA8bnVtYmVyOmZyYWN0aW9uPlxuXG5cdFx0XHRjYXNlICdkYXknOiAvLyAxNi4yNy4xMSA8bnVtYmVyOmRheT5cblx0XHRcdGNhc2UgJ21vbnRoJzogLy8gMTYuMjcuMTIgPG51bWJlcjptb250aD5cblx0XHRcdGNhc2UgJ3llYXInOiAvLyAxNi4yNy4xMyA8bnVtYmVyOnllYXI+XG5cdFx0XHRjYXNlICdlcmEnOiAvLyAxNi4yNy4xNCA8bnVtYmVyOmVyYT5cblx0XHRcdGNhc2UgJ2RheS1vZi13ZWVrJzogLy8gMTYuMjcuMTUgPG51bWJlcjpkYXktb2Ytd2Vlaz5cblx0XHRcdGNhc2UgJ3dlZWstb2YteWVhcic6IC8vIDE2LjI3LjE2IDxudW1iZXI6d2Vlay1vZi15ZWFyPlxuXHRcdFx0Y2FzZSAncXVhcnRlcic6IC8vIDE2LjI3LjE3IDxudW1iZXI6cXVhcnRlcj5cblx0XHRcdGNhc2UgJ2hvdXJzJzogLy8gMTYuMjcuMTkgPG51bWJlcjpob3Vycz5cblx0XHRcdGNhc2UgJ21pbnV0ZXMnOiAvLyAxNi4yNy4yMCA8bnVtYmVyOm1pbnV0ZXM+XG5cdFx0XHRjYXNlICdzZWNvbmRzJzogLy8gMTYuMjcuMjEgPG51bWJlcjpzZWNvbmRzPlxuXHRcdFx0Y2FzZSAnYW0tcG0nOiAvLyAxNi4yNy4yMiA8bnVtYmVyOmFtLXBtPlxuXHRcdFx0XHRzd2l0Y2goc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSB7XG5cdFx0XHRcdFx0Y2FzZSAndGltZS1zdHlsZSc6XG5cdFx0XHRcdFx0Y2FzZSAnZGF0ZS1zdHlsZSc6XG5cdFx0XHRcdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0TkYgKz0gbnVtYmVyX2Zvcm1hdHNfb2RzW1JuWzNdXVt0YWcuc3R5bGU9PT0nbG9uZyc/MTowXTsgYnJlYWs7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdGNhc2UgJ2Jvb2xlYW4tc3R5bGUnOiBicmVhazsgLy8gMTYuMjcuMjMgPG51bWJlcjpib29sZWFuLXN0eWxlPlxuXHRcdFx0Y2FzZSAnYm9vbGVhbic6IGJyZWFrOyAvLyAxNi4yNy4yNCA8bnVtYmVyOmJvb2xlYW4+XG5cdFx0XHRjYXNlICd0ZXh0LXN0eWxlJzogYnJlYWs7IC8vIDE2LjI3LjI1IDxudW1iZXI6dGV4dC1zdHlsZT5cblx0XHRcdGNhc2UgJ3RleHQnOiAvLyAxNi4yNy4yNiA8bnVtYmVyOnRleHQ+XG5cdFx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSBicmVhaztcblx0XHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSBzd2l0Y2goc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICdkYXRlLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICd0aW1lLXN0eWxlJzpcblx0XHRcdFx0XHRcdE5GICs9IHN0ci5zbGljZShwaWR4LCBSbi5pbmRleCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ25hbWVkLXJhbmdlJzogLy8gOS40LjEyIDx0YWJsZTpuYW1lZC1yYW5nZT5cblx0XHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0X1JlZiA9IG9kc190b19jc2ZfM0QodGFnWydjZWxsLXJhbmdlLWFkZHJlc3MnXSk7XG5cdFx0XHRcdHZhciBucmFuZ2UgPSAoe05hbWU6dGFnLm5hbWUsIFJlZjpfUmVmWzBdICsgJyEnICsgX1JlZlsxXX0vKjphbnkqLyk7XG5cdFx0XHRcdGlmKGludGFibGUpIG5yYW5nZS5TaGVldCA9IFNoZWV0TmFtZXMubGVuZ3RoO1xuXHRcdFx0XHRXQi5OYW1lcy5wdXNoKG5yYW5nZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICd0ZXh0LWNvbnRlbnQnOiBicmVhazsgLy8gMTYuMjcuMjcgPG51bWJlcjp0ZXh0LWNvbnRlbnQ+XG5cdFx0XHRjYXNlICd0ZXh0LXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTYuMjcuMjcgPHN0eWxlOnRleHQtcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ2VtYmVkZGVkLXRleHQnOiBicmVhazsgLy8gMTYuMjcuNCA8bnVtYmVyOmVtYmVkZGVkLXRleHQ+XG5cblx0XHRcdGNhc2UgJ2JvZHknOiBjYXNlICfnlLXlrZDooajmoLwnOiBicmVhazsgLy8gMy4zIDE2LjkuNiAxOS43MjYuM1xuXG5cdFx0XHRjYXNlICdmb3Jtcyc6IGJyZWFrOyAvLyAxMi4yNS4yIDEzLjJcblx0XHRcdGNhc2UgJ3RhYmxlLWNvbHVtbic6IGJyZWFrOyAvLyA5LjEuNiA8dGFibGU6dGFibGUtY29sdW1uPlxuXHRcdFx0Y2FzZSAndGFibGUtaGVhZGVyLXJvd3MnOiBicmVhazsgLy8gOS4xLjcgPHRhYmxlOnRhYmxlLWhlYWRlci1yb3dzPlxuXHRcdFx0Y2FzZSAndGFibGUtcm93cyc6IGJyZWFrOyAvLyA5LjEuMTIgPHRhYmxlOnRhYmxlLXJvd3M+XG5cdFx0XHQvKiBUT0RPOiBvdXRsaW5lIGxldmVscyAqL1xuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1uLWdyb3VwJzogYnJlYWs7IC8vIDkuMS4xMCA8dGFibGU6dGFibGUtY29sdW1uLWdyb3VwPlxuXHRcdFx0Y2FzZSAndGFibGUtaGVhZGVyLWNvbHVtbnMnOiBicmVhazsgLy8gOS4xLjExIDx0YWJsZTp0YWJsZS1oZWFkZXItY29sdW1ucz5cblx0XHRcdGNhc2UgJ3RhYmxlLWNvbHVtbnMnOiBicmVhazsgLy8gOS4xLjEyIDx0YWJsZTp0YWJsZS1jb2x1bW5zPlxuXG5cdFx0XHRjYXNlICdudWxsLWRhdGUnOiBicmVhazsgLy8gOS40LjIgPHRhYmxlOm51bGwtZGF0ZT4gVE9ETzogZGF0ZTE5MDRcblxuXHRcdFx0Y2FzZSAnZ3JhcGhpYy1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjIxIDxzdHlsZTpncmFwaGljLXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICdjYWxjdWxhdGlvbi1zZXR0aW5ncyc6IGJyZWFrOyAvLyA5LjQuMSA8dGFibGU6Y2FsY3VsYXRpb24tc2V0dGluZ3M+XG5cdFx0XHRjYXNlICduYW1lZC1leHByZXNzaW9ucyc6IGJyZWFrOyAvLyA5LjQuMTEgPHRhYmxlOm5hbWVkLWV4cHJlc3Npb25zPlxuXHRcdFx0Y2FzZSAnbGFiZWwtcmFuZ2UnOiBicmVhazsgLy8gOS40LjkgPHRhYmxlOmxhYmVsLXJhbmdlPlxuXHRcdFx0Y2FzZSAnbGFiZWwtcmFuZ2VzJzogYnJlYWs7IC8vIDkuNC4xMCA8dGFibGU6bGFiZWwtcmFuZ2VzPlxuXHRcdFx0Y2FzZSAnbmFtZWQtZXhwcmVzc2lvbic6IGJyZWFrOyAvLyA5LjQuMTMgPHRhYmxlOm5hbWVkLWV4cHJlc3Npb24+XG5cdFx0XHRjYXNlICdzb3J0JzogYnJlYWs7IC8vIDkuNC4xOSA8dGFibGU6c29ydD5cblx0XHRcdGNhc2UgJ3NvcnQtYnknOiBicmVhazsgLy8gOS40LjIwIDx0YWJsZTpzb3J0LWJ5PlxuXHRcdFx0Y2FzZSAnc29ydC1ncm91cHMnOiBicmVhazsgLy8gOS40LjIyIDx0YWJsZTpzb3J0LWdyb3Vwcz5cblxuXHRcdFx0Y2FzZSAndGFiJzogYnJlYWs7IC8vIDYuMS40IDx0ZXh0OnRhYj5cblx0XHRcdGNhc2UgJ2xpbmUtYnJlYWsnOiBicmVhazsgLy8gNi4xLjUgPHRleHQ6bGluZS1icmVhaz5cblx0XHRcdGNhc2UgJ3NwYW4nOiBicmVhazsgLy8gNi4xLjcgPHRleHQ6c3Bhbj5cblx0XHRcdGNhc2UgJ3AnOiBjYXNlICfmlofmnKzkuLInOiAvLyA1LjEuMyA8dGV4dDpwPlxuXHRcdFx0XHRpZihbJ21hc3Rlci1zdHlsZXMnXS5pbmRleE9mKHN0YXRlW3N0YXRlLmxlbmd0aC0xXVswXSkgPiAtMSkgYnJlYWs7XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nICYmICghY3RhZyB8fCAhY3RhZ1snc3RyaW5nLXZhbHVlJ10pKSB7XG5cdFx0XHRcdFx0dmFyIHB0cCA9IHBhcnNlX3RleHRfcChzdHIuc2xpY2UodGV4dHBpZHgsUm4uaW5kZXgpLCB0ZXh0cHRhZyk7XG5cdFx0XHRcdFx0dGV4dHAgPSAodGV4dHAubGVuZ3RoID4gMCA/IHRleHRwICsgXCJcXG5cIiA6IFwiXCIpICsgcHRwWzBdO1xuXHRcdFx0XHR9IGVsc2UgeyB0ZXh0cHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7IHRleHRwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7IH1cblx0XHRcdFx0YnJlYWs7IC8vIDx0ZXh0OnA+XG5cdFx0XHRjYXNlICdzJzogYnJlYWs7IC8vIDx0ZXh0OnM+XG5cblx0XHRcdGNhc2UgJ2RhdGFiYXNlLXJhbmdlJzogLy8gOS40LjE1IDx0YWJsZTpkYXRhYmFzZS1yYW5nZT5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpIGJyZWFrO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdF9SZWYgPSBvZHNfdG9fY3NmXzNEKHBhcnNleG1sdGFnKFJuWzBdKVsndGFyZ2V0LXJhbmdlLWFkZHJlc3MnXSk7XG5cdFx0XHRcdFx0U2hlZXRzW19SZWZbMF1dWychYXV0b2ZpbHRlciddID0geyByZWY6X1JlZlsxXSB9O1xuXHRcdFx0XHR9IGNhdGNoKGUpIHsvKiBlbXB0eSAqL31cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ2RhdGUnOiBicmVhazsgLy8gPCo6ZGF0ZT5cblxuXHRcdFx0Y2FzZSAnb2JqZWN0JzogYnJlYWs7IC8vIDEwLjQuNi4yIDxkcmF3Om9iamVjdD5cblx0XHRcdGNhc2UgJ3RpdGxlJzogY2FzZSAn5qCH6aKYJzogYnJlYWs7IC8vIDwqOnRpdGxlPiBPUiA8dW9mOuagh+mimD5cblx0XHRcdGNhc2UgJ2Rlc2MnOiBicmVhazsgLy8gPCo6ZGVzYz5cblx0XHRcdGNhc2UgJ2JpbmFyeS1kYXRhJzogYnJlYWs7IC8vIDEwLjQuNSBUT0RPOiBiNjQgYmxvYlxuXG5cdFx0XHQvKiA5LjIgQWR2YW5jZWQgVGFibGVzICovXG5cdFx0XHRjYXNlICd0YWJsZS1zb3VyY2UnOiBicmVhazsgLy8gOS4yLjZcblx0XHRcdGNhc2UgJ3NjZW5hcmlvJzogYnJlYWs7IC8vIDkuMi42XG5cblx0XHRcdGNhc2UgJ2l0ZXJhdGlvbic6IGJyZWFrOyAvLyA5LjQuMyA8dGFibGU6aXRlcmF0aW9uPlxuXHRcdFx0Y2FzZSAnY29udGVudC12YWxpZGF0aW9ucyc6IGJyZWFrOyAvLyA5LjQuNCA8dGFibGU6XG5cdFx0XHRjYXNlICdjb250ZW50LXZhbGlkYXRpb24nOiBicmVhazsgLy8gOS40LjUgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnaGVscC1tZXNzYWdlJzogYnJlYWs7IC8vIDkuNC42IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2Vycm9yLW1lc3NhZ2UnOiBicmVhazsgLy8gOS40LjcgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnZGF0YWJhc2UtcmFuZ2VzJzogYnJlYWs7IC8vIDkuNC4xNCA8dGFibGU6ZGF0YWJhc2UtcmFuZ2VzPlxuXHRcdFx0Y2FzZSAnZmlsdGVyJzogYnJlYWs7IC8vIDkuNS4yIDx0YWJsZTpmaWx0ZXI+XG5cdFx0XHRjYXNlICdmaWx0ZXItYW5kJzogYnJlYWs7IC8vIDkuNS4zIDx0YWJsZTpmaWx0ZXItYW5kPlxuXHRcdFx0Y2FzZSAnZmlsdGVyLW9yJzogYnJlYWs7IC8vIDkuNS40IDx0YWJsZTpmaWx0ZXItb3I+XG5cdFx0XHRjYXNlICdmaWx0ZXItY29uZGl0aW9uJzogYnJlYWs7IC8vIDkuNS41IDx0YWJsZTpmaWx0ZXItY29uZGl0aW9uPlxuXG5cdFx0XHRjYXNlICdsaXN0LWxldmVsLXN0eWxlLWJ1bGxldCc6IGJyZWFrOyAvLyAxNi4zMSA8dGV4dDpcblx0XHRcdGNhc2UgJ2xpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyJzogYnJlYWs7IC8vIDE2LjMyIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnbGlzdC1sZXZlbC1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE5IDxzdHlsZTpcblxuXHRcdFx0LyogNy4zIERvY3VtZW50IEZpZWxkcyAqL1xuXHRcdFx0Y2FzZSAnc2VuZGVyLWZpcnN0bmFtZSc6IC8vIDcuMy42LjJcblx0XHRcdGNhc2UgJ3NlbmRlci1sYXN0bmFtZSc6IC8vIDcuMy42LjNcblx0XHRcdGNhc2UgJ3NlbmRlci1pbml0aWFscyc6IC8vIDcuMy42LjRcblx0XHRcdGNhc2UgJ3NlbmRlci10aXRsZSc6IC8vIDcuMy42LjVcblx0XHRcdGNhc2UgJ3NlbmRlci1wb3NpdGlvbic6IC8vIDcuMy42LjZcblx0XHRcdGNhc2UgJ3NlbmRlci1lbWFpbCc6IC8vIDcuMy42Ljdcblx0XHRcdGNhc2UgJ3NlbmRlci1waG9uZS1wcml2YXRlJzogLy8gNy4zLjYuOFxuXHRcdFx0Y2FzZSAnc2VuZGVyLWZheCc6IC8vIDcuMy42Ljlcblx0XHRcdGNhc2UgJ3NlbmRlci1jb21wYW55JzogLy8gNy4zLjYuMTBcblx0XHRcdGNhc2UgJ3NlbmRlci1waG9uZS13b3JrJzogLy8gNy4zLjYuMTFcblx0XHRcdGNhc2UgJ3NlbmRlci1zdHJlZXQnOiAvLyA3LjMuNi4xMlxuXHRcdFx0Y2FzZSAnc2VuZGVyLWNpdHknOiAvLyA3LjMuNi4xM1xuXHRcdFx0Y2FzZSAnc2VuZGVyLXBvc3RhbC1jb2RlJzogLy8gNy4zLjYuMTRcblx0XHRcdGNhc2UgJ3NlbmRlci1jb3VudHJ5JzogLy8gNy4zLjYuMTVcblx0XHRcdGNhc2UgJ3NlbmRlci1zdGF0ZS1vci1wcm92aW5jZSc6IC8vIDcuMy42LjE2XG5cdFx0XHRjYXNlICdhdXRob3ItbmFtZSc6IC8vIDcuMy43LjFcblx0XHRcdGNhc2UgJ2F1dGhvci1pbml0aWFscyc6IC8vIDcuMy43LjJcblx0XHRcdGNhc2UgJ2NoYXB0ZXInOiAvLyA3LjMuOFxuXHRcdFx0Y2FzZSAnZmlsZS1uYW1lJzogLy8gNy4zLjlcblx0XHRcdGNhc2UgJ3RlbXBsYXRlLW5hbWUnOiAvLyA3LjMuOVxuXHRcdFx0Y2FzZSAnc2hlZXQtbmFtZSc6IC8vIDcuMy45XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdldmVudC1saXN0ZW5lcic6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0LyogVE9ETzogRk9EUyBQcm9wZXJ0aWVzICovXG5cdFx0XHRjYXNlICdpbml0aWFsLWNyZWF0b3InOlxuXHRcdFx0Y2FzZSAnY3JlYXRpb24tZGF0ZSc6XG5cdFx0XHRjYXNlICdwcmludC1kYXRlJzpcblx0XHRcdGNhc2UgJ2dlbmVyYXRvcic6XG5cdFx0XHRjYXNlICdkb2N1bWVudC1zdGF0aXN0aWMnOlxuXHRcdFx0Y2FzZSAndXNlci1kZWZpbmVkJzpcblx0XHRcdGNhc2UgJ2VkaXRpbmctZHVyYXRpb24nOlxuXHRcdFx0Y2FzZSAnZWRpdGluZy1jeWNsZXMnOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogVE9ETzogRk9EUyBDb25maWcgKi9cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtJzpcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIFRPRE86IHN0eWxlIHRva2VucyAqL1xuXHRcdFx0Y2FzZSAncGFnZS1udW1iZXInOiBicmVhazsgLy8gVE9ETyA8dGV4dDpwYWdlLW51bWJlcj5cblx0XHRcdGNhc2UgJ3BhZ2UtY291bnQnOiBicmVhazsgLy8gVE9ETyA8dGV4dDpwYWdlLWNvdW50PlxuXHRcdFx0Y2FzZSAndGltZSc6IGJyZWFrOyAvLyBUT0RPIDx0ZXh0OnRpbWU+XG5cblx0XHRcdC8qIDkuMyBBZHZhbmNlZCBUYWJsZSBDZWxscyAqL1xuXHRcdFx0Y2FzZSAnY2VsbC1yYW5nZS1zb3VyY2UnOiBicmVhazsgLy8gOS4zLjEgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnZGV0ZWN0aXZlJzogYnJlYWs7IC8vIDkuMy4yIDx0YWJsZTpcblx0XHRcdGNhc2UgJ29wZXJhdGlvbic6IGJyZWFrOyAvLyA5LjMuMyA8dGFibGU6XG5cdFx0XHRjYXNlICdoaWdobGlnaHRlZC1yYW5nZSc6IGJyZWFrOyAvLyA5LjMuNCA8dGFibGU6XG5cblx0XHRcdC8qIDkuNiBEYXRhIFBpbG90IFRhYmxlcyA8dGFibGU6ICovXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXRhYmxlJzogLy8gOS42LjNcblx0XHRcdGNhc2UgJ3NvdXJjZS1jZWxsLXJhbmdlJzogLy8gOS42LjVcblx0XHRcdGNhc2UgJ3NvdXJjZS1zZXJ2aWNlJzogLy8gOS42LjZcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZmllbGQnOiAvLyA5LjYuN1xuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1sZXZlbCc6IC8vIDkuNi44XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXN1YnRvdGFscyc6IC8vIDkuNi45XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXN1YnRvdGFsJzogLy8gOS42LjEwXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LW1lbWJlcnMnOiAvLyA5LjYuMTFcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtbWVtYmVyJzogLy8gOS42LjEyXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWRpc3BsYXktaW5mbyc6IC8vIDkuNi4xM1xuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1zb3J0LWluZm8nOiAvLyA5LjYuMTRcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtbGF5b3V0LWluZm8nOiAvLyA5LjYuMTVcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZmllbGQtcmVmZXJlbmNlJzogLy8gOS42LjE2XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyb3Vwcyc6IC8vIDkuNi4xN1xuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1ncm91cCc6IC8vIDkuNi4xOFxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1ncm91cC1tZW1iZXInOiAvLyA5LjYuMTlcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIDEwLjMgRHJhd2luZyBTaGFwZXMgKi9cblx0XHRcdGNhc2UgJ3JlY3QnOiAvLyAxMC4zLjJcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIDE0LjYgRERFIENvbm5lY3Rpb25zICovXG5cdFx0XHRjYXNlICdkZGUtY29ubmVjdGlvbi1kZWNscyc6IC8vIDE0LjYuMiA8dGV4dDpcblx0XHRcdGNhc2UgJ2RkZS1jb25uZWN0aW9uLWRlY2wnOiAvLyAxNC42LjMgPHRleHQ6XG5cdFx0XHRjYXNlICdkZGUtbGluayc6IC8vIDE0LjYuNCA8dGFibGU6XG5cdFx0XHRjYXNlICdkZGUtc291cmNlJzogLy8gMTQuNi41IDxvZmZpY2U6XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdwcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDEzLjcgPGZvcm06cHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ3Byb3BlcnR5JzogYnJlYWs7IC8vIDEzLjggPGZvcm06cHJvcGVydHk+XG5cblx0XHRcdGNhc2UgJ2EnOiAvLyA2LjEuOCBoeXBlcmxpbmtcblx0XHRcdFx0aWYoUm5bMV0hPT0gJy8nKSB7XG5cdFx0XHRcdFx0YXRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0aWYoIWF0YWcuaHJlZikgYnJlYWs7XG5cdFx0XHRcdFx0YXRhZy5UYXJnZXQgPSB1bmVzY2FwZXhtbChhdGFnLmhyZWYpOyBkZWxldGUgYXRhZy5ocmVmO1xuXHRcdFx0XHRcdGlmKGF0YWcuVGFyZ2V0LmNoYXJBdCgwKSA9PSBcIiNcIiAmJiBhdGFnLlRhcmdldC5pbmRleE9mKFwiLlwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRfUmVmID0gb2RzX3RvX2NzZl8zRChhdGFnLlRhcmdldC5zbGljZSgxKSk7XG5cdFx0XHRcdFx0XHRhdGFnLlRhcmdldCA9IFwiI1wiICsgX1JlZlswXSArIFwiIVwiICsgX1JlZlsxXTtcblx0XHRcdFx0XHR9IGVsc2UgaWYoYXRhZy5UYXJnZXQubWF0Y2goL15cXC5cXC5bXFxcXFxcL10vKSkgYXRhZy5UYXJnZXQgPSBhdGFnLlRhcmdldC5zbGljZSgzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Lyogbm9uLXN0YW5kYXJkICovXG5cdFx0XHRjYXNlICd0YWJsZS1wcm90ZWN0aW9uJzogYnJlYWs7XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyYW5kLXRvdGFsJzogYnJlYWs7IC8vIDx0YWJsZTpcblx0XHRcdGNhc2UgJ29mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMnOiBicmVhazsgLy8gYmFyZVxuXHRcdFx0ZGVmYXVsdDogc3dpdGNoKFJuWzJdKSB7XG5cdFx0XHRcdGNhc2UgJ2RjOic6ICAgICAgIC8vIFRPRE86IHByb3BlcnRpZXNcblx0XHRcdFx0Y2FzZSAnY2FsY2V4dDonOiAgLy8gaWdub3JlIHVuZG9jdW1lbnRlZCBleHRlbnNpb25zXG5cdFx0XHRcdGNhc2UgJ2xvZXh0Oic6ICAgIC8vIGlnbm9yZSB1bmRvY3VtZW50ZWQgZXh0ZW5zaW9uc1xuXHRcdFx0XHRjYXNlICdvb286JzogICAgICAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnY2hhcnRvb286JzogLy8gaWdub3JlIHVuZG9jdW1lbnRlZCBleHRlbnNpb25zXG5cdFx0XHRcdGNhc2UgJ2RyYXc6JzogICAgIC8vIFRPRE86IGRyYXdpbmdcblx0XHRcdFx0Y2FzZSAnc3R5bGU6JzogICAgLy8gVE9ETzogc3R5bGVzXG5cdFx0XHRcdGNhc2UgJ2NoYXJ0Oic6ICAgIC8vIFRPRE86IGNoYXJ0c1xuXHRcdFx0XHRjYXNlICdmb3JtOic6ICAgICAvLyBUT0RPOiBmb3Jtc1xuXHRcdFx0XHRjYXNlICd1b2Y6JzogICAgICAvLyBUT0RPOiB1b2Zcblx0XHRcdFx0Y2FzZSAn6KGoOic6ICAgICAgIC8vIFRPRE86IHVvZlxuXHRcdFx0XHRjYXNlICflrZc6JzogICAgICAgLy8gVE9ETzogdW9mXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoUm4pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR2YXIgb3V0Lyo6V29ya2Jvb2sqLyA9ICh7XG5cdFx0XHRTaGVldHM6IFNoZWV0cyxcblx0XHRcdFNoZWV0TmFtZXM6IFNoZWV0TmFtZXMsXG5cdFx0XHRXb3JrYm9vazogV0Jcblx0XHR9Lyo6YW55Ki8pO1xuXHRcdGlmKG9wdHMuYm9va1NoZWV0cykgZGVsZXRlIC8qOjooKi9vdXQvKjo6IDphbnkpKi8uU2hlZXRzO1xuXHRcdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX29kcyh6aXAvKjpaSVBGaWxlKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdG9wdHMgPSBvcHRzIHx8ICh7fS8qOmFueSovKTtcblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnTUVUQS1JTkYvbWFuaWZlc3QueG1sJykpIHBhcnNlX21hbmlmZXN0KGdldHppcGRhdGEoemlwLCAnTUVUQS1JTkYvbWFuaWZlc3QueG1sJyksIG9wdHMpO1xuXHR2YXIgY29udGVudCA9IGdldHppcHN0cih6aXAsICdjb250ZW50LnhtbCcpO1xuXHRpZighY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBjb250ZW50LnhtbCBpbiBPRFMgLyBVT0YgZmlsZVwiKTtcblx0dmFyIHdiID0gcGFyc2VfY29udGVudF94bWwodXRmOHJlYWQoY29udGVudCksIG9wdHMpO1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdtZXRhLnhtbCcpKSB3Yi5Qcm9wcyA9IHBhcnNlX2NvcmVfcHJvcHMoZ2V0emlwZGF0YSh6aXAsICdtZXRhLnhtbCcpKTtcblx0cmV0dXJuIHdiO1xufVxuZnVuY3Rpb24gcGFyc2VfZm9kcyhkYXRhLyo6c3RyaW5nKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHJldHVybiBwYXJzZV9jb250ZW50X3htbChkYXRhLCBvcHRzKTtcbn1cblxuLyogT3BlbkRvY3VtZW50ICovXG52YXIgd3JpdGVfc3R5bGVzX29kcy8qOnsod2I6YW55LCBvcHRzOmFueSk6c3RyaW5nfSovID0gLyogQF9fUFVSRV9fICovKGZ1bmN0aW9uKCkge1xuXHR2YXIgbWFzdGVyX3N0eWxlcyA9IFtcblx0XHQnPG9mZmljZTptYXN0ZXItc3R5bGVzPicsXG5cdFx0XHQnPHN0eWxlOm1hc3Rlci1wYWdlIHN0eWxlOm5hbWU9XCJtcDFcIiBzdHlsZTpwYWdlLWxheW91dC1uYW1lPVwibXAxXCI+Jyxcblx0XHRcdFx0JzxzdHlsZTpoZWFkZXIvPicsXG5cdFx0XHRcdCc8c3R5bGU6aGVhZGVyLWxlZnQgc3R5bGU6ZGlzcGxheT1cImZhbHNlXCIvPicsXG5cdFx0XHRcdCc8c3R5bGU6Zm9vdGVyLz4nLFxuXHRcdFx0XHQnPHN0eWxlOmZvb3Rlci1sZWZ0IHN0eWxlOmRpc3BsYXk9XCJmYWxzZVwiLz4nLFxuXHRcdFx0Jzwvc3R5bGU6bWFzdGVyLXBhZ2U+Jyxcblx0XHQnPC9vZmZpY2U6bWFzdGVyLXN0eWxlcz4nXG5cdF0uam9pbihcIlwiKTtcblxuXHR2YXIgcGF5bG9hZCA9ICc8b2ZmaWNlOmRvY3VtZW50LXN0eWxlcyAnICsgd3h0X2hlbHBlcih7XG5cdFx0J3htbG5zOm9mZmljZSc6ICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjBcIixcblx0XHQneG1sbnM6dGFibGUnOiAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wXCIsXG5cdFx0J3htbG5zOnN0eWxlJzogICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN0eWxlOjEuMFwiLFxuXHRcdCd4bWxuczp0ZXh0JzogICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMFwiLFxuXHRcdCd4bWxuczpkcmF3JzogICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMFwiLFxuXHRcdCd4bWxuczpmbyc6ICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjBcIixcblx0XHQneG1sbnM6eGxpbmsnOiAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcblx0XHQneG1sbnM6ZGMnOiAgICAgICBcImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvXCIsXG5cdFx0J3htbG5zOm51bWJlcic6ICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjBcIixcblx0XHQneG1sbnM6c3ZnJzogICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3ZnLWNvbXBhdGlibGU6MS4wXCIsXG5cdFx0J3htbG5zOm9mJzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mOjEuMlwiLFxuXHRcdCdvZmZpY2U6dmVyc2lvbic6IFwiMS4yXCJcblx0fSkgKyAnPicgKyBtYXN0ZXJfc3R5bGVzICsgJzwvb2ZmaWNlOmRvY3VtZW50LXN0eWxlcz4nO1xuXG5cdHJldHVybiBmdW5jdGlvbiB3c28oLyo6OndiLCBvcHRzKi8pIHtcblx0XHRyZXR1cm4gWE1MX0hFQURFUiArIHBheWxvYWQ7XG5cdH07XG59KSgpO1xudmFyIHdyaXRlX2NvbnRlbnRfb2RzLyo6eyh3YjphbnksIG9wdHM6YW55KTpzdHJpbmd9Ki8gPSAvKiBAX19QVVJFX18gKi8oZnVuY3Rpb24oKSB7XG5cdC8qIDYuMS4yIFdoaXRlIFNwYWNlIENoYXJhY3RlcnMgKi9cblx0dmFyIHdyaXRlX3RleHRfcCA9IGZ1bmN0aW9uKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdFx0cmV0dXJuIGVzY2FwZXhtbCh0ZXh0KVxuXHRcdFx0LnJlcGxhY2UoLyAgKy9nLCBmdW5jdGlvbigkJCl7cmV0dXJuICc8dGV4dDpzIHRleHQ6Yz1cIicrJCQubGVuZ3RoKydcIi8+Jzt9KVxuXHRcdFx0LnJlcGxhY2UoL1xcdC9nLCBcIjx0ZXh0OnRhYi8+XCIpXG5cdFx0XHQucmVwbGFjZSgvXFxuL2csIFwiPC90ZXh0OnA+PHRleHQ6cD5cIilcblx0XHRcdC5yZXBsYWNlKC9eIC8sIFwiPHRleHQ6cy8+XCIpLnJlcGxhY2UoLyAkLywgXCI8dGV4dDpzLz5cIik7XG5cdH07XG5cblx0dmFyIG51bGxfY2VsbF94bWwgPSAnICAgICAgICAgIDx0YWJsZTp0YWJsZS1jZWxsIC8+XFxuJztcblx0dmFyIGNvdmVyZWRfY2VsbF94bWwgPSAnICAgICAgICAgIDx0YWJsZTpjb3ZlcmVkLXRhYmxlLWNlbGwvPlxcbic7XG5cdHZhciB3cml0ZV93cyA9IGZ1bmN0aW9uKHdzLCB3Yi8qOldvcmtib29rKi8sIGkvKjpudW1iZXIqLy8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdFx0LyogU2VjdGlvbiA5IFRhYmxlcyAqL1xuXHRcdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0by5wdXNoKCcgICAgICA8dGFibGU6dGFibGUgdGFibGU6bmFtZT1cIicgKyBlc2NhcGV4bWwod2IuU2hlZXROYW1lc1tpXSkgKyAnXCIgdGFibGU6c3R5bGUtbmFtZT1cInRhMVwiPlxcbicpO1xuXHRcdHZhciBSPTAsQz0wLCByYW5nZSA9IGRlY29kZV9yYW5nZSh3c1snIXJlZiddfHxcIkExXCIpO1xuXHRcdHZhciBtYXJyLyo6QXJyYXk8UmFuZ2U+Ki8gPSB3c1snIW1lcmdlcyddIHx8IFtdLCBtaSA9IDA7XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0aWYod3NbXCIhY29sc1wiXSkge1xuXHRcdFx0Zm9yKEMgPSAwOyBDIDw9IHJhbmdlLmUuYzsgKytDKSBvLnB1c2goJyAgICAgICAgPHRhYmxlOnRhYmxlLWNvbHVtbicgKyAod3NbXCIhY29sc1wiXVtDXSA/ICcgdGFibGU6c3R5bGUtbmFtZT1cImNvJyArIHdzW1wiIWNvbHNcIl1bQ10ub2RzICsgJ1wiJyA6ICcnKSArICc+PC90YWJsZTp0YWJsZS1jb2x1bW4+XFxuJyk7XG5cdFx0fVxuXHRcdHZhciBIID0gXCJcIiwgUk9XUyA9IHdzW1wiIXJvd3NcIl18fFtdO1xuXHRcdGZvcihSID0gMDsgUiA8IHJhbmdlLnMucjsgKytSKSB7XG5cdFx0XHRIID0gUk9XU1tSXSA/ICcgdGFibGU6c3R5bGUtbmFtZT1cInJvJyArIFJPV1NbUl0ub2RzICsgJ1wiJyA6IFwiXCI7XG5cdFx0XHRvLnB1c2goJyAgICAgICAgPHRhYmxlOnRhYmxlLXJvdycgKyBIICsgJz48L3RhYmxlOnRhYmxlLXJvdz5cXG4nKTtcblx0XHR9XG5cdFx0Zm9yKDsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuXHRcdFx0SCA9IFJPV1NbUl0gPyAnIHRhYmxlOnN0eWxlLW5hbWU9XCJybycgKyBST1dTW1JdLm9kcyArICdcIicgOiBcIlwiO1xuXHRcdFx0by5wdXNoKCcgICAgICAgIDx0YWJsZTp0YWJsZS1yb3cnICsgSCArICc+XFxuJyk7XG5cdFx0XHRmb3IoQz0wOyBDIDwgcmFuZ2Uucy5jOyArK0MpIG8ucHVzaChudWxsX2NlbGxfeG1sKTtcblx0XHRcdGZvcig7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdFx0dmFyIHNraXAgPSBmYWxzZSwgY3QgPSB7fSwgdGV4dHAgPSBcIlwiO1xuXHRcdFx0XHRmb3IobWkgPSAwOyBtaSAhPSBtYXJyLmxlbmd0aDsgKyttaSkge1xuXHRcdFx0XHRcdGlmKG1hcnJbbWldLnMuYyA+IEMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmKG1hcnJbbWldLnMuciA+IFIpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmKG1hcnJbbWldLmUuYyA8IEMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmKG1hcnJbbWldLmUuciA8IFIpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmKG1hcnJbbWldLnMuYyAhPSBDIHx8IG1hcnJbbWldLnMuciAhPSBSKSBza2lwID0gdHJ1ZTtcblx0XHRcdFx0XHRjdFsndGFibGU6bnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCddID0gKG1hcnJbbWldLmUuYyAtIG1hcnJbbWldLnMuYyArIDEpO1xuXHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItcm93cy1zcGFubmVkJ10gPSAgICAobWFyclttaV0uZS5yIC0gbWFyclttaV0ucy5yICsgMSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoc2tpcCkgeyBvLnB1c2goY292ZXJlZF9jZWxsX3htbCk7IGNvbnRpbnVlOyB9XG5cdFx0XHRcdHZhciByZWYgPSBlbmNvZGVfY2VsbCh7cjpSLCBjOkN9KSwgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ106IHdzW3JlZl07XG5cdFx0XHRcdGlmKGNlbGwgJiYgY2VsbC5mKSB7XG5cdFx0XHRcdFx0Y3RbJ3RhYmxlOmZvcm11bGEnXSA9IGVzY2FwZXhtbChjc2ZfdG9fb2RzX2Zvcm11bGEoY2VsbC5mKSk7XG5cdFx0XHRcdFx0aWYoY2VsbC5GKSB7XG5cdFx0XHRcdFx0XHRpZihjZWxsLkYuc2xpY2UoMCwgcmVmLmxlbmd0aCkgPT0gcmVmKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBfRnJlZiA9IGRlY29kZV9yYW5nZShjZWxsLkYpO1xuXHRcdFx0XHRcdFx0XHRjdFsndGFibGU6bnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQnXSA9IChfRnJlZi5lLmMgLSBfRnJlZi5zLmMgKyAxKTtcblx0XHRcdFx0XHRcdFx0Y3RbJ3RhYmxlOm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkJ10gPSAgICAoX0ZyZWYuZS5yIC0gX0ZyZWYucy5yICsgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKCFjZWxsKSB7IG8ucHVzaChudWxsX2NlbGxfeG1sKTsgY29udGludWU7IH1cblx0XHRcdFx0c3dpdGNoKGNlbGwudCkge1xuXHRcdFx0XHRcdGNhc2UgJ2InOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSAoY2VsbC52ID8gJ1RSVUUnIDogJ0ZBTFNFJyk7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlLXR5cGUnXSA9IFwiYm9vbGVhblwiO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTpib29sZWFuLXZhbHVlJ10gPSAoY2VsbC52ID8gJ3RydWUnIDogJ2ZhbHNlJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICduJzpcblx0XHRcdFx0XHRcdHRleHRwID0gKGNlbGwud3x8U3RyaW5nKGNlbGwudnx8MCkpO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZS10eXBlJ10gPSBcImZsb2F0XCI7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlJ10gPSAoY2VsbC52fHwwKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSBjZWxsLnYgPT0gbnVsbCA/IFwiXCIgOiBjZWxsLnY7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlLXR5cGUnXSA9IFwic3RyaW5nXCI7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdkJzpcblx0XHRcdFx0XHRcdHRleHRwID0gKGNlbGwud3x8KHBhcnNlRGF0ZShjZWxsLnYpLnRvSVNPU3RyaW5nKCkpKTtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJkYXRlXCI7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOmRhdGUtdmFsdWUnXSA9IChwYXJzZURhdGUoY2VsbC52KS50b0lTT1N0cmluZygpKTtcblx0XHRcdFx0XHRcdGN0Wyd0YWJsZTpzdHlsZS1uYW1lJ10gPSBcImNlMVwiO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Ly9jYXNlICdlJzpcblx0XHRcdFx0XHRkZWZhdWx0OiBvLnB1c2gobnVsbF9jZWxsX3htbCk7IGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciB0ZXh0X3AgPSB3cml0ZV90ZXh0X3AodGV4dHApO1xuXHRcdFx0XHRpZihjZWxsLmwgJiYgY2VsbC5sLlRhcmdldCkge1xuXHRcdFx0XHRcdHZhciBfdGd0ID0gY2VsbC5sLlRhcmdldDtcblx0XHRcdFx0XHRfdGd0ID0gX3RndC5jaGFyQXQoMCkgPT0gXCIjXCIgPyBcIiNcIiArIGNzZl90b19vZHNfM0QoX3RndC5zbGljZSgxKSkgOiBfdGd0O1xuXHRcdFx0XHRcdC8vIFRPRE86IGNob29zZSBjb3JyZWN0IHBhcmVudCBwYXRoIGZvcm1hdCBiYXNlZCBvbiBsaW5rIGRlbGltaXRlcnNcblx0XHRcdFx0XHRpZihfdGd0LmNoYXJBdCgwKSAhPSBcIiNcIiAmJiAhX3RndC5tYXRjaCgvXlxcdys6LykpIF90Z3QgPSAnLi4vJyArIF90Z3Q7XG5cdFx0XHRcdFx0dGV4dF9wID0gd3JpdGV4dGFnKCd0ZXh0OmEnLCB0ZXh0X3AsIHsneGxpbms6aHJlZic6IF90Z3QucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0by5wdXNoKCcgICAgICAgICAgJyArIHdyaXRleHRhZygndGFibGU6dGFibGUtY2VsbCcsIHdyaXRleHRhZygndGV4dDpwJywgdGV4dF9wLCB7fSksIGN0KSArICdcXG4nKTtcblx0XHRcdH1cblx0XHRcdG8ucHVzaCgnICAgICAgICA8L3RhYmxlOnRhYmxlLXJvdz5cXG4nKTtcblx0XHR9XG5cdFx0by5wdXNoKCcgICAgICA8L3RhYmxlOnRhYmxlPlxcbicpO1xuXHRcdHJldHVybiBvLmpvaW4oXCJcIik7XG5cdH07XG5cblx0dmFyIHdyaXRlX2F1dG9tYXRpY19zdHlsZXNfb2RzID0gZnVuY3Rpb24oby8qOkFycmF5PHN0cmluZz4qLywgd2IpIHtcblx0XHRvLnB1c2goJyA8b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XFxuJyk7XG5cblx0XHRvLnB1c2goJyAgPG51bWJlcjpkYXRlLXN0eWxlIHN0eWxlOm5hbWU9XCJOMzdcIiBudW1iZXI6YXV0b21hdGljLW9yZGVyPVwidHJ1ZVwiPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjptb250aCBudW1iZXI6c3R5bGU9XCJsb25nXCIvPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjpkYXkgbnVtYmVyOnN0eWxlPVwibG9uZ1wiLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxudW1iZXI6eWVhci8+XFxuJyk7XG5cdFx0by5wdXNoKCcgIDwvbnVtYmVyOmRhdGUtc3R5bGU+XFxuJyk7XG5cblx0XHQvKiBjb2x1bW4gc3R5bGVzICovXG5cdFx0dmFyIGNpZHggPSAwO1xuXHRcdHdiLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKG4pIHsgcmV0dXJuIHdiLlNoZWV0c1tuXTsgfSkuZm9yRWFjaChmdW5jdGlvbih3cykge1xuXHRcdFx0aWYoIXdzKSByZXR1cm47XG5cdFx0XHRpZih3c1tcIiFjb2xzXCJdKSB7XG5cdFx0XHRcdGZvcih2YXIgQyA9IDA7IEMgPCB3c1tcIiFjb2xzXCJdLmxlbmd0aDsgKytDKSBpZih3c1tcIiFjb2xzXCJdW0NdKSB7XG5cdFx0XHRcdFx0dmFyIGNvbG9iaiA9IHdzW1wiIWNvbHNcIl1bQ107XG5cdFx0XHRcdFx0aWYoY29sb2JqLndpZHRoID09IG51bGwgJiYgY29sb2JqLndweCA9PSBudWxsICYmIGNvbG9iai53Y2ggPT0gbnVsbCkgY29udGludWU7XG5cdFx0XHRcdFx0cHJvY2Vzc19jb2woY29sb2JqKTtcblx0XHRcdFx0XHRjb2xvYmoub2RzID0gY2lkeDtcblx0XHRcdFx0XHR2YXIgdyA9IHdzW1wiIWNvbHNcIl1bQ10ud3B4ICsgXCJweFwiO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cImNvJyArIGNpZHggKyAnXCIgc3R5bGU6ZmFtaWx5PVwidGFibGUtY29sdW1uXCI+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgICA8c3R5bGU6dGFibGUtY29sdW1uLXByb3BlcnRpZXMgZm86YnJlYWstYmVmb3JlPVwiYXV0b1wiIHN0eWxlOmNvbHVtbi13aWR0aD1cIicgKyB3ICsgJ1wiLz5cXG4nKTtcblx0XHRcdFx0XHRvLnB1c2goJyAgPC9zdHlsZTpzdHlsZT5cXG4nKTtcblx0XHRcdFx0XHQrK2NpZHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8qIHJvdyBzdHlsZXMgKi9cblx0XHR2YXIgcmlkeCA9IDA7XG5cdFx0d2IuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24obikgeyByZXR1cm4gd2IuU2hlZXRzW25dOyB9KS5mb3JFYWNoKGZ1bmN0aW9uKHdzKSB7XG5cdFx0XHRpZighd3MpIHJldHVybjtcblx0XHRcdGlmKHdzW1wiIXJvd3NcIl0pIHtcblx0XHRcdFx0Zm9yKHZhciBSID0gMDsgUiA8IHdzW1wiIXJvd3NcIl0ubGVuZ3RoOyArK1IpIGlmKHdzW1wiIXJvd3NcIl1bUl0pIHtcblx0XHRcdFx0XHR3c1tcIiFyb3dzXCJdW1JdLm9kcyA9IHJpZHg7XG5cdFx0XHRcdFx0dmFyIGggPSB3c1tcIiFyb3dzXCJdW1JdLmhweCArIFwicHhcIjtcblx0XHRcdFx0XHRvLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9XCJybycgKyByaWR4ICsgJ1wiIHN0eWxlOmZhbWlseT1cInRhYmxlLXJvd1wiPlxcbicpO1xuXHRcdFx0XHRcdG8ucHVzaCgnICAgPHN0eWxlOnRhYmxlLXJvdy1wcm9wZXJ0aWVzIGZvOmJyZWFrLWJlZm9yZT1cImF1dG9cIiBzdHlsZTpyb3ctaGVpZ2h0PVwiJyArIGggKyAnXCIvPlxcbicpO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8L3N0eWxlOnN0eWxlPlxcbicpO1xuXHRcdFx0XHRcdCsrcmlkeDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0LyogdGFibGUgKi9cblx0XHRvLnB1c2goJyAgPHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9XCJ0YTFcIiBzdHlsZTpmYW1pbHk9XCJ0YWJsZVwiIHN0eWxlOm1hc3Rlci1wYWdlLW5hbWU9XCJtcDFcIj5cXG4nKTtcblx0XHRvLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1wcm9wZXJ0aWVzIHRhYmxlOmRpc3BsYXk9XCJ0cnVlXCIgc3R5bGU6d3JpdGluZy1tb2RlPVwibHItdGJcIi8+XFxuJyk7XG5cdFx0by5wdXNoKCcgIDwvc3R5bGU6c3R5bGU+XFxuJyk7XG5cblx0XHQvKiB0YWJsZSBjZWxscywgdGV4dCAqL1xuXHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cImNlMVwiIHN0eWxlOmZhbWlseT1cInRhYmxlLWNlbGxcIiBzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZT1cIkRlZmF1bHRcIiBzdHlsZTpkYXRhLXN0eWxlLW5hbWU9XCJOMzdcIi8+XFxuJyk7XG5cblx0XHQvKiBwYWdlLWxheW91dCAqL1xuXG5cdFx0by5wdXNoKCcgPC9vZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cXG4nKTtcblx0fTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gd2N4KHdiLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdFx0LyogMy4xLjMuMiAqL1xuXHRcdHZhciBhdHRyID0gd3h0X2hlbHBlcih7XG5cdFx0XHQneG1sbnM6b2ZmaWNlJzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjBcIixcblx0XHRcdCd4bWxuczp0YWJsZSc6ICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6c3R5bGUnOiAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN0eWxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnRleHQnOiAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMFwiLFxuXHRcdFx0J3htbG5zOmRyYXcnOiAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMFwiLFxuXHRcdFx0J3htbG5zOmZvJzogICAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjBcIixcblx0XHRcdCd4bWxuczp4bGluayc6ICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcblx0XHRcdCd4bWxuczpkYyc6ICAgICAgICAgICBcImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvXCIsXG5cdFx0XHQneG1sbnM6bWV0YSc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wXCIsXG5cdFx0XHQneG1sbnM6bnVtYmVyJzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjBcIixcblx0XHRcdCd4bWxuczpwcmVzZW50YXRpb24nOiBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6cHJlc2VudGF0aW9uOjEuMFwiLFxuXHRcdFx0J3htbG5zOnN2Zyc6ICAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjBcIixcblx0XHRcdCd4bWxuczpjaGFydCc6ICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y2hhcnQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6ZHIzZCc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wXCIsXG5cdFx0XHQneG1sbnM6bWF0aCc6ICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsXG5cdFx0XHQneG1sbnM6Zm9ybSc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmZvcm06MS4wXCIsXG5cdFx0XHQneG1sbnM6c2NyaXB0JzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnNjcmlwdDoxLjBcIixcblx0XHRcdCd4bWxuczpvb28nOiAgICAgICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L29mZmljZVwiLFxuXHRcdFx0J3htbG5zOm9vb3cnOiAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvd3JpdGVyXCIsXG5cdFx0XHQneG1sbnM6b29vYyc6ICAgICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9jYWxjXCIsXG5cdFx0XHQneG1sbnM6ZG9tJzogICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHNcIixcblx0XHRcdCd4bWxuczp4Zm9ybXMnOiAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDIveGZvcm1zXCIsXG5cdFx0XHQneG1sbnM6eHNkJzogICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYVwiLFxuXHRcdFx0J3htbG5zOnhzaSc6ICAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIixcblx0XHRcdCd4bWxuczpzaGVldCc6ICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6c2gzM3RqczoxLjBcIixcblx0XHRcdCd4bWxuczpycHQnOiAgICAgICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA1L3JlcG9ydFwiLFxuXHRcdFx0J3htbG5zOm9mJzogICAgICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjJcIixcblx0XHRcdCd4bWxuczp4aHRtbCc6ICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIixcblx0XHRcdCd4bWxuczpncmRkbCc6ICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDMvZy9kYXRhLXZpZXcjXCIsXG5cdFx0XHQneG1sbnM6dGFibGVvb28nOiAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwOS90YWJsZVwiLFxuXHRcdFx0J3htbG5zOmRyYXdvb28nOiAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMTAvZHJhd1wiLFxuXHRcdFx0J3htbG5zOmNhbGNleHQnOiAgICAgIFwidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOmNhbGM6eG1sbnM6Y2FsY2V4dDoxLjBcIixcblx0XHRcdCd4bWxuczpsb2V4dCc6ICAgICAgICBcInVybjpvcmc6ZG9jdW1lbnRmb3VuZGF0aW9uOm5hbWVzOmV4cGVyaW1lbnRhbDpvZmZpY2U6eG1sbnM6bG9leHQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6ZmllbGQnOiAgICAgICAgXCJ1cm46b3Blbm9mZmljZTpuYW1lczpleHBlcmltZW50YWw6b29vLW1zLWludGVyb3A6eG1sbnM6ZmllbGQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6Zm9ybXgnOiAgICAgICAgXCJ1cm46b3Blbm9mZmljZTpuYW1lczpleHBlcmltZW50YWw6b294bWwtb2RmLWludGVyb3A6eG1sbnM6Zm9ybToxLjBcIixcblx0XHRcdCd4bWxuczpjc3MzdCc6ICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC9cIixcblx0XHRcdCdvZmZpY2U6dmVyc2lvbic6ICAgICBcIjEuMlwiXG5cdFx0fSk7XG5cblx0XHR2YXIgZm9kcyA9IHd4dF9oZWxwZXIoe1xuXHRcdFx0J3htbG5zOmNvbmZpZyc6ICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjb25maWc6MS4wXCIsXG5cdFx0XHQnb2ZmaWNlOm1pbWV0eXBlJzogXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCJcblx0XHR9KTtcblxuXHRcdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJmb2RzXCIpIHtcblx0XHRcdG8ucHVzaCgnPG9mZmljZTpkb2N1bWVudCcgKyBhdHRyICsgZm9kcyArICc+XFxuJyk7XG5cdFx0XHRvLnB1c2god3JpdGVfbWV0YV9vZHMoKS5yZXBsYWNlKC9vZmZpY2U6ZG9jdW1lbnQtbWV0YS9nLCBcIm9mZmljZTptZXRhXCIpKTtcblx0XHRcdC8vIFRPRE86IHNldHRpbmdzIChlcXVpdiBvZiBzZXR0aW5ncy54bWwgZm9yIE9EUylcblx0XHR9IGVsc2Ugby5wdXNoKCc8b2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQnICsgYXR0ciAgKyAnPlxcbicpO1xuXHRcdC8vIG8ucHVzaCgnICA8b2ZmaWNlOnNjcmlwdHMvPlxcbicpO1xuXHRcdHdyaXRlX2F1dG9tYXRpY19zdHlsZXNfb2RzKG8sIHdiKTtcblx0XHRvLnB1c2goJyAgPG9mZmljZTpib2R5PlxcbicpO1xuXHRcdG8ucHVzaCgnICAgIDxvZmZpY2U6c3ByZWFkc2hlZXQ+XFxuJyk7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBvLnB1c2god3JpdGVfd3Mod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dLCB3YiwgaSwgb3B0cykpO1xuXHRcdG8ucHVzaCgnICAgIDwvb2ZmaWNlOnNwcmVhZHNoZWV0PlxcbicpO1xuXHRcdG8ucHVzaCgnICA8L29mZmljZTpib2R5PlxcbicpO1xuXHRcdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJmb2RzXCIpIG8ucHVzaCgnPC9vZmZpY2U6ZG9jdW1lbnQ+Jyk7XG5cdFx0ZWxzZSBvLnB1c2goJzwvb2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQ+Jyk7XG5cdFx0cmV0dXJuIG8uam9pbihcIlwiKTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIHdyaXRlX29kcyh3Yi8qOmFueSovLCBvcHRzLyo6YW55Ki8pIHtcblx0aWYob3B0cy5ib29rVHlwZSA9PSBcImZvZHNcIikgcmV0dXJuIHdyaXRlX2NvbnRlbnRfb2RzKHdiLCBvcHRzKTtcblxuXHR2YXIgemlwID0gemlwX25ldygpO1xuXHR2YXIgZiA9IFwiXCI7XG5cblx0dmFyIG1hbmlmZXN0Lyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXTtcblx0dmFyIHJkZi8qOkFycmF5PFtzdHJpbmcsIHN0cmluZ10+Ki8gPSBbXTtcblxuXHQvKiBQYXJ0IDMgU2VjdGlvbiAzLjMgTUlNRSBNZWRpYSBUeXBlICovXG5cdGYgPSBcIm1pbWV0eXBlXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiKTtcblxuXHQvKiBQYXJ0IDEgU2VjdGlvbiAyLjIgRG9jdW1lbnRzICovXG5cdGYgPSBcImNvbnRlbnQueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2NvbnRlbnRfb2RzKHdiLCBvcHRzKSk7XG5cdG1hbmlmZXN0LnB1c2goW2YsIFwidGV4dC94bWxcIl0pO1xuXHRyZGYucHVzaChbZiwgXCJDb250ZW50RmlsZVwiXSk7XG5cblx0LyogVE9ETzogdGhlc2UgYXJlIGhhcmQtY29kZWQgc3R5bGVzIHRvIHNhdGlhdGUgZXhjZWwgKi9cblx0ZiA9IFwic3R5bGVzLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zdHlsZXNfb2RzKHdiLCBvcHRzKSk7XG5cdG1hbmlmZXN0LnB1c2goW2YsIFwidGV4dC94bWxcIl0pO1xuXHRyZGYucHVzaChbZiwgXCJTdHlsZXNGaWxlXCJdKTtcblxuXHQvKiBUT0RPOiB0aGlzIGlzIGhhcmQtY29kZWQgdG8gc2F0aWF0ZSBleGNlbCAqL1xuXHRmID0gXCJtZXRhLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCBYTUxfSEVBREVSICsgd3JpdGVfbWV0YV9vZHMoLyo6OndiLCBvcHRzKi8pKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJ0ZXh0L3htbFwiXSk7XG5cdHJkZi5wdXNoKFtmLCBcIk1ldGFkYXRhRmlsZVwiXSk7XG5cblx0LyogUGFydCAzIFNlY3Rpb24gNiBNZXRhZGF0YSBNYW5pZmVzdCBGaWxlICovXG5cdGYgPSBcIm1hbmlmZXN0LnJkZlwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9yZGYocmRmLyosIG9wdHMqLykpO1xuXHRtYW5pZmVzdC5wdXNoKFtmLCBcImFwcGxpY2F0aW9uL3JkZit4bWxcIl0pO1xuXG5cdC8qIFBhcnQgMyBTZWN0aW9uIDQgTWFuaWZlc3QgRmlsZSAqL1xuXHRmID0gXCJNRVRBLUlORi9tYW5pZmVzdC54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfbWFuaWZlc3QobWFuaWZlc3QvKiwgb3B0cyovKSk7XG5cblx0cmV0dXJuIHppcDtcbn1cblxuLyohIHNoZWV0anMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuZnVuY3Rpb24gdThfdG9fZGF0YXZpZXcoYXJyYXkpIHtcbiAgcmV0dXJuIG5ldyBEYXRhVmlldyhhcnJheS5idWZmZXIsIGFycmF5LmJ5dGVPZmZzZXQsIGFycmF5LmJ5dGVMZW5ndGgpO1xufVxuZnVuY3Rpb24gdThzdHIodTgpIHtcbiAgcmV0dXJuIHR5cGVvZiBUZXh0RGVjb2RlciAhPSBcInVuZGVmaW5lZFwiID8gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHU4KSA6IHV0ZjhyZWFkKGEycyh1OCkpO1xufVxuZnVuY3Rpb24gc3RydTgoc3RyKSB7XG4gIHJldHVybiB0eXBlb2YgVGV4dEVuY29kZXIgIT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHIpIDogczJhKHV0Zjh3cml0ZShzdHIpKTtcbn1cbmZ1bmN0aW9uIHU4Y29udGFpbnMoYm9keSwgc2VhcmNoKSB7XG4gIG91dGVyOlxuICAgIGZvciAodmFyIEwgPSAwOyBMIDw9IGJvZHkubGVuZ3RoIC0gc2VhcmNoLmxlbmd0aDsgKytMKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlYXJjaC5sZW5ndGg7ICsrailcbiAgICAgICAgaWYgKGJvZHlbTCArIGpdICE9IHNlYXJjaFtqXSlcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gdThjb25jYXQodThhKSB7XG4gIHZhciBsZW4gPSB1OGEucmVkdWNlKGZ1bmN0aW9uKGFjYywgeCkge1xuICAgIHJldHVybiBhY2MgKyB4Lmxlbmd0aDtcbiAgfSwgMCk7XG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICB2YXIgb2ZmID0gMDtcbiAgdThhLmZvckVhY2goZnVuY3Rpb24odTgpIHtcbiAgICBvdXQuc2V0KHU4LCBvZmYpO1xuICAgIG9mZiArPSB1OC5sZW5ndGg7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gcG9wY250KHgpIHtcbiAgeCAtPSB4ID4+IDEgJiAxNDMxNjU1NzY1O1xuICB4ID0gKHggJiA4NTg5OTM0NTkpICsgKHggPj4gMiAmIDg1ODk5MzQ1OSk7XG4gIHJldHVybiAoeCArICh4ID4+IDQpICYgMjUyNjQ1MTM1KSAqIDE2ODQzMDA5ID4+PiAyNDtcbn1cbmZ1bmN0aW9uIHJlYWREZWNpbWFsMTI4TEUoYnVmLCBvZmZzZXQpIHtcbiAgdmFyIGV4cCA9IChidWZbb2Zmc2V0ICsgMTVdICYgMTI3KSA8PCA3IHwgYnVmW29mZnNldCArIDE0XSA+PiAxO1xuICB2YXIgbWFudGlzc2EgPSBidWZbb2Zmc2V0ICsgMTRdICYgMTtcbiAgZm9yICh2YXIgaiA9IG9mZnNldCArIDEzOyBqID49IG9mZnNldDsgLS1qKVxuICAgIG1hbnRpc3NhID0gbWFudGlzc2EgKiAyNTYgKyBidWZbal07XG4gIHJldHVybiAoYnVmW29mZnNldCArIDE1XSAmIDEyOCA/IC1tYW50aXNzYSA6IG1hbnRpc3NhKSAqIE1hdGgucG93KDEwLCBleHAgLSA2MTc2KTtcbn1cbmZ1bmN0aW9uIHdyaXRlRGVjaW1hbDEyOExFKGJ1Ziwgb2Zmc2V0LCB2YWx1ZSkge1xuICB2YXIgZXhwID0gTWF0aC5mbG9vcih2YWx1ZSA9PSAwID8gMCA6IE1hdGguTE9HMTBFICogTWF0aC5sb2coTWF0aC5hYnModmFsdWUpKSkgKyA2MTc2IC0gMjA7XG4gIHZhciBtYW50aXNzYSA9IHZhbHVlIC8gTWF0aC5wb3coMTAsIGV4cCAtIDYxNzYpO1xuICBidWZbb2Zmc2V0ICsgMTVdIHw9IGV4cCA+PiA3O1xuICBidWZbb2Zmc2V0ICsgMTRdIHw9IChleHAgJiAxMjcpIDw8IDE7XG4gIGZvciAodmFyIGkgPSAwOyBtYW50aXNzYSA+PSAxOyArK2ksIG1hbnRpc3NhIC89IDI1NilcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBtYW50aXNzYSAmIDI1NTtcbiAgYnVmW29mZnNldCArIDE1XSB8PSB2YWx1ZSA+PSAwID8gMCA6IDEyODtcbn1cbmZ1bmN0aW9uIHBhcnNlX3ZhcmludDQ5KGJ1ZiwgcHRyKSB7XG4gIHZhciBsID0gcHRyID8gcHRyWzBdIDogMDtcbiAgdmFyIHVzeiA9IGJ1ZltsXSAmIDEyNztcbiAgdmFyaW50OlxuICAgIGlmIChidWZbbCsrXSA+PSAxMjgpIHtcbiAgICAgIHVzeiB8PSAoYnVmW2xdICYgMTI3KSA8PCA3O1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogfD0gKGJ1ZltsXSAmIDEyNykgPDwgMTQ7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiB8PSAoYnVmW2xdICYgMTI3KSA8PCAyMTtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6ICs9IChidWZbbF0gJiAxMjcpICogTWF0aC5wb3coMiwgMjgpO1xuICAgICAgKytsO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogKz0gKGJ1ZltsXSAmIDEyNykgKiBNYXRoLnBvdygyLCAzNSk7XG4gICAgICArK2w7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiArPSAoYnVmW2xdICYgMTI3KSAqIE1hdGgucG93KDIsIDQyKTtcbiAgICAgICsrbDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgIH1cbiAgaWYgKHB0cilcbiAgICBwdHJbMF0gPSBsO1xuICByZXR1cm4gdXN6O1xufVxuZnVuY3Rpb24gd3JpdGVfdmFyaW50NDkodikge1xuICB2YXIgdXN6ID0gbmV3IFVpbnQ4QXJyYXkoNyk7XG4gIHVzelswXSA9IHYgJiAxMjc7XG4gIHZhciBMID0gMTtcbiAgc3o6XG4gICAgaWYgKHYgPiAxMjcpIHtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiA+PiA3ICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gMTYzODMpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2ID4+IDE0ICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gMjA5NzE1MSlcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgPj4gMjEgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAyNjg0MzU0NTUpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2IC8gMjU2ID4+PiAyMSAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDM0MzU5NzM4MzY3KVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiAvIDY1NTM2ID4+PiAyMSAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDQzOTgwNDY1MTExMDMpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2IC8gMTY3NzcyMTYgPj4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgIH1cbiAgcmV0dXJuIHVzei5zbGljZSgwLCBMKTtcbn1cbmZ1bmN0aW9uIHZhcmludF90b19pMzIoYnVmKSB7XG4gIHZhciBsID0gMCwgaTMyID0gYnVmW2xdICYgMTI3O1xuICB2YXJpbnQ6XG4gICAgaWYgKGJ1ZltsKytdID49IDEyOCkge1xuICAgICAgaTMyIHw9IChidWZbbF0gJiAxMjcpIDw8IDc7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIGkzMiB8PSAoYnVmW2xdICYgMTI3KSA8PCAxNDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgaTMyIHw9IChidWZbbF0gJiAxMjcpIDw8IDIxO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgMjg7XG4gICAgfVxuICByZXR1cm4gaTMyO1xufVxuZnVuY3Rpb24gcGFyc2Vfc2hhbGxvdyhidWYpIHtcbiAgdmFyIG91dCA9IFtdLCBwdHIgPSBbMF07XG4gIHdoaWxlIChwdHJbMF0gPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIG9mZiA9IHB0clswXTtcbiAgICB2YXIgbnVtID0gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpO1xuICAgIHZhciB0eXBlID0gbnVtICYgNztcbiAgICBudW0gPSBNYXRoLmZsb29yKG51bSAvIDgpO1xuICAgIHZhciBsZW4gPSAwO1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bSA9PSAwKVxuICAgICAgYnJlYWs7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbCA9IHB0clswXTtcbiAgICAgICAgICB3aGlsZSAoYnVmW3B0clswXSsrXSA+PSAxMjgpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgcmVzID0gYnVmLnNsaWNlKGwsIHB0clswXSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIGxlbiA9IDQ7XG4gICAgICAgIHJlcyA9IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbik7XG4gICAgICAgIHB0clswXSArPSBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBsZW4gPSA4O1xuICAgICAgICByZXMgPSBidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pO1xuICAgICAgICBwdHJbMF0gKz0gbGVuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgbGVuID0gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpO1xuICAgICAgICByZXMgPSBidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pO1xuICAgICAgICBwdHJbMF0gKz0gbGVuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBCIFR5cGUgXCIuY29uY2F0KHR5cGUsIFwiIGZvciBGaWVsZCBcIikuY29uY2F0KG51bSwgXCIgYXQgb2Zmc2V0IFwiKS5jb25jYXQob2ZmKSk7XG4gICAgfVxuICAgIHZhciB2ID0geyBkYXRhOiByZXMsIHR5cGU6IHR5cGUgfTtcbiAgICBpZiAob3V0W251bV0gPT0gbnVsbClcbiAgICAgIG91dFtudW1dID0gW3ZdO1xuICAgIGVsc2VcbiAgICAgIG91dFtudW1dLnB1c2godik7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX3NoYWxsb3cocHJvdG8pIHtcbiAgdmFyIG91dCA9IFtdO1xuICBwcm90by5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkLCBpZHgpIHtcbiAgICBmaWVsZC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghaXRlbS5kYXRhKVxuICAgICAgICByZXR1cm47XG4gICAgICBvdXQucHVzaCh3cml0ZV92YXJpbnQ0OShpZHggKiA4ICsgaXRlbS50eXBlKSk7XG4gICAgICBpZiAoaXRlbS50eXBlID09IDIpXG4gICAgICAgIG91dC5wdXNoKHdyaXRlX3ZhcmludDQ5KGl0ZW0uZGF0YS5sZW5ndGgpKTtcbiAgICAgIG91dC5wdXNoKGl0ZW0uZGF0YSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gdThjb25jYXQob3V0KTtcbn1cbmZ1bmN0aW9uIG1hcHBhKGRhdGEsIGNiKSB7XG4gIHJldHVybiAoZGF0YSA9PSBudWxsID8gdm9pZCAwIDogZGF0YS5tYXAoZnVuY3Rpb24oZCkge1xuICAgIHJldHVybiBjYihkLmRhdGEpO1xuICB9KSkgfHwgW107XG59XG5mdW5jdGlvbiBwYXJzZV9pd2FfZmlsZShidWYpIHtcbiAgdmFyIF9hO1xuICB2YXIgb3V0ID0gW10sIHB0ciA9IFswXTtcbiAgd2hpbGUgKHB0clswXSA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgbGVuID0gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpO1xuICAgIHZhciBhaSA9IHBhcnNlX3NoYWxsb3coYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKSk7XG4gICAgcHRyWzBdICs9IGxlbjtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgaWQ6IHZhcmludF90b19pMzIoYWlbMV1bMF0uZGF0YSksXG4gICAgICBtZXNzYWdlczogW11cbiAgICB9O1xuICAgIGFpWzJdLmZvckVhY2goZnVuY3Rpb24oYikge1xuICAgICAgdmFyIG1pID0gcGFyc2Vfc2hhbGxvdyhiLmRhdGEpO1xuICAgICAgdmFyIGZsID0gdmFyaW50X3RvX2kzMihtaVszXVswXS5kYXRhKTtcbiAgICAgIHJlcy5tZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgbWV0YTogbWksXG4gICAgICAgIGRhdGE6IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGZsKVxuICAgICAgfSk7XG4gICAgICBwdHJbMF0gKz0gZmw7XG4gICAgfSk7XG4gICAgaWYgKChfYSA9IGFpWzNdKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pXG4gICAgICByZXMubWVyZ2UgPSB2YXJpbnRfdG9faTMyKGFpWzNdWzBdLmRhdGEpID4+PiAwID4gMDtcbiAgICBvdXQucHVzaChyZXMpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9pd2FfZmlsZShpYXMpIHtcbiAgdmFyIGJ1ZnMgPSBbXTtcbiAgaWFzLmZvckVhY2goZnVuY3Rpb24oaWEpIHtcbiAgICB2YXIgYWkgPSBbXTtcbiAgICBhaVsxXSA9IFt7IGRhdGE6IHdyaXRlX3ZhcmludDQ5KGlhLmlkKSwgdHlwZTogMCB9XTtcbiAgICBhaVsyXSA9IFtdO1xuICAgIGlmIChpYS5tZXJnZSAhPSBudWxsKVxuICAgICAgYWlbM10gPSBbeyBkYXRhOiB3cml0ZV92YXJpbnQ0OSgrISFpYS5tZXJnZSksIHR5cGU6IDAgfV07XG4gICAgdmFyIG1pZGF0YSA9IFtdO1xuICAgIGlhLm1lc3NhZ2VzLmZvckVhY2goZnVuY3Rpb24obWkpIHtcbiAgICAgIG1pZGF0YS5wdXNoKG1pLmRhdGEpO1xuICAgICAgbWkubWV0YVszXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KG1pLmRhdGEubGVuZ3RoKSB9XTtcbiAgICAgIGFpWzJdLnB1c2goeyBkYXRhOiB3cml0ZV9zaGFsbG93KG1pLm1ldGEpLCB0eXBlOiAyIH0pO1xuICAgIH0pO1xuICAgIHZhciBhaXBheWxvYWQgPSB3cml0ZV9zaGFsbG93KGFpKTtcbiAgICBidWZzLnB1c2god3JpdGVfdmFyaW50NDkoYWlwYXlsb2FkLmxlbmd0aCkpO1xuICAgIGJ1ZnMucHVzaChhaXBheWxvYWQpO1xuICAgIG1pZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKG1pZCkge1xuICAgICAgcmV0dXJuIGJ1ZnMucHVzaChtaWQpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHU4Y29uY2F0KGJ1ZnMpO1xufVxuZnVuY3Rpb24gcGFyc2Vfc25hcHB5X2NodW5rKHR5cGUsIGJ1Zikge1xuICBpZiAodHlwZSAhPSAwKVxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgU25hcHB5IGNodW5rIHR5cGUgXCIuY29uY2F0KHR5cGUpKTtcbiAgdmFyIHB0ciA9IFswXTtcbiAgdmFyIHVzeiA9IHBhcnNlX3ZhcmludDQ5KGJ1ZiwgcHRyKTtcbiAgdmFyIGNodW5rcyA9IFtdO1xuICB3aGlsZSAocHRyWzBdIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciB0YWcgPSBidWZbcHRyWzBdXSAmIDM7XG4gICAgaWYgKHRhZyA9PSAwKSB7XG4gICAgICB2YXIgbGVuID0gYnVmW3B0clswXSsrXSA+PiAyO1xuICAgICAgaWYgKGxlbiA8IDYwKVxuICAgICAgICArK2xlbjtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgYyA9IGxlbiAtIDU5O1xuICAgICAgICBsZW4gPSBidWZbcHRyWzBdXTtcbiAgICAgICAgaWYgKGMgPiAxKVxuICAgICAgICAgIGxlbiB8PSBidWZbcHRyWzBdICsgMV0gPDwgODtcbiAgICAgICAgaWYgKGMgPiAyKVxuICAgICAgICAgIGxlbiB8PSBidWZbcHRyWzBdICsgMl0gPDwgMTY7XG4gICAgICAgIGlmIChjID4gMylcbiAgICAgICAgICBsZW4gfD0gYnVmW3B0clswXSArIDNdIDw8IDI0O1xuICAgICAgICBsZW4gPj4+PSAwO1xuICAgICAgICBsZW4rKztcbiAgICAgICAgcHRyWzBdICs9IGM7XG4gICAgICB9XG4gICAgICBjaHVua3MucHVzaChidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pKTtcbiAgICAgIHB0clswXSArPSBsZW47XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9mZnNldCA9IDAsIGxlbmd0aCA9IDA7XG4gICAgICBpZiAodGFnID09IDEpIHtcbiAgICAgICAgbGVuZ3RoID0gKGJ1ZltwdHJbMF1dID4+IDIgJiA3KSArIDQ7XG4gICAgICAgIG9mZnNldCA9IChidWZbcHRyWzBdKytdICYgMjI0KSA8PCAzO1xuICAgICAgICBvZmZzZXQgfD0gYnVmW3B0clswXSsrXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlbmd0aCA9IChidWZbcHRyWzBdKytdID4+IDIpICsgMTtcbiAgICAgICAgaWYgKHRhZyA9PSAyKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gYnVmW3B0clswXV0gfCBidWZbcHRyWzBdICsgMV0gPDwgODtcbiAgICAgICAgICBwdHJbMF0gKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQgPSAoYnVmW3B0clswXV0gfCBidWZbcHRyWzBdICsgMV0gPDwgOCB8IGJ1ZltwdHJbMF0gKyAyXSA8PCAxNiB8IGJ1ZltwdHJbMF0gKyAzXSA8PCAyNCkgPj4+IDA7XG4gICAgICAgICAgcHRyWzBdICs9IDQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNodW5rcyA9IFt1OGNvbmNhdChjaHVua3MpXTtcbiAgICAgIGlmIChvZmZzZXQgPT0gMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvZmZzZXQgMFwiKTtcbiAgICAgIGlmIChvZmZzZXQgPiBjaHVua3NbMF0ubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9mZnNldCBiZXlvbmQgbGVuZ3RoXCIpO1xuICAgICAgaWYgKGxlbmd0aCA+PSBvZmZzZXQpIHtcbiAgICAgICAgY2h1bmtzLnB1c2goY2h1bmtzWzBdLnNsaWNlKC1vZmZzZXQpKTtcbiAgICAgICAgbGVuZ3RoIC09IG9mZnNldDtcbiAgICAgICAgd2hpbGUgKGxlbmd0aCA+PSBjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdLmxlbmd0aCkge1xuICAgICAgICAgIGNodW5rcy5wdXNoKGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgIGxlbmd0aCAtPSBjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2h1bmtzLnB1c2goY2h1bmtzWzBdLnNsaWNlKC1vZmZzZXQsIC1vZmZzZXQgKyBsZW5ndGgpKTtcbiAgICB9XG4gIH1cbiAgdmFyIG8gPSB1OGNvbmNhdChjaHVua3MpO1xuICBpZiAoby5sZW5ndGggIT0gdXN6KVxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgbGVuZ3RoOiBcIi5jb25jYXQoby5sZW5ndGgsIFwiICE9IFwiKS5jb25jYXQodXN6KSk7XG4gIHJldHVybiBvO1xufVxuZnVuY3Rpb24gZGVjb21wcmVzc19pd2FfZmlsZShidWYpIHtcbiAgdmFyIG91dCA9IFtdO1xuICB2YXIgbCA9IDA7XG4gIHdoaWxlIChsIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciB0ID0gYnVmW2wrK107XG4gICAgdmFyIGxlbiA9IGJ1ZltsXSB8IGJ1ZltsICsgMV0gPDwgOCB8IGJ1ZltsICsgMl0gPDwgMTY7XG4gICAgbCArPSAzO1xuICAgIG91dC5wdXNoKHBhcnNlX3NuYXBweV9jaHVuayh0LCBidWYuc2xpY2UobCwgbCArIGxlbikpKTtcbiAgICBsICs9IGxlbjtcbiAgfVxuICBpZiAobCAhPT0gYnVmLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIGlzIG5vdCBhIHZhbGlkIGZyYW1lZCBzdHJlYW0hXCIpO1xuICByZXR1cm4gdThjb25jYXQob3V0KTtcbn1cbmZ1bmN0aW9uIGNvbXByZXNzX2l3YV9maWxlKGJ1Zikge1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBsID0gMDtcbiAgd2hpbGUgKGwgPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIGMgPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gbCwgMjY4NDM1NDU1KTtcbiAgICB2YXIgZnJhbWUgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICBvdXQucHVzaChmcmFtZSk7XG4gICAgdmFyIHVzeiA9IHdyaXRlX3ZhcmludDQ5KGMpO1xuICAgIHZhciBMID0gdXN6Lmxlbmd0aDtcbiAgICBvdXQucHVzaCh1c3opO1xuICAgIGlmIChjIDw9IDYwKSB7XG4gICAgICBMKys7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbYyAtIDEgPDwgMl0pKTtcbiAgICB9IGVsc2UgaWYgKGMgPD0gMjU2KSB7XG4gICAgICBMICs9IDI7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbMjQwLCBjIC0gMSAmIDI1NV0pKTtcbiAgICB9IGVsc2UgaWYgKGMgPD0gNjU1MzYpIHtcbiAgICAgIEwgKz0gMztcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNDQsIGMgLSAxICYgMjU1LCBjIC0gMSA+PiA4ICYgMjU1XSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSAxNjc3NzIxNikge1xuICAgICAgTCArPSA0O1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzI0OCwgYyAtIDEgJiAyNTUsIGMgLSAxID4+IDggJiAyNTUsIGMgLSAxID4+IDE2ICYgMjU1XSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSA0Mjk0OTY3Mjk2KSB7XG4gICAgICBMICs9IDU7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbMjUyLCBjIC0gMSAmIDI1NSwgYyAtIDEgPj4gOCAmIDI1NSwgYyAtIDEgPj4gMTYgJiAyNTUsIGMgLSAxID4+PiAyNCAmIDI1NV0pKTtcbiAgICB9XG4gICAgb3V0LnB1c2goYnVmLnNsaWNlKGwsIGwgKyBjKSk7XG4gICAgTCArPSBjO1xuICAgIGZyYW1lWzBdID0gMDtcbiAgICBmcmFtZVsxXSA9IEwgJiAyNTU7XG4gICAgZnJhbWVbMl0gPSBMID4+IDggJiAyNTU7XG4gICAgZnJhbWVbM10gPSBMID4+IDE2ICYgMjU1O1xuICAgIGwgKz0gYztcbiAgfVxuICByZXR1cm4gdThjb25jYXQob3V0KTtcbn1cbmZ1bmN0aW9uIHBhcnNlX29sZF9zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0LCB2KSB7XG4gIHZhciBkdiA9IHU4X3RvX2RhdGF2aWV3KGJ1Zik7XG4gIHZhciBmbGFncyA9IGR2LmdldFVpbnQzMig0LCB0cnVlKTtcbiAgdmFyIGRhdGFfb2Zmc2V0ID0gKHYgPiAxID8gMTIgOiA4KSArIHBvcGNudChmbGFncyAmICh2ID4gMSA/IDM0NzAgOiAzOTgpKSAqIDQ7XG4gIHZhciByaWR4ID0gLTEsIHNpZHggPSAtMSwgaWVlZSA9IE5hTiwgZHQgPSBuZXcgRGF0ZSgyMDAxLCAwLCAxKTtcbiAgaWYgKGZsYWdzICYgNTEyKSB7XG4gICAgcmlkeCA9IGR2LmdldFVpbnQzMihkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gNDtcbiAgfVxuICBkYXRhX29mZnNldCArPSBwb3BjbnQoZmxhZ3MgJiAodiA+IDEgPyAxMjI4OCA6IDQwOTYpKSAqIDQ7XG4gIGlmIChmbGFncyAmIDE2KSB7XG4gICAgc2lkeCA9IGR2LmdldFVpbnQzMihkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gNDtcbiAgfVxuICBpZiAoZmxhZ3MgJiAzMikge1xuICAgIGllZWUgPSBkdi5nZXRGbG9hdDY0KGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA4O1xuICB9XG4gIGlmIChmbGFncyAmIDY0KSB7XG4gICAgZHQuc2V0VGltZShkdC5nZXRUaW1lKCkgKyBkdi5nZXRGbG9hdDY0KGRhdGFfb2Zmc2V0LCB0cnVlKSAqIDFlMyk7XG4gICAgZGF0YV9vZmZzZXQgKz0gODtcbiAgfVxuICB2YXIgcmV0O1xuICBzd2l0Y2ggKGJ1ZlsyXSkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHNzdFtzaWR4XSB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0ID0geyB0OiBcImRcIiwgdjogZHQgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldCA9IHsgdDogXCJiXCIsIHY6IGllZWUgPiAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBpZWVlIC8gODY0MDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHJldCA9IHsgdDogXCJlXCIsIHY6IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgOTpcbiAgICAgIHtcbiAgICAgICAgaWYgKHJpZHggPiAtMSlcbiAgICAgICAgICByZXQgPSB7IHQ6IFwic1wiLCB2OiByc3N0W3JpZHhdIH07XG4gICAgICAgIGVsc2UgaWYgKHNpZHggPiAtMSlcbiAgICAgICAgICByZXQgPSB7IHQ6IFwic1wiLCB2OiBzc3Rbc2lkeF0gfTtcbiAgICAgICAgZWxzZSBpZiAoIWlzTmFOKGllZWUpKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgfTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIi5jb25jYXQoYnVmLnNsaWNlKDAsIDQpKSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gcGFyc2VfbmV3X3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QpIHtcbiAgdmFyIGR2ID0gdThfdG9fZGF0YXZpZXcoYnVmKTtcbiAgdmFyIGZsYWdzID0gZHYuZ2V0VWludDMyKDgsIHRydWUpO1xuICB2YXIgZGF0YV9vZmZzZXQgPSAxMjtcbiAgdmFyIHJpZHggPSAtMSwgc2lkeCA9IC0xLCBkMTI4ID0gTmFOLCBpZWVlID0gTmFOLCBkdCA9IG5ldyBEYXRlKDIwMDEsIDAsIDEpO1xuICBpZiAoZmxhZ3MgJiAxKSB7XG4gICAgZDEyOCA9IHJlYWREZWNpbWFsMTI4TEUoYnVmLCBkYXRhX29mZnNldCk7XG4gICAgZGF0YV9vZmZzZXQgKz0gMTY7XG4gIH1cbiAgaWYgKGZsYWdzICYgMikge1xuICAgIGllZWUgPSBkdi5nZXRGbG9hdDY0KGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA4O1xuICB9XG4gIGlmIChmbGFncyAmIDQpIHtcbiAgICBkdC5zZXRUaW1lKGR0LmdldFRpbWUoKSArIGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpICogMWUzKTtcbiAgICBkYXRhX29mZnNldCArPSA4O1xuICB9XG4gIGlmIChmbGFncyAmIDgpIHtcbiAgICBzaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIGlmIChmbGFncyAmIDE2KSB7XG4gICAgcmlkeCA9IGR2LmdldFVpbnQzMihkYXRhX29mZnNldCwgdHJ1ZSk7XG4gICAgZGF0YV9vZmZzZXQgKz0gNDtcbiAgfVxuICB2YXIgcmV0O1xuICBzd2l0Y2ggKGJ1ZlsxXSkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGQxMjggfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHNzdFtzaWR4XSB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0ID0geyB0OiBcImRcIiwgdjogZHQgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldCA9IHsgdDogXCJiXCIsIHY6IGllZWUgPiAwIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBpZWVlIC8gODY0MDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHJldCA9IHsgdDogXCJlXCIsIHY6IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgOTpcbiAgICAgIHtcbiAgICAgICAgaWYgKHJpZHggPiAtMSlcbiAgICAgICAgICByZXQgPSB7IHQ6IFwic1wiLCB2OiByc3N0W3JpZHhdIH07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1ZlsxXSwgXCIgOiBcIikuY29uY2F0KGZsYWdzICYgMzEsIFwiIDogXCIpLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6XG4gICAgICByZXQgPSB7IHQ6IFwiblwiLCB2OiBkMTI4IH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiLmNvbmNhdChidWZbMV0sIFwiIDogXCIpLmNvbmNhdChmbGFncyAmIDMxLCBcIiA6IFwiKS5jb25jYXQoYnVmLnNsaWNlKDAsIDQpKSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIHdyaXRlX25ld19zdG9yYWdlKGNlbGwsIHNzdCkge1xuICB2YXIgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoMzIpLCBkdiA9IHU4X3RvX2RhdGF2aWV3KG91dCksIGwgPSAxMiwgZmxhZ3MgPSAwO1xuICBvdXRbMF0gPSA1O1xuICBzd2l0Y2ggKGNlbGwudCkge1xuICAgIGNhc2UgXCJuXCI6XG4gICAgICBvdXRbMV0gPSAyO1xuICAgICAgd3JpdGVEZWNpbWFsMTI4TEUob3V0LCBsLCBjZWxsLnYpO1xuICAgICAgZmxhZ3MgfD0gMTtcbiAgICAgIGwgKz0gMTY7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYlwiOlxuICAgICAgb3V0WzFdID0gNjtcbiAgICAgIGR2LnNldEZsb2F0NjQobCwgY2VsbC52ID8gMSA6IDAsIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gMjtcbiAgICAgIGwgKz0gODtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJzXCI6XG4gICAgICBpZiAoc3N0LmluZGV4T2YoY2VsbC52KSA9PSAtMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVmFsdWUgXCIuY29uY2F0KGNlbGwudiwgXCIgbWlzc2luZyBmcm9tIFNTVCFcIikpO1xuICAgICAgb3V0WzFdID0gMztcbiAgICAgIGR2LnNldFVpbnQzMihsLCBzc3QuaW5kZXhPZihjZWxsLnYpLCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDg7XG4gICAgICBsICs9IDQ7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgXCJ1bnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIgKyBjZWxsLnQ7XG4gIH1cbiAgZHYuc2V0VWludDMyKDgsIGZsYWdzLCB0cnVlKTtcbiAgcmV0dXJuIG91dC5zbGljZSgwLCBsKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX29sZF9zdG9yYWdlKGNlbGwsIHNzdCkge1xuICB2YXIgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoMzIpLCBkdiA9IHU4X3RvX2RhdGF2aWV3KG91dCksIGwgPSAxMiwgZmxhZ3MgPSAwO1xuICBvdXRbMF0gPSAzO1xuICBzd2l0Y2ggKGNlbGwudCkge1xuICAgIGNhc2UgXCJuXCI6XG4gICAgICBvdXRbMl0gPSAyO1xuICAgICAgZHYuc2V0RmxvYXQ2NChsLCBjZWxsLnYsIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gMzI7XG4gICAgICBsICs9IDg7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYlwiOlxuICAgICAgb3V0WzJdID0gNjtcbiAgICAgIGR2LnNldEZsb2F0NjQobCwgY2VsbC52ID8gMSA6IDAsIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gMzI7XG4gICAgICBsICs9IDg7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwic1wiOlxuICAgICAgaWYgKHNzdC5pbmRleE9mKGNlbGwudikgPT0gLTEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbHVlIFwiLmNvbmNhdChjZWxsLnYsIFwiIG1pc3NpbmcgZnJvbSBTU1QhXCIpKTtcbiAgICAgIG91dFsyXSA9IDM7XG4gICAgICBkdi5zZXRVaW50MzIobCwgc3N0LmluZGV4T2YoY2VsbC52KSwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAxNjtcbiAgICAgIGwgKz0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBcInVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIiArIGNlbGwudDtcbiAgfVxuICBkdi5zZXRVaW50MzIoNCwgZmxhZ3MsIHRydWUpO1xuICByZXR1cm4gb3V0LnNsaWNlKDAsIGwpO1xufVxuZnVuY3Rpb24gcGFyc2VfY2VsbF9zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0KSB7XG4gIHN3aXRjaCAoYnVmWzBdKSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgMTpcbiAgICBjYXNlIDI6XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlX29sZF9zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0LCBidWZbMF0pO1xuICAgIGNhc2UgNTpcbiAgICAgIHJldHVybiBwYXJzZV9uZXdfc3RvcmFnZShidWYsIHNzdCwgcnNzdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBheWxvYWQgdmVyc2lvbiBcIi5jb25jYXQoYnVmWzBdKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIHBhcnNlX1RTUF9SZWZlcmVuY2UoYnVmKSB7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3coYnVmKTtcbiAgcmV0dXJuIHBhcnNlX3ZhcmludDQ5KHBiWzFdWzBdLmRhdGEpO1xufVxuZnVuY3Rpb24gd3JpdGVfVFNQX1JlZmVyZW5jZShpZHgpIHtcbiAgdmFyIG91dCA9IFtdO1xuICBvdXRbMV0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShpZHgpIH1dO1xuICByZXR1cm4gd3JpdGVfc2hhbGxvdyhvdXQpO1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QoTSwgcm9vdCkge1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciB0eXBlID0gdmFyaW50X3RvX2kzMihwYlsxXVswXS5kYXRhKTtcbiAgdmFyIGVudHJpZXMgPSBwYlszXTtcbiAgdmFyIGRhdGEgPSBbXTtcbiAgKGVudHJpZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHtcbiAgICB2YXIgbGUgPSBwYXJzZV9zaGFsbG93KGVudHJ5LmRhdGEpO1xuICAgIHZhciBrZXkgPSB2YXJpbnRfdG9faTMyKGxlWzFdWzBdLmRhdGEpID4+PiAwO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBkYXRhW2tleV0gPSB1OHN0cihsZVszXVswXS5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDg6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcnQgPSBNW3BhcnNlX1RTUF9SZWZlcmVuY2UobGVbOV1bMF0uZGF0YSldWzBdO1xuICAgICAgICAgIHZhciBydHAgPSBwYXJzZV9zaGFsbG93KHJ0LmRhdGEpO1xuICAgICAgICAgIHZhciBydHByZWYgPSBNW3BhcnNlX1RTUF9SZWZlcmVuY2UocnRwWzFdWzBdLmRhdGEpXVswXTtcbiAgICAgICAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKHJ0cHJlZi5tZXRhWzFdWzBdLmRhdGEpO1xuICAgICAgICAgIGlmIChtdHlwZSAhPSAyMDAxKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiMjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byBcIi5jb25jYXQobXR5cGUpKTtcbiAgICAgICAgICB2YXIgdHN3cHNhID0gcGFyc2Vfc2hhbGxvdyhydHByZWYuZGF0YSk7XG4gICAgICAgICAgZGF0YVtrZXldID0gdHN3cHNhWzNdLm1hcChmdW5jdGlvbih4KSB7XG4gICAgICAgICAgICByZXR1cm4gdThzdHIoeC5kYXRhKTtcbiAgICAgICAgICB9KS5qb2luKFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RpbGVSb3dJbmZvKHU4LCB0eXBlKSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9pLCBfaiwgX2ssIF9sLCBfbSwgX247XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3codTgpO1xuICB2YXIgUiA9IHZhcmludF90b19pMzIocGJbMV1bMF0uZGF0YSkgPj4+IDA7XG4gIHZhciBjbnQgPSB2YXJpbnRfdG9faTMyKHBiWzJdWzBdLmRhdGEpID4+PiAwO1xuICB2YXIgd2lkZV9vZmZzZXRzID0gKChfYiA9IChfYSA9IHBiWzhdKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYi5kYXRhKSAmJiB2YXJpbnRfdG9faTMyKHBiWzhdWzBdLmRhdGEpID4gMCB8fCBmYWxzZTtcbiAgdmFyIHVzZWRfc3RvcmFnZV91OCwgdXNlZF9zdG9yYWdlO1xuICBpZiAoKChfZCA9IChfYyA9IHBiWzddKSA9PSBudWxsID8gdm9pZCAwIDogX2NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfZC5kYXRhKSAmJiB0eXBlICE9IDApIHtcbiAgICB1c2VkX3N0b3JhZ2VfdTggPSAoX2YgPSAoX2UgPSBwYls3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2YuZGF0YTtcbiAgICB1c2VkX3N0b3JhZ2UgPSAoX2ggPSAoX2cgPSBwYls2XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9nWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2guZGF0YTtcbiAgfSBlbHNlIGlmICgoKF9qID0gKF9pID0gcGJbNF0pID09IG51bGwgPyB2b2lkIDAgOiBfaVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9qLmRhdGEpICYmIHR5cGUgIT0gMSkge1xuICAgIHVzZWRfc3RvcmFnZV91OCA9IChfbCA9IChfayA9IHBiWzRdKSA9PSBudWxsID8gdm9pZCAwIDogX2tbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfbC5kYXRhO1xuICAgIHVzZWRfc3RvcmFnZSA9IChfbiA9IChfbSA9IHBiWzNdKSA9PSBudWxsID8gdm9pZCAwIDogX21bMF0pID09IG51bGwgPyB2b2lkIDAgOiBfbi5kYXRhO1xuICB9IGVsc2VcbiAgICB0aHJvdyBcIk5VTUJFUlMgVGlsZSBtaXNzaW5nIFwiLmNvbmNhdCh0eXBlLCBcIiBjZWxsIHN0b3JhZ2VcIik7XG4gIHZhciB3aWR0aCA9IHdpZGVfb2Zmc2V0cyA/IDQgOiAxO1xuICB2YXIgdXNlZF9zdG9yYWdlX29mZnNldHMgPSB1OF90b19kYXRhdmlldyh1c2VkX3N0b3JhZ2VfdTgpO1xuICB2YXIgb2Zmc2V0cyA9IFtdO1xuICBmb3IgKHZhciBDID0gMDsgQyA8IHVzZWRfc3RvcmFnZV91OC5sZW5ndGggLyAyOyArK0MpIHtcbiAgICB2YXIgb2ZmID0gdXNlZF9zdG9yYWdlX29mZnNldHMuZ2V0VWludDE2KEMgKiAyLCB0cnVlKTtcbiAgICBpZiAob2ZmIDwgNjU1MzUpXG4gICAgICBvZmZzZXRzLnB1c2goW0MsIG9mZl0pO1xuICB9XG4gIGlmIChvZmZzZXRzLmxlbmd0aCAhPSBjbnQpXG4gICAgdGhyb3cgXCJFeHBlY3RlZCBcIi5jb25jYXQoY250LCBcIiBjZWxscywgZm91bmQgXCIpLmNvbmNhdChvZmZzZXRzLmxlbmd0aCk7XG4gIHZhciBjZWxscyA9IFtdO1xuICBmb3IgKEMgPSAwOyBDIDwgb2Zmc2V0cy5sZW5ndGggLSAxOyArK0MpXG4gICAgY2VsbHNbb2Zmc2V0c1tDXVswXV0gPSB1c2VkX3N0b3JhZ2Uuc3ViYXJyYXkob2Zmc2V0c1tDXVsxXSAqIHdpZHRoLCBvZmZzZXRzW0MgKyAxXVsxXSAqIHdpZHRoKTtcbiAgaWYgKG9mZnNldHMubGVuZ3RoID49IDEpXG4gICAgY2VsbHNbb2Zmc2V0c1tvZmZzZXRzLmxlbmd0aCAtIDFdWzBdXSA9IHVzZWRfc3RvcmFnZS5zdWJhcnJheShvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV1bMV0gKiB3aWR0aCk7XG4gIHJldHVybiB7IFI6IFIsIGNlbGxzOiBjZWxscyB9O1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RpbGUoTSwgcm9vdCkge1xuICB2YXIgX2E7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIHN0b3JhZ2UgPSAoKF9hID0gcGIgPT0gbnVsbCA/IHZvaWQgMCA6IHBiWzddKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID8gdmFyaW50X3RvX2kzMihwYls3XVswXS5kYXRhKSA+Pj4gMCA+IDAgPyAxIDogMCA6IC0xO1xuICB2YXIgcmkgPSBtYXBwYShwYls1XSwgZnVuY3Rpb24odTgpIHtcbiAgICByZXR1cm4gcGFyc2VfVFNUX1RpbGVSb3dJbmZvKHU4LCBzdG9yYWdlKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgbnJvd3M6IHZhcmludF90b19pMzIocGJbNF1bMF0uZGF0YSkgPj4+IDAsXG4gICAgZGF0YTogcmkucmVkdWNlKGZ1bmN0aW9uKGFjYywgeCkge1xuICAgICAgaWYgKCFhY2NbeC5SXSlcbiAgICAgICAgYWNjW3guUl0gPSBbXTtcbiAgICAgIHguY2VsbHMuZm9yRWFjaChmdW5jdGlvbihjZWxsLCBDKSB7XG4gICAgICAgIGlmIChhY2NbeC5SXVtDXSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEdXBsaWNhdGUgY2VsbCByPVwiLmNvbmNhdCh4LlIsIFwiIGM9XCIpLmNvbmNhdChDKSk7XG4gICAgICAgIGFjY1t4LlJdW0NdID0gY2VsbDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1RTVF9UYWJsZU1vZGVsQXJjaGl2ZShNLCByb290LCB3cykge1xuICB2YXIgX2E7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIHJhbmdlID0geyBzOiB7IHI6IDAsIGM6IDAgfSwgZTogeyByOiAwLCBjOiAwIH0gfTtcbiAgcmFuZ2UuZS5yID0gKHZhcmludF90b19pMzIocGJbNl1bMF0uZGF0YSkgPj4+IDApIC0gMTtcbiAgaWYgKHJhbmdlLmUuciA8IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByb3cgdmFyaW50IFwiLmNvbmNhdChwYls2XVswXS5kYXRhKSk7XG4gIHJhbmdlLmUuYyA9ICh2YXJpbnRfdG9faTMyKHBiWzddWzBdLmRhdGEpID4+PiAwKSAtIDE7XG4gIGlmIChyYW5nZS5lLmMgPCAwKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY29sIHZhcmludCBcIi5jb25jYXQocGJbN11bMF0uZGF0YSkpO1xuICB3c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICB2YXIgc3RvcmUgPSBwYXJzZV9zaGFsbG93KHBiWzRdWzBdLmRhdGEpO1xuICB2YXIgc3N0ID0gcGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QoTSwgTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHN0b3JlWzRdWzBdLmRhdGEpXVswXSk7XG4gIHZhciByc3N0ID0gKChfYSA9IHN0b3JlWzE3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA/IHBhcnNlX1RTVF9UYWJsZURhdGFMaXN0KE0sIE1bcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVsxN11bMF0uZGF0YSldWzBdKSA6IFtdO1xuICB2YXIgdGlsZSA9IHBhcnNlX3NoYWxsb3coc3RvcmVbM11bMF0uZGF0YSk7XG4gIHZhciBfUiA9IDA7XG4gIHRpbGVbMV0uZm9yRWFjaChmdW5jdGlvbih0KSB7XG4gICAgdmFyIHRsID0gcGFyc2Vfc2hhbGxvdyh0LmRhdGEpO1xuICAgIHZhciByZWYgPSBNW3BhcnNlX1RTUF9SZWZlcmVuY2UodGxbMl1bMF0uZGF0YSldWzBdO1xuICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIocmVmLm1ldGFbMV1bMF0uZGF0YSk7XG4gICAgaWYgKG10eXBlICE9IDYwMDIpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCI2MDAxIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvIFwiLmNvbmNhdChtdHlwZSkpO1xuICAgIHZhciBfdGlsZSA9IHBhcnNlX1RTVF9UaWxlKE0sIHJlZik7XG4gICAgX3RpbGUuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHJvdywgUikge1xuICAgICAgcm93LmZvckVhY2goZnVuY3Rpb24oYnVmLCBDKSB7XG4gICAgICAgIHZhciBhZGRyID0gZW5jb2RlX2NlbGwoeyByOiBfUiArIFIsIGM6IEMgfSk7XG4gICAgICAgIHZhciByZXMgPSBwYXJzZV9jZWxsX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QpO1xuICAgICAgICBpZiAocmVzKVxuICAgICAgICAgIHdzW2FkZHJdID0gcmVzO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgX1IgKz0gX3RpbGUubnJvd3M7XG4gIH0pO1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RhYmxlSW5mb0FyY2hpdmUoTSwgcm9vdCkge1xuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KHJvb3QuZGF0YSk7XG4gIHZhciBvdXQgPSB7IFwiIXJlZlwiOiBcIkExXCIgfTtcbiAgdmFyIHRhYmxlcmVmID0gTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHBiWzJdWzBdLmRhdGEpXTtcbiAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMih0YWJsZXJlZlswXS5tZXRhWzFdWzBdLmRhdGEpO1xuICBpZiAobXR5cGUgIT0gNjAwMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCI2MDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvIFwiLmNvbmNhdChtdHlwZSkpO1xuICBwYXJzZV9UU1RfVGFibGVNb2RlbEFyY2hpdmUoTSwgdGFibGVyZWZbMF0sIG91dCk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9UTl9TaGVldEFyY2hpdmUoTSwgcm9vdCkge1xuICB2YXIgX2E7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIG91dCA9IHtcbiAgICBuYW1lOiAoKF9hID0gcGJbMV0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPyB1OHN0cihwYlsxXVswXS5kYXRhKSA6IFwiXCIsXG4gICAgc2hlZXRzOiBbXVxuICB9O1xuICB2YXIgc2hhcGVvZmZzID0gbWFwcGEocGJbMl0sIHBhcnNlX1RTUF9SZWZlcmVuY2UpO1xuICBzaGFwZW9mZnMuZm9yRWFjaChmdW5jdGlvbihvZmYpIHtcbiAgICBNW29mZl0uZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKG0ubWV0YVsxXVswXS5kYXRhKTtcbiAgICAgIGlmIChtdHlwZSA9PSA2ZTMpXG4gICAgICAgIG91dC5zaGVldHMucHVzaChwYXJzZV9UU1RfVGFibGVJbmZvQXJjaGl2ZShNLCBtKSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gcGFyc2VfVE5fRG9jdW1lbnRBcmNoaXZlKE0sIHJvb3QpIHtcbiAgdmFyIG91dCA9IGJvb2tfbmV3KCk7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIHNoZWV0b2ZmcyA9IG1hcHBhKHBiWzFdLCBwYXJzZV9UU1BfUmVmZXJlbmNlKTtcbiAgc2hlZXRvZmZzLmZvckVhY2goZnVuY3Rpb24ob2ZmKSB7XG4gICAgTVtvZmZdLmZvckVhY2goZnVuY3Rpb24obSkge1xuICAgICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihtLm1ldGFbMV1bMF0uZGF0YSk7XG4gICAgICBpZiAobXR5cGUgPT0gMikge1xuICAgICAgICB2YXIgcm9vdDIgPSBwYXJzZV9UTl9TaGVldEFyY2hpdmUoTSwgbSk7XG4gICAgICAgIHJvb3QyLnNoZWV0cy5mb3JFYWNoKGZ1bmN0aW9uKHNoZWV0LCBpZHgpIHtcbiAgICAgICAgICBib29rX2FwcGVuZF9zaGVldChvdXQsIHNoZWV0LCBpZHggPT0gMCA/IHJvb3QyLm5hbWUgOiByb290Mi5uYW1lICsgXCJfXCIgKyBpZHgsIHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGlmIChvdXQuU2hlZXROYW1lcy5sZW5ndGggPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbXB0eSBOVU1CRVJTIGZpbGVcIik7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9udW1iZXJzX2l3YShjZmIpIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICB2YXIgTSA9IHt9LCBpbmRpY2VzID0gW107XG4gIGNmYi5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwKSB7XG4gICAgaWYgKHAubWF0Y2goL1xcLml3cHYyLykpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBwYXNzd29yZCBwcm90ZWN0aW9uXCIpO1xuICB9KTtcbiAgY2ZiLkZpbGVJbmRleC5mb3JFYWNoKGZ1bmN0aW9uKHMpIHtcbiAgICBpZiAoIXMubmFtZS5tYXRjaCgvXFwuaXdhJC8pKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBvO1xuICAgIHRyeSB7XG4gICAgICBvID0gZGVjb21wcmVzc19pd2FfZmlsZShzLmNvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIj8/IFwiICsgcy5jb250ZW50Lmxlbmd0aCArIFwiIFwiICsgKGUubWVzc2FnZSB8fCBlKSk7XG4gICAgfVxuICAgIHZhciBwYWNrZXRzO1xuICAgIHRyeSB7XG4gICAgICBwYWNrZXRzID0gcGFyc2VfaXdhX2ZpbGUobyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKFwiIyMgXCIgKyAoZS5tZXNzYWdlIHx8IGUpKTtcbiAgICB9XG4gICAgcGFja2V0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhY2tldCkge1xuICAgICAgTVtwYWNrZXQuaWRdID0gcGFja2V0Lm1lc3NhZ2VzO1xuICAgICAgaW5kaWNlcy5wdXNoKHBhY2tldC5pZCk7XG4gICAgfSk7XG4gIH0pO1xuICBpZiAoIWluZGljZXMubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaGFzIG5vIG1lc3NhZ2VzXCIpO1xuICB2YXIgZG9jcm9vdCA9ICgoX2QgPSAoX2MgPSAoX2IgPSAoX2EgPSBNID09IG51bGwgPyB2b2lkIDAgOiBNWzFdKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYi5tZXRhKSA9PSBudWxsID8gdm9pZCAwIDogX2NbMV0pID09IG51bGwgPyB2b2lkIDAgOiBfZFswXS5kYXRhKSAmJiB2YXJpbnRfdG9faTMyKE1bMV1bMF0ubWV0YVsxXVswXS5kYXRhKSA9PSAxICYmIE1bMV1bMF07XG4gIGlmICghZG9jcm9vdClcbiAgICBpbmRpY2VzLmZvckVhY2goZnVuY3Rpb24oaWR4KSB7XG4gICAgICBNW2lkeF0uZm9yRWFjaChmdW5jdGlvbihpd2FtKSB7XG4gICAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIoaXdhbS5tZXRhWzFdWzBdLmRhdGEpID4+PiAwO1xuICAgICAgICBpZiAobXR5cGUgPT0gMSkge1xuICAgICAgICAgIGlmICghZG9jcm9vdClcbiAgICAgICAgICAgIGRvY3Jvb3QgPSBpd2FtO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRvY3VtZW50IGhhcyBtdWx0aXBsZSByb290c1wiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIGlmICghZG9jcm9vdClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBEb2N1bWVudCByb290XCIpO1xuICByZXR1cm4gcGFyc2VfVE5fRG9jdW1lbnRBcmNoaXZlKE0sIGRvY3Jvb3QpO1xufVxuZnVuY3Rpb24gd3JpdGVfdGlsZV9yb3codHJpLCBkYXRhLCBTU1QpIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICBpZiAoISgoX2EgPSB0cmlbNl0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgfHwgISgoX2IgPSB0cmlbN10pID09IG51bGwgPyB2b2lkIDAgOiBfYlswXSkpXG4gICAgdGhyb3cgXCJNdXRhdGlvbiBvbmx5IHdvcmtzIG9uIHBvc3QtQk5DIHN0b3JhZ2VzIVwiO1xuICB2YXIgd2lkZV9vZmZzZXRzID0gKChfZCA9IChfYyA9IHRyaVs4XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2QuZGF0YSkgJiYgdmFyaW50X3RvX2kzMih0cmlbOF1bMF0uZGF0YSkgPiAwIHx8IGZhbHNlO1xuICBpZiAod2lkZV9vZmZzZXRzKVxuICAgIHRocm93IFwiTWF0aCBvbmx5IHdvcmtzIHdpdGggbm9ybWFsIG9mZnNldHNcIjtcbiAgdmFyIGNudCA9IDA7XG4gIHZhciBkdiA9IHU4X3RvX2RhdGF2aWV3KHRyaVs3XVswXS5kYXRhKSwgbGFzdF9vZmZzZXQgPSAwLCBjZWxsX3N0b3JhZ2UgPSBbXTtcbiAgdmFyIF9kdiA9IHU4X3RvX2RhdGF2aWV3KHRyaVs0XVswXS5kYXRhKSwgX2xhc3Rfb2Zmc2V0ID0gMCwgX2NlbGxfc3RvcmFnZSA9IFtdO1xuICBmb3IgKHZhciBDID0gMDsgQyA8IGRhdGEubGVuZ3RoOyArK0MpIHtcbiAgICBpZiAoZGF0YVtDXSA9PSBudWxsKSB7XG4gICAgICBkdi5zZXRVaW50MTYoQyAqIDIsIDY1NTM1LCB0cnVlKTtcbiAgICAgIF9kdi5zZXRVaW50MTYoQyAqIDIsIDY1NTM1KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBkdi5zZXRVaW50MTYoQyAqIDIsIGxhc3Rfb2Zmc2V0LCB0cnVlKTtcbiAgICBfZHYuc2V0VWludDE2KEMgKiAyLCBfbGFzdF9vZmZzZXQsIHRydWUpO1xuICAgIHZhciBjZWxsb2FkLCBfY2VsbG9hZDtcbiAgICBzd2l0Y2ggKHR5cGVvZiBkYXRhW0NdKSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGNlbGxvYWQgPSB3cml0ZV9uZXdfc3RvcmFnZSh7IHQ6IFwic1wiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIF9jZWxsb2FkID0gd3JpdGVfb2xkX3N0b3JhZ2UoeyB0OiBcInNcIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgY2VsbG9hZCA9IHdyaXRlX25ld19zdG9yYWdlKHsgdDogXCJuXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgX2NlbGxvYWQgPSB3cml0ZV9vbGRfc3RvcmFnZSh7IHQ6IFwiblwiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgY2VsbG9hZCA9IHdyaXRlX25ld19zdG9yYWdlKHsgdDogXCJiXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgX2NlbGxvYWQgPSB3cml0ZV9vbGRfc3RvcmFnZSh7IHQ6IFwiYlwiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgdmFsdWUgXCIgKyBkYXRhW0NdKTtcbiAgICB9XG4gICAgY2VsbF9zdG9yYWdlLnB1c2goY2VsbG9hZCk7XG4gICAgbGFzdF9vZmZzZXQgKz0gY2VsbG9hZC5sZW5ndGg7XG4gICAgX2NlbGxfc3RvcmFnZS5wdXNoKF9jZWxsb2FkKTtcbiAgICBfbGFzdF9vZmZzZXQgKz0gX2NlbGxvYWQubGVuZ3RoO1xuICAgICsrY250O1xuICB9XG4gIHRyaVsyXVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkoY250KTtcbiAgZm9yICg7IEMgPCB0cmlbN11bMF0uZGF0YS5sZW5ndGggLyAyOyArK0MpIHtcbiAgICBkdi5zZXRVaW50MTYoQyAqIDIsIDY1NTM1LCB0cnVlKTtcbiAgICBfZHYuc2V0VWludDE2KEMgKiAyLCA2NTUzNSwgdHJ1ZSk7XG4gIH1cbiAgdHJpWzZdWzBdLmRhdGEgPSB1OGNvbmNhdChjZWxsX3N0b3JhZ2UpO1xuICB0cmlbM11bMF0uZGF0YSA9IHU4Y29uY2F0KF9jZWxsX3N0b3JhZ2UpO1xuICByZXR1cm4gY250O1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtYmVyc19pd2Eod2IsIG9wdHMpIHtcbiAgaWYgKCFvcHRzIHx8ICFvcHRzLm51bWJlcnMpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTXVzdCBwYXNzIGEgYG51bWJlcnNgIG9wdGlvbiAtLSBjaGVjayB0aGUgUkVBRE1FXCIpO1xuICB2YXIgd3MgPSB3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1swXV07XG4gIGlmICh3Yi5TaGVldE5hbWVzLmxlbmd0aCA+IDEpXG4gICAgY29uc29sZS5lcnJvcihcIlRoZSBOdW1iZXJzIHdyaXRlciBjdXJyZW50bHkgd3JpdGVzIG9ubHkgdGhlIGZpcnN0IHRhYmxlXCIpO1xuICB2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcbiAgcmFuZ2Uucy5yID0gcmFuZ2Uucy5jID0gMDtcbiAgdmFyIHRydW5jID0gZmFsc2U7XG4gIGlmIChyYW5nZS5lLmMgPiA5KSB7XG4gICAgdHJ1bmMgPSB0cnVlO1xuICAgIHJhbmdlLmUuYyA9IDk7XG4gIH1cbiAgaWYgKHJhbmdlLmUuciA+IDQ5KSB7XG4gICAgdHJ1bmMgPSB0cnVlO1xuICAgIHJhbmdlLmUuciA9IDQ5O1xuICB9XG4gIGlmICh0cnVuYylcbiAgICBjb25zb2xlLmVycm9yKFwiVGhlIE51bWJlcnMgd3JpdGVyIGlzIGN1cnJlbnRseSBsaW1pdGVkIHRvIFwiLmNvbmNhdChlbmNvZGVfcmFuZ2UocmFuZ2UpKSk7XG4gIHZhciBkYXRhID0gc2hlZXRfdG9fanNvbih3cywgeyByYW5nZTogcmFuZ2UsIGhlYWRlcjogMSB9KTtcbiAgdmFyIFNTVCA9IFtcIn5TaDMzdEo1flwiXTtcbiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHJvdykge1xuICAgIHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbihjZWxsKSB7XG4gICAgICBpZiAodHlwZW9mIGNlbGwgPT0gXCJzdHJpbmdcIilcbiAgICAgICAgU1NULnB1c2goY2VsbCk7XG4gICAgfSk7XG4gIH0pO1xuICB2YXIgZGVwZW5kZW50cyA9IHt9O1xuICB2YXIgaW5kaWNlcyA9IFtdO1xuICB2YXIgY2ZiID0gQ0ZCLnJlYWQob3B0cy5udW1iZXJzLCB7IHR5cGU6IFwiYmFzZTY0XCIgfSk7XG4gIGNmYi5GaWxlSW5kZXgubWFwKGZ1bmN0aW9uKGZpLCBpZHgpIHtcbiAgICByZXR1cm4gW2ZpLCBjZmIuRnVsbFBhdGhzW2lkeF1dO1xuICB9KS5mb3JFYWNoKGZ1bmN0aW9uKHJvdykge1xuICAgIHZhciBmaSA9IHJvd1swXSwgZnAgPSByb3dbMV07XG4gICAgaWYgKGZpLnR5cGUgIT0gMilcbiAgICAgIHJldHVybjtcbiAgICBpZiAoIWZpLm5hbWUubWF0Y2goL1xcLml3YS8pKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBvbGRfY29udGVudCA9IGZpLmNvbnRlbnQ7XG4gICAgdmFyIHJhdzEgPSBkZWNvbXByZXNzX2l3YV9maWxlKG9sZF9jb250ZW50KTtcbiAgICB2YXIgeDIgPSBwYXJzZV9pd2FfZmlsZShyYXcxKTtcbiAgICB4Mi5mb3JFYWNoKGZ1bmN0aW9uKHBhY2tldDIpIHtcbiAgICAgIGluZGljZXMucHVzaChwYWNrZXQyLmlkKTtcbiAgICAgIGRlcGVuZGVudHNbcGFja2V0Mi5pZF0gPSB7IGRlcHM6IFtdLCBsb2NhdGlvbjogZnAsIHR5cGU6IHZhcmludF90b19pMzIocGFja2V0Mi5tZXNzYWdlc1swXS5tZXRhWzFdWzBdLmRhdGEpIH07XG4gICAgfSk7XG4gIH0pO1xuICBpbmRpY2VzLnNvcnQoZnVuY3Rpb24oeDIsIHkyKSB7XG4gICAgcmV0dXJuIHgyIC0geTI7XG4gIH0pO1xuICB2YXIgaW5kaWNlc192YXJpbnQgPSBpbmRpY2VzLmZpbHRlcihmdW5jdGlvbih4Mikge1xuICAgIHJldHVybiB4MiA+IDE7XG4gIH0pLm1hcChmdW5jdGlvbih4Mikge1xuICAgIHJldHVybiBbeDIsIHdyaXRlX3ZhcmludDQ5KHgyKV07XG4gIH0pO1xuICBjZmIuRmlsZUluZGV4Lm1hcChmdW5jdGlvbihmaSwgaWR4KSB7XG4gICAgcmV0dXJuIFtmaSwgY2ZiLkZ1bGxQYXRoc1tpZHhdXTtcbiAgfSkuZm9yRWFjaChmdW5jdGlvbihyb3cpIHtcbiAgICB2YXIgZmkgPSByb3dbMF0sIGZwID0gcm93WzFdO1xuICAgIGlmICghZmkubmFtZS5tYXRjaCgvXFwuaXdhLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIHgyID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShmaS5jb250ZW50KSk7XG4gICAgeDIuZm9yRWFjaChmdW5jdGlvbihpYSkge1xuICAgICAgaWEubWVzc2FnZXMuZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICAgIGluZGljZXNfdmFyaW50LmZvckVhY2goZnVuY3Rpb24oaXZpKSB7XG4gICAgICAgICAgaWYgKGlhLm1lc3NhZ2VzLnNvbWUoZnVuY3Rpb24obWVzcykge1xuICAgICAgICAgICAgcmV0dXJuIHZhcmludF90b19pMzIobWVzcy5tZXRhWzFdWzBdLmRhdGEpICE9IDExMDA2ICYmIHU4Y29udGFpbnMobWVzcy5kYXRhLCBpdmlbMV0pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBkZXBlbmRlbnRzW2l2aVswXV0uZGVwcy5wdXNoKGlhLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBmdW5jdGlvbiBnZXRfdW5pcXVlX21zZ2lkKCkge1xuICAgIGZvciAodmFyIGkgPSA5MjcyNjI7IGkgPCAyZTY7ICsraSlcbiAgICAgIGlmICghZGVwZW5kZW50c1tpXSlcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgbWVzc2FnZXNcIik7XG4gIH1cbiAgdmFyIGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzWzFdLmxvY2F0aW9uKTtcbiAgdmFyIHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGVudHJ5LmNvbnRlbnQpKTtcbiAgdmFyIGRvY3Jvb3Q7XG4gIGZvciAodmFyIHhpID0gMDsgeGkgPCB4Lmxlbmd0aDsgKyt4aSkge1xuICAgIHZhciBwYWNrZXQgPSB4W3hpXTtcbiAgICBpZiAocGFja2V0LmlkID09IDEpXG4gICAgICBkb2Nyb290ID0gcGFja2V0O1xuICB9XG4gIHZhciBzaGVldHJvb3RyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKVsxXVswXS5kYXRhKTtcbiAgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbc2hlZXRyb290cmVmXS5sb2NhdGlvbik7XG4gIHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGVudHJ5LmNvbnRlbnQpKTtcbiAgZm9yICh4aSA9IDA7IHhpIDwgeC5sZW5ndGg7ICsreGkpIHtcbiAgICBwYWNrZXQgPSB4W3hpXTtcbiAgICBpZiAocGFja2V0LmlkID09IHNoZWV0cm9vdHJlZilcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgc2hlZXRyb290cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShwYXJzZV9zaGFsbG93KGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSlbMl1bMF0uZGF0YSk7XG4gIGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3NoZWV0cm9vdHJlZl0ubG9jYXRpb24pO1xuICB4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShlbnRyeS5jb250ZW50KSk7XG4gIGZvciAoeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgcGFja2V0ID0geFt4aV07XG4gICAgaWYgKHBhY2tldC5pZCA9PSBzaGVldHJvb3RyZWYpXG4gICAgICBkb2Nyb290ID0gcGFja2V0O1xuICB9XG4gIHNoZWV0cm9vdHJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGFyc2Vfc2hhbGxvdyhkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEpWzJdWzBdLmRhdGEpO1xuICBlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzaGVldHJvb3RyZWZdLmxvY2F0aW9uKTtcbiAgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICBmb3IgKHhpID0gMDsgeGkgPCB4Lmxlbmd0aDsgKyt4aSkge1xuICAgIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gc2hlZXRyb290cmVmKVxuICAgICAgZG9jcm9vdCA9IHBhY2tldDtcbiAgfVxuICB2YXIgcGIgPSBwYXJzZV9zaGFsbG93KGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSk7XG4gIHtcbiAgICBwYls2XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSk7XG4gICAgcGJbN11bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuYyArIDEpO1xuICAgIHZhciBjcnVpZHNyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHBiWzQ2XVswXS5kYXRhKTtcbiAgICB2YXIgb2xkYnVja2V0ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW2NydWlkc3JlZl0ubG9jYXRpb24pO1xuICAgIHZhciBfeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUob2xkYnVja2V0LmNvbnRlbnQpKTtcbiAgICB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF94Lmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGlmIChfeFtqXS5pZCA9PSBjcnVpZHNyZWYpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoX3hbal0uaWQgIT0gY3J1aWRzcmVmKVxuICAgICAgICB0aHJvdyBcIkJhZCBDb2x1bW5Sb3dVSURNYXBBcmNoaXZlXCI7XG4gICAgICB2YXIgY3J1aWRzID0gcGFyc2Vfc2hhbGxvdyhfeFtqXS5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgIGNydWlkc1sxXSA9IFtdO1xuICAgICAgY3J1aWRzWzJdID0gW10sIGNydWlkc1szXSA9IFtdO1xuICAgICAgZm9yICh2YXIgQyA9IDA7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcbiAgICAgICAgdmFyIHV1aWQgPSBbXTtcbiAgICAgICAgdXVpZFsxXSA9IHV1aWRbMl0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShDICsgNDIwNjkwKSB9XTtcbiAgICAgICAgY3J1aWRzWzFdLnB1c2goeyB0eXBlOiAyLCBkYXRhOiB3cml0ZV9zaGFsbG93KHV1aWQpIH0pO1xuICAgICAgICBjcnVpZHNbMl0ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KEMpIH0pO1xuICAgICAgICBjcnVpZHNbM10ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KEMpIH0pO1xuICAgICAgfVxuICAgICAgY3J1aWRzWzRdID0gW107XG4gICAgICBjcnVpZHNbNV0gPSBbXSwgY3J1aWRzWzZdID0gW107XG4gICAgICBmb3IgKHZhciBSID0gMDsgUiA8PSByYW5nZS5lLnI7ICsrUikge1xuICAgICAgICB1dWlkID0gW107XG4gICAgICAgIHV1aWRbMV0gPSB1dWlkWzJdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoUiArIDcyNjI3MCkgfV07XG4gICAgICAgIGNydWlkc1s0XS5wdXNoKHsgdHlwZTogMiwgZGF0YTogd3JpdGVfc2hhbGxvdyh1dWlkKSB9KTtcbiAgICAgICAgY3J1aWRzWzVdLnB1c2goeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShSKSB9KTtcbiAgICAgICAgY3J1aWRzWzZdLnB1c2goeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShSKSB9KTtcbiAgICAgIH1cbiAgICAgIF94W2pdLm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KGNydWlkcyk7XG4gICAgfVxuICAgIG9sZGJ1Y2tldC5jb250ZW50ID0gY29tcHJlc3NfaXdhX2ZpbGUod3JpdGVfaXdhX2ZpbGUoX3gpKTtcbiAgICBvbGRidWNrZXQuc2l6ZSA9IG9sZGJ1Y2tldC5jb250ZW50Lmxlbmd0aDtcbiAgICBkZWxldGUgcGJbNDZdO1xuICAgIHZhciBzdG9yZSA9IHBhcnNlX3NoYWxsb3cocGJbNF1bMF0uZGF0YSk7XG4gICAge1xuICAgICAgc3RvcmVbN11bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpO1xuICAgICAgdmFyIHJvd19oZWFkZXJzID0gcGFyc2Vfc2hhbGxvdyhzdG9yZVsxXVswXS5kYXRhKTtcbiAgICAgIHZhciByb3dfaGVhZGVyX3JlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2Uocm93X2hlYWRlcnNbMl1bMF0uZGF0YSk7XG4gICAgICBvbGRidWNrZXQgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbcm93X2hlYWRlcl9yZWZdLmxvY2F0aW9uKTtcbiAgICAgIF94ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShvbGRidWNrZXQuY29udGVudCkpO1xuICAgICAge1xuICAgICAgICBpZiAoX3hbMF0uaWQgIT0gcm93X2hlYWRlcl9yZWYpXG4gICAgICAgICAgdGhyb3cgXCJCYWQgSGVhZGVyU3RvcmFnZUJ1Y2tldFwiO1xuICAgICAgICB2YXIgYmFzZV9idWNrZXQgPSBwYXJzZV9zaGFsbG93KF94WzBdLm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgICBmb3IgKFIgPSAwOyBSIDwgZGF0YS5sZW5ndGg7ICsrUikge1xuICAgICAgICAgIHZhciBfYnVja2V0ID0gcGFyc2Vfc2hhbGxvdyhiYXNlX2J1Y2tldFsyXVswXS5kYXRhKTtcbiAgICAgICAgICBfYnVja2V0WzFdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShSKTtcbiAgICAgICAgICBfYnVja2V0WzRdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShkYXRhW1JdLmxlbmd0aCk7XG4gICAgICAgICAgYmFzZV9idWNrZXRbMl1bUl0gPSB7IHR5cGU6IGJhc2VfYnVja2V0WzJdWzBdLnR5cGUsIGRhdGE6IHdyaXRlX3NoYWxsb3coX2J1Y2tldCkgfTtcbiAgICAgICAgfVxuICAgICAgICBfeFswXS5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhiYXNlX2J1Y2tldCk7XG4gICAgICB9XG4gICAgICBvbGRidWNrZXQuY29udGVudCA9IGNvbXByZXNzX2l3YV9maWxlKHdyaXRlX2l3YV9maWxlKF94KSk7XG4gICAgICBvbGRidWNrZXQuc2l6ZSA9IG9sZGJ1Y2tldC5jb250ZW50Lmxlbmd0aDtcbiAgICAgIHZhciBjb2xfaGVhZGVyX3JlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2Uoc3RvcmVbMl1bMF0uZGF0YSk7XG4gICAgICBvbGRidWNrZXQgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbY29sX2hlYWRlcl9yZWZdLmxvY2F0aW9uKTtcbiAgICAgIF94ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShvbGRidWNrZXQuY29udGVudCkpO1xuICAgICAge1xuICAgICAgICBpZiAoX3hbMF0uaWQgIT0gY29sX2hlYWRlcl9yZWYpXG4gICAgICAgICAgdGhyb3cgXCJCYWQgSGVhZGVyU3RvcmFnZUJ1Y2tldFwiO1xuICAgICAgICBiYXNlX2J1Y2tldCA9IHBhcnNlX3NoYWxsb3coX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICAgIGZvciAoQyA9IDA7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcbiAgICAgICAgICBfYnVja2V0ID0gcGFyc2Vfc2hhbGxvdyhiYXNlX2J1Y2tldFsyXVswXS5kYXRhKTtcbiAgICAgICAgICBfYnVja2V0WzFdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShDKTtcbiAgICAgICAgICBfYnVja2V0WzRdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKTtcbiAgICAgICAgICBiYXNlX2J1Y2tldFsyXVtDXSA9IHsgdHlwZTogYmFzZV9idWNrZXRbMl1bMF0udHlwZSwgZGF0YTogd3JpdGVfc2hhbGxvdyhfYnVja2V0KSB9O1xuICAgICAgICB9XG4gICAgICAgIF94WzBdLm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KGJhc2VfYnVja2V0KTtcbiAgICAgIH1cbiAgICAgIG9sZGJ1Y2tldC5jb250ZW50ID0gY29tcHJlc3NfaXdhX2ZpbGUod3JpdGVfaXdhX2ZpbGUoX3gpKTtcbiAgICAgIG9sZGJ1Y2tldC5zaXplID0gb2xkYnVja2V0LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgdmFyIHNzdHJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2Uoc3RvcmVbNF1bMF0uZGF0YSk7XG4gICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbc3N0cmVmXS5sb2NhdGlvbik7XG4gICAgICAgIHZhciBzeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoc2VudHJ5LmNvbnRlbnQpKTtcbiAgICAgICAgdmFyIHNzdHJvb3Q7XG4gICAgICAgIGZvciAodmFyIHN4aSA9IDA7IHN4aSA8IHN4Lmxlbmd0aDsgKytzeGkpIHtcbiAgICAgICAgICB2YXIgcGFja2V0MiA9IHN4W3N4aV07XG4gICAgICAgICAgaWYgKHBhY2tldDIuaWQgPT0gc3N0cmVmKVxuICAgICAgICAgICAgc3N0cm9vdCA9IHBhY2tldDI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNzdGRhdGEgPSBwYXJzZV9zaGFsbG93KHNzdHJvb3QubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICAgIHtcbiAgICAgICAgICBzc3RkYXRhWzNdID0gW107XG4gICAgICAgICAgdmFyIG5ld3NzdCA9IFtdO1xuICAgICAgICAgIFNTVC5mb3JFYWNoKGZ1bmN0aW9uKHN0ciwgaSkge1xuICAgICAgICAgICAgbmV3c3N0WzFdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoaSkgfV07XG4gICAgICAgICAgICBuZXdzc3RbMl0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OSgxKSB9XTtcbiAgICAgICAgICAgIG5ld3NzdFszXSA9IFt7IHR5cGU6IDIsIGRhdGE6IHN0cnU4KHN0cikgfV07XG4gICAgICAgICAgICBzc3RkYXRhWzNdLnB1c2goeyB0eXBlOiAyLCBkYXRhOiB3cml0ZV9zaGFsbG93KG5ld3NzdCkgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3N0cm9vdC5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhzc3RkYXRhKTtcbiAgICAgICAgdmFyIHN5ID0gd3JpdGVfaXdhX2ZpbGUoc3gpO1xuICAgICAgICB2YXIgcmF3MzIgPSBjb21wcmVzc19pd2FfZmlsZShzeSk7XG4gICAgICAgIHNlbnRyeS5jb250ZW50ID0gcmF3MzI7XG4gICAgICAgIHNlbnRyeS5zaXplID0gc2VudHJ5LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgfSkoKTtcbiAgICAgIHZhciB0aWxlID0gcGFyc2Vfc2hhbGxvdyhzdG9yZVszXVswXS5kYXRhKTtcbiAgICAgIHtcbiAgICAgICAgdmFyIHQgPSB0aWxlWzFdWzBdO1xuICAgICAgICBkZWxldGUgdGlsZVsyXTtcbiAgICAgICAgdmFyIHRsID0gcGFyc2Vfc2hhbGxvdyh0LmRhdGEpO1xuICAgICAgICB7XG4gICAgICAgICAgdmFyIHRpbGVyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHRsWzJdWzBdLmRhdGEpO1xuICAgICAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbdGlsZXJlZl0ubG9jYXRpb24pO1xuICAgICAgICAgICAgdmFyIHR4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZSh0ZW50cnkuY29udGVudCkpO1xuICAgICAgICAgICAgdmFyIHRpbGVyb290O1xuICAgICAgICAgICAgZm9yICh2YXIgc3hpID0gMDsgc3hpIDwgdHgubGVuZ3RoOyArK3N4aSkge1xuICAgICAgICAgICAgICB2YXIgcGFja2V0MiA9IHR4W3N4aV07XG4gICAgICAgICAgICAgIGlmIChwYWNrZXQyLmlkID09IHRpbGVyZWYpXG4gICAgICAgICAgICAgICAgdGlsZXJvb3QgPSBwYWNrZXQyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRpbGVkYXRhID0gcGFyc2Vfc2hhbGxvdyh0aWxlcm9vdC5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHRpbGVkYXRhWzZdO1xuICAgICAgICAgICAgICBkZWxldGUgdGlsZVs3XTtcbiAgICAgICAgICAgICAgdmFyIHJvd2xvYWQgPSBuZXcgVWludDhBcnJheSh0aWxlZGF0YVs1XVswXS5kYXRhKTtcbiAgICAgICAgICAgICAgdGlsZWRhdGFbNV0gPSBbXTtcbiAgICAgICAgICAgICAgdmFyIGNudCA9IDA7XG4gICAgICAgICAgICAgIGZvciAodmFyIFIyID0gMDsgUjIgPD0gcmFuZ2UuZS5yOyArK1IyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRpbGVyb3cgPSBwYXJzZV9zaGFsbG93KHJvd2xvYWQpO1xuICAgICAgICAgICAgICAgIGNudCArPSB3cml0ZV90aWxlX3Jvdyh0aWxlcm93LCBkYXRhW1IyXSwgU1NUKTtcbiAgICAgICAgICAgICAgICB0aWxlcm93WzFdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShSMik7XG4gICAgICAgICAgICAgICAgdGlsZWRhdGFbNV0ucHVzaCh7IGRhdGE6IHdyaXRlX3NoYWxsb3codGlsZXJvdyksIHR5cGU6IDIgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGlsZWRhdGFbMV0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLmMgKyAxKSB9XTtcbiAgICAgICAgICAgICAgdGlsZWRhdGFbMl0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKSB9XTtcbiAgICAgICAgICAgICAgdGlsZWRhdGFbM10gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShjbnQpIH1dO1xuICAgICAgICAgICAgICB0aWxlZGF0YVs0XSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpIH1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGlsZXJvb3QubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3codGlsZWRhdGEpO1xuICAgICAgICAgICAgdmFyIHR5ID0gd3JpdGVfaXdhX2ZpbGUodHgpO1xuICAgICAgICAgICAgdmFyIHJhdzMyID0gY29tcHJlc3NfaXdhX2ZpbGUodHkpO1xuICAgICAgICAgICAgdGVudHJ5LmNvbnRlbnQgPSByYXczMjtcbiAgICAgICAgICAgIHRlbnRyeS5zaXplID0gdGVudHJ5LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICAgICAgdC5kYXRhID0gd3JpdGVfc2hhbGxvdyh0bCk7XG4gICAgICB9XG4gICAgICBzdG9yZVszXVswXS5kYXRhID0gd3JpdGVfc2hhbGxvdyh0aWxlKTtcbiAgICB9XG4gICAgcGJbNF1bMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coc3RvcmUpO1xuICB9XG4gIGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3cocGIpO1xuICB2YXIgeSA9IHdyaXRlX2l3YV9maWxlKHgpO1xuICB2YXIgcmF3MyA9IGNvbXByZXNzX2l3YV9maWxlKHkpO1xuICBlbnRyeS5jb250ZW50ID0gcmF3MztcbiAgZW50cnkuc2l6ZSA9IGVudHJ5LmNvbnRlbnQubGVuZ3RoO1xuICByZXR1cm4gY2ZiO1xufVxuZnVuY3Rpb24gZml4X29wdHNfZnVuYyhkZWZhdWx0cy8qOkFycmF5PEFycmF5PGFueT4gPiovKS8qOnsobzphbnkpOnZvaWR9Ki8ge1xuXHRyZXR1cm4gZnVuY3Rpb24gZml4X29wdHMob3B0cykge1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgIT0gZGVmYXVsdHMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBkID0gZGVmYXVsdHNbaV07XG5cdFx0XHRpZihvcHRzW2RbMF1dID09PSB1bmRlZmluZWQpIG9wdHNbZFswXV0gPSBkWzFdO1xuXHRcdFx0aWYoZFsyXSA9PT0gJ24nKSBvcHRzW2RbMF1dID0gTnVtYmVyKG9wdHNbZFswXV0pO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gZml4X3JlYWRfb3B0cyhvcHRzKSB7XG5maXhfb3B0c19mdW5jKFtcblx0WydjZWxsTkYnLCBmYWxzZV0sIC8qIGVtaXQgY2VsbCBudW1iZXIgZm9ybWF0IHN0cmluZyBhcyAueiAqL1xuXHRbJ2NlbGxIVE1MJywgdHJ1ZV0sIC8qIGVtaXQgaHRtbCBzdHJpbmcgYXMgLmggKi9cblx0WydjZWxsRm9ybXVsYScsIHRydWVdLCAvKiBlbWl0IGZvcm11bGFlIGFzIC5mICovXG5cdFsnY2VsbFN0eWxlcycsIGZhbHNlXSwgLyogZW1pdHMgc3R5bGUvdGhlbWUgYXMgLnMgKi9cblx0WydjZWxsVGV4dCcsIHRydWVdLCAvKiBlbWl0IGZvcm1hdHRlZCB0ZXh0IGFzIC53ICovXG5cdFsnY2VsbERhdGVzJywgZmFsc2VdLCAvKiBlbWl0IGRhdGUgY2VsbHMgd2l0aCB0eXBlIGBkYCAqL1xuXG5cdFsnc2hlZXRTdHVicycsIGZhbHNlXSwgLyogZW1pdCBlbXB0eSBjZWxscyAqL1xuXHRbJ3NoZWV0Um93cycsIDAsICduJ10sIC8qIHJlYWQgbiByb3dzICgwID0gcmVhZCBhbGwgcm93cykgKi9cblxuXHRbJ2Jvb2tEZXBzJywgZmFsc2VdLCAvKiBwYXJzZSBjYWxjdWxhdGlvbiBjaGFpbnMgKi9cblx0Wydib29rU2hlZXRzJywgZmFsc2VdLCAvKiBvbmx5IHRyeSB0byBnZXQgc2hlZXQgbmFtZXMgKG5vIFNoZWV0cykgKi9cblx0Wydib29rUHJvcHMnLCBmYWxzZV0sIC8qIG9ubHkgdHJ5IHRvIGdldCBwcm9wZXJ0aWVzIChubyBTaGVldHMpICovXG5cdFsnYm9va0ZpbGVzJywgZmFsc2VdLCAvKiBpbmNsdWRlIHJhdyBmaWxlIHN0cnVjdHVyZSAoa2V5cywgZmlsZXMsIGNmYikgKi9cblx0Wydib29rVkJBJywgZmFsc2VdLCAvKiBpbmNsdWRlIHZiYSByYXcgZGF0YSAodmJhcmF3KSAqL1xuXG5cdFsncGFzc3dvcmQnLCcnXSwgLyogcGFzc3dvcmQgKi9cblx0WydXVEYnLCBmYWxzZV0gLyogV1RGIG1vZGUgKHRocm93cyBlcnJvcnMpICovXG5dKShvcHRzKTtcbn1cblxuZnVuY3Rpb24gZml4X3dyaXRlX29wdHMob3B0cykge1xuZml4X29wdHNfZnVuYyhbXG5cdFsnY2VsbERhdGVzJywgZmFsc2VdLCAvKiB3cml0ZSBkYXRlIGNlbGxzIHdpdGggdHlwZSBgZGAgKi9cblxuXHRbJ2Jvb2tTU1QnLCBmYWxzZV0sIC8qIEdlbmVyYXRlIFNoYXJlZCBTdHJpbmcgVGFibGUgKi9cblxuXHRbJ2Jvb2tUeXBlJywgJ3hsc3gnXSwgLyogVHlwZSBvZiB3b3JrYm9vayAoeGxzeC9tL2IpICovXG5cblx0Wydjb21wcmVzc2lvbicsIGZhbHNlXSwgLyogVXNlIGZpbGUgY29tcHJlc3Npb24gKi9cblxuXHRbJ1dURicsIGZhbHNlXSAvKiBXVEYgbW9kZSAodGhyb3dzIGVycm9ycykgKi9cbl0pKG9wdHMpO1xufVxuZnVuY3Rpb24gZ2V0X3NoZWV0X3R5cGUobi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0aWYoUkVMUy5XUy5pbmRleE9mKG4pID4gLTEpIHJldHVybiBcInNoZWV0XCI7XG5cdGlmKFJFTFMuQ1MgJiYgbiA9PSBSRUxTLkNTKSByZXR1cm4gXCJjaGFydFwiO1xuXHRpZihSRUxTLkRTICYmIG4gPT0gUkVMUy5EUykgcmV0dXJuIFwiZGlhbG9nXCI7XG5cdGlmKFJFTFMuTVMgJiYgbiA9PSBSRUxTLk1TKSByZXR1cm4gXCJtYWNyb1wiO1xuXHRyZXR1cm4gKG4gJiYgbi5sZW5ndGgpID8gbiA6IFwic2hlZXRcIjtcbn1cbmZ1bmN0aW9uIHNhZmVfcGFyc2Vfd2JyZWxzKHdicmVscywgc2hlZXRzKSB7XG5cdGlmKCF3YnJlbHMpIHJldHVybiAwO1xuXHR0cnkge1xuXHRcdHdicmVscyA9IHNoZWV0cy5tYXAoZnVuY3Rpb24gcHdicih3KSB7IGlmKCF3LmlkKSB3LmlkID0gdy5zdHJSZWxJRDsgcmV0dXJuIFt3Lm5hbWUsIHdicmVsc1snIWlkJ11bdy5pZF0uVGFyZ2V0LCBnZXRfc2hlZXRfdHlwZSh3YnJlbHNbJyFpZCddW3cuaWRdLlR5cGUpXTsgfSk7XG5cdH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxuXHRyZXR1cm4gIXdicmVscyB8fCB3YnJlbHMubGVuZ3RoID09PSAwID8gbnVsbCA6IHdicmVscztcbn1cblxuZnVuY3Rpb24gc2FmZV9wYXJzZV9zaGVldCh6aXAsIHBhdGgvKjpzdHJpbmcqLywgcmVsc1BhdGgvKjpzdHJpbmcqLywgc2hlZXQsIGlkeC8qOm51bWJlciovLCBzaGVldFJlbHMsIHNoZWV0cywgc3R5cGUvKjpzdHJpbmcqLywgb3B0cywgd2IsIHRoZW1lcywgc3R5bGVzKSB7XG5cdHRyeSB7XG5cdFx0c2hlZXRSZWxzW3NoZWV0XT1wYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIHJlbHNQYXRoLCB0cnVlKSwgcGF0aCk7XG5cdFx0dmFyIGRhdGEgPSBnZXR6aXBkYXRhKHppcCwgcGF0aCk7XG5cdFx0dmFyIF93cztcblx0XHRzd2l0Y2goc3R5cGUpIHtcblx0XHRcdGNhc2UgJ3NoZWV0JzogIF93cyA9IHBhcnNlX3dzKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdjaGFydCc6ICBfd3MgPSBwYXJzZV9jcyhkYXRhLCBwYXRoLCBpZHgsIG9wdHMsIHNoZWV0UmVsc1tzaGVldF0sIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdFx0XHRcdGlmKCFfd3MgfHwgIV93c1snIWRyYXdlbCddKSBicmVhaztcblx0XHRcdFx0dmFyIGRmaWxlID0gcmVzb2x2ZV9wYXRoKF93c1snIWRyYXdlbCddLlRhcmdldCwgcGF0aCk7XG5cdFx0XHRcdHZhciBkcmVsc3AgPSBnZXRfcmVsc19wYXRoKGRmaWxlKTtcblx0XHRcdFx0dmFyIGRyYXcgPSBwYXJzZV9kcmF3aW5nKGdldHppcHN0cih6aXAsIGRmaWxlLCB0cnVlKSwgcGFyc2VfcmVscyhnZXR6aXBzdHIoemlwLCBkcmVsc3AsIHRydWUpLCBkZmlsZSkpO1xuXHRcdFx0XHR2YXIgY2hhcnRwID0gcmVzb2x2ZV9wYXRoKGRyYXcsIGRmaWxlKTtcblx0XHRcdFx0dmFyIGNyZWxzcCA9IGdldF9yZWxzX3BhdGgoY2hhcnRwKTtcblx0XHRcdFx0X3dzID0gcGFyc2VfY2hhcnQoZ2V0emlwc3RyKHppcCwgY2hhcnRwLCB0cnVlKSwgY2hhcnRwLCBvcHRzLCBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIGNyZWxzcCwgdHJ1ZSksIGNoYXJ0cCksIHdiLCBfd3MpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ21hY3JvJzogIF93cyA9IHBhcnNlX21zKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdkaWFsb2cnOiBfd3MgPSBwYXJzZV9kcyhkYXRhLCBwYXRoLCBpZHgsIG9wdHMsIHNoZWV0UmVsc1tzaGVldF0sIHdiLCB0aGVtZXMsIHN0eWxlcyk7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHNoZWV0IHR5cGUgXCIgKyBzdHlwZSk7XG5cdFx0fVxuXHRcdHNoZWV0c1tzaGVldF0gPSBfd3M7XG5cblx0XHQvKiBzY2FuIHJlbHMgZm9yIGNvbW1lbnRzIGFuZCB0aHJlYWRlZCBjb21tZW50cyAqL1xuXHRcdHZhciB0Y29tbWVudHMgPSBbXTtcblx0XHRpZihzaGVldFJlbHMgJiYgc2hlZXRSZWxzW3NoZWV0XSkga2V5cyhzaGVldFJlbHNbc2hlZXRdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHtcblx0XHRcdHZhciBkZmlsZSA9IFwiXCI7XG5cdFx0XHRpZihzaGVldFJlbHNbc2hlZXRdW25dLlR5cGUgPT0gUkVMUy5DTU5UKSB7XG5cdFx0XHRcdGRmaWxlID0gcmVzb2x2ZV9wYXRoKHNoZWV0UmVsc1tzaGVldF1bbl0uVGFyZ2V0LCBwYXRoKTtcblx0XHRcdFx0dmFyIGNvbW1lbnRzID0gcGFyc2VfY21udChnZXR6aXBkYXRhKHppcCwgZGZpbGUsIHRydWUpLCBkZmlsZSwgb3B0cyk7XG5cdFx0XHRcdGlmKCFjb21tZW50cyB8fCAhY29tbWVudHMubGVuZ3RoKSByZXR1cm47XG5cdFx0XHRcdHNoZWV0X2luc2VydF9jb21tZW50cyhfd3MsIGNvbW1lbnRzLCBmYWxzZSk7XG5cdFx0XHR9XG5cdFx0XHRpZihzaGVldFJlbHNbc2hlZXRdW25dLlR5cGUgPT0gUkVMUy5UQ01OVCkge1xuXHRcdFx0XHRkZmlsZSA9IHJlc29sdmVfcGF0aChzaGVldFJlbHNbc2hlZXRdW25dLlRhcmdldCwgcGF0aCk7XG5cdFx0XHRcdHRjb21tZW50cyA9IHRjb21tZW50cy5jb25jYXQocGFyc2VfdGNtbnRfeG1sKGdldHppcGRhdGEoemlwLCBkZmlsZSwgdHJ1ZSksIG9wdHMpKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZih0Y29tbWVudHMgJiYgdGNvbW1lbnRzLmxlbmd0aCkgc2hlZXRfaW5zZXJ0X2NvbW1lbnRzKF93cywgdGNvbW1lbnRzLCB0cnVlLCBvcHRzLnBlb3BsZSB8fCBbXSk7XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxufVxuXG5mdW5jdGlvbiBzdHJpcF9mcm9udF9zbGFzaCh4Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4geC5jaGFyQXQoMCkgPT0gJy8nID8geC5zbGljZSgxKSA6IHg7IH1cblxuZnVuY3Rpb24gcGFyc2VfemlwKHppcC8qOlpJUCovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRtYWtlX3NzZigpO1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblx0Zml4X3JlYWRfb3B0cyhvcHRzKTtcblxuXHQvKiBPcGVuRG9jdW1lbnQgUGFydCAzIFNlY3Rpb24gMi4yLjEgT3BlbkRvY3VtZW50IFBhY2thZ2UgKi9cblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnTUVUQS1JTkYvbWFuaWZlc3QueG1sJykpIHJldHVybiBwYXJzZV9vZHMoemlwLCBvcHRzKTtcblx0LyogVU9DICovXG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ29iamVjdGRhdGEueG1sJykpIHJldHVybiBwYXJzZV9vZHMoemlwLCBvcHRzKTtcblx0LyogTnVtYmVycyAqL1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdJbmRleC9Eb2N1bWVudC5pd2EnKSkge1xuXHRcdGlmKHR5cGVvZiBVaW50OEFycmF5ID09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcignTlVNQkVSUyBmaWxlIHBhcnNpbmcgcmVxdWlyZXMgVWludDhBcnJheSBzdXBwb3J0Jyk7XG5cdFx0aWYodHlwZW9mIHBhcnNlX251bWJlcnNfaXdhICE9IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdGlmKHppcC5GaWxlSW5kZXgpIHJldHVybiBwYXJzZV9udW1iZXJzX2l3YSh6aXApO1xuXHRcdFx0dmFyIF96aXAgPSBDRkIudXRpbHMuY2ZiX25ldygpO1xuXHRcdFx0emlwZW50cmllcyh6aXApLmZvckVhY2goZnVuY3Rpb24oZSkgeyB6aXBfYWRkX2ZpbGUoX3ppcCwgZSwgZ2V0emlwYmluKHppcCwgZSkpOyB9KTtcblx0XHRcdHJldHVybiBwYXJzZV9udW1iZXJzX2l3YShfemlwKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBOVU1CRVJTIGZpbGUnKTtcblx0fVxuXHRpZighc2FmZWdldHppcGZpbGUoemlwLCAnW0NvbnRlbnRfVHlwZXNdLnhtbCcpKSB7XG5cdFx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnaW5kZXgueG1sLmd6JykpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOCBmaWxlJyk7XG5cdFx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnaW5kZXgueG1sJykpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOSBmaWxlJyk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBaSVAgZmlsZScpO1xuXHR9XG5cblx0dmFyIGVudHJpZXMgPSB6aXBlbnRyaWVzKHppcCk7XG5cdHZhciBkaXIgPSBwYXJzZV9jdCgoZ2V0emlwc3RyKHppcCwgJ1tDb250ZW50X1R5cGVzXS54bWwnKS8qOj9hbnkqLykpO1xuXHR2YXIgeGxzYiA9IGZhbHNlO1xuXHR2YXIgc2hlZXRzLCBiaW5uYW1lO1xuXHRpZihkaXIud29ya2Jvb2tzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGJpbm5hbWUgPSBcInhsL3dvcmtib29rLnhtbFwiO1xuXHRcdGlmKGdldHppcGRhdGEoemlwLGJpbm5hbWUsIHRydWUpKSBkaXIud29ya2Jvb2tzLnB1c2goYmlubmFtZSk7XG5cdH1cblx0aWYoZGlyLndvcmtib29rcy5sZW5ndGggPT09IDApIHtcblx0XHRiaW5uYW1lID0gXCJ4bC93b3JrYm9vay5iaW5cIjtcblx0XHRpZighZ2V0emlwZGF0YSh6aXAsYmlubmFtZSx0cnVlKSkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgd29ya2Jvb2tcIik7XG5cdFx0ZGlyLndvcmtib29rcy5wdXNoKGJpbm5hbWUpO1xuXHRcdHhsc2IgPSB0cnVlO1xuXHR9XG5cdGlmKGRpci53b3JrYm9va3NbMF0uc2xpY2UoLTMpID09IFwiYmluXCIpIHhsc2IgPSB0cnVlO1xuXG5cdHZhciB0aGVtZXMgPSAoe30vKjphbnkqLyk7XG5cdHZhciBzdHlsZXMgPSAoe30vKjphbnkqLyk7XG5cdGlmKCFvcHRzLmJvb2tTaGVldHMgJiYgIW9wdHMuYm9va1Byb3BzKSB7XG5cdFx0c3RycyA9IFtdO1xuXHRcdGlmKGRpci5zc3QpIHRyeSB7IHN0cnM9cGFyc2Vfc3N0KGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuc3N0KSksIGRpci5zc3QsIG9wdHMpOyB9IGNhdGNoKGUpIHsgaWYob3B0cy5XVEYpIHRocm93IGU7IH1cblxuXHRcdGlmKG9wdHMuY2VsbFN0eWxlcyAmJiBkaXIudGhlbWVzLmxlbmd0aCkgdGhlbWVzID0gcGFyc2VfdGhlbWUoZ2V0emlwc3RyKHppcCwgZGlyLnRoZW1lc1swXS5yZXBsYWNlKC9eXFwvLywnJyksIHRydWUpfHxcIlwiLGRpci50aGVtZXNbMF0sIG9wdHMpO1xuXG5cdFx0aWYoZGlyLnN0eWxlKSBzdHlsZXMgPSBwYXJzZV9zdHkoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5zdHlsZSkpLCBkaXIuc3R5bGUsIHRoZW1lcywgb3B0cyk7XG5cdH1cblxuXHQvKnZhciBleHRlcm5ib29rcyA9ICovZGlyLmxpbmtzLm1hcChmdW5jdGlvbihsaW5rKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHZhciByZWxzID0gcGFyc2VfcmVscyhnZXR6aXBzdHIoemlwLCBnZXRfcmVsc19wYXRoKHN0cmlwX2Zyb250X3NsYXNoKGxpbmspKSksIGxpbmspO1xuXHRcdFx0cmV0dXJuIHBhcnNlX3hsaW5rKGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChsaW5rKSksIHJlbHMsIGxpbmssIG9wdHMpO1xuXHRcdH0gY2F0Y2goZSkge31cblx0fSk7XG5cblx0dmFyIHdiID0gcGFyc2Vfd2IoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci53b3JrYm9va3NbMF0pKSwgZGlyLndvcmtib29rc1swXSwgb3B0cyk7XG5cblx0dmFyIHByb3BzID0ge30sIHByb3BkYXRhID0gXCJcIjtcblxuXHRpZihkaXIuY29yZXByb3BzLmxlbmd0aCkge1xuXHRcdHByb3BkYXRhID0gZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5jb3JlcHJvcHNbMF0pLCB0cnVlKTtcblx0XHRpZihwcm9wZGF0YSkgcHJvcHMgPSBwYXJzZV9jb3JlX3Byb3BzKHByb3BkYXRhKTtcblx0XHRpZihkaXIuZXh0cHJvcHMubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRwcm9wZGF0YSA9IGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuZXh0cHJvcHNbMF0pLCB0cnVlKTtcblx0XHRcdGlmKHByb3BkYXRhKSBwYXJzZV9leHRfcHJvcHMocHJvcGRhdGEsIHByb3BzLCBvcHRzKTtcblx0XHR9XG5cdH1cblxuXHR2YXIgY3VzdHByb3BzID0ge307XG5cdGlmKCFvcHRzLmJvb2tTaGVldHMgfHwgb3B0cy5ib29rUHJvcHMpIHtcblx0XHRpZiAoZGlyLmN1c3Rwcm9wcy5sZW5ndGggIT09IDApIHtcblx0XHRcdHByb3BkYXRhID0gZ2V0emlwc3RyKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLmN1c3Rwcm9wc1swXSksIHRydWUpO1xuXHRcdFx0aWYocHJvcGRhdGEpIGN1c3Rwcm9wcyA9IHBhcnNlX2N1c3RfcHJvcHMocHJvcGRhdGEsIG9wdHMpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBvdXQgPSAoe30vKjphbnkqLyk7XG5cdGlmKG9wdHMuYm9va1NoZWV0cyB8fCBvcHRzLmJvb2tQcm9wcykge1xuXHRcdGlmKHdiLlNoZWV0cykgc2hlZXRzID0gd2IuU2hlZXRzLm1hcChmdW5jdGlvbiBwbHVjayh4KXsgcmV0dXJuIHgubmFtZTsgfSk7XG5cdFx0ZWxzZSBpZihwcm9wcy5Xb3Jrc2hlZXRzICYmIHByb3BzLlNoZWV0TmFtZXMubGVuZ3RoID4gMCkgc2hlZXRzPXByb3BzLlNoZWV0TmFtZXM7XG5cdFx0aWYob3B0cy5ib29rUHJvcHMpIHsgb3V0LlByb3BzID0gcHJvcHM7IG91dC5DdXN0cHJvcHMgPSBjdXN0cHJvcHM7IH1cblx0XHRpZihvcHRzLmJvb2tTaGVldHMgJiYgdHlwZW9mIHNoZWV0cyAhPT0gJ3VuZGVmaW5lZCcpIG91dC5TaGVldE5hbWVzID0gc2hlZXRzO1xuXHRcdGlmKG9wdHMuYm9va1NoZWV0cyA/IG91dC5TaGVldE5hbWVzIDogb3B0cy5ib29rUHJvcHMpIHJldHVybiBvdXQ7XG5cdH1cblx0c2hlZXRzID0ge307XG5cblx0dmFyIGRlcHMgPSB7fTtcblx0aWYob3B0cy5ib29rRGVwcyAmJiBkaXIuY2FsY2NoYWluKSBkZXBzPXBhcnNlX2NjKGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuY2FsY2NoYWluKSksZGlyLmNhbGNjaGFpbixvcHRzKTtcblxuXHR2YXIgaT0wO1xuXHR2YXIgc2hlZXRSZWxzID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgcGF0aCwgcmVsc1BhdGg7XG5cblx0e1xuXHRcdHZhciB3YnNoZWV0cyA9IHdiLlNoZWV0cztcblx0XHRwcm9wcy5Xb3Jrc2hlZXRzID0gd2JzaGVldHMubGVuZ3RoO1xuXHRcdHByb3BzLlNoZWV0TmFtZXMgPSBbXTtcblx0XHRmb3IodmFyIGogPSAwOyBqICE9IHdic2hlZXRzLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRwcm9wcy5TaGVldE5hbWVzW2pdID0gd2JzaGVldHNbal0ubmFtZTtcblx0XHR9XG5cdH1cblxuXHR2YXIgd2JleHQgPSB4bHNiID8gXCJiaW5cIiA6IFwieG1sXCI7XG5cdHZhciB3YnJlbHNpID0gZGlyLndvcmtib29rc1swXS5sYXN0SW5kZXhPZihcIi9cIik7XG5cdHZhciB3YnJlbHNmaWxlID0gKGRpci53b3JrYm9va3NbMF0uc2xpY2UoMCwgd2JyZWxzaSsxKSArIFwiX3JlbHMvXCIgKyBkaXIud29ya2Jvb2tzWzBdLnNsaWNlKHdicmVsc2krMSkgKyBcIi5yZWxzXCIpLnJlcGxhY2UoL15cXC8vLFwiXCIpO1xuXHRpZighc2FmZWdldHppcGZpbGUoemlwLCB3YnJlbHNmaWxlKSkgd2JyZWxzZmlsZSA9ICd4bC9fcmVscy93b3JrYm9vay4nICsgd2JleHQgKyAnLnJlbHMnO1xuXHR2YXIgd2JyZWxzID0gcGFyc2VfcmVscyhnZXR6aXBzdHIoemlwLCB3YnJlbHNmaWxlLCB0cnVlKSwgd2JyZWxzZmlsZS5yZXBsYWNlKC9fcmVscy4qLywgXCJzNXNcIikpO1xuXG5cdGlmKChkaXIubWV0YWRhdGEgfHwgW10pLmxlbmd0aCA+PSAxKSB7XG5cdFx0LyogVE9ETzogTURYIGFuZCBvdGhlciB0eXBlcyBvZiBtZXRhZGF0YSAqL1xuXHRcdG9wdHMueGxtZXRhID0gcGFyc2VfeGxtZXRhKGdldHppcGRhdGEoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIubWV0YWRhdGFbMF0pKSxkaXIubWV0YWRhdGFbMF0sb3B0cyk7XG5cdH1cblxuXHRpZigoZGlyLnBlb3BsZSB8fCBbXSkubGVuZ3RoID49IDEpIHtcblx0XHRvcHRzLnBlb3BsZSA9IHBhcnNlX3Blb3BsZV94bWwoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5wZW9wbGVbMF0pKSxvcHRzKTtcblx0fVxuXG5cdGlmKHdicmVscykgd2JyZWxzID0gc2FmZV9wYXJzZV93YnJlbHMod2JyZWxzLCB3Yi5TaGVldHMpO1xuXG5cdC8qIE51bWJlcnMgaU9TIGhhY2sgKi9cblx0dmFyIG5tb2RlID0gKGdldHppcGRhdGEoemlwLFwieGwvd29ya3NoZWV0cy9zaGVldC54bWxcIix0cnVlKSk/MTowO1xuXHR3c2xvb3A6IGZvcihpID0gMDsgaSAhPSBwcm9wcy5Xb3Jrc2hlZXRzOyArK2kpIHtcblx0XHR2YXIgc3R5cGUgPSBcInNoZWV0XCI7XG5cdFx0aWYod2JyZWxzICYmIHdicmVsc1tpXSkge1xuXHRcdFx0cGF0aCA9ICd4bC8nICsgKHdicmVsc1tpXVsxXSkucmVwbGFjZSgvW1xcL10/eGxcXC8vLCBcIlwiKTtcblx0XHRcdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsIHBhdGgpKSBwYXRoID0gd2JyZWxzW2ldWzFdO1xuXHRcdFx0aWYoIXNhZmVnZXR6aXBmaWxlKHppcCwgcGF0aCkpIHBhdGggPSB3YnJlbHNmaWxlLnJlcGxhY2UoL19yZWxzXFwvLiokLyxcIlwiKSArIHdicmVsc1tpXVsxXTtcblx0XHRcdHN0eXBlID0gd2JyZWxzW2ldWzJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXRoID0gJ3hsL3dvcmtzaGVldHMvc2hlZXQnKyhpKzEtbm1vZGUpK1wiLlwiICsgd2JleHQ7XG5cdFx0XHRwYXRoID0gcGF0aC5yZXBsYWNlKC9zaGVldDBcXC4vLFwic2hlZXQuXCIpO1xuXHRcdH1cblx0XHRyZWxzUGF0aCA9IHBhdGgucmVwbGFjZSgvXiguKikoXFwvKShbXlxcL10qKSQvLCBcIiQxL19yZWxzLyQzLnJlbHNcIik7XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0cyAhPSBudWxsKSBzd2l0Y2godHlwZW9mIG9wdHMuc2hlZXRzKSB7XG5cdFx0XHRjYXNlIFwibnVtYmVyXCI6IGlmKGkgIT0gb3B0cy5zaGVldHMpIGNvbnRpbnVlIHdzbG9vcDsgYnJlYWs7XG5cdFx0XHRjYXNlIFwic3RyaW5nXCI6IGlmKHByb3BzLlNoZWV0TmFtZXNbaV0udG9Mb3dlckNhc2UoKSAhPSBvcHRzLnNoZWV0cy50b0xvd2VyQ2FzZSgpKSBjb250aW51ZSB3c2xvb3A7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYoQXJyYXkuaXNBcnJheSAmJiBBcnJheS5pc0FycmF5KG9wdHMuc2hlZXRzKSkge1xuXHRcdFx0XHR2YXIgc25qc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHRmb3IodmFyIHNuaiA9IDA7IHNuaiAhPSBvcHRzLnNoZWV0cy5sZW5ndGg7ICsrc25qKSB7XG5cdFx0XHRcdFx0aWYodHlwZW9mIG9wdHMuc2hlZXRzW3Nual0gPT0gXCJudW1iZXJcIiAmJiBvcHRzLnNoZWV0c1tzbmpdID09IGkpIHNuanNlZW49MTtcblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5zaGVldHNbc25qXSA9PSBcInN0cmluZ1wiICYmIG9wdHMuc2hlZXRzW3Nual0udG9Mb3dlckNhc2UoKSA9PSBwcm9wcy5TaGVldE5hbWVzW2ldLnRvTG93ZXJDYXNlKCkpIHNuanNlZW4gPSAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKCFzbmpzZWVuKSBjb250aW51ZSB3c2xvb3A7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHNhZmVfcGFyc2Vfc2hlZXQoemlwLCBwYXRoLCByZWxzUGF0aCwgcHJvcHMuU2hlZXROYW1lc1tpXSwgaSwgc2hlZXRSZWxzLCBzaGVldHMsIHN0eXBlLCBvcHRzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHR9XG5cblx0b3V0ID0gKHtcblx0XHREaXJlY3Rvcnk6IGRpcixcblx0XHRXb3JrYm9vazogd2IsXG5cdFx0UHJvcHM6IHByb3BzLFxuXHRcdEN1c3Rwcm9wczogY3VzdHByb3BzLFxuXHRcdERlcHM6IGRlcHMsXG5cdFx0U2hlZXRzOiBzaGVldHMsXG5cdFx0U2hlZXROYW1lczogcHJvcHMuU2hlZXROYW1lcyxcblx0XHRTdHJpbmdzOiBzdHJzLFxuXHRcdFN0eWxlczogc3R5bGVzLFxuXHRcdFRoZW1lczogdGhlbWVzLFxuXHRcdFNTRjogZHVwKHRhYmxlX2ZtdClcblx0fS8qOmFueSovKTtcblx0aWYob3B0cyAmJiBvcHRzLmJvb2tGaWxlcykge1xuXHRcdGlmKHppcC5maWxlcykge1xuXHRcdFx0b3V0LmtleXMgPSBlbnRyaWVzO1xuXHRcdFx0b3V0LmZpbGVzID0gemlwLmZpbGVzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvdXQua2V5cyA9IFtdO1xuXHRcdFx0b3V0LmZpbGVzID0ge307XG5cdFx0XHR6aXAuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocCwgaWR4KSB7XG5cdFx0XHRcdHAgPSBwLnJlcGxhY2UoL15Sb290IEVudHJ5W1xcL10vLCBcIlwiKTtcblx0XHRcdFx0b3V0LmtleXMucHVzaChwKTtcblx0XHRcdFx0b3V0LmZpbGVzW3BdID0gemlwLkZpbGVJbmRleFtpZHhdO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGlmKG9wdHMgJiYgb3B0cy5ib29rVkJBKSB7XG5cdFx0aWYoZGlyLnZiYS5sZW5ndGggPiAwKSBvdXQudmJhcmF3ID0gZ2V0emlwZGF0YSh6aXAsc3RyaXBfZnJvbnRfc2xhc2goZGlyLnZiYVswXSksdHJ1ZSk7XG5cdFx0ZWxzZSBpZihkaXIuZGVmYXVsdHMgJiYgZGlyLmRlZmF1bHRzLmJpbiA9PT0gQ1RfVkJBKSBvdXQudmJhcmF3ID0gZ2V0emlwZGF0YSh6aXAsICd4bC92YmFQcm9qZWN0LmJpbicsdHJ1ZSk7XG5cdH1cblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjEgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsc3hjZmIoY2ZiLCBfb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0dmFyIGYgPSAnV29ya2Jvb2snLCBkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTtcblx0dHJ5IHtcblx0ZiA9ICcvIURhdGFTcGFjZXMvVmVyc2lvbic7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdC8qdmFyIHZlcnNpb24gPSAqL3BhcnNlX0RhdGFTcGFjZVZlcnNpb25JbmZvKGRhdGEuY29udGVudCk7XG5cblx0LyogMi4zLjQuMSAqL1xuXHRmID0gJy8hRGF0YVNwYWNlcy9EYXRhU3BhY2VNYXAnO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHR2YXIgZHNtID0gcGFyc2VfRGF0YVNwYWNlTWFwKGRhdGEuY29udGVudCk7XG5cdGlmKGRzbS5sZW5ndGggIT09IDEgfHwgZHNtWzBdLmNvbXBzLmxlbmd0aCAhPT0gMSB8fCBkc21bMF0uY29tcHNbMF0udCAhPT0gMCB8fCBkc21bMF0ubmFtZSAhPT0gXCJTdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlXCIgfHwgZHNtWzBdLmNvbXBzWzBdLnYgIT09IFwiRW5jcnlwdGVkUGFja2FnZVwiKVxuXHRcdHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCBcIiArIGYpO1xuXG5cdC8qIDIuMy40LjIgKi9cblx0ZiA9ICcvIURhdGFTcGFjZXMvRGF0YVNwYWNlSW5mby9TdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0dmFyIHNlZHMgPSBwYXJzZV9EYXRhU3BhY2VEZWZpbml0aW9uKGRhdGEuY29udGVudCk7XG5cdGlmKHNlZHMubGVuZ3RoICE9IDEgfHwgc2Vkc1swXSAhPSBcIlN0cm9uZ0VuY3J5cHRpb25UcmFuc2Zvcm1cIilcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgXCIgKyBmKTtcblxuXHQvKiAyLjMuNC4zICovXG5cdGYgPSAnLyFEYXRhU3BhY2VzL1RyYW5zZm9ybUluZm8vU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybS8hUHJpbWFyeSc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdC8qdmFyIGhkciA9ICovcGFyc2VfUHJpbWFyeShkYXRhLmNvbnRlbnQpO1xuXHR9IGNhdGNoKGUpIHt9XG5cblx0ZiA9ICcvRW5jcnlwdGlvbkluZm8nO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHR2YXIgZWluZm8gPSBwYXJzZV9FbmNyeXB0aW9uSW5mbyhkYXRhLmNvbnRlbnQpO1xuXG5cdC8qIDIuMy40LjQgKi9cblx0ZiA9ICcvRW5jcnlwdGVkUGFja2FnZSc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cbi8qZ2xvYmFsIGRlY3J5cHRfYWdpbGUgKi9cbi8qOjogZGVjbGFyZSB2YXIgZGVjcnlwdF9hZ2lsZTphbnk7ICovXG5cdGlmKGVpbmZvWzBdID09IDB4MDQgJiYgdHlwZW9mIGRlY3J5cHRfYWdpbGUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZGVjcnlwdF9hZ2lsZShlaW5mb1sxXSwgZGF0YS5jb250ZW50LCBvcHRzLnBhc3N3b3JkIHx8IFwiXCIsIG9wdHMpO1xuLypnbG9iYWwgZGVjcnlwdF9zdGQ3NiAqL1xuLyo6OiBkZWNsYXJlIHZhciBkZWNyeXB0X3N0ZDc2OmFueTsgKi9cblx0aWYoZWluZm9bMF0gPT0gMHgwMiAmJiB0eXBlb2YgZGVjcnlwdF9zdGQ3NiAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBkZWNyeXB0X3N0ZDc2KGVpbmZvWzFdLCBkYXRhLmNvbnRlbnQsIG9wdHMucGFzc3dvcmQgfHwgXCJcIiwgb3B0cyk7XG5cdHRocm93IG5ldyBFcnJvcihcIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkXCIpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV96aXAod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6WklQKi8ge1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwib2RzXCIpIHJldHVybiB3cml0ZV9vZHMod2IsIG9wdHMpO1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwibnVtYmVyc1wiKSByZXR1cm4gd3JpdGVfbnVtYmVyc19pd2Eod2IsIG9wdHMpO1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwieGxzYlwiKSByZXR1cm4gd3JpdGVfemlwX3hsc3hiKHdiLCBvcHRzKTtcblx0cmV0dXJuIHdyaXRlX3ppcF94bHN4KHdiLCBvcHRzKTtcbn1cblxuLyogWExTWCBhbmQgWExTQiB3cml0aW5nIGFyZSB2ZXJ5IHNpbWlsYXIuICBPcmlnaW5hbGx5IHRoZXkgd2VyZSB1bmlmaWVkIGluIG9uZVxuICAgZXhwb3J0IGZ1bmN0aW9uLiAgVGhpcyBpcyBob3JyaWJsZSBmb3IgdHJlZSBzaGFraW5nIGluIHRoZSBjb21tb24gY2FzZSAobW9zdFxuICAgYXBwbGljYXRpb25zIG5lZWQgdG8gZXhwb3J0IGZpbGVzIGluIG9uZSBmb3JtYXQpIHNvIHRoaXMgZnVuY3Rpb24gc3VwcG9ydHNcbiAgIGJvdGggZm9ybWF0cyB3aGlsZSB3cml0ZV96aXBfeGxzeCBvbmx5IGhhbmRsZXMgWExTWCAqL1xuZnVuY3Rpb24gd3JpdGVfemlwX3hsc3hiKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOlpJUCovIHtcblx0X3NoYXBlaWQgPSAxMDI0O1xuXHRpZih3YiAmJiAhd2IuU1NGKSB7XG5cdFx0d2IuU1NGID0gZHVwKHRhYmxlX2ZtdCk7XG5cdH1cblx0aWYod2IgJiYgd2IuU1NGKSB7XG5cdFx0bWFrZV9zc2YoKTsgU1NGX2xvYWRfdGFibGUod2IuU1NGKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdG9wdHMucmV2c3NmID0gZXZlcnRfbnVtKHdiLlNTRik7IG9wdHMucmV2c3NmW3diLlNTRls2NTUzNV1dID0gMDtcblx0XHRvcHRzLnNzZiA9IHdiLlNTRjtcblx0fVxuXHRvcHRzLnJlbHMgPSB7fTsgb3B0cy53YnJlbHMgPSB7fTtcblx0b3B0cy5TdHJpbmdzID0gLyo6OigoKi9bXS8qOjogOmFueSk6U1NUKSovOyBvcHRzLlN0cmluZ3MuQ291bnQgPSAwOyBvcHRzLlN0cmluZ3MuVW5pcXVlID0gMDtcblx0aWYoYnJvd3Nlcl9oYXNfTWFwKSBvcHRzLnJldlN0cmluZ3MgPSBuZXcgTWFwKCk7XG5cdGVsc2UgeyBvcHRzLnJldlN0cmluZ3MgPSB7fTsgb3B0cy5yZXZTdHJpbmdzLmZvbyA9IFtdOyBkZWxldGUgb3B0cy5yZXZTdHJpbmdzLmZvbzsgfVxuXHR2YXIgd2JleHQgPSBvcHRzLmJvb2tUeXBlID09IFwieGxzYlwiID8gXCJiaW5cIiA6IFwieG1sXCI7XG5cdHZhciB2YmFmbXQgPSBWQkFGTVRTLmluZGV4T2Yob3B0cy5ib29rVHlwZSkgPiAtMTtcblx0dmFyIGN0ID0gbmV3X2N0KCk7XG5cdGZpeF93cml0ZV9vcHRzKG9wdHMgPSBvcHRzIHx8IHt9KTtcblx0dmFyIHppcCA9IHppcF9uZXcoKTtcblx0dmFyIGYgPSBcIlwiLCBySWQgPSAwO1xuXG5cdG9wdHMuY2VsbFhmcyA9IFtdO1xuXHRnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIHt9LCB7cmV2c3NmOntcIkdlbmVyYWxcIjowfX0pO1xuXG5cdGlmKCF3Yi5Qcm9wcykgd2IuUHJvcHMgPSB7fTtcblxuXHRmID0gXCJkb2NQcm9wcy9jb3JlLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jb3JlX3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdGN0LmNvcmVwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDIsIGYsIFJFTFMuQ09SRV9QUk9QUyk7XG5cblx0Lyo6OmlmKCF3Yi5Qcm9wcykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRmID0gXCJkb2NQcm9wcy9hcHAueG1sXCI7XG5cdGlmKHdiLlByb3BzICYmIHdiLlByb3BzLlNoZWV0TmFtZXMpey8qIGVtcHR5ICovfVxuXHRlbHNlIGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suU2hlZXRzKSB3Yi5Qcm9wcy5TaGVldE5hbWVzID0gd2IuU2hlZXROYW1lcztcblx0ZWxzZSB7XG5cdFx0dmFyIF9zbiA9IFtdO1xuXHRcdGZvcih2YXIgX2kgPSAwOyBfaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK19pKVxuXHRcdFx0aWYoKHdiLldvcmtib29rLlNoZWV0c1tfaV18fHt9KS5IaWRkZW4gIT0gMikgX3NuLnB1c2god2IuU2hlZXROYW1lc1tfaV0pO1xuXHRcdHdiLlByb3BzLlNoZWV0TmFtZXMgPSBfc247XG5cdH1cblx0d2IuUHJvcHMuV29ya3NoZWV0cyA9IHdiLlByb3BzLlNoZWV0TmFtZXMubGVuZ3RoO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9leHRfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuZXh0cHJvcHMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAzLCBmLCBSRUxTLkVYVF9QUk9QUyk7XG5cblx0aWYod2IuQ3VzdHByb3BzICE9PSB3Yi5Qcm9wcyAmJiBrZXlzKHdiLkN1c3Rwcm9wc3x8e30pLmxlbmd0aCA+IDApIHtcblx0XHRmID0gXCJkb2NQcm9wcy9jdXN0b20ueG1sXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY3VzdF9wcm9wcyh3Yi5DdXN0cHJvcHMsIG9wdHMpKTtcblx0XHRjdC5jdXN0cHJvcHMucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLnJlbHMsIDQsIGYsIFJFTFMuQ1VTVF9QUk9QUyk7XG5cdH1cblxuXHRmb3IocklkPTE7cklkIDw9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK3JJZCkge1xuXHRcdHZhciB3c3JlbHMgPSB7JyFpZCc6e319O1xuXHRcdHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW3JJZC0xXV07XG5cdFx0dmFyIF90eXBlID0gKHdzIHx8IHt9KVtcIiF0eXBlXCJdIHx8IFwic2hlZXRcIjtcblx0XHRzd2l0Y2goX3R5cGUpIHtcblx0XHRjYXNlIFwiY2hhcnRcIjpcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRkZWZhdWx0OlxuXHRcdFx0ZiA9IFwieGwvd29ya3NoZWV0cy9zaGVldFwiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3dzKHJJZC0xLCBmLCBvcHRzLCB3Yiwgd3NyZWxzKSk7XG5cdFx0XHRjdC5zaGVldHMucHVzaChmKTtcblx0XHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ3b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLldTWzBdKTtcblx0XHR9XG5cblx0XHRpZih3cykge1xuXHRcdFx0dmFyIGNvbW1lbnRzID0gd3NbJyFjb21tZW50cyddO1xuXHRcdFx0dmFyIG5lZWRfdm1sID0gZmFsc2U7XG5cdFx0XHR2YXIgY2YgPSBcIlwiO1xuXHRcdFx0aWYoY29tbWVudHMgJiYgY29tbWVudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjZiA9IFwieGwvY29tbWVudHNcIiArIHJJZCArIFwiLlwiICsgd2JleHQ7XG5cdFx0XHRcdHppcF9hZGRfZmlsZSh6aXAsIGNmLCB3cml0ZV9jbW50KGNvbW1lbnRzLCBjZiwgb3B0cykpO1xuXHRcdFx0XHRjdC5jb21tZW50cy5wdXNoKGNmKTtcblx0XHRcdFx0YWRkX3JlbHMod3NyZWxzLCAtMSwgXCIuLi9jb21tZW50c1wiICsgcklkICsgXCIuXCIgKyB3YmV4dCwgUkVMUy5DTU5UKTtcblx0XHRcdFx0bmVlZF92bWwgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYod3NbJyFsZWdhY3knXSkge1xuXHRcdFx0XHRpZihuZWVkX3ZtbCkgemlwX2FkZF9maWxlKHppcCwgXCJ4bC9kcmF3aW5ncy92bWxEcmF3aW5nXCIgKyAocklkKSArIFwiLnZtbFwiLCB3cml0ZV9jb21tZW50c192bWwocklkLCB3c1snIWNvbW1lbnRzJ10pKTtcblx0XHRcdH1cblx0XHRcdGRlbGV0ZSB3c1snIWNvbW1lbnRzJ107XG5cdFx0XHRkZWxldGUgd3NbJyFsZWdhY3knXTtcblx0XHR9XG5cblx0XHRpZih3c3JlbHNbJyFpZCddLnJJZDEpIHppcF9hZGRfZmlsZSh6aXAsIGdldF9yZWxzX3BhdGgoZiksIHdyaXRlX3JlbHMod3NyZWxzKSk7XG5cdH1cblxuXHRpZihvcHRzLlN0cmluZ3MgIT0gbnVsbCAmJiBvcHRzLlN0cmluZ3MubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcInhsL3NoYXJlZFN0cmluZ3MuXCIgKyB3YmV4dDtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zc3Qob3B0cy5TdHJpbmdzLCBmLCBvcHRzKSk7XG5cdFx0Y3Quc3Rycy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJzaGFyZWRTdHJpbmdzLlwiICsgd2JleHQsIFJFTFMuU1NUKTtcblx0fVxuXG5cdGYgPSBcInhsL3dvcmtib29rLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3diKHdiLCBmLCBvcHRzKSk7XG5cdGN0Lndvcmtib29rcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDEsIGYsIFJFTFMuV0IpO1xuXG5cdC8qIFRPRE86IHNvbWV0aGluZyBtb3JlIGludGVsbGlnZW50IHdpdGggdGhlbWVzICovXG5cblx0ZiA9IFwieGwvdGhlbWUvdGhlbWUxLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV90aGVtZSh3Yi5UaGVtZXMsIG9wdHMpKTtcblx0Y3QudGhlbWVzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ0aGVtZS90aGVtZTEueG1sXCIsIFJFTFMuVEhFTUUpO1xuXG5cdC8qIFRPRE86IHNvbWV0aGluZyBtb3JlIGludGVsbGlnZW50IHdpdGggc3R5bGVzICovXG5cblx0ZiA9IFwieGwvc3R5bGVzLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3N0eSh3YiwgZiwgb3B0cykpO1xuXHRjdC5zdHlsZXMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInN0eWxlcy5cIiArIHdiZXh0LCBSRUxTLlNUWSk7XG5cblx0aWYod2IudmJhcmF3ICYmIHZiYWZtdCkge1xuXHRcdGYgPSBcInhsL3ZiYVByb2plY3QuYmluXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd2IudmJhcmF3KTtcblx0XHRjdC52YmEucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwidmJhUHJvamVjdC5iaW5cIiwgUkVMUy5WQkEpO1xuXHR9XG5cblx0ZiA9IFwieGwvbWV0YWRhdGEuXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfeGxtZXRhKGYpKTtcblx0Y3QubWV0YWRhdGEucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcIm1ldGFkYXRhLlwiICsgd2JleHQsIFJFTFMuWExNRVRBKTtcblxuXHR6aXBfYWRkX2ZpbGUoemlwLCBcIltDb250ZW50X1R5cGVzXS54bWxcIiwgd3JpdGVfY3QoY3QsIG9wdHMpKTtcblx0emlwX2FkZF9maWxlKHppcCwgJ19yZWxzLy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLnJlbHMpKTtcblx0emlwX2FkZF9maWxlKHppcCwgJ3hsL19yZWxzL3dvcmtib29rLicgKyB3YmV4dCArICcucmVscycsIHdyaXRlX3JlbHMob3B0cy53YnJlbHMpKTtcblxuXHRkZWxldGUgb3B0cy5yZXZzc2Y7IGRlbGV0ZSBvcHRzLnNzZjtcblx0cmV0dXJuIHppcDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfemlwX3hsc3god2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6WklQKi8ge1xuXHRfc2hhcGVpZCA9IDEwMjQ7XG5cdGlmKHdiICYmICF3Yi5TU0YpIHtcblx0XHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0fVxuXHRpZih3YiAmJiB3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0b3B0cy5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgb3B0cy5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG9wdHMuc3NmID0gd2IuU1NGO1xuXHR9XG5cdG9wdHMucmVscyA9IHt9OyBvcHRzLndicmVscyA9IHt9O1xuXHRvcHRzLlN0cmluZ3MgPSAvKjo6KCgqL1tdLyo6OiA6YW55KTpTU1QpKi87IG9wdHMuU3RyaW5ncy5Db3VudCA9IDA7IG9wdHMuU3RyaW5ncy5VbmlxdWUgPSAwO1xuXHRpZihicm93c2VyX2hhc19NYXApIG9wdHMucmV2U3RyaW5ncyA9IG5ldyBNYXAoKTtcblx0ZWxzZSB7IG9wdHMucmV2U3RyaW5ncyA9IHt9OyBvcHRzLnJldlN0cmluZ3MuZm9vID0gW107IGRlbGV0ZSBvcHRzLnJldlN0cmluZ3MuZm9vOyB9XG5cdHZhciB3YmV4dCA9IFwieG1sXCI7XG5cdHZhciB2YmFmbXQgPSBWQkFGTVRTLmluZGV4T2Yob3B0cy5ib29rVHlwZSkgPiAtMTtcblx0dmFyIGN0ID0gbmV3X2N0KCk7XG5cdGZpeF93cml0ZV9vcHRzKG9wdHMgPSBvcHRzIHx8IHt9KTtcblx0dmFyIHppcCA9IHppcF9uZXcoKTtcblx0dmFyIGYgPSBcIlwiLCBySWQgPSAwO1xuXG5cdG9wdHMuY2VsbFhmcyA9IFtdO1xuXHRnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIHt9LCB7cmV2c3NmOntcIkdlbmVyYWxcIjowfX0pO1xuXG5cdGlmKCF3Yi5Qcm9wcykgd2IuUHJvcHMgPSB7fTtcblxuXHRmID0gXCJkb2NQcm9wcy9jb3JlLnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jb3JlX3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdGN0LmNvcmVwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDIsIGYsIFJFTFMuQ09SRV9QUk9QUyk7XG5cblx0Lyo6OmlmKCF3Yi5Qcm9wcykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRmID0gXCJkb2NQcm9wcy9hcHAueG1sXCI7XG5cdGlmKHdiLlByb3BzICYmIHdiLlByb3BzLlNoZWV0TmFtZXMpey8qIGVtcHR5ICovfVxuXHRlbHNlIGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suU2hlZXRzKSB3Yi5Qcm9wcy5TaGVldE5hbWVzID0gd2IuU2hlZXROYW1lcztcblx0ZWxzZSB7XG5cdFx0dmFyIF9zbiA9IFtdO1xuXHRcdGZvcih2YXIgX2kgPSAwOyBfaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK19pKVxuXHRcdFx0aWYoKHdiLldvcmtib29rLlNoZWV0c1tfaV18fHt9KS5IaWRkZW4gIT0gMikgX3NuLnB1c2god2IuU2hlZXROYW1lc1tfaV0pO1xuXHRcdHdiLlByb3BzLlNoZWV0TmFtZXMgPSBfc247XG5cdH1cblx0d2IuUHJvcHMuV29ya3NoZWV0cyA9IHdiLlByb3BzLlNoZWV0TmFtZXMubGVuZ3RoO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9leHRfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuZXh0cHJvcHMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAzLCBmLCBSRUxTLkVYVF9QUk9QUyk7XG5cblx0aWYod2IuQ3VzdHByb3BzICE9PSB3Yi5Qcm9wcyAmJiBrZXlzKHdiLkN1c3Rwcm9wc3x8e30pLmxlbmd0aCA+IDApIHtcblx0XHRmID0gXCJkb2NQcm9wcy9jdXN0b20ueG1sXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY3VzdF9wcm9wcyh3Yi5DdXN0cHJvcHMsIG9wdHMpKTtcblx0XHRjdC5jdXN0cHJvcHMucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLnJlbHMsIDQsIGYsIFJFTFMuQ1VTVF9QUk9QUyk7XG5cdH1cblxuXHR2YXIgcGVvcGxlID0gW1wiU2hlZXRKNVwiXTtcblx0b3B0cy50Y2lkID0gMDtcblxuXHRmb3IocklkPTE7cklkIDw9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK3JJZCkge1xuXHRcdHZhciB3c3JlbHMgPSB7JyFpZCc6e319O1xuXHRcdHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW3JJZC0xXV07XG5cdFx0dmFyIF90eXBlID0gKHdzIHx8IHt9KVtcIiF0eXBlXCJdIHx8IFwic2hlZXRcIjtcblx0XHRzd2l0Y2goX3R5cGUpIHtcblx0XHRjYXNlIFwiY2hhcnRcIjpcblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRkZWZhdWx0OlxuXHRcdFx0ZiA9IFwieGwvd29ya3NoZWV0cy9zaGVldFwiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3dzX3htbChySWQtMSwgb3B0cywgd2IsIHdzcmVscykpO1xuXHRcdFx0Y3Quc2hlZXRzLnB1c2goZik7XG5cdFx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwid29ya3NoZWV0cy9zaGVldFwiICsgcklkICsgXCIuXCIgKyB3YmV4dCwgUkVMUy5XU1swXSk7XG5cdFx0fVxuXG5cdFx0aWYod3MpIHtcblx0XHRcdHZhciBjb21tZW50cyA9IHdzWychY29tbWVudHMnXTtcblx0XHRcdHZhciBuZWVkX3ZtbCA9IGZhbHNlO1xuXHRcdFx0dmFyIGNmID0gXCJcIjtcblx0XHRcdGlmKGNvbW1lbnRzICYmIGNvbW1lbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dmFyIG5lZWR0YyA9IGZhbHNlO1xuXHRcdFx0XHRjb21tZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGNhcnIpIHtcblx0XHRcdFx0XHRjYXJyWzFdLmZvckVhY2goZnVuY3Rpb24oYykgeyBpZihjLlQgPT0gdHJ1ZSkgbmVlZHRjID0gdHJ1ZTsgfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZihuZWVkdGMpIHtcblx0XHRcdFx0XHRjZiA9IFwieGwvdGhyZWFkZWRDb21tZW50cy90aHJlYWRlZENvbW1lbnRcIiArIHJJZCArIFwiLlwiICsgd2JleHQ7XG5cdFx0XHRcdFx0emlwX2FkZF9maWxlKHppcCwgY2YsIHdyaXRlX3RjbW50X3htbChjb21tZW50cywgcGVvcGxlLCBvcHRzKSk7XG5cdFx0XHRcdFx0Y3QudGhyZWFkZWRjb21tZW50cy5wdXNoKGNmKTtcblx0XHRcdFx0XHRhZGRfcmVscyh3c3JlbHMsIC0xLCBcIi4uL3RocmVhZGVkQ29tbWVudHMvdGhyZWFkZWRDb21tZW50XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLlRDTU5UKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNmID0gXCJ4bC9jb21tZW50c1wiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdFx0emlwX2FkZF9maWxlKHppcCwgY2YsIHdyaXRlX2NvbW1lbnRzX3htbChjb21tZW50cywgb3B0cykpO1xuXHRcdFx0XHRjdC5jb21tZW50cy5wdXNoKGNmKTtcblx0XHRcdFx0YWRkX3JlbHMod3NyZWxzLCAtMSwgXCIuLi9jb21tZW50c1wiICsgcklkICsgXCIuXCIgKyB3YmV4dCwgUkVMUy5DTU5UKTtcblx0XHRcdFx0bmVlZF92bWwgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYod3NbJyFsZWdhY3knXSkge1xuXHRcdFx0XHRpZihuZWVkX3ZtbCkgemlwX2FkZF9maWxlKHppcCwgXCJ4bC9kcmF3aW5ncy92bWxEcmF3aW5nXCIgKyAocklkKSArIFwiLnZtbFwiLCB3cml0ZV9jb21tZW50c192bWwocklkLCB3c1snIWNvbW1lbnRzJ10pKTtcblx0XHRcdH1cblx0XHRcdGRlbGV0ZSB3c1snIWNvbW1lbnRzJ107XG5cdFx0XHRkZWxldGUgd3NbJyFsZWdhY3knXTtcblx0XHR9XG5cblx0XHRpZih3c3JlbHNbJyFpZCddLnJJZDEpIHppcF9hZGRfZmlsZSh6aXAsIGdldF9yZWxzX3BhdGgoZiksIHdyaXRlX3JlbHMod3NyZWxzKSk7XG5cdH1cblxuXHRpZihvcHRzLlN0cmluZ3MgIT0gbnVsbCAmJiBvcHRzLlN0cmluZ3MubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcInhsL3NoYXJlZFN0cmluZ3MuXCIgKyB3YmV4dDtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zc3RfeG1sKG9wdHMuU3RyaW5ncywgb3B0cykpO1xuXHRcdGN0LnN0cnMucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0LCBSRUxTLlNTVCk7XG5cdH1cblxuXHRmID0gXCJ4bC93b3JrYm9vay5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV93Yl94bWwod2IsIG9wdHMpKTtcblx0Y3Qud29ya2Jvb2tzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMSwgZiwgUkVMUy5XQik7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCB0aGVtZXMgKi9cblxuXHRmID0gXCJ4bC90aGVtZS90aGVtZTEueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3RoZW1lKHdiLlRoZW1lcywgb3B0cykpO1xuXHRjdC50aGVtZXMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInRoZW1lL3RoZW1lMS54bWxcIiwgUkVMUy5USEVNRSk7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCBzdHlsZXMgKi9cblxuXHRmID0gXCJ4bC9zdHlsZXMuXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3R5X3htbCh3Yiwgb3B0cykpO1xuXHRjdC5zdHlsZXMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInN0eWxlcy5cIiArIHdiZXh0LCBSRUxTLlNUWSk7XG5cblx0aWYod2IudmJhcmF3ICYmIHZiYWZtdCkge1xuXHRcdGYgPSBcInhsL3ZiYVByb2plY3QuYmluXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd2IudmJhcmF3KTtcblx0XHRjdC52YmEucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwidmJhUHJvamVjdC5iaW5cIiwgUkVMUy5WQkEpO1xuXHR9XG5cblx0ZiA9IFwieGwvbWV0YWRhdGEuXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfeGxtZXRhX3htbCgpKTtcblx0Y3QubWV0YWRhdGEucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcIm1ldGFkYXRhLlwiICsgd2JleHQsIFJFTFMuWExNRVRBKTtcblxuXHRpZihwZW9wbGUubGVuZ3RoID4gMSkge1xuXHRcdGYgPSBcInhsL3BlcnNvbnMvcGVyc29uLnhtbFwiO1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3Blb3BsZV94bWwocGVvcGxlLCBvcHRzKSk7XG5cdFx0Y3QucGVvcGxlLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInBlcnNvbnMvcGVyc29uLnhtbFwiLCBSRUxTLlBFT1BMRSk7XG5cdH1cblxuXHR6aXBfYWRkX2ZpbGUoemlwLCBcIltDb250ZW50X1R5cGVzXS54bWxcIiwgd3JpdGVfY3QoY3QsIG9wdHMpKTtcblx0emlwX2FkZF9maWxlKHppcCwgJ19yZWxzLy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLnJlbHMpKTtcblx0emlwX2FkZF9maWxlKHppcCwgJ3hsL19yZWxzL3dvcmtib29rLicgKyB3YmV4dCArICcucmVscycsIHdyaXRlX3JlbHMob3B0cy53YnJlbHMpKTtcblxuXHRkZWxldGUgb3B0cy5yZXZzc2Y7IGRlbGV0ZSBvcHRzLnNzZjtcblx0cmV0dXJuIHppcDtcbn1cblxuZnVuY3Rpb24gZmlyc3RieXRlKGYvKjpSYXdEYXRhKi8sby8qOj9UeXBlT3B0cyovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdHZhciB4ID0gXCJcIjtcblx0c3dpdGNoKChvfHx7fSkudHlwZSB8fCBcImJhc2U2NFwiKSB7XG5cdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIFtmWzBdLCBmWzFdLCBmWzJdLCBmWzNdLCBmWzRdLCBmWzVdLCBmWzZdLCBmWzddXTtcblx0XHRjYXNlICdiYXNlNjQnOiB4ID0gQmFzZTY0X2RlY29kZShmLnNsaWNlKDAsMTIpKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYmluYXJ5JzogeCA9IGY7IGJyZWFrO1xuXHRcdGNhc2UgJ2FycmF5JzogIHJldHVybiBbZlswXSwgZlsxXSwgZlsyXSwgZlszXSwgZls0XSwgZls1XSwgZls2XSwgZls3XV07XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyAobyAmJiBvLnR5cGUgfHwgXCJ1bmRlZmluZWRcIikpO1xuXHR9XG5cdHJldHVybiBbeC5jaGFyQ29kZUF0KDApLCB4LmNoYXJDb2RlQXQoMSksIHguY2hhckNvZGVBdCgyKSwgeC5jaGFyQ29kZUF0KDMpLCB4LmNoYXJDb2RlQXQoNCksIHguY2hhckNvZGVBdCg1KSwgeC5jaGFyQ29kZUF0KDYpLCB4LmNoYXJDb2RlQXQoNyldO1xufVxuXG5mdW5jdGlvbiByZWFkX2NmYihjZmIvKjpDRkJDb250YWluZXIqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0aWYoQ0ZCLmZpbmQoY2ZiLCBcIkVuY3J5cHRlZFBhY2thZ2VcIikpIHJldHVybiBwYXJzZV94bHN4Y2ZiKGNmYiwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV94bHNjZmIoY2ZiLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gcmVhZF96aXAoZGF0YS8qOlJhd0RhdGEqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIHppcCwgZCA9IGRhdGE7XG5cdHZhciBvID0gb3B0c3x8e307XG5cdGlmKCFvLnR5cGUpIG8udHlwZSA9IChoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkgPyBcImJ1ZmZlclwiIDogXCJiYXNlNjRcIjtcblx0emlwID0gemlwX3JlYWQoZCwgbyk7XG5cdHJldHVybiBwYXJzZV96aXAoemlwLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZF9wbGFpbnRleHQoZGF0YS8qOnN0cmluZyovLCBvLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBpID0gMDtcblx0bWFpbjogd2hpbGUoaSA8IGRhdGEubGVuZ3RoKSBzd2l0Y2goZGF0YS5jaGFyQ29kZUF0KGkpKSB7XG5cdFx0Y2FzZSAweDBBOiBjYXNlIDB4MEQ6IGNhc2UgMHgyMDogKytpOyBicmVhaztcblx0XHRjYXNlIDB4M0M6IHJldHVybiBwYXJzZV94bG1sKGRhdGEuc2xpY2UoaSksbyk7XG5cdFx0ZGVmYXVsdDogYnJlYWsgbWFpbjtcblx0fVxuXHRyZXR1cm4gUFJOLnRvX3dvcmtib29rKGRhdGEsIG8pO1xufVxuXG5mdW5jdGlvbiByZWFkX3BsYWludGV4dF9yYXcoZGF0YS8qOlJhd0RhdGEqLywgby8qOlBhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgc3RyID0gXCJcIiwgYnl0ZXMgPSBmaXJzdGJ5dGUoZGF0YSwgbyk7XG5cdHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBzdHIgPSBCYXNlNjRfZGVjb2RlKGRhdGEpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiBzdHIgPSBkYXRhOyBicmVhaztcblx0XHRjYXNlICdidWZmZXInOiBzdHIgPSBkYXRhLnRvU3RyaW5nKCdiaW5hcnknKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYXJyYXknOiBzdHIgPSBjYzJzdHIoZGF0YSk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgby50eXBlKTtcblx0fVxuXHRpZihieXRlc1swXSA9PSAweEVGICYmIGJ5dGVzWzFdID09IDB4QkIgJiYgYnl0ZXNbMl0gPT0gMHhCRikgc3RyID0gdXRmOHJlYWQoc3RyKTtcblx0by50eXBlID0gXCJiaW5hcnlcIjtcblx0cmV0dXJuIHJlYWRfcGxhaW50ZXh0KHN0ciwgbyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfdXRmMTYoZGF0YS8qOlJhd0RhdGEqLywgby8qOlBhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgZCA9IGRhdGE7XG5cdGlmKG8udHlwZSA9PSAnYmFzZTY0JykgZCA9IEJhc2U2NF9kZWNvZGUoZCk7XG5cdGQgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgZC5zbGljZSgyKSwgJ3N0cicpO1xuXHRvLnR5cGUgPSBcImJpbmFyeVwiO1xuXHRyZXR1cm4gcmVhZF9wbGFpbnRleHQoZCwgbyk7XG59XG5cbmZ1bmN0aW9uIGJzdHJpZnkoZGF0YS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuICFkYXRhLm1hdGNoKC9bXlxceDAwLVxceDdGXS8pID8gZGF0YSA6IHV0Zjh3cml0ZShkYXRhKTtcbn1cblxuZnVuY3Rpb24gcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKSB7XG5cdGlmKHN0cikgeyBvLnR5cGUgPSBcInN0cmluZ1wiOyByZXR1cm4gUFJOLnRvX3dvcmtib29rKGRhdGEsIG8pOyB9XG5cdHJldHVybiBQUk4udG9fd29ya2Jvb2soZCwgbyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRTeW5jKGRhdGEvKjpSYXdEYXRhKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHJlc2V0X2NwKCk7XG5cdHZhciBvID0gb3B0c3x8e307XG5cdGlmKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSByZXR1cm4gcmVhZFN5bmMobmV3IFVpbnQ4QXJyYXkoZGF0YSksIChvID0gZHVwKG8pLCBvLnR5cGUgPSBcImFycmF5XCIsIG8pKTtcblx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmICFvLnR5cGUpIG8udHlwZSA9IHR5cGVvZiBEZW5vICE9PSBcInVuZGVmaW5lZFwiID8gXCJidWZmZXJcIiA6IFwiYXJyYXlcIjtcblx0dmFyIGQgPSBkYXRhLCBuID0gWzAsMCwwLDBdLCBzdHIgPSBmYWxzZTtcblx0aWYoby5jZWxsU3R5bGVzKSB7IG8uY2VsbE5GID0gdHJ1ZTsgby5zaGVldFN0dWJzID0gdHJ1ZTsgfVxuXHRfc3Nmb3B0cyA9IHt9O1xuXHRpZihvLmRhdGVORikgX3NzZm9wdHMuZGF0ZU5GID0gby5kYXRlTkY7XG5cdGlmKCFvLnR5cGUpIG8udHlwZSA9IChoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkgPyBcImJ1ZmZlclwiIDogXCJiYXNlNjRcIjtcblx0aWYoby50eXBlID09IFwiZmlsZVwiKSB7IG8udHlwZSA9IGhhc19idWYgPyBcImJ1ZmZlclwiIDogXCJiaW5hcnlcIjsgZCA9IHJlYWRfYmluYXJ5KGRhdGEpOyBpZih0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgIWhhc19idWYpIG8udHlwZSA9IFwiYXJyYXlcIjsgfVxuXHRpZihvLnR5cGUgPT0gXCJzdHJpbmdcIikgeyBzdHIgPSB0cnVlOyBvLnR5cGUgPSBcImJpbmFyeVwiOyBvLmNvZGVwYWdlID0gNjUwMDE7IGQgPSBic3RyaWZ5KGRhdGEpOyB9XG5cdGlmKG8udHlwZSA9PSAnYXJyYXknICYmIHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHR2YXIgYWI9bmV3IEFycmF5QnVmZmVyKDMpLCB2dT1uZXcgVWludDhBcnJheShhYik7IHZ1LmZvbz1cImJhclwiO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYoIXZ1LmZvbykge289ZHVwKG8pOyBvLnR5cGU9J2FycmF5JzsgcmV0dXJuIHJlYWRTeW5jKGFiMmEoZCksIG8pO31cblx0fVxuXHRzd2l0Y2goKG4gPSBmaXJzdGJ5dGUoZCwgbykpWzBdKSB7XG5cdFx0Y2FzZSAweEQwOiBpZihuWzFdID09PSAweENGICYmIG5bMl0gPT09IDB4MTEgJiYgblszXSA9PT0gMHhFMCAmJiBuWzRdID09PSAweEExICYmIG5bNV0gPT09IDB4QjEgJiYgbls2XSA9PT0gMHgxQSAmJiBuWzddID09PSAweEUxKSByZXR1cm4gcmVhZF9jZmIoQ0ZCLnJlYWQoZCwgbyksIG8pOyBicmVhaztcblx0XHRjYXNlIDB4MDk6IGlmKG5bMV0gPD0gMHgwOCkgcmV0dXJuIHBhcnNlX3hsc2NmYihkLCBvKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDNDOiByZXR1cm4gcGFyc2VfeGxtbChkLCBvKTtcblx0XHRjYXNlIDB4NDk6XG5cdFx0XHRpZihuWzFdID09PSAweDQ5ICYmIG5bMl0gPT09IDB4MmEgJiYgblszXSA9PT0gMHgwMCkgdGhyb3cgbmV3IEVycm9yKFwiVElGRiBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0XCIpO1xuXHRcdFx0aWYoblsxXSA9PT0gMHg0NCkgcmV0dXJuIHJlYWRfd2JfSUQoZCwgbyk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDB4NTQ6IGlmKG5bMV0gPT09IDB4NDEgJiYgblsyXSA9PT0gMHg0MiAmJiBuWzNdID09PSAweDRDKSByZXR1cm4gRElGLnRvX3dvcmtib29rKGQsIG8pOyBicmVhaztcblx0XHRjYXNlIDB4NTA6IHJldHVybiAoblsxXSA9PT0gMHg0QiAmJiBuWzJdIDwgMHgwOSAmJiBuWzNdIDwgMHgwOSkgPyByZWFkX3ppcChkLCBvKSA6IHJlYWRfcHJuKGRhdGEsIGQsIG8sIHN0cik7XG5cdFx0Y2FzZSAweEVGOiByZXR1cm4gblszXSA9PT0gMHgzQyA/IHBhcnNlX3hsbWwoZCwgbykgOiByZWFkX3BybihkYXRhLCBkLCBvLCBzdHIpO1xuXHRcdGNhc2UgMHhGRjpcblx0XHRcdGlmKG5bMV0gPT09IDB4RkUpIHsgcmV0dXJuIHJlYWRfdXRmMTYoZCwgbyk7IH1cblx0XHRcdGVsc2UgaWYoblsxXSA9PT0gMHgwMCAmJiBuWzJdID09PSAweDAyICYmIG5bM10gPT09IDB4MDApIHJldHVybiBXS18udG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDB4MDA6XG5cdFx0XHRpZihuWzFdID09PSAweDAwKSB7XG5cdFx0XHRcdGlmKG5bMl0gPj0gMHgwMiAmJiBuWzNdID09PSAweDAwKSByZXR1cm4gV0tfLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdFx0XHRpZihuWzJdID09PSAweDAwICYmIChuWzNdID09PSAweDA4IHx8IG5bM10gPT09IDB4MDkpKSByZXR1cm4gV0tfLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAweDAzOiBjYXNlIDB4ODM6IGNhc2UgMHg4QjogY2FzZSAweDhDOiByZXR1cm4gREJGLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdGNhc2UgMHg3QjogaWYoblsxXSA9PT0gMHg1QyAmJiBuWzJdID09PSAweDcyICYmIG5bM10gPT09IDB4NzQpIHJldHVybiBSVEYudG9fd29ya2Jvb2soZCwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwQTogY2FzZSAweDBEOiBjYXNlIDB4MjA6IHJldHVybiByZWFkX3BsYWludGV4dF9yYXcoZCwgbyk7XG5cdFx0Y2FzZSAweDg5OiBpZihuWzFdID09PSAweDUwICYmIG5bMl0gPT09IDB4NEUgJiYgblszXSA9PT0gMHg0NykgdGhyb3cgbmV3IEVycm9yKFwiUE5HIEltYWdlIEZpbGUgaXMgbm90IGEgc3ByZWFkc2hlZXRcIik7IGJyZWFrO1xuXHR9XG5cdGlmKERCRl9TVVBQT1JURURfVkVSU0lPTlMuaW5kZXhPZihuWzBdKSA+IC0xICYmIG5bMl0gPD0gMTIgJiYgblszXSA8PSAzMSkgcmV0dXJuIERCRi50b193b3JrYm9vayhkLCBvKTtcblx0cmV0dXJuIHJlYWRfcHJuKGRhdGEsIGQsIG8sIHN0cik7XG59XG5cbmZ1bmN0aW9uIHJlYWRGaWxlU3luYyhmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdHJldHVybiByZWFkU3luYyhmaWxlbmFtZSwgbyk7XG59XG5mdW5jdGlvbiB3cml0ZV9jZmJfY3RyKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvLyo6V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHRzd2l0Y2goby50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiBjYXNlIFwiYmluYXJ5XCI6IGJyZWFrO1xuXHRcdGNhc2UgXCJidWZmZXJcIjogY2FzZSBcImFycmF5XCI6IG8udHlwZSA9IFwiXCI7IGJyZWFrO1xuXHRcdGNhc2UgXCJmaWxlXCI6IHJldHVybiB3cml0ZV9kbChvLmZpbGUsIENGQi53cml0ZShjZmIsIHt0eXBlOmhhc19idWYgPyAnYnVmZmVyJyA6IFwiXCJ9KSk7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiB0aHJvdyBuZXcgRXJyb3IoXCInc3RyaW5nJyBvdXRwdXQgdHlwZSBpbnZhbGlkIGZvciAnXCIgKyBvLmJvb2tUeXBlICsgXCInIGZpbGVzXCIpO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgby50eXBlKTtcblx0fVxuXHRyZXR1cm4gQ0ZCLndyaXRlKGNmYiwgbyk7XG59XG5cbi8qOjogZGVjbGFyZSB2YXIgZW5jcnlwdF9hZ2lsZTphbnk7ICovXG5mdW5jdGlvbiB3cml0ZV96aXBfdHlwZSh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHR2YXIgbyA9IGR1cChvcHRzfHx7fSk7XG5cdHZhciB6ID0gd3JpdGVfemlwKHdiLCBvKTtcblx0cmV0dXJuIHdyaXRlX3ppcF9kZW5vdWVtZW50KHosIG8pO1xufVxuZnVuY3Rpb24gd3JpdGVfemlwX3R5cGVYTFNYKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0dmFyIHogPSB3cml0ZV96aXBfeGxzeCh3Yiwgbyk7XG5cdHJldHVybiB3cml0ZV96aXBfZGVub3VlbWVudCh6LCBvKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3ppcF9kZW5vdWVtZW50KHovKjphbnkqLywgby8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvb3B0cyA9IHt9O1xuXHR2YXIgZnR5cGUgPSBoYXNfYnVmID8gXCJub2RlYnVmZmVyXCIgOiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgPyBcImFycmF5XCIgOiBcInN0cmluZ1wiKTtcblx0aWYoby5jb21wcmVzc2lvbikgb29wdHMuY29tcHJlc3Npb24gPSAnREVGTEFURSc7XG5cdGlmKG8ucGFzc3dvcmQpIG9vcHRzLnR5cGUgPSBmdHlwZTtcblx0ZWxzZSBzd2l0Y2goby50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiBvb3B0cy50eXBlID0gXCJiYXNlNjRcIjsgYnJlYWs7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiBvb3B0cy50eXBlID0gXCJzdHJpbmdcIjsgYnJlYWs7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiB0aHJvdyBuZXcgRXJyb3IoXCInc3RyaW5nJyBvdXRwdXQgdHlwZSBpbnZhbGlkIGZvciAnXCIgKyBvLmJvb2tUeXBlICsgXCInIGZpbGVzXCIpO1xuXHRcdGNhc2UgXCJidWZmZXJcIjpcblx0XHRjYXNlIFwiZmlsZVwiOiBvb3B0cy50eXBlID0gZnR5cGU7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgby50eXBlKTtcblx0fVxuXHR2YXIgb3V0ID0gei5GdWxsUGF0aHMgPyBDRkIud3JpdGUoeiwge2ZpbGVUeXBlOlwiemlwXCIsIHR5cGU6IC8qOjooKi97XCJub2RlYnVmZmVyXCI6IFwiYnVmZmVyXCIsIFwic3RyaW5nXCI6IFwiYmluYXJ5XCJ9Lyo6OiA6YW55KSovW29vcHRzLnR5cGVdIHx8IG9vcHRzLnR5cGUsIGNvbXByZXNzaW9uOiAhIW8uY29tcHJlc3Npb259KSA6IHouZ2VuZXJhdGUob29wdHMpO1xuXHRpZih0eXBlb2YgRGVubyAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdGlmKHR5cGVvZiBvdXQgPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYoby50eXBlID09IFwiYmluYXJ5XCIgfHwgby50eXBlID09IFwiYmFzZTY0XCIpIHJldHVybiBvdXQ7XG5cdFx0XHRvdXQgPSBuZXcgVWludDhBcnJheShzMmFiKG91dCkpO1xuXHRcdH1cblx0fVxuLypqc2hpbnQgLVcwODMgKi9cblx0aWYoby5wYXNzd29yZCAmJiB0eXBlb2YgZW5jcnlwdF9hZ2lsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiB3cml0ZV9jZmJfY3RyKGVuY3J5cHRfYWdpbGUob3V0LCBvLnBhc3N3b3JkKSwgbyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbi8qanNoaW50ICtXMDgzICovXG5cdGlmKG8udHlwZSA9PT0gXCJmaWxlXCIpIHJldHVybiB3cml0ZV9kbChvLmZpbGUsIG91dCk7XG5cdHJldHVybiBvLnR5cGUgPT0gXCJzdHJpbmdcIiA/IHV0ZjhyZWFkKC8qOjooKi9vdXQvKjo6IDphbnkpKi8pIDogb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jZmJfdHlwZSh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHR2YXIgbyA9IG9wdHN8fHt9O1xuXHR2YXIgY2ZiLyo6Q0ZCQ29udGFpbmVyKi8gPSB3cml0ZV94bHNjZmIod2IsIG8pO1xuXHRyZXR1cm4gd3JpdGVfY2ZiX2N0cihjZmIsIG8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9zdHJpbmdfdHlwZShvdXQvKjpzdHJpbmcqLywgb3B0cy8qOldyaXRlT3B0cyovLCBib20vKjo/c3RyaW5nKi8pLyo6YW55Ki8ge1xuXHRpZighYm9tKSBib20gPSBcIlwiO1xuXHR2YXIgbyA9IGJvbSArIG91dDtcblx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIEJhc2U2NF9lbmNvZGUodXRmOHdyaXRlKG8pKTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiB1dGY4d3JpdGUobyk7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiByZXR1cm4gb3V0O1xuXHRcdGNhc2UgXCJmaWxlXCI6IHJldHVybiB3cml0ZV9kbChvcHRzLmZpbGUsIG8sICd1dGY4Jyk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiB7XG5cdFx0XHRpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyX2Zyb20obywgJ3V0ZjgnKTtcblx0XHRcdGVsc2UgaWYodHlwZW9mIFRleHRFbmNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG8pO1xuXHRcdFx0ZWxzZSByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUobywge3R5cGU6J2JpbmFyeSd9KS5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jaGFyQ29kZUF0KDApOyB9KTtcblx0XHR9XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9zdHh0X3R5cGUob3V0Lyo6c3RyaW5nKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBCYXNlNjRfZW5jb2RlKG91dCk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiByZXR1cm4gb3V0O1xuXHRcdGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIG91dDsgLyogb3ZlcnJpZGUgaW4gc2hlZXRfdG9fdHh0ICovXG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG9wdHMuZmlsZSwgb3V0LCAnYmluYXJ5Jyk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiB7XG5cdFx0XHRpZihoYXNfYnVmKSByZXR1cm4gQnVmZmVyX2Zyb20ob3V0LCAnYmluYXJ5Jyk7XG5cdFx0XHRlbHNlIHJldHVybiBvdXQuc3BsaXQoXCJcIikubWFwKGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGMuY2hhckNvZGVBdCgwKTsgfSk7XG5cdFx0fVxuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcbn1cblxuLyogVE9ETzogdGVzdCBjb25zaXN0ZW5jeSAqL1xuZnVuY3Rpb24gd3JpdGVfYmluYXJ5X3R5cGUob3V0LCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6YW55Ki8ge1xuXHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOlxuXHRcdGNhc2UgXCJiYXNlNjRcIjpcblx0XHRjYXNlIFwiYmluYXJ5XCI6XG5cdFx0XHR2YXIgYnN0ciA9IFwiXCI7XG5cdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IG91dC5sZW5ndGg7ICsraSkgYnN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG91dFtpXSk7XG5cdFx0XHRyZXR1cm4gb3B0cy50eXBlID09ICdiYXNlNjQnID8gQmFzZTY0X2VuY29kZShic3RyKSA6IG9wdHMudHlwZSA9PSAnc3RyaW5nJyA/IHV0ZjhyZWFkKGJzdHIpIDogYnN0cjtcblx0XHRjYXNlIFwiZmlsZVwiOiByZXR1cm4gd3JpdGVfZGwob3B0cy5maWxlLCBvdXQpO1xuXHRcdGNhc2UgXCJidWZmZXJcIjogcmV0dXJuIG91dDtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVTeW5jWExTWCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVPcHRzKi8pIHtcblx0cmVzZXRfY3AoKTtcblx0Y2hlY2tfd2Iod2IpO1xuXHR2YXIgbyA9IGR1cChvcHRzfHx7fSk7XG5cdGlmKG8uY2VsbFN0eWxlcykgeyBvLmNlbGxORiA9IHRydWU7IG8uc2hlZXRTdHVicyA9IHRydWU7IH1cblx0aWYoby50eXBlID09IFwiYXJyYXlcIikgeyBvLnR5cGUgPSBcImJpbmFyeVwiOyB2YXIgb3V0Lyo6c3RyaW5nKi8gPSAod3JpdGVTeW5jWExTWCh3YiwgbykvKjphbnkqLyk7IG8udHlwZSA9IFwiYXJyYXlcIjsgcmV0dXJuIHMyYWIob3V0KTsgfVxuXHRyZXR1cm4gd3JpdGVfemlwX3R5cGVYTFNYKHdiLCBvKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVTeW5jKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykge1xuXHRyZXNldF9jcCgpO1xuXHRjaGVja193Yih3Yik7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0aWYoby5jZWxsU3R5bGVzKSB7IG8uY2VsbE5GID0gdHJ1ZTsgby5zaGVldFN0dWJzID0gdHJ1ZTsgfVxuXHRpZihvLnR5cGUgPT0gXCJhcnJheVwiKSB7IG8udHlwZSA9IFwiYmluYXJ5XCI7IHZhciBvdXQvKjpzdHJpbmcqLyA9ICh3cml0ZVN5bmMod2IsIG8pLyo6YW55Ki8pOyBvLnR5cGUgPSBcImFycmF5XCI7IHJldHVybiBzMmFiKG91dCk7IH1cblx0dmFyIGlkeCA9IDA7XG5cdGlmKG8uc2hlZXQpIHtcblx0XHRpZih0eXBlb2Ygby5zaGVldCA9PSBcIm51bWJlclwiKSBpZHggPSBvLnNoZWV0O1xuXHRcdGVsc2UgaWR4ID0gd2IuU2hlZXROYW1lcy5pbmRleE9mKG8uc2hlZXQpO1xuXHRcdGlmKCF3Yi5TaGVldE5hbWVzW2lkeF0pIHRocm93IG5ldyBFcnJvcihcIlNoZWV0IG5vdCBmb3VuZDogXCIgKyBvLnNoZWV0ICsgXCIgOiBcIiArICh0eXBlb2Ygby5zaGVldCkpO1xuXHR9XG5cdHN3aXRjaChvLmJvb2tUeXBlIHx8ICd4bHNiJykge1xuXHRcdGNhc2UgJ3htbCc6XG5cdFx0Y2FzZSAneGxtbCc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZSh3cml0ZV94bG1sKHdiLCBvKSwgbyk7XG5cdFx0Y2FzZSAnc2xrJzpcblx0XHRjYXNlICdzeWxrJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKFNZTEsuZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2h0bSc6XG5cdFx0Y2FzZSAnaHRtbCc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShzaGVldF90b19odG1sKHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAndHh0JzogcmV0dXJuIHdyaXRlX3N0eHRfdHlwZShzaGVldF90b190eHQod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICdjc3YnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoc2hlZXRfdG9fY3N2KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbywgXCJcXHVmZWZmXCIpO1xuXHRcdGNhc2UgJ2RpZic6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShESUYuZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2RiZic6IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZShEQkYuZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ3Bybic6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShQUk4uZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ3J0Zic6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShSVEYuZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2V0aCc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShFVEguZnJvbV9zaGVldCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2ZvZHMnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUod3JpdGVfb2RzKHdiLCBvKSwgbyk7XG5cdFx0Y2FzZSAnd2sxJzogcmV0dXJuIHdyaXRlX2JpbmFyeV90eXBlKFdLXy5zaGVldF90b193azEod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICd3azMnOiByZXR1cm4gd3JpdGVfYmluYXJ5X3R5cGUoV0tfLmJvb2tfdG9fd2szKHdiLCBvKSwgbyk7XG5cdFx0Y2FzZSAnYmlmZjInOiBpZighby5iaWZmKSBvLmJpZmYgPSAyOyAvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnYmlmZjMnOiBpZighby5iaWZmKSBvLmJpZmYgPSAzOyAvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnYmlmZjQnOiBpZighby5iaWZmKSBvLmJpZmYgPSA0OyByZXR1cm4gd3JpdGVfYmluYXJ5X3R5cGUod3JpdGVfYmlmZl9idWYod2IsIG8pLCBvKTtcblx0XHRjYXNlICdiaWZmNSc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDU7IC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdiaWZmOCc6XG5cdFx0Y2FzZSAneGxhJzpcblx0XHRjYXNlICd4bHMnOiBpZighby5iaWZmKSBvLmJpZmYgPSA4OyByZXR1cm4gd3JpdGVfY2ZiX3R5cGUod2IsIG8pO1xuXHRcdGNhc2UgJ3hsc3gnOlxuXHRcdGNhc2UgJ3hsc20nOlxuXHRcdGNhc2UgJ3hsYW0nOlxuXHRcdGNhc2UgJ3hsc2InOlxuXHRcdGNhc2UgJ251bWJlcnMnOlxuXHRcdGNhc2UgJ29kcyc6IHJldHVybiB3cml0ZV96aXBfdHlwZSh3Yiwgbyk7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yIChcIlVucmVjb2duaXplZCBib29rVHlwZSB8XCIgKyBvLmJvb2tUeXBlICsgXCJ8XCIpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVfYm9va190eXBlKG8vKjpXcml0ZUZpbGVPcHRzKi8pIHtcblx0aWYoby5ib29rVHlwZSkgcmV0dXJuO1xuXHR2YXIgX0JUID0ge1xuXHRcdFwieGxzXCI6IFwiYmlmZjhcIixcblx0XHRcImh0bVwiOiBcImh0bWxcIixcblx0XHRcInNsa1wiOiBcInN5bGtcIixcblx0XHRcInNvY2lhbGNhbGNcIjogXCJldGhcIixcblx0XHRcIlNoMzN0SlNcIjogXCJXVEZcIlxuXHR9O1xuXHR2YXIgZXh0ID0gby5maWxlLnNsaWNlKG8uZmlsZS5sYXN0SW5kZXhPZihcIi5cIikpLnRvTG93ZXJDYXNlKCk7XG5cdGlmKGV4dC5tYXRjaCgvXlxcLlthLXpdKyQvKSkgby5ib29rVHlwZSA9IGV4dC5zbGljZSgxKTtcblx0by5ib29rVHlwZSA9IF9CVFtvLmJvb2tUeXBlXSB8fCBvLmJvb2tUeXBlO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZpbGVTeW5jKHdiLyo6V29ya2Jvb2sqLywgZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0cy8qOj9Xcml0ZUZpbGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzfHx7fTsgby50eXBlID0gJ2ZpbGUnO1xuXHRvLmZpbGUgPSBmaWxlbmFtZTtcblx0cmVzb2x2ZV9ib29rX3R5cGUobyk7XG5cdHJldHVybiB3cml0ZVN5bmMod2IsIG8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZpbGVTeW5jWExTWCh3Yi8qOldvcmtib29rKi8sIGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdHMvKjo/V3JpdGVGaWxlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0c3x8e307IG8udHlwZSA9ICdmaWxlJztcblx0by5maWxlID0gZmlsZW5hbWU7XG5cdHJlc29sdmVfYm9va190eXBlKG8pO1xuXHRyZXR1cm4gd3JpdGVTeW5jWExTWCh3Yiwgbyk7XG59XG5cblxuZnVuY3Rpb24gd3JpdGVGaWxlQXN5bmMoZmlsZW5hbWUvKjpzdHJpbmcqLywgd2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlRmlsZU9wdHMqLywgY2IvKjo/KGU/OkVycm5vRXJyb3IpPT52b2lkKi8pIHtcblx0dmFyIG8gPSBvcHRzfHx7fTsgby50eXBlID0gJ2ZpbGUnO1xuXHRvLmZpbGUgPSBmaWxlbmFtZTtcblx0cmVzb2x2ZV9ib29rX3R5cGUobyk7XG5cdG8udHlwZSA9ICdidWZmZXInO1xuXHR2YXIgX2NiID0gY2I7IGlmKCEoX2NiIGluc3RhbmNlb2YgRnVuY3Rpb24pKSBfY2IgPSAob3B0cy8qOmFueSovKTtcblx0cmV0dXJuIF9mcy53cml0ZUZpbGUoZmlsZW5hbWUsIHdyaXRlU3luYyh3YiwgbyksIF9jYik7XG59XG4vKjo6XG50eXBlIE1KUk9iamVjdCA9IHtcblx0cm93OiBhbnk7XG5cdGlzZW1wdHk6IGJvb2xlYW47XG59O1xuKi9cbmZ1bmN0aW9uIG1ha2VfanNvbl9yb3coc2hlZXQvKjpXb3Jrc2hlZXQqLywgci8qOlJhbmdlKi8sIFIvKjpudW1iZXIqLywgY29scy8qOkFycmF5PHN0cmluZz4qLywgaGVhZGVyLyo6bnVtYmVyKi8sIGhkci8qOkFycmF5PGFueT4qLywgZGVuc2UvKjpib29sZWFuKi8sIG8vKjpTaGVldDJKU09OT3B0cyovKS8qOk1KUk9iamVjdCovIHtcblx0dmFyIHJyID0gZW5jb2RlX3JvdyhSKTtcblx0dmFyIGRlZnZhbCA9IG8uZGVmdmFsLCByYXcgPSBvLnJhdyB8fCAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIFwicmF3XCIpO1xuXHR2YXIgaXNlbXB0eSA9IHRydWU7XG5cdHZhciByb3cvKjphbnkqLyA9IChoZWFkZXIgPT09IDEpID8gW10gOiB7fTtcblx0aWYoaGVhZGVyICE9PSAxKSB7XG5cdFx0aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB0cnkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkocm93LCAnX19yb3dOdW1fXycsIHt2YWx1ZTpSLCBlbnVtZXJhYmxlOmZhbHNlfSk7IH0gY2F0Y2goZSkgeyByb3cuX19yb3dOdW1fXyA9IFI7IH1cblx0XHRlbHNlIHJvdy5fX3Jvd051bV9fID0gUjtcblx0fVxuXHRpZighZGVuc2UgfHwgc2hlZXRbUl0pIGZvciAodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0dmFyIHZhbCA9IGRlbnNlID8gc2hlZXRbUl1bQ10gOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdGlmKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbC50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmKGRlZnZhbCA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblx0XHRcdGlmKGhkcltDXSAhPSBudWxsKSB7IHJvd1toZHJbQ11dID0gZGVmdmFsOyB9XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0dmFyIHYgPSB2YWwudjtcblx0XHRzd2l0Y2godmFsLnQpe1xuXHRcdFx0Y2FzZSAneic6IGlmKHYgPT0gbnVsbCkgYnJlYWs7IGNvbnRpbnVlO1xuXHRcdFx0Y2FzZSAnZSc6IHYgPSAodiA9PSAwID8gbnVsbCA6IHZvaWQgMCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAncyc6IGNhc2UgJ2QnOiBjYXNlICdiJzogY2FzZSAnbic6IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgdHlwZSAnICsgdmFsLnQpO1xuXHRcdH1cblx0XHRpZihoZHJbQ10gIT0gbnVsbCkge1xuXHRcdFx0aWYodiA9PSBudWxsKSB7XG5cdFx0XHRcdGlmKHZhbC50ID09IFwiZVwiICYmIHYgPT09IG51bGwpIHJvd1toZHJbQ11dID0gbnVsbDtcblx0XHRcdFx0ZWxzZSBpZihkZWZ2YWwgIT09IHVuZGVmaW5lZCkgcm93W2hkcltDXV0gPSBkZWZ2YWw7XG5cdFx0XHRcdGVsc2UgaWYocmF3ICYmIHYgPT09IG51bGwpIHJvd1toZHJbQ11dID0gbnVsbDtcblx0XHRcdFx0ZWxzZSBjb250aW51ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJvd1toZHJbQ11dID0gcmF3ICYmICh2YWwudCAhPT0gXCJuXCIgfHwgKHZhbC50ID09PSBcIm5cIiAmJiBvLnJhd051bWJlcnMgIT09IGZhbHNlKSkgPyB2IDogZm9ybWF0X2NlbGwodmFsLHYsbyk7XG5cdFx0XHR9XG5cdFx0XHRpZih2ICE9IG51bGwpIGlzZW1wdHkgPSBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHsgcm93OiByb3csIGlzZW1wdHk6IGlzZW1wdHkgfTtcbn1cblxuXG5mdW5jdGlvbiBzaGVldF90b19qc29uKHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQySlNPTk9wdHMqLykge1xuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSByZXR1cm4gW107XG5cdHZhciB2YWwgPSB7dDonbicsdjowfSwgaGVhZGVyID0gMCwgb2Zmc2V0ID0gMSwgaGRyLyo6QXJyYXk8YW55PiovID0gW10sIHY9MCwgdnY9XCJcIjtcblx0dmFyIHIgPSB7czp7cjowLGM6MH0sZTp7cjowLGM6MH19O1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciByYW5nZSA9IG8ucmFuZ2UgIT0gbnVsbCA/IG8ucmFuZ2UgOiBzaGVldFtcIiFyZWZcIl07XG5cdGlmKG8uaGVhZGVyID09PSAxKSBoZWFkZXIgPSAxO1xuXHRlbHNlIGlmKG8uaGVhZGVyID09PSBcIkFcIikgaGVhZGVyID0gMjtcblx0ZWxzZSBpZihBcnJheS5pc0FycmF5KG8uaGVhZGVyKSkgaGVhZGVyID0gMztcblx0ZWxzZSBpZihvLmhlYWRlciA9PSBudWxsKSBoZWFkZXIgPSAwO1xuXHRzd2l0Y2godHlwZW9mIHJhbmdlKSB7XG5cdFx0Y2FzZSAnc3RyaW5nJzogciA9IHNhZmVfZGVjb2RlX3JhbmdlKHJhbmdlKTsgYnJlYWs7XG5cdFx0Y2FzZSAnbnVtYmVyJzogciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXSk7IHIucy5yID0gcmFuZ2U7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHIgPSByYW5nZTtcblx0fVxuXHRpZihoZWFkZXIgPiAwKSBvZmZzZXQgPSAwO1xuXHR2YXIgcnIgPSBlbmNvZGVfcm93KHIucy5yKTtcblx0dmFyIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG91dC8qOkFycmF5PGFueT4qLyA9IFtdO1xuXHR2YXIgb3V0aSA9IDAsIGNvdW50ZXIgPSAwO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0dmFyIFIgPSByLnMuciwgQyA9IDA7XG5cdHZhciBoZWFkZXJfY250ID0ge307XG5cdGlmKGRlbnNlICYmICFzaGVldFtSXSkgc2hlZXRbUl0gPSBbXTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIWNvbHNcIl0gfHwgW107XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFyb3dzXCJdIHx8IFtdO1xuXHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRpZigoKGNvbGluZm9bQ118fHt9KS5oaWRkZW4pKSBjb250aW51ZTtcblx0XHRjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHR2YWwgPSBkZW5zZSA/IHNoZWV0W1JdW0NdIDogc2hlZXRbY29sc1tDXSArIHJyXTtcblx0XHRzd2l0Y2goaGVhZGVyKSB7XG5cdFx0XHRjYXNlIDE6IGhkcltDXSA9IEMgLSByLnMuYzsgYnJlYWs7XG5cdFx0XHRjYXNlIDI6IGhkcltDXSA9IGNvbHNbQ107IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiBoZHJbQ10gPSBvLmhlYWRlcltDIC0gci5zLmNdOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKHZhbCA9PSBudWxsKSB2YWwgPSB7dzogXCJfX0VNUFRZXCIsIHQ6IFwic1wifTtcblx0XHRcdFx0dnYgPSB2ID0gZm9ybWF0X2NlbGwodmFsLCBudWxsLCBvKTtcblx0XHRcdFx0Y291bnRlciA9IGhlYWRlcl9jbnRbdl0gfHwgMDtcblx0XHRcdFx0aWYoIWNvdW50ZXIpIGhlYWRlcl9jbnRbdl0gPSAxO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRkbyB7IHZ2ID0gdiArIFwiX1wiICsgKGNvdW50ZXIrKyk7IH0gd2hpbGUoaGVhZGVyX2NudFt2dl0pOyBoZWFkZXJfY250W3ZdID0gY291bnRlcjtcblx0XHRcdFx0XHRoZWFkZXJfY250W3Z2XSA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aGRyW0NdID0gdnY7XG5cdFx0fVxuXHR9XG5cdGZvciAoUiA9IHIucy5yICsgb2Zmc2V0OyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRpZiAoKHJvd2luZm9bUl18fHt9KS5oaWRkZW4pIGNvbnRpbnVlO1xuXHRcdHZhciByb3cgPSBtYWtlX2pzb25fcm93KHNoZWV0LCByLCBSLCBjb2xzLCBoZWFkZXIsIGhkciwgZGVuc2UsIG8pO1xuXHRcdGlmKChyb3cuaXNlbXB0eSA9PT0gZmFsc2UpIHx8IChoZWFkZXIgPT09IDEgPyBvLmJsYW5rcm93cyAhPT0gZmFsc2UgOiAhIW8uYmxhbmtyb3dzKSkgb3V0W291dGkrK10gPSByb3cucm93O1xuXHR9XG5cdG91dC5sZW5ndGggPSBvdXRpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG52YXIgcXJlZyA9IC9cIi9nO1xuZnVuY3Rpb24gbWFrZV9jc3Zfcm93KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIHIvKjpSYW5nZSovLCBSLyo6bnVtYmVyKi8sIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8sIGZzLyo6bnVtYmVyKi8sIHJzLyo6bnVtYmVyKi8sIEZTLyo6c3RyaW5nKi8sIG8vKjpTaGVldDJDU1ZPcHRzKi8pLyo6P3N0cmluZyovIHtcblx0dmFyIGlzZW1wdHkgPSB0cnVlO1xuXHR2YXIgcm93Lyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHR4dCA9IFwiXCIsIHJyID0gZW5jb2RlX3JvdyhSKTtcblx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdGlmICghY29sc1tDXSkgY29udGludWU7XG5cdFx0dmFyIHZhbCA9IG8uZGVuc2UgPyAoc2hlZXRbUl18fFtdKVtDXTogc2hlZXRbY29sc1tDXSArIHJyXTtcblx0XHRpZih2YWwgPT0gbnVsbCkgdHh0ID0gXCJcIjtcblx0XHRlbHNlIGlmKHZhbC52ICE9IG51bGwpIHtcblx0XHRcdGlzZW1wdHkgPSBmYWxzZTtcblx0XHRcdHR4dCA9ICcnKyhvLnJhd051bWJlcnMgJiYgdmFsLnQgPT0gXCJuXCIgPyB2YWwudiA6IGZvcm1hdF9jZWxsKHZhbCwgbnVsbCwgbykpO1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgY2MgPSAwOyBpICE9PSB0eHQubGVuZ3RoOyArK2kpIGlmKChjYyA9IHR4dC5jaGFyQ29kZUF0KGkpKSA9PT0gZnMgfHwgY2MgPT09IHJzIHx8IGNjID09PSAzNCB8fCBvLmZvcmNlUXVvdGVzKSB7dHh0ID0gXCJcXFwiXCIgKyB0eHQucmVwbGFjZShxcmVnLCAnXCJcIicpICsgXCJcXFwiXCI7IGJyZWFrOyB9XG5cdFx0XHRpZih0eHQgPT0gXCJJRFwiKSB0eHQgPSAnXCJJRFwiJztcblx0XHR9IGVsc2UgaWYodmFsLmYgIT0gbnVsbCAmJiAhdmFsLkYpIHtcblx0XHRcdGlzZW1wdHkgPSBmYWxzZTtcblx0XHRcdHR4dCA9ICc9JyArIHZhbC5mOyBpZih0eHQuaW5kZXhPZihcIixcIikgPj0gMCkgdHh0ID0gJ1wiJyArIHR4dC5yZXBsYWNlKHFyZWcsICdcIlwiJykgKyAnXCInO1xuXHRcdH0gZWxzZSB0eHQgPSBcIlwiO1xuXHRcdC8qIE5PVEU6IEV4Y2VsIENTViBkb2VzIG5vdCBzdXBwb3J0IGFycmF5IGZvcm11bGFlICovXG5cdFx0cm93LnB1c2godHh0KTtcblx0fVxuXHRpZihvLmJsYW5rcm93cyA9PT0gZmFsc2UgJiYgaXNlbXB0eSkgcmV0dXJuIG51bGw7XG5cdHJldHVybiByb3cuam9pbihGUyk7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2NzdihzaGVldC8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkNTVk9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG8gPSBvcHRzID09IG51bGwgPyB7fSA6IG9wdHM7XG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHJldHVybiBcIlwiO1xuXHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXSk7XG5cdHZhciBGUyA9IG8uRlMgIT09IHVuZGVmaW5lZCA/IG8uRlMgOiBcIixcIiwgZnMgPSBGUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgUlMgPSBvLlJTICE9PSB1bmRlZmluZWQgPyBvLlJTIDogXCJcXG5cIiwgcnMgPSBSUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgZW5kcmVnZXggPSBuZXcgUmVnRXhwKChGUz09XCJ8XCIgPyBcIlxcXFx8XCIgOiBGUykrXCIrJFwiKTtcblx0dmFyIHJvdyA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0by5kZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIGlmICghKChjb2xpbmZvW0NdfHx7fSkuaGlkZGVuKSkgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdHZhciB3ID0gMDtcblx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdGlmICgocm93aW5mb1tSXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0cm93ID0gbWFrZV9jc3Zfcm93KHNoZWV0LCByLCBSLCBjb2xzLCBmcywgcnMsIEZTLCBvKTtcblx0XHRpZihyb3cgPT0gbnVsbCkgeyBjb250aW51ZTsgfVxuXHRcdGlmKG8uc3RyaXApIHJvdyA9IHJvdy5yZXBsYWNlKGVuZHJlZ2V4LFwiXCIpO1xuXHRcdGlmKHJvdyB8fCAoby5ibGFua3Jvd3MgIT09IGZhbHNlKSkgb3V0LnB1c2goKHcrKyA/IFJTIDogXCJcIikgKyByb3cpO1xuXHR9XG5cdGRlbGV0ZSBvLmRlbnNlO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX3R4dChzaGVldC8qOldvcmtzaGVldCovLCBvcHRzLyo6P1NoZWV0MkNTVk9wdHMqLykge1xuXHRpZighb3B0cykgb3B0cyA9IHt9OyBvcHRzLkZTID0gXCJcXHRcIjsgb3B0cy5SUyA9IFwiXFxuXCI7XG5cdHZhciBzID0gc2hlZXRfdG9fY3N2KHNoZWV0LCBvcHRzKTtcblx0aWYodHlwZW9mICRjcHRhYmxlID09ICd1bmRlZmluZWQnIHx8IG9wdHMudHlwZSA9PSAnc3RyaW5nJykgcmV0dXJuIHM7XG5cdHZhciBvID0gJGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsIHMsICdzdHInKTtcblx0cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMjU0KSArIG87XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2Zvcm11bGFlKHNoZWV0Lyo6V29ya3NoZWV0Ki8pLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIHkgPSBcIlwiLCB4LCB2YWw9XCJcIjtcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgcmV0dXJuIFtdO1xuXHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0WychcmVmJ10pLCByciA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgQztcblx0dmFyIGNtZHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0XHR5ID0gY29sc1tDXSArIHJyO1xuXHRcdFx0eCA9IGRlbnNlID8gKHNoZWV0W1JdfHxbXSlbQ10gOiBzaGVldFt5XTtcblx0XHRcdHZhbCA9IFwiXCI7XG5cdFx0XHRpZih4ID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXHRcdFx0ZWxzZSBpZih4LkYgIT0gbnVsbCkge1xuXHRcdFx0XHR5ID0geC5GO1xuXHRcdFx0XHRpZigheC5mKSBjb250aW51ZTtcblx0XHRcdFx0dmFsID0geC5mO1xuXHRcdFx0XHRpZih5LmluZGV4T2YoXCI6XCIpID09IC0xKSB5ID0geSArIFwiOlwiICsgeTtcblx0XHRcdH1cblx0XHRcdGlmKHguZiAhPSBudWxsKSB2YWwgPSB4LmY7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAneicpIGNvbnRpbnVlO1xuXHRcdFx0ZWxzZSBpZih4LnQgPT0gJ24nICYmIHgudiAhPSBudWxsKSB2YWwgPSBcIlwiICsgeC52O1xuXHRcdFx0ZWxzZSBpZih4LnQgPT0gJ2InKSB2YWwgPSB4LnYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIjtcblx0XHRcdGVsc2UgaWYoeC53ICE9PSB1bmRlZmluZWQpIHZhbCA9IFwiJ1wiICsgeC53O1xuXHRcdFx0ZWxzZSBpZih4LnYgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAncycpIHZhbCA9IFwiJ1wiICsgeC52O1xuXHRcdFx0ZWxzZSB2YWwgPSBcIlwiK3gudjtcblx0XHRcdGNtZHNbY21kcy5sZW5ndGhdID0geSArIFwiPVwiICsgdmFsO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gY21kcztcbn1cblxuZnVuY3Rpb24gc2hlZXRfYWRkX2pzb24oX3dzLyo6P1dvcmtzaGVldCovLCBqcy8qOkFycmF5PGFueT4qLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIG9mZnNldCA9ICshby5za2lwSGVhZGVyO1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IF93cyB8fCAoe30vKjphbnkqLyk7XG5cdHZhciBfUiA9IDAsIF9DID0gMDtcblx0aWYod3MgJiYgby5vcmlnaW4gIT0gbnVsbCkge1xuXHRcdGlmKHR5cGVvZiBvLm9yaWdpbiA9PSAnbnVtYmVyJykgX1IgPSBvLm9yaWdpbjtcblx0XHRlbHNlIHtcblx0XHRcdHZhciBfb3JpZ2luLyo6Q2VsbEFkZHJlc3MqLyA9IHR5cGVvZiBvLm9yaWdpbiA9PSBcInN0cmluZ1wiID8gZGVjb2RlX2NlbGwoby5vcmlnaW4pIDogby5vcmlnaW47XG5cdFx0XHRfUiA9IF9vcmlnaW4ucjsgX0MgPSBfb3JpZ2luLmM7XG5cdFx0fVxuXHR9XG5cdHZhciBjZWxsLyo6Q2VsbCovO1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHtzOiB7YzowLCByOjB9LCBlOiB7YzpfQywgcjpfUiArIGpzLmxlbmd0aCAtIDEgKyBvZmZzZXR9fS8qOmFueSovKTtcblx0aWYod3NbJyFyZWYnXSkge1xuXHRcdHZhciBfcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9yYW5nZS5lLmMpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgX3JhbmdlLmUucik7XG5cdFx0aWYoX1IgPT0gLTEpIHsgX1IgPSBfcmFuZ2UuZS5yICsgMTsgcmFuZ2UuZS5yID0gX1IgKyBqcy5sZW5ndGggLSAxICsgb2Zmc2V0OyB9XG5cdH0gZWxzZSB7XG5cdFx0aWYoX1IgPT0gLTEpIHsgX1IgPSAwOyByYW5nZS5lLnIgPSBqcy5sZW5ndGggLSAxICsgb2Zmc2V0OyB9XG5cdH1cblx0dmFyIGhkci8qOkFycmF5PHN0cmluZz4qLyA9IG8uaGVhZGVyIHx8IFtdLCBDID0gMDtcblxuXHRqcy5mb3JFYWNoKGZ1bmN0aW9uIChKUywgUi8qOm51bWJlciovKSB7XG5cdFx0a2V5cyhKUykuZm9yRWFjaChmdW5jdGlvbihrKSB7XG5cdFx0XHRpZigoQz1oZHIuaW5kZXhPZihrKSkgPT0gLTEpIGhkcltDPWhkci5sZW5ndGhdID0gaztcblx0XHRcdHZhciB2ID0gSlNba107XG5cdFx0XHR2YXIgdCA9ICd6Jztcblx0XHRcdHZhciB6ID0gXCJcIjtcblx0XHRcdHZhciByZWYgPSBlbmNvZGVfY2VsbCh7YzpfQyArIEMscjpfUiArIFIgKyBvZmZzZXR9KTtcblx0XHRcdGNlbGwgPSB3c19nZXRfY2VsbF9zdHViKHdzLCByZWYpO1xuXHRcdFx0aWYodiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgISh2IGluc3RhbmNlb2YgRGF0ZSkpe1xuXHRcdFx0XHR3c1tyZWZdID0gdjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmKHR5cGVvZiB2ID09ICdudW1iZXInKSB0ID0gJ24nO1xuXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiB2ID09ICdib29sZWFuJykgdCA9ICdiJztcblx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgdiA9PSAnc3RyaW5nJykgdCA9ICdzJztcblx0XHRcdFx0ZWxzZSBpZih2IGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHRcdHQgPSAnZCc7XG5cdFx0XHRcdFx0aWYoIW8uY2VsbERhdGVzKSB7IHQgPSAnbic7IHYgPSBkYXRlbnVtKHYpOyB9XG5cdFx0XHRcdFx0eiA9IChvLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmKHYgPT09IG51bGwgJiYgby5udWxsRXJyb3IpIHsgdCA9ICdlJzsgdiA9IDA7IH1cblx0XHRcdFx0aWYoIWNlbGwpIHdzW3JlZl0gPSBjZWxsID0gKHt0OnQsIHY6dn0vKjphbnkqLyk7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGNlbGwudCA9IHQ7IGNlbGwudiA9IHY7XG5cdFx0XHRcdFx0ZGVsZXRlIGNlbGwudzsgZGVsZXRlIGNlbGwuUjtcblx0XHRcdFx0XHRpZih6KSBjZWxsLnogPSB6O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHopIGNlbGwueiA9IHo7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9DICsgaGRyLmxlbmd0aCAtIDEpO1xuXHR2YXIgX19SID0gZW5jb2RlX3JvdyhfUik7XG5cdGlmKG9mZnNldCkgZm9yKEMgPSAwOyBDIDwgaGRyLmxlbmd0aDsgKytDKSB3c1tlbmNvZGVfY29sKEMgKyBfQykgKyBfX1JdID0ge3Q6J3MnLCB2OmhkcltDXX07XG5cdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRyZXR1cm4gd3M7XG59XG5mdW5jdGlvbiBqc29uX3RvX3NoZWV0KGpzLyo6QXJyYXk8YW55PiovLCBvcHRzKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHNoZWV0X2FkZF9qc29uKG51bGwsIGpzLCBvcHRzKTsgfVxuXG4vKiBnZXQgY2VsbCwgY3JlYXRpbmcgYSBzdHViIGlmIG5lY2Vzc2FyeSAqL1xuZnVuY3Rpb24gd3NfZ2V0X2NlbGxfc3R1Yih3cy8qOldvcmtzaGVldCovLCBSLCBDLyo6P251bWJlciovKS8qOkNlbGwqLyB7XG5cdC8qIEExIGNlbGwgYWRkcmVzcyAqL1xuXHRpZih0eXBlb2YgUiA9PSBcInN0cmluZ1wiKSB7XG5cdFx0LyogZGVuc2UgKi9cblx0XHRpZihBcnJheS5pc0FycmF5KHdzKSkge1xuXHRcdFx0dmFyIFJDID0gZGVjb2RlX2NlbGwoUik7XG5cdFx0XHRpZighd3NbUkMucl0pIHdzW1JDLnJdID0gW107XG5cdFx0XHRyZXR1cm4gd3NbUkMucl1bUkMuY10gfHwgKHdzW1JDLnJdW1JDLmNdID0ge3Q6J3onfSk7XG5cdFx0fVxuXHRcdHJldHVybiB3c1tSXSB8fCAod3NbUl0gPSB7dDoneid9KTtcblx0fVxuXHQvKiBjZWxsIGFkZHJlc3Mgb2JqZWN0ICovXG5cdGlmKHR5cGVvZiBSICE9IFwibnVtYmVyXCIpIHJldHVybiB3c19nZXRfY2VsbF9zdHViKHdzLCBlbmNvZGVfY2VsbChSKSk7XG5cdC8qIFIgYW5kIEMgYXJlIDAtYmFzZWQgaW5kaWNlcyAqL1xuXHRyZXR1cm4gd3NfZ2V0X2NlbGxfc3R1Yih3cywgZW5jb2RlX2NlbGwoe3I6UixjOkN8fDB9KSk7XG59XG5cbi8qIGZpbmQgc2hlZXQgaW5kZXggZm9yIGdpdmVuIG5hbWUgLyB2YWxpZGF0ZSBpbmRleCAqL1xuZnVuY3Rpb24gd2Jfc2hlZXRfaWR4KHdiLyo6V29ya2Jvb2sqLywgc2gvKjpudW1iZXJ8c3RyaW5nKi8pIHtcblx0aWYodHlwZW9mIHNoID09IFwibnVtYmVyXCIpIHtcblx0XHRpZihzaCA+PSAwICYmIHdiLlNoZWV0TmFtZXMubGVuZ3RoID4gc2gpIHJldHVybiBzaDtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBzaGVldCAjIFwiICsgc2gpO1xuXHR9IGVsc2UgaWYodHlwZW9mIHNoID09IFwic3RyaW5nXCIpIHtcblx0XHR2YXIgaWR4ID0gd2IuU2hlZXROYW1lcy5pbmRleE9mKHNoKTtcblx0XHRpZihpZHggPiAtMSkgcmV0dXJuIGlkeDtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBzaGVldCBuYW1lIHxcIiArIHNoICsgXCJ8XCIpO1xuXHR9IGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgc2hlZXQgfFwiICsgc2ggKyBcInxcIik7XG59XG5cbi8qIHNpbXBsZSBibGFuayB3b3JrYm9vayBvYmplY3QgKi9cbmZ1bmN0aW9uIGJvb2tfbmV3KCkvKjpXb3JrYm9vayovIHtcblx0cmV0dXJuIHsgU2hlZXROYW1lczogW10sIFNoZWV0czoge30gfTtcbn1cblxuLyogYWRkIGEgd29ya3NoZWV0IHRvIHRoZSBlbmQgb2YgYSBnaXZlbiB3b3JrYm9vayAqL1xuZnVuY3Rpb24gYm9va19hcHBlbmRfc2hlZXQod2IvKjpXb3JrYm9vayovLCB3cy8qOldvcmtzaGVldCovLCBuYW1lLyo6P3N0cmluZyovLCByb2xsLyo6P2Jvb2xlYW4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBpID0gMTtcblx0aWYoIW5hbWUpIGZvcig7IGkgPD0gMHhGRkZGOyArK2ksIG5hbWUgPSB1bmRlZmluZWQpIGlmKHdiLlNoZWV0TmFtZXMuaW5kZXhPZihuYW1lID0gXCJTaGVldFwiICsgaSkgPT0gLTEpIGJyZWFrO1xuXHRpZighbmFtZSB8fCB3Yi5TaGVldE5hbWVzLmxlbmd0aCA+PSAweEZGRkYpIHRocm93IG5ldyBFcnJvcihcIlRvbyBtYW55IHdvcmtzaGVldHNcIik7XG5cdGlmKHJvbGwgJiYgd2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUpID49IDApIHtcblx0XHR2YXIgbSA9IG5hbWUubWF0Y2goLyheLio/KShcXGQrKSQvKTtcblx0XHRpID0gbSAmJiArbVsyXSB8fCAwO1xuXHRcdHZhciByb290ID0gbSAmJiBtWzFdIHx8IG5hbWU7XG5cdFx0Zm9yKCsraTsgaSA8PSAweEZGRkY7ICsraSkgaWYod2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUgPSByb290ICsgaSkgPT0gLTEpIGJyZWFrO1xuXHR9XG5cdGNoZWNrX3dzX25hbWUobmFtZSk7XG5cdGlmKHdiLlNoZWV0TmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJXb3Jrc2hlZXQgd2l0aCBuYW1lIHxcIiArIG5hbWUgKyBcInwgYWxyZWFkeSBleGlzdHMhXCIpO1xuXG5cdHdiLlNoZWV0TmFtZXMucHVzaChuYW1lKTtcblx0d2IuU2hlZXRzW25hbWVdID0gd3M7XG5cdHJldHVybiBuYW1lO1xufVxuXG4vKiBzZXQgc2hlZXQgdmlzaWJpbGl0eSAodmlzaWJsZS9oaWRkZW4vdmVyeSBoaWRkZW4pICovXG5mdW5jdGlvbiBib29rX3NldF9zaGVldF92aXNpYmlsaXR5KHdiLyo6V29ya2Jvb2sqLywgc2gvKjpudW1iZXJ8c3RyaW5nKi8sIHZpcy8qOm51bWJlciovKSB7XG5cdGlmKCF3Yi5Xb3JrYm9vaykgd2IuV29ya2Jvb2sgPSB7fTtcblx0aWYoIXdiLldvcmtib29rLlNoZWV0cykgd2IuV29ya2Jvb2suU2hlZXRzID0gW107XG5cblx0dmFyIGlkeCA9IHdiX3NoZWV0X2lkeCh3Yiwgc2gpO1xuXHQvLyAkRmxvd0lnbm9yZVxuXHRpZighd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0pIHdiLldvcmtib29rLlNoZWV0c1tpZHhdID0ge307XG5cblx0c3dpdGNoKHZpcykge1xuXHRcdGNhc2UgMDogY2FzZSAxOiBjYXNlIDI6IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkJhZCBzaGVldCB2aXNpYmlsaXR5IHNldHRpbmcgXCIgKyB2aXMpO1xuXHR9XG5cdC8vICRGbG93SWdub3JlXG5cdHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkhpZGRlbiA9IHZpcztcbn1cblxuLyogc2V0IG51bWJlciBmb3JtYXQgKi9cbmZ1bmN0aW9uIGNlbGxfc2V0X251bWJlcl9mb3JtYXQoY2VsbC8qOkNlbGwqLywgZm10Lyo6c3RyaW5nfG51bWJlciovKSB7XG5cdGNlbGwueiA9IGZtdDtcblx0cmV0dXJuIGNlbGw7XG59XG5cbi8qIHNldCBjZWxsIGh5cGVybGluayAqL1xuZnVuY3Rpb24gY2VsbF9zZXRfaHlwZXJsaW5rKGNlbGwvKjpDZWxsKi8sIHRhcmdldC8qOnN0cmluZyovLCB0b29sdGlwLyo6P3N0cmluZyovKSB7XG5cdGlmKCF0YXJnZXQpIHtcblx0XHRkZWxldGUgY2VsbC5sO1xuXHR9IGVsc2Uge1xuXHRcdGNlbGwubCA9ICh7IFRhcmdldDogdGFyZ2V0IH0vKjpIeXBlcmxpbmsqLyk7XG5cdFx0aWYodG9vbHRpcCkgY2VsbC5sLlRvb2x0aXAgPSB0b29sdGlwO1xuXHR9XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gY2VsbF9zZXRfaW50ZXJuYWxfbGluayhjZWxsLyo6Q2VsbCovLCByYW5nZS8qOnN0cmluZyovLCB0b29sdGlwLyo6P3N0cmluZyovKSB7IHJldHVybiBjZWxsX3NldF9oeXBlcmxpbmsoY2VsbCwgXCIjXCIgKyByYW5nZSwgdG9vbHRpcCk7IH1cblxuLyogYWRkIHRvIGNlbGwgY29tbWVudHMgKi9cbmZ1bmN0aW9uIGNlbGxfYWRkX2NvbW1lbnQoY2VsbC8qOkNlbGwqLywgdGV4dC8qOnN0cmluZyovLCBhdXRob3IvKjo/c3RyaW5nKi8pIHtcblx0aWYoIWNlbGwuYykgY2VsbC5jID0gW107XG5cdGNlbGwuYy5wdXNoKHt0OnRleHQsIGE6YXV0aG9yfHxcIlNoZWV0SlNcIn0pO1xufVxuXG4vKiBzZXQgYXJyYXkgZm9ybXVsYSBhbmQgZmx1c2ggcmVsYXRlZCBjZWxscyAqL1xuZnVuY3Rpb24gc2hlZXRfc2V0X2FycmF5X2Zvcm11bGEod3MvKjpXb3Jrc2hlZXQqLywgcmFuZ2UsIGZvcm11bGEvKjpzdHJpbmcqLywgZHluYW1pYy8qOmJvb2xlYW4qLykge1xuXHR2YXIgcm5nID0gdHlwZW9mIHJhbmdlICE9IFwic3RyaW5nXCIgPyByYW5nZSA6IHNhZmVfZGVjb2RlX3JhbmdlKHJhbmdlKTtcblx0dmFyIHJuZ3N0ciA9IHR5cGVvZiByYW5nZSA9PSBcInN0cmluZ1wiID8gcmFuZ2UgOiBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRmb3IodmFyIFIgPSBybmcucy5yOyBSIDw9IHJuZy5lLnI7ICsrUikgZm9yKHZhciBDID0gcm5nLnMuYzsgQyA8PSBybmcuZS5jOyArK0MpIHtcblx0XHR2YXIgY2VsbCA9IHdzX2dldF9jZWxsX3N0dWIod3MsIFIsIEMpO1xuXHRcdGNlbGwudCA9ICduJztcblx0XHRjZWxsLkYgPSBybmdzdHI7XG5cdFx0ZGVsZXRlIGNlbGwudjtcblx0XHRpZihSID09IHJuZy5zLnIgJiYgQyA9PSBybmcucy5jKSB7XG5cdFx0XHRjZWxsLmYgPSBmb3JtdWxhO1xuXHRcdFx0aWYoZHluYW1pYykgY2VsbC5EID0gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHdzO1xufVxuXG52YXIgdXRpbHMvKjphbnkqLyA9IHtcblx0ZW5jb2RlX2NvbDogZW5jb2RlX2NvbCxcblx0ZW5jb2RlX3JvdzogZW5jb2RlX3Jvdyxcblx0ZW5jb2RlX2NlbGw6IGVuY29kZV9jZWxsLFxuXHRlbmNvZGVfcmFuZ2U6IGVuY29kZV9yYW5nZSxcblx0ZGVjb2RlX2NvbDogZGVjb2RlX2NvbCxcblx0ZGVjb2RlX3JvdzogZGVjb2RlX3Jvdyxcblx0c3BsaXRfY2VsbDogc3BsaXRfY2VsbCxcblx0ZGVjb2RlX2NlbGw6IGRlY29kZV9jZWxsLFxuXHRkZWNvZGVfcmFuZ2U6IGRlY29kZV9yYW5nZSxcblx0Zm9ybWF0X2NlbGw6IGZvcm1hdF9jZWxsLFxuXHRzaGVldF9hZGRfYW9hOiBzaGVldF9hZGRfYW9hLFxuXHRzaGVldF9hZGRfanNvbjogc2hlZXRfYWRkX2pzb24sXG5cdHNoZWV0X2FkZF9kb206IHNoZWV0X2FkZF9kb20sXG5cdGFvYV90b19zaGVldDogYW9hX3RvX3NoZWV0LFxuXHRqc29uX3RvX3NoZWV0OiBqc29uX3RvX3NoZWV0LFxuXHR0YWJsZV90b19zaGVldDogcGFyc2VfZG9tX3RhYmxlLFxuXHR0YWJsZV90b19ib29rOiB0YWJsZV90b19ib29rLFxuXHRzaGVldF90b19jc3Y6IHNoZWV0X3RvX2Nzdixcblx0c2hlZXRfdG9fdHh0OiBzaGVldF90b190eHQsXG5cdHNoZWV0X3RvX2pzb246IHNoZWV0X3RvX2pzb24sXG5cdHNoZWV0X3RvX2h0bWw6IHNoZWV0X3RvX2h0bWwsXG5cdHNoZWV0X3RvX2Zvcm11bGFlOiBzaGVldF90b19mb3JtdWxhZSxcblx0c2hlZXRfdG9fcm93X29iamVjdF9hcnJheTogc2hlZXRfdG9fanNvbixcblx0c2hlZXRfZ2V0X2NlbGw6IHdzX2dldF9jZWxsX3N0dWIsXG5cdGJvb2tfbmV3OiBib29rX25ldyxcblx0Ym9va19hcHBlbmRfc2hlZXQ6IGJvb2tfYXBwZW5kX3NoZWV0LFxuXHRib29rX3NldF9zaGVldF92aXNpYmlsaXR5OiBib29rX3NldF9zaGVldF92aXNpYmlsaXR5LFxuXHRjZWxsX3NldF9udW1iZXJfZm9ybWF0OiBjZWxsX3NldF9udW1iZXJfZm9ybWF0LFxuXHRjZWxsX3NldF9oeXBlcmxpbms6IGNlbGxfc2V0X2h5cGVybGluayxcblx0Y2VsbF9zZXRfaW50ZXJuYWxfbGluazogY2VsbF9zZXRfaW50ZXJuYWxfbGluayxcblx0Y2VsbF9hZGRfY29tbWVudDogY2VsbF9hZGRfY29tbWVudCxcblx0c2hlZXRfc2V0X2FycmF5X2Zvcm11bGE6IHNoZWV0X3NldF9hcnJheV9mb3JtdWxhLFxuXHRjb25zdHM6IHtcblx0XHRTSEVFVF9WSVNJQkxFOiAwLFxuXHRcdFNIRUVUX0hJRERFTjogMSxcblx0XHRTSEVFVF9WRVJZX0hJRERFTjogMlxuXHR9XG59O1xuXG52YXIgX1JlYWRhYmxlO1xuZnVuY3Rpb24gc2V0X3JlYWRhYmxlKFIpIHsgX1JlYWRhYmxlID0gUjsgfVxuXG5mdW5jdGlvbiB3cml0ZV9jc3Zfc3RyZWFtKHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKSB7XG5cdHZhciBzdHJlYW0gPSBfUmVhZGFibGUoKTtcblx0dmFyIG8gPSBvcHRzID09IG51bGwgPyB7fSA6IG9wdHM7XG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHsgc3RyZWFtLnB1c2gobnVsbCk7IHJldHVybiBzdHJlYW07IH1cblx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZShzaGVldFtcIiFyZWZcIl0pO1xuXHR2YXIgRlMgPSBvLkZTICE9PSB1bmRlZmluZWQgPyBvLkZTIDogXCIsXCIsIGZzID0gRlMuY2hhckNvZGVBdCgwKTtcblx0dmFyIFJTID0gby5SUyAhPT0gdW5kZWZpbmVkID8gby5SUyA6IFwiXFxuXCIsIHJzID0gUlMuY2hhckNvZGVBdCgwKTtcblx0dmFyIGVuZHJlZ2V4ID0gbmV3IFJlZ0V4cCgoRlM9PVwifFwiID8gXCJcXFxcfFwiIDogRlMpK1wiKyRcIik7XG5cdHZhciByb3cvKjo/c3RyaW5nKi8gPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdG8uZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIWNvbHNcIl0gfHwgW107XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFyb3dzXCJdIHx8IFtdO1xuXHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSBpZiAoISgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHR2YXIgUiA9IHIucy5yO1xuXHR2YXIgQk9NID0gZmFsc2UsIHcgPSAwO1xuXHRzdHJlYW0uX3JlYWQgPSBmdW5jdGlvbigpIHtcblx0XHRpZighQk9NKSB7IEJPTSA9IHRydWU7IHJldHVybiBzdHJlYW0ucHVzaChcIlxcdUZFRkZcIik7IH1cblx0XHR3aGlsZShSIDw9IHIuZS5yKSB7XG5cdFx0XHQrK1I7XG5cdFx0XHRpZiAoKHJvd2luZm9bUi0xXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0XHRyb3cgPSBtYWtlX2Nzdl9yb3coc2hlZXQsIHIsIFItMSwgY29scywgZnMsIHJzLCBGUywgbyk7XG5cdFx0XHRpZihyb3cgIT0gbnVsbCkge1xuXHRcdFx0XHRpZihvLnN0cmlwKSByb3cgPSByb3cucmVwbGFjZShlbmRyZWdleCxcIlwiKTtcblx0XHRcdFx0aWYocm93IHx8IChvLmJsYW5rcm93cyAhPT0gZmFsc2UpKSByZXR1cm4gc3RyZWFtLnB1c2goKHcrKyA/IFJTIDogXCJcIikgKyByb3cpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG5cdH07XG5cdHJldHVybiBzdHJlYW07XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2h0bWxfc3RyZWFtKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQySFRNTE9wdHMqLykge1xuXHR2YXIgc3RyZWFtID0gX1JlYWRhYmxlKCk7XG5cblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgaGVhZGVyID0gby5oZWFkZXIgIT0gbnVsbCA/IG8uaGVhZGVyIDogSFRNTF9CRUdJTjtcblx0dmFyIGZvb3RlciA9IG8uZm9vdGVyICE9IG51bGwgPyBvLmZvb3RlciA6IEhUTUxfRU5EO1xuXHRzdHJlYW0ucHVzaChoZWFkZXIpO1xuXHR2YXIgciA9IGRlY29kZV9yYW5nZSh3c1snIXJlZiddKTtcblx0by5kZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRzdHJlYW0ucHVzaChtYWtlX2h0bWxfcHJlYW1ibGUod3MsIHIsIG8pKTtcblx0dmFyIFIgPSByLnMucjtcblx0dmFyIGVuZCA9IGZhbHNlO1xuXHRzdHJlYW0uX3JlYWQgPSBmdW5jdGlvbigpIHtcblx0XHRpZihSID4gci5lLnIpIHtcblx0XHRcdGlmKCFlbmQpIHsgZW5kID0gdHJ1ZTsgc3RyZWFtLnB1c2goXCI8L3RhYmxlPlwiICsgZm9vdGVyKTsgfVxuXHRcdFx0cmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xuXHRcdH1cblx0XHR3aGlsZShSIDw9IHIuZS5yKSB7XG5cdFx0XHRzdHJlYW0ucHVzaChtYWtlX2h0bWxfcm93KHdzLCByLCBSLCBvKSk7XG5cdFx0XHQrK1I7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH07XG5cdHJldHVybiBzdHJlYW07XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2pzb25fc3RyZWFtKHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKSB7XG5cdHZhciBzdHJlYW0gPSBfUmVhZGFibGUoe29iamVjdE1vZGU6dHJ1ZX0pO1xuXG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHsgc3RyZWFtLnB1c2gobnVsbCk7IHJldHVybiBzdHJlYW07IH1cblx0dmFyIHZhbCA9IHt0OiduJyx2OjB9LCBoZWFkZXIgPSAwLCBvZmZzZXQgPSAxLCBoZHIvKjpBcnJheTxhbnk+Ki8gPSBbXSwgdj0wLCB2dj1cIlwiO1xuXHR2YXIgciA9IHtzOntyOjAsYzowfSxlOntyOjAsYzowfX07XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIHJhbmdlID0gby5yYW5nZSAhPSBudWxsID8gby5yYW5nZSA6IHNoZWV0W1wiIXJlZlwiXTtcblx0aWYoby5oZWFkZXIgPT09IDEpIGhlYWRlciA9IDE7XG5cdGVsc2UgaWYoby5oZWFkZXIgPT09IFwiQVwiKSBoZWFkZXIgPSAyO1xuXHRlbHNlIGlmKEFycmF5LmlzQXJyYXkoby5oZWFkZXIpKSBoZWFkZXIgPSAzO1xuXHRzd2l0Y2godHlwZW9mIHJhbmdlKSB7XG5cdFx0Y2FzZSAnc3RyaW5nJzogciA9IHNhZmVfZGVjb2RlX3JhbmdlKHJhbmdlKTsgYnJlYWs7XG5cdFx0Y2FzZSAnbnVtYmVyJzogciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXSk7IHIucy5yID0gcmFuZ2U7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHIgPSByYW5nZTtcblx0fVxuXHRpZihoZWFkZXIgPiAwKSBvZmZzZXQgPSAwO1xuXHR2YXIgcnIgPSBlbmNvZGVfcm93KHIucy5yKTtcblx0dmFyIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGNvdW50ZXIgPSAwO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0dmFyIFIgPSByLnMuciwgQyA9IDA7XG5cdHZhciBoZWFkZXJfY250ID0ge307XG5cdGlmKGRlbnNlICYmICFzaGVldFtSXSkgc2hlZXRbUl0gPSBbXTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIWNvbHNcIl0gfHwgW107XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFyb3dzXCJdIHx8IFtdO1xuXHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRpZigoKGNvbGluZm9bQ118fHt9KS5oaWRkZW4pKSBjb250aW51ZTtcblx0XHRjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHR2YWwgPSBkZW5zZSA/IHNoZWV0W1JdW0NdIDogc2hlZXRbY29sc1tDXSArIHJyXTtcblx0XHRzd2l0Y2goaGVhZGVyKSB7XG5cdFx0XHRjYXNlIDE6IGhkcltDXSA9IEMgLSByLnMuYzsgYnJlYWs7XG5cdFx0XHRjYXNlIDI6IGhkcltDXSA9IGNvbHNbQ107IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiBoZHJbQ10gPSBvLmhlYWRlcltDIC0gci5zLmNdOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKHZhbCA9PSBudWxsKSB2YWwgPSB7dzogXCJfX0VNUFRZXCIsIHQ6IFwic1wifTtcblx0XHRcdFx0dnYgPSB2ID0gZm9ybWF0X2NlbGwodmFsLCBudWxsLCBvKTtcblx0XHRcdFx0Y291bnRlciA9IGhlYWRlcl9jbnRbdl0gfHwgMDtcblx0XHRcdFx0aWYoIWNvdW50ZXIpIGhlYWRlcl9jbnRbdl0gPSAxO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRkbyB7IHZ2ID0gdiArIFwiX1wiICsgKGNvdW50ZXIrKyk7IH0gd2hpbGUoaGVhZGVyX2NudFt2dl0pOyBoZWFkZXJfY250W3ZdID0gY291bnRlcjtcblx0XHRcdFx0XHRoZWFkZXJfY250W3Z2XSA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aGRyW0NdID0gdnY7XG5cdFx0fVxuXHR9XG5cdFIgPSByLnMuciArIG9mZnNldDtcblx0c3RyZWFtLl9yZWFkID0gZnVuY3Rpb24oKSB7XG5cdFx0d2hpbGUoUiA8PSByLmUucikge1xuXHRcdFx0aWYgKChyb3dpbmZvW1ItMV18fHt9KS5oaWRkZW4pIGNvbnRpbnVlO1xuXHRcdFx0dmFyIHJvdyA9IG1ha2VfanNvbl9yb3coc2hlZXQsIHIsIFIsIGNvbHMsIGhlYWRlciwgaGRyLCBkZW5zZSwgbyk7XG5cdFx0XHQrK1I7XG5cdFx0XHRpZigocm93LmlzZW1wdHkgPT09IGZhbHNlKSB8fCAoaGVhZGVyID09PSAxID8gby5ibGFua3Jvd3MgIT09IGZhbHNlIDogISFvLmJsYW5rcm93cykpIHtcblx0XHRcdFx0c3RyZWFtLnB1c2gocm93LnJvdyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xuXHR9O1xuXHRyZXR1cm4gc3RyZWFtO1xufVxuXG52YXIgX19zdHJlYW0gPSB7XG5cdHRvX2pzb246IHdyaXRlX2pzb25fc3RyZWFtLFxuXHR0b19odG1sOiB3cml0ZV9odG1sX3N0cmVhbSxcblx0dG9fY3N2OiB3cml0ZV9jc3Zfc3RyZWFtLFxuICBzZXRfcmVhZGFibGU6IHNldF9yZWFkYWJsZVxufTtcbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gWExTWC52ZXJzaW9uO1xuZXhwb3J0IHtcblx0cGFyc2VfeGxzY2ZiLFxuXHRwYXJzZV96aXAsXG5cdHJlYWRTeW5jIGFzIHJlYWQsXG5cdHJlYWRGaWxlU3luYyBhcyByZWFkRmlsZSxcblx0cmVhZEZpbGVTeW5jLFxuXHR3cml0ZVN5bmMgYXMgd3JpdGUsXG5cdHdyaXRlRmlsZVN5bmMgYXMgd3JpdGVGaWxlLFxuXHR3cml0ZUZpbGVTeW5jLFxuXHR3cml0ZUZpbGVBc3luYyxcblx0d3JpdGVTeW5jWExTWCBhcyB3cml0ZVhMU1gsXG5cdHdyaXRlRmlsZVN5bmNYTFNYIGFzIHdyaXRlRmlsZVhMU1gsXG5cdHV0aWxzLFxuXHRfX3N0cmVhbSBhcyBzdHJlYW0sXG5cdFNTRixcblx0Q0ZCXG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cblxuLy8g5p2l5rqQ5LqO572R57ucIOaciee7huW+ruaUueWKqFxuXG5pbXBvcnQgJy4vX2Jsb2InXG5pbXBvcnQgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQXJyYXkodGFibGUpIHtcbiAgICB2YXIgb3V0ID0gW107XG4gICAgdmFyIHJvd3MgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xuICAgIHZhciByYW5nZXMgPSBbXTtcbiAgICBmb3IgKHZhciBSID0gMDsgUiA8IHJvd3MubGVuZ3RoOyArK1IpIHtcbiAgICAgICAgdmFyIG91dFJvdyA9IFtdO1xuICAgICAgICB2YXIgcm93ID0gcm93c1tSXTtcbiAgICAgICAgdmFyIGNvbHVtbnMgPSByb3cucXVlcnlTZWxlY3RvckFsbCgndGQnKTtcbiAgICAgICAgZm9yICh2YXIgQyA9IDA7IEMgPCBjb2x1bW5zLmxlbmd0aDsgKytDKSB7XG4gICAgICAgICAgICB2YXIgY2VsbCA9IGNvbHVtbnNbQ107XG4gICAgICAgICAgICB2YXIgY29sc3BhbiA9IGNlbGwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJyk7XG4gICAgICAgICAgICB2YXIgcm93c3BhbiA9IGNlbGwuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2VsbFZhbHVlID0gY2VsbC5pbm5lclRleHQ7XG4gICAgICAgICAgICBpZiAoY2VsbFZhbHVlICE9PSBcIlwiICYmIGNlbGxWYWx1ZSA9PSArY2VsbFZhbHVlKSBjZWxsVmFsdWUgPSArY2VsbFZhbHVlO1xuXG4gICAgICAgICAgICAvL1NraXAgcmFuZ2VzXG4gICAgICAgICAgICByYW5nZXMuZm9yRWFjaChmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoUiA+PSByYW5nZS5zLnIgJiYgUiA8PSByYW5nZS5lLnIgJiYgb3V0Um93Lmxlbmd0aCA+PSByYW5nZS5zLmMgJiYgb3V0Um93Lmxlbmd0aCA8PSByYW5nZS5lLmMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcmFuZ2UuZS5jIC0gcmFuZ2Uucy5jOyArK2kpIG91dFJvdy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvL0hhbmRsZSBSb3cgU3BhblxuICAgICAgICAgICAgaWYgKHJvd3NwYW4gfHwgY29sc3Bhbikge1xuICAgICAgICAgICAgICAgIHJvd3NwYW4gPSByb3dzcGFuIHx8IDE7XG4gICAgICAgICAgICAgICAgY29sc3BhbiA9IGNvbHNwYW4gfHwgMTtcbiAgICAgICAgICAgICAgICByYW5nZXMucHVzaCh7czoge3I6IFIsIGM6IG91dFJvdy5sZW5ndGh9LCBlOiB7cjogUiArIHJvd3NwYW4gLSAxLCBjOiBvdXRSb3cubGVuZ3RoICsgY29sc3BhbiAtIDF9fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA7XG5cbiAgICAgICAgICAgIC8vSGFuZGxlIFZhbHVlXG4gICAgICAgICAgICBvdXRSb3cucHVzaChjZWxsVmFsdWUgIT09IFwiXCIgPyBjZWxsVmFsdWUgOiBudWxsKTtcblxuICAgICAgICAgICAgLy9IYW5kbGUgQ29sc3BhblxuICAgICAgICAgICAgaWYgKGNvbHNwYW4pIGZvciAodmFyIGsgPSAwOyBrIDwgY29sc3BhbiAtIDE7ICsraykgb3V0Um93LnB1c2gobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnB1c2gob3V0Um93KTtcbiAgICB9XG4gICAgcmV0dXJuIFtvdXQsIHJhbmdlc107XG59O1xuXG5mdW5jdGlvbiBkYXRlbnVtKHYsIGRhdGUxOTA0KSB7XG4gICAgaWYgKGRhdGUxOTA0KSB2ICs9IDE0NjI7XG4gICAgdmFyIGVwb2NoID0gRGF0ZS5wYXJzZSh2KTtcbiAgICByZXR1cm4gKGVwb2NoIC0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xufVxuXG5mdW5jdGlvbiBzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyhkYXRhLCBvcHRzPXt9KSB7XG4gICAgdmFyIHdzID0ge307XG4gICAgdmFyIHJhbmdlID0ge3M6IHtjOiAxMDAwMDAwMCwgcjogMTAwMDAwMDB9LCBlOiB7YzogMCwgcjogMH19O1xuICAgIGZvciAodmFyIFIgPSAwOyBSICE9IGRhdGEubGVuZ3RoOyArK1IpIHtcbiAgICAgICAgZm9yICh2YXIgQyA9IDA7IEMgIT0gZGF0YVtSXS5sZW5ndGg7ICsrQykge1xuICAgICAgICAgICAgaWYgKHJhbmdlLnMuciA+IFIpIHJhbmdlLnMuciA9IFI7XG4gICAgICAgICAgICBpZiAocmFuZ2Uucy5jID4gQykgcmFuZ2Uucy5jID0gQztcbiAgICAgICAgICAgIGlmIChyYW5nZS5lLnIgPCBSKSByYW5nZS5lLnIgPSBSO1xuICAgICAgICAgICAgaWYgKHJhbmdlLmUuYyA8IEMpIHJhbmdlLmUuYyA9IEM7XG4gICAgICAgICAgICB2YXIgY2VsbCA9IHt2OiBkYXRhW1JdW0NdfTtcbiAgICAgICAgICAgIGlmIChjZWxsLnYgPT0gbnVsbCkgY29udGludWU7XG4gICAgICAgICAgICB2YXIgY2VsbF9yZWYgPSBYTFNYLnV0aWxzLmVuY29kZV9jZWxsKHtjOiBDLCByOiBSfSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC52ID09PSAnbnVtYmVyJykgY2VsbC50ID0gJ24nO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNlbGwudiA9PT0gJ2Jvb2xlYW4nKSBjZWxsLnQgPSAnYic7XG4gICAgICAgICAgICBlbHNlIGlmIChjZWxsLnYgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgY2VsbC50ID0gJ24nO1xuICAgICAgICAgICAgICAgIGNlbGwueiA9IFhMU1guU1NGLl90YWJsZVsxNF07XG4gICAgICAgICAgICAgICAgY2VsbC52ID0gZGF0ZW51bShjZWxsLnYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBjZWxsLnQgPSAncyc7XG4gICAgICAgICAgICB3c1tjZWxsX3JlZl0gPSBjZWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyYW5nZS5zLmMgPCAxMDAwMDAwMCkgd3NbJyFyZWYnXSA9IFhMU1gudXRpbHMuZW5jb2RlX3JhbmdlKHJhbmdlKTtcbiAgICByZXR1cm4gd3M7XG59XG5cbmZ1bmN0aW9uIFdvcmtib29rKCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBXb3JrYm9vaykpIHJldHVybiBuZXcgV29ya2Jvb2soKTtcbiAgICB0aGlzLlNoZWV0TmFtZXMgPSBbXTtcbiAgICB0aGlzLlNoZWV0cyA9IHt9O1xufVxuXG5mdW5jdGlvbiBzMmFiKHMpIHtcbiAgICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKHMubGVuZ3RoKTtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gcy5sZW5ndGg7ICsraSkgdmlld1tpXSA9IHMuY2hhckNvZGVBdChpKSAmIDB4RkY7XG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydF90YWJsZV90b19leGNlbChpZCkge1xuICAgIHZhciB0aGVUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICB2YXIgb28gPSBnZW5lcmF0ZUFycmF5KHRoZVRhYmxlKTtcbiAgICB2YXIgcmFuZ2VzID0gb29bMV07XG5cbiAgICAvKiBvcmlnaW5hbCBkYXRhICovXG4gICAgdmFyIGRhdGEgPSBvb1swXTtcbiAgICB2YXIgd3NfbmFtZSA9IFwiU2hlZXRKU1wiO1xuXG4gICAgdmFyIHdiID0gbmV3IFdvcmtib29rKCksIHdzID0gc2hlZXRfZnJvbV9hcnJheV9vZl9hcnJheXMoZGF0YSk7XG5cbiAgICAvKiBhZGQgcmFuZ2VzIHRvIHdvcmtzaGVldCAqL1xuICAgIC8vIHdzWychY29scyddID0gWydhcHBsZScsICdiYW5hbiddO1xuICAgIHdzWychbWVyZ2VzJ10gPSByYW5nZXM7XG5cbiAgICAvKiBhZGQgd29ya3NoZWV0IHRvIHdvcmtib29rICovXG4gICAgd2IuU2hlZXROYW1lcy5wdXNoKHdzX25hbWUpO1xuICAgIHdiLlNoZWV0c1t3c19uYW1lXSA9IHdzO1xuXG4gICAgdmFyIHdib3V0ID0gWExTWC53cml0ZSh3Yiwge2Jvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5J30pO1xuXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhuZXcgQmxvYihbczJhYih3Ym91dCldLCB7dHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIn0pLCBcInRlc3QueGxzeFwiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0X2pzb25fdG9fZXhjZWwodGgsIGpzb25EYXRhLCBkZWZhdWx0VGl0bGUsIG9wdGlvbnMgPSB7IG1lcmdlczogW10sIGhlYWRlcjogbnVsbCxjb2xzOm51bGwgfSkge1xuXG4gICAgLyogb3JpZ2luYWwgZGF0YSAqL1xuXG4gICAgdmFyIGRhdGEgPSBqc29uRGF0YTtcbiAgICBkYXRhLnVuc2hpZnQodGgpO1xuICAgIGlmIChvcHRpb25zLmhlYWRlcikgZGF0YS51bnNoaWZ0KFtvcHRpb25zLmhlYWRlcl0pO1xuICAgIHZhciB3c19uYW1lID0gXCJTaGVldEpTXCI7XG5cbiAgICBjb25zdCBvcHRzID0ge1xuICAgIH1cbiAgICB2YXIgd2IgPSBuZXcgV29ya2Jvb2soKSwgd3MgPSBzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyhkYXRhLG9wdHMpO1xuXG4gICAgLyogYWRkIG1lcmdlcyBhcmVhIHRvIHdvcmtzaGVldCAqL1xuICAgIGxldCB7IG1lcmdlcyB9ID0gb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIG1lcmdlc1swXSA9PSAnc3RyaW5nJyAmJiBtZXJnZXMubGVuZ3RoID09IDIpIG1lcmdlcyA9IFttZXJnZXNdIC8vIGp1c3Qgb25lICMgWydBMScsICdDMSddID0gPiBbWydBMScsICdDMSddXVxuICAgIG1lcmdlcyA9IG1lcmdlcy5tYXAoaSA9PiBpIGluc3RhbmNlb2YgQXJyYXkgPyB7IHM6IGlbMF0sIGU6IGlbMV0gfSA6IGkpOyAvLyBiZSBzb3J0IDopICMgWydBMScsICdDMSddID0+IHsgczogJ0ExJywgZTogJ0MzJyB9XG4gICAgd3NbJyFtZXJnZXMnXSA9IG1lcmdlcztcblxuICAgIGlmKG9wdGlvbnMuY29scyl7XG4gICAgICB3c1tcIiFjb2xzXCJdID0gb3B0aW9ucy5jb2xzO1xuICAgIH1cblxuICAgIC8qIGFkZCB3b3Jrc2hlZXQgdG8gd29ya2Jvb2sgKi9cbiAgICB3Yi5TaGVldE5hbWVzLnB1c2god3NfbmFtZSk7XG4gICAgd2IuU2hlZXRzW3dzX25hbWVdID0gd3M7XG5cbiAgICB2YXIgd2JvdXQgPSBYTFNYLndyaXRlKHdiLCB7Ym9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknfSk7XG4gICAgdmFyIHRpdGxlID0gZGVmYXVsdFRpdGxlIHx8ICfliJfooagnXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhuZXcgQmxvYihbczJhYih3Ym91dCldLCB7dHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIn0pLCB0aXRsZSArIFwiLnhsc3hcIilcbn1cbiIsbnVsbCxudWxsXSwibmFtZXMiOlsiZ2V0Q2FsbGVySW5mbyIsIl9hIiwiYmxhbmsiLCJhcmdzIiwibG9nSW5mbyIsImxvZ1dhcm4iLCJsb2dFcnJvciIsImVycm9yIiwid2FybiIsImluZm8iLCJkZWJ1ZyIsImNhbGxlckluZm8iLCJsb2ciLCJjYWxsZXIiLCJsb2dnZXIiLCJzZXRMb2dnZXIiLCJvcHRzIiwibGV2ZWwiLCJpc0VtcHR5IiwidmFsdWUiLCJpc0FsbEVtcHR5IiwidmFsdWVzIiwiaGFzRW1wdHkiLCJTdHJpbmdVdGlscyIsInRyYWNlIiwibmFtZSIsImVuYWJsZSIsImNyZWF0ZUFzeW5jQ29tcG9uZW50IiwiZXMiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsInJldHJ5IiwiZmFpbCIsImF0dGVtcHRzIiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50IiwiYXBwIiwib3B0aW9ucyIsImFzeW5jQ29tcG9uZW50IiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50cyIsIm1vZHVsZXMiLCJleGNsdWRlcyIsInBpY2tOYW1lRXhwIiwidHJhbnNmb3JtIiwiaW1wb3J0cyIsInRyYW5zZm9ybUZyb21HbG9iIiwiZm9yRWFjaCIsIml0ZW0iLCJrZXkiLCJpbnN0YWxsU3luY0NvbXBvbmVudHMiLCJjb21wb25lbnRzIiwicmVzdWx0IiwiY2FtZWxDYXNlIiwidXBwZXJGaXJzdCIsImxvYWRBc3luY0NvbXBvbmVudEZyb21HbG9iIiwibWFwIiwibG9hZENvbXBvbmVudEZyb21HbG9iIiwidml0ZSIsIlRhYmxlU3RvcmUiLCJfX3B1YmxpY0ZpZWxkIiwidGFibGVOYW1lIiwicHJlZml4IiwidGFibGVJZCIsInNhdmVkIiwidGFibGUiLCIkcm91dGUiLCJrZXlUeXBlIiwicnhBcnJJbmRleCIsInJ4VmFyTmFtZSIsInJ4UXVvdCIsImpvaW5QYXRocyIsInBhdGhzIiwiYWNjIiwicCIsImdldFBhdGhUb1N0cmluZyIsIl8iLCJwYXRoVG9TdHJpbmciLCJwYXRoIiwicHJlZml4ZXMiLCJ0eXBlIiwiaGFzIiwiaXNPYmplY3QiLCJnZXRJdGVyYXRlIiwiaXRlcmF0ZSIsIm9iaiIsImNhbGxiYWNrIiwiYnJva2VuIiwiYnJlYWtJdCIsImRlc2NyaWJlVmFsdWUiLCJwYXJlbnQiLCJjcCIsImkiLCJjaGlsZHJlbiIsImNvbnRleHRSZWFkZXIiLCJDb250ZXh0UmVhZGVyIiwiZXJyIiwic2NwIiwiZ2V0RWxlbWVudHMiLCJnZXRPd25DaGlsZHJlbiIsImNoaWxkcmVuUGF0aCIsInN0ckNoaWxkcmVuUGF0aCIsInN0ckNoaWxkUGF0aFByZWZpeCIsInJlcyIsInZhbCIsInN0ckNoaWxkUGF0aCIsInBhdGhGb3JtYXRTdHJpbmciLCJjaGlsZEtleSIsImFmdGVySXRlcmF0ZSIsImN1clBhcmVudCIsImlzT2JqZWN0RW1wdHkiLCJvd25Qcm9wZXJ0aWVzT25seSIsImdldEVhY2hEZWVwIiwiZWFjaERlZXAiLCJpZGVudGl0eSIsIm1lcmdlIiwiaXNTdHJpbmciLCJ0b1BhdGgiLCJkZWVwZGFzaCIsImRhc2giLCJyZWYiLCJza2lwcyIsImtleXMiLCJwQXR0cnMiLCJjb3B5VG9DbGlwYm9hcmRUcmFkaXRpb25hbCIsInRleHQiLCJ0ZXh0QXJlYSIsInN1Y2Nlc3NmdWwiLCJjb3B5VG9DbGlwYm9hcmQiLCJyZWFkRnJvbUNsaXBib2FyZFRyYWRpdGlvbmFsIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRUb0NsaXBib2FyZCIsIm1lbW9yeUNsaXBib2FyZCIsInJlYWN0aXZlIiwiY29weVRvTWVtb3J5IiwicmVhZFRvTWVtb3J5IiwiY2xlYXJNZW1vcnlDbGlwYm9hcmQiLCJ1dGlscyIsInN0cmluZ3MiLCJzdG9yZSIsImRlZmF1bHRDcnVkT3B0aW9ucyIsImN0eCIsImNydWRPcHRpb25zUmVmIiwiY3QiLCJjb21wdXRlZCIsInVpIiwidWlDb250ZXh0IiwidHJpZ2dlciIsImZvcm0iLCJfYiIsImNsaXBib2FyZERhdGEiLCJlIiwiZG9DbG9zZSIsInJlc2V0Iiwic3VibWl0IiwidG90YWwiLCJhbnRkdkNvbHNwYW4iLCJsYWJlbFNwYW4iLCJhc3Npc3QiLCJ1c2VVaSIsImJ1dHRvbiIsImNhc2NhZGVyIiwiemhDTiIsImVuIiwidCIsImdldCIsImFyZyIsImluZGV4IiwiSTE4biIsImluc3RhbmNlIiwibG9jYWxlcyIsIm1lc3NhZ2UiLCJmc0Nsb25lIiwiY2xvbmVEZWVwIiwiaTE4biIsInVzZUkxOG4iLCJtb2R1bGUiLCJ0aGlzIiwiciIsIm4iLCJzIiwiYSIsImRheWpzIiwiYWR2YW5jZWRGb3JtYXQiLCJkb0Zvcm1hdCIsImRhdGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0dGVyIiwiZGF0ZXJhbmdlRm9ybWF0dGVyIiwiZGF0ZXRpbWVyYW5nZUZvcm1hdHRlciIsImYiLCJvIiwidSIsImQiLCJ3ZWVrZGF5IiwibG9jYWxlRGF0YSIsIndlZWtPZlllYXIiLCJkYXRlJDEiLCJidWlsZERhdGVWYWx1ZSIsInNjb3BlIiwicm93IiwiZWwiLCJpY29uIiwibnVtYmVyJDEiLCJwaG9uZSQxIiwiY29sdW1uIiwicmV0Iiwic2VsZWN0IiwidHJlZSIsInR5cGVMaXN0IiwiZGVmYXVsdFR5cGVDcmVhdG9ycyIsImRlZmF1bHRUeXBlcyIsImdldFR5cGVzIiwiZ2V0VHlwZSIsImFkZFR5cGVzIiwibmV3VHlwZXMiLCJ0eXBlcyQxIiwiY3JlYXRvciIsIl9zZmNfbWFpbiREIiwiZGVmaW5lQ29tcG9uZW50IiwicGFnZVJlZiIsIm9uTW91bnRlZCIsIl9ob2lzdGVkXzEiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfNCIsIiRzbG90cyIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfY3JlYXRlQ29tbWVudFZOb2RlIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ob2lzdGVkXzMiLCJpc1VuTWVyZ2VhYmxlIiwic3JjVmFsdWUiLCJVbk1lcmdlYWJsZSIsImlzUmVmIiwiaXNTaGFsbG93IiwiaXNVbkNsb25lYWJsZSIsInRhcmdldCIsInNvdXJjZXMiLCJjdXN0b21pemVyIiwib2JqVmFsdWUiLCJpc0FycmF5IiwiZm91bmQiLCJtZXJnZVdpdGgiLCJjbG9uZURlZXBXaXRoIiwiVW5NZXJnZWFibGUkMSIsImNsb25lYWJsZSIsInVzZU1lcmdlIiwiaXNBc3luY0NvbXB1dGUiLCJBc3luY0NvbXB1dGVWYWx1ZSIsImlzU3luY0NvbXB1dGUiLCJDb21wdXRlVmFsdWUiLCJmaW5kQ29tcHV0ZVZhbHVlcyIsImlzQXN5bmMiLCJmb3VuZE1hcCIsImNoZWNrRnVuYyIsImNvbnRleHQiLCJleGNsdWRlIiwiZG9Bc3luY0NvbXB1dGUiLCJkZXBlbmRBc3luY1ZhbHVlcyIsImdldENvbnRleHRGbiIsImFzeW5jVmFsdWVNYXAiLCJzZXRBc3luY0NvbXB1dGVWYWx1ZSIsImFzeW5jVmFsdWVzTWFwIiwidmFsdWVSZWYiLCJzZXQiLCJkb0NvbXB1dGVkIiwiZ2V0VGFyZ2V0RnVuYyIsInVzZXJDb21wdXRlZEZuIiwiZGVwZW5kVmFsdWVzIiwiYXN5bmNDb3VudCIsInN5bmNDb3VudCIsImNvbXB1dGVGbiIsImNvbXB1dGUiLCJhc3luY0ZuIiwiZGVmYXVsdFZhbHVlIiwiYXN5bmNSZWYiLCJjb21wdXRlZFZhbHVlIiwid2F0Y2giLCJhc3luY0NvbXB1dGUiLCJ1c2VDb21wdXRlIiwiQ29uc3RhbnRzIiwibWVyZ2VDb2x1bW5QbHVnaW5zIiwicmVnaXN0ZXJNZXJnZUNvbHVtblBsdWdpbiIsInBsdWdpbiIsInJlbW92ZSIsInB1c2giLCJzb3J0IiwiYiIsIm9yZGVyIiwibWVyZ2VDb2x1bW5EaWN0IiwiZGljdCIsImNvbXBvbmVudCIsInNoYWxsb3dSZWFjdGl2ZSIsIm1lcmdlQ29sdW1uVHlwZSIsInR5cGVDaGFpbiIsIkFycmF5IiwiYmFzZSIsInR5cGVPcHRpb25zIiwidHlwZXMiLCJtZXJnZVBsdWdpbnMiLCJoYW5kbGUiLCJjb2x1bW5Qcm9wcyIsImNydWRPcHRpb25zIiwic2V0dGluZ3MiLCJ2aWV3Rm9ybVVzZUNlbGxDb21wb25lbnQiLCJ2aWV3Rm9ybUNvbHVtbiIsImluY2x1ZGVzIiwicmVuZGVyIiwiX2NyZWF0ZVZOb2RlIiwidmlld0Zvcm0iLCJhZGRGb3JtIiwicnVsZXMiLCJydWxlIiwiZWRpdEZvcm0iLCJzZWFyY2giLCJtZXJnZVBsdWdpbiIsInNldHVwT3B0aW9uc0NvbHVtbnMiLCJjb2x1bW5zIiwidXNlck9wdGlvbnMiLCJpbml0ZWRDb2x1bW5zIiwiYnVpbGRPcHRpb25zQ29sdW1uc0ZsYXRNYXAiLCJidWlsZFRhYmxlQ29sdW1uc0ZsYXRNYXAiLCJidWlsZFRhYmxlQ29sdW1uIiwiY29sVGVtcGxhdGUiLCJ0YWJsZUNvbHVtbiIsInRpdGxlIiwiYnVpbGRUYWJsZUNvbHVtbnMiLCJ3cmFwcGVyQ3VzdG9tQ29tcG9uZW50Iiwic2hhbGxvd1JlZiIsInRhYmxlQ29sdW1ucyIsImRvQ29sdW1uc1NvcnQiLCJkb0FycmF5U29ydCIsImFyciIsInNvcnRCeSIsIm9yZGVyRGVmYXVsdCIsImxpc3QiLCJzaXplIiwiY29sdW1uc0FyciIsImNvbHVtbnNNYXAiLCJidWlsZEZvcm1Db2x1bW5zIiwiY29sdW1uc0ZsYXRNYXAiLCJmb3JtVHlwZSIsImZvcm1Db2x1bW5zIiwiZm9ybUNvbHVtbiIsImJ1aWxkRm9ybSIsImJhc2VPcHRpb25zIiwib25Db21wbGV0ZSIsImJ1aWxkU2VhcmNoRm9ybSIsInNlYXJjaENvbHVtbnMiLCJmb3JtQ29sdW1uc0ZvclNlYXJjaCIsImNvcHlQcm9wcyIsInNlYXJjaENvcHlGb3JtUHJvcHMiLCJjb3B5RnJvbUNvbXBvc2l0aW9uQ29sdW1uIiwiZmllbGQiLCJjb21tb24iLCJkZWYiLCJwaWNrIiwiYnVpbGRGb3JtT3B0aW9ucyIsIm1vZGUiLCJkZWZhdWx0T3B0aW9ucyIsImNvbW1vbk9wdGlvbnMiLCJjcnVkRXhwb3NlIiwiYnVpbGRDb2x1bW5zIiwidG9vbGJhciIsImNvbHVtbnNGaWx0ZXIiLCJvcmlnaW5hbENvbHVtbnMiLCJkaXNhYmxlZCIsImVkaXRhYmxlIiwiZm9yRWFjaFRhYmxlQ29sdW1ucyIsImZvckVhY2hDb2x1bW5zIiwidXNlQ29sdW1ucyIsInNlZWQiLCJGc0Zvcm1XcmFwcGVyTGlzdCIsImNyZWF0ZUZvcm1XcmFwcGVyIiwiaWQiLCJjb250YWluZXIiLCJ2Tm9kZSIsImNyZWF0ZVZOb2RlIiwiRnNGb3JtV3JhcHBlciIsInZtIiwidXNlRm9ybVdyYXBwZXIiLCJwZCIsImluamVjdCIsIm9wZW5EaWFsb2ciLCJvcGVuQ3J1ZEZvcm1EaWFsb2ciLCJmb3JtT3B0aW9ucyIsImRvTWVyZ2UiLCJ1c2VFZGl0YWJsZSIsInByb3BzIiwiY3J1ZEJpbmRpbmciLCJfYyIsImN1c3RvbVJvd0hhbmRsZUFjdGl2ZSIsIl9kIiwiX2UiLCJvbkVuYWJsZWQiLCJlZGl0YWJsZU9wdHMiLCJlZGl0YWJsZUlkIiwiZWRpdGFibGVSb3ciLCJpc0FkZCIsInNldERhdGEiLCJyb3dEYXRhIiwiZGF0YSIsInVzZUV4cG9zZSIsImNydWRSZWYiLCJmb3JtV3JhcHBlclByb3ZpZGVyIiwiY2hlY2tDcnVkUmVmIiwiY2hlY2tDcnVkQmluZGluZ1JlZiIsImZvcm1XcmFwcGVyUmVmIiwiZm9ybVJlZiIsInJlY29yZHMiLCJ0b1JhdyIsInZhbHVlQnVpbGRlckNvbHVtbnMiLCJjb2wiLCJwYWdlUXVlcnkiLCJwYWdlIiwic2VhcmNoRm9ybURhdGEiLCJxdWVyeSIsInVzZXJQYWdlUXVlcnkiLCJ1c2VyUGFnZVJlcyIsImRpc2FibGVMb2FkaW5nIiwidW5yZWYiLCJwYWdlUmVzIiwiY3VycmVudFBhZ2UiLCJwYWdlU2l6ZSIsImZzVGFibGVSZWYiLCJubyIsInRhYmxlUmVmIiwicm93S2V5IiwicmVtb3ZlQmluZGluZyIsImlzTG9jYWwiLCJyZW1vdmVTY29wZSIsImZvcm1PcHRzIiwieHhGb3JtIiwibG9hZEZzRXhwb3J0VXRpbCIsImVhY2giLCJsb2FkRnNJbXBvcnRVdGlsIiwiZGVmYXVsdERhdGFGb3JtYXR0ZXIiLCJvcmlnaW5hbFJvdyIsIm5vZGVzIiwibGFiZWwiLCJub2RlIiwiZXhwb3J0VGFibGUiLCJleHBvcnRDb2wiLCJleHBvcnRVdGlsIiwib3JpZ2luYWxEYXRhIiwic2VhcmNoUGFyYW1zIiwiY2xvbmUiLCJtYXBwaW5nIiwiZXhwT3B0cyIsImltcG9ydFRhYmxlIiwiaW1wb3J0RGF0YSIsImlzRWRpdGFibGUiLCJjcnVkT3B0aW9uc1BsdWdpbnMiLCJyZWdpc3RlckNydWRPcHRpb25zUGx1Z2luIiwiZ2V0Q3J1ZE9wdGlvbnNQbHVnaW4iLCJzZWxlY3Rpb24iLCJnZXRSb3dLZXkiLCJ0YWJsZUNJIiwiY2hhbmdlZCIsInNlbGVjdGVkUm93S2V5cyIsIm5leHRUaWNrIiwibW9iaWxlQWRhcHRvciIsInJvd0hhbmRsZSIsImJ1dHRvbnMiLCJuZXdCdXR0b25zIiwiYnV0dG9uc0tleSIsIndpZHRoUmVmIiwidXNlQ3J1ZCIsImV4cG9zZSIsImRvUmVmcmVzaCIsImRvVmFsdWVSZXNvbHZlIiwidXNlUGFnaW5hdGlvbiIsImN1cnJlbnQiLCJ1c2VGb3JtU3VibWl0IiwidXNlUm93SGFuZGxlIiwidXNlU2VhcmNoIiwiYmFzZVRhYmxlUmVmIiwidXNlVGFicyIsImZvcm1EYXRhIiwidXNlVG9vbGJhciIsImV4cG9ydGluZyIsIm9yaWdpbmFsIiwidXBkYXRlQ29sdW1ucyIsIm9sZCIsIm9sZENvbHVtbiIsIm5ld0NvbHVtbiIsIm5ld0NvbHVtbnMiLCJ1c2VUYWJsZSIsInNvcnRDaGFuZ2UiLCJpc1NlcnZlclNvcnQiLCJwcm9wIiwiYXNjIiwib2xkU29ydCIsInVzZUFjdGlvbmJhciIsImFjdGl2ZVJvd3MiLCJhZnRlclVzZUNydWQiLCJiaW5kaW5ncyIsInJlYnVpbGRDcnVkQmluZGluZ3MiLCJpbnB1dE9wdHMiLCJ1c2VyT3B0cyIsInBsdWdpbnMiLCJwbHVnIiwiYmVmb3JlIiwicGx1Z2luT3B0aW9ucyIsInJlc2V0Q3J1ZE9wdGlvbnMiLCJhcHBlbmRDcnVkT3B0aW9ucyIsIm92ZXJPcHRpb25zIiwibmV3T3B0aW9ucyIsImFwcGVuZENydWRCaW5kaW5nIiwidXNlRnNJbXBsIiwiY3JlYXRlQ3J1ZE9wdGlvbnMiLCJjcnVkRXhwb3NlUmVmIiwiY3JlYXRlQ3J1ZE9wdGlvbnNSZXQiLCJpbml0Q3J1ZCIsInVzZUNydWRQcm9wcyIsInVzZUNydWRSZXQiLCJ1c2VGcyIsInVzZUZzQXN5bmMiLCJ1c2VGc1JlZiIsInVzZURpY3QiLCJ2TW9kZWwiLCJjcmVhdGVDb21wdXRlZE9wdGlvbnMiLCJvcHRpb24iLCJnZXRWYWx1ZSIsImdldExhYmVsIiwiZ2V0RGljdCIsImdldFNjb3BlIiwiZ2V0Q3VycmVudFNjb3BlIiwicHJveHkiLCJnZXRDdXJyZW50SW5zdGFuY2UiLCJsb2FkRGljdCIsInJlbG9hZCIsInJlbG9hZERpY3QiLCJjbGVhckRpY3QiLCJ3YXRjaFZhbHVlIiwiZ2V0RGljdERhdGEiLCJnZXRQcm9wVmFsdWUiLCJhdHRyIiwicmVtb3ZlUHJvcFZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJwZXJmIiwid2FybmVkIiwiUFJPQ0VTUyIsImVtaXRXYXJuaW5nIiwibXNnIiwiY29kZSIsImZuIiwiQUMiLCJBUyIsIndhcm5BQ1BvbHlmaWxsIiwicmVhc29uIiwicHJpbnRBQ1BvbHlmaWxsV2FybmluZyIsInNob3VsZFdhcm4iLCJpc1Bvc0ludCIsImdldFVpbnRBcnJheSIsIm1heCIsIlplcm9BcnJheSIsIl9TdGFjayIsIkhlYXBDbHMiLCJfX3ByaXZhdGVHZXQiLCJfY29uc3RydWN0aW5nIiwiX19wcml2YXRlU2V0IiwiX19wcml2YXRlQWRkIiwiU3RhY2siLCJfTFJVQ2FjaGUiLCJfaW5pdGlhbGl6ZVRUTFRyYWNraW5nIiwiX2luaXRpYWxpemVTaXplVHJhY2tpbmciLCJfaW5kZXhlcyIsIl9yaW5kZXhlcyIsIl9pc1ZhbGlkSW5kZXgiLCJfZXZpY3QiLCJfYmFja2dyb3VuZEZldGNoIiwiX2lzQmFja2dyb3VuZEZldGNoIiwiX2Nvbm5lY3QiLCJfbW92ZVRvVGFpbCIsIl9kZWxldGUiLCJfY2xlYXIiLCJfbWF4IiwiX21heFNpemUiLCJfZGlzcG9zZSIsIl9kaXNwb3NlQWZ0ZXIiLCJfZmV0Y2hNZXRob2QiLCJfbWVtb01ldGhvZCIsIl9zaXplIiwiX2NhbGN1bGF0ZWRTaXplIiwiX2tleU1hcCIsIl9rZXlMaXN0IiwiX3ZhbExpc3QiLCJfbmV4dCIsIl9wcmV2IiwiX2hlYWQiLCJfdGFpbCIsIl9mcmVlIiwiX2Rpc3Bvc2VkIiwiX3NpemVzIiwiX3N0YXJ0cyIsIl90dGxzIiwiX2hhc0Rpc3Bvc2UiLCJfaGFzRmV0Y2hNZXRob2QiLCJfaGFzRGlzcG9zZUFmdGVyIiwiX3VwZGF0ZUl0ZW1BZ2UiLCJfc3RhdHVzVFRMIiwiX3NldEl0ZW1UVEwiLCJfaXNTdGFsZSIsIl9yZW1vdmVJdGVtU2l6ZSIsIl9pIiwiX2FkZEl0ZW1TaXplIiwiX3MiLCJfc3QiLCJfcmVxdWlyZVNpemUiLCJfayIsIl92Iiwic2l6ZUNhbGN1bGF0aW9uIiwidHRsIiwidHRsUmVzb2x1dGlvbiIsInR0bEF1dG9wdXJnZSIsInVwZGF0ZUFnZU9uR2V0IiwidXBkYXRlQWdlT25IYXMiLCJhbGxvd1N0YWxlIiwiZGlzcG9zZSIsImRpc3Bvc2VBZnRlciIsIm5vRGlzcG9zZU9uU2V0Iiwibm9VcGRhdGVUVEwiLCJtYXhTaXplIiwibWF4RW50cnlTaXplIiwiZmV0Y2hNZXRob2QiLCJtZW1vTWV0aG9kIiwibm9EZWxldGVPbkZldGNoUmVqZWN0aW9uIiwibm9EZWxldGVPblN0YWxlR2V0IiwiYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24iLCJhbGxvd1N0YWxlT25GZXRjaEFib3J0IiwiaWdub3JlRmV0Y2hBYm9ydCIsIlVpbnRBcnJheSIsIl9fcHJpdmF0ZU1ldGhvZCIsImluaXRpYWxpemVTaXplVHJhY2tpbmdfZm4iLCJpbml0aWFsaXplVFRMVHJhY2tpbmdfZm4iLCJjIiwiaXNCYWNrZ3JvdW5kRmV0Y2hfZm4iLCJrIiwiYmFja2dyb3VuZEZldGNoX2ZuIiwibW92ZVRvVGFpbF9mbiIsImluZGV4ZXNfZm4iLCJyaW5kZXhlc19mbiIsImdldE9wdGlvbnMiLCJ2IiwidGhpc3AiLCJkZWxldGVkIiwiZGVsZXRlX2ZuIiwiZW50cnkiLCJzdGFydCIsInJlbWFpbiIsImFnZSIsInNldE9wdGlvbnMiLCJzdGF0dXMiLCJldmljdF9mbiIsIl9fcHJpdmF0ZVdyYXBwZXIiLCJvbGRWYWwiLCJvbGRWYWx1ZSIsImR0IiwidGFzayIsImhhc09wdGlvbnMiLCJwZWVrT3B0aW9ucyIsImZldGNoT3B0aW9ucyIsImZvcmNlUmVmcmVzaCIsInNpZ25hbCIsInN0YWxlIiwiaXNTdGFsZSIsInN0YWxlVmFsIiwibWVtb09wdGlvbnMiLCJ2diIsImZldGNoaW5nIiwiY2xlYXJfZm4iLCJ0dGxzIiwic3RhcnRzIiwiY2FjaGVkTm93IiwiZ2V0Tm93Iiwic2l6ZXMiLCJpc1ZhbGlkSW5kZXhfZm4iLCJmcmVlIiwiaGVhZCIsImFjIiwiZmV0Y2hPcHRzIiwiY2IiLCJ1cGRhdGVDYWNoZSIsImFib3J0ZWQiLCJpZ25vcmVBYm9ydCIsImZldGNoRmFpbCIsImJmIiwiZWIiLCJlciIsImFsbG93U3RhbGVBYm9ydGVkIiwibm9EZWxldGUiLCJwY2FsbCIsInJlaiIsImZtcCIsImNvbm5lY3RfZm4iLCJwaSIsIm5pIiwiTFJVQ2FjaGUiLCJEaWN0R2xvYmFsQ2FjaGUiLCJzZXREaWN0UmVxdWVzdCIsInJlcXVlc3QiLCJkaWN0UmVxdWVzdCIsIkRpY3QiLCJjYWNoZUtleSIsImNhY2hlZCIsImNhbGwiLCJub3RpZnkiLCJ0b0ZldGNoVmFsdWVzIiwiZ2V0RnJvbVJlbW90ZSIsInVybCIsIm1heWJlQXJyIiwiZGljdERhdGEiLCJjb25maWciLCJ1c2VEaWN0RGVmaW5lIiwidXNlVHlwZXMiLCJkcmFnTW9kYWxGb3JBbnRkdiIsImRpYWxvZ0VsIiwiZGlhbG9nSGVhZGVyRWwiLCJkcmFnRG9tIiwic3R5IiwiWCIsIlkiLCJzdHlMIiwic3R5VCIsImwiLCJkcmFnTW9kYWxGb3JOYWl2ZSIsImRyYWdNb2RhbCIsInVzZURyYWciLCJHbG9iYWxDb25maWciLCJfc2ZjX21haW4kQyIsImNvbXB1dGVkSW5uZXJTdHlsZSIsImNvbXB1dGVkQm9keVN0eWxlIiwiX3NmY19yZW5kZXIiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyU2xvdCIsIl9zZmNfbWFpbiRCIiwiX2NvbXBvbmVudF9mc19jb250YWluZXIiLCJfcmVzb2x2ZUNvbXBvbmVudCIsIl9jcmVhdGVCbG9jayIsIl93aXRoQ3R4IiwiX2hvaXN0ZWRfNSIsIl9zZmNfbWFpbiRBIiwiZ2V0Q3J1ZEJpbmRpbmciLCJzZWFyY2hTaG93IiwiY2FyZENvbXBvbmVudE5hbWUiLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJfaXNTbG90IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJfaXNWTm9kZSIsImluaGVyaXRBdHRycyIsIlN0cmluZyIsImRlZmF1bHQiLCJyZXF1aXJlZCIsIkZ1bmN0aW9uIiwiaWNvblJpZ2h0IiwiY2lyY2xlIiwiQm9vbGVhbiIsInRvb2x0aXAiLCJ1bmRlZmluZWQiLCJiYWRnZSIsImJ1dHRvblByb3BzIiwiY2xhc3NOYW1lIiwibG9hZGluZyIsImVtaXRzIiwic2V0dXAiLCJsb2FkaW5nUmVmIiwiY29tcHV0ZWRMb2FkaW5nIiwiaWNvblJlbmRlciIsImljb25DbGFzcyIsIl9tZXJnZVByb3BzIiwicmVuZGVyQnRuIiwiaXNJY29uU2xvdCIsImlzSWNvblByb3AiLCJpY29uUHJvcCIsInNsb3RzIiwiaXNDaXJjbGUiLCJidXR0b25Db21wIiwicmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJvbkNsaWNrIiwiJGV2ZW50IiwiZW1pdCIsImJ0blByb3BzIiwiY2xhc3MiLCJhdHRycyIsImgiLCJvcmlnaW5SZW5kZXJCdG4iLCJiYWRnZUNvbXAiLCJfc2xvdCIsInRvb2x0aXBDb21wIiwiY29tcHV0ZVRvb2x0aXBQcm9wcyIsIm9taXQiLCJ0cmlnZ2VyU2xvdE5hbWUiLCJyZXF1aXJlIiwiYmFzZVVybCIsImNvbXB1dGVkUmVuZGVyRnVuYyIsImluZGV4T2YiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsIkljb25Db21wIiwic3BsaXQiLCJjb2xvciIsImxlbmd0aCIsImlzQ29tcG9uZW50IiwiX3NmY19tYWluJHoiLCJJY29uIiwiX25vcm1hbGl6ZUNsYXNzIiwiX3NmY19tYWluJHkiLCJzeW1ib2xJZCIsImdldFN0eWxlIiwic3BpbiIsIl9zZmNfbWFpbiR4IiwibGFiZWxBdHRycyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX19kZWZhdWx0X18iLCJfX01BQ1JPU19kZWZpbmVDb21wb25lbnQiLCJfY29tcG9uZW50X2ZzX2ljb24iLCJfdW5yZWYiLCJfc2ZjX21haW4kdiIsIm1lcmdlRXZlbnRIYW5kbGVzIiwiZXZlbnROYW1lIiwiZXZlbnRzIiwiZXZlbnQiLCJodG1sVGFncyIsIm1vZGVsVmFsdWUiLCJvbiIsInVuZGVmaW5lVG9OdWxsIiwicHJvdmlkZSIsInRhcmdldFJlZiIsImFsbEF0dHJzIiwidHJpbSIsIm51bWJlciIsIm9uVXBkYXRlTW9kZWxWYWx1ZU5hbWUiLCJ0bXAiLCJOdW1iZXIiLCJpc05hTiIsImhhbmRsZXIiLCJjaGlsZHJlblJlbmRlciIsImNyZWF0ZUNoaWxkcmVuIiwiY29tcHV0ZWRJbnB1dENvbXAiLCJpbnB1dCIsImlzQXN5bmNDb21wb25lbnQiLCJpbnB1dENvbXAiLCJyZXNvbHZlQ29tcG9uZW50IiwiY2hpbGRyZW5SZW5kZXJlZCIsImdldFRhcmdldFJlZiIsImdldFRhcmdldFJlZkFzeW5jIiwiZ2V0VGFyZ2V0UmVmU3luYyIsIlByb21pc2UiLCJnZXRUYXJnZXRSZWZEZWxheSIsImNvdW50Iiwic2V0VGltZW91dCIsIkVycm9yIiwibWVyZ2VkIiwibWVyZ2VQcm9wcyIsImZ1bmN0aW9uYWwiLCJyZW5kZXJGdW5jIiwiX3NmY19tYWluJHUiLCJjcmVhdGVJbml0aWFsRm9ybSIsImRlZlZhbHVlIiwiaW5pdGlhbEZvcm0iLCJzZXRGb3JtRGF0YSIsImdldENvbXBvbmVudFJlZiIsImNvbXB1dGVkQ29sdW1ucyIsImRvVmFsdWVCdWlsZGVyIiwiZ2V0Rm9ybURhdGEiLCJ2YWx1ZUNoYW5nZSIsImRvVmFsdWVDaGFuZ2UiLCJtZXJnZUNvbCIsImJ1aWxkSXRlbVNjb3BlIiwiZm9ybUl0ZW1SZWZzIiwiZ2V0Rm9ybUl0ZW1SZWYiLCJncm91cEFjdGl2ZUtleSIsImdyb3VwSXRlbSIsImNvbXB1dGVkR3JvdXAiLCJncm91cCIsImdyb3VwZWRLZXlzIiwid3JhcHBlciIsImNvbXB1dGVkRGVmYXVsdENvbHVtbnMiLCJnZXRGb3JtUmVmIiwiZW50cmllc1JldCIsImVudHJpZXMiLCJpbml0aWFsVmFsdWUiLCJ1bnNldCIsInZhbGlkUmVmIiwiZXJyb3JzUmVmIiwiZmlsbEdyb3VwRXJyb3IiLCJmaWVsZEVycm9ycyIsInZhbGlkYXRlIiwidmFsaWRhdGVTY29wZSIsInZhbGlkYXRlRXJyb3JzIiwic3VibWl0U2NvcGUiLCJmb3JtSXRlbVNob3ciLCJncm91cEl0ZW1TaG93IiwibmV3VmFsIiwiaXNEaXJ0eSIsImFmdGVyIiwibWVyZ2VkU2xvdHMiLCJkaXNwbGF5IiwiX0ZyYWdtZW50IiwiX3JlbmRlckxpc3QiLCJoZWxwZXIiLCJncm91cEtleSIsIl9jcmVhdGVTbG90cyIsIl9jb21wb25lbnRfZnNfZm9ybV9pdGVtX2NvbCIsInNsb3ROYW1lIiwiX2NvbXBvbmVudF9mc19yZW5kZXIiLCJfc2ZjX21haW4kdCIsIkZzUmVuZGVyIiwiY29tcG9uZW50UmVuZGVyUmVmIiwic2NvcGVGdW5jIiwidXBkYXRlTW9kZWxWYWx1ZSIsImNvbXB1dGVkSXRlbSIsImNvbXB1dGVkSGVscGVyUG9zaXRpb24iLCJjb21wdXRlZEhlbHBlclRvb2x0aXAiLCJjb21wdXRlZEtleSIsImNvbXB1dGVkTGFiZWwiLCJjb21wdXRlZExhYmVsSXNSZW5kZXIiLCJfY29tcG9uZW50X2ZzX2NvbXBvbmVudF9yZW5kZXIiLCJfbm9ybWFsaXplUHJvcHMiLCJfaG9pc3RlZF82IiwiZm9ybVNsb3QiLCJfaG9pc3RlZF83IiwiX2NvbXBvbmVudF9mc19zbG90X3JlbmRlciIsIl9jb21wb25lbnRfZnNfZm9ybV9oZWxwZXIiLCJfX3Byb3BzIiwidXNlQXR0cnMiLCJmb3JtSXRlbVJlZiIsIl9fZXhwb3NlIiwiX2NvbXBvbmVudF9mc19mb3JtX2l0ZW0iLCJfc2ZjX21haW4kciIsImlubmVyIiwiaW5uZXJXcmFwcGVyIiwiekluZGV4IiwiZm9ybVdyYXBwZXJPcGVuIiwiZm9ybVdyYXBwZXJJcyIsImZvcm1XcmFwcGVyQmluZCIsImZvcm1XcmFwcGVyT3B0cyIsImVtaXRPbkNsb3NlZCIsImVtaXRPbk9wZW5lZCIsImJlZm9yZUNsb3NlQ3VzdG9tIiwiZm9ybVdyYXBwZXJJZCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZvcm1XcmFwcGVySWRDbGFzcyIsImZvcm1XcmFwcGVyU2xvdHMiLCJidWlsZEV2ZW50IiwiY2xvc2UiLCJvbkNsb3NlZCIsIm9uT3BlbmVkIiwib3BlbiIsImZ1bGxzY3JlZW5FbmFibGVkIiwiZnVsbHNjcmVlbiIsImNvbXB1dGVkQnV0dG9ucyIsIm9uVmFsdWVDaGFuZ2UiLCJpbm5lckJpbmQiLCJ3cmFwcGVyQmluZFJlZiIsImZvcm1PcHRpb25zUmVmIiwidG9nZ2xlRnVsbHNjcmVlbiIsIm9uT3BlbiIsImlzIiwiY3VzdG9tQ2xhc3NLZXkiLCJmb3JtV3JhcHBlciIsImN1c3RvbUNsYXNzIiwiYmVmb3JlQ2xvc2UiLCJkb1NhdmVSZW1pbmQiLCJzYXZlUmVtaW5kIiwibmVlZFNhdmUiLCJtZXNzYWdlQm94IiwiY29uZmlybSIsImNvbmZpcm1CdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsInJvdXRlIiwidXNlUm91dGUiLCJkcmFmdFN0b3JlIiwiZ2V0RHJhZnRTdG9yZSIsInNhdmVEcmFmdCIsIiRyb3V0ZXIiLCJkb1NhdmVEcmFmdCIsInVwZGF0ZVRhYmxlVmFsdWUiLCJjbGVhckRyYWZ0IiwiY2xlYXJUYWJsZVZhbHVlIiwibG9hZERyYWZ0IiwiZHJhZnQiLCJnZXRUYWJsZVZhbHVlIiwibWVyZ2VGb3JtIiwic2F2ZWREcmFmdCIsImVsZW1lbnRCZWZvcmVDbG9zZUZpeCIsImRvbmUiLCJkcmFnZ2FibGUiLCJkcmFnZW5hYmxlZCIsImdldE1vZGFsIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0Q29tcHV0ZUNvbnRleHQiLCJjb21wdXRlZEN1c3RvbUJ1dHRvbnMiLCJkZWZCdG5zIiwiY2FuY2VsIiwib2siLCJidXR0b25zQXJyIiwiY2xpY2siLCJleHBvc2VkIiwiZW5kc1dpdGgiLCJidWlsZElubmVyQmluZCIsImdldElubmVyV3JhcHBlciIsImlubmVyQ29udGFpbmVyU2VsZWN0b3IiLCJjbGFzc0xpc3QiLCJhZGQiLCJjb25zb2xlIiwidXNlU2xvdHMiLCJfc2xvdHMiLCJzbG90c1JlbmRlciIsIl9zZWxmIiwidGl0bGVTbG90TmFtZSIsImZ1bGxTY3JlZW5JY29uIiwiaWNvbnMiLCJmdWxsU2NyZWVuIiwidW5GdWxsU2NyZWVuIiwic2hvdyIsImhhc0NvbnRlbnRXcmFwIiwiY29udGVudFdyYXAiLCJzdWJDaGlsZHJlbiIsImNvbnRlbnRXcmFwQ29tcCIsImNvbnRlbnRQcm9wcyIsInZpc2libGUiLCJ2Q2xvc2VkIiwiYnVpbGRPbkNsb3NlZEJpbmQiLCJ2Q3VzdG9tQ2xhc3MiLCJ2RnVsbFNjcmVlbiIsInZTdHlsZSIsImZvcm1XcmFwcGVyQ29tcCIsImZvcm1XcmFwcGVyTGlzdCIsImZvcm1XcmFwcGVyQ29udGV4dCIsInVzZVByb3ZpZGVycyIsInNlYXJjaFJlZiIsImdldFNlYXJjaFJlZiIsImdldFNlYXJjaEZvcm1EYXRhIiwiZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEiLCJzZXRTZWFyY2hGb3JtRGF0YSIsInNlYXJjaFJldCIsImRlZmF1bHRUYWJzIiwiX2ciLCJfZiIsInNsb3RGaWx0ZXIiLCJjdHhTbG90cyIsImtleVByZWZpeCIsInVzZUZpeGVkSGVpZ2h0IiwiY29udGFpbmVyUmVmIiwibWF4SGVpZ2h0UmVmIiwiY29tcHV0ZUJvZHlIZWlnaHQiLCJ0YWJsZURvbSIsImhlYWREb20iLCJ0YWJsZUhlaWdodCIsImhlYWRIZWlnaHQiLCJ1dGlsTG9nIiwid2F0Y2hCb2R5SGVpZ2h0Q2hhbmdlIiwidGFibGVXcmFwcGVyRG9tIiwidG9vbGJhclJlZiIsInRhYmxlUHJvcFJlZiIsInRvUmVmIiwiY29tcHV0ZWRUYWJsZSIsImZpeGVkSGVpZ2h0IiwiY29tcHV0ZWRUb29sYmFyIiwiY29tcHV0ZWRDZWxsU2xvdHMiLCJjb21wdXRlZEZvcm1TbG90cyIsImNvbXB1dGVkU2VhcmNoU2xvdHMiLCJjb21wdXRlZFRvb2xiYXJTbG90cyIsImNvbXB1dGVkQ2xhc3MiLCJjbGF6eiIsImlubmVyV3JhcHBlclJlZiIsImlzRm9ybUlubmVyIiwiX3NmY19tYWluJHAiLCJ0YWJzIiwiX2NvbXBvbmVudF9mc19hY3Rpb25iYXIiLCJfZ3VhcmRSZWFjdGl2ZVByb3BzIiwiX2NvbXBvbmVudF9mc190YWJzX2ZpbHRlciIsInRhYnNCaW5kaW5nIiwiX2NvbXBvbmVudF9mc190YWJsZSIsIl9zZmNfbWFpbiRvIiwic2NvcGVSZWYiLCJkb0NsaWNrIiwicGlja2VkUHJvcHMiLCJjb21wdXRlUHJvcHMiLCJjb21wdXRlZEhhbmRsZUJ0bnMiLCJtZXJnZWRCdG5zIiwiYnRucyIsImNvbXB1dGVkRHJvcGRvd25BdExlYXN0IiwiaXNEcm9wZG93bkJ0biIsImhhc0Ryb3Bkb3duQnRuIiwiZG9Ecm9wZG93bkl0ZW1DbGljayIsImJ0biIsImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nIiwiYmluZGluZyIsIl9jb21wb25lbnRfZnNfYnV0dG9uIiwiX2V4dGVuZHMiLCJzb3VyY2UiLCJfaW5oZXJpdHNMb29zZSIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl9zZXRQcm90b3R5cGVPZiIsIl9nZXRQcm90b3R5cGVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY29uc3RydWN0IiwiUGFyZW50IiwiQ2xhc3MiLCJDb25zdHJ1Y3RvciIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiX3dyYXBOYXRpdmVTdXBlciIsIldyYXBwZXIiLCJmb3JtYXRSZWdFeHAiLCJ3YXJuaW5nIiwiZXJyb3JzIiwiY29udmVydEZpZWxkc0Vycm9yIiwiZmllbGRzIiwidGVtcGxhdGUiLCJfbGVuIiwiX2tleSIsImxlbiIsInN0ciIsIngiLCJpc05hdGl2ZVN0cmluZ1R5cGUiLCJpc0VtcHR5VmFsdWUiLCJhc3luY1BhcmFsbGVsQXJyYXkiLCJmdW5jIiwicmVzdWx0cyIsImFyckxlbmd0aCIsImFzeW5jU2VyaWFsQXJyYXkiLCJuZXh0IiwiZmxhdHRlbk9iakFyciIsIm9iakFyciIsIkFzeW5jVmFsaWRhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3RoaXMiLCJhc3luY01hcCIsIl9wZW5kaW5nIiwiZmxhdHRlbkFyciIsImZpcnN0RmllbGRzIiwib2JqQXJyS2V5cyIsIm9iakFyckxlbmd0aCIsInBlbmRpbmciLCJpc0Vycm9yT2JqIiwiY29tcGxlbWVudEVycm9yIiwib2UiLCJmaWVsZFZhbHVlIiwiZGVlcE1lcmdlIiwicmVxdWlyZWQkMSIsIndoaXRlc3BhY2UiLCJ1cmxSZWciLCJnZXRVcmxSZWdleCIsIndvcmQiLCJ2NCIsInY2c2VnIiwidjYiLCJ2NDZFeGFjdCIsInY0ZXhhY3QiLCJ2NmV4YWN0IiwiaXAiLCJwcm90b2NvbCIsImF1dGgiLCJpcHY0IiwiaXB2NiIsImhvc3QiLCJkb21haW4iLCJ0bGQiLCJwb3J0IiwicmVnZXgiLCJwYXR0ZXJuJDIiLCJ0eXBlJDEiLCJjdXN0b20iLCJydWxlVHlwZSIsInJhbmdlIiwibWluIiwic3BSZWdleHAiLCJudW0iLCJFTlVNJDEiLCJlbnVtZXJhYmxlJDEiLCJwYXR0ZXJuJDEiLCJfcGF0dGVybiIsInN0cmluZyIsIm1ldGhvZCIsIl9ib29sZWFuIiwicmVnZXhwIiwiaW50ZWdlciIsImZsb2F0Rm4iLCJhcnJheSIsIm9iamVjdCIsIkVOVU0iLCJlbnVtZXJhYmxlIiwicGF0dGVybiIsImRhdGVPYmplY3QiLCJhbnkiLCJ2YWxpZGF0b3JzIiwibmV3TWVzc2FnZXMiLCJjbG9uZWQiLCJtZXNzYWdlcyIsIlNjaGVtYSIsImRlc2NyaXB0b3IiLCJfcHJvdG8iLCJfbWVzc2FnZXMiLCJzb3VyY2VfIiwib2MiLCJfdGhpczIiLCJjb21wbGV0ZSIsIl9lcnJvcnMiLCJtZXNzYWdlcyQxIiwic2VyaWVzIiwieiIsImVycm9yRmllbGRzIiwiZG9JdCIsImRlZXAiLCJhZGRGdWxsRmllbGQiLCJzY2hlbWEiLCJlcnJvckxpc3QiLCJmaWxsZWRFcnJvcnMiLCJmaWVsZHNTY2hlbWEiLCJwYXJlZEZpZWxkc1NjaGVtYSIsImZpZWxkU2NoZW1hIiwiZmllbGRTY2hlbWFMaXN0IiwiZXJycyIsImZpbmFsRXJyb3JzIiwibWVzc2FnZUluZGV4IiwidmFsaWRhdG9yIiwiY3JlYXRlVmFsaWRhdG9yIiwiZWRpdGFibGVDZWxscyIsImN1ckRlc2MiLCJlYWNoVHJlZSIsInVzZVRhYmxlRGF0YSIsImdldERhdGEiLCJ0YWJsZURhdGEiLCJlZGl0YWJsZVJvd3MiLCJnZXRJZEZyb21Sb3ciLCJnZXRFZGl0YWJsZUlkRnJvbVJvdyIsImVkaXRhYmxlRWFjaFJvd3MiLCJjZWxscyIsImVkaXRhYmxlRWFjaENlbGxzIiwiY2VsbCIsImNyZWF0ZUVkaXRhYmxlQ2VsbCIsInRhYmxlUm93Iiwic2V0VmFsdWUiLCJ1cGRhdGVDZWxsIiwic2hvd0FjdGlvbiIsImVuYWJsZWQiLCJmb3JtSXRlbSIsInNldERlZmF1bHRWYWx1ZSIsInJvd0tleVZhbHVlIiwiY3JlYXRlRWRpdGFibGVSb3ciLCJkb1NhdmUiLCJuZXdSb3ciLCJzYXZlUm93IiwicDMiLCJjaGlsZCIsIm5leHRFZGl0YWJsZUlkIiwiZWRpdGFibGVJZEdlbiIsInNldHVwRWRpdGFibGUiLCJ0bXBSb3dzIiwiZm9yT3duIiwiYnVpbGRUaGluRGF0YSIsInRoaW5EYXRhIiwidGhpblJvdyIsIm9sZFRoaW5EYXRhIiwiZ2V0RWRpdGFibGVDZWxsIiwiYWN0aXZlIiwiaW5hY3RpdmUiLCJzYXZlRWFjaCIsImNhbmNlbEFsbCIsInBlcnNpc3QiLCJyZXN1bWUiLCJoYXNEaXJ0eSIsImRpcnR5IiwiYWRkSW5kZXgiLCJzZXREZWZhdWx0Rm9ybSIsImZvcm1Db2x1bW5Db25maWdzIiwiYWRkUm93IiwiZ2V0RWRpdGFibGVSb3ciLCJyZW1vdmVUYWJsZVJvd0J5RWRpdGFibGVJZCIsInJlbW92ZVJvdyIsImFjdGl2ZUNvbHMiLCJjb2xzIiwiZ2V0QWN0aXZlUm93cyIsInJvd3MiLCJoYXNFcnJvciIsInJlbW92ZURhdGFFZGl0YWJsZUlkIiwiZ2V0Q2xlYW5UYWJsZURhdGEiLCJ1c2VDb21wb25lbnRSZWZQcm92aWRlciIsImNvbXBvbmVudHNSZWYiLCJnZXR0ZXIiLCJzZXR0ZXIiLCJidWlsZFRhYmxlU2xvdHMiLCJzb3J0ZWRDb2x1bW5zIiwicmVuZGVyUm93SGFuZGxlIiwicmVuZGVyQ2VsbENvbXBvbmVudCIsImNvbXBvbmVudERlZmluZXMiLCJ0YWJsZUNvbXAiLCJ0YWJsZUNvbHVtbkNvbXAiLCJ0YWJsZUNvbHVtbkdyb3VwQ29tcCIsInRhYmxlU2xvdHMiLCJidWlsZENvbHVtbiIsImNlbGxTbG90cyIsImNvbHVtblNsb3RzIiwiY2VsbFNsb3ROYW1lIiwiY3VycmVudFRhYmxlQ29sdW1uQ29tcCIsInN1YkNvbHVtbnMiLCJzdWJDb2x1bW4iLCJuZXdJdGVtIiwicm93SGFuZGxlU2xvdHMiLCJ0YWJsZVZlcnNpb24iLCJ0YWJsZVYyIiwiX3BhcmVudCIsImRhdGFJbmRleCIsImNoaWxkT3B0aW9ucyIsImN1c3RvbVJlbmRlciIsInJlbmRlck1ldGhvZCIsIm5ld0NvbCIsInJlYnVpbGRSZW5kZXJTY29wZSIsImNlbGxSZW5kZXIiLCJjb25kaXRpb25hbFJlbmRlciIsImNvbXBvbmVudFJlZnMiLCJjZWxsUmVmIiwiY3VycmVudFJlZiIsInRhYmxlQ29sdW1uQ0kiLCJ0YWJsZUNvbHVtblYyIiwic2Nyb2xsVG8iLCJ0b3AiLCJlZGl0YWJsZVdyYXAiLCJvblJvd0hhbmRsZSIsIm9uQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwic29ydGVyIiwib25GaWx0ZXJDaGFuZ2UiLCJmaWx0ZXJzIiwib25QYWdpbmF0aW9uIiwiYnViYmxlVXAiLCJyb3dIYW5kbGVTbG90c05hbWUiLCJuZXdTY29wZSIsInNldFJlZiIsInJvd1JlZnMiLCJlZGl0YWJsZUNlbGwiLCJyZWFkb25seSIsInJlbmRlck1vZGUiLCJkYXRhU291cmNlIiwiY29tcHV0ZWRCaW5kaW5nIiwidGFibGVDb2x1bW5Hcm91cCIsImNvbXB1dGVkVGFibGVTbG90cyIsInRhYmxlUmVuZGVyIiwidkxvYWRpbmciLCJyZXNvbHZlRGlyZWN0aXZlIiwid2l0aERpcmVjdGl2ZXMiLCJjb21wdXRlZEZsYXRDb2x1bW5zIiwiZmxhdENvbHVtbnMiLCJmbGF0Q29sdW1uc0ZuIiwiY29tcHV0ZWRNdWx0aUhlYWRlcnMiLCJidWlsZE11bHRpSGVhZGVyc0JpbmQiLCJ0cmVlQ29sdW1ucyIsImJpbmQiLCJpc0ZsYXQiLCJjb2x1bW5zSXNGbGF0IiwiY3JlYXRlVGFibGVJbnN0YW5jZSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZWRDb21wb25lbnQiLCJjb21wdXRlZFByb3BzQ29tcG9uZW50IiwiY29tcHV0ZWRUaXRsZSIsInNob3dUaXRsZSIsImNvbXB1dGVkQ2VsbENvbnRlbnRSZW5kZXIiLCJzbG90IiwibGFzdFJlbmRlciIsImNlbGxDb250ZW50UmVuZGVyIiwibWF0Y2giLCJmb3JtYXR0ZXIiLCJ0b29sdGlwUHJvcHMiLCJ0b29sdGlwU2xvdHMiLCJjb250ZW50IiwiY29sdW1uS2V5IiwiY29tcHV0ZWRGb3JtIiwiZ2V0Rm9ybVJlZkZ1bmMiLCJnZXRGb3JtIiwiY29tcHV0ZWRJc0VkaXRhYmxlIiwiZWRpdGluZ1VwZGF0ZSIsIm9uU3VibWl0Iiwic2F2ZSIsIm9uQ2FuY2VsIiwiaXNDaGFuZ2VkIiwiZWRpdCIsImlucHV0Q29tcG9uZW50IiwiaXNFZGl0aW5nIiwiYWN0aXZlVHJpZ2dlciIsIm1ldGhvZHMiLCIkcmVmcyIsInRhcmdldElucHV0UmVmIiwiX19lbWl0IiwiZG9TdWJtaXQiLCJkb0NhbmNlbCIsImdldFZhbGlkYXRlRXJyb3JNZXNzYWdlIiwiZWRpdGluZyIsIl9zZmNfbWFpbiRtIiwic29ydEFyciIsInNvcnRlZEJ1dHRvbnMiLCJTZXRGb3JtRGF0YU9wdGlvbnMiLCJDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSIsInRyYW5zZm9ybUNvbHVtbnNUcmVlIiwiY3VycmVudENvbHVtbnMiLCJvcmlnaW5hbENvbHVtbnNNYXAiLCJfdGV4dCIsImJ1aWxkQ29sdW1uRmlsdGVySXRlbSIsInRyYW5zZm9ybVRvVGFibGVDb2x1bW5zIiwic2V0Q3VycmVudFZhbHVlIiwiZG9fc2F2ZSIsImNsZWFyVGhpc1N0b3JhZ2UiLCJub1NhdmUiLCJzYXZlT3B0aW9uc1RvU3RvcmFnZSIsImRvRW1pdCIsImNvbXB1dGVkT3JpZ2luYWxDb2x1bW5zIiwic2ltcGxlU3VibWl0Iiwic2ltcGxlUmVzZXQiLCJzdG9yYWdlVGFibGVTdG9yZSIsImdldFN0b3JhZ2VUYWJsZSIsInJlbW90ZVN0b3JhZ2UiLCJzdG9yZWRPcHRpb25zIiwiZ2V0T3B0aW9uc0Zyb21TdG9yYWdlIiwiZ2V0Q29sdW1uc0hhc2giLCJoYXNoIiwiaW5pdCIsInN0b3JlSGFzaCIsInVwZGF0ZSIsImNoYW5nZSIsImJ1aWxkVGV4dCIsImVsZW1lbnQiLCJfd2l0aERpcmVjdGl2ZXMiLCJfdlNob3ciLCJfc2ZjX21haW4kayIsIkZzVGFibGVDb2x1bW5zRmlsdGVyIiwiY29sdW1uc0ZpbHRlclJlZiIsImRlZmF1bHRCdXR0b25zIiwiZGVmYXVsdEJ1dHRvbnNLZXkiLCJwb3BvdmVyVmlzaWJsZSIsInN0b3JhZ2UiLCJvd25LZXlzIiwiZW51bWVyYWJsZU9ubHkiLCJzeW1ib2xzIiwic3ltIiwiX29iamVjdFNwcmVhZDIiLCJfZGVmaW5lUHJvcGVydHkiLCJfdHlwZW9mIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2VTeW1ib2xLZXlzIiwidmVyc2lvbiIsInVzZXJBZ2VudCIsIklFMTFPckxlc3MiLCJFZGdlIiwiRmlyZUZveCIsIlNhZmFyaSIsIklPUyIsIkNocm9tZUZvckFuZHJvaWQiLCJjYXB0dXJlTW9kZSIsIm9mZiIsIm1hdGNoZXMiLCJzZWxlY3RvciIsImdldFBhcmVudE9ySG9zdCIsImNsb3Nlc3QiLCJpbmNsdWRlQ1RYIiwiUl9TUEFDRSIsInRvZ2dsZUNsYXNzIiwic3RhdGUiLCJjc3MiLCJzdHlsZSIsIm1hdHJpeCIsInNlbGZPbmx5IiwiYXBwbGllZFRyYW5zZm9ybXMiLCJtYXRyaXhGbiIsImZpbmQiLCJ0YWdOYW1lIiwiaXRlcmF0b3IiLCJnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50Iiwic2Nyb2xsaW5nRWxlbWVudCIsImdldFJlY3QiLCJyZWxhdGl2ZVRvQ29udGFpbmluZ0Jsb2NrIiwicmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCIsInVuZG9TY2FsZSIsImVsUmVjdCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImNvbnRhaW5lclJlY3QiLCJlbE1hdHJpeCIsInNjYWxlWCIsInNjYWxlWSIsImlzU2Nyb2xsZWRQYXN0IiwiZWxTaWRlIiwicGFyZW50U2lkZSIsImdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50IiwiZWxTaWRlVmFsIiwicGFyZW50U2lkZVZhbCIsImdldENoaWxkIiwiY2hpbGROdW0iLCJpbmNsdWRlRHJhZ0VsIiwiY3VycmVudENoaWxkIiwiU29ydGFibGUiLCJsYXN0Q2hpbGQiLCJsYXN0IiwiZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwid2luU2Nyb2xsZXIiLCJpbmRleE9mT2JqZWN0IiwiaW5jbHVkZVNlbGYiLCJlbGVtIiwiZ290U2VsZiIsImVsZW1DU1MiLCJleHRlbmQiLCJkc3QiLCJzcmMiLCJpc1JlY3RFcXVhbCIsInJlY3QxIiwicmVjdDIiLCJfdGhyb3R0bGVUaW1lb3V0IiwidGhyb3R0bGUiLCJtcyIsImNhbmNlbFRocm90dGxlIiwic2Nyb2xsQnkiLCJ5IiwiUG9seW1lciIsIiQiLCJleHBhbmRvIiwiQW5pbWF0aW9uU3RhdGVNYW5hZ2VyIiwiYW5pbWF0aW9uU3RhdGVzIiwiYW5pbWF0aW9uQ2FsbGJhY2tJZCIsImZyb21SZWN0IiwiY2hpbGRNYXRyaXgiLCJhbmltYXRpbmciLCJhbmltYXRpb25UaW1lIiwidGltZSIsInRvUmVjdCIsInByZXZGcm9tUmVjdCIsInByZXZUb1JlY3QiLCJhbmltYXRpbmdSZWN0IiwidGFyZ2V0TWF0cml4IiwiY2FsY3VsYXRlUmVhbFRpbWUiLCJjdXJyZW50UmVjdCIsImR1cmF0aW9uIiwidHJhbnNsYXRlWCIsInRyYW5zbGF0ZVkiLCJyZXBhaW50IiwiZGVmYXVsdHMiLCJQbHVnaW5NYW5hZ2VyIiwic29ydGFibGUiLCJldnQiLCJldmVudE5hbWVHbG9iYWwiLCJwbHVnaW5OYW1lIiwiaW5pdGlhbGl6ZWQiLCJtb2RpZmllZCIsImV2ZW50UHJvcGVydGllcyIsIm1vZGlmaWVkVmFsdWUiLCJkaXNwYXRjaEV2ZW50IiwiX3JlZiIsInJvb3RFbCIsInRhcmdldEVsIiwiY2xvbmVFbCIsInRvRWwiLCJmcm9tRWwiLCJvbGRJbmRleCIsIm5ld0luZGV4Iiwib2xkRHJhZ2dhYmxlSW5kZXgiLCJuZXdEcmFnZ2FibGVJbmRleCIsIm9yaWdpbmFsRXZlbnQiLCJwdXRTb3J0YWJsZSIsImV4dHJhRXZlbnRQcm9wZXJ0aWVzIiwib25OYW1lIiwiYWxsRXZlbnRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicGx1Z2luRXZlbnQiLCJkcmFnRWwiLCJwYXJlbnRFbCIsImdob3N0RWwiLCJuZXh0RWwiLCJsYXN0RG93bkVsIiwiY2xvbmVIaWRkZW4iLCJtb3ZlZCIsIl9oaWRlR2hvc3RGb3JUYXJnZXQiLCJfdW5oaWRlR2hvc3RGb3JUYXJnZXQiLCJfZGlzcGF0Y2hFdmVudCIsImFjdGl2ZUdyb3VwIiwiYXdhaXRpbmdEcmFnU3RhcnRlZCIsImlnbm9yZU5leHRDbGljayIsInNvcnRhYmxlcyIsInRhcEV2dCIsInRvdWNoRXZ0IiwibGFzdER4IiwibGFzdER5IiwidGFwRGlzdGFuY2VMZWZ0IiwidGFwRGlzdGFuY2VUb3AiLCJsYXN0VGFyZ2V0IiwibGFzdERpcmVjdGlvbiIsInBhc3RGaXJzdEludmVydFRocmVzaCIsImlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQiLCJ0YXJnZXRNb3ZlRGlzdGFuY2UiLCJnaG9zdFJlbGF0aXZlUGFyZW50IiwiZ2hvc3RSZWxhdGl2ZVBhcmVudEluaXRpYWxTY3JvbGwiLCJfc2lsZW50Iiwic2F2ZWRJbnB1dENoZWNrZWQiLCJkb2N1bWVudEV4aXN0cyIsIlBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5IiwiQ1NTRmxvYXRQcm9wZXJ0eSIsInN1cHBvcnREcmFnZ2FibGUiLCJzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cyIsIl9kZXRlY3REaXJlY3Rpb24iLCJlbENTUyIsImVsV2lkdGgiLCJjaGlsZDEiLCJjaGlsZDIiLCJmaXJzdENoaWxkQ1NTIiwic2Vjb25kQ2hpbGRDU1MiLCJmaXJzdENoaWxkV2lkdGgiLCJzZWNvbmRDaGlsZFdpZHRoIiwidG91Y2hpbmdTaWRlQ2hpbGQyIiwiX2RyYWdFbEluUm93Q29sdW1uIiwiZHJhZ1JlY3QiLCJ0YXJnZXRSZWN0IiwidmVydGljYWwiLCJkcmFnRWxTMU9wcCIsImRyYWdFbFMyT3BwIiwiZHJhZ0VsT3BwTGVuZ3RoIiwidGFyZ2V0UzFPcHAiLCJ0YXJnZXRTMk9wcCIsInRhcmdldE9wcExlbmd0aCIsIl9kZXRlY3ROZWFyZXN0RW1wdHlTb3J0YWJsZSIsInRocmVzaG9sZCIsInJlY3QiLCJpbnNpZGVIb3Jpem9udGFsbHkiLCJpbnNpZGVWZXJ0aWNhbGx5IiwiX3ByZXBhcmVHcm91cCIsInRvRm4iLCJwdWxsIiwidG8iLCJmcm9tIiwic2FtZUdyb3VwIiwib3RoZXJHcm91cCIsIm9yaWdpbmFsR3JvdXAiLCJuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCIsIm5lYXJlc3QiLCJfY2hlY2tPdXRzaWRlVGFyZ2V0RWwiLCJkYXRhVHJhbnNmZXIiLCJwcmV2ZW50T25GaWx0ZXIiLCJ0b3VjaCIsIm9yaWdpbmFsVGFyZ2V0IiwiZmlsdGVyIiwiX3NhdmVJbnB1dENoZWNrZWRTdGF0ZSIsImNyaXRlcmlhIiwib3duZXJEb2N1bWVudCIsImRyYWdTdGFydEZuIiwiX2Rpc2FibGVEcmFnZ2FibGUiLCJfbmV4dFRpY2siLCJmYWxsYmFjayIsImluc2VydGVkIiwiZmFsbGJhY2tUb2xlcmFuY2UiLCJmYWxsYmFja09mZnNldCIsImdob3N0TWF0cml4IiwicmVsYXRpdmVTY3JvbGxPZmZzZXQiLCJkeCIsImR5IiwiY3NzTWF0cml4IiwicmV2ZXJ0IiwiYWN0aXZlU29ydGFibGUiLCJpc093bmVyIiwiY2FuU29ydCIsImZyb21Tb3J0YWJsZSIsImNvbXBsZXRlZEZpcmVkIiwiZHJhZ092ZXJFdmVudCIsImV4dHJhIiwiY29tcGxldGVkIiwiX29uTW92ZSIsImNhcHR1cmUiLCJpbnNlcnRpb24iLCJlbExhc3RDaGlsZCIsIl9naG9zdElzTGFzdCIsIl9naG9zdElzRmlyc3QiLCJmaXJzdENoaWxkIiwiZGlyZWN0aW9uIiwidGFyZ2V0QmVmb3JlRmlyc3RTd2FwIiwiZGlmZmVyZW50TGV2ZWwiLCJkaWZmZXJlbnRSb3dDb2wiLCJzaWRlMSIsInNjcm9sbGVkUGFzdFRvcCIsInNjcm9sbEJlZm9yZSIsIl9nZXRTd2FwRGlyZWN0aW9uIiwic2libGluZyIsImRyYWdJbmRleCIsIm5leHRTaWJsaW5nIiwibW92ZVZlY3RvciIsIl91bnNpbGVudCIsIl9jYW5jZWxOZXh0VGljayIsIl9nbG9iYWxEcmFnT3ZlciIsIl9nZW5lcmF0ZUlkIiwidXNlQW5pbWF0aW9uIiwiaXRlbXMiLCJ3aWxsSW5zZXJ0QWZ0ZXIiLCJvbk1vdmVGbiIsInJldFZhbCIsInNwYWNlciIsInN3YXBUaHJlc2hvbGQiLCJpbnZlcnRlZFN3YXBUaHJlc2hvbGQiLCJpbnZlcnRTd2FwIiwiaXNMYXN0VGFyZ2V0IiwibW91c2VPbkF4aXMiLCJ0YXJnZXRMZW5ndGgiLCJ0YXJnZXRTMSIsInRhcmdldFMyIiwiaW52ZXJ0IiwiX2dldEluc2VydERpcmVjdGlvbiIsInN1bSIsInJvb3QiLCJpbnB1dHMiLCJpZHgiLCJhdXRvU2Nyb2xscyIsInNjcm9sbEVsIiwic2Nyb2xsUm9vdEVsIiwic2Nyb2xsaW5nIiwibGFzdEF1dG9TY3JvbGxYIiwibGFzdEF1dG9TY3JvbGxZIiwidG91Y2hFdnQkMSIsInBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsIiwiQXV0b1Njcm9sbFBsdWdpbiIsIkF1dG9TY3JvbGwiLCJfcmVmMiIsImNsZWFyUG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwiLCJjbGVhckF1dG9TY3JvbGxzIiwiYXV0b1Njcm9sbCIsIm9nRWxlbVNjcm9sbGVyIiwibmV3RWxlbSIsImlzRmFsbGJhY2siLCJzZW5zIiwic3BlZWQiLCJzY3JvbGxUaGlzSW5zdGFuY2UiLCJzY3JvbGxDdXN0b21GbiIsImxheWVyc091dCIsImN1cnJlbnRQYXJlbnQiLCJjYW5TY3JvbGxYIiwiY2FuU2Nyb2xsWSIsInNjcm9sbFdpZHRoIiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsUG9zWCIsInNjcm9sbFBvc1kiLCJ2eCIsInZ5Iiwic2Nyb2xsT2Zmc2V0WSIsInNjcm9sbE9mZnNldFgiLCJkcm9wIiwiZGlzcGF0Y2hTb3J0YWJsZUV2ZW50IiwiaGlkZUdob3N0Rm9yVGFyZ2V0IiwidW5oaWRlR2hvc3RGb3JUYXJnZXQiLCJ0b1NvcnRhYmxlIiwiUmV2ZXJ0IiwiX3JlZjMiLCJSZW1vdmUiLCJfcmVmNCIsInBhcmVudFNvcnRhYmxlIiwiX19kZWZQcm9wIiwiX19kZWZQcm9wcyIsIl9fZ2V0T3duUHJvcERlc2NzIiwiX19nZXRPd25Qcm9wU3ltYm9scyIsIl9faGFzT3duUHJvcCIsIl9fcHJvcElzRW51bSIsIl9fZGVmTm9ybWFsUHJvcCIsIl9fc3ByZWFkVmFsdWVzIiwiX19zcHJlYWRQcm9wcyIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlQXQiLCJmYXRoZXJOb2RlIiwicG9zaXRpb24iLCJyZWZOb2RlIiwiZ2V0Q29uc29sZSIsImNvbnNvbGUkMSIsImNhY2hlIiwiY2FtZWxpemUiLCJtYW5hZ2VBbmRFbWl0JDEiLCJlbWl0JDEiLCJtYW5hZ2UkMSIsImV2ZW50SGFuZGxlck5hbWVzIiwiZXZlbnRzMiIsImlzUmVhZE9ubHkiLCJ0YWdzIiwiaXNIdG1sVGFnIiwiaXNUcmFuc2l0aW9uIiwiaXNIdG1sQXR0cmlidXRlIiwicHJvamVjdCIsImdldENvbXBvbmVudEF0dHJpYnV0ZXMiLCIkYXR0cnMiLCJjb21wb25lbnREYXRhIiwiYXR0cmlidXRlcyIsImNyZWF0ZVNvcnRhYmxlT3B0aW9uIiwiY2FsbEJhY2tCdWlsZGVyIiwiZ2V0VmFsaWRTb3J0YWJsZUVudHJpZXMiLCJldmVudFR5cGUiLCJldmVudEJ1aWxkZXIiLCJ2YWx1ZTIiLCJnZXRIdG1sRWxlbWVudEZyb21Ob2RlIiwiYWRkQ29udGV4dCIsImRvbUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiQ29tcG9uZW50U3RydWN0dXJlIiwiaGVhZGVyIiwiZGVmYXVsdE5vZGVzIiwiZm9vdGVyIiwicmVhbExpc3QiLCJoMiIsInRhZyIsIl9pc1Jvb3RDb21wb25lbnQiLCJkb21JbmRleCIsImRvbUNoaWxkcmVuIiwiZmlyc3REb21MaXN0RWxlbWVudCIsImluZGV4Rmlyc3REb21MaXN0RWxlbWVudCIsImVsZW1lbnQyIiwiZ2V0U2xvdCIsInNsb3RWYWx1ZSIsImNvbXB1dGVOb2RlcyIsImdldEtleSIsIm5vcm1hbGl6ZWRMaXN0IiwiZ2V0Um9vdEluZm9ybWF0aW9uIiwidHJhbnNpdGlvbiIsImV4dGVybmFsQ29tcG9uZW50IiwiVHJhbnNpdGlvbkdyb3VwIiwiY29tcHV0ZUNvbXBvbmVudFN0cnVjdHVyZSIsImV2dE5hbWUiLCJldnREYXRhIiwibWFuYWdlIiwib3JpZ2luYWxFbGVtZW50IiwibWFuYWdlQW5kRW1pdCIsImRlbGVnYXRlQ2FsbEJhY2siLCJkcmFnZ2luZ0VsZW1lbnQiLCJkcmFnZ2FibGVDb21wb25lbnQiLCJjb21wb25lbnRTdHJ1Y3R1cmUiLCIkZWwiLCJzb3J0YWJsZU9wdGlvbnMiLCJ0YXJnZXREb21FbGVtZW50IiwiaXRlbUtleSIsIm5ld09wdGlvblZhbHVlIiwiX3NvcnRhYmxlIiwiaHRtRWxlbWVudCIsIm9uTGlzdCIsIm5ld0xpc3QiLCJzcGxpY2VMaXN0IiwidXBkYXRlUG9zaXRpb24iLCJyZWxhdGVkIiwiZGVzdGluYXRpb24iLCJhZGRlZCIsInJlbW92ZWQiLCJyZWxhdGVkQ29udGV4dCIsImN1cnJlbnREb21JbmRleCIsImN1cnJlbnRJbmRleCIsIm1vdmUiLCJmdXR1cmVJbmRleCIsImRyYWdnZWRDb250ZXh0Iiwic2VuZEV2ZW50IiwiX3NmY19tYWluJGoiLCJvbkRyYWdnYWJsZU1vdmUiLCJkcmFnZWQiLCJzb3J0ZWQiLCJsZWZ0SW5kZXgiLCJyaWdodEluZGV4IiwibWluTm90SW5kZXgiLCJtYXhOb3RJbmRleCIsImJ1aWxkVXBkYXRlS2V5IiwidXBkYXRlQ2hlY2tlZCIsInVwZGF0ZUNoaWxkcmVuIiwidXBkYXRlUGFyZW50Iiwib25DaGVja0NoYW5nZWQiLCJmaXhlZENoYW5nZSIsImlzUm9vdCIsIkZzVGFibGVDb2x1bW5zRml4ZWRDb250cm9sbGVyIiwiX2NvbXBvbmVudF9mc19jb2x1bW5zX2ZpbHRlcl9uZXN0X2xpc3QiLCJkcmF3ZXJCaW5kIiwiY2hlY2tBbGwiLCJvbkNoZWNrQWxsQ2hhbmdlIiwiY2hlY2tBbGxCaW5kIiwic2hvd0xlbmd0aCIsImFsbExlbmd0aCIsImlzSW5kZXRlcm1pbmF0ZSIsImFsbENoZWNrZWRVcGRhdGUiLCJGc0NvbHVtbnNGaWx0ZXJOZXN0TGlzdCIsIl9zZmNfbWFpbiRnIiwiRnNTZWFyY2hCdXR0b25zIiwidmFsaWRhdGVkRm9ybSIsInNlYXJjaEFmdGVyUmVzZXQiLCJhdXRvU2VhcmNoIiwiZGVib3VuY2UiLCJ2YWxpZGF0ZU9uQ2hhbmdlIiwiX2NlbGxSZW5kZXIiLCJvbkZvcm1WYWxpZGF0ZWQiLCJMb2Rhc2hHZXQiLCJzcGxpdEtleSIsIl9vblVwZGF0ZU1vZGVsVmFsdWUiLCJvblZhbHVlQ2hhbmdlZCIsIl9vbklucHV0Iiwib25JbnB1dCIsIm9uS2V5dXAiLCJhdXRvU2VhcmNoVHJpZ2dlciIsImRvU2VhcmNoIiwiZGVmYXVsdFNsb3QiLCJidWlsZEZpZWxkQ29udGV4dCIsImNvbXBvbmVudFJlbmRlclJlZnMiLCJvbkNvbXBvc2l0aW9uc3RhcnQiLCJjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQiLCJvbkNvbXBvc2l0aW9uZW5kIiwic3BsaXRlZEtleSIsInJ1bGVQYXRoIiwic2VhcmNoRm9ybVJlZiIsImdldENvbXBvbmVudFJlbmRlclJlZiIsImRvUmVzZXQiLCJkb1ZhbGlkYXRlIiwic2lsZW50IiwidmFsaWRhdGVXcmFwIiwiZGVmQnRuT3B0aW9ucyIsIl9jbGljayIsImluaXRBdXRvU2VhcmNoIiwid2FpdCIsImdldFZhbGlkYXRlZEZvcm0iLCJzZXRGb3JtIiwibmV3Rm9ybSIsImlucHV0RXZlbnREaXNhYmxlZCIsImRvQXV0b1NlYXJjaCIsInZhbGlkYXRlT25DaGFuZ2VTaWxlbnQiLCJjb21wb25lbnRSZWYiLCJ2YWx1ZUNoYW5nZUNvbnRleHQiLCJpbW1lZGlhdGUiLCJjb21wdXRlZFJ1bGVzIiwiX3NmY19tYWluJGUiLCJjb21wdXRlZElzTXVsdGlMaW5lIiwiY29sdW1uc1Jvd1JlZiIsImNvbHVtbnNCb3hIZWlnaHRSZWYiLCJjb2x1bW5zTGlzdCIsImNvbHVtbnNMaW5lSGVpZ2h0UmVmIiwic2VhcmNoRXZlbnRDb250ZXh0UmVmIiwidG9nZ2xlQ29sbGFwc2UiLCJjb21wdXRlZENvbE5hbWUiLCJjb21wdXRlZENvbHVtbkJveEhlaWdodCIsIl9jb21wb25lbnRfZnNfc2VhcmNoX2J1dHRvbnMiLCJjb2xsYXBzZSIsIl9zZmNfbWFpbiRkIiwiY29sbGFwc2VCdXR0b24iLCJkZWZhdWx0T3B0aW9uIiwiX19ERUZBVUxUX18iLCJvblVwZGF0ZUFjdGl2ZUtleSIsImRlZmF1bHRMaW1pdCIsImRpYWxvZ09wZW5lZCIsImNvbXB1dGVkRGlhbG9nIiwiZm9ybUl0ZW1Db250ZXh0IiwiaW5wdXRCaW5kaW5nIiwiZW1pdENoYW5nZSIsImhhbmRsZU9wZW4iLCJwYWdlciIsIm9uVGFiQ2hhbmdlIiwiY3VycmVudEljb24iLCJjdXJyZW50Q29sb3IiLCJhcGkiLCJsaW1pdCIsImljb25TdG9yZSIsImxvYWRJY29uU2V0Iiwic2V0cyIsInVuY2F0ZWdvcmllcyIsImNhdGVnb3JpZXMiLCJzZWFyY2hLZXkiLCJ0YWJLZXkiLCJyZXNldFBhZ2VyIiwiaGFuZGxlU2VhcmNoIiwiZ2V0UGFnZXJGcm9tSWNvblNldCIsImVuZCIsImhhbmRsZUljb25TZWxlY3QiLCJvbkNvbmZpcm0iLCJoYW5kbGVDb2xvckNoYW5nZSIsImxvYWRNb3JlIiwiY29tcHV0ZVRhYnMiLCJjb2xvckl0ZW0iLCJfaG9pc3RlZF84IiwiX2hvaXN0ZWRfOSIsIl9ob2lzdGVkXzExIiwiX2NvbXBvbmVudF9mc19sb2FkaW5nIiwiX2hvaXN0ZWRfMTIiLCJfaG9pc3RlZF8xMyIsIl9zZmNfbWFpbiRhIiwiY29tcHV0ZWRSYWRpb05hbWUiLCJ1c2VkRGljdCIsImNvbXB1dGVkT3B0aW9ucyIsIm9wdCIsIm9wdGlvblByb3BzIiwic2VsZWN0UmVmIiwiY29tcHV0ZWRQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwib25TZWxlY3RlZENoYW5nZSIsImRhdGFNYXAiLCJ0ZW1wU2xvdHMiLCJfdXNlU2xvdHMiLCJzZWxlY3RDb21wIiwiJGVtaXQiLCJ0aGlzU2xvdHMiLCJyZW5kZXJMYWJlbCIsIm9wdGlvbkNvbXAiLCJjb3MiLCJnZXRIYXNoQ29kZSIsImNociIsImJ1aWxkQXJyYXlWYWx1ZSIsInZhbHVlQXJyIiwiX3NmY19tYWluJDgiLCJDT0xPUl9MSVNUIiwiRUZGRUNUX0xJU1QiLCJnZXRDb2xvciIsInNldENvbG9yIiwidHlwZUtleSIsImhhc2hjb2RlIiwiY29sb3JzIiwiZWZmZWN0cyIsImNvbXB1dGVkVmFsdWVJdGVtcyIsInZhbHVlUHJvcCIsImxhYmVsUHJvcCIsImNvbG9yZnVsT3B0aW9ucyIsIm5ld1ZhbHVlcyIsIl9zZmNfbWFpbiQ3IiwiY29tcHV0ZWRNdWx0aXBsZSIsInN1YiIsIkxhYmVscyIsIkluZGV4IiwiX3NmY19tYWluJDYiLCJjYXNjYWRlclJlZiIsImRpY3RVc2VSZXQiLCJmaWVsZE5hbWVzQmluZGVyIiwib25TZWxlY3RDaGFuZ2UiLCJzZWxlY3RlZE9wdGlvbnMiLCJfc2ZjX21haW4kNSIsIl9zZmNfbWFpbiQ0IiwiX3NmY19tYWluJDMiLCJfc2ZjX21haW4kMiIsInRyZWVSZWYiLCJkaWN0U2VsZWN0UmVmIiwidmFsdWVzRm9ybWF0UmVmIiwiZGlhbG9nT3BlbiIsIm9uQ2xvc2UiLCJnZXRTY29wZUNvbnRleHQiLCJpbml0U2VsZWN0ZWRLZXlzIiwibXVsdGlwbGUiLCJ2YWx1ZVR5cGUiLCJmb3JtV3JhcHBlck9wdGlvbnMiLCJvcGVuVGFibGVTZWxlY3QiLCJvcGVuT3B0aW9ucyIsImNydWRPcHRpb25zT3ZlcnJpZGUiLCJidWlsZE1lcmdlZENydWRPcHRpb25zIiwiYmVmb3JlT3BlbiIsIndyYXBwZXJPcHRpb25zIiwidmlld01vZGUiLCJkaWFsb2ciLCJidWlsZEluaXRCaW5kIiwib25PayIsImNvbXB1dGVkVmFsdWVzRm9ybWF0IiwidmFsdWVzRm9ybWF0IiwiY29tcHV0ZWRTZWxlY3QiLCJ1cGRhdGVLZXkiLCJjbGVhcmFibGUiLCJidWlsZE11bHRpQmluZGluZyIsImFwcGVuZEJ5VmFsdWVzIiwicmVmcmVzaGluZyIsInNlbGVjdGlvbk9wdGlvbnMiLCJidWlsZFNlbGVjdGlvbkNydWRPcHRpb25zIiwiY3Jvc3NQYWdlIiwic2VsZWN0T25DbGlja1JvdyIsImdldFBhZ2VEYXRhIiwib25TZWxlY3RlZEtleXNDaGFuZ2VkIiwib25SZWZyZXNoZWQiLCJzZXRTZWxlY3RlZFJvd3MiLCJnZXRCYXNlVGFibGVSZWYiLCJnZXREaWN0TWFwIiwiZW1pdE9uVmlld01vZGVsIiwib3BlbmVkIiwiX2NvbXBvbmVudF9mc19kaWN0X3NlbGVjdCIsInNraXBWYWxpZGF0aW9uV3JhcHBlciIsIl9jb21wb25lbnRfZnNfZm9ybV93cmFwcGVyIiwiZGVzdHJveU9uQ2xvc2UiLCJfY29tcG9uZW50X2ZzX2NydWQiLCJzaG93Q3VycmVudCIsIl9jb21wb25lbnRfZnNfdmFsdWVzX2Zvcm1hdCIsImNsb3NhYmxlIiwiZG9VcGRhdGUiLCJkaWN0U2VsZWN0IiwiX2NvbXBvbmVudF9mc190YWJsZV9zZWxlY3QiLCJ0YWJsZVNlbGVjdCIsIkZhc3RDcnVkIiwiY3VzdG9tQ29tcG9uZW50cyIsImNvbSIsInByaW50V2FybmluZ0xvZ2dlciIsImJyb3dzZXIiLCJ1YSIsImNzdiIsImlldiIsImllb2xkIiwidHJpZGVudCIsInJ2IiwiQk9NIiwiY3N2RGF0YSIsImZpbGVuYW1lIiwib1dpbiIsImxpbmsiLCJuZXdMaW5lIiwiYXBwZW5kTGluZSIsInNlcGFyYXRvciIsInF1b3RlZCIsImxpbmUiLCJkYXRhcyIsIm5vSGVhZGVyIiwiY29sdW1uT3JkZXIiLCJzZWxmIiwidmlldyIsIkJsb2JCdWlsZGVyIiwiZ2V0X2NsYXNzIiwiRmFrZUJsb2JCdWlsZGVyIiwiRmFrZUJsb2IiLCJlbmNvZGluZyIsIkZCQl9wcm90byIsIkZCX3Byb3RvIiwiRmlsZVJlYWRlclN5bmMiLCJGaWxlRXhjZXB0aW9uIiwiZmlsZV9leF9jb2RlcyIsImZpbGVfZXhfY29kZSIsInJlYWxfVVJMIiwicmVhbF9jcmVhdGVfb2JqZWN0X1VSTCIsInJlYWxfcmV2b2tlX29iamVjdF9VUkwiLCJVUkwiLCJidG9hIiwiYXRvYiIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsImJsb2IiLCJkYXRhX1VSSV9oZWFkZXIiLCJvYmplY3RfVVJMIiwiYmIiLCJidWYiLCJidWZfbGVuIiwiZnIiLCJibG9iUGFydHMiLCJidWlsZGVyIiwiZyIsImdsb2JhbCIsImoiLCJtIiwiWExTWCIsImN1cnJlbnRfYW5zaSIsIlZBTElEX0FOU0kiLCJDUzJDUCIsInNldF9hbnNpIiwicmVzZXRfYW5zaSIsInNldF9jcCIsInJlc2V0X2NwIiwiY2hhcl9jb2RlcyIsInV0ZjE2bGVyZWFkIiwidXRmMTZiZXJlYWQiLCJkZWJvbSIsImMxIiwiYzIiLCJfZ2V0Y2hhciIsIl9nZXRhbnNpIiwiJGNwdGFibGUiLCJCYXNlNjRfbWFwIiwiQmFzZTY0X2VuY29kZSIsImMzIiwiZTEiLCJlMiIsImUzIiwiZTQiLCJCYXNlNjRfZGVjb2RlIiwiaGFzX2J1ZiIsIkJ1ZmZlcl9mcm9tIiwibmJmcyIsImVuYyIsIm5ld19yYXdfYnVmIiwibmV3X3Vuc2FmZV9idWYiLCJzMmEiLCJzMmFiIiwiYTJzIiwiYTJ1IiwiYWIyYSIsImJjb25jYXQiLCJidWZzIiwibWF4bGVuIiwidXRmOGRlY29kZSIsIm91dCIsIndpZHgiLCJMIiwicmlkeCIsImNocjAiLCJjaHIxIiwiX3N0cnJldiIsInBhZDAiLCJmaWxsIiwicGFkXyIsInJwYWRfIiwicGFkMHIxIiwicGFkMHIyIiwicDJfMzIiLCJwYWQwciIsIlNTRl9pc2dlbmVyYWwiLCJkYXlzIiwibW9udGhzIiwiU1NGX2luaXRfdGFibGUiLCJ0YWJsZV9mbXQiLCJTU0ZfZGVmYXVsdF9tYXAiLCJTU0ZfZGVmYXVsdF9zdHIiLCJTU0ZfZnJhYyIsIkQiLCJtaXhlZCIsInNnbiIsIkIiLCJQXzIiLCJQXzEiLCJQIiwiUV8yIiwiUV8xIiwiUSIsIkEiLCJxIiwiU1NGX3BhcnNlX2RhdGVfY29kZSIsImIyIiwiZG93IiwiZG91dCIsIlNTRl9maXhfaGlqcmkiLCJTU0ZiYXNlZGF0ZSIsIlNTRmRudGhyZXNoIiwiU1NGYmFzZTE5MDQiLCJkYXRlbnVtX2xvY2FsIiwiZGF0ZTE5MDQiLCJlcG9jaCIsIlNTRl9zdHJpcF9kZWNpbWFsIiwiU1NGX25vcm1hbGl6ZV9leHAiLCJTU0Zfc21hbGxfZXhwIiwidyIsIlNTRl9sYXJnZV9leHAiLCJTU0ZfZ2VuZXJhbF9udW0iLCJWIiwiU1NGX2dlbmVyYWwiLCJTU0ZfZm9ybWF0IiwiU1NGX3dyaXRlX2RhdGUiLCJmbXQiLCJzczAiLCJzcyIsInR0Iiwib3V0bCIsIm91dHN0ciIsImNvbW1haWZ5IiwicGN0MSIsIndyaXRlX251bV9wY3QiLCJzZm10IiwibXVsIiwid3JpdGVfbnVtIiwid3JpdGVfbnVtX2NtIiwid3JpdGVfbnVtX2V4cCIsInBlcmlvZCIsImVlIiwiZmFrZWUiLCIkJCIsIiQxIiwiJDIiLCIkMyIsImZyYWMxIiwid3JpdGVfbnVtX2YxIiwiYXZhbCIsInNpZ24iLCJkZW4iLCJyciIsIm15biIsIm15ZCIsIndyaXRlX251bV9mMiIsImRlYzEiLCJjbG9zZXBhcmVuIiwicGhvbmUiLCJoYXNocSIsImNjIiwicm5kIiwiZGQiLCJkZWMiLCJfZnJhYyIsImNhcnJ5IiwiZmxyIiwid3JpdGVfbnVtX2ZsdCIsImZmbXQiLCJyaSIsImZmIiwib2EiLCJscmVzIiwicnJlcyIsIndyaXRlX251bV9jbTIiLCJ3cml0ZV9udW1fcGN0MiIsIndyaXRlX251bV9leHAyIiwid3JpdGVfbnVtX2ludCIsIlNTRl9zcGxpdF9mbXQiLCJpbl9zdHIiLCJTU0ZfYWJzdGltZSIsImZtdF9pc19kYXRlIiwiZXZhbF9mbXQiLCJmbGVuIiwibHN0IiwiaHIiLCJidCIsInNzbSIsIm5zdHIiLCJqaiIsIm15diIsIm9zdHIiLCJkZWNwdCIsImxhc3RpIiwicmV0dmFsIiwiY2ZyZWdleDIiLCJjaGtjb25kIiwidGhyZXNoIiwiY2hvb3NlX2ZtdCIsImxhdCIsIm0xIiwibTIiLCJTU0ZfbG9hZCIsIlNTRl9sb2FkX3RhYmxlIiwidGJsIiwibWFrZV9zc2YiLCJTU0YiLCJTU0ZJbXBsaWNpdCIsImRhdGVORnJlZ2V4IiwiZGF0ZU5GX3JlZ2V4IiwiZGF0ZU5GIiwiZGF0ZU5GX2ZpeCIsIkgiLCJNIiwiUyIsImRhdGVzdHIiLCJ0aW1lc3RyIiwiQ1JDMzIiLCJzaWduZWRfY3JjX3RhYmxlIiwiVDAiLCJzbGljZV9ieV8xNl90YWJsZXMiLCJUIiwiVFQiLCJUMSIsIlQyIiwiVDMiLCJUNCIsIlQ1IiwiVDYiLCJUNyIsIlQ4IiwiVDkiLCJUYSIsIlRiIiwiVGMiLCJUZCIsIlRlIiwiVGYiLCJjcmMzMl9ic3RyIiwiYnN0ciIsIkMiLCJjcmMzMl9idWYiLCJjcmMzMl9zdHIiLCJDRkIiLCJleHBvcnRzIiwibmFtZWNtcCIsIlIiLCJkaXJuYW1lIiwid3JpdGVfZG9zX2RhdGUiLCJobXMiLCJ5bWQiLCJwYXJzZV9kb3NfZGF0ZSIsInBhcnNlX2V4dHJhX2ZpZWxkIiwicHJlcF9ibG9iIiwiZmxhZ3MiLCJzeiIsInRndCIsImZzIiwiZ2V0X2ZzIiwicGFyc2UiLCJmaWxlIiwicGFyc2VfemlwIiwicGFyc2VfbWFkIiwibXZlciIsInNzeiIsIm5tZnMiLCJkaWZhdF9zZWNfY250IiwiZGlyX3N0YXJ0IiwibWluaWZhdF9zdGFydCIsImRpZmF0X3N0YXJ0IiwiZmF0X2FkZHJzIiwibXYiLCJjaGVja19nZXRfbXZlciIsImNoZWNrX3NoaWZ0cyIsImRpcl9jbnQiLCJzZWN0b3JzIiwic2VjdG9yaWZ5Iiwic2xldXRoX2ZhdCIsInNlY3Rvcl9saXN0IiwibWFrZV9zZWN0b3JfbGlzdCIsIkVORE9GQ0hBSU4iLCJmaWxlcyIsIlBhdGhzIiwiRmlsZUluZGV4IiwiRnVsbFBhdGhzIiwicmVhZF9kaXJlY3RvcnkiLCJidWlsZF9mdWxsX3BhdGhzIiwiSEVBREVSX1NJR05BVFVSRSIsInNoaWZ0IiwibnNlY3RvcnMiLCJGSSIsIkZQIiwicGwiLCJkYWQiLCJnZXRfbWZhdF9lbnRyeSIsInBheWxvYWQiLCJtaW5pIiwiTVNTWiIsIl9fcmVhZEludDMyTEUiLCJuZXdfYnVmIiwiY250Iiwic2VjdG9yIiwiZ2V0X3NlY3Rvcl9saXN0IiwiY2hrZCIsImJ1Zl9jaGFpbiIsIm1vZHVsdXMiLCJhZGRyIiwiX190b0J1ZmZlciIsInNsIiwic2VlbiIsIm1pbmlmYXRfc3RvcmUiLCJuYW1lbGVuIiwiX191dGYxNmxlIiwiY3RpbWUiLCJyZWFkX2RhdGUiLCJtdGltZSIsIm9mZnNldCIsIl9fcmVhZFVJbnQzMkxFIiwicmVhZF9maWxlIiwicmVhZCIsImluaXRfY2ZiIiwiY2ZiIiwic2VlZF9jZmIiLCJubSIsInJlYnVpbGRfY2ZiIiwiZ2MiLCJfZmlsZSIsIm5vdyIsImZ1bGxQYXRocyIsIkhFQURFUl9DTFNJRCIsImVsdCIsIl93cml0ZSIsIl9vcHRzIiwid3JpdGVfbWFkIiwid3JpdGVfemlwIiwibWluaV9zaXplIiwiZmF0X3NpemUiLCJtaW5pX2NudCIsIm1mYXRfY250IiwiZmF0X2Jhc2UiLCJmYXRfY250IiwiZGlmYXRfY250IiwiSEVBREVSX1NJRyIsImNoYWluaXQiLCJjb25zdHMiLCJfbm0iLCJVQ0Z1bGxQYXRocyIsIlVDUGF0aHMiLCJVQ1BhdGgiLCJ3cml0ZV9maWxlIiwid3JpdGUiLCJfemxpYiIsInVzZV96bGliIiwiemxpYiIsIkluZmxhdGVSYXciLCJJbmZsUmF3IiwiX2luZmxhdGVSYXdTeW5jIiwidXN6IiwiX2luZmxhdGUiLCJfZGVmbGF0ZVJhd1N5bmMiLCJfZGVmbGF0ZSIsIkNMRU5fT1JERVIiLCJMRU5fTE4iLCJEU1RfTE4iLCJiaXRfc3dhcF84IiwidXNlX3R5cGVkX2FycmF5cyIsImJpdHN3YXA4IiwiYml0X3N3YXBfbiIsInJldiIsInJlYWRfYml0c18yIiwiYmwiLCJyZWFkX2JpdHNfMyIsInJlYWRfYml0c180IiwicmVhZF9iaXRzXzUiLCJyZWFkX2JpdHNfNyIsInJlYWRfYml0c19uIiwid3JpdGVfYml0c18zIiwid3JpdGVfYml0c18xIiwid3JpdGVfYml0c184Iiwid3JpdGVfYml0c18xNiIsInJlYWxsb2MiLCJ6ZXJvX2ZpbGxfYXJyYXkiLCJidWlsZF90cmVlIiwiY2xlbnMiLCJjbWFwIiwiTUFYIiwiY2NvZGUiLCJibF9jb3VudCIsImN0cmVlIiwiY2xlbmkiLCJmaXhfbG1hcCIsImZpeF9kbWFwIiwiZGxlbnMiLCJfZGVmbGF0ZVJhdyIsIkRTVF9MTl9SRSIsIkxFTl9MTl9SRSIsIndyaXRlX3N0b3JlZCIsImJvZmYiLCJ3cml0ZV9odWZmX2ZpeGVkIiwiYWRkcnMiLCJtbGVuIiwibGVuX2ViIiwiZHN0X2ViIiwiZHluX2xtYXAiLCJkeW5fZG1hcCIsImR5bl9jbWFwIiwiZHluX2xlbl8xIiwiZHluX2xlbl8yIiwiZHluIiwiX0hMSVQiLCJfSERJU1QiLCJfSENMRU4iLCJuZXh0X2NvZGUiLCJoY29kZXMiLCJoMSIsImluZmxhdGUiLCJvdXRidWYiLCJ3b2ZmIiwiT0wiLCJtYXhfbGVuXzEiLCJtYXhfbGVuXzIiLCJiaXRzIiwid2Fybl9vcl90aHJvdyIsIndybiIsImZjbnQiLCJzdGFydF9jZCIsImNzeiIsImVmc3oiLCJmY3N6IiwiRUYiLCJwYXJzZV9sb2NhbF9maWxlIiwibWV0aCIsImNyYzMyIiwiX2NzeiIsIl91c3oiLCJlZiIsImNmYl9hZGQiLCJjZGlycyIsImZwIiwiZmkiLCJjcmNzIiwic3pfY2QiLCJuYW1lYnVmIiwiQ29udGVudFR5cGVNYXAiLCJnZXRfY29udGVudF90eXBlIiwiZXh0Iiwid3JpdGVfYmFzZTY0Xzc2Iiwid3JpdGVfcXVvdGVkX3ByaW50YWJsZSIsImVuY29kZWQiLCJzaSIsInBhcnNlX3F1b3RlZF9wcmludGFibGUiLCJkaSIsIm9pIiwicGFyc2VfbWltZSIsImZuYW1lIiwiY3RlIiwiY3R5cGUiLCJmZGF0YSIsIm1ib3VuZGFyeSIsImJvdW5kYXJ5Iiwic3RhcnRfZGkiLCJjYSIsImNzdHIiLCJkaXNwY250IiwiY3NsIiwicXAiLCJjZmJfbmV3IiwidW5zYWZlIiwiZnBhdGgiLCJjZmJfZGVsIiwiY2ZiX21vdiIsIm9sZF9uYW1lIiwibmV3X25hbWUiLCJjZmJfZ2MiLCJSZWFkU2hpZnQiLCJDaGVja0ZpZWxkIiwiYmxvYmlmeSIsIndyaXRlX2RsIiwidXRmOHdyaXRlIiwicmVhZF9iaW5hcnkiLCJpbmZpbGUiLCJrcyIsIm8yIiwiZXZlcnRfa2V5IiwiSyIsImV2ZXJ0IiwiZXZlcnRfbnVtIiwiZXZlcnRfYXJyIiwiYmFzZWRhdGUiLCJkYXRlbnVtIiwiZG50aHJlc2giLCJyZWZkYXRlIiwicmVmb2Zmc2V0IiwibnVtZGF0ZSIsInBhcnNlX2lzb2R1ciIsInNlYyIsIm10IiwiZ29vZF9wZF9kYXRlXzEiLCJnb29kX3BkX2RhdGUiLCJnb29kX3BkIiwicGFyc2VEYXRlIiwiZml4ZGF0ZSIsImNjMnN0ciIsImRlYm9taXQiLCJkdXAiLCJmdXp6eW51bSIsInd0IiwibG93ZXJfbW9udGhzIiwiZnV6enlkYXRlIiwibG93ZXIiLCJzcGxpdF9yZWdleCIsInNhZmVfc3BsaXRfcmVnZXgiLCJyZSIsImdldGRhdGFzdHIiLCJnZXRkYXRhYmluIiwiZ2V0ZGF0YSIsInNhZmVnZXR6aXBmaWxlIiwiemlwIiwiZ2V0emlwZmlsZSIsImdldHppcGRhdGEiLCJzYWZlIiwiZ2V0emlwc3RyIiwiZ2V0emlwYmluIiwiemlwZW50cmllcyIsInppcF9hZGRfZmlsZSIsInppcF9uZXciLCJ6aXBfcmVhZCIsInJlc29sdmVfcGF0aCIsInN0ZXAiLCJYTUxfSEVBREVSIiwiYXR0cmVnZXhnIiwidGFncmVnZXgxIiwidGFncmVnZXgyIiwidGFncmVnZXgiLCJuc3JlZ2V4IiwibnNyZWdleDIiLCJwYXJzZXhtbHRhZyIsInNraXBfcm9vdCIsInNraXBfTEMiLCJlcSIsInF1b3QiLCJzdHJpcF9ucyIsImVuY29kaW5ncyIsInJlbmNvZGluZyIsInVuZXNjYXBleG1sIiwiZW5jcmVnZXgiLCJjb2RlcmVnZXgiLCJkZWNyZWdleCIsImNoYXJlZ2V4IiwiZXNjYXBleG1sIiwiZXNjYXBleG1sdGFnIiwiaHRtbGNoYXJlZ2V4IiwiZXNjYXBlaHRtbCIsImVzY2FwZXhsbWwiLCJ4bG1sX2ZpeHN0ciIsImVudHJlZ2V4IiwiZW50cmVwbCIsInhsbWxfdW5maXhzdHIiLCJwYXJzZXhtbGJvb2wiLCJ1dGY4cmVhZGEiLCJvcmlnIiwidXRmOHJlYWRiIiwid3ciLCJ1dGY4cmVhZGMiLCJ1dGY4Y29ycHVzIiwidXRmOHJlYWQiLCJtYXRjaHRhZyIsIm10Y2FjaGUiLCJodG1sZGVjb2RlIiwiZW50aXRpZXMiLCJ2dHJlZ2V4IiwidnRfY2FjaGUiLCJ2dHZyZWdleCIsInZ0bXJlZ2V4IiwicGFyc2VWZWN0b3IiLCJ3dHJlZ2V4Iiwid3JpdGV0YWciLCJ3eHRfaGVscGVyIiwid3JpdGV4dGFnIiwid3JpdGVfdzNjZHRmIiwid3JpdGVfdnQiLCJ4bHN4IiwieGxtbF9ub3JtYWxpemUiLCJ4bG1scmVnZXgiLCJYTUxOUyIsIlhNTE5TX21haW4iLCJYTE1MTlMiLCJyZWFkX2RvdWJsZV9sZSIsIndyaXRlX2RvdWJsZV9sZSIsImJzIiwiYXYiLCJfX190b0J1ZmZlciIsIl9fX3V0ZjE2bGUiLCJfX3JlYWRVSW50MTZMRSIsIl9fX2hleGxpZnkiLCJfX2hleGxpZnkiLCJfX191dGY4IiwiX19yZWFkVUludDgiLCJfX3V0ZjgiLCJfX19scHN0ciIsIl9fbHBzdHIiLCJfX19jcHN0ciIsIl9fY3BzdHIiLCJfX19scHdzdHIiLCJfX2xwd3N0ciIsIl9fX2xwcDQiLCJfX2xwcDQiLCJfX184bHBwNCIsIl9fOGxwcDQiLCJfX19kb3VibGUiLCJfX2RvdWJsZSIsImlzX2J1ZiIsIl9fcmVhZEludDE2TEUiLCJfX3JlYWRJbnQzMkJFIiwib0kiLCJvUiIsIm9vIiwibG9jIiwiX193cml0ZVVJbnQzMkxFIiwiX193cml0ZUludDMyTEUiLCJfX3dyaXRlVUludDE2TEUiLCJXcml0ZVNoaWZ0IiwiaGV4c3RyIiwiZmxkIiwicG9zIiwicGFyc2Vub29wIiwicmVjb3JkaG9wcGVyIiwidG1wYnl0ZSIsImNudGJ5dGUiLCJSVCIsIlhMU0JSZWNvcmRFbnVtIiwiYnVmX2FycmF5IiwiYmxrc3oiLCJuZXdibGsiLCJjdXJidWYiLCJlbmRidWYiLCJ3cml0ZV9yZWNvcmQiLCJiYSIsInNoaWZ0X2NlbGxfeGxzIiwic2hpZnRfcmFuZ2VfeGxzIiwiZW5jb2RlX2NlbGxfeGxzIiwiYmlmZiIsImVuY29kZV9jZWxsIiwiZml4X2NvbCIsImZpeF9yb3ciLCJlbmNvZGVfcmFuZ2VfeGxzIiwiZW5jb2RlX2NvbCIsImVuY29kZV9yb3ciLCJkZWNvZGVfcm93Iiwicm93c3RyIiwidW5maXhfcm93IiwiZGVjb2RlX2NvbCIsImNvbHN0ciIsInVuZml4X2NvbCIsInNwbGl0X2NlbGwiLCJkZWNvZGVfY2VsbCIsImRlY29kZV9yYW5nZSIsImVuY29kZV9yYW5nZSIsImNzIiwiY2UiLCJzYWZlX2RlY29kZV9yYW5nZSIsInNhZmVfZm9ybWF0X2NlbGwiLCJmb3JtYXRfY2VsbCIsIkJFcnIiLCJzaGVldF90b193b3JrYm9vayIsInNoZWV0Iiwic2hlZXRzIiwic2hlZXRfYWRkX2FvYSIsIl93cyIsImRlbnNlIiwid3MiLCJfUiIsIl9DIiwiX29yaWdpbiIsIl9yYW5nZSIsIl9fUiIsIl9fQyIsImNlbGxfcmVmIiwiYW9hX3RvX3NoZWV0IiwicGFyc2VfSW50MzJMRSIsIndyaXRlX1VJbnQzMkxFIiwicGFyc2VfWExXaWRlU3RyaW5nIiwiY2NoQ2hhcmFjdGVycyIsIndyaXRlX1hMV2lkZVN0cmluZyIsIl9udWxsIiwicGFyc2VfU3RyUnVuIiwid3JpdGVfU3RyUnVuIiwicnVuIiwicGFyc2VfUmljaFN0ciIsInJnc1N0clJ1biIsImR3U2l6ZVN0clJ1biIsIndyaXRlX1JpY2hTdHIiLCJwYXJzZV9CcnRDb21tZW50VGV4dCIsIndyaXRlX0JydENvbW1lbnRUZXh0IiwicGFyc2VfWExTQkNlbGwiLCJpU3R5bGVSZWYiLCJ3cml0ZV9YTFNCQ2VsbCIsInBhcnNlX1hMU0JTaG9ydENlbGwiLCJ3cml0ZV9YTFNCU2hvcnRDZWxsIiwicGFyc2VfWExTQkNvZGVOYW1lIiwid3JpdGVfWExTQkNvZGVOYW1lIiwicGFyc2VfWExOdWxsYWJsZVdpZGVTdHJpbmciLCJ3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyIsInBhcnNlX1hMTmFtZVdpZGVTdHJpbmciLCJwYXJzZV9SZWxJRCIsIndyaXRlX1JlbElEIiwicGFyc2VfUmtOdW1iZXIiLCJmWDEwMCIsImZJbnQiLCJSSyIsIndyaXRlX1JrTnVtYmVyIiwiZDEwMCIsInBhcnNlX1JmWCIsIndyaXRlX1JmWCIsInBhcnNlX1VuY2hlY2tlZFJmWCIsIndyaXRlX1VuY2hlY2tlZFJmWCIsInBhcnNlX1hudW0iLCJ3cml0ZV9YbnVtIiwicGFyc2VfQnJ0Q29sb3IiLCJ4Q29sb3JUeXBlIiwiblRTIiwiYlIiLCJiRyIsImJCIiwiaWN2IiwiWExTSWN2IiwicmdiMkhleCIsIndyaXRlX0JydENvbG9yIiwicmdiIiwicGFyc2VfRm9udEZsYWdzIiwid3JpdGVfRm9udEZsYWdzIiwiZm9udCIsImdyYml0IiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmciLCJDbGlwRm10IiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JBbnNpU3RyaW5nIiwicGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JVbmljb2RlU3RyaW5nIiwiVlRfSTIiLCJWVF9JNCIsIlZUX0JPT0wiLCJWVF9WQVJJQU5UIiwiVlRfVUk0IiwiVlRfRklMRVRJTUUiLCJWVF9CTE9CIiwiVlRfQ0YiLCJWVF9WRUNUT1JfVkFSSUFOVCIsIlZUX1ZFQ1RPUl9MUFNUUiIsIlZUX1NUUklORyIsIlZUX1VTVFIiLCJWVF9DVVNUT00iLCJEb2NTdW1tYXJ5UElERFNJIiwiU3VtbWFyeVBJRFNJIiwiQ291bnRyeUVudW0iLCJYTFNGaWxsUGF0dGVybiIsInJnYmlmeSIsIl9YTFNJY3YiLCJSQkVyciIsImN0MnR5cGUiLCJDVF9MSVNUIiwibmV3X2N0IiwicGFyc2VfY3QiLCJjdGV4dCIsIndyaXRlX2N0IiwidHlwZTJjdCIsImYxIiwiZjIiLCJmMyIsIlJFTFMiLCJnZXRfcmVsc19wYXRoIiwicGFyc2VfcmVscyIsImN1cnJlbnRGaWxlUGF0aCIsInJlbHMiLCJyZWwiLCJjYW5vbmljdGFyZ2V0Iiwid3JpdGVfcmVscyIsInJpZCIsImFkZF9yZWxzIiwicklkIiwicmVsb2JqIiwidGFyZ2V0bW9kZSIsIkNUX09EUyIsInBhcnNlX21hbmlmZXN0IiwiUm4iLCJGRXRhZyIsIndyaXRlX21hbmlmZXN0IiwibWFuaWZlc3QiLCJ3cml0ZV9yZGZfdHlwZSIsIndyaXRlX3JkZl9oYXMiLCJ3cml0ZV9yZGYiLCJyZGYiLCJ3cml0ZV9tZXRhX29kcyIsIkNPUkVfUFJPUFMiLCJDT1JFX1BST1BTX1JFR0VYIiwicGFyc2VfY29yZV9wcm9wcyIsImN1ciIsImNwX2RvaXQiLCJ3cml0ZV9jb3JlX3Byb3BzIiwiRVhUX1BST1BTIiwiUHNldWRvUHJvcHNQYWlycyIsImxvYWRfcHJvcHNfcGFpcnMiLCJIUCIsIlRPUCIsImhwIiwicGFydHMiLCJwYXJzZV9leHRfcHJvcHMiLCJ4bWwiLCJ3cml0ZV9leHRfcHJvcHMiLCJXIiwiY3VzdHJlZ2V4IiwicGFyc2VfY3VzdF9wcm9wcyIsInRva3MiLCJ3cml0ZV9jdXN0X3Byb3BzIiwicGlkIiwiWExNTERvY1Byb3BzTWFwIiwiZXZlcnRfWExNTERQTSIsInhsbWxfc2V0X3Byb3AiLCJQcm9wcyIsInhsbWxfd3JpdGVfZG9jcHJvcHMiLCJ4bG1sX3dyaXRlX2N1c3Rwcm9wcyIsIkN1c3Rwcm9wcyIsIkJMQUNLTElTVCIsInBhcnNlX0ZJTEVUSU1FIiwiZHdMb3dEYXRlVGltZSIsImR3SGlnaERhdGVUaW1lIiwid3JpdGVfRklMRVRJTUUiLCJwYXJzZV9scHN0ciIsInBhZCIsInBhcnNlX2xwd3N0ciIsInBhcnNlX1Z0U3RyaW5nQmFzZSIsInN0cmluZ1R5cGUiLCJwYXJzZV9WdFN0cmluZyIsInBhcnNlX1Z0VW5hbGlnbmVkU3RyaW5nIiwicGFyc2VfVnRWZWNMcHdzdHJWYWx1ZSIsInBhcnNlX1Z0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZSIsInBhcnNlX1Z0SGVhZGluZ1BhaXIiLCJoZWFkaW5nU3RyaW5nIiwicGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlIiwiaGVhZGVyUGFydHMiLCJwYXJzZV9WdFZlY0hlYWRpbmdQYWlyVmFsdWUiLCJjRWxlbWVudHMiLCJwYXJzZV9kaWN0aW9uYXJ5IiwiQ29kZVBhZ2UiLCJwYXJzZV9CTE9CIiwiYnl0ZXMiLCJwYXJzZV9DbGlwYm9hcmREYXRhIiwid3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlIiwicGFyc2VfUHJvcGVydHlTZXQiLCJQSURTSSIsInN0YXJ0X2FkZHIiLCJOdW1Qcm9wcyIsIkRpY3Rpb25hcnkiLCJEaWN0T2JqIiwiUHJvcElEIiwiT2Zmc2V0IiwiUHJvcEgiLCJwaWRkc2kiLCJvbGRwb3MiLCJwYXJzZWJvb2wiLCJYTFNQU1NraXAiLCJndWVzc19wcm9wZXJ0eV90eXBlIiwid3JpdGVfUHJvcGVydHlTZXQiLCJSRSIsImhkciIsInBpYW8iLCJwciIsInBpbyIsInBpbmZvIiwicGFyc2VfUHJvcGVydHlTZXRTdHJlYW0iLCJjbHNpZCIsIk51bVNldHMiLCJGTVRJRDAiLCJGTVRJRDEiLCJPZmZzZXQwIiwiT2Zmc2V0MSIsIlN5c3RlbUlkZW50aWZpZXIiLCJDTFNJRCIsIlBTZXQwIiwicnZhbCIsIlBTZXQxIiwid3JpdGVfUHJvcGVydHlTZXRTdHJlYW0iLCJlbnRyaWVzMiIsImNsc2lkMiIsInBzMCIsInBzMSIsInBhcnNlbm9vcDIiLCJ3cml0ZXplcm9lcyIsInBhcnNsdXJwIiwid3JpdGVib29sIiwicGFyc2V1aW50MTYiLCJ3cml0ZXVpbnQxNiIsInBhcnNldWludDE2YSIsInBhcnNlX0JlcyIsIndyaXRlX0JlcyIsInBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nIiwiY2NoIiwiZkhpZ2hCeXRlIiwicGFyc2VfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nIiwiZkV4dFN0IiwiZlJpY2hTdCIsImNSdW4iLCJjYkV4dFJzdCIsIndyaXRlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyIsInhsc3RyIiwib3RleHQiLCJwYXJzZV9YTFVuaWNvZGVTdHJpbmdOb0NjaCIsInBhcnNlX1hMVW5pY29kZVN0cmluZyIsInBhcnNlX1hMVW5pY29kZVN0cmluZzIiLCJ3cml0ZV9YTFVuaWNvZGVTdHJpbmciLCJwYXJzZV9Db250cm9sSW5mbyIsImFjY2VsIiwicGFyc2VfVVJMTW9uaWtlciIsInBhcnNlX0ZpbGVNb25pa2VyIiwiY0FudGkiLCJwcmVhbWJsZSIsImFuc2lQYXRoIiwidW5pY29kZVBhdGgiLCJwYXJzZV9IeXBlcmxpbmtNb25pa2VyIiwicGFyc2VfSHlwZXJsaW5rU3RyaW5nIiwid3JpdGVfSHlwZXJsaW5rU3RyaW5nIiwicGFyc2VfSHlwZXJsaW5rIiwic1ZlciIsImRpc3BsYXlOYW1lIiwidGFyZ2V0RnJhbWVOYW1lIiwibW9uaWtlciIsIm9sZU1vbmlrZXIiLCJMb2MiLCJndWlkIiwiZmlsZVRpbWUiLCJ3cml0ZV9IeXBlcmxpbmsiLCJobCIsIlRhcmdldCIsImhhc2hpZHgiLCJGIiwiUHJldGFyZ2V0IiwicGFyc2VfTG9uZ1JHQkEiLCJwYXJzZV9Mb25nUkdCIiwicGFyc2VfWExTQ2VsbCIsInJ3IiwiaXhmZSIsIndyaXRlX1hMU0NlbGwiLCJwYXJzZV9mcnRIZWFkZXIiLCJydCIsInBhcnNlX09wdFhMVW5pY29kZVN0cmluZyIsInBhcnNlX1hUSSIsImlTdXBCb29rIiwiaXRhYkZpcnN0IiwiaXRhYkxhc3QiLCJwYXJzZV9Sa1JlYyIsInBhcnNlX0FkZGluVWRmIiwidWRmTmFtZSIsInBhcnNlX1JlZjhVIiwicndGaXJzdCIsInJ3TGFzdCIsImNvbEZpcnN0IiwiY29sTGFzdCIsIndyaXRlX1JlZjhVIiwicGFyc2VfUmVmVSIsInBhcnNlX1JlZiIsInBhcnNlX0Z0Q21vIiwib3QiLCJwYXJzZV9GdE50cyIsInBhcnNlX0Z0Q2YiLCJwYXJzZV9GdFNraXAiLCJGdFRhYiIsInBhcnNlX0Z0QXJyYXkiLCJmdHMiLCJmdCIsInBhcnNlX0JPRiIsIndyaXRlX0JPRiIsIndiIiwicGFyc2VfSW50ZXJmYWNlSGRyIiwicGFyc2VfV3JpdGVBY2Nlc3MiLCJVc2VyTmFtZSIsIndyaXRlX1dyaXRlQWNjZXNzIiwiYjgiLCJwYXJzZV9Xc0Jvb2wiLCJwYXJzZV9Cb3VuZFNoZWV0OCIsImhpZGRlbiIsIndyaXRlX0JvdW5kU2hlZXQ4IiwicGFyc2VfU1NUIiwidWNudCIsInN0cnMiLCJ3cml0ZV9TU1QiLCJzc3QiLCJwYXJzZV9FeHRTU1QiLCJleHRzc3QiLCJwYXJzZV9Sb3ciLCJtaXlSdyIsInBhcnNlX0ZvcmNlRnVsbENhbGN1bGF0aW9uIiwiZnVsbGNhbGMiLCJwYXJzZV9SZWNhbGNJZCIsInBhcnNlX0RlZmF1bHRSb3dIZWlnaHQiLCJmbCIsInBhcnNlX1dpbmRvdzEiLCJ4V24iLCJ5V24iLCJkeFduIiwiZHlXbiIsImlUYWJDdXIiLCJpVGFiRmlyc3QiLCJjdGFiU2VsIiwid1RhYlJhdGlvIiwid3JpdGVfV2luZG93MSIsInBhcnNlX1dpbmRvdzIiLCJ3cml0ZV9XaW5kb3cyIiwicGFyc2VfUGFuZSIsInBhcnNlX0ZvbnQiLCJ3cml0ZV9Gb250IiwiYjUiLCJwYXJzZV9MYWJlbFNzdCIsIndyaXRlX0xhYmVsU3N0Iiwib3MiLCJwYXJzZV9MYWJlbCIsIndyaXRlX0xhYmVsIiwicGFyc2VfRm9ybWF0IiwibnVtRm10SWQiLCJmbXRzdHIiLCJ3cml0ZV9Gb3JtYXQiLCJwYXJzZV9CSUZGMkZvcm1hdCIsInBhcnNlX0RpbWVuc2lvbnMiLCJ3cml0ZV9EaW1lbnNpb25zIiwicGFyc2VfUksiLCJya3JlYyIsInBhcnNlX011bFJrIiwicmtyZWNzIiwibGFzdGNvbCIsInBhcnNlX011bEJsYW5rIiwiaXhmZXMiLCJwYXJzZV9DZWxsU3R5bGVYRiIsInBhcnNlX1hGIiwid3JpdGVfWEYiLCJpeGZlUCIsInBhcnNlX0d1dHMiLCJ3cml0ZV9HdXRzIiwiZ3V0cyIsInBhcnNlX0Jvb2xFcnIiLCJ3cml0ZV9Cb29sRXJyIiwicGFyc2VfTnVtYmVyIiwieG51bSIsIndyaXRlX051bWJlciIsInBhcnNlX1hMSGVhZGVyRm9vdGVyIiwicGFyc2VfU3VwQm9vayIsImN0YWIiLCJ2aXJ0UGF0aCIsInJnc3QiLCJwYXJzZV9FeHRlcm5OYW1lIiwiYm9keSIsIlhMU0xibEJ1aWx0SW4iLCJwYXJzZV9MYmwiLCJjaEtleSIsImNjZSIsIml0YWIiLCJucGZsZW4iLCJyZ2NlIiwicGFyc2VfTmFtZVBhcnNlZEZvcm11bGEiLCJwYXJzZV9FeHRlcm5TaGVldCIsInBhcnNlX0JJRkY1RXh0ZXJuU2hlZXQiLCJwYXJzZV9OYW1lQ210IiwiY2NoTmFtZSIsImNjaENvbW1lbnQiLCJjb21tZW50IiwicGFyc2VfU2hyRm1sYSIsImNVc2UiLCJwYXJzZV9TaGFyZWRQYXJzZWRGb3JtdWxhIiwicGFyc2VfQXJyYXkiLCJwYXJzZV9BcnJheVBhcnNlZEZvcm11bGEiLCJwYXJzZV9NVFJTZXR0aW5ncyIsImZNVFJFbmFibGVkIiwiZlVzZXJTZXRUaHJlYWRDb3VudCIsImNVc2VyVGhyZWFkQ291bnQiLCJwYXJzZV9Ob3RlU2giLCJpZE9iaiIsInN0QXV0aG9yIiwicGFyc2VfTm90ZSIsInBhcnNlX01lcmdlQ2VsbHMiLCJtZXJnZXMiLCJjbWNzIiwid3JpdGVfTWVyZ2VDZWxscyIsInBhcnNlX09iaiIsInBhcnNlX0JJRkY1T2JqIiwiY21vIiwicGFyc2VfQklGRjVPVCIsImNmIiwicGFyc2VfVHhPIiwidGV4dHMiLCJjb250cm9sSW5mbyIsImNjaFRleHQiLCJwYXJzZV9ITGluayIsImhsaW5rIiwid3JpdGVfSExpbmsiLCJPIiwicGFyc2VfSExpbmtUb29sdGlwIiwid3pUb29sdGlwIiwid3JpdGVfSExpbmtUb29sdGlwIiwicGFyc2VfQ291bnRyeSIsIndyaXRlX0NvdW50cnkiLCJwYXJzZV9DbHJ0Q2xpZW50IiwiY2N2IiwicGFyc2VfUGFsZXR0ZSIsInBhcnNlX1hGQ1JDIiwicGFyc2VfQ29sSW5mbyIsImNvbGR4Iiwid3JpdGVfQ29sSW5mbyIsInBhcnNlX1NldHVwIiwicGFyc2VfU2h0UHJvcHMiLCJ3cml0ZV9SUlRhYklkIiwicGFyc2VfQmxhbmsiLCJwYXJzZV9TY2wiLCJwYXJzZV9TdHJpbmciLCJwYXJzZV9JbURhdGEiLCJlbnYiLCJsY2IiLCJwYXJzZV9CSUZGMlNUUiIsInBhcnNlX0JJRkYyTlVNIiwid3JpdGVfQklGRjJOVU0iLCJ3cml0ZV9CSUZGMkNlbGwiLCJwYXJzZV9CSUZGMklOVCIsIndyaXRlX0JJRkYySU5UIiwicGFyc2VfQklGRjJTVFJJTkciLCJwYXJzZV9CSUZGMkZPTlRYVFJBIiwicGFyc2VfUlN0cmluZyIsIkRCRl9TVVBQT1JURURfVkVSU0lPTlMiLCJEQkYiLCJkYmZfY29kZXBhZ2VfbWFwIiwiZGJmX3JldmVyc2VfbWFwIiwiZGJmX3RvX2FvYSIsIm1lbW8iLCJ2ZnAiLCJsNyIsIm5yb3ciLCJmcG9zIiwicmxlbiIsImN1cnJlbnRfY3AiLCJoZW5kIiwiZGJmX3RvX3NoZWV0IiwiZGJmX3RvX3dvcmtib29rIiwiX1JMRU4iLCJzaGVldF90b19kYmYiLCJhb2EiLCJzaGVldF90b19qc29uIiwiaGVhZGVycyIsImhjbnQiLCJjb2x0eXBlcyIsImNvbHdpZHRocyIsImNvbGRlY2ltYWxzIiwiZ3Vlc3MiLCJfZ3Vlc3MiLCJoZiIsImhiIiwicm91dCIsIl9uIiwiU1lMSyIsInN5bGtfZXNjYXBlcyIsInN5bGtfY2hhcl9yZWdleCIsInN5bGtfY2hhcl9mbiIsImRlY29kZV9zeWxrX2NoYXIiLCJuZXdjYyIsInN5bGtfdG9fYW9hIiwic3lsa190b19hb2Ffc3RyIiwicmoiLCJmb3JtYXRzIiwibmV4dF9jZWxsX2Zvcm1hdCIsInNodCIsInJvd2luZm8iLCJjb2xpbmZvIiwiY3ciLCJNdmFsIiwicnN0ciIsInJlY29yZCIsIkNfc2Vlbl9LIiwiQ19zZWVuX1giLCJDX3NlZW5fUyIsIkNfc2Vlbl9FIiwiZm9ybXVsYSIsInJjX3RvX2ExIiwic2hyYmFzZSIsInNoaWZ0X2Zvcm11bGFfc3RyIiwiRl9zZWVuIiwicHJvY2Vzc19jb2wiLCJwdDJweCIsInN5bGtfdG9fc2hlZXQiLCJhb2FzaHQiLCJzeWxrX3RvX3dvcmtib29rIiwid3JpdGVfd3NfY2VsbF9zeWxrIiwiYTFfdG9fcmMiLCJ3cml0ZV93c19jb2xzX3N5bGsiLCJyZWMiLCJ3aWR0aDJweCIsInB4MmNoYXIiLCJ3cml0ZV93c19yb3dzX3N5bGsiLCJweDJwdCIsInNoZWV0X3RvX3N5bGsiLCJSUyIsImNvb3JkIiwiRElGIiwiZGlmX3RvX2FvYSIsImRpZl90b19hb2Ffc3RyIiwibWV0YWRhdGEiLCJkaWZfdG9fc2hlZXQiLCJkaWZfdG9fd29ya2Jvb2siLCJzaGVldF90b19kaWYiLCJwdXNoX2ZpZWxkIiwidG9waWMiLCJwdXNoX3ZhbHVlIiwiRVRIIiwiZGVjb2RlIiwiZW5jb2RlIiwiZXRoX3RvX2FvYSIsImV0aF90b19zaGVldCIsImV0aF90b193b3JrYm9vayIsInNlcCIsIm1ldGEiLCJzaGVldF90b19ldGhfZGF0YSIsInNoZWV0X3RvX2V0aCIsIlBSTiIsInNldF90ZXh0X2FyciIsInBybl90b19hb2Ffc3RyIiwibGluZXMiLCJndWVzc19zZXBzIiwiZ3Vlc3Nfc2VwX3dlaWdodHMiLCJndWVzc19zZXAiLCJpbnN0ciIsImRzdl90b19zaGVldF9zdHIiLCJzZXBjYyIsInN0YXJ0Y2MiLCJfcmUiLCJmaW5pc2hfY2VsbCIsImZ1enp5Zm1sYSIsIm91dGVyIiwicHJuX3RvX3NoZWV0X3N0ciIsInBybl90b19zaGVldCIsImZpcnN0Ynl0ZSIsInBybl90b193b3JrYm9vayIsInNoZWV0X3RvX3BybiIsInJlYWRfd2JfSUQiLCJPTERfV1RGIiwiV0tfIiwibG90dXNob3BwZXIiLCJFbnVtIiwiV0sxRW51bSIsImxvdHVzX3RvX3dvcmtib29rIiwibG90dXNfdG9fd29ya2Jvb2tfYnVmIiwibmV4dF9uIiwic2lkeCIsInNuYW1lcyIsInJlYWxuYW1lcyIsInJlZmd1ZXNzIiwic2hlZXRSb3dzIiwidG1wY2VsbCIsIldLM0VudW0iLCJvc2hlZXRzIiwicm5hbWVzIiwic2hlZXRfdG9fd2sxIiwid3JpdGVfYmlmZl9yZWMiLCJ3cml0ZV9CT0ZfV0sxIiwid3JpdGVfUkFOR0UiLCJtYXhfUiIsIndyaXRlX0lOVEVHRVIiLCJ3cml0ZV9OVU1CRVIiLCJ3cml0ZV9MQUJFTCIsImJvb2tfdG9fd2szIiwid3JpdGVfQk9GX1dLMyIsIndyaXRlX1hGT1JNQVRfU0hFRVROQU1FIiwid3NpZHgiLCJ3cml0ZV9OVU1CRVJfMTciLCJ3cml0ZV9MQUJFTF8xNiIsIndzY250IiwicGFyc2VfUkFOR0UiLCJwYXJzZV9jZWxsIiwicGFyc2VfTEFCRUwiLCJwYXJzZV9JTlRFR0VSIiwicGFyc2VfTlVNQkVSIiwicGFyc2VfRk9STVVMQSIsIndrMV9mbWxhX3RvX2NzZiIsIndrMV9wYXJzZV9yYyIsIkZ1bmNUYWIiLCJCaW5PcFRhYiIsImFyZ2MiLCJhcmdMIiwiYXJnUiIsIloiLCJwYXJzZV9jZWxsXzMiLCJwYXJzZV9MQUJFTF8xNiIsInBhcnNlX05VTUJFUl8xOCIsInBhcnNlX05VTUJFUl8xNyIsInYxIiwidjIiLCJwYXJzZV9GT1JNVUxBXzE5IiwicGFyc2VfTlVNQkVSXzI1IiwicGFyc2VfTlVNQkVSXzI3IiwicGFyc2VfRk9STVVMQV8yOCIsInBhcnNlX1NIRUVUTkFNRUNTIiwicGFyc2VfU0hFRVROQU1FTFAiLCJwYXJzZV9TSEVFVElORk9RUCIsInBhcnNlX1hGT1JNQVQiLCJwYXJzZV9ycHIiLCJycHIiLCJwYXNzIiwicGFyc2VfcnMiLCJ0cmVnZXgiLCJycHJlZ2V4IiwicGFyc2VfciIsInJyZWdleCIsInJlbmQiLCJycyIsInJzX3RvX2h0bWwiLCJubHJlZ2V4IiwicGFyc2VfcnByMiIsImludHJvIiwib3V0cm8iLCJhbGlnbiIsInJfdG9faHRtbCIsInRlcm1zIiwic2l0cmVnZXgiLCJzaXJyZWdleCIsInNpcnBocmVnZXgiLCJwYXJzZV9zaSIsImh0bWwiLCJzc3RyMCIsInNzdHIxIiwic3N0cjIiLCJwYXJzZV9zc3RfeG1sIiwic3RyYXl3c3JlZ2V4Iiwid3JpdGVfc3N0X3htbCIsInNpdGFnIiwicGFyc2VfQnJ0QmVnaW5Tc3QiLCJwYXJzZV9zc3RfYmluIiwid3JpdGVfQnJ0QmVnaW5Tc3QiLCJ3cml0ZV9CcnRTU1RJdGVtIiwid3JpdGVfc3N0X2JpbiIsIl9KUzJBTlNJIiwicGFyc2VfQ1JZUFRPVmVyc2lvbiIsInBhcnNlX0RhdGFTcGFjZVZlcnNpb25JbmZvIiwicGFyc2VfRGF0YVNwYWNlTWFwRW50cnkiLCJjb21wcyIsInBhcnNlX0RhdGFTcGFjZU1hcCIsInBhcnNlX0RhdGFTcGFjZURlZmluaXRpb24iLCJwYXJzZV9UcmFuc2Zvcm1JbmZvSGVhZGVyIiwicGFyc2VfUHJpbWFyeSIsInBhcnNlX0VuY3J5cHRpb25IZWFkZXIiLCJ2YWxpZCIsInBhcnNlX0VuY3J5cHRpb25WZXJpZmllciIsInBhcnNlX0VuY3J5cHRpb25JbmZvIiwidmVycyIsInBhcnNlX0VuY0luZm9TdGQiLCJwYXJzZV9FbmNJbmZvRXh0IiwicGFyc2VfRW5jSW5mb0FnbCIsInZlcmlmaWVyIiwiS2V5RGF0YSIsInBhcnNlX1JDNENyeXB0b0hlYWRlciIsInBhcnNlX1JDNEhlYWRlciIsImNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEiLCJQYXNzd29yZCIsIlZlcmlmaWVyIiwiUGFzc3dvcmRBcnJheSIsIlBhc3N3b3JkRGVjb2RlZCIsIlBhc3N3b3JkQnl0ZSIsIkludGVybWVkaWF0ZTEiLCJJbnRlcm1lZGlhdGUyIiwiSW50ZXJtZWRpYXRlMyIsImNyeXB0b19DcmVhdGVYb3JBcnJheV9NZXRob2QxIiwiUGFkQXJyYXkiLCJJbml0aWFsQ29kZSIsIlhvck1hdHJpeCIsIlJvciIsIkJ5dGUiLCJYb3JSb3IiLCJieXRlMSIsImJ5dGUyIiwiQ3JlYXRlWG9yS2V5X01ldGhvZDEiLCJYb3JLZXkiLCJDdXJyZW50RWxlbWVudCIsIkNoYXIiLCJwYXNzd29yZCIsIk9iZnVzY2F0aW9uQXJyYXkiLCJUZW1wIiwiUGFzc3dvcmRMYXN0Q2hhciIsIlBhZEluZGV4IiwiY3J5cHRvX0RlY3J5cHREYXRhX01ldGhvZDEiLCJEYXRhIiwiWG9yQXJyYXlJbmRleCIsIlhvckFycmF5IiwiVmFsdWUiLCJjcnlwdG9fTWFrZVhvckRlY3J5cHRvciIsInBhcnNlX1hPUk9iZnVzY2F0aW9uIiwicGFyc2VfRmlsZVBhc3NIZWFkZXIiLCJwYXJzZV9GaWxlUGFzcyIsIlJURiIsInJ0Zl90b19zaGVldCIsInJ0Zl90b19zaGVldF9zdHIiLCJyb3d0ZiIsInJ0ZnJlIiwibGFzdF9pbmRleCIsInJ0Zl90b193b3JrYm9vayIsInNoZWV0X3RvX3J0ZiIsImhleDJSR0IiLCJyZ2IySFNMIiwiRyIsIkg2IiwiTDIiLCJoc2wyUkdCIiwiaHNsIiwiaDYiLCJyZ2JfdGludCIsImhleCIsInRpbnQiLCJERUZfTURXIiwiTUFYX01EVyIsIk1JTl9NRFciLCJNRFciLCJweCIsImNoYXIyd2lkdGgiLCJjeWNsZV93aWR0aCIsImNvbGx3IiwiZmluZF9tZHdfY29sdyIsImRlbHRhIiwiX01EVyIsImNvbGwiLCJERUZfUFBJIiwiUFBJIiwicHQiLCJYTE1MUGF0dGVyblR5cGVNYXAiLCJwYXJzZV9ib3JkZXJzIiwic3R5bGVzIiwidGhlbWVzIiwiYm9yZGVyIiwicGFyc2VfZmlsbHMiLCJwYXJzZV9mb250cyIsInBhcnNlX251bUZtdHMiLCJ3cml0ZV9udW1GbXRzIiwiTkYiLCJjZWxsWEZfdWludCIsImNlbGxYRl9ib29sIiwicGFyc2VfY2VsbFhmcyIsInhmIiwiYWxpZ25tZW50Iiwid3JpdGVfY2VsbFhmcyIsImNlbGxYZnMiLCJwYXJzZV9zdHlfeG1sIiwibnVtRm10UmVnZXgiLCJjZWxsWGZSZWdleCIsImZpbGxzUmVnZXgiLCJmb250c1JlZ2V4IiwiYm9yZGVyc1JlZ2V4Iiwid3JpdGVfc3R5X3htbCIsInBhcnNlX0JydEZtdCIsInN0Rm10Q29kZSIsIndyaXRlX0JydEZtdCIsInBhcnNlX0JydEZvbnQiLCJibHMiLCJ1bmRlcmxpbmUiLCJmYW1pbHkiLCJiQ2hhclNldCIsIndyaXRlX0JydEZvbnQiLCJzc3MiLCJzY2hlbWUiLCJYTFNCRmlsbFBUTmFtZXMiLCJyZXZfWExTQkZpbGxQVE5hbWVzIiwicGFyc2VfQnJ0RmlsbCIsIndyaXRlX0JydEZpbGwiLCJmbHMiLCJwYXJzZV9CcnRYRiIsIml4ZmVQYXJlbnQiLCJpZm10Iiwid3JpdGVfQnJ0WEYiLCJmbG93Iiwid3JpdGVfQmx4ZiIsInBhcnNlX0JydEJvcmRlciIsIndyaXRlX0JydEJvcmRlciIsIndyaXRlX0JydFN0eWxlIiwid3JpdGVfQnJ0QmVnaW5UYWJsZVN0eWxlcyIsImRlZlRhYmxlU3R5bGUiLCJkZWZQaXZvdFN0eWxlIiwicGFyc2Vfc3R5X2JpbiIsIndyaXRlX0ZNVFNfYmluIiwid3JpdGVfRk9OVFNfYmluIiwid3JpdGVfRklMTFNfYmluIiwid3JpdGVfQk9SREVSU19iaW4iLCJ3cml0ZV9DRUxMU1RZTEVYRlNfYmluIiwid3JpdGVfQ0VMTFhGU19iaW4iLCJ3cml0ZV9TVFlMRVNfYmluIiwid3JpdGVfRFhGU19iaW4iLCJ3cml0ZV9UQUJMRVNUWUxFU19iaW4iLCJ3cml0ZV9zdHlfYmluIiwiWExTWFRoZW1lQ2xyU2NoZW1lIiwicGFyc2VfY2xyU2NoZW1lIiwicGFyc2VfZm9udFNjaGVtZSIsInBhcnNlX2ZtdFNjaGVtZSIsImNscnNyZWdleCIsImZudHNyZWdleCIsImZtdHNyZWdleCIsInBhcnNlX3RoZW1lRWxlbWVudHMiLCJ0aGVtZWx0cmVnZXgiLCJwYXJzZV90aGVtZV94bWwiLCJ3cml0ZV90aGVtZSIsIlRoZW1lcyIsInBhcnNlX1RoZW1lIiwiZHdUaGVtZVZlcnNpb24iLCJ0aGVtZVhNTCIsInBhcnNlX0NvbG9yVGhlbWUiLCJwYXJzZV9GdWxsQ29sb3JFeHQiLCJwYXJzZV9JY3ZYRiIsInBhcnNlX1hGRXh0R3JhZGllbnQiLCJwYXJzZV9FeHRQcm9wIiwiZXh0VHlwZSIsInBhcnNlX1hGRXh0IiwiY2V4dHMiLCJ1cGRhdGVfeGZleHQiLCJ4ZmV4dCIsInhmZSIsInBhcnNlX0JydE1kdGluZm8iLCJ3cml0ZV9CcnRNZHRpbmZvIiwicGFyc2VfQnJ0TWRiIiwid3JpdGVfQnJ0TWRiIiwibWRiIiwid3JpdGVfQnJ0QmVnaW5Fc2ZtZCIsInBhcnNlX0JydEJlZ2luRXNtZGIiLCJ3cml0ZV9CcnRCZWdpbkVzbWRiIiwiY20iLCJwYXJzZV94bG1ldGFfYmluIiwibWV0YXR5cGUiLCJ3cml0ZV94bG1ldGFfYmluIiwicGFyc2VfeGxtZXRhX3htbCIsImxhc3RtZXRhIiwid3JpdGVfeGxtZXRhX3htbCIsInBhcnNlX2NjX3htbCIsInBhcnNlX0JydENhbGNDaGFpbkl0ZW0kIiwicGFyc2VfY2NfYmluIiwicGFyc2VfeGxpbmtfeG1sIiwicGFyc2VfeGxpbmtfYmluIiwicGFyc2VfZHJhd2luZyIsIl9zaGFwZWlkIiwid3JpdGVfY29tbWVudHNfdm1sIiwiY29tbWVudHMiLCJjc2l6ZSIsImJib3giLCJmaWxsb3B0cyIsImZpbGxwYXJtIiwiZmlsbHhtbCIsInNoYWRhdGEiLCJzaGVldF9pbnNlcnRfY29tbWVudHMiLCJ0aHJlYWRlZCIsInBlb3BsZSIsInBhcnNlX2NvbW1lbnRzX3htbCIsImF1dGhvcnMiLCJjb21tZW50TGlzdCIsImF1dGh0YWciLCJjbW50dGFnIiwidGV4dE1hdGNoIiwid3JpdGVfY29tbWVudHNfeG1sIiwiaWF1dGhvciIsImxhc3RhdXRob3IiLCJ0cyIsInBhcnNlX3RjbW50X3htbCIsInRpZHgiLCJ3cml0ZV90Y21udF94bWwiLCJjYXJyIiwicm9vdGlkIiwidGNvcHRzIiwicGFyc2VfcGVvcGxlX3htbCIsIndyaXRlX3Blb3BsZV94bWwiLCJwZXJzb24iLCJwYXJzZV9CcnRCZWdpbkNvbW1lbnQiLCJyZngiLCJ3cml0ZV9CcnRCZWdpbkNvbW1lbnQiLCJwYXJzZV9CcnRDb21tZW50QXV0aG9yIiwid3JpdGVfQnJ0Q29tbWVudEF1dGhvciIsInBhcnNlX2NvbW1lbnRzX2JpbiIsIndyaXRlX2NvbW1lbnRzX2JpbiIsIkNUX1ZCQSIsIm1ha2VfdmJhX3hscyIsIm5ld2NmYiIsIm5ld3BhdGgiLCJmaWxsX3ZiYV94bHMiLCJ2YmEiLCJWQkFGTVRTIiwicGFyc2VfZHNfYmluIiwicGFyc2VfZHNfeG1sIiwicGFyc2VfbXNfYmluIiwicGFyc2VfbXNfeG1sIiwicmNyZWdleCIsInJjYmFzZSIsInJjZnVuYyIsImNSZWwiLCJyUmVsIiwiZnN0ciIsImNyZWZyZWdleCIsIiQwIiwiJDQiLCIkNSIsInNoaWZ0X2Zvcm11bGFfeGxzeCIsIl94bGZuIiwicGFyc2VyZWFkMSIsInBhcnNlX0NvbFJlbFUiLCJwYXJzZV9SZ2NlQXJlYSIsInBhcnNlX1JnY2VBcmVhX0JJRkYyIiwicGFyc2VfUmdjZUFyZWFSZWwiLCJwYXJzZV9SZ2NlTG9jIiwicGFyc2VfUmdjZUxvY19CSUZGMiIsInBhcnNlX1JnY2VFbGZMb2MiLCJwYXJzZV9SZ2NlTG9jUmVsIiwicGFyc2VfUmdjZUxvY1JlbF9CSUZGMiIsImNsIiwicmwiLCJwYXJzZV9QdGdBcmVhIiwiYXJlYSIsInBhcnNlX1B0Z0FyZWEzZCIsIml4dGkiLCJwYXJzZV9QdGdBcmVhRXJyIiwicGFyc2VfUHRnQXJlYUVycjNkIiwicGFyc2VfUHRnQXJlYU4iLCJwYXJzZV9QdGdBcnJheSIsInBhcnNlX1B0Z0F0dHJCYXhjZWwiLCJiaXRTZW1pIiwiYml0QmF4Y2VsIiwicGFyc2VfUHRnQXR0ckNob29zZSIsInBhcnNlX1B0Z0F0dHJHb3RvIiwiYml0R290byIsInBhcnNlX1B0Z0F0dHJJZiIsImJpdElmIiwicGFyc2VfUHRnQXR0cklmRXJyb3IiLCJwYXJzZV9QdGdBdHRyU2VtaSIsInBhcnNlX1B0Z0F0dHJTcGFjZVR5cGUiLCJwYXJzZV9QdGdBdHRyU3BhY2UiLCJwYXJzZV9QdGdBdHRyU3BhY2VTZW1pIiwicGFyc2VfUHRnUmVmIiwicGFyc2VfUHRnUmVmTiIsInBhcnNlX1B0Z1JlZjNkIiwicGFyc2VfUHRnRnVuYyIsImlmdGFiIiwiRnRhYkFyZ2MiLCJGdGFiIiwicGFyc2VfUHRnRnVuY1ZhciIsImNwYXJhbXMiLCJ0YWIiLCJwYXJzZXRhYiIsIkNldGFiIiwicGFyc2VfUHRnQXR0clN1bSIsInBhcnNlX1B0Z0V4cCIsInBhcnNlX1B0Z0VyciIsInBhcnNlX1B0Z0ludCIsInBhcnNlX1B0Z0Jvb2wiLCJwYXJzZV9QdGdOdW0iLCJwYXJzZV9QdGdTdHIiLCJwYXJzZV9TZXJBciIsInBhcnNlX1B0Z0V4dHJhTWVtIiwicGFyc2VfUHRnRXh0cmFBcnJheSIsInBhcnNlX1B0Z05hbWUiLCJuYW1laW5kZXgiLCJwYXJzZV9QdGdOYW1lWCIsInBhcnNlX1B0Z05hbWVYX0JJRkY1IiwicGFyc2VfUHRnTWVtQXJlYSIsInBhcnNlX1B0Z01lbUZ1bmMiLCJwYXJzZV9QdGdSZWZFcnIiLCJwYXJzZV9QdGdSZWZFcnIzZCIsInBhcnNlX1B0Z01lbUVyciIsInBhcnNlX1B0Z01lbU5vTWVtIiwicGFyc2VfUHRnVGJsIiwicGFyc2VfUHRnRWxmTG9jIiwicGFyc2VfUHRnRWxmTm9vcCIsInBhcnNlX1B0Z0VsZkNvbCIsInBhcnNlX1B0Z0VsZkNvbFMiLCJwYXJzZV9QdGdFbGZDb2xTViIsInBhcnNlX1B0Z0VsZkNvbFYiLCJwYXJzZV9QdGdFbGZMZWwiLCJwYXJzZV9QdGdFbGZSYWRpY2FsIiwicGFyc2VfUHRnRWxmUmFkaWNhbExlbCIsInBhcnNlX1B0Z0VsZlJhZGljYWxTIiwicGFyc2VfUHRnRWxmUnciLCJwYXJzZV9QdGdFbGZSd1YiLCJQdGdMaXN0UlQiLCJwYXJzZV9QdGdMaXN0IiwicGFyc2VfUHRnU3hOYW1lIiwicGFyc2VfUHRnU2hlZXQiLCJwYXJzZV9QdGdFbmRTaGVldCIsInBhcnNlX1B0Z01lbUFyZWFOIiwicGFyc2VfUHRnTWVtTm9NZW1OIiwicGFyc2VfUHRnQXR0ck5vb3AiLCJQdGdUeXBlcyIsIlB0Z0R1cGVzIiwiUHRnMTgiLCJQdGcxOSIsInBhcnNlX1JnYkV4dHJhIiwicGFyc2VfUmdjZSIsInB0Z3MiLCJzdHJpbmdpZnlfYXJyYXkiLCJQdGdCaW5PcCIsImZvcm11bGFfcXVvdGVfc2hlZXRfbmFtZSIsInNuYW1lIiwiZ2V0X2l4dGlfcmF3Iiwic3VwYm9va3MiLCJYVEkiLCJnZXRfaXh0aSIsIml4dGlyYXciLCJzdHJpbmdpZnlfZm9ybXVsYSIsInN0YWNrIiwibmFtZWlkeCIsImxhc3Rfc3AiLCJzcCIsImZmbGVuIiwibGJsIiwiYm9va2lkeCIsImV4dGVybmJvb2siLCJpeHRpZGF0YSIsImxwIiwicnAiLCJwYXJzZWRmIiwiZm5kIiwiUHRnTm9uRGlzcCIsIl9sZWZ0IiwicmdjYiIsInBhcnNlX1hMU0NlbGxQYXJzZWRGb3JtdWxhIiwicGFyc2VfRm9ybXVsYVZhbHVlIiwid3JpdGVfRm9ybXVsYVZhbHVlIiwicGFyc2VfRm9ybXVsYSIsImNiZiIsIndyaXRlX0Zvcm11bGEiLCJvMSIsIm8zIiwicGFyc2VfWExTQlBhcnNlZEZvcm11bGEiLCJwYXJzZV9YTFNCQXJyYXlQYXJzZWRGb3JtdWxhIiwicGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhIiwicGFyc2VfWExTQk5hbWVQYXJzZWRGb3JtdWxhIiwicGFyc2VfWExTQlNoYXJlZFBhcnNlZEZvcm11bGEiLCJvZHNfdG9fY3NmX2Zvcm11bGEiLCJjc2ZfdG9fb2RzX2Zvcm11bGEiLCJvZHNfdG9fY3NmXzNEIiwiY3NmX3RvX29kc18zRCIsIl9zc2ZvcHRzIiwiYnJvd3Nlcl9oYXNfTWFwIiwiZ2V0X3NzdF9pZCIsInJldmFyciIsImNvbF9vYmpfdyIsIndjaCIsImRlZmF1bHRfbWFyZ2lucyIsIm1hcmdpbnMiLCJkZWZzIiwiZ2V0X2NlbGxfc3R5bGUiLCJzYWZlX2Zvcm1hdCIsImZtdGlkIiwiZmlsbGlkIiwiY2hlY2tfd3MiLCJwYXJzZV93c194bWxfZGltIiwibWVyZ2VjcmVnZXgiLCJzaGVldGRhdGFyZWdleCIsImhsaW5rcmVnZXgiLCJkaW1yZWdleCIsImNvbHJlZ2V4IiwiYWZyZWdleCIsIm1hcmdpbnJlZ2V4Iiwic2hlZXRwcnJlZ2V4Iiwic2hlZXRwcnJlZ2V4MiIsInN2c3JlZ2V4IiwicGFyc2Vfd3NfeG1sIiwiZGF0YTEiLCJkYXRhMiIsIm10Y2giLCJzaGVldFByIiwicGFyc2Vfd3NfeG1sX3NoZWV0cHIiLCJwYXJzZV93c194bWxfc2hlZXRwcjIiLCJzdnMiLCJwYXJzZV93c194bWxfc2hlZXR2aWV3cyIsInBhcnNlX3dzX3htbF9jb2xzIiwicGFyc2Vfd3NfeG1sX2RhdGEiLCJhZmlsdGVyIiwicGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIiLCJfbWVyZ2UiLCJwYXJzZV93c194bWxfaGxpbmtzIiwicGFyc2Vfd3NfeG1sX21hcmdpbnMiLCJ0bXByZWYiLCJ3cml0ZV93c194bWxfbWVyZ2VzIiwid3JpdGVfd3NfeG1sX3NoZWV0cHIiLCJuZWVkZWQiLCJjbmFtZSIsIm91dGxpbmVwcm9wcyIsInNoZWV0cHJvdF9kZWZmYWxzZSIsInNoZWV0cHJvdF9kZWZ0cnVlIiwid3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24iLCJybmciLCJtYXJnaW4iLCJ3cml0ZV93c194bWxfbWFyZ2lucyIsInNlZW5jb2wiLCJjb2xpIiwiY29sbSIsImNvbE0iLCJ3cml0ZV93c194bWxfY29scyIsIndyaXRlX3dzX3htbF9hdXRvZmlsdGVyIiwibmFtZXMiLCJzdmlld3JlZ2V4Iiwid3JpdGVfd3NfeG1sX3NoZWV0dmlld3MiLCJzdmlldyIsIndyaXRlX3dzX3htbF9jZWxsIiwib2xkdCIsIm9sZHYiLCJjZWxscmVnZXgiLCJyb3dyZWdleCIsImlzcmVnZXgiLCJyZWZyZWdleCIsIm1hdGNoX3YiLCJtYXRjaF9mIiwic2RhdGEiLCJjcmVmIiwidGFnciIsInRhZ2MiLCJzc3RyIiwiZnRhZyIsImRvX2Zvcm1hdCIsImFycmF5ZiIsInNoYXJlZGYiLCJyb3dvYmoiLCJyb3dyaXRlIiwic2hlZXRTdHVicyIsIm1hcnIiLCJtYXJybGVuIiwieGxlbiIsInJzdGFydGkiLCJvdXRhIiwicnNsaWNlIiwiX19fZiIsIl90YWciLCJfciIsIndyaXRlX3dzX3htbF9kYXRhIiwicGFyYW1zIiwiX2NlbGwiLCJ3cml0ZV93c194bWwiLCJyZGF0YSIsIl9kcmF3aW5nIiwicmVsYyIsInBhcnNlX0JydFJvd0hkciIsIndyaXRlX0JydFJvd0hkciIsIm5jb2xzcGFuIiwibGNzIiwiY2FkZHIiLCJmaXJzdCIsIndyaXRlX3Jvd19oZWFkZXIiLCJwYXJzZV9CcnRXc0RpbSIsIndyaXRlX0JydFdzRGltIiwicGFyc2VfQnJ0V3NGbXRJbmZvIiwicGFyc2VfQnJ0V3NQcm9wIiwid3JpdGVfQnJ0V3NQcm9wIiwicGFyc2VfQnJ0Q2VsbEJsYW5rIiwid3JpdGVfQnJ0Q2VsbEJsYW5rIiwibmNlbGwiLCJwYXJzZV9CcnRTaG9ydEJsYW5rIiwid3JpdGVfQnJ0U2hvcnRCbGFuayIsInBhcnNlX0JydENlbGxCb29sIiwiZkJvb2wiLCJ3cml0ZV9CcnRDZWxsQm9vbCIsInBhcnNlX0JydFNob3J0Qm9vbCIsIndyaXRlX0JydFNob3J0Qm9vbCIsInBhcnNlX0JydENlbGxFcnJvciIsImJFcnJvciIsIndyaXRlX0JydENlbGxFcnJvciIsInBhcnNlX0JydFNob3J0RXJyb3IiLCJ3cml0ZV9CcnRTaG9ydEVycm9yIiwicGFyc2VfQnJ0Q2VsbElzc3QiLCJpc3N0Iiwid3JpdGVfQnJ0Q2VsbElzc3QiLCJwYXJzZV9CcnRTaG9ydElzc3QiLCJ3cml0ZV9CcnRTaG9ydElzc3QiLCJwYXJzZV9CcnRDZWxsUmVhbCIsIndyaXRlX0JydENlbGxSZWFsIiwicGFyc2VfQnJ0U2hvcnRSZWFsIiwid3JpdGVfQnJ0U2hvcnRSZWFsIiwicGFyc2VfQnJ0Q2VsbFJrIiwid3JpdGVfQnJ0Q2VsbFJrIiwicGFyc2VfQnJ0U2hvcnRSayIsIndyaXRlX0JydFNob3J0UmsiLCJwYXJzZV9CcnRDZWxsUlN0cmluZyIsInBhcnNlX0JydENlbGxTdCIsIndyaXRlX0JydENlbGxTdCIsInBhcnNlX0JydFNob3J0U3QiLCJ3cml0ZV9CcnRTaG9ydFN0IiwicGFyc2VfQnJ0Rm1sYUJvb2wiLCJwYXJzZV9CcnRGbWxhRXJyb3IiLCJwYXJzZV9CcnRGbWxhTnVtIiwicGFyc2VfQnJ0Rm1sYVN0cmluZyIsInBhcnNlX0JydE1lcmdlQ2VsbCIsIndyaXRlX0JydE1lcmdlQ2VsbCIsIndyaXRlX0JydEJlZ2luTWVyZ2VDZWxscyIsInBhcnNlX0JydEhMaW5rIiwicmVsSWQiLCJ3cml0ZV9CcnRITGluayIsImxvY2lkeCIsInBhcnNlX0JydFBhbmUiLCJwYXJzZV9CcnRBcnJGbWxhIiwiZkFsd2F5c0NhbGMiLCJwYXJzZV9CcnRTaHJGbWxhIiwid3JpdGVfQnJ0Q29sSW5mbyIsIkJydE1hcmdpbktleXMiLCJwYXJzZV9CcnRNYXJnaW5zIiwid3JpdGVfQnJ0TWFyZ2lucyIsInBhcnNlX0JydEJlZ2luV3NWaWV3Iiwid3JpdGVfQnJ0QmVnaW5Xc1ZpZXciLCJXb3JrYm9vayIsIndyaXRlX0JydENlbGxJZ25vcmVFQyIsIndyaXRlX0JydFNoZWV0UHJvdGVjdGlvbiIsInBhcnNlX0JydERWYWwiLCJwYXJzZV9CcnREVmFsMTQiLCJwYXJzZV93c19iaW4iLCJhaSIsImFmIiwiUlIiLCJhaWkiLCJ3cml0ZV93c19iaW5fY2VsbCIsImxhc3Rfc2VlbiIsIndyaXRlX0NFTExUQUJMRSIsImNhcCIsIndyaXRlX01FUkdFQ0VMTFMiLCJ3cml0ZV9DT0xJTkZPUyIsIndyaXRlX0lHTk9SRUVDUyIsIndyaXRlX0hMSU5LUyIsIndyaXRlX0xFR0FDWURSQVdJTkciLCJ3cml0ZV9BVVRPRklMVEVSIiwid3JpdGVfV1NWSUVXUzIiLCJ3cml0ZV9TSEVFVFBST1RFQ1QiLCJ3cml0ZV93c19iaW4iLCJwYXJzZV9DYWNoZSIsIm5mIiwicGFyc2VfY2hhcnQiLCJjc2hlZXQiLCJuYyIsInBhcnNlX2NzX3htbCIsInBhcnNlX0JydENzUHJvcCIsInBhcnNlX2NzX2JpbiIsIldCUHJvcHNEZWYiLCJXQlZpZXdEZWYiLCJTaGVldERlZiIsIkNhbGNQckRlZiIsInB1c2hfZGVmYXVsdHNfYXJyYXkiLCJwdXNoX2RlZmF1bHRzIiwicGFyc2Vfd2JfZGVmYXVsdHMiLCJzYWZlMTkwNCIsImJhZGNoYXJzIiwiY2hlY2tfd3NfbmFtZSIsIl9nb29kIiwiY2hlY2tfd2JfbmFtZXMiLCJOIiwiY29kZXMiLCJjbiIsImNoZWNrX3diIiwiU2hlZXRzIiwid2Juc3JlZ2V4IiwicGFyc2Vfd2JfeG1sIiwieG1sbnMiLCJkbmFtZSIsImRuc3RhcnQiLCJ3cml0ZV93Yl94bWwiLCJ3cml0ZV9uYW1lcyIsIndvcmtib29rUHIiLCJwYXJzZV9CcnRCdW5kbGVTaCIsIndyaXRlX0JydEJ1bmRsZVNoIiwicGFyc2VfQnJ0V2JQcm9wIiwic3RyTmFtZSIsIndyaXRlX0JydFdiUHJvcCIsInBhcnNlX0JydEZSVEFyY2hJRCQiLCJwYXJzZV9CcnROYW1lIiwicGFyc2Vfd2JfYmluIiwiTmFtZXMiLCJ3cml0ZV9CVU5ETEVTSFMiLCJ2aXoiLCJ3cml0ZV9CcnRGaWxlVmVyc2lvbiIsIndyaXRlX0JydEJvb2tWaWV3Iiwid3JpdGVfQk9PS1ZJRVdTIiwidmlzdGFiIiwid3JpdGVfd2JfYmluIiwicGFyc2Vfd2IiLCJwYXJzZV93cyIsInBhcnNlX2NzIiwicGFyc2VfbXMiLCJwYXJzZV9kcyIsInBhcnNlX3N0eSIsInBhcnNlX3RoZW1lIiwicGFyc2Vfc3N0IiwicGFyc2VfY21udCIsInBhcnNlX2NjIiwicGFyc2VfeGxpbmsiLCJwYXJzZV94bG1ldGEiLCJ3cml0ZV93YiIsIndyaXRlX3dzIiwid3JpdGVfc3R5Iiwid3JpdGVfc3N0Iiwid3JpdGVfY21udCIsIndyaXRlX3hsbWV0YSIsImF0dHJlZ2V4ZzIiLCJhdHRyZWdleDIiLCJ4bG1sX3BhcnNleG1sdGFnIiwid29yZHMiLCJ4bG1sX3BhcnNleG1sdGFnb2JqIiwiWExNTEZvcm1hdE1hcCIsInhsbWxfZm9ybWF0IiwieGxtbF9zZXRfY3VzdHByb3AiLCJvdmFsIiwic2FmZV9mb3JtYXRfeGxtbCIsInByb2Nlc3Nfc3R5bGVfeGxtbCIsInN0YWciLCJJIiwicGFyc2VfeGxtbF9kYXRhIiwiY3N0eSIsInNpZCIsImludGVyaW9ycyIsInhsbWxfY2xlYW5fY29tbWVudCIsInBhcnNlX3hsbWxfeG1sIiwib3BlbmluZyIsImlzaHRtbCIsIl9vIiwiaHRtbF90b193b3JrYm9vayIsInNoZWV0bmFtZXMiLCJjdXJzaGVldCIsInNoZWV0bmFtZSIsImR0YWciLCJkaWR4IiwiZmlkeCIsInBpZHgiLCJjc3R5cyIsIndzcHJvcHMiLCJyYXdfUm4zIiwiY21hIiwiY21kIiwic3NmaWR4IiwiX2NvbCIsIl9OYW1lZFJhbmdlIiwiX0RlZmluZWROYW1lIiwiQXV0b0ZpbHRlciIsInBhcnNlX2ZvZHMiLCJwYWdlbWFyZ2lucyIsInBhcnNlX3hsbWwiLCJmaXhfcmVhZF9vcHRzIiwid3JpdGVfcHJvcHNfeGxtbCIsIndyaXRlX3diX3hsbWwiLCJ3cml0ZV9zdHlfeGxtbCIsIndyaXRlX25hbWVfeGxtbCIsIndyaXRlX25hbWVzX3hsbWwiLCJ3cml0ZV93c194bG1sX25hbWVzIiwid3JpdGVfd3NfeGxtbF93c29wdHMiLCJ3cml0ZV93c194bG1sX2NvbW1lbnQiLCJ3cml0ZV93c194bG1sX2NlbGwiLCJtaSIsIndyaXRlX3dzX3hsbWxfcm93Iiwid3JpdGVfd3NfeGxtbF90YWJsZSIsInNraXAiLCJ3cml0ZV93c194bG1sIiwid3JpdGVfeGxtbCIsInBhcnNlX2NvbXBvYmoiLCJDT05USU5VRV9SVCIsInNsdXJwIiwiUmVjb3JkVHlwZSIsIm5leHRydCIsIlhMU1JlY29yZEVudW0iLCJsbCIsInNhZmVfZm9ybWF0X3hmIiwibWFrZV9jZWxsIiwicGFyc2Vfd29ya2Jvb2siLCJEaXJlY3RvcnkiLCJsYXN0X2Zvcm11bGEiLCJjdXJfc2hlZXQiLCJQcmVhbWJsZSIsImxhc3RjZWxsIiwibGFzdF9jZWxsIiwiY21udCIsInJuZ0MiLCJybmdSIiwidGVtcF92YWwiLCJjb3VudHJ5IiwiWEZzIiwicGFsZXR0ZSIsImdldF9yZ2IiLCJwcm9jZXNzX2NlbGxfc3R5bGUiLCJ4ZmQiLCJhZGRjZWxsIiwiZmlsZV9kZXB0aCIsImFmaSIsIm9iamVjdHMiLCJsYXN0X1JUIiwiQklGRjJGbXQiLCJCSUZGMkZtdFRhYmxlIiwiRmlsdGVyRGF0YWJhc2VzIiwibGFzdF9sYmwiLCJzZWVuX2NvZGVwYWdlIiwiY3B2YWwiLCJ0bXByaSIsImZha2ViczgiLCJfZnIiLCJfZmMiLCJfZmUiLCJfYXJyYXlzdGFydCIsIl9qIiwiX2l4ZmUiLCJiNGlkeCIsImIyaWR4Iiwibm90ZW9iaiIsIlBTQ0xTSUQiLCJwYXJzZV94bHNfcHJvcHMiLCJEU0kiLCJEb2NTdW1tYXJ5IiwiU0kiLCJTdW1tYXJ5Iiwid3JpdGVfeGxzX3Byb3BzIiwiRFNFbnRyaWVzIiwiU0VudHJpZXMiLCJDRW50cmllcyIsIktleXMiLCJEb2NTdW1tYXJ5UkUiLCJTdW1tYXJ5UkUiLCJDRW50cmllczIiLCJwYXJzZV94bHNjZmIiLCJDb21wT2JqIiwiV0IiLCJXb3JrYm9va1AiLCJfZGF0YSIsIndyaXRlX3hsc2NmYiIsIndicGF0aCIsIndyaXRlX2JpZmZfYnVmIiwid3JpdGVfYmlmZl9jb250aW51ZSIsIndyaXRlX0JJRkYyQkVSUiIsIndyaXRlX0JJRkYyTEFCRUwiLCJ3cml0ZV93c19iaWZmMl9jZWxsIiwid3JpdGVfd3NfYmlmZjIiLCJ3cml0ZV9iaWZmMl9idWYiLCJ3cml0ZV9GT05UU19iaWZmOCIsIndyaXRlX0ZNVFNfYmlmZjgiLCJ3cml0ZV9GRUFUIiwid3JpdGVfQ0VMTFhGU19iaWZmOCIsIndyaXRlX3dzX2JpZmY4X2hsaW5rcyIsIkhMIiwid3JpdGVfd3NfY29sc19iaWZmOCIsIndyaXRlX3dzX2JpZmY4X2NlbGwiLCJ3cml0ZV93c19iaWZmOCIsIl9XQiIsIl9zaGVldCIsIk1BWF9ST1dTIiwid3JpdGVfYmlmZjhfZ2xvYmFsIiwiX3NoZWV0cyIsIl93YiIsImJsZW4iLCJ3cml0ZV9iaWZmOF9idWYiLCJmaXhfd3JpdGVfb3B0cyIsImh0bWxfdG9fc2hlZXQiLCJtdGNoMiIsIkNTIiwiaGQiLCJtaWR4IiwiX3QiLCJtYWtlX2h0bWxfcm93IiwiSFRNTF9CRUdJTiIsIkhUTUxfRU5EIiwiYm9va19uZXciLCJib29rX2FwcGVuZF9zaGVldCIsIm1ha2VfaHRtbF9wcmVhbWJsZSIsInNoZWV0X3RvX2h0bWwiLCJzaGVldF9hZGRfZG9tIiwib3JfUiIsIm9yX0MiLCJpc19kb21fZWxlbWVudF9oaWRkZW4iLCJlbHRzIiwiQWVsdHMiLCJBZWx0aSIsInBhcnNlX2RvbV90YWJsZSIsInRhYmxlX3RvX2Jvb2siLCJnZXRfY29tcHV0ZWRfc3R5bGUiLCJnZXRfZ2V0X2NvbXB1dGVkX3N0eWxlX2Z1bmN0aW9uIiwicGFyc2VfdGV4dF9wIiwiZml4ZWQiLCJudW1iZXJfZm9ybWF0c19vZHMiLCJwYXJzZV9jb250ZW50X3htbCIsIk5GdGFnIiwic2hlZXRhZyIsInJvd3RhZyIsIlNoZWV0TmFtZXMiLCJjdGFnIiwidGV4dHAiLCJ0ZXh0cGlkeCIsInRleHRSIiwicm93X29sIiwibnVtYmVyX2Zvcm1hdF9tYXAiLCJtcmFuZ2UiLCJtUiIsIm1DIiwicm93cGVhdCIsImNvbHBlYXQiLCJhdGFnIiwiX1JlZiIsImNyZWF0b3JpZHgiLCJpc3N0dWIiLCJpbnRhYmxlIiwicnB0UiIsInJwdCIsIm5yYW5nZSIsInB0cCIsInBhcnNlX29kcyIsIndyaXRlX3N0eWxlc19vZHMiLCJtYXN0ZXJfc3R5bGVzIiwid3JpdGVfY29udGVudF9vZHMiLCJ3cml0ZV90ZXh0X3AiLCJudWxsX2NlbGxfeG1sIiwiY292ZXJlZF9jZWxsX3htbCIsIlJPV1MiLCJfRnJlZiIsInRleHRfcCIsIl90Z3QiLCJ3cml0ZV9hdXRvbWF0aWNfc3R5bGVzX29kcyIsImNpZHgiLCJjb2xvYmoiLCJmb2RzIiwid3JpdGVfb2RzIiwidThfdG9fZGF0YXZpZXciLCJ1OHN0ciIsInU4Iiwic3RydTgiLCJ1OGNvbnRhaW5zIiwidThjb25jYXQiLCJ1OGEiLCJwb3BjbnQiLCJyZWFkRGVjaW1hbDEyOExFIiwiZXhwIiwibWFudGlzc2EiLCJ3cml0ZURlY2ltYWwxMjhMRSIsInBhcnNlX3ZhcmludDQ5IiwicHRyIiwidmFyaW50Iiwid3JpdGVfdmFyaW50NDkiLCJ2YXJpbnRfdG9faTMyIiwiaTMyIiwicGFyc2Vfc2hhbGxvdyIsIndyaXRlX3NoYWxsb3ciLCJwcm90byIsIm1hcHBhIiwicGFyc2VfaXdhX2ZpbGUiLCJ3cml0ZV9pd2FfZmlsZSIsImlhcyIsImlhIiwibWlkYXRhIiwiYWlwYXlsb2FkIiwibWlkIiwicGFyc2Vfc25hcHB5X2NodW5rIiwiY2h1bmtzIiwiZGVjb21wcmVzc19pd2FfZmlsZSIsImNvbXByZXNzX2l3YV9maWxlIiwiZnJhbWUiLCJwYXJzZV9vbGRfc3RvcmFnZSIsInJzc3QiLCJkdiIsImRhdGFfb2Zmc2V0IiwiaWVlZSIsInBhcnNlX25ld19zdG9yYWdlIiwiZDEyOCIsIndyaXRlX25ld19zdG9yYWdlIiwid3JpdGVfb2xkX3N0b3JhZ2UiLCJwYXJzZV9jZWxsX3N0b3JhZ2UiLCJwYXJzZV9UU1BfUmVmZXJlbmNlIiwicGIiLCJwYXJzZV9UU1RfVGFibGVEYXRhTGlzdCIsImxlIiwicnRwIiwicnRwcmVmIiwibXR5cGUiLCJ0c3dwc2EiLCJwYXJzZV9UU1RfVGlsZVJvd0luZm8iLCJfaCIsIl9sIiwiX20iLCJ3aWRlX29mZnNldHMiLCJ1c2VkX3N0b3JhZ2VfdTgiLCJ1c2VkX3N0b3JhZ2UiLCJ1c2VkX3N0b3JhZ2Vfb2Zmc2V0cyIsIm9mZnNldHMiLCJwYXJzZV9UU1RfVGlsZSIsInBhcnNlX1RTVF9UYWJsZU1vZGVsQXJjaGl2ZSIsInRpbGUiLCJ0bCIsIl90aWxlIiwicGFyc2VfVFNUX1RhYmxlSW5mb0FyY2hpdmUiLCJ0YWJsZXJlZiIsInBhcnNlX1ROX1NoZWV0QXJjaGl2ZSIsInNoYXBlb2ZmcyIsInBhcnNlX1ROX0RvY3VtZW50QXJjaGl2ZSIsInNoZWV0b2ZmcyIsInJvb3QyIiwicGFyc2VfbnVtYmVyc19pd2EiLCJpbmRpY2VzIiwicGFja2V0cyIsInBhY2tldCIsImRvY3Jvb3QiLCJpd2FtIiwid3JpdGVfdGlsZV9yb3ciLCJ0cmkiLCJTU1QiLCJsYXN0X29mZnNldCIsImNlbGxfc3RvcmFnZSIsIl9kdiIsIl9sYXN0X29mZnNldCIsIl9jZWxsX3N0b3JhZ2UiLCJjZWxsb2FkIiwiX2NlbGxvYWQiLCJ3cml0ZV9udW1iZXJzX2l3YSIsInRydW5jIiwiZGVwZW5kZW50cyIsIm9sZF9jb250ZW50IiwicmF3MSIsIngyIiwicGFja2V0MiIsInkyIiwiaW5kaWNlc192YXJpbnQiLCJpdmkiLCJtZXNzIiwieGkiLCJzaGVldHJvb3RyZWYiLCJjcnVpZHNyZWYiLCJvbGRidWNrZXQiLCJfeCIsImNydWlkcyIsInV1aWQiLCJyb3dfaGVhZGVycyIsInJvd19oZWFkZXJfcmVmIiwiYmFzZV9idWNrZXQiLCJfYnVja2V0IiwiY29sX2hlYWRlcl9yZWYiLCJzc3RyZWYiLCJzZW50cnkiLCJzeCIsInNzdHJvb3QiLCJzeGkiLCJzc3RkYXRhIiwibmV3c3N0Iiwic3kiLCJyYXczMiIsInRpbGVyZWYiLCJ0ZW50cnkiLCJ0eCIsInRpbGVyb290IiwidGlsZWRhdGEiLCJyb3dsb2FkIiwiUjIiLCJ0aWxlcm93IiwidHkiLCJyYXczIiwiZml4X29wdHNfZnVuYyIsImdldF9zaGVldF90eXBlIiwic2FmZV9wYXJzZV93YnJlbHMiLCJ3YnJlbHMiLCJzYWZlX3BhcnNlX3NoZWV0IiwicmVsc1BhdGgiLCJzaGVldFJlbHMiLCJzdHlwZSIsImRmaWxlIiwiZHJlbHNwIiwiZHJhdyIsImNoYXJ0cCIsImNyZWxzcCIsInRjb21tZW50cyIsInN0cmlwX2Zyb250X3NsYXNoIiwiX3ppcCIsImRpciIsInhsc2IiLCJiaW5uYW1lIiwicHJvcGRhdGEiLCJjdXN0cHJvcHMiLCJkZXBzIiwid2JzaGVldHMiLCJ3YmV4dCIsIndicmVsc2kiLCJ3YnJlbHNmaWxlIiwibm1vZGUiLCJ3c2xvb3AiLCJzbmpzZWVuIiwic25qIiwicGFyc2VfeGxzeGNmYiIsImRzbSIsInNlZHMiLCJlaW5mbyIsIndyaXRlX3ppcF94bHN4YiIsIndyaXRlX3ppcF94bHN4IiwidmJhZm10IiwiX3NuIiwid3NyZWxzIiwiX3R5cGUiLCJuZWVkX3ZtbCIsIm5lZWR0YyIsInJlYWRfY2ZiIiwicmVhZF96aXAiLCJyZWFkX3BsYWludGV4dCIsIm1haW4iLCJyZWFkX3BsYWludGV4dF9yYXciLCJyZWFkX3V0ZjE2IiwiYnN0cmlmeSIsInJlYWRfcHJuIiwicmVhZFN5bmMiLCJhYiIsInZ1Iiwid3JpdGVfY2ZiX2N0ciIsIndyaXRlX3ppcF90eXBlIiwid3JpdGVfemlwX2Rlbm91ZW1lbnQiLCJvb3B0cyIsImZ0eXBlIiwid3JpdGVfY2ZiX3R5cGUiLCJ3cml0ZV9zdHJpbmdfdHlwZSIsImJvbSIsIndyaXRlX3N0eHRfdHlwZSIsIndyaXRlX2JpbmFyeV90eXBlIiwid3JpdGVTeW5jIiwic2hlZXRfdG9fdHh0Iiwic2hlZXRfdG9fY3N2IiwibWFrZV9qc29uX3JvdyIsImRlZnZhbCIsInJhdyIsImlzZW1wdHkiLCJvdXRpIiwiY291bnRlciIsImhlYWRlcl9jbnQiLCJxcmVnIiwibWFrZV9jc3Zfcm93IiwiRlMiLCJ0eHQiLCJlbmRyZWdleCIsInNoZWV0X3RvX2Zvcm11bGFlIiwiY21kcyIsInNoZWV0X2FkZF9qc29uIiwianMiLCJKUyIsIndzX2dldF9jZWxsX3N0dWIiLCJqc29uX3RvX3NoZWV0IiwiUkMiLCJ3Yl9zaGVldF9pZHgiLCJzaCIsInJvbGwiLCJib29rX3NldF9zaGVldF92aXNpYmlsaXR5IiwidmlzIiwiY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdCIsImNlbGxfc2V0X2h5cGVybGluayIsImNlbGxfc2V0X2ludGVybmFsX2xpbmsiLCJjZWxsX2FkZF9jb21tZW50IiwiYXV0aG9yIiwic2hlZXRfc2V0X2FycmF5X2Zvcm11bGEiLCJkeW5hbWljIiwicm5nc3RyIiwic2hlZXRfZnJvbV9hcnJheV9vZl9hcnJheXMiLCJYTFNYLnV0aWxzIiwiWExTWC5TU0YiLCJleHBvcnRfanNvbl90b19leGNlbCIsInRoIiwianNvbkRhdGEiLCJkZWZhdWx0VGl0bGUiLCJ3c19uYW1lIiwid2JvdXQiLCJYTFNYLndyaXRlIiwiRmlsZVNhdmVyIiwicHJvY2Vzc0NzdkRhdGEiLCJkYXRhU3RyaW5nIiwiZGF0YVN0cmluZ0xpbmVzIiwiaW1wb3J0Q3N2RnJvbUZpbGUiLCJyZWFkZXIiLCJYTFNYLnJlYWQiLCJ3c25hbWUiLCJpbXBvcnRlZCIsInRyYW5zZm9ybUV4cG9ydENvbHVtbiIsIl9wYXJhbXMiLCJDc3YiLCJFeHBvcnRDc3YiLCJFeGNlbC5leHBvcnRfanNvbl90b19leGNlbCJdLCJtYXBwaW5ncyI6IjAyQ0FDQSxTQUFTQSxJQUFhLE9BRXBCLE9BQU9DLEVBREcsSUFBSSxRQUNMLFFBQUYsWUFBQUEsRUFBUyxNQUFNO0FBQUEsR0FBTSxFQUM5QixDQUVBLE1BQU1DLEdBQVEsSUFBSUMsSUFBZSxDQUFBLEVBRWpDLFNBQVNDLE1BQVdELEVBQVMsQ0FHM0IsUUFBUSxJQUFPLE1BQU0sS0FBTSxTQUFTLENBQ3RDLENBQ0EsU0FBU0UsTUFBV0YsRUFBUyxDQUduQixRQUFBLEtBQUssTUFBTSxL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QWlCLEVBQ2xELEdBQWUsQ0FBRSxFQUFFLFlBQWEsRUFBRUMsQ0FBa0IsRUFDcEQsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsY0FBZSxFQUFFQyxDQUFtQixFQUN2RCxJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsY0FBZSxFQUFF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QUUsTUFBTSxFQUFRLDBEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsd0RBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSx3REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsdURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw2Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsK0NBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxrREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHFEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEscURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxzREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQU8saUJBQ2pCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTyxnQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLGdDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsc0JBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxzQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDhDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSx3Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDBDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDRDQUNsQkEsRUFBRUEsRUFB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ZUFDTCxJQUFLLG1CQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxrQkFDTCxJQUFLLGdCQUNMLElBQUssZ0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGtCQUNMLElBQUssZ0JBQ0wsSUFBSyxpQkFDTCxJQUFLLHVCQUNMLElBQUssMEJBQ0wsSUFBSyxpQkFDTCxJQUFLLGVBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLGFBQ0wsSUFBSyxpQkFDTCxJQUFLLGtCQUNMLElBQUssa0JBQ0wsSUFBSyxnQkFDTCxJQUFLLGtCQUNMLElBQUssZ0JBQ0wsSUFBSyxnQkFDTCxJQUFLLHFCQUNMLElBQUssY0FDTCxJQUFLLG1CQUNMLElBQUssdUJBQ0wsSUFBSyxtQkFDTCxJQUFLLGtCQUNMLElBQUssbUJBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxrQkFDTCxJQUFLLGVBQ0wsSUFBSyxlQUNMLElBQUssb0JBQ0wsSUFBSyxzQkFDTCxJQUFLLHNCQUNMLElBQUssbUJBQ0wsSUFBSyxxQkFDTCxJQUFLLHFCQUNMLElBQUssZ0JBQ0wsSUFBSyxhQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxtQkFDTCxJQUFLLGdCQUNMLElBQUssd0JBQ0wsSUFBSyxxQkFDTCxJQUFLLFNBQ0wsSUFBSyxrQkFDTCxJQUFLLGdCQUNMLElBQUssa0JBQ0wsSUFBSyxnQkFDTCxJQUFLLGdCQUNMLElBQUssbUJBQ0wsSUFBSyxtQkFDTCxJQUFLLG9CQUNMLElBQUssZUFDTCxJQUFLLG9CQUNMLElBQUssdUJBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxhQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxlQUNMLElBQUssY0FDTCxJQUFLLHFCQUNMLElBQUsseUJBQ0wsSUFBSyxtQkFDTCxJQUFLLFdBQ0wsSUFBSyxpQkFDTCxJQUFLLGlCQUNMLElBQUssZUFDTCxJQUFLLFlBQ0wsSUFBSyxtQkFDTCxJQUFLLG1CQUNMLElBQUssaUJBQ0wsSUFBSyxrQkFDTCxJQUFLLG9CQUNMLElBQUssbUJBQ0wsSUFBSyxjQUNMLElBQUssZ0JBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxjQUNMLElBQUssbUJBQ0wsSUFBSyxvQkFDTCxJQUFLLGlCQUNMLElBQUssWUFDTCxJQUFLLFNBQ0wsSUFBSyxTQUNMLElBQUssZ0JBQ0wsSUFBSyxtQkFDTCxJQUFLLGlCQUNMLElBQUssV0FDTCxJQUFLLGdCQUNMLElBQUssZ0JBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxpQkFDTCxJQUFLLG9CQUNMLElBQUssc0JBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLGNBQ0wsSUFBSyxvQkFDTCxJQUFLLGVBQ0wsSUFBSyxnQkFDTCxJQUFLLG1CQUNQLEVBQ0lMLEdBQU8sQ0FDVCxFQUFHLFFBQ0gsRUFBRyxLQUNILEVBQUcsT0FDSCxFQUFHLFVBQ0gsRUFBRyxNQUNILEVBQUcsVUFDSCxFQUFHLE1BQ0gsRUFBRyxNQUNILEVBQUcsTUFDSCxFQUFHLFNBQ0gsR0FBSSxLQUNKLEdBQUksTUFDSixHQUFJLFFBQ0osR0FBSSxTQUNKLEdBQUksUUFDSixHQUFJLE1BQ0osR0FBSSxNQUNKLEdBQUksTUFDSixHQUFJLE9BQ0osR0FBSSxLQUNKLEdBQUksT0FDSixHQUFJLE1BQ0osR0FBSSxLQUNKLEdBQUksUUFDSixHQUFJLE1BQ0osR0FBSSxNQUNKLEdBQUksT0FDSixHQUFJLFFBQ0osR0FBSSxTQUNKLEdBQUksUUFDSixHQUFJLE9BQ0osR0FBSSxNQUNKLEdBQUksTUFDSixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksUUFDSixHQUFJLE1BQ0osR0FBSSxLQUNKLEdBQUksTUFDSixHQUFJLE1BQ0osR0FBSSxTQUNKLEdBQUksT0FDSixHQUFJLFdBQ0osR0FBSSxPQUNKLEdBQUksT0FDSixHQUFJLFNBQ0osR0FBSSxNQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osR0FBSSxTQUNKLEdBQUksUUFDSixHQUFJLFNBQ0osR0FBSSxTQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osR0FBSSxTQUNKLEdBQUksS0FDSixHQUFJLEtBQ0osR0FBSSxPQUNKLEdBQUksTUFDSixHQUFJLE9BQ0osR0FBSSxPQUNKLEdBQUksTUFDSixHQUFJLE9BQ0osR0FBSSxRQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osR0FBSSxNQUNKLEdBQUksUUFDSixHQUFJLE9BQ0osR0FBSSxVQUNKLEdBQUksT0FDSixHQUFJLFNBQ0osR0FBSSxTQUNKLEdBQUksTUFDSixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksVUFDSixHQUFJLFNBQ0osR0FBSSxTQUNKLEdBQUksU0FDSixHQUFJLFdBQ0osR0FBSSxTQUNKLEdBQUksWUFDSixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osR0FBSSxXQUNKLEdBQUksU0FDSixHQUFJLFFBQ0osR0FBSSxVQUNKLEdBQUksU0FDSixHQUFJLFlBQ0osR0FBSSxjQUNKLEdBQUksWUFDSixHQUFJLFNBQ0osR0FBSSxRQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osSUFBSyxTQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLFlBQ0wsSUFBSyxNQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxJQUNMLElBQUssSUFDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssV0FDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxNQUNMLElBQUssTUFDTCxJQUFLLE1BQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLGNBQ0wsSUFBSyxpQkFDTCxJQUFLLGdCQUNMLElBQUssaUJBQ0wsSUFBSyxXQUNMLElBQUssY0FDTCxJQUFLLGlCQUNMLElBQUssaUJBQ0wsSUFBSyxhQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFNBQ0wsSUFBSyxhQUNMLElBQUssTUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLE9BQ0wsSUFBSyxXQUNMLElBQUssZ0JBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLFdBQ0wsSUFBSyxZQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGFBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxZQUNMLElBQUssTUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssTUFDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssU0FDTCxJQUFLLFdBQ0wsSUFBSyxTQUNMLElBQUssYUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxnQkFDTCxJQUFLLFdBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLGdCQUNMLElBQUssa0JBQ0wsSUFBSyxnQkFDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLGFBQ0wsSUFBSyxLQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLGlCQUNMLElBQUssT0FDTCxJQUFLLGdCQUNMLElBQUssV0FDTCxJQUFLLGNBQ0wsSUFBSyxXQUNMLElBQUssaUJBQ0wsSUFBSyxhQUNMLElBQUssWUFDTCxJQUFLLGVBQ0wsSUFBSyxlQUNMLElBQUssY0FDTCxJQUFLLGFBQ0wsSUFBSyxjQUNMLElBQUssZUFDTCxJQUFLLFNBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLFNBQ0wsSUFBSyxTQUNMLElBQUssYUFDTCxJQUFLLFlBQ0wsSUFBSyxPQUNMLElBQUssWUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssU0FDTCxJQUFLLFlBQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssY0FDTCxJQUFLLGNBQ0wsSUFBSyxTQUNMLElBQUssZUFDTCxJQUFLLFdBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxjQUNMLElBQUssTUFDTCxJQUFLLFNBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssU0FDTCxJQUFLLFFBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssTUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxXQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxPQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxnQkFDTCxJQUFLLFlBQ0wsSUFBSyxjQUNMLElBQUssUUFDTCxJQUFLLGlCQUNMLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxJQUFLLGlCQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLG9CQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssZUFDTCxJQUFLLFFBQ0wsSUFBSyxjQUNMLElBQUssY0FDTCxJQUFLLFdBQ0wsSUFBSyxlQUNMLElBQUssWUFDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssV0FDTCxJQUFLLGdCQUNMLElBQUssWUFDTCxJQUFLLGtCQUNMLElBQUssZUFDTCxJQUFLLGdCQUNMLElBQUssbUJBQ0wsSUFBSyxjQUNMLElBQUssZ0JBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLE1BQ0wsSUFBSyxZQUNMLElBQUssYUFDTCxJQUFLLHFCQUNMLElBQUssbUJBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxTQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLGFBQ0wsSUFBSyxjQUNMLElBQUssWUFDTCxJQUFLLFNBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssYUFDTCxJQUFLLFNBQ0wsSUFBSyxXQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxTQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxNQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGFBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFNBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFlBQ0wsSUFBSyxXQUNMLElBQUssYUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLGNBQ0wsSUFBSyxNQUNMLElBQUssY0FDTCxJQUFLLE1BQ0wsSUFBSyxhQUNMLElBQUssZ0JBQ0wsSUFBSyxVQUNMLElBQUssZUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssU0FDTCxJQUFLLFlBQ0wsSUFBSyxZQUNQLEVBQ0lELEdBQVcsQ0FDYixFQUFHLEVBQ0gsRUFBRyxFQUNILEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLE1BQU8sQ0FDVCxFQUVBLFNBQVM4RixHQUFtQnprSCxFQUF5QixDQUNwRCxPQUFHQSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUssUUFBT0EsRUFBSUEsRUFBRSxNQUFNLENBQUMsR0FFcENBLEVBQUUsV0FBVyxDQUFDLEdBQUssS0FDckJBLEVBQUlBLEVBQUUsTUFBTSxDQUFDLEVBQ1ZBLEVBQUUsV0FBVyxDQUFDLEdBQUssS0FBSUEsRUFBSUEsRUFBRSxNQUFNLENBQUMsSUFFeENBLEVBQUlBLEVBQUUsUUFBUSxvQkFBcUIsRUFBRSxFQUVyQ0EsRUFBSUEsRUFBRSxRQUFRLGdEQUFpRCxTQUFTNGhFLEVBQUlDLEVBQUksQ0FBRSxPQUFPQSxFQUFHLFFBQVEsTUFBTSxFQUFFLENBQUksQ0FBQSxFQUVoSDdoRSxFQUFJQSxFQUFFLFFBQVEsc0JBQXVCLElBQUksRUFDbENBLEVBQUUsUUFBUSxRQUFRLEdBQUcsRUFBRSxRQUFRLE1BQU0sR0FBRyxDQUNoRCxDQUVBLFNBQVMwa0gsR0FBbUIxa0gsRUFBeUIsQ0FDcEQsSUFBSUMsRUFBSSxPQUFTRCxFQUFFLFFBQVErN0csR0FBVyxlQUFlLEVBQUUsUUFBUSxTQUFTLEdBQUcsRUFFM0UsT0FBTzk3RyxFQUFFLFFBQVEsS0FBTSxHQUFHLEVBQUUsUUFBUSxLQUFLLEdBQUcsQ0FDN0MsQ0FFQSxTQUFTMGtILEdBQWN2bEgsRUFBbUMsQ0FDekQsSUFBSUcsRUFBSUgsRUFBRSxNQUFNLEdBQUcsRUFDZkUsRUFBSUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUN6QixNQUFPLENBQUNELEVBQUdDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBS0EsRUFBRSxPQUFTLEVBQUssS0FBT0EsRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFLQSxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQU0sR0FBRyxDQUN6RyxDQUVBLFNBQVNxbEgsR0FBY3hsSCxFQUF5QixDQUMvQyxPQUFPQSxFQUFFLFFBQVEsS0FBSyxHQUFHLENBQzFCLENBRUEsSUFBSTgyRixHQUFPLENBQUEsRUFDUDJ1QixHQUFXLENBQUEsRUFJWEMsR0FBa0IsT0FBTyxJQUFRLElBRXJDLFNBQVNDLEdBQVczdUIsRUFBYXo3RCxFQUFnQmsxQyxFQUFnQixDQUNoRSxJQUFJaDJFLEVBQUksRUFBRzZnQyxFQUFNMDdELEVBQUksT0FDckIsR0FBR3ZtQixHQUNGLEdBQUdpMUMsR0FBa0JqMUMsRUFBSSxJQUFJbDFDLENBQUcsRUFBSSxPQUFPLFVBQVUsZUFBZSxLQUFLazFDLEVBQUtsMUMsQ0FBRyxHQUVoRixRQURJcXFGLEVBQVNGLEdBQWtCajFDLEVBQUksSUFBSWwxQyxDQUFHLEVBQUlrMUMsRUFBSWwxQyxDQUFHLEVBQy9DOWdDLEVBQUltckgsRUFBTyxPQUFRLEVBQUVuckgsRUFDMUIsR0FBR3U4RixFQUFJNHVCLEVBQU9uckgsQ0FBQyxDQUFDLEVBQUUsSUFBTThnQyxFQUFPLE9BQUF5N0QsRUFBSSxRQUFpQjR1QixFQUFPbnJILENBQUMsT0FHeEQsTUFBTUEsRUFBSTZnQyxFQUFLLEVBQUU3Z0MsRUFDdkIsR0FBR3U4RixFQUFJdjhGLENBQUMsRUFBRSxJQUFNOGdDLEVBQU8sT0FBQXk3RCxFQUFJLFFBQWlCdjhGLEVBRTdDLE9BQUF1OEYsRUFBSTE3RCxDQUFHLEVBQUssQ0FBQ0MsQ0FBSyxFQUFZeTdELEVBQUksUUFBVUEsRUFBSSxTQUM3Q3ZtQixJQUNDaTFDLElBQ0VqMUMsRUFBSSxJQUFJbDFDLENBQUcsR0FBR2sxQyxFQUFJLElBQUlsMUMsRUFBSyxDQUFBLENBQUUsRUFDakNrMUMsRUFBSSxJQUFJbDFDLENBQUcsRUFBRSxLQUFLRCxDQUFHLElBRWpCLE9BQU8sVUFBVSxlQUFlLEtBQUttMUMsRUFBS2wxQyxDQUFHLElBQUdrMUMsRUFBSWwxQyxDQUFHLEVBQUksQ0FBQSxHQUMvRGsxQyxFQUFJbDFDLENBQUcsRUFBRSxLQUFLRCxDQUFHLElBR1pBLENBQ1IsQ0FFQSxTQUFTdXFGLEdBQVVwOUMsRUFBY3g1RCxFQUFLLENBQ3JDLElBQUkxVixFQUFLLENBQUMsSUFBSWt2RSxFQUFFLEVBQUUsSUFBSUEsRUFBRSxDQUFDLEVBRXJCcTlDLEVBQU0sR0FDVixPQUFHNzJHLEVBQUksTUFBS3lpRyxHQUFNemlHLEVBQUksS0FDbkJBLEVBQUksT0FBUyxLQUFNMVYsRUFBRSxZQUFjLEVBQzlCMFYsRUFBSSxLQUFPLEtBQU02MkcsRUFBTWppQixHQUFRNTBGLEVBQUksR0FBRyxFQUN0Q0EsRUFBSSxLQUFPLE9BQU02MkcsRUFBTTcyRyxFQUFJLEtBQ2hDNjJHLEVBQU0sSUFBTXZzSCxFQUFFLE1BQVFxNEcsR0FBV2tVLENBQUcsRUFBR3ZzSCxFQUFFLFlBQWMsR0FDbEQwVixFQUFJLE9BQVMsT0FBTTFWLEVBQUUsTUFBUTBWLEVBQUksT0FDdENBLEVBQUksU0FBUTFWLEVBQUUsT0FBUyxJQUN2QjBWLEVBQUksT0FBUyxPQUFRMVYsRUFBRSxhQUFlQSxFQUFFLE1BQVEwVixFQUFJLE9BQ2hEMVYsQ0FDUixDQUVBLFNBQVN3c0gsR0FBZ0JDLEVBQXFCcjZHLEVBQWtCLENBQy9ELEdBQUlxNkcsRUFDSixLQUFJQyxFQUFPLENBQUMsR0FBSyxHQUFLLElBQU0sSUFBTSxHQUFLLEVBQUcsRUFDdkN0NkcsR0FBUSxTQUFRczZHLEVBQU8sQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUssRUFBRyxHQUM1Q0QsRUFBUSxNQUFVLE9BQU1BLEVBQVEsS0FBU0MsRUFBSyxDQUFDLEdBQy9DRCxFQUFRLE9BQVUsT0FBTUEsRUFBUSxNQUFTQyxFQUFLLENBQUMsR0FDL0NELEVBQVEsS0FBVSxPQUFNQSxFQUFRLElBQVNDLEVBQUssQ0FBQyxHQUMvQ0QsRUFBUSxRQUFVLE9BQU1BLEVBQVEsT0FBU0MsRUFBSyxDQUFDLEdBQy9DRCxFQUFRLFFBQVUsT0FBTUEsRUFBUSxPQUFTQyxFQUFLLENBQUMsR0FDL0NELEVBQVEsUUFBVSxPQUFNQSxFQUFRLE9BQVNDLEVBQUssQ0FBQyxHQUNuRCxDQUVBLFNBQVNDLEdBQWUxVCxFQUF1QjV2RSxFQUFlNXNDLEVBQU0sQ0FDbkUsSUFBSStxQyxFQUFJL3FDLEVBQUssT0FBTzRzQyxFQUFLLEdBQUssS0FBT0EsRUFBSyxFQUFJLFNBQVMsRUFDbkRub0MsRUFBSSxHQUFNNmdDLEVBQU1rM0UsRUFBTyxPQUMzQixHQUFHenhFLEdBQUssTUFBUS9xQyxFQUFLLEtBQ3BCLEtBQU15RSxFQUFJLElBQU8sRUFBRUEsRUFBRyxHQUFHekUsRUFBSyxJQUFJeUUsQ0FBQyxHQUFLLEtBQU0sQ0FDN0MwckUsR0FBU3ZqQyxFQUFLLEVBQUdub0MsQ0FBQyxFQUVsQnpFLEVBQUssSUFBSXlFLENBQUMsRUFBSW1vQyxFQUFLLEVBQ25CNXNDLEVBQUssT0FBTzRzQyxFQUFLLENBQUMsRUFBSTdCLEVBQUl0bUMsRUFDMUIsS0FDQSxFQUVGLElBQUlBLEVBQUksRUFBR0EsR0FBSzZnQyxFQUFLLEVBQUU3Z0MsRUFBRyxHQUFHKzNHLEVBQU8vM0csQ0FBQyxFQUFFLFdBQWFzbUMsRUFBRyxPQUFPdG1DLEVBQzlELE9BQUErM0csRUFBT2wzRSxDQUFHLEVBQUksQ0FDYixTQUFTeUYsRUFDVCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFNBQVMsRUFDVCxLQUFLLEVBQ0wsa0JBQWtCLENBQ3BCLEVBQ1F6RixDQUNSLENBRUEsU0FBUzZxRixHQUFZNXNILEVBQVk2c0gsRUFBa0JDLEVBQW9CcndILEVBQU15OEcsRUFBUUQsRUFBUSxDQUM1RixHQUFJLENBQ0F4OEcsRUFBSyxTQUFRdUQsRUFBRSxFQUFJMmxFLEdBQVVrbkQsQ0FBSyxFQUN2QyxPQUFTL25ILEVBQUcsQ0FBRSxHQUFHckksRUFBSyxJQUFLLE1BQU1xSSxDQUFJLENBQ3BDLEdBQUcsRUFBQTlFLEVBQUUsSUFBTSxLQUFPLENBQUN2RCxFQUFLLFlBRXhCLElBREd1RCxFQUFFLElBQU0sS0FBTyxPQUFPQSxFQUFFLEdBQU0sV0FBVUEsRUFBRSxFQUFJcy9FLEdBQVV0L0UsRUFBRSxDQUFDLElBQzFELENBQUN2RCxHQUFRQSxFQUFLLFdBQWEsS0FBVXVELEVBQUUsSUFBTSxJQUFLLEdBQUksQ0FFekQsR0FERzJsRSxHQUFVa25ELENBQUssR0FBSyxNQUFNamdELEdBQVNLLEdBQVk0L0MsQ0FBSyxHQUFLLFVBQVdBLENBQUssRUFDekU3c0gsRUFBRSxJQUFNLElBQUtBLEVBQUUsRUFBSUEsRUFBRSxHQUFLeXBGLEdBQUt6cEYsRUFBRSxDQUFDLFVBQzdCNnNILElBQVUsRUFDakIsR0FBRzdzSCxFQUFFLElBQU0sS0FDTkEsRUFBRSxFQUFFLEtBQU9BLEVBQUUsRUFBR0EsRUFBRSxFQUFJQSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQ3BDQSxFQUFFLEVBQUkybkUsR0FBZ0IzbkUsRUFBRSxDQUFDLFVBRXZCQSxFQUFFLElBQU0sSUFBSyxDQUNwQixJQUFJb3FFLEVBQUt1VSxHQUFRMytFLEVBQUUsQ0FBQyxHQUNoQm9xRSxFQUFHLEtBQU9BLEVBQUlwcUUsRUFBRSxFQUFJb3FFLEVBQUcsU0FBUyxFQUFFLEVBQ2pDcHFFLEVBQUUsRUFBSTJuRSxHQUFnQnlDLENBQUUsQ0FDN0IsS0FDSSxJQUFHcHFFLEVBQUUsSUFBTSxPQUFXLE1BQU8sR0FDN0JBLEVBQUUsRUFBSTZuRSxHQUFZN25FLEVBQUUsRUFBRWtzSCxFQUFRLE9BRTVCbHNILEVBQUUsSUFBTSxJQUFLQSxFQUFFLEVBQUk4bkUsR0FBVytrRCxFQUFNbHVDLEdBQVEzK0UsRUFBRSxDQUFDLEVBQUVrc0gsRUFBUSxFQUM1RGxzSCxFQUFFLEVBQUk4bkUsR0FBVytrRCxFQUFNN3NILEVBQUUsRUFBRWtzSCxFQUFRLENBQzFDLE9BQVNwbkgsRUFBRyxDQUFFLEdBQUdySSxFQUFLLElBQUssTUFBTXFJLENBQUksQ0FDcEMsR0FBSXJJLEVBQUssWUFDTnF3SCxHQUFVLEtBQU0sR0FBSSxDQUN0QjlzSCxFQUFFLEVBQUlpNUcsRUFBTyxNQUFNNlQsQ0FBTSxFQUNyQjlzSCxFQUFFLEVBQUUsU0FBV0EsRUFBRSxFQUFFLFFBQVEsT0FBUyxDQUFDQSxFQUFFLEVBQUUsUUFBUSxNQUNwREEsRUFBRSxFQUFFLFFBQVEsSUFBTTYzRyxHQUFTcUIsRUFBTyxjQUFjLFVBQVVsNUcsRUFBRSxFQUFFLFFBQVEsS0FBSyxFQUFFLElBQUtBLEVBQUUsRUFBRSxRQUFRLE1BQVEsQ0FBQyxFQUNwR3ZELEVBQUssTUFBS3VELEVBQUUsRUFBRSxRQUFRLFFBQVVrNUcsRUFBTyxjQUFjLFVBQVVsNUcsRUFBRSxFQUFFLFFBQVEsS0FBSyxFQUFFLE1BRWxGQSxFQUFFLEVBQUUsU0FBV0EsRUFBRSxFQUFFLFFBQVEsUUFDOUJBLEVBQUUsRUFBRSxRQUFRLElBQU02M0csR0FBU3FCLEVBQU8sY0FBYyxVQUFVbDVHLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxJQUFLQSxFQUFFLEVBQUUsUUFBUSxNQUFRLENBQUMsRUFDcEd2RCxFQUFLLE1BQUt1RCxFQUFFLEVBQUUsUUFBUSxRQUFVazVHLEVBQU8sY0FBYyxVQUFVbDVHLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxLQUV4RixPQUFTOEUsRUFBRyxDQUFFLEdBQUdySSxFQUFLLEtBQU93OEcsRUFBTyxNQUFPLE1BQU1uMEcsQ0FBSSxFQUNyRCxDQUVBLFNBQVNpb0gsR0FBUy9pQyxFQUFrQjAvQixFQUFrQnhvSCxFQUFjLENBQ25FLEdBQUc4b0YsR0FBTUEsRUFBRyxNQUFNLEVBQUcsQ0FDcEIsSUFBSTVrRCxFQUFRa2tELEdBQWtCVSxFQUFHLE1BQU0sQ0FBQyxFQUN4QyxHQUFHNWtELEVBQU0sRUFBRSxFQUFJQSxFQUFNLEVBQUUsR0FBS0EsRUFBTSxFQUFFLEVBQUlBLEVBQU0sRUFBRSxFQUFHLE1BQU0sSUFBSSxNQUFNLGNBQWdCbGtDLEVBQUksTUFBUThvRixFQUFHLE1BQU0sQ0FBQyxDQUN6RyxDQUNGLENBQ0EsU0FBU2dqQyxHQUFpQmhqQyxFQUFrQnJqRixFQUFjLENBQ3pELElBQUlhLEVBQUk4aEYsR0FBa0IzaUYsQ0FBQyxFQUN4QmEsRUFBRSxFQUFFLEdBQUdBLEVBQUUsRUFBRSxHQUFLQSxFQUFFLEVBQUUsR0FBR0EsRUFBRSxFQUFFLEdBQUtBLEVBQUUsRUFBRSxHQUFHLEdBQUtBLEVBQUUsRUFBRSxHQUFHLElBQUd3aUYsRUFBRyxNQUFNLEVBQUliLEdBQWEzaEYsQ0FBQyxFQUNyRixDQUNBLElBQUl5bEgsR0FBYyxnREFDZEMsR0FBaUIsMkRBQ2pCQyxHQUFhLDhCQUNiQyxHQUFXLGNBQ1hDLEdBQVcsNkJBQ1hDLEdBQVUsbUVBQ1ZDLEdBQWEsZ0NBQ2JDLEdBQWUseUNBQ2ZDLEdBQWUsOERBQ2ZDLEdBQVcsb0VBR2YsU0FBU0MsR0FBYTU0RyxFQUFrQnRZLEVBQU0ycUQsRUFBZ0JpcEMsRUFBTXNNLEVBQWtCdWMsRUFBUUQsRUFBc0IsQ0FDbkgsR0FBRyxDQUFDbGtHLEVBQU0sT0FBT0EsRUFDYnM3RSxJQUFNQSxFQUFPLENBQUMsTUFBTSxDQUFFLENBQUEsR0FJMUIsSUFBSTFwRixFQUFJbEssRUFBSyxNQUFTLENBQUUsRUFBYSxDQUFFLEVBQ25DdXhHLEVBQXNCLENBQUMsRUFBRyxDQUFDLEVBQUUsSUFBUyxFQUFFLEdBQU8sRUFBRyxFQUFHLENBQUMsRUFBRSxFQUFHLEVBQUUsQ0FBQyxDQUFDLEVBRS9ENGYsRUFBUSxHQUFJQyxFQUFRLEdBQ3BCQyxFQUFnQi80RyxFQUFLLE1BQU1tNEcsRUFBYyxFQUMxQ1ksR0FDRkYsRUFBUTc0RyxFQUFLLE1BQU0sRUFBRys0RyxFQUFLLEtBQUssRUFDaENELEVBQVE5NEcsRUFBSyxNQUFNKzRHLEVBQUssTUFBUUEsRUFBSyxDQUFDLEVBQUUsTUFBTSxHQUN4Q0YsRUFBUUMsRUFBUTk0RyxFQUd2QixJQUFJZzVHLEVBQVVILEVBQU0sTUFBTUosRUFBWSxFQUNuQ08sRUFBU0MsR0FBcUJELEVBQVEsQ0FBQyxFQUFHcG5ILEVBQUdnMkYsRUFBSXYxQyxDQUFHLEdBQzlDMm1FLEVBQVVILEVBQU0sTUFBTUgsRUFBYSxJQUFJUSxHQUFzQkYsRUFBUSxDQUFDLEVBQUdBLEVBQVEsQ0FBQyxHQUFHLEdBQUlwbkgsRUFBR2cyRixFQUFJdjFDLENBQW1CLEVBRzVILElBQUl1ZCxHQUFRaXBELEVBQU0sTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQzVELEdBQUdqcEQsRUFBTyxFQUFHLENBQ1osSUFBSTdoRSxFQUFNOHFILEVBQU0sTUFBTWpwRCxFQUFLQSxFQUFLLEVBQUUsRUFBRSxNQUFNeW9ELEVBQVEsRUFDL0N0cUgsR0FBS2txSCxHQUFpQnJtSCxFQUFHN0QsRUFBSSxDQUFDLENBQUMsQ0FDbEMsQ0FHRCxJQUFJb3JILEVBQU1OLEVBQU0sTUFBTUYsRUFBUSxFQUMzQlEsR0FBT0EsRUFBSSxDQUFDLEdBQUdDLEdBQXdCRCxFQUFJLENBQUMsRUFBR3Z4QixDQUFFLEVBR3BELElBQUlodEYsRUFBNkIsQ0FBQSxFQUNqQyxHQUFHbFQsRUFBSyxXQUFZLENBRW5CLElBQUlzdkMsRUFBTzZoRixFQUFNLE1BQU1QLEVBQVEsRUFDNUJ0aEYsR0FBTXFpRixHQUFrQnorRyxFQUFTbzhCLENBQUksQ0FDeEMsQ0FHRStoRixHQUFNTyxHQUFrQlAsRUFBSyxDQUFDLEVBQUdubkgsRUFBR2xLLEVBQU11eEcsRUFBVWtMLEVBQVFELENBQU0sRUFHckUsSUFBSXFWLEVBQVVULEVBQU0sTUFBTVAsRUFBTyxFQUM5QmdCLElBQVMzbkgsRUFBRSxhQUFhLEVBQUk0bkgsR0FBd0JELEVBQVEsQ0FBQyxDQUFDLEdBR2pFLElBQUlqckIsRUFBMEIsQ0FBQSxFQUMxQm1yQixFQUFTWCxFQUFNLE1BQU1aLEVBQVcsRUFDcEMsR0FBR3VCLEVBQVEsSUFBSTdwRCxFQUFPLEVBQUdBLEdBQVE2cEQsRUFBTyxPQUFRLEVBQUU3cEQsRUFDakQwK0IsRUFBTzErQixDQUFJLEVBQUkya0IsR0FBa0JrbEMsRUFBTzdwRCxDQUFJLEVBQUUsTUFBTTZwRCxFQUFPN3BELENBQUksRUFBRSxRQUFRLEdBQUksRUFBRSxDQUFDLENBQUMsRUFHbEYsSUFBSXUvQixFQUFRMnBCLEVBQU0sTUFBTVYsRUFBVSxFQUMvQmpwQixHQUFPdXFCLEdBQW9COW5ILEVBQUd1OUYsRUFBTzdULENBQUksRUFHNUMsSUFBSW84QixFQUFVb0IsRUFBTSxNQUFNTixFQUFXLEVBSXJDLEdBSEdkLElBQVM5bEgsRUFBRSxVQUFVLEVBQUkrbkgsR0FBcUJodEMsR0FBWStxQyxFQUFRLENBQUMsQ0FBQyxDQUFDLEdBRXJFLENBQUM5bEgsRUFBRSxNQUFNLEdBQUtxbkcsRUFBUyxFQUFFLEdBQUtBLEVBQVMsRUFBRSxHQUFLQSxFQUFTLEVBQUUsR0FBS0EsRUFBUyxFQUFFLElBQUdybkcsRUFBRSxNQUFNLEVBQUl3aUYsR0FBYTZrQixDQUFRLEdBQzdHdnhHLEVBQUssVUFBWSxHQUFLa0ssRUFBRSxNQUFNLEVBQUcsQ0FDbkMsSUFBSWdvSCxFQUFTcmxDLEdBQWtCM2lGLEVBQUUsTUFBTSxDQUFDLEVBQ3JDbEssRUFBSyxXQUFhLENBQUNreUgsRUFBTyxFQUFFLElBQzlCQSxFQUFPLEVBQUUsRUFBSWx5SCxFQUFLLFVBQVksRUFDM0JreUgsRUFBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLElBQUcyZ0IsRUFBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLEdBQ25EMmdCLEVBQU8sRUFBRSxFQUFJQSxFQUFPLEVBQUUsSUFBR0EsRUFBTyxFQUFFLEVBQUlBLEVBQU8sRUFBRSxHQUMvQ0EsRUFBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLElBQUcyZ0IsRUFBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLEdBQ25EMmdCLEVBQU8sRUFBRSxFQUFJQSxFQUFPLEVBQUUsSUFBR0EsRUFBTyxFQUFFLEVBQUlBLEVBQU8sRUFBRSxHQUNsRGhvSCxFQUFFLFVBQVUsRUFBSUEsRUFBRSxNQUFNLEVBQ3hCQSxFQUFFLE1BQU0sRUFBSXdpRixHQUFhd2xDLENBQU0sRUFFaEMsQ0FDRCxPQUFHaC9HLEVBQVEsT0FBUyxJQUFHaEosRUFBRSxPQUFPLEVBQUlnSixHQUNqQzB6RixFQUFPLE9BQVMsSUFBRzE4RixFQUFFLFNBQVMsRUFBSTA4RixHQUM5QjE4RixDQUNSLENBRUEsU0FBU2lvSCxHQUFvQnZyQixFQUFvQyxDQUNoRSxHQUFHQSxFQUFPLFNBQVcsRUFBRyxNQUFPLEdBRS9CLFFBREkvN0YsRUFBSSxzQkFBd0IrN0YsRUFBTyxPQUFTLEtBQ3hDbmlHLEVBQUksRUFBR0EsR0FBS21pRyxFQUFPLE9BQVEsRUFBRW5pRyxFQUFHb0csR0FBSyxtQkFBcUI2aEYsR0FBYWthLEVBQU9uaUcsQ0FBQyxDQUFDLEVBQUksTUFDNUYsT0FBT29HLEVBQUksZUFDWixDQUdBLFNBQVMwbUgsR0FBcUJELEVBQW9CcG5ILEVBQUdnMkYsRUFBa0J2MUMsRUFBZ0IsQ0FDdEYsSUFBSXJ5QyxFQUFPMnNFLEdBQVlxc0MsQ0FBTyxFQUMxQnB4QixFQUFHLE9BQU92MUMsQ0FBRyxJQUFHdTFDLEVBQUcsT0FBT3YxQyxDQUFHLEVBQUksSUFDbENyeUMsRUFBSyxXQUFVNG5GLEVBQUcsT0FBT3YxQyxDQUFHLEVBQUUsU0FBVzg2QixHQUFZcUIsR0FBU3h1RSxFQUFLLFFBQVEsQ0FBQyxFQUNoRixDQUNBLFNBQVNrNUcsR0FBc0JGLEVBQW9CdnNCLEVBQWlCNzZGLEVBQUdnMkYsRUFBa0J2MUMsRUFBZ0IsQ0FDeEc0bUUsR0FBcUJELEVBQVEsTUFBTSxFQUFHQSxFQUFRLFFBQVEsR0FBRyxDQUFDLEVBQUdwbkgsRUFBR2cyRixFQUFJdjFDLENBQUcsQ0FDeEUsQ0FDQSxTQUFTeW5FLEdBQXFCN2tDLEVBQUkyUyxFQUFJdjFDLEVBQUszcUQsRUFBTTZLLEVBQUcsQ0FDbkQsSUFBSXduSCxFQUFTLEdBQ1Q1NkcsRUFBUSxDQUFBLEVBQUl1K0QsRUFBVSxLQUMxQixHQUFHaDJFLEVBQUssV0FBYSxRQUFVa2dHLEVBQUcsT0FBUSxDQUN6QyxJQUFJb3lCLEVBQVFweUIsRUFBRyxXQUFXdjFDLENBQUcsRUFDN0IsR0FBSSxDQUFLdTFDLEVBQUcsV0FBVW95QixFQUFRcHlCLEVBQUcsU0FBUyxPQUFPdjFDLENBQUcsRUFBRSxVQUFZMm5FLEVBQU0sTUFBWSxDQUFFLENBQ3RGRCxFQUFTLEdBQ1Q1NkcsRUFBTSxTQUFXOHBFLEdBQVV1RSxHQUFVd3NDLENBQUssQ0FBQyxDQUMzQyxDQUVELEdBQUcva0MsR0FBTUEsRUFBRyxVQUFVLEVBQUcsQ0FDeEIsSUFBSWdsQyxFQUFlLENBQUMsYUFBYSxFQUFHLGFBQWEsQ0FBQyxFQUMvQ2hsQyxFQUFHLFVBQVUsRUFBRSxRQUFPZ2xDLEVBQWEsYUFBZSxHQUNsRGhsQyxFQUFHLFVBQVUsRUFBRSxPQUFNZ2xDLEVBQWEsYUFBZSxHQUNwRHY4QyxHQUFXQSxHQUFTLElBQU0yUixHQUFVLFlBQWEsS0FBTTRxQyxDQUFZLENBQ25FLENBRUUsQ0FBQ0YsR0FBVSxDQUFDcjhDLElBQ2ZuckUsRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxVQUFXM1IsRUFBU3YrRCxDQUFLLEVBQ25ELENBR0EsSUFBSSs2RyxHQUFxQixDQUFDLFVBQVcsWUFBYSxvQkFBcUIscUJBQXFCLEVBQ3hGQyxHQUFvQixDQUN2QixnQkFBaUIsYUFBYyxjQUMvQixnQkFBaUIsYUFBYyxtQkFDL0IsZ0JBQWlCLGFBQ2pCLE9BQVEsYUFBYyxhQUN2QixFQUNBLFNBQVNDLEdBQXdCL0UsRUFBZSxDQUUvQyxJQUFJOWlILEVBQUssQ0FBQyxNQUFNLENBQUMsRUFDakIsT0FBQTJuSCxHQUFtQixRQUFRLFNBQVN2b0gsRUFBRyxDQUFLMGpILEVBQUcxakgsQ0FBQyxHQUFLLE1BQVEwakgsRUFBRzFqSCxDQUFDLElBQUdZLEVBQUVaLENBQUMsRUFBSSxJQUFJLENBQUUsRUFDakZ3b0gsR0FBa0IsUUFBUSxTQUFTeG9ILEVBQUcsQ0FBSzBqSCxFQUFHMWpILENBQUMsR0FBSyxNQUFRLENBQUMwakgsRUFBRzFqSCxDQUFDLElBQUdZLEVBQUVaLENBQUMsRUFBSSxJQUFJLENBQUUsRUFFOUUwakgsRUFBRyxXQUFVOWlILEVBQUUsU0FBV210RyxHQUFzQzJWLEVBQUcsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLFlBQVcsR0FDakdobUMsR0FBVSxrQkFBbUIsS0FBTTk4RSxDQUFDLENBQzVDLENBRUEsU0FBU21uSCxHQUFvQjluSCxFQUFHb08sRUFBd0JzN0UsRUFBTSxDQUU3RCxRQURJdEcsRUFBUSxNQUFNLFFBQVFwakYsQ0FBQyxFQUNuQnpGLEVBQUksRUFBR0EsR0FBSzZULEVBQUssT0FBUSxFQUFFN1QsRUFBRyxDQUNyQyxJQUFJWSxFQUFNNC9FLEdBQVk2QixHQUFTeHVFLEVBQUs3VCxDQUFDLENBQUMsRUFBRyxFQUFJLEVBQzdDLEdBQUcsQ0FBQ1ksRUFBSSxJQUFLLE9BQ2IsSUFBSXd1RixJQUFRRCxHQUFRLENBQUUsR0FBRSxLQUFLLEdBQUcsQ0FBRSxHQUFFdnVGLEVBQUksRUFBRSxFQUN2Q3d1RixHQUNGeHVGLEVBQUksT0FBU3d1RixFQUFJLE9BQ2R4dUYsRUFBSSxXQUFVQSxFQUFJLFFBQVUsSUFBSW9nRixHQUFZcGdGLEVBQUksUUFBUSxLQUUzREEsRUFBSSxPQUFTLElBQU1vZ0YsR0FBWXBnRixFQUFJLFFBQVEsRUFDM0N3dUYsRUFBTSxDQUFDLE9BQVF4dUYsRUFBSSxPQUFRLFdBQVksVUFBVSxHQUVsREEsRUFBSSxJQUFNd3VGLEVBQ1B4dUYsRUFBSSxVQUFXQSxFQUFJLFFBQVVBLEVBQUksUUFBUyxPQUFPQSxFQUFJLFNBRXhELFFBRElzdEgsRUFBTTlsQyxHQUFrQnhuRixFQUFJLEdBQUcsRUFDM0IwdEUsRUFBRTQvQyxFQUFJLEVBQUUsRUFBRTUvQyxHQUFHNC9DLEVBQUksRUFBRSxFQUFFLEVBQUU1L0MsRUFBRyxRQUFRTixFQUFFa2dELEVBQUksRUFBRSxFQUFFbGdELEdBQUdrZ0QsRUFBSSxFQUFFLEVBQUUsRUFBRWxnRCxFQUFHLENBQ25FLElBQUlrRSxFQUFPZ1YsR0FBWSxDQUFDLEVBQUVsWixFQUFFLEVBQUVNLENBQUMsQ0FBQyxFQUM3QnVhLEdBQ0VwakYsRUFBRTZvRSxDQUFDLElBQUc3b0UsRUFBRTZvRSxDQUFDLEVBQUksSUFDYjdvRSxFQUFFNm9FLENBQUMsRUFBRU4sQ0FBQyxJQUFHdm9FLEVBQUU2b0UsQ0FBQyxFQUFFTixDQUFDLEVBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFTLEdBQ3pDdm9FLEVBQUU2b0UsQ0FBQyxFQUFFTixDQUFDLEVBQUUsRUFBSXB0RSxJQUVSNkUsRUFBRXlzRSxDQUFJLElBQUd6c0UsRUFBRXlzRSxDQUFJLEVBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFTLEdBQ3pDenNFLEVBQUV5c0UsQ0FBSSxFQUFFLEVBQUl0eEUsRUFFYixDQUNELENBQ0YsQ0FFQSxTQUFTNHNILEdBQXFCVyxFQUFRLENBQ3JDLElBQUkvbkgsRUFBSSxDQUFBLEVBQ1IsT0FBQyxPQUFRLFFBQVMsTUFBTyxTQUFVLFNBQVUsUUFBUSxFQUFFLFFBQVEsU0FBU3NjLEVBQUcsQ0FDdkV5ckcsRUFBT3pyRyxDQUFDLElBQUd0YyxFQUFFc2MsQ0FBQyxFQUFJLFdBQVd5ckcsRUFBT3pyRyxDQUFDLENBQUMsRUFDM0MsQ0FBRSxFQUNNdGMsQ0FDUixDQUNBLFNBQVNnb0gsR0FBcUJELEVBQW1CLENBQ2hELE9BQUE3QyxHQUFnQjZDLENBQU0sRUFDZmpyQyxHQUFVLGNBQWUsS0FBTWlyQyxDQUFNLENBQzdDLENBRUEsU0FBU2pCLEdBQWtCeitHLEVBQVNvOEIsRUFBTSxDQUV6QyxRQURJd2pGLEVBQVUsR0FDTkMsRUFBTyxFQUFHQSxHQUFRempGLEVBQUssT0FBUSxFQUFFeWpGLEVBQU0sQ0FDOUMsSUFBSTdXLEVBQU9qM0IsR0FBWTMxQyxFQUFLeWpGLENBQUksRUFBRyxFQUFJLEVBQ3BDN1csRUFBSyxTQUFRQSxFQUFLLE9BQVMzMUIsR0FBYTIxQixFQUFLLE1BQU0sR0FDdEQsSUFBSThXLEVBQUssU0FBUzlXLEVBQUssSUFBSyxFQUFFLEVBQUUsRUFBRytXLEVBQUssU0FBUy9XLEVBQUssSUFBSSxFQUFFLEVBQUUsRUFLOUQsSUFKR0EsRUFBSyxlQUFjQSxFQUFLLE1BQVMsQ0FBQ0EsRUFBSyxjQUFnQixHQUMxRCxPQUFPQSxFQUFLLElBQUssT0FBT0EsRUFBSyxJQUFLQSxFQUFLLE1BQVEsQ0FBQ0EsRUFBSyxNQUNsRCxDQUFDNFcsR0FBVzVXLEVBQUssUUFBUzRXLEVBQVUsR0FBTS9XLEdBQWNHLEVBQUssS0FBSyxHQUNyRS9PLEdBQVkrTyxDQUFJLEVBQ1Y4VyxHQUFRQyxHQUFNLy9HLEVBQVE4L0csR0FBTSxFQUFJL3ZDLEdBQUlpNUIsQ0FBSSxDQUM5QyxDQUNGLENBQ0EsU0FBU2dYLEdBQWtCM2xDLEVBQUlqK0MsRUFBaUIsQ0FFL0MsUUFESXprQyxFQUFJLENBQUMsUUFBUSxFQUFHb08sRUFDWnhVLEVBQUksRUFBR0EsR0FBSzZxQyxFQUFLLE9BQVEsRUFBRTdxQyxHQUM3QndVLEVBQU1xMkIsRUFBSzdxQyxDQUFDLEtBQ2pCb0csRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxNQUFPLEtBQU1rb0MsR0FBVXBySCxFQUFHd1UsQ0FBRyxDQUFDLEdBRXhELE9BQUFwTyxFQUFFQSxFQUFFLE1BQU0sRUFBSSxVQUNQQSxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUVBLFNBQVNpbkgsR0FBd0J4NUcsRUFBaUIsQ0FDakQsSUFBSXpOLEVBQUksQ0FBRSxLQUFNeU4sRUFBSyxNQUFNLGVBQWUsR0FBRyxDQUFBLEdBQUksQ0FBQyxDQUFDLEVBQ25ELE9BQU96TixDQUNSLENBQ0EsU0FBU3NvSCxHQUF3Qjc2RyxFQUFNaTFFLEVBQUkyUyxFQUFJdjFDLEVBQWdCLENBQzlELElBQUl0a0QsRUFBTSxPQUFPaVMsRUFBSyxLQUFPLFNBQVdBLEVBQUssSUFBTW8wRSxHQUFhcDBFLEVBQUssR0FBRyxFQUNwRTRuRixFQUFHLFdBQVVBLEVBQUcsU0FBWSxDQUFDLE9BQU8sQ0FBRSxDQUFBLEdBQ3RDQSxFQUFHLFNBQVMsUUFBT0EsRUFBRyxTQUFTLE1BQVEsSUFDM0MsSUFBSWt6QixFQUF5Qmx6QixFQUFHLFNBQVMsTUFDckN2M0QsRUFBUThqRCxHQUFhcG1GLENBQUcsRUFDekJzaUMsRUFBTSxFQUFFLEdBQUtBLEVBQU0sRUFBRSxJQUFLQSxFQUFNLEVBQUUsRUFBSThqRCxHQUFhYyxFQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBR2xuRixFQUFNcW1GLEdBQWEvakQsQ0FBSyxHQUMvRixRQUFRbGtDLEVBQUksRUFBR0EsRUFBSTJ1SCxFQUFNLE9BQVEsRUFBRTN1SCxFQUFHLENBQ3JDLElBQUloRSxFQUFPMnlILEVBQU0zdUgsQ0FBQyxFQUNsQixHQUFHaEUsRUFBSyxNQUFRLHlCQUNiQSxFQUFLLE9BQVNrcUQsRUFDakIsQ0FBQWxxRCxFQUFLLElBQU0sSUFBTXkvRixFQUFHLFdBQVd2MUMsQ0FBRyxFQUFJLEtBQU90a0QsRUFBSyxNQUNsRCxDQUNELE9BQUc1QixHQUFLMnVILEVBQU0sUUFBUUEsRUFBTSxLQUFLLENBQUUsS0FBTSx3QkFBeUIsTUFBT3pvRSxFQUFLLElBQUssSUFBTXUxQyxFQUFHLFdBQVd2MUMsQ0FBRyxFQUFJLEtBQU90a0QsQ0FBRyxDQUFHLEVBQ3BIc2hGLEdBQVUsYUFBYyxLQUFNLENBQUMsSUFBSXRoRixDQUFHLENBQUMsQ0FDL0MsQ0FJQSxJQUFJZ3RILEdBQWEsMENBQ2pCLFNBQVMzQixHQUF3QnA1RyxFQUFNNG5GLEVBQWtCLENBQ3BEQSxFQUFHLFFBQU9BLEVBQUcsTUFBUSxDQUFDLENBQUEsQ0FBRSxJQUMzQjVuRixFQUFLLE1BQU0rNkcsRUFBVSxHQUFHLENBQUUsR0FBRSxRQUFRLFNBQVMsRUFBYzV1SCxFQUFjLENBQ3pFLElBQUkrckQsRUFBTXkwQixHQUFZLENBQUMsRUFFbkJpYixFQUFHLE1BQU16N0YsQ0FBQyxJQUFHeTdGLEVBQUcsTUFBTXo3RixDQUFDLEVBQUksSUFFNUIsQ0FBQytyRCxFQUFJLFlBQVcwdkMsRUFBRyxNQUFNejdGLENBQUMsRUFBRSxLQUFPLENBQUMrckQsRUFBSSxXQUV4QysxQixHQUFhLzFCLEVBQUksV0FBVyxJQUFHMHZDLEVBQUcsTUFBTXo3RixDQUFDLEVBQUUsSUFBTSxHQUN0RCxDQUFFLENBQ0YsQ0FDQSxTQUFTNnVILEdBQXdCL2xDLEVBQUl2dEYsRUFBTTJxRCxFQUFLdTFDLEVBQWUsQ0FDOUQsSUFBSXF6QixFQUFTLENBQUMsZUFBZSxHQUFHLEVBRWhDLFNBQU1yekIsR0FBSSxDQUFFLEdBQUUsVUFBVSxJQUFJLE9BQU8sQ0FBQSxHQUFJLENBQUMsSUFBR3F6QixFQUFNLFlBQWNyekIsRUFBRyxTQUFTLE1BQU0sQ0FBQyxFQUFFLElBQU0sSUFBTSxLQUN6RnZZLEdBQVUsYUFBY0EsR0FBVSxZQUFhLEtBQU00ckMsQ0FBSyxFQUFHLENBQUEsQ0FBRSxDQUN2RSxDQUVBLFNBQVNDLEdBQWtCNW1GLEVBQWV2bUMsRUFBS2tuRixFQUFJdnRGLEVBQWdDLENBRWxGLEdBREc0c0MsRUFBSyxHQUFHMmdELEVBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQ2xuRixFQUFLdW1DLEVBQUssQ0FBQyxDQUFDLEVBQzFDQSxFQUFLLElBQU0sUUFBYSxPQUFPQSxFQUFLLEdBQU0sVUFBWUEsRUFBSyxJQUFNLEtBQU8sQ0FBQ0EsRUFBSyxFQUFHLE1BQU8sR0FDM0YsSUFBSTFqQixFQUFLLEdBQ0x1cUcsRUFBTzdtRixFQUFLLEVBQUc4bUYsRUFBTzltRixFQUFLLEVBQy9CLEdBQUdBLEVBQUssSUFBTSxJQUFLLE9BQU9BLEVBQUssRUFBQyxDQUMvQixJQUFLLElBQUsxakIsRUFBSzBqQixFQUFLLEVBQUksSUFBTSxJQUFLLE1BQ25DLElBQUssSUFBSzFqQixFQUFLLEdBQUcwakIsRUFBSyxFQUFHLE1BQzFCLElBQUssSUFBSzFqQixFQUFLOGpFLEdBQUtwZ0QsRUFBSyxDQUFDLEVBQUcsTUFDN0IsSUFBSyxJQUNENXNDLEdBQVFBLEVBQUssVUFBV2twQixFQUFLMjVELEdBQVVqMkMsRUFBSyxFQUFHLEVBQUUsRUFBRSxZQUFXLEdBRWhFQSxFQUFPcTJDLEdBQUlyMkMsQ0FBSSxFQUNmQSxFQUFLLEVBQUksSUFDVDFqQixFQUFLLElBQUkwakIsRUFBSyxFQUFJczFDLEdBQVFXLEdBQVVqMkMsRUFBSyxDQUFDLENBQUMsSUFFekMsT0FBT0EsRUFBSyxFQUFNLE1BQWFBLEVBQUssRUFBSXM4QixHQUFVLEVBQUUsR0FDdkQsTUFDRCxRQUFTaGdELEVBQUswakIsRUFBSyxFQUFHLEtBQ3RCLENBQ0QsSUFBSW5sQixFQUFJZ2dFLEdBQVMsSUFBSzNCLEdBQVU1OEQsQ0FBRSxDQUFDLEVBQUdyZSxFQUFLLENBQUMsRUFBRXhFLENBQUcsRUFFN0N1OEYsRUFBS3N0QixHQUFlbHdILEVBQUssUUFBUzRzQyxFQUFNNXNDLENBQUksRUFFaEQsT0FERzRpRyxJQUFPLElBQUcvM0YsRUFBRSxFQUFJKzNGLEdBQ1poMkQsRUFBSyxFQUFDLENBQ1osSUFBSyxJQUFLLE1BQ1YsSUFBSyxJQUFLL2hDLEVBQUUsRUFBSSxJQUFLLE1BQ3JCLElBQUssSUFBS0EsRUFBRSxFQUFJLElBQUssTUFDckIsSUFBSyxJQUFLQSxFQUFFLEVBQUksSUFBSyxNQUNyQixJQUFLLElBQUssTUFDVixRQUFTLEdBQUcraEMsRUFBSyxHQUFLLEtBQU0sQ0FBRSxPQUFPQSxFQUFLLEVBQUcsS0FBUSxDQUNwRCxHQUFHQSxFQUFLLEVBQUUsT0FBUyxNQUFPLE1BQU0sSUFBSSxNQUFNLDhDQUE4QyxFQUN4RixHQUFHNXNDLEdBQVFBLEVBQUssUUFBUyxDQUN4QnluQixFQUFJZ2dFLEdBQVMsSUFBSyxHQUFHa29DLEdBQVczdkgsRUFBSyxRQUFTNHNDLEVBQUssRUFBRzVzQyxFQUFLLFVBQVUsQ0FBQyxFQUN0RTZLLEVBQUUsRUFBSSxJQUFLLEtBQ1gsQ0FDREEsRUFBRSxFQUFJLE1BQU8sS0FDZCxDQUVELEdBREcraEMsRUFBSyxHQUFLNm1GLElBQVE3bUYsRUFBSyxFQUFJNm1GLEVBQU03bUYsRUFBSyxFQUFJOG1GLEdBQzFDLE9BQU85bUYsRUFBSyxHQUFLLFVBQVlBLEVBQUssRUFBRyxDQUN2QyxJQUFJdWhDLEVBQUt2aEMsRUFBSyxHQUFLQSxFQUFLLEVBQUUsTUFBTSxFQUFHdm1DLEVBQUksTUFBTSxHQUFLQSxFQUFNLENBQUMsRUFBRSxRQUFTLElBQUl1bUMsRUFBSyxDQUFDLEVBQUksS0FDbEZubEIsRUFBSWtnRSxHQUFVLElBQUs3QixHQUFVbDVDLEVBQUssQ0FBQyxFQUFHdWhDLENBQUUsR0FBS3ZoQyxFQUFLLEdBQUssS0FBT25sQixFQUFJLEdBQ2xFLENBQ0QsT0FBR21sQixFQUFLLEdBQUcyZ0QsRUFBRyxRQUFRLEVBQUUsS0FBSyxDQUFDbG5GLEVBQUt1bUMsRUFBSyxDQUFDLENBQUMsRUFDdkNBLEVBQUssSUFBRy9oQyxFQUFFLEdBQUssR0FDWDg4RSxHQUFVLElBQUtsZ0UsRUFBRzVjLENBQUMsQ0FDM0IsQ0FFQSxJQUFJK21ILEdBQWtDLFVBQVcsQ0FDaEQsSUFBSStCLEVBQVksb0JBQXFCQyxFQUFXLG1CQUM1QzdlLEVBQVMscUJBQXNCOGUsRUFBVSx5Q0FDekNDLEVBQVcsdUJBQ1hDLEVBQVVodEMsR0FBUyxHQUFHLEVBQUdpdEMsRUFBVWp0QyxHQUFTLEdBQUcsRUFFcEQsT0FBTyxTQUEyQmt0QyxFQUFrQi9wSCxFQUFHbEssRUFBTWtyRyxFQUFpQnVSLEVBQVFELEVBQVEsQ0FXN0YsUUFWSXR1QyxFQUFLLEVBQUcxb0MsRUFBSSxHQUFJa0gsRUFBMEIsQ0FBQSxFQUFJd25GLEVBQTBCLENBQUUsRUFBRXZwRSxFQUFJLEVBQUdsbUQsRUFBRSxFQUFHZ3BFLEVBQUcsRUFBRzFpRSxFQUFFLEdBQUl4SCxFQUNwR2l0RCxFQUFLMmpFLEVBQU8sRUFBR0MsRUFBTyxFQUN0QkMsRUFBTUMsRUFDTmxFLEVBQVEsRUFBR0MsRUFBUyxFQUNwQmtFLEVBQVksTUFBTSxRQUFRL1gsRUFBTyxNQUFNLEVBQUdyVixFQUMxQ3F0QixFQUFvQyxDQUFBLEVBQ3BDQyxHQUFVLENBQUEsRUFDVm5uQyxHQUFRLE1BQU0sUUFBUXBqRixDQUFDLEVBQ3ZCc2xDLEVBQTBCLENBQUEsRUFBSWtsRixHQUFTLENBQUEsRUFBSUMsRUFBVSxHQUNyREMsRUFBYSxDQUFDLENBQUM1MEgsRUFBSyxXQUNoQjYwSCxFQUFPWixFQUFNLE1BQU1MLENBQVEsRUFBR254QyxFQUFLLEVBQUdxeUMsRUFBVUQsRUFBSyxPQUFRcHlDLEdBQU1xeUMsRUFBUyxFQUFFcnlDLEVBQUksQ0FDekZqOUMsRUFBSXF2RixFQUFLcHlDLENBQUUsRUFBRSxLQUFJLEVBQ2pCLElBQUlzeUMsRUFBT3Z2RixFQUFFLE9BQ2IsR0FBR3V2RixJQUFTLEVBR1osS0FBSUMsR0FBVSxFQUNkQyxFQUFNLElBQUkvbUQsRUFBSyxFQUFHQSxFQUFLNm1ELEVBQU0sRUFBRTdtRCxFQUFJLE9BQTJCMW9DLEVBQUUwb0MsQ0FBRSxFQUFDLENBQ2xFLElBQUssSUFDSixHQUErQjFvQyxFQUFFMG9DLEVBQUcsQ0FBQyxHQUFLLElBQUssQ0FBRSxFQUFFQSxFQUFJLE1BQU0rbUQsQ0FBTyxDQUNwRSxHQUFHajFILEdBQVFBLEVBQUssV0FBWSxDQUkzQixHQUZBd3dELEVBQU15MEIsR0FBWXovQyxFQUFFLE1BQU13dkYsR0FBUTltRCxDQUFFLEVBQUcsRUFBSSxFQUMzQ2ltRCxFQUFPM2pFLEVBQUksR0FBSyxLQUFPLFNBQVNBLEVBQUksRUFBRyxFQUFFLEVBQUkyakUsRUFBSyxFQUFHQyxFQUFPLEdBQ3pEcDBILEVBQUssV0FBYUEsRUFBSyxVQUFZbTBILEVBQU0sU0FDNUNPLEdBQVMsQ0FBRSxFQUFFQyxFQUFVLEdBQ3BCbmtFLEVBQUksS0FBTW1rRSxFQUFVLEdBQU1ELEdBQU8sSUFBTSxXQUFXbGtFLEVBQUksRUFBRSxFQUFHa2tFLEdBQU8sSUFBTXRuQixHQUFNc25CLEdBQU8sR0FBRyxHQUN4RmxrRSxFQUFJLFFBQVUsTUFBT21rRSxFQUFVLEdBQU1ELEdBQU8sT0FBUyxJQUNyRGxrRSxFQUFJLGNBQWdCLE9BQVFta0UsRUFBVSxHQUFNRCxHQUFPLE1BQVEsQ0FBQ2xrRSxFQUFJLGNBQ2hFbWtFLElBQVNubEYsRUFBSzJrRixFQUFLLENBQUMsRUFBSU8sR0FDM0IsQ0FDRCxNQUNELElBQUssSUFBWU0sR0FBVTltRCxFQUFJLEtBQy9CLENBQ0QsR0FBRzhtRCxJQUFXOW1ELEVBQUksTUFHbEIsR0FGQTFkLEVBQU15MEIsR0FBWXovQyxFQUFFLE1BQU13dkYsR0FBUTltRCxDQUFFLEVBQUcsRUFBSSxFQUMzQ2ltRCxFQUFPM2pFLEVBQUksR0FBSyxLQUFPLFNBQVNBLEVBQUksRUFBRyxFQUFFLEVBQUkyakUsRUFBSyxFQUFHQyxFQUFPLEdBQ3pELEVBQUFwMEgsRUFBSyxXQUFhQSxFQUFLLFVBQVltMEgsR0FDdEMsQ0FBR2pwQixFQUFNLEVBQUUsRUFBSWlwQixFQUFPLElBQUdqcEIsRUFBTSxFQUFFLEVBQUlpcEIsRUFBTyxHQUN6Q2pwQixFQUFNLEVBQUUsRUFBSWlwQixFQUFPLElBQUdqcEIsRUFBTSxFQUFFLEVBQUlpcEIsRUFBTyxHQUV6Q24wSCxHQUFRQSxFQUFLLGFBQ2YwMEgsR0FBUyxDQUFFLEVBQUVDLEVBQVUsR0FDcEJua0UsRUFBSSxLQUFNbWtFLEVBQVUsR0FBTUQsR0FBTyxJQUFNLFdBQVdsa0UsRUFBSSxFQUFFLEVBQUdra0UsR0FBTyxJQUFNdG5CLEdBQU1zbkIsR0FBTyxHQUFHLEdBQ3hGbGtFLEVBQUksUUFBVSxNQUFPbWtFLEVBQVUsR0FBTUQsR0FBTyxPQUFTLElBQ3JEbGtFLEVBQUksY0FBZ0IsT0FBUW1rRSxFQUFVLEdBQU1ELEdBQU8sTUFBUSxDQUFDbGtFLEVBQUksY0FDaEVta0UsSUFBU25sRixFQUFLMmtGLEVBQUssQ0FBQyxFQUFJTyxLQUk1QmhvRixFQUFRbEgsRUFBRSxNQUFNMG9DLENBQUUsRUFBRSxNQUFNeWxELENBQVMsRUFDbkMsUUFBUXVCLEdBQVMsRUFBR0EsSUFBVXhvRixFQUFNLFFBQXFCQSxFQUFNd29GLEVBQU0sRUFBRSxLQUFNLEVBQUMsT0FBTyxDQUFDLEdBQUssSUFBL0MsRUFBRUEsR0FBUSxDQUV0RCxJQURBeG9GLEVBQVFBLEVBQU0sTUFBTXdvRixFQUFNLEVBQ3RCaG5ELEVBQUssRUFBR0EsR0FBTXhoQyxFQUFNLE9BQVEsRUFBRXdoQyxFQUVqQyxHQURBMW9DLEVBQUlrSCxFQUFNd2hDLENBQUUsRUFBRSxLQUFJLEVBQ2Yxb0MsRUFBRSxTQUFXLEVBR2hCLElBRkEwdUYsRUFBTzF1RixFQUFFLE1BQU11dkUsQ0FBTSxFQUFHcHFELEVBQU11akIsRUFBSXpwRSxFQUFFLEVBQUdncEUsRUFBRyxFQUMxQ2pvQyxFQUFJLE9BQVNBLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksSUFBTUEsRUFDdEMwdUYsR0FBUSxNQUFRQSxFQUFLLFNBQVcsRUFBRyxDQUVyQyxJQURBdnBFLEVBQU0sRUFBRzUvQyxFQUFFbXBILEVBQUssQ0FBQyxFQUNienZILEVBQUUsRUFBR0EsR0FBS3NHLEVBQUUsUUFDWCxHQUFBMGlFLEVBQUcxaUUsRUFBRSxXQUFXdEcsQ0FBQyxFQUFFLElBQU0sR0FBS2dwRSxFQUFLLElBRGhCLEVBQUVocEUsRUFFekJrbUQsRUFBTSxHQUFHQSxFQUFNOGlCLEVBRWhCLEVBQUU5aUIsRUFDRnlwRSxFQUFPenBFLENBQ1AsS0FBTSxFQUFFeXBFLEVBQ1QsSUFBSTN2SCxFQUFJLEVBQUdBLEdBQUsrZ0MsRUFBRSxRQUFnQkEsRUFBRSxXQUFXL2dDLENBQUMsSUFBTSxHQUE1QixFQUFFQSxFQUFHLENBTy9CLEdBUGlFLEVBQUVBLEVBQ25FK3JELEVBQU15MEIsR0FBWXovQyxFQUFFLE1BQU0sRUFBRS9nQyxDQUFDLEVBQUcsRUFBSSxFQUNoQytyRCxFQUFJLElBQUdBLEVBQUksRUFBSW03QixHQUFZLENBQUMsRUFBRXdvQyxFQUFLLEVBQUcsRUFBRUMsQ0FBSSxDQUFDLEdBQ2pEcnBILEVBQUl5NkIsRUFBRSxNQUFNL2dDLENBQUMsRUFDYmxCLEVBQUssQ0FBQyxFQUFFLEVBQUUsR0FFTjJ3SCxFQUFLbnBILEVBQUUsTUFBTWdwSCxDQUFPLElBQUssTUFBOEJHLEVBQUssQ0FBQyxJQUFNLEtBQUkzd0gsRUFBRSxFQUFFa2lGLEdBQVl5dUMsRUFBSyxDQUFDLENBQUMsR0FDL0ZsMEgsRUFBSyxZQUFhLENBQ3BCLElBQUlrMEgsRUFBS25wSCxFQUFFLE1BQU1pcEgsQ0FBTyxJQUFLLE1BQThCRSxFQUFLLENBQUMsSUFBTSxJQUl0RSxHQUZBM3dILEVBQUUsRUFBRWtpRixHQUFZcUIsR0FBU290QyxFQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxRQUFTO0FBQUEsQ0FBSSxFQUNwRGwwSCxFQUFLLE9BQU11RCxFQUFFLEVBQUl5akgsR0FBTXpqSCxFQUFFLENBQUMsR0FDYzJ3SCxFQUFLLENBQUMsRUFBRSxRQUFRLFdBQVcsRUFBSSxHQUMxRTN3SCxFQUFFLEdBQUt3SCxFQUFFLE1BQU0rb0gsQ0FBUSxHQUFHLENBQUEsR0FBSSxDQUFDLEVBQzVCdndILEVBQUUsRUFBRSxRQUFRLEdBQUcsRUFBSSxJQUFJaXhILEVBQU8sS0FBSyxDQUFDM25DLEdBQWtCdHBGLEVBQUUsQ0FBQyxFQUFHQSxFQUFFLENBQUMsQ0FBQyxVQUNqQjJ3SCxFQUFLLENBQUMsRUFBRSxRQUFRLFlBQVksRUFBSSxHQUFJLENBRXRGSSxFQUFPcnZDLEdBQVlpdkMsRUFBSyxDQUFDLENBQUMsRUFDMUIsSUFBSWlCLEdBQU8xdkMsR0FBWXFCLEdBQVNvdEMsRUFBSyxDQUFDLENBQUMsQ0FBQyxFQUNwQ2wwSCxFQUFLLE9BQU1tMUgsR0FBT25PLEdBQU1tTyxFQUFJLEdBQ2hDVixHQUFRLFNBQVNILEVBQUssR0FBSSxFQUFFLENBQUMsRUFBSSxDQUFDQSxFQUFNYSxHQUFNM2tFLEVBQUksQ0FBQyxDQUNuRCxPQUNTMGpFLEVBQUtucEgsRUFBRSxNQUFNLFlBQVksS0FDbkN1cEgsRUFBT3J2QyxHQUFZaXZDLEVBQUssQ0FBQyxDQUFDLEVBQ3ZCTyxHQUFRSCxFQUFLLEVBQUUsSUFBRy93SCxFQUFFLEVBQUl3akgsR0FBbUIwTixHQUFRSCxFQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUdHLEdBQVFILEVBQUssRUFBRSxFQUFFLENBQUMsRUFBYzlqRSxFQUFJLENBQUMsSUFHekcsSUFBSTRrRSxHQUFPNW9DLEdBQVloOEIsRUFBSSxDQUFDLEVBQzVCLElBQUkvckQsRUFBSSxFQUFHQSxFQUFJK3ZILEVBQU8sT0FBUSxFQUFFL3ZILEVBQzVCMndILEdBQUssR0FBS1osRUFBTy92SCxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBSzJ3SCxHQUFLLEdBQUtaLEVBQU8vdkgsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQ3REMndILEdBQUssR0FBS1osRUFBTy92SCxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBSzJ3SCxHQUFLLEdBQUtaLEVBQU8vdkgsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQ3pEbEIsRUFBRSxFQUFJaXhILEVBQU8vdkgsQ0FBQyxFQUFFLENBQUMsRUFDcEIsQ0FFRCxHQUFHK3JELEVBQUksR0FBSyxNQUFRanRELEVBQUUsSUFBTSxPQUMzQixHQUFHQSxFQUFFLEdBQUtBLEVBQUUsRUFDWEEsRUFBRSxFQUFJLEVBQUdBLEVBQUUsRUFBSSxZQUNMcXhILEVBQ05yeEgsRUFBRSxFQUFJLFFBRFksZUFHbkJBLEVBQUUsRUFBSWl0RCxFQUFJLEdBQUssSUFJcEIsT0FIRzA2QyxFQUFNLEVBQUUsRUFBSWtwQixJQUFNbHBCLEVBQU0sRUFBRSxFQUFJa3BCLEdBQzlCbHBCLEVBQU0sRUFBRSxFQUFJa3BCLElBQU1scEIsRUFBTSxFQUFFLEVBQUlrcEIsR0FFMUI3d0gsRUFBRSxFQUFDLENBQ1QsSUFBSyxJQUNKLEdBQUdBLEVBQUUsR0FBSyxJQUFNQSxFQUFFLEdBQUssS0FBTSxDQUM1QixHQUFHLENBQUNxeEgsRUFBWSxTQUNoQnJ4SCxFQUFFLEVBQUksR0FDTixNQUFNQSxFQUFFLEVBQUksV0FBV0EsRUFBRSxDQUFDLEVBQzNCLE1BQ0QsSUFBSyxJQUNKLEdBQUcsT0FBT0EsRUFBRSxFQUFLLElBQWEsQ0FDN0IsR0FBRyxDQUFDcXhILEVBQVksU0FDaEJyeEgsRUFBRSxFQUFJLEdBQ1osTUFDTTh3SCxFQUFPdnpCLEdBQUssU0FBU3Y5RixFQUFFLEVBQUcsRUFBRSxDQUFDLEVBQzdCQSxFQUFFLEVBQUk4d0gsRUFBSyxFQUNYOXdILEVBQUUsRUFBSTh3SCxFQUFLLEVBQ1JyMEgsRUFBSyxXQUFVdUQsRUFBRSxFQUFJOHdILEVBQUssR0FFOUIsTUFDRCxJQUFLLE1BQ0o5d0gsRUFBRSxFQUFJLElBQ05BLEVBQUUsRUFBS0EsRUFBRSxHQUFHLEtBQVF1akYsR0FBU3ZqRixFQUFFLENBQUMsRUFBSSxHQUNqQ3ZELEVBQUssV0FBVXVELEVBQUUsRUFBSTBpRixHQUFXMWlGLEVBQUUsQ0FBQyxHQUN0QyxNQUNELElBQUssWUFDSjJ3SCxFQUFPbnBILEVBQUUsTUFBTThvSCxDQUFPLEVBQ3RCdHdILEVBQUUsRUFBSSxJQUNIMndILEdBQVEsT0FBU0csRUFBT3hlLEdBQVNxZSxFQUFLLENBQUMsQ0FBQyxJQUMxQzN3SCxFQUFFLEVBQUk4d0gsRUFBSyxFQUNScjBILEVBQUssV0FBVXVELEVBQUUsRUFBSTh3SCxFQUFLLElBQ3ZCOXdILEVBQUUsRUFBSSxHQUNiLE1BQ0QsSUFBSyxJQUFLQSxFQUFFLEVBQUlnakYsR0FBYWhqRixFQUFFLENBQUMsRUFBRyxNQUNuQyxJQUFLLElBQ0R2RCxFQUFLLFVBQVd1RCxFQUFFLEVBQUlzL0UsR0FBVXQvRSxFQUFFLEVBQUcsQ0FBQyxHQUNsQ0EsRUFBRSxFQUFJMitFLEdBQVFXLEdBQVV0L0UsRUFBRSxFQUFHLENBQUMsQ0FBQyxFQUFHQSxFQUFFLEVBQUksS0FDL0MsTUFFRCxJQUFLLEtBQ0QsQ0FBQ3ZELEdBQVFBLEVBQUssV0FBYSxNQUFPdUQsRUFBRSxFQUFJQSxFQUFFLEdBQzdDQSxFQUFFLEVBQUlzdkYsR0FBTXR2RixFQUFFLENBQUMsRUFBRyxLQUNuQixDQWVELEdBYkE2c0gsRUFBUUMsRUFBUyxFQUNqQmxwQixFQUFLLEtBQ0ZvdEIsR0FBYS9qRSxFQUFJLElBQU0sU0FDekIyMkMsRUFBS3FWLEVBQU8sT0FBT2hzRCxFQUFJLENBQUMsRUFDckIyMkMsR0FBTSxPQUNMQSxFQUFHLFVBQVksT0FBTWlwQixFQUFRanBCLEVBQUcsVUFDaENubkcsRUFBSyxZQUNKbW5HLEVBQUcsUUFBVSxPQUFNa3BCLEVBQVNscEIsRUFBRyxVQUlyQ2dwQixHQUFZNXNILEVBQUc2c0gsRUFBT0MsRUFBUXJ3SCxFQUFNeThHLEVBQVFELENBQU0sRUFDL0N4OEcsRUFBSyxXQUFhdTBILEdBQWFoeEgsRUFBRSxHQUFLLEtBQU91ckUsR0FBWTVGLEdBQVVrbkQsQ0FBSyxDQUFDLElBQUs3c0gsRUFBRSxFQUFJLElBQUtBLEVBQUUsRUFBSSsrRSxHQUFRLytFLEVBQUUsQ0FBQyxHQUMxR2l0RCxFQUFJLElBQU14d0QsRUFBSyxPQUFRLENBQ3pCLElBQUl1aUgsSUFBTXZpSCxFQUFLLE9BQU8sTUFBTSxDQUFFLEdBQUUsQ0FBQ3d3RCxFQUFJLEdBQUcsQ0FBQyxFQUN0Qyt4RCxJQUFNQSxHQUFHLE1BQVEsV0FBVWgvRyxFQUFFLEVBQUksR0FDcEMsQ0FDRCxHQUFHK3BGLEdBQU8sQ0FDVCxJQUFJK25DLEVBQUs3b0MsR0FBWWg4QixFQUFJLENBQUMsRUFDdEJ0bUQsRUFBRW1ySCxFQUFHLENBQUMsSUFBR25ySCxFQUFFbXJILEVBQUcsQ0FBQyxFQUFJLElBQ3ZCbnJILEVBQUVtckgsRUFBRyxDQUFDLEVBQUVBLEVBQUcsQ0FBQyxFQUFJOXhILENBQ2hCLE1BQU0yRyxFQUFFc21ELEVBQUksQ0FBQyxFQUFJanRELElBRW5CLENBQ0Vpc0MsRUFBSyxPQUFTLElBQUd0bEMsRUFBRSxPQUFPLEVBQUlzbEMsRUFDbEMsQ0FBSSxFQUFBLEVBRUosU0FBUzhsRixHQUFrQi9uQyxFQUFrQnZ0RixFQUFNMnFELEVBQWdCdTFDLEVBQXdDLENBQzFHLElBQUlyMUYsRUFBc0IsQ0FBQSxFQUFJYixFQUFzQixHQUFJMitCLEVBQVFra0QsR0FBa0JVLEVBQUcsTUFBTSxDQUFDLEVBQUczZ0QsRUFBSyxHQUFJdm1DLEVBQUs0bUUsRUFBSyxHQUFJMzlCLEVBQXlCLENBQUEsRUFBSXlqQyxFQUFFLEVBQUdOLEVBQUUsRUFBR2pqQyxFQUFPKzlDLEVBQUcsT0FBTyxFQUMxS0QsRUFBUSxNQUFNLFFBQVFDLENBQUUsRUFDeEJnb0MsRUFBVSxDQUFDLEVBQUV0b0QsQ0FBRSxFQUFZM2hFLEVBQWlCaXBDLEVBQVMsR0FDekQsSUFBSWsrQixFQUFJOXBDLEVBQU0sRUFBRSxFQUFHOHBDLEdBQUs5cEMsRUFBTSxFQUFFLEVBQUcsRUFBRThwQyxFQUFHbmpDLEVBQUttakMsQ0FBQyxFQUFJc1osR0FBV3RaLENBQUMsRUFDOUQsSUFBSU0sRUFBSXBxQyxFQUFNLEVBQUUsRUFBR29xQyxHQUFLcHFDLEVBQU0sRUFBRSxFQUFHLEVBQUVvcUMsRUFBRyxDQUd2QyxJQUZBL29FLEVBQUksQ0FBQSxFQUNKaWpFLEVBQUsrZSxHQUFXalosQ0FBQyxFQUNiTixFQUFJOXBDLEVBQU0sRUFBRSxFQUFHOHBDLEdBQUs5cEMsRUFBTSxFQUFFLEVBQUcsRUFBRThwQyxFQUFHLENBQ3ZDcHNFLEVBQU1pcEMsRUFBS21qQyxDQUFDLEVBQUl4RixFQUNoQixJQUFJdW9ELEVBQVFsb0MsR0FBU0MsRUFBR3hhLENBQUMsR0FBRyxDQUFFLEdBQUVOLENBQUMsRUFBRzhhLEVBQUdsbkYsQ0FBRyxFQUN2Q212SCxJQUFVLFNBQ1Q1b0YsRUFBTzRtRixHQUFrQmdDLEVBQU9udkgsRUFBS2tuRixFQUFJdnRGLENBQWEsSUFBTSxNQUFNZ0ssRUFBRSxLQUFLNGlDLENBQUksQ0FDakYsRUFDRTVpQyxFQUFFLE9BQVMsR0FBTXdsQyxHQUFRQSxFQUFLdWpDLENBQUMsS0FDakN3aUQsRUFBVSxDQUFDLEVBQUV0b0QsQ0FBRSxFQUNaejlCLEdBQVFBLEVBQUt1akMsQ0FBQyxJQUNoQnpuRSxFQUFNa2tDLEVBQUt1akMsQ0FBQyxFQUNUem5FLEVBQUksU0FBUWlxSCxFQUFPLE9BQVMsR0FDL0JoaEYsRUFBUyxHQUNOanBDLEVBQUksSUFBS2lwQyxFQUFTdzVELEdBQU16aUcsRUFBSSxHQUFHLEVBQzFCQSxFQUFJLE1BQUtpcEMsRUFBU2pwQyxFQUFJLEtBQzNCaXBDLEVBQVMsS0FBTWdoRixFQUFPLEdBQUtoaEYsRUFBUWdoRixFQUFPLGFBQWUsR0FDekRqcUgsRUFBSSxRQUFTaXFILEVBQU8sYUFBZWpxSCxFQUFJLFFBRTNDVCxFQUFFQSxFQUFFLE1BQU0sRUFBSzg4RSxHQUFVLE1BQU8zOUUsRUFBRSxLQUFLLEVBQUUsRUFBR3VySCxDQUFNLEVBRW5ELENBQ0QsR0FBRy9sRixFQUFNLEtBQU11akMsRUFBSXZqQyxFQUFLLE9BQVEsRUFBRXVqQyxFQUM5QnZqQyxHQUFRQSxFQUFLdWpDLENBQUMsSUFDaEJ3aUQsRUFBVSxDQUFDLEVBQUV4aUQsRUFBRSxDQUFDLEVBQ2hCem5FLEVBQU1ra0MsRUFBS3VqQyxDQUFDLEVBQ1R6bkUsRUFBSSxTQUFRaXFILEVBQU8sT0FBUyxHQUMvQmhoRixFQUFTLEdBQ0xqcEMsRUFBSSxJQUFLaXBDLEVBQVN3NUQsR0FBTXppRyxFQUFJLEdBQUcsRUFDMUJBLEVBQUksTUFBS2lwQyxFQUFTanBDLEVBQUksS0FDM0JpcEMsRUFBUyxLQUFNZ2hGLEVBQU8sR0FBS2hoRixFQUFRZ2hGLEVBQU8sYUFBZSxHQUN6RGpxSCxFQUFJLFFBQVNpcUgsRUFBTyxhQUFlanFILEVBQUksT0FDM0NULEVBQUVBLEVBQUUsTUFBTSxFQUFLODhFLEdBQVUsTUFBTyxHQUFJNHRDLENBQU0sR0FHNUMsT0FBTzFxSCxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUVBLFNBQVM0cUgsR0FBYTlxRSxFQUFnQjNxRCxFQUFNa2dHLEVBQWlCdE0sRUFBaUIsQ0FDN0UsSUFBSS9vRixFQUFJLENBQUM2NUUsR0FBWWlELEdBQVUsWUFBYSxLQUFNLENBQ2pELE1BQVNPLEdBQVcsQ0FBQyxFQUNyQixVQUFXRCxHQUFNLENBQ2pCLENBQUEsQ0FBQyxFQUNFLzlFLEVBQUlnMkYsRUFBRyxXQUFXdjFDLENBQUcsRUFBR3ltRCxFQUFPLEVBQUdza0IsRUFBUSxHQUMxQ25vQyxFQUFLMlMsRUFBRyxPQUFPaDJGLENBQUMsRUFDakJxakYsR0FBTSxPQUFNQSxFQUFLLElBQ3BCLElBQUlsbkYsRUFBTWtuRixFQUFHLE1BQU0sR0FBSyxLQUNwQjVrRCxFQUFRa2tELEdBQWtCeG1GLENBQUcsRUFDakMsR0FBR3NpQyxFQUFNLEVBQUUsRUFBSSxPQUFVQSxFQUFNLEVBQUUsRUFBSSxRQUFTLENBQzdDLEdBQUczb0MsRUFBSyxJQUFLLE1BQU0sSUFBSSxNQUFNLFNBQVdxRyxFQUFNLHFDQUFxQyxFQUNuRnNpQyxFQUFNLEVBQUUsRUFBSSxLQUFLLElBQUlBLEVBQU0sRUFBRSxFQUFHLEtBQU0sRUFDdENBLEVBQU0sRUFBRSxFQUFJLEtBQUssSUFBSUEsRUFBTSxFQUFFLEVBQUcsT0FBTyxFQUN2Q3RpQyxFQUFNcW1GLEdBQWEvakQsQ0FBSyxDQUN4QixDQUNHaXJELElBQU1BLEVBQU8sSUFDakJyRyxFQUFHLFdBQVcsRUFBSSxHQUNsQixJQUFJb29DLEVBQVcsQ0FBQSxFQUVmdkQsR0FBcUI3a0MsRUFBSTJTLEVBQUl2MUMsRUFBSzNxRCxFQUFNNkssQ0FBQyxFQUV6Q0EsRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxZQUFhLEtBQU0sQ0FBQyxJQUFPdGhGLENBQUcsQ0FBQyxFQUV4RHdFLEVBQUVBLEVBQUUsTUFBTSxFQUFJeW9ILEdBQXdCL2xDLEVBQUl2dEYsRUFBTTJxRCxFQUFLdTFDLENBQUUsRUFHcERsZ0csRUFBSyxjQUFhNkssRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxnQkFBaUIsS0FBTSxDQUNwRSxpQkFBaUIzbkYsRUFBSyxZQUFZLGtCQUFrQixLQUNwRCxhQUFhQSxFQUFLLFlBQVksY0FBYyxLQUM1QyxnQkFBZ0JBLEVBQUssWUFBWSxpQkFBaUIsR0FDbEQsQ0FBQSxHQUVFdXRGLEVBQUcsT0FBTyxHQUFLLE1BQVFBLEVBQUcsT0FBTyxFQUFFLE9BQVMsSUFBRzFpRixFQUFFQSxFQUFFLE1BQU0sRUFBS3FvSCxHQUFrQjNsQyxFQUFJQSxFQUFHLE9BQU8sQ0FBQyxHQUVsRzFpRixFQUFFdW1HLEVBQU92bUcsRUFBRSxNQUFNLEVBQUksZUFDckIwaUYsRUFBRyxRQUFRLEVBQUksR0FDWkEsRUFBRyxNQUFNLEdBQUssT0FDaEJtb0MsRUFBUUosR0FBa0IvbkMsRUFBSXZ0RixDQUFtQixFQUM5QzAxSCxFQUFNLE9BQVMsSUFBRzdxSCxFQUFFQSxFQUFFLE1BQU0sRUFBSzZxSCxJQUVsQzdxSCxFQUFFLE9BQU91bUcsRUFBSyxJQUFLdm1HLEVBQUVBLEVBQUUsTUFBTSxFQUFLLGVBQWlCQSxFQUFFdW1HLENBQUksRUFBRXZtRyxFQUFFdW1HLENBQUksRUFBRSxRQUFRLEtBQUssR0FBRyxHQUluRjdqQixFQUFHLFVBQVUsSUFBRzFpRixFQUFFQSxFQUFFLE1BQU0sRUFBSTZuSCxHQUF3Qm5sQyxFQUFHLFVBQVUsQ0FBQyxHQUtwRUEsRUFBRyxhQUFhLEdBQUssT0FBTTFpRixFQUFFQSxFQUFFLE1BQU0sRUFBSXNvSCxHQUF3QjVsQyxFQUFHLGFBQWEsRUFBR0EsRUFBSTJTLEVBQUl2MUMsQ0FBRyxHQU0vRjRpQyxFQUFHLFNBQVMsR0FBSyxNQUFRQSxFQUFHLFNBQVMsRUFBRSxPQUFTLElBQUcxaUYsRUFBRUEsRUFBRSxNQUFNLEVBQUtzbkgsR0FBb0I1a0MsRUFBRyxTQUFTLENBQUMsR0FNdEcsSUFBSXFvQyxFQUFPLEdBQUkvaEMsRUFBS0ssRUFBTSxHQUMxQixPQUFVM0csRUFBRyxRQUFRLEVBQWEsT0FBUyxJQUMxQzFpRixFQUFFQSxFQUFFLE1BQU0sRUFBSSxlQUNQMGlGLEVBQUcsUUFBUSxFQUFhLFFBQVEsU0FBUzdnRSxFQUFHLENBQzlDQSxFQUFFLENBQUMsRUFBRSxTQUNUbW5FLEVBQU8sQ0FBQyxJQUFNbm5FLEVBQUUsQ0FBQyxDQUFDLEVBQ2ZBLEVBQUUsQ0FBQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUssTUFDM0J3bkUsRUFBTUQsR0FBU0wsRUFBTSxHQUFJOU4sR0FBVXA1RCxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxPQUFRLEVBQUUsRUFBRzhtRSxHQUFLLEtBQUssRUFDL0VLLEVBQUksTUFBTSxFQUFJLE1BQU1LLElBRWpCMGhDLEVBQU9scEcsRUFBRSxDQUFDLEVBQUUsT0FBTyxRQUFRLEdBQUcsR0FBSyxLQUFJbW5FLEVBQUksU0FBVy9OLEdBQVVwNUQsRUFBRSxDQUFDLEVBQUUsT0FBTyxNQUFNa3BHLEVBQUssQ0FBQyxDQUFDLEdBQzFGbHBHLEVBQUUsQ0FBQyxFQUFFLFVBQVNtbkUsRUFBSSxRQUFVL04sR0FBVXA1RCxFQUFFLENBQUMsRUFBRSxPQUFPLEdBQ3JEN2hCLEVBQUVBLEVBQUUsTUFBTSxFQUFJODhFLEdBQVUsWUFBWSxLQUFLa00sQ0FBRyxFQUMvQyxDQUFHLEVBQ0RocEYsRUFBRUEsRUFBRSxNQUFNLEVBQUksaUJBRWYsT0FBTzBpRixFQUFHLFFBQVEsRUFJZkEsRUFBRyxVQUFVLEdBQUssT0FBTTFpRixFQUFFQSxFQUFFLE1BQU0sRUFBS2dvSCxHQUFxQnRsQyxFQUFHLFVBQVUsQ0FBQyxJQVMxRSxDQUFDdnRGLEdBQVFBLEVBQUssVUFBYUEsRUFBSyxVQUFhLFFBQVU2SyxFQUFFQSxFQUFFLE1BQU0sRUFBSTQ4RSxHQUFTLGdCQUFpQkUsR0FBVSxlQUFnQixLQUFNLENBQUMsbUJBQW1CLEVBQUcsTUFBTXRoRixDQUFHLENBQUMsQ0FBQyxHQUlqS3N2SCxFQUFTLE9BQVMsSUFDcEJ6aEMsRUFBTUQsR0FBU0wsRUFBTSxHQUFJLHVCQUF5QmpwQyxFQUFJLEdBQUssT0FBUTZvQyxHQUFLLElBQUksRUFDNUUzb0YsRUFBRUEsRUFBRSxNQUFNLEVBQUk4OEUsR0FBVSxVQUFXLEtBQU0sQ0FBQyxPQUFPLE1BQVF1TSxDQUFHLENBQUMsRUFDN0QzRyxFQUFHLFVBQVUsRUFBSW9vQyxHQUdmcG9DLEVBQUcsV0FBVyxFQUFFLE9BQVMsSUFDM0IyRyxFQUFNRCxHQUFTTCxFQUFNLEdBQUksMEJBQTRCanBDLEVBQUksR0FBSyxPQUFRNm9DLEdBQUssR0FBRyxFQUM5RTNvRixFQUFFQSxFQUFFLE1BQU0sRUFBSTg4RSxHQUFVLGdCQUFpQixLQUFNLENBQUMsT0FBTyxNQUFRdU0sQ0FBRyxDQUFDLEVBQ25FM0csRUFBRyxTQUFTLEVBQUkyRyxHQVdkcnBGLEVBQUUsT0FBTyxJQUFLQSxFQUFFQSxFQUFFLE1BQU0sRUFBSyxlQUFpQkEsRUFBRSxDQUFDLEVBQUVBLEVBQUUsQ0FBQyxFQUFFLFFBQVEsS0FBSyxHQUFHLEdBQ3BFQSxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUdBLFNBQVNnckgsR0FBZ0J2OUcsRUFBTW1aLEVBQVEsQ0FDdEMsSUFBSXNaLEVBQUssQ0FBQSxFQUNMMG9DLEVBQU1uN0QsRUFBSyxFQUFJbVosRUFDbkJzWixFQUFFLEVBQUl6eUIsRUFBSyxXQUFXLENBQUMsRUFDdkJBLEVBQUssR0FBSyxFQUNWLElBQUk4b0YsRUFBUTlvRixFQUFLLFdBQVcsQ0FBQyxFQUM3QkEsRUFBSyxHQUFLLEVBQ1YsSUFBSWk3RCxFQUFRajdELEVBQUssV0FBVyxDQUFDLEVBQzdCLE9BQUFBLEVBQUssRUFBSW03RCxFQUNORixFQUFRLElBQU14b0MsRUFBRSxNQUFRd29DLEVBQVEsR0FDaENBLEVBQVEsS0FBTXhvQyxFQUFFLE9BQVMsSUFDekJ3b0MsRUFBUSxLQUFNeG9DLEVBQUUsSUFBTXEyRCxFQUFRLElBQzFCcjJELENBQ1IsQ0FDQSxTQUFTK3FGLEdBQWdCL2lELEVBQWNwcUMsRUFBTzRrRCxFQUFJLENBQ2pELElBQUkxaUYsRUFBSXVyRSxHQUFRLEdBQU8sRUFDbkI5cUUsR0FBT2lpRixFQUFHLE9BQU8sR0FBRyxJQUFJeGEsQ0FBQyxHQUFHLEdBQ2hDbG9FLEVBQUUsWUFBWSxFQUFHa29FLENBQUMsRUFFbEJsb0UsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUVsQixJQUFJdTJGLEVBQVEsSUFDVDkxRixFQUFJLElBQUs4MUYsRUFBUTJNLEdBQU16aUcsRUFBSSxHQUFHLEVBQUksR0FDN0JBLEVBQUksTUFBSzgxRixFQUFROTFGLEVBQUksSUFBTSxJQUNuQ1QsRUFBRSxZQUFZLEVBQUd1MkYsQ0FBSyxFQUV0QnYyRixFQUFFLFlBQVksRUFBRyxDQUFDLEVBRWxCLElBQUkwb0UsRUFBUSxFQUNUam9FLEVBQUksUUFBT2lvRSxHQUFTam9FLEVBQUksT0FDeEJBLEVBQUksU0FBUWlvRSxHQUFTLEtBQ3JCam9FLEVBQUksS0FBT0EsRUFBSSxPQUFLaW9FLEdBQVMsSUFDaEMxb0UsRUFBRSxZQUFZLEVBQUcwb0UsQ0FBSyxFQUV0QjFvRSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBR2xCLElBQUlrckgsRUFBVyxFQUFHQyxFQUFNbnJILEVBQUUsRUFDMUJBLEVBQUUsR0FBSyxFQUdQLFFBRElvckgsRUFBUSxDQUFDLEVBQUVsakQsRUFBRyxFQUFFLENBQUMsRUFDYnR1RSxFQUFJLEVBQUdBLEVBQUksR0FBSSxFQUFFQSxFQUN4QixHQUFJLEVBQUFra0MsRUFBTSxFQUFFLEVBQU1sa0MsRUFBRSxHQUFNLElBQVNra0MsRUFBTSxFQUFFLEVBQUtsa0MsR0FBSyxJQUVyRCxTQURJeXhILEVBQVEsR0FBSTU0RSxFQUFPLEdBQ2YrbkIsRUFBSzVnRSxHQUFHLEdBQUs0Z0UsRUFBTTVnRSxFQUFFLEdBQUksR0FBSyxFQUFFNGdFLEVBQUcsQ0FDMUM0d0QsRUFBTSxFQUFJNXdELEVBQ1YsSUFBSXo0QixFQUFPLE1BQU0sUUFBUTJnRCxDQUFFLEdBQUtBLEVBQUcwb0MsRUFBTSxDQUFDLEdBQUcsQ0FBRSxHQUFFQSxFQUFNLENBQUMsRUFBSTFvQyxFQUFHNUIsR0FBWXNxQyxDQUFLLENBQUMsRUFDOUVycEYsSUFBV3NwRixFQUFRLElBQUdBLEVBQVE3d0QsR0FBRy9uQixFQUFPK25CLEVBQzNDLENBQ0U2d0QsRUFBUSxJQUNYLEVBQUVILEVBQ0ZsckgsRUFBRSxZQUFZLEVBQUdxckgsQ0FBSyxFQUN0QnJySCxFQUFFLFlBQVksRUFBR3l5QyxDQUFJLEdBR3RCLElBQUk1d0IsRUFBSTdoQixFQUFFLEVBQ1YsT0FBQUEsRUFBRSxFQUFJbXJILEVBQ05uckgsRUFBRSxZQUFZLEVBQUdrckgsQ0FBUSxFQUN6QmxySCxFQUFFLEVBQUk2aEIsRUFFQzdoQixFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUNBLFNBQVNzckgsR0FBaUI3cUMsRUFBSWlDLEVBQUk1a0QsRUFBT29xQyxFQUFHLENBQzNDLElBQUlsb0UsRUFBSWlySCxHQUFnQi9pRCxFQUFHcHFDLEVBQU80a0QsQ0FBRSxHQUNoQzFpRixFQUFFLE9BQVMsS0FBUTBpRixFQUFHLE9BQU8sR0FBRyxDQUFBLEdBQUl4YSxDQUFDLElBQUdzWSxHQUFhQyxFQUFJLEVBQXdCemdGLENBQUMsQ0FDdkYsQ0FHQSxJQUFJdXJILEdBQWlCam1DLEdBQ2pCa21DLEdBQWlCam1DLEdBR3JCLFNBQVNrbUMsSUFBdUMsQ0FDaEQsQ0FJQSxTQUFTQyxHQUFnQmorRyxFQUFNbVosRUFBUSxDQUN0QyxJQUFJc1osRUFBSSxDQUFBLEVBQ0puZ0MsRUFBSTBOLEVBQUtBLEVBQUssQ0FBQyxFQUFHLFFBQUVBLEVBQUssRUFDN0J5eUIsRUFBRSxNQUFRLEVBQUVuZ0MsRUFBSSxJQUNoQm1nQyxFQUFFLEtBQVEsRUFBRW5nQyxFQUFJLEtBRWhCME4sRUFBSyxHQUFLLEdBQ1Z5eUIsRUFBRSxLQUFPcWtELEdBQW1COTJFLENBQWlCLEVBQ3RDeXlCLENBQ1IsQ0FDQSxTQUFTeXJGLEdBQWdCanhGLEVBQUtvbUMsRUFBTTlnRSxFQUFHLENBQ25DQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxHQUFHLEVBQUU3d0MsRUFBSSxNQUFNLEdBQ3pDLElBQUkzNkIsRUFBSSxJQUNMK2dFLElBQ0NBLEVBQUssUUFBTy9nRSxHQUFLLEtBQ2pCK2dFLEVBQUssT0FBTy9nRSxHQUFLLE9BRXJCQyxFQUFFLFlBQVksRUFBR0QsQ0FBQyxFQUNsQixRQUFRbkcsRUFBSSxFQUFHQSxFQUFJLEVBQUcsRUFBRUEsRUFBR29HLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFDNUMsT0FBQW1tRixHQUFlLENBQUMsS0FBSyxDQUFDLEVBQUdubUYsQ0FBQyxFQUMxQkEsRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUNuQkEsRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUNuQndrRixHQUFtQjlwRCxFQUFLMTZCLENBQUMsRUFDbEJBLEVBQUUsTUFBTSxFQUFHQSxFQUFFLENBQUMsQ0FDdEIsQ0FHQSxTQUFTNHJILEdBQW1CbitHLEVBQU0sQ0FDakMsSUFBSXMwQixFQUFPbWlELEdBQWV6MkUsQ0FBSSxFQUM5QixNQUFPLENBQUNzMEIsQ0FBSSxDQUNiLENBQ0EsU0FBUzhwRixHQUFtQjlwRixFQUFNK3BGLEVBQU85ckgsRUFBRyxDQUMzQyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxDQUFDLEdBQ3BCNlksR0FBZTBuQyxFQUFPOXJILENBQUMsQ0FDL0IsQ0FDQSxTQUFTK3JILEdBQW9CdCtHLEVBQU0sQ0FDbEMsSUFBSXMwQixFQUFPc2lELEdBQW9CNTJFLENBQUksRUFDbkMsTUFBTyxDQUFDczBCLENBQUksQ0FDYixDQUNBLFNBQVNpcUYsR0FBb0JqcUYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDNUMsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsQ0FBQyxHQUNwQitZLEdBQW9Cd25DLEVBQU85ckgsQ0FBQyxDQUNwQyxDQUdBLFNBQVNpc0gsR0FBa0J4K0csRUFBTSxDQUNoQyxJQUFJczBCLEVBQU9taUQsR0FBZXoyRSxDQUFJLEVBQzFCeStHLEVBQVF6K0csRUFBSyxXQUFXLENBQUMsRUFDN0IsTUFBTyxDQUFDczBCLEVBQU1tcUYsRUFBTyxHQUFHLENBQ3pCLENBQ0EsU0FBU0MsR0FBa0JwcUYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDMUMsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsQ0FBQyxHQUMzQjZZLEdBQWUwbkMsRUFBTzlySCxDQUFDLEVBQ3ZCQSxFQUFFLFlBQVksRUFBRytoQyxFQUFLLEVBQUksRUFBSSxDQUFDLEVBQ3hCL2hDLENBQ1IsQ0FDQSxTQUFTb3NILEdBQW1CMytHLEVBQU0sQ0FDakMsSUFBSXMwQixFQUFPc2lELEdBQW9CNTJFLENBQUksRUFDL0J5K0csRUFBUXorRyxFQUFLLFdBQVcsQ0FBQyxFQUM3QixNQUFPLENBQUNzMEIsRUFBTW1xRixFQUFPLEdBQUcsQ0FDekIsQ0FDQSxTQUFTRyxHQUFtQnRxRixFQUFNK3BGLEVBQU85ckgsRUFBRyxDQUMzQyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxDQUFDLEdBQzNCK1ksR0FBb0J3bkMsRUFBTzlySCxDQUFDLEVBQzVCQSxFQUFFLFlBQVksRUFBRytoQyxFQUFLLEVBQUksRUFBSSxDQUFDLEVBQ3hCL2hDLENBQ1IsQ0FHQSxTQUFTc3NILEdBQW1CNytHLEVBQU0sQ0FDakMsSUFBSXMwQixFQUFPbWlELEdBQWV6MkUsQ0FBSSxFQUMxQjgrRyxFQUFTOStHLEVBQUssV0FBVyxDQUFDLEVBQzlCLE1BQU8sQ0FBQ3MwQixFQUFNd3FGLEVBQVEsR0FBRyxDQUMxQixDQUNBLFNBQVNDLEdBQW1CenFGLEVBQU0rcEYsRUFBTzlySCxFQUFHLENBQzNDLE9BQUdBLEdBQUssT0FBTUEsRUFBSXVyRSxHQUFRLENBQUMsR0FDM0I2WSxHQUFlMG5DLEVBQU85ckgsQ0FBQyxFQUN2QkEsRUFBRSxZQUFZLEVBQUcraEMsRUFBSyxDQUFDLEVBQ2hCL2hDLENBQ1IsQ0FDQSxTQUFTeXNILEdBQW9CaC9HLEVBQU0sQ0FDbEMsSUFBSXMwQixFQUFPc2lELEdBQW9CNTJFLENBQUksRUFDL0I4K0csRUFBUzkrRyxFQUFLLFdBQVcsQ0FBQyxFQUM5QixNQUFPLENBQUNzMEIsRUFBTXdxRixFQUFRLEdBQUcsQ0FDMUIsQ0FDQSxTQUFTRyxHQUFvQjNxRixFQUFNK3BGLEVBQU85ckgsRUFBRyxDQUM1QyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxDQUFDLEdBQzNCK1ksR0FBb0J3bkMsRUFBTzlySCxDQUFDLEVBQzVCQSxFQUFFLFlBQVksRUFBRytoQyxFQUFLLENBQUMsRUFDdkIvaEMsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUNsQkEsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUNYQSxDQUNSLENBSUEsU0FBUzJzSCxHQUFrQmwvRyxFQUFNLENBQ2hDLElBQUlzMEIsRUFBT21pRCxHQUFlejJFLENBQUksRUFDMUJtL0csRUFBT24vRyxFQUFLLFdBQVcsQ0FBQyxFQUM1QixNQUFPLENBQUNzMEIsRUFBTTZxRixFQUFNLEdBQUcsQ0FDeEIsQ0FDQSxTQUFTQyxHQUFrQjlxRixFQUFNK3BGLEVBQU85ckgsRUFBRyxDQUMxQyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxFQUFFLEdBQzVCNlksR0FBZTBuQyxFQUFPOXJILENBQUMsRUFDdkJBLEVBQUUsWUFBWSxFQUFHOHJILEVBQU0sQ0FBQyxFQUNqQjlySCxDQUNSLENBQ0EsU0FBUzhzSCxHQUFtQnIvRyxFQUFNLENBQ2pDLElBQUlzMEIsRUFBT3NpRCxHQUFvQjUyRSxDQUFJLEVBQy9CbS9HLEVBQU9uL0csRUFBSyxXQUFXLENBQUMsRUFDNUIsTUFBTyxDQUFDczBCLEVBQU02cUYsRUFBTSxHQUFHLENBQ3hCLENBQ0EsU0FBU0csR0FBbUJockYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDM0MsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsQ0FBQyxHQUMzQitZLEdBQW9Cd25DLEVBQU85ckgsQ0FBQyxFQUM1QkEsRUFBRSxZQUFZLEVBQUc4ckgsRUFBTSxDQUFDLEVBQ2pCOXJILENBQ1IsQ0FHQSxTQUFTZ3RILEdBQWtCdi9HLEVBQU0sQ0FDaEMsSUFBSXMwQixFQUFPbWlELEdBQWV6MkUsQ0FBSSxFQUMxQm5ZLEVBQVFrd0YsR0FBVy8zRSxDQUFJLEVBQzNCLE1BQU8sQ0FBQ3MwQixFQUFNenNDLEVBQU8sR0FBRyxDQUN6QixDQUNBLFNBQVMyM0gsR0FBa0JsckYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDMUMsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBRSxHQUM1QjZZLEdBQWUwbkMsRUFBTzlySCxDQUFDLEVBQ3ZCeWxGLEdBQVcxakQsRUFBSyxFQUFHL2hDLENBQUMsRUFDYkEsQ0FDUixDQUNBLFNBQVNrdEgsR0FBbUJ6L0csRUFBTSxDQUNqQyxJQUFJczBCLEVBQU9zaUQsR0FBb0I1MkUsQ0FBSSxFQUMvQm5ZLEVBQVFrd0YsR0FBVy8zRSxDQUFJLEVBQzNCLE1BQU8sQ0FBQ3MwQixFQUFNenNDLEVBQU8sR0FBRyxDQUN6QixDQUNBLFNBQVM2M0gsR0FBbUJwckYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDM0MsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBRSxHQUM1QitZLEdBQW9Cd25DLEVBQU85ckgsQ0FBQyxFQUM1QnlsRixHQUFXMWpELEVBQUssRUFBRy9oQyxDQUFDLEVBQ2JBLENBQ1IsQ0FHQSxTQUFTb3RILEdBQWdCMy9HLEVBQU0sQ0FDOUIsSUFBSXMwQixFQUFPbWlELEdBQWV6MkUsQ0FBSSxFQUMxQm5ZLEVBQVF3dkYsR0FBZXIzRSxDQUFJLEVBQy9CLE1BQU8sQ0FBQ3MwQixFQUFNenNDLEVBQU8sR0FBRyxDQUN6QixDQUNBLFNBQVMrM0gsR0FBZ0J0ckYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDeEMsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBRSxHQUM1QjZZLEdBQWUwbkMsRUFBTzlySCxDQUFDLEVBQ3ZCa2xGLEdBQWVuakQsRUFBSyxFQUFHL2hDLENBQUMsRUFDakJBLENBQ1IsQ0FDQSxTQUFTc3RILEdBQWlCNy9HLEVBQU0sQ0FDL0IsSUFBSXMwQixFQUFPc2lELEdBQW9CNTJFLENBQUksRUFDL0JuWSxFQUFRd3ZGLEdBQWVyM0UsQ0FBSSxFQUMvQixNQUFPLENBQUNzMEIsRUFBTXpzQyxFQUFPLEdBQUcsQ0FDekIsQ0FDQSxTQUFTaTRILEdBQWlCeHJGLEVBQU0rcEYsRUFBTzlySCxFQUFHLENBQ3pDLE9BQUdBLEdBQUssT0FBTUEsRUFBSXVyRSxHQUFRLENBQUMsR0FDM0IrWSxHQUFvQnduQyxFQUFPOXJILENBQUMsRUFDNUJrbEYsR0FBZW5qRCxFQUFLLEVBQUcvaEMsQ0FBQyxFQUNqQkEsQ0FDUixDQUdBLFNBQVN3dEgsR0FBcUIvL0csRUFBTSxDQUNuQyxJQUFJczBCLEVBQU9taUQsR0FBZXoyRSxDQUFJLEVBQzFCblksRUFBUXN1RixHQUFjbjJFLENBQUksRUFDOUIsTUFBTyxDQUFDczBCLEVBQU16c0MsRUFBTyxJQUFJLENBQzFCLENBR0EsU0FBU200SCxHQUFnQmhnSCxFQUFNLENBQzlCLElBQUlzMEIsRUFBT21pRCxHQUFlejJFLENBQUksRUFDMUJuWSxFQUFRK3RGLEdBQW1CNTFFLENBQUksRUFDbkMsTUFBTyxDQUFDczBCLEVBQU16c0MsRUFBTyxLQUFLLENBQzNCLENBQ0EsU0FBU280SCxHQUFnQjNyRixFQUFNK3BGLEVBQU85ckgsRUFBRyxDQUN4QyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxHQUFLLEVBQUl4cEMsRUFBSyxFQUFFLE1BQU0sR0FDaERxaUQsR0FBZTBuQyxFQUFPOXJILENBQUMsRUFDdkJ1akYsR0FBbUJ4aEQsRUFBSyxFQUFHL2hDLENBQUMsRUFDckJBLEVBQUUsT0FBU0EsRUFBRSxFQUFJQSxFQUFFLE1BQU0sRUFBR0EsRUFBRSxDQUFDLEVBQUlBLENBQzNDLENBQ0EsU0FBUzJ0SCxHQUFpQmxnSCxFQUFNLENBQy9CLElBQUlzMEIsRUFBT3NpRCxHQUFvQjUyRSxDQUFJLEVBQy9CblksRUFBUSt0RixHQUFtQjUxRSxDQUFJLEVBQ25DLE1BQU8sQ0FBQ3MwQixFQUFNenNDLEVBQU8sS0FBSyxDQUMzQixDQUNBLFNBQVNzNEgsR0FBaUI3ckYsRUFBTStwRixFQUFPOXJILEVBQUcsQ0FDekMsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBSSxFQUFJeHBDLEVBQUssRUFBRSxNQUFNLEdBQy9DdWlELEdBQW9Cd25DLEVBQU85ckgsQ0FBQyxFQUM1QnVqRixHQUFtQnhoRCxFQUFLLEVBQUcvaEMsQ0FBQyxFQUNyQkEsRUFBRSxPQUFTQSxFQUFFLEVBQUlBLEVBQUUsTUFBTSxFQUFHQSxFQUFFLENBQUMsRUFBSUEsQ0FDM0MsQ0FHQSxTQUFTNnRILEdBQWtCcGdILEVBQU1tWixFQUFRenhCLEVBQU0sQ0FDOUMsSUFBSXc2RCxFQUFNbGlELEVBQUssRUFBSW1aLEVBQ2ZtYixFQUFPbWlELEdBQWV6MkUsQ0FBSSxFQUM5QnMwQixFQUFLLEVBQUk1c0MsRUFBSyxNQUFNLEVBQ3BCLElBQUlHLEVBQVFtWSxFQUFLLFdBQVcsQ0FBQyxFQUN6QnpOLEVBQUksQ0FBQytoQyxFQUFNenNDLEVBQU8sR0FBRyxFQUN6QixHQUFHSCxFQUFLLFlBQWEsQ0FDcEJzWSxFQUFLLEdBQUssRUFDVixJQUFJdzBGLEVBQVVvaUIsR0FBNEI1MkcsRUFBTWtpRCxFQUFNbGlELEVBQUssRUFBR3RZLENBQUksRUFDbEU2SyxFQUFFLENBQUMsRUFBSTBpSCxHQUFrQnpnQixFQUFTLEtBQWVsZ0UsRUFBTTVzQyxFQUFLLFNBQVVBLENBQUksQ0FDMUUsTUFDSXNZLEVBQUssRUFBSWtpRCxFQUNkLE9BQU8zdkQsQ0FDUixDQUdBLFNBQVM4dEgsR0FBbUJyZ0gsRUFBTW1aLEVBQVF6eEIsRUFBTSxDQUMvQyxJQUFJdzZELEVBQU1saUQsRUFBSyxFQUFJbVosRUFDZm1iLEVBQU9taUQsR0FBZXoyRSxDQUFJLEVBQzlCczBCLEVBQUssRUFBSTVzQyxFQUFLLE1BQU0sRUFDcEIsSUFBSUcsRUFBUW1ZLEVBQUssV0FBVyxDQUFDLEVBQ3pCek4sRUFBSSxDQUFDK2hDLEVBQU16c0MsRUFBTyxHQUFHLEVBQ3pCLEdBQUdILEVBQUssWUFBYSxDQUNwQnNZLEVBQUssR0FBSyxFQUNWLElBQUl3MEYsRUFBVW9pQixHQUE0QjUyRyxFQUFNa2lELEVBQU1saUQsRUFBSyxFQUFHdFksQ0FBSSxFQUNsRTZLLEVBQUUsQ0FBQyxFQUFJMGlILEdBQWtCemdCLEVBQVMsS0FBZWxnRSxFQUFNNXNDLEVBQUssU0FBVUEsQ0FBSSxDQUMxRSxNQUNJc1ksRUFBSyxFQUFJa2lELEVBQ2QsT0FBTzN2RCxDQUNSLENBR0EsU0FBUyt0SCxHQUFpQnRnSCxFQUFNbVosRUFBUXp4QixFQUFNLENBQzdDLElBQUl3NkQsRUFBTWxpRCxFQUFLLEVBQUltWixFQUNmbWIsRUFBT21pRCxHQUFlejJFLENBQUksRUFDOUJzMEIsRUFBSyxFQUFJNXNDLEVBQUssTUFBTSxFQUNwQixJQUFJRyxFQUFRa3dGLEdBQVcvM0UsQ0FBSSxFQUN2QnpOLEVBQUksQ0FBQytoQyxFQUFNenNDLEVBQU8sR0FBRyxFQUN6QixHQUFHSCxFQUFLLFlBQWEsQ0FDcEJzWSxFQUFLLEdBQUssRUFDVixJQUFJdzBGLEVBQVVvaUIsR0FBNEI1MkcsRUFBTWtpRCxFQUFNbGlELEVBQUssRUFBR3RZLENBQUksRUFDbEU2SyxFQUFFLENBQUMsRUFBSTBpSCxHQUFrQnpnQixFQUFTLEtBQWVsZ0UsRUFBTTVzQyxFQUFLLFNBQVVBLENBQUksQ0FDMUUsTUFDSXNZLEVBQUssRUFBSWtpRCxFQUNkLE9BQU8zdkQsQ0FDUixDQUdBLFNBQVNndUgsR0FBb0J2Z0gsRUFBTW1aLEVBQVF6eEIsRUFBTSxDQUNoRCxJQUFJdzZELEVBQU1saUQsRUFBSyxFQUFJbVosRUFDZm1iLEVBQU9taUQsR0FBZXoyRSxDQUFJLEVBQzlCczBCLEVBQUssRUFBSTVzQyxFQUFLLE1BQU0sRUFDcEIsSUFBSUcsRUFBUSt0RixHQUFtQjUxRSxDQUFJLEVBQy9Cek4sRUFBSSxDQUFDK2hDLEVBQU16c0MsRUFBTyxLQUFLLEVBQzNCLEdBQUdILEVBQUssWUFBYSxDQUNwQnNZLEVBQUssR0FBSyxFQUNWLElBQUl3MEYsRUFBVW9pQixHQUE0QjUyRyxFQUFNa2lELEVBQU1saUQsRUFBSyxFQUFHdFksQ0FBSSxFQUNsRTZLLEVBQUUsQ0FBQyxFQUFJMGlILEdBQWtCemdCLEVBQVMsS0FBZWxnRSxFQUFNNXNDLEVBQUssU0FBVUEsQ0FBSSxDQUMxRSxNQUNJc1ksRUFBSyxFQUFJa2lELEVBQ2QsT0FBTzN2RCxDQUNSLENBR0EsSUFBSWl1SCxHQUFxQjNvQyxHQUNyQjRvQyxHQUFxQjNvQyxHQUV6QixTQUFTNG9DLEdBQXlCM2lELEVBQUt4ckUsRUFBRyxDQUN6QyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxDQUFDLEdBQzNCdnJFLEVBQUUsWUFBWSxFQUFHd3JFLENBQUcsRUFDYnhyRSxDQUNSLENBR0EsU0FBU291SCxHQUFlM2dILEVBQU1tWixFQUFvQixDQUNqRCxJQUFJK29DLEVBQU1saUQsRUFBSyxFQUFJbVosRUFDZjJ6RixFQUFNajFCLEdBQW1CNzNFLENBQVEsRUFDakM0Z0gsRUFBUTVwQyxHQUEyQmgzRSxDQUFJLEVBQ3ZDNHhFLEVBQU1nRSxHQUFtQjUxRSxDQUFJLEVBQzdCdVcsRUFBVXEvRCxHQUFtQjUxRSxDQUFJLEVBQ2pDb2YsRUFBVXcyRCxHQUFtQjUxRSxDQUFJLEVBQ3JDQSxFQUFLLEVBQUlraUQsRUFDVCxJQUFJM3ZELEVBQUssQ0FBQyxJQUFJdTZHLEVBQUssTUFBTThULEVBQU8sSUFBSWh2QyxFQUFLLFFBQVF4eUQsQ0FBTyxFQUN4RCxPQUFHN0ksSUFBU2hrQixFQUFFLFFBQVVna0IsR0FDakJoa0IsQ0FDUixDQUNBLFNBQVNzdUgsR0FBZXpzRyxFQUFHd25FLEVBQUssQ0FDL0IsSUFBSXJwRixFQUFJdXJFLEdBQVEsR0FBRyxHQUFHMXBELEVBQUUsQ0FBQyxFQUFFLE9BQU8sUUFBVUEsRUFBRSxDQUFDLEVBQUUsU0FBVyxJQUFJLE9BQU8sRUFDdkUwakUsR0FBbUIsQ0FBQyxFQUFFNUQsR0FBWTkvRCxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQUU4L0QsR0FBWTkvRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUc3aEIsQ0FBQyxFQUNoRTZrRixHQUFZLE1BQVF3RSxFQUFLcnBGLENBQUMsRUFDMUIsSUFBSXV1SCxFQUFTMXNHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sUUFBUSxHQUFHLEVBQ2hDdzlELEVBQU1rdkMsR0FBVSxHQUFLLEdBQUsxc0csRUFBRSxDQUFDLEVBQUUsT0FBTyxNQUFNMHNHLEVBQU8sQ0FBQyxFQUN4RCxPQUFBaHJDLEdBQW1CbEUsR0FBTyxHQUFJci9FLENBQUMsRUFDL0J1akYsR0FBbUIxaEUsRUFBRSxDQUFDLEVBQUUsU0FBVyxHQUFJN2hCLENBQUMsRUFDeEN1akYsR0FBbUIsR0FBSXZqRixDQUFDLEVBQ2pCQSxFQUFFLE1BQU0sRUFBR0EsRUFBRSxDQUFDLENBQ3RCLENBR0EsU0FBU3d1SCxJQUFzQyxDQUMvQyxDQUdBLFNBQVNDLEdBQWlCaGhILEVBQU1tWixFQUFRenhCLEVBQU0sQ0FDN0MsSUFBSXc2RCxFQUFNbGlELEVBQUssRUFBSW1aLEVBQ2YyekYsRUFBTW4xQixHQUFVMzNFLENBQVEsRUFDeEJpaEgsRUFBY2poSCxFQUFLLFdBQVcsQ0FBQyxFQUMvQnpOLEVBQUksQ0FBQ3U2RyxDQUFHLEVBQ1osR0FEZXY2RyxFQUFFLENBQUMsRUFBSTB1SCxFQUNuQnY1SCxFQUFLLFlBQWEsQ0FDcEIsSUFBSThzRyxFQUFVbWlCLEdBQTZCMzJHLEVBQU1raUQsRUFBTWxpRCxFQUFLLEVBQUd0WSxDQUFJLEVBQ25FNkssRUFBRSxDQUFDLEVBQUlpaUcsQ0FDVCxNQUFReDBGLEVBQUssRUFBSWtpRCxFQUNoQixPQUFPM3ZELENBQ1IsQ0FHQSxTQUFTMnVILEdBQWlCbGhILEVBQU1tWixFQUFRenhCLEVBQU0sQ0FDN0MsSUFBSXc2RCxFQUFNbGlELEVBQUssRUFBSW1aLEVBQ2YyekYsRUFBTWoxQixHQUFtQjczRSxDQUFRLEVBQ2pDek4sRUFBSSxDQUFDdTZHLENBQUcsRUFDWixHQUFHcGxILEVBQUssWUFBYSxDQUNwQixJQUFJOHNHLEVBQVVzaUIsR0FBOEI5MkcsRUFBTWtpRCxFQUFNbGlELEVBQUssRUFBR3RZLENBQUksRUFDcEU2SyxFQUFFLENBQUMsRUFBSWlpRyxFQUNQeDBGLEVBQUssRUFBSWtpRCxDQUNYLE1BQVFsaUQsRUFBSyxFQUFJa2lELEVBQ2hCLE9BQU8zdkQsQ0FDUixDQUlBLFNBQVM0dUgsR0FBaUJobkQsRUFBY3g1RCxFQUFLcE8sRUFBRyxDQUM1Q0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBRSxHQUM1QixJQUFJN3lFLEVBQUlzc0gsR0FBVXA5QyxFQUFHeDVELENBQUcsRUFDeEJwTyxFQUFFLFlBQVksR0FBSTRuRSxDQUFDLEVBQ25CNW5FLEVBQUUsWUFBWSxHQUFJNG5FLENBQUMsRUFDbkI1bkUsRUFBRSxZQUFZLEdBQUl0SCxFQUFFLE9BQVMsSUFBTSxHQUFHLEVBQ3RDc0gsRUFBRSxZQUFZLEVBQUcsR0FDakIsSUFBSTBvRSxFQUFRLEVBQ1osT0FBR3Q2RCxFQUFJLFNBQVFzNkQsR0FBUyxHQUNyQixPQUFPaHdFLEVBQUUsT0FBUyxXQUFVZ3dFLEdBQVMsR0FDckN0NkQsRUFBSSxRQUFPczZELEdBQVV0NkQsRUFBSSxPQUFTLEdBQ3JDcE8sRUFBRSxZQUFZLEVBQUcwb0UsQ0FBSyxFQUNmMW9FLENBQ1IsQ0FHQSxJQUFJNnVILEdBQWdCLENBQUMsT0FBTyxRQUFRLE1BQU0sU0FBUyxTQUFTLFFBQVEsRUFDcEUsU0FBU0MsR0FBaUJyaEgsRUFBc0MsQ0FDL0QsSUFBSTAzRyxFQUFXLENBQUEsRUFDZixPQUFBMEosR0FBYyxRQUFRLFNBQVN2eUcsRUFBRyxDQUFFNm9HLEVBQVE3b0csQ0FBQyxFQUFJa3BFLEdBQVcvM0UsQ0FBTyxDQUFFLENBQUUsRUFDaEUwM0csQ0FDUixDQUNBLFNBQVM0SixHQUFpQjVKLEVBQXFCbmxILEVBQUcsQ0FDakQsT0FBR0EsR0FBSyxPQUFNQSxFQUFJdXJFLEdBQVEsRUFBRSxDQUFDLEdBQzdCMjVDLEdBQWdCQyxDQUFPLEVBQ3ZCMEosR0FBYyxRQUFRLFNBQVN2eUcsRUFBRyxDQUFFbXBFLEdBQVkwL0IsRUFBaUI3b0csQ0FBQyxFQUFHdGMsQ0FBQyxDQUFJLENBQUEsRUFDbkVBLENBQ1IsQ0FHQSxTQUFTZ3ZILEdBQXFCdmhILEVBQTBCLENBQ3ZELElBQUkxTixFQUFJME4sRUFBSyxXQUFXLENBQUMsRUFDekIsT0FBQUEsRUFBSyxHQUFLLEdBQ0gsQ0FBRSxJQUFLMU4sRUFBSSxHQUNuQixDQUNBLFNBQVNrdkgsR0FBcUJ2c0MsRUFBSXdzQyxFQUFVbHZILEVBQUcsQ0FDM0NBLEdBQUssT0FBTUEsRUFBSXVyRSxHQUFRLEVBQUUsR0FDNUIsSUFBSXhyRSxFQUFJLElBQ1IsU0FBTW12SCxHQUFVLENBQUEsR0FBSSxPQUFPLENBQUEsR0FBSSxDQUFDLEdBQUcsQ0FBRSxHQUFFLE1BQUtudkgsR0FBSyxJQUNqREMsRUFBRSxZQUFZLEVBQUdELENBQUMsRUFDbEJDLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLEdBQUcsRUFDcEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJBLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDWEEsQ0FDUixDQUdBLFNBQVNtdkgsR0FBc0IzekgsRUFBSyxDQUNuQyxJQUFJd0UsRUFBSXVyRSxHQUFRLEVBQUUsRUFDbEIsT0FBQXZyRSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCQSxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQ2xCdWxGLEdBQW1CL3BGLEVBQUt3RSxDQUFDLEVBQ2xCQSxDQUNSLENBR0EsU0FBU292SCxHQUF5QnRNLEVBQUk5aUgsRUFBRyxDQUN4QyxPQUFHQSxHQUFLLE9BQU1BLEVBQUl1ckUsR0FBUSxHQUFHLEVBQUUsQ0FBQyxHQUNoQ3ZyRSxFQUFFLFlBQVksRUFBRzhpSCxFQUFHLFNBQVczVixHQUFzQzJWLEVBQUcsUUFBUSxFQUFJLENBQUMsRUFDckY5aUgsRUFBRSxZQUFZLEVBQUcsQ0FBQyxFQUNsQixDQUNDLENBQUMsVUFBdUIsRUFBSyxFQUM3QixDQUFDLFlBQXVCLEVBQUssRUFDN0IsQ0FBQyxjQUF3QixFQUFJLEVBQzdCLENBQUMsZ0JBQXdCLEVBQUksRUFDN0IsQ0FBQyxhQUF3QixFQUFJLEVBQzdCLENBQUMsZ0JBQXdCLEVBQUksRUFDN0IsQ0FBQyxhQUF3QixFQUFJLEVBQzdCLENBQUMsbUJBQXdCLEVBQUksRUFDN0IsQ0FBQyxnQkFBd0IsRUFBSSxFQUM3QixDQUFDLGFBQXdCLEVBQUksRUFDN0IsQ0FBQyxvQkFBdUIsRUFBSyxFQUM3QixDQUFDLE9BQXdCLEVBQUksRUFDN0IsQ0FBQyxhQUF3QixFQUFJLEVBQzdCLENBQUMsY0FBd0IsRUFBSSxFQUM3QixDQUFDLHNCQUF1QixFQUFLLENBQy9CLEVBQUcsUUFBUSxTQUFTWixFQUFHLENBRWxCQSxFQUFFLENBQUMsRUFBR1ksRUFBRSxZQUFZLEVBQUc4aUgsRUFBRzFqSCxFQUFFLENBQUMsQ0FBQyxHQUFLLE1BQVEsQ0FBQzBqSCxFQUFHMWpILEVBQUUsQ0FBQyxDQUFDLEVBQUksRUFBSSxDQUFDLEVBQ3JEWSxFQUFFLFlBQVksRUFBRzhpSCxFQUFHMWpILEVBQUUsQ0FBQyxDQUFDLEdBQUssTUFBUTBqSCxFQUFHMWpILEVBQUUsQ0FBQyxDQUFDLEVBQUksRUFBSSxDQUFDLENBQ2pFLENBQUUsRUFDTVksQ0FDUixDQUVBLFNBQVNxdkgsSUFBc0MsQ0FDL0MsQ0FDQSxTQUFTQyxJQUF3QyxDQUNqRCxDQUVBLFNBQVNDLEdBQWE5aEgsRUFBTSsvRCxFQUFPMXRCLEVBQUtpcEMsRUFBTXNNLEVBQWtCdWMsRUFBUUQsRUFBc0IsQ0FDN0YsR0FBRyxDQUFDbGtHLEVBQU0sT0FBT0EsRUFDakIsSUFBSXRZLEVBQU9xNEUsR0FBUyxHQUNoQnViLElBQU1BLEVBQU8sQ0FBQyxNQUFNLENBQUUsQ0FBQSxHQUUxQixJQUFJMXBGLEVBQW1CbEssRUFBSyxNQUFRLENBQUUsRUFBRyxDQUFFLEVBRXZDcUcsRUFDQWtyRyxFQUFXLENBQUMsRUFBRyxDQUFDLEVBQUUsSUFBUyxFQUFFLEdBQU8sRUFBRyxFQUFHLENBQUMsRUFBRSxFQUFHLEVBQUUsQ0FBQyxDQUFDLEVBR3BEbUQsRUFBTyxHQUFPbDZDLEVBQU0sR0FDcEJsdkQsRUFBSy9ILEVBQUc0akcsRUFBSXAwQixFQUFHTixFQUFHa0UsRUFBTTA5QyxFQUFNcG5ELEVBQUlyZ0MsRUFDbENnNkQsRUFBMEIsQ0FBQSxFQUM5QjVtRyxFQUFLLEtBQU8sR0FDWkEsRUFBSyxNQUFNLEVBQUksRUFFZixJQUFJcTZILEVBQUssRUFBR0MsRUFBSyxHQUViOUYsRUFBb0MsQ0FBQSxFQUNwQ0MsRUFBVSxDQUFBLEVBQ1Z0SCxFQUFXbnRILEVBQUssVUFBbUJrZ0csRUFBZSxVQUFhLENBQUMsQ0FBRSxDQUFBLEVBSXRFLEdBSEFpdEIsRUFBUyxRQUFVc0gsRUFDbkJ0SCxFQUFTLE9BQVNxSCxFQUNsQnJILEVBQVMsV0FBYWp0QixFQUFHLFlBQWNBLEVBQUcsT0FBTyxJQUFJLFNBQVMxNkQsR0FBRyxDQUFFLE9BQU9BLEdBQUUsSUFBTyxDQUFBLEVBQ2hGLENBQUN4bEMsRUFBSyxXQUNSQSxFQUFLLFNBQVdtdEgsRUFDYmp0QixFQUFHLE9BQU8sUUFBUXo3RixFQUFJLEVBQUdBLEVBQUl5N0YsRUFBRyxNQUFNLE9BQVEsRUFBRXo3RixFQUFHMG9ILEVBQVMsQ0FBQyxFQUFFMW9ILEVBQUUsQ0FBQyxFQUFJeTdGLEVBQUcsTUFBTXo3RixDQUFDLEVBR3BGLElBQUk0bkcsRUFBNkIsQ0FBQSxFQUFJRCxFQUE2QixHQUM5RDBtQixFQUFVLEdBRWQvbkMsR0FBZSxFQUFNLEVBQUksQ0FBRSxFQUFFLGVBQWdCLEVBQUVndEMsSUFFNUMsSUFBQ3hWLEVBcVBKLEdBblBBNTNCLEdBQWFyeUUsRUFBTSxTQUFrQmpULEVBQUtrMUgsR0FBSXp2QyxFQUFJLENBQ2pELEdBQUcsQ0FBQXR3QixFQUNILE9BQU9zd0IsRUFBRSxDQUNSLElBQUssS0FDSnprRixFQUFNaEIsRUFBSyxNQUNaLElBQUssR0FDSmlHLEVBQU1qRyxFQUNIckYsRUFBSyxXQUFhQSxFQUFLLFdBQWFzTCxFQUFJLElBQUdrdkQsRUFBSSxJQUNsRHlTLEVBQUsrZSxHQUFXalosRUFBSXpuRSxFQUFJLENBQUMsRUFDekJ0TCxFQUFLLE1BQU0sRUFBSXNMLEVBQUksR0FDaEJqRyxFQUFJLFFBQVVBLEVBQUksS0FBT0EsRUFBSSxPQUFTLFFBQ3JDQSxFQUFJLE1BQUtBLEVBQUksSUFBTStuRyxHQUFNL25HLEVBQUksR0FBRyxHQUNuQyttRyxFQUFRL21HLEVBQUksQ0FBQyxFQUFJQSxHQUVsQixNQUVELElBQUssR0FDTCxJQUFLLEdBQ0wsSUFBSyxHQUNMLElBQUssR0FDTCxJQUFLLEdBQ0wsSUFBSyxHQUNMLElBQUssR0FDTCxJQUFLLEdBQ0wsSUFBSyxJQUNMLElBQUssSUFDTCxJQUFLLElBQ0wsSUFBSyxJQUNMLElBQUssSUFDTCxJQUFLLElBQ0wsSUFBSyxJQUNMLElBQUssSUFDTCxJQUFLLElBRUosT0FEQTlCLEVBQUssQ0FBQyxFQUFFOEIsRUFBSSxDQUFDLENBQUMsRUFDUEEsRUFBSSxDQUFDLEVBQUMsQ0FDWixJQUFLLElBQUs5QixFQUFFLEVBQUk4QixFQUFJLENBQUMsRUFBRyxNQUN4QixJQUFLLElBQUtndkgsRUFBT3Z6QixHQUFLejdGLEVBQUksQ0FBQyxDQUFDLEVBQUc5QixFQUFFLEVBQUk4d0gsRUFBSyxFQUFHOXdILEVBQUUsRUFBSTh3SCxFQUFLLEVBQUcsTUFDM0QsSUFBSyxJQUFLOXdILEVBQUUsRUFBSSxFQUFBOEIsRUFBSSxDQUFDLEVBQWtCLE1BQ3ZDLElBQUssSUFBSzlCLEVBQUUsRUFBSThCLEVBQUksQ0FBQyxFQUFNckYsRUFBSyxXQUFhLEtBQU91RCxFQUFFLEVBQUl5cEYsR0FBS3pwRixFQUFFLENBQUMsR0FBRyxNQUNyRSxJQUFLLE1BQU9BLEVBQUUsRUFBSSxJQUFLQSxFQUFFLEVBQUk4QixFQUFJLENBQUMsRUFBRyxNQUNyQyxJQUFLLEtBQU05QixFQUFFLEVBQUksSUFBS0EsRUFBRSxFQUFJOEIsRUFBSSxDQUFDLEVBQUUsRUFBRyxLQUN0QyxDQUtELElBSkk4aEcsRUFBS3FWLEVBQU8sT0FBT24zRyxFQUFJLENBQUMsRUFBRSxTQUFTLElBQUk4cUgsR0FBWTVzSCxFQUFFNGpHLEVBQUcsU0FBUyxLQUFLbm5HLEVBQU15OEcsRUFBUUQsQ0FBTSxFQUM5Ri9wQyxFQUFJcHRFLEVBQUksQ0FBQyxFQUFFLEdBQUssR0FBS290RSxFQUFJLEVBQUlwdEUsRUFBSSxDQUFDLEVBQUUsRUFDakNyRixFQUFLLE9BQWFrSyxFQUFFNm9FLENBQUMsSUFBRzdvRSxFQUFFNm9FLENBQUMsRUFBSSxDQUFBLEdBQUk3b0UsRUFBRTZvRSxDQUFDLEVBQUVOLENBQUMsRUFBSWx2RSxHQUMzQzJHLEVBQUU2aEYsR0FBV3RaLENBQUMsRUFBSXhGLENBQUUsRUFBSTFwRSxFQUMxQnZELEVBQUssWUFBYSxDQUVwQixJQURBczZILEVBQUssR0FDREQsRUFBSyxFQUFHQSxFQUFLN0YsRUFBTyxPQUFRLEVBQUU2RixFQUFJLENBQ3JDLElBQUlHLEVBQU1oRyxFQUFPNkYsQ0FBRSxFQUNoQi91SCxFQUFJLEdBQUtrdkgsRUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFLbHZILEVBQUksR0FBS2t2SCxFQUFJLENBQUMsRUFBRSxFQUFFLEdBQ3hDL25ELEdBQUsrbkQsRUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFLL25ELEdBQUsrbkQsRUFBSSxDQUFDLEVBQUUsRUFBRSxJQUNuQ2ozSCxFQUFFLEVBQUltcEYsR0FBYTh0QyxFQUFJLENBQUMsQ0FBQyxFQUFHRixFQUFLLEdBRW5DLENBQ0UsQ0FBQ0EsR0FBTWoxSCxFQUFJLE9BQVMsSUFBRzlCLEVBQUUsRUFBSThCLEVBQUksQ0FBQyxFQUNyQyxDQU1ELEdBSkdrc0csRUFBUyxFQUFFLEVBQUlqbUcsRUFBSSxJQUFHaW1HLEVBQVMsRUFBRSxFQUFJam1HLEVBQUksR0FDekNpbUcsRUFBUyxFQUFFLEVBQUk5K0IsSUFBRzgrQixFQUFTLEVBQUUsRUFBSTkrQixHQUNqQzgrQixFQUFTLEVBQUUsRUFBSWptRyxFQUFJLElBQUdpbUcsRUFBUyxFQUFFLEVBQUlqbUcsRUFBSSxHQUN6Q2ltRyxFQUFTLEVBQUUsRUFBSTkrQixJQUFHOCtCLEVBQVMsRUFBRSxFQUFJOStCLEdBQ2pDenlFLEVBQUssV0FBYW1uRyxHQUFNNWpHLEVBQUUsR0FBSyxLQUFPdXJFLEdBQVk1RixHQUFVaStCLEVBQUcsUUFBUSxDQUFDLEVBQUcsQ0FDN0UsSUFBSXR2RixFQUFLcXlELEdBQW9CM21FLEVBQUUsQ0FBQyxFQUFNc1UsSUFBTXRVLEVBQUUsRUFBSSxJQUFLQSxFQUFFLEVBQUksSUFBSSxLQUFLc1UsRUFBRyxFQUFHQSxFQUFHLEVBQUUsRUFBRUEsRUFBRyxFQUFFQSxFQUFHLEVBQUVBLEVBQUcsRUFBRUEsRUFBRyxFQUFFQSxFQUFHLENBQUMsRUFDM0csQ0FDRTBxRyxJQUNDQSxFQUFHLE1BQVEsV0FBVWgvRyxFQUFFLEVBQUksSUFDOUJnL0csRUFBSyxRQUdOLE1BRUQsSUFBSyxHQUNMLElBQUssSUFDSixHQUFHLENBQUN2aUgsRUFBSyxZQUFjMDBHLEVBQU0sTUFDN0JueEcsRUFBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFDcEJrdkUsRUFBSXB0RSxFQUFJLENBQUMsRUFBRSxHQUFLLEdBQUtvdEUsRUFBSSxFQUFJcHRFLEVBQUksQ0FBQyxFQUFFLEVBQ2pDckYsRUFBSyxPQUFha0ssRUFBRTZvRSxDQUFDLElBQUc3b0UsRUFBRTZvRSxDQUFDLEVBQUksQ0FBQSxHQUFJN29FLEVBQUU2b0UsQ0FBQyxFQUFFTixDQUFDLEVBQUlsdkUsR0FDM0MyRyxFQUFFNmhGLEdBQVd0WixDQUFDLEVBQUl4RixDQUFFLEVBQUkxcEUsRUFDMUJndUcsRUFBUyxFQUFFLEVBQUlqbUcsRUFBSSxJQUFHaW1HLEVBQVMsRUFBRSxFQUFJam1HLEVBQUksR0FDekNpbUcsRUFBUyxFQUFFLEVBQUk5K0IsSUFBRzgrQixFQUFTLEVBQUUsRUFBSTkrQixHQUNqQzgrQixFQUFTLEVBQUUsRUFBSWptRyxFQUFJLElBQUdpbUcsRUFBUyxFQUFFLEVBQUlqbUcsRUFBSSxHQUN6Q2ltRyxFQUFTLEVBQUUsRUFBSTkrQixJQUFHOCtCLEVBQVMsRUFBRSxFQUFJOStCLEdBQ2pDOHZDLElBQ0NBLEVBQUcsTUFBUSxXQUFVaC9HLEVBQUUsRUFBSSxJQUM5QmcvRyxFQUFLLFFBR04sTUFFRCxJQUFLLEtBQ0ozYixFQUFPLEtBQUt2aEcsQ0FBRyxFQUFHLE1BRW5CLElBQUssSUFDSms5RyxJQUFPdmlILEVBQUssUUFBUSxDQUFBLEdBQUksTUFBTSxDQUFFLEdBQUVxRixFQUFJLENBQUMsRUFDdEMsTUFFRixJQUFLLEtBQ0osSUFBSXd1RixFQUFNRCxFQUFLLEtBQUssRUFBRXZ1RixFQUFJLEtBQUssRUFRL0IsSUFQR3d1RixHQUNGeHVGLEVBQUksT0FBU3d1RixFQUFJLE9BQ2R4dUYsRUFBSSxNQUFLQSxFQUFJLFFBQVUsSUFBSUEsRUFBSSxLQUNsQ0EsRUFBSSxJQUFNd3VGLEdBQ0R4dUYsRUFBSSxPQUFTLEtBQ3RCQSxFQUFJLE9BQVMsSUFBTUEsRUFBSSxLQUVwQjB0RSxFQUFFMXRFLEVBQUksSUFBSSxFQUFFLEVBQUUwdEUsR0FBRzF0RSxFQUFJLElBQUksRUFBRSxFQUFFLEVBQUUwdEUsRUFBRyxJQUFJTixFQUFFcHRFLEVBQUksSUFBSSxFQUFFLEVBQUVvdEUsR0FBR3B0RSxFQUFJLElBQUksRUFBRSxFQUFFLEVBQUVvdEUsRUFDckV6eUUsRUFBSyxPQUNIa0ssRUFBRTZvRSxDQUFDLElBQUc3b0UsRUFBRTZvRSxDQUFDLEVBQUksSUFDYjdvRSxFQUFFNm9FLENBQUMsRUFBRU4sQ0FBQyxJQUFHdm9FLEVBQUU2b0UsQ0FBQyxFQUFFTixDQUFDLEVBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFTLEdBQ3pDdm9FLEVBQUU2b0UsQ0FBQyxFQUFFTixDQUFDLEVBQUUsRUFBSXB0RSxJQUVac3hFLEVBQU9nVixHQUFZLENBQUMsRUFBRWxaLEVBQUUsRUFBRU0sQ0FBQyxDQUFDLEVBQ3hCN29FLEVBQUV5c0UsQ0FBSSxJQUFHenNFLEVBQUV5c0UsQ0FBSSxFQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBUyxHQUN6Q3pzRSxFQUFFeXNFLENBQUksRUFBRSxFQUFJdHhFLEdBR2QsTUFFRCxJQUFLLEtBQ0osR0FBRyxDQUFDckYsRUFBSyxZQUFhLE1BQ3RCdzBILEVBQU8sS0FBS252SCxDQUFHLEVBQ2Z1bkMsRUFBUzVzQyxFQUFLLE1BQVFrSyxFQUFFNm9FLENBQUMsRUFBRU4sQ0FBQyxFQUFJdm9FLEVBQUU2aEYsR0FBV3RaLENBQUMsRUFBSXhGLENBQUUsRUFDcERyZ0MsRUFBSyxFQUFJMmdGLEdBQWtCbG9ILEVBQUksQ0FBQyxFQUFHa3NHLEVBQVUsQ0FBQyxFQUFFam1HLEVBQUksRUFBRyxFQUFFbW5FLENBQUMsRUFBRzA2QyxFQUFVbnRILENBQUksRUFDM0U0c0MsRUFBSyxFQUFJOC9DLEdBQWFybkYsRUFBSSxDQUFDLENBQUMsRUFDNUIsTUFDRCxJQUFLLEtBQ0osR0FBRyxDQUFDckYsRUFBSyxZQUFhLE1BQ3RCeTBILEVBQVE5b0MsR0FBWXRtRixFQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBSUEsRUFBSSxDQUFDLEVBQ3RDdW5DLEVBQVE1c0MsRUFBSyxNQUFRa0ssRUFBRTZvRSxDQUFDLEVBQUVOLENBQUMsRUFBSXZvRSxFQUFFNmhGLEdBQVd0WixDQUFDLEVBQUl4RixDQUFFLEVBQ25EcmdDLEVBQUssRUFBSTJnRixHQUFrQmxvSCxFQUFJLENBQUMsRUFBR2tzRyxFQUFVLENBQUMsRUFBRWptRyxFQUFJLEVBQUcsRUFBRW1uRSxDQUFDLEVBQUcwNkMsRUFBVW50SCxDQUFJLEVBQzNFLE1BR0QsSUFBSyxJQUNKLEdBQUcsQ0FBQ0EsRUFBSyxXQUFZLE1BQ3JCLEtBQU1xRixFQUFJLEdBQUtBLEVBQUksR0FDbEJnbkcsRUFBUWhuRyxFQUFJLEdBQUcsRUFBSSxDQUFFLE1BQU9BLEVBQUksRUFBRSxJQUFLLE9BQVEsQ0FBQyxFQUFFQSxFQUFJLE1BQVEsR0FBTyxNQUFPQSxFQUFJLE9BQzVFeXRILElBQVdBLEVBQVUsR0FBTS9XLEdBQWMxMkcsRUFBSSxFQUFFLEdBQUcsR0FDdEQ4bkcsR0FBWWQsRUFBUWhuRyxFQUFJLEVBQUUsQ0FBQyxDQUFDLEVBRTdCLE1BRUQsSUFBSyxLQUNKNkUsRUFBRSxhQUFhLEVBQUksQ0FBRSxJQUFJd2lGLEdBQWFybkYsQ0FBRyxHQUN6QyxNQUVELElBQUssS0FDSjZFLEVBQUUsVUFBVSxFQUFJN0UsRUFDaEIsTUFFRCxJQUFLLEtBQ0E2NkYsRUFBRyxPQUFPdjFDLENBQUcsSUFBR3UxQyxFQUFHLE9BQU92MUMsQ0FBRyxFQUFJLElBQ2xDdGxELEVBQUksT0FBTTY2RixFQUFHLE9BQU92MUMsQ0FBRyxFQUFFLFNBQVd0bEQsRUFBSSxPQUN4Q0EsRUFBSSxPQUFTQSxFQUFJLFFBQU02RSxFQUFFLFVBQVUsRUFBSSxDQUFFLE1BQU83RSxFQUFJLE1BQU8sS0FBTUEsRUFBSSxJQUFJLEdBQzVFLE1BRUQsSUFBSyxLQUNBNjZGLEVBQUcsUUFBT0EsRUFBRyxNQUFRLENBQUMsQ0FBQSxDQUFFLEdBQ3hCQSxFQUFHLE1BQU0sQ0FBQyxJQUFHQSxFQUFHLE1BQU0sQ0FBQyxFQUFJLElBQzVCNzZGLEVBQUksTUFBSzY2RixFQUFHLE1BQU0sQ0FBQyxFQUFFLElBQU0sSUFDOUIsTUFFRCxJQUFLLEtBQ0osTUFFRCxJQUFLLElBQ0wsSUFBSyxNQUNKLE1BRUQsSUFBSyxLQUNKLE1BQ0QsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssTUFDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssTUFDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssTUFDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssTUFDTCxJQUFLLElBQ0wsSUFBSyxNQUNMLElBQUssTUFDSixNQUVELElBQUssSUFDSndVLEVBQU8sR0FBTSxNQUNkLElBQUssSUFDSkEsRUFBTyxHQUFPLE1BQ2YsSUFBSyxJQUNZQSxFQUFPLEdBQU0sTUFDOUIsSUFBSyxJQUNTQSxFQUFPLEdBQU8sTUFFNUIsUUFDQyxHQUFHLENBQUE2bEIsR0FBRyxHQUNELEdBQUcsQ0FBQzdsQixHQUFRMTBHLEVBQUssSUFBSyxNQUFNLElBQUksTUFBTSx1QkFBeUI4cUYsRUFBRyxTQUFTLEVBQUUsQ0FBQyxFQUNwRixDQUNELEVBQUU5cUYsQ0FBSSxFQUVQLE9BQU9BLEVBQUssU0FDWixPQUFPQSxFQUFLLE1BQU0sRUFFZixDQUFDa0ssRUFBRSxNQUFNLElBQU1xbkcsRUFBUyxFQUFFLEVBQUksS0FBV2xyRyxJQUFRQSxFQUFJLEVBQUUsRUFBSSxHQUFLQSxFQUFJLEVBQUUsRUFBSSxHQUFLQSxFQUFJLEVBQUUsRUFBSSxHQUFLQSxFQUFJLEVBQUUsRUFBSSxNQUFLNkQsRUFBRSxNQUFNLEVBQUl3aUYsR0FBYXJtRixHQUFPa3JHLENBQVEsR0FDckp2eEcsRUFBSyxXQUFha0ssRUFBRSxNQUFNLEVBQUcsQ0FDL0IsSUFBSWdvSCxHQUFTcmxDLEdBQWtCM2lGLEVBQUUsTUFBTSxDQUFDLEVBQ3JDbEssRUFBSyxXQUFhLENBQUNreUgsR0FBTyxFQUFFLElBQzlCQSxHQUFPLEVBQUUsRUFBSWx5SCxFQUFLLFVBQVksRUFDM0JreUgsR0FBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLElBQUcyZ0IsR0FBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLEdBQ25EMmdCLEdBQU8sRUFBRSxFQUFJQSxHQUFPLEVBQUUsSUFBR0EsR0FBTyxFQUFFLEVBQUlBLEdBQU8sRUFBRSxHQUMvQ0EsR0FBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLElBQUcyZ0IsR0FBTyxFQUFFLEVBQUkzZ0IsRUFBUyxFQUFFLEdBQ25EMmdCLEdBQU8sRUFBRSxFQUFJQSxHQUFPLEVBQUUsSUFBR0EsR0FBTyxFQUFFLEVBQUlBLEdBQU8sRUFBRSxHQUNsRGhvSCxFQUFFLFVBQVUsRUFBSUEsRUFBRSxNQUFNLEVBQ3hCQSxFQUFFLE1BQU0sRUFBSXdpRixHQUFhd2xDLEVBQU0sRUFFaEMsQ0FDRCxPQUFHdHJCLEVBQU8sT0FBUyxJQUFHMThGLEVBQUUsU0FBUyxFQUFJMDhGLEdBQ2xDeUYsRUFBUSxPQUFTLElBQUduaUcsRUFBRSxPQUFPLEVBQUltaUcsR0FDakNELEVBQVEsT0FBUyxJQUFHbGlHLEVBQUUsT0FBTyxFQUFJa2lHLEdBQzdCbGlHLENBQ1IsQ0FHQSxTQUFTdXdILEdBQWtCbnZDLEVBQWlCMStDLEVBQWVtbUMsRUFBY04sRUFBY3p5RSxFQUFNdXRGLEVBQWtCbXRDLEVBQW1DLENBQ2pKLEdBQUc5dEYsRUFBSyxJQUFNLE9BQVcsTUFBTyxHQUNoQyxJQUFJMWpCLEVBQUssR0FDVCxPQUFPMGpCLEVBQUssRUFBQyxDQUNaLElBQUssSUFBSzFqQixFQUFLMGpCLEVBQUssRUFBSSxJQUFNLElBQUssTUFDbkMsSUFBSyxJQUNKQSxFQUFPcTJDLEdBQUlyMkMsQ0FBSSxFQUNmQSxFQUFLLEVBQUlBLEVBQUssR0FBS3M4QixHQUFVLEVBQUUsRUFDL0J0OEIsRUFBSyxFQUFJczFDLEdBQVFXLEdBQVVqMkMsRUFBSyxDQUFDLENBQUMsRUFBR0EsRUFBSyxFQUFJLElBQzlDLE1BRUQsSUFBSyxJQUFLLElBQUssSUFBSzFqQixFQUFLLEdBQUcwakIsRUFBSyxFQUFHLE1BQ3BDLFFBQVMxakIsRUFBSzBqQixFQUFLLEVBQUcsS0FDdEIsQ0FDRCxJQUFJL2hDLEVBQWEsQ0FBQ2tvRSxFQUFLLEVBQUVOLENBQUMsRUFLMUIsT0FIQTVuRSxFQUFFLEVBQUlxbEgsR0FBZWx3SCxFQUFLLFFBQVM0c0MsRUFBTTVzQyxDQUFJLEVBQzFDNHNDLEVBQUssR0FBRzJnRCxFQUFHLFFBQVEsRUFBRSxLQUFLLENBQUM1QixHQUFZOWdGLENBQUMsRUFBRytoQyxFQUFLLENBQUMsQ0FBQyxFQUNsREEsRUFBSyxHQUFHMmdELEVBQUcsV0FBVyxFQUFFLEtBQUssQ0FBQzVCLEdBQVk5Z0YsQ0FBQyxFQUFHK2hDLEVBQUssQ0FBQyxDQUFDLEVBQ2pEQSxFQUFLLEVBQUMsQ0FDWixJQUFLLElBQUssSUFBSyxNQUNkLE9BQUc1c0MsRUFBSyxTQUNQa3BCLEVBQUt5bUcsR0FBVzN2SCxFQUFLLFFBQVU0c0MsRUFBSyxFQUFZNXNDLEVBQUssVUFBVSxFQUMvRDZLLEVBQUUsRUFBSSxJQUFLQSxFQUFFLEVBQUlxZSxFQUNkd3hHLEVBQVdydkMsR0FBYUMsRUFBSSxHQUEyQnNzQyxHQUFtQmhyRixFQUFNL2hDLENBQUMsQ0FBQyxFQUNoRndnRixHQUFhQyxFQUFJLEVBQTBCb3NDLEdBQWtCOXFGLEVBQU0vaEMsQ0FBQyxDQUFDLElBRTFFQSxFQUFFLEVBQUksTUFDSDZ2SCxFQUFXcnZDLEdBQWFDLEVBQUksR0FBeUJtdEMsR0FBaUI3ckYsRUFBTS9oQyxDQUFDLENBQUMsRUFDNUV3Z0YsR0FBYUMsRUFBSSxFQUF3Qml0QyxHQUFnQjNyRixFQUFNL2hDLENBQUMsQ0FBQyxHQUVoRSxHQUNSLElBQUssSUFFSixPQUFHK2hDLEVBQUssSUFBTUEsRUFBSyxFQUFJLElBQU1BLEVBQUssRUFBSSxNQUFTQSxFQUFLLEVBQUksSUFDcEQ4dEYsRUFBV3J2QyxHQUFhQyxFQUFJLEdBQXlCOHNDLEdBQWlCeHJGLEVBQU0vaEMsQ0FBQyxDQUFDLEVBQzVFd2dGLEdBQWFDLEVBQUksRUFBd0I0c0MsR0FBZ0J0ckYsRUFBTS9oQyxDQUFDLENBQUMsRUFFbkU2dkgsRUFBV3J2QyxHQUFhQyxFQUFJLEdBQTJCMHNDLEdBQW1CcHJGLEVBQU0vaEMsQ0FBQyxDQUFDLEVBQ2hGd2dGLEdBQWFDLEVBQUksRUFBMEJ3c0MsR0FBa0JsckYsRUFBTS9oQyxDQUFDLENBQUMsRUFDbEUsR0FDVixJQUFLLElBQ0osT0FBQUEsRUFBRSxFQUFJLElBQ0g2dkgsRUFBV3J2QyxHQUFhQyxFQUFJLEdBQTJCNHJDLEdBQW1CdHFGLEVBQU0vaEMsQ0FBQyxDQUFDLEVBQ2hGd2dGLEdBQWFDLEVBQUksRUFBMEIwckMsR0FBa0JwcUYsRUFBTS9oQyxDQUFDLENBQUMsRUFDbkUsR0FDUixJQUFLLElBQ0osT0FBQUEsRUFBRSxFQUFJLElBQ0g2dkgsRUFBV3J2QyxHQUFhQyxFQUFJLEdBQTRCaXNDLEdBQW9CM3FGLEVBQU0vaEMsQ0FBQyxDQUFDLEVBQ2xGd2dGLEdBQWFDLEVBQUksRUFBMkIrckMsR0FBbUJ6cUYsRUFBTS9oQyxDQUFDLENBQUMsRUFDckUsRUFDUixDQUNELE9BQUc2dkgsRUFBV3J2QyxHQUFhQyxFQUFJLEdBQTRCdXJDLEdBQW9CanFGLEVBQU0vaEMsQ0FBQyxDQUFDLEVBQ2xGd2dGLEdBQWFDLEVBQUksRUFBMkJvckMsR0FBbUI5cEYsRUFBTS9oQyxDQUFDLENBQUMsRUFDckUsRUFDUixDQUVBLFNBQVM4dkgsR0FBZ0JydkMsRUFBSWlDLEVBQWtCNWlDLEVBQWdCM3FELEVBQXlCLENBQ3ZGLElBQUkyb0MsRUFBUWtrRCxHQUFrQlUsRUFBRyxNQUFNLEdBQUssSUFBSSxFQUFHbG5GLEVBQUs0bUUsRUFBSyxHQUFJMzlCLEVBQXlCLENBQUEsRUFDMUYrN0MsR0FBYUMsRUFBSSxLQUNqQixJQUFJZ0MsRUFBUSxNQUFNLFFBQVFDLENBQUUsRUFDeEJxdEMsRUFBTWp5RixFQUFNLEVBQUUsRUFDZjRrRCxFQUFHLE9BQU8sSUFBR3F0QyxFQUFNLEtBQUssSUFBSWp5RixFQUFNLEVBQUUsRUFBRzRrRCxFQUFHLE9BQU8sRUFBRSxPQUFTLENBQUMsR0FDaEUsUUFBUXhhLEVBQUlwcUMsRUFBTSxFQUFFLEVBQUdvcUMsR0FBSzZuRCxFQUFLLEVBQUU3bkQsRUFBRyxDQUNyQzlGLEVBQUsrZSxHQUFXalosQ0FBQyxFQUdqQm9qRCxHQUFpQjdxQyxFQUFJaUMsRUFBSTVrRCxFQUFPb3FDLENBQUMsRUFDakMsSUFBSTJuRCxFQUFZLEdBQ2hCLEdBQUczbkQsR0FBS3BxQyxFQUFNLEVBQUUsRUFBRyxRQUFROHBDLEVBQUk5cEMsRUFBTSxFQUFFLEVBQUc4cEMsR0FBSzlwQyxFQUFNLEVBQUUsRUFBRyxFQUFFOHBDLEVBQUcsQ0FFM0RNLElBQU1wcUMsRUFBTSxFQUFFLElBQUcyRyxFQUFLbWpDLENBQUMsRUFBSXNaLEdBQVd0WixDQUFDLEdBQzFDcHNFLEVBQU1pcEMsRUFBS21qQyxDQUFDLEVBQUl4RixFQUNoQixJQUFJcmdDLEVBQU8wZ0QsR0FBU0MsRUFBR3hhLENBQUMsR0FBRyxDQUFFLEdBQUVOLENBQUMsRUFBSThhLEVBQUdsbkYsQ0FBRyxFQUMxQyxHQUFHLENBQUN1bUMsRUFBTSxDQUFFOHRGLEVBQVksR0FBTyxRQUFXLENBRTFDQSxFQUFZRCxHQUFrQm52QyxFQUFJMStDLEVBQU1tbUMsRUFBR04sRUFBR3p5RSxFQUFNdXRGLEVBQUltdEMsQ0FBUyxDQUNqRSxDQUNELENBQ0RydkMsR0FBYUMsRUFBSSxJQUNsQixDQUVBLFNBQVN1dkMsR0FBaUJ2dkMsRUFBSWlDLEVBQWtCLENBQzVDLENBQUNBLEdBQU0sQ0FBQ0EsRUFBRyxTQUFTLElBQ3ZCbEMsR0FBYUMsRUFBSSxJQUFpQzB0QyxHQUF5QnpyQyxFQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFDaEdBLEVBQUcsU0FBUyxFQUFFLFFBQVEsU0FBU2pvQixFQUFHLENBQUUrbEIsR0FBYUMsRUFBSSxJQUEyQnl0QyxHQUFtQnp6RCxDQUFDLENBQUMsQ0FBSSxDQUFBLEVBQ3pHK2xCLEdBQWFDLEVBQUksS0FDbEIsQ0FFQSxTQUFTd3ZDLEdBQWV4dkMsRUFBSWlDLEVBQXVELENBQy9FLENBQUNBLEdBQU0sQ0FBQ0EsRUFBRyxPQUFPLElBQ3JCbEMsR0FBYUMsRUFBSSxLQUNqQmlDLEVBQUcsT0FBTyxFQUFFLFFBQVEsU0FBU2pvQixFQUFHN2dFLEVBQUcsQ0FBSzZnRSxHQUFHK2xCLEdBQWFDLEVBQUksR0FBMkJtdUMsR0FBaUJoMUgsRUFBRzZnRSxDQUFDLENBQUMsQ0FBRSxDQUFFLEVBQ2pIK2xCLEdBQWFDLEVBQUksS0FDbEIsQ0FFQSxTQUFTeXZDLEdBQWdCenZDLEVBQUlpQyxFQUFrQixDQUMzQyxDQUFDQSxHQUFNLENBQUNBLEVBQUcsTUFBTSxJQUNwQmxDLEdBQWFDLEVBQUksS0FDakJELEdBQWFDLEVBQUksSUFBOEIwdUMsR0FBc0JudEMsR0FBa0JVLEVBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNuR2xDLEdBQWFDLEVBQUksS0FDbEIsQ0FFQSxTQUFTMHZDLEdBQWExdkMsRUFBSWlDLEVBQWtCcUcsRUFBTSxDQUVqRHJHLEVBQUcsUUFBUSxFQUFFLFFBQVEsU0FBUzdnRSxFQUFHLENBQ2hDLEdBQUlBLEVBQUUsQ0FBQyxFQUFFLE9BQ1QsS0FBSXduRSxFQUFNRCxHQUFTTCxFQUFNLEdBQUlsbkUsRUFBRSxDQUFDLEVBQUUsT0FBTyxRQUFRLE9BQVEsRUFBRSxFQUFHOG1FLEdBQUssS0FBSyxFQUN4RW5JLEdBQWFDLEVBQUksSUFBdUI2dEMsR0FBZXpzRyxFQUFHd25FLENBQUcsQ0FBQyxFQUNoRSxDQUFFLEVBQ0QsT0FBTzNHLEVBQUcsUUFBUSxDQUNuQixDQUNBLFNBQVMwdEMsR0FBb0IzdkMsRUFBSWlDLEVBQWtCNWlDLEVBQWdCaXBDLEVBQU0sQ0FFeEUsR0FBR3JHLEVBQUcsV0FBVyxFQUFFLE9BQVMsRUFBRyxDQUM5QixJQUFJMkcsRUFBTUQsR0FBU0wsRUFBTSxHQUFJLDBCQUE0QmpwQyxFQUFJLEdBQUssT0FBUTZvQyxHQUFLLEdBQUcsRUFDbEZuSSxHQUFhQyxFQUFJLElBQStCb0UsR0FBWSxNQUFRd0UsQ0FBRyxDQUFDLEVBQ3hFM0csRUFBRyxTQUFTLEVBQUkyRyxDQUNoQixDQUNGLENBRUEsU0FBU2duQyxHQUFpQjV2QyxFQUFJaUMsRUFBSTJTLEVBQUl2MUMsRUFBSyxDQUMxQyxHQUFJNGlDLEVBQUcsYUFBYSxFQUNwQixLQUFJajFFLEVBQU9pMUUsRUFBRyxhQUFhLEVBQ3ZCbG5GLEVBQU0sT0FBT2lTLEVBQUssS0FBUSxTQUFXQSxFQUFLLElBQU1vMEUsR0FBYXAwRSxFQUFLLEdBQUcsRUFHckU0bkYsRUFBRyxXQUFVQSxFQUFHLFNBQVksQ0FBQyxPQUFPLENBQUUsQ0FBQSxHQUN0Q0EsRUFBRyxTQUFTLFFBQU9BLEVBQUcsU0FBUyxNQUFRLElBQzNDLElBQUlrekIsRUFBeUJsekIsRUFBRyxTQUFTLE1BQ3JDdjNELEVBQVE4akQsR0FBYXBtRixDQUFHLEVBQ3pCc2lDLEVBQU0sRUFBRSxHQUFLQSxFQUFNLEVBQUUsSUFBS0EsRUFBTSxFQUFFLEVBQUk4akQsR0FBYWMsRUFBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUdsbkYsRUFBTXFtRixHQUFhL2pELENBQUssR0FDL0YsUUFBUWxrQyxFQUFJLEVBQUdBLEVBQUkydUgsRUFBTSxPQUFRLEVBQUUzdUgsRUFBRyxDQUNyQyxJQUFJaEUsRUFBTzJ5SCxFQUFNM3VILENBQUMsRUFDbEIsR0FBR2hFLEVBQUssTUFBUSx5QkFDYkEsRUFBSyxPQUFTa3FELEVBQ2pCLENBQUFscUQsRUFBSyxJQUFNLElBQU15L0YsRUFBRyxXQUFXdjFDLENBQUcsRUFBSSxLQUFPdGtELEVBQUssTUFDbEQsQ0FDRTVCLEdBQUsydUgsRUFBTSxRQUFRQSxFQUFNLEtBQUssQ0FBRSxLQUFNLHdCQUF5QixNQUFPem9FLEVBQUssSUFBSyxJQUFNdTFDLEVBQUcsV0FBV3YxQyxDQUFHLEVBQUksS0FBT3RrRCxDQUFHLENBQUcsRUFFM0hnbEYsR0FBYUMsRUFBSSxJQUE4QjhFLEdBQW1CdkQsR0FBa0J4bUYsQ0FBRyxDQUFDLENBQUMsRUFJekZnbEYsR0FBYUMsRUFBSSxLQUNsQixDQUVBLFNBQVM2dkMsR0FBZTd2QyxFQUFJaUMsRUFBSXdzQyxFQUFVLENBQ3pDMXVDLEdBQWFDLEVBQUksS0FHaEJELEdBQWFDLEVBQUksSUFBNkJ3dUMsR0FBcUJ2c0MsRUFBSXdzQyxDQUFRLENBQUMsRUFLaEYxdUMsR0FBYUMsRUFBSSxLQUdsQkQsR0FBYUMsRUFBSSxJQUNsQixDQU9BLFNBQVM4dkMsR0FBbUI5dkMsRUFBSWlDLEVBQUksQ0FDL0JBLEVBQUcsVUFBVSxHQUVqQmxDLEdBQWFDLEVBQUksSUFBaUMydUMsR0FBeUIxc0MsRUFBRyxVQUFVLENBQUMsQ0FBQyxDQUMzRixDQUVBLFNBQVM4dEMsR0FBYTF3RSxFQUFnQjNxRCxFQUFNa2dHLEVBQWlCdE0sRUFBTSxDQUNsRSxJQUFJdEksRUFBS04sS0FDTDlnRixFQUFJZzJGLEVBQUcsV0FBV3YxQyxDQUFHLEVBQUc0aUMsRUFBSzJTLEVBQUcsT0FBT2gyRixDQUFDLEdBQUssR0FDN0MrYyxFQUFlL2MsRUFBRyxHQUFJLENBQUtnMkYsR0FBTUEsRUFBRyxXQUFVajVFLEVBQUlpNUUsRUFBRyxTQUFTLE9BQU92MUMsQ0FBRyxFQUFFLFVBQVkxakMsRUFBSSxNQUFVLENBQUUsQ0FDMUcsSUFBSWpkLEVBQUk2aUYsR0FBa0JVLEVBQUcsTUFBTSxHQUFLLElBQUksRUFDNUMsR0FBR3ZqRixFQUFFLEVBQUUsRUFBSSxPQUFVQSxFQUFFLEVBQUUsRUFBSSxRQUFTLENBQ3JDLEdBQUdoSyxFQUFLLElBQUssTUFBTSxJQUFJLE1BQU0sVUFBWXV0RixFQUFHLE1BQU0sR0FBSyxNQUFRLHFDQUFxQyxFQUNwR3ZqRixFQUFFLEVBQUUsRUFBSSxLQUFLLElBQUlBLEVBQUUsRUFBRSxFQUFHLEtBQU0sRUFDOUJBLEVBQUUsRUFBRSxFQUFJLEtBQUssSUFBSUEsRUFBRSxFQUFFLEVBQUcsT0FBTyxDQUMvQixDQUNELE9BQUF1akYsRUFBRyxRQUFRLEVBQUksR0FFZkEsRUFBRyxXQUFXLEVBQUksR0FDbEJsQyxHQUFhQyxFQUFJLE1BQ2Q0VSxFQUFHLFFBQVUzUyxFQUFHLFVBQVUsSUFBR2xDLEdBQWFDLEVBQUksSUFBd0JrckMsR0FBZ0J2dkcsRUFBR3NtRSxFQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQzNHbEMsR0FBYUMsRUFBSSxJQUF1QitxQyxHQUFlcnNILENBQUMsQ0FBQyxFQUN6RG14SCxHQUFlN3ZDLEVBQUlpQyxFQUFJMlMsRUFBRyxRQUFRLEVBRWxDNDZCLEdBQWV4dkMsRUFBSWlDLENBQWlCLEVBQ3BDb3RDLEdBQWdCcnZDLEVBQUlpQyxFQUFJNWlDLEVBQUszcUQsQ0FBUSxFQUVyQ283SCxHQUFtQjl2QyxFQUFJaUMsQ0FBRSxFQUd6QjJ0QyxHQUFpQjV2QyxFQUFJaUMsRUFBSTJTLEVBQUl2MUMsQ0FBRyxFQUloQ2t3RSxHQUFpQnZ2QyxFQUFJaUMsQ0FBRSxFQUl2Qnl0QyxHQUFhMXZDLEVBQUlpQyxFQUFJcUcsQ0FBSSxFQUV0QnJHLEVBQUcsVUFBVSxHQUFHbEMsR0FBYUMsRUFBSSxJQUF5QnN1QyxHQUFpQnJzQyxFQUFHLFVBQVUsQ0FBQyxDQUFDLEdBTzFGLENBQUN2dEYsR0FBUUEsRUFBSyxVQUFhQSxFQUFLLFVBQWEsT0FBVSs2SCxHQUFnQnp2QyxFQUFJaUMsQ0FBRSxFQUdoRjB0QyxHQUFvQjN2QyxFQUFJaUMsRUFBSTVpQyxFQUFLaXBDLENBQUksRUFRckN2SSxHQUFhQyxFQUFJLEtBQ1ZBLEVBQUcsS0FDWCxDQUNBLFNBQVNnd0MsR0FBWWhqSCxFQUE2RCxDQUNqRixJQUFJVyxFQUErQixDQUFBLEVBQy9CNnZCLEVBQU14d0IsRUFBSyxNQUFNLGVBQWUsRUFDaEMxTixHQUdIME4sRUFBSyxNQUFNLG1DQUFtQyxHQUFHLENBQUEsR0FBSSxRQUFRLFNBQVMrakcsRUFBSSxDQUMxRSxJQUFJcHlDLEVBQUlveUMsRUFBRyxNQUFNLDZDQUE2QyxFQUMxRHB5QyxJQUNKaHhELEVBQUksQ0FBQ2d4RCxFQUFFLENBQUMsQ0FBQyxFQUFJbmhDLEVBQU0sQ0FBQ21oQyxFQUFFLENBQUMsRUFBSUEsRUFBRSxDQUFDLEVBQ2hDLENBQUUsRUFHRCxJQUFJc3hELEVBQUs5MUMsSUFBYW50RSxFQUFLLE1BQU0sMENBQTBDLEdBQUssQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFFbEcsT0FBQ0EsRUFBSyxNQUFNLHFCQUFxQixHQUFHLENBQUUsR0FBRSxRQUFRLFNBQVN1bEYsRUFBRyxDQUFFanpGLEVBQUlpekYsRUFBRSxRQUFRLFNBQVMsRUFBRSxDQUFFLENBQUUsRUFFcEYsQ0FBQzVrRixFQUFLc2lILEVBQUkzd0gsQ0FBQyxDQUNuQixDQUdBLFNBQVM0d0gsR0FBWWxqSCxFQUFrQjdYLEVBQWlCVCxFQUFNNHpGLEVBQU1zTSxFQUFJdTdCLEVBQVEsQ0FDL0UsSUFBSTl1QyxFQUFxQjh1QyxHQUFVLENBQUMsUUFBUSxPQUFPLEVBQ25ELEdBQUcsQ0FBQ25qSCxFQUFNLE9BQU9takgsRUFHakIsSUFBSWhwRCxFQUFJLEVBQUdNLEVBQUksRUFBRzk1RCxFQUFNLElBQ3BCczRGLEVBQVcsQ0FBQyxFQUFHLENBQUMsRUFBRSxJQUFTLEVBQUUsR0FBTyxFQUFHLEVBQUcsQ0FBQyxFQUFFLEVBQUcsRUFBRSxDQUFDLENBQUMsRUFHeEQsT0FBQ2o1RixFQUFLLE1BQU0sc0NBQXNDLEdBQUcsQ0FBQSxHQUFJLFFBQVEsU0FBU29qSCxFQUFJLENBQzdFLElBQUludEUsRUFBUStzRSxHQUFZSSxDQUFFLEVBQzFCbnFCLEVBQVMsRUFBRSxFQUFJQSxFQUFTLEVBQUUsRUFBSSxFQUM5QkEsRUFBUyxFQUFFLEVBQUk5K0IsRUFDZng1RCxFQUFNOHlFLEdBQVd0WixDQUFDLEVBQ2xCbGtCLEVBQU0sQ0FBQyxFQUFFLFFBQVEsU0FBU3RrRCxFQUFFeEYsRUFBRyxDQUM5QmtvRixFQUFHMXpFLEVBQU0reUUsR0FBV3ZuRixDQUFDLENBQUMsRUFBSSxDQUFDLEVBQUUsSUFBSyxFQUFFd0YsRUFBRyxFQUFFc2tELEVBQU0sQ0FBQyxDQUFDLEVBQ2pEd2tCLEVBQUl0dUUsQ0FDUCxDQUFHLEVBQ0U4c0csRUFBUyxFQUFFLEVBQUl4K0IsSUFBR3crQixFQUFTLEVBQUUsRUFBSXgrQixHQUNwQyxFQUFFTixDQUNKLENBQUUsRUFDRUEsRUFBSSxJQUFHa2EsRUFBRyxNQUFNLEVBQUlELEdBQWE2a0IsQ0FBUSxHQUNyQzVrQixDQUNSLENBRUEsU0FBU2d2QyxHQUFhcmpILEVBQWtCdFksRUFBTTJxRCxFQUFnQmlwQyxFQUFNc00sRUFBd0MsQ0FDM0csR0FBRyxDQUFDNW5GLEVBQU0sT0FBT0EsRUFFYnM3RSxJQUFNQSxFQUFPLENBQUMsTUFBTSxDQUFFLENBQUEsR0FDMUIsSUFBSTFwRixFQUFLLENBQUMsUUFBUSxRQUFTLFVBQVUsS0FBTSxPQUFPLEVBQUUsRUFDaERvN0QsRUFHQWdzRCxFQUFVaDVHLEVBQUssTUFBTXk0RyxFQUFZLEVBQ3JDLE9BQUdPLEdBQVNDLEdBQXFCRCxFQUFRLENBQUMsRUFBR3BuSCxFQUFHZzJGLEVBQUl2MUMsQ0FBRyxHQUduRDJhLEVBQUlodEQsRUFBSyxNQUFNLHNCQUFzQixLQUFJcE8sRUFBRSxNQUFNLEVBQUlvN0QsRUFBRSxDQUFDLEdBRXpEc3VCLEVBQUssS0FBSyxFQUFFMXBGLEVBQUUsTUFBTSxDQUFDLElBQUdBLEVBQUUsU0FBUyxFQUFJMHBGLEVBQUssS0FBSyxFQUFFMXBGLEVBQUUsTUFBTSxDQUFDLEdBQ3hEQSxDQUNSLENBYUEsU0FBUzB4SCxHQUFnQnRqSCxFQUFNbVosRUFBbUIsQ0FDakRuWixFQUFLLEdBQUssR0FDVixJQUFJN1gsRUFBT3l0RixHQUFtQjUxRSxDQUFpQixFQUMvQyxNQUFPLENBQUUsS0FBTTdYLEVBQ2hCLENBR0EsU0FBU283SCxHQUFhdmpILEVBQU10WSxFQUFNMnFELEVBQWdCaXBDLEVBQU1zTSxFQUF3QyxDQUMvRixHQUFHLENBQUM1bkYsRUFBTSxPQUFPQSxFQUNiczdFLElBQU1BLEVBQU8sQ0FBQyxNQUFNLENBQUUsQ0FBQSxHQUMxQixJQUFJMXBGLEVBQUksQ0FBQyxRQUFRLFFBQVMsVUFBVSxLQUFNLE9BQU8sRUFBRSxFQUUvQ3dxRyxFQUFPLEdBQ1gsT0FBQS9wQixHQUFhcnlFLEVBQU0sU0FBa0JqVCxFQUFLMHRFLEVBQUcrWCxFQUFJLENBQ2hELE9BQU9BLEVBQUUsQ0FFUixJQUFLLEtBQ0o1Z0YsRUFBRSxNQUFNLEVBQUk3RSxFQUFLLE1BRWxCLElBQUssS0FDQTY2RixFQUFHLE9BQU92MUMsQ0FBRyxJQUFHdTFDLEVBQUcsT0FBT3YxQyxDQUFHLEVBQUksSUFDbEN0bEQsRUFBSSxPQUFNNjZGLEVBQUcsT0FBT3YxQyxDQUFHLEVBQUUsU0FBV3RsRCxFQUFJLE1BQzNDLE1BRUQsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssTUFDSixNQUVELElBQUssSUFDSnF2RyxFQUFPLEdBQU0sTUFDZCxJQUFLLElBQ0pBLEVBQU8sR0FBTyxNQUNmLElBQUssSUFDWSxNQUNqQixJQUFLLElBQ1MsTUFFZCxRQUNDLEdBQUcsRUFBQTNoQyxFQUFFLEVBQUksSUFDSixHQUFHLEVBQUFBLEVBQUUsRUFBSSxJQUNULEdBQUcsQ0FBQzJoQyxHQUFRMTBHLEVBQUssSUFBSyxNQUFNLElBQUksTUFBTSx1QkFBeUI4cUYsRUFBRyxTQUFTLEVBQUUsQ0FBQyxHQUNwRixDQUNELEVBQUU5cUYsQ0FBSSxFQUVKNHpGLEVBQUssS0FBSyxFQUFFMXBGLEVBQUUsTUFBTSxDQUFDLElBQUdBLEVBQUUsU0FBUyxFQUFJMHBGLEVBQUssS0FBSyxFQUFFMXBGLEVBQUUsTUFBTSxDQUFDLEdBQ3hEQSxDQUNSLENBcUJBLElBQUk0eEgsR0FBYSxDQUNoQixDQUFDLG9CQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyx1QkFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsYUFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMscUJBQStCLEdBQU8sTUFBTSxFQUM3QyxDQUFDLFdBQStCLEVBQUUsRUFDbEMsQ0FBQyxXQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyxzQkFBK0IsRUFBUSxLQUFLLEVBQzdDLENBQUMsZ0JBQStCLEdBQU8sTUFBTSxFQUM3QyxDQUFDLHFCQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyxvQkFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsZUFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsd0JBQStCLEdBQU8sTUFBTSxFQUM3QyxDQUFDLHlCQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyw2QkFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsb0JBQStCLEdBQU8sTUFBTSxFQUM3QyxDQUFDLGNBQStCLEtBQUssRUFDckMsQ0FBQyx1QkFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsY0FBZSxTQUFTLENBQzFCLEVBR0lDLEdBQVksQ0FDZixDQUFDLFlBQStCLEVBQVEsS0FBSyxFQUM3QyxDQUFDLHlCQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyxhQUErQixFQUFRLEtBQUssRUFDN0MsQ0FBQyxZQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyx1QkFBK0IsR0FBTyxNQUFNLEVBQzdDLENBQUMsZ0JBQStCLEdBQU8sTUFBTSxFQUM3QyxDQUFDLHFCQUErQixHQUFPLE1BQU0sRUFDN0MsQ0FBQyxXQUErQixJQUFRLEtBQUssRUFDN0MsQ0FBQyxhQUErQixTQUFTLENBRTFDLEVBR0lDLEdBQVcsQ0FFZixFQUdJQyxHQUFZLENBQ2YsQ0FBQyxnQkFBaUIsTUFBTSxFQUN4QixDQUFDLFdBQVksTUFBTSxFQUNuQixDQUFDLGFBQWMsTUFBTSxFQUNyQixDQUFDLGlCQUFrQixNQUFNLEVBQ3pCLENBQUMsaUJBQWtCLE9BQU8sRUFDMUIsQ0FBQyxnQkFBaUIsTUFBTSxFQUN4QixDQUFDLFVBQVcsT0FBTyxFQUNuQixDQUFDLGVBQWdCLEtBQUssRUFDdEIsQ0FBQyxlQUFnQixPQUFPLEVBQ3hCLENBQUMsVUFBVyxJQUFJLENBQ2pCLEVBd0JBLFNBQVNDLEdBQW9CanVILEVBQVFpeUMsRUFBVSxDQUM5QyxRQUFRbWxCLEVBQUksRUFBR0EsR0FBS3AzRCxFQUFPLE9BQVEsRUFBRW8zRCxFQUNwQyxRQUQ2QzJGLEVBQUkvOEQsRUFBT28zRCxDQUFDLEVBQ2pENWdFLEVBQUUsRUFBR0EsR0FBS3k3QyxFQUFTLE9BQVEsRUFBRXo3QyxFQUFHLENBQUUsSUFBSXNtQyxFQUFJbVYsRUFBU3o3QyxDQUFDLEVBQzNELEdBQUd1bUUsRUFBRWpnQyxFQUFFLENBQUMsQ0FBQyxHQUFLLEtBQU1pZ0MsRUFBRWpnQyxFQUFFLENBQUMsQ0FBQyxFQUFJQSxFQUFFLENBQUMsTUFDNUIsUUFBT0EsRUFBRSxDQUFDLEVBQUMsQ0FDaEIsSUFBSyxPQUFXLE9BQU9pZ0MsRUFBRWpnQyxFQUFFLENBQUMsQ0FBQyxHQUFLLFdBQVVpZ0MsRUFBRWpnQyxFQUFFLENBQUMsQ0FBQyxFQUFJdzdDLEdBQWF2YixFQUFFamdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUM3RSxJQUFLLE1BQVUsT0FBT2lnQyxFQUFFamdDLEVBQUUsQ0FBQyxDQUFDLEdBQUssV0FBVWlnQyxFQUFFamdDLEVBQUUsQ0FBQyxDQUFDLEVBQUksU0FBU2lnQyxFQUFFamdDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsRUFBRSxHQUFHLEtBQzNFLENBQ0QsQ0FFSCxDQUNBLFNBQVNveEYsR0FBY2x1SCxFQUFRaXlDLEVBQVUsQ0FDeEMsUUFBUXo3QyxFQUFJLEVBQUdBLEdBQUt5N0MsRUFBUyxPQUFRLEVBQUV6N0MsRUFBRyxDQUFFLElBQUlzbUMsRUFBSW1WLEVBQVN6N0MsQ0FBQyxFQUM3RCxHQUFHd0osRUFBTzg4QixFQUFFLENBQUMsQ0FBQyxHQUFLLEtBQU05OEIsRUFBTzg4QixFQUFFLENBQUMsQ0FBQyxFQUFJQSxFQUFFLENBQUMsTUFDdEMsUUFBT0EsRUFBRSxDQUFDLEVBQUMsQ0FDZixJQUFLLE9BQVcsT0FBTzk4QixFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLEdBQUssV0FBVTk4QixFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLEVBQUl3N0MsR0FBYXQ0RSxFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUM1RixJQUFLLE1BQVUsT0FBTzk4QixFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLEdBQUssV0FBVTk4QixFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLEVBQUksU0FBUzk4QixFQUFPODhCLEVBQUUsQ0FBQyxDQUFDLEVBQUcsRUFBRSxHQUFHLEtBQzNGLENBQ0QsQ0FDRixDQUVBLFNBQVNxeEYsR0FBa0JsOEIsRUFBSSxDQUM5Qmk4QixHQUFjajhCLEVBQUcsUUFBUzQ3QixFQUFVLEVBQ3BDSyxHQUFjajhCLEVBQUcsT0FBUSs3QixFQUFTLEVBRWxDQyxHQUFvQmg4QixFQUFHLE9BQVE2N0IsRUFBUyxFQUN4Q0csR0FBb0JoOEIsRUFBRyxPQUFRODdCLEVBQVEsRUFFdkN2TSxHQUFTLFNBQVdscEMsR0FBYTJaLEVBQUcsUUFBUSxRQUFRLENBQ3JELENBRUEsU0FBU204QixHQUFTbjhCLEVBQTRCLENBRzdDLE1BREcsQ0FBQ0EsRUFBRyxVQUNKLENBQUNBLEVBQUcsU0FBUyxRQUFnQixRQUN6QjNaLEdBQWEyWixFQUFHLFNBQVMsUUFBUSxRQUFRLEVBQUksT0FBUyxPQUM5RCxDQUVBLElBQUlvOEIsR0FBd0IsVUFBVyxNQUFNLEVBQUUsRUFDL0MsU0FBU0MsR0FBY3R5SCxFQUFjZzZFLEVBQStCLENBQ25FLEdBQUdoNkUsRUFBRSxPQUFTLEdBQUksQ0FBRSxHQUFHZzZFLEVBQU0sTUFBTyxHQUFPLE1BQU0sSUFBSSxNQUFNLG9DQUFvQyxDQUFJLENBQ25HLElBQUl1NEMsRUFBUSxHQUNaLE9BQUFGLEdBQVMsUUFBUSxTQUFTcjFHLEVBQUcsQ0FDNUIsR0FBR2hkLEVBQUUsUUFBUWdkLENBQUMsR0FBSyxHQUNuQixJQUFHLENBQUNnOUQsRUFBTSxNQUFNLElBQUksTUFBTSwwQ0FBMEMsRUFDcEV1NEMsRUFBUSxHQUNWLENBQUUsRUFDTUEsQ0FDUixDQUNBLFNBQVNDLEdBQWVDLEVBQUczckQsRUFBRzRyRCxFQUFPLENBQ3BDRCxFQUFFLFFBQVEsU0FBUyxFQUFFajRILEVBQUcsQ0FDdkI4M0gsR0FBYyxDQUFDLEVBQ2YsUUFBUWwzRCxFQUFJLEVBQUdBLEVBQUk1Z0UsRUFBRyxFQUFFNGdFLEVBQUcsR0FBRyxHQUFLcTNELEVBQUVyM0QsQ0FBQyxFQUFHLE1BQU0sSUFBSSxNQUFNLHlCQUEyQixDQUFDLEVBQ3JGLEdBQUdzM0QsRUFBTyxDQUNULElBQUlDLEVBQU03ckQsR0FBS0EsRUFBRXRzRSxDQUFDLEdBQUtzc0UsRUFBRXRzRSxDQUFDLEVBQUUsVUFBYSxFQUN6QyxHQUFHbTRILEVBQUcsV0FBVyxDQUFDLEdBQUssSUFBTUEsRUFBRyxPQUFTLEdBQUksTUFBTSxJQUFJLE1BQU0sMkJBQTZCQSxDQUFFLENBQzVGLENBQ0gsQ0FBRSxDQUNGLENBQ0EsU0FBU0MsR0FBUzM4QixFQUFJLENBQ3JCLEdBQUcsQ0FBQ0EsR0FBTSxDQUFDQSxFQUFHLFlBQWMsQ0FBQ0EsRUFBRyxPQUFRLE1BQU0sSUFBSSxNQUFNLGtCQUFrQixFQUMxRSxHQUFHLENBQUNBLEVBQUcsV0FBVyxPQUFRLE1BQU0sSUFBSSxNQUFNLG1CQUFtQixFQUM3RCxJQUFJNDhCLEVBQVU1OEIsRUFBRyxVQUFZQSxFQUFHLFNBQVMsUUFBVyxHQUNwRHU4QixHQUFldjhCLEVBQUcsV0FBWTQ4QixFQUFRLENBQUMsQ0FBQzU4QixFQUFHLE1BQU0sRUFDakQsUUFBUXo3RixFQUFJLEVBQUdBLEVBQUl5N0YsRUFBRyxXQUFXLE9BQVEsRUFBRXo3RixFQUFHNnJILEdBQVNwd0IsRUFBRyxPQUFPQSxFQUFHLFdBQVd6N0YsQ0FBQyxDQUFDLEVBQUd5N0YsRUFBRyxXQUFXejdGLENBQUMsRUFBR0EsQ0FBQyxDQUV4RyxDQUVBLElBQUlzNEgsR0FBWSxnQkFDaEIsU0FBU0MsR0FBYTFrSCxFQUFNdFksRUFBdUIsQ0FDbEQsR0FBRyxDQUFDc1ksRUFBTSxNQUFNLElBQUksTUFBTSxxQkFBcUIsRUFDL0MsSUFBSTRuRixFQUFZLENBQUUsV0FBVyxDQUFBLEVBQUksUUFBUSxDQUFBLEVBQUksT0FBTyxDQUFFLEVBQUUsT0FBTyxDQUFFLEVBQUUsT0FBTyxHQUFJLE1BQU0sQ0FBQSxFQUFJLE1BQU8sSUFDM0Z3VSxFQUFPLEdBQU91b0IsRUFBUSxRQUN0QkMsRUFBUSxDQUFBLEVBQUlDLEVBQVUsRUFtSjFCLEdBbEpBN2tILEVBQUssUUFBUXdzRSxHQUFVLFNBQWdCdC9DLEVBQUdtbEIsRUFBSyxDQUM5QyxJQUFJaE0sRUFBWXNtQyxHQUFZei9DLENBQUMsRUFDN0IsT0FBTzgvQyxHQUFTM21DLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FDcEIsSUFBSyxRQUFTLE1BR2QsSUFBSyxZQUNEblosRUFBRSxNQUFNdTNGLEVBQVMsSUFBR0UsRUFBUSxRQUFVejNGLEVBQUUsTUFBTSxTQUFTLEVBQUUsQ0FBQyxHQUM3RDA2RCxFQUFHLE1BQVF2aEQsRUFBRXMrRSxDQUFLLEVBQ2xCLE1BQ0QsSUFBSyxjQUFlLE1BR3BCLElBQUssZUFBZ0IsT0FBT3QrRSxFQUFFLENBQUMsRUFBR3VoRCxFQUFHLFdBQWF2aEQsRUFBRyxNQUNyRCxJQUFLLGlCQUFrQixJQUFLLGlCQUFrQixNQUc5QyxJQUFLLGVBQ0osTUFDRCxJQUFLLGlCQUFrQixNQUd2QixJQUFLLGNBQ0wsSUFBSyxnQkFDSm05RSxHQUFXLFFBQVEsU0FBUzl3RCxFQUFHLENBQzlCLEdBQUdyc0IsRUFBRXFzQixFQUFFLENBQUMsQ0FBQyxHQUFLLEtBQ2QsT0FBT0EsRUFBRSxDQUFDLEVBQUMsQ0FDVixJQUFLLE9BQVFrMUIsRUFBRyxRQUFRbDFCLEVBQUUsQ0FBQyxDQUFDLEVBQUl1YixHQUFhNW5DLEVBQUVxc0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFHLE1BQ3ZELElBQUssTUFBT2sxQixFQUFHLFFBQVFsMUIsRUFBRSxDQUFDLENBQUMsRUFBSSxTQUFTcnNCLEVBQUVxc0IsRUFBRSxDQUFDLENBQUMsRUFBRyxFQUFFLEVBQUcsTUFDdEQsUUFBU2sxQixFQUFHLFFBQVFsMUIsRUFBRSxDQUFDLENBQUMsRUFBSXJzQixFQUFFcXNCLEVBQUUsQ0FBQyxDQUFDLENBQ2xDLENBQ04sQ0FBSyxFQUNFcnNCLEVBQUUsV0FBVXVoRCxFQUFHLFFBQVEsU0FBV3BaLEdBQVNub0MsRUFBRSxRQUFRLEdBQ3hELE1BQ0QsSUFBSyxnQkFBaUIsTUFHdEIsSUFBSyxzQkFDSixNQUNELElBQUssd0JBQXlCLE1BRzlCLElBQUssYUFBYyxJQUFLLGNBQWUsSUFBSyxlQUFnQixNQUU1RCxJQUFLLGdCQUFpQixJQUFLLGtCQUFtQixPQUFPQSxFQUFFLENBQUMsRUFBR3VoRCxFQUFHLE9BQU8sS0FBS3ZoRCxDQUFDLEVBQUcsTUFDOUUsSUFBSyxrQkFBbUIsTUFHeEIsSUFBSyxVQUFXLElBQUssV0FBWSxJQUFLLFlBQWEsTUFFbkQsSUFBSyxTQUNKLE9BQU9BLEVBQUUsTUFBSyxDQUNiLElBQUssU0FBVUEsRUFBRSxPQUFTLEVBQUcsTUFDN0IsSUFBSyxhQUFjQSxFQUFFLE9BQVMsRUFBRyxNQUNqQyxRQUFTQSxFQUFFLE9BQVMsQ0FDcEIsQ0FDRCxPQUFPQSxFQUFFLE1BQ1RBLEVBQUUsS0FBTzhtQyxHQUFZcUIsR0FBU25vQyxFQUFFLElBQUksQ0FBQyxFQUNyQyxPQUFPQSxFQUFFLENBQUMsRUFBR3VoRCxFQUFHLE9BQU8sS0FBS3ZoRCxDQUFDLEVBQUcsTUFDakMsSUFBSyxXQUFZLE1BR2pCLElBQUssa0JBQW1CLElBQUssb0JBQXFCLE1BRWxELElBQUssaUJBQWtCLE1BR3ZCLElBQUssc0JBQXVCLElBQUssd0JBQXlCLElBQUssdUJBQXdCLE1BRXZGLElBQUsscUJBQXNCLE1BRzNCLElBQUssa0JBQW1CLE1BQ3hCLElBQUssaUJBQWtCLElBQUssZ0JBQWlCKzFELEVBQUssR0FBTSxNQUN4RCxJQUFLLGtCQUFtQkEsRUFBSyxHQUFPLE1BRXBDLElBQUssZUFDSndvQixFQUFRLENBQUEsRUFDUkEsRUFBTSxLQUFPcDJDLEdBQVNub0MsRUFBRSxJQUFJLEVBQ3pCQSxFQUFFLFVBQVN1K0UsRUFBTSxRQUFVditFLEVBQUUsU0FDN0JBLEVBQUUsZUFBY3UrRSxFQUFNLE1BQVEsQ0FBQ3YrRSxFQUFFLGNBQ2pDNG5DLEdBQWE1bkMsRUFBRSxRQUFRLEdBQUcsSUFBR3UrRSxFQUFNLE9BQVMsSUFDL0NDLEVBQVV4eUUsRUFBTW5sQixFQUFFLE9BQ2pCLE1BQ0YsSUFBSyxpQkFDSjAzRixFQUFNLElBQU16M0MsR0FBWXFCLEdBQVN4dUUsRUFBSyxNQUFNNmtILEVBQVN4eUUsQ0FBRyxDQUFDLENBQUMsRUFDMUR1MUMsRUFBRyxNQUFNLEtBQUtnOUIsQ0FBSyxFQUNsQixNQUNGLElBQUssaUJBQWtCLE1BR3ZCLElBQUssVUFBVyxPQUFPditFLEVBQUUsQ0FBQyxFQUFHdWhELEVBQUcsT0FBU3ZoRCxFQUFHLE1BQzVDLElBQUssWUFBYSxPQUFPQSxFQUFFLENBQUMsRUFBR3VoRCxFQUFHLE9BQVN2aEQsRUFBRyxNQUM5QyxJQUFLLFlBQWEsTUFHbEIsSUFBSyxXQUFZLE1BR2pCLElBQUssd0JBQXlCLElBQUsseUJBQTBCLElBQUssdUJBQXdCLE1BRTFGLElBQUssc0JBQXVCLElBQUssd0JBQXlCLE1BRzFELElBQUssZ0JBQWlCLElBQUssaUJBQWtCLElBQUssZUFBZ0IsTUFFbEUsSUFBSyxjQUFlLE1BR3BCLElBQUssY0FBZSxJQUFLLGdCQUFpQixNQUcxQyxJQUFLLGlCQUFrQixJQUFLLGtCQUFtQixJQUFLLG1CQUFvQixNQUV4RSxJQUFLLGdCQUFpQixNQUd0QixJQUFLLGlCQUFrQixJQUFLLG1CQUFvQixNQUdoRCxJQUFLLGtCQUFtQixJQUFLLG9CQUFxQixNQUdsRCxJQUFLLHNCQUF1QixJQUFLLHFCQUFzQixJQUFLLHVCQUF3QixNQUVwRixJQUFLLG9CQUFxQixNQUcxQixJQUFLLFVBQVcsSUFBSyxXQUFZLElBQUssWUFBYSxJQUFLLFlBQWEsTUFFckUsSUFBSyxPQUFRKzFELEVBQUssR0FBTSxNQUN4QixJQUFLLFNBQVVBLEVBQUssR0FBTyxNQUczQixJQUFLLFVBQVcsTUFDaEIsSUFBSyxvQkFDTCxJQUFLLHFCQUFzQkEsRUFBSyxHQUFNLE1BQ3RDLElBQUssc0JBQXVCQSxFQUFLLEdBQU8sTUFHeEMsSUFBSyxlQUFnQixNQUVyQixRQUFTLEdBQUcsQ0FBQ0EsR0FBUTEwRyxFQUFLLElBQUssTUFBTSxJQUFJLE1BQU0sZ0JBQWtCMitDLEVBQUUsQ0FBQyxFQUFJLGNBQWMsQ0FDdEYsQ0FDRCxPQUFPblosQ0FDVCxDQUFFLEVBQ0UwaUQsR0FBVyxRQUFRZ1ksRUFBRyxLQUFLLElBQU0sR0FBSSxNQUFNLElBQUksTUFBTSxzQkFBd0JBLEVBQUcsS0FBSyxFQUV4RixPQUFBazhCLEdBQWtCbDhCLENBQUUsRUFFYkEsQ0FDUixDQUVBLFNBQVNrOUIsR0FBYWw5QixFQUFtRCxDQUN4RSxJQUFJcjFGLEVBQUksQ0FBQzY1RSxFQUFVLEVBQ25CNzVFLEVBQUVBLEVBQUUsTUFBTSxFQUFJODhFLEdBQVUsV0FBWSxLQUFNLENBQ3pDLE1BQVNPLEdBQVcsQ0FBQyxFQUdyQixVQUFXRCxHQUFNLENBQ25CLENBQUUsRUFFRCxJQUFJbzFDLEVBQWVuOUIsRUFBRyxXQUFhQSxFQUFHLFNBQVMsT0FBTyxDQUFFLEdBQUUsT0FBUyxFQUsvRG85QixFQUFzQixDQUFDLFNBQVMsY0FBYyxFQUMvQ3A5QixFQUFHLFVBQVlBLEVBQUcsU0FBUyxVQUM3QjQ3QixHQUFXLFFBQVEsU0FBU3QyRixFQUFHLENBRTFCMDZELEVBQUcsU0FBUyxRQUFRMTZELEVBQUUsQ0FBQyxDQUFDLEdBQWMsTUFDdEMwNkQsRUFBRyxTQUFTLFFBQVExNkQsRUFBRSxDQUFDLENBQUMsR0FBY0EsRUFBRSxDQUFDLElBQzdDODNGLEVBQVc5M0YsRUFBRSxDQUFDLENBQUMsRUFBSzA2RCxFQUFHLFNBQVMsUUFBUTE2RCxFQUFFLENBQUMsQ0FBQyxFQUMvQyxDQUFHLEVBRUUwNkQsRUFBRyxTQUFTLFFBQVEsV0FBWW85QixFQUFXLFNBQVdwOUIsRUFBRyxTQUFTLFFBQVEsU0FBVSxPQUFPbzlCLEVBQVcsV0FFMUd6eUgsRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxhQUFjLEtBQU0yMUMsQ0FBVSxFQUl2RCxJQUFJbndDLEVBQVMrUyxFQUFHLFVBQVlBLEVBQUcsU0FBUyxRQUFVLEdBQzlDLEVBQUksRUFHUixHQUFHL1MsR0FBVUEsRUFBTyxDQUFDLEdBQU9BLEVBQU8sQ0FBQyxFQUFFLE9BQVEsQ0FFN0MsSUFEQXRpRixFQUFFQSxFQUFFLE1BQU0sRUFBSSxjQUNWLEVBQUksRUFBRyxHQUFLcTFGLEVBQUcsV0FBVyxRQUMxQixHQUFDL1MsRUFBTyxDQUFDLEdBQ1QsQ0FBQ0EsRUFBTyxDQUFDLEVBQUUsUUFGdUIsRUFBRSxFQUV2QyxDQUVFLEdBQUsrUyxFQUFHLFdBQVcsU0FBUSxFQUFJLEdBQ2xDcjFGLEVBQUVBLEVBQUUsTUFBTSxFQUFJLDZCQUErQixFQUFJLGdCQUFrQixFQUFJLE1BQ3ZFQSxFQUFFQSxFQUFFLE1BQU0sRUFBSSxjQUNkLENBR0QsSUFEQUEsRUFBRUEsRUFBRSxNQUFNLEVBQUksV0FDVixFQUFJLEVBQUcsR0FBS3ExRixFQUFHLFdBQVcsT0FBUSxFQUFFLEVBQUcsQ0FDMUMsSUFBSWlNLEVBQU8sQ0FBQyxLQUFLcm1CLEdBQVVvYSxFQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUd4RCxHQUZBaU0sRUFBSSxRQUFVLElBQUksRUFBRSxHQUNwQkEsRUFBSSxNQUFNLEVBQUksT0FBTyxFQUFFLEdBQ3BCaGYsRUFBTyxDQUFDLEVBQUcsT0FBT0EsRUFBTyxDQUFDLEVBQUUsT0FBTSxDQUNwQyxJQUFLLEdBQUdnZixFQUFJLE1BQVEsU0FBVSxNQUM5QixJQUFLLEdBQUdBLEVBQUksTUFBUSxhQUFjLEtBQ2xDLENBQ0R0aEcsRUFBRUEsRUFBRSxNQUFNLEVBQUs4OEUsR0FBVSxRQUFRLEtBQUt3a0IsQ0FBRyxDQUN6QyxDQUNELE9BQUF0aEcsRUFBRUEsRUFBRSxNQUFNLEVBQUksWUFLWHd5SCxJQUNGeHlILEVBQUVBLEVBQUUsTUFBTSxFQUFJLGlCQUNYcTFGLEVBQUcsVUFBWUEsRUFBRyxTQUFTLE9BQU9BLEVBQUcsU0FBUyxNQUFNLFFBQVEsU0FBU2oyRixFQUFHLENBQzFFLElBQUljLEVBQVksQ0FBQyxLQUFLZCxFQUFFLElBQUksRUFDekJBLEVBQUUsVUFBU2MsRUFBRSxRQUFVZCxFQUFFLFNBQ3pCQSxFQUFFLE9BQVMsT0FBTWMsRUFBRSxhQUFlLEdBQUdkLEVBQUUsT0FDdkNBLEVBQUUsU0FBUWMsRUFBRSxPQUFTLEtBQ3BCZCxFQUFFLE1BQ05ZLEVBQUVBLEVBQUUsTUFBTSxFQUFJODhFLEdBQVUsY0FBZTdCLEdBQVU3N0UsRUFBRSxHQUFHLEVBQUdjLENBQUMsRUFDN0QsQ0FBRyxFQUNERixFQUFFQSxFQUFFLE1BQU0sRUFBSSxtQkFjWkEsRUFBRSxPQUFPLElBQUlBLEVBQUVBLEVBQUUsTUFBTSxFQUFJLGNBQWVBLEVBQUUsQ0FBQyxFQUFFQSxFQUFFLENBQUMsRUFBRSxRQUFRLEtBQUssR0FBRyxHQUNoRUEsRUFBRSxLQUFLLEVBQUUsQ0FDakIsQ0FFQSxTQUFTMHlILEdBQWtCamxILEVBQU1tWixFQUFtQixDQUNuRCxJQUFJc1osRUFBSSxDQUFBLEVBQ1IsT0FBQUEsRUFBRSxPQUFTenlCLEVBQUssV0FBVyxDQUFDLEVBQzVCeXlCLEVBQUUsT0FBU3p5QixFQUFLLFdBQVcsQ0FBQyxFQUM1Qnl5QixFQUFFLFNBQVcwa0QsR0FBWW4zRSxDQUFhLEVBQ3RDeXlCLEVBQUUsS0FBT21qRCxHQUFtQjUxRSxDQUFJLEVBQ3pCeXlCLENBQ1IsQ0FDQSxTQUFTeXlGLEdBQWtCbGxILEVBQU16TixFQUFHLENBQ25DLE9BQUlBLElBQUdBLEVBQUl1ckUsR0FBUSxHQUFHLEdBQ3RCdnJFLEVBQUUsWUFBWSxFQUFHeU4sRUFBSyxNQUFNLEVBQzVCek4sRUFBRSxZQUFZLEVBQUd5TixFQUFLLE1BQU0sRUFDNUJvM0UsR0FBWXAzRSxFQUFLLFNBQVV6TixDQUFDLEVBQzVCdWpGLEdBQW1COTFFLEVBQUssS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFHek4sQ0FBQyxFQUNwQ0EsRUFBRSxPQUFTQSxFQUFFLEVBQUlBLEVBQUUsTUFBTSxFQUFHQSxFQUFFLENBQUMsRUFBSUEsQ0FDM0MsQ0FHQSxTQUFTNHlILEdBQWdCbmxILEVBQU1tWixFQUFvQixDQUNsRCxJQUFJNW1CLEVBQWlCLENBQUEsRUFDakIwb0UsRUFBUWo3RCxFQUFLLFdBQVcsQ0FBQyxFQUM3QnpOLEVBQUUsb0JBQXNCeU4sRUFBSyxXQUFXLENBQUMsRUFDekMsSUFBSW9sSCxFQUFXanNHLEVBQVMsRUFBS3k4RCxHQUFtQjUxRSxDQUFJLEVBQUksR0FDeEQsT0FBR29sSCxFQUFRLE9BQVMsSUFBRzd5SCxFQUFFLFNBQVc2eUgsR0FDcEM3eUgsRUFBRSxxQkFBdUIsQ0FBQyxFQUFFMG9FLEVBQVEsT0FDcEMxb0UsRUFBRSxXQUFhLENBQUMsRUFBRTBvRSxFQUFRLElBQzFCMW9FLEVBQUUsbUJBQXFCLENBQUMsRUFBRTBvRSxFQUFRLE1BQ2xDMW9FLEVBQUUsU0FBVyxDQUFDLEVBQUUwb0UsRUFBUSxHQUN4QjFvRSxFQUFFLGNBQWdCLENBQUMsRUFBRTBvRSxFQUFRLEdBQzdCMW9FLEVBQUUsbUJBQXFCLENBQUMsRUFBRTBvRSxFQUFRLE1BQ2xDMW9FLEVBQUUsa0JBQW9CLENBQUMsRUFBRTBvRSxFQUFRLElBQ2pDMW9FLEVBQUUsYUFBZSxDQUFDLEVBQUUwb0UsRUFBUSxNQUM1QjFvRSxFQUFFLHNCQUF3QixDQUFDLEVBQUUwb0UsRUFBUSxRQUNyQzFvRSxFQUFFLHVCQUF5QixDQUFDLEVBQUUwb0UsRUFBUSxLQUN0QzFvRSxFQUFFLDJCQUE2QixDQUFDLEVBQUUwb0UsRUFBUSxHQUMxQzFvRSxFQUFFLGtCQUFvQixDQUFDLEVBQUUwb0UsRUFBUSxJQUNqQzFvRSxFQUFFLFlBQWMsQ0FBQyxNQUFPLGVBQWdCLE1BQU0sRUFBRzBvRSxHQUFTLEdBQU0sQ0FBSSxFQUNwRTFvRSxFQUFFLHFCQUF1QixDQUFDLEVBQUUwb0UsRUFBUSxPQUNwQzFvRSxFQUFFLFlBQWMsQ0FBQyxVQUFXLFFBQVMsUUFBUSxFQUFHMG9FLEdBQVMsRUFBSyxDQUFJLEVBQzNEMW9FLENBQ1IsQ0FDQSxTQUFTOHlILEdBQWdCcmxILEVBQW1Cek4sRUFBRyxDQUMxQ0EsSUFBR0EsRUFBSXVyRSxHQUFRLEVBQUUsR0FDckIsSUFBSTdDLEVBQVEsRUFDWixPQUFHajdELEdBRUNBLEVBQUssZ0JBQWVpN0QsR0FBUyxHQUVqQzFvRSxFQUFFLFlBQVksRUFBRzBvRSxDQUFLLEVBQ3RCMW9FLEVBQUUsWUFBWSxFQUFHLENBQUMsRUFDbEJ3a0YsR0FBbUIvMkUsR0FBUUEsRUFBSyxVQUFZLGVBQWdCek4sQ0FBQyxFQUN0REEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxDQUN0QixDQUVBLFNBQVMreUgsR0FBb0J0bEgsRUFBTW1aLEVBQVEsQ0FDMUMsSUFBSTVtQixFQUFJLENBQUEsRUFDUixPQUFBeU4sRUFBSyxXQUFXLENBQUMsRUFDakJ6TixFQUFFLE9BQVN5TixFQUFLLFdBQVcsQ0FBQyxFQUM1QkEsRUFBSyxHQUFLbVosRUFBUyxFQUNaNW1CLENBQ1IsQ0FHQSxTQUFTZ3pILEdBQWN2bEgsRUFBTW1aLEVBQVF6eEIsRUFBTSxDQUMxQyxJQUFJdzZELEVBQU1saUQsRUFBSyxFQUFJbVosRUFDbkJuWixFQUFLLEdBQUssRUFDVkEsRUFBSyxHQUFLLEVBQ1YsSUFBSThzRixFQUFPOXNGLEVBQUssV0FBVyxDQUFDLEVBQ3hCN1gsRUFBTyt1RixHQUF1QmwzRSxDQUFJLEVBQ2xDdzBGLEVBQVVxaUIsR0FBNEI3MkcsRUFBTSxFQUFHdFksQ0FBSSxFQUNuRDZsRyxFQUFVdlcsR0FBMkJoM0UsQ0FBSSxFQU83Q0EsRUFBSyxFQUFJa2lELEVBQ1QsSUFBSXVOLEVBQU8sQ0FBQyxLQUFLdG5FLEVBQU0sSUFBSXFzRyxDQUFPLEVBQ2xDLE9BQUcxSCxFQUFPLFlBQVdyOUIsRUFBSSxNQUFRcTlCLEdBQzlCUyxJQUFTOTlCLEVBQUksUUFBVTg5QixHQUNuQjk5QixDQUNSLENBR0EsU0FBUysxRCxHQUFheGxILEVBQU10WSxFQUF1QixDQUNsRCxJQUFJa2dHLEVBQUssQ0FBRSxXQUFXLENBQUUsRUFBRSxRQUFRLENBQUUsRUFBRSxPQUFPLENBQUUsRUFBRSxPQUFPLENBQUUsRUFBRSxPQUFPLENBQUUsRUFBRSxNQUFPLEVBQUUsRUFDNUVobEQsRUFBMEIsQ0FBQSxFQUMxQnc1RCxFQUFPLEdBRVAxMEcsSUFBTUEsRUFBTyxJQUNqQkEsRUFBSyxLQUFPLEdBRVosSUFBSSs5SCxFQUFRLENBQUEsRUFDUjVRLEVBQVksQ0FBQyxDQUFFLENBQUEsRUFDbkIsT0FBQUEsRUFBUyxXQUFhLEdBQ3RCQSxFQUFTLElBQU0sR0FFZnBpQyxHQUFlLEVBQU0sRUFBSSxDQUFFLEVBQUUsZ0JBQWlCLEVBQUU2eUMsSUFFaERqekMsR0FBYXJ5RSxFQUFNLFNBQW1CalQsRUFBSzB0RSxFQUFHK1gsRUFBSSxDQUNqRCxPQUFPQSxFQUFFLENBQ1IsSUFBSyxLQUNKcWlDLEVBQVMsV0FBVyxLQUFLOW5ILEVBQUksSUFBSSxFQUNqQzY2RixFQUFHLE9BQU8sS0FBSzc2RixDQUFHLEVBQUcsTUFFdEIsSUFBSyxLQUNKNjZGLEVBQUcsUUFBVTc2RixFQUFLLE1BRW5CLElBQUssSUFDREEsRUFBSSxPQUFTLE9BQU1yRixFQUFLLElBQU1xRixFQUFJLE9BQ3JDQSxFQUFJLElBQU1rb0gsR0FBa0Jsb0gsRUFBSSxJQUFLLEtBQU0sS0FBTThuSCxFQUFVbnRILENBQUksRUFDL0QsT0FBT0EsRUFBSyxJQUNaLE9BQU9xRixFQUFJLElBQ1gwNEgsRUFBTSxLQUFLMTRILENBQUcsRUFDZCxNQUNELElBQUssTUFBMkIsTUFFaEMsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNBOG5ILEVBQVMsQ0FBQyxFQUFFLE9BQ1hBLEVBQVMsS0FBSyxDQUFDcmlDLEVBQUl6bEYsQ0FBRyxDQUFDLEVBREo4bkgsRUFBUyxDQUFDLEVBQUksQ0FBQ3JpQyxFQUFJemxGLENBQUcsRUFFOUM4bkgsRUFBU0EsRUFBUyxPQUFTLENBQUMsRUFBRSxJQUFNLENBQUEsRUFDcEMsTUFDRCxJQUFLLEtBQ0RBLEVBQVMsU0FBVyxJQUFLQSxFQUFTLENBQUMsRUFBSSxDQUFFLEVBQUVBLEVBQVMsQ0FBQyxFQUFFLElBQU0sQ0FBRSxHQUNsRUEsRUFBU0EsRUFBUyxPQUFTLENBQUMsRUFBRSxJQUFNQSxFQUFTQSxFQUFTLE9BQVMsQ0FBQyxFQUFFLElBQUksT0FBTzluSCxDQUFHLEVBQ2hGOG5ILEVBQVMsSUFBTUEsRUFBUyxJQUFJLE9BQU85bkgsQ0FBRyxFQUN0QyxNQUNELElBQUssS0FDSixNQUVELElBQUssTUFDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0osTUFHRCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxLQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLE1BQ0wsSUFBSyxLQUNMLElBQUssTUFDTCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLEtBQ0wsSUFBSyxNQUNMLElBQUssS0FDTCxJQUFLLE1BQ0osTUFFRCxJQUFLLElBQ0o2MUMsRUFBTSxLQUFLNHZDLENBQUUsRUFBRzRwQixFQUFPLEdBQU0sTUFDOUIsSUFBSyxJQUNKeDVELEVBQU0sSUFBSyxFQUFFdzVELEVBQU8sR0FBTyxNQUM1QixJQUFLLElBQ0p4NUQsRUFBTSxLQUFLNHZDLENBQUUsRUFBRzRwQixFQUFPLEdBQU0sTUFDOUIsSUFBSyxJQUNKeDVELEVBQU0sSUFBSyxFQUFFdzVELEVBQU8sR0FBTyxNQUU1QixJQUFLLElBQThCLE1BRW5DLFFBQ0MsR0FBRyxDQUFBM2hDLEVBQUUsR0FDQSxHQUFHLENBQUMyaEMsR0FBUzEwRyxFQUFLLEtBQU9rN0MsRUFBTUEsRUFBTSxPQUFPLENBQUMsR0FBSyxJQUEyQkEsRUFBTUEsRUFBTSxPQUFPLENBQUMsR0FBSyxHQUEyQixNQUFNLElBQUksTUFBTSx1QkFBeUI0dkMsRUFBRyxTQUFTLEVBQUUsQ0FBQyxFQUMvTCxDQUNELEVBQUU5cUYsQ0FBSSxFQUVQbzhILEdBQWtCbDhCLENBQUUsRUFHcEJBLEVBQUcsTUFBUTY5QixFQUVWNzlCLEVBQVksU0FBV2l0QixFQUNqQmp0QixDQUNSLENBRUEsU0FBUzg5QixHQUFnQjF5QyxFQUFJNFUsRUFBZ0IsQ0FDNUM3VSxHQUFhQyxFQUFJLEtBQ2pCLFFBQVEzZ0MsRUFBTSxFQUFHQSxHQUFPdTFDLEVBQUcsV0FBVyxPQUFRLEVBQUV2MUMsRUFBSyxDQUNwRCxJQUFJc3pFLEVBQU0vOUIsRUFBRyxVQUFZQSxFQUFHLFNBQVMsUUFBVUEsRUFBRyxTQUFTLE9BQU92MUMsQ0FBRyxHQUFLdTFDLEVBQUcsU0FBUyxPQUFPdjFDLENBQUcsRUFBRSxRQUFVLEVBQ3hHNS9DLEVBQUksQ0FBRSxPQUFRa3pILEVBQUssT0FBUXR6RSxFQUFJLEVBQUcsU0FBVSxPQUFTQSxFQUFJLEdBQUksS0FBTXUxQyxFQUFHLFdBQVd2MUMsQ0FBRyxHQUN4RjBnQyxHQUFhQyxFQUFJLElBQTBCa3lDLEdBQWtCenlILENBQUMsQ0FBQyxDQUMvRCxDQUNEc2dGLEdBQWFDLEVBQUksSUFDbEIsQ0FHQSxTQUFTNHlDLEdBQXFCNWxILEVBQU16TixFQUFHLENBQ2xDQSxJQUFHQSxFQUFJdXJFLEdBQVEsR0FBRyxHQUN0QixRQUFRM3hFLEVBQUksRUFBR0EsR0FBSyxFQUFHLEVBQUVBLEVBQUdvRyxFQUFFLFlBQVksRUFBRyxDQUFDLEVBQzlDLE9BQUF1akYsR0FBbUIsVUFBV3ZqRixDQUFDLEVBQy9CdWpGLEdBQW1CN29CLEdBQUssUUFBUzE2RCxDQUFDLEVBQ2xDdWpGLEdBQW1CN29CLEdBQUssUUFBUzE2RCxDQUFDLEVBQ2xDdWpGLEdBQW1CLE9BQVF2akYsQ0FBQyxFQUNyQkEsRUFBRSxPQUFTQSxFQUFFLEVBQUlBLEVBQUUsTUFBTSxFQUFHQSxFQUFFLENBQUMsRUFBSUEsQ0FDM0MsQ0FHQSxTQUFTc3pILEdBQWtCeHpFLEVBQUs5L0MsRUFBRyxDQUM5QkEsSUFBR0EsRUFBSXVyRSxHQUFRLEVBQUUsR0FDckJ2ckUsRUFBRSxZQUFZLEdBQUksQ0FBQyxFQUNuQkEsRUFBRSxZQUFZLEdBQUksR0FBRyxFQUNyQkEsRUFBRSxZQUFZLEVBQUksS0FBSyxFQUN2QkEsRUFBRSxZQUFZLEVBQUksS0FBSyxFQUN2QkEsRUFBRSxZQUFZLEVBQUksR0FBRyxFQUNyQkEsRUFBRSxZQUFZLEVBQUk4L0MsQ0FBRyxFQUNyQjkvQyxFQUFFLFlBQVksRUFBSTgvQyxDQUFHLEVBQ3JCLElBQUk0b0IsRUFBUSxJQUNaLE9BQUExb0UsRUFBRSxZQUFZLEVBQUkwb0UsQ0FBSyxFQUNoQjFvRSxFQUFFLE9BQVNBLEVBQUUsRUFBSUEsRUFBRSxNQUFNLEVBQUdBLEVBQUUsQ0FBQyxFQUFJQSxDQUMzQyxDQUVBLFNBQVN1ekgsR0FBZ0I5eUMsRUFBSTRVLEVBQWdCLENBRTVDLEdBQUcsR0FBQ0EsRUFBRyxVQUFZLENBQUNBLEVBQUcsU0FBUyxRQUdoQyxTQUZJL1MsRUFBUytTLEVBQUcsU0FBUyxPQUNyQno3RixFQUFJLEVBQUc0NUgsRUFBUyxHQUFJMzlCLEVBQVMsR0FDM0JqOEYsRUFBSTBvRixFQUFPLE9BQVEsRUFBRTFvRixFQUN2QixDQUFDMG9GLEVBQU8xb0YsQ0FBQyxHQUFLLENBQUMwb0YsRUFBTzFvRixDQUFDLEVBQUUsUUFBVTQ1SCxHQUFVLEdBQUlBLEVBQVM1NUgsRUFDckQwb0YsRUFBTzFvRixDQUFDLEVBQUUsUUFBVSxHQUFLaThGLEdBQVUsS0FBSUEsRUFBU2o4RixHQUV0RGk4RixFQUFTMjlCLElBQ1poekMsR0FBYUMsRUFBSSxLQUNqQkQsR0FBYUMsRUFBSSxJQUEwQjZ5QyxHQUFrQkUsQ0FBTSxDQUFDLEVBRXBFaHpDLEdBQWFDLEVBQUksTUFDbEIsQ0F1QkEsU0FBU2d6QyxHQUFhcCtCLEVBQUlsZ0csRUFBTSxDQUMvQixJQUFJc3JGLEVBQUtOLEtBQ1QsT0FBQUssR0FBYUMsRUFBSSxLQUNqQkQsR0FBYUMsRUFBSSxJQUE2QjR5QyxHQUFzQixDQUFBLEVBRXBFN3lDLEdBQWFDLEVBQUksSUFBd0JxeUMsR0FBZ0J6OUIsRUFBRyxVQUFZQSxFQUFHLFNBQVMsU0FBVyxJQUFJLENBQUMsRUFHcEdrK0IsR0FBZ0I5eUMsRUFBSTRVLENBQVEsRUFDNUI4OUIsR0FBZ0IxeUMsRUFBSTRVLENBQVEsRUFlNUI3VSxHQUFhQyxFQUFJLEtBRVZBLEVBQUcsS0FDWCxDQUNBLFNBQVNpekMsR0FBU2ptSCxFQUFNN1gsRUFBaUJULEVBQXVCLENBQy9ELE9BQUdTLEVBQUssTUFBTSxFQUFFLElBQUksT0FBZXE5SCxHQUFjeGxILEVBQWV0WSxDQUFJLEVBQzdEZzlILEdBQWMxa0gsRUFBZXRZLENBQUksQ0FDekMsQ0FFQSxTQUFTdytILEdBQVNsbUgsRUFBTTdYLEVBQWlCa3FELEVBQWdCM3FELEVBQU00ekYsRUFBTXNNLEVBQUl1YyxFQUFRRCxFQUFzQixDQUN0RyxPQUFHLzdHLEVBQUssTUFBTSxFQUFFLElBQUksT0FBZTI1SCxHQUFjOWhILEVBQWV0WSxFQUFNMnFELEVBQUtpcEMsRUFBTXNNLEVBQUl1YyxFQUFRRCxDQUFNLEVBQzVGMFUsR0FBYzU0RyxFQUFldFksRUFBTTJxRCxFQUFLaXBDLEVBQU1zTSxFQUFJdWMsRUFBUUQsQ0FBTSxDQUN4RSxDQUVBLFNBQVNpaUIsR0FBU25tSCxFQUFNN1gsRUFBaUJrcUQsRUFBZ0IzcUQsRUFBTTR6RixFQUFNc00sRUFBSXVjLEVBQVFELEVBQXNCLENBQ3RHLE9BQUcvN0csRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFlbzdILEdBQWN2akgsRUFBZXRZLEVBQU0ycUQsRUFBS2lwQyxFQUFNc00sQ0FBa0IsRUFDNUZ5N0IsR0FBY3JqSCxFQUFldFksRUFBTTJxRCxFQUFLaXBDLEVBQU1zTSxDQUFrQixDQUN4RSxDQUVBLFNBQVN3K0IsR0FBU3BtSCxFQUFNN1gsRUFBaUJrcUQsRUFBZ0IzcUQsRUFBTTR6RixFQUFNc00sRUFBSXVjLEVBQVFELEVBQXNCLENBQ3RHLE9BQUcvN0csRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFlMGxILEdBQWdFLEVBQzVGQyxHQUFnRSxDQUN4RSxDQUVBLFNBQVN1WSxHQUFTcm1ILEVBQU03WCxFQUFpQmtxRCxFQUFnQjNxRCxFQUFNNHpGLEVBQU1zTSxFQUFJdWMsRUFBUUQsRUFBc0IsQ0FDdEcsT0FBRy83RyxFQUFLLE1BQU0sRUFBRSxJQUFJLE9BQWV3bEgsR0FBZ0UsRUFDNUZDLEdBQWdFLENBQ3hFLENBRUEsU0FBUzBZLEdBQVV0bUgsRUFBTTdYLEVBQWlCZzhHLEVBQVF6OEcsRUFBTSxDQUN2RCxPQUFHUyxFQUFLLE1BQU0sRUFBRSxJQUFJLE9BQWVpL0csR0FBZXBuRyxFQUFlbWtHLEVBQVF6OEcsQ0FBSSxFQUN0RXU5RyxHQUFlamxHLEVBQWVta0csRUFBUXo4RyxDQUFJLENBQ2xELENBRUEsU0FBUzYrSCxHQUFZdm1ILEVBQWlCN1gsRUFBaUJULEVBQU0sQ0FDNUQsT0FBTzhnSCxHQUFnQnhvRyxFQUFNdFksQ0FBSSxDQUNsQyxDQUVBLFNBQVM4K0gsR0FBVXhtSCxFQUFNN1gsRUFBaUJULEVBQWMsQ0FDdkQsT0FBR1MsRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFlODFHLEdBQWVqK0YsRUFBZXRZLENBQUksRUFDOURrMkcsR0FBZTU5RixFQUFldFksQ0FBSSxDQUMxQyxDQUVBLFNBQVMrK0gsR0FBV3ptSCxFQUFNN1gsRUFBaUJULEVBQTRCLENBQ3RFLE9BQUdTLEVBQUssTUFBTSxFQUFFLElBQUksT0FBZStrSCxHQUFvQmx0RyxFQUFldFksQ0FBSSxFQUNuRWdrSCxHQUFvQjFyRyxFQUFldFksQ0FBSSxDQUMvQyxDQUVBLFNBQVNnL0gsR0FBUzFtSCxFQUFNN1gsRUFBaUJULEVBQU0sQ0FDOUMsT0FBR1MsRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFldWlILEdBQWMxcUcsQ0FBeUIsRUFDbkV3cUcsR0FBY3hxRyxDQUF5QixDQUMvQyxDQUVBLFNBQVMybUgsR0FBWTNtSCxFQUFNdTdFLEVBQUtwekYsRUFBaUJULEVBQU0sQ0FDdEQsT0FBR1MsRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFleWlILEdBQWlCNXFHLEVBQWV1N0UsRUFBS3B6RixFQUFNVCxDQUFJLEVBQzNFLE1BQ1IsQ0FFQSxTQUFTay9ILEdBQWE1bUgsRUFBTTdYLEVBQWlCVCxFQUFNLENBQ2xELE9BQUdTLEVBQUssTUFBTSxFQUFFLElBQUksT0FBZStoSCxHQUFrQmxxRyxFQUFlN1gsRUFBTVQsQ0FBSSxFQUN2RTJpSCxHQUFrQnJxRyxFQUFlN1gsRUFBTVQsQ0FBSSxDQUNuRCxDQUVBLFNBQVNtL0gsR0FBU2ovQixFQUFJei9GLEVBQWlCVCxFQUFNLENBQzVDLE9BQVFTLEVBQUssTUFBTSxFQUFFLElBQUksT0FBUzY5SCxHQUFlbEIsSUFBY2w5QixDQUFRLENBQ3hFLENBRUEsU0FBU2svQixHQUFTOW1ILEVBQWlCN1gsRUFBaUJULEVBQU1rZ0csRUFBaUJ0TSxFQUFNLENBQ2hGLE9BQVFuekYsRUFBSyxNQUFNLEVBQUUsSUFBSSxPQUFTNDZILEdBQWU1RixJQUFjbjlHLEVBQU10WSxFQUFNa2dHLEVBQUl0TSxDQUFJLENBQ3BGLENBT0EsU0FBU3lyQyxHQUFVL21ILEVBQU03WCxFQUFpQlQsRUFBTSxDQUMvQyxPQUFRUyxFQUFLLE1BQU0sRUFBRSxJQUFJLE9BQVMyL0csR0FBZ0J2QyxJQUFldmxHLEVBQU10WSxDQUFJLENBQzVFLENBRUEsU0FBU3MvSCxHQUFVaG5ILEVBQWM3WCxFQUFpQlQsRUFBTSxDQUN2RCxPQUFRUyxFQUFLLE1BQU0sRUFBRSxJQUFJLE9BQVNpMkcsR0FBZ0JOLElBQWU5OUYsRUFBTXRZLENBQUksQ0FDNUUsQ0FFQSxTQUFTdS9ILEdBQVdqbkgsRUFBcUI3WCxFQUFpQlQsRUFBTSxDQUMvRCxPQUFRUyxFQUFLLE1BQU0sRUFBRSxJQUFJLE9BQVNnbEgsR0FBcUJuQixJQUFvQmhzRyxDQUFVLENBQ3RGLENBT0EsU0FBU2tuSCxHQUFhLytILEVBQWlCLENBQ3RDLE9BQVFBLEVBQUssTUFBTSxFQUFFLElBQUksT0FBU2lpSCxHQUFtQkcsS0FDdEQsQ0FDQSxJQUFJNGMsR0FBVyxrREFDWEMsR0FBVSxxREFDZCxTQUFTQyxHQUFpQm52RSxFQUFnQjAwQixFQUF3QixDQUNqRSxJQUFJMDZDLEVBQVFwdkUsRUFBSSxNQUFNLEtBQUssRUFDdkJ6bEIsRUFBYSxDQUFBLEVBQ2pCLEdBRGtDbTZDLElBQVduNkMsRUFBRSxDQUFDLEVBQUk2MEYsRUFBTSxDQUFDLEdBQ3hEQSxFQUFNLFNBQVcsRUFBRyxPQUFPNzBGLEVBQzlCLElBQUl1NkIsRUFBSTlVLEVBQUksTUFBTWl2RSxFQUFVLEVBQUc5Z0YsRUFBRzBtQixFQUFHMkYsRUFBR3ZtRSxFQUN4QyxHQUFHNmdFLEVBQUcsSUFBSTdnRSxFQUFJLEVBQUdBLEdBQUs2Z0UsRUFBRSxPQUFRLEVBQUU3Z0UsRUFDakNrNkMsRUFBSTJtQixFQUFFN2dFLENBQUMsRUFBRSxNQUFNaTdILEVBQVMsR0FFcEJyNkQsRUFBRTFtQixFQUFFLENBQUMsRUFBRSxRQUFRLEdBQUcsS0FBTyxHQUFJNVQsRUFBRTRULEVBQUUsQ0FBQyxDQUFDLEVBQUlBLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRUEsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBRWpFQSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFNLFNBQVVxc0IsRUFBSSxRQUFRcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUNwRHFzQixFQUFJcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0wbUIsRUFBRSxDQUFDLEVBQ3ZCdDZCLEVBQUVpZ0MsQ0FBQyxFQUFJcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRUEsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBR25DLE9BQU81VCxDQUNSLENBQ0EsU0FBUzgwRixHQUFvQnJ2RSxFQUFnQixDQUM1QyxJQUFJb3ZFLEVBQVFwdkUsRUFBSSxNQUFNLEtBQUssRUFDdkJ6bEIsRUFBSSxDQUFBLEVBQ1IsR0FBRzYwRixFQUFNLFNBQVcsRUFBRyxPQUFPNzBGLEVBQzlCLElBQUl1NkIsRUFBSTlVLEVBQUksTUFBTWl2RSxFQUFVLEVBQUc5Z0YsRUFBRzBtQixFQUFHMkYsRUFBR3ZtRSxFQUN4QyxHQUFHNmdFLEVBQUcsSUFBSTdnRSxFQUFJLEVBQUdBLEdBQUs2Z0UsRUFBRSxPQUFRLEVBQUU3Z0UsRUFDakNrNkMsRUFBSTJtQixFQUFFN2dFLENBQUMsRUFBRSxNQUFNaTdILEVBQVMsR0FFcEJyNkQsRUFBRTFtQixFQUFFLENBQUMsRUFBRSxRQUFRLEdBQUcsS0FBTyxHQUFJNVQsRUFBRTRULEVBQUUsQ0FBQyxDQUFDLEVBQUlBLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRUEsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBRWpFQSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFNLFNBQVVxc0IsRUFBSSxRQUFRcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUNwRHFzQixFQUFJcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0wbUIsRUFBRSxDQUFDLEVBQ3ZCdDZCLEVBQUVpZ0MsQ0FBQyxFQUFJcnNCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRUEsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBR25DLE9BQU81VCxDQUNSLENBS0EsSUFBSSswRixHQUVKLFNBQVNDLEdBQVl2MUgsRUFBUXJLLEVBQWtCLENBQzlDLElBQUlvckUsRUFBTXUwRCxHQUFjdDFILENBQU0sR0FBS2k3RSxHQUFZajdFLENBQU0sRUFDckQsT0FBRytnRSxJQUFRLFVBQWtCSCxHQUFZanJFLENBQUssRUFDdkNrckUsR0FBV0UsRUFBS3ByRSxDQUFLLENBQzdCLENBRUEsU0FBUzYvSCxHQUFrQnBwQyxFQUFXOTBGLEVBQUswQyxFQUFJYSxFQUFnQixDQUM5RCxJQUFJNDZILEVBQWU1NkgsRUFDbkIsUUFBUWIsRUFBRyxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUNuRCxJQUFLLFVBQVd5N0gsRUFBTzE1QyxHQUFhbGhGLENBQUcsRUFBRyxNQUMxQyxJQUFLLEtBQU0sSUFBSyxNQUFPNDZILEVBQU8sU0FBUzU2SCxFQUFLLEVBQUUsRUFBRyxNQUNqRCxJQUFLLEtBQU0sSUFBSyxRQUFTNDZILEVBQU8sV0FBVzU2SCxDQUFHLEVBQUcsTUFDakQsSUFBSyxPQUFRLElBQUssY0FBZTQ2SCxFQUFPcDlDLEdBQVV4OUUsQ0FBRyxFQUFHLE1BQ3hELElBQUssS0FBTSxJQUFLLFNBQVUsSUFBSyxRQUFTLElBQUssT0FBUSxJQUFLLGFBQWMsTUFDeEUsUUFBUyxNQUFNLElBQUksTUFBTSxnQkFBa0JiLEVBQUcsQ0FBQyxDQUFDLENBQ2hELENBQ0RveUYsRUFBVW5SLEdBQVkzakYsQ0FBRyxDQUFDLEVBQUltK0gsQ0FDL0IsQ0FFQSxTQUFTQyxHQUFpQnR6RixFQUFlMnVGLEVBQUkxd0gsRUFBRyxDQUMvQyxHQUFHK2hDLEVBQUssSUFBTSxJQUNkLElBQUcsQ0FBQy9oQyxHQUFLQSxFQUFFLFdBQWEsR0FBTyxHQUFJLENBQy9CK2hDLEVBQUssSUFBTSxJQUFPQSxFQUFLLEVBQUlBLEVBQUssR0FBS29nRCxHQUFLcGdELEVBQUssQ0FBQyxFQUMzQzJ1RixJQUFPLFVBQ1gzdUYsRUFBSyxJQUFNLEtBQ1RBLEVBQUssRUFBRSxLQUFPQSxFQUFLLEVBQUdBLEVBQUssRUFBSUEsRUFBSyxFQUFFLFNBQVMsRUFBRSxFQUNoREEsRUFBSyxFQUFJcytCLEdBQWdCdCtCLEVBQUssQ0FBQyxFQUVoQ0EsRUFBSyxFQUFJdytCLEdBQVl4K0IsRUFBSyxDQUFDLEVBRTVCQSxFQUFLLEVBQUltekYsR0FBWXhFLEdBQUksVUFBVzN1RixFQUFLLENBQUMsQ0FDakQsT0FBU3ZrQyxFQUFHLENBQUUsR0FBR3dDLEVBQUUsSUFBSyxNQUFNeEMsQ0FBSSxDQUNqQyxHQUFJLENBQ0gsSUFBSTBpQyxFQUFJKzBGLEdBQWN2RSxDQUFFLEdBQUdBLEdBQUksVUFFL0IsR0FERzF3SCxFQUFFLFNBQVEraEMsRUFBSyxFQUFJN0IsR0FDbkJsZ0MsRUFBRSxXQUFhK2hDLEVBQUssR0FBSyxLQUFPa2lDLEdBQVkvakMsQ0FBQyxFQUFHLENBQ2xELElBQUlsekIsRUFBS3F5RCxHQUFvQnQ5QixFQUFLLENBQUMsRUFBTS8wQixJQUFNKzBCLEVBQUssRUFBSSxJQUFLQSxFQUFLLEVBQUksSUFBSSxLQUFLLzBCLEVBQUcsRUFBR0EsRUFBRyxFQUFFLEVBQUVBLEVBQUcsRUFBRUEsRUFBRyxFQUFFQSxFQUFHLEVBQUVBLEVBQUcsRUFBRUEsRUFBRyxDQUFDLEVBQ3BILENBQ0gsT0FBU3hQLEVBQUcsQ0FBRSxHQUFHd0MsRUFBRSxJQUFLLE1BQU14QyxDQUFJLEVBQ2xDLENBRUEsU0FBUzgzSCxHQUFtQjNqQixFQUFRNGpCLEVBQU1wZ0ksRUFBTSxDQUMvQyxHQUFHQSxFQUFLLFlBQ0pvZ0ksRUFBSyxTQUFVLENBQ2pCLElBQUlDLEVBQUlELEVBQUssU0FDVkMsRUFBRSxVQUFTQSxFQUFFLFlBQWMvakIsR0FBbUIrakIsRUFBRSxPQUFPLEdBQUtBLEVBQUUsUUFDakUsQ0FFRjdqQixFQUFPNGpCLEVBQUssRUFBRSxFQUFJQSxDQUNuQixDQUdBLFNBQVNFLEdBQWdCeHFDLEVBQUtycUIsRUFBSW56RCxFQUFNczBCLEVBQWMvNkIsRUFBTTJxRyxFQUFRK2pCLEVBQU1qMUgsRUFBS2twSCxFQUFRM3BILEVBQUcsQ0FDekYsSUFBSTB3SCxFQUFLLFVBQVdpRixFQUFNNXpGLEVBQUssUUFBU21rQyxFQUFJLEdBQUlsbUUsRUFBSUEsR0FBSyxDQUFBLEVBQ3pELElBQUk0MUgsRUFBWSxDQUFBLEVBQ1poOEgsRUFBSSxFQUdSLElBRkcrN0gsSUFBUSxRQUFhbDFILElBQUtrMUgsRUFBTWwxSCxFQUFJLFNBQ3BDazFILElBQVEsUUFBYUQsSUFBTUMsRUFBTUQsRUFBSyxTQUNuQy9qQixFQUFPZ2tCLENBQUcsSUFBTSxTQUNsQmhrQixFQUFPZ2tCLENBQUcsRUFBRSxLQUFJakYsRUFBSy9lLEVBQU9na0IsQ0FBRyxFQUFFLElBQ2pDaGtCLEVBQU9na0IsQ0FBRyxFQUFFLFVBQVVDLEVBQVUsS0FBS2prQixFQUFPZ2tCLENBQUcsRUFBRSxRQUFRLEVBQ3pELEVBQUNoa0IsRUFBT2drQixDQUFHLEVBQUUsU0FDaEJBLEVBQU1oa0IsRUFBT2drQixDQUFHLEVBQUUsT0FFbkIsT0FBT2xvSCxFQUFLLEtBQUksQ0FDZixJQUFLLFVBQ0pzMEIsRUFBSyxFQUFJLElBQ1RBLEVBQUssRUFBSTI1QyxHQUFhdVAsQ0FBRyxFQUN6QixNQUNELElBQUssU0FDSmxwRCxFQUFLLEVBQUksSUFBS0EsRUFBSyxFQUFJdTVDLEdBQVlWLEdBQVlxUSxDQUFHLENBQUMsRUFDbkRscEQsRUFBSyxFQUFLa3BELEVBQUksUUFBUSxHQUFHLEVBQUksR0FBS3JRLEdBQVloYSxHQUFJcXFCLENBQUcsRUFBRSxRQUFRLFNBQVUsRUFBRSxFQUFJbHBELEVBQUssRUFDcEYsTUFDRCxJQUFLLFdBQ0RrcEQsRUFBSSxNQUFNLEVBQUUsR0FBSyxNQUFLQSxHQUFPLEtBQ2hDbHBELEVBQUssR0FBS2kyQyxHQUFVaVQsQ0FBRyxFQUFJLElBQUksS0FBSyxLQUFLLElBQUksS0FBTSxHQUFJLEVBQUUsQ0FBQyxJQUFNLEdBQUssR0FBSyxHQUFLLEtBQzVFbHBELEVBQUssSUFBTUEsRUFBSyxFQUFHQSxFQUFLLEVBQUk2NEMsR0FBWXFRLENBQUcsRUFDdENscEQsRUFBSyxFQUFFLEtBQUlBLEVBQUssRUFBSUEsRUFBSyxFQUFHLElBQ2pDLENBQUMydUYsR0FBTUEsR0FBTSxhQUFXQSxFQUFLLGNBRWpDLElBQUssU0FDRDN1RixFQUFLLElBQU0sU0FBV0EsRUFBSyxFQUFFLENBQUNrcEQsR0FDN0JscEQsRUFBSyxJQUFHQSxFQUFLLEVBQUksS0FDckIsTUFDRCxJQUFLLFFBQVNBLEVBQUssRUFBSSxJQUFLQSxFQUFLLEVBQUlpbUQsR0FBTWlELENBQUcsRUFBTWpyRixFQUFFLFdBQWEsS0FBTytoQyxFQUFLLEVBQUlrcEQsR0FBSyxNQUN4RixRQUNJQSxHQUFPLElBQU1ycUIsR0FBTSxHQUFNNytCLEVBQUssRUFBSSxLQUM5QkEsRUFBSyxFQUFJLElBQUtBLEVBQUssRUFBSXU1QyxHQUFZMWEsR0FBSXFxQixDQUFHLEdBQ2pELEtBQ0QsQ0FFRCxHQURBb3FDLEdBQWlCdHpGLEVBQU0ydUYsRUFBSTF3SCxDQUFDLEVBQ3pCQSxFQUFFLGNBQWdCLEdBQ3BCLEdBQUcraEMsRUFBSyxRQUFTLENBQ2hCLElBQUk4NUUsRUFBT2poQyxHQUFZNzRDLEVBQUssT0FBTyxFQUVoQzg1RSxFQUFLLFdBQVcsQ0FBQyxHQUFLLEtBQVlBLEVBQU9BLEVBQUssTUFBTSxDQUFDLEdBQ3hEOTVFLEVBQUssRUFBSW1nRSxHQUFTMlosRUFBTTcwRyxDQUFJLEVBQzVCLE9BQU8rNkIsRUFBSyxRQUNUQSxFQUFLLFlBQWMsS0FBTUEsRUFBSyxFQUFJbWdFLEdBQVMsUUFBU2w3RixDQUFJLEVBQ25EKzZCLEVBQUssYUFDWkEsRUFBSyxFQUFJbWdFLEdBQVNuZ0UsRUFBSyxXQUFZLzZCLENBQUksRUFDdkMyaUgsRUFBTyxLQUFLLENBQUMzbkMsR0FBa0JqZ0QsRUFBSyxDQUFDLEVBQUdBLEVBQUssQ0FBQyxDQUFDLEVBRW5ELEtBQ0csS0FBSW5vQyxFQUFJLEVBQUdBLEVBQUkrdkgsRUFBTyxPQUFRLEVBQUUvdkgsRUFDNUJvTixFQUFLLEdBQUsyaUgsRUFBTy92SCxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBS29OLEVBQUssR0FBSzJpSCxFQUFPL3ZILENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUN0RG9OLEVBQUssR0FBSzJpSCxFQUFPL3ZILENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFLb04sRUFBSyxHQUFLMmlILEVBQU8vdkgsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQ3pEbW9DLEVBQUssRUFBSTRuRixFQUFPL3ZILENBQUMsRUFBRSxDQUFDLEdBR3RCb0csRUFBRSxhQUNKNDFILEVBQVUsUUFBUSxTQUFTLEVBQUcsQ0FDMUIsQ0FBQzF2RCxFQUFFLGFBQWUsRUFBRSxjQUFhQSxFQUFFLFlBQWMsRUFBRSxZQUN6RCxDQUFHLEVBQ0Rua0MsRUFBSyxFQUFJbWtDLEdBRVBua0MsRUFBSyxVQUFZLFNBQVdBLEVBQUssS0FBT0EsRUFBSyxRQUNqRCxDQUVBLFNBQVM4ekYsR0FBbUI3NkIsRUFBaUIsQ0FDNUNBLEVBQVEsRUFBSUEsRUFBUSxHQUFLLEdBQ3pCQSxFQUFRLEVBQUlBLEVBQVEsRUFBRSxRQUFRLFFBQVE7QUFBQSxDQUFJLEVBQUUsUUFBUSxNQUFNO0FBQUEsQ0FBSSxFQUM5REEsRUFBUSxFQUFJQSxFQUFRLEVBQUlBLEVBQVEsS0FBTyxNQUN4QyxDQUdBLFNBQVM4NkIsR0FBZTUxSCxFQUFHc3RFLEVBQW9CLENBQzlDLElBQUlyNEUsRUFBT3E0RSxHQUFTLEdBQ3BCL0gsS0FDQSxJQUFJL3FDLEVBQU0yZ0MsR0FBTTZoQixHQUFlaDlFLENBQUMsQ0FBQyxHQUM5Qi9LLEVBQUssTUFBUSxVQUFZQSxFQUFLLE1BQVEsU0FBV0EsRUFBSyxNQUFRLFlBRTNEdWxDLEVBQU11aEQsR0FBU3ZoRCxDQUFHLEdBRXhCLElBQUlxN0YsRUFBVXI3RixFQUFJLE1BQU0sRUFBRyxJQUFJLEVBQUUsWUFBVyxFQUFJczdGLEVBQVMsR0FFekQsR0FEQUQsRUFBVUEsRUFBUSxRQUFRLFNBQVUsRUFBRSxHQUNsQ0EsRUFBUSxRQUFRLEdBQUcsRUFBSSxNQUFRLEtBQUssSUFBS0EsRUFBUSxRQUFRLEdBQUcsRUFBSSxLQUFRQSxFQUFRLFFBQVEsR0FBRyxFQUFFLElBQU0sRUFBRSxDQUFFLElBQUlFLEVBQUs3OUMsR0FBSWpqRixDQUFJLEVBQUcsT0FBQThnSSxFQUFHLEtBQU8sU0FBaUJ2eEIsR0FBSSxZQUFZaHFFLEVBQUt1N0YsQ0FBRSxDQUFJLENBRXJMLEdBREdGLEVBQVEsUUFBUSxPQUFPLEdBQUssSUFBSSxDQUFDLE9BQVEsUUFBUyxPQUFRLE9BQVEsU0FBVSxRQUFTLEtBQUssRUFBRSxRQUFRLFNBQVNwd0UsR0FBSyxDQUFLb3dFLEVBQVEsUUFBUSxJQUFNcHdFLEVBQUcsR0FBSyxJQUFHcXdFLEVBQVMsR0FBTyxDQUFBLEVBQ3hLQSxFQUFRLE9BQU9FLEdBQWlCeDdGLEVBQUt2bEMsQ0FBSSxFQUU1QzgvSCxHQUFpQixDQUNoQixpQkFBa0IsVUFDbEIsZUFBZ0I1MkQsR0FBVSxFQUFFLEVBQzVCLFlBQWEsc0JBQ2IsY0FBZUEsR0FBVSxFQUFFLEVBQzNCLGFBQWNBLEdBQVUsRUFBRSxFQUMxQixZQUFhQSxHQUFVLEVBQUUsRUFDekIsY0FBZUEsR0FBVSxFQUFFLEVBQzNCLGFBQWNBLEdBQVUsRUFBRSxFQUMxQixTQUFZLHVDQUNaLE1BQVNBLEdBQVUsQ0FBQyxFQUNwQixTQUFZQSxHQUFVLENBQUMsRUFDdkIsUUFBV0EsR0FBVSxFQUFFLEVBQ3ZCLFdBQWNBLEdBQVUsRUFBRSxFQUMxQixTQUFVLHFCQUNWLGFBQWMsMEJBQ2QsU0FBVSxvQkFDWixFQUdDLElBQUlxckIsRUFDQXI1QyxFQUFRLENBQUUsRUFBRXpuQixFQUVaMDVELEVBQVMsQ0FBQSxFQUFJNnpDLEVBQStCLENBQUUsRUFBRUMsRUFBMEJqaEksRUFBSyxNQUFRLENBQUEsRUFBSyxDQUFBLEVBQUtraEksRUFBWSxHQUM3R3QwRixFQUFRLENBQUEsRUFBYXRoQyxFQUFNLENBQUEsRUFDM0I2MUgsRUFBT3hCLEdBQWlCLHlCQUF5QixFQUFHeUIsRUFBTyxFQUMzRG42RyxFQUFJLEVBQUdqZCxFQUFJLEVBQ1h1bkcsRUFBcUIsQ0FBQyxFQUFHLENBQUMsRUFBRSxJQUFTLEVBQUUsR0FBTyxFQUFHLEVBQUcsQ0FBQyxFQUFFLEVBQUcsRUFBRSxDQUFDLENBQUMsRUFDOURpTCxFQUFTLENBQUEsRUFBSTRqQixFQUFPLEdBQ3BCMzBELEVBQUssR0FBSTQxRCxFQUFPLEVBQ2hCejZCLEVBQTBCLENBQUEsRUFDMUJuUSxFQUFRLENBQUUsRUFBRUcsRUFBWSxDQUFBLEVBQUkwcUMsRUFBTyxFQUFHOThILEVBQUssR0FDM0M4K0csRUFBOEIsQ0FBQSxFQUFJemQsRUFBdUIsQ0FBRSxFQUMzRDA3QixFQUFRLENBQUUsRUFBRWhCLEdBQU16TixHQUFVLEdBQzVCMEIsRUFBb0MsQ0FBQSxFQUNwQ3BvQixHQUE2QixDQUFFLEVBQUVzb0IsRUFBUyxDQUFBLEVBQUlqbkQsRUFBSyxFQUFHUixFQUFLLEVBQzNEOHNELEVBQTBCLENBQUUsT0FBTyxDQUFBLEVBQUksUUFBUSxDQUFDLFNBQVMsRUFBSyxDQUFDLEVBQWF5SCxFQUFVLENBQUEsRUFDMUZ4NUMsR0FBVSxVQUFZLEVBQ3RCemlELEVBQU1BLEVBQUksUUFBUSxzQkFBc0IsRUFBRSxFQUUxQyxRQURJazhGLEVBQVUsR0FDUGx0QyxFQUFLdk0sR0FBVSxLQUFLemlELENBQUcsR0FBSSxPQUFRZ3ZELEVBQUcsQ0FBQyxHQUFLa3RDLEVBQVVsdEMsRUFBRyxDQUFDLEdBQUcsWUFBYSxFQUFBLENBQ2hGLElBQUssT0FDSixHQUFHa3RDLEdBQVcsT0FBUSxDQUNyQixHQUFHbHRDLEVBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTlnRSxFQUFJeW5CLEVBQU0sSUFBRyxHQUFJLENBQUMsSUFBSXE1QyxFQUFHLENBQUMsRUFBRyxNQUFNLElBQUksTUFBTSxjQUFjOWdFLEVBQUksS0FBSyxHQUFHLENBQUMsT0FDcEY4Z0UsRUFBRyxDQUFDLEVBQUUsT0FBT0EsRUFBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQU0sS0FBS3I1QyxFQUFNLEtBQUssQ0FBQ3E1QyxFQUFHLENBQUMsRUFBRyxFQUFJLENBQUMsRUFDdEUsS0FDQSxDQUNELEdBQUdyNUMsRUFBTUEsRUFBTSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUcsTUFDMUJxNUMsRUFBRyxDQUFDLElBQUksSUFBSytyQyxHQUFnQi82RixFQUFJLE1BQU02N0YsRUFBTTdzQyxFQUFHLEtBQUssRUFBRzlvQixFQUFJMDFELEVBQU1qbUYsRUFBTUEsRUFBTSxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQWdCLFVBQVUycUQsRUFBUWo1RCxFQUFNLENBQUMsRUFBRTNsQixFQUFFLEVBQUVqZCxDQUFDLEVBQUd3eUcsRUFBUStrQixFQUFNdDZHLENBQUMsRUFBRzNiLEVBQUtrcEgsRUFBUXgwSCxDQUFJLEdBQzNLeXJFLEVBQUssR0FBSTAxRCxFQUFPeEIsR0FBaUJwckMsRUFBRyxDQUFDLENBQUMsRUFBRzZzQyxFQUFPN3NDLEVBQUcsTUFBUUEsRUFBRyxDQUFDLEVBQUUsUUFDeEUsTUFDRCxJQUFLLE9BQ0osR0FBR0EsRUFBRyxDQUFDLElBQUksSUFrQlYsR0FqQkcrdUIsRUFBUyxPQUFTLElBQUcxMkUsRUFBSyxFQUFJMDJFLElBQzdCLENBQUN0akgsRUFBSyxXQUFhQSxFQUFLLFVBQVlnSyxJQUFNNGlDLEVBQUssSUFBTSxTQUNyRDVzQyxFQUFLLE9BQ0hpaEksRUFBU2ozSCxDQUFDLElBQUdpM0gsRUFBU2ozSCxDQUFDLEVBQUksSUFDL0JpM0gsRUFBU2ozSCxDQUFDLEVBQUVpZCxDQUFDLEVBQUkybEIsR0FDWHEwRixFQUFTbDFDLEdBQVc5a0UsQ0FBQyxFQUFJK2tFLEdBQVdoaUYsQ0FBQyxDQUFDLEVBQUk0aUMsR0FFL0NBLEVBQUssT0FDUEEsRUFBSyxFQUFLLENBQUMsT0FBTzY0QyxHQUFZNzRDLEVBQUssSUFBSSxDQUFDLEVBQ3JDQSxFQUFLLGdCQUFlQSxFQUFLLEVBQUUsUUFBVUEsRUFBSyxlQUM3QyxPQUFPQSxFQUFLLEtBQU0sT0FBT0EsRUFBSyxnQkFFNUJBLEVBQUssYUFBZUEsRUFBSyxhQUMzQjZnQyxFQUFLeG1ELEdBQUssU0FBUzJsQixFQUFLLFlBQVksRUFBRSxFQUFFLEdBQ3hDcWdDLEVBQUtqakUsR0FBSyxTQUFTNGlDLEVBQUssVUFBVSxFQUFFLEVBQUUsR0FDdENnNkQsRUFBTyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUzL0UsRUFBRSxFQUFFamQsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFeWpFLEVBQUcsRUFBRVIsQ0FBRSxDQUFDLENBQUMsR0FFckMsQ0FBQ2p0RSxFQUFLLFdBQWlCNHNDLEVBQUssWUFBYTNsQixFQUFJd21ELEVBQUssRUFBUSxFQUFFeG1ELFVBQ3ZEMmxCLEVBQUssYUFBZUEsRUFBSyxVQUFXLENBRTNDLFFBQVE4MEYsR0FBTXo2RyxFQUFHeTZHLElBQU9qMEQsRUFBSSxFQUFFaTBELEdBQzdCLFFBQVFDLEdBQU0zM0gsRUFBRzIzSCxJQUFPMTBELEVBQUksRUFBRTAwRCxJQUMxQkQsR0FBTXo2RyxHQUFLMDZHLEdBQU0zM0gsS0FDaEJoSyxFQUFLLE9BQ0hpaEksRUFBU1UsRUFBRyxJQUFHVixFQUFTVSxFQUFHLEVBQUksSUFDbkNWLEVBQVNVLEVBQUcsRUFBRUQsRUFBRyxFQUFJLENBQUMsRUFBRSxHQUFHLEdBQ3JCVCxFQUFTbDFDLEdBQVcyMUMsRUFBRyxFQUFJMTFDLEdBQVcyMUMsRUFBRyxDQUFDLEVBQUksQ0FBQyxFQUFFLEdBQUcsR0FJOUQxNkcsRUFBSXdtRCxFQUFLLENBQ1QsS0FDSSxFQUFFeG1ELE9BRVAybEIsRUFBT2l6RixHQUFvQnRyQyxFQUFHLENBQUMsQ0FBQyxFQUM3QjNuRCxFQUFLLFFBQU8zbEIsRUFBSSxDQUFDMmxCLEVBQUssTUFBUSxHQUM5QjNsQixFQUFJc3FGLEVBQVMsRUFBRSxJQUFHQSxFQUFTLEVBQUUsRUFBSXRxRixHQUNqQ0EsRUFBSXNxRixFQUFTLEVBQUUsSUFBR0EsRUFBUyxFQUFFLEVBQUl0cUYsR0FDakNzdEUsRUFBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQU0sTUFBTSxFQUFFdHRFLEVBQy9CcThGLEVBQVcsQ0FBQSxFQUVaLE1BQ0QsSUFBSyxNQUNEL3VCLEVBQUcsQ0FBQyxJQUFJLEtBQU9BLEVBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFNLE1BQ2xDdnFGLEVBQUl1bkcsRUFBUyxFQUFFLElBQUdBLEVBQVMsRUFBRSxFQUFJdm5HLEdBQ2pDQSxFQUFJdW5HLEVBQVMsRUFBRSxJQUFHQSxFQUFTLEVBQUUsRUFBSXZuRyxHQUNqQ3VxRixFQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBTSxPQUN0QmpwRixFQUFNcTBILEdBQWlCcHJDLEVBQUcsQ0FBQyxDQUFDLEVBQ3pCanBGLEVBQUksUUFBT3RCLEVBQUksQ0FBQ3NCLEVBQUksTUFBUSxJQUVoQzJiLEVBQUksRUFBRyxFQUFFamQsSUFFVHNCLEVBQU1xMEgsR0FBaUJwckMsRUFBRyxDQUFDLENBQUMsRUFDekJqcEYsRUFBSSxRQUFPdEIsRUFBSSxDQUFDc0IsRUFBSSxNQUFRLEdBQy9Cb3BILEVBQVMsQ0FBQSxHQUNOcHBILEVBQUksZUFBaUIsS0FBT0EsRUFBSSxVQUNsQ29wSCxFQUFPLElBQU0sU0FBU3BwSCxFQUFJLE9BQVEsRUFBRSxFQUFHb3BILEVBQU8sSUFBTTNtQixHQUFNMm1CLEVBQU8sR0FBRyxFQUNwRXRvQixHQUFRcGlHLENBQUMsRUFBSTBxSCxHQUVYcHBILEVBQUksUUFBVSxNQUFPb3BILEVBQU8sT0FBUyxHQUFNdG9CLEdBQVFwaUcsQ0FBQyxFQUFJMHFILElBRTVELE1BQ0QsSUFBSyxZQUNKLEdBQUduZ0MsRUFBRyxDQUFDLElBQUksSUFBSSxDQUNkLElBQUk5Z0UsRUFBSXluQixFQUFNLElBQUcsR0FBSSxDQUFDLElBQUlxNUMsRUFBRyxDQUFDLEVBQUcsTUFBTSxJQUFJLE1BQU0sY0FBYzlnRSxFQUFJLEtBQUssR0FBRyxDQUFDLEVBQzVFdXRHLEVBQVcsS0FBS0UsQ0FBUyxFQUN0QjN2QixFQUFTLEVBQUUsR0FBS0EsRUFBUyxFQUFFLEdBQUtBLEVBQVMsRUFBRSxHQUFLQSxFQUFTLEVBQUUsSUFDN0QwdkIsRUFBUyxNQUFNLEVBQUl2MEMsR0FBYTZrQixDQUFRLEVBQ3JDdnhHLEVBQUssV0FBYUEsRUFBSyxXQUFhdXhHLEVBQVMsRUFBRSxJQUNqRDB2QixFQUFTLFVBQVUsRUFBSUEsRUFBUyxNQUFNLEVBQ3RDMXZCLEVBQVMsRUFBRSxFQUFJdnhHLEVBQUssVUFBWSxFQUNoQ2loSSxFQUFTLE1BQU0sRUFBSXYwQyxHQUFhNmtCLENBQVEsSUFHdkMzSyxFQUFPLFNBQVFxNkIsRUFBUyxTQUFTLEVBQUlyNkIsR0FDckMyNkIsRUFBTSxPQUFTLElBQUdOLEVBQVMsT0FBTyxFQUFJTSxHQUN0Q24xQixHQUFRLE9BQVMsSUFBRzYwQixFQUFTLE9BQU8sRUFBSTcwQixJQUMzQ2pmLEVBQU8rekMsQ0FBUyxFQUFJRCxDQUN4QixNQUNJMXZCLEVBQVcsQ0FBQyxFQUFHLENBQUMsRUFBRSxJQUFTLEVBQUUsR0FBTyxFQUFHLEVBQUcsQ0FBQyxFQUFFLEVBQUcsRUFBRSxDQUFDLENBQUMsRUFDcER2bkcsRUFBSWlkLEVBQUksRUFDUmkwQixFQUFNLEtBQUssQ0FBQ3E1QyxFQUFHLENBQUMsRUFBRyxFQUFLLENBQUMsRUFDekI5Z0UsRUFBTWtzRyxHQUFpQnByQyxFQUFHLENBQUMsQ0FBQyxFQUM1QjJzQyxFQUFZejdDLEdBQVloeUQsRUFBSSxJQUFJLEVBQ2hDd3RHLEVBQVlqaEksRUFBSyxNQUFRLENBQUUsRUFBRyxDQUFFLEVBQ2hDNG1HLEVBQVMsQ0FBQSxFQUNUNHRCLEVBQVMsQ0FBQSxFQUNUcG9CLEdBQVUsQ0FBQSxFQUNWbzFCLEVBQVUsQ0FBQyxLQUFLTixFQUFXLE9BQU8sQ0FBQyxFQUNuQ25ILEVBQVMsT0FBTyxLQUFLeUgsQ0FBTyxFQUU3QixNQUNELElBQUssUUFDSixHQUFHanRDLEVBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTlnRSxFQUFJeW5CLEVBQU0sSUFBRyxHQUFJLENBQUMsSUFBSXE1QyxFQUFHLENBQUMsRUFBRyxNQUFNLElBQUksTUFBTSxjQUFjOWdFLEVBQUksS0FBSyxHQUFHLENBQUMsTUFDdkYsSUFBRzhnRSxFQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBSyxLQUFNLE1BRWhDcjVDLEVBQU0sS0FBSyxDQUFDcTVDLEVBQUcsQ0FBQyxFQUFHLEVBQUssQ0FBQyxFQUN6Qmd0QyxFQUFRLENBQUUsRUFBRXpPLEdBQVUsR0FFdkIsTUFFRCxJQUFLLFFBQ0R2K0IsRUFBRyxDQUFDLElBQUksSUFBSzRyQyxHQUFtQjNqQixFQUFRNGpCLEVBQU1wZ0ksQ0FBSSxFQUNoRG9nSSxFQUFPVCxHQUFpQnByQyxFQUFHLENBQUMsQ0FBQyxFQUNsQyxNQUVELElBQUssZUFDSjZyQyxFQUFLLEdBQUszNkMsR0FBWWs2QyxHQUFpQnByQyxFQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVUsU0FBUyxFQUM5RHVyQyxHQUFjTSxFQUFLLEVBQUUsSUFBR0EsRUFBSyxHQUFLTixHQUFjTSxFQUFLLEVBQUUsR0FDMUQsUUFBUXdCLEdBQVMsRUFBR0EsSUFBVSxLQUFvQjE0RCxHQUFVMDRELEVBQU0sR0FBS3hCLEVBQUssR0FBdkMsRUFBRXdCLEdBQVEsQ0FDL0MsR0FBR0EsSUFBVSxLQUFPLElBQUlBLEdBQVMsR0FBTUEsSUFBVSxJQUFPLEVBQUVBLEdBQVEsR0FBRzE0RCxHQUFVMDRELEVBQU0sR0FBSyxLQUFNLENBQUV6eEQsR0FBU2l3RCxFQUFLLEdBQUl3QixFQUFNLEVBQUcsS0FBUSxFQUNySSxNQUVELElBQUssU0FDSixHQUFHMW1GLEVBQU1BLEVBQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFpQixRQUFTLE1BSXBELEdBSEFxbEYsR0FBT1osR0FBaUJwckMsRUFBRyxDQUFDLENBQUMsRUFDMUJnc0MsR0FBSyxTQUFVQSxHQUFLLE9BQVMsR0FBTSxPQUFPQSxHQUFLLFFBQy9DQSxHQUFLLFFBQU9BLEdBQUssSUFBTSxTQUFTQSxHQUFLLE1BQU8sRUFBRSxHQUM5QyxDQUFDek4sSUFBV3lOLEdBQUssSUFBTSxHQUFJLENBQzdCek4sR0FBVSxHQUFNcFgsR0FBTUgsR0FDdEIsUUFBUXNtQixHQUFPLEVBQUdBLEdBQU9OLEVBQU0sT0FBUSxFQUFFTSxHQUFTTixFQUFNTSxFQUFJLEdBQUcxMEIsR0FBWW8wQixFQUFNTSxFQUFJLENBQUMsQ0FDdEYsQ0FDRS9PLElBQVMzbEIsR0FBWW96QixFQUFJLEVBQzVCZ0IsRUFBT2hCLEdBQUssTUFBTSxHQUFHZ0IsRUFBTSxNQUFRLEVBQUdoQixHQUN0QyxRQUFROTdILEdBQUksRUFBR0EsR0FBSSxDQUFDODdILEdBQUssS0FBTSxFQUFFOTdILEdBQUc4OEgsRUFBTUEsRUFBTSxNQUFNLEVBQUl0K0MsR0FBSXM5QyxFQUFJLEVBQ2xFLE1BRUQsSUFBSyxhQUNKLEdBQUdoc0MsRUFBRyxDQUFDLElBQUksSUFBSyxNQUNad2xDLEVBQVMsUUFBT0EsRUFBUyxNQUFRLENBQUEsR0FDckMsSUFBSStILEVBQWM3OEMsR0FBWXNQLEVBQUcsQ0FBQyxDQUFDLEVBQy9Cd3RDLEdBQWdDLENBQ25DLEtBQU1ELEVBQVksS0FDbEIsSUFBSy8wQixHQUFTKzBCLEVBQVksU0FBUyxNQUFNLENBQUMsRUFBRyxDQUFDLEVBQUUsRUFBRyxFQUFFLENBQUMsQ0FBQyxDQUMzRCxFQUNNL0gsRUFBUyxPQUFPLE9BQU8sSUFBR2dJLEdBQWEsTUFBTWhJLEVBQVMsT0FBTyxPQUFPLEdBQzdDQSxFQUFTLE1BQU0sS0FBS2dJLEVBQVksRUFDMUQsTUFFRCxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssSUFBa0IsTUFDdkIsSUFBSyxJQUFrQixNQUN2QixJQUFLLElBQWtCLE1BQ3ZCLElBQUssSUFBa0IsTUFDdkIsSUFBSyxLQUFvQixNQUN6QixJQUFLLEtBQW9CLE1BQ3pCLElBQUssS0FBb0IsTUFDekIsSUFBSyxNQUFzQixNQUMzQixJQUFLLE1BQXNCLE1BQzNCLElBQUssT0FBd0IsTUFDN0IsSUFBSyxZQUNKLE1BQ0QsSUFBSyxVQUE4QixNQUNuQyxJQUFLLFNBQTRCLE1BQ2pDLElBQUssT0FDSixHQUFHeHRDLEVBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFNLEtBQU0sTUFDckJBLEVBQUcsQ0FBQyxJQUFJLElBQUs5b0IsR0FBTWxtQyxFQUFJLE1BQU04N0YsRUFBTTlzQyxFQUFHLEtBQUssRUFDOUM4c0MsRUFBTzlzQyxFQUFHLE1BQVFBLEVBQUcsQ0FBQyxFQUFFLE9BQzdCLE1BQ0QsSUFBSyxXQUNKLEdBQUcsQ0FBQ3YwRixFQUFLLFdBQVksTUFDckJvZ0ksRUFBSyxTQUFXVCxHQUFpQnByQyxFQUFHLENBQUMsQ0FBQyxFQUN0QyxNQUNELElBQUssYUFBb0MsTUFFekMsSUFBSyxTQUNMLElBQUssUUFDTCxJQUFLLGNBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLGdCQUNMLElBQUssVUFDTCxJQUFLLGdCQUNMLElBQUssYUFDTCxJQUFLLFdBQ0wsSUFBSyxVQUNKLEdBQUdBLEVBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFNLEtBQU0sTUFDckJBLEVBQUcsQ0FBQyxJQUFJLElBQUtpQyxHQUFjQyxFQUFPZ3JDLEVBQVNsOEYsRUFBSSxNQUFNKzdGLEVBQU0vc0MsRUFBRyxLQUFLLENBQUMsRUFDdkUrc0MsRUFBTy9zQyxFQUFHLE1BQVFBLEVBQUcsQ0FBQyxFQUFFLE9BQzdCLE1BQ0QsSUFBSyxhQUFvQyxNQUV6QyxJQUFLLFNBQ0wsSUFBSyxXQUNKLEdBQUdBLEVBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTlnRSxFQUFJeW5CLEVBQU0sSUFBRyxHQUFJLENBQUMsSUFBSXE1QyxFQUFHLENBQUMsRUFBRyxNQUFNLElBQUksTUFBTSxjQUFjOWdFLEVBQUksS0FBSyxHQUFHLENBQUMsT0FDdkZ5bkIsRUFBTSxLQUFLLENBQUNxNUMsRUFBRyxDQUFDLEVBQUcsRUFBSyxDQUFDLEVBQzlCLE1BRUQsSUFBSyxVQUNKLEdBQUdBLEVBQUcsQ0FBQyxJQUFJLElBQUksQ0FDZCxJQUFJOWdFLEVBQUl5bkIsRUFBTSxJQUFHLEdBQUksQ0FBQyxJQUFJcTVDLEVBQUcsQ0FBQyxFQUFHLE1BQU0sSUFBSSxNQUFNLGNBQWM5Z0UsRUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUM1RWl0RyxHQUFtQjc2QixDQUFPLEVBQzFCeWQsRUFBUyxLQUFLemQsQ0FBTyxDQUN6QixNQUNJM3FELEVBQU0sS0FBSyxDQUFDcTVDLEVBQUcsQ0FBQyxFQUFHLEVBQUssQ0FBQyxFQUN6QjlnRSxFQUFNa3NHLEdBQWlCcHJDLEVBQUcsQ0FBQyxDQUFDLEVBQzVCc1IsRUFBVyxDQUFDLEVBQUVweUUsRUFBSSxNQUFNLEVBRXpCLE1BRUQsSUFBSyxhQUNKLEdBQUc4Z0UsRUFBRyxDQUFDLElBQUksS0FBSyxJQUFJOWdFLEVBQUl5bkIsRUFBTSxJQUFHLEdBQUksQ0FBQyxJQUFJcTVDLEVBQUcsQ0FBQyxFQUFHLE1BQU0sSUFBSSxNQUFNLGNBQWM5Z0UsRUFBSSxLQUFLLEdBQUcsQ0FBQyxVQUNwRjhnRSxFQUFHLENBQUMsRUFBRSxPQUFPQSxFQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBTSxJQUFLLENBQzdDLElBQUl5dEMsR0FBYXJDLEdBQWlCcHJDLEVBQUcsQ0FBQyxDQUFDLEVBQ3ZDMHNDLEVBQVMsYUFBYSxFQUFJLENBQUUsSUFBSWwwQixHQUFTaTFCLEdBQVcsS0FBSyxFQUFFLFFBQVEsTUFBTSxFQUFFLENBQUMsRUFDNUU5bUYsRUFBTSxLQUFLLENBQUNxNUMsRUFBRyxDQUFDLEVBQUcsRUFBSSxDQUFDLENBQ3hCLENBQ0QsTUFFRCxJQUFLLE9BQXdCLE1BRTdCLElBQUssaUJBQ0osR0FBR0EsRUFBRyxDQUFDLElBQUksS0FDVixJQUFJOWdFLEVBQUl5bkIsRUFBTSxJQUFHLEdBQUksQ0FBQyxJQUFJcTVDLEVBQUcsQ0FBQyxFQUFHLE1BQU0sSUFBSSxNQUFNLGNBQWM5Z0UsRUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUV6RThnRSxFQUFHLENBQUMsRUFBRSxPQUFPQSxFQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBTSxLQUFLcjVDLEVBQU0sS0FBSyxDQUFDcTVDLEVBQUcsQ0FBQyxFQUFHLEVBQUksQ0FBQyxFQUVsRSxNQUVELElBQUssZ0JBQ0osTUFDRCxJQUFLLG1CQUNMLElBQUsscUJBQ0wsSUFBSywyQkFDTCxJQUFLLHlCQUNMLElBQUssYUFDTCxJQUFLLGFBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxhQUNMLElBQUssVUFDTCxJQUFLLFNBQ0wsSUFBSyx3QkFDTCxJQUFLLGVBQ0wsSUFBSyxZQUNMLElBQUssZ0JBQ0wsSUFBSyxrQkFDTCxJQUFLLG1CQUNKLEdBQUdBLEVBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTlnRSxFQUFJeW5CLEVBQU0sSUFBRyxHQUFJLENBQUMsSUFBSXE1QyxFQUFHLENBQUMsRUFBRyxNQUFNLElBQUksTUFBTSxjQUFjOWdFLEVBQUksS0FBSyxHQUFHLENBQUMsT0FDcEY4Z0UsRUFBRyxDQUFDLEVBQUUsT0FBT0EsRUFBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQU0sS0FBS3I1QyxFQUFNLEtBQUssQ0FBQ3E1QyxFQUFHLENBQUMsRUFBRyxFQUFJLENBQUMsRUFDdEUsTUFFRCxJQUFLLE9BQXdCLE1BRTdCLFFBSUMsR0FGR3I1QyxFQUFNLFFBQVUsR0FBS3E1QyxFQUFHLENBQUMsR0FBSyxZQUU5QnI1QyxFQUFNLFFBQVUsR0FBS3E1QyxFQUFHLENBQUMsR0FBSyxNQUFnQixPQUFPMHRDLEdBQVcxOEYsRUFBS3ZsQyxDQUFJLEVBRTVFLElBQUk4MkUsR0FBTyxHQUNYLE9BQU81N0IsRUFBTUEsRUFBTSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FFOUIsSUFBSyx5QkFBNEQsT0FBT3E1QyxFQUFHLENBQUMsRUFBQyxDQUM1RSxJQUFLLFdBQWdDLE1BQ3JDLElBQUssNEJBQWtFLE1BQ3ZFLElBQUsscUJBQW9ELE1BQ3pELElBQUssdUJBQXdELE1BQzdELElBQUssU0FBNEIsTUFDakMsSUFBSyxRQUEwQixNQUMvQixJQUFLLFFBQTBCLE1BQy9CLElBQUssTUFBc0IsTUFDM0IsSUFBSyxtQkFBZ0QsTUFDckQsSUFBSyxzQkFBc0QsTUFDM0QsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssbUJBQWdELE9BQU95ZCxFQUFHLENBQUMsRUFBQyxDQUNoRSxJQUFLLFVBQThCLE1BQ25DLElBQUssaUJBQTRDLE1BQ2pELElBQUsscUJBQW9ELE1BQ3pELElBQUssUUFBMEIsTUFDL0IsSUFBSyxVQUE4QixNQUNuQyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxrQkFBOEMsTUFDbkQsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssZ0JBQTBDLE9BQU95ZCxFQUFHLENBQUMsRUFBQyxDQUMxRCxJQUFLLFdBRUp3bEMsRUFBUyxRQUFRLFNBQVcsR0FDNUIsTUFDRCxJQUFLLGVBQXdDLE1BQzdDLElBQUssY0FBc0MsTUFDM0MsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGFBQW9DLE1BQ3pDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxtQkFBZ0QsTUFDckQsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxpQkFBNEMsTUFDakQsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLGtCQUE4QyxNQUNuRCxJQUFLLG9CQUFrRCxNQUN2RCxJQUFLLFVBQThCLE1BQ25DLElBQUssWUFBa0MsTUFDdkMsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGtCQUE4QyxNQUNuRCxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLE1BQXNCLE1BQzNCLElBQUsseUJBQTRELE1BQ2pFLElBQUssc0JBQXNELE1BQzNELElBQUssWUFBa0MsTUFDdkMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLE9BQXdCLE1BQzdCLElBQUssTUFBc0IsTUFDM0IsSUFBSyxRQUEwQixNQUMvQixJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLGNBQXNDLE1BQzNDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxNQUFzQixNQUMzQixJQUFLLGFBQW9DLE1BQ3pDLElBQUssVUFBOEIsTUFDbkMsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLFVBQThCLE1BQ25DLElBQUssYUFBb0MsTUFDekMsSUFBSyxVQUE4QixNQUNuQyxJQUFLLFFBQTBCLE1BQy9CLElBQUssT0FBd0IsTUFDN0IsSUFBSyxNQUFzQixNQUMzQixJQUFLLGdCQUEwQyxNQUMvQyxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLDJCQUFnRSxNQUNyRSxJQUFLLFNBQTRCLE1BQ2pDLElBQUssY0FBc0MsTUFDM0MsSUFBSyxxQkFBb0QsTUFDekQsUUFBU2pqRCxHQUFPLEVBQ3JCLENBQU0sTUFHRixJQUFLLGtCQUE4QyxPQUFPeWQsRUFBRyxDQUFDLEVBQUMsQ0FDOUQsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLFNBQTRCLE1BQ2pDLElBQUssUUFBMEIsTUFDL0IsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssbUJBQWdELE9BQU95ZCxFQUFHLENBQUMsRUFBQyxDQUNoRSxJQUFLLFVBQ0osR0FBR0EsRUFBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQU0sS0FDbEIsR0FBR0EsRUFBRyxDQUFDLElBQUksSUFBSyxPQUFPaHZELEVBQUksTUFBTSs3RixFQUFNL3NDLEVBQUcsS0FBSyxFQUFDLENBQ3BELElBQUssY0FBZWl0QyxFQUFRLE9BQVMsRUFBRyxNQUN4QyxJQUFLLGtCQUFtQkEsRUFBUSxPQUFTLEVBQUcsS0FDNUMsTUFDSUYsRUFBTy9zQyxFQUFHLE1BQVFBLEVBQUcsQ0FBQyxFQUFFLE9BQzdCLE1BQ0QsSUFBSyxTQUNBMHNDLEVBQVMsVUFBVSxHQUFHbFIsR0FBZ0JrUixFQUFTLFVBQVUsRUFBRSxHQUFJLE1BQU0sRUFDckUsTUFBTSxDQUFDaDhDLEdBQVlzUCxFQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBRzBzQyxFQUFTLFVBQVUsRUFBRSxPQUFTLENBQUNoOEMsR0FBWXNQLEVBQUcsQ0FBQyxDQUFDLEVBQUUsUUFDekYsTUFDRCxJQUFLLFNBQ0Ewc0MsRUFBUyxVQUFVLEdBQUdsUixHQUFnQmtSLEVBQVMsVUFBVSxFQUFFLEdBQUksTUFBTSxFQUNyRSxNQUFNLENBQUNoOEMsR0FBWXNQLEVBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFHMHNDLEVBQVMsVUFBVSxFQUFFLE9BQVMsQ0FBQ2g4QyxHQUFZc1AsRUFBRyxDQUFDLENBQUMsRUFBRSxRQUN6RixNQUNELElBQUssY0FDSixJQUFJMnRDLEdBQWNqOUMsR0FBWXNQLEVBQUcsQ0FBQyxDQUFDLEVBQy9CMHNDLEVBQVMsVUFBVSxHQUFHbFIsR0FBZ0JrUixFQUFTLFVBQVUsRUFBRSxHQUFHLE1BQU0sRUFDcEUsTUFBTSxDQUFDaUIsR0FBWSxHQUFHLElBQUdqQixFQUFTLFVBQVUsRUFBRSxJQUFNLENBQUNpQixHQUFZLEtBQ2pFLE1BQU0sQ0FBQ0EsR0FBWSxJQUFJLElBQUdqQixFQUFTLFVBQVUsRUFBRSxLQUFPLENBQUNpQixHQUFZLE1BQ25FLE1BQU0sQ0FBQ0EsR0FBWSxLQUFLLElBQUdqQixFQUFTLFVBQVUsRUFBRSxNQUFRLENBQUNpQixHQUFZLE9BQ3JFLE1BQU0sQ0FBQ0EsR0FBWSxNQUFNLElBQUdqQixFQUFTLFVBQVUsRUFBRSxPQUFTLENBQUNpQixHQUFZLFFBQzNFLE1BQ0QsSUFBSyxxQkFDQW5JLEVBQVMsUUFBT0EsRUFBUyxNQUFRLENBQUEsR0FDakNBLEVBQVMsTUFBTSxDQUFDLElBQUdBLEVBQVMsTUFBTSxDQUFDLEVBQUksSUFDM0NBLEVBQVMsTUFBTSxDQUFDLEVBQUUsSUFBTSxHQUN4QixNQUVELElBQUssY0FBc0MsTUFDM0MsSUFBSyxnQkFBMEMsTUFFL0MsSUFBSyxrQkFDTCxJQUFLLGdCQUNKLE1BRUQsSUFBSyx3QkFDSixNQUVELElBQUssWUFBa0MsTUFDdkMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLG1CQUFnRCxNQUNyRCxJQUFLLHNCQUFzRCxNQUUzRCxJQUFLLFdBQWdDLE1BQ3JDLElBQUssUUFBMEIsTUFDL0IsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLFFBQTBCLE1BQy9CLElBQUssUUFBMEIsTUFDL0IsSUFBSyxPQUF3QixNQUM3QixJQUFLLFNBQTRCLE1BQ2pDLElBQUssU0FBNEIsTUFDakMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLFdBQWdDLE1BQ3JDLElBQUssaUJBQTRDLE1BQ2pELElBQUssa0JBQThDLE1BQ25ELElBQUssbUJBQWdELE1BQ3JELElBQUssbUJBQWdELE1BQ3JELElBQUssdUJBQXdELE1BQzdELElBQUsscUJBQW9ELE1BQ3pELElBQUssaUJBQTRDLE1BQ2pELElBQUssYUFBb0MsTUFDekMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxvQkFBa0QsTUFDdkQsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLGdCQUEwQyxNQUMvQyxJQUFLLFdBQWdDLE1BQ3JDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLE9BQXdCLE1BQzdCLElBQUssY0FBc0MsTUFDM0MsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssY0FBc0MsTUFDM0MsSUFBSyxrQkFBOEMsTUFDbkQsSUFBSyxrQkFBOEMsTUFDbkQsSUFBSyxrQkFBOEMsTUFDbkQsSUFBSyxrQkFBOEMsTUFDbkQsSUFBSyx3QkFBMEQsTUFDL0QsSUFBSyxtQkFBZ0QsTUFDckQsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSywyQkFDQWtILEVBQVMsVUFBVSxJQUFHQSxFQUFTLFVBQVUsRUFBSSxJQUNqREEsRUFBUyxVQUFVLEVBQUUsTUFBUSxHQUM3QixNQUNELElBQUssZ0JBQTBDLE1BQy9DLElBQUssdUJBQXdELE1BQzdELElBQUsscUJBQW9ELE1BQ3pELElBQUssOEJBQ0FBLEVBQVMsVUFBVSxJQUFHQSxFQUFTLFVBQVUsRUFBSSxJQUNqREEsRUFBUyxVQUFVLEVBQUUsS0FBTyxHQUM1QixNQUNELElBQUssZ0JBQTBDLE1BQy9DLElBQUssb0JBQWtELE1BQ3ZELElBQUssbUJBQWdELE1BQ3JELElBQUssaUJBQTRDLE1BQ2pELElBQUssc0JBQXNELE1BQzNELElBQUssZ0JBQTBDLE1BQy9DLElBQUssc0JBQXNELE1BQzNELElBQUssYUFBb0MsTUFDekMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLGtCQUE4QyxNQUNuRCxRQUFTbnFELEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssYUFBb0MsSUFBSyxhQUFvQyxPQUFPeWQsRUFBRyxDQUFDLEVBQUMsQ0FDN0YsSUFBSyx1QkFBd0QsTUFDN0QsSUFBSyw0QkFBa0UsTUFDdkUsSUFBSyxtQkFBZ0QsTUFDckQsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLGFBQW9DLE1BQ3pDLElBQUssY0FBc0MsTUFDM0MsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLHlCQUE0RCxNQUNqRSxJQUFLLG1CQUFnRCxNQUNyRCxJQUFLLFdBQWdDLE1BQ3JDLElBQUssWUFBa0MsTUFDdkMsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssYUFBb0MsTUFDekMsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLGNBQXNDLE1BQzNDLElBQUssYUFBb0MsTUFDekMsSUFBSyxtQkFBZ0QsTUFDckQsSUFBSyxPQUF3QixNQUM3QixJQUFLLFdBQWdDLE1BQ3JDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLHlCQUE0RCxNQUNqRSxJQUFLLFdBQWdDLE1BQ3JDLElBQUssWUFBa0MsTUFDdkMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLHNCQUFzRCxNQUMzRCxJQUFLLFNBQTRCLE1BQ2pDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLGdCQUEwQyxNQUMvQyxJQUFLLFdBQWdDLE1BQ3JDLElBQUssb0JBQWtELE1BQ3ZELElBQUssaUJBQTRDLE1BQ2pELElBQUssY0FBc0MsTUFDM0MsSUFBSyxpQkFBNEMsTUFDakQsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLGNBQXNDLE1BQzNDLElBQUssa0JBQThDLE1BQ25ELElBQUsscUJBQW9ELE1BQ3pELElBQUssb0JBQWtELE1BQ3ZELElBQUssdUJBQXdELE1BQzdELElBQUssd0JBQTBELE1BQy9ELElBQUssY0FBc0MsTUFDM0MsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssYUFBb0MsT0FBT3lkLEVBQUcsQ0FBQyxFQUFDLENBQ3BELElBQUssWUFBa0MsTUFDdkMsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssV0FBZ0MsTUFDckMsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLFNBQTRCLE1BQ2pDLElBQUssU0FBNEIsTUFDakMsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssYUFBb0MsT0FBT3lkLEVBQUcsQ0FBQyxFQUFDLENBQ3BELElBQUssbUJBQWdELE1BQ3JELElBQUssc0JBQXNELE1BQzNELElBQUssZ0JBQTBDLE1BQy9DLElBQUssZUFBd0MsTUFDN0MsUUFBU3pkLEdBQU8sRUFDckIsQ0FBTSxNQUdGLElBQUssYUFBb0MsT0FBT3lkLEVBQUcsQ0FBQyxFQUFDLENBQ3BELElBQUssS0FBb0IsTUFDekIsSUFBSyxpQkFBNEMsTUFDakQsSUFBSyxvQkFBa0QsTUFDdkQsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUsscUJBQW9ELE1BQ3pELElBQUssaUJBQTRDLE1BQ2pELElBQUssWUFBa0MsTUFDdkMsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGFBQW9DLE1BQ3pDLElBQUssY0FBc0MsTUFDM0MsSUFBSyxjQUFzQyxNQUMzQyxJQUFLLFdBQWdDLE1BQ3JDLElBQUssU0FBNEIsTUFDakMsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLHFCQUFvRCxNQUN6RCxJQUFLLHFCQUFvRCxNQUN6RCxJQUFLLFNBQTRCLE1BQ2pDLElBQUssU0FBNEIsTUFDakMsSUFBSyxVQUE4QixNQUNuQyxJQUFLLG9CQUFrRCxNQUN2RCxJQUFLLHVCQUF3RCxNQUM3RCxJQUFLLGlCQUE0QyxNQUNqRCxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssYUFBb0MsTUFDekMsSUFBSyxNQUFzQixNQUMzQixJQUFLLFFBQTBCLE1BQy9CLElBQUssaUJBQTRDLE1BQ2pELElBQUssa0JBQThDLE1BQ25ELElBQUsscUJBQW9ELE1BQ3pELFFBQVN6ZCxHQUFPLEVBQ3JCLENBQU0sTUFFRixJQUFLLGlCQUNMLE9BQU95ZCxFQUFHLENBQUMsRUFBQyxDQUNYLElBQUssUUFBMEIsTUFFL0IsSUFBSyxPQUF3QixNQUM3QixJQUFLLE1BQXNCLE1BQzNCLElBQUssTUFBc0IsTUFDM0IsSUFBSyxPQUF3QixNQUM3QixJQUFLLGFBQW9DLE1BQ3pDLElBQUssUUFBMEIsTUFDL0IsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxRQUEwQixNQUMvQixJQUFLLGFBQW9DLE1BQ3pDLElBQUssZUFBd0MsTUFDN0MsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGVBQXdDLE1BQzdDLElBQUssYUFBb0MsTUFDekMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssWUFBa0MsTUFDdkMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLFdBQWdDLE1BQ3JDLElBQUssU0FBNEIsTUFDakMsSUFBSyxTQUE0QixNQUNqQyxJQUFLLFNBQTRCLE1BRWpDLElBQUssZ0JBQTBDLE1BQy9DLFFBQVN6ZCxHQUFPLEVBQ3JCLENBQU0sTUFFRixJQUFLLFVBQ0wsSUFBSyx3QkFDTCxPQUFPeWQsRUFBRyxDQUFDLEVBQUMsQ0FDWCxJQUFLLFFBQTBCLE1BQy9CLElBQUssT0FBd0IsTUFDN0IsSUFBSyxNQUFzQixNQUMzQixJQUFLLE1BQXNCLE1BQzNCLElBQUssT0FBd0IsTUFDN0IsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLFFBQTBCLE1BQy9CLElBQUssZ0JBQTBDLE1BQy9DLElBQUssUUFBMEIsTUFDL0IsSUFBSyxhQUFvQyxNQUN6QyxJQUFLLGVBQXdDLE1BQzdDLElBQUssYUFBb0MsTUFDekMsSUFBSyxnQkFBMEMsTUFDL0MsSUFBSyxlQUF3QyxNQUM3QyxJQUFLLGFBQW9DLE1BQ3pDLElBQUssWUFBa0MsTUFDdkMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLFlBQWtDLE1BQ3ZDLElBQUssWUFBa0MsTUFDdkMsSUFBSyxXQUFnQyxNQUNyQyxJQUFLLFNBQTRCLE1BQ2pDLElBQUssU0FBNEIsTUFDakMsSUFBSyxTQUE0QixNQUNqQyxRQUFTemQsR0FBTyxFQUNyQixDQUFNLE1BR0YsSUFBSyxVQUE4QixJQUFLLFNBQTRCLElBQUssT0FBd0IsT0FBT3lkLEVBQUcsQ0FBQyxFQUFDLENBQzVHLElBQUssTUFBc0IsTUFDM0IsSUFBSyxRQUEwQixNQUMvQixJQUFLLFFBQTBCLE1BQy9CLElBQUssUUFBMEIsTUFDL0IsSUFBSyxRQUEwQixNQUMvQixJQUFLLFVBQThCLE1BQ25DLElBQUssV0FBZ0MsTUFDckMsSUFBSyxZQUFrQyxNQUN2QyxJQUFLLGNBQXNDLE1BQzNDLElBQUssZ0JBQTBDLE1BRS9DLElBQUssU0FDTCxJQUFLLFVBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLE1BQ0wsSUFBSyxZQUNMLElBQUssVUFBOEIsTUFFbkMsSUFBSyxNQUFzQixNQUMzQixRQUFTemQsR0FBTyxFQUNyQixDQUFNLE1BR0YsSUFBSyxZQUFrQyxNQUV2QyxRQUFTQSxHQUFPLEdBQU8sS0FDdkIsQ0FHRCxHQUZHQSxJQUVBeWQsRUFBRyxDQUFDLEVBQUUsTUFBTSxVQUFVLEVBQUcsTUFDNUIsR0FBRyxDQUFDcjVDLEVBQU1BLEVBQU0sT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFHLEtBQU0scUJBQXVCcTVDLEVBQUcsQ0FBQyxFQUFJLElBQU1yNUMsRUFBTSxLQUFLLEdBQUcsRUFDdkYsR0FBR0EsRUFBTUEsRUFBTSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQWtDLDJCQUE0QixDQUN2RixHQUFHcTVDLEVBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFNLEtBQU0sTUFDckJBLEVBQUcsQ0FBQyxJQUFJLElBQUt5ckMsR0FBa0JwcEMsRUFBVzZxQyxFQUFTajlILEVBQUkrZ0MsRUFBSSxNQUFNKzdGLEVBQU0vc0MsRUFBRyxLQUFLLENBQUMsR0FDakYvdkYsRUFBSyt2RixFQUFJK3NDLEVBQU8vc0MsRUFBRyxNQUFRQSxFQUFHLENBQUMsRUFBRSxRQUN4QyxLQUNBLENBQ0QsR0FBR3YwRixFQUFLLElBQUssS0FBTSxxQkFBdUJ1MEYsRUFBRyxDQUFDLEVBQUksSUFBTXI1QyxFQUFNLEtBQUssR0FBRyxDQUN2RSxDQUNELElBQUk2c0IsR0FBTyxDQUFBLEVBQ1gsTUFBRyxDQUFDL25FLEVBQUssWUFBYyxDQUFDQSxFQUFLLFlBQVcrbkUsR0FBSSxPQUFTb2xCLEdBQ3JEcGxCLEdBQUksV0FBYWk1RCxFQUNqQmo1RCxHQUFJLFNBQVdneUQsRUFDZmh5RCxHQUFJLElBQU1rYixHQUFJL1osRUFBUyxFQUN2Qm5CLEdBQUksTUFBUTB1QixFQUNaMXVCLEdBQUksVUFBWTZ1QixFQUNUN3VCLEVBQ1IsQ0FFQSxTQUFTbzZELEdBQVc3cEgsRUFBMEJ0WSxFQUFtQixDQUVoRSxPQURBb2lJLEdBQWNwaUksRUFBS0EsR0FBTSxDQUFBLENBQUUsRUFDcEJBLEVBQUssTUFBTSxTQUFRLENBQ3pCLElBQUssU0FBVSxPQUFPMmdJLEdBQWU1NUQsR0FBY3p1RCxDQUFJLEVBQUd0WSxDQUFJLEVBQzlELElBQUssU0FBVSxJQUFLLFNBQVUsSUFBSyxPQUFRLE9BQU8yZ0ksR0FBZXJvSCxFQUFNdFksQ0FBSSxFQUMzRSxJQUFLLFFBQVMsT0FBTzJnSSxHQUFlbjVELEdBQUlsdkQsQ0FBSSxFQUFHdFksQ0FBSSxDQUNuRCxDQUVGLENBR0EsU0FBU3FpSSxHQUFpQm5pQyxFQUFpQmxnRyxFQUFpQixDQUMzRCxJQUFJNkssRUFBc0IsQ0FBQSxFQUUxQixPQUFHcTFGLEVBQUcsT0FBT3IxRixFQUFFLEtBQUs2ckYsR0FBb0J3SixFQUFHLE1BQU9sZ0csQ0FBSSxDQUFDLEVBRXBEa2dHLEVBQUcsV0FBV3IxRixFQUFFLEtBQUs4ckYsR0FBcUJ1SixFQUFHLE1BQU9BLEVBQUcsU0FBZSxDQUFDLEVBQ25FcjFGLEVBQUUsS0FBSyxFQUFFLENBQ2pCLENBRUEsU0FBU3kzSCxJQUF5QyxDQUdqRCxNQUFPLEVBQ1IsQ0FFQSxTQUFTQyxHQUFlcmlDLEVBQUlsZ0csRUFBaUIsQ0FFNUMsSUFBSXc4RyxFQUEyQixDQUFDLGlFQUFpRSxFQUNqRyxPQUFBeDhHLEVBQUssUUFBUSxRQUFRLFNBQVNtOUcsRUFBSXhtRyxFQUFJLENBQ3JDLElBQUlxL0QsRUFBNEIsQ0FBQSxFQUNoQ0EsRUFBUSxLQUFLMlIsR0FBVSxlQUFnQixLQUFNLENBQUMsWUFBYTdCLEdBQVU1YyxHQUFVaTBDLEVBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBRTlGLElBQUl0eUcsRUFBVyxDQUFDLFFBQVMsS0FBTyxHQUFHOEwsRUFBRyxFQUN0QzZsRyxFQUFPLEtBQUs3MEIsR0FBVSxRQUFTM1IsRUFBUSxLQUFLLEVBQUUsRUFBR25yRSxDQUFDLENBQUMsQ0FDckQsQ0FBRSxFQUNNODhFLEdBQVUsU0FBVTYwQixFQUFPLEtBQUssRUFBRSxDQUFDLENBQzNDLENBQ0EsU0FBU2dtQixHQUFnQnY0SCxFQUFHLENBQUUsT0FBTzA5RSxHQUFVLGFBQWMsS0FBTSxDQUFDLFVBQVcxOUUsRUFBRSxLQUFNLGNBQWMsSUFBTXdqRyxHQUFTeGpHLEVBQUUsSUFBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBSSxDQUMxSSxTQUFTdzRILEdBQWlCdmlDLEVBQTJCLENBQ3BELEdBQUcsR0FBR0EsR0FBSSxDQUFFLEdBQUUsVUFBVSxJQUFJLE1BQU8sTUFBTyxHQUkxQyxRQUZJa3pCLEVBQXVCbHpCLEVBQUcsU0FBUyxNQUNuQ240QixFQUF3QixDQUFBLEVBQ3BCdGpFLEVBQUksRUFBR0EsRUFBSTJ1SCxFQUFNLE9BQVEsRUFBRTN1SCxFQUFHLENBQ3JDLElBQUl3RixFQUFJbXBILEVBQU0zdUgsQ0FBQyxFQUNad0YsRUFBRSxPQUFTLE9BQ1hBLEVBQUUsS0FBSyxNQUFNLFVBQVUsR0FDMUI4OUQsRUFBSSxLQUFLeTZELEdBQWdCdjRILENBQUMsQ0FBQyxFQUMzQixDQUNELE9BQU8wOUUsR0FBVSxRQUFTNWYsRUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUN2QyxDQUNBLFNBQVMyNkQsR0FBb0JuMUMsRUFBa0J2dEYsRUFBTTJxRCxFQUFnQnUxQyxFQUE0QixDQUVoRyxHQURHLENBQUMzUyxHQUNELEdBQUcyUyxHQUFJLENBQUUsR0FBRSxVQUFVLElBQUksTUFBTyxNQUFPLEdBSTFDLFFBRklrekIsRUFBdUJsekIsRUFBRyxTQUFTLE1BQ25DbjRCLEVBQXdCLENBQUEsRUFDcEJ0akUsRUFBSSxFQUFHQSxFQUFJMnVILEVBQU0sT0FBUSxFQUFFM3VILEVBQUcsQ0FDckMsSUFBSXdGLEVBQUltcEgsRUFBTTN1SCxDQUFDLEVBQ1p3RixFQUFFLE9BQVMwZ0QsSUFJWDFnRCxFQUFFLEtBQUssTUFBTSxVQUFVLEdBQzFCODlELEVBQUksS0FBS3k2RCxHQUFnQnY0SCxDQUFDLENBQUMsRUFDM0IsQ0FDRCxPQUFPODlELEVBQUksS0FBSyxFQUFFLENBQ25CLENBRUEsU0FBUzQ2RCxHQUFxQnAxQyxFQUFrQnZ0RixFQUFNMnFELEVBQWdCdTFDLEVBQTRCLENBQ2pHLEdBQUcsQ0FBQzNTLEVBQUksTUFBTyxHQUNmLElBQUkxaUYsRUFBc0IsQ0FBQSxFQTBDMUIsR0ExQkcwaUYsRUFBRyxVQUFVLElBQ2YxaUYsRUFBRSxLQUFLLGFBQWEsRUFDakIwaUYsRUFBRyxVQUFVLEVBQUUsUUFBUTFpRixFQUFFLEtBQUs4OEUsR0FBVSxTQUFVLEtBQU0sQ0FBQyxXQUFXNEYsRUFBRyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDM0ZBLEVBQUcsVUFBVSxFQUFFLFFBQVExaUYsRUFBRSxLQUFLODhFLEdBQVUsU0FBVSxLQUFNLENBQUMsV0FBVzRGLEVBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQzlGMWlGLEVBQUUsS0FBSzg4RSxHQUFVLGNBQWUsS0FBTSxDQUNyQyxXQUFZNEYsRUFBRyxVQUFVLEVBQUUsUUFBVSxPQUNyQyxTQUFVQSxFQUFHLFVBQVUsRUFBRSxNQUFRLE1BQ2pDLFVBQVdBLEVBQUcsVUFBVSxFQUFFLE9BQVMsTUFDbkMsUUFBU0EsRUFBRyxVQUFVLEVBQUUsS0FBTyxNQUMvQixDQUFBLENBQUMsRUFDRjFpRixFQUFFLEtBQUssY0FBYyxHQWdCbkJxMUYsR0FBTUEsRUFBRyxVQUFZQSxFQUFHLFNBQVMsUUFBVUEsRUFBRyxTQUFTLE9BQU92MUMsQ0FBRyxFQUVuRSxHQUFHdTFDLEVBQUcsU0FBUyxPQUFPdjFDLENBQUcsRUFBRSxPQUFROS9DLEVBQUUsS0FBSzg4RSxHQUFVLFVBQVl1WSxFQUFHLFNBQVMsT0FBT3YxQyxDQUFHLEVBQUUsUUFBVSxFQUFJLGNBQWdCLGtCQUFvQixDQUFFLENBQUEsQ0FBQyxNQUN4SSxDQUVKLFFBQVEsRUFBSSxFQUFHLEVBQUlBLEdBQWEsRUFBQXUxQyxFQUFHLFNBQVMsT0FBTyxDQUFDLEdBQUssQ0FBQ0EsRUFBRyxTQUFTLE9BQU8sQ0FBQyxFQUFFLFFBQXhELEVBQUUsRUFBRyxDQUMxQixHQUFLdjFDLEdBQUs5L0MsRUFBRSxLQUFLLGFBQWEsQ0FDakMsQ0FxREYsVUFoRE9xMUYsR0FBSSxDQUFBLEdBQUksVUFBVSxDQUFBLEdBQUksT0FBTyxDQUFFLEdBQUUsQ0FBQyxHQUFHLENBQUEsR0FBSSxLQUFLcjFGLEVBQUUsS0FBSyx1QkFBdUIsRUEyQmhGMGlGLEVBQUcsVUFBVSxJQUNmMWlGLEVBQUUsS0FBSzQ4RSxHQUFTLGtCQUFtQixNQUFNLENBQUMsRUFDdkM4RixFQUFHLFVBQVUsRUFBRSxTQUFTMWlGLEVBQUUsS0FBSzQ4RSxHQUFTLGlCQUFrQixNQUFNLENBQUMsRUFDakU4RixFQUFHLFVBQVUsRUFBRSxXQUFXMWlGLEVBQUUsS0FBSzQ4RSxHQUFTLG1CQUFvQixNQUFNLENBQUMsRUFDckU4RixFQUFHLFVBQVUsRUFBRSxtQkFBcUIsTUFBUSxDQUFDQSxFQUFHLFVBQVUsRUFBRSxrQkFBbUIxaUYsRUFBRSxLQUFLNDhFLEdBQVMsa0JBQW1CLGFBQWEsQ0FBQyxFQUMzSDhGLEVBQUcsVUFBVSxFQUFFLHFCQUF1QixNQUFRLENBQUNBLEVBQUcsVUFBVSxFQUFFLHFCQUFxQjFpRixFQUFFLEtBQUs0OEUsR0FBUyxrQkFBbUIsZUFBZSxDQUFDLEVBQy9JLENBQ0MsQ0FBRSxjQUFlLGtCQUFvQixFQUNyQyxDQUFFLGdCQUFpQixlQUFpQixFQUNwQyxDQUFFLGFBQWMsZUFBaUIsRUFDakMsQ0FBRSxnQkFBaUIsaUJBQW1CLEVBQ3RDLENBQUUsYUFBYyxpQkFBbUIsRUFDbkMsQ0FBRSxtQkFBb0IsdUJBQXlCLEVBQy9DLENBQUUsZ0JBQWlCLGlCQUFtQixFQUN0QyxDQUFFLGFBQWMsaUJBQW1CLEVBQ25DLENBQUUsT0FBUSxXQUFhLEVBQ3ZCLENBQUUsYUFBYyxhQUFlLEVBQy9CLENBQUUsY0FBZSxxQkFBdUIsQ0FDMUMsRUFBRyxRQUFRLFNBQVNqaUQsRUFBRyxDQUFLK25ELEVBQUcsVUFBVSxFQUFFL25ELEVBQUUsQ0FBQyxDQUFDLEdBQUczNkIsRUFBRSxLQUFLLElBQUkyNkIsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFFLENBQUUsR0FHdEUzNkIsRUFBRSxRQUFVLEVBQVUsR0FDbEI4OEUsR0FBVSxtQkFBb0I5OEUsRUFBRSxLQUFLLEVBQUUsRUFBRyxDQUFDLE1BQU1zOUUsR0FBTyxDQUFDLENBQUMsQ0FDbEUsQ0FDQSxTQUFTeTZDLEdBQXNCdGYsRUFBb0MsQ0FDbEUsT0FBT0EsRUFBUyxJQUFJLFNBQVNyOEYsRUFBRyxDQUUvQixJQUFJL2QsRUFBSW85RSxHQUFjci9ELEVBQUUsR0FBRyxFQUFFLEVBQ3pCbGMsRUFBRzQ4RSxHQUFVLFVBQVd6K0UsRUFBRyxDQUFDLE1BQVEsaUNBQWlDLENBQUMsRUFDMUUsT0FBT3krRSxHQUFVLFVBQVc1OEUsRUFBRyxDQUFDLFlBQVlrYyxFQUFFLENBQUMsQ0FBQyxDQUNsRCxDQUFFLEVBQUUsS0FBSyxFQUFFLENBQ1gsQ0FDQSxTQUFTNDdHLEdBQW1CajJGLEVBQU12bUMsRUFBZ0JrbkYsRUFBSXZ0RixFQUFNMnFELEVBQWdCdTFDLEVBQUl2cEIsRUFBZ0IsQ0FDL0YsR0FBRyxDQUFDL3BDLEdBQVNBLEVBQUssR0FBSyxNQUFhQSxFQUFLLEdBQUssS0FBWSxNQUFPLEdBRWpFLElBQUk5ckIsRUFBTyxDQUFBLEVBRVgsR0FERzhyQixFQUFLLElBQUc5ckIsRUFBSyxZQUFZLEVBQUksSUFBTWdsRSxHQUFVMm5CLEdBQVM3Z0UsRUFBSyxFQUFHK3BDLENBQUksQ0FBQyxHQUNuRS9wQyxFQUFLLEdBQUtBLEVBQUssRUFBRSxNQUFNLEVBQUd2bUMsRUFBSSxNQUFNLEdBQUtBLEVBQUssQ0FDaEQsSUFBSW0wRCxFQUFNZ3lCLEdBQVk1L0MsRUFBSyxFQUFFLE1BQU12bUMsRUFBSSxPQUFTLENBQUMsQ0FBQyxFQUNsRHlhLEVBQUssZUFBZSxFQUFJLFFBQVUwNUMsRUFBSSxHQUFLbWMsRUFBSyxFQUFJLEdBQUssS0FBT25jLEVBQUksRUFBSW1jLEVBQUssR0FBSyxLQUFPLEtBQU9uYyxFQUFJLEdBQUttYyxFQUFLLEVBQUksR0FBSyxLQUFPbmMsRUFBSSxFQUFJbWMsRUFBSyxHQUFLLElBQ2hKLENBT0QsR0FMRy9wQyxFQUFLLEdBQUtBLEVBQUssRUFBRSxTQUNuQjlyQixFQUFLLFNBQVMsRUFBSWdsRSxHQUFVbDVDLEVBQUssRUFBRSxNQUFNLEVBQ3RDQSxFQUFLLEVBQUUsVUFBUzlyQixFQUFLLGlCQUFpQixFQUFJZ2xFLEdBQVVsNUMsRUFBSyxFQUFFLE9BQU8sSUFHbkUyZ0QsRUFBRyxTQUFTLEVBRWQsUUFESXNuQyxFQUFPdG5DLEVBQUcsU0FBUyxFQUNmdTFDLEVBQUssRUFBR0EsR0FBTWpPLEVBQUssT0FBUSxFQUFFaU8sRUFDakNqTyxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsR0FBS25zRCxFQUFLLEdBQUtrK0MsRUFBS2lPLENBQUUsRUFBRSxFQUFFLEdBQUtuc0QsRUFBSyxJQUMvQ2srQyxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsRUFBSWpPLEVBQUtpTyxDQUFFLEVBQUUsRUFBRSxJQUFHaGlILEVBQUssZ0JBQWdCLEVBQUkrekcsRUFBS2lPLENBQUUsRUFBRSxFQUFFLEVBQUlqTyxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsR0FDaEZqTyxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsRUFBSWpPLEVBQUtpTyxDQUFFLEVBQUUsRUFBRSxJQUFHaGlILEVBQUssY0FBYyxFQUFJK3pHLEVBQUtpTyxDQUFFLEVBQUUsRUFBRSxFQUFJak8sRUFBS2lPLENBQUUsRUFBRSxFQUFFLElBSW5GLElBQUk1NUgsRUFBSSxHQUFJM0YsRUFBSSxHQUNoQixPQUFPcXBDLEVBQUssRUFBQyxDQUNaLElBQUssSUFBSyxHQUFHLENBQUM1c0MsRUFBSyxXQUFZLE1BQU8sR0FBSSxNQUMxQyxJQUFLLElBQUtrSixFQUFJLFNBQVUzRixFQUFJLE9BQU9xcEMsRUFBSyxDQUFDLEVBQUcsTUFDNUMsSUFBSyxJQUFLMWpDLEVBQUksVUFBVzNGLEVBQUtxcEMsRUFBSyxFQUFJLElBQU0sSUFBTSxNQUNuRCxJQUFLLElBQUsxakMsRUFBSSxRQUFTM0YsRUFBSXlwRixHQUFLcGdELEVBQUssQ0FBQyxFQUFHLE1BQ3pDLElBQUssSUFBSzFqQyxFQUFJLFdBQVkzRixFQUFJLElBQUksS0FBS3FwQyxFQUFLLENBQUMsRUFBRSxZQUFhLEVBQUtBLEVBQUssR0FBSyxPQUFNQSxFQUFLLEVBQUlBLEVBQUssR0FBS3M4QixHQUFVLEVBQUUsR0FBRyxNQUNuSCxJQUFLLElBQUtoZ0UsRUFBSSxTQUFVM0YsRUFBSTJpRixHQUFXdDVDLEVBQUssR0FBRyxFQUFFLEVBQUcsS0FDcEQsQ0FFRCxJQUFJZzJELEVBQUtzdEIsR0FBZWx3SCxFQUFLLFFBQVM0c0MsRUFBTTVzQyxDQUFJLEVBQ2hEOGdCLEVBQUssWUFBWSxFQUFJLEtBQU8sR0FBRzhoRixHQUMvQjloRixFQUFLLFVBQVUsRUFBSTYxRCxFQUFLLEVBQUksRUFDNUIsSUFBSW54RCxFQUFNb25CLEVBQUssR0FBSyxLQUFPcnBDLEVBQUksR0FDM0IraEUsRUFBSTE0QixFQUFLLEdBQUssSUFBTSxHQUFNLGtCQUFvQjFqQyxFQUFJLEtBQU9zYyxFQUFLLFVBRWxFLE9BQUlvbkIsRUFBSyxHQUFHLENBQUEsR0FBSSxPQUFTLElBQUcwNEIsR0FBS3M5RCxHQUFzQmgyRixFQUFLLENBQUMsR0FFdEQrNkMsR0FBVSxPQUFRcmlCLEVBQUd4a0QsQ0FBSSxDQUNqQyxDQUNBLFNBQVNpaUgsR0FBa0Jod0QsRUFBY3puRSxFQUFnQixDQUN4RCxJQUFJVCxFQUFJLG1CQUFxQmtvRSxFQUFFLEdBQUssSUFDcEMsT0FBR3puRSxJQUNDQSxFQUFJLEtBQU8sQ0FBQ0EsRUFBSSxNQUFLQSxFQUFJLElBQU04aEcsR0FBTTloRyxFQUFJLEdBQUcsR0FDNUNBLEVBQUksTUFBS1QsR0FBSyxvQ0FBc0NTLEVBQUksSUFBTSxLQUM5REEsRUFBSSxTQUFRVCxHQUFLLG1CQUVkQSxFQUFJLEdBQ1osQ0FFQSxTQUFTbTRILEdBQW9CejFDLEVBQWtCdnRGLEVBQU0ycUQsRUFBZ0J1MUMsRUFBNEIsQ0FDaEcsR0FBRyxDQUFDM1MsRUFBRyxNQUFNLEVBQUcsTUFBTyxHQUN2QixJQUFJNWtELEVBQWtCa2tELEdBQWtCVSxFQUFHLE1BQU0sQ0FBQyxFQUM5Q3NuQyxFQUF3QnRuQyxFQUFHLFNBQVMsR0FBSyxDQUFFLEVBQUV1MUMsRUFBSyxFQUNsRCxFQUFzQixDQUFBLEVBQ3ZCdjFDLEVBQUcsT0FBTyxHQUFHQSxFQUFHLE9BQU8sRUFBRSxRQUFRLFNBQVN0akYsRUFBR3hGLEVBQUcsQ0FDbEQwb0csR0FBWWxqRyxDQUFDLEVBQ2IsSUFBSStnRSxFQUFJLENBQUMsQ0FBQy9nRSxFQUFFLE1BQ1IxRyxFQUFJc3NILEdBQVVwckgsRUFBR3dGLENBQUMsRUFDbEIsRUFBWSxDQUFDLFdBQVd4RixFQUFFLENBQUMsRUFDNUJ1bUUsSUFBRyxFQUFFLFVBQVUsRUFBSTRpQyxHQUFTcnFHLEVBQUUsS0FBSyxHQUNuQzBHLEVBQUUsU0FBUSxFQUFFLFdBQVcsRUFBRSxLQUM1QixFQUFFLEtBQUswOUUsR0FBVSxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQ25DLENBQUUsRUFFRCxRQURJMkYsRUFBUSxNQUFNLFFBQVFDLENBQUUsRUFDcEJ4YSxFQUFJcHFDLEVBQU0sRUFBRSxFQUFHb3FDLEdBQUtwcUMsRUFBTSxFQUFFLEVBQUcsRUFBRW9xQyxFQUFHLENBRTNDLFFBREl6bkUsRUFBTSxDQUFDeTNILEdBQWtCaHdELEdBQUl3YSxFQUFHLE9BQU8sR0FBRyxDQUFFLEdBQUV4YSxDQUFDLENBQUMsQ0FBQyxFQUM3Q04sRUFBSTlwQyxFQUFNLEVBQUUsRUFBRzhwQyxHQUFLOXBDLEVBQU0sRUFBRSxFQUFHLEVBQUU4cEMsRUFBRyxDQUMzQyxJQUFJd3dELEVBQU8sR0FDWCxJQUFJSCxFQUFLLEVBQUdBLEdBQU1qTyxFQUFLLE9BQVEsRUFBRWlPLEVBQ2hDLEdBQUcsRUFBQWpPLEVBQUtpTyxDQUFFLEVBQUUsRUFBRSxFQUFJcndELElBQ2YsRUFBQW9pRCxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsRUFBSS92RCxJQUNmLEVBQUE4aEQsRUFBS2lPLENBQUUsRUFBRSxFQUFFLEVBQUlyd0QsSUFDZixFQUFBb2lELEVBQUtpTyxDQUFFLEVBQUUsRUFBRSxFQUFJL3ZELEdBQ2xCLEVBQUc4aEQsRUFBS2lPLENBQUUsRUFBRSxFQUFFLEdBQUtyd0QsR0FBS29pRCxFQUFLaU8sQ0FBRSxFQUFFLEVBQUUsR0FBSy92RCxLQUFHa3dELEVBQU8sSUFDbEQsTUFFRCxHQUFHLENBQUFBLEVBQ0gsS0FBSXRzRCxFQUFPLENBQUMsRUFBRTVELEVBQUUsRUFBRU4sQ0FBQyxFQUNmcHNFLEVBQU1zbEYsR0FBWWhWLENBQUksRUFBRy9wQyxFQUFPMGdELEdBQVNDLEVBQUd4YSxDQUFDLEdBQUcsQ0FBQSxHQUFJTixDQUFDLEVBQUk4YSxFQUFHbG5GLENBQUcsRUFDbkVpRixFQUFJLEtBQUt1M0gsR0FBbUJqMkYsRUFBTXZtQyxFQUFLa25GLEVBQUl2dEYsRUFBTTJxRCxFQUFLdTFDLEVBQUl2cEIsQ0FBSSxDQUFDLEVBQy9ELENBQ0RyckUsRUFBSSxLQUFLLFFBQVEsRUFDZEEsRUFBSSxPQUFTLEdBQUcsRUFBRSxLQUFLQSxFQUFJLEtBQUssRUFBRSxDQUFDLENBQ3RDLENBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUNqQixDQUNBLFNBQVM0M0gsR0FBY3Y0RSxFQUFnQjNxRCxFQUFNa2dHLEVBQTRCLENBQ3hFLElBQUlyMUYsRUFBc0IsQ0FBQSxFQUN0QlgsRUFBSWcyRixFQUFHLFdBQVd2MUMsQ0FBRyxFQUNyQjRpQyxFQUFLMlMsRUFBRyxPQUFPaDJGLENBQUMsRUFFaEJoQixFQUFlcWtGLEVBQUttMUMsR0FBb0JuMUMsRUFBSXZ0RixFQUFNMnFELEVBQUt1MUMsQ0FBRSxFQUFJLEdBQ2pFLE9BQUdoM0YsRUFBRSxPQUFTLEdBQUcyQixFQUFFLEtBQUssVUFBWTNCLEVBQUksVUFBVSxFQUdsREEsRUFBSXFrRixFQUFLeTFDLEdBQW9CejFDLEVBQUl2dEYsRUFBTTJxRCxFQUFLdTFDLENBQUUsRUFBSSxHQUMvQ2gzRixFQUFFLE9BQVMsR0FBRzJCLEVBQUUsS0FBSyxVQUFZM0IsRUFBSSxVQUFVLEVBR2xEMkIsRUFBRSxLQUFLODNILEdBQXFCcDFDLEVBQUl2dEYsRUFBTTJxRCxFQUFLdTFDLENBQUUsQ0FBQyxFQUV2Q3IxRixFQUFFLEtBQUssRUFBRSxDQUNqQixDQUNBLFNBQVNzNEgsR0FBV2pqQyxFQUFJbGdHLEVBQWlCLENBQ3BDQSxJQUFNQSxFQUFPLElBQ2JrZ0csRUFBRyxNQUFLQSxFQUFHLElBQU1qZCxHQUFJL1osRUFBUyxHQUMvQmczQixFQUFHLE1BQ0w1dkIsR0FBVSxFQUFFRixHQUFlOHZCLEVBQUcsR0FBRyxFQUVqQ2xnRyxFQUFLLE9BQVMraEYsR0FBVW1lLEVBQUcsR0FBRyxFQUFHbGdHLEVBQUssT0FBT2tnRyxFQUFHLElBQUksS0FBSyxDQUFDLEVBQUksRUFDOURsZ0csRUFBSyxJQUFNa2dHLEVBQUcsSUFDZGxnRyxFQUFLLFFBQVUsR0FDZmt3SCxHQUFlbHdILEVBQUssUUFBUyxHQUFJLENBQUMsT0FBTyxDQUFDLFFBQVUsQ0FBQyxDQUFDLENBQUMsR0FFeEQsSUFBSStLLEVBQXNCLENBQUEsRUFDMUJBLEVBQUUsS0FBS3MzSCxHQUFpQm5pQyxFQUFJbGdHLENBQUksQ0FBQyxFQUNqQytLLEVBQUUsS0FBS3UzSCxHQUFzQixDQUFDLEVBQzlCdjNILEVBQUUsS0FBSyxFQUFFLEVBQ1RBLEVBQUUsS0FBSyxFQUFFLEVBQ1QsUUFBUXRHLEVBQUksRUFBR0EsRUFBSXk3RixFQUFHLFdBQVcsT0FBUSxFQUFFejdGLEVBQzFDc0csRUFBRSxLQUFLNDhFLEdBQVUsWUFBYXU3QyxHQUFjeitILEVBQUd6RSxFQUFNa2dHLENBQUUsRUFBRyxDQUFDLFVBQVVwYSxHQUFVb2EsRUFBRyxXQUFXejdGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRyxPQUFBc0csRUFBRSxDQUFDLEVBQUl3M0gsR0FBZXJpQyxFQUFJbGdHLENBQUksRUFDOUIrSyxFQUFFLENBQUMsRUFBSTAzSCxHQUFpQnZpQyxDQUFRLEVBQ3pCeGIsR0FBYWlELEdBQVUsV0FBWTU4RSxFQUFFLEtBQUssRUFBRSxFQUFHLENBQ3JELE1BQWNvOUUsR0FBTyxHQUNyQixVQUFjQSxHQUFPLEVBQ3JCLFVBQWNBLEdBQU8sRUFDckIsV0FBY0EsR0FBTyxHQUNyQixXQUFjQSxHQUFPLEdBQ3JCLGFBQWNBLEdBQU8sSUFDdkIsQ0FBRSxDQUNGLENBRUEsU0FBU2k3QyxHQUFjbC9ILEVBQWtCLENBQ3hDLElBQUl1akIsRUFBSSxDQUFBLEVBQ0o1YyxFQUFJM0csRUFBSSxRQVNaLEdBTEEyRyxFQUFFLEVBQUksR0FFTjRjLEVBQUUsYUFBZTVjLEVBQUUsV0FBVyxFQUFHLFlBQVksRUFDN0M0YyxFQUFFLG9CQUFzQitwRSxHQUFrQzNtRixDQUFDLEVBRXhEQSxFQUFFLE9BQVNBLEVBQUUsR0FBSyxFQUFHLE9BQU80YyxFQUUvQixJQUFJNjlDLEVBQWV6NkQsRUFBRSxXQUFXLENBQUMsRUFVakMsR0FUR3k2RCxHQUFLLEdBQUtBLEVBQUksS0FDakJ6NkQsRUFBRSxHQUFHLEVBQUc0YyxFQUFFLFVBQVk1YyxFQUFFLFdBQVcsRUFBRyxZQUFZLEVBRS9DQSxFQUFFLE9BQVNBLEVBQUUsR0FBSyxLQUNyQnk2RCxFQUFJejZELEVBQUUsV0FBVyxDQUFDLEVBQ2Z5NkQsSUFBTSxjQUNUNzlDLEVBQUUsdUJBQXlCZ3FFLEdBQXFDNW1GLENBQUMsRUFFakV5NkQsRUFBSXo2RCxFQUFFLFdBQVcsQ0FBQyxFQUNmeTZELEdBQUssR0FBS0EsRUFBSSxJQUFJLE9BQU83OUMsRUFDNUI1YyxFQUFFLEdBQUcsRUFBRzRjLEVBQUUsVUFBWTVjLEVBQUUsV0FBVyxFQUFHLFFBQVEsQ0FDL0MsQ0FVQSxJQUFJdzRILEdBQWMsQ0FBRSxHQUFRLEtBQVEsS0FBUSxLQUFRLE1BQ3BELFNBQVNDLEdBQU1DLEVBQVl4d0QsRUFBR3JPLEVBQU1qekMsRUFBbUJ6eEIsRUFBYyxDQUNwRSxJQUFJMHNCLEVBQUkrRSxFQUNKbTJDLEVBQU8sQ0FBQSxFQUNQNzhELEVBQUkyNUQsRUFBSyxNQUFNQSxFQUFLLEVBQUVBLEVBQUssRUFBRWg0QyxDQUFDLEVBQ2xDLEdBQUcxc0IsR0FBUUEsRUFBSyxLQUFPQSxFQUFLLElBQUksUUFBVStLLEVBQUUsT0FBUyxFQUFHLE9BQU93NEgsRUFBVSxDQUN6RSxJQUFLLEdBQVEsSUFBSyxLQUFRLElBQUssTUFBUSxJQUFLLE1BQWlCLElBQUssSUFBdUIsSUFBSyxLQUF1QixJQUFLLEtBQTJCLElBQUssS0FBc0IsSUFBSyxLQUFzQixJQUFLLEtBQXNCLElBQUssSUFDMU8sTUFDRCxJQUFLLEtBQ0osTUFDRCxRQUNDdmpJLEVBQUssSUFBSSxPQUFPK0ssQ0FBQyxDQUNqQixDQUNENjhELEVBQUssS0FBSzc4RCxDQUFDLEVBQ1gyNUQsRUFBSyxHQUFLaDRDLEVBR1YsUUFGSTgyRyxFQUFTOTZDLEdBQWVoa0IsRUFBS0EsRUFBSyxDQUFDLEVBQUcxK0IsRUFBT3k5RixHQUFjRCxDQUFNLEVBQ2pFMTdHLEVBQVEsRUFDTmtlLEdBQVEsTUFBUXE5RixHQUFZLFFBQVFHLENBQU0sRUFBSSxJQUNuRDkyRyxFQUFJZzhELEdBQWVoa0IsRUFBS0EsRUFBSyxFQUFFLENBQUMsRUFDaEM1OEMsRUFBUTQ4QyxFQUFLLEVBQUksRUFDZDgrRCxHQUFVLEtBQTBCMTdHLEdBQVMsR0FDeEMwN0csR0FBVSxNQUFVQSxHQUFVLFFBQ3JDMTdHLEdBQVMsSUFFVi9jLEVBQUkyNUQsRUFBSyxNQUFNNThDLEVBQU00OEMsRUFBSyxFQUFFLEVBQUVoNEMsQ0FBQyxFQUMvQms3QyxFQUFLLEtBQUs3OEQsQ0FBQyxFQUNYMjVELEVBQUssR0FBSyxFQUFFaDRDLEVBQ1pzWixFQUFReTlGLEdBQWNELEVBQVM5NkMsR0FBZWhrQixFQUFNQSxFQUFLLENBQUMsQ0FBQyxFQUU1RCxJQUFJdHpELEVBQUt1MkQsR0FBUUMsQ0FBSSxFQUNyQjBMLEdBQVVsaUUsRUFBRyxDQUFDLEVBQ2QsSUFBSXN5SCxFQUFLLEVBQUd0eUgsRUFBRSxLQUFPLENBQUEsRUFDckIsUUFBUWkwRCxFQUFJLEVBQUdBLEVBQUl1QyxFQUFLLE9BQVEsRUFBRXZDLEVBQUtqMEQsRUFBRSxLQUFLLEtBQUtzeUgsQ0FBRSxFQUFHQSxHQUFNOTdELEVBQUt2QyxDQUFDLEVBQUUsT0FDdEUsR0FBR2owRCxFQUFFLE9BQVNxZ0IsRUFBUSxLQUFNLGdCQUFrQjh4RyxFQUFXLFNBQVMsRUFBRSxFQUFJLGVBQWlCbnlILEVBQUUsT0FBUyxNQUFRcWdCLEVBQzVHLE9BQU9zaEQsRUFBRSxFQUFFM2hFLEVBQUdBLEVBQUUsT0FBUXBSLENBQUksQ0FDN0IsQ0FFQSxTQUFTMmpJLEdBQWVwZ0ksRUFBV3ZELEVBQW9CMnFFLEVBQXVCLENBQzdFLEdBQUdwbkUsRUFBRSxJQUFNLEtBQ1BBLEVBQUUsR0FDTixLQUFJNnNILEVBQVEsRUFDWixHQUFJLENBQ0hBLEVBQVE3c0gsRUFBRSxHQUFLQSxFQUFFLEdBQUcsVUFBWSxFQUM3QnZELEVBQUssU0FBUXVELEVBQUUsRUFBSTJsRSxHQUFVa25ELENBQUssRUFDdkMsT0FBUy9uSCxFQUFHLENBQUUsR0FBR3JJLEVBQUssSUFBSyxNQUFNcUksQ0FBSSxDQUNwQyxHQUFHLENBQUNySSxHQUFRQSxFQUFLLFdBQWEsR0FBTyxHQUFJLENBQ3JDdUQsRUFBRSxJQUFNLElBQU9BLEVBQUUsRUFBSUEsRUFBRSxHQUFLeXBGLEdBQUt6cEYsRUFBRSxDQUFDLEVBQy9CNnNILElBQVUsR0FBS0EsR0FBUyxVQUM1QjdzSCxFQUFFLElBQU0sS0FDTkEsRUFBRSxFQUFFLEtBQU9BLEVBQUUsRUFBR0EsRUFBRSxFQUFJQSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQ3BDQSxFQUFFLEVBQUkybkUsR0FBZ0IzbkUsRUFBRSxDQUFDLEVBRTFCQSxFQUFFLEVBQUk2bkUsR0FBWTduRSxFQUFFLENBQUMsRUFFdEJBLEVBQUUsRUFBSThuRSxHQUFXK2tELEVBQU03c0gsRUFBRSxFQUFHLENBQUMsU0FBUyxDQUFDLENBQUNvbkUsRUFBVSxPQUFRM3FFLEdBQVFBLEVBQUssTUFBTSxDQUFDLENBQ3JGLE9BQVNxSSxFQUFHLENBQUUsR0FBR3JJLEVBQUssSUFBSyxNQUFNcUksQ0FBSSxDQUNwQyxHQUFHckksRUFBSyxXQUFhb3dILEdBQVM3c0gsRUFBRSxHQUFLLEtBQU91ckUsR0FBWTVGLEdBQVVrbkQsQ0FBSyxHQUFLLE9BQU9BLENBQUssQ0FBQyxFQUFHLENBQzNGLElBQUl2NEcsRUFBS3F5RCxHQUFvQjNtRSxFQUFFLENBQUMsRUFBTXNVLElBQU10VSxFQUFFLEVBQUksSUFBS0EsRUFBRSxFQUFJLElBQUksS0FBS3NVLEVBQUcsRUFBR0EsRUFBRyxFQUFFLEVBQUVBLEVBQUcsRUFBRUEsRUFBRyxFQUFFQSxFQUFHLEVBQUVBLEVBQUcsRUFBRUEsRUFBRyxDQUFDLEVBQzNHLEVBQ0YsQ0FFQSxTQUFTK3JILEdBQVV2K0gsRUFBSzg0RixFQUFNajFGLEVBQVksQ0FDekMsTUFBUSxDQUFDLEVBQUU3RCxFQUFLLEtBQUs4NEYsRUFBTSxFQUFFajFGLENBQUMsQ0FDL0IsQ0FHQSxTQUFTMjZILEdBQWVuL0QsRUFBTXZqRSxFQUFvQyxDQUNqRSxJQUFJKytGLEVBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBRSxFQUNkNDhCLEVBQVMsQ0FBQSxFQUVULzBELEVBQXNCNW1FLEVBQVEsTUFBUSxDQUFFLEVBQUcsQ0FBRSxFQUM3QzJpSSxFQUFZLENBQUEsRUFDWm43RixFQUFtQixDQUFBLEVBQ25CbzdGLEVBQWUsS0FDZi9pQyxFQUFlLENBQUEsRUFDZmdqQyxFQUFZLEdBQ1pDLEVBQVcsQ0FBQSxFQUNYQyxFQUFVQyxFQUFZLEdBQUkxMkQsRUFBYTIyRCxFQUFNQyxFQUFNQyxFQUNuRDdQLEVBQVUsQ0FBQSxFQUNWRCxFQUFvQyxDQUFBLEVBQ3BDK1AsRUFDQUMsRUFDQUMsRUFBTSxDQUFBLEVBQ05DLEVBQThDLENBQUEsRUFDOUMzSyxFQUEwQixDQUFFLE9BQU8sQ0FBQSxFQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUssRUFBRyxNQUFNLENBQUMsQ0FBRSxDQUFBLENBQUcsRUFBV3lILEVBQVUsQ0FBQSxFQUNsR21ELEVBQVUsU0FBZ0I5ekMsR0FBNkMsQ0FDMUUsT0FBR0EsR0FBTSxFQUFVQyxHQUFPRCxFQUFHLEVBQzFCQSxHQUFNLElBQVc2ekMsRUFBUTd6QyxHQUFJLENBQUMsR0FBS0MsR0FBT0QsRUFBRyxDQUVsRCxFQUNLK3pDLEVBQXFCLFNBQWFoNEYsR0FBTXEyQixHQUFjOWhFLEdBQVMsQ0FDbEUsSUFBSTBqSSxHQUFNNWhFLEdBQUssR0FBRyxLQUNsQixHQUFHLEdBQUM0aEUsSUFBTyxDQUFDQSxHQUFJLGFBQWUsQ0FBQzFqSSxJQUFXLENBQUNBLEdBQVEsWUFDcEQsQ0FBQThoRSxHQUFLLEVBQUssQ0FBQSxFQUNWQSxHQUFLLEVBQUUsWUFBYzRoRSxHQUFJLFlBQ3pCLElBQUkzN0gsSUFDQUEsR0FBSTZuRixHQUFRNHpDLEVBQVFFLEdBQUksT0FBTyxDQUFDLEtBQU01aEUsR0FBSyxFQUFFLFFBQVUsQ0FBQyxJQUFJLzVELEVBQUMsSUFDN0RBLEdBQUk2bkYsR0FBUTR6QyxFQUFRRSxHQUFJLE9BQU8sQ0FBQyxLQUFNNWhFLEdBQUssRUFBRSxRQUFVLENBQUMsSUFBSS81RCxFQUFDLEdBQ25FLEVBQ0s0N0gsRUFBVSxTQUFpQmw0RixHQUFjcTJCLEdBQWM5aEUsR0FBaUIsQ0FDM0UsR0FBRyxFQUFBNGpJLEVBQWEsSUFDYixFQUFBNWpJLEdBQVEsV0FBYXlyQyxHQUFLLEdBQUt6ckMsR0FBUSxXQVUxQyxJQVRHQSxHQUFRLFlBQWM4aEUsR0FBSyxJQUFNQSxHQUFLLEdBQUcsTUFBTTJoRSxFQUFtQmg0RixHQUFNcTJCLEdBQU05aEUsRUFBTyxFQUN4RixPQUFPOGhFLEdBQUssS0FBTSxPQUFPQSxHQUFLLEdBQzlCaWhFLEVBQVd0M0YsR0FDWHUzRixFQUFZeDRDLEdBQVkvK0MsRUFBSSxHQUN6QixDQUFDakUsR0FBUyxDQUFDQSxFQUFNLEdBQUssQ0FBQ0EsRUFBTSxLQUFHQSxFQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQ2hFaUUsR0FBSyxFQUFJakUsRUFBTSxFQUFFLElBQUdBLEVBQU0sRUFBRSxFQUFJaUUsR0FBSyxHQUNyQ0EsR0FBSyxFQUFJakUsRUFBTSxFQUFFLElBQUdBLEVBQU0sRUFBRSxFQUFJaUUsR0FBSyxHQUNyQ0EsR0FBSyxFQUFJLEVBQUlqRSxFQUFNLEVBQUUsSUFBR0EsRUFBTSxFQUFFLEVBQUlpRSxHQUFLLEVBQUksR0FDN0NBLEdBQUssRUFBSSxFQUFJakUsRUFBTSxFQUFFLElBQUdBLEVBQU0sRUFBRSxFQUFJaUUsR0FBSyxFQUFJLEdBQzdDenJDLEdBQVEsYUFBZThoRSxHQUFLLEdBQzlCLFFBQVEraEUsR0FBTSxFQUFHQSxHQUFNeFEsRUFBTyxPQUFRLEVBQUV3USxHQUN2QyxHQUFHLEVBQUF4USxFQUFPd1EsRUFBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUlwNEYsR0FBSyxHQUFLNG5GLEVBQU93USxFQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBSXA0RixHQUFLLElBQ3pELEVBQUE0bkYsRUFBT3dRLEVBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFJcDRGLEdBQUssR0FBSzRuRixFQUFPd1EsRUFBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUlwNEYsR0FBSyxHQUM1RCxDQUFBcTJCLEdBQUssRUFBSXlwQixHQUFhOG5DLEVBQU93USxFQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQ2pDeFEsRUFBT3dRLEVBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFLcDRGLEdBQUssR0FBSzRuRixFQUFPd1EsRUFBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUtwNEYsR0FBSyxJQUFHLE9BQU9xMkIsR0FBSyxFQUMxRUEsR0FBSyxJQUFHQSxHQUFLLEVBQUksR0FBS3NxRCxHQUFrQmlILEVBQU93USxFQUFHLEVBQUUsQ0FBQyxFQUFHcjhGLEVBQU9pRSxHQUFNdWdGLEVBQVVudEgsQ0FBSSxHQUN0RixPQUlFbUIsR0FBUSxPQUNONG1FLEVBQUluN0IsR0FBSyxDQUFDLElBQUdtN0IsRUFBSW43QixHQUFLLENBQUMsRUFBSSxJQUMvQm03QixFQUFJbjdCLEdBQUssQ0FBQyxFQUFFQSxHQUFLLENBQUMsRUFBSXEyQixJQUNoQjhFLEVBQUlvOEQsQ0FBUyxFQUFJbGhFLEdBRTNCLEVBQ0tqakUsRUFBUSxDQUNYLElBQUssR0FDTCxNQUFPLEVBQ1AsT0FBUSxDQUFFLEVBQ1YsUUFBU3kwSCxFQUNULE9BQVFELEVBQ1IsUUFBUyxDQUFFLEVBQ1gsU0FBVSxHQUNWLEtBQU0sRUFDTixTQUFVLEVBQ1YsVUFBVyxFQUNYLFdBQVksQ0FBQyxDQUFDcnpILEdBQVcsQ0FBQyxDQUFDQSxFQUFRLFdBQ25DLElBQUssQ0FBQyxDQUFDQSxHQUFXLENBQUMsQ0FBQ0EsRUFBUSxHQUM5QixFQUNJQSxFQUFRLFdBQVVuQixFQUFLLFNBQVdtQixFQUFRLFVBQzdDLElBQUlzN0csRUFDQTdWLEVBQTBCLENBQUEsRUFDMUJxK0IsRUFBVSxDQUFBLEVBQ1Y1NEIsRUFBNkIsQ0FBQSxFQUFJRCxHQUE2QixHQUM5RDBtQixHQUFVLEdBQ1YzRixFQUFZLENBQUEsRUFDaEJBLEVBQVMsV0FBYW50SCxFQUFLLE9BQzNCbXRILEVBQVMsUUFBVW50SCxFQUFLLFFBQ3hCbXRILEVBQVMsT0FBU250SCxFQUFLLE9BQ3ZCbXRILEVBQVMsTUFBUSxHQUNqQkEsRUFBUyxJQUFNLEdBQ2YsSUFBSStYLEdBQVUsRUFDVkgsRUFBYSxFQUNiSSxFQUFXLEVBQUdDLEVBQWtDLEdBQ2hEQyxFQUFrQixDQUFBLEVBQ2xCQyxFQUdKdGxJLEVBQUssU0FBVyxLQUNoQjZsRSxHQUFPLElBQUksRUFFWCxRQURJMC9ELEVBQWdCLEdBQ2Q3Z0UsRUFBSyxFQUFJQSxFQUFLLE9BQVMsR0FBRyxDQUMvQixJQUFJeDZELEdBQUl3NkQsRUFBSyxFQUNUNitELEdBQWE3K0QsRUFBSyxXQUFXLENBQUMsRUFDbEMsR0FBRzYrRCxLQUFlLEdBQUsyQixLQUFZLEdBQWtCLE1BQ3JELElBQUl6ekcsR0FBVWl6QyxFQUFLLElBQU1BLEVBQUssT0FBUyxFQUFJQSxFQUFLLFdBQVcsQ0FBQyxFQUN4RHFPLEdBQUkwd0QsR0FBY0YsRUFBVSxFQUdoQyxHQUFHeHdELElBQUtBLEdBQUUsRUFBRyxDQUNaLEdBQUc1eEUsRUFBUSxZQUNQK2pJLEtBQVksS0FBNEIzQixLQUFlLElBQW9DLE1BRy9GLEdBREEyQixHQUFVM0IsR0FDUHh3RCxHQUFFLElBQU0sR0FBS0EsR0FBRSxHQUFLLEdBQUksQ0FDMUIsSUFBSXVyQixHQUFLNTVCLEVBQUssV0FBVyxDQUFDLEVBQzFCLEdBRDZCanpDLElBQVUsRUFDcEMsQ0FBQ3p4QixFQUFLLEtBQU9zK0YsS0FBT2lsQyxNQUFpQmpsQyxHQUFHLE1BQU8sRUFBSUEsSUFBSSxLQUFRaWxDLEdBQVksTUFBTSxJQUFJLE1BQU0sZ0JBQWtCamxDLEdBQUssS0FBT2lsQyxFQUFVLEVBQ25JeHdELEdBQUUsR0FBSyxLQUNUck8sRUFBSyxHQUFLLEdBQUlqekMsSUFBVSxHQUV6QixDQUVELElBQUlwc0IsRUFBZSxDQUFBLEVBSW5CLEdBSEdrK0gsS0FBZSxHQUFrQmwrSCxFQUFhMHRFLEdBQUUsRUFBRXJPLEVBQU1qekMsR0FBUXp4QixDQUFJLEVBQ2xFcUYsRUFBYWkrSCxHQUFNQyxHQUFZeHdELEdBQUdyTyxFQUFNanpDLEdBQVF6eEIsQ0FBSSxFQUV0RCtrSSxHQUFjLEdBQUssQ0FBQyxFQUFRLElBQVEsS0FBUSxJQUFNLEVBQUUsUUFBUUcsRUFBTyxJQUFNLEdBQWdCLFNBQzVGLE9BQU8zQixHQUFVLENBQ2hCLElBQUssSUFFSnJqQyxFQUFHLEtBQUssU0FBVzY1QixFQUFTLFFBQVEsU0FBVzEwSCxFQUFLLE1BQ3JELElBQUssS0FBMkI2NkYsRUFBRyxLQUFLLGFBQWUsR0FBTSxNQUM3RCxJQUFLLElBR0osR0FGSWxnRyxFQUFLLE1BQUswa0UsRUFBSyxFQUFJLEdBQ3ZCMWtFLEVBQUssSUFBTXFGLEVBQ1IsQ0FBQ2xFLEVBQVEsU0FBVSxNQUFNLElBQUksTUFBTSw0QkFBNEIsRUFDbEUsR0FBR2tFLEVBQUksT0FBUyxLQUFNLE1BQU0sSUFBSSxNQUFNLCtCQUErQixFQUNyRSxHQUFHLENBQUNBLEVBQUksTUFBTyxNQUFNLElBQUksTUFBTSx1QkFBdUIsRUFDdEQsTUFDRCxJQUFLLElBQTBCckYsRUFBSyxTQUFXcUYsRUFBSyxNQUNwRCxJQUFLLElBQ0osSUFBSW1nSSxHQUFRLE9BQU9uZ0ksQ0FBRyxFQUV0QixPQUFPbWdJLEdBQUssQ0FDWCxJQUFLLE9BQVFBLEdBQVMsS0FBTSxNQUM1QixJQUFLLE9BQVFBLEdBQVEsSUFBTyxNQUM1QixJQUFLLE9BQVFBLEdBQVMsS0FBTSxLQUM1QixDQUNEMy9ELEdBQU83bEUsRUFBSyxTQUFXd2xJLEVBQUssRUFDNUJELEVBQWdCLEdBQ2hCLE1BQ0QsSUFBSyxLQUFzQnZsSSxFQUFLLFFBQVVxRixFQUFLLE1BQy9DLElBQUssSUFBeUJyRixFQUFLLFVBQVlxRixFQUFLLE1BQ3BELElBQUssS0FBeUI2NkYsRUFBRyxLQUFLLFdBQWdCNzZGLEVBQUssTUFDM0QsSUFBSyxJQUF3QjY2RixFQUFHLEtBQUssVUFBZTc2RixFQUFLLE1BQ3pELElBQUssSUFBd0I2NkYsRUFBRyxLQUFLLFVBQWU3NkYsRUFBSyxNQUN6RCxJQUFLLElBQXVCNjZGLEVBQUcsS0FBSyxTQUFjNzZGLEVBQUssTUFDdkQsSUFBSyxJQUF1QjY2RixFQUFHLEtBQUssU0FBYzc2RixFQUFLLE1BQ3ZELElBQUssSUFBNEI2NkYsRUFBRyxLQUFLLGNBQW1CNzZGLEVBQUssTUFDakUsSUFBSyxJQUE2QjY2RixFQUFHLEtBQUssZUFBb0I3NkYsRUFBSyxNQUNuRSxJQUFLLElBQTBCckYsRUFBSyxZQUFjcUYsRUFBSyxNQUN2RCxJQUFLLE1BQW1DNjZGLEVBQUcsS0FBSyxTQUFXNzZGLEVBQUssTUFDaEUsSUFBSyxLQUNEQSxFQUFJLFVBQVMwaUUsRUFBSSxPQUFPLEVBQUksVUFDM0IxaUUsRUFBSSxVQUFTMGlFLEVBQUksVUFBVSxJQUFNQSxFQUFJLFVBQVUsRUFBSSxDQUFBLElBQUssTUFBUSxJQUNoRTFpRSxFQUFJLFVBQVMwaUUsRUFBSSxVQUFVLElBQU1BLEVBQUksVUFBVSxFQUFJLENBQUEsSUFBSyxLQUFPLElBQ25FLE1BQ0QsSUFBSyxLQUNKMDhELEVBQUksS0FBS3AvSCxDQUFHLEVBQUcsTUFDaEIsSUFBSyxLQUNKOG5ILEVBQVMsS0FBSyxDQUFDOW5ILENBQUcsQ0FBQyxFQUNuQjhuSCxFQUFTQSxFQUFTLE9BQU8sQ0FBQyxFQUFFLElBQU0sQ0FBQSxFQUNsQyxNQUNELElBQUssSUFBUSxJQUFLLEtBQ2pCQSxFQUFTQSxFQUFTLE9BQU8sQ0FBQyxFQUFFLEtBQUs5bkgsQ0FBRyxFQUNwQyxNQUNELElBQUssSUFBUSxJQUFLLEtBQ2pCaWdJLEVBQVksQ0FDWCxLQUFNamdJLEVBQUksS0FDVixJQUFLa29ILEdBQWtCbG9ILEVBQUksS0FBS3NqQyxFQUFNLEtBQUt3a0YsRUFBU250SCxDQUFJLENBQzlELEVBQ1FxRixFQUFJLEtBQU8sSUFBR2lnSSxFQUFTLE1BQVFqZ0ksRUFBSSxLQUFPLEdBQzdDOG5ILEVBQVMsTUFBTSxLQUFLbVksQ0FBUSxFQUN4Qm5ZLEVBQVMsQ0FBQyxJQUFLQSxFQUFTLENBQUMsRUFBSSxDQUFFLEVBQUVBLEVBQVMsQ0FBQyxFQUFFLElBQU0sQ0FBRSxHQUN6REEsRUFBU0EsRUFBUyxPQUFPLENBQUMsRUFBRSxLQUFLOW5ILENBQUcsRUFDakNBLEVBQUksTUFBUSx5QkFBMkJBLEVBQUksS0FBTyxHQUNqREEsRUFBSSxNQUFRQSxFQUFJLEtBQUssQ0FBQyxHQUFLQSxFQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBS0EsRUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFLLGNBQ3BFZ2dJLEVBQWdCaGdJLEVBQUksS0FBTyxDQUFDLEVBQUksQ0FBRSxJQUFLcW5GLEdBQWFybkYsRUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUMxRSxNQUNELElBQUssSUFBMEJyRixFQUFLLFlBQWNxRixFQUFLLE1BQ3ZELElBQUssSUFDRDhuSCxFQUFTLFFBQVUsSUFBS0EsRUFBUyxDQUFDLEVBQUksQ0FBRSxFQUFFQSxFQUFTLENBQUMsRUFBRSxJQUFNLENBQUUsR0FDakVBLEVBQVNBLEVBQVMsT0FBUyxDQUFDLEVBQUUsSUFBTUEsRUFBU0EsRUFBUyxPQUFTLENBQUMsRUFBRSxJQUFJLE9BQU85bkgsQ0FBRyxFQUFHOG5ILEVBQVMsSUFBTUEsRUFBUyxJQUFJLE9BQU85bkgsQ0FBRyxFQUFHLE1BQzdILElBQUssTUFFSixHQUFHckYsRUFBSyxLQUFPLEVBQUcsTUFDZnNsSSxHQUFZLE9BQU1BLEVBQVMsUUFBVWpnSSxFQUFJLENBQUMsR0FDN0MsTUFDRCxJQUFLLElBQXNCMGlFLEVBQUksVUFBVSxFQUFJMWlFLEVBQUssTUFDbEQsSUFBSyxJQUEwQkEsSUFBUSxHQUFLckYsRUFBSyxLQUFLLFFBQVEsTUFBTSxzQkFBd0JxRixDQUFHLEVBQUcsTUFDbEcsSUFBSyxLQUNKeStILEVBQVV6K0gsRUFBSSxHQUFHLEVBQUlBLEVBQ3JCckYsRUFBSyxPQUFPLEtBQUtxRixFQUFJLElBQUksRUFDeEIsTUFDRixJQUFLLElBQWtCLENBQ3RCLEdBQUcsRUFBRTAvSCxFQUFZLE1BQ2pCLEdBQUdwOEYsRUFBTSxFQUFHLENBQ1gsR0FBR0EsRUFBTSxFQUFFLEVBQUksR0FBS0EsRUFBTSxFQUFFLEVBQUksRUFBRyxDQUdsQyxHQUZBQSxFQUFNLEVBQUUsSUFBS0EsRUFBTSxFQUFFLElBQ3JCby9CLEVBQUksTUFBTSxFQUFJMmtCLEdBQWEvakQsQ0FBSyxFQUM3QnhuQyxFQUFRLFdBQWFBLEVBQVEsV0FBYXduQyxFQUFNLEVBQUUsRUFBRyxDQUN2RCxJQUFJODhGLEdBQVE5OEYsRUFBTSxFQUFFLEVBQ3BCQSxFQUFNLEVBQUUsRUFBSXhuQyxFQUFRLFVBQVksRUFDaEM0bUUsRUFBSSxVQUFVLEVBQUlBLEVBQUksTUFBTSxFQUM1QkEsRUFBSSxNQUFNLEVBQUkya0IsR0FBYS9qRCxDQUFLLEVBQ2hDQSxFQUFNLEVBQUUsRUFBSTg4RixFQUNaLENBQ0Q5OEYsRUFBTSxFQUFFLElBQUtBLEVBQU0sRUFBRSxHQUNyQixDQUNFaStELEVBQU8sT0FBUyxJQUFHNytCLEVBQUksU0FBUyxFQUFJNitCLEdBQ3BDcStCLEVBQVEsT0FBUyxJQUFHbDlELEVBQUksVUFBVSxFQUFJazlELEdBQ3RDNTRCLEVBQVEsT0FBUyxJQUFHdGtDLEVBQUksT0FBTyxFQUFJc2tDLEdBQ25DRCxHQUFRLE9BQVMsSUFBR3JrQyxFQUFJLE9BQU8sRUFBSXFrQyxJQUN0QzJ0QixFQUFTLE9BQU8sS0FBS3lILENBQU8sQ0FDNUIsQ0FDRXdDLElBQWMsR0FBSUMsRUFBV2w4RCxFQUFVKzBELEVBQU9rSCxDQUFTLEVBQUlqOEQsRUFDOURBLEVBQVE1bUUsRUFBUSxNQUFRLENBQUUsRUFBRyxDQUFFLENBQ3BDLENBQU0sTUFDRixJQUFLLEdBQVEsSUFBSyxLQUFRLElBQUssTUFBUSxJQUFLLE1BQWtCLENBaUI3RCxHQWhCR25CLEVBQUssT0FBUyxJQUFHQSxFQUFLLEtBQU8sQ0FDeEIsRUFBYyxFQUNkLElBQWMsRUFDZCxLQUFjLENBQ3JCLEVBQUN1akksRUFBVSxHQUFLLENBQ1QsSUFBYyxFQUNkLElBQWMsRUFDZCxLQUFjLEVBQ2QsS0FBYyxFQUNkLEtBQWMsRUFDZCxFQUFjLEVBQ2QsRUFBYyxDQUMzQixFQUFPbCtILEVBQUksT0FBTyxHQUFLLEdBQ2xCckYsRUFBSyxVQUFZcUYsRUFBSSxTQUFXLEVBQzdCQSxFQUFJLFNBQVcsR0FBS0EsRUFBSSxJQUFNLE9BQVVyRixFQUFLLEtBQU8sRUFBR3VsSSxFQUFnQixHQUFNMS9ELEdBQU83bEUsRUFBSyxTQUFXLEtBQUssR0FDekdBLEVBQUssTUFBUSxHQUFLcUYsRUFBSSxTQUFXLEdBQUtBLEVBQUksSUFBTSxLQUFJckYsRUFBSyxLQUFPLEdBQ2hFK2tJLElBQWMsTUFLakIsR0FKQWg5RCxFQUFRNW1FLEVBQVEsTUFBUSxDQUFFLEVBQUcsQ0FBRSxFQUU1Qm5CLEVBQUssS0FBTyxHQUFLLENBQUN1bEksSUFBaUJBLEVBQWdCLEdBQU0xL0QsR0FBTzdsRSxFQUFLLFNBQVdtQixFQUFRLFVBQVksSUFBSSxHQUV4R25CLEVBQUssS0FBTyxHQUFLcUYsRUFBSSxTQUFXLEdBQUtBLEVBQUksSUFBTSxLQUFRLENBQ3REMitILElBQWMsS0FBSUEsRUFBWSxVQUNqQ3I3RixFQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBRWhDLElBQUkrOEYsR0FBVSxDQUFDLElBQUtoaEUsRUFBSyxFQUFJanpDLEdBQVEsS0FBS3V5RyxDQUFTLEVBQ25ERixFQUFVNEIsR0FBUSxHQUFHLEVBQUlBLEdBQ3pCMWxJLEVBQUssT0FBTyxLQUFLZ2tJLENBQVMsQ0FDMUIsTUFDSUEsR0FBYUYsRUFBVTU1SCxFQUFDLEdBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUMxQzdFLEVBQUksSUFBTSxLQUFNMGlFLEVBQUksT0FBTyxFQUFJLFNBQy9CMWlFLEVBQUksSUFBTSxLQUFNMGlFLEVBQUksT0FBTyxFQUFJLFNBQ2xDNitCLEVBQVMsQ0FBQSxFQUNUcStCLEVBQVUsQ0FBQSxFQUNWamxJLEVBQUssT0FBU3cwSCxFQUFTLEdBQ3ZCbm9CLEVBQVUsQ0FBRSxFQUFFRCxHQUFVLEdBQ3hCMG1CLEdBQVUsR0FDVjBPLEVBQVUsQ0FBQyxRQUFRc0MsRUFBVTU1SCxFQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFJLEtBQUs4NUgsQ0FBUyxDQUNoRSxDQUFNLE1BQ0YsSUFBSyxLQUFxQixJQUFLLEdBQXVCLElBQUssR0FDdkRqOEQsRUFBSSxPQUFPLEdBQUssVUFBWTVtRSxFQUFRLE9BQVM0bUUsRUFBSTFpRSxFQUFJLENBQUMsR0FBRyxDQUFBLEdBQUlBLEVBQUksQ0FBQyxFQUFHMGlFLEVBQUk0akIsR0FBWSxDQUFDLEVBQUV0bUYsRUFBSSxFQUFHLEVBQUVBLEVBQUksQ0FBQyxDQUFDLENBQUMsSUFBRyxFQUFFQSxFQUFJLEVBQ3BIay9ILEVBQVksQ0FBQyxLQUFNbC9ILEVBQUksS0FBTSxHQUFJby9ILEVBQUlwL0gsRUFBSSxJQUFJLEdBQUcsQ0FBQSxFQUFJLEVBQUVBLEVBQUksSUFBSyxFQUFFLEdBQUcsRUFDakU4L0gsRUFBVyxJQUFHWixFQUFTLEVBQUlhLEVBQWViLEVBQVMsTUFBTSxFQUFLLEVBQUksR0FDckVaLEdBQWVZLEVBQVVwakksRUFBUysrRixFQUFHLEtBQUssUUFBUSxFQUNsRDRrQyxFQUFRLENBQUMsRUFBRXovSCxFQUFJLEVBQUcsRUFBRUEsRUFBSSxDQUFDLEVBQUdrL0gsRUFBVXBqSSxDQUFPLEVBQzVDLE1BQ0YsSUFBSyxHQUFRLElBQUssS0FDakJvakksRUFBWSxDQUFDLEtBQU1sL0gsRUFBSSxLQUFNLEdBQUlvL0gsRUFBSXAvSCxFQUFJLElBQUksRUFBRyxFQUFFQSxFQUFJLElBQUssRUFBRUEsRUFBSSxDQUFDLEVBQy9EOC9ILEVBQVcsSUFBR1osRUFBUyxFQUFJYSxFQUFlYixFQUFTLE1BQU0sRUFBSyxFQUFJLEdBQ3JFWixHQUFlWSxFQUFVcGpJLEVBQVMrK0YsRUFBRyxLQUFLLFFBQVEsRUFDbEQ0a0MsRUFBUSxDQUFDLEVBQUV6L0gsRUFBSSxFQUFHLEVBQUVBLEVBQUksQ0FBQyxFQUFHay9ILEVBQVVwakksQ0FBTyxFQUM1QyxNQUNGLElBQUssS0FDSm9qSSxFQUFZLENBQUMsS0FBTWwvSCxFQUFJLEtBQU0sR0FBSW8vSCxFQUFJcC9ILEVBQUksSUFBSSxFQUFHLEVBQUVBLEVBQUksTUFBTyxFQUFFLEdBQUcsRUFDL0Q4L0gsRUFBVyxJQUFHWixFQUFTLEVBQUlhLEVBQWViLEVBQVMsTUFBTSxFQUFLLEVBQUksR0FDckVaLEdBQWVZLEVBQVVwakksRUFBUysrRixFQUFHLEtBQUssUUFBUSxFQUNsRDRrQyxFQUFRLENBQUMsRUFBRXovSCxFQUFJLEVBQUcsRUFBRUEsRUFBSSxDQUFDLEVBQUdrL0gsRUFBVXBqSSxDQUFPLEVBQzVDLE1BQ0YsSUFBSyxLQUNKLFFBQVFra0UsR0FBSWhnRSxFQUFJLEVBQUdnZ0UsSUFBS2hnRSxFQUFJLEVBQUcsRUFBRWdnRSxHQUFHLENBQ25DLElBQUk4NEIsR0FBTzk0RixFQUFJLE1BQU1nZ0UsR0FBRWhnRSxFQUFJLENBQUMsRUFBRSxDQUFDLEVBQy9Cay9ILEVBQVcsQ0FBQyxLQUFLcG1DLEdBQU0sR0FBR3NtQyxFQUFJdG1DLEVBQUksRUFBRyxFQUFFOTRGLEVBQUksTUFBTWdnRSxHQUFFaGdFLEVBQUksQ0FBQyxFQUFFLENBQUMsRUFBRyxFQUFFLEdBQUcsRUFDaEU4L0gsRUFBVyxJQUFHWixFQUFTLEVBQUlhLEVBQWViLEVBQVMsTUFBTSxFQUFLLEVBQUksR0FDckVaLEdBQWVZLEVBQVVwakksRUFBUysrRixFQUFHLEtBQUssUUFBUSxFQUNsRDRrQyxFQUFRLENBQUMsRUFBRXovRCxHQUFHLEVBQUVoZ0UsRUFBSSxDQUFDLEVBQUdrL0gsRUFBVXBqSSxDQUFPLENBQ3pDLENBQ0EsTUFDRixJQUFLLEdBQVEsSUFBSyxLQUFRLElBQUssTUFBc0IsQ0FDcEQsR0FBR2tFLEVBQUksS0FBTyxTQUFVLENBQUUwK0gsRUFBZTErSCxFQUFLLEtBQVEsQ0FHdEQsR0FGQWsvSCxFQUFXWCxHQUFVditILEVBQUksSUFBS0EsRUFBSSxLQUFLLEtBQU1BLEVBQUksRUFBRSxFQUNuRGsvSCxFQUFTLEdBQUtFLEVBQUlGLEVBQVMsSUFBSSxFQUM1QnBqSSxFQUFRLFlBQWEsQ0FDdkIsSUFBSXcvQixHQUFLdDdCLEVBQUksUUFDYixHQUFHczdCLElBQU1BLEdBQUcsQ0FBQyxHQUFLQSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUtBLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUssU0FBVSxDQUN0RCxJQUFJZ2xHLEdBQU1obEcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUdpbEcsR0FBTWpsRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDekNrbEcsR0FBTWw2QyxHQUFZLENBQUMsRUFBRWc2QyxHQUFLLEVBQUVDLEVBQUcsQ0FBQyxFQUNqQ25SLEVBQVFvUixFQUFHLEVBQUd0QixFQUFTLEVBQUksR0FBR2hYLEdBQWtCbG9ILEVBQUksUUFBUXNqQyxFQUFNdGpDLEVBQUksS0FBSzhuSCxFQUFVbnRILENBQUksRUFDdkZ1a0ksRUFBUyxJQUFNcGpJLEVBQVEsT0FBUzRtRSxFQUFJNDlELEVBQUcsR0FBRyxDQUFFLEdBQUVDLEVBQUcsRUFBRzc5RCxFQUFJODlELEVBQUcsSUFBTSxDQUFFLEdBQUUsQ0FDMUUsTUFBTXRCLEVBQVMsRUFBSSxHQUFHaFgsR0FBa0Jsb0gsRUFBSSxRQUFRc2pDLEVBQU10akMsRUFBSSxLQUFLOG5ILEVBQVVudEgsQ0FBSSxDQUNsRixDQUNFbWxJLEVBQVcsSUFBR1osRUFBUyxFQUFJYSxFQUFlYixFQUFTLE1BQU0sRUFBSyxFQUFJLEdBQ3JFWixHQUFlWSxFQUFVcGpJLEVBQVMrK0YsRUFBRyxLQUFLLFFBQVEsRUFDbEQ0a0MsRUFBUXovSCxFQUFJLEtBQU1rL0gsRUFBVXBqSSxDQUFPLEVBQ25DNGlJLEVBQWUxK0gsQ0FDcEIsQ0FBTSxNQUNGLElBQUssR0FBUSxJQUFLLEtBQ2pCLEdBQUcwK0gsRUFDRkEsRUFBYSxJQUFNMStILEVBQ25Cay9ILEVBQVdYLEdBQVV2K0gsRUFBSzArSCxFQUFhLEtBQUssS0FBTSxHQUFHLEVBQ3JEUSxFQUFTLEdBQUtFLEVBQUlGLEVBQVMsSUFBSSxFQUM1QnBqSSxFQUFRLGNBQ1ZvakksRUFBUyxFQUFJLEdBQUdoWCxHQUFrQndXLEVBQWEsUUFBU3A3RixFQUFPbzdGLEVBQWEsS0FBTTVXLEVBQVVudEgsQ0FBSSxHQUU5Rm1sSSxFQUFXLElBQUdaLEVBQVMsRUFBSWEsRUFBZWIsRUFBUyxNQUFNLEVBQUssRUFBSSxHQUNyRVosR0FBZVksRUFBVXBqSSxFQUFTKytGLEVBQUcsS0FBSyxRQUFRLEVBQ2xENGtDLEVBQVFmLEVBQWEsS0FBTVEsRUFBVXBqSSxDQUFPLEVBQzVDNGlJLEVBQWUsU0FDVCxPQUFNLElBQUksTUFBTSwrQkFBK0IsRUFDckQsTUFDRixJQUFLLElBQVEsSUFBSyxLQUFvQixDQUNyQ3ZQLEVBQU8sS0FBS252SCxDQUFHLEVBQ2YsSUFBSXlnSSxHQUFjbjZDLEdBQVl0bUYsRUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUV0QyxHQURBb29FLEVBQUt0c0UsRUFBUSxPQUFTNG1FLEVBQUkxaUUsRUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSUEsRUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUkwaUUsRUFBSSs5RCxFQUFXLEVBQ3JFM2tJLEVBQVEsYUFBZXNzRSxFQUFJLENBRTdCLEdBREcsQ0FBQ3MyRCxHQUNELENBQUMrQixJQUFlLENBQUNyNEQsRUFBSSxNQUN4QkEsRUFBRyxFQUFJLEdBQUc4L0MsR0FBa0Jsb0gsRUFBSSxDQUFDLEVBQUdzakMsRUFBT3RqQyxFQUFJLENBQUMsRUFBRzhuSCxFQUFVbnRILENBQUksRUFDakV5dEUsRUFBRyxFQUFJaWYsR0FBYXJuRixFQUFJLENBQUMsQ0FBQyxDQUMxQixDQUNOLENBQU0sTUFDRixJQUFLLE1BQXNCLENBQzFCLEdBQUcsQ0FBQ2xFLEVBQVEsWUFBYSxNQUN6QixHQUFHZ2pJLEVBQVcsQ0FFYixHQUFHLENBQUNKLEVBQWMsTUFDbEJ0UCxFQUFROW9DLEdBQVlvNEMsRUFBYSxJQUFJLENBQUMsRUFBRzErSCxFQUFJLENBQUMsRUFDOUNvb0UsRUFBS3RzRSxFQUFRLE9BQVM0bUUsRUFBSWc4RCxFQUFhLEtBQUssQ0FBQyxHQUFHLENBQUEsR0FBSUEsRUFBYSxLQUFLLENBQUMsRUFBSWg4RCxFQUFJNGpCLEdBQVlvNEMsRUFBYSxJQUFJLENBQUMsR0FDNUd0MkQsR0FBSSxDQUFFLEdBQUUsRUFBSSxHQUFHOC9DLEdBQWtCbG9ILEVBQUksQ0FBQyxFQUFHc2pDLEVBQU91N0YsRUFBVS9XLEVBQVVudEgsQ0FBSSxDQUN6RSxDQUNOLENBQU0sTUFDRixJQUFLLEtBQ0p1a0ksRUFBU1gsR0FBVTVpQyxFQUFJMzdGLEVBQUksSUFBSSxFQUFFLEVBQUdBLEVBQUksS0FBTSxHQUFHLEVBQzlDMjdGLEVBQUkzN0YsRUFBSSxJQUFJLEVBQUUsSUFBR2svSCxFQUFTLEVBQUl2akMsRUFBSTM3RixFQUFJLElBQUksRUFBRSxHQUMvQ2svSCxFQUFTLEdBQUtFLEVBQUlGLEVBQVMsSUFBSSxFQUM1QlksRUFBVyxJQUFHWixFQUFTLEVBQUlhLEVBQWViLEVBQVMsTUFBTSxFQUFLLEVBQUksR0FDckVaLEdBQWVZLEVBQVVwakksRUFBUysrRixFQUFHLEtBQUssUUFBUSxFQUNsRDRrQyxFQUFRLENBQUMsRUFBRXovSCxFQUFJLEVBQUcsRUFBRUEsRUFBSSxDQUFDLEVBQUdrL0gsRUFBVXBqSSxDQUFPLEVBQzdDLE1BQ0QsSUFBSyxLQUF1QkEsRUFBUSxhQUNuQ29qSSxFQUFZLENBQUMsS0FBTWwvSCxFQUFJLEtBQU0sR0FBSW8vSCxFQUFJcC9ILEVBQUksSUFBSSxFQUFHLEVBQUUsR0FBRyxFQUNsRDgvSCxFQUFXLElBQUdaLEVBQVMsRUFBSWEsRUFBZWIsRUFBUyxNQUFNLEVBQUssRUFBSSxHQUNyRVosR0FBZVksRUFBVXBqSSxFQUFTKytGLEVBQUcsS0FBSyxRQUFRLEVBQ2xENGtDLEVBQVEsQ0FBQyxFQUFFei9ILEVBQUksRUFBRyxFQUFFQSxFQUFJLENBQUMsRUFBR2svSCxFQUFVcGpJLENBQU8sR0FDNUMsTUFDRixJQUFLLEtBQXVCLEdBQUdBLEVBQVEsV0FDdEMsUUFBUTRrSSxHQUFLMWdJLEVBQUksRUFBRzBnSSxJQUFNMWdJLEVBQUksRUFBRyxFQUFFMGdJLEdBQUksQ0FDdEMsSUFBSUMsR0FBUTNnSSxFQUFJLEtBQUswZ0ksR0FBRzFnSSxFQUFJLENBQUMsRUFDN0JrL0gsRUFBVyxDQUFDLEtBQUt5QixHQUFPLEdBQUd2QixFQUFJdUIsRUFBSyxFQUFHLEVBQUUsR0FBRyxFQUN6Q2IsRUFBVyxJQUFHWixFQUFTLEVBQUlhLEVBQWViLEVBQVMsTUFBTSxFQUFLLEVBQUksR0FDckVaLEdBQWVZLEVBQVVwakksRUFBUysrRixFQUFHLEtBQUssUUFBUSxFQUNsRDRrQyxFQUFRLENBQUMsRUFBRWlCLEdBQUksRUFBRTFnSSxFQUFJLENBQUMsRUFBR2svSCxFQUFVcGpJLENBQU8sQ0FDMUMsQ0FDQSxNQUNGLElBQUssS0FDTCxJQUFLLEtBQW9CLElBQUssR0FDN0JvakksRUFBU1gsR0FBVXYrSCxFQUFJLElBQUtBLEVBQUksS0FBTSxHQUFHLEVBQ3pDay9ILEVBQVMsR0FBS0UsRUFBSUYsRUFBUyxJQUFJLEVBQzVCWSxFQUFXLElBQUdaLEVBQVMsRUFBSWEsRUFBZWIsRUFBUyxNQUFNLEVBQUssRUFBSSxHQUNyRVosR0FBZVksRUFBVXBqSSxFQUFTKytGLEVBQUcsS0FBSyxRQUFRLEVBQ2xENGtDLEVBQVEsQ0FBQyxFQUFFei9ILEVBQUksRUFBRyxFQUFFQSxFQUFJLENBQUMsRUFBR2svSCxFQUFVcGpJLENBQU8sRUFDN0MsTUFFRCxJQUFLLEdBQVEsSUFBSyxLQUNkNGpJLElBQWUsSUFBR3A4RixFQUFRdGpDLEdBQzVCLE1BQ0YsSUFBSyxLQUNKMjdGLEVBQU0zN0YsRUFDTCxNQUNGLElBQUssTUFDSixHQUFHckYsRUFBSyxNQUFRLEVBQUcsQ0FDbEJvbEksRUFBY0QsR0FBVSxFQUFJOS9ILEVBQUksQ0FBQyxFQUNqQyxRQUFRNGdJLEdBQVEsRUFBR0EsR0FBUWQsRUFBVyxLQUFpQmo4RCxHQUFVKzhELEVBQUssR0FBSzVnSSxFQUFJLENBQUMsRUFBckMsRUFBRTRnSSxHQUFPLENBQ2pEQSxJQUFTLEtBQUs5MUQsR0FBUzlxRSxFQUFJLENBQUMsRUFBRzgvSCxFQUFXLEdBQUcsQ0FDaEQsTUFDSWgxRCxHQUFTOXFFLEVBQUksQ0FBQyxFQUFHQSxFQUFJLENBQUMsQ0FBQyxFQUMzQixNQUNGLElBQUssSUFBMEIsQ0FDOUIrL0gsRUFBY0QsR0FBVSxFQUFJOS9ILEVBQzVCLFFBQVE2Z0ksR0FBUSxFQUFHQSxHQUFRZixFQUFXLEtBQWlCajhELEdBQVVnOUQsRUFBSyxHQUFLN2dJLEVBQWhDLEVBQUU2Z0ksR0FBTyxDQUNqREEsSUFBUyxLQUFLLzFELEdBQVM5cUUsRUFBSzgvSCxFQUFXLEdBQUcsQ0FDbEQsQ0FBTSxNQUVGLElBQUssS0FBeUJ2K0IsRUFBU0EsRUFBTyxPQUFPdmhHLENBQUcsRUFBRyxNQUUzRCxJQUFLLElBQWtCNC9ILEVBQVE1L0gsRUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFJckYsRUFBSyxRQUFVcUYsRUFBSyxNQUNqRSxJQUFLLEtBQWtCckYsRUFBSyxRQUFRLElBQU1xRixFQUFLLE1BQy9DLElBQUssS0FBcUJyRixFQUFLLFFBQVEsT0FBU3FGLEVBQUssTUFFckQsSUFBSyxLQUNKLElBQUlpL0gsRUFBT2ovSCxFQUFJLENBQUMsRUFBRSxFQUFFLEVBQUdpL0gsR0FBUWovSCxFQUFJLENBQUMsRUFBRSxFQUFFLEVBQUcsRUFBRWkvSCxFQUM1QyxJQUFJRCxFQUFPaC9ILEVBQUksQ0FBQyxFQUFFLEVBQUUsRUFBR2cvSCxHQUFRaC9ILEVBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRyxFQUFFZy9ILEVBQzVDNTJELEVBQUt0c0UsRUFBUSxPQUFTNG1FLEVBQUl1OEQsQ0FBSSxHQUFHLENBQUEsR0FBSUQsQ0FBSSxFQUFJdDhELEVBQUk0akIsR0FBWSxDQUFDLEVBQUUwNEMsRUFBSyxFQUFFQyxDQUFJLENBQUMsQ0FBQyxFQUMxRTcyRCxJQUFJQSxFQUFHLEVBQUlwb0UsRUFBSSxDQUFDLEdBRXBCLE1BQ0YsSUFBSyxNQUNKLElBQUlpL0gsRUFBT2ovSCxFQUFJLENBQUMsRUFBRSxFQUFFLEVBQUdpL0gsR0FBUWovSCxFQUFJLENBQUMsRUFBRSxFQUFFLEVBQUcsRUFBRWkvSCxFQUM1QyxJQUFJRCxFQUFPaC9ILEVBQUksQ0FBQyxFQUFFLEVBQUUsRUFBR2cvSCxHQUFRaC9ILEVBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRyxFQUFFZy9ILEVBQzVDNTJELEVBQUt0c0UsRUFBUSxPQUFTNG1FLEVBQUl1OEQsQ0FBSSxHQUFHLENBQUEsR0FBSUQsQ0FBSSxFQUFJdDhELEVBQUk0akIsR0FBWSxDQUFDLEVBQUUwNEMsRUFBSyxFQUFFQyxDQUFJLENBQUMsQ0FBQyxFQUMxRTcyRCxHQUFNQSxFQUFHLElBQUdBLEVBQUcsRUFBRSxRQUFVcG9FLEVBQUksQ0FBQyxHQUVwQyxNQUNGLElBQUssSUFBbUIsQ0FDdkIsR0FBR3JGLEVBQUssTUFBUSxHQUFLQSxFQUFLLE1BQVEsRUFBRyxNQUNyQ3l0RSxFQUFLdHNFLEVBQVEsT0FBUzRtRSxFQUFJMWlFLEVBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFBLEdBQUlBLEVBQUksQ0FBQyxFQUFFLENBQUMsRUFBSTBpRSxFQUFJNGpCLEdBQVl0bUYsRUFBSSxDQUFDLENBQUMsQ0FBQyxFQUM1RSxJQUFJOGdJLEdBQVVsQixFQUFRNS9ILEVBQUksQ0FBQyxDQUFDLEVBQ3hCb29FLElBQ0F0c0UsRUFBUSxPQUNONG1FLEVBQUkxaUUsRUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFHMGlFLEVBQUkxaUUsRUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFJLENBQUEsR0FDbkNvb0UsRUFBSzFGLEVBQUkxaUUsRUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFQSxFQUFJLENBQUMsRUFBRSxDQUFDLEVBQUssQ0FBQyxFQUFFLEdBQUcsR0FFdENvb0UsRUFBSzFGLEVBQUk0akIsR0FBWXRtRixFQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUssQ0FBQyxFQUFFLEdBQUcsRUFFeENzakMsRUFBTSxFQUFFLEVBQUksS0FBSyxJQUFJQSxFQUFNLEVBQUUsRUFBR3RqQyxFQUFJLENBQUMsRUFBRSxDQUFDLEVBQ3hDc2pDLEVBQU0sRUFBRSxFQUFJLEtBQUssSUFBSUEsRUFBTSxFQUFFLEVBQUd0akMsRUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUN4Q3NqQyxFQUFNLEVBQUUsRUFBSSxLQUFLLElBQUlBLEVBQU0sRUFBRSxFQUFHdGpDLEVBQUksQ0FBQyxFQUFFLENBQUMsRUFDeENzakMsRUFBTSxFQUFFLEVBQUksS0FBSyxJQUFJQSxFQUFNLEVBQUUsRUFBR3RqQyxFQUFJLENBQUMsRUFBRSxDQUFDLEdBRXJDb29FLEVBQUcsSUFBR0EsRUFBRyxFQUFJLENBQUEsR0FDakIyMkQsRUFBTyxDQUFDLEVBQUUvK0gsRUFBSSxDQUFDLEVBQUUsRUFBRThnSSxHQUFRLElBQUksQ0FBQyxFQUNoQzE0RCxFQUFHLEVBQUUsS0FBSzIyRCxDQUFJLENBQ25CLENBQU0sTUFDRixJQUFLLE1BQW9CeGlCLEdBQWE2aUIsRUFBSXAvSCxFQUFJLElBQUksRUFBR0EsRUFBSSxHQUFHLEVBQUcsTUFDL0QsSUFBSyxLQUFzQixDQUMxQixHQUFHLENBQUNyRixFQUFLLFdBQVksTUFDckIsS0FBTXFGLEVBQUksR0FBS0EsRUFBSSxHQUNsQmduRyxFQUFRaG5HLEVBQUksR0FBRyxFQUFJLENBQUUsTUFBT0EsRUFBSSxFQUFFLElBQUssTUFBUUEsRUFBSSxPQUFTLEVBQUksT0FBUSxDQUFDLEVBQUVBLEVBQUksTUFBUSxJQUNuRnl0SCxLQUFXQSxHQUFVLEdBQU0vVyxHQUFjMTJHLEVBQUksRUFBRSxHQUFHLEdBQ3REOG5HLEdBQVlkLEVBQVFobkcsRUFBSSxFQUFFLENBQUMsQ0FBQyxDQUVsQyxDQUFNLE1BQ0YsSUFBSyxLQUFrQixDQUN0QixJQUFJcXZILEdBQVMsQ0FBQSxFQUNWcnZILEVBQUksT0FBUyxPQUFRK21HLEdBQVEvbUcsRUFBSSxDQUFDLEVBQUlxdkgsR0FBUUEsR0FBTyxNQUFRcnZILEVBQUksT0FDakVBLEVBQUksU0FBVSttRyxHQUFRL21HLEVBQUksQ0FBQyxFQUFJcXZILEdBQVFBLEdBQU8sT0FBUyxJQUN2RHJ2SCxFQUFJLE1BQ04rbUcsR0FBUS9tRyxFQUFJLENBQUMsRUFBSXF2SCxHQUNqQkEsR0FBTyxJQUFNcnZILEVBQUksSUFBS3F2SCxHQUFPLElBQU10bkIsR0FBTS9uRyxFQUFJLEdBQUcsRUFFdEQsQ0FBTSxNQUNGLElBQUssSUFDTCxJQUFLLElBQ0wsSUFBSyxJQUNMLElBQUssSUFDQTBpRSxFQUFJLFVBQVUsR0FBR2dvRCxHQUFnQmhvRCxFQUFJLFVBQVUsRUFBSSxDQUFBLENBQUUsRUFDekRBLEVBQUksVUFBVSxFQUFHLENBQUMsR0FBTSxPQUFRLEdBQUssUUFBUyxHQUFLLE1BQU8sR0FBSyxRQUFRLEVBQUd3N0QsRUFBVSxDQUFDLEVBQUlsK0gsRUFDekYsTUFDRCxJQUFLLEtBQ0EwaUUsRUFBSSxVQUFVLEdBQUdnb0QsR0FBZ0Job0QsRUFBSSxVQUFVLEVBQUksQ0FBQSxDQUFFLEVBQ3pEQSxFQUFJLFVBQVUsRUFBRSxPQUFTMWlFLEVBQUksT0FDN0IwaUUsRUFBSSxVQUFVLEVBQUUsT0FBUzFpRSxFQUFJLE9BQzdCLE1BQ0QsSUFBSyxLQUVEQSxFQUFJLE1BQUswMEgsRUFBUyxNQUFNLENBQUMsRUFBRSxJQUFNLElBQ3BDLE1BQ0QsSUFBSyxLQUFzQjJLLEVBQVVyL0gsRUFBSyxNQUMxQyxJQUFLLE1BQW9CbzNHLEVBQVNwM0csRUFBSyxNQUN2QyxJQUFLLEtBQXNCbS9ILEVBQVVuL0gsRUFBSyxNQUMxQyxJQUFLLEtBRUEyK0gsRUFDQ3hDLEVBQVEsU0FBV244SCxHQUFPbThILEVBQVEsS0FEeEJ6SCxFQUFTLFFBQVEsU0FBVzEwSCxHQUFPLGVBRWpELEtBQ0YsQ0FDSixNQUNPMHRFLElBQUcsUUFBUSxNQUFNLGlDQUFtQ3d3RCxHQUFXLFNBQVMsRUFBRSxDQUFDLEVBQy9FNytELEVBQUssR0FBS2p6QyxFQUVYLENBQ0QsT0FBQXl1RSxFQUFHLFdBQVczNUYsR0FBS3U5SCxDQUFTLEVBQUUsS0FBSyxTQUFTMzVILEdBQUVpSCxHQUFHLENBQUUsT0FBTyxPQUFPakgsRUFBQyxFQUFJLE9BQU9pSCxFQUFDLENBQUUsQ0FBRSxFQUFFLElBQUksU0FBU28wQixHQUFFLENBQUMsT0FBT3MrRixFQUFVdCtGLEVBQUMsRUFBRSxJQUFLLENBQUMsRUFDMUhya0MsRUFBUSxhQUFZKytGLEVBQUcsT0FBTzQ4QixHQUMvQixDQUFDNThCLEVBQUcsV0FBVyxRQUFVK2pDLEVBQVMsTUFBTSxHQUMxQy9qQyxFQUFHLFdBQVcsS0FBSyxRQUFRLEVBRXhCQSxFQUFHLFNBQVFBLEVBQUcsT0FBTyxPQUFZK2pDLElBRTlCL2pDLEVBQUcsU0FBUytqQyxFQUNoQi9qQyxFQUFHLFFBQVFtbEMsRUFBZ0IsUUFBUSxTQUFTcjdILEdBQUV2RixHQUFHLENBQUV5N0YsRUFBRyxPQUFPQSxFQUFHLFdBQVd6N0YsRUFBQyxDQUFDLEVBQUUsYUFBYSxFQUFJdUYsRUFBRSxDQUFFLEVBQ3ZHazJGLEVBQUcsUUFBVWMsRUFDYmQsRUFBRyxJQUFNamQsR0FBSS9aLEVBQVMsRUFDbkJscEUsRUFBSyxNQUFLa2dHLEVBQUcsV0FBYWxnRyxFQUFLLEtBQy9CeThHLElBQVF2YyxFQUFHLE9BQVN1YyxHQUN2QnZjLEVBQUcsU0FBVyxHQUNYc2tDLElBQVksU0FBV3RrQyxFQUFHLFNBQVMsUUFBVXNrQyxHQUM3Q3JYLEVBQVMsTUFBTSxPQUFTLElBQUc0TSxFQUFTLE1BQVE1TSxFQUFTLE9BQ3hEanRCLEVBQUcsU0FBVzY1QixFQUNQNzVCLENBQ1IsQ0FHQSxJQUFJa21DLEdBQVUsQ0FDYixHQUFJLG1DQUNKLElBQUssbUNBQ0wsSUFBSyxrQ0FDTixFQUNBLFNBQVNDLEdBQWdCM3VELEVBQXNCamdFLEVBQU81TSxFQUFHLENBRXhELElBQUl5N0gsRUFBTTF6RCxHQUFJLEtBQUs4RSxFQUFLLDhCQUE4QixFQUN0RCxHQUFHNHVELEdBQU9BLEVBQUksS0FBTyxFQUFHLEdBQUksQ0FDM0IsSUFBSUMsRUFBYTNzQyxHQUF3QjBzQyxFQUFLL3pDLEdBQWtCNnpDLEdBQVEsR0FBRyxFQUMzRSxRQUFRcjdILEtBQUt3N0gsRUFBWTl1SCxFQUFNMU0sQ0FBQyxFQUFJdzdILEVBQVd4N0gsQ0FBQyxDQUNsRCxPQUFTMUMsRUFBRyxDQUFDLEdBQUd3QyxFQUFFLElBQUssTUFBTXhDLENBQWMsQ0FHMUMsSUFBSW0rSCxFQUFLNXpELEdBQUksS0FBSzhFLEVBQUssc0JBQXNCLEVBQzdDLEdBQUc4dUQsR0FBTUEsRUFBRyxLQUFPLEVBQUcsR0FBSSxDQUN6QixJQUFJQyxFQUFVN3NDLEdBQXdCNHNDLEVBQUloMEMsR0FBYzR6QyxHQUFRLEVBQUUsRUFDbEUsUUFBUWw4SCxLQUFLdThILEVBQVlodkgsRUFBTXZOLENBQUMsR0FBSyxPQUFNdU4sRUFBTXZOLENBQUMsRUFBSXU4SCxFQUFRdjhILENBQUMsRUFDakUsT0FBUzdCLEVBQUcsQ0FBQyxHQUFHd0MsRUFBRSxJQUFLLE1BQU14QyxDQUFjLENBRXZDb1AsRUFBTSxjQUFnQkEsRUFBTSxnQkFDOUIrOUUsR0FBaUIvOUUsRUFBTSxhQUFjQSxFQUFNLGNBQWVBLEVBQU81TSxDQUFDLEVBQ2xFLE9BQU80TSxFQUFNLGFBQWMsT0FBT0EsRUFBTSxjQUUxQyxDQUNBLFNBQVNpdkgsR0FBZ0J4bUMsRUFBaUJ4b0IsRUFBc0IsQ0FDL0QsSUFBSWl2RCxFQUFZLENBQUEsRUFBSUMsRUFBVyxDQUFBLEVBQUlDLEVBQVcsQ0FBQSxFQUMxQyxFQUFJLEVBQUdDLEVBQ1BDLEVBQXlDbmxELEdBQVUyUSxHQUFrQixHQUFHLEVBQ3hFeTBDLEVBQXNDcGxELEdBQVU0USxHQUFjLEdBQUcsRUFDckUsR0FBRzBOLEVBQUcsTUFHTCxJQUZBNG1DLEVBQU92Z0ksR0FBSzI1RixFQUFHLEtBQUssRUFFaEIsRUFBSSxFQUFHLEVBQUk0bUMsRUFBSyxPQUFRLEVBQUUsR0FBSSxPQUFPLFVBQVUsZUFBZSxLQUFLQyxFQUFjRCxFQUFLLENBQUMsQ0FBQyxFQUFJSCxFQUFZLE9BQU8sVUFBVSxlQUFlLEtBQUtLLEVBQVdGLEVBQUssQ0FBQyxDQUFDLEVBQUlGLEVBQVdDLEdBQVUsS0FBSyxDQUFDQyxFQUFLLENBQUMsRUFBRzVtQyxFQUFHLE1BQU00bUMsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBRTlOLEdBQUc1bUMsRUFBRyxVQUdMLElBRkE0bUMsRUFBT3ZnSSxHQUFLMjVGLEVBQUcsU0FBUyxFQUVwQixFQUFJLEVBQUcsRUFBSTRtQyxFQUFLLE9BQVEsRUFBRSxFQUFPLE9BQU8sVUFBVSxlQUFlLEtBQU01bUMsRUFBRyxPQUFPLEdBQUs0bUMsRUFBSyxDQUFDLENBQUMsSUFBSSxPQUFPLFVBQVUsZUFBZSxLQUFLQyxFQUFjRCxFQUFLLENBQUMsQ0FBQyxFQUFJSCxFQUFZLE9BQU8sVUFBVSxlQUFlLEtBQUtLLEVBQVdGLEVBQUssQ0FBQyxDQUFDLEVBQUlGLEVBQVdDLEdBQVUsS0FBSyxDQUFDQyxFQUFLLENBQUMsRUFBRzVtQyxFQUFHLFVBQVU0bUMsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBRXJTLElBQUlHLEVBQVksQ0FBQSxFQUNoQixJQUFJLEVBQUksRUFBRyxFQUFJSixFQUFTLE9BQVEsRUFBRSxFQUM5QjF0QyxHQUFVLFFBQVEwdEMsRUFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUksSUFBTXR4QyxHQUFpQixRQUFRc3hDLEVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFJLElBQ3JGQSxFQUFTLENBQUMsRUFBRSxDQUFDLEdBQUssTUFDckJJLEVBQVUsS0FBS0osRUFBUyxDQUFDLENBQUMsRUFFeEJELEVBQVMsUUFBUWgwRCxHQUFJLE1BQU0sUUFBUThFLEVBQUssdUJBQTZCOGlCLEdBQXdCb3NDLEVBQVVSLEdBQVEsR0FBSVksRUFBV3gwQyxFQUFZLENBQUMsR0FDM0ltMEMsRUFBVSxRQUFVTSxFQUFVLFNBQVFyMEQsR0FBSSxNQUFNLFFBQVE4RSxFQUFLLCtCQUFxQzhpQixHQUF3Qm1zQyxFQUFXUCxHQUFRLElBQUtXLEVBQWN4MEMsR0FBa0IwMEMsRUFBVSxPQUFTQSxFQUFZLEtBQU1iLEdBQVEsR0FBRyxDQUFDLENBQ3ZPLENBRUEsU0FBU2MsR0FBYXh2RCxFQUFhdjJFLEVBQXFDLENBQ3BFQSxJQUFTQSxFQUFVLElBQ3ZCaWhJLEdBQWNqaEksQ0FBTyxFQUNyQjJrRSxLQUNHM2tFLEVBQVEsVUFBVXdrRSxHQUFTeGtFLEVBQVEsUUFBUSxFQUM5QyxJQUFJZ21JLEVBQXVCQyxFQUMzQixHQUFHMXZELEVBQUksVUFBVyxDQUNqQixHQUFHOUUsR0FBSSxLQUFLOEUsRUFBSyxhQUFhLEVBQUcsTUFBTSxJQUFJLE1BQU0sNEJBQTRCLEVBQzdFeXZELEVBQVV2MEQsR0FBSSxLQUFLOEUsRUFBSyxVQUFVLEVBQ2xDMHZELEVBQUt4MEQsR0FBSSxLQUFLOEUsRUFBSyxXQUFXLEdBQUs5RSxHQUFJLEtBQUs4RSxFQUFLLE9BQU8sQ0FDekQsS0FBTyxDQUNOLE9BQU92MkUsRUFBUSxLQUFJLENBQ2xCLElBQUssU0FBVXUyRSxFQUFNcFEsR0FBSVAsR0FBYzJRLENBQUcsQ0FBQyxFQUFHLE1BQzlDLElBQUssU0FBVUEsRUFBTXBRLEdBQUlvUSxDQUFHLEVBQUcsTUFDL0IsSUFBSyxTQUFVLE1BQ2YsSUFBSyxRQUFhLE1BQU0sUUFBUUEsQ0FBRyxJQUFHQSxFQUFNLE1BQU0sVUFBVSxNQUFNLEtBQUtBLENBQUcsR0FBRyxLQUM3RSxDQUNEcEUsR0FBVW9FLEVBQUssQ0FBQyxFQUNoQjB2RCxFQUFNLENBQUMsUUFBUzF2RCxDQUFHLENBQ3BCLENBQ0EsSUFBb0IydkQsRUFFaEJDLEVBRUosR0FER0gsR0FBMEIvRCxHQUFjK0QsQ0FBTyxFQUMvQ2htSSxFQUFRLFdBQWEsQ0FBQ0EsRUFBUSxXQUFZa21JLEVBQWEsQ0FBQSxNQUNkLENBQzNDLElBQUkvMUQsRUFBSXRLLEdBQVUsU0FBVyxRQUM3QixHQUFHb2dFLEdBQU1BLEVBQUcsUUFBU0MsRUFBWXhELEdBQWV1RCxFQUFHLFFBQVNqbUksQ0FBTyxXQUUxRG1tSSxFQUFNMTBELEdBQUksS0FBSzhFLEVBQUssb0JBQW9CLElBQU00dkQsRUFBTSxRQUFTRCxFQUFZeDJCLEdBQUksWUFBWXkyQixFQUFNLFNBQVVubUksRUFBUSxLQUFPbXdFLEVBQUdud0UsYUFFM0htbUksRUFBTTEwRCxHQUFJLEtBQUs4RSxFQUFLLG9CQUFvQixJQUFNNHZELEVBQU0sUUFBU0QsRUFBWXgyQixHQUFJLFlBQVl5MkIsRUFBTSxTQUFVbm1JLEVBQVEsS0FBT213RSxFQUFHbndFLFFBRS9ILE9BQUltbUksRUFBTTEwRCxHQUFJLEtBQUs4RSxFQUFLLEtBQUssSUFBTTR2RCxFQUFNLFFBQWUsSUFBSSxNQUFNLGtDQUFrQyxFQUM5RixJQUFJLE1BQU0sNkJBQTZCLEVBQy9Dbm1JLEVBQVEsU0FBV3UyRSxFQUFJLFdBQWE5RSxHQUFJLEtBQUs4RSxFQUFLLDJCQUEyQixJQUFHMnZELEVBQVUsT0FBUzFoQixHQUFhanVDLENBQUcsRUFDdkgsQ0FFQSxJQUFJamdFLEVBQVEsQ0FBQSxFQUNaLE9BQUdpZ0UsRUFBSSxXQUFXMnVELEdBQXdCM3VELEVBQStCamdFLEVBQU90VyxDQUFPLEVBRXZGa21JLEVBQVUsTUFBUUEsRUFBVSxVQUFZNXZILEVBQ3JDdFcsRUFBUSxZQUFXa21JLEVBQVUsSUFBTTN2RCxHQUUvQjJ2RCxDQUNQLENBR0EsU0FBU0UsR0FBYXJuQyxFQUFpQmxnRyxFQUFxQyxDQUMzRSxJQUFJNkssRUFBSTdLLEdBQVEsR0FDWjAzRSxFQUFNOUUsR0FBSSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNsQzQwRCxFQUFTLFlBQ2IsT0FBTzM4SCxFQUFFLFVBQVksTUFBSyxDQUN6QixJQUFLLE1BQU9BLEVBQUUsU0FBVyxRQUV6QixJQUFLLE1BQVdBLEVBQUUsV0FBVUEsRUFBRSxTQUFXLE9BRXpDLElBQUssUUFBUzI4SCxFQUFTLFlBQWEzOEgsRUFBRSxLQUFPLEVBQUcsTUFDaEQsSUFBSyxRQUFTMjhILEVBQVMsUUFBUzM4SCxFQUFFLEtBQU8sRUFBRyxNQUM1QyxRQUFTLE1BQU0sSUFBSSxNQUFNLGdCQUFrQkEsRUFBRSxTQUFXLGNBQWMsQ0FDdEUsQ0FDRCxPQUFBK25FLEdBQUksTUFBTSxRQUFROEUsRUFBSzh2RCxFQUFRQyxHQUFldm5DLEVBQUlyMUYsQ0FBQyxDQUFDLEVBQ2pEQSxFQUFFLE1BQVEsSUFBTXExRixFQUFHLE9BQVNBLEVBQUcsWUFBWXdtQyxHQUFnQnhtQyxFQUFJeG9CLENBQUcsRUFFbEU3c0UsRUFBRSxNQUFRLEdBQUtxMUYsRUFBRyxRQUFRNGxCLEdBQWFwdUMsRUFBSzlFLEdBQUksS0FBS3N0QixFQUFHLE9BQVEsQ0FBQyxLQUFNLE9BQU9BLEVBQUcsUUFBVSxTQUFXLFNBQVcsUUFBUSxDQUFDLENBQUMsRUFDdkh4b0IsQ0FDUixDQUVBLElBQUlxVCxHQUFpQixDQUNiLEVBQWUsQ0FBdUIsRUFBRThxQyxFQUFpQixFQUN6RCxFQUFlLENBQTBCLEVBQUVZLEVBQW9CLEVBQy9ELEVBQWUsQ0FBdUIsRUFBRXdCLEVBQWlCLEVBQ3pELEVBQWUsQ0FBMEIsRUFBRWQsRUFBb0IsRUFDL0QsRUFBZSxDQUF5QixFQUFFTCxFQUFtQixFQUM3RCxFQUFlLENBQXlCLEVBQUVlLEVBQW1CLEVBQzdELEVBQWUsQ0FBdUIsRUFBRVMsRUFBaUIsRUFDekQsRUFBZSxDQUF5QixFQUFFZCxFQUFtQixFQUM3RCxFQUFlLENBQTJCLEVBQUVxQixFQUFxQixFQUNqRSxFQUFlLENBQXdCLEVBQUVELEVBQWtCLEVBQzNELEdBQWUsQ0FBeUIsRUFBRUYsRUFBbUIsRUFDN0QsR0FBZSxDQUEwQixFQUFFQyxFQUFvQixFQUMvRCxHQUFlLENBQTJCLEVBQUUvQixFQUFxQixFQUNqRSxHQUFlLENBQXdCLEVBQUV1QixFQUFrQixFQUMzRCxHQUFlLENBQTJCLEVBQUViLEVBQXFCLEVBQ2pFLEdBQWUsQ0FBMEIsRUFBRUwsRUFBb0IsRUFDL0QsR0FBZSxDQUEwQixFQUFFYyxFQUFvQixFQUMvRCxHQUFlLENBQXdCLEVBQUVTLEVBQWtCLEVBQzNELEdBQWUsQ0FBMEIsRUFBRWIsRUFBb0IsRUFDL0QsR0FBZSxDQUF3QixFQUFFbHBDLEVBQWUsRUFDeEQsR0FBZSxDQUE0QixFQUMzQyxHQUFlLENBQTJCLEVBQzFDLEdBQWUsQ0FBNEIsRUFDM0MsR0FBZSxDQUEwQixFQUN6QyxHQUFlLENBQTJCLEVBQzFDLEdBQWUsQ0FBNkIsRUFDNUMsR0FBZSxDQUEwQixFQUN6QyxHQUFlLENBQTZCLEVBQzVDLEdBQWUsQ0FBNEIsRUFDM0MsR0FBZSxDQUE2QixFQUM1QyxHQUFlLENBQTJCLEVBQzFDLEdBQWUsQ0FBNEIsRUFDM0MsR0FBZSxDQUE4QixFQUM3QyxHQUFlLENBQTBCLEVBQ3pDLEdBQWUsQ0FBNEIsRUFDM0MsR0FBZSxDQUF5QixFQUFFLENBQUcsRUFDN0MsR0FBZSxDQUF1QixFQUFFLEVBQUksRUFDNUMsR0FBZSxDQUF3QixFQUFFLENBQUcsRUFDNUMsR0FBZSxDQUFzQixFQUFFLEVBQUksRUFDM0MsR0FBZSxDQUFxQixFQUFFb3ZDLEVBQWUsRUFDckQsR0FBZSxDQUE4QixFQUM3QyxHQUFlLENBQTJCLEVBQzFDLEdBQWUsQ0FBcUIsRUFBRTVmLEVBQWUsRUFDckQsR0FBZSxDQUFvQixFQUFFSCxFQUFjLEVBQ25ELEdBQWUsQ0FBcUIsRUFBRWEsRUFBZSxFQUNyRCxHQUFlLENBQXVCLEVBQUVTLEVBQWlCLEVBQ3pELEdBQWUsQ0FBbUIsRUFBRU4sRUFBYSxFQUNqRCxHQUFlLENBQXNCLEVBQ3JDLEdBQWUsQ0FBeUIsRUFBRTl3QixFQUFlLEVBQ3pELEdBQWUsQ0FBMEIsRUFDekMsR0FBZSxDQUFtQixFQUFFaTBCLEVBQWMsRUFDbEQsR0FBZSxDQUF5QixFQUFFLENBQUcsRUFDN0MsR0FBZSxDQUF1QixFQUFFLEVBQUksRUFDNUMsR0FBZSxDQUF5QixFQUFFLENBQUcsRUFDN0MsR0FBZSxDQUF1QixFQUFFLEVBQUksRUFDNUMsR0FBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsR0FBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsR0FBZSxDQUEyQixFQUMxQyxHQUFlLENBQW9CLEVBQ25DLEdBQWUsQ0FBd0IsRUFBRTVaLEVBQWUsRUFDeEQsR0FBZSxDQUE0QixFQUFFZ3dCLEVBQXNCLEVBQ25FLEdBQWUsQ0FBK0IsRUFBRXRWLEVBQXlCLEVBQ3pFLEdBQWUsQ0FBcUIsRUFBRW1YLEVBQWUsRUFDckQsR0FBZSxDQUEyQixFQUMxQyxHQUFlLENBQTJCLEVBQzFDLEdBQWUsQ0FBNEIsRUFDM0MsR0FBZSxDQUEyQixFQUMxQyxHQUFlLENBQTRCLEVBQzNDLEdBQWUsQ0FBMkIsRUFDMUMsSUFBZSxDQUE0QixFQUMzQyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsRUFBRyxFQUFFeHZDLEdBQVcsRUFBRSxDQUFHLEVBQ2hFLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBK0IsRUFBRSxDQUFHLEVBQ25ELElBQWUsQ0FBNkIsRUFBRSxFQUFJLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFHLEVBQUVtdkMsRUFBc0IsRUFDeEUsSUFBZSxDQUEwQixFQUFFLEVBQUksRUFDL0MsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUE0QixFQUFFLENBQUcsRUFDaEQsSUFBZSxDQUEwQixFQUFFLEVBQUksRUFDL0MsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUF1QixFQUFFdEQsRUFBaUIsRUFDekQsSUFBZSxDQUFzQixFQUFFSCxHQUFnQixFQUFFLEVBQUksRUFDN0QsSUFBZSxDQUFxQixFQUFFaUQsRUFBZSxFQUNyRCxJQUFlLENBQW9CLEVBQ25DLElBQWUsQ0FBdUIsRUFBRW9FLEVBQWlCLEVBQ3pELElBQWUsQ0FBMEIsRUFDekMsSUFBZSxDQUE0QixFQUMzQyxJQUFlLENBQXlCLEVBQUVGLEVBQW1CLEVBQzdELElBQWUsQ0FBeUIsRUFDeEMsSUFBZSxDQUF5QixFQUN4QyxJQUFlLENBQXlCLEVBQUUsRUFBRyxFQUFFam5CLEVBQW1CLEVBQ2xFLElBQWUsQ0FBdUIsRUFBRSxFQUFJLEVBQzVDLElBQWUsQ0FBNkIsRUFBRSxFQUFHLEVBQUVubUIsRUFBb0IsRUFDdkUsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUFrQyxFQUFFLENBQUcsRUFDdEQsSUFBZSxDQUFnQyxFQUFFLEVBQUksRUFDckQsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUF1QixFQUN0QyxJQUFlLENBQTRCLEVBQzNDLElBQWUsQ0FBMkIsRUFDMUMsSUFBZSxDQUE0QixFQUMzQyxJQUFlLENBQThCLEVBQzdDLElBQWUsQ0FBbUMsRUFBRSxDQUFHLEVBQ3ZELElBQWUsQ0FBaUMsRUFBRSxFQUFJLEVBQ3RELElBQWUsQ0FBNkIsRUFDNUMsSUFBZSxDQUFxQyxFQUNwRCxJQUFlLENBQTBCLEVBQUUyb0MsRUFBb0IsRUFDL0QsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFtQyxFQUFFLENBQUcsRUFDdkQsSUFBZSxDQUFpQyxFQUFFLEVBQUksRUFDdEQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsSUFBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsSUFBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUF1QyxFQUFFLENBQUcsRUFDM0QsSUFBZSxDQUFxQyxFQUFFLEVBQUksRUFDMUQsSUFBZSxDQUFvQyxFQUFFLENBQUcsRUFDeEQsSUFBZSxDQUFrQyxFQUFFLEVBQUksRUFDdkQsSUFBZSxDQUFrQyxFQUFFLENBQUcsRUFDdEQsSUFBZSxDQUFnQyxFQUFFLEVBQUksRUFDckQsSUFBZSxDQUFxQyxFQUFFLENBQUcsRUFDekQsSUFBZSxDQUFtQyxFQUFFLEVBQUksRUFDeEQsSUFBZSxDQUFtQyxFQUFFLENBQUcsRUFDdkQsSUFBZSxDQUFpQyxFQUFFLEVBQUksRUFDdEQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUFpQyxFQUFFLENBQUcsRUFDckQsSUFBZSxDQUErQixFQUFFLEVBQUksRUFDcEQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsSUFBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFtQyxFQUFFLENBQUcsRUFDdkQsSUFBZSxDQUFpQyxFQUFFLEVBQUksRUFDdEQsSUFBZSxDQUFxQyxFQUFFLENBQUcsRUFDekQsSUFBZSxDQUFtQyxFQUFFLEVBQUksRUFDeEQsSUFBZSxDQUFvQyxFQUFFLENBQUcsRUFDeEQsSUFBZSxDQUFrQyxFQUFFLEVBQUksRUFDdkQsSUFBZSxDQUFxQyxFQUFFLENBQUcsRUFDekQsSUFBZSxDQUFtQyxFQUFFLEVBQUksRUFDeEQsSUFBZSxDQUFvQyxFQUFFLENBQUcsRUFDeEQsSUFBZSxDQUFrQyxFQUFFLEVBQUksRUFDdkQsSUFBZSxDQUFvQyxFQUFFLENBQUcsRUFDeEQsSUFBZSxDQUFrQyxFQUFFLEVBQUksRUFDdkQsSUFBZSxDQUFrQyxFQUFFLENBQUcsRUFDdEQsSUFBZSxDQUFnQyxFQUFFLEVBQUksRUFDckQsSUFBZSxDQUFpQyxFQUFFLENBQUcsRUFDckQsSUFBZSxDQUErQixFQUFFLEVBQUksRUFDcEQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFrQyxFQUFFLENBQUcsRUFDdEQsSUFBZSxDQUFnQyxFQUFFLEVBQUksRUFDckQsSUFBZSxDQUFpQyxFQUFFLENBQUcsRUFDckQsSUFBZSxDQUErQixFQUFFLEVBQUksRUFDcEQsSUFBZSxDQUEyQixFQUFFLENBQUcsRUFDL0MsSUFBZSxDQUF5QixFQUFFLEVBQUksRUFDOUMsSUFBZSxDQUErQixFQUFFLENBQUcsRUFDbkQsSUFBZSxDQUE2QixFQUFFLEVBQUksRUFDbEQsSUFBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsSUFBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsSUFBZSxDQUE0QixFQUFFLENBQUcsRUFDaEQsSUFBZSxDQUEwQixFQUFFLEVBQUksRUFDL0MsSUFBZSxDQUEyQixFQUFFLENBQUcsRUFDL0MsSUFBZSxDQUF5QixFQUFFLEVBQUksRUFDOUMsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUE0QixFQUFFLENBQUcsRUFDaEQsSUFBZSxDQUEwQixFQUFFLEVBQUksRUFDL0MsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUFnQyxFQUFFLENBQUcsRUFDcEQsSUFBZSxDQUE4QixFQUFFLEVBQUksRUFDbkQsSUFBZSxDQUE4QixFQUFFLENBQUcsRUFDbEQsSUFBZSxDQUE0QixFQUFFLEVBQUksRUFDakQsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUE2QixFQUFFLENBQUcsRUFDakQsSUFBZSxDQUEyQixFQUFFLEVBQUksRUFDaEQsSUFBZSxDQUE0QixFQUFFLENBQUcsRUFDaEQsSUFBZSxDQUEwQixFQUFFLEVBQUksRUFDL0MsSUFBZSxDQUEwQixFQUFFLENBQUcsRUFDOUMsSUFBZSxDQUF3QixFQUFFLEVBQUksRUFDN0MsSUFBZSxDQUF5QixFQUFFLENBQUcsRUFDN0MsSUFBZSxDQUF1QixFQUFFLEVBQUksRUFDNUMsSUFBZSxDQUE2QixFQUM1QyxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQXdCLEVBQUUvVyxFQUFrQixFQUMzRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQTJCLEVBQUVNLEdBQXFCLEVBQUUsQ0FBRyxFQUN0RSxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQTJCLEVBQzFDLElBQWUsQ0FBMkIsRUFDMUMsSUFBZSxDQUErQixFQUFFLENB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RUFBSSxFQUNwRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQXlCLEVBQUUsQ0FBRyxFQUM3QyxJQUFlLENBQXVCLEVBQUUsRUFBSSxFQUM1QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQTJDLEVBQUUsQ0FBRyxFQUMvRCxJQUFlLENBQXlDLEVBQUUsRUFBSSxFQUM5RCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNw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QyxFQUFNMGtJLEVBQVEsU0FBVSxDQUN6RCxPQUFRQSxFQUFRLE9BQ2hCLE9BQVFBLEVBQVEsT0FFaEIsS0FBQTF0RyxDQUFBLENBQ0QsTUFHRixDQUNILEVBRUEsSUFBSWltRixFQUFpQixDQUNuQixPQUFPLElBQUksUUFBUSxDQUFDeHVILEVBQVNDLElBQVUsQ0FPckMsTUFBTWcySSxFQUFxQixPQUFPLE9BQU8sQ0FBQSxFQUxDLENBQ3hDLEtBQU0sR0FDTixTQUFVLElBQUEsRUFHZ0R6bkIsQ0FBTSxFQUU1RDd3RCxFQUFPLElBQUksS0FBSyxDQUFDczRFLEVBQVEsSUFBSSxFQUFHLENBQUUsS0FBTSwwQkFBQSxDQUE0QixFQUMxRVYsR0FBVSxPQUFPNTNFLEVBQU1zNEUsRUFBUSxTQUFXLE1BQU0sTUFHakQsQ0FDSCxjQUd3QixDQUN4QixNQUFNLElBQUlucEUsRUFBVSxDQUNYLE9BQUEsTUFBTTZvRSxHQUFrQjdvRSxDQUFJLENBQ3JDIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzE5LDIxLDIyLDIzLDQ1LDgzLDk4LDk5LDEzNSwxMzZdfQ==
|